From 5572015ca785d69498845b7c1e13c0ad3a670399 Mon Sep 17 00:00:00 2001 From: Guillaume Lessard Date: Wed, 11 Nov 2026 03:27:03 -0500 Subject: [PATCH 1/5] Licence Worker 2.2: revoke on subscription refunds and disputes; header and audit fixes qector-fulfilment 2.2 - A refund or chargeback of a subscription payment matched no licence and was acknowledged without revoking anything: subscription-mode Checkout Sessions carry no PaymentIntent, and since API 2025-03-31 a Charge no longer names its invoice. Licences are now found through payment-to-invoice links (invoice_payment.paid, or invoice.paid on older API versions) and, for refunds, through a per-customer index with an unambiguous-match rule. - A refund or dispute that still matches nothing fails the event instead of answering 200, so Stripe retries it and it is visible. - The amount-to-tier fallback only applies to USD amounts. - Seven new tests use the event shapes Stripe sends for subscriptions. - README: how matching works, the new invoice_payment.paid event to enable, and a note that RECONCILE_TOKEN can issue or revoke any licence. qector-headers - Content-Security-Policy no longer lists Stripe script/frame hosts or Google font hosts: checkout is a plain link and fonts are bundled with the site. - Images under /images and /og are cached for a day instead of revalidated on every view. Production audit - Drop the check for a hero video that was removed from the site, and stop requiring a page-rendering header on the JSON licence endpoints. The audit now passes against the live site. - New CI workflow (type-check, lint, build, Worker tests) and Dependabot configuration. README: repository layout and the gh-pages deployment. Co-Authored-By: Claude Fable 5.2 --- .github/dependabot.yml | 17 +++ .github/workflows/ci.yml | 54 +++++++ .github/workflows/security-audit.yml | 2 +- README.md | 23 ++- scripts/security-audit.mjs | 13 +- workers/qector-fulfilment/README.md | 46 +++++- workers/qector-fulfilment/src/index.js | 144 +++++++++++++++--- .../qector-fulfilment/test/worker.test.mjs | 110 ++++++++++++- workers/qector-fulfilment/wrangler.toml | 2 +- workers/qector-headers/src/index.js | 16 +- workers/qector-headers/test/index.test.js | 18 +++ 11 files changed, 400 insertions(+), 45 deletions(-) create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/ci.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..44bd8e63 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,17 @@ +# Dependency updates for the site, the two Workers' tooling and the workflows. +# Security updates also need "Dependabot alerts" switched on in the repository +# settings (Settings → Advanced Security). +version: 2 +updates: + - package-ecosystem: npm + directory: /source + schedule: + interval: weekly + open-pull-requests-limit: 5 + groups: + minor-and-patch: + update-types: [minor, patch] + - package-ecosystem: github-actions + directory: / + schedule: + interval: monthly diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..6755ca7e --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,54 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + +permissions: + contents: read + +concurrency: + group: ci-${{ github.ref }} + cancel-in-progress: true + +jobs: + site: + name: Site (type-check, lint, build) + runs-on: ubuntu-latest + timeout-minutes: 15 + defaults: + run: + working-directory: source + steps: + - uses: actions/checkout@v4 + with: + persist-credentials: false + - uses: actions/setup-node@v4 + with: + node-version: 22 + cache: npm + cache-dependency-path: source/package-lock.json + - run: npm ci + - run: npm run typecheck + - run: npm run lint + # Bundle and route shells only: the Playwright prerender runs on deploy. + - run: npx vite build + + workers: + name: Workers (unit tests) + runs-on: ubuntu-latest + timeout-minutes: 5 + steps: + - uses: actions/checkout@v4 + with: + persist-credentials: false + - uses: actions/setup-node@v4 + with: + node-version: 22 + - name: Fulfilment Worker + working-directory: workers/qector-fulfilment + run: npm test + - name: Security-header Worker + working-directory: workers/qector-headers + run: npm test diff --git a/.github/workflows/security-audit.yml b/.github/workflows/security-audit.yml index 877f55c8..51bfbfe7 100644 --- a/.github/workflows/security-audit.yml +++ b/.github/workflows/security-audit.yml @@ -1,4 +1,4 @@ -name: Production Security Audit +name: Production Security Audit on: schedule: diff --git a/README.md b/README.md index 692f605f..07ef0889 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Live site: [qector.store](https://qector.store) -This repository contains the static GitHub Pages deployment and the Vite/React source for QECTOR Decoder v3. The QECTOR Decoder v3 Reference Manual v1.0.0 is the normative source for decoder contracts and claim boundaries: +This repository contains the Vite/React source of the site, the two Cloudflare Workers that sit in front of it, and the production audit. The QECTOR Decoder v3 Reference Manual v1.0.0 is the normative source for decoder contracts and claim boundaries: - DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046) - Decoder repository: [github.com/GuillaumeLessard/qector-decoder](https://github.com/GuillaumeLessard/qector-decoder) @@ -11,19 +11,32 @@ This repository contains the static GitHub Pages deployment and the Vite/React s ## Repository Layout - `source/`: React, TypeScript, content, public assets, and build configuration. -- Root static files: the latest production build served by GitHub Pages. +- `workers/qector-fulfilment/`: Stripe webhook that signs and e-mails licence tokens (`qector.store/stripe/*`). +- `workers/qector-headers/`: adds the security headers and cache policy to every response. +- `scripts/security-audit.mjs`: checks the live headers, redirects and licence service (run nightly by `.github/workflows/security-audit.yml`). +- `gh-pages` branch: the built site, written by `npm run deploy`. Nothing is built or edited there by hand. ## Local Development ```text cd source npm ci +npx playwright install chromium # once: the build prerenders every page +npm run dev npm run lint +npm run build # type-check, bundle, prerender to dist/ +``` + +## Deployment + +```text +cd source npm run build -npm run dev +npm run deploy # commits dist/ to the local gh-pages branch +npm run deploy -- --push # pushes it; GitHub Pages publishes within minutes ``` -The build emits prerendered route shells for crawlers and direct GitHub Pages requests. The root static output is synchronized from `source/dist/` before deployment. +GitHub Pages serves the `gh-pages` branch, so only the built site is public on qector.store. The Workers are deployed separately with `npx wrangler deploy` from their own folders (see each folder's notes); deploy the site before `qector-headers` when both change, because the Worker's Content-Security-Policy is written for the current build. ## Content and Evidence Policy @@ -33,7 +46,7 @@ Logical results must be scored in observable/coset space, not by raw correction- ## Branding -The supplied QECTOR logo is `images/logo.png` and is copied to `source/public/images/logo.png` for the build. It is used by the header, footer, favicon, manifest, structured data, and Open Graph/Twitter metadata. No personal connection or audience export is included in the public site. +The supplied QECTOR logo is `source/public/images/logo.png`. It is used by the header, footer, favicon, manifest, structured data, and Open Graph/Twitter metadata. No personal connection or audience export is included in the public site. ## License diff --git a/scripts/security-audit.mjs b/scripts/security-audit.mjs index b525ce44..621c258e 100644 --- a/scripts/security-audit.mjs +++ b/scripts/security-audit.mjs @@ -9,8 +9,11 @@ const requiredDocumentHeaders = { "x-xss-protection": /^1; mode=block$/i, }; +// JSON endpoints of the licence service. X-XSS-Protection is a browser +// page-rendering header: the service does not send it and has no use for it. +const { "x-xss-protection": _pageOnly, ...sharedHeaders } = requiredDocumentHeaders; const requiredApiHeaders = { - ...requiredDocumentHeaders, + ...sharedHeaders, "content-security-policy": /default-src 'none'.*frame-ancestors 'none'/i, "referrer-policy": /^no-referrer$/i, "cache-control": /^no-store$/i, @@ -63,12 +66,6 @@ assertHeaders(apiResponse, requiredApiHeaders, "health"); const health = await apiResponse.json(); assert(health.ok === true && health.live_mode === true, "health: live service did not report ok"); -const videoResponse = await request("/videos/hero-lattice.mp4", { method: "HEAD" }); -assert(videoResponse.status === 200, `video: expected 200, got ${videoResponse.status}`); -assert(/^video\/mp4/i.test(header(videoResponse, "content-type")), "video: incorrect content type"); -assert(/immutable/i.test(header(videoResponse, "cache-control")), "video: missing immutable cache policy"); -assertHeaders(videoResponse, requiredDocumentHeaders, "video"); - const securityResponse = await request("/.well-known/security.txt", { method: "HEAD" }); assert(securityResponse.status === 200, `security.txt: expected 200, got ${securityResponse.status}`); assert(/^text\/plain/i.test(header(securityResponse, "content-type")), "security.txt: incorrect content type"); @@ -84,5 +81,5 @@ if (failures.length > 0) { console.error(failures.map((failure) => `FAIL: ${failure}`).join("\n")); process.exitCode = 1; } else { - console.log("Production security audit passed: headers, redirects, API, video, security.txt, and removed routes."); + console.log("Production security audit passed: headers, redirects, API, security.txt, and removed routes."); } diff --git a/workers/qector-fulfilment/README.md b/workers/qector-fulfilment/README.md index 72c5ad44..a21fa860 100644 --- a/workers/qector-fulfilment/README.md +++ b/workers/qector-fulfilment/README.md @@ -1,9 +1,9 @@ -# qector-fulfilment 2.1 +# qector-fulfilment 2.2 Stripe webhook → Ed25519 licence tokens for QECTOR Decoder v3. Tokens are verified offline by the decoder (air-gapped; no licence server). Same KV -namespace (`LICENSES`), same secrets and same token format as 2.0; tokens -verify on decoder 1.0.0 and 1.0.1. +namespace (`LICENSES`), same secrets and same token format as 2.0 and 2.1; +tokens verify on decoder 1.0.0 and 1.0.1. ## Deploy @@ -12,15 +12,20 @@ verify on decoder 1.0.0 and 1.0.1. `TRIALS_ENABLED = "false"`). 2. `npm test` (Node 20+, no dependencies), then `npx wrangler deploy --config ./wrangler.toml`. -3. Check `https://qector.store/stripe/health` shows `"version":"2.1"` and +3. Check `https://qector.store/stripe/health` shows `"version":"2.2"` and `"key_matches_decoder":true`. If it is `false`, the Worker's signing key is not the decoder's production key: no token will be issued (events stay pending and Stripe retries) until the secret is fixed. The Stripe webhook endpoint must send these events: `checkout.session.completed`, `checkout.session.async_payment_succeeded`, -`invoice.paid`, `charge.refunded`, `charge.dispute.created`, -`customer.subscription.deleted`. +`invoice.paid`, `invoice_payment.paid`, `charge.refunded`, +`charge.dispute.created`, `customer.subscription.deleted`. + +`invoice_payment.paid` is new in 2.2: add it to the endpoint in the Stripe +Dashboard. It is the only event that ties a subscription payment's +PaymentIntent to its invoice, which is what lets a chargeback on a +subscription payment find its licence. Optional settings: `PRICE_TIERS` = JSON `{"price_…":"lab", …}` (every live payment link already carries `qector_tier` metadata), and the dormant trial @@ -34,11 +39,40 @@ settings `TURNSTILE_SECRET` / `TRIAL_ALLOWED_ORIGINS` (trials are off). | Checkout with a delayed method (bank debit) | Nothing on the "unpaid" completion; licence on `async_payment_succeeded` | | Renewal (`invoice.paid`) | New token with the tier recorded at checkout, then subscription metadata, price id (built-in table for the live legacy prices) or price amount; unknown tiers are held, never guessed | | Full refund or dispute | Receipt id revoked and published at `GET /stripe/revoked.txt` | +| Refund or dispute that matches no licence | Event fails and is retried for three days; nothing is acknowledged silently | | Partial refund | Licence kept | | Subscription cancelled | Not revoked: the token runs to its expiry (paid period + 14 days grace) | | Signing key ≠ decoder key | Event fails and is retried; nothing is e-mailed | | Unknown amount without metadata | Held for reconciliation (`POST /stripe/reconcile`) | +## How a refund or dispute finds its licence + +1. Direct links written at issue time: PaymentIntent (one-time payments), + invoice, subscription, or the receipt id itself. +2. `alias:` → invoice, written by `invoice_payment.paid` + (and by `invoice.paid` on API versions before 2025-03-31). +3. Refunds only: the Charge's customer. Licences are indexed by customer at + issue time (`cus:`); exactly one unrevoked licence with the + charged amount and currency, issued within three days of the charge, is + revoked. Two candidates are never guessed between. +4. Otherwise the event fails with `matches no licence`. Stripe retries it, so a + link that arrives late still revokes. To settle one by hand, send a + `charge.refunded` event whose object `id` is the receipt id to + `POST /stripe/reconcile`. A refund of a payment that was not for a licence + needs no action: it stops retrying after three days. + +Licences issued by 2.1 or earlier have no customer index. Subscriptions gain +one at their next renewal; until then a refund of such a payment is held +(step 4) rather than missed. + +## Security notes + +- `RECONCILE_TOKEN` can issue or revoke any licence: `/stripe/reconcile` + accepts event bodies as given, without a Stripe signature. Treat it like the + signing key, keep it out of shells and CI logs, and rotate it after use by + anyone else. +- `GET /stripe/health` and `GET /stripe/revoked.txt` are public by design. + ## Tiers Licences cover the buying organisation's internal use; there are no seat counts. diff --git a/workers/qector-fulfilment/src/index.js b/workers/qector-fulfilment/src/index.js index c9c8ae77..05f51d2e 100644 --- a/workers/qector-fulfilment/src/index.js +++ b/workers/qector-fulfilment/src/index.js @@ -35,6 +35,22 @@ // * Customer e-mails pin >=1.0.1 (1.0.0 refused GPU for Pro) and plan names // carry no user counts. // +// 2.2 (2026-11-10): refunds and disputes on subscription payments now revoke. +// +// * A subscription-mode Checkout Session carries no PaymentIntent, and since +// API version 2025-03-31 a Charge no longer names its invoice, so a refund +// or chargeback of a subscription payment matched no licence and was +// acknowledged without revoking anything. Three links now close that: +// - `alias:` → invoice, written from `invoice_payment.paid` (and +// from `invoice.paid` on older API versions that still carry +// `payment_intent` / `charge`); +// - `cus:` → receipt ids, written at issue time; a refunded +// Charge names its customer, and a single unrevoked licence with the +// charged amount, issued within three days of the charge, is revoked; +// - anything still unmatched FAILS the event (Stripe retries, the event +// shows as pending) instead of answering 200. +// * The amount → tier fallback only applies to USD amounts. +// // Token format is unchanged: v2.{base64url(JSON claims)}.{base64url(Ed25519 sig // over the claims segment)}; claims = {email, exp?, rid, tier} with keys sorted. // `tier` is always one the decoder understands (evaluation, pro, enterprise), @@ -91,6 +107,9 @@ const DEFAULT_FROM = "QECTOR "; const SITE = "https://qector.store"; const TRIAL_PER_IP_PER_DAY = 3; const TRIAL_COOLDOWN_SECONDS = 365 * DAY; +// A refund is matched to a licence by customer only when the licence was +// issued within this window of the charge (Stripe retries webhooks for 3 days). +const CUSTOMER_MATCH_WINDOW_MS = 3 * DAY * 1000; const API_SECURITY_HEADERS = { "cache-control": "no-store", @@ -163,7 +182,7 @@ async function handleHealth(env, head = false) { { ok: true, service: "qector-fulfilment", - version: "2.1", + version: "2.2", email_provider: emailProviders(env).join("+") || "unconfigured", live_mode: liveMode(env), signing_key: Boolean(env.QECTOR_LICENSE_PRIVATE_KEY_B64), @@ -308,6 +327,8 @@ async function processEvent(event, env) { return processCheckoutSession(event, env); case "invoice.paid": return processInvoice(event, env); + case "invoice_payment.paid": + return recordInvoicePayment(event, env); case "charge.refunded": // Partial refunds (tax corrections, goodwill credits) keep the licence. if (event.data?.object?.refunded !== true) { @@ -348,6 +369,7 @@ async function processCheckoutSession(event, env) { payment_intent: stringOrNull(session.payment_intent), invoice: stringOrNull(session.invoice), subscription: stringOrNull(session.subscription), + customer: stringOrNull(session.customer) || existing?.customer || null, payment_link: stringOrNull(session.payment_link), billing_url: stringOrNull(session.receipt_url), }); @@ -360,6 +382,9 @@ async function processCheckoutSession(event, env) { async function processInvoice(event, env) { const invoice = event.data?.object || {}; const reason = invoice.billing_reason; + // API versions before 2025-03-31 still name the payment on the invoice: + // record it so a later refund or dispute of that payment finds the licence. + await linkPaymentToInvoice(env, invoice.id, invoice.payment_intent, invoice.charge); // First subscription invoice: the checkout session already issued the token. if (reason === "subscription_create") return { ignored: reason, receipt_id: invoice.id || null }; let productTier = null; @@ -391,6 +416,7 @@ async function processInvoice(event, env) { invoice: invoice.id, payment_intent: stringOrNull(invoice.payment_intent), subscription, + customer: stringOrNull(invoice.customer) || existing?.customer || null, billing_url: stringOrNull(invoice.hosted_invoice_url), }); await persistRecord(env, record); @@ -416,11 +442,16 @@ async function tierForSubscription(invoice, env) { numberOrNull(line.price?.unit_amount) ?? numberOrNull(line.pricing?.unit_amount_decimal != null ? Number(line.pricing.unit_amount_decimal) : null) ?? (Number(line.quantity || 1) === 1 ? numberOrNull(line.amount) : null); - if (amount != null && AMOUNT_TIERS[amount]) return AMOUNT_TIERS[amount]; + if (amount != null && usdOrUnstated(invoice.currency) && AMOUNT_TIERS[amount]) return AMOUNT_TIERS[amount]; } return null; } +// AMOUNT_TIERS are USD list prices: 7900 in another currency is not Pro monthly. +function usdOrUnstated(currency) { + return !currency || String(currency).toLowerCase() === "usd"; +} + // Cancellation: no revocation. The token's `exp` already ends the licence after // the paid period plus grace; renewals simply stop. Records are annotated so // support can see the subscription ended. @@ -438,10 +469,62 @@ async function markSubscriptionEnded(event, env) { return { revoked: false, cancelled: true, subscription: sub, receipt_id: [...receipts][0] || null }; } +// Payment → invoice link. Refund and dispute events name the PaymentIntent or +// the Charge, never the invoice, so the link is recorded from whichever event +// carries both ids and is followed when a licence has to be revoked. +async function linkPaymentToInvoice(env, invoiceId, ...paymentIds) { + if (typeof invoiceId !== "string" || !invoiceId) return 0; + let linked = 0; + for (const id of paymentIds) { + if (typeof id !== "string" || !id) continue; + await writeJson(env, `alias:${id}`, { invoice: invoiceId }); + linked += 1; + } + return linked; +} + +// `invoice_payment.paid` (API 2025-03-31 and later): the only event that ties a +// subscription payment's PaymentIntent to its invoice. No licence is issued here. +async function recordInvoicePayment(event, env) { + const payment = event.data?.object || {}; + const linked = await linkPaymentToInvoice(env, payment.invoice, payment.payment?.payment_intent, payment.payment?.charge); + return { linked: linked > 0, invoice: stringOrNull(payment.invoice) }; +} + +// Last resort for refunds. The Charge names its customer and licences are +// indexed by customer at issue time. Only an unambiguous match revokes: exactly +// one unrevoked licence of that customer with the charged amount and currency, +// issued within CUSTOMER_MATCH_WINDOW_MS of the charge. Two candidates are +// never guessed between: the event fails and is settled by hand. +async function receiptForCustomerCharge(charge, env) { + const customer = stringOrNull(charge.customer); + const amount = numberOrNull(charge.amount); + if (!customer || amount == null) return null; + const index = await readJson(env, `cus:${customer}`); + const chargedAt = Number(charge.created) * 1000; + const matches = []; + for (const receipt of Array.isArray(index) ? index : []) { + const record = await readJson(env, `lic:${receipt}`); + if (!record || record.revoked || record.amount_total !== amount) continue; + if (charge.currency && record.currency && String(charge.currency).toLowerCase() !== String(record.currency).toLowerCase()) continue; + const issuedAt = Date.parse(record.issued_at || ""); + if (Number.isFinite(chargedAt) && chargedAt > 0 && Number.isFinite(issuedAt) && Math.abs(issuedAt - chargedAt) > CUSTOMER_MATCH_WINDOW_MS) continue; + matches.push(receipt); + } + if (matches.length > 1) { + throw new Error(`refund ${charge.id} fits ${matches.length} licences of ${customer} (${matches.join(", ")}); revoke the right receipt id through POST /stripe/reconcile`); + } + return matches[0] || null; +} + async function revokeEntitlement(event, env) { const object = event.data?.object || {}; - const identifiers = [object.id, object.payment_intent, object.charge, object.subscription, object.invoice].filter((v) => typeof v === "string" && v.length > 0); - if (identifiers.length === 0) return { revoked: false }; + const identifiers = new Set([object.id, object.payment_intent, object.charge, object.subscription, object.invoice].filter((v) => typeof v === "string" && v.length > 0)); + if (identifiers.size === 0) return { revoked: false }; + for (const identifier of [...identifiers]) { + const alias = await readJson(env, `alias:${identifier}`); + if (typeof alias?.invoice === "string" && alias.invoice) identifiers.add(alias.invoice); + } const receipts = new Set(); for (const identifier of identifiers) { for (const prefix of ["pi:", "invoice:", "sub:"]) { @@ -451,20 +534,31 @@ async function revokeEntitlement(event, env) { } if ((await readJson(env, `lic:${identifier}`)) !== null) receipts.add(identifier); } + let matchedBy = "link"; + if (receipts.size === 0 && event.type === "charge.refunded") { + const receipt = await receiptForCustomerCharge(object, env); + if (receipt) { + receipts.add(receipt); + matchedBy = "customer"; + } + } const at = nowIso(); for (const identifier of [...identifiers, ...receipts]) await writeJson(env, `revoked:${identifier}`, { reason: event.type, at }); + if (receipts.size === 0) { + // Never acknowledge a refund or chargeback that revoked nothing: the event + // stays pending (Stripe retries, which also covers a link that arrives + // late). A payment that was not for a licence simply stops retrying. + throw new Error(`${event.type} ${object.id} matches no licence (${[...identifiers].join(", ")}); if it paid for one, revoke its receipt id through POST /stripe/reconcile`); + } for (const receipt of receipts) { const record = await readJson(env, `lic:${receipt}`); if (record) await writeJson(env, `lic:${receipt}`, { ...record, revoked: true, revoked_at: at, revoked_reason: event.type }); } - if (receipts.size > 0) { - const crl = (await readJson(env, "crl")) || []; - for (const receipt of receipts) if (!crl.includes(receipt)) crl.push(receipt); - await writeJson(env, "crl", crl); - } - const first = [...receipts][0] || identifiers[0]; - console.log(`[qector] revoked ${[...receipts].join(",") || identifiers[0]} (${event.type})`); - return { revoked: receipts.size > 0, receipt_id: first, unmatched: receipts.size === 0 ? identifiers : undefined }; + const crl = (await readJson(env, "crl")) || []; + for (const receipt of receipts) if (!crl.includes(receipt)) crl.push(receipt); + await writeJson(env, "crl", crl); + console.log(`[qector] revoked ${[...receipts].join(",")} (${event.type}, matched by ${matchedBy})`); + return { revoked: true, receipt_id: [...receipts][0], matched_by: matchedBy }; } // --------------------------------------------------------------------------- @@ -478,7 +572,7 @@ export function tierFromSession(session, env = {}) { const fromPrice = tierFromMetadataOrNull(item.price?.metadata) || tierFromPriceId(item.price?.id, env); if (fromPrice) return fromPrice; } - for (const field of ["amount_subtotal", "amount_total"]) { + for (const field of usdOrUnstated(session?.currency) ? ["amount_subtotal", "amount_total"] : []) { const amount = session?.[field]; if (typeof amount === "number" && Number.isFinite(amount) && AMOUNT_TIERS[amount]) { console.log(`[qector] no tier metadata; ${field} ${amount} maps to ${AMOUNT_TIERS[amount]}`); @@ -607,6 +701,7 @@ async function persistRecord(env, record) { await writeJson(env, `lic:${record.receipt_id}`, record); if (record.payment_intent) await writeJson(env, `pi:${record.payment_intent}`, { receipt_id: record.receipt_id }); if (record.invoice) await writeJson(env, `invoice:${record.invoice}`, { receipt_id: record.receipt_id }); + let subscriptionReceipts = []; if (record.subscription) { const prior = (await readJson(env, `sub:${record.subscription}`)) || {}; const receipts = Array.isArray(prior.receipts) ? prior.receipts : []; @@ -616,12 +711,27 @@ async function persistRecord(env, record) { receipt_id: record.receipt_id, receipts, }); + subscriptionReceipts = receipts; } - const mailKey = `bymail:${record.email}`; - const prior = await readJson(env, mailKey); + // Customer index: lets a refund be matched when the Charge names nothing but + // its customer. Earlier receipts of the same subscription belong to the same + // customer, so licences issued before this index existed are picked up at + // their next renewal. + if (record.customer) await addToIndex(env, `cus:${record.customer}`, [record.receipt_id, ...subscriptionReceipts]); + await addToIndex(env, `bymail:${record.email}`, [record.receipt_id]); +} + +async function addToIndex(env, key, receiptIds) { + const prior = await readJson(env, key); const receipts = Array.isArray(prior) ? prior : []; - if (!receipts.includes(record.receipt_id)) receipts.push(record.receipt_id); - await writeJson(env, mailKey, receipts); + let changed = false; + for (const id of receiptIds) { + if (id && !receipts.includes(id)) { + receipts.push(id); + changed = true; + } + } + if (changed || !Array.isArray(prior)) await writeJson(env, key, receipts); } // --------------------------------------------------------------------------- diff --git a/workers/qector-fulfilment/test/worker.test.mjs b/workers/qector-fulfilment/test/worker.test.mjs index 41b3eb8c..37cfc010 100644 --- a/workers/qector-fulfilment/test/worker.test.mjs +++ b/workers/qector-fulfilment/test/worker.test.mjs @@ -195,7 +195,7 @@ test("trial: one token per address per year, honeypot, terms, per-IP cap, no ora test("health reports configuration without secrets", async () => { const { env } = await makeEnv(); const body = await (await worker.fetch(new Request("https://qector.store/stripe/health"), env)).json(); - assert.equal(body.version, "2.1"); + assert.equal(body.version, "2.2"); assert.equal(body.key_matches_decoder, true); assert.equal(body.signing_key, true); assert.ok(!JSON.stringify(body).includes("PRIVATE")); @@ -290,3 +290,111 @@ test("legacy renewal without metadata resolves on the new invoice shape (pricing assert.equal(byAmount.tier, "solo_annual"); assert.equal(sent.length, 6); }); + +// --------------------------------------------------------------------------- +// 2.2: refunds and disputes on subscription payments, with the event shapes +// Stripe really sends. A subscription-mode Checkout Session has no +// PaymentIntent; from API 2025-03-31 a Charge has no `invoice` and an Invoice +// has no `payment_intent`. +// --------------------------------------------------------------------------- + +const subCheckout = (n, extra = {}) => + checkout(`sub${n}`, { + mode: "subscription", metadata: { qector_tier: "pro_annual" }, amount_subtotal: 79000, amount_total: 79000, + payment_intent: null, subscription: `sub_${n}`, invoice: `in_first${n}`, customer: `cus_${n}`, ...extra, + }); +const refundOf = (id, object) => ({ id: `evt_rf_${id}`, type: "charge.refunded", livemode: true, data: { object: { id: `ch_${id}`, refunded: true, ...object } } }); +const nowSeconds = () => Math.floor(Date.now() / 1000); +const crlText = async (env) => (await worker.fetch(new Request("https://qector.store/stripe/revoked.txt"), env)).text(); + +test("refund of a first subscription payment revokes through the customer index", async () => { + const { env } = await makeEnv(); + await worker.fetch(await stripeRequest(subCheckout(1)), env); + assert.deepEqual(env.LICENSES.json("cus:cus_1"), ["cs_live_sub1"]); + const res = await worker.fetch(await stripeRequest(refundOf("a", { payment_intent: "pi_a", customer: "cus_1", amount: 79000, currency: "usd", created: nowSeconds() })), env); + const body = await res.json(); + assert.equal(res.status, 200); + assert.equal(body.revoked, true); + assert.equal(body.matched_by, "customer"); + assert.equal(env.LICENSES.json("lic:cs_live_sub1").revoked, true); + assert.match(await crlText(env), /^cs_live_sub1$/m); +}); + +test("refund of a renewal revokes that renewal, not the earlier licence", async () => { + const { env } = await makeEnv(); + await worker.fetch(await stripeRequest(subCheckout(2)), env); + // The first licence was issued a billing period ago. + const first = env.LICENSES.json("lic:cs_live_sub2"); + await env.LICENSES.put("lic:cs_live_sub2", JSON.stringify({ ...first, issued_at: new Date(Date.now() - 366 * 86400 * 1000).toISOString() })); + const renewal = { id: "evt_in2", type: "invoice.paid", livemode: true, data: { object: { id: "in_renew2", billing_reason: "subscription_cycle", customer: "cus_2", customer_email: "buyer@example.com", currency: "usd", amount_paid: 79000, subtotal: 79000, parent: { subscription_details: { subscription: "sub_2" } } } } }; + assert.equal((await (await worker.fetch(await stripeRequest(renewal), env)).json()).issued, true); + assert.deepEqual(env.LICENSES.json("cus:cus_2").sort(), ["cs_live_sub2", "in_renew2"]); + const body = await (await worker.fetch(await stripeRequest(refundOf("b", { payment_intent: "pi_b", customer: "cus_2", amount: 79000, currency: "usd", created: nowSeconds() })), env)).json(); + assert.equal(body.revoked, true); + assert.equal(body.receipt_id, "in_renew2"); + assert.notEqual(env.LICENSES.json("lic:cs_live_sub2").revoked, true); +}); + +test("dispute of a subscription payment revokes once invoice_payment.paid has linked it", async () => { + const { env } = await makeEnv(); + await worker.fetch(await stripeRequest(subCheckout(3)), env); + const linked = { id: "evt_ip3", type: "invoice_payment.paid", livemode: true, data: { object: { id: "inpay_3", object: "invoice_payment", invoice: "in_first3", status: "paid", payment: { type: "payment_intent", payment_intent: "pi_c" } } } }; + assert.equal((await (await worker.fetch(await stripeRequest(linked), env)).json()).linked, true); + const dispute = { id: "evt_dp3", type: "charge.dispute.created", livemode: true, data: { object: { id: "dp_3", charge: "ch_c", payment_intent: "pi_c" } } }; + const body = await (await worker.fetch(await stripeRequest(dispute), env)).json(); + assert.equal(body.revoked, true); + assert.equal(body.matched_by, "link"); + assert.match(await crlText(env), /^cs_live_sub3$/m); +}); + +test("older API versions: the PaymentIntent on the first invoice links the dispute", async () => { + const { env } = await makeEnv(); + await worker.fetch(await stripeRequest(subCheckout(4)), env); + const firstInvoice = { id: "evt_in4", type: "invoice.paid", livemode: true, data: { object: { id: "in_first4", billing_reason: "subscription_create", subscription: "sub_4", payment_intent: "pi_d", charge: "ch_d", customer_email: "buyer@example.com" } } }; + assert.equal((await (await worker.fetch(await stripeRequest(firstInvoice), env)).json()).ignored, "subscription_create"); + const dispute = { id: "evt_dp4", type: "charge.dispute.created", livemode: true, data: { object: { id: "dp_4", charge: "ch_d", payment_intent: "pi_d" } } }; + assert.equal((await (await worker.fetch(await stripeRequest(dispute), env)).json()).revoked, true); +}); + +test("an unmatched refund or dispute is held, and succeeds on retry once the link exists", async () => { + const { env } = await makeEnv(); + await worker.fetch(await stripeRequest(subCheckout(5)), env); + const dispute = { id: "evt_dp5", type: "charge.dispute.created", livemode: true, data: { object: { id: "dp_5", charge: "ch_e", payment_intent: "pi_e" } } }; + const held = await worker.fetch(await stripeRequest(dispute), env); + assert.equal(held.status, 500); + assert.equal((await held.json()).retryable, true); + assert.equal(env.LICENSES.json("evt:evt_dp5").status, "pending"); + assert.match(env.LICENSES.json("evt:evt_dp5").last_error, /matches no licence/); + assert.doesNotMatch(await crlText(env), /cs_live_sub5/); + // The link arrives late; Stripe's retry of the same event now revokes. + await worker.fetch(await stripeRequest({ id: "evt_ip5", type: "invoice_payment.paid", livemode: true, data: { object: { id: "inpay_5", invoice: "in_first5", payment: { type: "payment_intent", payment_intent: "pi_e" } } } }), env); + const retried = await worker.fetch(await stripeRequest(dispute), env); + assert.equal(retried.status, 200); + assert.equal((await retried.json()).revoked, true); + // A refund for a customer with no licence at all is held too, never acknowledged. + const stranger = await worker.fetch(await stripeRequest(refundOf("z", { payment_intent: "pi_z", customer: "cus_unknown", amount: 79000, currency: "usd", created: nowSeconds() })), env); + assert.equal(stranger.status, 500); +}); + +test("the customer match never guesses between two licences, and ignores other amounts", async () => { + const { env } = await makeEnv(); + await worker.fetch(await stripeRequest(subCheckout(6)), env); + await worker.fetch(await stripeRequest(subCheckout("6b", { customer: "cus_6" })), env); + const refund = refundOf("f", { payment_intent: "pi_f", customer: "cus_6", amount: 79000, currency: "usd", created: nowSeconds() }); + const res = await worker.fetch(await stripeRequest(refund), env); + assert.equal(res.status, 500); + assert.match(env.LICENSES.json("evt:evt_rf_f").last_error, /fits 2 licences/); + assert.doesNotMatch(await crlText(env), /cs_live_sub6/); + // Wrong amount or currency: not this licence. + const other = await makeEnv(); + await worker.fetch(await stripeRequest(subCheckout(7)), other.env); + assert.equal((await worker.fetch(await stripeRequest(refundOf("g", { payment_intent: "pi_g", customer: "cus_7", amount: 7900, currency: "usd", created: nowSeconds() })), other.env)).status, 500); + assert.equal((await worker.fetch(await stripeRequest(refundOf("h", { payment_intent: "pi_h", customer: "cus_7", amount: 79000, currency: "eur", created: nowSeconds() })), other.env)).status, 500); + assert.notEqual(other.env.LICENSES.json("lic:cs_live_sub7").revoked, true); +}); + +test("the amount fallback is USD only", () => { + assert.equal(tierFromSession({ metadata: {}, currency: "usd", amount_subtotal: 7900 }), "pro_monthly"); + assert.throws(() => tierFromSession({ id: "cs_eur", metadata: {}, currency: "eur", amount_subtotal: 7900, amount_total: 7900 }), /cannot determine/); + assert.equal(tierFromSession({ metadata: { qector_tier: "pro_monthly" }, currency: "eur", amount_subtotal: 7300 }), "pro_monthly"); +}); diff --git a/workers/qector-fulfilment/wrangler.toml b/workers/qector-fulfilment/wrangler.toml index 186ed67c..2b0e26d7 100644 --- a/workers/qector-fulfilment/wrangler.toml +++ b/workers/qector-fulfilment/wrangler.toml @@ -15,7 +15,7 @@ routes = [ LICENSE_FROM_EMAIL = "QECTOR " LICENSE_TOKEN_VERSION = "v2" STRIPE_LIVEMODE = "true" -# Free trial withdrawn 2026-11-06: /stripe/trial answers 403 (no tokens issued). +# Free trial withdrawn 2026-11-06: /stripe/trial answers 503 (no tokens issued). TRIALS_ENABLED = "false" [[kv_namespaces]] diff --git a/workers/qector-headers/src/index.js b/workers/qector-headers/src/index.js index 3bab4f1d..458271b6 100644 --- a/workers/qector-headers/src/index.js +++ b/workers/qector-headers/src/index.js @@ -30,12 +30,12 @@ const SECURITY_HEADERS = { "worker-src 'self' blob:", // Hashes: the js-enabled marker and the GitHub Pages SPA redirect inline // scripts in index.html (recompute if either script changes). - "script-src 'self' 'sha256-47Y7xRUIVXITmosjladRK60OPYEE3BWeBiiCmfU0d8s=' 'sha256-2yoLb9krKtf6JSNKI8iic50UCBKaIgBtSuqyekQ5HtA=' https://js.stripe.com https://assets.calendly.com https://static.cloudflareinsights.com", - "style-src 'self' 'unsafe-inline' https://fonts.googleapis.com https://assets.calendly.com", - "img-src 'self' data: https://files.stripe.com", - "font-src 'self' data: https://fonts.gstatic.com", - "connect-src 'self' https://cloudflareinsights.com https://api.stripe.com https://js.stripe.com https://api.calendly.com https://calendly.com https://pypi.org", - "frame-src https://js.stripe.com https://checkout.stripe.com https://hooks.stripe.com https://calendly.com", + "script-src 'self' 'sha256-47Y7xRUIVXITmosjladRK60OPYEE3BWeBiiCmfU0d8s=' 'sha256-2yoLb9krKtf6JSNKI8iic50UCBKaIgBtSuqyekQ5HtA=' https://assets.calendly.com https://static.cloudflareinsights.com", + "style-src 'self' 'unsafe-inline' https://assets.calendly.com", + "img-src 'self' data:", + "font-src 'self' data:", + "connect-src 'self' https://cloudflareinsights.com https://api.calendly.com https://calendly.com https://pypi.org", + "frame-src https://calendly.com", "frame-ancestors 'none'", "form-action 'self' https://buy.stripe.com https://checkout.stripe.com https://billing.stripe.com", "media-src 'self' blob:", @@ -88,6 +88,10 @@ export default { headers.set("X-Robots-Tag", "noindex, nofollow, noarchive"); } else if (url.pathname.startsWith("/assets/") || url.pathname.startsWith("/videos/")) { headers.set("Cache-Control", "public, max-age=31536000, immutable"); + } else if (url.pathname.startsWith("/images/") || url.pathname.startsWith("/og/")) { + // Not content-hashed, so not immutable: a day in the browser, then + // revalidated in the background for up to a week. + headers.set("Cache-Control", "public, max-age=86400, stale-while-revalidate=604800"); } else { headers.set("Cache-Control", "public, max-age=0, must-revalidate"); } diff --git a/workers/qector-headers/test/index.test.js b/workers/qector-headers/test/index.test.js index 65200857..2035555a 100644 --- a/workers/qector-headers/test/index.test.js +++ b/workers/qector-headers/test/index.test.js @@ -45,6 +45,24 @@ test("keeps immutable caching for the hero video and protects its headers", asyn } }); +test("caches images for a day and keeps Stripe and Google hosts out of the page policy", async () => { + const originalFetch = globalThis.fetch; + globalThis.fetch = async () => originResponse("image/avif"); + try { + const response = await worker.fetch(new Request("https://qector.store/images/hero-bg-1200.avif")); + assert.equal(response.headers.get("cache-control"), "public, max-age=86400, stale-while-revalidate=604800"); + const og = await worker.fetch(new Request("https://qector.store/og/home.jpg")); + assert.equal(og.headers.get("cache-control"), "public, max-age=86400, stale-while-revalidate=604800"); + const csp = response.headers.get("content-security-policy"); + assert.doesNotMatch(csp, /js\.stripe\.com|fonts\.googleapis\.com|fonts\.gstatic\.com/); + // Checkout and the billing portal are plain links and form targets. + assert.match(csp, /form-action 'self' https:\/\/buy\.stripe\.com https:\/\/checkout\.stripe\.com https:\/\/billing\.stripe\.com/); + assert.match(csp, /frame-src https:\/\/calendly\.com;/); + } finally { + globalThis.fetch = originalFetch; + } +}); + test("does not cache or index the success page", async () => { const originalFetch = globalThis.fetch; globalThis.fetch = async () => originResponse(); From f0ce8e9fa10fe9a6b924d35c8589e52c19daba23 Mon Sep 17 00:00:00 2001 From: Guillaume Lessard Date: Wed, 11 Nov 2026 03:28:14 -0500 Subject: [PATCH 2/5] Remove the built site from main: GitHub Pages serves the gh-pages branch The repository root held a copy of the production build next to its source, and Pages served the whole root, so the React source, the Workers and their tests were public on qector.store, and every old build's hashed files piled up (586 of the 659 files in assets/ were unreachable). The built site now lives only on the gh-pages branch, written by `npm run deploy` from source/. Nothing here changes what is served. Co-Authored-By: Claude Fable 5.2 --- .nojekyll | 0 .well-known/acp.json | 1 - .well-known/agent-skills/index.json | 1 - .../qector-commercial-licensing.md | 11 - .well-known/agent-skills/qector-install.md | 16 - .well-known/api-catalog.json | 1 - .../http-message-signatures-directory.json | 4 - .well-known/mcp.json | 1 - .well-known/mcp/server-card.json | 23 -- .well-known/mcp/server-cards.json | 27 -- .well-known/security.txt | 6 - .well-known/skills/index.json | 1 - .well-known/tags.json | 34 -- .well-known/ucp.json | 1 - 404.html | 64 ---- CNAME | 1 - _headers | 37 --- _redirects | 3 - about/index.html | 65 ---- ads.txt | 1 - ai.txt | 10 - assets/About-3TwVcIFU.js | 1 - assets/About-BU6bVOrg.js | 1 - assets/About-BUf56YF-.js | 1 - assets/About-BZN32cY9.js | 1 - assets/About-BbIEqzXR.js | 1 - assets/About-C8aE746q.js | 1 - assets/About-Cu_jIKW1.js | 1 - assets/About-CzYv2IZf.js | 1 - assets/About-D3KKMkNy.js | 1 - assets/About-DZ1qdQkd.js | 1 - assets/About-Ddg7J4Ee.js | 1 - assets/About-Dhus-ur3.js | 1 - assets/About-DnC04FuM.js | 1 - assets/About-DorgToxb.js | 1 - assets/About-DuDzDMwT.js | 1 - assets/About-Sj0SVf3I.js | 1 - assets/About-dHfyUSjm.js | 1 - assets/About-nvnHXVMG.js | 1 - assets/About-oOskQ3bw.js | 1 - assets/About-xwac7kSw.js | 1 - assets/Blog-B5AVcxHA.js | 1 - assets/Blog-B7IPXEkA.js | 1 - assets/Blog-B8QgtaGj.js | 1 - assets/Blog-BB_6WkaC.js | 1 - assets/Blog-BFZmecCN.js | 1 - assets/Blog-BIVCFw61.js | 1 - assets/Blog-BSuGBgCE.js | 1 - assets/Blog-BcO2ftSu.js | 1 - assets/Blog-C2PtKQPL.js | 1 - assets/Blog-CVJEEWRY.js | 1 - assets/Blog-Caqe2zJR.js | 1 - assets/Blog-Cd2PdBpE.js | 1 - assets/Blog-Cvysd4Ha.js | 1 - assets/Blog-D-1MbS1Y.js | 1 - assets/Blog-DD-Qo4do.js | 1 - assets/Blog-DNJmCnqw.js | 1 - assets/Blog-DrxsUsTK.js | 1 - assets/Blog-GfQMeZ3H.js | 1 - assets/Blog-U8RuDZLO.js | 1 - assets/Blog-k72nF5ZD.js | 1 - assets/BlogPost-6BWrUJEi.js | 1 - assets/BlogPost-7-Xf40jM.js | 1 - assets/BlogPost-BD36pT-C.js | 1 - assets/BlogPost-Bf5JMy3h.js | 1 - assets/BlogPost-BrBVXcyO.js | 1 - assets/BlogPost-Cflzrvst.js | 292 ------------------ assets/BlogPost-Cft_Na6k.js | 1 - assets/BlogPost-CkWMP1e_.js | 1 - assets/BlogPost-DA4aOT_h.js | 1 - assets/BlogPost-DI-YldHS.js | 1 - assets/BlogPost-DItcK1GC.js | 1 - assets/BlogPost-DeO2pN01.js | 1 - assets/BlogPost-Dhg8xum2.js | 292 ------------------ assets/BlogPost-Dix1a_3A.js | 1 - assets/BlogPost-DkXdKW1C.js | 1 - assets/BlogPost-XSU2NJYI.js | 292 ------------------ assets/BlogPost-dRWncRqa.css | 1 - assets/BlogPost-fQplgej1.js | 1 - assets/BlogPost-jAaJWhIm.js | 1 - assets/BlogPost-rTIQ9Y3E.js | 292 ------------------ assets/BlogPost-ySdCElmM.js | 292 ------------------ assets/CalendlyWidget-BuhQfp2_.js | 1 - assets/Changelog-BA1YtsYp.js | 1 - assets/Changelog-BSmWk3a0.js | 1 - assets/Changelog-Ba4YptBq.js | 1 - assets/Changelog-BkfmouBY.js | 1 - assets/Changelog-BytfgdnJ.js | 1 - assets/Changelog-CgHVHcJg.js | 1 - assets/Changelog-ChPZLgGp.js | 1 - assets/Changelog-Coh13L0q.js | 1 - assets/Changelog-D-ebSC0G.js | 1 - assets/Changelog-DKAmnRzh.js | 1 - assets/Changelog-DNm5nvLJ.js | 1 - assets/Changelog-DY0j-PRO.js | 1 - assets/Changelog-LaCmY9AZ.js | 1 - assets/Changelog-_zFwkt5K.js | 1 - assets/Changelog-dTKijDWa.js | 1 - assets/Changelog-gIx07919.js | 1 - assets/Changelog-mI7mdncX.js | 1 - assets/Changelog-rqydXTBu.js | 1 - assets/Changelog-s4ZdEfl3.js | 1 - assets/Changelog-tzpHr6ui.js | 1 - assets/ClaudePlugin-BeNgMSb2.js | 13 - assets/ClaudePlugin-BiXDoOQI.js | 13 - assets/ClaudePlugin-C3NqTK6h.js | 13 - assets/ClaudePlugin-C5p2CNaj.js | 13 - assets/ClaudePlugin-C8eza7n_.js | 13 - assets/ClaudePlugin-CE-0Xttn.js | 13 - assets/ClaudePlugin-CHEQddAt.js | 13 - assets/ClaudePlugin-ClObfYRc.js | 13 - assets/ClaudePlugin-CrITqdfl.js | 13 - assets/ClaudePlugin-D2YUaHWD.js | 13 - assets/ClaudePlugin-D4c0dp2L.js | 13 - assets/ClaudePlugin-D87KUJYw.js | 13 - assets/ClaudePlugin-DA4c0s-8.js | 13 - assets/ClaudePlugin-Dch9HZQU.js | 13 - assets/ClaudePlugin-DdB5MGg7.js | 13 - assets/ClaudePlugin-Di39W-hr.js | 13 - assets/ClaudePlugin-IaKl8Ymk.js | 13 - assets/ClaudePlugin-JC5Ptu3v.js | 13 - assets/ClaudePlugin-RchU6fia.js | 13 - assets/ClaudePlugin-utSYcLIe.js | 13 - assets/Commercial-9F8cl06-.js | 1 - assets/Commercial-B6zsxQh9.js | 1 - assets/Commercial-B8PtG5cG.js | 1 - assets/Commercial-BBdipo-u.js | 1 - assets/Commercial-BPs2_LwV.js | 1 - assets/Commercial-BqJzIf-W.js | 1 - assets/Commercial-Bs186zL3.js | 1 - assets/Commercial-C-t75vTg.js | 1 - assets/Commercial-C0AKNYqz.js | 1 - assets/Commercial-CCyjMCrg.js | 1 - assets/Commercial-CHRl50uZ.js | 1 - assets/Commercial-CK9aK7Ti.js | 1 - assets/Commercial-CbwZveQB.js | 1 - assets/Commercial-CgBsPCVr.js | 1 - assets/Commercial-CxpVn0T0.js | 1 - assets/Commercial-DQA7Mxss.js | 1 - assets/Commercial-MVsMi_JH.js | 1 - assets/Commercial-_regRqgo.js | 1 - assets/Commercial-cPXJAPQT.js | 1 - assets/Commercial-e3jcuxYP.js | 1 - assets/Compare-5L3DLJJs.js | 1 - assets/Compare-CkU4pRN2.js | 1 - assets/Compare-CmfKYdGv.js | 1 - assets/Compare-Dsi6M4v7.js | 1 - assets/Compare-DzZ1S_gx.js | 1 - assets/Compare-H6yva3AD.js | 1 - assets/Compare-LBihc_61.js | 1 - assets/Contact--DE95zj8.js | 2 - assets/Contact--nZcFW5q.js | 2 - assets/Contact-5DsWRxiq.js | 2 - assets/Contact-5d9KNtoD.js | 2 - assets/Contact-BMa0iMCR.js | 2 - assets/Contact-BcMJNVGG.js | 2 - assets/Contact-Bqa2Snjs.js | 2 - assets/Contact-C9JTwA3Q.js | 2 - assets/Contact-CNyl61eI.js | 2 - assets/Contact-CcHAROXi.js | 2 - assets/Contact-CppRxmmN.js | 2 - assets/Contact-D1OwXUzJ.js | 2 - assets/Contact-D61L1Z0b.js | 2 - assets/Contact-Dg86Xaug.js | 2 - assets/Contact-Dlj_E6zg.js | 2 - assets/Contact-DuHdX58e.js | 2 - assets/Contact-DxkfRI_A.js | 2 - assets/Contact-HqNNvrNi.js | 2 - assets/Contact-Qiq6QgKt.js | 2 - assets/Contact-ZN3l_2_v.js | 2 - assets/Decoder-4z-vTL16.js | 1 - assets/Decoder-8BkZ7FyC.js | 1 - assets/Decoder-B0aQK11-.js | 1 - assets/Decoder-BP_OA76u.js | 1 - assets/Decoder-BsiAkz2C.js | 1 - assets/Decoder-CD04ckwI.js | 1 - assets/Decoder-CDV4Wz9P.js | 1 - assets/Decoder-Cp5PA7-h.js | 1 - assets/Decoder-DH3zReVC.js | 1 - assets/Decoder-DKEd4jAQ.js | 1 - assets/Decoder-DPFHpNvT.js | 1 - assets/Decoder-Daf_S4dz.js | 1 - assets/Decoder-Esh1GsiS.js | 1 - assets/Decoder-GMF7NEIt.js | 1 - assets/Decoder-HV90mkf5.js | 1 - assets/Decoder-LpFGwXBi.js | 1 - assets/Decoder-biNq2b_R.js | 1 - assets/Decoder-c0PrhrVs.js | 1 - assets/Decoder-s2E7Qqrc.js | 1 - assets/Decoder-tKogflLK.js | 1 - assets/DecoderFR-DlRe5BDF.js | 1 - assets/Docs-B3K5DZpI.js | 1 - assets/Docs-BF06L5iZ.js | 1 - assets/Docs-BVov2Mkr.js | 1 - assets/Docs-Bm6ILkhb.js | 1 - assets/Docs-C271TpRb.js | 1 - assets/Docs-CEW0_2Sk.js | 1 - assets/Docs-CEpRVtVA.js | 1 - assets/Docs-CGoJVEyR.js | 1 - assets/Docs-CVIyARKv.js | 1 - assets/Docs-CXj_11_o.js | 1 - assets/Docs-CbxYbU8R.js | 1 - assets/Docs-ChCtVg9x.js | 1 - assets/Docs-CxH1-v5C.js | 1 - assets/Docs-D2qi4UVs.js | 1 - assets/Docs-DA36t10x.js | 1 - assets/Docs-D_KRdt5F.js | 1 - assets/Docs-Di4dBc5W.js | 1 - assets/Docs-Do1RRZu3.js | 1 - assets/Docs-KUXBA0rX.js | 1 - assets/Docs-j61tlEUv.js | 1 - assets/Evidence-0j0vQPZW.js | 14 - assets/Evidence-B1mKE-cg.js | 14 - assets/Evidence-B6pxWHub.js | 14 - assets/Evidence-BF-nkrsP.js | 14 - assets/Evidence-Bj6L0ipY.js | 14 - assets/Evidence-BtzcgP8e.js | 14 - assets/Evidence-BwlSEt0X.js | 14 - assets/Evidence-C-hSXMLq.js | 14 - assets/Evidence-C7IJaw71.js | 14 - assets/Evidence-C8yUP9My.js | 14 - assets/Evidence-CiRnbh9a.js | 14 - assets/Evidence-Cjd1QxOO.js | 14 - assets/Evidence-CvTRADgN.js | 14 - assets/Evidence-Cxt9JaAV.js | 14 - assets/Evidence-D6-z-CP3.js | 14 - assets/Evidence-D6bfHitX.js | 14 - assets/Evidence-DQH9lAmJ.js | 14 - assets/Evidence-DyzDVZBl.js | 14 - assets/Evidence-Ls2E646e.js | 14 - assets/Evidence-bSRMW5HI.js | 14 - assets/Founder-B-0BF051.js | 1 - assets/Founder-B-wRvSAc.js | 1 - assets/Founder-BJJh0MV8.js | 1 - assets/Founder-BJk4p_3B.js | 1 - assets/Founder-BS0MLavi.js | 1 - assets/Founder-C0qDlV-3.js | 1 - assets/Founder-C30HSU2C.js | 1 - assets/Founder-C5uaMuzf.js | 1 - assets/Founder-CuTYpFsD.js | 1 - assets/Founder-D-gWai07.js | 1 - assets/Founder-D4bg94dW.js | 1 - assets/Founder-D5LRTxeE.js | 1 - assets/Founder-DOZO8QYR.js | 1 - assets/Founder-DhTV1Awk.js | 1 - assets/Founder-Do9ecKUC.js | 1 - assets/Founder-DrgUXXtt.js | 1 - assets/Founder-RJ-BJAag.js | 1 - assets/Founder-Y62YqrcF.js | 1 - assets/Founder-jWl4MVYA.js | 1 - assets/Founder-yFhedN2-.js | 1 - assets/GettingStarted-B53GBAZh.js | 83 ----- assets/GettingStarted-D3810rrk.js | 83 ----- assets/GettingStarted-DsueGorx.js | 83 ----- assets/HomeFR-DAGdU1jQ.js | 2 - assets/HomeFR-DzS_y1NC.js | 2 - assets/HomeFR-Jl_zglsD.js | 2 - assets/HomeFR-hCJiffE8.js | 2 - assets/HomeFR-hP6O4Cqx.js | 2 - assets/Installer-AK92G1y0.js | 1 - assets/Installer-B56SNEpM.js | 1 - assets/Installer-BPMW9xjA.js | 1 - assets/Installer-C7vdQ6zA.js | 1 - assets/Installer-C9MdHg8C.js | 1 - assets/Installer-CCQImbh1.js | 1 - assets/Installer-CHLZGdf0.js | 1 - assets/Installer-CeDfnoyS.js | 1 - assets/Installer-ClnL4KhH.js | 1 - assets/Installer-CxyEDIXg.js | 1 - assets/Installer-DMQ52ZRS.js | 1 - assets/Installer-DSAeCuP_.js | 1 - assets/Installer-DhJxPZYS.js | 1 - assets/Installer-DoCAdwGS.js | 1 - assets/Installer-DsNWHCu5.js | 1 - assets/Installer-DwoF2NcB.js | 1 - assets/Installer-DxsJdE4z.js | 1 - assets/Installer-fYNHzVom.js | 1 - assets/Installer-lZeDO-t9.js | 1 - assets/Installer-o7IM3q6A.js | 1 - assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 | Bin 28076 -> 0 bytes assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 | Bin 6912 -> 0 bytes .../KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 | Bin 6908 -> 0 bytes assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 | Bin 11348 -> 0 bytes assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 | Bin 11316 -> 0 bytes assets/KaTeX_Main-Bold-Cx986IdX.woff2 | Bin 25324 -> 0 bytes assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 | Bin 16780 -> 0 bytes assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 | Bin 16988 -> 0 bytes assets/KaTeX_Main-Regular-B22Nviop.woff2 | Bin 26272 -> 0 bytes assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 | Bin 16400 -> 0 bytes assets/KaTeX_Math-Italic-t53AETM-.woff2 | Bin 16440 -> 0 bytes assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 | Bin 12216 -> 0 bytes assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 | Bin 12028 -> 0 bytes assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 | Bin 10344 -> 0 bytes assets/KaTeX_Script-Regular-D3wIWfF6.woff2 | Bin 9644 -> 0 bytes assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 | Bin 5468 -> 0 bytes assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 | Bin 5208 -> 0 bytes assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 | Bin 4928 -> 0 bytes .../KaTeX_Typewriter-Regular-CO6r4hn1.woff2 | Bin 13568 -> 0 bytes assets/LegalPage-BXZvemzZ.js | 1 - assets/LegalPage-CFP-uSSS.js | 1 - assets/LegalPage-CclXHnEm.js | 1 - assets/LegalPage-D-Mi7GTG.js | 1 - assets/LegalPage-DvyIDT6j.js | 1 - assets/LegalPage-OlrhtE5C.js | 1 - assets/LegalPage-k7aoVn24.js | 1 - assets/License-2ghqe3kh.js | 1 - assets/License-4Bojqpc8.js | 1 - assets/License-BMVCbHh5.js | 1 - assets/License-BVQmOrwC.js | 1 - assets/License-Bbjd5pqD.js | 1 - assets/License-BfOBkHYL.js | 1 - assets/License-CLXCCxwS.js | 1 - assets/License-CSNrV1_I.js | 1 - assets/License-CUAefKwM.js | 1 - assets/License-CXS5aYz7.js | 1 - assets/License-CeBx9XeU.js | 1 - assets/License-CqqH5PUX.js | 1 - assets/License-D7X_SmnO.js | 1 - assets/License-DC6asr5h.js | 1 - assets/License-DDdBqsPy.js | 1 - assets/License-DHRrrKKE.js | 1 - assets/License-DxqQ4a3A.js | 1 - assets/License-PdOsBDOv.js | 1 - assets/License-qW4Azk-u.js | 1 - assets/License-usilVdvV.js | 1 - assets/LicenseAgreement-6bmCtLLY.js | 1 - assets/LicenseAgreement-BnmISf1J.js | 1 - assets/LicenseAgreement-CFfEeDQ9.js | 1 - assets/LicenseAgreement-DNUn9QnG.js | 1 - assets/LicenseAgreement-DRoDblCm.js | 1 - assets/LicenseAgreement-DybwV0lD.js | 1 - assets/LicenseAgreement-prqWmpN4.js | 1 - assets/LicenseAgreementFR-B4ZVCapm.js | 1 - assets/LicenseAgreementFR-CB5VPHTj.js | 1 - assets/LicenseAgreementFR-CCa0fXfI.js | 1 - assets/LicenseAgreementFR-D5JK6868.js | 1 - assets/LicenseAgreementFR-IumvCzu-.js | 1 - assets/LicenseAgreementFR-S73MctF5.js | 1 - assets/LicenseAgreementFR-vtWAZWNF.js | 1 - assets/LicenseFR-Ckd0MEiL.js | 1 - assets/Manual-B7fpCrlk.js | 67 ---- assets/Manual-B80JvGo2.js | 67 ---- assets/Manual-BOkG7qye.js | 67 ---- assets/Manual-BT_SdIYV.js | 67 ---- assets/Manual-BVfOpnR5.js | 67 ---- assets/Manual-Bgdopadc.js | 67 ---- assets/Manual-Bko8q4XD.js | 67 ---- assets/Manual-Cd4jvvKA.js | 67 ---- assets/Manual-CsPEksBK.js | 67 ---- assets/Manual-DV0IXz3U.js | 67 ---- assets/Manual-DVeToNSz.js | 67 ---- assets/Manual-DcMDTO2e.js | 67 ---- assets/Manual-DhAX5H3m.js | 67 ---- assets/Manual-DufMHAK3.js | 67 ---- assets/Manual-Dz9ghE94.js | 67 ---- assets/Manual-RdcO5vwC.js | 67 ---- assets/Manual-bANcf9AE.js | 67 ---- assets/Manual-ehjT3thq.js | 67 ---- assets/Manual-oB_C89DR.js | 67 ---- assets/Manual-shHk1ZuH.js | 67 ---- assets/McpServer-619DB13w.js | 31 -- assets/McpServer-B66-DjzI.js | 31 -- assets/McpServer-BQJ_Te-C.js | 31 -- assets/McpServer-Be8VQAo_.js | 31 -- assets/McpServer-Bxt8RVJ9.js | 31 -- assets/McpServer-C5JtddAJ.js | 31 -- assets/McpServer-CA7IXDf6.js | 31 -- assets/McpServer-CTaxUaPg.js | 31 -- assets/McpServer-CePFSOZJ.js | 31 -- assets/McpServer-Co_2_izC.js | 31 -- assets/McpServer-D27l0qru.js | 31 -- assets/McpServer-DBDf1DXP.js | 31 -- assets/McpServer-DH6efPKh.js | 31 -- assets/McpServer-DVGceqba.js | 31 -- assets/McpServer-DVuNiJfI.js | 31 -- assets/McpServer-DYX0yvB3.js | 31 -- assets/McpServer-V-tQ2EEs.js | 31 -- assets/McpServer-m4zxJ7m1.js | 31 -- assets/McpServer-vBOicFuG.js | 31 -- assets/McpServer-y-T_ds_x.js | 31 -- assets/MetricCard-BJ0ePioZ.js | 1 - assets/NeuralReveal-BflyZYSb.js | 1 - assets/NeuralReveal-Bsl9IGCr.js | 1 - assets/NeuralReveal-D-EQoOl2.js | 1 - assets/NeuralReveal-uYarhiMA.js | 1 - assets/NotFound-0OmhES2b.js | 1 - assets/NotFound-2w75ETv5.js | 1 - assets/NotFound-B9aHRzOY.js | 1 - assets/NotFound-BY-iDbPF.js | 1 - assets/NotFound-BizOSXTq.js | 1 - assets/NotFound-BqfnwVjo.js | 1 - assets/NotFound-BvmxweJ_.js | 1 - assets/NotFound-BxTs_LlH.js | 1 - assets/NotFound-C-HGJzn4.js | 1 - assets/NotFound-COhWWTle.js | 1 - assets/NotFound-CYYBlHH3.js | 1 - assets/NotFound-Ceu7jCqq.js | 1 - assets/NotFound-Cn29WaZX.js | 1 - assets/NotFound-D-ACnmyk.js | 1 - assets/NotFound-DF9dH9QN.js | 1 - assets/NotFound-DY5xxcSZ.js | 1 - assets/NotFound-DYyGE5rS.js | 1 - assets/NotFound-Gl-W94M8.js | 1 - assets/NotFound-LmmZglSu.js | 1 - assets/NotFound-Xb_C85Aw.js | 1 - assets/Pricing-01bd34ST.js | 6 - assets/Pricing-BMbyXkw2.js | 6 - assets/Pricing-BbPwznPI.js | 6 - assets/Pricing-Bqb9jgZa.js | 6 - assets/Pricing-CL6UmMkO.js | 6 - assets/Pricing-CZj0aLPH.js | 6 - assets/Pricing-Cn8Zecmp.js | 6 - assets/Pricing-D2yXl8FX.js | 6 - assets/Pricing-D3uoCnYX.js | 6 - assets/Pricing-DIy3-kFX.js | 6 - assets/Pricing-DJJSKVoA.js | 6 - assets/Pricing-DMwpPJSq.js | 6 - assets/Pricing-Ddy-FPVH.js | 6 - assets/Pricing-Deid2xWF.js | 6 - assets/Pricing-DkKSNR_L.js | 6 - assets/Pricing-DpB7aYgZ.js | 6 - assets/Pricing-DtCO08jL.js | 6 - assets/Pricing-VNXAJmmp.js | 6 - assets/Pricing-b_XG04Ml.js | 6 - assets/Pricing-xevqAEll.js | 6 - assets/PricingFR-1AsUzYak.js | 6 - assets/PricingFR-BLb3E3Pu.js | 6 - assets/PricingFR-BMDt_ie4.js | 6 - assets/PricingFR-BTMd2o9u.js | 6 - assets/PricingFR-B_0EkGv3.js | 6 - assets/PricingFR-B_DF8Sg3.js | 6 - assets/PricingFR-Ba1mTi8-.js | 6 - assets/PricingFR-BkwLcQqV.js | 6 - assets/PricingFR-Bq3K4m2D.js | 6 - assets/PricingFR-C1a9eh_h.js | 6 - assets/PricingFR-C5Yr9nMm.js | 6 - assets/PricingFR-C6K3hXax.js | 6 - assets/PricingFR-C6aJLaoB.js | 6 - assets/PricingFR-C8Es19li.js | 6 - assets/PricingFR-CtzmHxI3.js | 6 - assets/PricingFR-D89gbHS7.js | 6 - assets/PricingFR-DVFFUe5q.js | 6 - assets/PricingFR-DYCR87D8.js | 6 - assets/PricingFR-Dj13kvWH.js | 6 - assets/PricingFR-Dx93rO3U.js | 6 - assets/Privacy-1UpnFJMn.js | 1 - assets/Privacy-B3SNe1nk.js | 1 - assets/Privacy-BIGgflNy.js | 1 - assets/Privacy-Blbnjvv1.js | 1 - assets/Privacy-Bw56_mFe.js | 1 - assets/Privacy-Bxhj-CUV.js | 1 - assets/Privacy-C1rLQMC9.js | 1 - assets/Privacy-C4c3BcJK.js | 1 - assets/Privacy-CAKpuiQ_.js | 1 - assets/Privacy-CSC4E5Sx.js | 1 - assets/Privacy-ChjFFsO0.js | 1 - assets/Privacy-CsJ5OCPq.js | 1 - assets/Privacy-CwHcJhDF.js | 1 - assets/Privacy-D7vLEBoi.js | 1 - assets/Privacy-DA_dioZX.js | 1 - assets/Privacy-DHw_SEtf.js | 1 - assets/Privacy-DPO_GrhI.js | 1 - assets/Privacy-DTWyxh_E.js | 1 - assets/Privacy-DZfev8WZ.js | 1 - assets/Privacy-QF8StmXn.js | 1 - assets/PrivacyFR-BAX39_oh.js | 1 - assets/PrivacyFR-Bhng6Sji.js | 1 - assets/PrivacyFR-CCMtsUS3.js | 1 - assets/PrivacyFR-DI_0o-iC.js | 1 - assets/PrivacyFR-H5T4viaB.js | 1 - assets/PrivacyFR-fW9Yt675.js | 1 - assets/PrivacyFR-yruEp8O3.js | 1 - assets/Refund-4zHoAwwi.js | 1 - assets/Refund-7XZ4VkKd.js | 1 - assets/Refund-Brla-rHu.js | 1 - assets/Refund-C9DAd5MZ.js | 1 - assets/Refund-CRV_Z2o3.js | 1 - assets/Refund-CRy_OFTy.js | 1 - assets/Refund-CTEPp265.js | 1 - assets/Refund-CrMuzabH.js | 1 - assets/Refund-CtROPxer.js | 1 - assets/Refund-CzUjP8UP.js | 1 - assets/Refund-D6csSD1J.js | 1 - assets/Refund-DJWm-f08.js | 1 - assets/Refund-DOxk_DuC.js | 1 - assets/Refund-DahbRJTv.js | 1 - assets/Refund-DehBoW1l.js | 1 - assets/Refund-DgWFKD0E.js | 1 - assets/Refund-Dogk61Pr.js | 1 - assets/Refund-M3lrlUb1.js | 1 - assets/Refund-Maay4b_R.js | 1 - assets/Refund-wy-XPTpv.js | 1 - assets/RefundFR-8Zk51nsW.js | 1 - assets/RefundFR-Bvjoj9dF.js | 1 - assets/RefundFR-Bw4xCJhz.js | 1 - assets/RefundFR-Di2o3oj1.js | 1 - assets/RefundFR-KUCUHxUI.js | 1 - assets/RefundFR-a4_cfmuo.js | 1 - assets/RefundFR-i_PP-hSK.js | 1 - assets/Security-BIDsFI0G.js | 5 - assets/Security-CHoU1bHv.js | 5 - assets/Security-CMQacbrM.js | 5 - assets/Security-Cazz61L-.js | 5 - assets/Security-NaiOZQL5.js | 5 - assets/Security-_EeEi6gF.js | 5 - assets/Security-nZQ-1_Kq.js | 5 - assets/Status-9pqPpc0_.js | 2 - assets/Status-DCgeKAmb.js | 2 - assets/Status-TwBfNKPu.js | 2 - assets/Success-91MT9Ucy.js | 1 - assets/Success-B1zul-Er.js | 1 - assets/Success-B8_Hgbq9.js | 1 - assets/Success-BHRL8Fta.js | 1 - assets/Success-BhHxkaUv.js | 1 - assets/Success-Birxz6hb.js | 1 - assets/Success-Bv54wCpg.js | 1 - assets/Success-C-DQgAO-.js | 1 - assets/Success-CPXIGHaJ.js | 1 - assets/Success-Ceeso_PI.js | 1 - assets/Success-CysFhypv.js | 1 - assets/Success-D4idHMxj.js | 1 - assets/Success-DoyGmHi-.js | 1 - assets/Success-DyK9JNg3.js | 1 - assets/Success-DzdWYiHw.js | 1 - assets/Success-Gvo6K55X.js | 1 - assets/Success-HcGQP6Ks.js | 1 - assets/Success-S_Pp6vUv.js | 1 - assets/Success-VMONhcQ1.js | 1 - assets/Success-oU7-xJRu.js | 1 - assets/TechnicalReference-0kYOhnhq.js | 30 -- assets/TechnicalReference-2CV7Djeo.js | 30 -- assets/TechnicalReference-6OShAOCc.js | 30 -- assets/TechnicalReference-B02NOFbc.js | 30 -- assets/TechnicalReference-BKOcLLqZ.js | 30 -- assets/TechnicalReference-BV2uErpt.js | 30 -- assets/TechnicalReference-BcuWSg0l.js | 30 -- assets/TechnicalReference-BgUx638a.js | 30 -- assets/TechnicalReference-Bu46t5Vm.js | 30 -- assets/TechnicalReference-C9HpEUdH.js | 30 -- assets/TechnicalReference-CBJ6Ke79.js | 30 -- assets/TechnicalReference-CGYLPxss.js | 30 -- assets/TechnicalReference-CSIZ4Dc5.js | 30 -- assets/TechnicalReference-CUtSwYSY.js | 30 -- assets/TechnicalReference-CXFs7c1x.js | 30 -- assets/TechnicalReference-D9UxbEdI.js | 30 -- assets/TechnicalReference-DNqYMsCV.js | 30 -- assets/TechnicalReference-eXSmTrhC.js | 30 -- assets/TechnicalReference-jpw-R7Cj.js | 30 -- assets/TechnicalReference-p4g91Uag.js | 30 -- assets/Terms-76bOmhZP.js | 1 - assets/Terms-77QLsgfs.js | 1 - assets/Terms-BCAJnAzZ.js | 1 - assets/Terms-BM0r7Vh2.js | 1 - assets/Terms-BMvqN1Ou.js | 1 - assets/Terms-BQl40Nln.js | 1 - assets/Terms-BSR2RP9l.js | 1 - assets/Terms-BWWtoPuP.js | 1 - assets/Terms-C28kGJxx.js | 1 - assets/Terms-C4cY4y3Q.js | 1 - assets/Terms-CBCTDevc.js | 1 - assets/Terms-CGsSEgCq.js | 1 - assets/Terms-CLjJSdI4.js | 1 - assets/Terms-CVZRlSgU.js | 1 - assets/Terms-DPSf-TPz.js | 1 - assets/Terms-DY-DzE_C.js | 1 - assets/Terms-Drxk6W26.js | 1 - assets/Terms-DxyQtSpQ.js | 1 - assets/Terms-QBjW5d1V.js | 1 - assets/Terms-Yn4kZj_3.js | 1 - assets/TermsFR-B3qetcJS.js | 1 - assets/TermsFR-BL-VfMSd.js | 1 - assets/TermsFR-BLz2i-t6.js | 1 - assets/TermsFR-BY56KTEe.js | 1 - assets/TermsFR-Bf_HkjhM.js | 1 - assets/TermsFR-C-UQyznI.js | 1 - assets/TermsFR-CEQwYMmk.js | 1 - assets/TermsFR-CGlEiMoF.js | 1 - assets/TermsFR-CR4HwzC7.js | 1 - assets/TermsFR-CRefmr0E.js | 1 - assets/TermsFR-Cd9NdZ4e.js | 1 - assets/TermsFR-CpfM0oN9.js | 1 - assets/TermsFR-DFr5huZJ.js | 1 - assets/TermsFR-DGRL90sS.js | 1 - assets/TermsFR-Da9N2nsG.js | 1 - assets/TermsFR-LQl3tW0l.js | 1 - assets/TermsFR-f8dBaL9s.js | 1 - assets/TermsFR-g8LxJpb0.js | 1 - assets/TermsFR-qP37hEHa.js | 1 - assets/TermsFR-vMuUfUiC.js | 1 - assets/TrialForm-BEDfCuvx.js | 1 - assets/TrialForm-BIjatKya.js | 1 - assets/TrialForm-CC5CTQMP.js | 1 - assets/TrialForm-CpW40uwE.js | 1 - assets/TrialForm-D2xU-ZBp.js | 1 - assets/UseCases-C79R3CZj.js | 1 - assets/UseCases-DNGcu2gl.js | 1 - assets/UseCases-NQxQ23sn.js | 1 - assets/Workbench-8mJsB15A.js | 1 - assets/Workbench-B-dk2nMz.js | 1 - assets/Workbench-BFjOjf90.js | 1 - assets/Workbench-BidwJKAH.js | 1 - assets/Workbench-BlqsQe_K.js | 1 - assets/Workbench-BnUYVoPz.js | 1 - assets/Workbench-Bo8C0YZA.js | 1 - assets/Workbench-CXqTjHwC.js | 1 - assets/Workbench-Ct-U8BKA.js | 1 - assets/Workbench-Cwp5zsg1.js | 1 - assets/Workbench-D9a6HjUh.js | 1 - assets/Workbench-D9zAZUIr.js | 1 - assets/Workbench-DHXDBZcd.js | 1 - assets/Workbench-DVV9vcVI.js | 1 - assets/Workbench-Dhk9boMQ.js | 1 - assets/Workbench-DjamN-lA.js | 1 - assets/Workbench-DsnWT-94.js | 1 - assets/Workbench-HYBHlCyI.js | 1 - assets/Workbench-KEHB2TYr.js | 1 - assets/Workbench-e7-L36H7.js | 1 - assets/blogData-OjR2ZtNr.js | 1 - assets/faqData-B9kvzm8o.js | 1 - assets/faqData-CCPvMSkf.js | 1 - assets/faqData-CHsSn8s2.js | 1 - assets/faqData-CYz7igrM.js | 1 - assets/faqData-CvhYJZQK.js | 1 - assets/faqData-D7ZwBN6k.js | 1 - assets/faqData-DUePwhCA.js | 1 - assets/faqData-De1eOWz0.js | 1 - assets/faqData-IO8c0Ufu.js | 1 - assets/faqData-gdKKGDcm.js | 1 - assets/g.png | Bin 77302 -> 0 bytes assets/index-1mmfOXJK.css | 1 - assets/index-Ad_ZSp8G.css | 1 - assets/index-B4dH-q6G.css | 1 - assets/index-B9kEGiWi.js | 3 - assets/index-BN-vOeL2.js | 3 - assets/index-BUYYSLdX.js | 3 - assets/index-BcbVjARk.js | 3 - assets/index-Bh9DBCb3.js | 3 - assets/index-Bqoypqx2.css | 1 - assets/index-C0MRek1P.css | 1 - assets/index-CCmwjNGU.js | 5 - assets/index-CPKYFN2V.css | 1 - assets/index-CcwlvHYJ.js | 5 - assets/index-Cenxhcds.css | 1 - assets/index-CpdATiEY.js | 3 - assets/index-CqAA-ZXu.js | 3 - assets/index-CucZ45VI.css | 1 - assets/index-CxWP17m6.js | 3 - assets/index-DRAXObZB.js | 3 - assets/index-DayaklK-.js | 5 - assets/index-DfmalfJN.css | 1 - assets/index-DkYdPRY7.js | 3 - assets/index-DlmjLVYe.js | 3 - assets/index-PdoH5kLF.js | 5 - assets/index-RdWlg_k8.css | 1 - assets/index-WV1aysjN.js | 3 - assets/index-_BpMZhV3.js | 3 - assets/index-abfjMTlQ.js | 3 - assets/index-c1PDYu0j.js | 5 - assets/index-iVST85F-.js | 3 - assets/index-pKrDEFpD.css | 1 - assets/licenseAgreement-BCkY28fp.js | 1 - assets/licenseAgreement-BVRBs70C.js | 1 - assets/licenseAgreement-SdRZXyQm.js | 1 - assets/privacy-CP9bp7X-.js | 1 - assets/privacy-C_JimZhu.js | 1 - assets/privacy-CyCxpbsd.js | 1 - assets/privacy-KnN4Rr90.js | 1 - assets/releases--9GgxpSb.js | 1 - assets/releases-1-HBloZv.js | 1 - assets/releases-DiQz_IDu.js | 1 - assets/terms-B2iKgo_y.js | 1 - assets/terms-DgnSX4e_.js | 1 - assets/terms-LnOasveG.js | 1 - assets/vendor-PiU4YGcH.js | 5 - assets/vendor-gsap-a3sj5zmn.js | 1 - assets/vendor-md-CLKxNZoa.js | 290 ----------------- assets/vendor-md-dRWncRqa.css | 1 - assets/vendor-react-BiHfrq0e.js | 9 - assets/vendor-ui-B0ssGG4c.js | 1 - assets/vendor-ui-B8TlNU4J.js | 1 - blog/01QecFoundations/index.html | 146 --------- ...1_qec_foundations_syndrome_faithfulness.md | 164 ---------- blog/02BlossomMwpmExact/index.html | 177 ----------- blog/02_blossom_mwpm_exact.md | 154 --------- blog/03SparseBlossomEventDriven/index.html | 157 ---------- blog/03_sparse_blossom_event_driven.md | 146 --------- blog/04FastUnionFind/index.html | 156 ---------- blog/04_fast_union_find_uf01.md | 179 ----------- blog/05BpOsdQldpc/index.html | 207 ------------- blog/05_bp_osd_qldpc.md | 165 ---------- blog/06AmbiguityGnnNeural/index.html | 156 ---------- blog/06_ambiguity_gnn_neural.md | 159 ---------- blog/07SpaceTimeDecoder/index.html | 156 ---------- blog/07_space_time_decoder.md | 137 -------- blog/08AutoDecoderCascade/index.html | 142 --------- blog/08_autodecoder_cascade.md | 135 -------- blog/09GpuAcceleration/index.html | 136 -------- blog/09_gpu_acceleration.md | 119 ------- blog/10BenchmarksArchitecture/index.html | 268 ---------------- blog/10_benchmarks_architecture.md | 159 ---------- blog/11SteaneWorkedDecode/index.html | 142 --------- blog/11_steane_worked_decode.md | 159 ---------- blog/12RotatedSurfaceD3/index.html | 132 -------- blog/12_rotated_surface_d3.md | 111 ------- blog/13DemPipeline/index.html | 163 ---------- blog/13_dem_pipeline.md | 137 -------- blog/14WeightedDecoding/index.html | 146 --------- blog/14_weighted_decoding.md | 100 ------ blog/15LogicalErrorRates/index.html | 195 ------------ blog/15_logical_error_rates.md | 120 ------- blog/16DecoderSelection/index.html | 207 ------------- blog/16_decoder_selection.md | 142 --------- blog/17ReproducibleBenchmarks/index.html | 170 ---------- blog/17_reproducible_benchmarks.md | 127 -------- blog/18RustPyo3Architecture/index.html | 159 ---------- blog/18_rust_pyo3_architecture.md | 123 -------- blog/19ReleaseLicensing/index.html | 201 ------------ blog/19_release_licensing.md | 128 -------- blog/20EcosystemIntegration/index.html | 136 -------- blog/20_ecosystem_integration.md | 115 ------- blog/index.html | 65 ---- changelog/index.html | 65 ---- claude-plugin/index.html | 77 ----- commercial/index.html | 65 ---- compare/index.html | 65 ---- contact/index.html | 65 ---- decoder/index.html | 69 ----- docs/index.html | 65 ---- docs/reference.md | 111 ------- evidence/index.html | 78 ----- feed.xml | 177 ----------- feed.xsl | 36 --- fr/decoder/index.html | 69 ----- fr/index.html | 70 ----- fr/license-agreement/index.html | 69 ----- fr/license/index.html | 69 ----- fr/pricing/index.html | 74 ----- fr/privacy/index.html | 69 ----- fr/refund/index.html | 69 ----- fr/terms/index.html | 69 ----- getting-started/index.html | 142 --------- guillaume-lessard/index.html | 65 ---- health.json | 8 - humans.txt | 7 - images/favicon-48.png | Bin 5130 -> 0 bytes images/hero-bg-1200.avif | Bin 34307 -> 0 bytes images/hero-bg-640.avif | Bin 13256 -> 0 bytes images/hero-bg-640.webp | Bin 15202 -> 0 bytes images/hero-bg.png | Bin 461085 -> 0 bytes images/hero-bg.webp | Bin 60746 -> 0 bytes images/icon-192.png | Bin 52893 -> 0 bytes images/icon-512.png | Bin 302046 -> 0 bytes images/logo-160.webp | Bin 6896 -> 0 bytes images/logo-80.webp | Bin 2346 -> 0 bytes images/logo.png | Bin 51725 -> 0 bytes images/og-banner.png | Bin 455161 -> 0 bytes index.html | 71 ----- installer/index.html | 65 ---- license-agreement/index.html | 69 ----- license.html | 15 - license/index.html | 69 ----- llms-full.txt | 110 ------- llms.txt | 100 ------ manifest.webmanifest | 37 --- manual/index.html | 65 ---- mcp-server/index.html | 95 ------ og/about.jpg | Bin 60536 -> 0 bytes og/blog--01QecFoundations.jpg | Bin 58731 -> 0 bytes og/blog--02BlossomMwpmExact.jpg | Bin 58616 -> 0 bytes og/blog--03SparseBlossomEventDriven.jpg | Bin 54415 -> 0 bytes og/blog--04FastUnionFind.jpg | Bin 58105 -> 0 bytes og/blog--05BpOsdQldpc.jpg | Bin 48681 -> 0 bytes og/blog--06AmbiguityGnnNeural.jpg | Bin 60394 -> 0 bytes og/blog--07SpaceTimeDecoder.jpg | Bin 58349 -> 0 bytes og/blog--08AutoDecoderCascade.jpg | Bin 61007 -> 0 bytes og/blog--09GpuAcceleration.jpg | Bin 56800 -> 0 bytes og/blog--10BenchmarksArchitecture.jpg | Bin 59651 -> 0 bytes og/blog--11SteaneWorkedDecode.jpg | Bin 48290 -> 0 bytes og/blog--12RotatedSurfaceD3.jpg | Bin 44461 -> 0 bytes og/blog--13DemPipeline.jpg | Bin 56108 -> 0 bytes og/blog--14WeightedDecoding.jpg | Bin 55785 -> 0 bytes og/blog--15LogicalErrorRates.jpg | Bin 58557 -> 0 bytes og/blog--16DecoderSelection.jpg | Bin 52138 -> 0 bytes og/blog--17ReproducibleBenchmarks.jpg | Bin 47618 -> 0 bytes og/blog--18RustPyo3Architecture.jpg | Bin 55494 -> 0 bytes og/blog--19ReleaseLicensing.jpg | Bin 55501 -> 0 bytes og/blog--20EcosystemIntegration.jpg | Bin 61761 -> 0 bytes og/blog.jpg | Bin 43658 -> 0 bytes og/changelog.jpg | Bin 40967 -> 0 bytes og/claude-plugin.jpg | Bin 66548 -> 0 bytes og/commercial.jpg | Bin 51381 -> 0 bytes og/compare.jpg | Bin 66737 -> 0 bytes og/contact.jpg | Bin 32663 -> 0 bytes og/decoder.jpg | Bin 63711 -> 0 bytes og/docs.jpg | Bin 42494 -> 0 bytes og/evidence.jpg | Bin 45158 -> 0 bytes og/fr--decoder.jpg | Bin 67868 -> 0 bytes og/fr--license-agreement.jpg | Bin 53522 -> 0 bytes og/fr--license.jpg | Bin 42179 -> 0 bytes og/fr--pricing.jpg | Bin 40937 -> 0 bytes og/fr--privacy.jpg | Bin 52413 -> 0 bytes og/fr--refund.jpg | Bin 52392 -> 0 bytes og/fr--terms.jpg | Bin 49917 -> 0 bytes og/fr.jpg | Bin 67453 -> 0 bytes og/getting-started.jpg | Bin 45470 -> 0 bytes og/guillaume-lessard.jpg | Bin 68540 -> 0 bytes og/home.jpg | Bin 67473 -> 0 bytes og/installer.jpg | Bin 36376 -> 0 bytes og/license-agreement.jpg | Bin 54969 -> 0 bytes og/license.jpg | Bin 43272 -> 0 bytes og/manual.jpg | Bin 38597 -> 0 bytes og/mcp-server.jpg | Bin 42765 -> 0 bytes og/pricing.jpg | Bin 41101 -> 0 bytes og/privacy.jpg | Bin 46810 -> 0 bytes og/refund.jpg | Bin 46891 -> 0 bytes og/security.jpg | Bin 46819 -> 0 bytes og/status.jpg | Bin 39069 -> 0 bytes og/technical-reference.jpg | Bin 42002 -> 0 bytes og/terms.jpg | Bin 45383 -> 0 bytes og/use-cases.jpg | Bin 42501 -> 0 bytes og/workbench.jpg | Bin 42413 -> 0 bytes pricing/index.html | 74 ----- pricing_scrolled.png | Bin 1366420 -> 0 bytes privacy/index.html | 69 ----- refund/index.html | 69 ----- robots.txt | 12 - security/index.html | 69 ----- sitemap.xml | 123 -------- status/index.html | 65 ---- success/index.html | 64 ---- technical-reference/index.html | 67 ---- terms/index.html | 69 ----- use-cases/index.html | 65 ---- workbench/index.html | 65 ---- 834 files changed, 15611 deletions(-) delete mode 100644 .nojekyll delete mode 100644 .well-known/acp.json delete mode 100644 .well-known/agent-skills/index.json delete mode 100644 .well-known/agent-skills/qector-commercial-licensing.md delete mode 100644 .well-known/agent-skills/qector-install.md delete mode 100644 .well-known/api-catalog.json delete mode 100644 .well-known/http-message-signatures-directory.json delete mode 100644 .well-known/mcp.json delete mode 100644 .well-known/mcp/server-card.json delete mode 100644 .well-known/mcp/server-cards.json delete mode 100644 .well-known/security.txt delete mode 100644 .well-known/skills/index.json delete mode 100644 .well-known/tags.json delete mode 100644 .well-known/ucp.json delete mode 100644 404.html delete mode 100644 CNAME delete mode 100644 _headers delete mode 100644 _redirects delete mode 100644 about/index.html delete mode 100644 ads.txt delete mode 100644 ai.txt delete mode 100644 assets/About-3TwVcIFU.js delete mode 100644 assets/About-BU6bVOrg.js delete mode 100644 assets/About-BUf56YF-.js delete mode 100644 assets/About-BZN32cY9.js delete mode 100644 assets/About-BbIEqzXR.js delete mode 100644 assets/About-C8aE746q.js delete mode 100644 assets/About-Cu_jIKW1.js delete mode 100644 assets/About-CzYv2IZf.js delete mode 100644 assets/About-D3KKMkNy.js delete mode 100644 assets/About-DZ1qdQkd.js delete mode 100644 assets/About-Ddg7J4Ee.js delete mode 100644 assets/About-Dhus-ur3.js delete mode 100644 assets/About-DnC04FuM.js delete mode 100644 assets/About-DorgToxb.js delete mode 100644 assets/About-DuDzDMwT.js delete mode 100644 assets/About-Sj0SVf3I.js delete mode 100644 assets/About-dHfyUSjm.js delete mode 100644 assets/About-nvnHXVMG.js delete mode 100644 assets/About-oOskQ3bw.js delete mode 100644 assets/About-xwac7kSw.js delete mode 100644 assets/Blog-B5AVcxHA.js delete mode 100644 assets/Blog-B7IPXEkA.js delete mode 100644 assets/Blog-B8QgtaGj.js delete mode 100644 assets/Blog-BB_6WkaC.js delete mode 100644 assets/Blog-BFZmecCN.js delete mode 100644 assets/Blog-BIVCFw61.js delete mode 100644 assets/Blog-BSuGBgCE.js delete mode 100644 assets/Blog-BcO2ftSu.js delete mode 100644 assets/Blog-C2PtKQPL.js delete mode 100644 assets/Blog-CVJEEWRY.js delete mode 100644 assets/Blog-Caqe2zJR.js delete mode 100644 assets/Blog-Cd2PdBpE.js delete mode 100644 assets/Blog-Cvysd4Ha.js delete mode 100644 assets/Blog-D-1MbS1Y.js delete mode 100644 assets/Blog-DD-Qo4do.js delete mode 100644 assets/Blog-DNJmCnqw.js delete mode 100644 assets/Blog-DrxsUsTK.js delete mode 100644 assets/Blog-GfQMeZ3H.js delete mode 100644 assets/Blog-U8RuDZLO.js delete mode 100644 assets/Blog-k72nF5ZD.js delete mode 100644 assets/BlogPost-6BWrUJEi.js delete mode 100644 assets/BlogPost-7-Xf40jM.js delete mode 100644 assets/BlogPost-BD36pT-C.js delete mode 100644 assets/BlogPost-Bf5JMy3h.js delete mode 100644 assets/BlogPost-BrBVXcyO.js delete mode 100644 assets/BlogPost-Cflzrvst.js delete mode 100644 assets/BlogPost-Cft_Na6k.js delete mode 100644 assets/BlogPost-CkWMP1e_.js delete mode 100644 assets/BlogPost-DA4aOT_h.js delete mode 100644 assets/BlogPost-DI-YldHS.js delete mode 100644 assets/BlogPost-DItcK1GC.js delete mode 100644 assets/BlogPost-DeO2pN01.js delete mode 100644 assets/BlogPost-Dhg8xum2.js delete mode 100644 assets/BlogPost-Dix1a_3A.js delete mode 100644 assets/BlogPost-DkXdKW1C.js delete mode 100644 assets/BlogPost-XSU2NJYI.js delete mode 100644 assets/BlogPost-dRWncRqa.css delete mode 100644 assets/BlogPost-fQplgej1.js delete mode 100644 assets/BlogPost-jAaJWhIm.js delete mode 100644 assets/BlogPost-rTIQ9Y3E.js delete mode 100644 assets/BlogPost-ySdCElmM.js delete mode 100644 assets/CalendlyWidget-BuhQfp2_.js delete mode 100644 assets/Changelog-BA1YtsYp.js delete mode 100644 assets/Changelog-BSmWk3a0.js delete mode 100644 assets/Changelog-Ba4YptBq.js delete mode 100644 assets/Changelog-BkfmouBY.js delete mode 100644 assets/Changelog-BytfgdnJ.js delete mode 100644 assets/Changelog-CgHVHcJg.js delete mode 100644 assets/Changelog-ChPZLgGp.js delete mode 100644 assets/Changelog-Coh13L0q.js delete mode 100644 assets/Changelog-D-ebSC0G.js delete mode 100644 assets/Changelog-DKAmnRzh.js delete mode 100644 assets/Changelog-DNm5nvLJ.js delete mode 100644 assets/Changelog-DY0j-PRO.js delete mode 100644 assets/Changelog-LaCmY9AZ.js delete mode 100644 assets/Changelog-_zFwkt5K.js delete mode 100644 assets/Changelog-dTKijDWa.js delete mode 100644 assets/Changelog-gIx07919.js delete mode 100644 assets/Changelog-mI7mdncX.js delete mode 100644 assets/Changelog-rqydXTBu.js delete mode 100644 assets/Changelog-s4ZdEfl3.js delete mode 100644 assets/Changelog-tzpHr6ui.js delete mode 100644 assets/ClaudePlugin-BeNgMSb2.js delete mode 100644 assets/ClaudePlugin-BiXDoOQI.js delete mode 100644 assets/ClaudePlugin-C3NqTK6h.js delete mode 100644 assets/ClaudePlugin-C5p2CNaj.js delete mode 100644 assets/ClaudePlugin-C8eza7n_.js delete mode 100644 assets/ClaudePlugin-CE-0Xttn.js delete mode 100644 assets/ClaudePlugin-CHEQddAt.js delete mode 100644 assets/ClaudePlugin-ClObfYRc.js delete mode 100644 assets/ClaudePlugin-CrITqdfl.js delete mode 100644 assets/ClaudePlugin-D2YUaHWD.js delete mode 100644 assets/ClaudePlugin-D4c0dp2L.js delete mode 100644 assets/ClaudePlugin-D87KUJYw.js delete mode 100644 assets/ClaudePlugin-DA4c0s-8.js delete mode 100644 assets/ClaudePlugin-Dch9HZQU.js delete mode 100644 assets/ClaudePlugin-DdB5MGg7.js delete mode 100644 assets/ClaudePlugin-Di39W-hr.js delete mode 100644 assets/ClaudePlugin-IaKl8Ymk.js delete mode 100644 assets/ClaudePlugin-JC5Ptu3v.js delete mode 100644 assets/ClaudePlugin-RchU6fia.js delete mode 100644 assets/ClaudePlugin-utSYcLIe.js delete mode 100644 assets/Commercial-9F8cl06-.js delete mode 100644 assets/Commercial-B6zsxQh9.js delete mode 100644 assets/Commercial-B8PtG5cG.js delete mode 100644 assets/Commercial-BBdipo-u.js delete mode 100644 assets/Commercial-BPs2_LwV.js delete mode 100644 assets/Commercial-BqJzIf-W.js delete mode 100644 assets/Commercial-Bs186zL3.js delete mode 100644 assets/Commercial-C-t75vTg.js delete mode 100644 assets/Commercial-C0AKNYqz.js delete mode 100644 assets/Commercial-CCyjMCrg.js delete mode 100644 assets/Commercial-CHRl50uZ.js delete mode 100644 assets/Commercial-CK9aK7Ti.js delete mode 100644 assets/Commercial-CbwZveQB.js delete mode 100644 assets/Commercial-CgBsPCVr.js delete mode 100644 assets/Commercial-CxpVn0T0.js delete mode 100644 assets/Commercial-DQA7Mxss.js delete mode 100644 assets/Commercial-MVsMi_JH.js delete mode 100644 assets/Commercial-_regRqgo.js delete mode 100644 assets/Commercial-cPXJAPQT.js delete mode 100644 assets/Commercial-e3jcuxYP.js delete mode 100644 assets/Compare-5L3DLJJs.js delete mode 100644 assets/Compare-CkU4pRN2.js delete mode 100644 assets/Compare-CmfKYdGv.js delete mode 100644 assets/Compare-Dsi6M4v7.js delete mode 100644 assets/Compare-DzZ1S_gx.js delete mode 100644 assets/Compare-H6yva3AD.js delete mode 100644 assets/Compare-LBihc_61.js delete mode 100644 assets/Contact--DE95zj8.js delete mode 100644 assets/Contact--nZcFW5q.js delete mode 100644 assets/Contact-5DsWRxiq.js delete mode 100644 assets/Contact-5d9KNtoD.js delete mode 100644 assets/Contact-BMa0iMCR.js delete mode 100644 assets/Contact-BcMJNVGG.js delete mode 100644 assets/Contact-Bqa2Snjs.js delete mode 100644 assets/Contact-C9JTwA3Q.js delete mode 100644 assets/Contact-CNyl61eI.js delete mode 100644 assets/Contact-CcHAROXi.js delete mode 100644 assets/Contact-CppRxmmN.js delete mode 100644 assets/Contact-D1OwXUzJ.js delete mode 100644 assets/Contact-D61L1Z0b.js delete mode 100644 assets/Contact-Dg86Xaug.js delete mode 100644 assets/Contact-Dlj_E6zg.js delete mode 100644 assets/Contact-DuHdX58e.js delete mode 100644 assets/Contact-DxkfRI_A.js delete mode 100644 assets/Contact-HqNNvrNi.js delete mode 100644 assets/Contact-Qiq6QgKt.js delete mode 100644 assets/Contact-ZN3l_2_v.js delete mode 100644 assets/Decoder-4z-vTL16.js delete mode 100644 assets/Decoder-8BkZ7FyC.js delete mode 100644 assets/Decoder-B0aQK11-.js delete mode 100644 assets/Decoder-BP_OA76u.js delete mode 100644 assets/Decoder-BsiAkz2C.js delete mode 100644 assets/Decoder-CD04ckwI.js delete mode 100644 assets/Decoder-CDV4Wz9P.js delete mode 100644 assets/Decoder-Cp5PA7-h.js delete mode 100644 assets/Decoder-DH3zReVC.js delete mode 100644 assets/Decoder-DKEd4jAQ.js delete mode 100644 assets/Decoder-DPFHpNvT.js delete mode 100644 assets/Decoder-Daf_S4dz.js delete mode 100644 assets/Decoder-Esh1GsiS.js delete mode 100644 assets/Decoder-GMF7NEIt.js delete mode 100644 assets/Decoder-HV90mkf5.js delete mode 100644 assets/Decoder-LpFGwXBi.js delete mode 100644 assets/Decoder-biNq2b_R.js delete mode 100644 assets/Decoder-c0PrhrVs.js delete mode 100644 assets/Decoder-s2E7Qqrc.js delete mode 100644 assets/Decoder-tKogflLK.js delete mode 100644 assets/DecoderFR-DlRe5BDF.js delete mode 100644 assets/Docs-B3K5DZpI.js delete mode 100644 assets/Docs-BF06L5iZ.js delete mode 100644 assets/Docs-BVov2Mkr.js delete mode 100644 assets/Docs-Bm6ILkhb.js delete mode 100644 assets/Docs-C271TpRb.js delete mode 100644 assets/Docs-CEW0_2Sk.js delete mode 100644 assets/Docs-CEpRVtVA.js delete mode 100644 assets/Docs-CGoJVEyR.js delete mode 100644 assets/Docs-CVIyARKv.js delete mode 100644 assets/Docs-CXj_11_o.js delete mode 100644 assets/Docs-CbxYbU8R.js delete mode 100644 assets/Docs-ChCtVg9x.js delete mode 100644 assets/Docs-CxH1-v5C.js delete mode 100644 assets/Docs-D2qi4UVs.js delete mode 100644 assets/Docs-DA36t10x.js delete mode 100644 assets/Docs-D_KRdt5F.js delete mode 100644 assets/Docs-Di4dBc5W.js delete mode 100644 assets/Docs-Do1RRZu3.js delete mode 100644 assets/Docs-KUXBA0rX.js delete mode 100644 assets/Docs-j61tlEUv.js delete mode 100644 assets/Evidence-0j0vQPZW.js delete mode 100644 assets/Evidence-B1mKE-cg.js delete mode 100644 assets/Evidence-B6pxWHub.js delete mode 100644 assets/Evidence-BF-nkrsP.js delete mode 100644 assets/Evidence-Bj6L0ipY.js delete mode 100644 assets/Evidence-BtzcgP8e.js delete mode 100644 assets/Evidence-BwlSEt0X.js delete mode 100644 assets/Evidence-C-hSXMLq.js delete mode 100644 assets/Evidence-C7IJaw71.js delete mode 100644 assets/Evidence-C8yUP9My.js delete mode 100644 assets/Evidence-CiRnbh9a.js delete mode 100644 assets/Evidence-Cjd1QxOO.js delete mode 100644 assets/Evidence-CvTRADgN.js delete mode 100644 assets/Evidence-Cxt9JaAV.js delete mode 100644 assets/Evidence-D6-z-CP3.js delete mode 100644 assets/Evidence-D6bfHitX.js delete mode 100644 assets/Evidence-DQH9lAmJ.js delete mode 100644 assets/Evidence-DyzDVZBl.js delete mode 100644 assets/Evidence-Ls2E646e.js delete mode 100644 assets/Evidence-bSRMW5HI.js delete mode 100644 assets/Founder-B-0BF051.js delete mode 100644 assets/Founder-B-wRvSAc.js delete mode 100644 assets/Founder-BJJh0MV8.js delete mode 100644 assets/Founder-BJk4p_3B.js delete mode 100644 assets/Founder-BS0MLavi.js delete mode 100644 assets/Founder-C0qDlV-3.js delete mode 100644 assets/Founder-C30HSU2C.js delete mode 100644 assets/Founder-C5uaMuzf.js delete mode 100644 assets/Founder-CuTYpFsD.js delete mode 100644 assets/Founder-D-gWai07.js delete mode 100644 assets/Founder-D4bg94dW.js delete mode 100644 assets/Founder-D5LRTxeE.js delete mode 100644 assets/Founder-DOZO8QYR.js delete mode 100644 assets/Founder-DhTV1Awk.js delete mode 100644 assets/Founder-Do9ecKUC.js delete mode 100644 assets/Founder-DrgUXXtt.js delete mode 100644 assets/Founder-RJ-BJAag.js delete mode 100644 assets/Founder-Y62YqrcF.js delete mode 100644 assets/Founder-jWl4MVYA.js delete mode 100644 assets/Founder-yFhedN2-.js delete mode 100644 assets/GettingStarted-B53GBAZh.js delete mode 100644 assets/GettingStarted-D3810rrk.js delete mode 100644 assets/GettingStarted-DsueGorx.js delete mode 100644 assets/HomeFR-DAGdU1jQ.js delete mode 100644 assets/HomeFR-DzS_y1NC.js delete mode 100644 assets/HomeFR-Jl_zglsD.js delete mode 100644 assets/HomeFR-hCJiffE8.js delete mode 100644 assets/HomeFR-hP6O4Cqx.js delete mode 100644 assets/Installer-AK92G1y0.js delete mode 100644 assets/Installer-B56SNEpM.js delete mode 100644 assets/Installer-BPMW9xjA.js delete mode 100644 assets/Installer-C7vdQ6zA.js delete mode 100644 assets/Installer-C9MdHg8C.js delete mode 100644 assets/Installer-CCQImbh1.js delete mode 100644 assets/Installer-CHLZGdf0.js delete mode 100644 assets/Installer-CeDfnoyS.js delete mode 100644 assets/Installer-ClnL4KhH.js delete mode 100644 assets/Installer-CxyEDIXg.js delete mode 100644 assets/Installer-DMQ52ZRS.js delete mode 100644 assets/Installer-DSAeCuP_.js delete mode 100644 assets/Installer-DhJxPZYS.js delete mode 100644 assets/Installer-DoCAdwGS.js delete mode 100644 assets/Installer-DsNWHCu5.js delete mode 100644 assets/Installer-DwoF2NcB.js delete mode 100644 assets/Installer-DxsJdE4z.js delete mode 100644 assets/Installer-fYNHzVom.js delete mode 100644 assets/Installer-lZeDO-t9.js delete mode 100644 assets/Installer-o7IM3q6A.js delete mode 100644 assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 delete mode 100644 assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 delete mode 100644 assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 delete mode 100644 assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 delete mode 100644 assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 delete mode 100644 assets/KaTeX_Main-Bold-Cx986IdX.woff2 delete mode 100644 assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 delete mode 100644 assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 delete mode 100644 assets/KaTeX_Main-Regular-B22Nviop.woff2 delete mode 100644 assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 delete mode 100644 assets/KaTeX_Math-Italic-t53AETM-.woff2 delete mode 100644 assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 delete mode 100644 assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 delete mode 100644 assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 delete mode 100644 assets/KaTeX_Script-Regular-D3wIWfF6.woff2 delete mode 100644 assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 delete mode 100644 assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 delete mode 100644 assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 delete mode 100644 assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 delete mode 100644 assets/LegalPage-BXZvemzZ.js delete mode 100644 assets/LegalPage-CFP-uSSS.js delete mode 100644 assets/LegalPage-CclXHnEm.js delete mode 100644 assets/LegalPage-D-Mi7GTG.js delete mode 100644 assets/LegalPage-DvyIDT6j.js delete mode 100644 assets/LegalPage-OlrhtE5C.js delete mode 100644 assets/LegalPage-k7aoVn24.js delete mode 100644 assets/License-2ghqe3kh.js delete mode 100644 assets/License-4Bojqpc8.js delete mode 100644 assets/License-BMVCbHh5.js delete mode 100644 assets/License-BVQmOrwC.js delete mode 100644 assets/License-Bbjd5pqD.js delete mode 100644 assets/License-BfOBkHYL.js delete mode 100644 assets/License-CLXCCxwS.js delete mode 100644 assets/License-CSNrV1_I.js delete mode 100644 assets/License-CUAefKwM.js delete mode 100644 assets/License-CXS5aYz7.js delete mode 100644 assets/License-CeBx9XeU.js delete mode 100644 assets/License-CqqH5PUX.js delete mode 100644 assets/License-D7X_SmnO.js delete mode 100644 assets/License-DC6asr5h.js delete mode 100644 assets/License-DDdBqsPy.js delete mode 100644 assets/License-DHRrrKKE.js delete mode 100644 assets/License-DxqQ4a3A.js delete mode 100644 assets/License-PdOsBDOv.js delete mode 100644 assets/License-qW4Azk-u.js delete mode 100644 assets/License-usilVdvV.js delete mode 100644 assets/LicenseAgreement-6bmCtLLY.js delete mode 100644 assets/LicenseAgreement-BnmISf1J.js delete mode 100644 assets/LicenseAgreement-CFfEeDQ9.js delete mode 100644 assets/LicenseAgreement-DNUn9QnG.js delete mode 100644 assets/LicenseAgreement-DRoDblCm.js delete mode 100644 assets/LicenseAgreement-DybwV0lD.js delete mode 100644 assets/LicenseAgreement-prqWmpN4.js delete mode 100644 assets/LicenseAgreementFR-B4ZVCapm.js delete mode 100644 assets/LicenseAgreementFR-CB5VPHTj.js delete mode 100644 assets/LicenseAgreementFR-CCa0fXfI.js delete mode 100644 assets/LicenseAgreementFR-D5JK6868.js delete mode 100644 assets/LicenseAgreementFR-IumvCzu-.js delete mode 100644 assets/LicenseAgreementFR-S73MctF5.js delete mode 100644 assets/LicenseAgreementFR-vtWAZWNF.js delete mode 100644 assets/LicenseFR-Ckd0MEiL.js delete mode 100644 assets/Manual-B7fpCrlk.js delete mode 100644 assets/Manual-B80JvGo2.js delete mode 100644 assets/Manual-BOkG7qye.js delete mode 100644 assets/Manual-BT_SdIYV.js delete mode 100644 assets/Manual-BVfOpnR5.js delete mode 100644 assets/Manual-Bgdopadc.js delete mode 100644 assets/Manual-Bko8q4XD.js delete mode 100644 assets/Manual-Cd4jvvKA.js delete mode 100644 assets/Manual-CsPEksBK.js delete mode 100644 assets/Manual-DV0IXz3U.js delete mode 100644 assets/Manual-DVeToNSz.js delete mode 100644 assets/Manual-DcMDTO2e.js delete mode 100644 assets/Manual-DhAX5H3m.js delete mode 100644 assets/Manual-DufMHAK3.js delete mode 100644 assets/Manual-Dz9ghE94.js delete mode 100644 assets/Manual-RdcO5vwC.js delete mode 100644 assets/Manual-bANcf9AE.js delete mode 100644 assets/Manual-ehjT3thq.js delete mode 100644 assets/Manual-oB_C89DR.js delete mode 100644 assets/Manual-shHk1ZuH.js delete mode 100644 assets/McpServer-619DB13w.js delete mode 100644 assets/McpServer-B66-DjzI.js delete mode 100644 assets/McpServer-BQJ_Te-C.js delete mode 100644 assets/McpServer-Be8VQAo_.js delete mode 100644 assets/McpServer-Bxt8RVJ9.js delete mode 100644 assets/McpServer-C5JtddAJ.js delete mode 100644 assets/McpServer-CA7IXDf6.js delete mode 100644 assets/McpServer-CTaxUaPg.js delete mode 100644 assets/McpServer-CePFSOZJ.js delete mode 100644 assets/McpServer-Co_2_izC.js delete mode 100644 assets/McpServer-D27l0qru.js delete mode 100644 assets/McpServer-DBDf1DXP.js delete mode 100644 assets/McpServer-DH6efPKh.js delete mode 100644 assets/McpServer-DVGceqba.js delete mode 100644 assets/McpServer-DVuNiJfI.js delete mode 100644 assets/McpServer-DYX0yvB3.js delete mode 100644 assets/McpServer-V-tQ2EEs.js delete mode 100644 assets/McpServer-m4zxJ7m1.js delete mode 100644 assets/McpServer-vBOicFuG.js delete mode 100644 assets/McpServer-y-T_ds_x.js delete mode 100644 assets/MetricCard-BJ0ePioZ.js delete mode 100644 assets/NeuralReveal-BflyZYSb.js delete mode 100644 assets/NeuralReveal-Bsl9IGCr.js delete mode 100644 assets/NeuralReveal-D-EQoOl2.js delete mode 100644 assets/NeuralReveal-uYarhiMA.js delete mode 100644 assets/NotFound-0OmhES2b.js delete mode 100644 assets/NotFound-2w75ETv5.js delete mode 100644 assets/NotFound-B9aHRzOY.js delete mode 100644 assets/NotFound-BY-iDbPF.js delete mode 100644 assets/NotFound-BizOSXTq.js delete mode 100644 assets/NotFound-BqfnwVjo.js delete mode 100644 assets/NotFound-BvmxweJ_.js delete mode 100644 assets/NotFound-BxTs_LlH.js delete mode 100644 assets/NotFound-C-HGJzn4.js delete mode 100644 assets/NotFound-COhWWTle.js delete mode 100644 assets/NotFound-CYYBlHH3.js delete mode 100644 assets/NotFound-Ceu7jCqq.js delete mode 100644 assets/NotFound-Cn29WaZX.js delete mode 100644 assets/NotFound-D-ACnmyk.js delete mode 100644 assets/NotFound-DF9dH9QN.js delete mode 100644 assets/NotFound-DY5xxcSZ.js delete mode 100644 assets/NotFound-DYyGE5rS.js delete mode 100644 assets/NotFound-Gl-W94M8.js delete mode 100644 assets/NotFound-LmmZglSu.js delete mode 100644 assets/NotFound-Xb_C85Aw.js delete mode 100644 assets/Pricing-01bd34ST.js delete mode 100644 assets/Pricing-BMbyXkw2.js delete mode 100644 assets/Pricing-BbPwznPI.js delete mode 100644 assets/Pricing-Bqb9jgZa.js delete mode 100644 assets/Pricing-CL6UmMkO.js delete mode 100644 assets/Pricing-CZj0aLPH.js delete mode 100644 assets/Pricing-Cn8Zecmp.js delete mode 100644 assets/Pricing-D2yXl8FX.js delete mode 100644 assets/Pricing-D3uoCnYX.js delete mode 100644 assets/Pricing-DIy3-kFX.js delete mode 100644 assets/Pricing-DJJSKVoA.js delete mode 100644 assets/Pricing-DMwpPJSq.js delete mode 100644 assets/Pricing-Ddy-FPVH.js delete mode 100644 assets/Pricing-Deid2xWF.js delete mode 100644 assets/Pricing-DkKSNR_L.js delete mode 100644 assets/Pricing-DpB7aYgZ.js delete mode 100644 assets/Pricing-DtCO08jL.js delete mode 100644 assets/Pricing-VNXAJmmp.js delete mode 100644 assets/Pricing-b_XG04Ml.js delete mode 100644 assets/Pricing-xevqAEll.js delete mode 100644 assets/PricingFR-1AsUzYak.js delete mode 100644 assets/PricingFR-BLb3E3Pu.js delete mode 100644 assets/PricingFR-BMDt_ie4.js delete mode 100644 assets/PricingFR-BTMd2o9u.js delete mode 100644 assets/PricingFR-B_0EkGv3.js delete mode 100644 assets/PricingFR-B_DF8Sg3.js delete mode 100644 assets/PricingFR-Ba1mTi8-.js delete mode 100644 assets/PricingFR-BkwLcQqV.js delete mode 100644 assets/PricingFR-Bq3K4m2D.js delete mode 100644 assets/PricingFR-C1a9eh_h.js delete mode 100644 assets/PricingFR-C5Yr9nMm.js delete mode 100644 assets/PricingFR-C6K3hXax.js delete mode 100644 assets/PricingFR-C6aJLaoB.js delete mode 100644 assets/PricingFR-C8Es19li.js delete mode 100644 assets/PricingFR-CtzmHxI3.js delete mode 100644 assets/PricingFR-D89gbHS7.js delete mode 100644 assets/PricingFR-DVFFUe5q.js delete mode 100644 assets/PricingFR-DYCR87D8.js delete mode 100644 assets/PricingFR-Dj13kvWH.js delete mode 100644 assets/PricingFR-Dx93rO3U.js delete mode 100644 assets/Privacy-1UpnFJMn.js delete mode 100644 assets/Privacy-B3SNe1nk.js delete mode 100644 assets/Privacy-BIGgflNy.js delete mode 100644 assets/Privacy-Blbnjvv1.js delete mode 100644 assets/Privacy-Bw56_mFe.js delete mode 100644 assets/Privacy-Bxhj-CUV.js delete mode 100644 assets/Privacy-C1rLQMC9.js delete mode 100644 assets/Privacy-C4c3BcJK.js delete mode 100644 assets/Privacy-CAKpuiQ_.js delete mode 100644 assets/Privacy-CSC4E5Sx.js delete mode 100644 assets/Privacy-ChjFFsO0.js delete mode 100644 assets/Privacy-CsJ5OCPq.js delete mode 100644 assets/Privacy-CwHcJhDF.js delete mode 100644 assets/Privacy-D7vLEBoi.js delete mode 100644 assets/Privacy-DA_dioZX.js delete mode 100644 assets/Privacy-DHw_SEtf.js delete mode 100644 assets/Privacy-DPO_GrhI.js delete mode 100644 assets/Privacy-DTWyxh_E.js delete mode 100644 assets/Privacy-DZfev8WZ.js delete mode 100644 assets/Privacy-QF8StmXn.js delete mode 100644 assets/PrivacyFR-BAX39_oh.js delete mode 100644 assets/PrivacyFR-Bhng6Sji.js delete mode 100644 assets/PrivacyFR-CCMtsUS3.js delete mode 100644 assets/PrivacyFR-DI_0o-iC.js delete mode 100644 assets/PrivacyFR-H5T4viaB.js delete mode 100644 assets/PrivacyFR-fW9Yt675.js delete mode 100644 assets/PrivacyFR-yruEp8O3.js delete mode 100644 assets/Refund-4zHoAwwi.js delete mode 100644 assets/Refund-7XZ4VkKd.js delete mode 100644 assets/Refund-Brla-rHu.js delete mode 100644 assets/Refund-C9DAd5MZ.js delete mode 100644 assets/Refund-CRV_Z2o3.js delete mode 100644 assets/Refund-CRy_OFTy.js delete mode 100644 assets/Refund-CTEPp265.js delete mode 100644 assets/Refund-CrMuzabH.js delete mode 100644 assets/Refund-CtROPxer.js delete mode 100644 assets/Refund-CzUjP8UP.js delete mode 100644 assets/Refund-D6csSD1J.js delete mode 100644 assets/Refund-DJWm-f08.js delete mode 100644 assets/Refund-DOxk_DuC.js delete mode 100644 assets/Refund-DahbRJTv.js delete mode 100644 assets/Refund-DehBoW1l.js delete mode 100644 assets/Refund-DgWFKD0E.js delete mode 100644 assets/Refund-Dogk61Pr.js delete mode 100644 assets/Refund-M3lrlUb1.js delete mode 100644 assets/Refund-Maay4b_R.js delete mode 100644 assets/Refund-wy-XPTpv.js delete mode 100644 assets/RefundFR-8Zk51nsW.js delete mode 100644 assets/RefundFR-Bvjoj9dF.js delete mode 100644 assets/RefundFR-Bw4xCJhz.js delete mode 100644 assets/RefundFR-Di2o3oj1.js delete mode 100644 assets/RefundFR-KUCUHxUI.js delete mode 100644 assets/RefundFR-a4_cfmuo.js delete mode 100644 assets/RefundFR-i_PP-hSK.js delete mode 100644 assets/Security-BIDsFI0G.js delete mode 100644 assets/Security-CHoU1bHv.js delete mode 100644 assets/Security-CMQacbrM.js delete mode 100644 assets/Security-Cazz61L-.js delete mode 100644 assets/Security-NaiOZQL5.js delete mode 100644 assets/Security-_EeEi6gF.js delete mode 100644 assets/Security-nZQ-1_Kq.js delete mode 100644 assets/Status-9pqPpc0_.js delete mode 100644 assets/Status-DCgeKAmb.js delete mode 100644 assets/Status-TwBfNKPu.js delete mode 100644 assets/Success-91MT9Ucy.js delete mode 100644 assets/Success-B1zul-Er.js delete mode 100644 assets/Success-B8_Hgbq9.js delete mode 100644 assets/Success-BHRL8Fta.js delete mode 100644 assets/Success-BhHxkaUv.js delete mode 100644 assets/Success-Birxz6hb.js delete mode 100644 assets/Success-Bv54wCpg.js delete mode 100644 assets/Success-C-DQgAO-.js delete mode 100644 assets/Success-CPXIGHaJ.js delete mode 100644 assets/Success-Ceeso_PI.js delete mode 100644 assets/Success-CysFhypv.js delete mode 100644 assets/Success-D4idHMxj.js delete mode 100644 assets/Success-DoyGmHi-.js delete mode 100644 assets/Success-DyK9JNg3.js delete mode 100644 assets/Success-DzdWYiHw.js delete mode 100644 assets/Success-Gvo6K55X.js delete mode 100644 assets/Success-HcGQP6Ks.js delete mode 100644 assets/Success-S_Pp6vUv.js delete mode 100644 assets/Success-VMONhcQ1.js delete mode 100644 assets/Success-oU7-xJRu.js delete mode 100644 assets/TechnicalReference-0kYOhnhq.js delete mode 100644 assets/TechnicalReference-2CV7Djeo.js delete mode 100644 assets/TechnicalReference-6OShAOCc.js delete mode 100644 assets/TechnicalReference-B02NOFbc.js delete mode 100644 assets/TechnicalReference-BKOcLLqZ.js delete mode 100644 assets/TechnicalReference-BV2uErpt.js delete mode 100644 assets/TechnicalReference-BcuWSg0l.js delete mode 100644 assets/TechnicalReference-BgUx638a.js delete mode 100644 assets/TechnicalReference-Bu46t5Vm.js delete mode 100644 assets/TechnicalReference-C9HpEUdH.js delete mode 100644 assets/TechnicalReference-CBJ6Ke79.js delete mode 100644 assets/TechnicalReference-CGYLPxss.js delete mode 100644 assets/TechnicalReference-CSIZ4Dc5.js delete mode 100644 assets/TechnicalReference-CUtSwYSY.js delete mode 100644 assets/TechnicalReference-CXFs7c1x.js delete mode 100644 assets/TechnicalReference-D9UxbEdI.js delete mode 100644 assets/TechnicalReference-DNqYMsCV.js delete mode 100644 assets/TechnicalReference-eXSmTrhC.js delete mode 100644 assets/TechnicalReference-jpw-R7Cj.js delete mode 100644 assets/TechnicalReference-p4g91Uag.js delete mode 100644 assets/Terms-76bOmhZP.js delete mode 100644 assets/Terms-77QLsgfs.js delete mode 100644 assets/Terms-BCAJnAzZ.js delete mode 100644 assets/Terms-BM0r7Vh2.js delete mode 100644 assets/Terms-BMvqN1Ou.js delete mode 100644 assets/Terms-BQl40Nln.js delete mode 100644 assets/Terms-BSR2RP9l.js delete mode 100644 assets/Terms-BWWtoPuP.js delete mode 100644 assets/Terms-C28kGJxx.js delete mode 100644 assets/Terms-C4cY4y3Q.js delete mode 100644 assets/Terms-CBCTDevc.js delete mode 100644 assets/Terms-CGsSEgCq.js delete mode 100644 assets/Terms-CLjJSdI4.js delete mode 100644 assets/Terms-CVZRlSgU.js delete mode 100644 assets/Terms-DPSf-TPz.js delete mode 100644 assets/Terms-DY-DzE_C.js delete mode 100644 assets/Terms-Drxk6W26.js delete mode 100644 assets/Terms-DxyQtSpQ.js delete mode 100644 assets/Terms-QBjW5d1V.js delete mode 100644 assets/Terms-Yn4kZj_3.js delete mode 100644 assets/TermsFR-B3qetcJS.js delete mode 100644 assets/TermsFR-BL-VfMSd.js delete mode 100644 assets/TermsFR-BLz2i-t6.js delete mode 100644 assets/TermsFR-BY56KTEe.js delete mode 100644 assets/TermsFR-Bf_HkjhM.js delete mode 100644 assets/TermsFR-C-UQyznI.js delete mode 100644 assets/TermsFR-CEQwYMmk.js delete mode 100644 assets/TermsFR-CGlEiMoF.js delete mode 100644 assets/TermsFR-CR4HwzC7.js delete mode 100644 assets/TermsFR-CRefmr0E.js delete mode 100644 assets/TermsFR-Cd9NdZ4e.js delete mode 100644 assets/TermsFR-CpfM0oN9.js delete mode 100644 assets/TermsFR-DFr5huZJ.js delete mode 100644 assets/TermsFR-DGRL90sS.js delete mode 100644 assets/TermsFR-Da9N2nsG.js delete mode 100644 assets/TermsFR-LQl3tW0l.js delete mode 100644 assets/TermsFR-f8dBaL9s.js delete mode 100644 assets/TermsFR-g8LxJpb0.js delete mode 100644 assets/TermsFR-qP37hEHa.js delete mode 100644 assets/TermsFR-vMuUfUiC.js delete mode 100644 assets/TrialForm-BEDfCuvx.js delete mode 100644 assets/TrialForm-BIjatKya.js delete mode 100644 assets/TrialForm-CC5CTQMP.js delete mode 100644 assets/TrialForm-CpW40uwE.js delete mode 100644 assets/TrialForm-D2xU-ZBp.js delete mode 100644 assets/UseCases-C79R3CZj.js delete mode 100644 assets/UseCases-DNGcu2gl.js delete mode 100644 assets/UseCases-NQxQ23sn.js delete mode 100644 assets/Workbench-8mJsB15A.js delete mode 100644 assets/Workbench-B-dk2nMz.js delete mode 100644 assets/Workbench-BFjOjf90.js delete mode 100644 assets/Workbench-BidwJKAH.js delete mode 100644 assets/Workbench-BlqsQe_K.js delete mode 100644 assets/Workbench-BnUYVoPz.js delete mode 100644 assets/Workbench-Bo8C0YZA.js delete mode 100644 assets/Workbench-CXqTjHwC.js delete mode 100644 assets/Workbench-Ct-U8BKA.js delete mode 100644 assets/Workbench-Cwp5zsg1.js delete mode 100644 assets/Workbench-D9a6HjUh.js delete mode 100644 assets/Workbench-D9zAZUIr.js delete mode 100644 assets/Workbench-DHXDBZcd.js delete mode 100644 assets/Workbench-DVV9vcVI.js delete mode 100644 assets/Workbench-Dhk9boMQ.js delete mode 100644 assets/Workbench-DjamN-lA.js delete mode 100644 assets/Workbench-DsnWT-94.js delete mode 100644 assets/Workbench-HYBHlCyI.js delete mode 100644 assets/Workbench-KEHB2TYr.js delete mode 100644 assets/Workbench-e7-L36H7.js delete mode 100644 assets/blogData-OjR2ZtNr.js delete mode 100644 assets/faqData-B9kvzm8o.js delete mode 100644 assets/faqData-CCPvMSkf.js delete mode 100644 assets/faqData-CHsSn8s2.js delete mode 100644 assets/faqData-CYz7igrM.js delete mode 100644 assets/faqData-CvhYJZQK.js delete mode 100644 assets/faqData-D7ZwBN6k.js delete mode 100644 assets/faqData-DUePwhCA.js delete mode 100644 assets/faqData-De1eOWz0.js delete mode 100644 assets/faqData-IO8c0Ufu.js delete mode 100644 assets/faqData-gdKKGDcm.js delete mode 100644 assets/g.png delete mode 100644 assets/index-1mmfOXJK.css delete mode 100644 assets/index-Ad_ZSp8G.css delete mode 100644 assets/index-B4dH-q6G.css delete mode 100644 assets/index-B9kEGiWi.js delete mode 100644 assets/index-BN-vOeL2.js delete mode 100644 assets/index-BUYYSLdX.js delete mode 100644 assets/index-BcbVjARk.js delete mode 100644 assets/index-Bh9DBCb3.js delete mode 100644 assets/index-Bqoypqx2.css delete mode 100644 assets/index-C0MRek1P.css delete mode 100644 assets/index-CCmwjNGU.js delete mode 100644 assets/index-CPKYFN2V.css delete mode 100644 assets/index-CcwlvHYJ.js delete mode 100644 assets/index-Cenxhcds.css delete mode 100644 assets/index-CpdATiEY.js delete mode 100644 assets/index-CqAA-ZXu.js delete mode 100644 assets/index-CucZ45VI.css delete mode 100644 assets/index-CxWP17m6.js delete mode 100644 assets/index-DRAXObZB.js delete mode 100644 assets/index-DayaklK-.js delete mode 100644 assets/index-DfmalfJN.css delete mode 100644 assets/index-DkYdPRY7.js delete mode 100644 assets/index-DlmjLVYe.js delete mode 100644 assets/index-PdoH5kLF.js delete mode 100644 assets/index-RdWlg_k8.css delete mode 100644 assets/index-WV1aysjN.js delete mode 100644 assets/index-_BpMZhV3.js delete mode 100644 assets/index-abfjMTlQ.js delete mode 100644 assets/index-c1PDYu0j.js delete mode 100644 assets/index-iVST85F-.js delete mode 100644 assets/index-pKrDEFpD.css delete mode 100644 assets/licenseAgreement-BCkY28fp.js delete mode 100644 assets/licenseAgreement-BVRBs70C.js delete mode 100644 assets/licenseAgreement-SdRZXyQm.js delete mode 100644 assets/privacy-CP9bp7X-.js delete mode 100644 assets/privacy-C_JimZhu.js delete mode 100644 assets/privacy-CyCxpbsd.js delete mode 100644 assets/privacy-KnN4Rr90.js delete mode 100644 assets/releases--9GgxpSb.js delete mode 100644 assets/releases-1-HBloZv.js delete mode 100644 assets/releases-DiQz_IDu.js delete mode 100644 assets/terms-B2iKgo_y.js delete mode 100644 assets/terms-DgnSX4e_.js delete mode 100644 assets/terms-LnOasveG.js delete mode 100644 assets/vendor-PiU4YGcH.js delete mode 100644 assets/vendor-gsap-a3sj5zmn.js delete mode 100644 assets/vendor-md-CLKxNZoa.js delete mode 100644 assets/vendor-md-dRWncRqa.css delete mode 100644 assets/vendor-react-BiHfrq0e.js delete mode 100644 assets/vendor-ui-B0ssGG4c.js delete mode 100644 assets/vendor-ui-B8TlNU4J.js delete mode 100644 blog/01QecFoundations/index.html delete mode 100644 blog/01_qec_foundations_syndrome_faithfulness.md delete mode 100644 blog/02BlossomMwpmExact/index.html delete mode 100644 blog/02_blossom_mwpm_exact.md delete mode 100644 blog/03SparseBlossomEventDriven/index.html delete mode 100644 blog/03_sparse_blossom_event_driven.md delete mode 100644 blog/04FastUnionFind/index.html delete mode 100644 blog/04_fast_union_find_uf01.md delete mode 100644 blog/05BpOsdQldpc/index.html delete mode 100644 blog/05_bp_osd_qldpc.md delete mode 100644 blog/06AmbiguityGnnNeural/index.html delete mode 100644 blog/06_ambiguity_gnn_neural.md delete mode 100644 blog/07SpaceTimeDecoder/index.html delete mode 100644 blog/07_space_time_decoder.md delete mode 100644 blog/08AutoDecoderCascade/index.html delete mode 100644 blog/08_autodecoder_cascade.md delete mode 100644 blog/09GpuAcceleration/index.html delete mode 100644 blog/09_gpu_acceleration.md delete mode 100644 blog/10BenchmarksArchitecture/index.html delete mode 100644 blog/10_benchmarks_architecture.md delete mode 100644 blog/11SteaneWorkedDecode/index.html delete mode 100644 blog/11_steane_worked_decode.md delete mode 100644 blog/12RotatedSurfaceD3/index.html delete mode 100644 blog/12_rotated_surface_d3.md delete mode 100644 blog/13DemPipeline/index.html delete mode 100644 blog/13_dem_pipeline.md delete mode 100644 blog/14WeightedDecoding/index.html delete mode 100644 blog/14_weighted_decoding.md delete mode 100644 blog/15LogicalErrorRates/index.html delete mode 100644 blog/15_logical_error_rates.md delete mode 100644 blog/16DecoderSelection/index.html delete mode 100644 blog/16_decoder_selection.md delete mode 100644 blog/17ReproducibleBenchmarks/index.html delete mode 100644 blog/17_reproducible_benchmarks.md delete mode 100644 blog/18RustPyo3Architecture/index.html delete mode 100644 blog/18_rust_pyo3_architecture.md delete mode 100644 blog/19ReleaseLicensing/index.html delete mode 100644 blog/19_release_licensing.md delete mode 100644 blog/20EcosystemIntegration/index.html delete mode 100644 blog/20_ecosystem_integration.md delete mode 100644 blog/index.html delete mode 100644 changelog/index.html delete mode 100644 claude-plugin/index.html delete mode 100644 commercial/index.html delete mode 100644 compare/index.html delete mode 100644 contact/index.html delete mode 100644 decoder/index.html delete mode 100644 docs/index.html delete mode 100644 docs/reference.md delete mode 100644 evidence/index.html delete mode 100644 feed.xml delete mode 100644 feed.xsl delete mode 100644 fr/decoder/index.html delete mode 100644 fr/index.html delete mode 100644 fr/license-agreement/index.html delete mode 100644 fr/license/index.html delete mode 100644 fr/pricing/index.html delete mode 100644 fr/privacy/index.html delete mode 100644 fr/refund/index.html delete mode 100644 fr/terms/index.html delete mode 100644 getting-started/index.html delete mode 100644 guillaume-lessard/index.html delete mode 100644 health.json delete mode 100644 humans.txt delete mode 100644 images/favicon-48.png delete mode 100644 images/hero-bg-1200.avif delete mode 100644 images/hero-bg-640.avif delete mode 100644 images/hero-bg-640.webp delete mode 100644 images/hero-bg.png delete mode 100644 images/hero-bg.webp delete mode 100644 images/icon-192.png delete mode 100644 images/icon-512.png delete mode 100644 images/logo-160.webp delete mode 100644 images/logo-80.webp delete mode 100644 images/logo.png delete mode 100644 images/og-banner.png delete mode 100644 index.html delete mode 100644 installer/index.html delete mode 100644 license-agreement/index.html delete mode 100644 license.html delete mode 100644 license/index.html delete mode 100644 llms-full.txt delete mode 100644 llms.txt delete mode 100644 manifest.webmanifest delete mode 100644 manual/index.html delete mode 100644 mcp-server/index.html delete mode 100644 og/about.jpg delete mode 100644 og/blog--01QecFoundations.jpg delete mode 100644 og/blog--02BlossomMwpmExact.jpg delete mode 100644 og/blog--03SparseBlossomEventDriven.jpg delete mode 100644 og/blog--04FastUnionFind.jpg delete mode 100644 og/blog--05BpOsdQldpc.jpg delete mode 100644 og/blog--06AmbiguityGnnNeural.jpg delete mode 100644 og/blog--07SpaceTimeDecoder.jpg delete mode 100644 og/blog--08AutoDecoderCascade.jpg delete mode 100644 og/blog--09GpuAcceleration.jpg delete mode 100644 og/blog--10BenchmarksArchitecture.jpg delete mode 100644 og/blog--11SteaneWorkedDecode.jpg delete mode 100644 og/blog--12RotatedSurfaceD3.jpg delete mode 100644 og/blog--13DemPipeline.jpg delete mode 100644 og/blog--14WeightedDecoding.jpg delete mode 100644 og/blog--15LogicalErrorRates.jpg delete mode 100644 og/blog--16DecoderSelection.jpg delete mode 100644 og/blog--17ReproducibleBenchmarks.jpg delete mode 100644 og/blog--18RustPyo3Architecture.jpg delete mode 100644 og/blog--19ReleaseLicensing.jpg delete mode 100644 og/blog--20EcosystemIntegration.jpg delete mode 100644 og/blog.jpg delete mode 100644 og/changelog.jpg delete mode 100644 og/claude-plugin.jpg delete mode 100644 og/commercial.jpg delete mode 100644 og/compare.jpg delete mode 100644 og/contact.jpg delete mode 100644 og/decoder.jpg delete mode 100644 og/docs.jpg delete mode 100644 og/evidence.jpg delete mode 100644 og/fr--decoder.jpg delete mode 100644 og/fr--license-agreement.jpg delete mode 100644 og/fr--license.jpg delete mode 100644 og/fr--pricing.jpg delete mode 100644 og/fr--privacy.jpg delete mode 100644 og/fr--refund.jpg delete mode 100644 og/fr--terms.jpg delete mode 100644 og/fr.jpg delete mode 100644 og/getting-started.jpg delete mode 100644 og/guillaume-lessard.jpg delete mode 100644 og/home.jpg delete mode 100644 og/installer.jpg delete mode 100644 og/license-agreement.jpg delete mode 100644 og/license.jpg delete mode 100644 og/manual.jpg delete mode 100644 og/mcp-server.jpg delete mode 100644 og/pricing.jpg delete mode 100644 og/privacy.jpg delete mode 100644 og/refund.jpg delete mode 100644 og/security.jpg delete mode 100644 og/status.jpg delete mode 100644 og/technical-reference.jpg delete mode 100644 og/terms.jpg delete mode 100644 og/use-cases.jpg delete mode 100644 og/workbench.jpg delete mode 100644 pricing/index.html delete mode 100644 pricing_scrolled.png delete mode 100644 privacy/index.html delete mode 100644 refund/index.html delete mode 100644 robots.txt delete mode 100644 security/index.html delete mode 100644 sitemap.xml delete mode 100644 status/index.html delete mode 100644 success/index.html delete mode 100644 technical-reference/index.html delete mode 100644 terms/index.html delete mode 100644 use-cases/index.html delete mode 100644 workbench/index.html diff --git a/.nojekyll b/.nojekyll deleted file mode 100644 index e69de29b..00000000 diff --git a/.well-known/acp.json b/.well-known/acp.json deleted file mode 100644 index 8ab45112..00000000 --- a/.well-known/acp.json +++ /dev/null @@ -1 +0,0 @@ -{"protocol":{"name":"acp","version":"0.1"},"api_base_url":"https://qector.store","transports":["https"],"capabilities":{"services":[{"name":"QECTOR commercial licensing","description":"Human-reviewed commercial evaluation and license inquiry path.","url":"https://qector.store/contact"}],"payments":false,"checkout":false,"requires_human_review":true}} diff --git a/.well-known/agent-skills/index.json b/.well-known/agent-skills/index.json deleted file mode 100644 index 46123249..00000000 --- a/.well-known/agent-skills/index.json +++ /dev/null @@ -1 +0,0 @@ -{"$schema":"https://agentskills.io/schemas/skills-index-v0.2.0.json","skills":[{"name":"QECTOR install guidance","type":"text/markdown","description":"Explain how to install and verify QECTOR Decoder 3 from PyPI.","url":"https://qector.store/.well-known/agent-skills/qector-install.md","sha256":"00b4b9d12be0914ab9f8a68cb7a1b5ebb79ac57f63582149541e54a5c78df7a7"},{"name":"QECTOR commercial licensing","type":"text/markdown","description":"Route commercial QECTOR licensing and source-review inquiries to the correct path.","url":"https://qector.store/.well-known/agent-skills/qector-commercial-licensing.md","sha256":"02ada38eacf33ee7e4521b38989a2af83f178fa5c76ddb106cb4d515f3fd4ec3"}]} diff --git a/.well-known/agent-skills/qector-commercial-licensing.md b/.well-known/agent-skills/qector-commercial-licensing.md deleted file mode 100644 index 8a657e15..00000000 --- a/.well-known/agent-skills/qector-commercial-licensing.md +++ /dev/null @@ -1,11 +0,0 @@ -# QECTOR commercial licensing skill - -Purpose: Help an AI agent route commercial QECTOR inquiries. - -Official contact path: -https://qector.store/contact - -Rules: -- Personal, academic, educational and non-commercial research use may be free under the license. -- Commercial use requires written permission. -- For pilots, labs, startups, OEM, SaaS, redistribution or source review, route the user to the contact form. diff --git a/.well-known/agent-skills/qector-install.md b/.well-known/agent-skills/qector-install.md deleted file mode 100644 index 4245c515..00000000 --- a/.well-known/agent-skills/qector-install.md +++ /dev/null @@ -1,16 +0,0 @@ -# QECTOR install skill - -Purpose: Help an AI agent explain how to install and verify QECTOR Decoder 3. - -Official command: - -```bash -pip install qector-decoder-v3 -python -c "from qector_decoder_v3 import UnionFindDecoder, BlossomDecoder; print('QECTOR OK')" -``` - -Rules: -- Use the PyPI wheel as the normal public install path. -- Do not recommend source builds as the primary public path. -- Mention standard CPython 3.9 to 3.13. -- If Windows uses a free-threaded Python such as cp313t, tell the user to use normal CPython. diff --git a/.well-known/api-catalog.json b/.well-known/api-catalog.json deleted file mode 100644 index 2918de4f..00000000 --- a/.well-known/api-catalog.json +++ /dev/null @@ -1 +0,0 @@ -{"linkset":[{"anchor":"https://qector.store","service-desc":[{"href":"https://qector.store/openapi.json","type":"application/vnd.oai.openapi+json"}],"service-doc":[{"href":"https://qector.store/docs","type":"text/html"}],"status":[{"href":"https://qector.store/health.json","type":"application/json"}],"alternate":[{"href":"https://qector.store/llms.txt","type":"text/plain"},{"href":"https://qector.store/llms-full.txt","type":"text/plain"}]}]} diff --git a/.well-known/http-message-signatures-directory.json b/.well-known/http-message-signatures-directory.json deleted file mode 100644 index 26738c2d..00000000 --- a/.well-known/http-message-signatures-directory.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "keys": [], - "comment": "QECTOR Store does not currently send signed automated bot requests. This Web Bot Auth directory is published for discovery readiness. Active public verification keys will be added here when QECTOR operates an outbound signed agent." -} diff --git a/.well-known/mcp.json b/.well-known/mcp.json deleted file mode 100644 index e2aca418..00000000 --- a/.well-known/mcp.json +++ /dev/null @@ -1 +0,0 @@ -{"serverInfo":{"name":"QECTOR Store Discovery","version":"0.1.0","description":"Discovery card for QECTOR Decoder v3 public website resources."},"transport":{"type":"none","description":"No remote MCP tool transport is exposed by this static public site."},"capabilities":{"tools":[],"resources":[{"name":"QECTOR documentation","uri":"https://qector.store/docs","mimeType":"text/html"},{"name":"QECTOR install guide","uri":"https://qector.store/installer","mimeType":"text/html"},{"name":"QECTOR LLM summary","uri":"https://qector.store/llms.txt","mimeType":"text/plain"}]},"contact":"https://qector.store/contact"} diff --git a/.well-known/mcp/server-card.json b/.well-known/mcp/server-card.json deleted file mode 100644 index 180ad5a8..00000000 --- a/.well-known/mcp/server-card.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "serverInfo": { - "name": "QECTOR Store Discovery", - "version": "1.0.0", - "description": "Discovery card for QECTOR Decoder v3 public website resources.", - "updated_at": "2026-08-25" - }, - "transport": { - "type": "none", - "description": "No remote MCP tool transport is exposed by this static public site." - }, - "capabilities": { - "tools": [], - "resources": [ - { "name": "QECTOR documentation", "uri": "https://qector.store/docs/", "mimeType": "text/html" }, - { "name": "QECTOR install guide", "uri": "https://qector.store/installer/", "mimeType": "text/html" }, - { "name": "QECTOR evidence registry", "uri": "https://qector.store/evidence/", "mimeType": "text/html" }, - { "name": "QECTOR LLM summary", "uri": "https://qector.store/llms.txt", "mimeType": "text/plain" } - ] - }, - "evidence": "https://qector.store/evidence/", - "contact": "https://qector.store/contact/" -} diff --git a/.well-known/mcp/server-cards.json b/.well-known/mcp/server-cards.json deleted file mode 100644 index 0de3ae28..00000000 --- a/.well-known/mcp/server-cards.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "servers": [ - { - "serverInfo": { - "name": "QECTOR Store Discovery", - "version": "1.0.0", - "description": "Discovery card for QECTOR Decoder v3 public website resources.", - "updated_at": "2026-08-25" - }, - "transport": { - "type": "none", - "description": "No remote MCP tool transport is exposed by this static public site." - }, - "capabilities": { - "tools": [], - "resources": [ - { "name": "QECTOR documentation", "uri": "https://qector.store/docs/", "mimeType": "text/html" }, - { "name": "QECTOR install guide", "uri": "https://qector.store/installer/", "mimeType": "text/html" }, - { "name": "QECTOR evidence registry", "uri": "https://qector.store/evidence/", "mimeType": "text/html" }, - { "name": "QECTOR LLM summary", "uri": "https://qector.store/llms.txt", "mimeType": "text/plain" } - ] - }, - "evidence": "https://qector.store/evidence/", - "contact": "https://qector.store/contact/" - } - ] -} diff --git a/.well-known/security.txt b/.well-known/security.txt deleted file mode 100644 index 694b4a1a..00000000 --- a/.well-known/security.txt +++ /dev/null @@ -1,6 +0,0 @@ -Contact: mailto:admin@qector.store?subject=%5BSECURITY%5D%20QECTOR%20disclosure -Contact: https://qector.store/security/ -Expires: 2027-11-06T00:00:00.000Z -Preferred-Languages: en, fr -Canonical: https://qector.store/.well-known/security.txt -Policy: https://qector.store/security/ diff --git a/.well-known/skills/index.json b/.well-known/skills/index.json deleted file mode 100644 index 46123249..00000000 --- a/.well-known/skills/index.json +++ /dev/null @@ -1 +0,0 @@ -{"$schema":"https://agentskills.io/schemas/skills-index-v0.2.0.json","skills":[{"name":"QECTOR install guidance","type":"text/markdown","description":"Explain how to install and verify QECTOR Decoder 3 from PyPI.","url":"https://qector.store/.well-known/agent-skills/qector-install.md","sha256":"00b4b9d12be0914ab9f8a68cb7a1b5ebb79ac57f63582149541e54a5c78df7a7"},{"name":"QECTOR commercial licensing","type":"text/markdown","description":"Route commercial QECTOR licensing and source-review inquiries to the correct path.","url":"https://qector.store/.well-known/agent-skills/qector-commercial-licensing.md","sha256":"02ada38eacf33ee7e4521b38989a2af83f178fa5c76ddb106cb4d515f3fd4ec3"}]} diff --git a/.well-known/tags.json b/.well-known/tags.json deleted file mode 100644 index ac25eb10..00000000 --- a/.well-known/tags.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "QECTOR Decoder v3 (1.0)", - "canonical": "https://qector.store", - "topics": [ - "quantum-error-correction", - "qec", - "quantum-computing", - "decoder", - "mwpm", - "union-find", - "bp-osd", - "ldpc", - "qldpc", - "surface-code", - "stim", - "pymatching", - "rust", - "python", - "cuda", - "batch-decoding", - "gpu-acceleration", - "error-correction", - "high-performance", - "reproducible-research", - "benchmarking", - "scientific-computing", - "research-tool", - "pyo3", - "performance", - "validation", - "belief-propagation", - "high-throughput" - ] -} diff --git a/.well-known/ucp.json b/.well-known/ucp.json deleted file mode 100644 index 196b15ca..00000000 --- a/.well-known/ucp.json +++ /dev/null @@ -1 +0,0 @@ -{"protocol":{"name":"ucp","version":"0.1"},"site":"https://qector.store","services":[{"name":"QECTOR commercial licensing","description":"Commercial licensing and evaluation inquiries for QECTOR Decoder v3.","endpoint":"https://qector.store/contact","type":"contact-form"}],"capabilities":{"payments":false,"checkout":false,"human_review_required":true}} diff --git a/404.html b/404.html deleted file mode 100644 index 0ec6b24b..00000000 --- a/404.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Page Not Found · QECTOR - - - - - - - - - - -
Skip to main content
404 · Not found

Page Not Found

The page you are looking for does not exist or has been moved. The links below will get you back on track.

- - - diff --git a/CNAME b/CNAME deleted file mode 100644 index a9c1f2ae..00000000 --- a/CNAME +++ /dev/null @@ -1 +0,0 @@ -qector.store diff --git a/_headers b/_headers deleted file mode 100644 index 1edc0629..00000000 --- a/_headers +++ /dev/null @@ -1,37 +0,0 @@ -# Netlify / Cloudflare Pages header syntax. GitHub Pages ignores this file, so -# none of it is enforced on the current apex deployment: it is kept correct so -# that moving the site behind Cloudflare Pages does not silently break checkout -# or booking. -# -# CSP third-party allowances, and why each is required: -# js.stripe.com : Stripe buy-button script on /pricing -# assets.calendly.com : Calendly inline embed loader -# calendly.com : the Calendly booking iframe itself (frame-src) -# fonts.googleapis.com / fonts.gstatic.com : webfont CSS + font files -# The previous policy allowed only 'self' plus one inline hash, which would have -# blocked the Stripe button and the Calendly widget outright. -# -# frame-src must be stated explicitly: it falls back to default-src ('self'), -# so without it the Calendly and Stripe iframes are refused. - -/* - Strict-Transport-Security: max-age=31536000; includeSubDomains; preload - X-Frame-Options: DENY - Cross-Origin-Opener-Policy: same-origin-allow-popups - Cross-Origin-Resource-Policy: same-origin - X-Permitted-Cross-Domain-Policies: none - X-Content-Type-Options: nosniff - X-XSS-Protection: 1; mode=block - X-DNS-Prefetch-Control: off - X-Download-Options: noopen - Origin-Agent-Cluster: ?1 - Referrer-Policy: strict-origin-when-cross-origin - Permissions-Policy: accelerometer=(), ambient-light-sensor=(), autoplay=(self), camera=(), clipboard-read=(), clipboard-write=(self), document-domain=(), encrypted-media=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), payment=(self), usb=(), xr-spatial-tracking=() - Content-Security-Policy: default-src 'self'; base-uri 'self'; object-src 'none'; upgrade-insecure-requests; manifest-src 'self'; worker-src 'self' blob:; script-src 'self' 'sha256-47Y7xRUIVXITmosjladRK60OPYEE3BWeBiiCmfU0d8s=' 'sha256-2yoLb9krKtf6JSNKI8iic50UCBKaIgBtSuqyekQ5HtA=' https://js.stripe.com https://assets.calendly.com https://static.cloudflareinsights.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com https://assets.calendly.com; img-src 'self' data: https://files.stripe.com; font-src 'self' data: https://fonts.gstatic.com; connect-src 'self' https://cloudflareinsights.com https://api.stripe.com https://js.stripe.com https://api.calendly.com https://calendly.com https://pypi.org; frame-src https://js.stripe.com https://checkout.stripe.com https://hooks.stripe.com https://calendly.com; frame-ancestors 'none'; form-action 'self' https://buy.stripe.com https://checkout.stripe.com https://billing.stripe.com; media-src 'self' blob: - Cache-Control: public, max-age=0, must-revalidate - -/assets/* - Cache-Control: public, max-age=31536000, immutable - -/.well-known/* - Cache-Control: public, max-age=0, must-revalidate diff --git a/_redirects b/_redirects deleted file mode 100644 index f4d5a010..00000000 --- a/_redirects +++ /dev/null @@ -1,3 +0,0 @@ -# Syntaxe Netlify : ignoree par GitHub Pages (la page 404 est servie par 404.html). -/license /license/ 301! -/* /index.html 200 diff --git a/about/index.html b/about/index.html deleted file mode 100644 index fed87ab1..00000000 --- a/about/index.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - About QECTOR · Quantum Error Correction - - - - - - - - - - -
Skip to main content
iD01t Productions · Longueuil, Québec · ORCID 0009-0000-3465-3753

About QECTOR

Independent quantum error correction research, engineering, and commercialization, built by Guillaume Lessard with full transparency, reproducible artifacts, and no speculative claims.

Creator

Guillaume Lessard, software engineer and researcher based in Montreal / Longueuil, Québec, Canada.

Operating as the QEC software division of iD01t Productions (founded 2012), Guillaume focuses on quantum error correction software engineering, building high-throughput decoders and advanced validation tooling.

Publishing aliases:Guillaume Lessard(engineering)El'Nox Rah(research / authorship)DJ iD01t(music)

Research Background

  • CSS stabilizer codes: surface codes, LDPC, qLDPC
  • MWPM (Blossom), Belief-Matching, BP-OSD decoding
  • Custom CSS code topology research and GF(2) eligibility analysis
  • Bivariate bicycle qLDPC codes
  • Reproducible provenance and SHA-256 sealed artifacts on GitHub
  • Monte Carlo threshold analysis and reproducible validation workflows

Software Stack

  • Rust / PyO3: core decoder engine
  • Python 3.9 to 3.13: API, CLI, benchmarking, simulation
  • Stim: circuit-level noise simulation
  • OpenCL / CUDA: GPU-accelerated batch decoding
  • PyPI distribution: qector-decoder-v3
  • Ed25519 offline cryptographic signature verification
  • CustomTkinter / FastAPI: QECTOR Workbench desktop interface & REST engine

Engineering Philosophy

  • Reproducibility first: public claims link to supporting artifacts where published
  • Honest documentation: Decoder is Source-Available (not free); Workbench GUI app is free
  • Simulation-validated before any public claim
  • Full provenance trail: SHA-256 bundles
  • No vendor lock-in: pluggable CodeProvider architecture
  • Transparent validation reports with non-pass classification

QECTOR Product Scope

This site and QECTOR Decoder v3 + Workbench constitute the high-performance decoder library and professional GUI.

  • QECTOR Decoder v3: Rust/Python multi-algorithm QEC decoder library (Source-Available)
  • Free QECTOR Workbench: live Windows and Linux releases with 85-tool MCP servers and 19 named decoder kinds (17 concrete configurations plus AutoDecoder and Auto Router).
  • Documentation & Education: Public methodology, validation guidance, and "Mastering QEC" book context (see the decoder repository for primary evidence).

Project Timeline

2026-06-23

The public qectorlab.github.io repository was created.

2026-06-24

The qector-decoder repository was created and v0.5.0 / v0.5.1 were first recorded on PyPI.

2026-06-24 to 2026-07-26

The verified PyPI release train progressed from v0.5.0 through v0.6.9. Dates are listed on the Changelog page from PyPI upload metadata.

2026-08-02

QECTOR Decoder v3 v0.7.0 was published on PyPI.

2026-08-06

QECTOR Decoder v3 v1.0.0 reached its first stable release, with the official reference manual (DOI 10.5281/zenodo.21941046).

2026-08-11 to 2026-09-04

QECTOR Workbench Windows v1.0.0 and v1.0.1 were followed by verified v1.0.7 releases for Windows and Linux (2026-09-04).

2026-08-15 to 2026-08-24

The Claude Plugin repository was created on 2026-08-15; plugin v1.0.6 was published on 2026-08-24.

2026-11-06

QECTOR Decoder v3 v1.0.1 was published with 18 wheels for Python 3.9-3.14 and signed build provenance, alongside Claude Plugin v2.0.1 and the new commercial plans.

Transparency Statement

QECTOR is an independent R&D project, not backed by a quantum hardware company, VC funding, or a university lab. No hardware-specific measurement figures are published on this site, because results depend on your hardware. The decoder reached its first stable release on 2026-08-06 (v1.0.0); the current release is v1.0.1. QECTOR Decoder is source-available under the published license. Workbench release terms are platform-specific. We publish validation guidance and known limitations openly. Documented behavior is what ships.

- - - diff --git a/ads.txt b/ads.txt deleted file mode 100644 index ae70531b..00000000 --- a/ads.txt +++ /dev/null @@ -1 +0,0 @@ -google.com, pub-9299754077722043, DIRECT, f08c47fec0942fa0 diff --git a/ai.txt b/ai.txt deleted file mode 100644 index bb692ffd..00000000 --- a/ai.txt +++ /dev/null @@ -1,10 +0,0 @@ -QECTOR Decoder v3 - quantum error correction decoder package for Python and Rust. - -Maintained by Guillaume Lessard / iD01t Productions. - -AI agents and assistants: this site exposes machine-readable summaries at -/llms.txt and /llms-full.txt, an agent-skills index at -/.well-known/skills/index.json, and discovery metadata under /.well-known/. - -For commercial licensing, source-review, or integration requests, route to -https://qector.store/contact. diff --git a/assets/About-3TwVcIFU.js b/assets/About-3TwVcIFU.js deleted file mode 100644 index b0851369..00000000 --- a/assets/About-3TwVcIFU.js +++ /dev/null @@ -1 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{u as l,S as d,J as m}from"./index-CpdATiEY.js";import{g as a,S as u}from"./vendor-gsap-a3sj5zmn.js";import{L as x}from"./vendor-PiU4YGcH.js";import{e as h}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";a.registerPlugin(u);function v(){const t=o.useRef([]),{version:c}=l();o.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=a.context(()=>{t.current.filter(Boolean).forEach(n=>{a.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const s=(r,i)=>{r&&(t.current[i]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(d,{title:"About · QECTOR",description:"About QECTOR: Guillaume Lessard, iD01t Productions, QEC research background, ORCID, GitHub artifacts, mission and engineering philosophy."}),e.jsx(m,{data:{"@context":"https://schema.org","@graph":[{"@type":"Person",name:"Guillaume Lessard",alternateName:"El'Nox Rah",url:"https://qector.store/about",sameAs:["https://orcid.org/0009-0000-3465-3753","https://github.com/GuillaumeLessard"],affiliation:{"@type":"Organization",name:"iD01t Productions"},jobTitle:"Independent QEC Researcher & Software Engineer",knowsAbout:["Quantum Error Correction","CSS Codes","LDPC Codes","MWPM Decoding","Rust","Python"]},{"@type":"Organization",name:"iD01t Productions",url:"https://qector.store",founder:{"@type":"Person",name:"Guillaume Lessard"},description:"QEC software division of iD01t Productions, developing high-performance QEC decoder libraries and GUIs."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"iD01t Productions · Longueuil, Québec · ORCID 0009-0000-3465-3753"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"About QECTOR"}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Independent quantum error correction research, engineering, and commercialization, built by ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Guillaume Lessard"})," with full transparency, reproducible artifacts, and no speculative claims."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-outline",children:["GitHub Artifacts",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsx(x,{to:"/contact",className:"btn-cyan",children:"Contact"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-6",children:[e.jsxs("div",{ref:r=>s(r,0),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Creator"}),e.jsxs("p",{className:"text-primary text-lg mb-3",children:[e.jsx("strong",{children:"Guillaume Lessard"}),", software engineer and researcher based in Montreal / Longueuil, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary leading-relaxed mb-4",children:["Operating as the QEC software division of ",e.jsx("strong",{children:"iD01t Productions"})," (founded 2023), Guillaume focuses on quantum error correction software engineering, building high-throughput decoders and advanced validation tooling."]}),e.jsxs("div",{className:"flex flex-wrap gap-2 mb-4",children:[e.jsx("span",{className:"text-secondary text-sm",children:"Publishing aliases:"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"Guillaume Lessard"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(engineering)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"El'Nox Rah"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(research / authorship)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"DJ iD01t"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(music)"})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 px-4 py-2 bg-green-400/10 border border-green-400/20 rounded-lg text-sm text-green-400 font-mono hover:bg-green-400/20 transition-colors",children:[e.jsx(h,{size:16,className:"shrink-0","aria-hidden":"true"})," ORCID 0009-0000-3465-3753"]}),[{label:"GitHub Artifacts",href:"https://github.com/GuillaumeLessard/qector-decoder",external:!0},{label:"PyPI",href:"https://pypi.org/project/qector-decoder-v3/",external:!0},{label:"Play Store Book",href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",external:!0}].map(r=>e.jsx("a",{href:r.href,target:"_blank",rel:"noopener noreferrer",className:"px-3 py-2 bg-surface border border-gridline rounded-lg text-sm text-muted-foreground hover:text-cyan-300 hover:border-cyan-300/30 transition-colors",children:r.label},r.label))]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsxs("div",{ref:r=>s(r,1),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Research Background"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"CSS stabilizer codes: surface codes, LDPC, qLDPC"}),e.jsx("li",{children:"MWPM (Blossom), Belief-Matching, BP-OSD decoding"}),e.jsx("li",{children:"Custom CSS code topology research and GF(2) eligibility analysis"}),e.jsx("li",{children:"Bivariate bicycle qLDPC codes"}),e.jsx("li",{children:"Reproducible provenance and SHA-256 sealed artifacts on GitHub"}),e.jsx("li",{children:"Monte Carlo threshold analysis and reproducible validation workflows"})]})]}),e.jsxs("div",{ref:r=>s(r,2),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Software Stack"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Rust / PyO3: core decoder engine"}),e.jsx("li",{children:"Python 3.9 to 3.13: API, CLI, benchmarking, simulation"}),e.jsx("li",{children:"Stim: circuit-level noise simulation"}),e.jsx("li",{children:"OpenCL / CUDA: GPU-accelerated batch decoding"}),e.jsxs("li",{children:["PyPI distribution: ",e.jsx("code",{className:"text-cyan-300 text-xs",children:"qector-decoder-v3"})]}),e.jsx("li",{children:"Ed25519 offline cryptographic signature verification"}),e.jsx("li",{children:"CustomTkinter / FastAPI: QECTOR Workbench desktop interface & REST engine"})]})]}),e.jsxs("div",{ref:r=>s(r,3),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Engineering Philosophy"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Reproducibility first: public claims link to supporting artifacts where published"}),e.jsx("li",{children:"Honest documentation: Decoder is Source-Available (not free); Workbench GUI app is free"}),e.jsx("li",{children:"Simulation-validated before any public claim"}),e.jsx("li",{children:"Full provenance trail: SHA-256 bundles"}),e.jsx("li",{children:"No vendor lock-in: pluggable CodeProvider architecture"}),e.jsx("li",{children:"Transparent validation reports with non-pass classification"})]})]}),e.jsxs("div",{ref:r=>s(r,4),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"QECTOR Product Scope"}),e.jsx("p",{className:"text-xs text-secondary mb-2",children:"This site and QECTOR Decoder v3 + Workbench constitute the high-performance decoder library and professional GUI."}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"QECTOR Decoder v3"}),": Rust/Python multi-algorithm QEC decoder library (Source-Available)"]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Free QECTOR Workbench"}),": live Windows and Linux releases with 85-tool MCP servers and 19 named decoder kinds (17 concrete configurations plus AutoDecoder and Auto Router)."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Documentation & Education"}),': Public methodology, validation guidance, and "Mastering QEC" book context (see the decoder repository for primary evidence).']})]})]})]}),e.jsxs("div",{ref:r=>s(r,5),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Project Timeline"}),e.jsx("div",{className:"space-y-4",children:[{year:"2026-06-23",event:"The public qectorlab.github.io repository was created."},{year:"2026-06-24",event:"The qector-decoder repository was created and v0.5.0 / v0.5.1 were first recorded on PyPI."},{year:"2026-06-24 to 2026-07-26",event:"The verified PyPI release train progressed from v0.5.0 through v0.6.9. Dates are listed on the Changelog page from PyPI upload metadata."},{year:"2026-08-02",event:"QECTOR Decoder v3 v0.7.0 was published on PyPI."},{year:"2026-08-06",event:`QECTOR Decoder v3 v${c||"1.0.0"} reached its first stable release, with the official reference manual (DOI 10.5281/zenodo.21941046).`},{year:"2026-08-11 to 2026-09-04",event:"QECTOR Workbench Windows v1.0.0 and v1.0.1 were followed by verified v1.0.7 releases for Windows and Linux (2026-09-04)."},{year:"2026-08-15 to 2026-08-24",event:"The Claude Plugin repository was created on 2026-08-15; plugin v1.0.6 was published on 2026-08-24."}].map(r=>e.jsxs("div",{className:"flex flex-col gap-1 sm:flex-row sm:gap-4 items-start pb-4 border-b border-gridline/50 last:border-0",children:[e.jsx("span",{className:"text-cyan-300 font-mono text-sm sm:min-w-[80px] shrink-0 pt-0.5",children:r.year}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed min-w-0",children:r.event})]},r.year))})]}),e.jsxs("div",{ref:r=>s(r,6),className:"p-6 bg-green-400/5 border border-green-400/20 rounded-2xl",children:[e.jsx("h2",{className:"text-green-400 font-semibold text-sm uppercase tracking-wider mb-3",children:"Transparency Statement"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR is an independent R&D project, not backed by a quantum hardware company, VC funding, or a university lab. No hardware-specific measurement figures are published on this site, because results depend on your hardware. The decoder reached its first stable release on 2026-08-06 (v1.0.0). QECTOR Decoder is source-available under the published license. Workbench release terms are platform-specific. We publish validation guidance and known limitations openly. Documented behavior is what ships."})]})]})})]})}export{v as default}; diff --git a/assets/About-BU6bVOrg.js b/assets/About-BU6bVOrg.js deleted file mode 100644 index 4cf23e36..00000000 --- a/assets/About-BU6bVOrg.js +++ /dev/null @@ -1 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as l,J as c,L as d}from"./index-CCmwjNGU.js";import{g as a,S as u}from"./vendor-gsap-a3sj5zmn.js";import{e as m}from"./vendor-ui-B8TlNU4J.js";a.registerPlugin(u);function f(){const t=o.useRef([]);o.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=a.context(()=>{t.current.filter(Boolean).forEach(n=>{a.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const s=(r,i)=>{r&&(t.current[i]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(l,{title:"About · QECTOR",description:"About QECTOR: Guillaume Lessard, iD01t Productions, QEC research background, ORCID, GitHub artifacts, mission and engineering philosophy."}),e.jsx(c,{data:{"@context":"https://schema.org","@graph":[{"@type":"Person",name:"Guillaume Lessard",alternateName:"El'Nox Rah",url:"https://qector.store/about",sameAs:["https://orcid.org/0009-0000-3465-3753","https://github.com/GuillaumeLessard"],affiliation:{"@type":"Organization",name:"iD01t Productions"},jobTitle:"Independent QEC Researcher & Software Engineer",knowsAbout:["Quantum Error Correction","CSS Codes","LDPC Codes","MWPM Decoding","Rust","Python"]},{"@type":"Organization",name:"iD01t Productions",url:"https://qector.store",founder:{"@type":"Person",name:"Guillaume Lessard"},description:"QEC software division of iD01t Productions, developing high-performance QEC decoder libraries and GUIs."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"iD01t Productions · Longueuil, Québec · ORCID 0009-0000-3465-3753"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"About QECTOR"}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Independent quantum error correction research, engineering, and commercialization, built by ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Guillaume Lessard"})," with full transparency, reproducible artifacts, and no speculative claims."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-outline",children:["GitHub Artifacts",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsx(d,{to:"/contact",className:"btn-cyan",children:"Contact"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-6",children:[e.jsxs("div",{ref:r=>s(r,0),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Creator"}),e.jsxs("p",{className:"text-primary text-lg mb-3",children:[e.jsx("strong",{children:"Guillaume Lessard"}),", software engineer and researcher based in Montreal / Longueuil, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary leading-relaxed mb-4",children:["Operating as the QEC software division of ",e.jsx("strong",{children:"iD01t Productions"})," (founded 2012), Guillaume focuses on quantum error correction software engineering, building high-throughput decoders and advanced validation tooling."]}),e.jsxs("div",{className:"flex flex-wrap gap-2 mb-4",children:[e.jsx("span",{className:"text-secondary text-sm",children:"Publishing aliases:"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"Guillaume Lessard"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(engineering)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"El'Nox Rah"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(research / authorship)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"DJ iD01t"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(music)"})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 px-4 py-2 bg-green-400/10 border border-green-400/20 rounded-lg text-sm text-green-400 font-mono hover:bg-green-400/20 transition-colors",children:[e.jsx(m,{size:16,className:"shrink-0","aria-hidden":"true"})," ORCID 0009-0000-3465-3753"]}),[{label:"GitHub Artifacts",href:"https://github.com/GuillaumeLessard/qector-decoder",external:!0},{label:"PyPI",href:"https://pypi.org/project/qector-decoder-v3/",external:!0},{label:"Play Store Book",href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",external:!0}].map(r=>e.jsx("a",{href:r.href,target:"_blank",rel:"noopener noreferrer",className:"px-3 py-2 bg-surface border border-gridline rounded-lg text-sm text-muted-foreground hover:text-cyan-300 hover:border-cyan-300/30 transition-colors",children:r.label},r.label))]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsxs("div",{ref:r=>s(r,1),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Research Background"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"CSS stabilizer codes: surface codes, LDPC, qLDPC"}),e.jsx("li",{children:"MWPM (Blossom), Belief-Matching, BP-OSD decoding"}),e.jsx("li",{children:"Custom CSS code topology research and GF(2) eligibility analysis"}),e.jsx("li",{children:"Bivariate bicycle qLDPC codes"}),e.jsx("li",{children:"Reproducible provenance and SHA-256 sealed artifacts on GitHub"}),e.jsx("li",{children:"Monte Carlo threshold analysis and reproducible validation workflows"})]})]}),e.jsxs("div",{ref:r=>s(r,2),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Software Stack"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Rust / PyO3: core decoder engine"}),e.jsx("li",{children:"Python 3.9 to 3.13: API, CLI, benchmarking, simulation"}),e.jsx("li",{children:"Stim: circuit-level noise simulation"}),e.jsx("li",{children:"OpenCL / CUDA: GPU-accelerated batch decoding"}),e.jsxs("li",{children:["PyPI distribution: ",e.jsx("code",{className:"text-cyan-300 text-xs",children:"qector-decoder-v3"})]}),e.jsx("li",{children:"Ed25519 offline cryptographic signature verification"}),e.jsx("li",{children:"CustomTkinter / FastAPI: QECTOR Workbench desktop interface & REST engine"})]})]}),e.jsxs("div",{ref:r=>s(r,3),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Engineering Philosophy"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Reproducibility first: public claims link to supporting artifacts where published"}),e.jsx("li",{children:"Honest documentation: Decoder is Source-Available (not free); Workbench GUI app is free"}),e.jsx("li",{children:"Simulation-validated before any public claim"}),e.jsx("li",{children:"Full provenance trail: SHA-256 bundles"}),e.jsx("li",{children:"No vendor lock-in: pluggable CodeProvider architecture"}),e.jsx("li",{children:"Transparent validation reports with non-pass classification"})]})]}),e.jsxs("div",{ref:r=>s(r,4),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"QECTOR Product Scope"}),e.jsx("p",{className:"text-xs text-secondary mb-2",children:"This site and QECTOR Decoder v3 + Workbench constitute the high-performance decoder library and professional GUI."}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"QECTOR Decoder v3"}),": Rust/Python multi-algorithm QEC decoder library (Source-Available)"]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Free QECTOR Workbench"}),": live Windows and Linux releases with 85-tool MCP servers and 19 named decoder kinds (17 concrete configurations plus AutoDecoder and Auto Router)."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Documentation & Education"}),': Public methodology, validation guidance, and "Mastering QEC" book context (see the decoder repository for primary evidence).']})]})]})]}),e.jsxs("div",{ref:r=>s(r,5),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Project Timeline"}),e.jsx("div",{className:"space-y-4",children:[{year:"2026-06-23",event:"The public qectorlab.github.io repository was created."},{year:"2026-06-24",event:"The qector-decoder repository was created and v0.5.0 / v0.5.1 were first recorded on PyPI."},{year:"2026-06-24 to 2026-07-26",event:"The verified PyPI release train progressed from v0.5.0 through v0.6.9. Dates are listed on the Changelog page from PyPI upload metadata."},{year:"2026-08-02",event:"QECTOR Decoder v3 v0.7.0 was published on PyPI."},{year:"2026-08-06",event:"QECTOR Decoder v3 v1.0.0 reached its first stable release, with the official reference manual (DOI 10.5281/zenodo.21941046)."},{year:"2026-08-11 to 2026-09-04",event:"QECTOR Workbench Windows v1.0.0 and v1.0.1 were followed by verified v1.0.7 releases for Windows and Linux (2026-09-04)."},{year:"2026-08-15 to 2026-08-24",event:"The Claude Plugin repository was created on 2026-08-15; plugin v1.0.6 was published on 2026-08-24."},{year:"2026-11-06",event:"QECTOR Decoder v3 v1.0.1 was published with 18 wheels for Python 3.9-3.14 and signed build provenance, alongside Claude Plugin v2.0.1 and the new commercial plans."}].map(r=>e.jsxs("div",{className:"flex flex-col gap-1 sm:flex-row sm:gap-4 items-start pb-4 border-b border-gridline/50 last:border-0",children:[e.jsx("span",{className:"text-cyan-300 font-mono text-sm sm:min-w-[80px] shrink-0 pt-0.5",children:r.year}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed min-w-0",children:r.event})]},r.year))})]}),e.jsxs("div",{ref:r=>s(r,6),className:"p-6 bg-green-400/5 border border-green-400/20 rounded-2xl",children:[e.jsx("h2",{className:"text-green-400 font-semibold text-sm uppercase tracking-wider mb-3",children:"Transparency Statement"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR is an independent R&D project, not backed by a quantum hardware company, VC funding, or a university lab. No hardware-specific measurement figures are published on this site, because results depend on your hardware. The decoder reached its first stable release on 2026-08-06 (v1.0.0); the current release is v1.0.1. QECTOR Decoder is source-available under the published license. Workbench release terms are platform-specific. We publish validation guidance and known limitations openly. Documented behavior is what ships."})]})]})})]})}export{f as default}; diff --git a/assets/About-BUf56YF-.js b/assets/About-BUf56YF-.js deleted file mode 100644 index 85be1e58..00000000 --- a/assets/About-BUf56YF-.js +++ /dev/null @@ -1 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{u as l,S as d,J as m}from"./index-iVST85F-.js";import{g as a,S as u}from"./vendor-gsap-a3sj5zmn.js";import{L as x}from"./vendor-PiU4YGcH.js";import{e as h}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";a.registerPlugin(u);function v(){const t=o.useRef([]),{version:c}=l();o.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=a.context(()=>{t.current.filter(Boolean).forEach(n=>{a.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const s=(r,i)=>{r&&(t.current[i]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(d,{title:"About · QECTOR",description:"About QECTOR: Guillaume Lessard, iD01t Productions, QEC research background, ORCID, GitHub artifacts, mission and engineering philosophy."}),e.jsx(m,{data:{"@context":"https://schema.org","@graph":[{"@type":"Person",name:"Guillaume Lessard",alternateName:"El'Nox Rah",url:"https://qector.store/about",sameAs:["https://orcid.org/0009-0000-3465-3753","https://github.com/GuillaumeLessard"],affiliation:{"@type":"Organization",name:"iD01t Productions"},jobTitle:"Independent QEC Researcher & Software Engineer",knowsAbout:["Quantum Error Correction","CSS Codes","LDPC Codes","MWPM Decoding","Rust","Python"]},{"@type":"Organization",name:"iD01t Productions",url:"https://qector.store",founder:{"@type":"Person",name:"Guillaume Lessard"},description:"QEC software division of iD01t Productions, developing high-performance QEC decoder libraries and GUIs."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"iD01t Productions · Longueuil, Québec · ORCID 0009-0000-3465-3753"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"About QECTOR"}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Independent quantum error correction research, engineering, and commercialization, built by ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Guillaume Lessard"})," with full transparency, reproducible artifacts, and no speculative claims."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-outline",children:["GitHub Artifacts",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsx(x,{to:"/contact",className:"btn-cyan",children:"Contact"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-6",children:[e.jsxs("div",{ref:r=>s(r,0),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Creator"}),e.jsxs("p",{className:"text-primary text-lg mb-3",children:[e.jsx("strong",{children:"Guillaume Lessard"}),", software engineer and researcher based in Montreal / Longueuil, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary leading-relaxed mb-4",children:["Operating as the QEC software division of ",e.jsx("strong",{children:"iD01t Productions"})," (founded 2023), Guillaume focuses on quantum error correction software engineering, building high-throughput decoders and advanced validation tooling."]}),e.jsxs("div",{className:"flex flex-wrap gap-2 mb-4",children:[e.jsx("span",{className:"text-secondary text-sm",children:"Publishing aliases:"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"Guillaume Lessard"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(engineering)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"El'Nox Rah"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(research / authorship)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"DJ iD01t"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(music)"})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 px-4 py-2 bg-green-400/10 border border-green-400/20 rounded-lg text-sm text-green-400 font-mono hover:bg-green-400/20 transition-colors",children:[e.jsx(h,{size:16,className:"shrink-0","aria-hidden":"true"})," ORCID 0009-0000-3465-3753"]}),[{label:"GitHub Artifacts",href:"https://github.com/GuillaumeLessard/qector-decoder",external:!0},{label:"PyPI",href:"https://pypi.org/project/qector-decoder-v3/",external:!0},{label:"Play Store Book",href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",external:!0}].map(r=>e.jsx("a",{href:r.href,target:"_blank",rel:"noopener noreferrer",className:"px-3 py-2 bg-surface border border-gridline rounded-lg text-sm text-muted-foreground hover:text-cyan-300 hover:border-cyan-300/30 transition-colors",children:r.label},r.label))]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsxs("div",{ref:r=>s(r,1),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Research Background"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"CSS stabilizer codes: surface codes, LDPC, qLDPC"}),e.jsx("li",{children:"MWPM (Blossom), Belief-Matching, BP-OSD decoding"}),e.jsx("li",{children:"Custom CSS code topology research and GF(2) eligibility analysis"}),e.jsx("li",{children:"Bivariate bicycle qLDPC codes"}),e.jsx("li",{children:"Reproducible provenance and SHA-256 sealed artifacts on GitHub"}),e.jsx("li",{children:"Monte Carlo threshold analysis and reproducible validation workflows"})]})]}),e.jsxs("div",{ref:r=>s(r,2),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Software Stack"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Rust / PyO3: core decoder engine"}),e.jsx("li",{children:"Python 3.9 to 3.13: API, CLI, benchmarking, simulation"}),e.jsx("li",{children:"Stim: circuit-level noise simulation"}),e.jsx("li",{children:"OpenCL / CUDA: GPU-accelerated batch decoding"}),e.jsxs("li",{children:["PyPI distribution: ",e.jsx("code",{className:"text-cyan-300 text-xs",children:"qector-decoder-v3"})]}),e.jsx("li",{children:"Ed25519 offline cryptographic signature verification"}),e.jsx("li",{children:"CustomTkinter / FastAPI: QECTOR Workbench desktop interface & REST engine"})]})]}),e.jsxs("div",{ref:r=>s(r,3),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Engineering Philosophy"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Reproducibility first: public claims link to supporting artifacts where published"}),e.jsx("li",{children:"Honest documentation: Decoder is Source-Available (not free); Workbench GUI app is free"}),e.jsx("li",{children:"Simulation-validated before any public claim"}),e.jsx("li",{children:"Full provenance trail: SHA-256 bundles"}),e.jsx("li",{children:"No vendor lock-in: pluggable CodeProvider architecture"}),e.jsx("li",{children:"Transparent validation reports with non-pass classification"})]})]}),e.jsxs("div",{ref:r=>s(r,4),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"QECTOR Product Scope"}),e.jsx("p",{className:"text-xs text-secondary mb-2",children:"This site and QECTOR Decoder v3 + Workbench constitute the high-performance decoder library and professional GUI."}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"QECTOR Decoder v3"}),": Rust/Python multi-algorithm QEC decoder library (Source-Available)"]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Free QECTOR Workbench"}),": live Windows and Linux releases with 85-tool MCP servers and 19 named decoder kinds (17 concrete configurations plus AutoDecoder and Auto Router)."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Documentation & Education"}),': Public methodology, validation guidance, and "Mastering QEC" book context (see the decoder repository for primary evidence).']})]})]})]}),e.jsxs("div",{ref:r=>s(r,5),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Project Timeline"}),e.jsx("div",{className:"space-y-4",children:[{year:"2026-06-23",event:"The public qectorlab.github.io repository was created."},{year:"2026-06-24",event:"The qector-decoder repository was created and v0.5.0 / v0.5.1 were first recorded on PyPI."},{year:"2026-06-24 to 2026-07-26",event:"The verified PyPI release train progressed from v0.5.0 through v0.6.9. Dates are listed on the Changelog page from PyPI upload metadata."},{year:"2026-08-02",event:"QECTOR Decoder v3 v0.7.0 was published on PyPI."},{year:"2026-08-06",event:`QECTOR Decoder v3 v${c||"1.0.0"} reached its first stable release, with the official reference manual (DOI 10.5281/zenodo.21941046).`},{year:"2026-08-11 to 2026-09-04",event:"QECTOR Workbench Windows v1.0.0 and v1.0.1 were followed by verified v1.0.7 releases for Windows and Linux (2026-09-04)."},{year:"2026-08-15 to 2026-08-24",event:"The Claude Plugin repository was created on 2026-08-15; plugin v1.0.6 was published on 2026-08-24."}].map(r=>e.jsxs("div",{className:"flex flex-col gap-1 sm:flex-row sm:gap-4 items-start pb-4 border-b border-gridline/50 last:border-0",children:[e.jsx("span",{className:"text-cyan-300 font-mono text-sm sm:min-w-[80px] shrink-0 pt-0.5",children:r.year}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed min-w-0",children:r.event})]},r.year))})]}),e.jsxs("div",{ref:r=>s(r,6),className:"p-6 bg-green-400/5 border border-green-400/20 rounded-2xl",children:[e.jsx("h2",{className:"text-green-400 font-semibold text-sm uppercase tracking-wider mb-3",children:"Transparency Statement"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR is an independent R&D project, not backed by a quantum hardware company, VC funding, or a university lab. No hardware-specific measurement figures are published on this site, because results depend on your hardware. The decoder reached its first stable release on 2026-08-06 (v1.0.0). QECTOR Decoder is source-available under the published license. Workbench release terms are platform-specific. We publish validation guidance and known limitations openly. Documented behavior is what ships."})]})]})})]})}export{v as default}; diff --git a/assets/About-BZN32cY9.js b/assets/About-BZN32cY9.js deleted file mode 100644 index bfc7ea46..00000000 --- a/assets/About-BZN32cY9.js +++ /dev/null @@ -1 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as l,J as c,L as d}from"./index-CcwlvHYJ.js";import{g as a,S as u}from"./vendor-gsap-a3sj5zmn.js";import{e as m}from"./vendor-ui-B0ssGG4c.js";a.registerPlugin(u);function f(){const t=o.useRef([]);o.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=a.context(()=>{t.current.filter(Boolean).forEach(n=>{a.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const s=(r,i)=>{r&&(t.current[i]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(l,{title:"About · QECTOR",description:"About QECTOR: Guillaume Lessard, iD01t Productions, QEC research background, ORCID, GitHub artifacts, mission and engineering philosophy."}),e.jsx(c,{data:{"@context":"https://schema.org","@graph":[{"@type":"Person",name:"Guillaume Lessard",alternateName:"El'Nox Rah",url:"https://qector.store/about",sameAs:["https://orcid.org/0009-0000-3465-3753","https://github.com/GuillaumeLessard"],affiliation:{"@type":"Organization",name:"iD01t Productions"},jobTitle:"Independent QEC Researcher & Software Engineer",knowsAbout:["Quantum Error Correction","CSS Codes","LDPC Codes","MWPM Decoding","Rust","Python"]},{"@type":"Organization",name:"iD01t Productions",url:"https://qector.store",founder:{"@type":"Person",name:"Guillaume Lessard"},description:"QEC software division of iD01t Productions, developing high-performance QEC decoder libraries and GUIs."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"iD01t Productions · Longueuil, Québec · ORCID 0009-0000-3465-3753"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"About QECTOR"}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Independent quantum error correction research, engineering, and commercialization, built by ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Guillaume Lessard"})," with full transparency, reproducible artifacts, and no speculative claims."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-outline",children:["GitHub Artifacts",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsx(d,{to:"/contact",className:"btn-cyan",children:"Contact"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-6",children:[e.jsxs("div",{ref:r=>s(r,0),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Creator"}),e.jsxs("p",{className:"text-primary text-lg mb-3",children:[e.jsx("strong",{children:"Guillaume Lessard"}),", software engineer and researcher based in Montreal / Longueuil, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary leading-relaxed mb-4",children:["Operating as the QEC software division of ",e.jsx("strong",{children:"iD01t Productions"})," (founded 2012), Guillaume focuses on quantum error correction software engineering, building high-throughput decoders and advanced validation tooling."]}),e.jsxs("div",{className:"flex flex-wrap gap-2 mb-4",children:[e.jsx("span",{className:"text-secondary text-sm",children:"Publishing aliases:"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"Guillaume Lessard"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(engineering)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"El'Nox Rah"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(research / authorship)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"DJ iD01t"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(music)"})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 px-4 py-2 bg-green-400/10 border border-green-400/20 rounded-lg text-sm text-green-400 font-mono hover:bg-green-400/20 transition-colors",children:[e.jsx(m,{size:16,className:"shrink-0","aria-hidden":"true"})," ORCID 0009-0000-3465-3753"]}),[{label:"GitHub Artifacts",href:"https://github.com/GuillaumeLessard/qector-decoder",external:!0},{label:"PyPI",href:"https://pypi.org/project/qector-decoder-v3/",external:!0},{label:"Play Store Book",href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",external:!0}].map(r=>e.jsx("a",{href:r.href,target:"_blank",rel:"noopener noreferrer",className:"px-3 py-2 bg-surface border border-gridline rounded-lg text-sm text-muted-foreground hover:text-cyan-300 hover:border-cyan-300/30 transition-colors",children:r.label},r.label))]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsxs("div",{ref:r=>s(r,1),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Research Background"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"CSS stabilizer codes: surface codes, LDPC, qLDPC"}),e.jsx("li",{children:"MWPM (Blossom), Belief-Matching, BP-OSD decoding"}),e.jsx("li",{children:"Custom CSS code topology research and GF(2) eligibility analysis"}),e.jsx("li",{children:"Bivariate bicycle qLDPC codes"}),e.jsx("li",{children:"Reproducible provenance and SHA-256 sealed artifacts on GitHub"}),e.jsx("li",{children:"Monte Carlo threshold analysis and reproducible validation workflows"})]})]}),e.jsxs("div",{ref:r=>s(r,2),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Software Stack"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Rust / PyO3: core decoder engine"}),e.jsx("li",{children:"Python 3.9 to 3.13: API, CLI, benchmarking, simulation"}),e.jsx("li",{children:"Stim: circuit-level noise simulation"}),e.jsx("li",{children:"OpenCL / CUDA: GPU-accelerated batch decoding"}),e.jsxs("li",{children:["PyPI distribution: ",e.jsx("code",{className:"text-cyan-300 text-xs",children:"qector-decoder-v3"})]}),e.jsx("li",{children:"Ed25519 offline cryptographic signature verification"}),e.jsx("li",{children:"CustomTkinter / FastAPI: QECTOR Workbench desktop interface & REST engine"})]})]}),e.jsxs("div",{ref:r=>s(r,3),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Engineering Philosophy"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Reproducibility first: public claims link to supporting artifacts where published"}),e.jsx("li",{children:"Honest documentation: Decoder is Source-Available (not free); Workbench GUI app is free"}),e.jsx("li",{children:"Simulation-validated before any public claim"}),e.jsx("li",{children:"Full provenance trail: SHA-256 bundles"}),e.jsx("li",{children:"No vendor lock-in: pluggable CodeProvider architecture"}),e.jsx("li",{children:"Transparent validation reports with non-pass classification"})]})]}),e.jsxs("div",{ref:r=>s(r,4),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"QECTOR Product Scope"}),e.jsx("p",{className:"text-xs text-secondary mb-2",children:"This site and QECTOR Decoder v3 + Workbench constitute the high-performance decoder library and professional GUI."}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"QECTOR Decoder v3"}),": Rust/Python multi-algorithm QEC decoder library (Source-Available)"]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Free QECTOR Workbench"}),": live Windows and Linux releases with 85-tool MCP servers and 19 named decoder kinds (17 concrete configurations plus AutoDecoder and Auto Router)."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Documentation & Education"}),': Public methodology, validation guidance, and "Mastering QEC" book context (see the decoder repository for primary evidence).']})]})]})]}),e.jsxs("div",{ref:r=>s(r,5),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Project Timeline"}),e.jsx("div",{className:"space-y-4",children:[{year:"2026-06-23",event:"The public qectorlab.github.io repository was created."},{year:"2026-06-24",event:"The qector-decoder repository was created and v0.5.0 / v0.5.1 were first recorded on PyPI."},{year:"2026-06-24 to 2026-07-26",event:"The verified PyPI release train progressed from v0.5.0 through v0.6.9. Dates are listed on the Changelog page from PyPI upload metadata."},{year:"2026-08-02",event:"QECTOR Decoder v3 v0.7.0 was published on PyPI."},{year:"2026-08-06",event:"QECTOR Decoder v3 v1.0.0 reached its first stable release, with the official reference manual (DOI 10.5281/zenodo.21941046)."},{year:"2026-08-11 to 2026-09-04",event:"QECTOR Workbench Windows v1.0.0 and v1.0.1 were followed by verified v1.0.7 releases for Windows and Linux (2026-09-04)."},{year:"2026-08-15 to 2026-08-24",event:"The Claude Plugin repository was created on 2026-08-15; plugin v1.0.6 was published on 2026-08-24."},{year:"2026-11-06",event:"QECTOR Decoder v3 v1.0.1 was published with 18 wheels for Python 3.9-3.14 and signed build provenance, alongside Claude Plugin v2.0.1 and the new commercial plans."}].map(r=>e.jsxs("div",{className:"flex flex-col gap-1 sm:flex-row sm:gap-4 items-start pb-4 border-b border-gridline/50 last:border-0",children:[e.jsx("span",{className:"text-cyan-300 font-mono text-sm sm:min-w-[80px] shrink-0 pt-0.5",children:r.year}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed min-w-0",children:r.event})]},r.year))})]}),e.jsxs("div",{ref:r=>s(r,6),className:"p-6 bg-green-400/5 border border-green-400/20 rounded-2xl",children:[e.jsx("h2",{className:"text-green-400 font-semibold text-sm uppercase tracking-wider mb-3",children:"Transparency Statement"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR is an independent R&D project, not backed by a quantum hardware company, VC funding, or a university lab. No hardware-specific measurement figures are published on this site, because results depend on your hardware. The decoder reached its first stable release on 2026-08-06 (v1.0.0); the current release is v1.0.1. QECTOR Decoder is source-available under the published license. Workbench release terms are platform-specific. We publish validation guidance and known limitations openly. Documented behavior is what ships."})]})]})})]})}export{f as default}; diff --git a/assets/About-BbIEqzXR.js b/assets/About-BbIEqzXR.js deleted file mode 100644 index f29e48a0..00000000 --- a/assets/About-BbIEqzXR.js +++ /dev/null @@ -1 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as l,J as c}from"./index-DkYdPRY7.js";import{g as a,S as d}from"./vendor-gsap-a3sj5zmn.js";import{L as m}from"./vendor-PiU4YGcH.js";import{e as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";a.registerPlugin(d);function y(){const t=o.useRef([]);o.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=a.context(()=>{t.current.filter(Boolean).forEach(n=>{a.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const s=(r,i)=>{r&&(t.current[i]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(l,{title:"About · QECTOR",description:"About QECTOR: Guillaume Lessard, iD01t Productions, QEC research background, ORCID, GitHub artifacts, mission and engineering philosophy."}),e.jsx(c,{data:{"@context":"https://schema.org","@graph":[{"@type":"Person",name:"Guillaume Lessard",alternateName:"El'Nox Rah",url:"https://qector.store/about",sameAs:["https://orcid.org/0009-0000-3465-3753","https://github.com/GuillaumeLessard"],affiliation:{"@type":"Organization",name:"iD01t Productions"},jobTitle:"Independent QEC Researcher & Software Engineer",knowsAbout:["Quantum Error Correction","CSS Codes","LDPC Codes","MWPM Decoding","Rust","Python"]},{"@type":"Organization",name:"iD01t Productions",url:"https://qector.store",founder:{"@type":"Person",name:"Guillaume Lessard"},description:"QEC software division of iD01t Productions, developing high-performance QEC decoder libraries and GUIs."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"iD01t Productions · Longueuil, Québec · ORCID 0009-0000-3465-3753"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"About QECTOR"}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Independent quantum error correction research, engineering, and commercialization, built by ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Guillaume Lessard"})," with full transparency, reproducible artifacts, and no speculative claims."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-outline",children:["GitHub Artifacts",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsx(m,{to:"/contact",className:"btn-cyan",children:"Contact"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-6",children:[e.jsxs("div",{ref:r=>s(r,0),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Creator"}),e.jsxs("p",{className:"text-primary text-lg mb-3",children:[e.jsx("strong",{children:"Guillaume Lessard"}),", software engineer and researcher based in Montreal / Longueuil, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary leading-relaxed mb-4",children:["Operating as the QEC software division of ",e.jsx("strong",{children:"iD01t Productions"})," (founded 2023), Guillaume focuses on quantum error correction software engineering, building high-throughput decoders and advanced validation tooling."]}),e.jsxs("div",{className:"flex flex-wrap gap-2 mb-4",children:[e.jsx("span",{className:"text-secondary text-sm",children:"Publishing aliases:"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"Guillaume Lessard"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(engineering)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"El'Nox Rah"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(research / authorship)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"DJ iD01t"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(music)"})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 px-4 py-2 bg-green-400/10 border border-green-400/20 rounded-lg text-sm text-green-400 font-mono hover:bg-green-400/20 transition-colors",children:[e.jsx(u,{size:16,className:"shrink-0","aria-hidden":"true"})," ORCID 0009-0000-3465-3753"]}),[{label:"GitHub Artifacts",href:"https://github.com/GuillaumeLessard/qector-decoder",external:!0},{label:"PyPI",href:"https://pypi.org/project/qector-decoder-v3/",external:!0},{label:"Play Store Book",href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",external:!0}].map(r=>e.jsx("a",{href:r.href,target:"_blank",rel:"noopener noreferrer",className:"px-3 py-2 bg-surface border border-gridline rounded-lg text-sm text-muted-foreground hover:text-cyan-300 hover:border-cyan-300/30 transition-colors",children:r.label},r.label))]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsxs("div",{ref:r=>s(r,1),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Research Background"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"CSS stabilizer codes: surface codes, LDPC, qLDPC"}),e.jsx("li",{children:"MWPM (Blossom), Belief-Matching, BP-OSD decoding"}),e.jsx("li",{children:"Custom CSS code topology research and GF(2) eligibility analysis"}),e.jsx("li",{children:"Bivariate bicycle qLDPC codes"}),e.jsx("li",{children:"Reproducible provenance and SHA-256 sealed artifacts on GitHub"}),e.jsx("li",{children:"Monte Carlo threshold analysis and reproducible validation workflows"})]})]}),e.jsxs("div",{ref:r=>s(r,2),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Software Stack"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Rust / PyO3: core decoder engine"}),e.jsx("li",{children:"Python 3.9 to 3.13: API, CLI, benchmarking, simulation"}),e.jsx("li",{children:"Stim: circuit-level noise simulation"}),e.jsx("li",{children:"OpenCL / CUDA: GPU-accelerated batch decoding"}),e.jsxs("li",{children:["PyPI distribution: ",e.jsx("code",{className:"text-cyan-300 text-xs",children:"qector-decoder-v3"})]}),e.jsx("li",{children:"Ed25519 offline cryptographic signature verification"}),e.jsx("li",{children:"CustomTkinter / FastAPI: QECTOR Workbench desktop interface & REST engine"})]})]}),e.jsxs("div",{ref:r=>s(r,3),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Engineering Philosophy"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Reproducibility first: public claims link to supporting artifacts where published"}),e.jsx("li",{children:"Honest documentation: Decoder is Source-Available (not free); Workbench GUI app is free"}),e.jsx("li",{children:"Simulation-validated before any public claim"}),e.jsx("li",{children:"Full provenance trail: SHA-256 bundles"}),e.jsx("li",{children:"No vendor lock-in: pluggable CodeProvider architecture"}),e.jsx("li",{children:"Transparent validation reports with non-pass classification"})]})]}),e.jsxs("div",{ref:r=>s(r,4),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"QECTOR Product Scope"}),e.jsx("p",{className:"text-xs text-secondary mb-2",children:"This site and QECTOR Decoder v3 + Workbench constitute the high-performance decoder library and professional GUI."}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"QECTOR Decoder v3"}),": Rust/Python multi-algorithm QEC decoder library (Source-Available)"]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Free QECTOR Workbench"}),": live Windows and Linux releases with 85-tool MCP servers and 19 named decoder kinds (17 concrete configurations plus AutoDecoder and Auto Router)."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Documentation & Education"}),': Public methodology, validation guidance, and "Mastering QEC" book context (see the decoder repository for primary evidence).']})]})]})]}),e.jsxs("div",{ref:r=>s(r,5),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Project Timeline"}),e.jsx("div",{className:"space-y-4",children:[{year:"2026-06-23",event:"The public qectorlab.github.io repository was created."},{year:"2026-06-24",event:"The qector-decoder repository was created and v0.5.0 / v0.5.1 were first recorded on PyPI."},{year:"2026-06-24 to 2026-07-26",event:"The verified PyPI release train progressed from v0.5.0 through v0.6.9. Dates are listed on the Changelog page from PyPI upload metadata."},{year:"2026-08-02",event:"QECTOR Decoder v3 v0.7.0 was published on PyPI."},{year:"2026-08-06",event:"QECTOR Decoder v3 v1.0.0 reached its first stable release, with the official reference manual (DOI 10.5281/zenodo.21941046)."},{year:"2026-08-11 to 2026-09-04",event:"QECTOR Workbench Windows v1.0.0 and v1.0.1 were followed by verified v1.0.7 releases for Windows and Linux (2026-09-04)."},{year:"2026-08-15 to 2026-08-24",event:"The Claude Plugin repository was created on 2026-08-15; plugin v1.0.6 was published on 2026-08-24."},{year:"2026-11-06",event:"QECTOR Decoder v3 v1.0.1 was published with 18 wheels for Python 3.9-3.14 and signed build provenance, alongside Claude Plugin v2.0.1 and the new commercial plans."}].map(r=>e.jsxs("div",{className:"flex flex-col gap-1 sm:flex-row sm:gap-4 items-start pb-4 border-b border-gridline/50 last:border-0",children:[e.jsx("span",{className:"text-cyan-300 font-mono text-sm sm:min-w-[80px] shrink-0 pt-0.5",children:r.year}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed min-w-0",children:r.event})]},r.year))})]}),e.jsxs("div",{ref:r=>s(r,6),className:"p-6 bg-green-400/5 border border-green-400/20 rounded-2xl",children:[e.jsx("h2",{className:"text-green-400 font-semibold text-sm uppercase tracking-wider mb-3",children:"Transparency Statement"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR is an independent R&D project, not backed by a quantum hardware company, VC funding, or a university lab. No hardware-specific measurement figures are published on this site, because results depend on your hardware. The decoder reached its first stable release on 2026-08-06 (v1.0.0); the current release is v1.0.1. QECTOR Decoder is source-available under the published license. Workbench release terms are platform-specific. We publish validation guidance and known limitations openly. Documented behavior is what ships."})]})]})})]})}export{y as default}; diff --git a/assets/About-C8aE746q.js b/assets/About-C8aE746q.js deleted file mode 100644 index 1b84a90a..00000000 --- a/assets/About-C8aE746q.js +++ /dev/null @@ -1 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{u as l,S as d,J as m}from"./index-_BpMZhV3.js";import{g as a,S as u}from"./vendor-gsap-a3sj5zmn.js";import{L as x}from"./vendor-PiU4YGcH.js";import{e as h}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";a.registerPlugin(u);function v(){const t=o.useRef([]),{version:c}=l();o.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=a.context(()=>{t.current.filter(Boolean).forEach(n=>{a.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const s=(r,i)=>{r&&(t.current[i]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(d,{title:"About · QECTOR",description:"About QECTOR: Guillaume Lessard, iD01t Productions, QEC research background, ORCID, GitHub artifacts, mission and engineering philosophy."}),e.jsx(m,{data:{"@context":"https://schema.org","@graph":[{"@type":"Person",name:"Guillaume Lessard",alternateName:"El'Nox Rah",url:"https://qector.store/about",sameAs:["https://orcid.org/0009-0000-3465-3753","https://github.com/GuillaumeLessard"],affiliation:{"@type":"Organization",name:"iD01t Productions"},jobTitle:"Independent QEC Researcher & Software Engineer",knowsAbout:["Quantum Error Correction","CSS Codes","LDPC Codes","MWPM Decoding","Rust","Python"]},{"@type":"Organization",name:"iD01t Productions",url:"https://qector.store",founder:{"@type":"Person",name:"Guillaume Lessard"},description:"QEC software division of iD01t Productions, developing high-performance QEC decoder libraries and GUIs."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"iD01t Productions · Longueuil, Québec · ORCID 0009-0000-3465-3753"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"About QECTOR"}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Independent quantum error correction research, engineering, and commercialization, built by ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Guillaume Lessard"})," with full transparency, reproducible artifacts, and no speculative claims."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-outline",children:["GitHub Artifacts",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsx(x,{to:"/contact",className:"btn-cyan",children:"Contact"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-6",children:[e.jsxs("div",{ref:r=>s(r,0),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Creator"}),e.jsxs("p",{className:"text-primary text-lg mb-3",children:[e.jsx("strong",{children:"Guillaume Lessard"}),", software engineer and researcher based in Montreal / Longueuil, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary leading-relaxed mb-4",children:["Operating as the QEC software division of ",e.jsx("strong",{children:"iD01t Productions"})," (founded 2023), Guillaume focuses on quantum error correction software engineering, building high-throughput decoders and advanced validation tooling."]}),e.jsxs("div",{className:"flex flex-wrap gap-2 mb-4",children:[e.jsx("span",{className:"text-secondary text-sm",children:"Publishing aliases:"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"Guillaume Lessard"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(engineering)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"El'Nox Rah"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(research / authorship)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"DJ iD01t"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(music)"})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 px-4 py-2 bg-green-400/10 border border-green-400/20 rounded-lg text-sm text-green-400 font-mono hover:bg-green-400/20 transition-colors",children:[e.jsx(h,{size:16,className:"shrink-0","aria-hidden":"true"})," ORCID 0009-0000-3465-3753"]}),[{label:"GitHub Artifacts",href:"https://github.com/GuillaumeLessard/qector-decoder",external:!0},{label:"PyPI",href:"https://pypi.org/project/qector-decoder-v3/",external:!0},{label:"Play Store Book",href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",external:!0}].map(r=>e.jsx("a",{href:r.href,target:"_blank",rel:"noopener noreferrer",className:"px-3 py-2 bg-surface border border-gridline rounded-lg text-sm text-muted-foreground hover:text-cyan-300 hover:border-cyan-300/30 transition-colors",children:r.label},r.label))]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsxs("div",{ref:r=>s(r,1),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Research Background"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"CSS stabilizer codes: surface codes, LDPC, qLDPC"}),e.jsx("li",{children:"MWPM (Blossom), Belief-Matching, BP-OSD decoding"}),e.jsx("li",{children:"Custom CSS code topology research and GF(2) eligibility analysis"}),e.jsx("li",{children:"Bivariate bicycle qLDPC codes"}),e.jsx("li",{children:"Reproducible provenance and SHA-256 sealed artifacts on GitHub"}),e.jsx("li",{children:"Monte Carlo threshold analysis and reproducible validation workflows"})]})]}),e.jsxs("div",{ref:r=>s(r,2),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Software Stack"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Rust / PyO3: core decoder engine"}),e.jsx("li",{children:"Python 3.9 to 3.13: API, CLI, benchmarking, simulation"}),e.jsx("li",{children:"Stim: circuit-level noise simulation"}),e.jsx("li",{children:"OpenCL / CUDA: GPU-accelerated batch decoding"}),e.jsxs("li",{children:["PyPI distribution: ",e.jsx("code",{className:"text-cyan-300 text-xs",children:"qector-decoder-v3"})]}),e.jsx("li",{children:"Ed25519 offline cryptographic signature verification"}),e.jsx("li",{children:"CustomTkinter / FastAPI: QECTOR Workbench desktop interface & REST engine"})]})]}),e.jsxs("div",{ref:r=>s(r,3),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Engineering Philosophy"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Reproducibility first: public claims link to supporting artifacts where published"}),e.jsx("li",{children:"Honest documentation: Decoder is Source-Available (not free); Workbench GUI app is free"}),e.jsx("li",{children:"Simulation-validated before any public claim"}),e.jsx("li",{children:"Full provenance trail: SHA-256 bundles"}),e.jsx("li",{children:"No vendor lock-in: pluggable CodeProvider architecture"}),e.jsx("li",{children:"Transparent validation reports with non-pass classification"})]})]}),e.jsxs("div",{ref:r=>s(r,4),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"QECTOR Product Scope"}),e.jsx("p",{className:"text-xs text-secondary mb-2",children:"This site and QECTOR Decoder v3 + Workbench constitute the high-performance decoder library and professional GUI."}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"QECTOR Decoder v3"}),": Rust/Python multi-algorithm QEC decoder library (Source-Available)"]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Free QECTOR Workbench"}),": live Windows and Linux releases with 85-tool MCP servers and 19 named decoder kinds (17 concrete configurations plus AutoDecoder and Auto Router)."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Documentation & Education"}),': Public methodology, validation guidance, and "Mastering QEC" book context (see the decoder repository for primary evidence).']})]})]})]}),e.jsxs("div",{ref:r=>s(r,5),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Project Timeline"}),e.jsx("div",{className:"space-y-4",children:[{year:"2026-06-23",event:"The public qectorlab.github.io repository was created."},{year:"2026-06-24",event:"The qector-decoder repository was created and v0.5.0 / v0.5.1 were first recorded on PyPI."},{year:"2026-06-24 to 2026-07-26",event:"The verified PyPI release train progressed from v0.5.0 through v0.6.9. Dates are listed on the Changelog page from PyPI upload metadata."},{year:"2026-08-02",event:"QECTOR Decoder v3 v0.7.0 was published on PyPI."},{year:"2026-08-06",event:`QECTOR Decoder v3 v${c||"1.0.0"} reached its first stable release, with the official reference manual (DOI 10.5281/zenodo.21941046).`},{year:"2026-08-11 to 2026-09-04",event:"QECTOR Workbench Windows v1.0.0 and v1.0.1 were followed by verified v1.0.7 releases for Windows and Linux (2026-09-04)."},{year:"2026-08-15 to 2026-08-24",event:"The Claude Plugin repository was created on 2026-08-15; plugin v1.0.6 was published on 2026-08-24."}].map(r=>e.jsxs("div",{className:"flex flex-col gap-1 sm:flex-row sm:gap-4 items-start pb-4 border-b border-gridline/50 last:border-0",children:[e.jsx("span",{className:"text-cyan-300 font-mono text-sm sm:min-w-[80px] shrink-0 pt-0.5",children:r.year}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed min-w-0",children:r.event})]},r.year))})]}),e.jsxs("div",{ref:r=>s(r,6),className:"p-6 bg-green-400/5 border border-green-400/20 rounded-2xl",children:[e.jsx("h2",{className:"text-green-400 font-semibold text-sm uppercase tracking-wider mb-3",children:"Transparency Statement"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR is an independent R&D project, not backed by a quantum hardware company, VC funding, or a university lab. No hardware-specific measurement figures are published on this site, because results depend on your hardware. The decoder reached its first stable release on 2026-08-06 (v1.0.0). QECTOR Decoder is source-available under the published license. Workbench release terms are platform-specific. We publish validation guidance and known limitations openly. Documented behavior is what ships."})]})]})})]})}export{v as default}; diff --git a/assets/About-Cu_jIKW1.js b/assets/About-Cu_jIKW1.js deleted file mode 100644 index 91392319..00000000 --- a/assets/About-Cu_jIKW1.js +++ /dev/null @@ -1 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{u as l,S as d,J as m}from"./index-CqAA-ZXu.js";import{g as a,S as u}from"./vendor-gsap-a3sj5zmn.js";import{L as x}from"./vendor-PiU4YGcH.js";import{e as h}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";a.registerPlugin(u);function v(){const t=o.useRef([]),{version:c}=l();o.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=a.context(()=>{t.current.filter(Boolean).forEach(n=>{a.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const s=(r,i)=>{r&&(t.current[i]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(d,{title:"About · QECTOR",description:"About QECTOR: Guillaume Lessard, iD01t Productions, QEC research background, ORCID, GitHub artifacts, mission and engineering philosophy."}),e.jsx(m,{data:{"@context":"https://schema.org","@graph":[{"@type":"Person",name:"Guillaume Lessard",alternateName:"El'Nox Rah",url:"https://qector.store/about",sameAs:["https://orcid.org/0009-0000-3465-3753","https://github.com/GuillaumeLessard"],affiliation:{"@type":"Organization",name:"iD01t Productions"},jobTitle:"Independent QEC Researcher & Software Engineer",knowsAbout:["Quantum Error Correction","CSS Codes","LDPC Codes","MWPM Decoding","Rust","Python"]},{"@type":"Organization",name:"iD01t Productions",url:"https://qector.store",founder:{"@type":"Person",name:"Guillaume Lessard"},description:"QEC software division of iD01t Productions, developing high-performance QEC decoder libraries and GUIs."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"iD01t Productions · Longueuil, Québec · ORCID 0009-0000-3465-3753"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"About QECTOR"}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Independent quantum error correction research, engineering, and commercialization, built by ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Guillaume Lessard"})," with full transparency, reproducible artifacts, and no speculative claims."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-outline",children:["GitHub Artifacts",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsx(x,{to:"/contact",className:"btn-cyan",children:"Contact"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-6",children:[e.jsxs("div",{ref:r=>s(r,0),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Creator"}),e.jsxs("p",{className:"text-primary text-lg mb-3",children:[e.jsx("strong",{children:"Guillaume Lessard"}),", software engineer and researcher based in Montreal / Longueuil, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary leading-relaxed mb-4",children:["Operating as the QEC software division of ",e.jsx("strong",{children:"iD01t Productions"})," (founded 2023), Guillaume focuses on quantum error correction software engineering, building high-throughput decoders and advanced validation tooling."]}),e.jsxs("div",{className:"flex flex-wrap gap-2 mb-4",children:[e.jsx("span",{className:"text-secondary text-sm",children:"Publishing aliases:"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"Guillaume Lessard"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(engineering)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"El'Nox Rah"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(research / authorship)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"DJ iD01t"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(music)"})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 px-4 py-2 bg-green-400/10 border border-green-400/20 rounded-lg text-sm text-green-400 font-mono hover:bg-green-400/20 transition-colors",children:[e.jsx(h,{size:16,className:"shrink-0","aria-hidden":"true"})," ORCID 0009-0000-3465-3753"]}),[{label:"GitHub Artifacts",href:"https://github.com/GuillaumeLessard/qector-decoder",external:!0},{label:"PyPI",href:"https://pypi.org/project/qector-decoder-v3/",external:!0},{label:"Play Store Book",href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",external:!0}].map(r=>e.jsx("a",{href:r.href,target:"_blank",rel:"noopener noreferrer",className:"px-3 py-2 bg-surface border border-gridline rounded-lg text-sm text-muted-foreground hover:text-cyan-300 hover:border-cyan-300/30 transition-colors",children:r.label},r.label))]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsxs("div",{ref:r=>s(r,1),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Research Background"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"CSS stabilizer codes: surface codes, LDPC, qLDPC"}),e.jsx("li",{children:"MWPM (Blossom), Belief-Matching, BP-OSD decoding"}),e.jsx("li",{children:"Custom CSS code topology research and GF(2) eligibility analysis"}),e.jsx("li",{children:"Bivariate bicycle qLDPC codes"}),e.jsx("li",{children:"Reproducible provenance and SHA-256 sealed artifacts on GitHub"}),e.jsx("li",{children:"Monte Carlo threshold analysis and reproducible validation workflows"})]})]}),e.jsxs("div",{ref:r=>s(r,2),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Software Stack"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Rust / PyO3: core decoder engine"}),e.jsx("li",{children:"Python 3.9 to 3.13: API, CLI, benchmarking, simulation"}),e.jsx("li",{children:"Stim: circuit-level noise simulation"}),e.jsx("li",{children:"OpenCL / CUDA: GPU-accelerated batch decoding"}),e.jsxs("li",{children:["PyPI distribution: ",e.jsx("code",{className:"text-cyan-300 text-xs",children:"qector-decoder-v3"})]}),e.jsx("li",{children:"Ed25519 offline cryptographic signature verification"}),e.jsx("li",{children:"CustomTkinter / FastAPI: QECTOR Workbench desktop interface & REST engine"})]})]}),e.jsxs("div",{ref:r=>s(r,3),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Engineering Philosophy"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Reproducibility first: public claims link to supporting artifacts where published"}),e.jsx("li",{children:"Honest documentation: Decoder is Source-Available (not free); Workbench GUI app is free"}),e.jsx("li",{children:"Simulation-validated before any public claim"}),e.jsx("li",{children:"Full provenance trail: SHA-256 bundles"}),e.jsx("li",{children:"No vendor lock-in: pluggable CodeProvider architecture"}),e.jsx("li",{children:"Transparent validation reports with non-pass classification"})]})]}),e.jsxs("div",{ref:r=>s(r,4),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"QECTOR Product Scope"}),e.jsx("p",{className:"text-xs text-secondary mb-2",children:"This site and QECTOR Decoder v3 + Workbench constitute the high-performance decoder library and professional GUI."}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"QECTOR Decoder v3"}),": Rust/Python multi-algorithm QEC decoder library (Source-Available)"]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Free QECTOR Workbench"}),": live Windows and Linux releases with 85-tool MCP servers and 19 named decoder kinds (17 concrete configurations plus AutoDecoder and Auto Router)."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Documentation & Education"}),': Public methodology, validation guidance, and "Mastering QEC" book context (see the decoder repository for primary evidence).']})]})]})]}),e.jsxs("div",{ref:r=>s(r,5),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Project Timeline"}),e.jsx("div",{className:"space-y-4",children:[{year:"2026-06-23",event:"The public qectorlab.github.io repository was created."},{year:"2026-06-24",event:"The qector-decoder repository was created and v0.5.0 / v0.5.1 were first recorded on PyPI."},{year:"2026-06-24 to 2026-07-26",event:"The verified PyPI release train progressed from v0.5.0 through v0.6.9. Dates are listed on the Changelog page from PyPI upload metadata."},{year:"2026-08-02",event:"QECTOR Decoder v3 v0.7.0 was published on PyPI."},{year:"2026-08-06",event:`QECTOR Decoder v3 v${c||"1.0.0"} reached its first stable release, with the official reference manual (DOI 10.5281/zenodo.21941046).`},{year:"2026-08-11 to 2026-09-04",event:"QECTOR Workbench Windows v1.0.0 and v1.0.1 were followed by verified v1.0.7 releases for Windows and Linux (2026-09-04)."},{year:"2026-08-15 to 2026-08-24",event:"The Claude Plugin repository was created on 2026-08-15; plugin v1.0.6 was published on 2026-08-24."}].map(r=>e.jsxs("div",{className:"flex flex-col gap-1 sm:flex-row sm:gap-4 items-start pb-4 border-b border-gridline/50 last:border-0",children:[e.jsx("span",{className:"text-cyan-300 font-mono text-sm sm:min-w-[80px] shrink-0 pt-0.5",children:r.year}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed min-w-0",children:r.event})]},r.year))})]}),e.jsxs("div",{ref:r=>s(r,6),className:"p-6 bg-green-400/5 border border-green-400/20 rounded-2xl",children:[e.jsx("h2",{className:"text-green-400 font-semibold text-sm uppercase tracking-wider mb-3",children:"Transparency Statement"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR is an independent R&D project, not backed by a quantum hardware company, VC funding, or a university lab. No hardware-specific measurement figures are published on this site, because results depend on your hardware. The decoder reached its first stable release on 2026-08-06 (v1.0.0). QECTOR Decoder is source-available under the published license. Workbench release terms are platform-specific. We publish validation guidance and known limitations openly. Documented behavior is what ships."})]})]})})]})}export{v as default}; diff --git a/assets/About-CzYv2IZf.js b/assets/About-CzYv2IZf.js deleted file mode 100644 index 82dbebdb..00000000 --- a/assets/About-CzYv2IZf.js +++ /dev/null @@ -1 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{u as l,S as d,J as m}from"./index-BcbVjARk.js";import{g as a,S as u}from"./vendor-gsap-a3sj5zmn.js";import{L as x}from"./vendor-PiU4YGcH.js";import{e as h}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";a.registerPlugin(u);function v(){const t=o.useRef([]),{version:c}=l();o.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=a.context(()=>{t.current.filter(Boolean).forEach(n=>{a.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const s=(r,i)=>{r&&(t.current[i]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(d,{title:"About · QECTOR",description:"About QECTOR: Guillaume Lessard, iD01t Productions, QEC research background, ORCID, GitHub artifacts, mission and engineering philosophy."}),e.jsx(m,{data:{"@context":"https://schema.org","@graph":[{"@type":"Person",name:"Guillaume Lessard",alternateName:"El'Nox Rah",url:"https://qector.store/about",sameAs:["https://orcid.org/0009-0000-3465-3753","https://github.com/GuillaumeLessard"],affiliation:{"@type":"Organization",name:"iD01t Productions"},jobTitle:"Independent QEC Researcher & Software Engineer",knowsAbout:["Quantum Error Correction","CSS Codes","LDPC Codes","MWPM Decoding","Rust","Python"]},{"@type":"Organization",name:"iD01t Productions",url:"https://qector.store",founder:{"@type":"Person",name:"Guillaume Lessard"},description:"QEC software division of iD01t Productions, developing high-performance QEC decoder libraries and GUIs."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"iD01t Productions · Longueuil, Québec · ORCID 0009-0000-3465-3753"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"About QECTOR"}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Independent quantum error correction research, engineering, and commercialization, built by ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Guillaume Lessard"})," with full transparency, reproducible artifacts, and no speculative claims."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-outline",children:["GitHub Artifacts",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsx(x,{to:"/contact",className:"btn-cyan",children:"Contact"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-6",children:[e.jsxs("div",{ref:r=>s(r,0),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Creator"}),e.jsxs("p",{className:"text-primary text-lg mb-3",children:[e.jsx("strong",{children:"Guillaume Lessard"}),", software engineer and researcher based in Montreal / Longueuil, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary leading-relaxed mb-4",children:["Operating as the QEC software division of ",e.jsx("strong",{children:"iD01t Productions"})," (founded 2023), Guillaume focuses on quantum error correction software engineering, building high-throughput decoders and advanced validation tooling."]}),e.jsxs("div",{className:"flex flex-wrap gap-2 mb-4",children:[e.jsx("span",{className:"text-secondary text-sm",children:"Publishing aliases:"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"Guillaume Lessard"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(engineering)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"El'Nox Rah"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(research / authorship)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"DJ iD01t"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(music)"})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 px-4 py-2 bg-green-400/10 border border-green-400/20 rounded-lg text-sm text-green-400 font-mono hover:bg-green-400/20 transition-colors",children:[e.jsx(h,{size:16,className:"shrink-0","aria-hidden":"true"})," ORCID 0009-0000-3465-3753"]}),[{label:"GitHub Artifacts",href:"https://github.com/GuillaumeLessard/qector-decoder",external:!0},{label:"PyPI",href:"https://pypi.org/project/qector-decoder-v3/",external:!0},{label:"Play Store Book",href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",external:!0}].map(r=>e.jsx("a",{href:r.href,target:"_blank",rel:"noopener noreferrer",className:"px-3 py-2 bg-surface border border-gridline rounded-lg text-sm text-muted-foreground hover:text-cyan-300 hover:border-cyan-300/30 transition-colors",children:r.label},r.label))]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsxs("div",{ref:r=>s(r,1),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Research Background"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"CSS stabilizer codes: surface codes, LDPC, qLDPC"}),e.jsx("li",{children:"MWPM (Blossom), Belief-Matching, BP-OSD decoding"}),e.jsx("li",{children:"Custom CSS code topology research and GF(2) eligibility analysis"}),e.jsx("li",{children:"Bivariate bicycle qLDPC codes"}),e.jsx("li",{children:"Reproducible provenance and SHA-256 sealed artifacts on GitHub"}),e.jsx("li",{children:"Monte Carlo threshold analysis and reproducible validation workflows"})]})]}),e.jsxs("div",{ref:r=>s(r,2),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Software Stack"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Rust / PyO3: core decoder engine"}),e.jsx("li",{children:"Python 3.9 to 3.13: API, CLI, benchmarking, simulation"}),e.jsx("li",{children:"Stim: circuit-level noise simulation"}),e.jsx("li",{children:"OpenCL / CUDA: GPU-accelerated batch decoding"}),e.jsxs("li",{children:["PyPI distribution: ",e.jsx("code",{className:"text-cyan-300 text-xs",children:"qector-decoder-v3"})]}),e.jsx("li",{children:"Ed25519 offline cryptographic signature verification"}),e.jsx("li",{children:"CustomTkinter / FastAPI: QECTOR Workbench desktop interface & REST engine"})]})]}),e.jsxs("div",{ref:r=>s(r,3),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Engineering Philosophy"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Reproducibility first: public claims link to supporting artifacts where published"}),e.jsx("li",{children:"Honest documentation: Decoder is Source-Available (not free); Workbench GUI app is free"}),e.jsx("li",{children:"Simulation-validated before any public claim"}),e.jsx("li",{children:"Full provenance trail: SHA-256 bundles"}),e.jsx("li",{children:"No vendor lock-in: pluggable CodeProvider architecture"}),e.jsx("li",{children:"Transparent validation reports with non-pass classification"})]})]}),e.jsxs("div",{ref:r=>s(r,4),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"QECTOR Product Scope"}),e.jsx("p",{className:"text-xs text-secondary mb-2",children:"This site and QECTOR Decoder v3 + Workbench constitute the high-performance decoder library and professional GUI."}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"QECTOR Decoder v3"}),": Rust/Python multi-algorithm QEC decoder library (Source-Available)"]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Free QECTOR Workbench"}),": live Windows and Linux releases with 85-tool MCP servers and 19 named decoder kinds (17 concrete configurations plus AutoDecoder and Auto Router)."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Documentation & Education"}),': Public methodology, validation guidance, and "Mastering QEC" book context (see the decoder repository for primary evidence).']})]})]})]}),e.jsxs("div",{ref:r=>s(r,5),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Project Timeline"}),e.jsx("div",{className:"space-y-4",children:[{year:"2026-06-23",event:"The public qectorlab.github.io repository was created."},{year:"2026-06-24",event:"The qector-decoder repository was created and v0.5.0 / v0.5.1 were first recorded on PyPI."},{year:"2026-06-24 to 2026-07-26",event:"The verified PyPI release train progressed from v0.5.0 through v0.6.9. Dates are listed on the Changelog page from PyPI upload metadata."},{year:"2026-08-02",event:"QECTOR Decoder v3 v0.7.0 was published on PyPI."},{year:"2026-08-06",event:`QECTOR Decoder v3 v${c||"1.0.0"} reached its first stable release, with the official reference manual (DOI 10.5281/zenodo.21941046).`},{year:"2026-08-11 to 2026-09-04",event:"QECTOR Workbench Windows v1.0.0 and v1.0.1 were followed by verified v1.0.7 releases for Windows and Linux (2026-09-04)."},{year:"2026-08-15 to 2026-08-24",event:"The Claude Plugin repository was created on 2026-08-15; plugin v1.0.6 was published on 2026-08-24."}].map(r=>e.jsxs("div",{className:"flex flex-col gap-1 sm:flex-row sm:gap-4 items-start pb-4 border-b border-gridline/50 last:border-0",children:[e.jsx("span",{className:"text-cyan-300 font-mono text-sm sm:min-w-[80px] shrink-0 pt-0.5",children:r.year}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed min-w-0",children:r.event})]},r.year))})]}),e.jsxs("div",{ref:r=>s(r,6),className:"p-6 bg-green-400/5 border border-green-400/20 rounded-2xl",children:[e.jsx("h2",{className:"text-green-400 font-semibold text-sm uppercase tracking-wider mb-3",children:"Transparency Statement"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR is an independent R&D project, not backed by a quantum hardware company, VC funding, or a university lab. No hardware-specific measurement figures are published on this site, because results depend on your hardware. The decoder reached its first stable release on 2026-08-06 (v1.0.0). QECTOR Decoder is source-available under the published license. Workbench release terms are platform-specific. We publish validation guidance and known limitations openly. Documented behavior is what ships."})]})]})})]})}export{v as default}; diff --git a/assets/About-D3KKMkNy.js b/assets/About-D3KKMkNy.js deleted file mode 100644 index 1efd4dec..00000000 --- a/assets/About-D3KKMkNy.js +++ /dev/null @@ -1 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as l,J as c}from"./index-CxWP17m6.js";import{g as a,S as d}from"./vendor-gsap-a3sj5zmn.js";import{L as m}from"./vendor-PiU4YGcH.js";import{e as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";a.registerPlugin(d);function y(){const t=o.useRef([]);o.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=a.context(()=>{t.current.filter(Boolean).forEach(n=>{a.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const s=(r,i)=>{r&&(t.current[i]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(l,{title:"About · QECTOR",description:"About QECTOR: Guillaume Lessard, iD01t Productions, QEC research background, ORCID, GitHub artifacts, mission and engineering philosophy."}),e.jsx(c,{data:{"@context":"https://schema.org","@graph":[{"@type":"Person",name:"Guillaume Lessard",alternateName:"El'Nox Rah",url:"https://qector.store/about",sameAs:["https://orcid.org/0009-0000-3465-3753","https://github.com/GuillaumeLessard"],affiliation:{"@type":"Organization",name:"iD01t Productions"},jobTitle:"Independent QEC Researcher & Software Engineer",knowsAbout:["Quantum Error Correction","CSS Codes","LDPC Codes","MWPM Decoding","Rust","Python"]},{"@type":"Organization",name:"iD01t Productions",url:"https://qector.store",founder:{"@type":"Person",name:"Guillaume Lessard"},description:"QEC software division of iD01t Productions, developing high-performance QEC decoder libraries and GUIs."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"iD01t Productions · Longueuil, Québec · ORCID 0009-0000-3465-3753"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"About QECTOR"}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Independent quantum error correction research, engineering, and commercialization, built by ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Guillaume Lessard"})," with full transparency, reproducible artifacts, and no speculative claims."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-outline",children:["GitHub Artifacts",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsx(m,{to:"/contact",className:"btn-cyan",children:"Contact"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-6",children:[e.jsxs("div",{ref:r=>s(r,0),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Creator"}),e.jsxs("p",{className:"text-primary text-lg mb-3",children:[e.jsx("strong",{children:"Guillaume Lessard"}),", software engineer and researcher based in Montreal / Longueuil, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary leading-relaxed mb-4",children:["Operating as the QEC software division of ",e.jsx("strong",{children:"iD01t Productions"})," (founded 2023), Guillaume focuses on quantum error correction software engineering, building high-throughput decoders and advanced validation tooling."]}),e.jsxs("div",{className:"flex flex-wrap gap-2 mb-4",children:[e.jsx("span",{className:"text-secondary text-sm",children:"Publishing aliases:"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"Guillaume Lessard"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(engineering)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"El'Nox Rah"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(research / authorship)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"DJ iD01t"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(music)"})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 px-4 py-2 bg-green-400/10 border border-green-400/20 rounded-lg text-sm text-green-400 font-mono hover:bg-green-400/20 transition-colors",children:[e.jsx(u,{size:16,className:"shrink-0","aria-hidden":"true"})," ORCID 0009-0000-3465-3753"]}),[{label:"GitHub Artifacts",href:"https://github.com/GuillaumeLessard/qector-decoder",external:!0},{label:"PyPI",href:"https://pypi.org/project/qector-decoder-v3/",external:!0},{label:"Play Store Book",href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",external:!0}].map(r=>e.jsx("a",{href:r.href,target:"_blank",rel:"noopener noreferrer",className:"px-3 py-2 bg-surface border border-gridline rounded-lg text-sm text-muted-foreground hover:text-cyan-300 hover:border-cyan-300/30 transition-colors",children:r.label},r.label))]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsxs("div",{ref:r=>s(r,1),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Research Background"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"CSS stabilizer codes: surface codes, LDPC, qLDPC"}),e.jsx("li",{children:"MWPM (Blossom), Belief-Matching, BP-OSD decoding"}),e.jsx("li",{children:"Custom CSS code topology research and GF(2) eligibility analysis"}),e.jsx("li",{children:"Bivariate bicycle qLDPC codes"}),e.jsx("li",{children:"Reproducible provenance and SHA-256 sealed artifacts on GitHub"}),e.jsx("li",{children:"Monte Carlo threshold analysis and reproducible validation workflows"})]})]}),e.jsxs("div",{ref:r=>s(r,2),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Software Stack"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Rust / PyO3: core decoder engine"}),e.jsx("li",{children:"Python 3.9 to 3.13: API, CLI, benchmarking, simulation"}),e.jsx("li",{children:"Stim: circuit-level noise simulation"}),e.jsx("li",{children:"OpenCL / CUDA: GPU-accelerated batch decoding"}),e.jsxs("li",{children:["PyPI distribution: ",e.jsx("code",{className:"text-cyan-300 text-xs",children:"qector-decoder-v3"})]}),e.jsx("li",{children:"Ed25519 offline cryptographic signature verification"}),e.jsx("li",{children:"CustomTkinter / FastAPI: QECTOR Workbench desktop interface & REST engine"})]})]}),e.jsxs("div",{ref:r=>s(r,3),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Engineering Philosophy"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Reproducibility first: public claims link to supporting artifacts where published"}),e.jsx("li",{children:"Honest documentation: Decoder is Source-Available (not free); Workbench GUI app is free"}),e.jsx("li",{children:"Simulation-validated before any public claim"}),e.jsx("li",{children:"Full provenance trail: SHA-256 bundles"}),e.jsx("li",{children:"No vendor lock-in: pluggable CodeProvider architecture"}),e.jsx("li",{children:"Transparent validation reports with non-pass classification"})]})]}),e.jsxs("div",{ref:r=>s(r,4),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"QECTOR Product Scope"}),e.jsx("p",{className:"text-xs text-secondary mb-2",children:"This site and QECTOR Decoder v3 + Workbench constitute the high-performance decoder library and professional GUI."}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"QECTOR Decoder v3"}),": Rust/Python multi-algorithm QEC decoder library (Source-Available)"]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Free QECTOR Workbench"}),": live Windows and Linux releases with 85-tool MCP servers and 19 named decoder kinds (17 concrete configurations plus AutoDecoder and Auto Router)."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Documentation & Education"}),': Public methodology, validation guidance, and "Mastering QEC" book context (see the decoder repository for primary evidence).']})]})]})]}),e.jsxs("div",{ref:r=>s(r,5),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Project Timeline"}),e.jsx("div",{className:"space-y-4",children:[{year:"2026-06-23",event:"The public qectorlab.github.io repository was created."},{year:"2026-06-24",event:"The qector-decoder repository was created and v0.5.0 / v0.5.1 were first recorded on PyPI."},{year:"2026-06-24 to 2026-07-26",event:"The verified PyPI release train progressed from v0.5.0 through v0.6.9. Dates are listed on the Changelog page from PyPI upload metadata."},{year:"2026-08-02",event:"QECTOR Decoder v3 v0.7.0 was published on PyPI."},{year:"2026-08-06",event:"QECTOR Decoder v3 v1.0.0 reached its first stable release, with the official reference manual (DOI 10.5281/zenodo.21941046)."},{year:"2026-08-11 to 2026-09-04",event:"QECTOR Workbench Windows v1.0.0 and v1.0.1 were followed by verified v1.0.7 releases for Windows and Linux (2026-09-04)."},{year:"2026-08-15 to 2026-08-24",event:"The Claude Plugin repository was created on 2026-08-15; plugin v1.0.6 was published on 2026-08-24."},{year:"2026-11-06",event:"QECTOR Decoder v3 v1.0.1 was published with 18 wheels for Python 3.9-3.14 and signed build provenance, alongside Claude Plugin v2.0.1 and the new commercial plans."}].map(r=>e.jsxs("div",{className:"flex flex-col gap-1 sm:flex-row sm:gap-4 items-start pb-4 border-b border-gridline/50 last:border-0",children:[e.jsx("span",{className:"text-cyan-300 font-mono text-sm sm:min-w-[80px] shrink-0 pt-0.5",children:r.year}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed min-w-0",children:r.event})]},r.year))})]}),e.jsxs("div",{ref:r=>s(r,6),className:"p-6 bg-green-400/5 border border-green-400/20 rounded-2xl",children:[e.jsx("h2",{className:"text-green-400 font-semibold text-sm uppercase tracking-wider mb-3",children:"Transparency Statement"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR is an independent R&D project, not backed by a quantum hardware company, VC funding, or a university lab. No hardware-specific measurement figures are published on this site, because results depend on your hardware. The decoder reached its first stable release on 2026-08-06 (v1.0.0); the current release is v1.0.1. QECTOR Decoder is source-available under the published license. Workbench release terms are platform-specific. We publish validation guidance and known limitations openly. Documented behavior is what ships."})]})]})})]})}export{y as default}; diff --git a/assets/About-DZ1qdQkd.js b/assets/About-DZ1qdQkd.js deleted file mode 100644 index 1ce3609a..00000000 --- a/assets/About-DZ1qdQkd.js +++ /dev/null @@ -1 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{u as l,S as d,J as m}from"./index-DRAXObZB.js";import{g as a,S as u}from"./vendor-gsap-a3sj5zmn.js";import{L as x}from"./vendor-PiU4YGcH.js";import{e as h}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";a.registerPlugin(u);function v(){const t=o.useRef([]),{version:c}=l();o.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=a.context(()=>{t.current.filter(Boolean).forEach(n=>{a.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const s=(r,i)=>{r&&(t.current[i]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(d,{title:"About · QECTOR",description:"About QECTOR: Guillaume Lessard, iD01t Productions, QEC research background, ORCID, GitHub artifacts, mission and engineering philosophy."}),e.jsx(m,{data:{"@context":"https://schema.org","@graph":[{"@type":"Person",name:"Guillaume Lessard",alternateName:"El'Nox Rah",url:"https://qector.store/about",sameAs:["https://orcid.org/0009-0000-3465-3753","https://github.com/GuillaumeLessard"],affiliation:{"@type":"Organization",name:"iD01t Productions"},jobTitle:"Independent QEC Researcher & Software Engineer",knowsAbout:["Quantum Error Correction","CSS Codes","LDPC Codes","MWPM Decoding","Rust","Python"]},{"@type":"Organization",name:"iD01t Productions",url:"https://qector.store",founder:{"@type":"Person",name:"Guillaume Lessard"},description:"QEC software division of iD01t Productions, developing high-performance QEC decoder libraries and GUIs."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"iD01t Productions · Longueuil, Québec · ORCID 0009-0000-3465-3753"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"About QECTOR"}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Independent quantum error correction research, engineering, and commercialization, built by ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Guillaume Lessard"})," with full transparency, reproducible artifacts, and no speculative claims."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-outline",children:["GitHub Artifacts",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsx(x,{to:"/contact",className:"btn-cyan",children:"Contact"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-6",children:[e.jsxs("div",{ref:r=>s(r,0),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Creator"}),e.jsxs("p",{className:"text-primary text-lg mb-3",children:[e.jsx("strong",{children:"Guillaume Lessard"}),", software engineer and researcher based in Montreal / Longueuil, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary leading-relaxed mb-4",children:["Operating as the QEC software division of ",e.jsx("strong",{children:"iD01t Productions"})," (founded 2023), Guillaume focuses on quantum error correction software engineering, building high-throughput decoders and advanced validation tooling."]}),e.jsxs("div",{className:"flex flex-wrap gap-2 mb-4",children:[e.jsx("span",{className:"text-secondary text-sm",children:"Publishing aliases:"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"Guillaume Lessard"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(engineering)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"El'Nox Rah"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(research / authorship)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"DJ iD01t"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(music)"})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 px-4 py-2 bg-green-400/10 border border-green-400/20 rounded-lg text-sm text-green-400 font-mono hover:bg-green-400/20 transition-colors",children:[e.jsx(h,{size:16,className:"shrink-0","aria-hidden":"true"})," ORCID 0009-0000-3465-3753"]}),[{label:"GitHub Artifacts",href:"https://github.com/GuillaumeLessard/qector-decoder",external:!0},{label:"PyPI",href:"https://pypi.org/project/qector-decoder-v3/",external:!0},{label:"Play Store Book",href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",external:!0}].map(r=>e.jsx("a",{href:r.href,target:"_blank",rel:"noopener noreferrer",className:"px-3 py-2 bg-surface border border-gridline rounded-lg text-sm text-muted-foreground hover:text-cyan-300 hover:border-cyan-300/30 transition-colors",children:r.label},r.label))]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsxs("div",{ref:r=>s(r,1),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Research Background"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"CSS stabilizer codes: surface codes, LDPC, qLDPC"}),e.jsx("li",{children:"MWPM (Blossom), Belief-Matching, BP-OSD decoding"}),e.jsx("li",{children:"Custom CSS code topology research and GF(2) eligibility analysis"}),e.jsx("li",{children:"Bivariate bicycle qLDPC codes"}),e.jsx("li",{children:"Reproducible provenance and SHA-256 sealed artifacts on GitHub"}),e.jsx("li",{children:"Monte Carlo threshold analysis and reproducible validation workflows"})]})]}),e.jsxs("div",{ref:r=>s(r,2),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Software Stack"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Rust / PyO3: core decoder engine"}),e.jsx("li",{children:"Python 3.9 to 3.13: API, CLI, benchmarking, simulation"}),e.jsx("li",{children:"Stim: circuit-level noise simulation"}),e.jsx("li",{children:"OpenCL / CUDA: GPU-accelerated batch decoding"}),e.jsxs("li",{children:["PyPI distribution: ",e.jsx("code",{className:"text-cyan-300 text-xs",children:"qector-decoder-v3"})]}),e.jsx("li",{children:"Ed25519 offline cryptographic signature verification"}),e.jsx("li",{children:"CustomTkinter / FastAPI: QECTOR Workbench desktop interface & REST engine"})]})]}),e.jsxs("div",{ref:r=>s(r,3),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Engineering Philosophy"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Reproducibility first: public claims link to supporting artifacts where published"}),e.jsx("li",{children:"Honest documentation: Decoder is Source-Available (not free); Workbench GUI app is free"}),e.jsx("li",{children:"Simulation-validated before any public claim"}),e.jsx("li",{children:"Full provenance trail: SHA-256 bundles"}),e.jsx("li",{children:"No vendor lock-in: pluggable CodeProvider architecture"}),e.jsx("li",{children:"Transparent validation reports with non-pass classification"})]})]}),e.jsxs("div",{ref:r=>s(r,4),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"QECTOR Product Scope"}),e.jsx("p",{className:"text-xs text-secondary mb-2",children:"This site and QECTOR Decoder v3 + Workbench constitute the high-performance decoder library and professional GUI."}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"QECTOR Decoder v3"}),": Rust/Python multi-algorithm QEC decoder library (Source-Available)"]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Free QECTOR Workbench"}),": live Windows and Linux releases with 85-tool MCP servers and 19 named decoder kinds (17 concrete configurations plus AutoDecoder and Auto Router)."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Documentation & Education"}),': Public methodology, validation guidance, and "Mastering QEC" book context (see the decoder repository for primary evidence).']})]})]})]}),e.jsxs("div",{ref:r=>s(r,5),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Project Timeline"}),e.jsx("div",{className:"space-y-4",children:[{year:"2026-06-23",event:"The public qectorlab.github.io repository was created."},{year:"2026-06-24",event:"The qector-decoder repository was created and v0.5.0 / v0.5.1 were first recorded on PyPI."},{year:"2026-06-24 to 2026-07-26",event:"The verified PyPI release train progressed from v0.5.0 through v0.6.9. Dates are listed on the Changelog page from PyPI upload metadata."},{year:"2026-08-02",event:"QECTOR Decoder v3 v0.7.0 was published on PyPI."},{year:"2026-08-06",event:`QECTOR Decoder v3 v${c||"1.0.0"} reached its first stable release, with the official reference manual (DOI 10.5281/zenodo.21941046).`},{year:"2026-08-11 to 2026-09-04",event:"QECTOR Workbench Windows v1.0.0 and v1.0.1 were followed by verified v1.0.7 releases for Windows and Linux (2026-09-04)."},{year:"2026-08-15 to 2026-08-24",event:"The Claude Plugin repository was created on 2026-08-15; plugin v1.0.6 was published on 2026-08-24."}].map(r=>e.jsxs("div",{className:"flex flex-col gap-1 sm:flex-row sm:gap-4 items-start pb-4 border-b border-gridline/50 last:border-0",children:[e.jsx("span",{className:"text-cyan-300 font-mono text-sm sm:min-w-[80px] shrink-0 pt-0.5",children:r.year}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed min-w-0",children:r.event})]},r.year))})]}),e.jsxs("div",{ref:r=>s(r,6),className:"p-6 bg-green-400/5 border border-green-400/20 rounded-2xl",children:[e.jsx("h2",{className:"text-green-400 font-semibold text-sm uppercase tracking-wider mb-3",children:"Transparency Statement"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR is an independent R&D project, not backed by a quantum hardware company, VC funding, or a university lab. No hardware-specific measurement figures are published on this site, because results depend on your hardware. The decoder reached its first stable release on 2026-08-06 (v1.0.0). QECTOR Decoder is source-available under the published license. Workbench release terms are platform-specific. We publish validation guidance and known limitations openly. Documented behavior is what ships."})]})]})})]})}export{v as default}; diff --git a/assets/About-Ddg7J4Ee.js b/assets/About-Ddg7J4Ee.js deleted file mode 100644 index 304ed917..00000000 --- a/assets/About-Ddg7J4Ee.js +++ /dev/null @@ -1 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{u as l,S as d,J as m}from"./index-DlmjLVYe.js";import{g as a,S as u}from"./vendor-gsap-a3sj5zmn.js";import{L as x}from"./vendor-PiU4YGcH.js";import{e as h}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";a.registerPlugin(u);function v(){const t=o.useRef([]),{version:c}=l();o.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=a.context(()=>{t.current.filter(Boolean).forEach(n=>{a.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const s=(r,i)=>{r&&(t.current[i]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(d,{title:"About · QECTOR",description:"About QECTOR: Guillaume Lessard, iD01t Productions, QEC research background, ORCID, GitHub artifacts, mission and engineering philosophy."}),e.jsx(m,{data:{"@context":"https://schema.org","@graph":[{"@type":"Person",name:"Guillaume Lessard",alternateName:"El'Nox Rah",url:"https://qector.store/about",sameAs:["https://orcid.org/0009-0000-3465-3753","https://github.com/GuillaumeLessard"],affiliation:{"@type":"Organization",name:"iD01t Productions"},jobTitle:"Independent QEC Researcher & Software Engineer",knowsAbout:["Quantum Error Correction","CSS Codes","LDPC Codes","MWPM Decoding","Rust","Python"]},{"@type":"Organization",name:"iD01t Productions",url:"https://qector.store",founder:{"@type":"Person",name:"Guillaume Lessard"},description:"QEC software division of iD01t Productions, developing high-performance QEC decoder libraries and GUIs."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"iD01t Productions · Longueuil, Québec · ORCID 0009-0000-3465-3753"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"About QECTOR"}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Independent quantum error correction research, engineering, and commercialization, built by ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Guillaume Lessard"})," with full transparency, reproducible artifacts, and no speculative claims."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-outline",children:["GitHub Artifacts",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsx(x,{to:"/contact",className:"btn-cyan",children:"Contact"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-6",children:[e.jsxs("div",{ref:r=>s(r,0),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Creator"}),e.jsxs("p",{className:"text-primary text-lg mb-3",children:[e.jsx("strong",{children:"Guillaume Lessard"}),", software engineer and researcher based in Montreal / Longueuil, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary leading-relaxed mb-4",children:["Operating as the QEC software division of ",e.jsx("strong",{children:"iD01t Productions"})," (founded 2023), Guillaume focuses on quantum error correction software engineering, building high-throughput decoders and advanced validation tooling."]}),e.jsxs("div",{className:"flex flex-wrap gap-2 mb-4",children:[e.jsx("span",{className:"text-secondary text-sm",children:"Publishing aliases:"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"Guillaume Lessard"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(engineering)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"El'Nox Rah"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(research / authorship)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"DJ iD01t"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(music)"})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 px-4 py-2 bg-green-400/10 border border-green-400/20 rounded-lg text-sm text-green-400 font-mono hover:bg-green-400/20 transition-colors",children:[e.jsx(h,{size:16,className:"shrink-0","aria-hidden":"true"})," ORCID 0009-0000-3465-3753"]}),[{label:"GitHub Artifacts",href:"https://github.com/GuillaumeLessard/qector-decoder",external:!0},{label:"PyPI",href:"https://pypi.org/project/qector-decoder-v3/",external:!0},{label:"Play Store Book",href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",external:!0}].map(r=>e.jsx("a",{href:r.href,target:"_blank",rel:"noopener noreferrer",className:"px-3 py-2 bg-surface border border-gridline rounded-lg text-sm text-muted-foreground hover:text-cyan-300 hover:border-cyan-300/30 transition-colors",children:r.label},r.label))]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsxs("div",{ref:r=>s(r,1),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Research Background"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"CSS stabilizer codes: surface codes, LDPC, qLDPC"}),e.jsx("li",{children:"MWPM (Blossom), Belief-Matching, BP-OSD decoding"}),e.jsx("li",{children:"Custom CSS code topology research and GF(2) eligibility analysis"}),e.jsx("li",{children:"Bivariate bicycle qLDPC codes"}),e.jsx("li",{children:"Reproducible provenance and SHA-256 sealed artifacts on GitHub"}),e.jsx("li",{children:"Monte Carlo threshold analysis and reproducible validation workflows"})]})]}),e.jsxs("div",{ref:r=>s(r,2),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Software Stack"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Rust / PyO3: core decoder engine"}),e.jsx("li",{children:"Python 3.9 to 3.13: API, CLI, benchmarking, simulation"}),e.jsx("li",{children:"Stim: circuit-level noise simulation"}),e.jsx("li",{children:"OpenCL / CUDA: GPU-accelerated batch decoding"}),e.jsxs("li",{children:["PyPI distribution: ",e.jsx("code",{className:"text-cyan-300 text-xs",children:"qector-decoder-v3"})]}),e.jsx("li",{children:"Ed25519 offline cryptographic signature verification"}),e.jsx("li",{children:"CustomTkinter / FastAPI: QECTOR Workbench desktop interface & REST engine"})]})]}),e.jsxs("div",{ref:r=>s(r,3),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Engineering Philosophy"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Reproducibility first: public claims link to supporting artifacts where published"}),e.jsx("li",{children:"Honest documentation: Decoder is Source-Available (not free); Workbench GUI app is free"}),e.jsx("li",{children:"Simulation-validated before any public claim"}),e.jsx("li",{children:"Full provenance trail: SHA-256 bundles"}),e.jsx("li",{children:"No vendor lock-in: pluggable CodeProvider architecture"}),e.jsx("li",{children:"Transparent validation reports with non-pass classification"})]})]}),e.jsxs("div",{ref:r=>s(r,4),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"QECTOR Product Scope"}),e.jsx("p",{className:"text-xs text-secondary mb-2",children:"This site and QECTOR Decoder v3 + Workbench constitute the high-performance decoder library and professional GUI."}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"QECTOR Decoder v3"}),": Rust/Python multi-algorithm QEC decoder library (Source-Available)"]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Free QECTOR Workbench"}),": live Windows and Linux releases with 85-tool MCP servers and 19 named decoder kinds (17 concrete configurations plus AutoDecoder and Auto Router)."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Documentation & Education"}),': Public methodology, validation guidance, and "Mastering QEC" book context (see the decoder repository for primary evidence).']})]})]})]}),e.jsxs("div",{ref:r=>s(r,5),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Project Timeline"}),e.jsx("div",{className:"space-y-4",children:[{year:"2026-06-23",event:"The public qectorlab.github.io repository was created."},{year:"2026-06-24",event:"The qector-decoder repository was created and v0.5.0 / v0.5.1 were first recorded on PyPI."},{year:"2026-06-24 to 2026-07-26",event:"The verified PyPI release train progressed from v0.5.0 through v0.6.9. Dates are listed on the Changelog page from PyPI upload metadata."},{year:"2026-08-02",event:"QECTOR Decoder v3 v0.7.0 was published on PyPI."},{year:"2026-08-06",event:`QECTOR Decoder v3 v${c||"1.0.0"} reached its first stable release, with the official reference manual (DOI 10.5281/zenodo.21941046).`},{year:"2026-08-11 to 2026-09-04",event:"QECTOR Workbench Windows v1.0.0 and v1.0.1 were followed by verified v1.0.7 releases for Windows and Linux (2026-09-04)."},{year:"2026-08-15 to 2026-08-24",event:"The Claude Plugin repository was created on 2026-08-15; plugin v1.0.6 was published on 2026-08-24."}].map(r=>e.jsxs("div",{className:"flex flex-col gap-1 sm:flex-row sm:gap-4 items-start pb-4 border-b border-gridline/50 last:border-0",children:[e.jsx("span",{className:"text-cyan-300 font-mono text-sm sm:min-w-[80px] shrink-0 pt-0.5",children:r.year}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed min-w-0",children:r.event})]},r.year))})]}),e.jsxs("div",{ref:r=>s(r,6),className:"p-6 bg-green-400/5 border border-green-400/20 rounded-2xl",children:[e.jsx("h2",{className:"text-green-400 font-semibold text-sm uppercase tracking-wider mb-3",children:"Transparency Statement"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR is an independent R&D project, not backed by a quantum hardware company, VC funding, or a university lab. No hardware-specific measurement figures are published on this site, because results depend on your hardware. The decoder reached its first stable release on 2026-08-06 (v1.0.0). QECTOR Decoder is source-available under the published license. Workbench release terms are platform-specific. We publish validation guidance and known limitations openly. Documented behavior is what ships."})]})]})})]})}export{v as default}; diff --git a/assets/About-Dhus-ur3.js b/assets/About-Dhus-ur3.js deleted file mode 100644 index a4d55f95..00000000 --- a/assets/About-Dhus-ur3.js +++ /dev/null @@ -1 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{u as l,S as d,J as m}from"./index-WV1aysjN.js";import{g as a,S as u}from"./vendor-gsap-a3sj5zmn.js";import{L as x}from"./vendor-PiU4YGcH.js";import{e as h}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";a.registerPlugin(u);function v(){const t=o.useRef([]),{version:c}=l();o.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=a.context(()=>{t.current.filter(Boolean).forEach(n=>{a.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const s=(r,i)=>{r&&(t.current[i]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(d,{title:"About · QECTOR",description:"About QECTOR: Guillaume Lessard, iD01t Productions, QEC research background, ORCID, GitHub artifacts, mission and engineering philosophy."}),e.jsx(m,{data:{"@context":"https://schema.org","@graph":[{"@type":"Person",name:"Guillaume Lessard",alternateName:"El'Nox Rah",url:"https://qector.store/about",sameAs:["https://orcid.org/0009-0000-3465-3753","https://github.com/GuillaumeLessard"],affiliation:{"@type":"Organization",name:"iD01t Productions"},jobTitle:"Independent QEC Researcher & Software Engineer",knowsAbout:["Quantum Error Correction","CSS Codes","LDPC Codes","MWPM Decoding","Rust","Python"]},{"@type":"Organization",name:"iD01t Productions",url:"https://qector.store",founder:{"@type":"Person",name:"Guillaume Lessard"},description:"QEC software division of iD01t Productions, developing high-performance QEC decoder libraries and GUIs."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"iD01t Productions · Longueuil, Québec · ORCID 0009-0000-3465-3753"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"About QECTOR"}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Independent quantum error correction research, engineering, and commercialization, built by ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Guillaume Lessard"})," with full transparency, reproducible artifacts, and no speculative claims."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-outline",children:["GitHub Artifacts",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsx(x,{to:"/contact",className:"btn-cyan",children:"Contact"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-6",children:[e.jsxs("div",{ref:r=>s(r,0),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Creator"}),e.jsxs("p",{className:"text-primary text-lg mb-3",children:[e.jsx("strong",{children:"Guillaume Lessard"}),", software engineer and researcher based in Montreal / Longueuil, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary leading-relaxed mb-4",children:["Operating as the QEC software division of ",e.jsx("strong",{children:"iD01t Productions"})," (founded 2023), Guillaume focuses on quantum error correction software engineering, building high-throughput decoders and advanced validation tooling."]}),e.jsxs("div",{className:"flex flex-wrap gap-2 mb-4",children:[e.jsx("span",{className:"text-secondary text-sm",children:"Publishing aliases:"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"Guillaume Lessard"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(engineering)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"El'Nox Rah"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(research / authorship)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"DJ iD01t"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(music)"})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 px-4 py-2 bg-green-400/10 border border-green-400/20 rounded-lg text-sm text-green-400 font-mono hover:bg-green-400/20 transition-colors",children:[e.jsx(h,{size:16,className:"shrink-0","aria-hidden":"true"})," ORCID 0009-0000-3465-3753"]}),[{label:"GitHub Artifacts",href:"https://github.com/GuillaumeLessard/qector-decoder",external:!0},{label:"PyPI",href:"https://pypi.org/project/qector-decoder-v3/",external:!0},{label:"Play Store Book",href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",external:!0}].map(r=>e.jsx("a",{href:r.href,target:"_blank",rel:"noopener noreferrer",className:"px-3 py-2 bg-surface border border-gridline rounded-lg text-sm text-muted-foreground hover:text-cyan-300 hover:border-cyan-300/30 transition-colors",children:r.label},r.label))]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsxs("div",{ref:r=>s(r,1),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Research Background"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"CSS stabilizer codes: surface codes, LDPC, qLDPC"}),e.jsx("li",{children:"MWPM (Blossom), Belief-Matching, BP-OSD decoding"}),e.jsx("li",{children:"Custom CSS code topology research and GF(2) eligibility analysis"}),e.jsx("li",{children:"Bivariate bicycle qLDPC codes"}),e.jsx("li",{children:"Reproducible provenance and SHA-256 sealed artifacts on GitHub"}),e.jsx("li",{children:"Monte Carlo threshold analysis and reproducible validation workflows"})]})]}),e.jsxs("div",{ref:r=>s(r,2),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Software Stack"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Rust / PyO3: core decoder engine"}),e.jsx("li",{children:"Python 3.9 to 3.13: API, CLI, benchmarking, simulation"}),e.jsx("li",{children:"Stim: circuit-level noise simulation"}),e.jsx("li",{children:"OpenCL / CUDA: GPU-accelerated batch decoding"}),e.jsxs("li",{children:["PyPI distribution: ",e.jsx("code",{className:"text-cyan-300 text-xs",children:"qector-decoder-v3"})]}),e.jsx("li",{children:"Ed25519 offline cryptographic signature verification"}),e.jsx("li",{children:"CustomTkinter / FastAPI: QECTOR Workbench desktop interface & REST engine"})]})]}),e.jsxs("div",{ref:r=>s(r,3),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Engineering Philosophy"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Reproducibility first: public claims link to supporting artifacts where published"}),e.jsx("li",{children:"Honest documentation: Decoder is Source-Available (not free); Workbench GUI app is free"}),e.jsx("li",{children:"Simulation-validated before any public claim"}),e.jsx("li",{children:"Full provenance trail: SHA-256 bundles"}),e.jsx("li",{children:"No vendor lock-in: pluggable CodeProvider architecture"}),e.jsx("li",{children:"Transparent validation reports with non-pass classification"})]})]}),e.jsxs("div",{ref:r=>s(r,4),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"QECTOR Product Scope"}),e.jsx("p",{className:"text-xs text-secondary mb-2",children:"This site and QECTOR Decoder v3 + Workbench constitute the high-performance decoder library and professional GUI."}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"QECTOR Decoder v3"}),": Rust/Python multi-algorithm QEC decoder library (Source-Available)"]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Free QECTOR Workbench"}),": live Windows and Linux releases with 85-tool MCP servers and 19 named decoder kinds (17 concrete configurations plus AutoDecoder and Auto Router)."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Documentation & Education"}),': Public methodology, validation guidance, and "Mastering QEC" book context (see the decoder repository for primary evidence).']})]})]})]}),e.jsxs("div",{ref:r=>s(r,5),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Project Timeline"}),e.jsx("div",{className:"space-y-4",children:[{year:"2026-06-23",event:"The public qectorlab.github.io repository was created."},{year:"2026-06-24",event:"The qector-decoder repository was created and v0.5.0 / v0.5.1 were first recorded on PyPI."},{year:"2026-06-24 to 2026-07-26",event:"The verified PyPI release train progressed from v0.5.0 through v0.6.9. Dates are listed on the Changelog page from PyPI upload metadata."},{year:"2026-08-02",event:"QECTOR Decoder v3 v0.7.0 was published on PyPI."},{year:"2026-08-06",event:`QECTOR Decoder v3 v${c||"1.0.0"} reached its first stable release, with the official reference manual (DOI 10.5281/zenodo.21941046).`},{year:"2026-08-11 to 2026-09-04",event:"QECTOR Workbench Windows v1.0.0 and v1.0.1 were followed by verified v1.0.7 releases for Windows and Linux (2026-09-04)."},{year:"2026-08-15 to 2026-08-24",event:"The Claude Plugin repository was created on 2026-08-15; plugin v1.0.6 was published on 2026-08-24."}].map(r=>e.jsxs("div",{className:"flex flex-col gap-1 sm:flex-row sm:gap-4 items-start pb-4 border-b border-gridline/50 last:border-0",children:[e.jsx("span",{className:"text-cyan-300 font-mono text-sm sm:min-w-[80px] shrink-0 pt-0.5",children:r.year}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed min-w-0",children:r.event})]},r.year))})]}),e.jsxs("div",{ref:r=>s(r,6),className:"p-6 bg-green-400/5 border border-green-400/20 rounded-2xl",children:[e.jsx("h2",{className:"text-green-400 font-semibold text-sm uppercase tracking-wider mb-3",children:"Transparency Statement"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR is an independent R&D project, not backed by a quantum hardware company, VC funding, or a university lab. No hardware-specific measurement figures are published on this site, because results depend on your hardware. The decoder reached its first stable release on 2026-08-06 (v1.0.0). QECTOR Decoder is source-available under the published license. Workbench release terms are platform-specific. We publish validation guidance and known limitations openly. Documented behavior is what ships."})]})]})})]})}export{v as default}; diff --git a/assets/About-DnC04FuM.js b/assets/About-DnC04FuM.js deleted file mode 100644 index 5a7ab145..00000000 --- a/assets/About-DnC04FuM.js +++ /dev/null @@ -1 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as l,J as c}from"./index-abfjMTlQ.js";import{g as a,S as d}from"./vendor-gsap-a3sj5zmn.js";import{L as m}from"./vendor-PiU4YGcH.js";import{e as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";a.registerPlugin(d);function y(){const t=o.useRef([]);o.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=a.context(()=>{t.current.filter(Boolean).forEach(n=>{a.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const s=(r,i)=>{r&&(t.current[i]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(l,{title:"About · QECTOR",description:"About QECTOR: Guillaume Lessard, iD01t Productions, QEC research background, ORCID, GitHub artifacts, mission and engineering philosophy."}),e.jsx(c,{data:{"@context":"https://schema.org","@graph":[{"@type":"Person",name:"Guillaume Lessard",alternateName:"El'Nox Rah",url:"https://qector.store/about",sameAs:["https://orcid.org/0009-0000-3465-3753","https://github.com/GuillaumeLessard"],affiliation:{"@type":"Organization",name:"iD01t Productions"},jobTitle:"Independent QEC Researcher & Software Engineer",knowsAbout:["Quantum Error Correction","CSS Codes","LDPC Codes","MWPM Decoding","Rust","Python"]},{"@type":"Organization",name:"iD01t Productions",url:"https://qector.store",founder:{"@type":"Person",name:"Guillaume Lessard"},description:"QEC software division of iD01t Productions, developing high-performance QEC decoder libraries and GUIs."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"iD01t Productions · Longueuil, Québec · ORCID 0009-0000-3465-3753"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"About QECTOR"}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Independent quantum error correction research, engineering, and commercialization, built by ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Guillaume Lessard"})," with full transparency, reproducible artifacts, and no speculative claims."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-outline",children:["GitHub Artifacts",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsx(m,{to:"/contact",className:"btn-cyan",children:"Contact"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-6",children:[e.jsxs("div",{ref:r=>s(r,0),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Creator"}),e.jsxs("p",{className:"text-primary text-lg mb-3",children:[e.jsx("strong",{children:"Guillaume Lessard"}),", software engineer and researcher based in Montreal / Longueuil, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary leading-relaxed mb-4",children:["Operating as the QEC software division of ",e.jsx("strong",{children:"iD01t Productions"})," (founded 2012), Guillaume focuses on quantum error correction software engineering, building high-throughput decoders and advanced validation tooling."]}),e.jsxs("div",{className:"flex flex-wrap gap-2 mb-4",children:[e.jsx("span",{className:"text-secondary text-sm",children:"Publishing aliases:"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"Guillaume Lessard"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(engineering)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"El'Nox Rah"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(research / authorship)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"DJ iD01t"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(music)"})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 px-4 py-2 bg-green-400/10 border border-green-400/20 rounded-lg text-sm text-green-400 font-mono hover:bg-green-400/20 transition-colors",children:[e.jsx(u,{size:16,className:"shrink-0","aria-hidden":"true"})," ORCID 0009-0000-3465-3753"]}),[{label:"GitHub Artifacts",href:"https://github.com/GuillaumeLessard/qector-decoder",external:!0},{label:"PyPI",href:"https://pypi.org/project/qector-decoder-v3/",external:!0},{label:"Play Store Book",href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",external:!0}].map(r=>e.jsx("a",{href:r.href,target:"_blank",rel:"noopener noreferrer",className:"px-3 py-2 bg-surface border border-gridline rounded-lg text-sm text-muted-foreground hover:text-cyan-300 hover:border-cyan-300/30 transition-colors",children:r.label},r.label))]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsxs("div",{ref:r=>s(r,1),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Research Background"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"CSS stabilizer codes: surface codes, LDPC, qLDPC"}),e.jsx("li",{children:"MWPM (Blossom), Belief-Matching, BP-OSD decoding"}),e.jsx("li",{children:"Custom CSS code topology research and GF(2) eligibility analysis"}),e.jsx("li",{children:"Bivariate bicycle qLDPC codes"}),e.jsx("li",{children:"Reproducible provenance and SHA-256 sealed artifacts on GitHub"}),e.jsx("li",{children:"Monte Carlo threshold analysis and reproducible validation workflows"})]})]}),e.jsxs("div",{ref:r=>s(r,2),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Software Stack"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Rust / PyO3: core decoder engine"}),e.jsx("li",{children:"Python 3.9 to 3.13: API, CLI, benchmarking, simulation"}),e.jsx("li",{children:"Stim: circuit-level noise simulation"}),e.jsx("li",{children:"OpenCL / CUDA: GPU-accelerated batch decoding"}),e.jsxs("li",{children:["PyPI distribution: ",e.jsx("code",{className:"text-cyan-300 text-xs",children:"qector-decoder-v3"})]}),e.jsx("li",{children:"Ed25519 offline cryptographic signature verification"}),e.jsx("li",{children:"CustomTkinter / FastAPI: QECTOR Workbench desktop interface & REST engine"})]})]}),e.jsxs("div",{ref:r=>s(r,3),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Engineering Philosophy"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Reproducibility first: public claims link to supporting artifacts where published"}),e.jsx("li",{children:"Honest documentation: Decoder is Source-Available (not free); Workbench GUI app is free"}),e.jsx("li",{children:"Simulation-validated before any public claim"}),e.jsx("li",{children:"Full provenance trail: SHA-256 bundles"}),e.jsx("li",{children:"No vendor lock-in: pluggable CodeProvider architecture"}),e.jsx("li",{children:"Transparent validation reports with non-pass classification"})]})]}),e.jsxs("div",{ref:r=>s(r,4),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"QECTOR Product Scope"}),e.jsx("p",{className:"text-xs text-secondary mb-2",children:"This site and QECTOR Decoder v3 + Workbench constitute the high-performance decoder library and professional GUI."}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"QECTOR Decoder v3"}),": Rust/Python multi-algorithm QEC decoder library (Source-Available)"]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Free QECTOR Workbench"}),": live Windows and Linux releases with 85-tool MCP servers and 19 named decoder kinds (17 concrete configurations plus AutoDecoder and Auto Router)."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Documentation & Education"}),': Public methodology, validation guidance, and "Mastering QEC" book context (see the decoder repository for primary evidence).']})]})]})]}),e.jsxs("div",{ref:r=>s(r,5),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Project Timeline"}),e.jsx("div",{className:"space-y-4",children:[{year:"2026-06-23",event:"The public qectorlab.github.io repository was created."},{year:"2026-06-24",event:"The qector-decoder repository was created and v0.5.0 / v0.5.1 were first recorded on PyPI."},{year:"2026-06-24 to 2026-07-26",event:"The verified PyPI release train progressed from v0.5.0 through v0.6.9. Dates are listed on the Changelog page from PyPI upload metadata."},{year:"2026-08-02",event:"QECTOR Decoder v3 v0.7.0 was published on PyPI."},{year:"2026-08-06",event:"QECTOR Decoder v3 v1.0.0 reached its first stable release, with the official reference manual (DOI 10.5281/zenodo.21941046)."},{year:"2026-08-11 to 2026-09-04",event:"QECTOR Workbench Windows v1.0.0 and v1.0.1 were followed by verified v1.0.7 releases for Windows and Linux (2026-09-04)."},{year:"2026-08-15 to 2026-08-24",event:"The Claude Plugin repository was created on 2026-08-15; plugin v1.0.6 was published on 2026-08-24."},{year:"2026-11-06",event:"QECTOR Decoder v3 v1.0.1 was published with 18 wheels for Python 3.9-3.14 and signed build provenance, alongside Claude Plugin v2.0.1 and the new commercial plans."}].map(r=>e.jsxs("div",{className:"flex flex-col gap-1 sm:flex-row sm:gap-4 items-start pb-4 border-b border-gridline/50 last:border-0",children:[e.jsx("span",{className:"text-cyan-300 font-mono text-sm sm:min-w-[80px] shrink-0 pt-0.5",children:r.year}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed min-w-0",children:r.event})]},r.year))})]}),e.jsxs("div",{ref:r=>s(r,6),className:"p-6 bg-green-400/5 border border-green-400/20 rounded-2xl",children:[e.jsx("h2",{className:"text-green-400 font-semibold text-sm uppercase tracking-wider mb-3",children:"Transparency Statement"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR is an independent R&D project, not backed by a quantum hardware company, VC funding, or a university lab. No hardware-specific measurement figures are published on this site, because results depend on your hardware. The decoder reached its first stable release on 2026-08-06 (v1.0.0); the current release is v1.0.1. QECTOR Decoder is source-available under the published license. Workbench release terms are platform-specific. We publish validation guidance and known limitations openly. Documented behavior is what ships."})]})]})})]})}export{y as default}; diff --git a/assets/About-DorgToxb.js b/assets/About-DorgToxb.js deleted file mode 100644 index 43126173..00000000 --- a/assets/About-DorgToxb.js +++ /dev/null @@ -1 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{u as l,S as d,J as m}from"./index-B9kEGiWi.js";import{g as a,S as u}from"./vendor-gsap-a3sj5zmn.js";import{L as x}from"./vendor-PiU4YGcH.js";import{e as h}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";a.registerPlugin(u);function v(){const t=o.useRef([]),{version:c}=l();o.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=a.context(()=>{t.current.filter(Boolean).forEach(n=>{a.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const s=(r,i)=>{r&&(t.current[i]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(d,{title:"About · QECTOR",description:"About QECTOR: Guillaume Lessard, iD01t Productions, QEC research background, ORCID, GitHub artifacts, mission and engineering philosophy."}),e.jsx(m,{data:{"@context":"https://schema.org","@graph":[{"@type":"Person",name:"Guillaume Lessard",alternateName:"El'Nox Rah",url:"https://qector.store/about",sameAs:["https://orcid.org/0009-0000-3465-3753","https://github.com/GuillaumeLessard"],affiliation:{"@type":"Organization",name:"iD01t Productions"},jobTitle:"Independent QEC Researcher & Software Engineer",knowsAbout:["Quantum Error Correction","CSS Codes","LDPC Codes","MWPM Decoding","Rust","Python"]},{"@type":"Organization",name:"iD01t Productions",url:"https://qector.store",founder:{"@type":"Person",name:"Guillaume Lessard"},description:"QEC software division of iD01t Productions, developing high-performance QEC decoder libraries and GUIs."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"iD01t Productions · Longueuil, Québec · ORCID 0009-0000-3465-3753"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"About QECTOR"}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Independent quantum error correction research, engineering, and commercialization, built by ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Guillaume Lessard"})," with full transparency, reproducible artifacts, and no speculative claims."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-outline",children:["GitHub Artifacts",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsx(x,{to:"/contact",className:"btn-cyan",children:"Contact"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-6",children:[e.jsxs("div",{ref:r=>s(r,0),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Creator"}),e.jsxs("p",{className:"text-primary text-lg mb-3",children:[e.jsx("strong",{children:"Guillaume Lessard"}),", software engineer and researcher based in Montreal / Longueuil, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary leading-relaxed mb-4",children:["Operating as the QEC software division of ",e.jsx("strong",{children:"iD01t Productions"})," (founded 2023), Guillaume focuses on quantum error correction software engineering, building high-throughput decoders and advanced validation tooling."]}),e.jsxs("div",{className:"flex flex-wrap gap-2 mb-4",children:[e.jsx("span",{className:"text-secondary text-sm",children:"Publishing aliases:"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"Guillaume Lessard"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(engineering)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"El'Nox Rah"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(research / authorship)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"DJ iD01t"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(music)"})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 px-4 py-2 bg-green-400/10 border border-green-400/20 rounded-lg text-sm text-green-400 font-mono hover:bg-green-400/20 transition-colors",children:[e.jsx(h,{size:16,className:"shrink-0","aria-hidden":"true"})," ORCID 0009-0000-3465-3753"]}),[{label:"GitHub Artifacts",href:"https://github.com/GuillaumeLessard/qector-decoder",external:!0},{label:"PyPI",href:"https://pypi.org/project/qector-decoder-v3/",external:!0},{label:"Play Store Book",href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",external:!0}].map(r=>e.jsx("a",{href:r.href,target:"_blank",rel:"noopener noreferrer",className:"px-3 py-2 bg-surface border border-gridline rounded-lg text-sm text-muted-foreground hover:text-cyan-300 hover:border-cyan-300/30 transition-colors",children:r.label},r.label))]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsxs("div",{ref:r=>s(r,1),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Research Background"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"CSS stabilizer codes: surface codes, LDPC, qLDPC"}),e.jsx("li",{children:"MWPM (Blossom), Belief-Matching, BP-OSD decoding"}),e.jsx("li",{children:"Custom CSS code topology research and GF(2) eligibility analysis"}),e.jsx("li",{children:"Bivariate bicycle qLDPC codes"}),e.jsx("li",{children:"Reproducible provenance and SHA-256 sealed artifacts on GitHub"}),e.jsx("li",{children:"Monte Carlo threshold analysis and reproducible validation workflows"})]})]}),e.jsxs("div",{ref:r=>s(r,2),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Software Stack"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Rust / PyO3: core decoder engine"}),e.jsx("li",{children:"Python 3.9 to 3.13: API, CLI, benchmarking, simulation"}),e.jsx("li",{children:"Stim: circuit-level noise simulation"}),e.jsx("li",{children:"OpenCL / CUDA: GPU-accelerated batch decoding"}),e.jsxs("li",{children:["PyPI distribution: ",e.jsx("code",{className:"text-cyan-300 text-xs",children:"qector-decoder-v3"})]}),e.jsx("li",{children:"Ed25519 offline cryptographic signature verification"}),e.jsx("li",{children:"CustomTkinter / FastAPI: QECTOR Workbench desktop interface & REST engine"})]})]}),e.jsxs("div",{ref:r=>s(r,3),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Engineering Philosophy"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Reproducibility first: public claims link to supporting artifacts where published"}),e.jsx("li",{children:"Honest documentation: Decoder is Source-Available (not free); Workbench GUI app is free"}),e.jsx("li",{children:"Simulation-validated before any public claim"}),e.jsx("li",{children:"Full provenance trail: SHA-256 bundles"}),e.jsx("li",{children:"No vendor lock-in: pluggable CodeProvider architecture"}),e.jsx("li",{children:"Transparent validation reports with non-pass classification"})]})]}),e.jsxs("div",{ref:r=>s(r,4),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"QECTOR Product Scope"}),e.jsx("p",{className:"text-xs text-secondary mb-2",children:"This site and QECTOR Decoder v3 + Workbench constitute the high-performance decoder library and professional GUI."}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"QECTOR Decoder v3"}),": Rust/Python multi-algorithm QEC decoder library (Source-Available)"]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Free QECTOR Workbench"}),": live Windows and Linux releases with 85-tool MCP servers and 19 named decoder kinds (17 concrete configurations plus AutoDecoder and Auto Router)."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Documentation & Education"}),': Public methodology, validation guidance, and "Mastering QEC" book context (see the decoder repository for primary evidence).']})]})]})]}),e.jsxs("div",{ref:r=>s(r,5),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Project Timeline"}),e.jsx("div",{className:"space-y-4",children:[{year:"2026-06-23",event:"The public qectorlab.github.io repository was created."},{year:"2026-06-24",event:"The qector-decoder repository was created and v0.5.0 / v0.5.1 were first recorded on PyPI."},{year:"2026-06-24 to 2026-07-26",event:"The verified PyPI release train progressed from v0.5.0 through v0.6.9. Dates are listed on the Changelog page from PyPI upload metadata."},{year:"2026-08-02",event:"QECTOR Decoder v3 v0.7.0 was published on PyPI."},{year:"2026-08-06",event:`QECTOR Decoder v3 v${c||"1.0.0"} reached its first stable release, with the official reference manual (DOI 10.5281/zenodo.21941046).`},{year:"2026-08-11 to 2026-09-04",event:"QECTOR Workbench Windows v1.0.0 and v1.0.1 were followed by verified v1.0.7 releases for Windows and Linux (2026-09-04)."},{year:"2026-08-15 to 2026-08-24",event:"The Claude Plugin repository was created on 2026-08-15; plugin v1.0.6 was published on 2026-08-24."}].map(r=>e.jsxs("div",{className:"flex flex-col gap-1 sm:flex-row sm:gap-4 items-start pb-4 border-b border-gridline/50 last:border-0",children:[e.jsx("span",{className:"text-cyan-300 font-mono text-sm sm:min-w-[80px] shrink-0 pt-0.5",children:r.year}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed min-w-0",children:r.event})]},r.year))})]}),e.jsxs("div",{ref:r=>s(r,6),className:"p-6 bg-green-400/5 border border-green-400/20 rounded-2xl",children:[e.jsx("h2",{className:"text-green-400 font-semibold text-sm uppercase tracking-wider mb-3",children:"Transparency Statement"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR is an independent R&D project, not backed by a quantum hardware company, VC funding, or a university lab. No hardware-specific measurement figures are published on this site, because results depend on your hardware. The decoder reached its first stable release on 2026-08-06 (v1.0.0). QECTOR Decoder is source-available under the published license. Workbench release terms are platform-specific. We publish validation guidance and known limitations openly. Documented behavior is what ships."})]})]})})]})}export{v as default}; diff --git a/assets/About-DuDzDMwT.js b/assets/About-DuDzDMwT.js deleted file mode 100644 index 53d0b56f..00000000 --- a/assets/About-DuDzDMwT.js +++ /dev/null @@ -1 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as l,J as c,L as d}from"./index-PdoH5kLF.js";import{g as a,S as u}from"./vendor-gsap-a3sj5zmn.js";import{e as m}from"./vendor-ui-B8TlNU4J.js";a.registerPlugin(u);function f(){const t=o.useRef([]);o.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=a.context(()=>{t.current.filter(Boolean).forEach(n=>{a.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const s=(r,i)=>{r&&(t.current[i]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(l,{title:"About · QECTOR",description:"About QECTOR: Guillaume Lessard, iD01t Productions, QEC research background, ORCID, GitHub artifacts, mission and engineering philosophy."}),e.jsx(c,{data:{"@context":"https://schema.org","@graph":[{"@type":"Person",name:"Guillaume Lessard",alternateName:"El'Nox Rah",url:"https://qector.store/about",sameAs:["https://orcid.org/0009-0000-3465-3753","https://github.com/GuillaumeLessard"],affiliation:{"@type":"Organization",name:"iD01t Productions"},jobTitle:"Independent QEC Researcher & Software Engineer",knowsAbout:["Quantum Error Correction","CSS Codes","LDPC Codes","MWPM Decoding","Rust","Python"]},{"@type":"Organization",name:"iD01t Productions",url:"https://qector.store",founder:{"@type":"Person",name:"Guillaume Lessard"},description:"QEC software division of iD01t Productions, developing high-performance QEC decoder libraries and GUIs."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"iD01t Productions · Longueuil, Québec · ORCID 0009-0000-3465-3753"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"About QECTOR"}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Independent quantum error correction research, engineering, and commercialization, built by ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Guillaume Lessard"})," with full transparency, reproducible artifacts, and no speculative claims."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-outline",children:["GitHub Artifacts",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsx(d,{to:"/contact",className:"btn-cyan",children:"Contact"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-6",children:[e.jsxs("div",{ref:r=>s(r,0),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Creator"}),e.jsxs("p",{className:"text-primary text-lg mb-3",children:[e.jsx("strong",{children:"Guillaume Lessard"}),", software engineer and researcher based in Montreal / Longueuil, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary leading-relaxed mb-4",children:["Operating as the QEC software division of ",e.jsx("strong",{children:"iD01t Productions"})," (founded 2012), Guillaume focuses on quantum error correction software engineering, building high-throughput decoders and advanced validation tooling."]}),e.jsxs("div",{className:"flex flex-wrap gap-2 mb-4",children:[e.jsx("span",{className:"text-secondary text-sm",children:"Publishing aliases:"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"Guillaume Lessard"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(engineering)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"El'Nox Rah"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(research / authorship)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"DJ iD01t"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(music)"})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 px-4 py-2 bg-green-400/10 border border-green-400/20 rounded-lg text-sm text-green-400 font-mono hover:bg-green-400/20 transition-colors",children:[e.jsx(m,{size:16,className:"shrink-0","aria-hidden":"true"})," ORCID 0009-0000-3465-3753"]}),[{label:"GitHub Artifacts",href:"https://github.com/GuillaumeLessard/qector-decoder",external:!0},{label:"PyPI",href:"https://pypi.org/project/qector-decoder-v3/",external:!0},{label:"Play Store Book",href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",external:!0}].map(r=>e.jsx("a",{href:r.href,target:"_blank",rel:"noopener noreferrer",className:"px-3 py-2 bg-surface border border-gridline rounded-lg text-sm text-muted-foreground hover:text-cyan-300 hover:border-cyan-300/30 transition-colors",children:r.label},r.label))]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsxs("div",{ref:r=>s(r,1),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Research Background"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"CSS stabilizer codes: surface codes, LDPC, qLDPC"}),e.jsx("li",{children:"MWPM (Blossom), Belief-Matching, BP-OSD decoding"}),e.jsx("li",{children:"Custom CSS code topology research and GF(2) eligibility analysis"}),e.jsx("li",{children:"Bivariate bicycle qLDPC codes"}),e.jsx("li",{children:"Reproducible provenance and SHA-256 sealed artifacts on GitHub"}),e.jsx("li",{children:"Monte Carlo threshold analysis and reproducible validation workflows"})]})]}),e.jsxs("div",{ref:r=>s(r,2),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Software Stack"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Rust / PyO3: core decoder engine"}),e.jsx("li",{children:"Python 3.9 to 3.13: API, CLI, benchmarking, simulation"}),e.jsx("li",{children:"Stim: circuit-level noise simulation"}),e.jsx("li",{children:"OpenCL / CUDA: GPU-accelerated batch decoding"}),e.jsxs("li",{children:["PyPI distribution: ",e.jsx("code",{className:"text-cyan-300 text-xs",children:"qector-decoder-v3"})]}),e.jsx("li",{children:"Ed25519 offline cryptographic signature verification"}),e.jsx("li",{children:"CustomTkinter / FastAPI: QECTOR Workbench desktop interface & REST engine"})]})]}),e.jsxs("div",{ref:r=>s(r,3),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Engineering Philosophy"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Reproducibility first: public claims link to supporting artifacts where published"}),e.jsx("li",{children:"Honest documentation: Decoder is Source-Available (not free); Workbench GUI app is free"}),e.jsx("li",{children:"Simulation-validated before any public claim"}),e.jsx("li",{children:"Full provenance trail: SHA-256 bundles"}),e.jsx("li",{children:"No vendor lock-in: pluggable CodeProvider architecture"}),e.jsx("li",{children:"Transparent validation reports with non-pass classification"})]})]}),e.jsxs("div",{ref:r=>s(r,4),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"QECTOR Product Scope"}),e.jsx("p",{className:"text-xs text-secondary mb-2",children:"This site and QECTOR Decoder v3 + Workbench constitute the high-performance decoder library and professional GUI."}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"QECTOR Decoder v3"}),": Rust/Python multi-algorithm QEC decoder library (Source-Available)"]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Free QECTOR Workbench"}),": live Windows and Linux releases with 85-tool MCP servers and 19 named decoder kinds (17 concrete configurations plus AutoDecoder and Auto Router)."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Documentation & Education"}),': Public methodology, validation guidance, and "Mastering QEC" book context (see the decoder repository for primary evidence).']})]})]})]}),e.jsxs("div",{ref:r=>s(r,5),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Project Timeline"}),e.jsx("div",{className:"space-y-4",children:[{year:"2026-06-23",event:"The public qectorlab.github.io repository was created."},{year:"2026-06-24",event:"The qector-decoder repository was created and v0.5.0 / v0.5.1 were first recorded on PyPI."},{year:"2026-06-24 to 2026-07-26",event:"The verified PyPI release train progressed from v0.5.0 through v0.6.9. Dates are listed on the Changelog page from PyPI upload metadata."},{year:"2026-08-02",event:"QECTOR Decoder v3 v0.7.0 was published on PyPI."},{year:"2026-08-06",event:"QECTOR Decoder v3 v1.0.0 reached its first stable release, with the official reference manual (DOI 10.5281/zenodo.21941046)."},{year:"2026-08-11 to 2026-09-04",event:"QECTOR Workbench Windows v1.0.0 and v1.0.1 were followed by verified v1.0.7 releases for Windows and Linux (2026-09-04)."},{year:"2026-08-15 to 2026-08-24",event:"The Claude Plugin repository was created on 2026-08-15; plugin v1.0.6 was published on 2026-08-24."},{year:"2026-11-06",event:"QECTOR Decoder v3 v1.0.1 was published with 18 wheels for Python 3.9-3.14 and signed build provenance, alongside Claude Plugin v2.0.1 and the new commercial plans."}].map(r=>e.jsxs("div",{className:"flex flex-col gap-1 sm:flex-row sm:gap-4 items-start pb-4 border-b border-gridline/50 last:border-0",children:[e.jsx("span",{className:"text-cyan-300 font-mono text-sm sm:min-w-[80px] shrink-0 pt-0.5",children:r.year}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed min-w-0",children:r.event})]},r.year))})]}),e.jsxs("div",{ref:r=>s(r,6),className:"p-6 bg-green-400/5 border border-green-400/20 rounded-2xl",children:[e.jsx("h2",{className:"text-green-400 font-semibold text-sm uppercase tracking-wider mb-3",children:"Transparency Statement"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR is an independent R&D project, not backed by a quantum hardware company, VC funding, or a university lab. No hardware-specific measurement figures are published on this site, because results depend on your hardware. The decoder reached its first stable release on 2026-08-06 (v1.0.0); the current release is v1.0.1. QECTOR Decoder is source-available under the published license. Workbench release terms are platform-specific. We publish validation guidance and known limitations openly. Documented behavior is what ships."})]})]})})]})}export{f as default}; diff --git a/assets/About-Sj0SVf3I.js b/assets/About-Sj0SVf3I.js deleted file mode 100644 index 34090454..00000000 --- a/assets/About-Sj0SVf3I.js +++ /dev/null @@ -1 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as l,J as c}from"./index-Bh9DBCb3.js";import{g as a,S as d}from"./vendor-gsap-a3sj5zmn.js";import{L as m}from"./vendor-PiU4YGcH.js";import{e as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";a.registerPlugin(d);function y(){const t=o.useRef([]);o.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=a.context(()=>{t.current.filter(Boolean).forEach(n=>{a.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const s=(r,i)=>{r&&(t.current[i]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(l,{title:"About · QECTOR",description:"About QECTOR: Guillaume Lessard, iD01t Productions, QEC research background, ORCID, GitHub artifacts, mission and engineering philosophy."}),e.jsx(c,{data:{"@context":"https://schema.org","@graph":[{"@type":"Person",name:"Guillaume Lessard",alternateName:"El'Nox Rah",url:"https://qector.store/about",sameAs:["https://orcid.org/0009-0000-3465-3753","https://github.com/GuillaumeLessard"],affiliation:{"@type":"Organization",name:"iD01t Productions"},jobTitle:"Independent QEC Researcher & Software Engineer",knowsAbout:["Quantum Error Correction","CSS Codes","LDPC Codes","MWPM Decoding","Rust","Python"]},{"@type":"Organization",name:"iD01t Productions",url:"https://qector.store",founder:{"@type":"Person",name:"Guillaume Lessard"},description:"QEC software division of iD01t Productions, developing high-performance QEC decoder libraries and GUIs."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"iD01t Productions · Longueuil, Québec · ORCID 0009-0000-3465-3753"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"About QECTOR"}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Independent quantum error correction research, engineering, and commercialization, built by ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Guillaume Lessard"})," with full transparency, reproducible artifacts, and no speculative claims."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-outline",children:["GitHub Artifacts",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsx(m,{to:"/contact",className:"btn-cyan",children:"Contact"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-6",children:[e.jsxs("div",{ref:r=>s(r,0),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Creator"}),e.jsxs("p",{className:"text-primary text-lg mb-3",children:[e.jsx("strong",{children:"Guillaume Lessard"}),", software engineer and researcher based in Montreal / Longueuil, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary leading-relaxed mb-4",children:["Operating as the QEC software division of ",e.jsx("strong",{children:"iD01t Productions"})," (founded 2012), Guillaume focuses on quantum error correction software engineering, building high-throughput decoders and advanced validation tooling."]}),e.jsxs("div",{className:"flex flex-wrap gap-2 mb-4",children:[e.jsx("span",{className:"text-secondary text-sm",children:"Publishing aliases:"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"Guillaume Lessard"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(engineering)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"El'Nox Rah"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(research / authorship)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"DJ iD01t"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(music)"})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 px-4 py-2 bg-green-400/10 border border-green-400/20 rounded-lg text-sm text-green-400 font-mono hover:bg-green-400/20 transition-colors",children:[e.jsx(u,{size:16,className:"shrink-0","aria-hidden":"true"})," ORCID 0009-0000-3465-3753"]}),[{label:"GitHub Artifacts",href:"https://github.com/GuillaumeLessard/qector-decoder",external:!0},{label:"PyPI",href:"https://pypi.org/project/qector-decoder-v3/",external:!0},{label:"Play Store Book",href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",external:!0}].map(r=>e.jsx("a",{href:r.href,target:"_blank",rel:"noopener noreferrer",className:"px-3 py-2 bg-surface border border-gridline rounded-lg text-sm text-muted-foreground hover:text-cyan-300 hover:border-cyan-300/30 transition-colors",children:r.label},r.label))]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsxs("div",{ref:r=>s(r,1),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Research Background"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"CSS stabilizer codes: surface codes, LDPC, qLDPC"}),e.jsx("li",{children:"MWPM (Blossom), Belief-Matching, BP-OSD decoding"}),e.jsx("li",{children:"Custom CSS code topology research and GF(2) eligibility analysis"}),e.jsx("li",{children:"Bivariate bicycle qLDPC codes"}),e.jsx("li",{children:"Reproducible provenance and SHA-256 sealed artifacts on GitHub"}),e.jsx("li",{children:"Monte Carlo threshold analysis and reproducible validation workflows"})]})]}),e.jsxs("div",{ref:r=>s(r,2),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Software Stack"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Rust / PyO3: core decoder engine"}),e.jsx("li",{children:"Python 3.9 to 3.13: API, CLI, benchmarking, simulation"}),e.jsx("li",{children:"Stim: circuit-level noise simulation"}),e.jsx("li",{children:"OpenCL / CUDA: GPU-accelerated batch decoding"}),e.jsxs("li",{children:["PyPI distribution: ",e.jsx("code",{className:"text-cyan-300 text-xs",children:"qector-decoder-v3"})]}),e.jsx("li",{children:"Ed25519 offline cryptographic signature verification"}),e.jsx("li",{children:"CustomTkinter / FastAPI: QECTOR Workbench desktop interface & REST engine"})]})]}),e.jsxs("div",{ref:r=>s(r,3),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Engineering Philosophy"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Reproducibility first: public claims link to supporting artifacts where published"}),e.jsx("li",{children:"Honest documentation: Decoder is Source-Available (not free); Workbench GUI app is free"}),e.jsx("li",{children:"Simulation-validated before any public claim"}),e.jsx("li",{children:"Full provenance trail: SHA-256 bundles"}),e.jsx("li",{children:"No vendor lock-in: pluggable CodeProvider architecture"}),e.jsx("li",{children:"Transparent validation reports with non-pass classification"})]})]}),e.jsxs("div",{ref:r=>s(r,4),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"QECTOR Product Scope"}),e.jsx("p",{className:"text-xs text-secondary mb-2",children:"This site and QECTOR Decoder v3 + Workbench constitute the high-performance decoder library and professional GUI."}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"QECTOR Decoder v3"}),": Rust/Python multi-algorithm QEC decoder library (Source-Available)"]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Free QECTOR Workbench"}),": live Windows and Linux releases with 85-tool MCP servers and 19 named decoder kinds (17 concrete configurations plus AutoDecoder and Auto Router)."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Documentation & Education"}),': Public methodology, validation guidance, and "Mastering QEC" book context (see the decoder repository for primary evidence).']})]})]})]}),e.jsxs("div",{ref:r=>s(r,5),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Project Timeline"}),e.jsx("div",{className:"space-y-4",children:[{year:"2026-06-23",event:"The public qectorlab.github.io repository was created."},{year:"2026-06-24",event:"The qector-decoder repository was created and v0.5.0 / v0.5.1 were first recorded on PyPI."},{year:"2026-06-24 to 2026-07-26",event:"The verified PyPI release train progressed from v0.5.0 through v0.6.9. Dates are listed on the Changelog page from PyPI upload metadata."},{year:"2026-08-02",event:"QECTOR Decoder v3 v0.7.0 was published on PyPI."},{year:"2026-08-06",event:"QECTOR Decoder v3 v1.0.0 reached its first stable release, with the official reference manual (DOI 10.5281/zenodo.21941046)."},{year:"2026-08-11 to 2026-09-04",event:"QECTOR Workbench Windows v1.0.0 and v1.0.1 were followed by verified v1.0.7 releases for Windows and Linux (2026-09-04)."},{year:"2026-08-15 to 2026-08-24",event:"The Claude Plugin repository was created on 2026-08-15; plugin v1.0.6 was published on 2026-08-24."},{year:"2026-11-06",event:"QECTOR Decoder v3 v1.0.1 was published with 18 wheels for Python 3.9-3.14 and signed build provenance, alongside Claude Plugin v2.0.1 and the new commercial plans."}].map(r=>e.jsxs("div",{className:"flex flex-col gap-1 sm:flex-row sm:gap-4 items-start pb-4 border-b border-gridline/50 last:border-0",children:[e.jsx("span",{className:"text-cyan-300 font-mono text-sm sm:min-w-[80px] shrink-0 pt-0.5",children:r.year}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed min-w-0",children:r.event})]},r.year))})]}),e.jsxs("div",{ref:r=>s(r,6),className:"p-6 bg-green-400/5 border border-green-400/20 rounded-2xl",children:[e.jsx("h2",{className:"text-green-400 font-semibold text-sm uppercase tracking-wider mb-3",children:"Transparency Statement"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR is an independent R&D project, not backed by a quantum hardware company, VC funding, or a university lab. No hardware-specific measurement figures are published on this site, because results depend on your hardware. The decoder reached its first stable release on 2026-08-06 (v1.0.0); the current release is v1.0.1. QECTOR Decoder is source-available under the published license. Workbench release terms are platform-specific. We publish validation guidance and known limitations openly. Documented behavior is what ships."})]})]})})]})}export{y as default}; diff --git a/assets/About-dHfyUSjm.js b/assets/About-dHfyUSjm.js deleted file mode 100644 index 03ff9429..00000000 --- a/assets/About-dHfyUSjm.js +++ /dev/null @@ -1 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{u as l,S as d,J as m}from"./index-BN-vOeL2.js";import{g as a,S as u}from"./vendor-gsap-a3sj5zmn.js";import{L as x}from"./vendor-PiU4YGcH.js";import{e as h}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";a.registerPlugin(u);function v(){const t=o.useRef([]),{version:c}=l();o.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=a.context(()=>{t.current.filter(Boolean).forEach(n=>{a.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const s=(r,i)=>{r&&(t.current[i]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(d,{title:"About · QECTOR",description:"About QECTOR: Guillaume Lessard, iD01t Productions, QEC research background, ORCID, GitHub artifacts, mission and engineering philosophy."}),e.jsx(m,{data:{"@context":"https://schema.org","@graph":[{"@type":"Person",name:"Guillaume Lessard",alternateName:"El'Nox Rah",url:"https://qector.store/about",sameAs:["https://orcid.org/0009-0000-3465-3753","https://github.com/GuillaumeLessard"],affiliation:{"@type":"Organization",name:"iD01t Productions"},jobTitle:"Independent QEC Researcher & Software Engineer",knowsAbout:["Quantum Error Correction","CSS Codes","LDPC Codes","MWPM Decoding","Rust","Python"]},{"@type":"Organization",name:"iD01t Productions",url:"https://qector.store",founder:{"@type":"Person",name:"Guillaume Lessard"},description:"QEC software division of iD01t Productions, developing high-performance QEC decoder libraries and GUIs."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"iD01t Productions · Longueuil, Québec · ORCID 0009-0000-3465-3753"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"About QECTOR"}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Independent quantum error correction research, engineering, and commercialization, built by ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Guillaume Lessard"})," with full transparency, reproducible artifacts, and no speculative claims."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-outline",children:["GitHub Artifacts",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsx(x,{to:"/contact",className:"btn-cyan",children:"Contact"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-6",children:[e.jsxs("div",{ref:r=>s(r,0),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Creator"}),e.jsxs("p",{className:"text-primary text-lg mb-3",children:[e.jsx("strong",{children:"Guillaume Lessard"}),", software engineer and researcher based in Montreal / Longueuil, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary leading-relaxed mb-4",children:["Operating as the QEC software division of ",e.jsx("strong",{children:"iD01t Productions"})," (founded 2023), Guillaume focuses on quantum error correction software engineering, building high-throughput decoders and advanced validation tooling."]}),e.jsxs("div",{className:"flex flex-wrap gap-2 mb-4",children:[e.jsx("span",{className:"text-secondary text-sm",children:"Publishing aliases:"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"Guillaume Lessard"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(engineering)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"El'Nox Rah"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(research / authorship)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"DJ iD01t"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(music)"})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 px-4 py-2 bg-green-400/10 border border-green-400/20 rounded-lg text-sm text-green-400 font-mono hover:bg-green-400/20 transition-colors",children:[e.jsx(h,{size:16,className:"shrink-0","aria-hidden":"true"})," ORCID 0009-0000-3465-3753"]}),[{label:"GitHub Artifacts",href:"https://github.com/GuillaumeLessard/qector-decoder",external:!0},{label:"PyPI",href:"https://pypi.org/project/qector-decoder-v3/",external:!0},{label:"Play Store Book",href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",external:!0}].map(r=>e.jsx("a",{href:r.href,target:"_blank",rel:"noopener noreferrer",className:"px-3 py-2 bg-surface border border-gridline rounded-lg text-sm text-muted-foreground hover:text-cyan-300 hover:border-cyan-300/30 transition-colors",children:r.label},r.label))]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsxs("div",{ref:r=>s(r,1),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Research Background"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"CSS stabilizer codes: surface codes, LDPC, qLDPC"}),e.jsx("li",{children:"MWPM (Blossom), Belief-Matching, BP-OSD decoding"}),e.jsx("li",{children:"Custom CSS code topology research and GF(2) eligibility analysis"}),e.jsx("li",{children:"Bivariate bicycle qLDPC codes"}),e.jsx("li",{children:"Reproducible provenance and SHA-256 sealed artifacts on GitHub"}),e.jsx("li",{children:"Monte Carlo threshold analysis and reproducible validation workflows"})]})]}),e.jsxs("div",{ref:r=>s(r,2),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Software Stack"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Rust / PyO3: core decoder engine"}),e.jsx("li",{children:"Python 3.9 to 3.13: API, CLI, benchmarking, simulation"}),e.jsx("li",{children:"Stim: circuit-level noise simulation"}),e.jsx("li",{children:"OpenCL / CUDA: GPU-accelerated batch decoding"}),e.jsxs("li",{children:["PyPI distribution: ",e.jsx("code",{className:"text-cyan-300 text-xs",children:"qector-decoder-v3"})]}),e.jsx("li",{children:"Ed25519 offline cryptographic signature verification"}),e.jsx("li",{children:"CustomTkinter / FastAPI: QECTOR Workbench desktop interface & REST engine"})]})]}),e.jsxs("div",{ref:r=>s(r,3),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Engineering Philosophy"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Reproducibility first: public claims link to supporting artifacts where published"}),e.jsx("li",{children:"Honest documentation: Decoder is Source-Available (not free); Workbench GUI app is free"}),e.jsx("li",{children:"Simulation-validated before any public claim"}),e.jsx("li",{children:"Full provenance trail: SHA-256 bundles"}),e.jsx("li",{children:"No vendor lock-in: pluggable CodeProvider architecture"}),e.jsx("li",{children:"Transparent validation reports with non-pass classification"})]})]}),e.jsxs("div",{ref:r=>s(r,4),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"QECTOR Product Scope"}),e.jsx("p",{className:"text-xs text-secondary mb-2",children:"This site and QECTOR Decoder v3 + Workbench constitute the high-performance decoder library and professional GUI."}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"QECTOR Decoder v3"}),": Rust/Python multi-algorithm QEC decoder library (Source-Available)"]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Free QECTOR Workbench"}),": live Windows and Linux releases with 85-tool MCP servers and 19 named decoder kinds (17 concrete configurations plus AutoDecoder and Auto Router)."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Documentation & Education"}),': Public methodology, validation guidance, and "Mastering QEC" book context (see the decoder repository for primary evidence).']})]})]})]}),e.jsxs("div",{ref:r=>s(r,5),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Project Timeline"}),e.jsx("div",{className:"space-y-4",children:[{year:"2026-06-23",event:"The public qectorlab.github.io repository was created."},{year:"2026-06-24",event:"The qector-decoder repository was created and v0.5.0 / v0.5.1 were first recorded on PyPI."},{year:"2026-06-24 to 2026-07-26",event:"The verified PyPI release train progressed from v0.5.0 through v0.6.9. Dates are listed on the Changelog page from PyPI upload metadata."},{year:"2026-08-02",event:"QECTOR Decoder v3 v0.7.0 was published on PyPI."},{year:"2026-08-06",event:`QECTOR Decoder v3 v${c||"1.0.0"} reached its first stable release, with the official reference manual (DOI 10.5281/zenodo.21941046).`},{year:"2026-08-11 to 2026-09-04",event:"QECTOR Workbench Windows v1.0.0 and v1.0.1 were followed by verified v1.0.7 releases for Windows and Linux (2026-09-04)."},{year:"2026-08-15 to 2026-08-24",event:"The Claude Plugin repository was created on 2026-08-15; plugin v1.0.6 was published on 2026-08-24."}].map(r=>e.jsxs("div",{className:"flex flex-col gap-1 sm:flex-row sm:gap-4 items-start pb-4 border-b border-gridline/50 last:border-0",children:[e.jsx("span",{className:"text-cyan-300 font-mono text-sm sm:min-w-[80px] shrink-0 pt-0.5",children:r.year}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed min-w-0",children:r.event})]},r.year))})]}),e.jsxs("div",{ref:r=>s(r,6),className:"p-6 bg-green-400/5 border border-green-400/20 rounded-2xl",children:[e.jsx("h2",{className:"text-green-400 font-semibold text-sm uppercase tracking-wider mb-3",children:"Transparency Statement"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR is an independent R&D project, not backed by a quantum hardware company, VC funding, or a university lab. No hardware-specific measurement figures are published on this site, because results depend on your hardware. The decoder reached its first stable release on 2026-08-06 (v1.0.0). QECTOR Decoder is source-available under the published license. Workbench release terms are platform-specific. We publish validation guidance and known limitations openly. Documented behavior is what ships."})]})]})})]})}export{v as default}; diff --git a/assets/About-nvnHXVMG.js b/assets/About-nvnHXVMG.js deleted file mode 100644 index feeb0868..00000000 --- a/assets/About-nvnHXVMG.js +++ /dev/null @@ -1 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as l,J as c,L as d}from"./index-DayaklK-.js";import{g as a,S as u}from"./vendor-gsap-a3sj5zmn.js";import{e as m}from"./vendor-ui-B8TlNU4J.js";a.registerPlugin(u);function f(){const t=o.useRef([]);o.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=a.context(()=>{t.current.filter(Boolean).forEach(n=>{a.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const s=(r,i)=>{r&&(t.current[i]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(l,{title:"About · QECTOR",description:"About QECTOR: Guillaume Lessard, iD01t Productions, QEC research background, ORCID, GitHub artifacts, mission and engineering philosophy."}),e.jsx(c,{data:{"@context":"https://schema.org","@graph":[{"@type":"Person",name:"Guillaume Lessard",alternateName:"El'Nox Rah",url:"https://qector.store/about",sameAs:["https://orcid.org/0009-0000-3465-3753","https://github.com/GuillaumeLessard"],affiliation:{"@type":"Organization",name:"iD01t Productions"},jobTitle:"Independent QEC Researcher & Software Engineer",knowsAbout:["Quantum Error Correction","CSS Codes","LDPC Codes","MWPM Decoding","Rust","Python"]},{"@type":"Organization",name:"iD01t Productions",url:"https://qector.store",founder:{"@type":"Person",name:"Guillaume Lessard"},description:"QEC software division of iD01t Productions, developing high-performance QEC decoder libraries and GUIs."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"iD01t Productions · Longueuil, Québec · ORCID 0009-0000-3465-3753"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"About QECTOR"}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Independent quantum error correction research, engineering, and commercialization, built by ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Guillaume Lessard"})," with full transparency, reproducible artifacts, and no speculative claims."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-outline",children:["GitHub Artifacts",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsx(d,{to:"/contact",className:"btn-cyan",children:"Contact"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-6",children:[e.jsxs("div",{ref:r=>s(r,0),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Creator"}),e.jsxs("p",{className:"text-primary text-lg mb-3",children:[e.jsx("strong",{children:"Guillaume Lessard"}),", software engineer and researcher based in Montreal / Longueuil, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary leading-relaxed mb-4",children:["Operating as the QEC software division of ",e.jsx("strong",{children:"iD01t Productions"})," (founded 2012), Guillaume focuses on quantum error correction software engineering, building high-throughput decoders and advanced validation tooling."]}),e.jsxs("div",{className:"flex flex-wrap gap-2 mb-4",children:[e.jsx("span",{className:"text-secondary text-sm",children:"Publishing aliases:"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"Guillaume Lessard"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(engineering)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"El'Nox Rah"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(research / authorship)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"DJ iD01t"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(music)"})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 px-4 py-2 bg-green-400/10 border border-green-400/20 rounded-lg text-sm text-green-400 font-mono hover:bg-green-400/20 transition-colors",children:[e.jsx(m,{size:16,className:"shrink-0","aria-hidden":"true"})," ORCID 0009-0000-3465-3753"]}),[{label:"GitHub Artifacts",href:"https://github.com/GuillaumeLessard/qector-decoder",external:!0},{label:"PyPI",href:"https://pypi.org/project/qector-decoder-v3/",external:!0},{label:"Play Store Book",href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",external:!0}].map(r=>e.jsx("a",{href:r.href,target:"_blank",rel:"noopener noreferrer",className:"px-3 py-2 bg-surface border border-gridline rounded-lg text-sm text-muted-foreground hover:text-cyan-300 hover:border-cyan-300/30 transition-colors",children:r.label},r.label))]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsxs("div",{ref:r=>s(r,1),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Research Background"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"CSS stabilizer codes: surface codes, LDPC, qLDPC"}),e.jsx("li",{children:"MWPM (Blossom), Belief-Matching, BP-OSD decoding"}),e.jsx("li",{children:"Custom CSS code topology research and GF(2) eligibility analysis"}),e.jsx("li",{children:"Bivariate bicycle qLDPC codes"}),e.jsx("li",{children:"Reproducible provenance and SHA-256 sealed artifacts on GitHub"}),e.jsx("li",{children:"Monte Carlo threshold analysis and reproducible validation workflows"})]})]}),e.jsxs("div",{ref:r=>s(r,2),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Software Stack"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Rust / PyO3: core decoder engine"}),e.jsx("li",{children:"Python 3.9 to 3.13: API, CLI, benchmarking, simulation"}),e.jsx("li",{children:"Stim: circuit-level noise simulation"}),e.jsx("li",{children:"OpenCL / CUDA: GPU-accelerated batch decoding"}),e.jsxs("li",{children:["PyPI distribution: ",e.jsx("code",{className:"text-cyan-300 text-xs",children:"qector-decoder-v3"})]}),e.jsx("li",{children:"Ed25519 offline cryptographic signature verification"}),e.jsx("li",{children:"CustomTkinter / FastAPI: QECTOR Workbench desktop interface & REST engine"})]})]}),e.jsxs("div",{ref:r=>s(r,3),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Engineering Philosophy"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Reproducibility first: public claims link to supporting artifacts where published"}),e.jsx("li",{children:"Honest documentation: Decoder is Source-Available (not free); Workbench GUI app is free"}),e.jsx("li",{children:"Simulation-validated before any public claim"}),e.jsx("li",{children:"Full provenance trail: SHA-256 bundles"}),e.jsx("li",{children:"No vendor lock-in: pluggable CodeProvider architecture"}),e.jsx("li",{children:"Transparent validation reports with non-pass classification"})]})]}),e.jsxs("div",{ref:r=>s(r,4),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"QECTOR Product Scope"}),e.jsx("p",{className:"text-xs text-secondary mb-2",children:"This site and QECTOR Decoder v3 + Workbench constitute the high-performance decoder library and professional GUI."}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"QECTOR Decoder v3"}),": Rust/Python multi-algorithm QEC decoder library (Source-Available)"]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Free QECTOR Workbench"}),": live Windows and Linux releases with 85-tool MCP servers and 19 named decoder kinds (17 concrete configurations plus AutoDecoder and Auto Router)."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Documentation & Education"}),': Public methodology, validation guidance, and "Mastering QEC" book context (see the decoder repository for primary evidence).']})]})]})]}),e.jsxs("div",{ref:r=>s(r,5),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Project Timeline"}),e.jsx("div",{className:"space-y-4",children:[{year:"2026-06-23",event:"The public qectorlab.github.io repository was created."},{year:"2026-06-24",event:"The qector-decoder repository was created and v0.5.0 / v0.5.1 were first recorded on PyPI."},{year:"2026-06-24 to 2026-07-26",event:"The verified PyPI release train progressed from v0.5.0 through v0.6.9. Dates are listed on the Changelog page from PyPI upload metadata."},{year:"2026-08-02",event:"QECTOR Decoder v3 v0.7.0 was published on PyPI."},{year:"2026-08-06",event:"QECTOR Decoder v3 v1.0.0 reached its first stable release, with the official reference manual (DOI 10.5281/zenodo.21941046)."},{year:"2026-08-11 to 2026-09-04",event:"QECTOR Workbench Windows v1.0.0 and v1.0.1 were followed by verified v1.0.7 releases for Windows and Linux (2026-09-04)."},{year:"2026-08-15 to 2026-08-24",event:"The Claude Plugin repository was created on 2026-08-15; plugin v1.0.6 was published on 2026-08-24."},{year:"2026-11-06",event:"QECTOR Decoder v3 v1.0.1 was published with 18 wheels for Python 3.9-3.14 and signed build provenance, alongside Claude Plugin v2.0.1 and the new commercial plans."}].map(r=>e.jsxs("div",{className:"flex flex-col gap-1 sm:flex-row sm:gap-4 items-start pb-4 border-b border-gridline/50 last:border-0",children:[e.jsx("span",{className:"text-cyan-300 font-mono text-sm sm:min-w-[80px] shrink-0 pt-0.5",children:r.year}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed min-w-0",children:r.event})]},r.year))})]}),e.jsxs("div",{ref:r=>s(r,6),className:"p-6 bg-green-400/5 border border-green-400/20 rounded-2xl",children:[e.jsx("h2",{className:"text-green-400 font-semibold text-sm uppercase tracking-wider mb-3",children:"Transparency Statement"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR is an independent R&D project, not backed by a quantum hardware company, VC funding, or a university lab. No hardware-specific measurement figures are published on this site, because results depend on your hardware. The decoder reached its first stable release on 2026-08-06 (v1.0.0); the current release is v1.0.1. QECTOR Decoder is source-available under the published license. Workbench release terms are platform-specific. We publish validation guidance and known limitations openly. Documented behavior is what ships."})]})]})})]})}export{f as default}; diff --git a/assets/About-oOskQ3bw.js b/assets/About-oOskQ3bw.js deleted file mode 100644 index 86fb68c8..00000000 --- a/assets/About-oOskQ3bw.js +++ /dev/null @@ -1 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as l,J as c,L as d}from"./index-c1PDYu0j.js";import{g as a,S as u}from"./vendor-gsap-a3sj5zmn.js";import{e as m}from"./vendor-ui-B8TlNU4J.js";a.registerPlugin(u);function f(){const t=o.useRef([]);o.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=a.context(()=>{t.current.filter(Boolean).forEach(n=>{a.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const s=(r,i)=>{r&&(t.current[i]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(l,{title:"About · QECTOR",description:"About QECTOR: Guillaume Lessard, iD01t Productions, QEC research background, ORCID, GitHub artifacts, mission and engineering philosophy."}),e.jsx(c,{data:{"@context":"https://schema.org","@graph":[{"@type":"Person",name:"Guillaume Lessard",alternateName:"El'Nox Rah",url:"https://qector.store/about",sameAs:["https://orcid.org/0009-0000-3465-3753","https://github.com/GuillaumeLessard"],affiliation:{"@type":"Organization",name:"iD01t Productions"},jobTitle:"Independent QEC Researcher & Software Engineer",knowsAbout:["Quantum Error Correction","CSS Codes","LDPC Codes","MWPM Decoding","Rust","Python"]},{"@type":"Organization",name:"iD01t Productions",url:"https://qector.store",founder:{"@type":"Person",name:"Guillaume Lessard"},description:"QEC software division of iD01t Productions, developing high-performance QEC decoder libraries and GUIs."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"iD01t Productions · Longueuil, Québec · ORCID 0009-0000-3465-3753"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"About QECTOR"}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Independent quantum error correction research, engineering, and commercialization, built by ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Guillaume Lessard"})," with full transparency, reproducible artifacts, and no speculative claims."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-outline",children:["GitHub Artifacts",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsx(d,{to:"/contact",className:"btn-cyan",children:"Contact"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-6",children:[e.jsxs("div",{ref:r=>s(r,0),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Creator"}),e.jsxs("p",{className:"text-primary text-lg mb-3",children:[e.jsx("strong",{children:"Guillaume Lessard"}),", software engineer and researcher based in Montreal / Longueuil, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary leading-relaxed mb-4",children:["Operating as the QEC software division of ",e.jsx("strong",{children:"iD01t Productions"})," (founded 2012), Guillaume focuses on quantum error correction software engineering, building high-throughput decoders and advanced validation tooling."]}),e.jsxs("div",{className:"flex flex-wrap gap-2 mb-4",children:[e.jsx("span",{className:"text-secondary text-sm",children:"Publishing aliases:"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"Guillaume Lessard"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(engineering)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"El'Nox Rah"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(research / authorship)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"DJ iD01t"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(music)"})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 px-4 py-2 bg-green-400/10 border border-green-400/20 rounded-lg text-sm text-green-400 font-mono hover:bg-green-400/20 transition-colors",children:[e.jsx(m,{size:16,className:"shrink-0","aria-hidden":"true"})," ORCID 0009-0000-3465-3753"]}),[{label:"GitHub Artifacts",href:"https://github.com/GuillaumeLessard/qector-decoder",external:!0},{label:"PyPI",href:"https://pypi.org/project/qector-decoder-v3/",external:!0},{label:"Play Store Book",href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",external:!0}].map(r=>e.jsx("a",{href:r.href,target:"_blank",rel:"noopener noreferrer",className:"px-3 py-2 bg-surface border border-gridline rounded-lg text-sm text-muted-foreground hover:text-cyan-300 hover:border-cyan-300/30 transition-colors",children:r.label},r.label))]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsxs("div",{ref:r=>s(r,1),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Research Background"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"CSS stabilizer codes: surface codes, LDPC, qLDPC"}),e.jsx("li",{children:"MWPM (Blossom), Belief-Matching, BP-OSD decoding"}),e.jsx("li",{children:"Custom CSS code topology research and GF(2) eligibility analysis"}),e.jsx("li",{children:"Bivariate bicycle qLDPC codes"}),e.jsx("li",{children:"Reproducible provenance and SHA-256 sealed artifacts on GitHub"}),e.jsx("li",{children:"Monte Carlo threshold analysis and reproducible validation workflows"})]})]}),e.jsxs("div",{ref:r=>s(r,2),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Software Stack"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Rust / PyO3: core decoder engine"}),e.jsx("li",{children:"Python 3.9 to 3.13: API, CLI, benchmarking, simulation"}),e.jsx("li",{children:"Stim: circuit-level noise simulation"}),e.jsx("li",{children:"OpenCL / CUDA: GPU-accelerated batch decoding"}),e.jsxs("li",{children:["PyPI distribution: ",e.jsx("code",{className:"text-cyan-300 text-xs",children:"qector-decoder-v3"})]}),e.jsx("li",{children:"Ed25519 offline cryptographic signature verification"}),e.jsx("li",{children:"CustomTkinter / FastAPI: QECTOR Workbench desktop interface & REST engine"})]})]}),e.jsxs("div",{ref:r=>s(r,3),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Engineering Philosophy"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Reproducibility first: public claims link to supporting artifacts where published"}),e.jsx("li",{children:"Honest documentation: Decoder is Source-Available (not free); Workbench GUI app is free"}),e.jsx("li",{children:"Simulation-validated before any public claim"}),e.jsx("li",{children:"Full provenance trail: SHA-256 bundles"}),e.jsx("li",{children:"No vendor lock-in: pluggable CodeProvider architecture"}),e.jsx("li",{children:"Transparent validation reports with non-pass classification"})]})]}),e.jsxs("div",{ref:r=>s(r,4),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"QECTOR Product Scope"}),e.jsx("p",{className:"text-xs text-secondary mb-2",children:"This site and QECTOR Decoder v3 + Workbench constitute the high-performance decoder library and professional GUI."}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"QECTOR Decoder v3"}),": Rust/Python multi-algorithm QEC decoder library (Source-Available)"]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Free QECTOR Workbench"}),": live Windows and Linux releases with 85-tool MCP servers and 19 named decoder kinds (17 concrete configurations plus AutoDecoder and Auto Router)."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Documentation & Education"}),': Public methodology, validation guidance, and "Mastering QEC" book context (see the decoder repository for primary evidence).']})]})]})]}),e.jsxs("div",{ref:r=>s(r,5),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Project Timeline"}),e.jsx("div",{className:"space-y-4",children:[{year:"2026-06-23",event:"The public qectorlab.github.io repository was created."},{year:"2026-06-24",event:"The qector-decoder repository was created and v0.5.0 / v0.5.1 were first recorded on PyPI."},{year:"2026-06-24 to 2026-07-26",event:"The verified PyPI release train progressed from v0.5.0 through v0.6.9. Dates are listed on the Changelog page from PyPI upload metadata."},{year:"2026-08-02",event:"QECTOR Decoder v3 v0.7.0 was published on PyPI."},{year:"2026-08-06",event:"QECTOR Decoder v3 v1.0.0 reached its first stable release, with the official reference manual (DOI 10.5281/zenodo.21941046)."},{year:"2026-08-11 to 2026-09-04",event:"QECTOR Workbench Windows v1.0.0 and v1.0.1 were followed by verified v1.0.7 releases for Windows and Linux (2026-09-04)."},{year:"2026-08-15 to 2026-08-24",event:"The Claude Plugin repository was created on 2026-08-15; plugin v1.0.6 was published on 2026-08-24."},{year:"2026-11-06",event:"QECTOR Decoder v3 v1.0.1 was published with 18 wheels for Python 3.9-3.14 and signed build provenance, alongside Claude Plugin v2.0.1 and the new commercial plans."}].map(r=>e.jsxs("div",{className:"flex flex-col gap-1 sm:flex-row sm:gap-4 items-start pb-4 border-b border-gridline/50 last:border-0",children:[e.jsx("span",{className:"text-cyan-300 font-mono text-sm sm:min-w-[80px] shrink-0 pt-0.5",children:r.year}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed min-w-0",children:r.event})]},r.year))})]}),e.jsxs("div",{ref:r=>s(r,6),className:"p-6 bg-green-400/5 border border-green-400/20 rounded-2xl",children:[e.jsx("h2",{className:"text-green-400 font-semibold text-sm uppercase tracking-wider mb-3",children:"Transparency Statement"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR is an independent R&D project, not backed by a quantum hardware company, VC funding, or a university lab. No hardware-specific measurement figures are published on this site, because results depend on your hardware. The decoder reached its first stable release on 2026-08-06 (v1.0.0); the current release is v1.0.1. QECTOR Decoder is source-available under the published license. Workbench release terms are platform-specific. We publish validation guidance and known limitations openly. Documented behavior is what ships."})]})]})})]})}export{f as default}; diff --git a/assets/About-xwac7kSw.js b/assets/About-xwac7kSw.js deleted file mode 100644 index e2e03aee..00000000 --- a/assets/About-xwac7kSw.js +++ /dev/null @@ -1 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as l,J as c}from"./index-BUYYSLdX.js";import{g as a,S as d}from"./vendor-gsap-a3sj5zmn.js";import{L as m}from"./vendor-PiU4YGcH.js";import{e as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";a.registerPlugin(d);function y(){const t=o.useRef([]);o.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=a.context(()=>{t.current.filter(Boolean).forEach(n=>{a.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const s=(r,i)=>{r&&(t.current[i]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(l,{title:"About · QECTOR",description:"About QECTOR: Guillaume Lessard, iD01t Productions, QEC research background, ORCID, GitHub artifacts, mission and engineering philosophy."}),e.jsx(c,{data:{"@context":"https://schema.org","@graph":[{"@type":"Person",name:"Guillaume Lessard",alternateName:"El'Nox Rah",url:"https://qector.store/about",sameAs:["https://orcid.org/0009-0000-3465-3753","https://github.com/GuillaumeLessard"],affiliation:{"@type":"Organization",name:"iD01t Productions"},jobTitle:"Independent QEC Researcher & Software Engineer",knowsAbout:["Quantum Error Correction","CSS Codes","LDPC Codes","MWPM Decoding","Rust","Python"]},{"@type":"Organization",name:"iD01t Productions",url:"https://qector.store",founder:{"@type":"Person",name:"Guillaume Lessard"},description:"QEC software division of iD01t Productions, developing high-performance QEC decoder libraries and GUIs."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"iD01t Productions · Longueuil, Québec · ORCID 0009-0000-3465-3753"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"About QECTOR"}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Independent quantum error correction research, engineering, and commercialization, built by ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Guillaume Lessard"})," with full transparency, reproducible artifacts, and no speculative claims."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-outline",children:["GitHub Artifacts",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsx(m,{to:"/contact",className:"btn-cyan",children:"Contact"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-6",children:[e.jsxs("div",{ref:r=>s(r,0),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Creator"}),e.jsxs("p",{className:"text-primary text-lg mb-3",children:[e.jsx("strong",{children:"Guillaume Lessard"}),", software engineer and researcher based in Montreal / Longueuil, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary leading-relaxed mb-4",children:["Operating as the QEC software division of ",e.jsx("strong",{children:"iD01t Productions"})," (founded 2023), Guillaume focuses on quantum error correction software engineering, building high-throughput decoders and advanced validation tooling."]}),e.jsxs("div",{className:"flex flex-wrap gap-2 mb-4",children:[e.jsx("span",{className:"text-secondary text-sm",children:"Publishing aliases:"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"Guillaume Lessard"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(engineering)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"El'Nox Rah"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(research / authorship)"}),e.jsx("span",{className:"px-2 py-1 bg-surface rounded text-xs text-muted-foreground font-mono",children:"DJ iD01t"}),e.jsx("span",{className:"text-muted-foreground text-xs self-center",children:"(music)"})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 px-4 py-2 bg-green-400/10 border border-green-400/20 rounded-lg text-sm text-green-400 font-mono hover:bg-green-400/20 transition-colors",children:[e.jsx(u,{size:16,className:"shrink-0","aria-hidden":"true"})," ORCID 0009-0000-3465-3753"]}),[{label:"GitHub Artifacts",href:"https://github.com/GuillaumeLessard/qector-decoder",external:!0},{label:"PyPI",href:"https://pypi.org/project/qector-decoder-v3/",external:!0},{label:"Play Store Book",href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",external:!0}].map(r=>e.jsx("a",{href:r.href,target:"_blank",rel:"noopener noreferrer",className:"px-3 py-2 bg-surface border border-gridline rounded-lg text-sm text-muted-foreground hover:text-cyan-300 hover:border-cyan-300/30 transition-colors",children:r.label},r.label))]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsxs("div",{ref:r=>s(r,1),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Research Background"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"CSS stabilizer codes: surface codes, LDPC, qLDPC"}),e.jsx("li",{children:"MWPM (Blossom), Belief-Matching, BP-OSD decoding"}),e.jsx("li",{children:"Custom CSS code topology research and GF(2) eligibility analysis"}),e.jsx("li",{children:"Bivariate bicycle qLDPC codes"}),e.jsx("li",{children:"Reproducible provenance and SHA-256 sealed artifacts on GitHub"}),e.jsx("li",{children:"Monte Carlo threshold analysis and reproducible validation workflows"})]})]}),e.jsxs("div",{ref:r=>s(r,2),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Software Stack"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Rust / PyO3: core decoder engine"}),e.jsx("li",{children:"Python 3.9 to 3.13: API, CLI, benchmarking, simulation"}),e.jsx("li",{children:"Stim: circuit-level noise simulation"}),e.jsx("li",{children:"OpenCL / CUDA: GPU-accelerated batch decoding"}),e.jsxs("li",{children:["PyPI distribution: ",e.jsx("code",{className:"text-cyan-300 text-xs",children:"qector-decoder-v3"})]}),e.jsx("li",{children:"Ed25519 offline cryptographic signature verification"}),e.jsx("li",{children:"CustomTkinter / FastAPI: QECTOR Workbench desktop interface & REST engine"})]})]}),e.jsxs("div",{ref:r=>s(r,3),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Engineering Philosophy"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Reproducibility first: public claims link to supporting artifacts where published"}),e.jsx("li",{children:"Honest documentation: Decoder is Source-Available (not free); Workbench GUI app is free"}),e.jsx("li",{children:"Simulation-validated before any public claim"}),e.jsx("li",{children:"Full provenance trail: SHA-256 bundles"}),e.jsx("li",{children:"No vendor lock-in: pluggable CodeProvider architecture"}),e.jsx("li",{children:"Transparent validation reports with non-pass classification"})]})]}),e.jsxs("div",{ref:r=>s(r,4),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"QECTOR Product Scope"}),e.jsx("p",{className:"text-xs text-secondary mb-2",children:"This site and QECTOR Decoder v3 + Workbench constitute the high-performance decoder library and professional GUI."}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"QECTOR Decoder v3"}),": Rust/Python multi-algorithm QEC decoder library (Source-Available)"]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Free QECTOR Workbench"}),": live Windows and Linux releases with 85-tool MCP servers and 19 named decoder kinds (17 concrete configurations plus AutoDecoder and Auto Router)."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Documentation & Education"}),': Public methodology, validation guidance, and "Mastering QEC" book context (see the decoder repository for primary evidence).']})]})]})]}),e.jsxs("div",{ref:r=>s(r,5),className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Project Timeline"}),e.jsx("div",{className:"space-y-4",children:[{year:"2026-06-23",event:"The public qectorlab.github.io repository was created."},{year:"2026-06-24",event:"The qector-decoder repository was created and v0.5.0 / v0.5.1 were first recorded on PyPI."},{year:"2026-06-24 to 2026-07-26",event:"The verified PyPI release train progressed from v0.5.0 through v0.6.9. Dates are listed on the Changelog page from PyPI upload metadata."},{year:"2026-08-02",event:"QECTOR Decoder v3 v0.7.0 was published on PyPI."},{year:"2026-08-06",event:"QECTOR Decoder v3 v1.0.0 reached its first stable release, with the official reference manual (DOI 10.5281/zenodo.21941046)."},{year:"2026-08-11 to 2026-09-04",event:"QECTOR Workbench Windows v1.0.0 and v1.0.1 were followed by verified v1.0.7 releases for Windows and Linux (2026-09-04)."},{year:"2026-08-15 to 2026-08-24",event:"The Claude Plugin repository was created on 2026-08-15; plugin v1.0.6 was published on 2026-08-24."},{year:"2026-11-06",event:"QECTOR Decoder v3 v1.0.1 was published with 18 wheels for Python 3.9-3.14 and signed build provenance, alongside Claude Plugin v2.0.1 and the new commercial plans."}].map(r=>e.jsxs("div",{className:"flex flex-col gap-1 sm:flex-row sm:gap-4 items-start pb-4 border-b border-gridline/50 last:border-0",children:[e.jsx("span",{className:"text-cyan-300 font-mono text-sm sm:min-w-[80px] shrink-0 pt-0.5",children:r.year}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed min-w-0",children:r.event})]},r.year))})]}),e.jsxs("div",{ref:r=>s(r,6),className:"p-6 bg-green-400/5 border border-green-400/20 rounded-2xl",children:[e.jsx("h2",{className:"text-green-400 font-semibold text-sm uppercase tracking-wider mb-3",children:"Transparency Statement"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR is an independent R&D project, not backed by a quantum hardware company, VC funding, or a university lab. No hardware-specific measurement figures are published on this site, because results depend on your hardware. The decoder reached its first stable release on 2026-08-06 (v1.0.0); the current release is v1.0.1. QECTOR Decoder is source-available under the published license. Workbench release terms are platform-specific. We publish validation guidance and known limitations openly. Documented behavior is what ships."})]})]})})]})}export{y as default}; diff --git a/assets/Blog-B5AVcxHA.js b/assets/Blog-B5AVcxHA.js deleted file mode 100644 index 24c89d4b..00000000 --- a/assets/Blog-B5AVcxHA.js +++ /dev/null @@ -1 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,L as d}from"./index-CCmwjNGU.js";import{b as a}from"./blogData-OjR2ZtNr.js";import{B as x,k as m,l as p}from"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";function j(){const[s,l]=o.useState("All"),i=["All",...Array.from(new Set(a.map(t=>t.category)))],r=s==="All"?a:a.filter(t=>t.category===s);return e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(c,{title:"Blog · QECTOR",description:"QECTOR field notes on quantum error correction, decoder algorithms, qLDPC, noise models, evidence, systems, and ecosystem integration."}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 left-1/2 -translate-x-1/2 w-[1000px] h-[500px] bg-cyan-400/10 blur-[120px] rounded-full pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-6 relative z-10",children:[e.jsxs("div",{className:"text-center mb-20 animate-in fade-in slide-in-from-bottom-8 duration-700",children:[e.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight mb-6 bg-gradient-to-br from-white to-slate-400 bg-clip-text text-transparent",children:["Engineering ",e.jsx("br",{}),e.jsx("span",{className:"text-cyan-300",children:"Fault Tolerance"})]}),e.jsx("p",{className:"text-xl text-slate-400 max-w-2xl mx-auto",children:"Field notes from parity checks to production interfaces: mathematics, decoder design, evidence, and systems practice for quantum error correction."})]}),e.jsx("div",{className:"mb-12 flex flex-wrap items-center justify-center gap-3",role:"group","aria-label":"Filter articles by topic",children:i.map(t=>e.jsx("button",{type:"button","aria-pressed":s===t,onClick:()=>l(t),className:`rounded-full border px-4 py-2 text-sm font-medium transition-colors duration-300 ${s===t?"border-cyan-300 bg-cyan-300/10 text-cyan-200":"border-slate-800 bg-slate-900/50 text-slate-400 hover:border-cyan-400/40 hover:text-slate-200"}`,children:t},t))}),e.jsxs("p",{className:"mb-6 text-center text-sm text-slate-400",children:["Showing ",r.length," of ",a.length," field notes. Claims are scoped to the ",e.jsx("a",{className:"text-cyan-300 underline underline-offset-2 hover:text-cyan-200",href:"https://doi.org/10.5281/zenodo.21941046",children:"v1.0.0 reference manual"}),"."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",children:r.map((t,n)=>e.jsxs(d,{to:`/blog/${t.id}`,className:"group relative flex flex-col bg-slate-900/50 backdrop-blur-xl border border-slate-800 rounded-3xl p-8 hover:bg-slate-800/50 hover:border-cyan-400/30 transition-all duration-500 animate-in fade-in slide-in-from-bottom-8",style:{animationDelay:`${n*100}ms`,animationFillMode:"both"},children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-cyan-400/5 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-500 rounded-3xl"}),e.jsxs("div",{className:"relative z-10 flex flex-col h-full",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 mb-6",children:[e.jsxs("div",{className:"flex items-center space-x-2 text-cyan-300",children:[e.jsx(x,{size:18}),e.jsx("span",{className:"text-sm font-semibold tracking-wider uppercase",children:"Article"})]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-2.5 py-1 text-[0.65rem] font-semibold uppercase tracking-wider text-slate-400",children:t.category})]}),e.jsx("h2",{className:"text-2xl font-bold mb-4 text-white group-hover:text-cyan-200 transition-colors duration-300",children:t.title}),e.jsx("p",{className:"text-slate-400 mb-8 flex-grow leading-relaxed",children:t.description}),e.jsxs("div",{className:"flex items-center justify-between mt-auto pt-6 border-t border-slate-800",children:[e.jsxs("div",{className:"flex items-center text-slate-400 text-sm",children:[e.jsx(m,{size:14,className:"mr-2"}),t.date]}),e.jsx(p,{size:18,className:"text-cyan-400 transform group-hover:translate-x-1 transition-transform duration-300"})]})]})]},t.id))})]})]})]})}export{j as default}; diff --git a/assets/Blog-B7IPXEkA.js b/assets/Blog-B7IPXEkA.js deleted file mode 100644 index 898ec3be..00000000 --- a/assets/Blog-B7IPXEkA.js +++ /dev/null @@ -1 +0,0 @@ -import{r as n,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c}from"./index-BUYYSLdX.js";import{b as a}from"./blogData-OjR2ZtNr.js";import{L as d}from"./vendor-PiU4YGcH.js";import{B as m,k as x,l as p}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function v(){const[s,l]=n.useState("All"),i=["All",...Array.from(new Set(a.map(t=>t.category)))],r=s==="All"?a:a.filter(t=>t.category===s);return e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(c,{title:"Blog · QECTOR",description:"QECTOR field notes on quantum error correction, decoder algorithms, qLDPC, noise models, evidence, systems, and ecosystem integration."}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 left-1/2 -translate-x-1/2 w-[1000px] h-[500px] bg-cyan-400/10 blur-[120px] rounded-full pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-6 relative z-10",children:[e.jsxs("div",{className:"text-center mb-20 animate-in fade-in slide-in-from-bottom-8 duration-700",children:[e.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight mb-6 bg-gradient-to-br from-white to-slate-400 bg-clip-text text-transparent",children:["Engineering ",e.jsx("br",{}),e.jsx("span",{className:"text-cyan-300",children:"Fault Tolerance"})]}),e.jsx("p",{className:"text-xl text-slate-400 max-w-2xl mx-auto",children:"Field notes from parity checks to production interfaces: mathematics, decoder design, evidence, and systems practice for quantum error correction."})]}),e.jsx("div",{className:"mb-12 flex flex-wrap items-center justify-center gap-3",role:"group","aria-label":"Filter articles by topic",children:i.map(t=>e.jsx("button",{type:"button","aria-pressed":s===t,onClick:()=>l(t),className:`rounded-full border px-4 py-2 text-sm font-medium transition-colors duration-300 ${s===t?"border-cyan-300 bg-cyan-300/10 text-cyan-200":"border-slate-800 bg-slate-900/50 text-slate-400 hover:border-cyan-400/40 hover:text-slate-200"}`,children:t},t))}),e.jsxs("p",{className:"mb-6 text-center text-sm text-slate-400",children:["Showing ",r.length," of ",a.length," field notes. Claims are scoped to the ",e.jsx("a",{className:"text-cyan-300 hover:text-cyan-200",href:"https://doi.org/10.5281/zenodo.21941046",children:"v1.0.0 reference manual"}),"."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",children:r.map((t,o)=>e.jsxs(d,{to:`/blog/${t.id}`,className:"group relative flex flex-col bg-slate-900/50 backdrop-blur-xl border border-slate-800 rounded-3xl p-8 hover:bg-slate-800/50 hover:border-cyan-400/30 transition-all duration-500 animate-in fade-in slide-in-from-bottom-8",style:{animationDelay:`${o*100}ms`,animationFillMode:"both"},children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-cyan-400/5 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-500 rounded-3xl"}),e.jsxs("div",{className:"relative z-10 flex flex-col h-full",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 mb-6",children:[e.jsxs("div",{className:"flex items-center space-x-2 text-cyan-300",children:[e.jsx(m,{size:18}),e.jsx("span",{className:"text-sm font-semibold tracking-wider uppercase",children:"Article"})]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-2.5 py-1 text-[0.65rem] font-semibold uppercase tracking-wider text-slate-400",children:t.category})]}),e.jsx("h2",{className:"text-2xl font-bold mb-4 text-white group-hover:text-cyan-200 transition-colors duration-300",children:t.title}),e.jsx("p",{className:"text-slate-400 mb-8 flex-grow leading-relaxed",children:t.description}),e.jsxs("div",{className:"flex items-center justify-between mt-auto pt-6 border-t border-slate-800",children:[e.jsxs("div",{className:"flex items-center text-slate-400 text-sm",children:[e.jsx(x,{size:14,className:"mr-2"}),t.date]}),e.jsx(p,{size:18,className:"text-cyan-400 transform group-hover:translate-x-1 transition-transform duration-300"})]})]})]},t.id))})]})]})]})}export{v as default}; diff --git a/assets/Blog-B8QgtaGj.js b/assets/Blog-B8QgtaGj.js deleted file mode 100644 index 87bf1d93..00000000 --- a/assets/Blog-B8QgtaGj.js +++ /dev/null @@ -1 +0,0 @@ -import{r as n,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c}from"./index-abfjMTlQ.js";import{b as a}from"./blogData-OjR2ZtNr.js";import{L as d}from"./vendor-PiU4YGcH.js";import{B as m,k as x,l as p}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function v(){const[s,l]=n.useState("All"),i=["All",...Array.from(new Set(a.map(t=>t.category)))],r=s==="All"?a:a.filter(t=>t.category===s);return e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(c,{title:"Blog · QECTOR",description:"QECTOR field notes on quantum error correction, decoder algorithms, qLDPC, noise models, evidence, systems, and ecosystem integration."}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 left-1/2 -translate-x-1/2 w-[1000px] h-[500px] bg-cyan-400/10 blur-[120px] rounded-full pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-6 relative z-10",children:[e.jsxs("div",{className:"text-center mb-20 animate-in fade-in slide-in-from-bottom-8 duration-700",children:[e.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight mb-6 bg-gradient-to-br from-white to-slate-400 bg-clip-text text-transparent",children:["Engineering ",e.jsx("br",{}),e.jsx("span",{className:"text-cyan-300",children:"Fault Tolerance"})]}),e.jsx("p",{className:"text-xl text-slate-400 max-w-2xl mx-auto",children:"Field notes from parity checks to production interfaces: mathematics, decoder design, evidence, and systems practice for quantum error correction."})]}),e.jsx("div",{className:"mb-12 flex flex-wrap items-center justify-center gap-3",role:"group","aria-label":"Filter articles by topic",children:i.map(t=>e.jsx("button",{type:"button","aria-pressed":s===t,onClick:()=>l(t),className:`rounded-full border px-4 py-2 text-sm font-medium transition-colors duration-300 ${s===t?"border-cyan-300 bg-cyan-300/10 text-cyan-200":"border-slate-800 bg-slate-900/50 text-slate-400 hover:border-cyan-400/40 hover:text-slate-200"}`,children:t},t))}),e.jsxs("p",{className:"mb-6 text-center text-sm text-slate-400",children:["Showing ",r.length," of ",a.length," field notes. Claims are scoped to the ",e.jsx("a",{className:"text-cyan-300 hover:text-cyan-200",href:"https://doi.org/10.5281/zenodo.21941046",children:"v1.0.0 reference manual"}),"."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",children:r.map((t,o)=>e.jsxs(d,{to:`/blog/${t.id}`,className:"group relative flex flex-col bg-slate-900/50 backdrop-blur-xl border border-slate-800 rounded-3xl p-8 hover:bg-slate-800/50 hover:border-cyan-400/30 transition-all duration-500 animate-in fade-in slide-in-from-bottom-8",style:{animationDelay:`${o*100}ms`,animationFillMode:"both"},children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-cyan-400/5 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-500 rounded-3xl"}),e.jsxs("div",{className:"relative z-10 flex flex-col h-full",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 mb-6",children:[e.jsxs("div",{className:"flex items-center space-x-2 text-cyan-300",children:[e.jsx(m,{size:18}),e.jsx("span",{className:"text-sm font-semibold tracking-wider uppercase",children:"Article"})]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-2.5 py-1 text-[0.65rem] font-semibold uppercase tracking-wider text-slate-400",children:t.category})]}),e.jsx("h2",{className:"text-2xl font-bold mb-4 text-white group-hover:text-cyan-200 transition-colors duration-300",children:t.title}),e.jsx("p",{className:"text-slate-400 mb-8 flex-grow leading-relaxed",children:t.description}),e.jsxs("div",{className:"flex items-center justify-between mt-auto pt-6 border-t border-slate-800",children:[e.jsxs("div",{className:"flex items-center text-slate-400 text-sm",children:[e.jsx(x,{size:14,className:"mr-2"}),t.date]}),e.jsx(p,{size:18,className:"text-cyan-400 transform group-hover:translate-x-1 transition-transform duration-300"})]})]})]},t.id))})]})]})]})}export{v as default}; diff --git a/assets/Blog-BB_6WkaC.js b/assets/Blog-BB_6WkaC.js deleted file mode 100644 index ebb1358b..00000000 --- a/assets/Blog-BB_6WkaC.js +++ /dev/null @@ -1 +0,0 @@ -import{r as n,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c}from"./index-DlmjLVYe.js";import{b as a}from"./blogData-OjR2ZtNr.js";import{L as d}from"./vendor-PiU4YGcH.js";import{B as m,k as x,l as p}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function v(){const[s,l]=n.useState("All"),i=["All",...Array.from(new Set(a.map(t=>t.category)))],r=s==="All"?a:a.filter(t=>t.category===s);return e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(c,{title:"Blog · QECTOR",description:"QECTOR field notes on quantum error correction, decoder algorithms, qLDPC, noise models, evidence, systems, and ecosystem integration."}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 left-1/2 -translate-x-1/2 w-[1000px] h-[500px] bg-cyan-400/10 blur-[120px] rounded-full pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-6 relative z-10",children:[e.jsxs("div",{className:"text-center mb-20 animate-in fade-in slide-in-from-bottom-8 duration-700",children:[e.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight mb-6 bg-gradient-to-br from-white to-slate-400 bg-clip-text text-transparent",children:["Engineering ",e.jsx("br",{}),e.jsx("span",{className:"text-cyan-300",children:"Fault Tolerance"})]}),e.jsx("p",{className:"text-xl text-slate-400 max-w-2xl mx-auto",children:"Field notes from parity checks to production interfaces: mathematics, decoder design, evidence, and systems practice for quantum error correction."})]}),e.jsx("div",{className:"mb-12 flex flex-wrap items-center justify-center gap-3",role:"group","aria-label":"Filter articles by topic",children:i.map(t=>e.jsx("button",{type:"button","aria-pressed":s===t,onClick:()=>l(t),className:`rounded-full border px-4 py-2 text-sm font-medium transition-colors duration-300 ${s===t?"border-cyan-300 bg-cyan-300/10 text-cyan-200":"border-slate-800 bg-slate-900/50 text-slate-400 hover:border-cyan-400/40 hover:text-slate-200"}`,children:t},t))}),e.jsxs("p",{className:"mb-6 text-center text-sm text-slate-400",children:["Showing ",r.length," of ",a.length," field notes. Claims are scoped to the ",e.jsx("a",{className:"text-cyan-300 hover:text-cyan-200",href:"https://doi.org/10.5281/zenodo.21941046",children:"v1.0.0 reference manual"}),"."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",children:r.map((t,o)=>e.jsxs(d,{to:`/blog/${t.id}`,className:"group relative flex flex-col bg-slate-900/50 backdrop-blur-xl border border-slate-800 rounded-3xl p-8 hover:bg-slate-800/50 hover:border-cyan-400/30 transition-all duration-500 animate-in fade-in slide-in-from-bottom-8",style:{animationDelay:`${o*100}ms`,animationFillMode:"both"},children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-cyan-400/5 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-500 rounded-3xl"}),e.jsxs("div",{className:"relative z-10 flex flex-col h-full",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 mb-6",children:[e.jsxs("div",{className:"flex items-center space-x-2 text-cyan-300",children:[e.jsx(m,{size:18}),e.jsx("span",{className:"text-sm font-semibold tracking-wider uppercase",children:"Article"})]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-2.5 py-1 text-[0.65rem] font-semibold uppercase tracking-wider text-slate-400",children:t.category})]}),e.jsx("h2",{className:"text-2xl font-bold mb-4 text-white group-hover:text-cyan-200 transition-colors duration-300",children:t.title}),e.jsx("p",{className:"text-slate-400 mb-8 flex-grow leading-relaxed",children:t.description}),e.jsxs("div",{className:"flex items-center justify-between mt-auto pt-6 border-t border-slate-800",children:[e.jsxs("div",{className:"flex items-center text-slate-400 text-sm",children:[e.jsx(x,{size:14,className:"mr-2"}),t.date]}),e.jsx(p,{size:18,className:"text-cyan-400 transform group-hover:translate-x-1 transition-transform duration-300"})]})]})]},t.id))})]})]})]})}export{v as default}; diff --git a/assets/Blog-BFZmecCN.js b/assets/Blog-BFZmecCN.js deleted file mode 100644 index c64f7080..00000000 --- a/assets/Blog-BFZmecCN.js +++ /dev/null @@ -1 +0,0 @@ -import{r as n,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c}from"./index-Bh9DBCb3.js";import{b as a}from"./blogData-OjR2ZtNr.js";import{L as d}from"./vendor-PiU4YGcH.js";import{B as m,k as x,l as p}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function v(){const[s,l]=n.useState("All"),i=["All",...Array.from(new Set(a.map(t=>t.category)))],r=s==="All"?a:a.filter(t=>t.category===s);return e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(c,{title:"Blog · QECTOR",description:"QECTOR field notes on quantum error correction, decoder algorithms, qLDPC, noise models, evidence, systems, and ecosystem integration."}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 left-1/2 -translate-x-1/2 w-[1000px] h-[500px] bg-cyan-400/10 blur-[120px] rounded-full pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-6 relative z-10",children:[e.jsxs("div",{className:"text-center mb-20 animate-in fade-in slide-in-from-bottom-8 duration-700",children:[e.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight mb-6 bg-gradient-to-br from-white to-slate-400 bg-clip-text text-transparent",children:["Engineering ",e.jsx("br",{}),e.jsx("span",{className:"text-cyan-300",children:"Fault Tolerance"})]}),e.jsx("p",{className:"text-xl text-slate-400 max-w-2xl mx-auto",children:"Field notes from parity checks to production interfaces: mathematics, decoder design, evidence, and systems practice for quantum error correction."})]}),e.jsx("div",{className:"mb-12 flex flex-wrap items-center justify-center gap-3",role:"group","aria-label":"Filter articles by topic",children:i.map(t=>e.jsx("button",{type:"button","aria-pressed":s===t,onClick:()=>l(t),className:`rounded-full border px-4 py-2 text-sm font-medium transition-colors duration-300 ${s===t?"border-cyan-300 bg-cyan-300/10 text-cyan-200":"border-slate-800 bg-slate-900/50 text-slate-400 hover:border-cyan-400/40 hover:text-slate-200"}`,children:t},t))}),e.jsxs("p",{className:"mb-6 text-center text-sm text-slate-400",children:["Showing ",r.length," of ",a.length," field notes. Claims are scoped to the ",e.jsx("a",{className:"text-cyan-300 hover:text-cyan-200",href:"https://doi.org/10.5281/zenodo.21941046",children:"v1.0.0 reference manual"}),"."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",children:r.map((t,o)=>e.jsxs(d,{to:`/blog/${t.id}`,className:"group relative flex flex-col bg-slate-900/50 backdrop-blur-xl border border-slate-800 rounded-3xl p-8 hover:bg-slate-800/50 hover:border-cyan-400/30 transition-all duration-500 animate-in fade-in slide-in-from-bottom-8",style:{animationDelay:`${o*100}ms`,animationFillMode:"both"},children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-cyan-400/5 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-500 rounded-3xl"}),e.jsxs("div",{className:"relative z-10 flex flex-col h-full",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 mb-6",children:[e.jsxs("div",{className:"flex items-center space-x-2 text-cyan-300",children:[e.jsx(m,{size:18}),e.jsx("span",{className:"text-sm font-semibold tracking-wider uppercase",children:"Article"})]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-2.5 py-1 text-[0.65rem] font-semibold uppercase tracking-wider text-slate-400",children:t.category})]}),e.jsx("h2",{className:"text-2xl font-bold mb-4 text-white group-hover:text-cyan-200 transition-colors duration-300",children:t.title}),e.jsx("p",{className:"text-slate-400 mb-8 flex-grow leading-relaxed",children:t.description}),e.jsxs("div",{className:"flex items-center justify-between mt-auto pt-6 border-t border-slate-800",children:[e.jsxs("div",{className:"flex items-center text-slate-400 text-sm",children:[e.jsx(x,{size:14,className:"mr-2"}),t.date]}),e.jsx(p,{size:18,className:"text-cyan-400 transform group-hover:translate-x-1 transition-transform duration-300"})]})]})]},t.id))})]})]})]})}export{v as default}; diff --git a/assets/Blog-BIVCFw61.js b/assets/Blog-BIVCFw61.js deleted file mode 100644 index f7aca9b1..00000000 --- a/assets/Blog-BIVCFw61.js +++ /dev/null @@ -1 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,L as d}from"./index-c1PDYu0j.js";import{b as a}from"./blogData-OjR2ZtNr.js";import{B as x,k as m,l as p}from"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";function j(){const[s,l]=o.useState("All"),i=["All",...Array.from(new Set(a.map(t=>t.category)))],r=s==="All"?a:a.filter(t=>t.category===s);return e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(c,{title:"Blog · QECTOR",description:"QECTOR field notes on quantum error correction, decoder algorithms, qLDPC, noise models, evidence, systems, and ecosystem integration."}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 left-1/2 -translate-x-1/2 w-[1000px] h-[500px] bg-cyan-400/10 blur-[120px] rounded-full pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-6 relative z-10",children:[e.jsxs("div",{className:"text-center mb-20 animate-in fade-in slide-in-from-bottom-8 duration-700",children:[e.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight mb-6 bg-gradient-to-br from-white to-slate-400 bg-clip-text text-transparent",children:["Engineering ",e.jsx("br",{}),e.jsx("span",{className:"text-cyan-300",children:"Fault Tolerance"})]}),e.jsx("p",{className:"text-xl text-slate-400 max-w-2xl mx-auto",children:"Field notes from parity checks to production interfaces: mathematics, decoder design, evidence, and systems practice for quantum error correction."})]}),e.jsx("div",{className:"mb-12 flex flex-wrap items-center justify-center gap-3",role:"group","aria-label":"Filter articles by topic",children:i.map(t=>e.jsx("button",{type:"button","aria-pressed":s===t,onClick:()=>l(t),className:`rounded-full border px-4 py-2 text-sm font-medium transition-colors duration-300 ${s===t?"border-cyan-300 bg-cyan-300/10 text-cyan-200":"border-slate-800 bg-slate-900/50 text-slate-400 hover:border-cyan-400/40 hover:text-slate-200"}`,children:t},t))}),e.jsxs("p",{className:"mb-6 text-center text-sm text-slate-400",children:["Showing ",r.length," of ",a.length," field notes. Claims are scoped to the ",e.jsx("a",{className:"text-cyan-300 underline underline-offset-2 hover:text-cyan-200",href:"https://doi.org/10.5281/zenodo.21941046",children:"v1.0.0 reference manual"}),"."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",children:r.map((t,n)=>e.jsxs(d,{to:`/blog/${t.id}`,className:"group relative flex flex-col bg-slate-900/50 backdrop-blur-xl border border-slate-800 rounded-3xl p-8 hover:bg-slate-800/50 hover:border-cyan-400/30 transition-all duration-500 animate-in fade-in slide-in-from-bottom-8",style:{animationDelay:`${n*100}ms`,animationFillMode:"both"},children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-cyan-400/5 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-500 rounded-3xl"}),e.jsxs("div",{className:"relative z-10 flex flex-col h-full",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 mb-6",children:[e.jsxs("div",{className:"flex items-center space-x-2 text-cyan-300",children:[e.jsx(x,{size:18}),e.jsx("span",{className:"text-sm font-semibold tracking-wider uppercase",children:"Article"})]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-2.5 py-1 text-[0.65rem] font-semibold uppercase tracking-wider text-slate-400",children:t.category})]}),e.jsx("h2",{className:"text-2xl font-bold mb-4 text-white group-hover:text-cyan-200 transition-colors duration-300",children:t.title}),e.jsx("p",{className:"text-slate-400 mb-8 flex-grow leading-relaxed",children:t.description}),e.jsxs("div",{className:"flex items-center justify-between mt-auto pt-6 border-t border-slate-800",children:[e.jsxs("div",{className:"flex items-center text-slate-400 text-sm",children:[e.jsx(m,{size:14,className:"mr-2"}),t.date]}),e.jsx(p,{size:18,className:"text-cyan-400 transform group-hover:translate-x-1 transition-transform duration-300"})]})]})]},t.id))})]})]})]})}export{j as default}; diff --git a/assets/Blog-BSuGBgCE.js b/assets/Blog-BSuGBgCE.js deleted file mode 100644 index 4dd6d41e..00000000 --- a/assets/Blog-BSuGBgCE.js +++ /dev/null @@ -1 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,L as d}from"./index-DayaklK-.js";import{b as a}from"./blogData-OjR2ZtNr.js";import{B as x,k as m,l as p}from"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";function j(){const[s,l]=o.useState("All"),i=["All",...Array.from(new Set(a.map(t=>t.category)))],r=s==="All"?a:a.filter(t=>t.category===s);return e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(c,{title:"Blog · QECTOR",description:"QECTOR field notes on quantum error correction, decoder algorithms, qLDPC, noise models, evidence, systems, and ecosystem integration."}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 left-1/2 -translate-x-1/2 w-[1000px] h-[500px] bg-cyan-400/10 blur-[120px] rounded-full pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-6 relative z-10",children:[e.jsxs("div",{className:"text-center mb-20 animate-in fade-in slide-in-from-bottom-8 duration-700",children:[e.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight mb-6 bg-gradient-to-br from-white to-slate-400 bg-clip-text text-transparent",children:["Engineering ",e.jsx("br",{}),e.jsx("span",{className:"text-cyan-300",children:"Fault Tolerance"})]}),e.jsx("p",{className:"text-xl text-slate-400 max-w-2xl mx-auto",children:"Field notes from parity checks to production interfaces: mathematics, decoder design, evidence, and systems practice for quantum error correction."})]}),e.jsx("div",{className:"mb-12 flex flex-wrap items-center justify-center gap-3",role:"group","aria-label":"Filter articles by topic",children:i.map(t=>e.jsx("button",{type:"button","aria-pressed":s===t,onClick:()=>l(t),className:`rounded-full border px-4 py-2 text-sm font-medium transition-colors duration-300 ${s===t?"border-cyan-300 bg-cyan-300/10 text-cyan-200":"border-slate-800 bg-slate-900/50 text-slate-400 hover:border-cyan-400/40 hover:text-slate-200"}`,children:t},t))}),e.jsxs("p",{className:"mb-6 text-center text-sm text-slate-400",children:["Showing ",r.length," of ",a.length," field notes. Claims are scoped to the ",e.jsx("a",{className:"text-cyan-300 underline underline-offset-2 hover:text-cyan-200",href:"https://doi.org/10.5281/zenodo.21941046",children:"v1.0.0 reference manual"}),"."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",children:r.map((t,n)=>e.jsxs(d,{to:`/blog/${t.id}`,className:"group relative flex flex-col bg-slate-900/50 backdrop-blur-xl border border-slate-800 rounded-3xl p-8 hover:bg-slate-800/50 hover:border-cyan-400/30 transition-all duration-500 animate-in fade-in slide-in-from-bottom-8",style:{animationDelay:`${n*100}ms`,animationFillMode:"both"},children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-cyan-400/5 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-500 rounded-3xl"}),e.jsxs("div",{className:"relative z-10 flex flex-col h-full",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 mb-6",children:[e.jsxs("div",{className:"flex items-center space-x-2 text-cyan-300",children:[e.jsx(x,{size:18}),e.jsx("span",{className:"text-sm font-semibold tracking-wider uppercase",children:"Article"})]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-2.5 py-1 text-[0.65rem] font-semibold uppercase tracking-wider text-slate-400",children:t.category})]}),e.jsx("h2",{className:"text-2xl font-bold mb-4 text-white group-hover:text-cyan-200 transition-colors duration-300",children:t.title}),e.jsx("p",{className:"text-slate-400 mb-8 flex-grow leading-relaxed",children:t.description}),e.jsxs("div",{className:"flex items-center justify-between mt-auto pt-6 border-t border-slate-800",children:[e.jsxs("div",{className:"flex items-center text-slate-400 text-sm",children:[e.jsx(m,{size:14,className:"mr-2"}),t.date]}),e.jsx(p,{size:18,className:"text-cyan-400 transform group-hover:translate-x-1 transition-transform duration-300"})]})]})]},t.id))})]})]})]})}export{j as default}; diff --git a/assets/Blog-BcO2ftSu.js b/assets/Blog-BcO2ftSu.js deleted file mode 100644 index de2406b7..00000000 --- a/assets/Blog-BcO2ftSu.js +++ /dev/null @@ -1 +0,0 @@ -import{r as n,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c}from"./index-B9kEGiWi.js";import{b as a}from"./blogData-OjR2ZtNr.js";import{L as d}from"./vendor-PiU4YGcH.js";import{B as m,k as x,l as p}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function v(){const[s,l]=n.useState("All"),i=["All",...Array.from(new Set(a.map(t=>t.category)))],r=s==="All"?a:a.filter(t=>t.category===s);return e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(c,{title:"Blog · QECTOR",description:"QECTOR field notes on quantum error correction, decoder algorithms, qLDPC, noise models, evidence, systems, and ecosystem integration."}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 left-1/2 -translate-x-1/2 w-[1000px] h-[500px] bg-cyan-400/10 blur-[120px] rounded-full pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-6 relative z-10",children:[e.jsxs("div",{className:"text-center mb-20 animate-in fade-in slide-in-from-bottom-8 duration-700",children:[e.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight mb-6 bg-gradient-to-br from-white to-slate-400 bg-clip-text text-transparent",children:["Engineering ",e.jsx("br",{}),e.jsx("span",{className:"text-cyan-300",children:"Fault Tolerance"})]}),e.jsx("p",{className:"text-xl text-slate-400 max-w-2xl mx-auto",children:"Field notes from parity checks to production interfaces: mathematics, decoder design, evidence, and systems practice for quantum error correction."})]}),e.jsx("div",{className:"mb-12 flex flex-wrap items-center justify-center gap-3",role:"group","aria-label":"Filter articles by topic",children:i.map(t=>e.jsx("button",{type:"button","aria-pressed":s===t,onClick:()=>l(t),className:`rounded-full border px-4 py-2 text-sm font-medium transition-colors duration-300 ${s===t?"border-cyan-300 bg-cyan-300/10 text-cyan-200":"border-slate-800 bg-slate-900/50 text-slate-400 hover:border-cyan-400/40 hover:text-slate-200"}`,children:t},t))}),e.jsxs("p",{className:"mb-6 text-center text-sm text-slate-400",children:["Showing ",r.length," of ",a.length," field notes. Claims are scoped to the ",e.jsx("a",{className:"text-cyan-300 hover:text-cyan-200",href:"https://doi.org/10.5281/zenodo.21941046",children:"v1.0.0 reference manual"}),"."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",children:r.map((t,o)=>e.jsxs(d,{to:`/blog/${t.id}`,className:"group relative flex flex-col bg-slate-900/50 backdrop-blur-xl border border-slate-800 rounded-3xl p-8 hover:bg-slate-800/50 hover:border-cyan-400/30 transition-all duration-500 animate-in fade-in slide-in-from-bottom-8",style:{animationDelay:`${o*100}ms`,animationFillMode:"both"},children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-cyan-400/5 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-500 rounded-3xl"}),e.jsxs("div",{className:"relative z-10 flex flex-col h-full",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 mb-6",children:[e.jsxs("div",{className:"flex items-center space-x-2 text-cyan-300",children:[e.jsx(m,{size:18}),e.jsx("span",{className:"text-sm font-semibold tracking-wider uppercase",children:"Article"})]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-2.5 py-1 text-[0.65rem] font-semibold uppercase tracking-wider text-slate-400",children:t.category})]}),e.jsx("h2",{className:"text-2xl font-bold mb-4 text-white group-hover:text-cyan-200 transition-colors duration-300",children:t.title}),e.jsx("p",{className:"text-slate-400 mb-8 flex-grow leading-relaxed",children:t.description}),e.jsxs("div",{className:"flex items-center justify-between mt-auto pt-6 border-t border-slate-800",children:[e.jsxs("div",{className:"flex items-center text-slate-400 text-sm",children:[e.jsx(x,{size:14,className:"mr-2"}),t.date]}),e.jsx(p,{size:18,className:"text-cyan-400 transform group-hover:translate-x-1 transition-transform duration-300"})]})]})]},t.id))})]})]})]})}export{v as default}; diff --git a/assets/Blog-C2PtKQPL.js b/assets/Blog-C2PtKQPL.js deleted file mode 100644 index 4d2fca90..00000000 --- a/assets/Blog-C2PtKQPL.js +++ /dev/null @@ -1 +0,0 @@ -import{r as n,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c}from"./index-BcbVjARk.js";import{b as a}from"./blogData-OjR2ZtNr.js";import{L as d}from"./vendor-PiU4YGcH.js";import{B as m,k as x,l as p}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function v(){const[s,l]=n.useState("All"),i=["All",...Array.from(new Set(a.map(t=>t.category)))],r=s==="All"?a:a.filter(t=>t.category===s);return e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(c,{title:"Blog · QECTOR",description:"QECTOR field notes on quantum error correction, decoder algorithms, qLDPC, noise models, evidence, systems, and ecosystem integration."}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 left-1/2 -translate-x-1/2 w-[1000px] h-[500px] bg-cyan-400/10 blur-[120px] rounded-full pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-6 relative z-10",children:[e.jsxs("div",{className:"text-center mb-20 animate-in fade-in slide-in-from-bottom-8 duration-700",children:[e.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight mb-6 bg-gradient-to-br from-white to-slate-400 bg-clip-text text-transparent",children:["Engineering ",e.jsx("br",{}),e.jsx("span",{className:"text-cyan-300",children:"Fault Tolerance"})]}),e.jsx("p",{className:"text-xl text-slate-400 max-w-2xl mx-auto",children:"Field notes from parity checks to production interfaces: mathematics, decoder design, evidence, and systems practice for quantum error correction."})]}),e.jsx("div",{className:"mb-12 flex flex-wrap items-center justify-center gap-3",role:"group","aria-label":"Filter articles by topic",children:i.map(t=>e.jsx("button",{type:"button","aria-pressed":s===t,onClick:()=>l(t),className:`rounded-full border px-4 py-2 text-sm font-medium transition-colors duration-300 ${s===t?"border-cyan-300 bg-cyan-300/10 text-cyan-200":"border-slate-800 bg-slate-900/50 text-slate-400 hover:border-cyan-400/40 hover:text-slate-200"}`,children:t},t))}),e.jsxs("p",{className:"mb-6 text-center text-sm text-slate-400",children:["Showing ",r.length," of ",a.length," field notes. Claims are scoped to the ",e.jsx("a",{className:"text-cyan-300 hover:text-cyan-200",href:"https://doi.org/10.5281/zenodo.21941046",children:"v1.0.0 reference manual"}),"."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",children:r.map((t,o)=>e.jsxs(d,{to:`/blog/${t.id}`,className:"group relative flex flex-col bg-slate-900/50 backdrop-blur-xl border border-slate-800 rounded-3xl p-8 hover:bg-slate-800/50 hover:border-cyan-400/30 transition-all duration-500 animate-in fade-in slide-in-from-bottom-8",style:{animationDelay:`${o*100}ms`,animationFillMode:"both"},children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-cyan-400/5 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-500 rounded-3xl"}),e.jsxs("div",{className:"relative z-10 flex flex-col h-full",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 mb-6",children:[e.jsxs("div",{className:"flex items-center space-x-2 text-cyan-300",children:[e.jsx(m,{size:18}),e.jsx("span",{className:"text-sm font-semibold tracking-wider uppercase",children:"Article"})]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-2.5 py-1 text-[0.65rem] font-semibold uppercase tracking-wider text-slate-400",children:t.category})]}),e.jsx("h2",{className:"text-2xl font-bold mb-4 text-white group-hover:text-cyan-200 transition-colors duration-300",children:t.title}),e.jsx("p",{className:"text-slate-400 mb-8 flex-grow leading-relaxed",children:t.description}),e.jsxs("div",{className:"flex items-center justify-between mt-auto pt-6 border-t border-slate-800",children:[e.jsxs("div",{className:"flex items-center text-slate-400 text-sm",children:[e.jsx(x,{size:14,className:"mr-2"}),t.date]}),e.jsx(p,{size:18,className:"text-cyan-400 transform group-hover:translate-x-1 transition-transform duration-300"})]})]})]},t.id))})]})]})]})}export{v as default}; diff --git a/assets/Blog-CVJEEWRY.js b/assets/Blog-CVJEEWRY.js deleted file mode 100644 index e649f690..00000000 --- a/assets/Blog-CVJEEWRY.js +++ /dev/null @@ -1 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,L as d}from"./index-PdoH5kLF.js";import{b as a}from"./blogData-OjR2ZtNr.js";import{B as x,k as m,l as p}from"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";function j(){const[s,l]=o.useState("All"),i=["All",...Array.from(new Set(a.map(t=>t.category)))],r=s==="All"?a:a.filter(t=>t.category===s);return e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(c,{title:"Blog · QECTOR",description:"QECTOR field notes on quantum error correction, decoder algorithms, qLDPC, noise models, evidence, systems, and ecosystem integration."}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 left-1/2 -translate-x-1/2 w-[1000px] h-[500px] bg-cyan-400/10 blur-[120px] rounded-full pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-6 relative z-10",children:[e.jsxs("div",{className:"text-center mb-20 animate-in fade-in slide-in-from-bottom-8 duration-700",children:[e.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight mb-6 bg-gradient-to-br from-white to-slate-400 bg-clip-text text-transparent",children:["Engineering ",e.jsx("br",{}),e.jsx("span",{className:"text-cyan-300",children:"Fault Tolerance"})]}),e.jsx("p",{className:"text-xl text-slate-400 max-w-2xl mx-auto",children:"Field notes from parity checks to production interfaces: mathematics, decoder design, evidence, and systems practice for quantum error correction."})]}),e.jsx("div",{className:"mb-12 flex flex-wrap items-center justify-center gap-3",role:"group","aria-label":"Filter articles by topic",children:i.map(t=>e.jsx("button",{type:"button","aria-pressed":s===t,onClick:()=>l(t),className:`rounded-full border px-4 py-2 text-sm font-medium transition-colors duration-300 ${s===t?"border-cyan-300 bg-cyan-300/10 text-cyan-200":"border-slate-800 bg-slate-900/50 text-slate-400 hover:border-cyan-400/40 hover:text-slate-200"}`,children:t},t))}),e.jsxs("p",{className:"mb-6 text-center text-sm text-slate-400",children:["Showing ",r.length," of ",a.length," field notes. Claims are scoped to the ",e.jsx("a",{className:"text-cyan-300 hover:text-cyan-200",href:"https://doi.org/10.5281/zenodo.21941046",children:"v1.0.0 reference manual"}),"."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",children:r.map((t,n)=>e.jsxs(d,{to:`/blog/${t.id}`,className:"group relative flex flex-col bg-slate-900/50 backdrop-blur-xl border border-slate-800 rounded-3xl p-8 hover:bg-slate-800/50 hover:border-cyan-400/30 transition-all duration-500 animate-in fade-in slide-in-from-bottom-8",style:{animationDelay:`${n*100}ms`,animationFillMode:"both"},children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-cyan-400/5 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-500 rounded-3xl"}),e.jsxs("div",{className:"relative z-10 flex flex-col h-full",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 mb-6",children:[e.jsxs("div",{className:"flex items-center space-x-2 text-cyan-300",children:[e.jsx(x,{size:18}),e.jsx("span",{className:"text-sm font-semibold tracking-wider uppercase",children:"Article"})]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-2.5 py-1 text-[0.65rem] font-semibold uppercase tracking-wider text-slate-400",children:t.category})]}),e.jsx("h2",{className:"text-2xl font-bold mb-4 text-white group-hover:text-cyan-200 transition-colors duration-300",children:t.title}),e.jsx("p",{className:"text-slate-400 mb-8 flex-grow leading-relaxed",children:t.description}),e.jsxs("div",{className:"flex items-center justify-between mt-auto pt-6 border-t border-slate-800",children:[e.jsxs("div",{className:"flex items-center text-slate-400 text-sm",children:[e.jsx(m,{size:14,className:"mr-2"}),t.date]}),e.jsx(p,{size:18,className:"text-cyan-400 transform group-hover:translate-x-1 transition-transform duration-300"})]})]})]},t.id))})]})]})]})}export{j as default}; diff --git a/assets/Blog-Caqe2zJR.js b/assets/Blog-Caqe2zJR.js deleted file mode 100644 index 6e97066b..00000000 --- a/assets/Blog-Caqe2zJR.js +++ /dev/null @@ -1 +0,0 @@ -import{r as n,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c}from"./index-DkYdPRY7.js";import{b as a}from"./blogData-OjR2ZtNr.js";import{L as d}from"./vendor-PiU4YGcH.js";import{B as m,k as x,l as p}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function v(){const[s,l]=n.useState("All"),i=["All",...Array.from(new Set(a.map(t=>t.category)))],r=s==="All"?a:a.filter(t=>t.category===s);return e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(c,{title:"Blog · QECTOR",description:"QECTOR field notes on quantum error correction, decoder algorithms, qLDPC, noise models, evidence, systems, and ecosystem integration."}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 left-1/2 -translate-x-1/2 w-[1000px] h-[500px] bg-cyan-400/10 blur-[120px] rounded-full pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-6 relative z-10",children:[e.jsxs("div",{className:"text-center mb-20 animate-in fade-in slide-in-from-bottom-8 duration-700",children:[e.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight mb-6 bg-gradient-to-br from-white to-slate-400 bg-clip-text text-transparent",children:["Engineering ",e.jsx("br",{}),e.jsx("span",{className:"text-cyan-300",children:"Fault Tolerance"})]}),e.jsx("p",{className:"text-xl text-slate-400 max-w-2xl mx-auto",children:"Field notes from parity checks to production interfaces: mathematics, decoder design, evidence, and systems practice for quantum error correction."})]}),e.jsx("div",{className:"mb-12 flex flex-wrap items-center justify-center gap-3",role:"group","aria-label":"Filter articles by topic",children:i.map(t=>e.jsx("button",{type:"button","aria-pressed":s===t,onClick:()=>l(t),className:`rounded-full border px-4 py-2 text-sm font-medium transition-colors duration-300 ${s===t?"border-cyan-300 bg-cyan-300/10 text-cyan-200":"border-slate-800 bg-slate-900/50 text-slate-400 hover:border-cyan-400/40 hover:text-slate-200"}`,children:t},t))}),e.jsxs("p",{className:"mb-6 text-center text-sm text-slate-400",children:["Showing ",r.length," of ",a.length," field notes. Claims are scoped to the ",e.jsx("a",{className:"text-cyan-300 hover:text-cyan-200",href:"https://doi.org/10.5281/zenodo.21941046",children:"v1.0.0 reference manual"}),"."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",children:r.map((t,o)=>e.jsxs(d,{to:`/blog/${t.id}`,className:"group relative flex flex-col bg-slate-900/50 backdrop-blur-xl border border-slate-800 rounded-3xl p-8 hover:bg-slate-800/50 hover:border-cyan-400/30 transition-all duration-500 animate-in fade-in slide-in-from-bottom-8",style:{animationDelay:`${o*100}ms`,animationFillMode:"both"},children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-cyan-400/5 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-500 rounded-3xl"}),e.jsxs("div",{className:"relative z-10 flex flex-col h-full",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 mb-6",children:[e.jsxs("div",{className:"flex items-center space-x-2 text-cyan-300",children:[e.jsx(m,{size:18}),e.jsx("span",{className:"text-sm font-semibold tracking-wider uppercase",children:"Article"})]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-2.5 py-1 text-[0.65rem] font-semibold uppercase tracking-wider text-slate-400",children:t.category})]}),e.jsx("h2",{className:"text-2xl font-bold mb-4 text-white group-hover:text-cyan-200 transition-colors duration-300",children:t.title}),e.jsx("p",{className:"text-slate-400 mb-8 flex-grow leading-relaxed",children:t.description}),e.jsxs("div",{className:"flex items-center justify-between mt-auto pt-6 border-t border-slate-800",children:[e.jsxs("div",{className:"flex items-center text-slate-400 text-sm",children:[e.jsx(x,{size:14,className:"mr-2"}),t.date]}),e.jsx(p,{size:18,className:"text-cyan-400 transform group-hover:translate-x-1 transition-transform duration-300"})]})]})]},t.id))})]})]})]})}export{v as default}; diff --git a/assets/Blog-Cd2PdBpE.js b/assets/Blog-Cd2PdBpE.js deleted file mode 100644 index 96d78db4..00000000 --- a/assets/Blog-Cd2PdBpE.js +++ /dev/null @@ -1 +0,0 @@ -import{r as n,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c}from"./index-DRAXObZB.js";import{b as a}from"./blogData-OjR2ZtNr.js";import{L as d}from"./vendor-PiU4YGcH.js";import{B as m,k as x,l as p}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function v(){const[s,l]=n.useState("All"),i=["All",...Array.from(new Set(a.map(t=>t.category)))],r=s==="All"?a:a.filter(t=>t.category===s);return e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(c,{title:"Blog · QECTOR",description:"QECTOR field notes on quantum error correction, decoder algorithms, qLDPC, noise models, evidence, systems, and ecosystem integration."}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 left-1/2 -translate-x-1/2 w-[1000px] h-[500px] bg-cyan-400/10 blur-[120px] rounded-full pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-6 relative z-10",children:[e.jsxs("div",{className:"text-center mb-20 animate-in fade-in slide-in-from-bottom-8 duration-700",children:[e.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight mb-6 bg-gradient-to-br from-white to-slate-400 bg-clip-text text-transparent",children:["Engineering ",e.jsx("br",{}),e.jsx("span",{className:"text-cyan-300",children:"Fault Tolerance"})]}),e.jsx("p",{className:"text-xl text-slate-400 max-w-2xl mx-auto",children:"Field notes from parity checks to production interfaces: mathematics, decoder design, evidence, and systems practice for quantum error correction."})]}),e.jsx("div",{className:"mb-12 flex flex-wrap items-center justify-center gap-3",role:"group","aria-label":"Filter articles by topic",children:i.map(t=>e.jsx("button",{type:"button","aria-pressed":s===t,onClick:()=>l(t),className:`rounded-full border px-4 py-2 text-sm font-medium transition-colors duration-300 ${s===t?"border-cyan-300 bg-cyan-300/10 text-cyan-200":"border-slate-800 bg-slate-900/50 text-slate-400 hover:border-cyan-400/40 hover:text-slate-200"}`,children:t},t))}),e.jsxs("p",{className:"mb-6 text-center text-sm text-slate-400",children:["Showing ",r.length," of ",a.length," field notes. Claims are scoped to the ",e.jsx("a",{className:"text-cyan-300 hover:text-cyan-200",href:"https://doi.org/10.5281/zenodo.21941046",children:"v1.0.0 reference manual"}),"."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",children:r.map((t,o)=>e.jsxs(d,{to:`/blog/${t.id}`,className:"group relative flex flex-col bg-slate-900/50 backdrop-blur-xl border border-slate-800 rounded-3xl p-8 hover:bg-slate-800/50 hover:border-cyan-400/30 transition-all duration-500 animate-in fade-in slide-in-from-bottom-8",style:{animationDelay:`${o*100}ms`,animationFillMode:"both"},children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-cyan-400/5 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-500 rounded-3xl"}),e.jsxs("div",{className:"relative z-10 flex flex-col h-full",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 mb-6",children:[e.jsxs("div",{className:"flex items-center space-x-2 text-cyan-300",children:[e.jsx(m,{size:18}),e.jsx("span",{className:"text-sm font-semibold tracking-wider uppercase",children:"Article"})]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-2.5 py-1 text-[0.65rem] font-semibold uppercase tracking-wider text-slate-400",children:t.category})]}),e.jsx("h2",{className:"text-2xl font-bold mb-4 text-white group-hover:text-cyan-200 transition-colors duration-300",children:t.title}),e.jsx("p",{className:"text-slate-400 mb-8 flex-grow leading-relaxed",children:t.description}),e.jsxs("div",{className:"flex items-center justify-between mt-auto pt-6 border-t border-slate-800",children:[e.jsxs("div",{className:"flex items-center text-slate-400 text-sm",children:[e.jsx(x,{size:14,className:"mr-2"}),t.date]}),e.jsx(p,{size:18,className:"text-cyan-400 transform group-hover:translate-x-1 transition-transform duration-300"})]})]})]},t.id))})]})]})]})}export{v as default}; diff --git a/assets/Blog-Cvysd4Ha.js b/assets/Blog-Cvysd4Ha.js deleted file mode 100644 index d4ba16e2..00000000 --- a/assets/Blog-Cvysd4Ha.js +++ /dev/null @@ -1 +0,0 @@ -import{r as n,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c}from"./index-CpdATiEY.js";import{b as a}from"./blogData-OjR2ZtNr.js";import{L as d}from"./vendor-PiU4YGcH.js";import{B as m,k as x,l as p}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function v(){const[s,l]=n.useState("All"),i=["All",...Array.from(new Set(a.map(t=>t.category)))],r=s==="All"?a:a.filter(t=>t.category===s);return e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(c,{title:"Blog · QECTOR",description:"QECTOR field notes on quantum error correction, decoder algorithms, qLDPC, noise models, evidence, systems, and ecosystem integration."}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 left-1/2 -translate-x-1/2 w-[1000px] h-[500px] bg-cyan-400/10 blur-[120px] rounded-full pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-6 relative z-10",children:[e.jsxs("div",{className:"text-center mb-20 animate-in fade-in slide-in-from-bottom-8 duration-700",children:[e.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight mb-6 bg-gradient-to-br from-white to-slate-400 bg-clip-text text-transparent",children:["Engineering ",e.jsx("br",{}),e.jsx("span",{className:"text-cyan-300",children:"Fault Tolerance"})]}),e.jsx("p",{className:"text-xl text-slate-400 max-w-2xl mx-auto",children:"Field notes from parity checks to production interfaces: mathematics, decoder design, evidence, and systems practice for quantum error correction."})]}),e.jsx("div",{className:"mb-12 flex flex-wrap items-center justify-center gap-3",role:"group","aria-label":"Filter articles by topic",children:i.map(t=>e.jsx("button",{type:"button","aria-pressed":s===t,onClick:()=>l(t),className:`rounded-full border px-4 py-2 text-sm font-medium transition-colors duration-300 ${s===t?"border-cyan-300 bg-cyan-300/10 text-cyan-200":"border-slate-800 bg-slate-900/50 text-slate-400 hover:border-cyan-400/40 hover:text-slate-200"}`,children:t},t))}),e.jsxs("p",{className:"mb-6 text-center text-sm text-slate-400",children:["Showing ",r.length," of ",a.length," field notes. Claims are scoped to the ",e.jsx("a",{className:"text-cyan-300 hover:text-cyan-200",href:"https://doi.org/10.5281/zenodo.21941046",children:"v1.0.0 reference manual"}),"."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",children:r.map((t,o)=>e.jsxs(d,{to:`/blog/${t.id}`,className:"group relative flex flex-col bg-slate-900/50 backdrop-blur-xl border border-slate-800 rounded-3xl p-8 hover:bg-slate-800/50 hover:border-cyan-400/30 transition-all duration-500 animate-in fade-in slide-in-from-bottom-8",style:{animationDelay:`${o*100}ms`,animationFillMode:"both"},children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-cyan-400/5 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-500 rounded-3xl"}),e.jsxs("div",{className:"relative z-10 flex flex-col h-full",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 mb-6",children:[e.jsxs("div",{className:"flex items-center space-x-2 text-cyan-300",children:[e.jsx(m,{size:18}),e.jsx("span",{className:"text-sm font-semibold tracking-wider uppercase",children:"Article"})]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-2.5 py-1 text-[0.65rem] font-semibold uppercase tracking-wider text-slate-400",children:t.category})]}),e.jsx("h2",{className:"text-2xl font-bold mb-4 text-white group-hover:text-cyan-200 transition-colors duration-300",children:t.title}),e.jsx("p",{className:"text-slate-400 mb-8 flex-grow leading-relaxed",children:t.description}),e.jsxs("div",{className:"flex items-center justify-between mt-auto pt-6 border-t border-slate-800",children:[e.jsxs("div",{className:"flex items-center text-slate-400 text-sm",children:[e.jsx(x,{size:14,className:"mr-2"}),t.date]}),e.jsx(p,{size:18,className:"text-cyan-400 transform group-hover:translate-x-1 transition-transform duration-300"})]})]})]},t.id))})]})]})]})}export{v as default}; diff --git a/assets/Blog-D-1MbS1Y.js b/assets/Blog-D-1MbS1Y.js deleted file mode 100644 index 70a59c51..00000000 --- a/assets/Blog-D-1MbS1Y.js +++ /dev/null @@ -1 +0,0 @@ -import{r as n,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c}from"./index-_BpMZhV3.js";import{b as a}from"./blogData-OjR2ZtNr.js";import{L as d}from"./vendor-PiU4YGcH.js";import{B as m,k as x,l as p}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function v(){const[s,l]=n.useState("All"),i=["All",...Array.from(new Set(a.map(t=>t.category)))],r=s==="All"?a:a.filter(t=>t.category===s);return e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(c,{title:"Blog · QECTOR",description:"QECTOR field notes on quantum error correction, decoder algorithms, qLDPC, noise models, evidence, systems, and ecosystem integration."}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 left-1/2 -translate-x-1/2 w-[1000px] h-[500px] bg-cyan-400/10 blur-[120px] rounded-full pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-6 relative z-10",children:[e.jsxs("div",{className:"text-center mb-20 animate-in fade-in slide-in-from-bottom-8 duration-700",children:[e.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight mb-6 bg-gradient-to-br from-white to-slate-400 bg-clip-text text-transparent",children:["Engineering ",e.jsx("br",{}),e.jsx("span",{className:"text-cyan-300",children:"Fault Tolerance"})]}),e.jsx("p",{className:"text-xl text-slate-400 max-w-2xl mx-auto",children:"Field notes from parity checks to production interfaces: mathematics, decoder design, evidence, and systems practice for quantum error correction."})]}),e.jsx("div",{className:"mb-12 flex flex-wrap items-center justify-center gap-3",role:"group","aria-label":"Filter articles by topic",children:i.map(t=>e.jsx("button",{type:"button","aria-pressed":s===t,onClick:()=>l(t),className:`rounded-full border px-4 py-2 text-sm font-medium transition-colors duration-300 ${s===t?"border-cyan-300 bg-cyan-300/10 text-cyan-200":"border-slate-800 bg-slate-900/50 text-slate-400 hover:border-cyan-400/40 hover:text-slate-200"}`,children:t},t))}),e.jsxs("p",{className:"mb-6 text-center text-sm text-slate-400",children:["Showing ",r.length," of ",a.length," field notes. Claims are scoped to the ",e.jsx("a",{className:"text-cyan-300 hover:text-cyan-200",href:"https://doi.org/10.5281/zenodo.21941046",children:"v1.0.0 reference manual"}),"."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",children:r.map((t,o)=>e.jsxs(d,{to:`/blog/${t.id}`,className:"group relative flex flex-col bg-slate-900/50 backdrop-blur-xl border border-slate-800 rounded-3xl p-8 hover:bg-slate-800/50 hover:border-cyan-400/30 transition-all duration-500 animate-in fade-in slide-in-from-bottom-8",style:{animationDelay:`${o*100}ms`,animationFillMode:"both"},children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-cyan-400/5 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-500 rounded-3xl"}),e.jsxs("div",{className:"relative z-10 flex flex-col h-full",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 mb-6",children:[e.jsxs("div",{className:"flex items-center space-x-2 text-cyan-300",children:[e.jsx(m,{size:18}),e.jsx("span",{className:"text-sm font-semibold tracking-wider uppercase",children:"Article"})]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-2.5 py-1 text-[0.65rem] font-semibold uppercase tracking-wider text-slate-400",children:t.category})]}),e.jsx("h2",{className:"text-2xl font-bold mb-4 text-white group-hover:text-cyan-200 transition-colors duration-300",children:t.title}),e.jsx("p",{className:"text-slate-400 mb-8 flex-grow leading-relaxed",children:t.description}),e.jsxs("div",{className:"flex items-center justify-between mt-auto pt-6 border-t border-slate-800",children:[e.jsxs("div",{className:"flex items-center text-slate-400 text-sm",children:[e.jsx(x,{size:14,className:"mr-2"}),t.date]}),e.jsx(p,{size:18,className:"text-cyan-400 transform group-hover:translate-x-1 transition-transform duration-300"})]})]})]},t.id))})]})]})]})}export{v as default}; diff --git a/assets/Blog-DD-Qo4do.js b/assets/Blog-DD-Qo4do.js deleted file mode 100644 index 9bc02253..00000000 --- a/assets/Blog-DD-Qo4do.js +++ /dev/null @@ -1 +0,0 @@ -import{r as n,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c}from"./index-iVST85F-.js";import{b as a}from"./blogData-OjR2ZtNr.js";import{L as d}from"./vendor-PiU4YGcH.js";import{B as m,k as x,l as p}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function v(){const[s,l]=n.useState("All"),i=["All",...Array.from(new Set(a.map(t=>t.category)))],r=s==="All"?a:a.filter(t=>t.category===s);return e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(c,{title:"Blog · QECTOR",description:"QECTOR field notes on quantum error correction, decoder algorithms, qLDPC, noise models, evidence, systems, and ecosystem integration."}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 left-1/2 -translate-x-1/2 w-[1000px] h-[500px] bg-cyan-400/10 blur-[120px] rounded-full pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-6 relative z-10",children:[e.jsxs("div",{className:"text-center mb-20 animate-in fade-in slide-in-from-bottom-8 duration-700",children:[e.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight mb-6 bg-gradient-to-br from-white to-slate-400 bg-clip-text text-transparent",children:["Engineering ",e.jsx("br",{}),e.jsx("span",{className:"text-cyan-300",children:"Fault Tolerance"})]}),e.jsx("p",{className:"text-xl text-slate-400 max-w-2xl mx-auto",children:"Field notes from parity checks to production interfaces: mathematics, decoder design, evidence, and systems practice for quantum error correction."})]}),e.jsx("div",{className:"mb-12 flex flex-wrap items-center justify-center gap-3",role:"group","aria-label":"Filter articles by topic",children:i.map(t=>e.jsx("button",{type:"button","aria-pressed":s===t,onClick:()=>l(t),className:`rounded-full border px-4 py-2 text-sm font-medium transition-colors duration-300 ${s===t?"border-cyan-300 bg-cyan-300/10 text-cyan-200":"border-slate-800 bg-slate-900/50 text-slate-400 hover:border-cyan-400/40 hover:text-slate-200"}`,children:t},t))}),e.jsxs("p",{className:"mb-6 text-center text-sm text-slate-400",children:["Showing ",r.length," of ",a.length," field notes. Claims are scoped to the ",e.jsx("a",{className:"text-cyan-300 hover:text-cyan-200",href:"https://doi.org/10.5281/zenodo.21941046",children:"v1.0.0 reference manual"}),"."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",children:r.map((t,o)=>e.jsxs(d,{to:`/blog/${t.id}`,className:"group relative flex flex-col bg-slate-900/50 backdrop-blur-xl border border-slate-800 rounded-3xl p-8 hover:bg-slate-800/50 hover:border-cyan-400/30 transition-all duration-500 animate-in fade-in slide-in-from-bottom-8",style:{animationDelay:`${o*100}ms`,animationFillMode:"both"},children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-cyan-400/5 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-500 rounded-3xl"}),e.jsxs("div",{className:"relative z-10 flex flex-col h-full",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 mb-6",children:[e.jsxs("div",{className:"flex items-center space-x-2 text-cyan-300",children:[e.jsx(m,{size:18}),e.jsx("span",{className:"text-sm font-semibold tracking-wider uppercase",children:"Article"})]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-2.5 py-1 text-[0.65rem] font-semibold uppercase tracking-wider text-slate-400",children:t.category})]}),e.jsx("h2",{className:"text-2xl font-bold mb-4 text-white group-hover:text-cyan-200 transition-colors duration-300",children:t.title}),e.jsx("p",{className:"text-slate-400 mb-8 flex-grow leading-relaxed",children:t.description}),e.jsxs("div",{className:"flex items-center justify-between mt-auto pt-6 border-t border-slate-800",children:[e.jsxs("div",{className:"flex items-center text-slate-400 text-sm",children:[e.jsx(x,{size:14,className:"mr-2"}),t.date]}),e.jsx(p,{size:18,className:"text-cyan-400 transform group-hover:translate-x-1 transition-transform duration-300"})]})]})]},t.id))})]})]})]})}export{v as default}; diff --git a/assets/Blog-DNJmCnqw.js b/assets/Blog-DNJmCnqw.js deleted file mode 100644 index f69416a3..00000000 --- a/assets/Blog-DNJmCnqw.js +++ /dev/null @@ -1 +0,0 @@ -import{r as n,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c}from"./index-CqAA-ZXu.js";import{b as a}from"./blogData-OjR2ZtNr.js";import{L as d}from"./vendor-PiU4YGcH.js";import{B as m,k as x,l as p}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function v(){const[s,l]=n.useState("All"),i=["All",...Array.from(new Set(a.map(t=>t.category)))],r=s==="All"?a:a.filter(t=>t.category===s);return e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(c,{title:"Blog · QECTOR",description:"QECTOR field notes on quantum error correction, decoder algorithms, qLDPC, noise models, evidence, systems, and ecosystem integration."}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 left-1/2 -translate-x-1/2 w-[1000px] h-[500px] bg-cyan-400/10 blur-[120px] rounded-full pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-6 relative z-10",children:[e.jsxs("div",{className:"text-center mb-20 animate-in fade-in slide-in-from-bottom-8 duration-700",children:[e.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight mb-6 bg-gradient-to-br from-white to-slate-400 bg-clip-text text-transparent",children:["Engineering ",e.jsx("br",{}),e.jsx("span",{className:"text-cyan-300",children:"Fault Tolerance"})]}),e.jsx("p",{className:"text-xl text-slate-400 max-w-2xl mx-auto",children:"Field notes from parity checks to production interfaces: mathematics, decoder design, evidence, and systems practice for quantum error correction."})]}),e.jsx("div",{className:"mb-12 flex flex-wrap items-center justify-center gap-3",role:"group","aria-label":"Filter articles by topic",children:i.map(t=>e.jsx("button",{type:"button","aria-pressed":s===t,onClick:()=>l(t),className:`rounded-full border px-4 py-2 text-sm font-medium transition-colors duration-300 ${s===t?"border-cyan-300 bg-cyan-300/10 text-cyan-200":"border-slate-800 bg-slate-900/50 text-slate-400 hover:border-cyan-400/40 hover:text-slate-200"}`,children:t},t))}),e.jsxs("p",{className:"mb-6 text-center text-sm text-slate-400",children:["Showing ",r.length," of ",a.length," field notes. Claims are scoped to the ",e.jsx("a",{className:"text-cyan-300 hover:text-cyan-200",href:"https://doi.org/10.5281/zenodo.21941046",children:"v1.0.0 reference manual"}),"."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",children:r.map((t,o)=>e.jsxs(d,{to:`/blog/${t.id}`,className:"group relative flex flex-col bg-slate-900/50 backdrop-blur-xl border border-slate-800 rounded-3xl p-8 hover:bg-slate-800/50 hover:border-cyan-400/30 transition-all duration-500 animate-in fade-in slide-in-from-bottom-8",style:{animationDelay:`${o*100}ms`,animationFillMode:"both"},children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-cyan-400/5 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-500 rounded-3xl"}),e.jsxs("div",{className:"relative z-10 flex flex-col h-full",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 mb-6",children:[e.jsxs("div",{className:"flex items-center space-x-2 text-cyan-300",children:[e.jsx(m,{size:18}),e.jsx("span",{className:"text-sm font-semibold tracking-wider uppercase",children:"Article"})]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-2.5 py-1 text-[0.65rem] font-semibold uppercase tracking-wider text-slate-400",children:t.category})]}),e.jsx("h2",{className:"text-2xl font-bold mb-4 text-white group-hover:text-cyan-200 transition-colors duration-300",children:t.title}),e.jsx("p",{className:"text-slate-400 mb-8 flex-grow leading-relaxed",children:t.description}),e.jsxs("div",{className:"flex items-center justify-between mt-auto pt-6 border-t border-slate-800",children:[e.jsxs("div",{className:"flex items-center text-slate-400 text-sm",children:[e.jsx(x,{size:14,className:"mr-2"}),t.date]}),e.jsx(p,{size:18,className:"text-cyan-400 transform group-hover:translate-x-1 transition-transform duration-300"})]})]})]},t.id))})]})]})]})}export{v as default}; diff --git a/assets/Blog-DrxsUsTK.js b/assets/Blog-DrxsUsTK.js deleted file mode 100644 index ef10ce4f..00000000 --- a/assets/Blog-DrxsUsTK.js +++ /dev/null @@ -1 +0,0 @@ -import{r as n,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c}from"./index-WV1aysjN.js";import{b as a}from"./blogData-OjR2ZtNr.js";import{L as d}from"./vendor-PiU4YGcH.js";import{B as m,k as x,l as p}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function v(){const[s,l]=n.useState("All"),i=["All",...Array.from(new Set(a.map(t=>t.category)))],r=s==="All"?a:a.filter(t=>t.category===s);return e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(c,{title:"Blog · QECTOR",description:"QECTOR field notes on quantum error correction, decoder algorithms, qLDPC, noise models, evidence, systems, and ecosystem integration."}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 left-1/2 -translate-x-1/2 w-[1000px] h-[500px] bg-cyan-400/10 blur-[120px] rounded-full pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-6 relative z-10",children:[e.jsxs("div",{className:"text-center mb-20 animate-in fade-in slide-in-from-bottom-8 duration-700",children:[e.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight mb-6 bg-gradient-to-br from-white to-slate-400 bg-clip-text text-transparent",children:["Engineering ",e.jsx("br",{}),e.jsx("span",{className:"text-cyan-300",children:"Fault Tolerance"})]}),e.jsx("p",{className:"text-xl text-slate-400 max-w-2xl mx-auto",children:"Field notes from parity checks to production interfaces: mathematics, decoder design, evidence, and systems practice for quantum error correction."})]}),e.jsx("div",{className:"mb-12 flex flex-wrap items-center justify-center gap-3",role:"group","aria-label":"Filter articles by topic",children:i.map(t=>e.jsx("button",{type:"button","aria-pressed":s===t,onClick:()=>l(t),className:`rounded-full border px-4 py-2 text-sm font-medium transition-colors duration-300 ${s===t?"border-cyan-300 bg-cyan-300/10 text-cyan-200":"border-slate-800 bg-slate-900/50 text-slate-400 hover:border-cyan-400/40 hover:text-slate-200"}`,children:t},t))}),e.jsxs("p",{className:"mb-6 text-center text-sm text-slate-400",children:["Showing ",r.length," of ",a.length," field notes. Claims are scoped to the ",e.jsx("a",{className:"text-cyan-300 hover:text-cyan-200",href:"https://doi.org/10.5281/zenodo.21941046",children:"v1.0.0 reference manual"}),"."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",children:r.map((t,o)=>e.jsxs(d,{to:`/blog/${t.id}`,className:"group relative flex flex-col bg-slate-900/50 backdrop-blur-xl border border-slate-800 rounded-3xl p-8 hover:bg-slate-800/50 hover:border-cyan-400/30 transition-all duration-500 animate-in fade-in slide-in-from-bottom-8",style:{animationDelay:`${o*100}ms`,animationFillMode:"both"},children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-cyan-400/5 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-500 rounded-3xl"}),e.jsxs("div",{className:"relative z-10 flex flex-col h-full",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 mb-6",children:[e.jsxs("div",{className:"flex items-center space-x-2 text-cyan-300",children:[e.jsx(m,{size:18}),e.jsx("span",{className:"text-sm font-semibold tracking-wider uppercase",children:"Article"})]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-2.5 py-1 text-[0.65rem] font-semibold uppercase tracking-wider text-slate-400",children:t.category})]}),e.jsx("h2",{className:"text-2xl font-bold mb-4 text-white group-hover:text-cyan-200 transition-colors duration-300",children:t.title}),e.jsx("p",{className:"text-slate-400 mb-8 flex-grow leading-relaxed",children:t.description}),e.jsxs("div",{className:"flex items-center justify-between mt-auto pt-6 border-t border-slate-800",children:[e.jsxs("div",{className:"flex items-center text-slate-400 text-sm",children:[e.jsx(x,{size:14,className:"mr-2"}),t.date]}),e.jsx(p,{size:18,className:"text-cyan-400 transform group-hover:translate-x-1 transition-transform duration-300"})]})]})]},t.id))})]})]})]})}export{v as default}; diff --git a/assets/Blog-GfQMeZ3H.js b/assets/Blog-GfQMeZ3H.js deleted file mode 100644 index 6866824e..00000000 --- a/assets/Blog-GfQMeZ3H.js +++ /dev/null @@ -1 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,L as d}from"./index-CcwlvHYJ.js";import{b as a}from"./blogData-OjR2ZtNr.js";import{B as x,k as m,l as p}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function j(){const[s,l]=o.useState("All"),i=["All",...Array.from(new Set(a.map(t=>t.category)))],r=s==="All"?a:a.filter(t=>t.category===s);return e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(c,{title:"Blog · QECTOR",description:"QECTOR field notes on quantum error correction, decoder algorithms, qLDPC, noise models, evidence, systems, and ecosystem integration."}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 left-1/2 -translate-x-1/2 w-[1000px] h-[500px] bg-cyan-400/10 blur-[120px] rounded-full pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-6 relative z-10",children:[e.jsxs("div",{className:"text-center mb-20 animate-in fade-in slide-in-from-bottom-8 duration-700",children:[e.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight mb-6 bg-gradient-to-br from-white to-slate-400 bg-clip-text text-transparent",children:["Engineering ",e.jsx("br",{}),e.jsx("span",{className:"text-cyan-300",children:"Fault Tolerance"})]}),e.jsx("p",{className:"text-xl text-slate-400 max-w-2xl mx-auto",children:"Field notes from parity checks to production interfaces: mathematics, decoder design, evidence, and systems practice for quantum error correction."})]}),e.jsx("div",{className:"mb-12 flex flex-wrap items-center justify-center gap-3",role:"group","aria-label":"Filter articles by topic",children:i.map(t=>e.jsx("button",{type:"button","aria-pressed":s===t,onClick:()=>l(t),className:`rounded-full border px-4 py-2 text-sm font-medium transition-colors duration-300 ${s===t?"border-cyan-300 bg-cyan-300/10 text-cyan-200":"border-slate-800 bg-slate-900/50 text-slate-400 hover:border-cyan-400/40 hover:text-slate-200"}`,children:t},t))}),e.jsxs("p",{className:"mb-6 text-center text-sm text-slate-400",children:["Showing ",r.length," of ",a.length," field notes. Claims are scoped to the ",e.jsx("a",{className:"text-cyan-300 hover:text-cyan-200",href:"https://doi.org/10.5281/zenodo.21941046",children:"v1.0.0 reference manual"}),"."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",children:r.map((t,n)=>e.jsxs(d,{to:`/blog/${t.id}`,className:"group relative flex flex-col bg-slate-900/50 backdrop-blur-xl border border-slate-800 rounded-3xl p-8 hover:bg-slate-800/50 hover:border-cyan-400/30 transition-all duration-500 animate-in fade-in slide-in-from-bottom-8",style:{animationDelay:`${n*100}ms`,animationFillMode:"both"},children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-cyan-400/5 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-500 rounded-3xl"}),e.jsxs("div",{className:"relative z-10 flex flex-col h-full",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 mb-6",children:[e.jsxs("div",{className:"flex items-center space-x-2 text-cyan-300",children:[e.jsx(x,{size:18}),e.jsx("span",{className:"text-sm font-semibold tracking-wider uppercase",children:"Article"})]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-2.5 py-1 text-[0.65rem] font-semibold uppercase tracking-wider text-slate-400",children:t.category})]}),e.jsx("h2",{className:"text-2xl font-bold mb-4 text-white group-hover:text-cyan-200 transition-colors duration-300",children:t.title}),e.jsx("p",{className:"text-slate-400 mb-8 flex-grow leading-relaxed",children:t.description}),e.jsxs("div",{className:"flex items-center justify-between mt-auto pt-6 border-t border-slate-800",children:[e.jsxs("div",{className:"flex items-center text-slate-400 text-sm",children:[e.jsx(m,{size:14,className:"mr-2"}),t.date]}),e.jsx(p,{size:18,className:"text-cyan-400 transform group-hover:translate-x-1 transition-transform duration-300"})]})]})]},t.id))})]})]})]})}export{j as default}; diff --git a/assets/Blog-U8RuDZLO.js b/assets/Blog-U8RuDZLO.js deleted file mode 100644 index 53f32e2a..00000000 --- a/assets/Blog-U8RuDZLO.js +++ /dev/null @@ -1 +0,0 @@ -import{r as n,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c}from"./index-BN-vOeL2.js";import{b as a}from"./blogData-OjR2ZtNr.js";import{L as d}from"./vendor-PiU4YGcH.js";import{B as m,k as x,l as p}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function v(){const[s,l]=n.useState("All"),i=["All",...Array.from(new Set(a.map(t=>t.category)))],r=s==="All"?a:a.filter(t=>t.category===s);return e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(c,{title:"Blog · QECTOR",description:"QECTOR field notes on quantum error correction, decoder algorithms, qLDPC, noise models, evidence, systems, and ecosystem integration."}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 left-1/2 -translate-x-1/2 w-[1000px] h-[500px] bg-cyan-400/10 blur-[120px] rounded-full pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-6 relative z-10",children:[e.jsxs("div",{className:"text-center mb-20 animate-in fade-in slide-in-from-bottom-8 duration-700",children:[e.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight mb-6 bg-gradient-to-br from-white to-slate-400 bg-clip-text text-transparent",children:["Engineering ",e.jsx("br",{}),e.jsx("span",{className:"text-cyan-300",children:"Fault Tolerance"})]}),e.jsx("p",{className:"text-xl text-slate-400 max-w-2xl mx-auto",children:"Field notes from parity checks to production interfaces: mathematics, decoder design, evidence, and systems practice for quantum error correction."})]}),e.jsx("div",{className:"mb-12 flex flex-wrap items-center justify-center gap-3",role:"group","aria-label":"Filter articles by topic",children:i.map(t=>e.jsx("button",{type:"button","aria-pressed":s===t,onClick:()=>l(t),className:`rounded-full border px-4 py-2 text-sm font-medium transition-colors duration-300 ${s===t?"border-cyan-300 bg-cyan-300/10 text-cyan-200":"border-slate-800 bg-slate-900/50 text-slate-400 hover:border-cyan-400/40 hover:text-slate-200"}`,children:t},t))}),e.jsxs("p",{className:"mb-6 text-center text-sm text-slate-400",children:["Showing ",r.length," of ",a.length," field notes. Claims are scoped to the ",e.jsx("a",{className:"text-cyan-300 hover:text-cyan-200",href:"https://doi.org/10.5281/zenodo.21941046",children:"v1.0.0 reference manual"}),"."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",children:r.map((t,o)=>e.jsxs(d,{to:`/blog/${t.id}`,className:"group relative flex flex-col bg-slate-900/50 backdrop-blur-xl border border-slate-800 rounded-3xl p-8 hover:bg-slate-800/50 hover:border-cyan-400/30 transition-all duration-500 animate-in fade-in slide-in-from-bottom-8",style:{animationDelay:`${o*100}ms`,animationFillMode:"both"},children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-cyan-400/5 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-500 rounded-3xl"}),e.jsxs("div",{className:"relative z-10 flex flex-col h-full",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 mb-6",children:[e.jsxs("div",{className:"flex items-center space-x-2 text-cyan-300",children:[e.jsx(m,{size:18}),e.jsx("span",{className:"text-sm font-semibold tracking-wider uppercase",children:"Article"})]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-2.5 py-1 text-[0.65rem] font-semibold uppercase tracking-wider text-slate-400",children:t.category})]}),e.jsx("h2",{className:"text-2xl font-bold mb-4 text-white group-hover:text-cyan-200 transition-colors duration-300",children:t.title}),e.jsx("p",{className:"text-slate-400 mb-8 flex-grow leading-relaxed",children:t.description}),e.jsxs("div",{className:"flex items-center justify-between mt-auto pt-6 border-t border-slate-800",children:[e.jsxs("div",{className:"flex items-center text-slate-400 text-sm",children:[e.jsx(x,{size:14,className:"mr-2"}),t.date]}),e.jsx(p,{size:18,className:"text-cyan-400 transform group-hover:translate-x-1 transition-transform duration-300"})]})]})]},t.id))})]})]})]})}export{v as default}; diff --git a/assets/Blog-k72nF5ZD.js b/assets/Blog-k72nF5ZD.js deleted file mode 100644 index d7494fd6..00000000 --- a/assets/Blog-k72nF5ZD.js +++ /dev/null @@ -1 +0,0 @@ -import{r as n,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c}from"./index-CxWP17m6.js";import{b as a}from"./blogData-OjR2ZtNr.js";import{L as d}from"./vendor-PiU4YGcH.js";import{B as m,k as x,l as p}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function v(){const[s,l]=n.useState("All"),i=["All",...Array.from(new Set(a.map(t=>t.category)))],r=s==="All"?a:a.filter(t=>t.category===s);return e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(c,{title:"Blog · QECTOR",description:"QECTOR field notes on quantum error correction, decoder algorithms, qLDPC, noise models, evidence, systems, and ecosystem integration."}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 left-1/2 -translate-x-1/2 w-[1000px] h-[500px] bg-cyan-400/10 blur-[120px] rounded-full pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-6 relative z-10",children:[e.jsxs("div",{className:"text-center mb-20 animate-in fade-in slide-in-from-bottom-8 duration-700",children:[e.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight mb-6 bg-gradient-to-br from-white to-slate-400 bg-clip-text text-transparent",children:["Engineering ",e.jsx("br",{}),e.jsx("span",{className:"text-cyan-300",children:"Fault Tolerance"})]}),e.jsx("p",{className:"text-xl text-slate-400 max-w-2xl mx-auto",children:"Field notes from parity checks to production interfaces: mathematics, decoder design, evidence, and systems practice for quantum error correction."})]}),e.jsx("div",{className:"mb-12 flex flex-wrap items-center justify-center gap-3",role:"group","aria-label":"Filter articles by topic",children:i.map(t=>e.jsx("button",{type:"button","aria-pressed":s===t,onClick:()=>l(t),className:`rounded-full border px-4 py-2 text-sm font-medium transition-colors duration-300 ${s===t?"border-cyan-300 bg-cyan-300/10 text-cyan-200":"border-slate-800 bg-slate-900/50 text-slate-400 hover:border-cyan-400/40 hover:text-slate-200"}`,children:t},t))}),e.jsxs("p",{className:"mb-6 text-center text-sm text-slate-400",children:["Showing ",r.length," of ",a.length," field notes. Claims are scoped to the ",e.jsx("a",{className:"text-cyan-300 hover:text-cyan-200",href:"https://doi.org/10.5281/zenodo.21941046",children:"v1.0.0 reference manual"}),"."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",children:r.map((t,o)=>e.jsxs(d,{to:`/blog/${t.id}`,className:"group relative flex flex-col bg-slate-900/50 backdrop-blur-xl border border-slate-800 rounded-3xl p-8 hover:bg-slate-800/50 hover:border-cyan-400/30 transition-all duration-500 animate-in fade-in slide-in-from-bottom-8",style:{animationDelay:`${o*100}ms`,animationFillMode:"both"},children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-cyan-400/5 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-500 rounded-3xl"}),e.jsxs("div",{className:"relative z-10 flex flex-col h-full",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 mb-6",children:[e.jsxs("div",{className:"flex items-center space-x-2 text-cyan-300",children:[e.jsx(m,{size:18}),e.jsx("span",{className:"text-sm font-semibold tracking-wider uppercase",children:"Article"})]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-2.5 py-1 text-[0.65rem] font-semibold uppercase tracking-wider text-slate-400",children:t.category})]}),e.jsx("h2",{className:"text-2xl font-bold mb-4 text-white group-hover:text-cyan-200 transition-colors duration-300",children:t.title}),e.jsx("p",{className:"text-slate-400 mb-8 flex-grow leading-relaxed",children:t.description}),e.jsxs("div",{className:"flex items-center justify-between mt-auto pt-6 border-t border-slate-800",children:[e.jsxs("div",{className:"flex items-center text-slate-400 text-sm",children:[e.jsx(x,{size:14,className:"mr-2"}),t.date]}),e.jsx(p,{size:18,className:"text-cyan-400 transform group-hover:translate-x-1 transition-transform duration-300"})]})]})]},t.id))})]})]})]})}export{v as default}; diff --git a/assets/BlogPost-6BWrUJEi.js b/assets/BlogPost-6BWrUJEi.js deleted file mode 100644 index a52fa49f..00000000 --- a/assets/BlogPost-6BWrUJEi.js +++ /dev/null @@ -1 +0,0 @@ -import{r as d,j as e,R as b}from"./vendor-react-BiHfrq0e.js";import{S as N,C as k}from"./index-DkYdPRY7.js";import{b as E}from"./blogData-OjR2ZtNr.js";import{M as C,r as A,a as L,b as B,c as P}from"./vendor-md-CLKxNZoa.js";import{C as z,L as j}from"./vendor-PiU4YGcH.js";import{m as F,k as S,n as $}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function u(t){return typeof t=="string"?t:typeof t=="number"?String(t):t?Array.isArray(t)?t.map(u).join(""):typeof t=="object"&&"props"in t?u(t.props.children):"":""}function R(t){return t.replace(/\$[^$]*\$/g,"").replace(/\\[a-zA-Z]+\{[^}]*\}/g,"").replace(/[\\{}]/g,"").toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")}function i(t){return function({children:x,...m}){const h=u(x),p=m.id||R(h);return e.jsx(t,{...m,id:p,children:x})}}const M={h1:i("h1"),h2:i("h2"),h3:i("h3"),h4:i("h4"),h5:i("h5"),h6:i("h6")};function G(){const{id:t}=z(),r=E.find(s=>s.id===t),[x,m]=d.useState(""),[h,p]=d.useState(null),[y,f]=d.useState(null);d.useEffect(()=>{if(!r)return;const s=new AbortController,n=r.filename;return fetch(`/blog/${n}`,{signal:s.signal}).then(a=>{if(!a.ok)throw new Error("Failed to load post");return a.text()}).then(a=>{const o=a.replace(/^\s*#[^#\n]*\r?\n/,"");m(o),p(n),f(null)}).catch(a=>{a instanceof DOMException&&a.name==="AbortError"||(console.error(a),p(n),f(n))}),()=>s.abort()},[r]);const w=!!(r&&h!==r.filename),v=!!(r&&y===r.filename);return d.useEffect(()=>{function s(n){const o=n.target.closest("a");if(!o)return;const l=o.getAttribute("href");if(!l||!l.startsWith("#"))return;n.preventDefault();const c=document.getElementById(l.slice(1));c&&(c.scrollIntoView({behavior:"smooth",block:"start"}),window.history.pushState(null,"",l))}return document.addEventListener("click",s),()=>document.removeEventListener("click",s)},[]),r?e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(N,{title:`${r.title} - QECTOR Blog`,description:r.description}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 right-0 w-[800px] h-[800px] bg-cyan-900/10 blur-[120px] rounded-full pointer-events-none -translate-y-1/2 translate-x-1/3"}),e.jsx("div",{className:"absolute bottom-0 left-0 w-[600px] h-[600px] bg-slate-800/20 blur-[100px] rounded-full pointer-events-none translate-y-1/3 -translate-x-1/3"}),e.jsxs("div",{className:"max-w-4xl mx-auto px-6 relative z-10",children:[e.jsxs(j,{to:"/blog",className:"inline-flex items-center min-h-[44px] text-slate-400 hover:text-cyan-300 mb-12 transition-colors duration-300 font-medium tracking-wide",children:[e.jsx(F,{size:18,className:"mr-2"}),"Back to All Articles"]}),e.jsxs("header",{className:"mb-16 border-b border-slate-800/60 pb-10",children:[e.jsxs("div",{className:"flex flex-wrap items-center text-cyan-300 mb-6 gap-4",children:[e.jsxs("span",{className:"flex items-center text-sm font-semibold tracking-widest uppercase",children:[e.jsx(S,{size:16,className:"mr-2"}),r.date]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-3 py-1 text-xs font-semibold tracking-wider text-slate-400",children:r.category})]}),e.jsx("h1",{className:"text-4xl md:text-5xl lg:text-6xl font-extrabold tracking-tight mb-8 leading-tight text-white",children:r.title}),e.jsx("p",{className:"text-xl text-slate-300 leading-relaxed max-w-3xl",children:r.description})]}),e.jsx("div",{className:"bg-slate-900/40 backdrop-blur-md border border-slate-800/80 rounded-3xl p-8 md:p-12 shadow-2xl",children:w?e.jsxs("div",{className:"flex flex-col items-center justify-center py-20 text-slate-400",children:[e.jsx($,{size:48,className:"animate-spin text-cyan-400 mb-4"}),e.jsx("p",{className:"animate-pulse",children:"Loading article..."})]}):v?e.jsx("div",{className:"py-20 text-center text-red-400",children:e.jsx("p",{children:"Failed to load the article. Please try again later."})}):e.jsx("article",{className:"prose prose-invert prose-cyan max-w-none prose-headings:font-bold prose-headings:tracking-tight prose-a:text-cyan-300 prose-a:no-underline hover:prose-a:underline prose-code:text-cyan-200 prose-code:bg-cyan-950/30 prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded-md prose-pre:bg-slate-950/80 prose-pre:border prose-pre:border-slate-800 prose-img:rounded-xl prose-img:border prose-img:border-slate-800",children:e.jsx(C,{remarkPlugins:[B,P],rehypePlugins:[A,L],components:{...M,table:s=>{const{node:n,...a}=s;return e.jsx("div",{className:"overflow-x-auto",children:e.jsx("table",{...a})})},pre:s=>{const{children:n}=s,a=b.Children.toArray(n)[0];let o="",l="text";if(b.isValidElement(a)){const c=a.props,g=/language-([\w-]+)/.exec(c.className||"");g&&(l=g[1]),o=u(c.children).replace(/\n$/,"")}return e.jsx(k,{code:o,language:l,className:"not-prose"})},img:s=>{const n=s.width!=null&&s.height!=null;return e.jsx("img",{...s,className:n?"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto":"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto aspect-video object-cover",loading:"lazy"})}},children:x})})})]})]})]}):e.jsx("div",{className:"min-h-screen bg-slate-950 text-slate-50 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx("h1",{className:"text-4xl font-bold mb-4",children:"Post Not Found"}),e.jsx(j,{to:"/blog",className:"text-cyan-300 hover:text-cyan-200",children:"Return to Blog"})]})})}export{G as default}; diff --git a/assets/BlogPost-7-Xf40jM.js b/assets/BlogPost-7-Xf40jM.js deleted file mode 100644 index 3f19eef8..00000000 --- a/assets/BlogPost-7-Xf40jM.js +++ /dev/null @@ -1 +0,0 @@ -import{r as d,j as e,R as b}from"./vendor-react-BiHfrq0e.js";import{S as N,C as k}from"./index-DlmjLVYe.js";import{b as E}from"./blogData-OjR2ZtNr.js";import{M as C,r as A,a as L,b as B,c as P}from"./vendor-md-CLKxNZoa.js";import{C as z,L as j}from"./vendor-PiU4YGcH.js";import{m as F,k as S,n as $}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function u(t){return typeof t=="string"?t:typeof t=="number"?String(t):t?Array.isArray(t)?t.map(u).join(""):typeof t=="object"&&"props"in t?u(t.props.children):"":""}function R(t){return t.replace(/\$[^$]*\$/g,"").replace(/\\[a-zA-Z]+\{[^}]*\}/g,"").replace(/[\\{}]/g,"").toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")}function i(t){return function({children:x,...m}){const h=u(x),p=m.id||R(h);return e.jsx(t,{...m,id:p,children:x})}}const M={h1:i("h1"),h2:i("h2"),h3:i("h3"),h4:i("h4"),h5:i("h5"),h6:i("h6")};function G(){const{id:t}=z(),r=E.find(s=>s.id===t),[x,m]=d.useState(""),[h,p]=d.useState(null),[y,f]=d.useState(null);d.useEffect(()=>{if(!r)return;const s=new AbortController,n=r.filename;return fetch(`/blog/${n}`,{signal:s.signal}).then(a=>{if(!a.ok)throw new Error("Failed to load post");return a.text()}).then(a=>{const o=a.replace(/^\s*#[^#\n]*\r?\n/,"");m(o),p(n),f(null)}).catch(a=>{a instanceof DOMException&&a.name==="AbortError"||(console.error(a),p(n),f(n))}),()=>s.abort()},[r]);const w=!!(r&&h!==r.filename),v=!!(r&&y===r.filename);return d.useEffect(()=>{function s(n){const o=n.target.closest("a");if(!o)return;const l=o.getAttribute("href");if(!l||!l.startsWith("#"))return;n.preventDefault();const c=document.getElementById(l.slice(1));c&&(c.scrollIntoView({behavior:"smooth",block:"start"}),window.history.pushState(null,"",l))}return document.addEventListener("click",s),()=>document.removeEventListener("click",s)},[]),r?e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(N,{title:`${r.title} - QECTOR Blog`,description:r.description}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 right-0 w-[800px] h-[800px] bg-cyan-900/10 blur-[120px] rounded-full pointer-events-none -translate-y-1/2 translate-x-1/3"}),e.jsx("div",{className:"absolute bottom-0 left-0 w-[600px] h-[600px] bg-slate-800/20 blur-[100px] rounded-full pointer-events-none translate-y-1/3 -translate-x-1/3"}),e.jsxs("div",{className:"max-w-4xl mx-auto px-6 relative z-10",children:[e.jsxs(j,{to:"/blog",className:"inline-flex items-center min-h-[44px] text-slate-400 hover:text-cyan-300 mb-12 transition-colors duration-300 font-medium tracking-wide",children:[e.jsx(F,{size:18,className:"mr-2"}),"Back to All Articles"]}),e.jsxs("header",{className:"mb-16 border-b border-slate-800/60 pb-10",children:[e.jsxs("div",{className:"flex flex-wrap items-center text-cyan-300 mb-6 gap-4",children:[e.jsxs("span",{className:"flex items-center text-sm font-semibold tracking-widest uppercase",children:[e.jsx(S,{size:16,className:"mr-2"}),r.date]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-3 py-1 text-xs font-semibold tracking-wider text-slate-400",children:r.category})]}),e.jsx("h1",{className:"text-4xl md:text-5xl lg:text-6xl font-extrabold tracking-tight mb-8 leading-tight text-white",children:r.title}),e.jsx("p",{className:"text-xl text-slate-300 leading-relaxed max-w-3xl",children:r.description})]}),e.jsx("div",{className:"bg-slate-900/40 backdrop-blur-md border border-slate-800/80 rounded-3xl p-8 md:p-12 shadow-2xl",children:w?e.jsxs("div",{className:"flex flex-col items-center justify-center py-20 text-slate-400",children:[e.jsx($,{size:48,className:"animate-spin text-cyan-400 mb-4"}),e.jsx("p",{className:"animate-pulse",children:"Loading article..."})]}):v?e.jsx("div",{className:"py-20 text-center text-red-400",children:e.jsx("p",{children:"Failed to load the article. Please try again later."})}):e.jsx("article",{className:"prose prose-invert prose-cyan max-w-none prose-headings:font-bold prose-headings:tracking-tight prose-a:text-cyan-300 prose-a:no-underline hover:prose-a:underline prose-code:text-cyan-200 prose-code:bg-cyan-950/30 prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded-md prose-pre:bg-slate-950/80 prose-pre:border prose-pre:border-slate-800 prose-img:rounded-xl prose-img:border prose-img:border-slate-800",children:e.jsx(C,{remarkPlugins:[B,P],rehypePlugins:[A,L],components:{...M,table:s=>{const{node:n,...a}=s;return e.jsx("div",{className:"overflow-x-auto",children:e.jsx("table",{...a})})},pre:s=>{const{children:n}=s,a=b.Children.toArray(n)[0];let o="",l="text";if(b.isValidElement(a)){const c=a.props,g=/language-([\w-]+)/.exec(c.className||"");g&&(l=g[1]),o=u(c.children).replace(/\n$/,"")}return e.jsx(k,{code:o,language:l,className:"not-prose"})},img:s=>{const n=s.width!=null&&s.height!=null;return e.jsx("img",{...s,className:n?"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto":"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto aspect-video object-cover",loading:"lazy"})}},children:x})})})]})]})]}):e.jsx("div",{className:"min-h-screen bg-slate-950 text-slate-50 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx("h1",{className:"text-4xl font-bold mb-4",children:"Post Not Found"}),e.jsx(j,{to:"/blog",className:"text-cyan-300 hover:text-cyan-200",children:"Return to Blog"})]})})}export{G as default}; diff --git a/assets/BlogPost-BD36pT-C.js b/assets/BlogPost-BD36pT-C.js deleted file mode 100644 index b11b7eb8..00000000 --- a/assets/BlogPost-BD36pT-C.js +++ /dev/null @@ -1 +0,0 @@ -import{r as d,j as e,R as j}from"./vendor-react-BiHfrq0e.js";import{S as k,C as E}from"./index-B9kEGiWi.js";import{b as C}from"./blogData-OjR2ZtNr.js";import{M as A,r as L,a as B,b as P,c as z}from"./vendor-md-CLKxNZoa.js";import{C as F,L as y}from"./vendor-PiU4YGcH.js";import{m as S,k as $,n as R}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function u(t){return typeof t=="string"?t:typeof t=="number"?String(t):t?Array.isArray(t)?t.map(u).join(""):typeof t=="object"&&"props"in t?u(t.props.children):"":""}function M(t){return t.replace(/\$[^$]*\$/g,"").replace(/\\[a-zA-Z]+\{[^}]*\}/g,"").replace(/[\\{}]/g,"").toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")}function i(t){return function({children:x,...m}){const h=u(x),p=m.id||M(h);return e.jsx(t,{...m,id:p,children:x})}}const I={h1:i("h1"),h2:i("h2"),h3:i("h3"),h4:i("h4"),h5:i("h5"),h6:i("h6")};function G(){const{id:t}=F(),r=C.find(s=>s.id===t),[x,m]=d.useState(""),[h,p]=d.useState(null),[w,f]=d.useState(null);d.useEffect(()=>{if(!r)return;const s=new AbortController,n=r.filename;return fetch(`/blog/${n}`,{signal:s.signal}).then(a=>{if(!a.ok)throw new Error("Failed to load post");return a.text()}).then(a=>{const o=a.replace(/^\s*#[^#\n]*\r?\n/,"");m(o),p(n),f(null)}).catch(a=>{a instanceof DOMException&&a.name==="AbortError"||(console.error(a),p(n),f(n))}),()=>s.abort()},[r]);const v=!!(r&&h!==r.filename),N=!!(r&&w===r.filename);return d.useEffect(()=>{function s(n){const o=n.target.closest("a");if(!o)return;const l=o.getAttribute("href");if(!l||!l.startsWith("#"))return;n.preventDefault();const c=document.getElementById(l.slice(1));c&&(c.scrollIntoView({behavior:"smooth",block:"start"}),window.history.pushState(null,"",l))}return document.addEventListener("click",s),()=>document.removeEventListener("click",s)},[]),r?e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(k,{title:`${r.title} - QECTOR Blog`,description:r.description}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 right-0 w-[800px] h-[800px] bg-cyan-900/10 blur-[120px] rounded-full pointer-events-none -translate-y-1/2 translate-x-1/3"}),e.jsx("div",{className:"absolute bottom-0 left-0 w-[600px] h-[600px] bg-slate-800/20 blur-[100px] rounded-full pointer-events-none translate-y-1/3 -translate-x-1/3"}),e.jsxs("div",{className:"max-w-4xl mx-auto px-6 relative z-10",children:[e.jsxs(y,{to:"/blog",className:"inline-flex items-center min-h-[44px] text-slate-400 hover:text-cyan-300 mb-12 transition-colors duration-300 font-medium tracking-wide",children:[e.jsx(S,{size:18,className:"mr-2"}),"Back to All Articles"]}),e.jsxs("header",{className:"mb-16 border-b border-slate-800/60 pb-10",children:[e.jsxs("div",{className:"flex flex-wrap items-center text-cyan-300 mb-6 gap-4",children:[e.jsxs("span",{className:"flex items-center text-sm font-semibold tracking-widest uppercase",children:[e.jsx($,{size:16,className:"mr-2"}),r.date]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-3 py-1 text-xs font-semibold tracking-wider text-slate-400",children:r.category})]}),e.jsx("h1",{className:"text-4xl md:text-5xl lg:text-6xl font-extrabold tracking-tight mb-8 leading-tight text-white",children:r.title}),e.jsx("p",{className:"text-xl text-slate-300 leading-relaxed max-w-3xl",children:r.description})]}),e.jsx("div",{className:"bg-slate-900/40 backdrop-blur-md border border-slate-800/80 rounded-3xl p-8 md:p-12 shadow-2xl",children:v?e.jsxs("div",{className:"flex flex-col items-center justify-center py-20 text-slate-400",children:[e.jsx(R,{size:48,className:"animate-spin text-cyan-400 mb-4"}),e.jsx("p",{className:"animate-pulse",children:"Loading article..."})]}):N?e.jsx("div",{className:"py-20 text-center text-red-400",children:e.jsx("p",{children:"Failed to load the article. Please try again later."})}):e.jsx("article",{className:"prose prose-invert prose-cyan max-w-none prose-headings:font-bold prose-headings:tracking-tight prose-a:text-cyan-300 prose-a:no-underline hover:prose-a:underline prose-code:text-cyan-200 prose-code:bg-cyan-950/30 prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded-md prose-pre:bg-slate-950/80 prose-pre:border prose-pre:border-slate-800 prose-img:rounded-xl prose-img:border prose-img:border-slate-800",children:e.jsx(A,{remarkPlugins:[P,z],rehypePlugins:[L,B],components:{...I,table:s=>{const{node:n,...a}=s;return e.jsx("div",{className:"overflow-x-auto",children:e.jsx("table",{...a})})},pre:s=>{const{node:n,children:a}=s,o=j.Children.toArray(a)[0];let l="",c="text";if(j.isValidElement(o)){const g=o.props,b=/language-([\w-]+)/.exec(g.className||"");b&&(c=b[1]),l=u(g.children).replace(/\n$/,"")}return e.jsx(E,{code:l,language:c,className:"not-prose"})},img:s=>{const n=s.width!=null&&s.height!=null;return e.jsx("img",{...s,className:n?"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto":"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto aspect-video object-cover",loading:"lazy"})}},children:x})})})]})]})]}):e.jsx("div",{className:"min-h-screen bg-slate-950 text-slate-50 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx("h1",{className:"text-4xl font-bold mb-4",children:"Post Not Found"}),e.jsx(y,{to:"/blog",className:"text-cyan-300 hover:text-cyan-200",children:"Return to Blog"})]})})}export{G as default}; diff --git a/assets/BlogPost-Bf5JMy3h.js b/assets/BlogPost-Bf5JMy3h.js deleted file mode 100644 index 6fce6778..00000000 --- a/assets/BlogPost-Bf5JMy3h.js +++ /dev/null @@ -1 +0,0 @@ -import{r as d,j as e,R as j}from"./vendor-react-BiHfrq0e.js";import{S as k,C as E}from"./index-BcbVjARk.js";import{b as C}from"./blogData-OjR2ZtNr.js";import{M as A,r as L,a as B,b as P,c as z}from"./vendor-md-CLKxNZoa.js";import{C as F,L as y}from"./vendor-PiU4YGcH.js";import{m as S,k as $,n as R}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function u(t){return typeof t=="string"?t:typeof t=="number"?String(t):t?Array.isArray(t)?t.map(u).join(""):typeof t=="object"&&"props"in t?u(t.props.children):"":""}function M(t){return t.replace(/\$[^$]*\$/g,"").replace(/\\[a-zA-Z]+\{[^}]*\}/g,"").replace(/[\\{}]/g,"").toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")}function i(t){return function({children:x,...m}){const h=u(x),p=m.id||M(h);return e.jsx(t,{...m,id:p,children:x})}}const I={h1:i("h1"),h2:i("h2"),h3:i("h3"),h4:i("h4"),h5:i("h5"),h6:i("h6")};function G(){const{id:t}=F(),r=C.find(s=>s.id===t),[x,m]=d.useState(""),[h,p]=d.useState(null),[w,f]=d.useState(null);d.useEffect(()=>{if(!r)return;const s=new AbortController,n=r.filename;return fetch(`/blog/${n}`,{signal:s.signal}).then(a=>{if(!a.ok)throw new Error("Failed to load post");return a.text()}).then(a=>{const o=a.replace(/^\s*#[^#\n]*\r?\n/,"");m(o),p(n),f(null)}).catch(a=>{a instanceof DOMException&&a.name==="AbortError"||(console.error(a),p(n),f(n))}),()=>s.abort()},[r]);const v=!!(r&&h!==r.filename),N=!!(r&&w===r.filename);return d.useEffect(()=>{function s(n){const o=n.target.closest("a");if(!o)return;const l=o.getAttribute("href");if(!l||!l.startsWith("#"))return;n.preventDefault();const c=document.getElementById(l.slice(1));c&&(c.scrollIntoView({behavior:"smooth",block:"start"}),window.history.pushState(null,"",l))}return document.addEventListener("click",s),()=>document.removeEventListener("click",s)},[]),r?e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(k,{title:`${r.title} - QECTOR Blog`,description:r.description}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 right-0 w-[800px] h-[800px] bg-cyan-900/10 blur-[120px] rounded-full pointer-events-none -translate-y-1/2 translate-x-1/3"}),e.jsx("div",{className:"absolute bottom-0 left-0 w-[600px] h-[600px] bg-slate-800/20 blur-[100px] rounded-full pointer-events-none translate-y-1/3 -translate-x-1/3"}),e.jsxs("div",{className:"max-w-4xl mx-auto px-6 relative z-10",children:[e.jsxs(y,{to:"/blog",className:"inline-flex items-center min-h-[44px] text-slate-400 hover:text-cyan-300 mb-12 transition-colors duration-300 font-medium tracking-wide",children:[e.jsx(S,{size:18,className:"mr-2"}),"Back to All Articles"]}),e.jsxs("header",{className:"mb-16 border-b border-slate-800/60 pb-10",children:[e.jsxs("div",{className:"flex flex-wrap items-center text-cyan-300 mb-6 gap-4",children:[e.jsxs("span",{className:"flex items-center text-sm font-semibold tracking-widest uppercase",children:[e.jsx($,{size:16,className:"mr-2"}),r.date]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-3 py-1 text-xs font-semibold tracking-wider text-slate-400",children:r.category})]}),e.jsx("h1",{className:"text-4xl md:text-5xl lg:text-6xl font-extrabold tracking-tight mb-8 leading-tight text-white",children:r.title}),e.jsx("p",{className:"text-xl text-slate-300 leading-relaxed max-w-3xl",children:r.description})]}),e.jsx("div",{className:"bg-slate-900/40 backdrop-blur-md border border-slate-800/80 rounded-3xl p-8 md:p-12 shadow-2xl",children:v?e.jsxs("div",{className:"flex flex-col items-center justify-center py-20 text-slate-400",children:[e.jsx(R,{size:48,className:"animate-spin text-cyan-400 mb-4"}),e.jsx("p",{className:"animate-pulse",children:"Loading article..."})]}):N?e.jsx("div",{className:"py-20 text-center text-red-400",children:e.jsx("p",{children:"Failed to load the article. Please try again later."})}):e.jsx("article",{className:"prose prose-invert prose-cyan max-w-none prose-headings:font-bold prose-headings:tracking-tight prose-a:text-cyan-300 prose-a:no-underline hover:prose-a:underline prose-code:text-cyan-200 prose-code:bg-cyan-950/30 prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded-md prose-pre:bg-slate-950/80 prose-pre:border prose-pre:border-slate-800 prose-img:rounded-xl prose-img:border prose-img:border-slate-800",children:e.jsx(A,{remarkPlugins:[P,z],rehypePlugins:[L,B],components:{...I,table:s=>{const{node:n,...a}=s;return e.jsx("div",{className:"overflow-x-auto",children:e.jsx("table",{...a})})},pre:s=>{const{node:n,children:a}=s,o=j.Children.toArray(a)[0];let l="",c="text";if(j.isValidElement(o)){const g=o.props,b=/language-([\w-]+)/.exec(g.className||"");b&&(c=b[1]),l=u(g.children).replace(/\n$/,"")}return e.jsx(E,{code:l,language:c,className:"not-prose"})},img:s=>{const n=s.width!=null&&s.height!=null;return e.jsx("img",{...s,className:n?"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto":"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto aspect-video object-cover",loading:"lazy"})}},children:x})})})]})]})]}):e.jsx("div",{className:"min-h-screen bg-slate-950 text-slate-50 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx("h1",{className:"text-4xl font-bold mb-4",children:"Post Not Found"}),e.jsx(y,{to:"/blog",className:"text-cyan-300 hover:text-cyan-200",children:"Return to Blog"})]})})}export{G as default}; diff --git a/assets/BlogPost-BrBVXcyO.js b/assets/BlogPost-BrBVXcyO.js deleted file mode 100644 index 2e06b5a2..00000000 --- a/assets/BlogPost-BrBVXcyO.js +++ /dev/null @@ -1 +0,0 @@ -import{r as x,j as e,R as j}from"./vendor-react-BiHfrq0e.js";import{S as w,C as k}from"./index-abfjMTlQ.js";import{b as E}from"./blogData-OjR2ZtNr.js";import{M as C,r as A,a as L,b as B,c as P}from"./vendor-md-CLKxNZoa.js";import{C as $,L as f}from"./vendor-PiU4YGcH.js";import{m as z,k as F,n as M}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function u(t){return typeof t=="string"?t:typeof t=="number"?String(t):t?Array.isArray(t)?t.map(u).join(""):typeof t=="object"&&"props"in t?u(t.props.children):"":""}function S(t){return t.replace(/\$[^$]*\$/g,"").replace(/\\[a-zA-Z]+\{[^}]*\}/g,"").replace(/[\\{}]/g,"").toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")}function c(t){return function({children:i,...m}){const h=u(i),p=m.id||S(h);return e.jsx(t,{...m,id:p,children:i})}}const R={h1:c("h1"),h2:c("h2"),h3:c("h3"),h4:c("h4"),h5:c("h5"),h6:c("h6")};function W(){const{id:t}=$(),s=E.find(r=>r.id===t),[i,m]=x.useState(""),[h,p]=x.useState(null),[y,g]=x.useState(null);x.useEffect(()=>{if(!s)return;const r=new AbortController,n=s.filename;return fetch(`/blog/${n}`,{signal:r.signal}).then(a=>{if(!a.ok)throw new Error("Failed to load post");return a.text()}).then(a=>{const o=a.replace(/^\s*#[^#\n]*\r?\n/,"");m(o),p(n),g(null)}).catch(a=>{a instanceof DOMException&&a.name==="AbortError"||(console.error(a),p(n),g(n))}),()=>r.abort()},[s]);const N=!!(s&&h!==s.filename),v=!!(s&&y===s.filename);return x.useEffect(()=>{function r(n){const o=n.target.closest("a");if(!o)return;const l=o.getAttribute("href");if(!l||!l.startsWith("#"))return;n.preventDefault();const d=document.getElementById(l.slice(1));d&&(d.scrollIntoView({behavior:"smooth",block:"start"}),window.history.pushState(null,"",l))}return document.addEventListener("click",r),()=>document.removeEventListener("click",r)},[]),s?e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(w,{title:`${s.title} - QECTOR Blog`,description:s.description}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 right-0 w-[800px] h-[800px] bg-cyan-900/10 blur-[120px] rounded-full pointer-events-none -translate-y-1/2 translate-x-1/3"}),e.jsx("div",{className:"absolute bottom-0 left-0 w-[600px] h-[600px] bg-slate-800/20 blur-[100px] rounded-full pointer-events-none translate-y-1/3 -translate-x-1/3"}),e.jsxs("div",{className:"max-w-4xl mx-auto px-6 relative z-10",children:[e.jsxs(f,{to:"/blog",className:"inline-flex items-center min-h-[44px] text-slate-400 hover:text-cyan-300 mb-12 transition-colors duration-300 font-medium tracking-wide",children:[e.jsx(z,{size:18,className:"mr-2"}),"Back to All Articles"]}),e.jsxs("header",{className:"mb-16 border-b border-slate-800/60 pb-10",children:[e.jsxs("div",{className:"flex flex-wrap items-center text-cyan-300 mb-6 gap-4",children:[e.jsxs("span",{className:"flex items-center text-sm font-semibold tracking-widest uppercase",children:[e.jsx(F,{size:16,className:"mr-2"}),s.date]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-3 py-1 text-xs font-semibold tracking-wider text-slate-400",children:s.category}),e.jsxs("span",{className:"text-sm text-slate-400",children:["By ",e.jsx(f,{to:"/guillaume-lessard",className:"hover:text-cyan-300",children:"Guillaume Lessard"}),i?` · ${Math.max(1,Math.round(i.split(/\s+/).length/220))} min read`:""]})]}),e.jsx("h1",{className:"text-4xl md:text-5xl lg:text-6xl font-extrabold tracking-tight mb-8 leading-tight text-white",children:s.title}),e.jsx("p",{className:"text-xl text-slate-300 leading-relaxed max-w-3xl",children:s.description})]}),e.jsx("div",{className:"bg-slate-900/40 backdrop-blur-md border border-slate-800/80 rounded-3xl p-8 md:p-12 shadow-2xl",children:N?e.jsxs("div",{className:"flex flex-col items-center justify-center py-20 text-slate-400",children:[e.jsx(M,{size:48,className:"animate-spin text-cyan-400 mb-4"}),e.jsx("p",{className:"animate-pulse",children:"Loading article..."})]}):v?e.jsx("div",{className:"py-20 text-center text-red-400",children:e.jsx("p",{children:"Failed to load the article. Please try again later."})}):e.jsx("article",{className:"prose prose-invert prose-cyan max-w-none prose-headings:font-bold prose-headings:tracking-tight prose-a:text-cyan-300 prose-a:no-underline hover:prose-a:underline prose-code:text-cyan-200 prose-code:bg-cyan-950/30 prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded-md prose-pre:bg-slate-950/80 prose-pre:border prose-pre:border-slate-800 prose-img:rounded-xl prose-img:border prose-img:border-slate-800",children:e.jsx(C,{remarkPlugins:[B,P],rehypePlugins:[A,L],components:{...R,table:r=>{const{node:n,...a}=r;return e.jsx("div",{className:"overflow-x-auto",children:e.jsx("table",{...a})})},pre:r=>{const{children:n}=r,a=j.Children.toArray(n)[0];let o="",l="text";if(j.isValidElement(a)){const d=a.props,b=/language-([\w-]+)/.exec(d.className||"");b&&(l=b[1]),o=u(d.children).replace(/\n$/,"")}return e.jsx(k,{code:o,language:l,className:"not-prose"})},img:r=>{const n=r.width!=null&&r.height!=null;return e.jsx("img",{...r,className:n?"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto":"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto aspect-video object-cover",loading:"lazy"})}},children:i})})})]})]})]}):e.jsx("div",{className:"min-h-screen bg-slate-950 text-slate-50 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx("h1",{className:"text-4xl font-bold mb-4",children:"Post Not Found"}),e.jsx(f,{to:"/blog",className:"text-cyan-300 hover:text-cyan-200",children:"Return to Blog"})]})})}export{W as default}; diff --git a/assets/BlogPost-Cflzrvst.js b/assets/BlogPost-Cflzrvst.js deleted file mode 100644 index 78d76246..00000000 --- a/assets/BlogPost-Cflzrvst.js +++ /dev/null @@ -1,292 +0,0 @@ -import{g as zs,j as pe,r as Xr,R as Fi}from"./vendor-react-BiHfrq0e.js";import{b as Bc,L as P0,S as Fc,C as Hc}from"./index-CCmwjNGU.js";import{b as zc}from"./blogData-OjR2ZtNr.js";import{m as Uc,k as qc,n as Yc}from"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";function Hi(e){const t=[],r=String(e||"");let n=r.indexOf(","),a=0,i=!1;for(;!i;){n===-1&&(n=r.length,i=!0);const u=r.slice(a,n).trim();(u||!i)&&t.push(u),a=n+1,n=r.indexOf(",",a)}return t}function Us(e,t){const r={};return(e[e.length-1]===""?[...e,""]:e).join((r.padRight?" ":"")+","+(r.padLeft===!1?"":" ")).trim()}const Gc=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,Vc=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,jc={};function zi(e,t){return(jc.jsx?Vc:Gc).test(e)}const Wc=/[ \t\n\f\r]/g;function Xc(e){return typeof e=="object"?e.type==="text"?Ui(e.value):!1:Ui(e)}function Ui(e){return e.replace(Wc,"")===""}class Tn{constructor(t,r,n){this.normal=r,this.property=t,n&&(this.space=n)}}Tn.prototype.normal={};Tn.prototype.property={};Tn.prototype.space=void 0;function qs(e,t){const r={},n={};for(const a of e)Object.assign(r,a.property),Object.assign(n,a.normal);return new Tn(r,n,t)}function fn(e){return e.toLowerCase()}class nt{constructor(t,r){this.attribute=r,this.property=t}}nt.prototype.attribute="";nt.prototype.booleanish=!1;nt.prototype.boolean=!1;nt.prototype.commaOrSpaceSeparated=!1;nt.prototype.commaSeparated=!1;nt.prototype.defined=!1;nt.prototype.mustUseProperty=!1;nt.prototype.number=!1;nt.prototype.overloadedBoolean=!1;nt.prototype.property="";nt.prototype.spaceSeparated=!1;nt.prototype.space=void 0;let $c=0;const le=gr(),Le=gr(),Ea=gr(),q=gr(),ye=gr(),fr=gr(),st=gr();function gr(){return 2**++$c}const Ta=Object.freeze(Object.defineProperty({__proto__:null,boolean:le,booleanish:Le,commaOrSpaceSeparated:st,commaSeparated:fr,number:q,overloadedBoolean:Ea,spaceSeparated:ye},Symbol.toStringTag,{value:"Module"})),B0=Object.keys(Ta);class Za extends nt{constructor(t,r,n,a){let i=-1;if(super(t,r),qi(this,"space",a),typeof n=="number")for(;++i4&&r.slice(0,4)==="data"&&e1.test(t)){if(t.charAt(4)==="-"){const i=t.slice(5).replace(Yi,r1);n="data"+i.charAt(0).toUpperCase()+i.slice(1)}else{const i=t.slice(4);if(!Yi.test(i)){let u=i.replace(Zc,t1);u.charAt(0)!=="-"&&(u="-"+u),t="data"+u}}a=Za}return new a(n,t)}function t1(e){return"-"+e.toLowerCase()}function r1(e){return e.charAt(1).toUpperCase()}const xn=qs([Ys,Qc,js,Ws,Xs],"html"),rr=qs([Ys,Kc,js,Ws,Xs],"svg");function Gi(e){const t=String(e||"").trim();return t?t.split(/[ \t\n\r\f]+/g):[]}function $s(e){return e.join(" ").trim()}var Ar={},F0,Vi;function n1(){if(Vi)return F0;Vi=1;var e=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,t=/\n/g,r=/^\s*/,n=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,a=/^:\s*/,i=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,u=/^[;\s]*/,s=/^\s+|\s+$/g,l=` -`,c="/",d="*",f="",g="comment",p="declaration";function x(D,_){if(typeof D!="string")throw new TypeError("First argument must be a string");if(!D)return[];_=_||{};var N=1,M=1;function W(ne){var X=ne.match(t);X&&(N+=X.length);var me=ne.lastIndexOf(l);M=~me?ne.length-me:M+ne.length}function j(){var ne={line:N,column:M};return function(X){return X.position=new L(ne),K(),X}}function L(ne){this.start=ne,this.end={line:N,column:M},this.source=_.source}L.prototype.content=D;function ee(ne){var X=new Error(_.source+":"+N+":"+M+": "+ne);if(X.reason=ne,X.filename=_.source,X.line=N,X.column=M,X.source=D,!_.silent)throw X}function re(ne){var X=ne.exec(D);if(X){var me=X[0];return W(me),D=D.slice(me.length),X}}function K(){re(r)}function R(ne){var X;for(ne=ne||[];X=J();)X!==!1&&ne.push(X);return ne}function J(){var ne=j();if(!(c!=D.charAt(0)||d!=D.charAt(1))){for(var X=2;f!=D.charAt(X)&&(d!=D.charAt(X)||c!=D.charAt(X+1));)++X;if(X+=2,f===D.charAt(X-1))return ee("End of comment missing");var me=D.slice(2,X-2);return M+=2,W(me),D=D.slice(X),M+=2,ne({type:g,comment:me})}}function Q(){var ne=j(),X=re(n);if(X){if(J(),!re(a))return ee("property missing ':'");var me=re(i),ke=ne({type:p,property:S(X[0].replace(e,f)),value:me?S(me[0].replace(e,f)):f});return re(u),ke}}function be(){var ne=[];R(ne);for(var X;X=Q();)X!==!1&&(ne.push(X),R(ne));return ne}return K(),be()}function S(D){return D?D.replace(s,f):f}return F0=x,F0}var ji;function a1(){if(ji)return Ar;ji=1;var e=Ar&&Ar.__importDefault||function(n){return n&&n.__esModule?n:{default:n}};Object.defineProperty(Ar,"__esModule",{value:!0}),Ar.default=r;const t=e(n1());function r(n,a){let i=null;if(!n||typeof n!="string")return i;const u=(0,t.default)(n),s=typeof a=="function";return u.forEach(l=>{if(l.type!=="declaration")return;const{property:c,value:d}=l;s?a(c,d,l):d&&(i=i||{},i[c]=d)}),i}return Ar}var $r={},Wi;function i1(){if(Wi)return $r;Wi=1,Object.defineProperty($r,"__esModule",{value:!0}),$r.camelCase=void 0;var e=/^--[a-zA-Z0-9_-]+$/,t=/-([a-z])/g,r=/^[^-]+$/,n=/^-(webkit|moz|ms|o|khtml)-/,a=/^-(ms)-/,i=function(c){return!c||r.test(c)||e.test(c)},u=function(c,d){return d.toUpperCase()},s=function(c,d){return"".concat(d,"-")},l=function(c,d){return d===void 0&&(d={}),i(c)?c:(c=c.toLowerCase(),d.reactCompat?c=c.replace(a,s):c=c.replace(n,s),c.replace(t,u))};return $r.camelCase=l,$r}var Qr,Xi;function u1(){if(Xi)return Qr;Xi=1;var e=Qr&&Qr.__importDefault||function(a){return a&&a.__esModule?a:{default:a}},t=e(a1()),r=i1();function n(a,i){var u={};return!a||typeof a!="string"||(0,t.default)(a,function(s,l){s&&l&&(u[(0,r.camelCase)(s,i)]=l)}),u}return n.default=n,Qr=n,Qr}var s1=u1();const l1=zs(s1),d0=Qs("end"),_t=Qs("start");function Qs(e){return t;function t(r){const n=r&&r.position&&r.position[e]||{};if(typeof n.line=="number"&&n.line>0&&typeof n.column=="number"&&n.column>0)return{line:n.line,column:n.column,offset:typeof n.offset=="number"&&n.offset>-1?n.offset:void 0}}}function o1(e){const t=_t(e),r=d0(e);if(t&&r)return{start:t,end:r}}function nn(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?$i(e.position):"start"in e||"end"in e?$i(e):"line"in e||"column"in e?xa(e):""}function xa(e){return Qi(e&&e.line)+":"+Qi(e&&e.column)}function $i(e){return xa(e&&e.start)+"-"+xa(e&&e.end)}function Qi(e){return e&&typeof e=="number"?e:1}class je extends Error{constructor(t,r,n){super(),typeof r=="string"&&(n=r,r=void 0);let a="",i={},u=!1;if(r&&("line"in r&&"column"in r?i={place:r}:"start"in r&&"end"in r?i={place:r}:"type"in r?i={ancestors:[r],place:r.position}:i={...r}),typeof t=="string"?a=t:!i.cause&&t&&(u=!0,a=t.message,i.cause=t),!i.ruleId&&!i.source&&typeof n=="string"){const l=n.indexOf(":");l===-1?i.ruleId=n:(i.source=n.slice(0,l),i.ruleId=n.slice(l+1))}if(!i.place&&i.ancestors&&i.ancestors){const l=i.ancestors[i.ancestors.length-1];l&&(i.place=l.position)}const s=i.place&&"start"in i.place?i.place.start:i.place;this.ancestors=i.ancestors||void 0,this.cause=i.cause||void 0,this.column=s?s.column:void 0,this.fatal=void 0,this.file="",this.message=a,this.line=s?s.line:void 0,this.name=nn(i.place)||"1:1",this.place=i.place||void 0,this.reason=this.message,this.ruleId=i.ruleId||void 0,this.source=i.source||void 0,this.stack=u&&i.cause&&typeof i.cause.stack=="string"?i.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}}je.prototype.file="";je.prototype.name="";je.prototype.reason="";je.prototype.message="";je.prototype.stack="";je.prototype.column=void 0;je.prototype.line=void 0;je.prototype.ancestors=void 0;je.prototype.cause=void 0;je.prototype.fatal=void 0;je.prototype.place=void 0;je.prototype.ruleId=void 0;je.prototype.source=void 0;const ei={}.hasOwnProperty,c1=new Map,h1=/[A-Z]/g,d1=new Set(["table","tbody","thead","tfoot","tr"]),f1=new Set(["td","th"]),Ks="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function m1(e,t){if(!t||t.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const r=t.filePath||void 0;let n;if(t.development){if(typeof t.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");n=v1(r,t.jsxDEV)}else{if(typeof t.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof t.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");n=y1(r,t.jsx,t.jsxs)}const a={Fragment:t.Fragment,ancestors:[],components:t.components||{},create:n,elementAttributeNameCase:t.elementAttributeNameCase||"react",evaluater:t.createEvaluater?t.createEvaluater():void 0,filePath:r,ignoreInvalidStyle:t.ignoreInvalidStyle||!1,passKeys:t.passKeys!==!1,passNode:t.passNode||!1,schema:t.space==="svg"?rr:xn,stylePropertyNameCase:t.stylePropertyNameCase||"dom",tableCellAlignToStyle:t.tableCellAlignToStyle!==!1},i=Js(a,e,void 0);return i&&typeof i!="string"?i:a.create(e,a.Fragment,{children:i||void 0},void 0)}function Js(e,t,r){if(t.type==="element")return p1(e,t,r);if(t.type==="mdxFlowExpression"||t.type==="mdxTextExpression")return g1(e,t);if(t.type==="mdxJsxFlowElement"||t.type==="mdxJsxTextElement")return E1(e,t,r);if(t.type==="mdxjsEsm")return b1(e,t);if(t.type==="root")return T1(e,t,r);if(t.type==="text")return x1(e,t)}function p1(e,t,r){const n=e.schema;let a=n;t.tagName.toLowerCase()==="svg"&&n.space==="html"&&(a=rr,e.schema=a),e.ancestors.push(t);const i=el(e,t.tagName,!1),u=A1(e,t);let s=ri(e,t);return d1.has(t.tagName)&&(s=s.filter(function(l){return typeof l=="string"?!Xc(l):!0})),Zs(e,u,i,t),ti(u,s),e.ancestors.pop(),e.schema=n,e.create(t,i,u,r)}function g1(e,t){if(t.data&&t.data.estree&&e.evaluater){const n=t.data.estree.body[0];return n.type,e.evaluater.evaluateExpression(n.expression)}mn(e,t.position)}function b1(e,t){if(t.data&&t.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(t.data.estree);mn(e,t.position)}function E1(e,t,r){const n=e.schema;let a=n;t.name==="svg"&&n.space==="html"&&(a=rr,e.schema=a),e.ancestors.push(t);const i=t.name===null?e.Fragment:el(e,t.name,!0),u=k1(e,t),s=ri(e,t);return Zs(e,u,i,t),ti(u,s),e.ancestors.pop(),e.schema=n,e.create(t,i,u,r)}function T1(e,t,r){const n={};return ti(n,ri(e,t)),e.create(t,e.Fragment,n,r)}function x1(e,t){return t.value}function Zs(e,t,r,n){typeof r!="string"&&r!==e.Fragment&&e.passNode&&(t.node=n)}function ti(e,t){if(t.length>0){const r=t.length>1?t:t[0];r&&(e.children=r)}}function y1(e,t,r){return n;function n(a,i,u,s){const c=Array.isArray(u.children)?r:t;return s?c(i,u,s):c(i,u)}}function v1(e,t){return r;function r(n,a,i,u){const s=Array.isArray(i.children),l=_t(n);return t(a,i,u,s,{columnNumber:l?l.column-1:void 0,fileName:e,lineNumber:l?l.line:void 0},void 0)}}function A1(e,t){const r={};let n,a;for(a in t.properties)if(a!=="children"&&ei.call(t.properties,a)){const i=S1(e,a,t.properties[a]);if(i){const[u,s]=i;e.tableCellAlignToStyle&&u==="align"&&typeof s=="string"&&f1.has(t.tagName)?n=s:r[u]=s}}if(n){const i=r.style||(r.style={});i[e.stylePropertyNameCase==="css"?"text-align":"textAlign"]=n}return r}function k1(e,t){const r={};for(const n of t.attributes)if(n.type==="mdxJsxExpressionAttribute")if(n.data&&n.data.estree&&e.evaluater){const i=n.data.estree.body[0];i.type;const u=i.expression;u.type;const s=u.properties[0];s.type,Object.assign(r,e.evaluater.evaluateExpression(s.argument))}else mn(e,t.position);else{const a=n.name;let i;if(n.value&&typeof n.value=="object")if(n.value.data&&n.value.data.estree&&e.evaluater){const s=n.value.data.estree.body[0];s.type,i=e.evaluater.evaluateExpression(s.expression)}else mn(e,t.position);else i=n.value===null?!0:n.value;r[a]=i}return r}function ri(e,t){const r=[];let n=-1;const a=e.passKeys?new Map:c1;for(;++na?0:a+t:t=t>a?a:t,r=r>0?r:0,n.length<1e4)u=Array.from(n),u.unshift(t,r),e.splice(...u);else for(r&&e.splice(t,r);i0?(lt(e,e.length,0,t),e):t}const Zi={}.hasOwnProperty;function rl(e){const t={};let r=-1;for(;++r13&&r<32||r>126&&r<160||r>55295&&r<57344||r>64975&&r<65008||(r&65535)===65535||(r&65535)===65534||r>1114111?"�":String.fromCodePoint(r)}function xt(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const Ke=nr(/[A-Za-z]/),Ge=nr(/[\dA-Za-z]/),R1=nr(/[#-'*+\--9=?A-Z^-~]/);function Zn(e){return e!==null&&(e<32||e===127)}const ya=nr(/\d/),M1=nr(/[\dA-Fa-f]/),P1=nr(/[!-/:-@[-`{-~]/);function ae(e){return e!==null&&e<-2}function ve(e){return e!==null&&(e<0||e===32)}function ge(e){return e===-2||e===-1||e===32}const f0=nr(new RegExp("\\p{P}|\\p{S}","u")),pr=nr(/\s/);function nr(e){return t;function t(r){return r!==null&&r>-1&&e.test(String.fromCharCode(r))}}function Pr(e){const t=[];let r=-1,n=0,a=0;for(;++r55295&&i<57344){const s=e.charCodeAt(r+1);i<56320&&s>56319&&s<57344?(u=String.fromCharCode(i,s),a=1):u="�"}else u=String.fromCharCode(i);u&&(t.push(e.slice(n,r),encodeURIComponent(u)),n=r+a+1,u=""),a&&(r+=a,a=0)}return t.join("")+e.slice(n)}function fe(e,t,r,n){const a=n?n-1:Number.POSITIVE_INFINITY;let i=0;return u;function u(l){return ge(l)?(e.enter(r),s(l)):t(l)}function s(l){return ge(l)&&i++u))return;const ee=t.events.length;let re=ee,K,R;for(;re--;)if(t.events[re][0]==="exit"&&t.events[re][1].type==="chunkFlow"){if(K){R=t.events[re][1].end;break}K=!0}for(_(n),L=ee;LM;){const j=r[W];t.containerState=j[1],j[0].exit.call(t,e)}r.length=M}function N(){a.write([null]),i=void 0,a=void 0,t.containerState._closeFlow=void 0}}function U1(e,t,r){return fe(e,e.attempt(this.parser.constructs.document,t,r),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function Ir(e){if(e===null||ve(e)||pr(e))return 1;if(f0(e))return 2}function m0(e,t,r){const n=[];let a=-1;for(;++a1&&e[r][1].end.offset-e[r][1].start.offset>1?2:1;const f={...e[n][1].end},g={...e[r][1].start};tu(f,-l),tu(g,l),u={type:l>1?"strongSequence":"emphasisSequence",start:f,end:{...e[n][1].end}},s={type:l>1?"strongSequence":"emphasisSequence",start:{...e[r][1].start},end:g},i={type:l>1?"strongText":"emphasisText",start:{...e[n][1].end},end:{...e[r][1].start}},a={type:l>1?"strong":"emphasis",start:{...u.start},end:{...s.end}},e[n][1].end={...u.start},e[r][1].start={...s.end},c=[],e[n][1].end.offset-e[n][1].start.offset&&(c=mt(c,[["enter",e[n][1],t],["exit",e[n][1],t]])),c=mt(c,[["enter",a,t],["enter",u,t],["exit",u,t],["enter",i,t]]),c=mt(c,m0(t.parser.constructs.insideSpan.null,e.slice(n+1,r),t)),c=mt(c,[["exit",i,t],["enter",s,t],["exit",s,t],["exit",a,t]]),e[r][1].end.offset-e[r][1].start.offset?(d=2,c=mt(c,[["enter",e[r][1],t],["exit",e[r][1],t]])):d=0,lt(e,n-1,r-n+3,c),r=n+c.length-d-2;break}}for(r=-1;++r0&&ge(L)?fe(e,N,"linePrefix",i+1)(L):N(L)}function N(L){return L===null||ae(L)?e.check(ru,S,W)(L):(e.enter("codeFlowValue"),M(L))}function M(L){return L===null||ae(L)?(e.exit("codeFlowValue"),N(L)):(e.consume(L),M)}function W(L){return e.exit("codeFenced"),t(L)}function j(L,ee,re){let K=0;return R;function R(X){return L.enter("lineEnding"),L.consume(X),L.exit("lineEnding"),J}function J(X){return L.enter("codeFencedFence"),ge(X)?fe(L,Q,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(X):Q(X)}function Q(X){return X===s?(L.enter("codeFencedFenceSequence"),be(X)):re(X)}function be(X){return X===s?(K++,L.consume(X),be):K>=u?(L.exit("codeFencedFenceSequence"),ge(X)?fe(L,ne,"whitespace")(X):ne(X)):re(X)}function ne(X){return X===null||ae(X)?(L.exit("codeFencedFence"),ee(X)):re(X)}}}function Z1(e,t,r){const n=this;return a;function a(u){return u===null?r(u):(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),i)}function i(u){return n.parser.lazy[n.now().line]?r(u):t(u)}}const z0={name:"codeIndented",tokenize:th},eh={partial:!0,tokenize:rh};function th(e,t,r){const n=this;return a;function a(c){return e.enter("codeIndented"),fe(e,i,"linePrefix",5)(c)}function i(c){const d=n.events[n.events.length-1];return d&&d[1].type==="linePrefix"&&d[2].sliceSerialize(d[1],!0).length>=4?u(c):r(c)}function u(c){return c===null?l(c):ae(c)?e.attempt(eh,u,l)(c):(e.enter("codeFlowValue"),s(c))}function s(c){return c===null||ae(c)?(e.exit("codeFlowValue"),u(c)):(e.consume(c),s)}function l(c){return e.exit("codeIndented"),t(c)}}function rh(e,t,r){const n=this;return a;function a(u){return n.parser.lazy[n.now().line]?r(u):ae(u)?(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),a):fe(e,i,"linePrefix",5)(u)}function i(u){const s=n.events[n.events.length-1];return s&&s[1].type==="linePrefix"&&s[2].sliceSerialize(s[1],!0).length>=4?t(u):ae(u)?a(u):r(u)}}const nh={name:"codeText",previous:ih,resolve:ah,tokenize:uh};function ah(e){let t=e.length-4,r=3,n,a;if((e[r][1].type==="lineEnding"||e[r][1].type==="space")&&(e[t][1].type==="lineEnding"||e[t][1].type==="space")){for(n=r;++n=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+t+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return tthis.left.length?this.right.slice(this.right.length-n+this.left.length,this.right.length-t+this.left.length).reverse():this.left.slice(t).concat(this.right.slice(this.right.length-n+this.left.length).reverse())}splice(t,r,n){const a=r||0;this.setCursor(Math.trunc(t));const i=this.right.splice(this.right.length-a,Number.POSITIVE_INFINITY);return n&&Kr(this.left,n),i.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(t){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(t)}pushMany(t){this.setCursor(Number.POSITIVE_INFINITY),Kr(this.left,t)}unshift(t){this.setCursor(0),this.right.push(t)}unshiftMany(t){this.setCursor(0),Kr(this.right,t.reverse())}setCursor(t){if(!(t===this.left.length||t>this.left.length&&this.right.length===0||t<0&&this.left.length===0))if(t=4?t(u):e.interrupt(n.parser.constructs.flow,r,t)(u)}}function ll(e,t,r,n,a,i,u,s,l){const c=l||Number.POSITIVE_INFINITY;let d=0;return f;function f(_){return _===60?(e.enter(n),e.enter(a),e.enter(i),e.consume(_),e.exit(i),g):_===null||_===32||_===41||Zn(_)?r(_):(e.enter(n),e.enter(u),e.enter(s),e.enter("chunkString",{contentType:"string"}),S(_))}function g(_){return _===62?(e.enter(i),e.consume(_),e.exit(i),e.exit(a),e.exit(n),t):(e.enter(s),e.enter("chunkString",{contentType:"string"}),p(_))}function p(_){return _===62?(e.exit("chunkString"),e.exit(s),g(_)):_===null||_===60||ae(_)?r(_):(e.consume(_),_===92?x:p)}function x(_){return _===60||_===62||_===92?(e.consume(_),p):p(_)}function S(_){return!d&&(_===null||_===41||ve(_))?(e.exit("chunkString"),e.exit(s),e.exit(u),e.exit(n),t(_)):d999||p===null||p===91||p===93&&!l||p===94&&!s&&"_hiddenFootnoteSupport"in u.parser.constructs?r(p):p===93?(e.exit(i),e.enter(a),e.consume(p),e.exit(a),e.exit(n),t):ae(p)?(e.enter("lineEnding"),e.consume(p),e.exit("lineEnding"),d):(e.enter("chunkString",{contentType:"string"}),f(p))}function f(p){return p===null||p===91||p===93||ae(p)||s++>999?(e.exit("chunkString"),d(p)):(e.consume(p),l||(l=!ge(p)),p===92?g:f)}function g(p){return p===91||p===92||p===93?(e.consume(p),s++,f):f(p)}}function cl(e,t,r,n,a,i){let u;return s;function s(g){return g===34||g===39||g===40?(e.enter(n),e.enter(a),e.consume(g),e.exit(a),u=g===40?41:g,l):r(g)}function l(g){return g===u?(e.enter(a),e.consume(g),e.exit(a),e.exit(n),t):(e.enter(i),c(g))}function c(g){return g===u?(e.exit(i),l(u)):g===null?r(g):ae(g)?(e.enter("lineEnding"),e.consume(g),e.exit("lineEnding"),fe(e,c,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),d(g))}function d(g){return g===u||g===null||ae(g)?(e.exit("chunkString"),c(g)):(e.consume(g),g===92?f:d)}function f(g){return g===u||g===92?(e.consume(g),d):d(g)}}function an(e,t){let r;return n;function n(a){return ae(a)?(e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),r=!0,n):ge(a)?fe(e,n,r?"linePrefix":"lineSuffix")(a):t(a)}}const mh={name:"definition",tokenize:gh},ph={partial:!0,tokenize:bh};function gh(e,t,r){const n=this;let a;return i;function i(p){return e.enter("definition"),u(p)}function u(p){return ol.call(n,e,s,r,"definitionLabel","definitionLabelMarker","definitionLabelString")(p)}function s(p){return a=xt(n.sliceSerialize(n.events[n.events.length-1][1]).slice(1,-1)),p===58?(e.enter("definitionMarker"),e.consume(p),e.exit("definitionMarker"),l):r(p)}function l(p){return ve(p)?an(e,c)(p):c(p)}function c(p){return ll(e,d,r,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(p)}function d(p){return e.attempt(ph,f,f)(p)}function f(p){return ge(p)?fe(e,g,"whitespace")(p):g(p)}function g(p){return p===null||ae(p)?(e.exit("definition"),n.parser.defined.push(a),t(p)):r(p)}}function bh(e,t,r){return n;function n(s){return ve(s)?an(e,a)(s):r(s)}function a(s){return cl(e,i,r,"definitionTitle","definitionTitleMarker","definitionTitleString")(s)}function i(s){return ge(s)?fe(e,u,"whitespace")(s):u(s)}function u(s){return s===null||ae(s)?t(s):r(s)}}const Eh={name:"hardBreakEscape",tokenize:Th};function Th(e,t,r){return n;function n(i){return e.enter("hardBreakEscape"),e.consume(i),a}function a(i){return ae(i)?(e.exit("hardBreakEscape"),t(i)):r(i)}}const xh={name:"headingAtx",resolve:yh,tokenize:vh};function yh(e,t){let r=e.length-2,n=3,a,i;return e[n][1].type==="whitespace"&&(n+=2),r-2>n&&e[r][1].type==="whitespace"&&(r-=2),e[r][1].type==="atxHeadingSequence"&&(n===r-1||r-4>n&&e[r-2][1].type==="whitespace")&&(r-=n+1===r?2:4),r>n&&(a={type:"atxHeadingText",start:e[n][1].start,end:e[r][1].end},i={type:"chunkText",start:e[n][1].start,end:e[r][1].end,contentType:"text"},lt(e,n,r-n+1,[["enter",a,t],["enter",i,t],["exit",i,t],["exit",a,t]])),e}function vh(e,t,r){let n=0;return a;function a(d){return e.enter("atxHeading"),i(d)}function i(d){return e.enter("atxHeadingSequence"),u(d)}function u(d){return d===35&&n++<6?(e.consume(d),u):d===null||ve(d)?(e.exit("atxHeadingSequence"),s(d)):r(d)}function s(d){return d===35?(e.enter("atxHeadingSequence"),l(d)):d===null||ae(d)?(e.exit("atxHeading"),t(d)):ge(d)?fe(e,s,"whitespace")(d):(e.enter("atxHeadingText"),c(d))}function l(d){return d===35?(e.consume(d),l):(e.exit("atxHeadingSequence"),s(d))}function c(d){return d===null||d===35||ve(d)?(e.exit("atxHeadingText"),s(d)):(e.consume(d),c)}}const Ah=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],au=["pre","script","style","textarea"],kh={concrete:!0,name:"htmlFlow",resolveTo:Ch,tokenize:_h},Sh={partial:!0,tokenize:Nh},wh={partial:!0,tokenize:Ih};function Ch(e){let t=e.length;for(;t--&&!(e[t][0]==="enter"&&e[t][1].type==="htmlFlow"););return t>1&&e[t-2][1].type==="linePrefix"&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function _h(e,t,r){const n=this;let a,i,u,s,l;return c;function c(C){return d(C)}function d(C){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(C),f}function f(C){return C===33?(e.consume(C),g):C===47?(e.consume(C),i=!0,S):C===63?(e.consume(C),a=3,n.interrupt?t:w):Ke(C)?(e.consume(C),u=String.fromCharCode(C),D):r(C)}function g(C){return C===45?(e.consume(C),a=2,p):C===91?(e.consume(C),a=5,s=0,x):Ke(C)?(e.consume(C),a=4,n.interrupt?t:w):r(C)}function p(C){return C===45?(e.consume(C),n.interrupt?t:w):r(C)}function x(C){const Ye="CDATA[";return C===Ye.charCodeAt(s++)?(e.consume(C),s===Ye.length?n.interrupt?t:Q:x):r(C)}function S(C){return Ke(C)?(e.consume(C),u=String.fromCharCode(C),D):r(C)}function D(C){if(C===null||C===47||C===62||ve(C)){const Ye=C===47,vt=u.toLowerCase();return!Ye&&!i&&au.includes(vt)?(a=1,n.interrupt?t(C):Q(C)):Ah.includes(u.toLowerCase())?(a=6,Ye?(e.consume(C),_):n.interrupt?t(C):Q(C)):(a=7,n.interrupt&&!n.parser.lazy[n.now().line]?r(C):i?N(C):M(C))}return C===45||Ge(C)?(e.consume(C),u+=String.fromCharCode(C),D):r(C)}function _(C){return C===62?(e.consume(C),n.interrupt?t:Q):r(C)}function N(C){return ge(C)?(e.consume(C),N):R(C)}function M(C){return C===47?(e.consume(C),R):C===58||C===95||Ke(C)?(e.consume(C),W):ge(C)?(e.consume(C),M):R(C)}function W(C){return C===45||C===46||C===58||C===95||Ge(C)?(e.consume(C),W):j(C)}function j(C){return C===61?(e.consume(C),L):ge(C)?(e.consume(C),j):M(C)}function L(C){return C===null||C===60||C===61||C===62||C===96?r(C):C===34||C===39?(e.consume(C),l=C,ee):ge(C)?(e.consume(C),L):re(C)}function ee(C){return C===l?(e.consume(C),l=null,K):C===null||ae(C)?r(C):(e.consume(C),ee)}function re(C){return C===null||C===34||C===39||C===47||C===60||C===61||C===62||C===96||ve(C)?j(C):(e.consume(C),re)}function K(C){return C===47||C===62||ge(C)?M(C):r(C)}function R(C){return C===62?(e.consume(C),J):r(C)}function J(C){return C===null||ae(C)?Q(C):ge(C)?(e.consume(C),J):r(C)}function Q(C){return C===45&&a===2?(e.consume(C),me):C===60&&a===1?(e.consume(C),ke):C===62&&a===4?(e.consume(C),Oe):C===63&&a===3?(e.consume(C),w):C===93&&a===5?(e.consume(C),at):ae(C)&&(a===6||a===7)?(e.exit("htmlFlowData"),e.check(Sh,Xe,be)(C)):C===null||ae(C)?(e.exit("htmlFlowData"),be(C)):(e.consume(C),Q)}function be(C){return e.check(wh,ne,Xe)(C)}function ne(C){return e.enter("lineEnding"),e.consume(C),e.exit("lineEnding"),X}function X(C){return C===null||ae(C)?be(C):(e.enter("htmlFlowData"),Q(C))}function me(C){return C===45?(e.consume(C),w):Q(C)}function ke(C){return C===47?(e.consume(C),u="",ze):Q(C)}function ze(C){if(C===62){const Ye=u.toLowerCase();return au.includes(Ye)?(e.consume(C),Oe):Q(C)}return Ke(C)&&u.length<8?(e.consume(C),u+=String.fromCharCode(C),ze):Q(C)}function at(C){return C===93?(e.consume(C),w):Q(C)}function w(C){return C===62?(e.consume(C),Oe):C===45&&a===2?(e.consume(C),w):Q(C)}function Oe(C){return C===null||ae(C)?(e.exit("htmlFlowData"),Xe(C)):(e.consume(C),Oe)}function Xe(C){return e.exit("htmlFlow"),t(C)}}function Ih(e,t,r){const n=this;return a;function a(u){return ae(u)?(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),i):r(u)}function i(u){return n.parser.lazy[n.now().line]?r(u):t(u)}}function Nh(e,t,r){return n;function n(a){return e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),e.attempt(yn,t,r)}}const Dh={name:"htmlText",tokenize:Oh};function Oh(e,t,r){const n=this;let a,i,u;return s;function s(w){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(w),l}function l(w){return w===33?(e.consume(w),c):w===47?(e.consume(w),j):w===63?(e.consume(w),M):Ke(w)?(e.consume(w),re):r(w)}function c(w){return w===45?(e.consume(w),d):w===91?(e.consume(w),i=0,x):Ke(w)?(e.consume(w),N):r(w)}function d(w){return w===45?(e.consume(w),p):r(w)}function f(w){return w===null?r(w):w===45?(e.consume(w),g):ae(w)?(u=f,ke(w)):(e.consume(w),f)}function g(w){return w===45?(e.consume(w),p):f(w)}function p(w){return w===62?me(w):w===45?g(w):f(w)}function x(w){const Oe="CDATA[";return w===Oe.charCodeAt(i++)?(e.consume(w),i===Oe.length?S:x):r(w)}function S(w){return w===null?r(w):w===93?(e.consume(w),D):ae(w)?(u=S,ke(w)):(e.consume(w),S)}function D(w){return w===93?(e.consume(w),_):S(w)}function _(w){return w===62?me(w):w===93?(e.consume(w),_):S(w)}function N(w){return w===null||w===62?me(w):ae(w)?(u=N,ke(w)):(e.consume(w),N)}function M(w){return w===null?r(w):w===63?(e.consume(w),W):ae(w)?(u=M,ke(w)):(e.consume(w),M)}function W(w){return w===62?me(w):M(w)}function j(w){return Ke(w)?(e.consume(w),L):r(w)}function L(w){return w===45||Ge(w)?(e.consume(w),L):ee(w)}function ee(w){return ae(w)?(u=ee,ke(w)):ge(w)?(e.consume(w),ee):me(w)}function re(w){return w===45||Ge(w)?(e.consume(w),re):w===47||w===62||ve(w)?K(w):r(w)}function K(w){return w===47?(e.consume(w),me):w===58||w===95||Ke(w)?(e.consume(w),R):ae(w)?(u=K,ke(w)):ge(w)?(e.consume(w),K):me(w)}function R(w){return w===45||w===46||w===58||w===95||Ge(w)?(e.consume(w),R):J(w)}function J(w){return w===61?(e.consume(w),Q):ae(w)?(u=J,ke(w)):ge(w)?(e.consume(w),J):K(w)}function Q(w){return w===null||w===60||w===61||w===62||w===96?r(w):w===34||w===39?(e.consume(w),a=w,be):ae(w)?(u=Q,ke(w)):ge(w)?(e.consume(w),Q):(e.consume(w),ne)}function be(w){return w===a?(e.consume(w),a=void 0,X):w===null?r(w):ae(w)?(u=be,ke(w)):(e.consume(w),be)}function ne(w){return w===null||w===34||w===39||w===60||w===61||w===96?r(w):w===47||w===62||ve(w)?K(w):(e.consume(w),ne)}function X(w){return w===47||w===62||ve(w)?K(w):r(w)}function me(w){return w===62?(e.consume(w),e.exit("htmlTextData"),e.exit("htmlText"),t):r(w)}function ke(w){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(w),e.exit("lineEnding"),ze}function ze(w){return ge(w)?fe(e,at,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(w):at(w)}function at(w){return e.enter("htmlTextData"),u(w)}}const ii={name:"labelEnd",resolveAll:Ph,resolveTo:Bh,tokenize:Fh},Lh={tokenize:Hh},Rh={tokenize:zh},Mh={tokenize:Uh};function Ph(e){let t=-1;const r=[];for(;++t=3&&(c===null||ae(c))?(e.exit("thematicBreak"),t(c)):r(c)}function l(c){return c===a?(e.consume(c),n++,l):(e.exit("thematicBreakSequence"),ge(c)?fe(e,s,"whitespace")(c):s(c))}}const tt={continuation:{tokenize:Kh},exit:Zh,name:"list",tokenize:Qh},Xh={partial:!0,tokenize:ed},$h={partial:!0,tokenize:Jh};function Qh(e,t,r){const n=this,a=n.events[n.events.length-1];let i=a&&a[1].type==="linePrefix"?a[2].sliceSerialize(a[1],!0).length:0,u=0;return s;function s(p){const x=n.containerState.type||(p===42||p===43||p===45?"listUnordered":"listOrdered");if(x==="listUnordered"?!n.containerState.marker||p===n.containerState.marker:ya(p)){if(n.containerState.type||(n.containerState.type=x,e.enter(x,{_container:!0})),x==="listUnordered")return e.enter("listItemPrefix"),p===42||p===45?e.check(Xn,r,c)(p):c(p);if(!n.interrupt||p===49)return e.enter("listItemPrefix"),e.enter("listItemValue"),l(p)}return r(p)}function l(p){return ya(p)&&++u<10?(e.consume(p),l):(!n.interrupt||u<2)&&(n.containerState.marker?p===n.containerState.marker:p===41||p===46)?(e.exit("listItemValue"),c(p)):r(p)}function c(p){return e.enter("listItemMarker"),e.consume(p),e.exit("listItemMarker"),n.containerState.marker=n.containerState.marker||p,e.check(yn,n.interrupt?r:d,e.attempt(Xh,g,f))}function d(p){return n.containerState.initialBlankLine=!0,i++,g(p)}function f(p){return ge(p)?(e.enter("listItemPrefixWhitespace"),e.consume(p),e.exit("listItemPrefixWhitespace"),g):r(p)}function g(p){return n.containerState.size=i+n.sliceSerialize(e.exit("listItemPrefix"),!0).length,t(p)}}function Kh(e,t,r){const n=this;return n.containerState._closeFlow=void 0,e.check(yn,a,i);function a(s){return n.containerState.furtherBlankLines=n.containerState.furtherBlankLines||n.containerState.initialBlankLine,fe(e,t,"listItemIndent",n.containerState.size+1)(s)}function i(s){return n.containerState.furtherBlankLines||!ge(s)?(n.containerState.furtherBlankLines=void 0,n.containerState.initialBlankLine=void 0,u(s)):(n.containerState.furtherBlankLines=void 0,n.containerState.initialBlankLine=void 0,e.attempt($h,t,u)(s))}function u(s){return n.containerState._closeFlow=!0,n.interrupt=void 0,fe(e,e.attempt(tt,t,r),"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(s)}}function Jh(e,t,r){const n=this;return fe(e,a,"listItemIndent",n.containerState.size+1);function a(i){const u=n.events[n.events.length-1];return u&&u[1].type==="listItemIndent"&&u[2].sliceSerialize(u[1],!0).length===n.containerState.size?t(i):r(i)}}function Zh(e){e.exit(this.containerState.type)}function ed(e,t,r){const n=this;return fe(e,a,"listItemPrefixWhitespace",n.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function a(i){const u=n.events[n.events.length-1];return!ge(i)&&u&&u[1].type==="listItemPrefixWhitespace"?t(i):r(i)}}const iu={name:"setextUnderline",resolveTo:td,tokenize:rd};function td(e,t){let r=e.length,n,a,i;for(;r--;)if(e[r][0]==="enter"){if(e[r][1].type==="content"){n=r;break}e[r][1].type==="paragraph"&&(a=r)}else e[r][1].type==="content"&&e.splice(r,1),!i&&e[r][1].type==="definition"&&(i=r);const u={type:"setextHeading",start:{...e[n][1].start},end:{...e[e.length-1][1].end}};return e[a][1].type="setextHeadingText",i?(e.splice(a,0,["enter",u,t]),e.splice(i+1,0,["exit",e[n][1],t]),e[n][1].end={...e[i][1].end}):e[n][1]=u,e.push(["exit",u,t]),e}function rd(e,t,r){const n=this;let a;return i;function i(c){let d=n.events.length,f;for(;d--;)if(n.events[d][1].type!=="lineEnding"&&n.events[d][1].type!=="linePrefix"&&n.events[d][1].type!=="content"){f=n.events[d][1].type==="paragraph";break}return!n.parser.lazy[n.now().line]&&(n.interrupt||f)?(e.enter("setextHeadingLine"),a=c,u(c)):r(c)}function u(c){return e.enter("setextHeadingLineSequence"),s(c)}function s(c){return c===a?(e.consume(c),s):(e.exit("setextHeadingLineSequence"),ge(c)?fe(e,l,"lineSuffix")(c):l(c))}function l(c){return c===null||ae(c)?(e.exit("setextHeadingLine"),t(c)):r(c)}}const nd={tokenize:ad};function ad(e){const t=this,r=e.attempt(yn,n,e.attempt(this.parser.constructs.flowInitial,a,fe(e,e.attempt(this.parser.constructs.flow,a,e.attempt(oh,a)),"linePrefix")));return r;function n(i){if(i===null){e.consume(i);return}return e.enter("lineEndingBlank"),e.consume(i),e.exit("lineEndingBlank"),t.currentConstruct=void 0,r}function a(i){if(i===null){e.consume(i);return}return e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),t.currentConstruct=void 0,r}}const id={resolveAll:dl()},ud=hl("string"),sd=hl("text");function hl(e){return{resolveAll:dl(e==="text"?ld:void 0),tokenize:t};function t(r){const n=this,a=this.parser.constructs[e],i=r.attempt(a,u,s);return u;function u(d){return c(d)?i(d):s(d)}function s(d){if(d===null){r.consume(d);return}return r.enter("data"),r.consume(d),l}function l(d){return c(d)?(r.exit("data"),i(d)):(r.consume(d),l)}function c(d){if(d===null)return!0;const f=a[d];let g=-1;if(f)for(;++g-1){const s=u[0];typeof s=="string"?u[0]=s.slice(n):u.shift()}i>0&&u.push(e[a].slice(0,i))}return u}function yd(e,t){let r=-1;const n=[];let a;for(;++r0){const Tt=ue.tokenStack[ue.tokenStack.length-1];(Tt[1]||su).call(ue,void 0,Tt[0])}for($.position={start:Vt(B.length>0?B[0][1].start:{line:1,column:1,offset:0}),end:Vt(B.length>0?B[B.length-2][1].end:{line:1,column:1,offset:0})},xe=-1;++xe0&&(n.className=["language-"+a[0]]);let i={type:"element",tagName:"code",properties:n,children:[{type:"text",value:r}]};return t.meta&&(i.data={meta:t.meta}),e.patch(t,i),i=e.applyData(t,i),i={type:"element",tagName:"pre",properties:{},children:[i]},e.patch(t,i),i}function Md(e,t){const r={type:"element",tagName:"del",properties:{},children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function Pd(e,t){const r={type:"element",tagName:"em",properties:{},children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function Bd(e,t){const r=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",n=String(t.identifier).toUpperCase(),a=Pr(n.toLowerCase()),i=e.footnoteOrder.indexOf(n);let u,s=e.footnoteCounts.get(n);s===void 0?(s=0,e.footnoteOrder.push(n),u=e.footnoteOrder.length):u=i+1,s+=1,e.footnoteCounts.set(n,s);const l={type:"element",tagName:"a",properties:{href:"#"+r+"fn-"+a,id:r+"fnref-"+a+(s>1?"-"+s:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(u)}]};e.patch(t,l);const c={type:"element",tagName:"sup",properties:{},children:[l]};return e.patch(t,c),e.applyData(t,c)}function Fd(e,t){const r={type:"element",tagName:"h"+t.depth,properties:{},children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function Hd(e,t){if(e.options.allowDangerousHtml){const r={type:"raw",value:t.value};return e.patch(t,r),e.applyData(t,r)}}function pl(e,t){const r=t.referenceType;let n="]";if(r==="collapsed"?n+="[]":r==="full"&&(n+="["+(t.label||t.identifier)+"]"),t.type==="imageReference")return[{type:"text",value:"!["+t.alt+n}];const a=e.all(t),i=a[0];i&&i.type==="text"?i.value="["+i.value:a.unshift({type:"text",value:"["});const u=a[a.length-1];return u&&u.type==="text"?u.value+=n:a.push({type:"text",value:n}),a}function zd(e,t){const r=String(t.identifier).toUpperCase(),n=e.definitionById.get(r);if(!n)return pl(e,t);const a={src:Pr(n.url||""),alt:t.alt};n.title!==null&&n.title!==void 0&&(a.title=n.title);const i={type:"element",tagName:"img",properties:a,children:[]};return e.patch(t,i),e.applyData(t,i)}function Ud(e,t){const r={src:Pr(t.url)};t.alt!==null&&t.alt!==void 0&&(r.alt=t.alt),t.title!==null&&t.title!==void 0&&(r.title=t.title);const n={type:"element",tagName:"img",properties:r,children:[]};return e.patch(t,n),e.applyData(t,n)}function qd(e,t){const r={type:"text",value:t.value.replace(/\r?\n|\r/g," ")};e.patch(t,r);const n={type:"element",tagName:"code",properties:{},children:[r]};return e.patch(t,n),e.applyData(t,n)}function Yd(e,t){const r=String(t.identifier).toUpperCase(),n=e.definitionById.get(r);if(!n)return pl(e,t);const a={href:Pr(n.url||"")};n.title!==null&&n.title!==void 0&&(a.title=n.title);const i={type:"element",tagName:"a",properties:a,children:e.all(t)};return e.patch(t,i),e.applyData(t,i)}function Gd(e,t){const r={href:Pr(t.url)};t.title!==null&&t.title!==void 0&&(r.title=t.title);const n={type:"element",tagName:"a",properties:r,children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function Vd(e,t,r){const n=e.all(t),a=r?jd(r):gl(t),i={},u=[];if(typeof t.checked=="boolean"){const d=n[0];let f;d&&d.type==="element"&&d.tagName==="p"?f=d:(f={type:"element",tagName:"p",properties:{},children:[]},n.unshift(f)),f.children.length>0&&f.children.unshift({type:"text",value:" "}),f.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:t.checked,disabled:!0},children:[]}),i.className=["task-list-item"]}let s=-1;for(;++s1}function Wd(e,t){const r={},n=e.all(t);let a=-1;for(typeof t.start=="number"&&t.start!==1&&(r.start=t.start);++a0){const u={type:"element",tagName:"tbody",properties:{},children:e.wrap(r,!0)},s=_t(t.children[1]),l=d0(t.children[t.children.length-1]);s&&l&&(u.position={start:s,end:l}),a.push(u)}const i={type:"element",tagName:"table",properties:{},children:e.wrap(a,!0)};return e.patch(t,i),e.applyData(t,i)}function Jd(e,t,r){const n=r?r.children:void 0,i=(n?n.indexOf(t):1)===0?"th":"td",u=r&&r.type==="table"?r.align:void 0,s=u?u.length:t.children.length;let l=-1;const c=[];for(;++l0,!0),n[0]),a=n.index+n[0].length,n=r.exec(t);return i.push(cu(t.slice(a),a>0,!1)),i.join("")}function cu(e,t,r){let n=0,a=e.length;if(t){let i=e.codePointAt(n);for(;i===lu||i===ou;)n++,i=e.codePointAt(n)}if(r){let i=e.codePointAt(a-1);for(;i===lu||i===ou;)a--,i=e.codePointAt(a-1)}return a>n?e.slice(n,a):""}function tf(e,t){const r={type:"text",value:ef(String(t.value))};return e.patch(t,r),e.applyData(t,r)}function rf(e,t){const r={type:"element",tagName:"hr",properties:{},children:[]};return e.patch(t,r),e.applyData(t,r)}const nf={blockquote:Od,break:Ld,code:Rd,delete:Md,emphasis:Pd,footnoteReference:Bd,heading:Fd,html:Hd,imageReference:zd,image:Ud,inlineCode:qd,linkReference:Yd,link:Gd,listItem:Vd,list:Wd,paragraph:Xd,root:$d,strong:Qd,table:Kd,tableCell:Zd,tableRow:Jd,text:tf,thematicBreak:rf,toml:Mn,yaml:Mn,definition:Mn,footnoteDefinition:Mn};function Mn(){}const bl=-1,p0=0,un=1,e0=2,ui=3,si=4,li=5,oi=6,El=7,Tl=8,xl=typeof self=="object"?self:globalThis,hu=(e,t)=>{switch(e){case"Function":case"SharedWorker":case"Worker":case"eval":case"setInterval":case"setTimeout":throw new TypeError("unable to deserialize "+e)}return new xl[e](t)},af=(e,t)=>{const r=(a,i)=>(e.set(i,a),a),n=a=>{if(e.has(a))return e.get(a);const[i,u]=t[a];switch(i){case p0:case bl:return r(u,a);case un:{const s=r([],a);for(const l of u)s.push(n(l));return s}case e0:{const s=r({},a);for(const[l,c]of u)s[n(l)]=n(c);return s}case ui:return r(new Date(u),a);case si:{const{source:s,flags:l}=u;return r(new RegExp(s,l),a)}case li:{const s=r(new Map,a);for(const[l,c]of u)s.set(n(l),n(c));return s}case oi:{const s=r(new Set,a);for(const l of u)s.add(n(l));return s}case El:{const{name:s,message:l}=u;return r(typeof xl[s]=="function"?hu(s,l):new Error(l),a)}case Tl:return r(BigInt(u),a);case"BigInt":return r(Object(BigInt(u)),a);case"ArrayBuffer":return r(new Uint8Array(u).buffer,u);case"DataView":{const{buffer:s}=new Uint8Array(u);return r(new DataView(s),u)}}return r(hu(i,u),a)};return n},du=e=>af(new Map,e)(0),hr="",{toString:uf}={},{keys:sf}=Object,Jr=e=>{const t=typeof e;if(t!=="object"||!e)return[p0,t];const r=uf.call(e).slice(8,-1);switch(r){case"Array":return[un,hr];case"Object":return[e0,hr];case"Date":return[ui,hr];case"RegExp":return[si,hr];case"Map":return[li,hr];case"Set":return[oi,hr];case"DataView":return[un,r]}return r.includes("Array")?[un,r]:e instanceof Error?[El,e.name||"Error"]:[e0,r]},Pn=([e,t])=>e===p0&&(t==="function"||t==="symbol"),lf=(e,t,r,n)=>{const a=(u,s)=>{const l=n.push(u)-1;return r.set(s,l),l},i=u=>{if(r.has(u))return r.get(u);let[s,l]=Jr(u);switch(s){case p0:{let d=u;switch(l){case"bigint":s=Tl,d=u.toString();break;case"function":case"symbol":if(e)throw new TypeError("unable to serialize "+l);d=null;break;case"undefined":return a([bl],u)}return a([s,d],u)}case un:{if(l){let g=u;return l==="DataView"?g=new Uint8Array(u.buffer):l==="ArrayBuffer"&&(g=new Uint8Array(u)),a([l,[...g]],u)}const d=[],f=a([s,d],u);for(const g of u)d.push(i(g));return f}case e0:{if(l)switch(l){case"BigInt":return a([l,u.toString()],u);case"Boolean":case"Number":case"String":return a([l,u.valueOf()],u)}if(t&&"toJSON"in u)return i(u.toJSON());const d=[],f=a([s,d],u);for(const g of sf(u))(e||!Pn(Jr(u[g])))&&d.push([i(g),i(u[g])]);return f}case ui:return a([s,isNaN(u.getTime())?hr:u.toISOString()],u);case si:{const{source:d,flags:f}=u;return a([s,{source:d,flags:f}],u)}case li:{const d=[],f=a([s,d],u);for(const[g,p]of u)(e||!(Pn(Jr(g))||Pn(Jr(p))))&&d.push([i(g),i(p)]);return f}case oi:{const d=[],f=a([s,d],u);for(const g of u)(e||!Pn(Jr(g)))&&d.push(i(g));return f}}const{message:c}=u;return a([s,{name:l,message:c}],u)};return i},fu=(e,{json:t,lossy:r}={})=>{const n=[];return lf(!(t||r),!!t,new Map,n)(e),n},Nr=typeof structuredClone=="function"?(e,t)=>t&&("json"in t||"lossy"in t)?du(fu(e,t)):structuredClone(e):(e,t)=>du(fu(e,t));function of(e,t){const r=[{type:"text",value:"↩"}];return t>1&&r.push({type:"element",tagName:"sup",properties:{},children:[{type:"text",value:String(t)}]}),r}function cf(e,t){return"Back to reference "+(e+1)+(t>1?"-"+t:"")}function hf(e){const t=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",r=e.options.footnoteBackContent||of,n=e.options.footnoteBackLabel||cf,a=e.options.footnoteLabel||"Footnotes",i=e.options.footnoteLabelTagName||"h2",u=e.options.footnoteLabelProperties||{className:["sr-only"]},s=[];let l=-1;for(;++l0&&x.push({type:"text",value:" "});let N=typeof r=="string"?r:r(l,p);typeof N=="string"&&(N={type:"text",value:N}),x.push({type:"element",tagName:"a",properties:{href:"#"+t+"fnref-"+g+(p>1?"-"+p:""),dataFootnoteBackref:"",ariaLabel:typeof n=="string"?n:n(l,p),className:["data-footnote-backref"]},children:Array.isArray(N)?N:[N]})}const D=d[d.length-1];if(D&&D.type==="element"&&D.tagName==="p"){const N=D.children[D.children.length-1];N&&N.type==="text"?N.value+=" ":D.children.push({type:"text",value:" "}),D.children.push(...x)}else d.push(...x);const _={type:"element",tagName:"li",properties:{id:t+"fn-"+g},children:e.wrap(d,!0)};e.patch(c,_),s.push(_)}if(s.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:i,properties:{...Nr(u),id:"footnote-label"},children:[{type:"text",value:a}]},{type:"text",value:` -`},{type:"element",tagName:"ol",properties:{},children:e.wrap(s,!0)},{type:"text",value:` -`}]}}const vn=(function(e){if(e==null)return pf;if(typeof e=="function")return g0(e);if(typeof e=="object")return Array.isArray(e)?df(e):ff(e);if(typeof e=="string")return mf(e);throw new Error("Expected function, string, or object as test")});function df(e){const t=[];let r=-1;for(;++r":""))+")"})}return g;function g(){let p=yl,x,S,D;if((!t||i(l,c,d[d.length-1]||void 0))&&(p=Ef(r(l,d)),p[0]===Aa))return p;if("children"in l&&l.children){const _=l;if(_.children&&p[0]!==vl)for(S=(n?_.children.length:-1)+u,D=d.concat(_);S>-1&&S<_.children.length;){const N=_.children[S];if(x=s(N,S,D)(),x[0]===Aa)return x;S=typeof x[1]=="number"?x[1]:S+u}}return p}}}function Ef(e){return Array.isArray(e)?e:typeof e=="number"?[bf,e]:e==null?yl:[e]}function b0(e,t,r,n){let a,i,u;typeof t=="function"&&typeof r!="function"?(i=void 0,u=t,a=r):(i=t,u=r,a=n),ci(e,i,s,a);function s(l,c){const d=c[c.length-1],f=d?d.children.indexOf(l):void 0;return u(l,f,d)}}const ka={}.hasOwnProperty,Tf={};function xf(e,t){const r=t||Tf,n=new Map,a=new Map,i=new Map,u={...nf,...r.handlers},s={all:c,applyData:vf,definitionById:n,footnoteById:a,footnoteCounts:i,footnoteOrder:[],handlers:u,one:l,options:r,patch:yf,wrap:kf};return b0(e,function(d){if(d.type==="definition"||d.type==="footnoteDefinition"){const f=d.type==="definition"?n:a,g=String(d.identifier).toUpperCase();f.has(g)||f.set(g,d)}}),s;function l(d,f){const g=d.type,p=s.handlers[g];if(ka.call(s.handlers,g)&&p)return p(s,d,f);if(s.options.passThrough&&s.options.passThrough.includes(g)){if("children"in d){const{children:S,...D}=d,_=Nr(D);return _.children=s.all(d),_}return Nr(d)}return(s.options.unknownHandler||Af)(s,d,f)}function c(d){const f=[];if("children"in d){const g=d.children;let p=-1;for(;++p0&&r.push({type:"text",value:` -`}),r}function mu(e){let t=0,r=e.charCodeAt(t);for(;r===9||r===32;)t++,r=e.charCodeAt(t);return e.slice(t)}function pu(e,t){const r=xf(e,t),n=r.one(e,void 0),a=hf(r),i=Array.isArray(n)?{type:"root",children:n}:n||{type:"root",children:[]};return a&&i.children.push({type:"text",value:` -`},a),i}function Sf(e,t){return e&&"run"in e?async function(r,n){const a=pu(r,{file:n,...t});await e.run(a,n)}:function(r,n){return pu(r,{file:n,...e||t})}}function gu(e){if(e)throw e}var q0,bu;function wf(){if(bu)return q0;bu=1;var e=Object.prototype.hasOwnProperty,t=Object.prototype.toString,r=Object.defineProperty,n=Object.getOwnPropertyDescriptor,a=function(c){return typeof Array.isArray=="function"?Array.isArray(c):t.call(c)==="[object Array]"},i=function(c){if(!c||t.call(c)!=="[object Object]")return!1;var d=e.call(c,"constructor"),f=c.constructor&&c.constructor.prototype&&e.call(c.constructor.prototype,"isPrototypeOf");if(c.constructor&&!d&&!f)return!1;var g;for(g in c);return typeof g>"u"||e.call(c,g)},u=function(c,d){r&&d.name==="__proto__"?r(c,d.name,{enumerable:!0,configurable:!0,value:d.newValue,writable:!0}):c[d.name]=d.newValue},s=function(c,d){if(d==="__proto__")if(e.call(c,d)){if(n)return n(c,d).value}else return;return c[d]};return q0=function l(){var c,d,f,g,p,x,S=arguments[0],D=1,_=arguments.length,N=!1;for(typeof S=="boolean"&&(N=S,S=arguments[1]||{},D=2),(S==null||typeof S!="object"&&typeof S!="function")&&(S={});D<_;++D)if(c=arguments[D],c!=null)for(d in c)f=s(S,d),g=s(c,d),S!==g&&(N&&g&&(i(g)||(p=a(g)))?(p?(p=!1,x=f&&a(f)?f:[]):x=f&&i(f)?f:{},u(S,{name:d,newValue:l(N,x,g)})):typeof g<"u"&&u(S,{name:d,newValue:g}));return S},q0}var Cf=wf();const Y0=zs(Cf);function Sa(e){if(typeof e!="object"||e===null)return!1;const t=Object.getPrototypeOf(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)}function _f(){const e=[],t={run:r,use:n};return t;function r(...a){let i=-1;const u=a.pop();if(typeof u!="function")throw new TypeError("Expected function as last argument, not "+u);s(null,...a);function s(l,...c){const d=e[++i];let f=-1;if(l){u(l);return}for(;++fu.length;let l;s&&u.push(a);try{l=e.apply(this,u)}catch(c){const d=c;if(s&&r)throw d;return a(d)}s||(l&&l.then&&typeof l.then=="function"?l.then(i,a):l instanceof Error?a(l):i(l))}function a(u,...s){r||(r=!0,t(u,...s))}function i(u){a(null,u)}}const At={basename:Nf,dirname:Df,extname:Of,join:Lf,sep:"/"};function Nf(e,t){if(t!==void 0&&typeof t!="string")throw new TypeError('"ext" argument must be a string');An(e);let r=0,n=-1,a=e.length,i;if(t===void 0||t.length===0||t.length>e.length){for(;a--;)if(e.codePointAt(a)===47){if(i){r=a+1;break}}else n<0&&(i=!0,n=a+1);return n<0?"":e.slice(r,n)}if(t===e)return"";let u=-1,s=t.length-1;for(;a--;)if(e.codePointAt(a)===47){if(i){r=a+1;break}}else u<0&&(i=!0,u=a+1),s>-1&&(e.codePointAt(a)===t.codePointAt(s--)?s<0&&(n=a):(s=-1,n=u));return r===n?n=u:n<0&&(n=e.length),e.slice(r,n)}function Df(e){if(An(e),e.length===0)return".";let t=-1,r=e.length,n;for(;--r;)if(e.codePointAt(r)===47){if(n){t=r;break}}else n||(n=!0);return t<0?e.codePointAt(0)===47?"/":".":t===1&&e.codePointAt(0)===47?"//":e.slice(0,t)}function Of(e){An(e);let t=e.length,r=-1,n=0,a=-1,i=0,u;for(;t--;){const s=e.codePointAt(t);if(s===47){if(u){n=t+1;break}continue}r<0&&(u=!0,r=t+1),s===46?a<0?a=t:i!==1&&(i=1):a>-1&&(i=-1)}return a<0||r<0||i===0||i===1&&a===r-1&&a===n+1?"":e.slice(a,r)}function Lf(...e){let t=-1,r;for(;++t0&&e.codePointAt(e.length-1)===47&&(r+="/"),t?"/"+r:r}function Mf(e,t){let r="",n=0,a=-1,i=0,u=-1,s,l;for(;++u<=e.length;){if(u2){if(l=r.lastIndexOf("/"),l!==r.length-1){l<0?(r="",n=0):(r=r.slice(0,l),n=r.length-1-r.lastIndexOf("/")),a=u,i=0;continue}}else if(r.length>0){r="",n=0,a=u,i=0;continue}}t&&(r=r.length>0?r+"/..":"..",n=2)}else r.length>0?r+="/"+e.slice(a+1,u):r=e.slice(a+1,u),n=u-a-1;a=u,i=0}else s===46&&i>-1?i++:i=-1}return r}function An(e){if(typeof e!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}const Pf={cwd:Bf};function Bf(){return"/"}function wa(e){return!!(e!==null&&typeof e=="object"&&"href"in e&&e.href&&"protocol"in e&&e.protocol&&e.auth===void 0)}function Ff(e){if(typeof e=="string")e=new URL(e);else if(!wa(e)){const t=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw t.code="ERR_INVALID_ARG_TYPE",t}if(e.protocol!=="file:"){const t=new TypeError("The URL must be of scheme file");throw t.code="ERR_INVALID_URL_SCHEME",t}return Hf(e)}function Hf(e){if(e.hostname!==""){const n=new TypeError('File URL host must be "localhost" or empty on darwin');throw n.code="ERR_INVALID_FILE_URL_HOST",n}const t=e.pathname;let r=-1;for(;++r0){let[p,...x]=d;const S=n[g][1];Sa(S)&&Sa(p)&&(p=Y0(!0,S,p)),n[g]=[c,p,...x]}}}}const Yf=new hi().freeze();function W0(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `parser`")}function X0(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `compiler`")}function $0(e,t){if(t)throw new Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function Tu(e){if(!Sa(e)||typeof e.type!="string")throw new TypeError("Expected node, got `"+e+"`")}function xu(e,t,r){if(!r)throw new Error("`"+e+"` finished async. Use `"+t+"` instead")}function Bn(e){return Gf(e)?e:new Al(e)}function Gf(e){return!!(e&&typeof e=="object"&&"message"in e&&"messages"in e)}function Vf(e){return typeof e=="string"||jf(e)}function jf(e){return!!(e&&typeof e=="object"&&"byteLength"in e&&"byteOffset"in e)}const Wf="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",yu=[],vu={allowDangerousHtml:!0},Xf=/^(https?|ircs?|mailto|xmpp)$/i,$f=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"className",id:"remove-classname"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function Qf(e){const t=Kf(e),r=Jf(e);return Zf(t.runSync(t.parse(r),r),e)}function Kf(e){const t=e.rehypePlugins||yu,r=e.remarkPlugins||yu,n=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...vu}:vu;return Yf().use(Dd).use(r).use(Sf,n).use(t)}function Jf(e){const t=e.children||"",r=new Al;return typeof t=="string"&&(r.value=t),r}function Zf(e,t){const r=t.allowedElements,n=t.allowElement,a=t.components,i=t.disallowedElements,u=t.skipHtml,s=t.unwrapDisallowed,l=t.urlTransform||em;for(const d of $f)Object.hasOwn(t,d.from)&&(""+d.from+(d.to?"use `"+d.to+"` instead":"remove it")+Wf+d.id,void 0);return b0(e,c),m1(e,{Fragment:pe.Fragment,components:a,ignoreInvalidStyle:!0,jsx:pe.jsx,jsxs:pe.jsxs,passKeys:!0,passNode:!0});function c(d,f,g){if(d.type==="raw"&&g&&typeof f=="number")return u?g.children.splice(f,1):g.children[f]={type:"text",value:d.value},f;if(d.type==="element"){let p;for(p in H0)if(Object.hasOwn(H0,p)&&Object.hasOwn(d.properties,p)){const x=d.properties[p],S=H0[p];(S===null||S.includes(d.tagName))&&(d.properties[p]=l(String(x||""),p,d))}}if(d.type==="element"){let p=r?!r.includes(d.tagName):i?i.includes(d.tagName):!1;if(!p&&n&&typeof f=="number"&&(p=!n(d,f,g)),p&&g&&typeof f=="number")return s&&d.children?g.children.splice(f,1,...d.children):g.children.splice(f,1),f}}}function em(e){const t=e.indexOf(":"),r=e.indexOf("?"),n=e.indexOf("#"),a=e.indexOf("/");return t===-1||a!==-1&&t>a||r!==-1&&t>r||n!==-1&&t>n||Xf.test(e.slice(0,t))?e:""}function Au(e,t){const r=String(e);if(typeof t!="string")throw new TypeError("Expected character");let n=0,a=r.indexOf(t);for(;a!==-1;)n++,a=r.indexOf(t,a+t.length);return n}function tm(e){if(typeof e!="string")throw new TypeError("Expected a string");return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}function rm(e,t,r){const a=vn((r||{}).ignore||[]),i=nm(t);let u=-1;for(;++u0?{type:"text",value:L}:void 0),L===!1?g.lastIndex=W+1:(x!==W&&N.push({type:"text",value:c.value.slice(x,W)}),Array.isArray(L)?N.push(...L):L&&N.push(L),x=W+M[0].length,_=!0),!g.global)break;M=g.exec(c.value)}return _?(x?\]}]+$/.exec(e);if(!t)return[e,void 0];e=e.slice(0,t.index);let r=t[0],n=r.indexOf(")");const a=Au(e,"(");let i=Au(e,")");for(;n!==-1&&a>i;)e+=r.slice(0,n+1),r=r.slice(n+1),n=r.indexOf(")"),i++;return[e,r]}function kl(e,t){const r=e.input.charCodeAt(e.index-1);return(e.index===0||pr(r)||f0(r))&&(!t||r!==47)}Sl.peek=wm;function Em(){this.buffer()}function Tm(e){this.enter({type:"footnoteReference",identifier:"",label:""},e)}function xm(){this.buffer()}function ym(e){this.enter({type:"footnoteDefinition",identifier:"",label:"",children:[]},e)}function vm(e){const t=this.resume(),r=this.stack[this.stack.length-1];r.type,r.identifier=xt(this.sliceSerialize(e)).toLowerCase(),r.label=t}function Am(e){this.exit(e)}function km(e){const t=this.resume(),r=this.stack[this.stack.length-1];r.type,r.identifier=xt(this.sliceSerialize(e)).toLowerCase(),r.label=t}function Sm(e){this.exit(e)}function wm(){return"["}function Sl(e,t,r,n){const a=r.createTracker(n);let i=a.move("[^");const u=r.enter("footnoteReference"),s=r.enter("reference");return i+=a.move(r.safe(r.associationId(e),{after:"]",before:i})),s(),u(),i+=a.move("]"),i}function Cm(){return{enter:{gfmFootnoteCallString:Em,gfmFootnoteCall:Tm,gfmFootnoteDefinitionLabelString:xm,gfmFootnoteDefinition:ym},exit:{gfmFootnoteCallString:vm,gfmFootnoteCall:Am,gfmFootnoteDefinitionLabelString:km,gfmFootnoteDefinition:Sm}}}function _m(e){let t=!1;return e&&e.firstLineBlank&&(t=!0),{handlers:{footnoteDefinition:r,footnoteReference:Sl},unsafe:[{character:"[",inConstruct:["label","phrasing","reference"]}]};function r(n,a,i,u){const s=i.createTracker(u);let l=s.move("[^");const c=i.enter("footnoteDefinition"),d=i.enter("label");return l+=s.move(i.safe(i.associationId(n),{before:l,after:"]"})),d(),l+=s.move("]:"),n.children&&n.children.length>0&&(s.shift(4),l+=s.move((t?` -`:" ")+i.indentLines(i.containerFlow(n,s.current()),t?wl:Im))),c(),l}}function Im(e,t,r){return t===0?e:wl(e,t,r)}function wl(e,t,r){return(r?"":" ")+e}const Nm=["autolink","destinationLiteral","destinationRaw","reference","titleQuote","titleApostrophe"];Cl.peek=Mm;function Dm(){return{canContainEols:["delete"],enter:{strikethrough:Lm},exit:{strikethrough:Rm}}}function Om(){return{unsafe:[{character:"~",inConstruct:"phrasing",notInConstruct:Nm}],handlers:{delete:Cl}}}function Lm(e){this.enter({type:"delete",children:[]},e)}function Rm(e){this.exit(e)}function Cl(e,t,r,n){const a=r.createTracker(n),i=r.enter("strikethrough");let u=a.move("~~");return u+=r.containerPhrasing(e,{...a.current(),before:u,after:"~"}),u+=a.move("~~"),i(),u}function Mm(){return"~"}function Pm(e){return e.length}function Bm(e,t){const r=t||{},n=(r.align||[]).concat(),a=r.stringLength||Pm,i=[],u=[],s=[],l=[];let c=0,d=-1;for(;++dc&&(c=e[d].length);++_l[_])&&(l[_]=M)}S.push(N)}u[d]=S,s[d]=D}let f=-1;if(typeof n=="object"&&"length"in n)for(;++fl[f]&&(l[f]=N),p[f]=N),g[f]=M}u.splice(1,0,g),s.splice(1,0,p),d=-1;const x=[];for(;++d "),i.shift(2);const u=r.indentLines(r.containerFlow(e,i.current()),zm);return a(),u}function zm(e,t,r){return">"+(r?"":" ")+e}function Um(e,t){return wu(e,t.inConstruct,!0)&&!wu(e,t.notInConstruct,!1)}function wu(e,t,r){if(typeof t=="string"&&(t=[t]),!t||t.length===0)return r;let n=-1;for(;++nu&&(u=i):i=1,a=n+t.length,n=r.indexOf(t,a);return u}function qm(e,t){return!!(t.options.fences===!1&&e.value&&!e.lang&&/[^ \r\n]/.test(e.value)&&!/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(e.value))}function Ym(e){const t=e.options.fence||"`";if(t!=="`"&&t!=="~")throw new Error("Cannot serialize code with `"+t+"` for `options.fence`, expected `` ` `` or `~`");return t}function Gm(e,t,r,n){const a=Ym(r),i=e.value||"",u=a==="`"?"GraveAccent":"Tilde";if(qm(e,r)){const f=r.enter("codeIndented"),g=r.indentLines(i,Vm);return f(),g}const s=r.createTracker(n),l=a.repeat(Math.max(Il(i,a)+1,3)),c=r.enter("codeFenced");let d=s.move(l);if(e.lang){const f=r.enter(`codeFencedLang${u}`);d+=s.move(r.safe(e.lang,{before:d,after:" ",encode:["`"],...s.current()})),f()}if(e.lang&&e.meta){const f=r.enter(`codeFencedMeta${u}`);d+=s.move(" "),d+=s.move(r.safe(e.meta,{before:d,after:` -`,encode:["`"],...s.current()})),f()}return d+=s.move(` -`),i&&(d+=s.move(i+` -`)),d+=s.move(l),c(),d}function Vm(e,t,r){return(r?"":" ")+e}function di(e){const t=e.options.quote||'"';if(t!=='"'&&t!=="'")throw new Error("Cannot serialize title with `"+t+"` for `options.quote`, expected `\"`, or `'`");return t}function jm(e,t,r,n){const a=di(r),i=a==='"'?"Quote":"Apostrophe",u=r.enter("definition");let s=r.enter("label");const l=r.createTracker(n);let c=l.move("[");return c+=l.move(r.safe(r.associationId(e),{before:c,after:"]",...l.current()})),c+=l.move("]: "),s(),!e.url||/[\0- \u007F]/.test(e.url)?(s=r.enter("destinationLiteral"),c+=l.move("<"),c+=l.move(r.safe(e.url,{before:c,after:">",...l.current()})),c+=l.move(">")):(s=r.enter("destinationRaw"),c+=l.move(r.safe(e.url,{before:c,after:e.title?" ":` -`,...l.current()}))),s(),e.title&&(s=r.enter(`title${i}`),c+=l.move(" "+a),c+=l.move(r.safe(e.title,{before:c,after:a,...l.current()})),c+=l.move(a),s()),u(),c}function Wm(e){const t=e.options.emphasis||"*";if(t!=="*"&&t!=="_")throw new Error("Cannot serialize emphasis with `"+t+"` for `options.emphasis`, expected `*`, or `_`");return t}function pn(e){return"&#x"+e.toString(16).toUpperCase()+";"}function t0(e,t,r){const n=Ir(e),a=Ir(t);return n===void 0?a===void 0?r==="_"?{inside:!0,outside:!0}:{inside:!1,outside:!1}:a===1?{inside:!0,outside:!0}:{inside:!1,outside:!0}:n===1?a===void 0?{inside:!1,outside:!1}:a===1?{inside:!0,outside:!0}:{inside:!1,outside:!1}:a===void 0?{inside:!1,outside:!1}:a===1?{inside:!0,outside:!1}:{inside:!1,outside:!1}}Nl.peek=Xm;function Nl(e,t,r,n){const a=Wm(r),i=r.enter("emphasis"),u=r.createTracker(n),s=u.move(a);let l=u.move(r.containerPhrasing(e,{after:a,before:s,...u.current()}));const c=l.charCodeAt(0),d=t0(n.before.charCodeAt(n.before.length-1),c,a);d.inside&&(l=pn(c)+l.slice(1));const f=l.charCodeAt(l.length-1),g=t0(n.after.charCodeAt(0),f,a);g.inside&&(l=l.slice(0,-1)+pn(f));const p=u.move(a);return i(),r.attentionEncodeSurroundingInfo={after:g.outside,before:d.outside},s+l+p}function Xm(e,t,r){return r.options.emphasis||"*"}function $m(e,t){let r=!1;return b0(e,function(n){if("value"in n&&/\r?\n|\r/.test(n.value)||n.type==="break")return r=!0,Aa}),!!((!e.depth||e.depth<3)&&ni(e)&&(t.options.setext||r))}function Qm(e,t,r,n){const a=Math.max(Math.min(6,e.depth||1),1),i=r.createTracker(n);if($m(e,r)){const d=r.enter("headingSetext"),f=r.enter("phrasing"),g=r.containerPhrasing(e,{...i.current(),before:` -`,after:` -`});return f(),d(),g+` -`+(a===1?"=":"-").repeat(g.length-(Math.max(g.lastIndexOf("\r"),g.lastIndexOf(` -`))+1))}const u="#".repeat(a),s=r.enter("headingAtx"),l=r.enter("phrasing");i.move(u+" ");let c=r.containerPhrasing(e,{before:"# ",after:` -`,...i.current()});return/^[\t ]/.test(c)&&(c=pn(c.charCodeAt(0))+c.slice(1)),c=c?u+" "+c:u,r.options.closeAtx&&(c+=" "+u),l(),s(),c}Dl.peek=Km;function Dl(e){return e.value||""}function Km(){return"<"}Ol.peek=Jm;function Ol(e,t,r,n){const a=di(r),i=a==='"'?"Quote":"Apostrophe",u=r.enter("image");let s=r.enter("label");const l=r.createTracker(n);let c=l.move("![");return c+=l.move(r.safe(e.alt,{before:c,after:"]",...l.current()})),c+=l.move("]("),s(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(s=r.enter("destinationLiteral"),c+=l.move("<"),c+=l.move(r.safe(e.url,{before:c,after:">",...l.current()})),c+=l.move(">")):(s=r.enter("destinationRaw"),c+=l.move(r.safe(e.url,{before:c,after:e.title?" ":")",...l.current()}))),s(),e.title&&(s=r.enter(`title${i}`),c+=l.move(" "+a),c+=l.move(r.safe(e.title,{before:c,after:a,...l.current()})),c+=l.move(a),s()),c+=l.move(")"),u(),c}function Jm(){return"!"}Ll.peek=Zm;function Ll(e,t,r,n){const a=e.referenceType,i=r.enter("imageReference");let u=r.enter("label");const s=r.createTracker(n);let l=s.move("![");const c=r.safe(e.alt,{before:l,after:"]",...s.current()});l+=s.move(c+"]["),u();const d=r.stack;r.stack=[],u=r.enter("reference");const f=r.safe(r.associationId(e),{before:l,after:"]",...s.current()});return u(),r.stack=d,i(),a==="full"||!c||c!==f?l+=s.move(f+"]"):a==="shortcut"?l=l.slice(0,-1):l+=s.move("]"),l}function Zm(){return"!"}Rl.peek=e2;function Rl(e,t,r){let n=e.value||"",a="`",i=-1;for(;new RegExp("(^|[^`])"+a+"([^`]|$)").test(n);)a+="`";for(/[^ \r\n]/.test(n)&&(/^[ \r\n]/.test(n)&&/[ \r\n]$/.test(n)||/^`|`$/.test(n))&&(n=" "+n+" ");++i\u007F]/.test(e.url))}Pl.peek=t2;function Pl(e,t,r,n){const a=di(r),i=a==='"'?"Quote":"Apostrophe",u=r.createTracker(n);let s,l;if(Ml(e,r)){const d=r.stack;r.stack=[],s=r.enter("autolink");let f=u.move("<");return f+=u.move(r.containerPhrasing(e,{before:f,after:">",...u.current()})),f+=u.move(">"),s(),r.stack=d,f}s=r.enter("link"),l=r.enter("label");let c=u.move("[");return c+=u.move(r.containerPhrasing(e,{before:c,after:"](",...u.current()})),c+=u.move("]("),l(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(l=r.enter("destinationLiteral"),c+=u.move("<"),c+=u.move(r.safe(e.url,{before:c,after:">",...u.current()})),c+=u.move(">")):(l=r.enter("destinationRaw"),c+=u.move(r.safe(e.url,{before:c,after:e.title?" ":")",...u.current()}))),l(),e.title&&(l=r.enter(`title${i}`),c+=u.move(" "+a),c+=u.move(r.safe(e.title,{before:c,after:a,...u.current()})),c+=u.move(a),l()),c+=u.move(")"),s(),c}function t2(e,t,r){return Ml(e,r)?"<":"["}Bl.peek=r2;function Bl(e,t,r,n){const a=e.referenceType,i=r.enter("linkReference");let u=r.enter("label");const s=r.createTracker(n);let l=s.move("[");const c=r.containerPhrasing(e,{before:l,after:"]",...s.current()});l+=s.move(c+"]["),u();const d=r.stack;r.stack=[],u=r.enter("reference");const f=r.safe(r.associationId(e),{before:l,after:"]",...s.current()});return u(),r.stack=d,i(),a==="full"||!c||c!==f?l+=s.move(f+"]"):a==="shortcut"?l=l.slice(0,-1):l+=s.move("]"),l}function r2(){return"["}function fi(e){const t=e.options.bullet||"*";if(t!=="*"&&t!=="+"&&t!=="-")throw new Error("Cannot serialize items with `"+t+"` for `options.bullet`, expected `*`, `+`, or `-`");return t}function n2(e){const t=fi(e),r=e.options.bulletOther;if(!r)return t==="*"?"-":"*";if(r!=="*"&&r!=="+"&&r!=="-")throw new Error("Cannot serialize items with `"+r+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(r===t)throw new Error("Expected `bullet` (`"+t+"`) and `bulletOther` (`"+r+"`) to be different");return r}function a2(e){const t=e.options.bulletOrdered||".";if(t!=="."&&t!==")")throw new Error("Cannot serialize items with `"+t+"` for `options.bulletOrdered`, expected `.` or `)`");return t}function Fl(e){const t=e.options.rule||"*";if(t!=="*"&&t!=="-"&&t!=="_")throw new Error("Cannot serialize rules with `"+t+"` for `options.rule`, expected `*`, `-`, or `_`");return t}function i2(e,t,r,n){const a=r.enter("list"),i=r.bulletCurrent;let u=e.ordered?a2(r):fi(r);const s=e.ordered?u==="."?")":".":n2(r);let l=t&&r.bulletLastUsed?u===r.bulletLastUsed:!1;if(!e.ordered){const d=e.children?e.children[0]:void 0;if((u==="*"||u==="-")&&d&&(!d.children||!d.children[0])&&r.stack[r.stack.length-1]==="list"&&r.stack[r.stack.length-2]==="listItem"&&r.stack[r.stack.length-3]==="list"&&r.stack[r.stack.length-4]==="listItem"&&r.indexStack[r.indexStack.length-1]===0&&r.indexStack[r.indexStack.length-2]===0&&r.indexStack[r.indexStack.length-3]===0&&(l=!0),Fl(r)===u&&d){let f=-1;for(;++f-1?t.start:1)+(r.options.incrementListMarker===!1?0:t.children.indexOf(e))+i);let u=i.length+1;(a==="tab"||a==="mixed"&&(t&&t.type==="list"&&t.spread||e.spread))&&(u=Math.ceil(u/4)*4);const s=r.createTracker(n);s.move(i+" ".repeat(u-i.length)),s.shift(u);const l=r.enter("listItem"),c=r.indentLines(r.containerFlow(e,s.current()),d);return l(),c;function d(f,g,p){return g?(p?"":" ".repeat(u))+f:(p?i:i+" ".repeat(u-i.length))+f}}function l2(e,t,r,n){const a=r.enter("paragraph"),i=r.enter("phrasing"),u=r.containerPhrasing(e,n);return i(),a(),u}const o2=vn(["break","delete","emphasis","footnote","footnoteReference","image","imageReference","inlineCode","inlineMath","link","linkReference","mdxJsxTextElement","mdxTextExpression","strong","text","textDirective"]);function c2(e,t,r,n){return(e.children.some(function(u){return o2(u)})?r.containerPhrasing:r.containerFlow).call(r,e,n)}function h2(e){const t=e.options.strong||"*";if(t!=="*"&&t!=="_")throw new Error("Cannot serialize strong with `"+t+"` for `options.strong`, expected `*`, or `_`");return t}Hl.peek=d2;function Hl(e,t,r,n){const a=h2(r),i=r.enter("strong"),u=r.createTracker(n),s=u.move(a+a);let l=u.move(r.containerPhrasing(e,{after:a,before:s,...u.current()}));const c=l.charCodeAt(0),d=t0(n.before.charCodeAt(n.before.length-1),c,a);d.inside&&(l=pn(c)+l.slice(1));const f=l.charCodeAt(l.length-1),g=t0(n.after.charCodeAt(0),f,a);g.inside&&(l=l.slice(0,-1)+pn(f));const p=u.move(a+a);return i(),r.attentionEncodeSurroundingInfo={after:g.outside,before:d.outside},s+l+p}function d2(e,t,r){return r.options.strong||"*"}function f2(e,t,r,n){return r.safe(e.value,n)}function m2(e){const t=e.options.ruleRepetition||3;if(t<3)throw new Error("Cannot serialize rules with repetition `"+t+"` for `options.ruleRepetition`, expected `3` or more");return t}function p2(e,t,r){const n=(Fl(r)+(r.options.ruleSpaces?" ":"")).repeat(m2(r));return r.options.ruleSpaces?n.slice(0,-1):n}const zl={blockquote:Hm,break:Cu,code:Gm,definition:jm,emphasis:Nl,hardBreak:Cu,heading:Qm,html:Dl,image:Ol,imageReference:Ll,inlineCode:Rl,link:Pl,linkReference:Bl,list:i2,listItem:s2,paragraph:l2,root:c2,strong:Hl,text:f2,thematicBreak:p2};function g2(){return{enter:{table:b2,tableData:_u,tableHeader:_u,tableRow:T2},exit:{codeText:x2,table:E2,tableData:Z0,tableHeader:Z0,tableRow:Z0}}}function b2(e){const t=e._align;this.enter({type:"table",align:t.map(function(r){return r==="none"?null:r}),children:[]},e),this.data.inTable=!0}function E2(e){this.exit(e),this.data.inTable=void 0}function T2(e){this.enter({type:"tableRow",children:[]},e)}function Z0(e){this.exit(e)}function _u(e){this.enter({type:"tableCell",children:[]},e)}function x2(e){let t=this.resume();this.data.inTable&&(t=t.replace(/\\([\\|])/g,y2));const r=this.stack[this.stack.length-1];r.type,r.value=t,this.exit(e)}function y2(e,t){return t==="|"?t:e}function v2(e){const t=e||{},r=t.tableCellPadding,n=t.tablePipeAlign,a=t.stringLength,i=r?" ":"|";return{unsafe:[{character:"\r",inConstruct:"tableCell"},{character:` -`,inConstruct:"tableCell"},{atBreak:!0,character:"|",after:"[ :-]"},{character:"|",inConstruct:"tableCell"},{atBreak:!0,character:":",after:"-"},{atBreak:!0,character:"-",after:"[:|-]"}],handlers:{inlineCode:g,table:u,tableCell:l,tableRow:s}};function u(p,x,S,D){return c(d(p,S,D),p.align)}function s(p,x,S,D){const _=f(p,S,D),N=c([_]);return N.slice(0,N.indexOf(` -`))}function l(p,x,S,D){const _=S.enter("tableCell"),N=S.enter("phrasing"),M=S.containerPhrasing(p,{...D,before:i,after:i});return N(),_(),M}function c(p,x){return Bm(p,{align:x,alignDelimiters:n,padding:r,stringLength:a})}function d(p,x,S){const D=p.children;let _=-1;const N=[],M=x.enter("table");for(;++_0&&!r&&(e[e.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),r}const z2={tokenize:X2,partial:!0};function U2(){return{document:{91:{name:"gfmFootnoteDefinition",tokenize:V2,continuation:{tokenize:j2},exit:W2}},text:{91:{name:"gfmFootnoteCall",tokenize:G2},93:{name:"gfmPotentialFootnoteCall",add:"after",tokenize:q2,resolveTo:Y2}}}}function q2(e,t,r){const n=this;let a=n.events.length;const i=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]);let u;for(;a--;){const l=n.events[a][1];if(l.type==="labelImage"){u=l;break}if(l.type==="gfmFootnoteCall"||l.type==="labelLink"||l.type==="label"||l.type==="image"||l.type==="link")break}return s;function s(l){if(!u||!u._balanced)return r(l);const c=xt(n.sliceSerialize({start:u.end,end:n.now()}));return c.codePointAt(0)!==94||!i.includes(c.slice(1))?r(l):(e.enter("gfmFootnoteCallLabelMarker"),e.consume(l),e.exit("gfmFootnoteCallLabelMarker"),t(l))}}function Y2(e,t){let r=e.length;for(;r--;)if(e[r][1].type==="labelImage"&&e[r][0]==="enter"){e[r][1];break}e[r+1][1].type="data",e[r+3][1].type="gfmFootnoteCallLabelMarker";const n={type:"gfmFootnoteCall",start:Object.assign({},e[r+3][1].start),end:Object.assign({},e[e.length-1][1].end)},a={type:"gfmFootnoteCallMarker",start:Object.assign({},e[r+3][1].end),end:Object.assign({},e[r+3][1].end)};a.end.column++,a.end.offset++,a.end._bufferIndex++;const i={type:"gfmFootnoteCallString",start:Object.assign({},a.end),end:Object.assign({},e[e.length-1][1].start)},u={type:"chunkString",contentType:"string",start:Object.assign({},i.start),end:Object.assign({},i.end)},s=[e[r+1],e[r+2],["enter",n,t],e[r+3],e[r+4],["enter",a,t],["exit",a,t],["enter",i,t],["enter",u,t],["exit",u,t],["exit",i,t],e[e.length-2],e[e.length-1],["exit",n,t]];return e.splice(r,e.length-r+1,...s),e}function G2(e,t,r){const n=this,a=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]);let i=0,u;return s;function s(f){return e.enter("gfmFootnoteCall"),e.enter("gfmFootnoteCallLabelMarker"),e.consume(f),e.exit("gfmFootnoteCallLabelMarker"),l}function l(f){return f!==94?r(f):(e.enter("gfmFootnoteCallMarker"),e.consume(f),e.exit("gfmFootnoteCallMarker"),e.enter("gfmFootnoteCallString"),e.enter("chunkString").contentType="string",c)}function c(f){if(i>999||f===93&&!u||f===null||f===91||ve(f))return r(f);if(f===93){e.exit("chunkString");const g=e.exit("gfmFootnoteCallString");return a.includes(xt(n.sliceSerialize(g)))?(e.enter("gfmFootnoteCallLabelMarker"),e.consume(f),e.exit("gfmFootnoteCallLabelMarker"),e.exit("gfmFootnoteCall"),t):r(f)}return ve(f)||(u=!0),i++,e.consume(f),f===92?d:c}function d(f){return f===91||f===92||f===93?(e.consume(f),i++,c):c(f)}}function V2(e,t,r){const n=this,a=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]);let i,u=0,s;return l;function l(x){return e.enter("gfmFootnoteDefinition")._container=!0,e.enter("gfmFootnoteDefinitionLabel"),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(x),e.exit("gfmFootnoteDefinitionLabelMarker"),c}function c(x){return x===94?(e.enter("gfmFootnoteDefinitionMarker"),e.consume(x),e.exit("gfmFootnoteDefinitionMarker"),e.enter("gfmFootnoteDefinitionLabelString"),e.enter("chunkString").contentType="string",d):r(x)}function d(x){if(u>999||x===93&&!s||x===null||x===91||ve(x))return r(x);if(x===93){e.exit("chunkString");const S=e.exit("gfmFootnoteDefinitionLabelString");return i=xt(n.sliceSerialize(S)),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(x),e.exit("gfmFootnoteDefinitionLabelMarker"),e.exit("gfmFootnoteDefinitionLabel"),g}return ve(x)||(s=!0),u++,e.consume(x),x===92?f:d}function f(x){return x===91||x===92||x===93?(e.consume(x),u++,d):d(x)}function g(x){return x===58?(e.enter("definitionMarker"),e.consume(x),e.exit("definitionMarker"),a.includes(i)||a.push(i),fe(e,p,"gfmFootnoteDefinitionWhitespace")):r(x)}function p(x){return t(x)}}function j2(e,t,r){return e.check(yn,t,e.attempt(z2,t,r))}function W2(e){e.exit("gfmFootnoteDefinition")}function X2(e,t,r){const n=this;return fe(e,a,"gfmFootnoteDefinitionIndent",5);function a(i){const u=n.events[n.events.length-1];return u&&u[1].type==="gfmFootnoteDefinitionIndent"&&u[2].sliceSerialize(u[1],!0).length===4?t(i):r(i)}}function $2(e){let r=(e||{}).singleTilde;const n={name:"strikethrough",tokenize:i,resolveAll:a};return r==null&&(r=!0),{text:{126:n},insideSpan:{null:[n]},attentionMarkers:{null:[126]}};function a(u,s){let l=-1;for(;++l1?l(x):(u.consume(x),f++,p);if(f<2&&!r)return l(x);const D=u.exit("strikethroughSequenceTemporary"),_=Ir(x);return D._open=!_||_===2&&!!S,D._close=!S||S===2&&!!_,s(x)}}}class Q2{constructor(){this.map=[]}add(t,r,n){K2(this,t,r,n)}consume(t){if(this.map.sort(function(i,u){return i[0]-u[0]}),this.map.length===0)return;let r=this.map.length;const n=[];for(;r>0;)r-=1,n.push(t.slice(this.map[r][0]+this.map[r][1]),this.map[r][2]),t.length=this.map[r][0];n.push(t.slice()),t.length=0;let a=n.pop();for(;a;){for(const i of a)t.push(i);a=n.pop()}this.map.length=0}}function K2(e,t,r,n){let a=0;if(!(r===0&&n.length===0)){for(;a-1;){const ne=n.events[J][1].type;if(ne==="lineEnding"||ne==="linePrefix")J--;else break}const Q=J>-1?n.events[J][1].type:null,be=Q==="tableHead"||Q==="tableRow"?L:l;return be===L&&n.parser.lazy[n.now().line]?r(R):be(R)}function l(R){return e.enter("tableHead"),e.enter("tableRow"),c(R)}function c(R){return R===124||(u=!0,i+=1),d(R)}function d(R){return R===null?r(R):ae(R)?i>1?(i=0,n.interrupt=!0,e.exit("tableRow"),e.enter("lineEnding"),e.consume(R),e.exit("lineEnding"),p):r(R):ge(R)?fe(e,d,"whitespace")(R):(i+=1,u&&(u=!1,a+=1),R===124?(e.enter("tableCellDivider"),e.consume(R),e.exit("tableCellDivider"),u=!0,d):(e.enter("data"),f(R)))}function f(R){return R===null||R===124||ve(R)?(e.exit("data"),d(R)):(e.consume(R),R===92?g:f)}function g(R){return R===92||R===124?(e.consume(R),f):f(R)}function p(R){return n.interrupt=!1,n.parser.lazy[n.now().line]?r(R):(e.enter("tableDelimiterRow"),u=!1,ge(R)?fe(e,x,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(R):x(R))}function x(R){return R===45||R===58?D(R):R===124?(u=!0,e.enter("tableCellDivider"),e.consume(R),e.exit("tableCellDivider"),S):j(R)}function S(R){return ge(R)?fe(e,D,"whitespace")(R):D(R)}function D(R){return R===58?(i+=1,u=!0,e.enter("tableDelimiterMarker"),e.consume(R),e.exit("tableDelimiterMarker"),_):R===45?(i+=1,_(R)):R===null||ae(R)?W(R):j(R)}function _(R){return R===45?(e.enter("tableDelimiterFiller"),N(R)):j(R)}function N(R){return R===45?(e.consume(R),N):R===58?(u=!0,e.exit("tableDelimiterFiller"),e.enter("tableDelimiterMarker"),e.consume(R),e.exit("tableDelimiterMarker"),M):(e.exit("tableDelimiterFiller"),M(R))}function M(R){return ge(R)?fe(e,W,"whitespace")(R):W(R)}function W(R){return R===124?x(R):R===null||ae(R)?!u||a!==i?j(R):(e.exit("tableDelimiterRow"),e.exit("tableHead"),t(R)):j(R)}function j(R){return r(R)}function L(R){return e.enter("tableRow"),ee(R)}function ee(R){return R===124?(e.enter("tableCellDivider"),e.consume(R),e.exit("tableCellDivider"),ee):R===null||ae(R)?(e.exit("tableRow"),t(R)):ge(R)?fe(e,ee,"whitespace")(R):(e.enter("data"),re(R))}function re(R){return R===null||R===124||ve(R)?(e.exit("data"),ee(R)):(e.consume(R),R===92?K:re)}function K(R){return R===92||R===124?(e.consume(R),re):re(R)}}function t4(e,t){let r=-1,n=!0,a=0,i=[0,0,0,0],u=[0,0,0,0],s=!1,l=0,c,d,f;const g=new Q2;for(;++rr[2]+1){const x=r[2]+1,S=r[3]-r[2]-1;e.add(x,S,[])}}e.add(r[3]+1,0,[["exit",f,t]])}return a!==void 0&&(i.end=Object.assign({},wr(t.events,a)),e.add(a,0,[["exit",i,t]]),i=void 0),i}function Nu(e,t,r,n,a){const i=[],u=wr(t.events,r);a&&(a.end=Object.assign({},u),i.push(["exit",a,t])),n.end=Object.assign({},u),i.push(["exit",n,t]),e.add(r+1,0,i)}function wr(e,t){const r=e[t],n=r[0]==="enter"?"start":"end";return r[1][n]}const r4={name:"tasklistCheck",tokenize:a4};function n4(){return{text:{91:r4}}}function a4(e,t,r){const n=this;return a;function a(l){return n.previous!==null||!n._gfmTasklistFirstContentOfListItem?r(l):(e.enter("taskListCheck"),e.enter("taskListCheckMarker"),e.consume(l),e.exit("taskListCheckMarker"),i)}function i(l){return ve(l)?(e.enter("taskListCheckValueUnchecked"),e.consume(l),e.exit("taskListCheckValueUnchecked"),u):l===88||l===120?(e.enter("taskListCheckValueChecked"),e.consume(l),e.exit("taskListCheckValueChecked"),u):r(l)}function u(l){return l===93?(e.enter("taskListCheckMarker"),e.consume(l),e.exit("taskListCheckMarker"),e.exit("taskListCheck"),s):r(l)}function s(l){return ae(l)?t(l):ge(l)?e.check({tokenize:i4},t,r)(l):r(l)}}function i4(e,t,r){return fe(e,n,"whitespace");function n(a){return a===null?r(a):t(a)}}function u4(e){return rl([D2(),U2(),$2(e),Z2(),n4()])}const s4={};function l4(e){const t=this,r=e||s4,n=t.data(),a=n.micromarkExtensions||(n.micromarkExtensions=[]),i=n.fromMarkdownExtensions||(n.fromMarkdownExtensions=[]),u=n.toMarkdownExtensions||(n.toMarkdownExtensions=[]);a.push(u4(r)),i.push(C2()),u.push(_2(r))}function o4(){return{enter:{mathFlow:e,mathFlowFenceMeta:t,mathText:i},exit:{mathFlow:a,mathFlowFence:n,mathFlowFenceMeta:r,mathFlowValue:s,mathText:u,mathTextData:s}};function e(l){const c={type:"element",tagName:"code",properties:{className:["language-math","math-display"]},children:[]};this.enter({type:"math",meta:null,value:"",data:{hName:"pre",hChildren:[c]}},l)}function t(){this.buffer()}function r(){const l=this.resume(),c=this.stack[this.stack.length-1];c.type,c.meta=l}function n(){this.data.mathFlowInside||(this.buffer(),this.data.mathFlowInside=!0)}function a(l){const c=this.resume().replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,""),d=this.stack[this.stack.length-1];d.type,this.exit(l),d.value=c;const f=d.data.hChildren[0];f.type,f.tagName,f.children.push({type:"text",value:c}),this.data.mathFlowInside=void 0}function i(l){this.enter({type:"inlineMath",value:"",data:{hName:"code",hProperties:{className:["language-math","math-inline"]},hChildren:[]}},l),this.buffer()}function u(l){const c=this.resume(),d=this.stack[this.stack.length-1];d.type,this.exit(l),d.value=c,d.data.hChildren.push({type:"text",value:c})}function s(l){this.config.enter.data.call(this,l),this.config.exit.data.call(this,l)}}function c4(e){let t=(e||{}).singleDollarTextMath;return t==null&&(t=!0),n.peek=a,{unsafe:[{character:"\r",inConstruct:"mathFlowMeta"},{character:` -`,inConstruct:"mathFlowMeta"},{character:"$",after:t?void 0:"\\$",inConstruct:"phrasing"},{character:"$",inConstruct:"mathFlowMeta"},{atBreak:!0,character:"$",after:"\\$"}],handlers:{math:r,inlineMath:n}};function r(i,u,s,l){const c=i.value||"",d=s.createTracker(l),f="$".repeat(Math.max(Il(c,"$")+1,2)),g=s.enter("mathFlow");let p=d.move(f);if(i.meta){const x=s.enter("mathFlowMeta");p+=d.move(s.safe(i.meta,{after:` -`,before:p,encode:["$"],...d.current()})),x()}return p+=d.move(` -`),c&&(p+=d.move(c+` -`)),p+=d.move(f),g(),p}function n(i,u,s){let l=i.value||"",c=1;for(t||c++;new RegExp("(^|[^$])"+"\\$".repeat(c)+"([^$]|$)").test(l);)c++;const d="$".repeat(c);/[^ \r\n]/.test(l)&&(/^[ \r\n]/.test(l)&&/[ \r\n]$/.test(l)||/^\$|\$$/.test(l))&&(l=" "+l+" ");let f=-1;for(;++f15?c="…"+s.slice(a-15,a):c=s.slice(0,a);var d;i+15e.replace(E4,"-$1").toLowerCase(),x4={"&":"&",">":">","<":"<",'"':""","'":"'"},y4=/[&><"']/g,Ve=e=>String(e).replace(y4,t=>x4[t]),$n=e=>e.type==="ordgroup"||e.type==="color"?e.body.length===1?$n(e.body[0]):e:e.type==="font"?$n(e.body):e,v4=new Set(["mathord","textord","atom"]),qt=e=>v4.has($n(e).type),A4=e=>{var t=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return t?t[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(t[1])?null:t[1].toLowerCase():"_relative"},_a={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:e=>"#"+e},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(e,t)=>(t.push(e),t)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:e=>Math.max(0,e),cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:e=>Math.max(0,e),cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:e=>Math.max(0,e),cli:"-e, --max-expand ",cliProcessor:e=>e==="Infinity"?1/0:parseInt(e)},globalGroup:{type:"boolean",cli:!1}};function k4(e){if(typeof e!="string")return e.enum[0];switch(e){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{};default:throw new Error("Unexpected schema type; settings must declare an explicit default.")}}function S4(e){if(e.default!==void 0)return e.default;var t=Array.isArray(e.type)?e.type[0]:e.type;return k4(t)}function w4(e,t,r,n){var a=r[t];e[t]=a!==void 0?n.processor?n.processor(a):a:S4(n)}class pi{constructor(t){t===void 0&&(t={}),this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,t=t||{};for(var r of Object.keys(_a)){var n=_a[r];n&&w4(this,r,t,n)}}reportNonstrict(t,r,n){var a=this.strict;if(typeof a=="function"&&(a=a(t,r,n)),!(!a||a==="ignore")){if(a===!0||a==="error")throw new Y("LaTeX-incompatible input and strict mode is set to 'error': "+(r+" ["+t+"]"),n);a==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+t+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+a+"': "+r+" ["+t+"]"))}}useStrictBehavior(t,r,n){var a=this.strict;if(typeof a=="function")try{a=a(t,r,n)}catch{a="error"}return!a||a==="ignore"?!1:a===!0||a==="error"?!0:a==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+t+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+a+"': "+r+" ["+t+"]")),!1)}isTrusted(t){if("url"in t&&t.url&&!t.protocol){var r=A4(t.url);if(r==null)return!1;t.protocol=r}var n=typeof this.trust=="function"?this.trust(t):this.trust;return!!n}}class jt{constructor(t,r,n){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=t,this.size=r,this.cramped=n}sup(){return kt[C4[this.id]]}sub(){return kt[_4[this.id]]}fracNum(){return kt[I4[this.id]]}fracDen(){return kt[N4[this.id]]}cramp(){return kt[D4[this.id]]}text(){return kt[O4[this.id]]}isTight(){return this.size>=2}}var gi=0,r0=1,_r=2,Ht=3,gn=4,gt=5,Dr=6,Je=7,kt=[new jt(gi,0,!1),new jt(r0,0,!0),new jt(_r,1,!1),new jt(Ht,1,!0),new jt(gn,2,!1),new jt(gt,2,!0),new jt(Dr,3,!1),new jt(Je,3,!0)],C4=[gn,gt,gn,gt,Dr,Je,Dr,Je],_4=[gt,gt,gt,gt,Je,Je,Je,Je],I4=[_r,Ht,gn,gt,Dr,Je,Dr,Je],N4=[Ht,Ht,gt,gt,Je,Je,Je,Je],D4=[r0,r0,Ht,Ht,gt,gt,Je,Je],O4=[gi,r0,_r,Ht,_r,Ht,_r,Ht],oe={DISPLAY:kt[gi],TEXT:kt[_r],SCRIPT:kt[gn],SCRIPTSCRIPT:kt[Dr]},Ia=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];function L4(e){for(var t=0;t=a[0]&&e<=a[1])return r.name}return null}var Qn=[];Ia.forEach(e=>e.blocks.forEach(t=>Qn.push(...t)));function $l(e){for(var t=0;t=Qn[t]&&e<=Qn[t+1])return!0;return!1}var Fe=e=>e+" "+e,kr=80,R4=function(t,r){return"M95,"+(622+t+r)+` -c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14 -c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54 -c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10 -s173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429 -c69,-144,104.5,-217.7,106.5,-221 -l`+t/2.075+" -"+t+` -c5.3,-9.3,12,-14,20,-14 -H400000v`+(40+t)+`H845.2724 -s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7 -c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z -M`+(834+t)+" "+r+"h400000v"+(40+t)+"h-400000z"},M4=function(t,r){return"M263,"+(601+t+r)+`c0.7,0,18,39.7,52,119 -c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120 -c340,-704.7,510.7,-1060.3,512,-1067 -l`+t/2.084+" -"+t+` -c4.7,-7.3,11,-11,19,-11 -H40000v`+(40+t)+`H1012.3 -s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232 -c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1 -s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26 -c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z -M`+(1001+t)+" "+r+"h400000v"+(40+t)+"h-400000z"},P4=function(t,r){return"M983 "+(10+t+r)+` -l`+t/3.13+" -"+t+` -c4,-6.7,10,-10,18,-10 H400000v`+(40+t)+` -H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7 -s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744 -c-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30 -c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722 -c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5 -c53.7,-170.3,84.5,-266.8,92.5,-289.5z -M`+(1001+t)+" "+r+"h400000v"+(40+t)+"h-400000z"},B4=function(t,r){return"M424,"+(2398+t+r)+` -c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514 -c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20 -s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121 -s209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081 -l`+t/4.223+" -"+t+`c4,-6.7,10,-10,18,-10 H400000 -v`+(40+t)+`H1014.6 -s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185 -c-2,6,-10,9,-24,9 -c-8,0,-12,-0.7,-12,-2z M`+(1001+t)+" "+r+` -h400000v`+(40+t)+"h-400000z"},F4=function(t,r){return"M473,"+(2713+t+r)+` -c339.3,-1799.3,509.3,-2700,510,-2702 l`+t/5.298+" -"+t+` -c3.3,-7.3,9.3,-11,18,-11 H400000v`+(40+t)+`H1017.7 -s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9 -c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200 -c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26 -s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104, -606zM`+(1001+t)+" "+r+"h400000v"+(40+t)+"H1017.7z"},H4=function(t){var r=t/2;return"M400000 "+t+" H0 L"+r+" 0 l65 45 L145 "+(t-80)+" H400000z"},z4=function(t,r,n){var a=n-54-r-t;return"M702 "+(t+r)+"H400000"+(40+t)+` -H742v`+a+`l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1 -h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170 -c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667 -219 661 l218 661zM702 `+r+"H400000v"+(40+t)+"H742z"},U4=function(t,r,n){r=1e3*r;var a="";switch(t){case"sqrtMain":a=R4(r,kr);break;case"sqrtSize1":a=M4(r,kr);break;case"sqrtSize2":a=P4(r,kr);break;case"sqrtSize3":a=B4(r,kr);break;case"sqrtSize4":a=F4(r,kr);break;case"sqrtTall":a=z4(r,kr,n)}return a},q4=function(t,r){switch(t){case"⎜":return Fe("M291 0 H417 V"+r+" H291z");case"∣":return Fe("M145 0 H188 V"+r+" H145z");case"∥":return Fe("M145 0 H188 V"+r+" H145z")+Fe("M367 0 H410 V"+r+" H367z");case"⎟":return Fe("M457 0 H583 V"+r+" H457z");case"⎢":return Fe("M319 0 H403 V"+r+" H319z");case"⎥":return Fe("M263 0 H347 V"+r+" H263z");case"⎪":return Fe("M384 0 H504 V"+r+" H384z");case"⏐":return Fe("M312 0 H355 V"+r+" H312z");case"‖":return Fe("M257 0 H300 V"+r+" H257z")+Fe("M478 0 H521 V"+r+" H478z");default:return""}},Ou={doubleleftarrow:`M262 157 -l10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3 - 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28 - 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5 -c2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5 - 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87 --86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7 --2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z -m8 0v40h399730v-40zm0 194v40h399730v-40z`,doublerightarrow:`M399738 392l --10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5 - 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88 --33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68 --17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18 --13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782 -c-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3 --107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z`,leftarrow:`M400000 241H110l3-3c68.7-52.7 113.7-120 - 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8 --5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247 -c-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208 - 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3 - 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202 - l-3-3h399890zM100 241v40h399900v-40z`,leftbrace:`M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117 --45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7 - 5-6 9-10 13-.7 1-7.3 1-20 1H6z`,leftbraceunder:`M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13 - 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688 - 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7 --331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z`,leftgroup:`M400000 80 -H435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0 - 435 0h399565z`,leftgroupunder:`M400000 262 -H435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219 - 435 219h399565z`,leftharpoon:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3 --3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5 --18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7 --196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z`,leftharpoonplus:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5 - 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3 --4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7 --10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z -m0 0v40h400000v-40z`,leftharpoondown:`M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333 - 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5 - 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667 --152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z`,leftharpoondownplus:`M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12 - 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7 --2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0 -v40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z`,lefthook:`M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5 --83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3 --68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21 - 71.5 23h399859zM103 281v-40h399897v40z`,leftlinesegment:Fe("M40 281 V428 H0 V94 H40 V241 H400000 v40z"),leftbracketunder:Fe("M0 0 h120 V290 H399995 v120 H0z"),leftbracketover:Fe("M0 440 h120 V150 H399995 v-120 H0z"),leftmapsto:Fe("M40 281 V448H0V74H40V241H400000v40z"),leftToFrom:`M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23 --.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8 -c28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3 - 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z`,longequal:Fe("M0 50 h400000 v40H0z m0 194h40000v40H0z"),midbrace:`M200428 334 -c-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14 --53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7 - 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11 - 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z`,midbraceunder:`M199572 214 -c100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14 - 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3 - 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0 --5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z`,oiintSize1:`M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6 --320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z -m368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8 -60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z`,oiintSize2:`M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8 --451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z -m502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2 -c0 110 84 276 504 276s502.4-166 502.4-276z`,oiiintSize1:`M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6 --480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z -m525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0 -85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z`,oiiintSize2:`M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8 --707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z -m770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1 -c0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z`,rightarrow:`M0 241v40h399891c-47.3 35.3-84 78-110 128 --16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 - 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 - 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85 --40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 --12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 - 151.7 139 205zm0 0v40h399900v-40z`,rightbrace:`M400000 542l --6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5 -s-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1 -c124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z`,rightbraceunder:`M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3 - 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237 --174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z`,rightgroup:`M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0 - 3-1 3-3v-38c-76-158-257-219-435-219H0z`,rightgroupunder:`M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18 - 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z`,rightharpoon:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3 --3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2 --10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 - 69.2 92 94.5zm0 0v40h399900v-40z`,rightharpoonplus:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11 --18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7 - 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z -m0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z`,rightharpoondown:`M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8 - 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5 --7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95 --27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z`,rightharpoondownplus:`M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8 - 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 - 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3 --64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z -m0-194v40h400000v-40zm0 0v40h400000v-40z`,righthook:`M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3 - 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0 --13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21 - 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z`,rightlinesegment:Fe("M399960 241 V94 h40 V428 h-40 V281 H0 v-40z"),rightbracketunder:Fe("M399995 0 h-120 V290 H0 v120 H400000z"),rightbracketover:Fe("M399995 440 h-120 V150 H0 v-120 H399995z"),rightToFrom:`M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23 - 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32 --52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142 --167z M100 147v40h399900v-40zM0 341v40h399900v-40z`,twoheadleftarrow:`M0 167c68 40 - 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69 --70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3 --40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19 --37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101 - 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z`,twoheadrightarrow:`M400000 167 -c-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3 - 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42 - 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333 --19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70 - 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z`,tilde1:`M200 55.538c-77 0-168 73.953-177 73.953-3 0-7 --2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0 - 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0 - 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128 --68.267.847-113-73.952-191-73.952z`,tilde2:`M344 55.266c-142 0-300.638 81.316-311.5 86.418 --8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9 - 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114 -c1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751 - 181.476 676 181.476c-149 0-189-126.21-332-126.21z`,tilde3:`M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457 --11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0 - 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697 - 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696 - -338 0-409-156.573-744-156.573z`,tilde4:`M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345 --11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409 - 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9 - 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409 - -175.236-744-175.236z`,vec:`M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5 -3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11 -10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63 --1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1 --7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59 -H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359 -c-16-25.333-24-45-24-59z`,widehat1:`M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22 -c-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z`,widehat2:`M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10 --11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat3:`M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10 --11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat4:`M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10 --11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widecheck1:`M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1, --5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z`,widecheck2:`M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, --11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck3:`M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, --11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck4:`M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, --11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,baraboveleftarrow:`M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202 -c4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5 -c-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130 -s-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47 -121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6 -s2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11 -c0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z -M100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z`,rightarrowabovebar:`M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32 --27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0 -13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39 --84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5 --119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 --12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 -151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z`,baraboveshortleftharpoon:`M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 -c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17 -c2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21 -c-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40 -c-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z -M0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z`,rightharpoonaboveshortbar:`M0,241 l0,40c399126,0,399993,0,399993,0 -c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, --231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 -c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z -M0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z`,shortbaraboveleftharpoon:`M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 -c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9, -1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7, --152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z -M93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z`,shortrightharpoonabovebar:`M53,241l0,40c398570,0,399437,0,399437,0 -c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, --231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 -c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z -M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`},Y4=function(t,r){switch(t){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v1759 v84 h347 v-84 -H403z M403 1759 V0 H319 V1759 v`+r+" v1759 v84 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+r+` v1759 H0 v84 H347z -M347 1759 V0 H263 V1759 v`+r+" v1759 h84z";case"vert":return"M145 15 v585 v"+r+` v585 c2.667,10,9.667,15,21,15 -c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 -c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+r+" v585 h43z";case"doublevert":return"M145 15 v585 v"+r+` v585 c2.667,10,9.667,15,21,15 -c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 -c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+r+` v585 h43z -M367 15 v585 v`+r+` v585 c2.667,10,9.667,15,21,15 -c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 -c-10,0,-16.667,5,-20,15z M410 15 H367 v585 v`+r+" v585 h43z";case"lfloor":return"M319 602 V0 H403 V602 v"+r+` v1715 h263 v84 H319z -MM319 602 V0 H403 V602 v`+r+" v1715 H319z";case"rfloor":return"M319 602 V0 H403 V602 v"+r+` v1799 H0 v-84 H319z -MM319 602 V0 H403 V602 v`+r+" v1715 H319z";case"lceil":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v602 h84z -M403 1759 V0 H319 V1759 v`+r+" v602 h84z";case"rceil":return"M347 1759 V0 H0 V84 H263 V1759 v"+r+` v602 h84z -M347 1759 V0 h-84 V1759 v`+r+" v602 h84z";case"lparen":return`M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1 -c-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349, --36,557 l0,`+(r+84)+`c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210, -949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9 -c0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5, --544.7,-112.5,-882c-2,-104,-3,-167,-3,-189 -l0,-`+(r+92)+`c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3, --210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z`;case"rparen":return`M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3, -63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5 -c11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,`+(r+9)+` -c-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664 -c-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11 -c0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17 -c242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558 -l0,-`+(r+144)+`c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7, --470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`;default:throw new Error("Unknown stretchy delimiter.")}};function G4(e){return"toText"in e}class Br{constructor(t){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=t,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(t){return this.classes.includes(t)}toNode(){for(var t=document.createDocumentFragment(),r=0;r{if(G4(t))return t.toText();throw new Error("Expected MathDomNode with toText, got "+t.constructor.name)}).join("")}}var Na={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800},V4={ex:!0,em:!0,mu:!0},Ql=function(t){return typeof t!="string"&&(t=t.unit),t in Na||t in V4||t==="ex"},Ie=function(t,r){var n;if(t.unit in Na)n=Na[t.unit]/r.fontMetrics().ptPerEm/r.sizeMultiplier;else if(t.unit==="mu")n=r.fontMetrics().cssEmPerMu;else{var a;if(r.style.isTight()?a=r.havingStyle(r.style.text()):a=r,t.unit==="ex")n=a.fontMetrics().xHeight;else if(t.unit==="em")n=a.fontMetrics().quad;else throw new Y("Invalid unit: '"+t.unit+"'");a!==r&&(n*=a.sizeMultiplier/r.sizeMultiplier)}return Math.min(t.number*n,r.maxSize)},V=function(t){return+t.toFixed(4)+"em"},Jt=function(t){return t.filter(r=>r).join(" ")},bi=function(t){var r="";for(var n of Object.keys(t)){var a=t[n];a!==void 0&&(r+=T4(n)+":"+a+";")}return r},Kl=function(t,r,n){if(this.classes=t||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=n||{},r){r.style.isTight()&&this.classes.push("mtight");var a=r.getColor();a&&(this.style.color=a)}},Jl=function(t){var r=document.createElement(t);r.className=Jt(this.classes),Object.assign(r.style,this.style);for(var n of Object.keys(this.attributes))r.setAttribute(n,this.attributes[n]);for(var a=0;a/=\x00-\x1f]/,Zl=function(t){var r="<"+t;this.classes.length&&(r+=' class="'+Ve(Jt(this.classes))+'"');var n=bi(this.style);n&&(r+=' style="'+Ve(n)+'"');for(var a of Object.keys(this.attributes)){if(j4.test(a))throw new Y("Invalid attribute name '"+a+"'");r+=" "+a+'="'+Ve(this.attributes[a])+'"'}r+=">";for(var i=0;i",r};class Fr{constructor(t,r,n,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,this.italic=void 0,Kl.call(this,t,n,a),this.children=r||[]}setAttribute(t,r){this.attributes[t]=r}hasClass(t){return this.classes.includes(t)}toNode(){return Jl.call(this,"span")}toMarkup(){return Zl.call(this,"span")}}class E0{constructor(t,r,n,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,Kl.call(this,r,a),this.children=n||[],this.setAttribute("href",t)}setAttribute(t,r){this.attributes[t]=r}hasClass(t){return this.classes.includes(t)}toNode(){return Jl.call(this,"a")}toMarkup(){return Zl.call(this,"a")}}class W4{constructor(t,r,n){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=r,this.src=t,this.classes=["mord"],this.height=0,this.depth=0,this.maxFontSize=0,this.style=n}hasClass(t){return this.classes.includes(t)}toNode(){var t=document.createElement("img");return t.src=this.src,t.alt=this.alt,t.className="mord",Object.assign(t.style,this.style),t}toMarkup(){var t=''+Ve(this.alt)+'0&&(r=document.createElement("span"),r.style.marginRight=V(this.italic)),this.classes.length>0&&(r=r||document.createElement("span"),r.className=Jt(this.classes)),Object.keys(this.style).length>0&&(r=r||document.createElement("span"),Object.assign(r.style,this.style)),r?(r.appendChild(t),r):t}toMarkup(){var t=!1,r="0&&(n+="margin-right:"+V(this.italic)+";"),n+=bi(this.style),n&&(t=!0,r+=' style="'+Ve(n)+'"');var a=Ve(this.text);return t?(r+=">",r+=a,r+="",r):a}}class zt{constructor(t,r){this.children=void 0,this.attributes=void 0,this.children=t||[],this.attributes=r||{}}toNode(){var t="http://www.w3.org/2000/svg",r=document.createElementNS(t,"svg");for(var n of Object.keys(this.attributes))r.setAttribute(n,this.attributes[n]);for(var a=0;a':''}}class Da{constructor(t){this.attributes=void 0,this.attributes=t||{}}toNode(){var t="http://www.w3.org/2000/svg",r=document.createElementNS(t,"line");for(var n of Object.keys(this.attributes))r.setAttribute(n,this.attributes[n]);return r}toMarkup(){var t=" but got "+String(e)+".")}var K4=e=>e instanceof Fr||e instanceof E0||e instanceof Br,wt={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},Hn={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},Lu={Å:"A",Ð:"D",Þ:"o",å:"a",ð:"d",þ:"o",А:"A",Б:"B",В:"B",Г:"F",Д:"A",Е:"E",Ж:"K",З:"3",И:"N",Й:"N",К:"K",Л:"N",М:"M",Н:"H",О:"O",П:"N",Р:"P",С:"C",Т:"T",У:"y",Ф:"O",Х:"X",Ц:"U",Ч:"h",Ш:"W",Щ:"W",Ъ:"B",Ы:"X",Ь:"B",Э:"3",Ю:"X",Я:"R",а:"a",б:"b",в:"a",г:"r",д:"y",е:"e",ж:"m",з:"e",и:"n",й:"n",к:"n",л:"n",м:"m",н:"n",о:"o",п:"n",р:"p",с:"c",т:"o",у:"y",ф:"b",х:"x",ц:"n",ч:"n",ш:"w",щ:"w",ъ:"a",ы:"m",ь:"a",э:"e",ю:"m",я:"r"};function J4(e,t){wt[e]=t}function Ei(e,t,r){if(!wt[t])throw new Error("Font metrics not found for font: "+t+".");var n=e.charCodeAt(0),a=wt[t][n];if(!a&&e[0]in Lu&&(n=Lu[e[0]].charCodeAt(0),a=wt[t][n]),!a&&r==="text"&&$l(n)&&(a=wt[t][77]),a)return{depth:a[0],height:a[1],italic:a[2],skew:a[3],width:a[4]}}var ea={};function Z4(e){var t;if(e>=5?t=0:e>=3?t=1:t=2,!ea[t]){var r=ea[t]={cssEmPerMu:Hn.quad[t]/18};for(var n in Hn)Hn.hasOwnProperty(n)&&(r[n]=Hn[n][t])}return ea[t]}var we={math:{},text:{}};function h(e,t,r,n,a,i){we[e][a]={font:t,group:r,replace:n},i&&n&&(we[e][n]=we[e][a])}var m="math",F="text",b="main",v="ams",Ce="accent-token",te="bin",Ze="close",Hr="inner",ie="mathord",Pe="op-token",ht="open",kn="punct",A="rel",Yt="spacing",I="textord";h(m,b,A,"≡","\\equiv",!0);h(m,b,A,"≺","\\prec",!0);h(m,b,A,"≻","\\succ",!0);h(m,b,A,"∼","\\sim",!0);h(m,b,A,"⊥","\\perp");h(m,b,A,"⪯","\\preceq",!0);h(m,b,A,"⪰","\\succeq",!0);h(m,b,A,"≃","\\simeq",!0);h(m,b,A,"∣","\\mid",!0);h(m,b,A,"≪","\\ll",!0);h(m,b,A,"≫","\\gg",!0);h(m,b,A,"≍","\\asymp",!0);h(m,b,A,"∥","\\parallel");h(m,b,A,"⋈","\\bowtie",!0);h(m,b,A,"⌣","\\smile",!0);h(m,b,A,"⊑","\\sqsubseteq",!0);h(m,b,A,"⊒","\\sqsupseteq",!0);h(m,b,A,"≐","\\doteq",!0);h(m,b,A,"⌢","\\frown",!0);h(m,b,A,"∋","\\ni",!0);h(m,b,A,"∝","\\propto",!0);h(m,b,A,"⊢","\\vdash",!0);h(m,b,A,"⊣","\\dashv",!0);h(m,b,A,"∋","\\owns");h(m,b,kn,".","\\ldotp");h(m,b,kn,"⋅","\\cdotp");h(m,b,kn,"⋅","·");h(F,b,I,"⋅","·");h(m,b,I,"#","\\#");h(F,b,I,"#","\\#");h(m,b,I,"&","\\&");h(F,b,I,"&","\\&");h(m,b,I,"ℵ","\\aleph",!0);h(m,b,I,"∀","\\forall",!0);h(m,b,I,"ℏ","\\hbar",!0);h(m,b,I,"∃","\\exists",!0);h(m,b,I,"∇","\\nabla",!0);h(m,b,I,"♭","\\flat",!0);h(m,b,I,"ℓ","\\ell",!0);h(m,b,I,"♮","\\natural",!0);h(m,b,I,"♣","\\clubsuit",!0);h(m,b,I,"℘","\\wp",!0);h(m,b,I,"♯","\\sharp",!0);h(m,b,I,"♢","\\diamondsuit",!0);h(m,b,I,"ℜ","\\Re",!0);h(m,b,I,"♡","\\heartsuit",!0);h(m,b,I,"ℑ","\\Im",!0);h(m,b,I,"♠","\\spadesuit",!0);h(m,b,I,"§","\\S",!0);h(F,b,I,"§","\\S");h(m,b,I,"¶","\\P",!0);h(F,b,I,"¶","\\P");h(m,b,I,"†","\\dag");h(F,b,I,"†","\\dag");h(F,b,I,"†","\\textdagger");h(m,b,I,"‡","\\ddag");h(F,b,I,"‡","\\ddag");h(F,b,I,"‡","\\textdaggerdbl");h(m,b,Ze,"⎱","\\rmoustache",!0);h(m,b,ht,"⎰","\\lmoustache",!0);h(m,b,Ze,"⟯","\\rgroup",!0);h(m,b,ht,"⟮","\\lgroup",!0);h(m,b,te,"∓","\\mp",!0);h(m,b,te,"⊖","\\ominus",!0);h(m,b,te,"⊎","\\uplus",!0);h(m,b,te,"⊓","\\sqcap",!0);h(m,b,te,"∗","\\ast");h(m,b,te,"⊔","\\sqcup",!0);h(m,b,te,"◯","\\bigcirc",!0);h(m,b,te,"∙","\\bullet",!0);h(m,b,te,"‡","\\ddagger");h(m,b,te,"≀","\\wr",!0);h(m,b,te,"⨿","\\amalg");h(m,b,te,"&","\\And");h(m,b,A,"⟵","\\longleftarrow",!0);h(m,b,A,"⇐","\\Leftarrow",!0);h(m,b,A,"⟸","\\Longleftarrow",!0);h(m,b,A,"⟶","\\longrightarrow",!0);h(m,b,A,"⇒","\\Rightarrow",!0);h(m,b,A,"⟹","\\Longrightarrow",!0);h(m,b,A,"↔","\\leftrightarrow",!0);h(m,b,A,"⟷","\\longleftrightarrow",!0);h(m,b,A,"⇔","\\Leftrightarrow",!0);h(m,b,A,"⟺","\\Longleftrightarrow",!0);h(m,b,A,"↦","\\mapsto",!0);h(m,b,A,"⟼","\\longmapsto",!0);h(m,b,A,"↗","\\nearrow",!0);h(m,b,A,"↩","\\hookleftarrow",!0);h(m,b,A,"↪","\\hookrightarrow",!0);h(m,b,A,"↘","\\searrow",!0);h(m,b,A,"↼","\\leftharpoonup",!0);h(m,b,A,"⇀","\\rightharpoonup",!0);h(m,b,A,"↙","\\swarrow",!0);h(m,b,A,"↽","\\leftharpoondown",!0);h(m,b,A,"⇁","\\rightharpoondown",!0);h(m,b,A,"↖","\\nwarrow",!0);h(m,b,A,"⇌","\\rightleftharpoons",!0);h(m,v,A,"≮","\\nless",!0);h(m,v,A,"","\\@nleqslant");h(m,v,A,"","\\@nleqq");h(m,v,A,"⪇","\\lneq",!0);h(m,v,A,"≨","\\lneqq",!0);h(m,v,A,"","\\@lvertneqq");h(m,v,A,"⋦","\\lnsim",!0);h(m,v,A,"⪉","\\lnapprox",!0);h(m,v,A,"⊀","\\nprec",!0);h(m,v,A,"⋠","\\npreceq",!0);h(m,v,A,"⋨","\\precnsim",!0);h(m,v,A,"⪹","\\precnapprox",!0);h(m,v,A,"≁","\\nsim",!0);h(m,v,A,"","\\@nshortmid");h(m,v,A,"∤","\\nmid",!0);h(m,v,A,"⊬","\\nvdash",!0);h(m,v,A,"⊭","\\nvDash",!0);h(m,v,A,"⋪","\\ntriangleleft");h(m,v,A,"⋬","\\ntrianglelefteq",!0);h(m,v,A,"⊊","\\subsetneq",!0);h(m,v,A,"","\\@varsubsetneq");h(m,v,A,"⫋","\\subsetneqq",!0);h(m,v,A,"","\\@varsubsetneqq");h(m,v,A,"≯","\\ngtr",!0);h(m,v,A,"","\\@ngeqslant");h(m,v,A,"","\\@ngeqq");h(m,v,A,"⪈","\\gneq",!0);h(m,v,A,"≩","\\gneqq",!0);h(m,v,A,"","\\@gvertneqq");h(m,v,A,"⋧","\\gnsim",!0);h(m,v,A,"⪊","\\gnapprox",!0);h(m,v,A,"⊁","\\nsucc",!0);h(m,v,A,"⋡","\\nsucceq",!0);h(m,v,A,"⋩","\\succnsim",!0);h(m,v,A,"⪺","\\succnapprox",!0);h(m,v,A,"≆","\\ncong",!0);h(m,v,A,"","\\@nshortparallel");h(m,v,A,"∦","\\nparallel",!0);h(m,v,A,"⊯","\\nVDash",!0);h(m,v,A,"⋫","\\ntriangleright");h(m,v,A,"⋭","\\ntrianglerighteq",!0);h(m,v,A,"","\\@nsupseteqq");h(m,v,A,"⊋","\\supsetneq",!0);h(m,v,A,"","\\@varsupsetneq");h(m,v,A,"⫌","\\supsetneqq",!0);h(m,v,A,"","\\@varsupsetneqq");h(m,v,A,"⊮","\\nVdash",!0);h(m,v,A,"⪵","\\precneqq",!0);h(m,v,A,"⪶","\\succneqq",!0);h(m,v,A,"","\\@nsubseteqq");h(m,v,te,"⊴","\\unlhd");h(m,v,te,"⊵","\\unrhd");h(m,v,A,"↚","\\nleftarrow",!0);h(m,v,A,"↛","\\nrightarrow",!0);h(m,v,A,"⇍","\\nLeftarrow",!0);h(m,v,A,"⇏","\\nRightarrow",!0);h(m,v,A,"↮","\\nleftrightarrow",!0);h(m,v,A,"⇎","\\nLeftrightarrow",!0);h(m,v,A,"△","\\vartriangle");h(m,v,I,"ℏ","\\hslash");h(m,v,I,"▽","\\triangledown");h(m,v,I,"◊","\\lozenge");h(m,v,I,"Ⓢ","\\circledS");h(m,v,I,"®","\\circledR");h(F,v,I,"®","\\circledR");h(m,v,I,"∡","\\measuredangle",!0);h(m,v,I,"∄","\\nexists");h(m,v,I,"℧","\\mho");h(m,v,I,"Ⅎ","\\Finv",!0);h(m,v,I,"⅁","\\Game",!0);h(m,v,I,"‵","\\backprime");h(m,v,I,"▲","\\blacktriangle");h(m,v,I,"▼","\\blacktriangledown");h(m,v,I,"■","\\blacksquare");h(m,v,I,"⧫","\\blacklozenge");h(m,v,I,"★","\\bigstar");h(m,v,I,"∢","\\sphericalangle",!0);h(m,v,I,"∁","\\complement",!0);h(m,v,I,"ð","\\eth",!0);h(F,b,I,"ð","ð");h(m,v,I,"╱","\\diagup");h(m,v,I,"╲","\\diagdown");h(m,v,I,"□","\\square");h(m,v,I,"□","\\Box");h(m,v,I,"◊","\\Diamond");h(m,v,I,"¥","\\yen",!0);h(F,v,I,"¥","\\yen",!0);h(m,v,I,"✓","\\checkmark",!0);h(F,v,I,"✓","\\checkmark");h(m,v,I,"ℶ","\\beth",!0);h(m,v,I,"ℸ","\\daleth",!0);h(m,v,I,"ℷ","\\gimel",!0);h(m,v,I,"ϝ","\\digamma",!0);h(m,v,I,"ϰ","\\varkappa");h(m,v,ht,"┌","\\@ulcorner",!0);h(m,v,Ze,"┐","\\@urcorner",!0);h(m,v,ht,"└","\\@llcorner",!0);h(m,v,Ze,"┘","\\@lrcorner",!0);h(m,v,A,"≦","\\leqq",!0);h(m,v,A,"⩽","\\leqslant",!0);h(m,v,A,"⪕","\\eqslantless",!0);h(m,v,A,"≲","\\lesssim",!0);h(m,v,A,"⪅","\\lessapprox",!0);h(m,v,A,"≊","\\approxeq",!0);h(m,v,te,"⋖","\\lessdot");h(m,v,A,"⋘","\\lll",!0);h(m,v,A,"≶","\\lessgtr",!0);h(m,v,A,"⋚","\\lesseqgtr",!0);h(m,v,A,"⪋","\\lesseqqgtr",!0);h(m,v,A,"≑","\\doteqdot");h(m,v,A,"≓","\\risingdotseq",!0);h(m,v,A,"≒","\\fallingdotseq",!0);h(m,v,A,"∽","\\backsim",!0);h(m,v,A,"⋍","\\backsimeq",!0);h(m,v,A,"⫅","\\subseteqq",!0);h(m,v,A,"⋐","\\Subset",!0);h(m,v,A,"⊏","\\sqsubset",!0);h(m,v,A,"≼","\\preccurlyeq",!0);h(m,v,A,"⋞","\\curlyeqprec",!0);h(m,v,A,"≾","\\precsim",!0);h(m,v,A,"⪷","\\precapprox",!0);h(m,v,A,"⊲","\\vartriangleleft");h(m,v,A,"⊴","\\trianglelefteq");h(m,v,A,"⊨","\\vDash",!0);h(m,v,A,"⊪","\\Vvdash",!0);h(m,v,A,"⌣","\\smallsmile");h(m,v,A,"⌢","\\smallfrown");h(m,v,A,"≏","\\bumpeq",!0);h(m,v,A,"≎","\\Bumpeq",!0);h(m,v,A,"≧","\\geqq",!0);h(m,v,A,"⩾","\\geqslant",!0);h(m,v,A,"⪖","\\eqslantgtr",!0);h(m,v,A,"≳","\\gtrsim",!0);h(m,v,A,"⪆","\\gtrapprox",!0);h(m,v,te,"⋗","\\gtrdot");h(m,v,A,"⋙","\\ggg",!0);h(m,v,A,"≷","\\gtrless",!0);h(m,v,A,"⋛","\\gtreqless",!0);h(m,v,A,"⪌","\\gtreqqless",!0);h(m,v,A,"≖","\\eqcirc",!0);h(m,v,A,"≗","\\circeq",!0);h(m,v,A,"≜","\\triangleq",!0);h(m,v,A,"∼","\\thicksim");h(m,v,A,"≈","\\thickapprox");h(m,v,A,"⫆","\\supseteqq",!0);h(m,v,A,"⋑","\\Supset",!0);h(m,v,A,"⊐","\\sqsupset",!0);h(m,v,A,"≽","\\succcurlyeq",!0);h(m,v,A,"⋟","\\curlyeqsucc",!0);h(m,v,A,"≿","\\succsim",!0);h(m,v,A,"⪸","\\succapprox",!0);h(m,v,A,"⊳","\\vartriangleright");h(m,v,A,"⊵","\\trianglerighteq");h(m,v,A,"⊩","\\Vdash",!0);h(m,v,A,"∣","\\shortmid");h(m,v,A,"∥","\\shortparallel");h(m,v,A,"≬","\\between",!0);h(m,v,A,"⋔","\\pitchfork",!0);h(m,v,A,"∝","\\varpropto");h(m,v,A,"◀","\\blacktriangleleft");h(m,v,A,"∴","\\therefore",!0);h(m,v,A,"∍","\\backepsilon");h(m,v,A,"▶","\\blacktriangleright");h(m,v,A,"∵","\\because",!0);h(m,v,A,"⋘","\\llless");h(m,v,A,"⋙","\\gggtr");h(m,v,te,"⊲","\\lhd");h(m,v,te,"⊳","\\rhd");h(m,v,A,"≂","\\eqsim",!0);h(m,b,A,"⋈","\\Join");h(m,v,A,"≑","\\Doteq",!0);h(m,v,te,"∔","\\dotplus",!0);h(m,v,te,"∖","\\smallsetminus");h(m,v,te,"⋒","\\Cap",!0);h(m,v,te,"⋓","\\Cup",!0);h(m,v,te,"⩞","\\doublebarwedge",!0);h(m,v,te,"⊟","\\boxminus",!0);h(m,v,te,"⊞","\\boxplus",!0);h(m,v,te,"⋇","\\divideontimes",!0);h(m,v,te,"⋉","\\ltimes",!0);h(m,v,te,"⋊","\\rtimes",!0);h(m,v,te,"⋋","\\leftthreetimes",!0);h(m,v,te,"⋌","\\rightthreetimes",!0);h(m,v,te,"⋏","\\curlywedge",!0);h(m,v,te,"⋎","\\curlyvee",!0);h(m,v,te,"⊝","\\circleddash",!0);h(m,v,te,"⊛","\\circledast",!0);h(m,v,te,"⋅","\\centerdot");h(m,v,te,"⊺","\\intercal",!0);h(m,v,te,"⋒","\\doublecap");h(m,v,te,"⋓","\\doublecup");h(m,v,te,"⊠","\\boxtimes",!0);h(m,v,A,"⇢","\\dashrightarrow",!0);h(m,v,A,"⇠","\\dashleftarrow",!0);h(m,v,A,"⇇","\\leftleftarrows",!0);h(m,v,A,"⇆","\\leftrightarrows",!0);h(m,v,A,"⇚","\\Lleftarrow",!0);h(m,v,A,"↞","\\twoheadleftarrow",!0);h(m,v,A,"↢","\\leftarrowtail",!0);h(m,v,A,"↫","\\looparrowleft",!0);h(m,v,A,"⇋","\\leftrightharpoons",!0);h(m,v,A,"↶","\\curvearrowleft",!0);h(m,v,A,"↺","\\circlearrowleft",!0);h(m,v,A,"↰","\\Lsh",!0);h(m,v,A,"⇈","\\upuparrows",!0);h(m,v,A,"↿","\\upharpoonleft",!0);h(m,v,A,"⇃","\\downharpoonleft",!0);h(m,b,A,"⊶","\\origof",!0);h(m,b,A,"⊷","\\imageof",!0);h(m,v,A,"⊸","\\multimap",!0);h(m,v,A,"↭","\\leftrightsquigarrow",!0);h(m,v,A,"⇉","\\rightrightarrows",!0);h(m,v,A,"⇄","\\rightleftarrows",!0);h(m,v,A,"↠","\\twoheadrightarrow",!0);h(m,v,A,"↣","\\rightarrowtail",!0);h(m,v,A,"↬","\\looparrowright",!0);h(m,v,A,"↷","\\curvearrowright",!0);h(m,v,A,"↻","\\circlearrowright",!0);h(m,v,A,"↱","\\Rsh",!0);h(m,v,A,"⇊","\\downdownarrows",!0);h(m,v,A,"↾","\\upharpoonright",!0);h(m,v,A,"⇂","\\downharpoonright",!0);h(m,v,A,"⇝","\\rightsquigarrow",!0);h(m,v,A,"⇝","\\leadsto");h(m,v,A,"⇛","\\Rrightarrow",!0);h(m,v,A,"↾","\\restriction");h(m,b,I,"‘","`");h(m,b,I,"$","\\$");h(F,b,I,"$","\\$");h(F,b,I,"$","\\textdollar");h(m,b,I,"%","\\%");h(F,b,I,"%","\\%");h(m,b,I,"_","\\_");h(F,b,I,"_","\\_");h(F,b,I,"_","\\textunderscore");h(m,b,I,"∠","\\angle",!0);h(m,b,I,"∞","\\infty",!0);h(m,b,I,"′","\\prime");h(m,b,I,"△","\\triangle");h(m,b,I,"Γ","\\Gamma",!0);h(m,b,I,"Δ","\\Delta",!0);h(m,b,I,"Θ","\\Theta",!0);h(m,b,I,"Λ","\\Lambda",!0);h(m,b,I,"Ξ","\\Xi",!0);h(m,b,I,"Π","\\Pi",!0);h(m,b,I,"Σ","\\Sigma",!0);h(m,b,I,"Υ","\\Upsilon",!0);h(m,b,I,"Φ","\\Phi",!0);h(m,b,I,"Ψ","\\Psi",!0);h(m,b,I,"Ω","\\Omega",!0);h(m,b,I,"A","Α");h(m,b,I,"B","Β");h(m,b,I,"E","Ε");h(m,b,I,"Z","Ζ");h(m,b,I,"H","Η");h(m,b,I,"I","Ι");h(m,b,I,"K","Κ");h(m,b,I,"M","Μ");h(m,b,I,"N","Ν");h(m,b,I,"O","Ο");h(m,b,I,"P","Ρ");h(m,b,I,"T","Τ");h(m,b,I,"X","Χ");h(m,b,I,"¬","\\neg",!0);h(m,b,I,"¬","\\lnot");h(m,b,I,"⊤","\\top");h(m,b,I,"⊥","\\bot");h(m,b,I,"∅","\\emptyset");h(m,v,I,"∅","\\varnothing");h(m,b,ie,"α","\\alpha",!0);h(m,b,ie,"β","\\beta",!0);h(m,b,ie,"γ","\\gamma",!0);h(m,b,ie,"δ","\\delta",!0);h(m,b,ie,"ϵ","\\epsilon",!0);h(m,b,ie,"ζ","\\zeta",!0);h(m,b,ie,"η","\\eta",!0);h(m,b,ie,"θ","\\theta",!0);h(m,b,ie,"ι","\\iota",!0);h(m,b,ie,"κ","\\kappa",!0);h(m,b,ie,"λ","\\lambda",!0);h(m,b,ie,"μ","\\mu",!0);h(m,b,ie,"ν","\\nu",!0);h(m,b,ie,"ξ","\\xi",!0);h(m,b,ie,"ο","\\omicron",!0);h(m,b,ie,"π","\\pi",!0);h(m,b,ie,"ρ","\\rho",!0);h(m,b,ie,"σ","\\sigma",!0);h(m,b,ie,"τ","\\tau",!0);h(m,b,ie,"υ","\\upsilon",!0);h(m,b,ie,"ϕ","\\phi",!0);h(m,b,ie,"χ","\\chi",!0);h(m,b,ie,"ψ","\\psi",!0);h(m,b,ie,"ω","\\omega",!0);h(m,b,ie,"ε","\\varepsilon",!0);h(m,b,ie,"ϑ","\\vartheta",!0);h(m,b,ie,"ϖ","\\varpi",!0);h(m,b,ie,"ϱ","\\varrho",!0);h(m,b,ie,"ς","\\varsigma",!0);h(m,b,ie,"φ","\\varphi",!0);h(m,b,te,"∗","*",!0);h(m,b,te,"+","+");h(m,b,te,"−","-",!0);h(m,b,te,"⋅","\\cdot",!0);h(m,b,te,"∘","\\circ",!0);h(m,b,te,"÷","\\div",!0);h(m,b,te,"±","\\pm",!0);h(m,b,te,"×","\\times",!0);h(m,b,te,"∩","\\cap",!0);h(m,b,te,"∪","\\cup",!0);h(m,b,te,"∖","\\setminus",!0);h(m,b,te,"∧","\\land");h(m,b,te,"∨","\\lor");h(m,b,te,"∧","\\wedge",!0);h(m,b,te,"∨","\\vee",!0);h(m,b,I,"√","\\surd");h(m,b,ht,"⟨","\\langle",!0);h(m,b,ht,"∣","\\lvert");h(m,b,ht,"∥","\\lVert");h(m,b,Ze,"?","?");h(m,b,Ze,"!","!");h(m,b,Ze,"⟩","\\rangle",!0);h(m,b,Ze,"∣","\\rvert");h(m,b,Ze,"∥","\\rVert");h(m,b,A,"=","=");h(m,b,A,":",":");h(m,b,A,"≈","\\approx",!0);h(m,b,A,"≅","\\cong",!0);h(m,b,A,"≥","\\ge");h(m,b,A,"≥","\\geq",!0);h(m,b,A,"←","\\gets");h(m,b,A,">","\\gt",!0);h(m,b,A,"∈","\\in",!0);h(m,b,A,"","\\@not");h(m,b,A,"⊂","\\subset",!0);h(m,b,A,"⊃","\\supset",!0);h(m,b,A,"⊆","\\subseteq",!0);h(m,b,A,"⊇","\\supseteq",!0);h(m,v,A,"⊈","\\nsubseteq",!0);h(m,v,A,"⊉","\\nsupseteq",!0);h(m,b,A,"⊨","\\models");h(m,b,A,"←","\\leftarrow",!0);h(m,b,A,"≤","\\le");h(m,b,A,"≤","\\leq",!0);h(m,b,A,"<","\\lt",!0);h(m,b,A,"→","\\rightarrow",!0);h(m,b,A,"→","\\to");h(m,v,A,"≱","\\ngeq",!0);h(m,v,A,"≰","\\nleq",!0);h(m,b,Yt," ","\\ ");h(m,b,Yt," ","\\space");h(m,b,Yt," ","\\nobreakspace");h(F,b,Yt," ","\\ ");h(F,b,Yt," "," ");h(F,b,Yt," ","\\space");h(F,b,Yt," ","\\nobreakspace");h(m,b,Yt,"","\\nobreak");h(m,b,Yt,"","\\allowbreak");h(m,b,kn,",",",");h(m,b,kn,";",";");h(m,v,te,"⊼","\\barwedge",!0);h(m,v,te,"⊻","\\veebar",!0);h(m,b,te,"⊙","\\odot",!0);h(m,b,te,"⊕","\\oplus",!0);h(m,b,te,"⊗","\\otimes",!0);h(m,b,I,"∂","\\partial",!0);h(m,b,te,"⊘","\\oslash",!0);h(m,v,te,"⊚","\\circledcirc",!0);h(m,v,te,"⊡","\\boxdot",!0);h(m,b,te,"△","\\bigtriangleup");h(m,b,te,"▽","\\bigtriangledown");h(m,b,te,"†","\\dagger");h(m,b,te,"⋄","\\diamond");h(m,b,te,"⋆","\\star");h(m,b,te,"◃","\\triangleleft");h(m,b,te,"▹","\\triangleright");h(m,b,ht,"{","\\{");h(F,b,I,"{","\\{");h(F,b,I,"{","\\textbraceleft");h(m,b,Ze,"}","\\}");h(F,b,I,"}","\\}");h(F,b,I,"}","\\textbraceright");h(m,b,ht,"{","\\lbrace");h(m,b,Ze,"}","\\rbrace");h(m,b,ht,"[","\\lbrack",!0);h(F,b,I,"[","\\lbrack",!0);h(m,b,Ze,"]","\\rbrack",!0);h(F,b,I,"]","\\rbrack",!0);h(m,b,ht,"(","\\lparen",!0);h(m,b,Ze,")","\\rparen",!0);h(F,b,I,"<","\\textless",!0);h(F,b,I,">","\\textgreater",!0);h(m,b,ht,"⌊","\\lfloor",!0);h(m,b,Ze,"⌋","\\rfloor",!0);h(m,b,ht,"⌈","\\lceil",!0);h(m,b,Ze,"⌉","\\rceil",!0);h(m,b,I,"\\","\\backslash");h(m,b,I,"∣","|");h(m,b,I,"∣","\\vert");h(F,b,I,"|","\\textbar",!0);h(m,b,I,"∥","\\|");h(m,b,I,"∥","\\Vert");h(F,b,I,"∥","\\textbardbl");h(F,b,I,"~","\\textasciitilde");h(F,b,I,"\\","\\textbackslash");h(F,b,I,"^","\\textasciicircum");h(m,b,A,"↑","\\uparrow",!0);h(m,b,A,"⇑","\\Uparrow",!0);h(m,b,A,"↓","\\downarrow",!0);h(m,b,A,"⇓","\\Downarrow",!0);h(m,b,A,"↕","\\updownarrow",!0);h(m,b,A,"⇕","\\Updownarrow",!0);h(m,b,Pe,"∐","\\coprod");h(m,b,Pe,"⋁","\\bigvee");h(m,b,Pe,"⋀","\\bigwedge");h(m,b,Pe,"⨄","\\biguplus");h(m,b,Pe,"⋂","\\bigcap");h(m,b,Pe,"⋃","\\bigcup");h(m,b,Pe,"∫","\\int");h(m,b,Pe,"∫","\\intop");h(m,b,Pe,"∬","\\iint");h(m,b,Pe,"∭","\\iiint");h(m,b,Pe,"∏","\\prod");h(m,b,Pe,"∑","\\sum");h(m,b,Pe,"⨂","\\bigotimes");h(m,b,Pe,"⨁","\\bigoplus");h(m,b,Pe,"⨀","\\bigodot");h(m,b,Pe,"∮","\\oint");h(m,b,Pe,"∯","\\oiint");h(m,b,Pe,"∰","\\oiiint");h(m,b,Pe,"⨆","\\bigsqcup");h(m,b,Pe,"∫","\\smallint");h(F,b,Hr,"…","\\textellipsis");h(m,b,Hr,"…","\\mathellipsis");h(F,b,Hr,"…","\\ldots",!0);h(m,b,Hr,"…","\\ldots",!0);h(m,b,Hr,"⋯","\\@cdots",!0);h(m,b,Hr,"⋱","\\ddots",!0);h(m,b,I,"⋮","\\varvdots");h(F,b,I,"⋮","\\varvdots");h(m,b,Ce,"ˊ","\\acute");h(m,b,Ce,"ˋ","\\grave");h(m,b,Ce,"¨","\\ddot");h(m,b,Ce,"~","\\tilde");h(m,b,Ce,"ˉ","\\bar");h(m,b,Ce,"˘","\\breve");h(m,b,Ce,"ˇ","\\check");h(m,b,Ce,"^","\\hat");h(m,b,Ce,"⃗","\\vec");h(m,b,Ce,"˙","\\dot");h(m,b,Ce,"˚","\\mathring");h(m,b,ie,"","\\@imath");h(m,b,ie,"","\\@jmath");h(m,b,I,"ı","ı");h(m,b,I,"ȷ","ȷ");h(F,b,I,"ı","\\i",!0);h(F,b,I,"ȷ","\\j",!0);h(F,b,I,"ß","\\ss",!0);h(F,b,I,"æ","\\ae",!0);h(F,b,I,"œ","\\oe",!0);h(F,b,I,"ø","\\o",!0);h(F,b,I,"Æ","\\AE",!0);h(F,b,I,"Œ","\\OE",!0);h(F,b,I,"Ø","\\O",!0);h(F,b,Ce,"ˊ","\\'");h(F,b,Ce,"ˋ","\\`");h(F,b,Ce,"ˆ","\\^");h(F,b,Ce,"˜","\\~");h(F,b,Ce,"ˉ","\\=");h(F,b,Ce,"˘","\\u");h(F,b,Ce,"˙","\\.");h(F,b,Ce,"¸","\\c");h(F,b,Ce,"˚","\\r");h(F,b,Ce,"ˇ","\\v");h(F,b,Ce,"¨",'\\"');h(F,b,Ce,"˝","\\H");h(F,b,Ce,"◯","\\textcircled");var eo={"--":!0,"---":!0,"``":!0,"''":!0};h(F,b,I,"–","--",!0);h(F,b,I,"–","\\textendash");h(F,b,I,"—","---",!0);h(F,b,I,"—","\\textemdash");h(F,b,I,"‘","`",!0);h(F,b,I,"‘","\\textquoteleft");h(F,b,I,"’","'",!0);h(F,b,I,"’","\\textquoteright");h(F,b,I,"“","``",!0);h(F,b,I,"“","\\textquotedblleft");h(F,b,I,"”","''",!0);h(F,b,I,"”","\\textquotedblright");h(m,b,I,"°","\\degree",!0);h(F,b,I,"°","\\degree");h(F,b,I,"°","\\textdegree",!0);h(m,b,I,"£","\\pounds");h(m,b,I,"£","\\mathsterling",!0);h(F,b,I,"£","\\pounds");h(F,b,I,"£","\\textsterling",!0);h(m,v,I,"✠","\\maltese");h(F,v,I,"✠","\\maltese");var Ru='0123456789/@."';for(var ta=0;ta{var t=e.charCodeAt(0),r=e.charCodeAt(1),n=(t-55296)*1024+(r-56320)+65536;if(119808<=n&&n<120484){var a=Math.floor((n-119808)/26);return Gu[a]}else if(120782<=n&&n<=120831){var i=Math.floor((n-120782)/10);return t3[i]}else{if(n===120485||n===120486)return Gu[0];if(120486{if(Jt(e.classes)!==Jt(t.classes)||e.skew!==t.skew||e.maxFontSize!==t.maxFontSize||e.italic!==0&&e.hasClass("mathnormal"))return!1;if(e.classes.length===1){var r=e.classes[0];if(r==="mbin"||r==="mord")return!1}for(var n of Object.keys(e.style))if(e.style[n]!==t.style[n])return!1;for(var a of Object.keys(t.style))if(e.style[a]!==t.style[a])return!1;return!0},to=e=>{for(var t=0;tr&&(r=u.height),u.depth>n&&(n=u.depth),u.maxFontSize>a&&(a=u.maxFontSize)}t.height=r,t.depth=n,t.maxFontSize=a},z=function(t,r,n,a){var i=new Fr(t,r,n,a);return xi(i),i},er=(e,t,r,n)=>new Fr(e,t,r,n),Or=function(t,r,n){var a=z([t],[],r);return a.height=Math.max(n||r.fontMetrics().defaultRuleThickness,r.minRuleThickness),a.style.borderBottomWidth=V(a.height),a.maxFontSize=1,a},i3=function(t,r,n,a){var i=new E0(t,r,n,a);return xi(i),i},Gt=function(t){var r=new Br(t);return xi(r),r},Lr=function(t,r){return t instanceof Br?z([],[t],r):t},u3=function(t){if(t.positionType==="individualShift"){for(var r=t.children,n=[r[0]],a=-r[0].shift-r[0].elem.depth,i=a,u=1;u{var r=z(["mspace"],[],t),n=Ie(e,t);return r.style.marginRight=V(n),r},qn=(e,t,r)=>{var n,a;switch(e){case"amsrm":n="AMS";break;case"textrm":n="Main";break;case"textsf":n="SansSerif";break;case"texttt":n="Typewriter";break;default:n=e}return t==="textbf"&&r==="textit"?a="BoldItalic":t==="textbf"?a="Bold":r==="textit"?a="Italic":a="Regular",n+"-"+a},Ba={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathsfit:{variant:"sans-serif-italic",fontName:"SansSerif-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},no={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},ao=function(t,r){var[n,a,i]=no[t],u=new Zt(n),s=new zt([u],{width:V(a),height:V(i),style:"width:"+V(a),viewBox:"0 0 "+1e3*a+" "+1e3*i,preserveAspectRatio:"xMinYMin"}),l=er(["overlay"],[s],r);return l.height=i,l.style.height=V(i),l.style.width=V(a),l},_e={number:3,unit:"mu"},cr={number:4,unit:"mu"},Pt={number:5,unit:"mu"},s3={mord:{mop:_e,mbin:cr,mrel:Pt,minner:_e},mop:{mord:_e,mop:_e,mrel:Pt,minner:_e},mbin:{mord:cr,mop:cr,mopen:cr,minner:cr},mrel:{mord:Pt,mop:Pt,mopen:Pt,minner:Pt},mopen:{},mclose:{mop:_e,mbin:cr,mrel:Pt,minner:_e},mpunct:{mord:_e,mop:_e,mrel:Pt,mopen:_e,mclose:_e,mpunct:_e,minner:_e},minner:{mord:_e,mop:_e,mbin:cr,mrel:Pt,mopen:_e,mpunct:_e,minner:_e}},l3={mord:{mop:_e},mop:{mord:_e,mop:_e},mbin:{},mrel:{},mopen:{},mclose:{mop:_e},mpunct:{},minner:{mop:_e}},io={},a0={},i0={};function Z(e){for(var{type:t,names:r,props:n,handler:a,htmlBuilder:i,mathmlBuilder:u}=e,s={type:t,numArgs:n.numArgs,argTypes:n.argTypes,allowedInArgument:!!n.allowedInArgument,allowedInText:!!n.allowedInText,allowedInMath:n.allowedInMath===void 0?!0:n.allowedInMath,numOptionalArgs:n.numOptionalArgs||0,infix:!!n.infix,primitive:!!n.primitive,handler:a},l=0;l{var D=S.classes[0],_=x.classes[0];D==="mbin"&&c3.has(_)?S.classes[0]="mord":_==="mbin"&&o3.has(D)&&(x.classes[0]="mord")},{node:f},g,p),Fa(i,(x,S)=>{var D,_,N=za(S),M=za(x),W=N&&M?x.hasClass("mtight")?(D=l3[N])==null?void 0:D[M]:(_=s3[N])==null?void 0:_[M]:null;if(W)return ro(W,c)},{node:f},g,p),i},Fa=function(t,r,n,a,i){a&&t.push(a);for(var u=0;ug=>{t.splice(f+1,0,g),u++})(u)}a&&t.pop()},uo=function(t){return t instanceof Br||t instanceof E0||t instanceof Fr&&t.hasClass("enclosing")?t:null},Ha=function(t,r){var n=uo(t);if(n){var a=n.children;if(a.length){if(r==="right")return Ha(a[a.length-1],"right");if(r==="left")return Ha(a[0],"left")}}return t},za=function(t,r){if(!t)return null;r&&(t=Ha(t,r));var n=t.classes[0];return d3[n]||null},bn=function(t,r){var n=["nulldelimiter"].concat(t.baseSizingClasses());return z(r.concat(n))},Te=function(t,r,n){if(!t)return z();if(a0[t.type]){var a=a0[t.type](t,r);if(n&&r.size!==n.size){a=z(r.sizingClasses(n),[a],r);var i=r.sizeMultiplier/n.sizeMultiplier;a.height*=i,a.depth*=i}return a}else throw new Y("Got group of unknown type: '"+t.type+"'")};function Yn(e,t){var r=z(["base"],e,t),n=z(["strut"]);return n.style.height=V(r.height+r.depth),r.depth&&(n.style.verticalAlign=V(-r.depth)),r.children.unshift(n),r}function Ua(e,t){var r=null;e.length===1&&e[0].type==="tag"&&(r=e[0].tag,e=e[0].body);var n=He(e,t,"root"),a;n.length===2&&n[1].hasClass("tag")&&(a=n.pop());for(var i=[],u=[],s=0;s0&&(i.push(Yn(u,t)),u=[]),i.push(n[s]));u.length>0&&i.push(Yn(u,t));var c;r?(c=Yn(He(r,t,!0),t),c.classes=["tag"],i.push(c)):a&&i.push(a);var d=z(["katex-html"],i);if(d.setAttribute("aria-hidden","true"),c){var f=c.children[0];f.style.height=V(d.height+d.depth),d.depth&&(f.style.verticalAlign=V(-d.depth))}return d}function so(e){return new Br(e)}class G{constructor(t,r,n){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=t,this.attributes={},this.children=r||[],this.classes=n||[]}setAttribute(t,r){this.attributes[t]=r}getAttribute(t){return this.attributes[t]}toNode(){var t=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&t.setAttribute(r,this.attributes[r]);this.classes.length>0&&(t.className=Jt(this.classes));for(var n=0;n0&&(t+=' class ="'+Ve(Jt(this.classes))+'"'),t+=">";for(var n=0;n",t}toText(){return this.children.map(t=>t.toText()).join("")}}class Me{constructor(t){this.text=void 0,this.text=t}toNode(){return document.createTextNode(this.text)}toMarkup(){return Ve(this.toText())}toText(){return this.text}}class lo{constructor(t){this.width=void 0,this.character=void 0,this.width=t,t>=.05555&&t<=.05556?this.character=" ":t>=.1666&&t<=.1667?this.character=" ":t>=.2222&&t<=.2223?this.character=" ":t>=.2777&&t<=.2778?this.character="  ":t>=-.05556&&t<=-.05555?this.character=" ⁣":t>=-.1667&&t<=-.1666?this.character=" ⁣":t>=-.2223&&t<=-.2222?this.character=" ⁣":t>=-.2778&&t<=-.2777?this.character=" ⁣":this.character=null}toNode(){if(this.character)return document.createTextNode(this.character);var t=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return t.setAttribute("width",V(this.width)),t}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}}var f3=new Set(["\\imath","\\jmath"]),m3=new Set(["mrow","mtable"]),bt=function(t,r,n){return we[r][t]&&we[r][t].replace&&t.charCodeAt(0)!==55349&&!(eo.hasOwnProperty(t)&&n&&(n.fontFamily&&n.fontFamily.slice(4,6)==="tt"||n.font&&n.font.slice(4,6)==="tt"))&&(t=we[r][t].replace),new Me(t)},yi=function(t){return t.length===1?t[0]:new G("mrow",t)},p3={mathit:"italic",boldsymbol:e=>e.type==="textord"?"bold":"bold-italic",mathbf:"bold",mathbb:"double-struck",mathsfit:"sans-serif-italic",mathfrak:"fraktur",mathscr:"script",mathcal:"script",mathsf:"sans-serif",mathtt:"monospace"},vi=(e,t)=>{if(e.mode==="text"){if(t.fontFamily==="texttt")return"monospace";if(t.fontFamily==="textsf")return t.fontShape==="textit"&&t.fontWeight==="textbf"?"sans-serif-bold-italic":t.fontShape==="textit"?"sans-serif-italic":t.fontWeight==="textbf"?"bold-sans-serif":"sans-serif";if(t.fontShape==="textit"&&t.fontWeight==="textbf")return"bold-italic";if(t.fontShape==="textit")return"italic";if(t.fontWeight==="textbf")return"bold"}var r=t.font;if(!r||r==="mathnormal")return null;var n=e.mode,a=p3[r];if(a)return typeof a=="function"?a(e):a;var i=e.text;if(f3.has(i))return null;if(we[n][i]){var u=we[n][i].replace;u&&(i=u)}var s=Ba[r].fontName;return Ei(i,s,n)?Ba[r].variant:null};function ia(e){if(!e)return!1;if(e.type==="mi"&&e.children.length===1){var t=e.children[0];return t instanceof Me&&t.text==="."}else if(e.type==="mo"&&e.children.length===1&&e.getAttribute("separator")==="true"&&e.getAttribute("lspace")==="0em"&&e.getAttribute("rspace")==="0em"){var r=e.children[0];return r instanceof Me&&r.text===","}else return!1}var dt=function(t,r,n){if(t.length===1){var a=Ae(t[0],r);return n&&a instanceof G&&a.type==="mo"&&(a.setAttribute("lspace","0em"),a.setAttribute("rspace","0em")),[a]}for(var i=[],u,s=0;s=1&&(u.type==="mn"||ia(u))){var c=l.children[0];c instanceof G&&c.type==="mn"&&(c.children=[...u.children,...c.children],i.pop())}else if(u.type==="mi"&&u.children.length===1){var d=u.children[0];if(d instanceof Me&&d.text==="̸"&&(l.type==="mo"||l.type==="mi"||l.type==="mn")){var f=l.children[0];f instanceof Me&&f.text.length>0&&(f.text=f.text.slice(0,1)+"̸"+f.text.slice(1),i.pop())}}}i.push(l),u=l}return i},tr=function(t,r,n){return yi(dt(t,r,n))},Ae=function(t,r){if(!t)return new G("mrow");if(i0[t.type])return i0[t.type](t,r);throw new Y("Got group of unknown type: '"+t.type+"'")};function Vu(e,t,r,n,a){var i=dt(e,r),u;i.length===1&&i[0]instanceof G&&m3.has(i[0].type)?u=i[0]:u=new G("mrow",i);var s=new G("annotation",[new Me(t)]);s.setAttribute("encoding","application/x-tex");var l=new G("semantics",[u,s]),c=new G("math",[l]);c.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),n&&c.setAttribute("display","block");var d=a?"katex":"katex-mathml";return z([d],[c])}var g3=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],ju=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],Wu=function(t,r){return r.size<2?t:g3[t-1][r.size-1]};class Bt{constructor(t){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=t.style,this.color=t.color,this.size=t.size||Bt.BASESIZE,this.textSize=t.textSize||this.size,this.phantom=!!t.phantom,this.font=t.font||"",this.fontFamily=t.fontFamily||"",this.fontWeight=t.fontWeight||"",this.fontShape=t.fontShape||"",this.sizeMultiplier=ju[this.size-1],this.maxSize=t.maxSize,this.minRuleThickness=t.minRuleThickness,this._fontMetrics=void 0}extend(t){var r={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};return Object.assign(r,t),new Bt(r)}havingStyle(t){return this.style===t?this:this.extend({style:t,size:Wu(this.textSize,t)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(t){return this.size===t&&this.textSize===t?this:this.extend({style:this.style.text(),size:t,textSize:t,sizeMultiplier:ju[t-1]})}havingBaseStyle(t){t=t||this.style.text();var r=Wu(Bt.BASESIZE,t);return this.size===r&&this.textSize===Bt.BASESIZE&&this.style===t?this:this.extend({style:t,size:r})}havingBaseSizing(){var t;switch(this.style.id){case 4:case 5:t=3;break;case 6:case 7:t=1;break;default:t=6}return this.extend({style:this.style.text(),size:t})}withColor(t){return this.extend({color:t})}withPhantom(){return this.extend({phantom:!0})}withFont(t){return this.extend({font:t})}withTextFontFamily(t){return this.extend({fontFamily:t,font:""})}withTextFontWeight(t){return this.extend({fontWeight:t,font:""})}withTextFontShape(t){return this.extend({fontShape:t,font:""})}sizingClasses(t){return t.size!==this.size?["sizing","reset-size"+t.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==Bt.BASESIZE?["sizing","reset-size"+this.size,"size"+Bt.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=Z4(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}}Bt.BASESIZE=6;var oo=function(t){return new Bt({style:t.displayMode?oe.DISPLAY:oe.TEXT,maxSize:t.maxSize,minRuleThickness:t.minRuleThickness})},co=function(t,r){if(r.displayMode){var n=["katex-display"];r.leqno&&n.push("leqno"),r.fleqn&&n.push("fleqn"),t=z(n,[t])}return t},b3=function(t,r,n){var a=oo(n),i;if(n.output==="mathml")return Vu(t,r,a,n.displayMode,!0);if(n.output==="html"){var u=Ua(t,a);i=z(["katex"],[u])}else{var s=Vu(t,r,a,n.displayMode,!1),l=Ua(t,a);i=z(["katex"],[s,l])}return co(i,n)},E3=function(t,r,n){var a=oo(n),i=Ua(t,a),u=z(["katex"],[i]);return co(u,n)},T3={widehat:"^",widecheck:"ˇ",widetilde:"~",utilde:"~",overleftarrow:"←",underleftarrow:"←",xleftarrow:"←",overrightarrow:"→",underrightarrow:"→",xrightarrow:"→",underbrace:"⏟",overbrace:"⏞",underbracket:"⎵",overbracket:"⎴",overgroup:"⏠",undergroup:"⏡",overleftrightarrow:"↔",underleftrightarrow:"↔",xleftrightarrow:"↔",Overrightarrow:"⇒",xRightarrow:"⇒",overleftharpoon:"↼",xleftharpoonup:"↼",overrightharpoon:"⇀",xrightharpoonup:"⇀",xLeftarrow:"⇐",xLeftrightarrow:"⇔",xhookleftarrow:"↩",xhookrightarrow:"↪",xmapsto:"↦",xrightharpoondown:"⇁",xleftharpoondown:"↽",xrightleftharpoons:"⇌",xleftrightharpoons:"⇋",xtwoheadleftarrow:"↞",xtwoheadrightarrow:"↠",xlongequal:"=",xtofrom:"⇄",xrightleftarrows:"⇄",xrightequilibrium:"⇌",xleftequilibrium:"⇋","\\cdrightarrow":"→","\\cdleftarrow":"←","\\cdlongequal":"="},y0=function(t){var r=new G("mo",[new Me(T3[t.replace(/^\\/,"")])]);return r.setAttribute("stretchy","true"),r},x3={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overbracket:[["leftbracketover","rightbracketover"],1.6,440],underbracket:[["leftbracketunder","rightbracketunder"],1.6,410],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},y3=new Set(["widehat","widecheck","widetilde","utilde"]),v0=function(t,r){function n(){var s=4e5,l=t.label.slice(1);if(y3.has(l)&&"base"in t){var c=t.base.type==="ordgroup"?t.base.body.length:1,d,f,g;if(c>5)l==="widehat"||l==="widecheck"?(d=420,s=2364,g=.42,f=l+"4"):(d=312,s=2340,g=.34,f="tilde4");else{var p=[1,1,2,2,3,3][c];l==="widehat"||l==="widecheck"?(s=[0,1062,2364,2364,2364][p],d=[0,239,300,360,420][p],g=[0,.24,.3,.3,.36,.42][p],f=l+p):(s=[0,600,1033,2339,2340][p],d=[0,260,286,306,312][p],g=[0,.26,.286,.3,.306,.34][p],f="tilde"+p)}var x=new Zt(f),S=new zt([x],{width:"100%",height:V(g),viewBox:"0 0 "+s+" "+d,preserveAspectRatio:"none"});return{span:er([],[S],r),minWidth:0,height:g}}else{var D=[],_=x3[l];if(!_)throw new Error('No SVG data for "'+l+'".');var[N,M,W]=_,j=W/1e3,L=N.length,ee,re;if(L===1){if(_.length!==4)throw new Error('Expected 4-tuple for single-path SVG data "'+l+'".');ee=["hide-tail"],re=[_[3]]}else if(L===2)ee=["halfarrow-left","halfarrow-right"],re=["xMinYMin","xMaxYMin"];else if(L===3)ee=["brace-left","brace-center","brace-right"],re=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support - `+L+" children.");for(var K=0;K0&&(a.style.minWidth=V(i)),a},v3=function(t,r,n,a,i){var u,s=t.height+t.depth+n+a;if(/fbox|color|angl/.test(r)){if(u=z(["stretchy",r],[],i),r==="fbox"){var l=i.color&&i.getColor();l&&(u.style.borderColor=l)}}else{var c=[];/^[bx]cancel$/.test(r)&&c.push(new Da({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(r)&&c.push(new Da({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var d=new zt(c,{width:"100%",height:V(s)});u=er([],[d],i)}return u.height=s,u.style.height=V(s),u},A3={bin:1,close:1,inner:1,open:1,punct:1,rel:1},k3={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1};function S3(e){return e in A3}function ce(e,t){if(!e||e.type!==t)throw new Error("Expected node of type "+t+", but got "+(e?"node of type "+e.type:String(e)));return e}function A0(e){var t=k0(e);if(!t)throw new Error("Expected node of symbol group type, but got "+(e?"node of type "+e.type:String(e)));return t}function k0(e){return e&&(e.type==="atom"||k3.hasOwnProperty(e.type))?e:null}var ho=e=>{if(e instanceof ct)return e;if(K4(e)&&e.children.length===1)return ho(e.children[0])},Ai=(e,t)=>{var r,n,a;e&&e.type==="supsub"?(n=ce(e.base,"accent"),r=n.base,e.base=r,a=Q4(Te(e,t)),e.base=n):(n=ce(e,"accent"),r=n.base);var i=Te(r,t.havingCrampedStyle()),u=n.isShifty&&qt(r),s=0;if(u){var l,c;s=(l=(c=ho(i))==null?void 0:c.skew)!=null?l:0}var d=n.label==="\\c",f=d?i.height+i.depth:Math.min(i.height,t.fontMetrics().xHeight),g;if(n.isStretchy)g=v0(n,t),g=Ee({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"elem",elem:g,wrapperClasses:["svg-align"],wrapperStyle:s>0?{width:"calc(100% - "+V(2*s)+")",marginLeft:V(2*s)}:void 0}]});else{var p,x;n.label==="\\vec"?(p=ao("vec",t),x=no.vec[1]):(p=x0({mode:n.mode,text:n.label},t,"textord"),p=$4(p),p.italic=0,x=p.width,d&&(f+=p.depth)),g=z(["accent-body"],[p]);var S=n.label==="\\textcircled";S&&(g.classes.push("accent-full"),f=i.height);var D=s;S||(D-=x/2),g.style.left=V(D),n.label==="\\textcircled"&&(g.style.top=".2em"),g=Ee({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:-f},{type:"elem",elem:g}]})}var _=z(["mord","accent"],[g],t);return a?(a.children[0]=_,a.height=Math.max(_.height,a.height),a.classes[0]="mord",a):_},fo=(e,t)=>{var r=e.isStretchy?y0(e.label):new G("mo",[bt(e.label,e.mode)]),n=new G("mover",[Ae(e.base,t),r]);return n.setAttribute("accent","true"),n},w3=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(e=>"\\"+e).join("|"));Z({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:(e,t)=>{var r=u0(t[0]),n=!w3.test(e.funcName),a=!n||e.funcName==="\\widehat"||e.funcName==="\\widetilde"||e.funcName==="\\widecheck";return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:n,isShifty:a,base:r}},htmlBuilder:Ai,mathmlBuilder:fo});Z({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(e,t)=>{var r=t[0],n=e.parser.mode;return n==="math"&&(e.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+e.funcName+" works only in text mode"),n="text"),{type:"accent",mode:n,label:e.funcName,isStretchy:!1,isShifty:!0,base:r}},htmlBuilder:Ai,mathmlBuilder:fo});Z({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=t[0];return{type:"accentUnder",mode:r.mode,label:n,base:a}},htmlBuilder:(e,t)=>{var r=Te(e.base,t),n=v0(e,t),a=e.label==="\\utilde"?.12:0,i=Ee({positionType:"top",positionData:r.height,children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:a},{type:"elem",elem:r}]});return z(["mord","accentunder"],[i],t)},mathmlBuilder:(e,t)=>{var r=y0(e.label),n=new G("munder",[Ae(e.base,t),r]);return n.setAttribute("accentunder","true"),n}});var Gn=e=>{var t=new G("mpadded",e?[e]:[]);return t.setAttribute("width","+0.6em"),t.setAttribute("lspace","0.3em"),t};Z({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){var{parser:n,funcName:a}=e;return{type:"xArrow",mode:n.mode,label:a,body:t[0],below:r[0]}},htmlBuilder(e,t){var r=t.style,n=t.havingStyle(r.sup()),a=Lr(Te(e.body,n,t),t),i=e.label.slice(0,2)==="\\x"?"x":"cd";a.classes.push(i+"-arrow-pad");var u;e.below&&(n=t.havingStyle(r.sub()),u=Lr(Te(e.below,n,t),t),u.classes.push(i+"-arrow-pad"));var s=v0(e,t),l=-t.fontMetrics().axisHeight+.5*s.height,c=-t.fontMetrics().axisHeight-.5*s.height-.111;(a.depth>.25||e.label==="\\xleftequilibrium")&&(c-=a.depth);var d;if(u){var f=-t.fontMetrics().axisHeight+u.height+.5*s.height+.111;d=Ee({positionType:"individualShift",children:[{type:"elem",elem:a,shift:c},{type:"elem",elem:s,shift:l,wrapperClasses:["svg-align"]},{type:"elem",elem:u,shift:f}]})}else d=Ee({positionType:"individualShift",children:[{type:"elem",elem:a,shift:c},{type:"elem",elem:s,shift:l,wrapperClasses:["svg-align"]}]});return z(["mrel","x-arrow"],[d],t)},mathmlBuilder(e,t){var r=y0(e.label);r.setAttribute("minsize",e.label.charAt(0)==="x"?"1.75em":"3.0em");var n;if(e.body){var a=Gn(Ae(e.body,t));if(e.below){var i=Gn(Ae(e.below,t));n=new G("munderover",[r,i,a])}else n=new G("mover",[r,a])}else if(e.below){var u=Gn(Ae(e.below,t));n=new G("munder",[r,u])}else n=Gn(),n=new G("mover",[r,n]);return n}});function mo(e,t){var r=He(e.body,t,!0);return z([e.mclass],r,t)}function po(e,t){var r,n=dt(e.body,t);return e.mclass==="minner"?r=new G("mpadded",n):e.mclass==="mord"?e.isCharacterBox?(r=n[0],r.type="mi"):r=new G("mi",n):(e.isCharacterBox?(r=n[0],r.type="mo"):r=new G("mo",n),e.mclass==="mbin"?(r.attributes.lspace="0.22em",r.attributes.rspace="0.22em"):e.mclass==="mpunct"?(r.attributes.lspace="0em",r.attributes.rspace="0.17em"):e.mclass==="mopen"||e.mclass==="mclose"?(r.attributes.lspace="0em",r.attributes.rspace="0em"):e.mclass==="minner"&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em")),r}Z({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(e,t){var{parser:r,funcName:n}=e,a=t[0];return{type:"mclass",mode:r.mode,mclass:"m"+n.slice(5),body:Re(a),isCharacterBox:qt(a)}},htmlBuilder:mo,mathmlBuilder:po});var S0=e=>{var t=e.type==="ordgroup"&&e.body.length?e.body[0]:e;return t.type==="atom"&&(t.family==="bin"||t.family==="rel")?"m"+t.family:"mord"};Z({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(e,t){var{parser:r}=e;return{type:"mclass",mode:r.mode,mclass:S0(t[0]),body:Re(t[1]),isCharacterBox:qt(t[1])}}});Z({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(e,t){var{parser:r,funcName:n}=e,a=t[1],i=t[0],u;n!=="\\stackrel"?u=S0(a):u="mrel";var s={type:"op",mode:a.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:n!=="\\stackrel",body:Re(a)},l={type:"supsub",mode:i.mode,base:s,sup:n==="\\underset"?null:i,sub:n==="\\underset"?i:null};return{type:"mclass",mode:r.mode,mclass:u,body:[l],isCharacterBox:qt(l)}},htmlBuilder:mo,mathmlBuilder:po});Z({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"pmb",mode:r.mode,mclass:S0(t[0]),body:Re(t[0])}},htmlBuilder(e,t){var r=He(e.body,t,!0),n=z([e.mclass],r,t);return n.style.textShadow="0.02em 0.01em 0.04px",n},mathmlBuilder(e,t){var r=dt(e.body,t),n=new G("mstyle",r);return n.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),n}});var C3={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},Xu=()=>({type:"styling",body:[],mode:"math",style:"display",resetFont:!0}),$u=e=>e.type==="textord"&&e.text==="@",_3=(e,t)=>(e.type==="mathord"||e.type==="atom")&&e.text===t;function I3(e,t,r){var n=C3[e];switch(n){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(n,[t[0]],[t[1]]);case"\\uparrow":case"\\downarrow":{var a=r.callFunction("\\\\cdleft",[t[0]],[]),i={type:"atom",text:n,mode:"math",family:"rel"},u=r.callFunction("\\Big",[i],[]),s=r.callFunction("\\\\cdright",[t[1]],[]),l={type:"ordgroup",mode:"math",body:[a,u,s]};return r.callFunction("\\\\cdparent",[l],[])}case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var c={type:"textord",text:"\\Vert",mode:"math"};return r.callFunction("\\Big",[c],[])}default:return{type:"textord",text:" ",mode:"math"}}}function N3(e){var t=[];for(e.gullet.beginGroup(),e.gullet.macros.set("\\cr","\\\\\\relax"),e.gullet.beginGroup();;){t.push(e.parseExpression(!1,"\\\\")),e.gullet.endGroup(),e.gullet.beginGroup();var r=e.fetch().text;if(r==="&"||r==="\\\\")e.consume();else if(r==="\\end"){t[t.length-1].length===0&&t.pop();break}else throw new Y("Expected \\\\ or \\cr or \\end",e.nextToken)}for(var n=[],a=[n],i=0;iAV".includes(c))for(var f=0;f<2;f++){for(var g=!0,p=l+1;pAV=|." after @',u[l]);var x=I3(c,d,e),S={type:"styling",body:[x],mode:"math",style:"display",resetFont:!0};n.push(S),s=Xu()}i%2===0?n.push(s):n.shift(),n=[],a.push(n)}e.gullet.endGroup(),e.gullet.endGroup();var D=new Array(a[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25});return{type:"array",mode:"math",body:a,arraystretch:1,addJot:!0,rowGaps:[null],cols:D,colSeparationType:"CD",hLinesBeforeRow:new Array(a.length+1).fill([])}}Z({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:n}=e;return{type:"cdlabel",mode:r.mode,side:n.slice(4),label:t[0]}},htmlBuilder(e,t){var r=t.havingStyle(t.style.sup()),n=Lr(Te(e.label,r,t),t);return n.classes.push("cd-label-"+e.side),n.style.bottom=V(.8-n.depth),n.height=0,n.depth=0,n},mathmlBuilder(e,t){var r=new G("mrow",[Ae(e.label,t)]);return r=new G("mpadded",[r]),r.setAttribute("width","0"),e.side==="left"&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),r=new G("mstyle",[r]),r.setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}});Z({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(e,t){var{parser:r}=e;return{type:"cdlabelparent",mode:r.mode,fragment:t[0]}},htmlBuilder(e,t){var r=Lr(Te(e.fragment,t),t);return r.classes.push("cd-vert-arrow"),r},mathmlBuilder(e,t){return new G("mrow",[Ae(e.fragment,t)])}});Z({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(e,t){for(var{parser:r}=e,n=ce(t[0],"ordgroup"),a=n.body,i="",u=0;u=1114111)throw new Y("\\@char with invalid code point "+i);return l<=65535?c=String.fromCharCode(l):(l-=65536,c=String.fromCharCode((l>>10)+55296,(l&1023)+56320)),{type:"textord",mode:r.mode,text:c}}});var go=(e,t)=>{var r=He(e.body,t.withColor(e.color),!1);return Gt(r)},bo=(e,t)=>{var r=dt(e.body,t.withColor(e.color)),n=new G("mstyle",r);return n.setAttribute("mathcolor",e.color),n};Z({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(e,t){var{parser:r}=e,n=ce(t[0],"color-token").color,a=t[1];return{type:"color",mode:r.mode,color:n,body:Re(a)}},htmlBuilder:go,mathmlBuilder:bo});Z({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(e,t){var{parser:r,breakOnTokenText:n}=e,a=ce(t[0],"color-token").color;r.gullet.macros.set("\\current@color",a);var i=r.parseExpression(!0,n);return{type:"color",mode:r.mode,color:a,body:i}},htmlBuilder:go,mathmlBuilder:bo});Z({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(e,t,r){var{parser:n}=e,a=n.gullet.future().text==="["?n.parseSizeGroup(!0):null,i=!n.settings.displayMode||!n.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:n.mode,newLine:i,size:a&&ce(a,"size").value}},htmlBuilder(e,t){var r=z(["mspace"],[],t);return e.newLine&&(r.classes.push("newline"),e.size&&(r.style.marginTop=V(Ie(e.size,t)))),r},mathmlBuilder(e,t){var r=new G("mspace");return e.newLine&&(r.setAttribute("linebreak","newline"),e.size&&r.setAttribute("height",V(Ie(e.size,t)))),r}});var qa={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},Eo=e=>{var t=e.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(t))throw new Y("Expected a control sequence",e);return t},D3=e=>{var t=e.gullet.popToken();return t.text==="="&&(t=e.gullet.popToken(),t.text===" "&&(t=e.gullet.popToken())),t},To=(e,t,r,n)=>{var a=e.gullet.macros.get(r.text);a==null&&(r.noexpand=!0,a={tokens:[r],numArgs:0,unexpandable:!e.gullet.isExpandable(r.text)}),e.gullet.macros.set(t,a,n)};Z({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(e){var{parser:t,funcName:r}=e;t.consumeSpaces();var n=t.fetch();if(qa[n.text])return(r==="\\global"||r==="\\\\globallong")&&(n.text=qa[n.text]),ce(t.parseFunction(),"internal");throw new Y("Invalid token after macro prefix",n)}});Z({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,n=t.gullet.popToken(),a=n.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(a))throw new Y("Expected a control sequence",n);for(var i=0,u,s=[[]];t.gullet.future().text!=="{";)if(n=t.gullet.popToken(),n.text==="#"){if(t.gullet.future().text==="{"){u=t.gullet.future(),s[i].push("{");break}if(n=t.gullet.popToken(),!/^[1-9]$/.test(n.text))throw new Y('Invalid argument number "'+n.text+'"');if(parseInt(n.text)!==i+1)throw new Y('Argument number "'+n.text+'" out of order');i++,s.push([])}else{if(n.text==="EOF")throw new Y("Expected a macro definition");s[i].push(n.text)}var{tokens:l}=t.gullet.consumeArg();return u&&l.unshift(u),(r==="\\edef"||r==="\\xdef")&&(l=t.gullet.expandTokens(l),l.reverse()),t.gullet.macros.set(a,{tokens:l,numArgs:i,delimiters:s},r===qa[r]),{type:"internal",mode:t.mode}}});Z({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,n=Eo(t.gullet.popToken());t.gullet.consumeSpaces();var a=D3(t);return To(t,n,a,r==="\\\\globallet"),{type:"internal",mode:t.mode}}});Z({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,n=Eo(t.gullet.popToken()),a=t.gullet.popToken(),i=t.gullet.popToken();return To(t,n,i,r==="\\\\globalfuture"),t.gullet.pushToken(i),t.gullet.pushToken(a),{type:"internal",mode:t.mode}}});var tn=function(t,r,n){var a=we.math[t]&&we.math[t].replace,i=Ei(a||t,r,n);if(!i)throw new Error("Unsupported symbol "+t+" and font size "+r+".");return i},ki=function(t,r,n,a){var i=n.havingBaseStyle(r),u=z(a.concat(i.sizingClasses(n)),[t],n),s=i.sizeMultiplier/n.sizeMultiplier;return u.height*=s,u.depth*=s,u.maxFontSize=i.sizeMultiplier,u},xo=function(t,r,n){var a=r.havingBaseStyle(n),i=(1-r.sizeMultiplier/a.sizeMultiplier)*r.fontMetrics().axisHeight;t.classes.push("delimcenter"),t.style.top=V(i),t.height-=i,t.depth+=i},O3=function(t,r,n,a,i,u){var s=Qe(t,"Main-Regular",i,a),l=ki(s,r,a,u);return xo(l,a,r),l},L3=function(t,r,n,a){return Qe(t,"Size"+r+"-Regular",n,a)},yo=function(t,r,n,a,i,u){var s=L3(t,r,i,a),l=ki(z(["delimsizing","size"+r],[s],a),oe.TEXT,a,u);return n&&xo(l,a,oe.TEXT),l},ua=function(t,r,n){var a;r==="Size1-Regular"?a="delim-size1":a="delim-size4";var i=z(["delimsizinginner",a],[z([],[Qe(t,r,n)])]);return{type:"elem",elem:i}},sa=function(t,r,n){var a=wt["Size4-Regular"][t.charCodeAt(0)]?wt["Size4-Regular"][t.charCodeAt(0)][4]:wt["Size1-Regular"][t.charCodeAt(0)][4],i=new Zt("inner",q4(t,Math.round(1e3*r))),u=new zt([i],{width:V(a),height:V(r),style:"width:"+V(a),viewBox:"0 0 "+1e3*a+" "+Math.round(1e3*r),preserveAspectRatio:"xMinYMin"}),s=er([],[u],n);return s.height=r,s.style.height=V(r),s.style.width=V(a),{type:"elem",elem:s}},Ya=.008,Vn={type:"kern",size:-1*Ya},R3=new Set(["|","\\lvert","\\rvert","\\vert"]),M3=new Set(["\\|","\\lVert","\\rVert","\\Vert"]),vo=function(t,r,n,a,i,u){var s,l,c,d,f="",g=0;s=c=d=t,l=null;var p="Size1-Regular";t==="\\uparrow"?c=d="⏐":t==="\\Uparrow"?c=d="‖":t==="\\downarrow"?s=c="⏐":t==="\\Downarrow"?s=c="‖":t==="\\updownarrow"?(s="\\uparrow",c="⏐",d="\\downarrow"):t==="\\Updownarrow"?(s="\\Uparrow",c="‖",d="\\Downarrow"):R3.has(t)?(c="∣",f="vert",g=333):M3.has(t)?(c="∥",f="doublevert",g=556):t==="["||t==="\\lbrack"?(s="⎡",c="⎢",d="⎣",p="Size4-Regular",f="lbrack",g=667):t==="]"||t==="\\rbrack"?(s="⎤",c="⎥",d="⎦",p="Size4-Regular",f="rbrack",g=667):t==="\\lfloor"||t==="⌊"?(c=s="⎢",d="⎣",p="Size4-Regular",f="lfloor",g=667):t==="\\lceil"||t==="⌈"?(s="⎡",c=d="⎢",p="Size4-Regular",f="lceil",g=667):t==="\\rfloor"||t==="⌋"?(c=s="⎥",d="⎦",p="Size4-Regular",f="rfloor",g=667):t==="\\rceil"||t==="⌉"?(s="⎤",c=d="⎥",p="Size4-Regular",f="rceil",g=667):t==="("||t==="\\lparen"?(s="⎛",c="⎜",d="⎝",p="Size4-Regular",f="lparen",g=875):t===")"||t==="\\rparen"?(s="⎞",c="⎟",d="⎠",p="Size4-Regular",f="rparen",g=875):t==="\\{"||t==="\\lbrace"?(s="⎧",l="⎨",d="⎩",c="⎪",p="Size4-Regular"):t==="\\}"||t==="\\rbrace"?(s="⎫",l="⎬",d="⎭",c="⎪",p="Size4-Regular"):t==="\\lgroup"||t==="⟮"?(s="⎧",d="⎩",c="⎪",p="Size4-Regular"):t==="\\rgroup"||t==="⟯"?(s="⎫",d="⎭",c="⎪",p="Size4-Regular"):t==="\\lmoustache"||t==="⎰"?(s="⎧",d="⎭",c="⎪",p="Size4-Regular"):(t==="\\rmoustache"||t==="⎱")&&(s="⎫",d="⎩",c="⎪",p="Size4-Regular");var x=tn(s,p,i),S=x.height+x.depth,D=tn(c,p,i),_=D.height+D.depth,N=tn(d,p,i),M=N.height+N.depth,W=0,j=1;if(l!==null){var L=tn(l,p,i);W=L.height+L.depth,j=2}var ee=S+M+W,re=Math.max(0,Math.ceil((r-ee)/(j*_))),K=ee+re*j*_,R=a.fontMetrics().axisHeight;n&&(R*=a.sizeMultiplier);var J=K/2-R,Q=[];if(f.length>0){var be=K-S-M,ne=Math.round(K*1e3),X=Y4(f,Math.round(be*1e3)),me=new Zt(f,X),ke=V(g/1e3),ze=V(ne/1e3),at=new zt([me],{width:ke,height:ze,viewBox:"0 0 "+g+" "+ne}),w=er([],[at],a);w.height=ne/1e3,w.style.width=ke,w.style.height=ze,Q.push({type:"elem",elem:w})}else{if(Q.push(ua(d,p,i)),Q.push(Vn),l===null){var Oe=K-S-M+2*Ya;Q.push(sa(c,Oe,a))}else{var Xe=(K-S-M-W)/2+2*Ya;Q.push(sa(c,Xe,a)),Q.push(Vn),Q.push(ua(l,p,i)),Q.push(Vn),Q.push(sa(c,Xe,a))}Q.push(Vn),Q.push(ua(s,p,i))}var C=a.havingBaseStyle(oe.TEXT),Ye=Ee({positionType:"bottom",positionData:J,children:Q});return ki(z(["delimsizing","mult"],[Ye],C),oe.TEXT,a,u)},la=80,oa=.08,ca=function(t,r,n,a,i){var u=U4(t,a,n),s=new Zt(t,u),l=new zt([s],{width:"400em",height:V(r),viewBox:"0 0 400000 "+n,preserveAspectRatio:"xMinYMin slice"});return er(["hide-tail"],[l],i)},P3=function(t,r){var n=r.havingBaseSizing(),a=Co("\\surd",t*n.sizeMultiplier,wo,n),i=n.sizeMultiplier,u=Math.max(0,r.minRuleThickness-r.fontMetrics().sqrtRuleThickness),s,l,c,d,f;return a.type==="small"?(d=1e3+1e3*u+la,t<1?i=1:t<1.4&&(i=.7),l=(1+u+oa)/i,c=(1+u)/i,s=ca("sqrtMain",l,d,u,r),s.style.minWidth="0.853em",f=.833/i):a.type==="large"?(d=(1e3+la)*sn[a.size],c=(sn[a.size]+u)/i,l=(sn[a.size]+u+oa)/i,s=ca("sqrtSize"+a.size,l,d,u,r),s.style.minWidth="1.02em",f=1/i):(l=t+u+oa,c=t+u,d=Math.floor(1e3*t+u)+la,s=ca("sqrtTall",l,d,u,r),s.style.minWidth="0.742em",f=1.056),s.height=c,s.style.height=V(l),{span:s,advanceWidth:f,ruleWidth:(r.fontMetrics().sqrtRuleThickness+u)*i}},Ao=new Set(["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","\\surd"]),B3=new Set(["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱"]),ko=new Set(["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"]),sn=[0,1.2,1.8,2.4,3],So=function(t,r,n,a,i){if(t==="<"||t==="\\lt"||t==="⟨"?t="\\langle":(t===">"||t==="\\gt"||t==="⟩")&&(t="\\rangle"),Ao.has(t)||ko.has(t))return yo(t,r,!1,n,a,i);if(B3.has(t))return vo(t,sn[r],!1,n,a,i);throw new Y("Illegal delimiter: '"+t+"'")},F3=[{type:"small",style:oe.SCRIPTSCRIPT},{type:"small",style:oe.SCRIPT},{type:"small",style:oe.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],H3=[{type:"small",style:oe.SCRIPTSCRIPT},{type:"small",style:oe.SCRIPT},{type:"small",style:oe.TEXT},{type:"stack"}],wo=[{type:"small",style:oe.SCRIPTSCRIPT},{type:"small",style:oe.SCRIPT},{type:"small",style:oe.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],z3=function(t){if(t.type==="small")return"Main-Regular";if(t.type==="large")return"Size"+t.size+"-Regular";if(t.type==="stack")return"Size4-Regular";var r=t.type;throw new Error("Add support for delim type '"+r+"' here.")},Co=function(t,r,n,a){for(var i=Math.min(2,3-a.style.size),u=i;ur)return s}return n[n.length-1]},Ga=function(t,r,n,a,i,u){t==="<"||t==="\\lt"||t==="⟨"?t="\\langle":(t===">"||t==="\\gt"||t==="⟩")&&(t="\\rangle");var s;ko.has(t)?s=F3:Ao.has(t)?s=wo:s=H3;var l=Co(t,r,s,a);return l.type==="small"?O3(t,l.style,n,a,i,u):l.type==="large"?yo(t,l.size,n,a,i,u):vo(t,r,n,a,i,u)},ha=function(t,r,n,a,i,u){var s=a.fontMetrics().axisHeight*a.sizeMultiplier,l=901,c=5/a.fontMetrics().ptPerEm,d=Math.max(r-s,n+s),f=Math.max(d/500*l,2*d-c);return Ga(t,f,!0,a,i,u)},Qu={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},U3=new Set(["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","<",">","\\langle","⟨","\\rangle","⟩","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."]);function Ku(e){return"isMiddle"in e}function w0(e,t){var r=k0(e);if(r&&U3.has(r.text))return r;throw r?new Y("Invalid delimiter '"+r.text+"' after '"+t.funcName+"'",e):new Y("Invalid delimiter type '"+e.type+"'",e)}Z({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:(e,t)=>{var r=w0(t[0],e);return{type:"delimsizing",mode:e.parser.mode,size:Qu[e.funcName].size,mclass:Qu[e.funcName].mclass,delim:r.text}},htmlBuilder:(e,t)=>e.delim==="."?z([e.mclass]):So(e.delim,e.size,t,e.mode,[e.mclass]),mathmlBuilder:e=>{var t=[];e.delim!=="."&&t.push(bt(e.delim,e.mode));var r=new G("mo",t);e.mclass==="mopen"||e.mclass==="mclose"?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r.setAttribute("stretchy","true");var n=V(sn[e.size]);return r.setAttribute("minsize",n),r.setAttribute("maxsize",n),r}});function Ju(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}Z({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=e.parser.gullet.macros.get("\\current@color");if(r&&typeof r!="string")throw new Y("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:e.parser.mode,delim:w0(t[0],e).text,color:r}}});Z({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=w0(t[0],e),n=e.parser;++n.leftrightDepth;var a=n.parseExpression(!1);--n.leftrightDepth,n.expect("\\right",!1);var i=ce(n.parseFunction(),"leftright-right");return{type:"leftright",mode:n.mode,body:a,left:r.text,right:i.delim,rightColor:i.color}},htmlBuilder:(e,t)=>{Ju(e);for(var r=He(e.body,t,!0,["mopen","mclose"]),n=0,a=0,i=!1,u=0;u{Ju(e);var r=dt(e.body,t);if(e.left!=="."){var n=new G("mo",[bt(e.left,e.mode)]);n.setAttribute("fence","true"),r.unshift(n)}if(e.right!=="."){var a=new G("mo",[bt(e.right,e.mode)]);a.setAttribute("fence","true"),e.rightColor&&a.setAttribute("mathcolor",e.rightColor),r.push(a)}return yi(r)}});Z({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=w0(t[0],e);if(!e.parser.leftrightDepth)throw new Y("\\middle without preceding \\left",r);return{type:"middle",mode:e.parser.mode,delim:r.text}},htmlBuilder:(e,t)=>{var r;return e.delim==="."?r=bn(t,[]):(r=So(e.delim,1,t,e.mode,[]),r.isMiddle={delim:e.delim,options:t}),r},mathmlBuilder:(e,t)=>{var r=e.delim==="\\vert"||e.delim==="|"?bt("|","text"):bt(e.delim,e.mode),n=new G("mo",[r]);return n.setAttribute("fence","true"),n.setAttribute("lspace","0.05em"),n.setAttribute("rspace","0.05em"),n}});var C0=(e,t)=>{var r=Lr(Te(e.body,t),t),n=e.label.slice(1),a=t.sizeMultiplier,i,u,s=qt(e.body);if(n==="sout")i=z(["stretchy","sout"]),i.height=t.fontMetrics().defaultRuleThickness/a,u=-.5*t.fontMetrics().xHeight;else if(n==="phase"){var l=Ie({number:.6,unit:"pt"},t),c=Ie({number:.35,unit:"ex"},t),d=t.havingBaseSizing();a=a/d.sizeMultiplier;var f=r.height+r.depth+l+c;r.style.paddingLeft=V(f/2+l);var g=Math.floor(1e3*f*a),p=H4(g),x=new zt([new Zt("phase",p)],{width:"400em",height:V(g/1e3),viewBox:"0 0 400000 "+g,preserveAspectRatio:"xMinYMin slice"});i=er(["hide-tail"],[x],t),i.style.height=V(f),u=r.depth+l+c}else{/cancel/.test(n)?s||r.classes.push("cancel-pad"):n==="angl"?r.classes.push("anglpad"):r.classes.push("boxpad");var S,D,_=0;/box/.test(n)?(_=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness),S=t.fontMetrics().fboxsep+(n==="colorbox"?0:_),D=S):n==="angl"?(_=Math.max(t.fontMetrics().defaultRuleThickness,t.minRuleThickness),S=4*_,D=Math.max(0,.25-r.depth)):(S=s?.2:0,D=S),i=v3(r,n,S,D,t),/fbox|boxed|fcolorbox/.test(n)?(i.style.borderStyle="solid",i.style.borderWidth=V(_)):n==="angl"&&_!==.049&&(i.style.borderTopWidth=V(_),i.style.borderRightWidth=V(_)),u=r.depth+D,e.backgroundColor&&(i.style.backgroundColor=e.backgroundColor,e.borderColor&&(i.style.borderColor=e.borderColor))}var N;if(e.backgroundColor)N=Ee({positionType:"individualShift",children:[{type:"elem",elem:i,shift:u},{type:"elem",elem:r,shift:0}]});else{var M=/cancel|phase/.test(n)?["svg-align"]:[];N=Ee({positionType:"individualShift",children:[{type:"elem",elem:r,shift:0},{type:"elem",elem:i,shift:u,wrapperClasses:M}]})}return/cancel/.test(n)&&(N.height=r.height,N.depth=r.depth),/cancel/.test(n)&&!s?z(["mord","cancel-lap"],[N],t):z(["mord"],[N],t)},_0=(e,t)=>{var r,n=new G(e.label.includes("colorbox")?"mpadded":"menclose",[Ae(e.body,t)]);switch(e.label){case"\\cancel":n.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":n.setAttribute("notation","downdiagonalstrike");break;case"\\phase":n.setAttribute("notation","phasorangle");break;case"\\sout":n.setAttribute("notation","horizontalstrike");break;case"\\fbox":n.setAttribute("notation","box");break;case"\\angl":n.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(r=t.fontMetrics().fboxsep*t.fontMetrics().ptPerEm,n.setAttribute("width","+"+2*r+"pt"),n.setAttribute("height","+"+2*r+"pt"),n.setAttribute("lspace",r+"pt"),n.setAttribute("voffset",r+"pt"),e.label==="\\fcolorbox"){var a=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness);n.setAttribute("style","border: "+V(a)+" solid "+e.borderColor)}break;case"\\xcancel":n.setAttribute("notation","updiagonalstrike downdiagonalstrike");break}return e.backgroundColor&&n.setAttribute("mathbackground",e.backgroundColor),n};Z({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","hbox"]},handler(e,t,r){var{parser:n,funcName:a}=e,i=ce(t[0],"color-token").color,u=t[1];return{type:"enclose",mode:n.mode,label:a,backgroundColor:i,body:u}},htmlBuilder:C0,mathmlBuilder:_0});Z({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","hbox"]},handler(e,t,r){var{parser:n,funcName:a}=e,i=ce(t[0],"color-token").color,u=ce(t[1],"color-token").color,s=t[2];return{type:"enclose",mode:n.mode,label:a,backgroundColor:u,borderColor:i,body:s}},htmlBuilder:C0,mathmlBuilder:_0});Z({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\fbox",body:t[0]}}});Z({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\phase"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:n}=e,a=t[0];return{type:"enclose",mode:r.mode,label:n,body:a}},htmlBuilder:C0,mathmlBuilder:_0});Z({type:"enclose",names:["\\sout"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r,funcName:n}=e;r.mode==="math"&&r.settings.reportNonstrict("mathVsSout","LaTeX's \\sout works only in text mode");var a=t[0];return{type:"enclose",mode:r.mode,label:n,body:a}},htmlBuilder:C0,mathmlBuilder:_0});Z({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(e,t){var{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\angl",body:t[0]}}});var _o={};function Nt(e){for(var{type:t,names:r,props:n,handler:a,htmlBuilder:i,mathmlBuilder:u}=e,s={type:t,numArgs:n.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:a},l=0;l{var t=e.parser.settings;if(!t.displayMode)throw new Y("{"+e.envName+"} can be used only in display mode.")},q3=new Set(["gather","gather*"]);function Si(e){if(!e.includes("ed"))return!e.includes("*")}function ar(e,t,r){var{hskipBeforeAndAfter:n,addJot:a,cols:i,arraystretch:u,colSeparationType:s,autoTag:l,singleRow:c,emptySingleRow:d,maxNumCols:f,leqno:g}=t;if(e.gullet.beginGroup(),c||e.gullet.macros.set("\\cr","\\\\\\relax"),!u){var p=e.gullet.expandMacroAsText("\\arraystretch");if(p==null)u=1;else if(u=parseFloat(p),!u||u<0)throw new Y("Invalid \\arraystretch: "+p)}e.gullet.beginGroup();var x=[],S=[x],D=[],_=[],N=l!=null?[]:void 0;function M(){l&&e.gullet.macros.set("\\@eqnsw","1",!0)}function W(){N&&(e.gullet.macros.get("\\df@tag")?(N.push(e.subparse([new ot("\\df@tag")])),e.gullet.macros.set("\\df@tag",void 0,!0)):N.push(!!l&&e.gullet.macros.get("\\@eqnsw")==="1"))}for(M(),_.push(Zu(e));;){var j=e.parseExpression(!1,c?"\\end":"\\\\");e.gullet.endGroup(),e.gullet.beginGroup();var L={type:"ordgroup",mode:e.mode,body:j};r&&(L={type:"styling",mode:e.mode,style:r,resetFont:!0,body:[L]}),x.push(L);var ee=e.fetch().text;if(ee==="&"){if(f&&x.length===f){if(c||s)throw new Y("Too many tab characters: &",e.nextToken);e.settings.reportNonstrict("textEnv","Too few columns specified in the {array} column argument.")}e.consume()}else if(ee==="\\end"){W(),x.length===1&&L.type==="styling"&&L.body.length===1&&L.body[0].type==="ordgroup"&&L.body[0].body.length===0&&(S.length>1||!d)&&S.pop(),_.length0&&(M+=.25),c.push({pos:M,isDashed:ue[he]})}for(W(u[0]),n=0;n0&&(J+=N,eeue))for(n=0;n=s)){var it=void 0;if(a>0||t.hskipBeforeAndAfter){var Lt,ir;it=(Lt=(ir=C)==null?void 0:ir.pregap)!=null?Lt:g,it!==0&&(X=z(["arraycolsep"],[]),X.style.width=V(it),ne.push(X))}var _n=[];for(n=0;n0){for(var R0=Or("hline",r,d),M0=Or("hdashline",r,d),Vr=[{type:"elem",elem:ur,shift:0}];c.length>0;){var Ln=c.pop(),Rn=Ln.pos-Q;Ln.isDashed?Vr.push({type:"elem",elem:M0,shift:Rn}):Vr.push({type:"elem",elem:R0,shift:Rn})}ur=Ee({positionType:"individualShift",children:Vr})}if(ke.length===0)return z(["mord"],[ur],r);var B=Ee({positionType:"individualShift",children:ke}),$=z(["tag"],[B],r);return Gt([ur,$])},Y3={c:"center ",l:"left ",r:"right "},Ot=function(t,r){for(var n=[],a=new G("mtd",[],["mtr-glue"]),i=new G("mtd",[],["mml-eqn-num"]),u=0;u0){var x=t.cols,S="",D=!1,_=0,N=x.length;x[0].type==="separator"&&(g+="top ",_=1),x[x.length-1].type==="separator"&&(g+="bottom ",N-=1);for(var M=_;M0?"left ":"",g+=K[K.length-1].length>0?"right ":"";for(var R=1;R0&&p&&(D=1),n[x]={type:"align",align:S,pregap:D,postgap:0}}return u.colSeparationType=p?"align":"alignat",u};Nt({type:"array",names:["array","darray"],props:{numArgs:1},handler(e,t){var r=k0(t[0]),n=r?[t[0]]:ce(t[0],"ordgroup").body,a=n.map(function(u){var s=A0(u),l=s.text;if("lcr".includes(l))return{type:"align",align:l};if(l==="|")return{type:"separator",separator:"|"};if(l===":")return{type:"separator",separator:":"};throw new Y("Unknown column alignment: "+l,u)}),i={cols:a,hskipBeforeAndAfter:!0,maxNumCols:a.length};return ar(e.parser,i,wi(e.envName))},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(e){var t={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[e.envName.replace("*","")],r="c",n={hskipBeforeAndAfter:!1,cols:[{type:"align",align:r}]};if(e.envName.charAt(e.envName.length-1)==="*"){var a=e.parser;if(a.consumeSpaces(),a.fetch().text==="["){if(a.consume(),a.consumeSpaces(),r=a.fetch().text,!"lcr".includes(r))throw new Y("Expected l or c or r",a.nextToken);a.consume(),a.consumeSpaces(),a.expect("]"),a.consume(),n.cols=[{type:"align",align:r}]}}var i=ar(e.parser,n,wi(e.envName)),u=Math.max(0,...i.body.map(s=>s.length));return i.cols=new Array(u).fill({type:"align",align:r}),t?{type:"leftright",mode:e.mode,body:[i],left:t[0],right:t[1],rightColor:void 0}:i},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(e){var t={arraystretch:.5},r=ar(e.parser,t,"script");return r.colSeparationType="small",r},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["subarray"],props:{numArgs:1},handler(e,t){var r=k0(t[0]),n=r?[t[0]]:ce(t[0],"ordgroup").body,a=n.map(function(s){var l=A0(s),c=l.text;if("lc".includes(c))return{type:"align",align:c};throw new Y("Unknown column alignment: "+c,s)});if(a.length>1)throw new Y("{subarray} can contain only one column");var i={cols:a,hskipBeforeAndAfter:!1,arraystretch:.5},u=ar(e.parser,i,"script");if(u.body.length>0&&u.body[0].length>1)throw new Y("{subarray} can contain only one column");return u},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(e){var t={arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},r=ar(e.parser,t,wi(e.envName));return{type:"leftright",mode:e.mode,body:[r],left:e.envName.includes("r")?".":"\\{",right:e.envName.includes("r")?"\\}":".",rightColor:void 0}},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:No,htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(e){q3.has(e.envName)&&I0(e);var t={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:Si(e.envName),emptySingleRow:!0,leqno:e.parser.settings.leqno};return ar(e.parser,t,"display")},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:No,htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(e){I0(e);var t={autoTag:Si(e.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:e.parser.settings.leqno};return ar(e.parser,t,"display")},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["CD"],props:{numArgs:0},handler(e){return I0(e),N3(e.parser)},htmlBuilder:Dt,mathmlBuilder:Ot});E("\\nonumber","\\gdef\\@eqnsw{0}");E("\\notag","\\nonumber");Z({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(e,t){throw new Y(e.funcName+" valid only within array environment")}});var es=_o;Z({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(e,t){var{parser:r,funcName:n}=e,a=t[0];if(a.type!=="ordgroup")throw new Y("Invalid environment name",a);for(var i="",u=0;u{var r=e.font,n=t.withFont(r);return Te(e.body,n)},Oo=(e,t)=>{var r=e.font,n=t.withFont(r);return Ae(e.body,n)},ts={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak"};Z({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=u0(t[0]),i=n;return i in ts&&(i=ts[i]),{type:"font",mode:r.mode,font:i.slice(1),body:a}},htmlBuilder:Do,mathmlBuilder:Oo});Z({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:(e,t)=>{var{parser:r}=e,n=t[0];return{type:"mclass",mode:r.mode,mclass:S0(n),body:[{type:"font",mode:r.mode,font:"boldsymbol",body:n}],isCharacterBox:qt(n)}}});Z({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:(e,t)=>{var{parser:r,funcName:n,breakOnTokenText:a}=e,{mode:i}=r,u=r.parseExpression(!0,a);return{type:"font",mode:i,font:"math"+n.slice(1),body:{type:"ordgroup",mode:r.mode,body:u}}},htmlBuilder:Do,mathmlBuilder:Oo});var G3=(e,t)=>{var r=t.style,n=r.fracNum(),a=r.fracDen(),i;i=t.havingStyle(n);var u=Te(e.numer,i,t);if(e.continued){var s=8.5/t.fontMetrics().ptPerEm,l=3.5/t.fontMetrics().ptPerEm;u.height=u.height0?x=3*g:x=7*g,S=t.fontMetrics().denom1):(f>0?(p=t.fontMetrics().num2,x=g):(p=t.fontMetrics().num3,x=3*g),S=t.fontMetrics().denom2);var D;if(d){var N=t.fontMetrics().axisHeight;p-u.depth-(N+.5*f){var r=new G("mfrac",[Ae(e.numer,t),Ae(e.denom,t)]);if(!e.hasBarLine)r.setAttribute("linethickness","0px");else if(e.barSize){var n=Ie(e.barSize,t);r.setAttribute("linethickness",V(n))}if(e.leftDelim!=null||e.rightDelim!=null){var a=[];if(e.leftDelim!=null){var i=new G("mo",[new Me(e.leftDelim.replace("\\",""))]);i.setAttribute("fence","true"),a.push(i)}if(a.push(r),e.rightDelim!=null){var u=new G("mo",[new Me(e.rightDelim.replace("\\",""))]);u.setAttribute("fence","true"),a.push(u)}return yi(a)}return r},Lo=(e,t)=>{if(!t)return e;var r={type:"styling",mode:e.mode,style:t,body:[e]};return r};Z({type:"genfrac",names:["\\cfrac","\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=t[0],i=t[1],u,s=null,l=null;switch(n){case"\\cfrac":case"\\dfrac":case"\\frac":case"\\tfrac":u=!0;break;case"\\\\atopfrac":u=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":u=!1,s="(",l=")";break;case"\\\\bracefrac":u=!1,s="\\{",l="\\}";break;case"\\\\brackfrac":u=!1,s="[",l="]";break;default:throw new Error("Unrecognized genfrac command")}var c=n==="\\cfrac",d=null;return c||n.startsWith("\\d")?d="display":n.startsWith("\\t")&&(d="text"),Lo({type:"genfrac",mode:r.mode,numer:a,denom:i,continued:c,hasBarLine:u,leftDelim:s,rightDelim:l,barSize:null},d)},htmlBuilder:G3,mathmlBuilder:V3});Z({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(e){var{parser:t,funcName:r,token:n}=e,a;switch(r){case"\\over":a="\\frac";break;case"\\choose":a="\\binom";break;case"\\atop":a="\\\\atopfrac";break;case"\\brace":a="\\\\bracefrac";break;case"\\brack":a="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:t.mode,replaceWith:a,token:n}}});var rs=["display","text","script","scriptscript"],ns=function(t){var r=null;return t.length>0&&(r=t,r=r==="."?null:r),r};Z({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(e,t){var{parser:r}=e,n=t[4],a=t[5],i=u0(t[0]),u=i.type==="atom"&&i.family==="open"?ns(i.text):null,s=u0(t[1]),l=s.type==="atom"&&s.family==="close"?ns(s.text):null,c=ce(t[2],"size"),d,f=null;c.isBlank?d=!0:(f=c.value,d=f.number>0);var g=null,p=t[3];if(p.type==="ordgroup"){if(p.body.length>0){var x=ce(p.body[0],"textord");g=rs[Number(x.text)]}}else p=ce(p,"textord"),g=rs[Number(p.text)];return Lo({type:"genfrac",mode:r.mode,numer:n,denom:a,continued:!1,hasBarLine:d,barSize:f,leftDelim:u,rightDelim:l},g)}});Z({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(e,t){var{parser:r,funcName:n,token:a}=e;return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:ce(t[0],"size").value,token:a}}});Z({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=t[0],i=ce(t[1],"infix").size;if(!i)throw new Error("\\\\abovefrac expected size, but got "+String(i));var u=t[2],s=i.number>0;return{type:"genfrac",mode:r.mode,numer:a,denom:u,continued:!1,hasBarLine:s,barSize:i,leftDelim:null,rightDelim:null}}});var Ro=(e,t)=>{var r=t.style,n,a;e.type==="supsub"?(n=e.sup?Te(e.sup,t.havingStyle(r.sup()),t):Te(e.sub,t.havingStyle(r.sub()),t),a=ce(e.base,"horizBrace")):a=ce(e,"horizBrace");var i=Te(a.base,t.havingBaseStyle(oe.DISPLAY)),u=v0(a,t),s;if(a.isOver?s=Ee({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:.1},{type:"elem",elem:u,wrapperClasses:["svg-align"]}]}):s=Ee({positionType:"bottom",positionData:i.depth+.1+u.height,children:[{type:"elem",elem:u,wrapperClasses:["svg-align"]},{type:"kern",size:.1},{type:"elem",elem:i}]}),n){var l=z(["minner",a.isOver?"mover":"munder"],[s],t);a.isOver?s=Ee({positionType:"firstBaseline",children:[{type:"elem",elem:l},{type:"kern",size:.2},{type:"elem",elem:n}]}):s=Ee({positionType:"bottom",positionData:l.depth+.2+n.height+n.depth,children:[{type:"elem",elem:n},{type:"kern",size:.2},{type:"elem",elem:l}]})}return z(["minner",a.isOver?"mover":"munder"],[s],t)},j3=(e,t)=>{var r=y0(e.label);return new G(e.isOver?"mover":"munder",[Ae(e.base,t),r])};Z({type:"horizBrace",names:["\\overbrace","\\underbrace","\\overbracket","\\underbracket"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:n}=e;return{type:"horizBrace",mode:r.mode,label:n,isOver:n.includes("\\over"),base:t[0]}},htmlBuilder:Ro,mathmlBuilder:j3});Z({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,n=t[1],a=ce(t[0],"url").url;return r.settings.isTrusted({command:"\\href",url:a})?{type:"href",mode:r.mode,href:a,body:Re(n)}:r.formatUnsupportedCmd("\\href")},htmlBuilder:(e,t)=>{var r=He(e.body,t,!1);return i3(e.href,[],r,t)},mathmlBuilder:(e,t)=>{var r=tr(e.body,t);return r instanceof G||(r=new G("mrow",[r])),r.setAttribute("href",e.href),r}});Z({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,n=ce(t[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:n}))return r.formatUnsupportedCmd("\\url");for(var a=[],i=0;i{var{parser:r,funcName:n,token:a}=e,i=ce(t[0],"raw").string,u=t[1];r.settings.strict&&r.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var s,l={};switch(n){case"\\htmlClass":l.class=i,s={command:"\\htmlClass",class:i};break;case"\\htmlId":l.id=i,s={command:"\\htmlId",id:i};break;case"\\htmlStyle":l.style=i,s={command:"\\htmlStyle",style:i};break;case"\\htmlData":{for(var c=i.split(","),d=0;d{var r=He(e.body,t,!1),n=["enclosing"];e.attributes.class&&n.push(...e.attributes.class.trim().split(/\s+/));var a=z(n,r,t);for(var i in e.attributes)i!=="class"&&e.attributes.hasOwnProperty(i)&&a.setAttribute(i,e.attributes[i]);return a},mathmlBuilder:(e,t)=>tr(e.body,t)});Z({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInArgument:!0,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e;return{type:"htmlmathml",mode:r.mode,html:Re(t[0]),mathml:Re(t[1])}},htmlBuilder:(e,t)=>{var r=He(e.html,t,!1);return Gt(r)},mathmlBuilder:(e,t)=>tr(e.mathml,t)});var da=function(t){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(t))return{number:+t,unit:"bp"};var r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t);if(!r)throw new Y("Invalid size: '"+t+"' in \\includegraphics");var n={number:+(r[1]+r[2]),unit:r[3]};if(!Ql(n))throw new Y("Invalid unit: '"+n.unit+"' in \\includegraphics.");return n};Z({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:(e,t,r)=>{var{parser:n}=e,a={number:0,unit:"em"},i={number:.9,unit:"em"},u={number:0,unit:"em"},s="";if(r[0])for(var l=ce(r[0],"raw").string,c=l.split(","),d=0;d{var r=Ie(e.height,t),n=0;e.totalheight.number>0&&(n=Ie(e.totalheight,t)-r);var a=0;e.width.number>0&&(a=Ie(e.width,t));var i={height:V(r+n)};a>0&&(i.width=V(a)),n>0&&(i.verticalAlign=V(-n));var u=new W4(e.src,e.alt,i);return u.height=r,u.depth=n,u},mathmlBuilder:(e,t)=>{var r=new G("mglyph",[]);r.setAttribute("alt",e.alt);var n=Ie(e.height,t),a=0;if(e.totalheight.number>0&&(a=Ie(e.totalheight,t)-n,r.setAttribute("valign",V(-a))),r.setAttribute("height",V(n+a)),e.width.number>0){var i=Ie(e.width,t);r.setAttribute("width",V(i))}return r.setAttribute("src",e.src),r}});Z({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(e,t){var{parser:r,funcName:n}=e,a=ce(t[0],"size");if(r.settings.strict){var i=n[1]==="m",u=a.value.unit==="mu";i?(u||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" supports only mu units, "+("not "+a.value.unit+" units")),r.mode!=="math"&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" works only in math mode")):u&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:a.value}},htmlBuilder(e,t){return ro(e.dimension,t)},mathmlBuilder(e,t){var r=Ie(e.dimension,t);return new lo(r)}});Z({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=t[0];return{type:"lap",mode:r.mode,alignment:n.slice(5),body:a}},htmlBuilder:(e,t)=>{var r;e.alignment==="clap"?(r=z([],[Te(e.body,t)]),r=z(["inner"],[r],t)):r=z(["inner"],[Te(e.body,t)]);var n=z(["fix"],[]),a=z([e.alignment],[r,n],t),i=z(["strut"]);return i.style.height=V(a.height+a.depth),a.depth&&(i.style.verticalAlign=V(-a.depth)),a.children.unshift(i),a=z(["thinbox"],[a],t),z(["mord","vbox"],[a],t)},mathmlBuilder:(e,t)=>{var r=new G("mpadded",[Ae(e.body,t)]);if(e.alignment!=="rlap"){var n=e.alignment==="llap"?"-1":"-0.5";r.setAttribute("lspace",n+"width")}return r.setAttribute("width","0px"),r}});Z({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){var{funcName:r,parser:n}=e,a=n.mode;n.switchMode("math");var i=r==="\\("?"\\)":"$",u=n.parseExpression(!1,i);return n.expect(i),n.switchMode(a),{type:"styling",mode:n.mode,style:"text",resetFont:!0,body:u}}});Z({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){throw new Y("Mismatched "+e.funcName)}});var as=(e,t)=>{switch(t.style.size){case oe.DISPLAY.size:return e.display;case oe.TEXT.size:return e.text;case oe.SCRIPT.size:return e.script;case oe.SCRIPTSCRIPT.size:return e.scriptscript;default:return e.text}};Z({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:(e,t)=>{var{parser:r}=e;return{type:"mathchoice",mode:r.mode,display:Re(t[0]),text:Re(t[1]),script:Re(t[2]),scriptscript:Re(t[3])}},htmlBuilder:(e,t)=>{var r=as(e,t),n=He(r,t,!1);return Gt(n)},mathmlBuilder:(e,t)=>{var r=as(e,t);return tr(r,t)}});var Mo=(e,t,r,n,a,i,u)=>{e=z([],[e]);var s=r&&qt(r),l,c;if(t){var d=Te(t,n.havingStyle(a.sup()),n);c={elem:d,kern:Math.max(n.fontMetrics().bigOpSpacing1,n.fontMetrics().bigOpSpacing3-d.depth)}}if(r){var f=Te(r,n.havingStyle(a.sub()),n);l={elem:f,kern:Math.max(n.fontMetrics().bigOpSpacing2,n.fontMetrics().bigOpSpacing4-f.height)}}var g;if(c&&l){var p=n.fontMetrics().bigOpSpacing5+l.elem.height+l.elem.depth+l.kern+e.depth+u;g=Ee({positionType:"bottom",positionData:p,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:l.elem,marginLeft:V(-i)},{type:"kern",size:l.kern},{type:"elem",elem:e},{type:"kern",size:c.kern},{type:"elem",elem:c.elem,marginLeft:V(i)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]})}else if(l){var x=e.height-u;g=Ee({positionType:"top",positionData:x,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:l.elem,marginLeft:V(-i)},{type:"kern",size:l.kern},{type:"elem",elem:e}]})}else if(c){var S=e.depth+u;g=Ee({positionType:"bottom",positionData:S,children:[{type:"elem",elem:e},{type:"kern",size:c.kern},{type:"elem",elem:c.elem,marginLeft:V(i)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]})}else return e;var D=[g];if(l&&i!==0&&!s){var _=z(["mspace"],[],n);_.style.marginRight=V(i),D.unshift(_)}return z(["mop","op-limits"],D,n)},Po=new Set(["\\smallint"]),zr=(e,t)=>{var r,n,a=!1,i;e.type==="supsub"?(r=e.sup,n=e.sub,i=ce(e.base,"op"),a=!0):i=ce(e,"op");var u=t.style,s=!1;u.size===oe.DISPLAY.size&&i.symbol&&!Po.has(i.name)&&(s=!0);var l,c;if(i.symbol){var d=s?"Size2-Regular":"Size1-Regular",f="";if((i.name==="\\oiint"||i.name==="\\oiiint")&&(f=i.name.slice(1),i.name=f==="oiint"?"\\iint":"\\iiint"),l=Qe(i.name,d,"math",t,["mop","op-symbol",s?"large-op":"small-op"]),c=l.italic,f.length>0){var g=ao(f+"Size"+(s?"2":"1"),t);l=Ee({positionType:"individualShift",children:[{type:"elem",elem:l,shift:0},{type:"elem",elem:g,shift:s?.08:0}]}),i.name="\\"+f,l.classes.unshift("mop"),l.italic=c}}else if(i.body){var p=He(i.body,t,!0);p.length===1&&p[0]instanceof ct?(l=p[0],l.classes[0]="mop"):l=z(["mop"],p,t)}else{for(var x=[],S=1;S{var r;if(e.symbol)r=new G("mo",[bt(e.name,e.mode)]),Po.has(e.name)&&r.setAttribute("largeop","false");else if(e.body)r=new G("mo",dt(e.body,t));else{r=new G("mi",[new Me(e.name.slice(1))]);var n=new G("mo",[bt("⁡","text")]);e.parentIsSupSub?r=new G("mrow",[r,n]):r=so([r,n])}return r},W3={"∏":"\\prod","∐":"\\coprod","∑":"\\sum","⋀":"\\bigwedge","⋁":"\\bigvee","⋂":"\\bigcap","⋃":"\\bigcup","⨀":"\\bigodot","⨁":"\\bigoplus","⨂":"\\bigotimes","⨄":"\\biguplus","⨆":"\\bigsqcup"};Z({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","∏","∐","∑","⋀","⋁","⋂","⋃","⨀","⨁","⨂","⨄","⨆"],props:{numArgs:0},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=n;return a.length===1&&(a=W3[a]),{type:"op",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:a}},htmlBuilder:zr,mathmlBuilder:Sn});Z({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var{parser:r}=e,n=t[0];return{type:"op",mode:r.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:Re(n)}},htmlBuilder:zr,mathmlBuilder:Sn});var X3={"∫":"\\int","∬":"\\iint","∭":"\\iiint","∮":"\\oint","∯":"\\oiint","∰":"\\oiiint"};Z({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:zr,mathmlBuilder:Sn});Z({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:zr,mathmlBuilder:Sn});Z({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","∫","∬","∭","∮","∯","∰"],props:{numArgs:0,allowedInArgument:!0},handler(e){var{parser:t,funcName:r}=e,n=r;return n.length===1&&(n=X3[n]),{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:zr,mathmlBuilder:Sn});var Bo=(e,t)=>{var r,n,a=!1,i;e.type==="supsub"?(r=e.sup,n=e.sub,i=ce(e.base,"operatorname"),a=!0):i=ce(e,"operatorname");var u;if(i.body.length>0){for(var s=i.body.map(f=>{var g="text"in f?f.text:void 0;return typeof g=="string"?{type:"textord",mode:f.mode,text:g}:f}),l=He(s,t.withFont("mathrm"),!0),c=0;c{for(var r=dt(e.body,t.withFont("mathrm")),n=!0,a=0;ad.toText()).join("");r=[new Me(s)]}var l=new G("mi",r);l.setAttribute("mathvariant","normal");var c=new G("mo",[bt("⁡","text")]);return e.parentIsSupSub?new G("mrow",[l,c]):so([l,c])};Z({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=t[0];return{type:"operatorname",mode:r.mode,body:Re(a),alwaysHandleSupSub:n==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},htmlBuilder:Bo,mathmlBuilder:$3});E("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");br({type:"ordgroup",htmlBuilder(e,t){return e.semisimple?Gt(He(e.body,t,!1)):z(["mord"],He(e.body,t,!0),t)},mathmlBuilder(e,t){return tr(e.body,t,!0)}});Z({type:"overline",names:["\\overline"],props:{numArgs:1},handler(e,t){var{parser:r}=e,n=t[0];return{type:"overline",mode:r.mode,body:n}},htmlBuilder(e,t){var r=Te(e.body,t.havingCrampedStyle()),n=Or("overline-line",t),a=t.fontMetrics().defaultRuleThickness,i=Ee({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*a},{type:"elem",elem:n},{type:"kern",size:a}]});return z(["mord","overline"],[i],t)},mathmlBuilder(e,t){var r=new G("mo",[new Me("‾")]);r.setAttribute("stretchy","true");var n=new G("mover",[Ae(e.body,t),r]);return n.setAttribute("accent","true"),n}});Z({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,n=t[0];return{type:"phantom",mode:r.mode,body:Re(n)}},htmlBuilder:(e,t)=>{var r=He(e.body,t.withPhantom(),!1);return Gt(r)},mathmlBuilder:(e,t)=>{var r=dt(e.body,t);return new G("mphantom",r)}});E("\\hphantom","\\smash{\\phantom{#1}}");Z({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,n=t[0];return{type:"vphantom",mode:r.mode,body:n}},htmlBuilder:(e,t)=>{var r=z(["inner"],[Te(e.body,t.withPhantom())]),n=z(["fix"],[]);return z(["mord","rlap"],[r,n],t)},mathmlBuilder:(e,t)=>{var r=dt(Re(e.body),t),n=new G("mphantom",r),a=new G("mpadded",[n]);return a.setAttribute("width","0px"),a}});Z({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(e,t){var{parser:r}=e,n=ce(t[0],"size").value,a=t[1];return{type:"raisebox",mode:r.mode,dy:n,body:a}},htmlBuilder(e,t){var r=Te(e.body,t),n=Ie(e.dy,t);return Ee({positionType:"shift",positionData:-n,children:[{type:"elem",elem:r}]})},mathmlBuilder(e,t){var r=new G("mpadded",[Ae(e.body,t)]),n=e.dy.number+e.dy.unit;return r.setAttribute("voffset",n),r}});Z({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(e){var{parser:t}=e;return{type:"internal",mode:t.mode}}});Z({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(e,t,r){var{parser:n}=e,a=r[0],i=ce(t[0],"size"),u=ce(t[1],"size");return{type:"rule",mode:n.mode,shift:a&&ce(a,"size").value,width:i.value,height:u.value}},htmlBuilder(e,t){var r=z(["mord","rule"],[],t),n=Ie(e.width,t),a=Ie(e.height,t),i=e.shift?Ie(e.shift,t):0;return r.style.borderRightWidth=V(n),r.style.borderTopWidth=V(a),r.style.bottom=V(i),r.width=n,r.height=a+i,r.depth=-i,r.maxFontSize=a*1.125*t.sizeMultiplier,r},mathmlBuilder(e,t){var r=Ie(e.width,t),n=Ie(e.height,t),a=e.shift?Ie(e.shift,t):0,i=t.color&&t.getColor()||"black",u=new G("mspace");u.setAttribute("mathbackground",i),u.setAttribute("width",V(r)),u.setAttribute("height",V(n));var s=new G("mpadded",[u]);return a>=0?s.setAttribute("height",V(a)):(s.setAttribute("height",V(a)),s.setAttribute("depth",V(-a))),s.setAttribute("voffset",V(a)),s}});function Fo(e,t,r){for(var n=He(e,t,!1),a=t.sizeMultiplier/r.sizeMultiplier,i=0;i{var r=t.havingSize(e.size);return Fo(e.body,r,t)};Z({type:"sizing",names:is,props:{numArgs:0,allowedInText:!0},handler:(e,t)=>{var{breakOnTokenText:r,funcName:n,parser:a}=e,i=a.parseExpression(!1,r);return{type:"sizing",mode:a.mode,size:is.indexOf(n)+1,body:i}},htmlBuilder:Q3,mathmlBuilder:(e,t)=>{var r=t.havingSize(e.size),n=dt(e.body,r),a=new G("mstyle",n);return a.setAttribute("mathsize",V(r.sizeMultiplier)),a}});Z({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:(e,t,r)=>{var{parser:n}=e,a=!1,i=!1,u=r[0]&&ce(r[0],"ordgroup");if(u)for(var s,l=0;l{var r=z([],[Te(e.body,t)]);if(!e.smashHeight&&!e.smashDepth)return r;if(e.smashHeight&&(r.height=0),e.smashDepth&&(r.depth=0),e.smashHeight&&e.smashDepth)return z(["mord","smash"],[r],t);if(r.children)for(var n=0;n{var r=new G("mpadded",[Ae(e.body,t)]);return e.smashHeight&&r.setAttribute("height","0px"),e.smashDepth&&r.setAttribute("depth","0px"),r}});Z({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){var{parser:n}=e,a=r[0],i=t[0];return{type:"sqrt",mode:n.mode,body:i,index:a}},htmlBuilder(e,t){var r=Te(e.body,t.havingCrampedStyle());r.height===0&&(r.height=t.fontMetrics().xHeight),r=Lr(r,t);var n=t.fontMetrics(),a=n.defaultRuleThickness,i=a;t.style.idr.height+r.depth+u&&(u=(u+f-r.height-r.depth)/2);var g=l.height-r.height-u-c;r.style.paddingLeft=V(d);var p=Ee({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+g)},{type:"elem",elem:l},{type:"kern",size:c}]});if(e.index){var x=t.havingStyle(oe.SCRIPTSCRIPT),S=Te(e.index,x,t),D=.6*(p.height-p.depth),_=Ee({positionType:"shift",positionData:-D,children:[{type:"elem",elem:S}]}),N=z(["root"],[_]);return z(["mord","sqrt"],[N,p],t)}else return z(["mord","sqrt"],[p],t)},mathmlBuilder(e,t){var{body:r,index:n}=e;return n?new G("mroot",[Ae(r,t),Ae(n,t)]):new G("msqrt",[Ae(r,t)])}});var Va={display:oe.DISPLAY,text:oe.TEXT,script:oe.SCRIPT,scriptscript:oe.SCRIPTSCRIPT};function K3(e){return e in Va}Z({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e,t){var{breakOnTokenText:r,funcName:n,parser:a}=e,i=a.parseExpression(!0,r),u=n.slice(1,n.length-5);if(!K3(u))throw new Error("Unknown style: "+u);return{type:"styling",mode:a.mode,style:u,body:i}},htmlBuilder(e,t){var r=Va[e.style],n=t.havingStyle(r);return e.resetFont&&(n=n.withFont("")),Fo(e.body,n,t)},mathmlBuilder(e,t){var r=Va[e.style],n=t.havingStyle(r);e.resetFont&&(n=n.withFont(""));var a=dt(e.body,n),i=new G("mstyle",a),u={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},s=u[e.style];return i.setAttribute("scriptlevel",s[0]),i.setAttribute("displaystyle",s[1]),i}});var J3=function(t,r){var n=t.base;if(n)if(n.type==="op"){var a=n.limits&&(r.style.size===oe.DISPLAY.size||n.alwaysHandleSupSub);return a?zr:null}else if(n.type==="operatorname"){var i=n.alwaysHandleSupSub&&(r.style.size===oe.DISPLAY.size||n.limits);return i?Bo:null}else{if(n.type==="accent")return qt(n.base)?Ai:null;if(n.type==="horizBrace"){var u=!t.sub;return u===n.isOver?Ro:null}else return null}else return null};br({type:"supsub",htmlBuilder(e,t){var r=J3(e,t);if(r)return r(e,t);var{base:n,sup:a,sub:i}=e,u=Te(n,t),s,l,c=t.fontMetrics(),d=0,f=0,g=n&&qt(n);if(a){var p=t.havingStyle(t.style.sup());s=Te(a,p,t),g||(d=u.height-p.fontMetrics().supDrop*p.sizeMultiplier/t.sizeMultiplier)}if(i){var x=t.havingStyle(t.style.sub());l=Te(i,x,t),g||(f=u.depth+x.fontMetrics().subDrop*x.sizeMultiplier/t.sizeMultiplier)}var S;t.style===oe.DISPLAY?S=c.sup1:t.style.cramped?S=c.sup3:S=c.sup2;var D=t.sizeMultiplier,_=V(.5/c.ptPerEm/D),N=null;if(l){var M=e.base&&e.base.type==="op"&&e.base.name&&(e.base.name==="\\oiint"||e.base.name==="\\oiiint");if(u instanceof ct||M){var W;N=V(-((W=u.italic)!=null?W:0))}}var j;if(s&&l){d=Math.max(d,S,s.depth+.25*c.xHeight),f=Math.max(f,c.sub2);var L=c.defaultRuleThickness,ee=4*L;if(d-s.depth-(l.height-f)0&&(d+=re,f-=re)}var K=[{type:"elem",elem:l,shift:f,marginRight:_,marginLeft:N},{type:"elem",elem:s,shift:-d,marginRight:_}];j=Ee({positionType:"individualShift",children:K})}else if(l){f=Math.max(f,c.sub1,l.height-.8*c.xHeight);var R=[{type:"elem",elem:l,marginLeft:N,marginRight:_}];j=Ee({positionType:"shift",positionData:f,children:R})}else if(s)d=Math.max(d,S,s.depth+.25*c.xHeight),j=Ee({positionType:"shift",positionData:-d,children:[{type:"elem",elem:s,marginRight:_}]});else throw new Error("supsub must have either sup or sub.");var J=za(u,"right")||"mord";return z([J],[u,z(["msupsub"],[j])],t)},mathmlBuilder(e,t){var r=!1,n,a;e.base&&e.base.type==="horizBrace"&&(a=!!e.sup,a===e.base.isOver&&(r=!0,n=e.base.isOver)),e.base&&(e.base.type==="op"||e.base.type==="operatorname")&&(e.base.parentIsSupSub=!0);var i=[Ae(e.base,t)];e.sub&&i.push(Ae(e.sub,t)),e.sup&&i.push(Ae(e.sup,t));var u;if(r)u=n?"mover":"munder";else if(e.sub)if(e.sup){var c=e.base;c&&c.type==="op"&&c.limits&&t.style===oe.DISPLAY||c&&c.type==="operatorname"&&c.alwaysHandleSupSub&&(t.style===oe.DISPLAY||c.limits)?u="munderover":u="msubsup"}else{var l=e.base;l&&l.type==="op"&&l.limits&&(t.style===oe.DISPLAY||l.alwaysHandleSupSub)||l&&l.type==="operatorname"&&l.alwaysHandleSupSub&&(l.limits||t.style===oe.DISPLAY)?u="munder":u="msub"}else{var s=e.base;s&&s.type==="op"&&s.limits&&(t.style===oe.DISPLAY||s.alwaysHandleSupSub)||s&&s.type==="operatorname"&&s.alwaysHandleSupSub&&(s.limits||t.style===oe.DISPLAY)?u="mover":u="msup"}return new G(u,i)}});br({type:"atom",htmlBuilder(e,t){return Ti(e.text,e.mode,t,["m"+e.family])},mathmlBuilder(e,t){var r=new G("mo",[bt(e.text,e.mode)]);if(e.family==="bin"){var n=vi(e,t);n==="bold-italic"&&r.setAttribute("mathvariant",n)}else e.family==="punct"?r.setAttribute("separator","true"):(e.family==="open"||e.family==="close")&&r.setAttribute("stretchy","false");return r}});var Ho={mi:"italic",mn:"normal",mtext:"normal"};br({type:"mathord",htmlBuilder(e,t){return x0(e,t,"mathord")},mathmlBuilder(e,t){var r=new G("mi",[bt(e.text,e.mode,t)]),n=vi(e,t)||"italic";return n!==Ho[r.type]&&r.setAttribute("mathvariant",n),r}});br({type:"textord",htmlBuilder(e,t){return x0(e,t,"textord")},mathmlBuilder(e,t){var r=bt(e.text,e.mode,t),n=vi(e,t)||"normal",a;return e.mode==="text"?a=new G("mtext",[r]):/[0-9]/.test(e.text)?a=new G("mn",[r]):e.text==="\\prime"?a=new G("mo",[r]):a=new G("mi",[r]),n!==Ho[a.type]&&a.setAttribute("mathvariant",n),a}});var fa={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},ma={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};br({type:"spacing",htmlBuilder(e,t){if(ma.hasOwnProperty(e.text)){var r=ma[e.text].className||"";if(e.mode==="text"){var n=x0(e,t,"textord");return n.classes.push(r),n}else return z(["mspace",r],[Ti(e.text,e.mode,t)],t)}else{if(fa.hasOwnProperty(e.text))return z(["mspace",fa[e.text]],[],t);throw new Y('Unknown type of space "'+e.text+'"')}},mathmlBuilder(e,t){var r;if(ma.hasOwnProperty(e.text))r=new G("mtext",[new Me(" ")]);else{if(fa.hasOwnProperty(e.text))return new G("mspace");throw new Y('Unknown type of space "'+e.text+'"')}return r}});var us=()=>{var e=new G("mtd",[]);return e.setAttribute("width","50%"),e};br({type:"tag",mathmlBuilder(e,t){var r=new G("mtable",[new G("mtr",[us(),new G("mtd",[tr(e.body,t)]),us(),new G("mtd",[tr(e.tag,t)])])]);return r.setAttribute("width","100%"),r}});var ss={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},ls={"\\textbf":"textbf","\\textmd":"textmd"},Z3={"\\textit":"textit","\\textup":"textup"},os=(e,t)=>{var r=e.font;if(r){if(ss[r])return t.withTextFontFamily(ss[r]);if(ls[r])return t.withTextFontWeight(ls[r]);if(r==="\\emph")return t.fontShape==="textit"?t.withTextFontShape("textup"):t.withTextFontShape("textit")}else return t;return t.withTextFontShape(Z3[r])};Z({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(e,t){var{parser:r,funcName:n}=e,a=t[0];return{type:"text",mode:r.mode,body:Re(a),font:n}},htmlBuilder(e,t){var r=os(e,t),n=He(e.body,r,!0);return z(["mord","text"],n,r)},mathmlBuilder(e,t){var r=os(e,t);return tr(e.body,r)}});Z({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"underline",mode:r.mode,body:t[0]}},htmlBuilder(e,t){var r=Te(e.body,t),n=Or("underline-line",t),a=t.fontMetrics().defaultRuleThickness,i=Ee({positionType:"top",positionData:r.height,children:[{type:"kern",size:a},{type:"elem",elem:n},{type:"kern",size:3*a},{type:"elem",elem:r}]});return z(["mord","underline"],[i],t)},mathmlBuilder(e,t){var r=new G("mo",[new Me("‾")]);r.setAttribute("stretchy","true");var n=new G("munder",[Ae(e.body,t),r]);return n.setAttribute("accentunder","true"),n}});Z({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(e,t){var{parser:r}=e;return{type:"vcenter",mode:r.mode,body:t[0]}},htmlBuilder(e,t){var r=Te(e.body,t),n=t.fontMetrics().axisHeight,a=.5*(r.height-n-(r.depth+n));return Ee({positionType:"shift",positionData:a,children:[{type:"elem",elem:r}]})},mathmlBuilder(e,t){var r=new G("mpadded",[Ae(e.body,t)],["vcenter"]);return new G("mrow",[r])}});Z({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(e,t,r){throw new Y("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(e,t){for(var r=cs(e),n=[],a=t.havingStyle(t.style.text()),i=0;ie.body.replace(/ /g,e.star?"␣":" "),Qt=io,zo=`[ \r - ]`,e6="\\\\[a-zA-Z@]+",t6="\\\\[^\uD800-\uDFFF]",r6="("+e6+")"+zo+"*",n6=`\\\\( -|[ \r ]+ -?)[ \r ]*`,ja="[̀-ͯ]",a6=new RegExp(ja+"+$"),i6="("+zo+"+)|"+(n6+"|")+"([!-\\[\\]-‧‪-퟿豈-￿]"+(ja+"*")+"|[\uD800-\uDBFF][\uDC00-\uDFFF]"+(ja+"*")+"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5"+("|"+r6)+("|"+t6+")");class hs{constructor(t,r){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=t,this.settings=r,this.tokenRegex=new RegExp(i6,"g"),this.catcodes={"%":14,"~":13}}setCatcode(t,r){this.catcodes[t]=r}lex(){var t=this.input,r=this.tokenRegex.lastIndex;if(r===t.length)return new ot("EOF",new rt(this,r,r));var n=this.tokenRegex.exec(t);if(n===null||n.index!==r)throw new Y("Unexpected character: '"+t[r]+"'",new ot(t[r],new rt(this,r,r+1)));var a=n[6]||n[3]||(n[2]?"\\ ":" ");if(this.catcodes[a]===14){var i=t.indexOf(` -`,this.tokenRegex.lastIndex);return i===-1?(this.tokenRegex.lastIndex=t.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=i+1,this.lex()}return new ot(a,new rt(this,r,this.tokenRegex.lastIndex))}}class u6{constructor(t,r){t===void 0&&(t={}),r===void 0&&(r={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=r,this.builtins=t,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(this.undefStack.length===0)throw new Y("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var t=this.undefStack.pop();for(var r in t)t.hasOwnProperty(r)&&(t[r]==null?delete this.current[r]:this.current[r]=t[r])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(t){return this.current.hasOwnProperty(t)||this.builtins.hasOwnProperty(t)}get(t){return this.current.hasOwnProperty(t)?this.current[t]:this.builtins[t]}set(t,r,n){if(n===void 0&&(n=!1),n){for(var a=0;a0&&(this.undefStack[this.undefStack.length-1][t]=r)}else{var i=this.undefStack[this.undefStack.length-1];i&&!i.hasOwnProperty(t)&&(i[t]=this.current[t])}r==null?delete this.current[t]:this.current[t]=r}}var s6=Io;E("\\noexpand",function(e){var t=e.popToken();return e.isExpandable(t.text)&&(t.noexpand=!0,t.treatAsRelax=!0),{tokens:[t],numArgs:0}});E("\\expandafter",function(e){var t=e.popToken();return e.expandOnce(!0),{tokens:[t],numArgs:0}});E("\\@firstoftwo",function(e){var t=e.consumeArgs(2);return{tokens:t[0],numArgs:0}});E("\\@secondoftwo",function(e){var t=e.consumeArgs(2);return{tokens:t[1],numArgs:0}});E("\\@ifnextchar",function(e){var t=e.consumeArgs(3);e.consumeSpaces();var r=e.future();return t[0].length===1&&t[0][0].text===r.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}});E("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");E("\\TextOrMath",function(e){var t=e.consumeArgs(2);return e.mode==="text"?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}});var ds={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};E("\\char",function(e){var t=e.popToken(),r,n=0;if(t.text==="'")r=8,t=e.popToken();else if(t.text==='"')r=16,t=e.popToken();else if(t.text==="`")if(t=e.popToken(),t.text[0]==="\\")n=t.text.charCodeAt(1);else{if(t.text==="EOF")throw new Y("\\char` missing argument");n=t.text.charCodeAt(0)}else r=10;if(r){if(n=ds[t.text],n==null||n>=r)throw new Y("Invalid base-"+r+" digit "+t.text);for(var a;(a=ds[e.future().text])!=null&&a{var a=e.consumeArg().tokens;if(a.length!==1)throw new Y("\\newcommand's first argument must be a macro name");var i=a[0].text,u=e.isDefined(i);if(u&&!t)throw new Y("\\newcommand{"+i+"} attempting to redefine "+(i+"; use \\renewcommand"));if(!u&&!r)throw new Y("\\renewcommand{"+i+"} when command "+i+" does not yet exist; use \\newcommand");var s=0;if(a=e.consumeArg().tokens,a.length===1&&a[0].text==="["){for(var l="",c=e.expandNextToken();c.text!=="]"&&c.text!=="EOF";)l+=c.text,c=e.expandNextToken();if(!l.match(/^\s*[0-9]+\s*$/))throw new Y("Invalid number of arguments: "+l);s=parseInt(l),a=e.consumeArg().tokens}return u&&n||e.macros.set(i,{tokens:a,numArgs:s}),""};E("\\newcommand",e=>Ci(e,!1,!0,!1));E("\\renewcommand",e=>Ci(e,!0,!1,!1));E("\\providecommand",e=>Ci(e,!0,!0,!0));E("\\message",e=>{var t=e.consumeArgs(1)[0];return console.log(t.reverse().map(r=>r.text).join("")),""});E("\\errmessage",e=>{var t=e.consumeArgs(1)[0];return console.error(t.reverse().map(r=>r.text).join("")),""});E("\\show",e=>{var t=e.popToken(),r=t.text;return console.log(t,e.macros.get(r),Qt[r],we.math[r],we.text[r]),""});E("\\bgroup","{");E("\\egroup","}");E("~","\\nobreakspace");E("\\lq","`");E("\\rq","'");E("\\aa","\\r a");E("\\AA","\\r A");E("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`©}");E("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");E("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}");E("ℬ","\\mathscr{B}");E("ℰ","\\mathscr{E}");E("ℱ","\\mathscr{F}");E("ℋ","\\mathscr{H}");E("ℐ","\\mathscr{I}");E("ℒ","\\mathscr{L}");E("ℳ","\\mathscr{M}");E("ℛ","\\mathscr{R}");E("ℭ","\\mathfrak{C}");E("ℌ","\\mathfrak{H}");E("ℨ","\\mathfrak{Z}");E("\\Bbbk","\\Bbb{k}");E("\\llap","\\mathllap{\\textrm{#1}}");E("\\rlap","\\mathrlap{\\textrm{#1}}");E("\\clap","\\mathclap{\\textrm{#1}}");E("\\mathstrut","\\vphantom{(}");E("\\underbar","\\underline{\\text{#1}}");E("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}\\nobreak}{\\char"338}');E("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`≠}}");E("\\ne","\\neq");E("≠","\\neq");E("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`∉}}");E("∉","\\notin");E("≘","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`≘}}");E("≙","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`≘}}");E("≚","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`≚}}");E("≛","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`≛}}");E("≝","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`≝}}");E("≞","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`≞}}");E("≟","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`≟}}");E("⟂","\\perp");E("‼","\\mathclose{!\\mkern-0.8mu!}");E("∌","\\notni");E("⌜","\\ulcorner");E("⌝","\\urcorner");E("⌞","\\llcorner");E("⌟","\\lrcorner");E("©","\\copyright");E("®","\\textregistered");E("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');E("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');E("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');E("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');E("\\vdots","{\\varvdots\\rule{0pt}{15pt}}");E("⋮","\\vdots");E("\\varGamma","\\mathit{\\Gamma}");E("\\varDelta","\\mathit{\\Delta}");E("\\varTheta","\\mathit{\\Theta}");E("\\varLambda","\\mathit{\\Lambda}");E("\\varXi","\\mathit{\\Xi}");E("\\varPi","\\mathit{\\Pi}");E("\\varSigma","\\mathit{\\Sigma}");E("\\varUpsilon","\\mathit{\\Upsilon}");E("\\varPhi","\\mathit{\\Phi}");E("\\varPsi","\\mathit{\\Psi}");E("\\varOmega","\\mathit{\\Omega}");E("\\substack","\\begin{subarray}{c}#1\\end{subarray}");E("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");E("\\boxed","\\fbox{$\\displaystyle{#1}$}");E("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");E("\\implies","\\DOTSB\\;\\Longrightarrow\\;");E("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");E("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}");E("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");var fs={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"},l6=new Set(["bin","rel"]);E("\\dots",function(e){var t="\\dotso",r=e.expandAfterFuture().text;return r in fs?t=fs[r]:(r.slice(0,4)==="\\not"||r in we.math&&l6.has(we.math[r].group))&&(t="\\dotsb"),t});var _i={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};E("\\dotso",function(e){var t=e.future().text;return t in _i?"\\ldots\\,":"\\ldots"});E("\\dotsc",function(e){var t=e.future().text;return t in _i&&t!==","?"\\ldots\\,":"\\ldots"});E("\\cdots",function(e){var t=e.future().text;return t in _i?"\\@cdots\\,":"\\@cdots"});E("\\dotsb","\\cdots");E("\\dotsm","\\cdots");E("\\dotsi","\\!\\cdots");E("\\dotsx","\\ldots\\,");E("\\DOTSI","\\relax");E("\\DOTSB","\\relax");E("\\DOTSX","\\relax");E("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");E("\\,","\\tmspace+{3mu}{.1667em}");E("\\thinspace","\\,");E("\\>","\\mskip{4mu}");E("\\:","\\tmspace+{4mu}{.2222em}");E("\\medspace","\\:");E("\\;","\\tmspace+{5mu}{.2777em}");E("\\thickspace","\\;");E("\\!","\\tmspace-{3mu}{.1667em}");E("\\negthinspace","\\!");E("\\negmedspace","\\tmspace-{4mu}{.2222em}");E("\\negthickspace","\\tmspace-{5mu}{.277em}");E("\\enspace","\\kern.5em ");E("\\enskip","\\hskip.5em\\relax");E("\\quad","\\hskip1em\\relax");E("\\qquad","\\hskip2em\\relax");E("\\tag","\\@ifstar\\tag@literal\\tag@paren");E("\\tag@paren","\\tag@literal{({#1})}");E("\\tag@literal",e=>{if(e.macros.get("\\df@tag"))throw new Y("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});E("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");E("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");E("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");E("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");E("\\newline","\\\\\\relax");E("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var Uo=V(wt["Main-Regular"][84][1]-.7*wt["Main-Regular"][65][1]);E("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+Uo+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");E("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+Uo+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");E("\\hspace","\\@ifstar\\@hspacer\\@hspace");E("\\@hspace","\\hskip #1\\relax");E("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");E("\\ordinarycolon",":");E("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");E("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');E("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');E("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');E("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');E("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');E("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');E("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');E("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');E("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');E("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');E("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');E("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');E("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');E("∷","\\dblcolon");E("∹","\\eqcolon");E("≔","\\coloneqq");E("≕","\\eqqcolon");E("⩴","\\Coloneqq");E("\\ratio","\\vcentcolon");E("\\coloncolon","\\dblcolon");E("\\colonequals","\\coloneqq");E("\\coloncolonequals","\\Coloneqq");E("\\equalscolon","\\eqqcolon");E("\\equalscoloncolon","\\Eqqcolon");E("\\colonminus","\\coloneq");E("\\coloncolonminus","\\Coloneq");E("\\minuscolon","\\eqcolon");E("\\minuscoloncolon","\\Eqcolon");E("\\coloncolonapprox","\\Colonapprox");E("\\coloncolonsim","\\Colonsim");E("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");E("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");E("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");E("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");E("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`∌}}");E("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");E("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");E("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");E("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");E("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");E("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");E("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");E("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");E("\\gvertneqq","\\html@mathml{\\@gvertneqq}{≩}");E("\\lvertneqq","\\html@mathml{\\@lvertneqq}{≨}");E("\\ngeqq","\\html@mathml{\\@ngeqq}{≱}");E("\\ngeqslant","\\html@mathml{\\@ngeqslant}{≱}");E("\\nleqq","\\html@mathml{\\@nleqq}{≰}");E("\\nleqslant","\\html@mathml{\\@nleqslant}{≰}");E("\\nshortmid","\\html@mathml{\\@nshortmid}{∤}");E("\\nshortparallel","\\html@mathml{\\@nshortparallel}{∦}");E("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{⊈}");E("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{⊉}");E("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{⊊}");E("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{⫋}");E("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{⊋}");E("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{⫌}");E("\\imath","\\html@mathml{\\@imath}{ı}");E("\\jmath","\\html@mathml{\\@jmath}{ȷ}");E("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`⟦}}");E("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`⟧}}");E("⟦","\\llbracket");E("⟧","\\rrbracket");E("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`⦃}}");E("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`⦄}}");E("⦃","\\lBrace");E("⦄","\\rBrace");E("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`⦵}}");E("⦵","\\minuso");E("\\darr","\\downarrow");E("\\dArr","\\Downarrow");E("\\Darr","\\Downarrow");E("\\lang","\\langle");E("\\rang","\\rangle");E("\\uarr","\\uparrow");E("\\uArr","\\Uparrow");E("\\Uarr","\\Uparrow");E("\\N","\\mathbb{N}");E("\\R","\\mathbb{R}");E("\\Z","\\mathbb{Z}");E("\\alef","\\aleph");E("\\alefsym","\\aleph");E("\\Alpha","\\mathrm{A}");E("\\Beta","\\mathrm{B}");E("\\bull","\\bullet");E("\\Chi","\\mathrm{X}");E("\\clubs","\\clubsuit");E("\\cnums","\\mathbb{C}");E("\\Complex","\\mathbb{C}");E("\\Dagger","\\ddagger");E("\\diamonds","\\diamondsuit");E("\\empty","\\emptyset");E("\\Epsilon","\\mathrm{E}");E("\\Eta","\\mathrm{H}");E("\\exist","\\exists");E("\\harr","\\leftrightarrow");E("\\hArr","\\Leftrightarrow");E("\\Harr","\\Leftrightarrow");E("\\hearts","\\heartsuit");E("\\image","\\Im");E("\\infin","\\infty");E("\\Iota","\\mathrm{I}");E("\\isin","\\in");E("\\Kappa","\\mathrm{K}");E("\\larr","\\leftarrow");E("\\lArr","\\Leftarrow");E("\\Larr","\\Leftarrow");E("\\lrarr","\\leftrightarrow");E("\\lrArr","\\Leftrightarrow");E("\\Lrarr","\\Leftrightarrow");E("\\Mu","\\mathrm{M}");E("\\natnums","\\mathbb{N}");E("\\Nu","\\mathrm{N}");E("\\Omicron","\\mathrm{O}");E("\\plusmn","\\pm");E("\\rarr","\\rightarrow");E("\\rArr","\\Rightarrow");E("\\Rarr","\\Rightarrow");E("\\real","\\Re");E("\\reals","\\mathbb{R}");E("\\Reals","\\mathbb{R}");E("\\Rho","\\mathrm{P}");E("\\sdot","\\cdot");E("\\sect","\\S");E("\\spades","\\spadesuit");E("\\sub","\\subset");E("\\sube","\\subseteq");E("\\supe","\\supseteq");E("\\Tau","\\mathrm{T}");E("\\thetasym","\\vartheta");E("\\weierp","\\wp");E("\\Zeta","\\mathrm{Z}");E("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");E("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");E("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");E("\\bra","\\mathinner{\\langle{#1}|}");E("\\ket","\\mathinner{|{#1}\\rangle}");E("\\braket","\\mathinner{\\langle{#1}\\rangle}");E("\\Bra","\\left\\langle#1\\right|");E("\\Ket","\\left|#1\\right\\rangle");var qo=e=>t=>{var r=t.consumeArg().tokens,n=t.consumeArg().tokens,a=t.consumeArg().tokens,i=t.consumeArg().tokens,u=t.macros.get("|"),s=t.macros.get("\\|");t.macros.beginGroup();var l=f=>g=>{e&&(g.macros.set("|",u),a.length&&g.macros.set("\\|",s));var p=f;if(!f&&a.length){var x=g.future();x.text==="|"&&(g.popToken(),p=!0)}return{tokens:p?a:n,numArgs:0}};t.macros.set("|",l(!1)),a.length&&t.macros.set("\\|",l(!0));var c=t.consumeArg().tokens,d=t.expandTokens([...i,...c,...r]);return t.macros.endGroup(),{tokens:d.reverse(),numArgs:0}};E("\\bra@ket",qo(!1));E("\\bra@set",qo(!0));E("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");E("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");E("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");E("\\angln","{\\angl n}");E("\\blue","\\textcolor{##6495ed}{#1}");E("\\orange","\\textcolor{##ffa500}{#1}");E("\\pink","\\textcolor{##ff00af}{#1}");E("\\red","\\textcolor{##df0030}{#1}");E("\\green","\\textcolor{##28ae7b}{#1}");E("\\gray","\\textcolor{gray}{#1}");E("\\purple","\\textcolor{##9d38bd}{#1}");E("\\blueA","\\textcolor{##ccfaff}{#1}");E("\\blueB","\\textcolor{##80f6ff}{#1}");E("\\blueC","\\textcolor{##63d9ea}{#1}");E("\\blueD","\\textcolor{##11accd}{#1}");E("\\blueE","\\textcolor{##0c7f99}{#1}");E("\\tealA","\\textcolor{##94fff5}{#1}");E("\\tealB","\\textcolor{##26edd5}{#1}");E("\\tealC","\\textcolor{##01d1c1}{#1}");E("\\tealD","\\textcolor{##01a995}{#1}");E("\\tealE","\\textcolor{##208170}{#1}");E("\\greenA","\\textcolor{##b6ffb0}{#1}");E("\\greenB","\\textcolor{##8af281}{#1}");E("\\greenC","\\textcolor{##74cf70}{#1}");E("\\greenD","\\textcolor{##1fab54}{#1}");E("\\greenE","\\textcolor{##0d923f}{#1}");E("\\goldA","\\textcolor{##ffd0a9}{#1}");E("\\goldB","\\textcolor{##ffbb71}{#1}");E("\\goldC","\\textcolor{##ff9c39}{#1}");E("\\goldD","\\textcolor{##e07d10}{#1}");E("\\goldE","\\textcolor{##a75a05}{#1}");E("\\redA","\\textcolor{##fca9a9}{#1}");E("\\redB","\\textcolor{##ff8482}{#1}");E("\\redC","\\textcolor{##f9685d}{#1}");E("\\redD","\\textcolor{##e84d39}{#1}");E("\\redE","\\textcolor{##bc2612}{#1}");E("\\maroonA","\\textcolor{##ffbde0}{#1}");E("\\maroonB","\\textcolor{##ff92c6}{#1}");E("\\maroonC","\\textcolor{##ed5fa6}{#1}");E("\\maroonD","\\textcolor{##ca337c}{#1}");E("\\maroonE","\\textcolor{##9e034e}{#1}");E("\\purpleA","\\textcolor{##ddd7ff}{#1}");E("\\purpleB","\\textcolor{##c6b9fc}{#1}");E("\\purpleC","\\textcolor{##aa87ff}{#1}");E("\\purpleD","\\textcolor{##7854ab}{#1}");E("\\purpleE","\\textcolor{##543b78}{#1}");E("\\mintA","\\textcolor{##f5f9e8}{#1}");E("\\mintB","\\textcolor{##edf2df}{#1}");E("\\mintC","\\textcolor{##e0e5cc}{#1}");E("\\grayA","\\textcolor{##f6f7f7}{#1}");E("\\grayB","\\textcolor{##f0f1f2}{#1}");E("\\grayC","\\textcolor{##e3e5e6}{#1}");E("\\grayD","\\textcolor{##d6d8da}{#1}");E("\\grayE","\\textcolor{##babec2}{#1}");E("\\grayF","\\textcolor{##888d93}{#1}");E("\\grayG","\\textcolor{##626569}{#1}");E("\\grayH","\\textcolor{##3b3e40}{#1}");E("\\grayI","\\textcolor{##21242c}{#1}");E("\\kaBlue","\\textcolor{##314453}{#1}");E("\\kaGreen","\\textcolor{##71B307}{#1}");var Yo={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0};class o6{constructor(t,r,n){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=r,this.expansionCount=0,this.feed(t),this.macros=new u6(s6,r.macros),this.mode=n,this.stack=[]}feed(t){this.lexer=new hs(t,this.settings)}switchMode(t){this.mode=t}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return this.stack.length===0&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(t){this.stack.push(t)}pushTokens(t){this.stack.push(...t)}scanArgument(t){var r,n,a;if(t){if(this.consumeSpaces(),this.future().text!=="[")return null;r=this.popToken(),{tokens:a,end:n}=this.consumeArg(["]"])}else({tokens:a,start:r,end:n}=this.consumeArg());return this.pushToken(new ot("EOF",n.loc)),this.pushTokens(a),new ot("",rt.range(r,n))}consumeSpaces(){for(;;){var t=this.future();if(t.text===" ")this.stack.pop();else break}}consumeArg(t){var r=[],n=t&&t.length>0;n||this.consumeSpaces();var a=this.future(),i,u=0,s=0;do{if(i=this.popToken(),r.push(i),i.text==="{")++u;else if(i.text==="}"){if(--u,u===-1)throw new Y("Extra }",i)}else if(i.text==="EOF")throw new Y("Unexpected end of input in a macro argument, expected '"+(t&&n?t[s]:"}")+"'",i);if(t&&n)if((u===0||u===1&&t[s]==="{")&&i.text===t[s]){if(++s,s===t.length){r.splice(-s,s);break}}else s=0}while(u!==0||n);return a.text==="{"&&r[r.length-1].text==="}"&&(r.pop(),r.shift()),r.reverse(),{tokens:r,start:a,end:i}}consumeArgs(t,r){if(r){if(r.length!==t+1)throw new Y("The length of delimiters doesn't match the number of args!");for(var n=r[0],a=0;athis.settings.maxExpand)throw new Y("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(t){var r=this.popToken(),n=r.text,a=r.noexpand?null:this._getExpansion(n);if(a==null||t&&a.unexpandable){if(t&&a==null&&n[0]==="\\"&&!this.isDefined(n))throw new Y("Undefined control sequence: "+n);return this.pushToken(r),!1}this.countExpansion(1);var i=a.tokens,u=this.consumeArgs(a.numArgs,a.delimiters);if(a.numArgs){i=i.slice();for(var s=i.length-1;s>=0;--s){var l=i[s];if(l.text==="#"){if(s===0)throw new Y("Incomplete placeholder at end of macro body",l);if(l=i[--s],l.text==="#")i.splice(s+1,1);else if(/^[1-9]$/.test(l.text))i.splice(s,2,...u[+l.text-1]);else throw new Y("Not a valid argument number",l)}}}return this.pushTokens(i),i.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(this.expandOnce()===!1){var t=this.stack.pop();return t.treatAsRelax&&(t.text="\\relax"),t}}expandMacro(t){return this.macros.has(t)?this.expandTokens([new ot(t)]):void 0}expandTokens(t){var r=[],n=this.stack.length;for(this.pushTokens(t);this.stack.length>n;)if(this.expandOnce(!0)===!1){var a=this.stack.pop();a.treatAsRelax&&(a.noexpand=!1,a.treatAsRelax=!1),r.push(a)}return this.countExpansion(r.length),r}expandMacroAsText(t){var r=this.expandMacro(t);return r&&r.map(n=>n.text).join("")}_getExpansion(t){var r=this.macros.get(t);if(r==null)return r;if(t.length===1){var n=this.lexer.catcodes[t];if(n!=null&&n!==13)return}var a=typeof r=="function"?r(this):r;if(typeof a=="string"){var i=0;if(a.includes("#"))for(var u=a.replace(/##/g,"");u.includes("#"+(i+1));)++i;for(var s=new hs(a,this.settings),l=[],c=s.lex();c.text!=="EOF";)l.push(c),c=s.lex();l.reverse();var d={tokens:l,numArgs:i};return d}return a}isDefined(t){return this.macros.has(t)||Qt.hasOwnProperty(t)||we.math.hasOwnProperty(t)||we.text.hasOwnProperty(t)||Yo.hasOwnProperty(t)}isExpandable(t){var r=this.macros.get(t);return r!=null?typeof r=="string"||typeof r=="function"||!r.unexpandable:Qt.hasOwnProperty(t)&&!Qt[t].primitive}}var ms=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,jn=Object.freeze({"₊":"+","₋":"-","₌":"=","₍":"(","₎":")","₀":"0","₁":"1","₂":"2","₃":"3","₄":"4","₅":"5","₆":"6","₇":"7","₈":"8","₉":"9","ₐ":"a","ₑ":"e","ₕ":"h","ᵢ":"i","ⱼ":"j","ₖ":"k","ₗ":"l","ₘ":"m","ₙ":"n","ₒ":"o","ₚ":"p","ᵣ":"r","ₛ":"s","ₜ":"t","ᵤ":"u","ᵥ":"v","ₓ":"x","ᵦ":"β","ᵧ":"γ","ᵨ":"ρ","ᵩ":"ϕ","ᵪ":"χ","⁺":"+","⁻":"-","⁼":"=","⁽":"(","⁾":")","⁰":"0","¹":"1","²":"2","³":"3","⁴":"4","⁵":"5","⁶":"6","⁷":"7","⁸":"8","⁹":"9","ᴬ":"A","ᴮ":"B","ᴰ":"D","ᴱ":"E","ᴳ":"G","ᴴ":"H","ᴵ":"I","ᴶ":"J","ᴷ":"K","ᴸ":"L","ᴹ":"M","ᴺ":"N","ᴼ":"O","ᴾ":"P","ᴿ":"R","ᵀ":"T","ᵁ":"U","ⱽ":"V","ᵂ":"W","ᵃ":"a","ᵇ":"b","ᶜ":"c","ᵈ":"d","ᵉ":"e","ᶠ":"f","ᵍ":"g",ʰ:"h","ⁱ":"i",ʲ:"j","ᵏ":"k",ˡ:"l","ᵐ":"m",ⁿ:"n","ᵒ":"o","ᵖ":"p",ʳ:"r",ˢ:"s","ᵗ":"t","ᵘ":"u","ᵛ":"v",ʷ:"w",ˣ:"x",ʸ:"y","ᶻ":"z","ᵝ":"β","ᵞ":"γ","ᵟ":"δ","ᵠ":"ϕ","ᵡ":"χ","ᶿ":"θ"}),pa={"́":{text:"\\'",math:"\\acute"},"̀":{text:"\\`",math:"\\grave"},"̈":{text:'\\"',math:"\\ddot"},"̃":{text:"\\~",math:"\\tilde"},"̄":{text:"\\=",math:"\\bar"},"̆":{text:"\\u",math:"\\breve"},"̌":{text:"\\v",math:"\\check"},"̂":{text:"\\^",math:"\\hat"},"̇":{text:"\\.",math:"\\dot"},"̊":{text:"\\r",math:"\\mathring"},"̋":{text:"\\H"},"̧":{text:"\\c"}},ps={á:"á",à:"à",ä:"ä",ǟ:"ǟ",ã:"ã",ā:"ā",ă:"ă",ắ:"ắ",ằ:"ằ",ẵ:"ẵ",ǎ:"ǎ",â:"â",ấ:"ấ",ầ:"ầ",ẫ:"ẫ",ȧ:"ȧ",ǡ:"ǡ",å:"å",ǻ:"ǻ",ḃ:"ḃ",ć:"ć",ḉ:"ḉ",č:"č",ĉ:"ĉ",ċ:"ċ",ç:"ç",ď:"ď",ḋ:"ḋ",ḑ:"ḑ",é:"é",è:"è",ë:"ë",ẽ:"ẽ",ē:"ē",ḗ:"ḗ",ḕ:"ḕ",ĕ:"ĕ",ḝ:"ḝ",ě:"ě",ê:"ê",ế:"ế",ề:"ề",ễ:"ễ",ė:"ė",ȩ:"ȩ",ḟ:"ḟ",ǵ:"ǵ",ḡ:"ḡ",ğ:"ğ",ǧ:"ǧ",ĝ:"ĝ",ġ:"ġ",ģ:"ģ",ḧ:"ḧ",ȟ:"ȟ",ĥ:"ĥ",ḣ:"ḣ",ḩ:"ḩ",í:"í",ì:"ì",ï:"ï",ḯ:"ḯ",ĩ:"ĩ",ī:"ī",ĭ:"ĭ",ǐ:"ǐ",î:"î",ǰ:"ǰ",ĵ:"ĵ",ḱ:"ḱ",ǩ:"ǩ",ķ:"ķ",ĺ:"ĺ",ľ:"ľ",ļ:"ļ",ḿ:"ḿ",ṁ:"ṁ",ń:"ń",ǹ:"ǹ",ñ:"ñ",ň:"ň",ṅ:"ṅ",ņ:"ņ",ó:"ó",ò:"ò",ö:"ö",ȫ:"ȫ",õ:"õ",ṍ:"ṍ",ṏ:"ṏ",ȭ:"ȭ",ō:"ō",ṓ:"ṓ",ṑ:"ṑ",ŏ:"ŏ",ǒ:"ǒ",ô:"ô",ố:"ố",ồ:"ồ",ỗ:"ỗ",ȯ:"ȯ",ȱ:"ȱ",ő:"ő",ṕ:"ṕ",ṗ:"ṗ",ŕ:"ŕ",ř:"ř",ṙ:"ṙ",ŗ:"ŗ",ś:"ś",ṥ:"ṥ",š:"š",ṧ:"ṧ",ŝ:"ŝ",ṡ:"ṡ",ş:"ş",ẗ:"ẗ",ť:"ť",ṫ:"ṫ",ţ:"ţ",ú:"ú",ù:"ù",ü:"ü",ǘ:"ǘ",ǜ:"ǜ",ǖ:"ǖ",ǚ:"ǚ",ũ:"ũ",ṹ:"ṹ",ū:"ū",ṻ:"ṻ",ŭ:"ŭ",ǔ:"ǔ",û:"û",ů:"ů",ű:"ű",ṽ:"ṽ",ẃ:"ẃ",ẁ:"ẁ",ẅ:"ẅ",ŵ:"ŵ",ẇ:"ẇ",ẘ:"ẘ",ẍ:"ẍ",ẋ:"ẋ",ý:"ý",ỳ:"ỳ",ÿ:"ÿ",ỹ:"ỹ",ȳ:"ȳ",ŷ:"ŷ",ẏ:"ẏ",ẙ:"ẙ",ź:"ź",ž:"ž",ẑ:"ẑ",ż:"ż",Á:"Á",À:"À",Ä:"Ä",Ǟ:"Ǟ",Ã:"Ã",Ā:"Ā",Ă:"Ă",Ắ:"Ắ",Ằ:"Ằ",Ẵ:"Ẵ",Ǎ:"Ǎ",Â:"Â",Ấ:"Ấ",Ầ:"Ầ",Ẫ:"Ẫ",Ȧ:"Ȧ",Ǡ:"Ǡ",Å:"Å",Ǻ:"Ǻ",Ḃ:"Ḃ",Ć:"Ć",Ḉ:"Ḉ",Č:"Č",Ĉ:"Ĉ",Ċ:"Ċ",Ç:"Ç",Ď:"Ď",Ḋ:"Ḋ",Ḑ:"Ḑ",É:"É",È:"È",Ë:"Ë",Ẽ:"Ẽ",Ē:"Ē",Ḗ:"Ḗ",Ḕ:"Ḕ",Ĕ:"Ĕ",Ḝ:"Ḝ",Ě:"Ě",Ê:"Ê",Ế:"Ế",Ề:"Ề",Ễ:"Ễ",Ė:"Ė",Ȩ:"Ȩ",Ḟ:"Ḟ",Ǵ:"Ǵ",Ḡ:"Ḡ",Ğ:"Ğ",Ǧ:"Ǧ",Ĝ:"Ĝ",Ġ:"Ġ",Ģ:"Ģ",Ḧ:"Ḧ",Ȟ:"Ȟ",Ĥ:"Ĥ",Ḣ:"Ḣ",Ḩ:"Ḩ",Í:"Í",Ì:"Ì",Ï:"Ï",Ḯ:"Ḯ",Ĩ:"Ĩ",Ī:"Ī",Ĭ:"Ĭ",Ǐ:"Ǐ",Î:"Î",İ:"İ",Ĵ:"Ĵ",Ḱ:"Ḱ",Ǩ:"Ǩ",Ķ:"Ķ",Ĺ:"Ĺ",Ľ:"Ľ",Ļ:"Ļ",Ḿ:"Ḿ",Ṁ:"Ṁ",Ń:"Ń",Ǹ:"Ǹ",Ñ:"Ñ",Ň:"Ň",Ṅ:"Ṅ",Ņ:"Ņ",Ó:"Ó",Ò:"Ò",Ö:"Ö",Ȫ:"Ȫ",Õ:"Õ",Ṍ:"Ṍ",Ṏ:"Ṏ",Ȭ:"Ȭ",Ō:"Ō",Ṓ:"Ṓ",Ṑ:"Ṑ",Ŏ:"Ŏ",Ǒ:"Ǒ",Ô:"Ô",Ố:"Ố",Ồ:"Ồ",Ỗ:"Ỗ",Ȯ:"Ȯ",Ȱ:"Ȱ",Ő:"Ő",Ṕ:"Ṕ",Ṗ:"Ṗ",Ŕ:"Ŕ",Ř:"Ř",Ṙ:"Ṙ",Ŗ:"Ŗ",Ś:"Ś",Ṥ:"Ṥ",Š:"Š",Ṧ:"Ṧ",Ŝ:"Ŝ",Ṡ:"Ṡ",Ş:"Ş",Ť:"Ť",Ṫ:"Ṫ",Ţ:"Ţ",Ú:"Ú",Ù:"Ù",Ü:"Ü",Ǘ:"Ǘ",Ǜ:"Ǜ",Ǖ:"Ǖ",Ǚ:"Ǚ",Ũ:"Ũ",Ṹ:"Ṹ",Ū:"Ū",Ṻ:"Ṻ",Ŭ:"Ŭ",Ǔ:"Ǔ",Û:"Û",Ů:"Ů",Ű:"Ű",Ṽ:"Ṽ",Ẃ:"Ẃ",Ẁ:"Ẁ",Ẅ:"Ẅ",Ŵ:"Ŵ",Ẇ:"Ẇ",Ẍ:"Ẍ",Ẋ:"Ẋ",Ý:"Ý",Ỳ:"Ỳ",Ÿ:"Ÿ",Ỹ:"Ỹ",Ȳ:"Ȳ",Ŷ:"Ŷ",Ẏ:"Ẏ",Ź:"Ź",Ž:"Ž",Ẑ:"Ẑ",Ż:"Ż",ά:"ά",ὰ:"ὰ",ᾱ:"ᾱ",ᾰ:"ᾰ",έ:"έ",ὲ:"ὲ",ή:"ή",ὴ:"ὴ",ί:"ί",ὶ:"ὶ",ϊ:"ϊ",ΐ:"ΐ",ῒ:"ῒ",ῑ:"ῑ",ῐ:"ῐ",ό:"ό",ὸ:"ὸ",ύ:"ύ",ὺ:"ὺ",ϋ:"ϋ",ΰ:"ΰ",ῢ:"ῢ",ῡ:"ῡ",ῠ:"ῠ",ώ:"ώ",ὼ:"ὼ",Ύ:"Ύ",Ὺ:"Ὺ",Ϋ:"Ϋ",Ῡ:"Ῡ",Ῠ:"Ῠ",Ώ:"Ώ",Ὼ:"Ὼ"};let Go=class Vo{constructor(t,r){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new o6(t,r,this.mode),this.settings=r,this.leftrightDepth=0,this.nextToken=null}expect(t,r){if(r===void 0&&(r=!0),this.fetch().text!==t)throw new Y("Expected '"+t+"', got '"+this.fetch().text+"'",this.fetch());r&&this.consume()}consume(){this.nextToken=null}fetch(){return this.nextToken==null&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(t){this.mode=t,this.gullet.switchMode(t)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var t=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),t}finally{this.gullet.endGroups()}}subparse(t){var r=this.nextToken;this.consume(),this.gullet.pushToken(new ot("}")),this.gullet.pushTokens(t);var n=this.parseExpression(!1);return this.expect("}"),this.nextToken=r,n}parseExpression(t,r){for(var n=[];;){this.mode==="math"&&this.consumeSpaces();var a=this.fetch();if(Vo.endOfExpression.has(a.text)||r&&a.text===r||t&&Qt[a.text]&&Qt[a.text].infix)break;var i=this.parseAtom(r);if(i){if(i.type==="internal")continue}else break;n.push(i)}return this.mode==="text"&&this.formLigatures(n),this.handleInfixNodes(n)}handleInfixNodes(t){for(var r=-1,n,a=0;a=128)this.settings.strict&&($l(r.charCodeAt(0))?this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+r[0]+'" used in math mode',t):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+r[0]+'"'+(" ("+r.charCodeAt(0)+")"),t)),u={type:"textord",mode:"text",loc:rt.range(t),text:r};else return null;if(this.consume(),i)for(var d=0;dc&&(c=d):d&&(c!==void 0&&c>-1&&l.push(` -`.repeat(c)||" "),c=-1,l.push(d))}return l.join("")}function ec(e,t,r){return e.type==="element"?F6(e,t,r):e.type==="text"?r.whitespace==="normal"?tc(e,r):H6(e):[]}function F6(e,t,r){const n=rc(e,r),a=e.children||[];let i=-1,u=[];if(P6(e))return u;let s,l;for(Xa(e)||ks(e)&&xs(t,e,ks)?l=` -`:M6(e)?(s=2,l=2):Zo(e)&&(s=1,l=1);++i-1&&i<=t.length){let u=0;for(;;){let s=r[u];if(s===void 0){const l=Ss(t,r[u-1]);s=l===-1?t.length+1:l+1,r[u]=s}if(s>i)return{line:u+1,column:i-(u>0?r[u-1]:0)+1,offset:i};u++}}}function a(i){if(i&&typeof i.line=="number"&&typeof i.column=="number"&&!Number.isNaN(i.line)&&!Number.isNaN(i.column)){for(;r.length1?r[i.line-2]:0)+i.column-1;if(u=55296&&e<=57343}function cp(e){return e>=56320&&e<=57343}function hp(e,t){return(e-55296)*1024+9216+t}function sc(e){return e!==32&&e!==10&&e!==13&&e!==9&&e!==12&&e>=1&&e<=31||e>=127&&e<=159}function lc(e){return e>=64976&&e<=65007||op.has(e)}var P;(function(e){e.controlCharacterInInputStream="control-character-in-input-stream",e.noncharacterInInputStream="noncharacter-in-input-stream",e.surrogateInInputStream="surrogate-in-input-stream",e.nonVoidHtmlElementStartTagWithTrailingSolidus="non-void-html-element-start-tag-with-trailing-solidus",e.endTagWithAttributes="end-tag-with-attributes",e.endTagWithTrailingSolidus="end-tag-with-trailing-solidus",e.unexpectedSolidusInTag="unexpected-solidus-in-tag",e.unexpectedNullCharacter="unexpected-null-character",e.unexpectedQuestionMarkInsteadOfTagName="unexpected-question-mark-instead-of-tag-name",e.invalidFirstCharacterOfTagName="invalid-first-character-of-tag-name",e.unexpectedEqualsSignBeforeAttributeName="unexpected-equals-sign-before-attribute-name",e.missingEndTagName="missing-end-tag-name",e.unexpectedCharacterInAttributeName="unexpected-character-in-attribute-name",e.unknownNamedCharacterReference="unknown-named-character-reference",e.missingSemicolonAfterCharacterReference="missing-semicolon-after-character-reference",e.unexpectedCharacterAfterDoctypeSystemIdentifier="unexpected-character-after-doctype-system-identifier",e.unexpectedCharacterInUnquotedAttributeValue="unexpected-character-in-unquoted-attribute-value",e.eofBeforeTagName="eof-before-tag-name",e.eofInTag="eof-in-tag",e.missingAttributeValue="missing-attribute-value",e.missingWhitespaceBetweenAttributes="missing-whitespace-between-attributes",e.missingWhitespaceAfterDoctypePublicKeyword="missing-whitespace-after-doctype-public-keyword",e.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers="missing-whitespace-between-doctype-public-and-system-identifiers",e.missingWhitespaceAfterDoctypeSystemKeyword="missing-whitespace-after-doctype-system-keyword",e.missingQuoteBeforeDoctypePublicIdentifier="missing-quote-before-doctype-public-identifier",e.missingQuoteBeforeDoctypeSystemIdentifier="missing-quote-before-doctype-system-identifier",e.missingDoctypePublicIdentifier="missing-doctype-public-identifier",e.missingDoctypeSystemIdentifier="missing-doctype-system-identifier",e.abruptDoctypePublicIdentifier="abrupt-doctype-public-identifier",e.abruptDoctypeSystemIdentifier="abrupt-doctype-system-identifier",e.cdataInHtmlContent="cdata-in-html-content",e.incorrectlyOpenedComment="incorrectly-opened-comment",e.eofInScriptHtmlCommentLikeText="eof-in-script-html-comment-like-text",e.eofInDoctype="eof-in-doctype",e.nestedComment="nested-comment",e.abruptClosingOfEmptyComment="abrupt-closing-of-empty-comment",e.eofInComment="eof-in-comment",e.incorrectlyClosedComment="incorrectly-closed-comment",e.eofInCdata="eof-in-cdata",e.absenceOfDigitsInNumericCharacterReference="absence-of-digits-in-numeric-character-reference",e.nullCharacterReference="null-character-reference",e.surrogateCharacterReference="surrogate-character-reference",e.characterReferenceOutsideUnicodeRange="character-reference-outside-unicode-range",e.controlCharacterReference="control-character-reference",e.noncharacterCharacterReference="noncharacter-character-reference",e.missingWhitespaceBeforeDoctypeName="missing-whitespace-before-doctype-name",e.missingDoctypeName="missing-doctype-name",e.invalidCharacterSequenceAfterDoctypeName="invalid-character-sequence-after-doctype-name",e.duplicateAttribute="duplicate-attribute",e.nonConformingDoctype="non-conforming-doctype",e.missingDoctype="missing-doctype",e.misplacedDoctype="misplaced-doctype",e.endTagWithoutMatchingOpenElement="end-tag-without-matching-open-element",e.closingOfElementWithOpenChildElements="closing-of-element-with-open-child-elements",e.disallowedContentInNoscriptInHead="disallowed-content-in-noscript-in-head",e.openElementsLeftAfterEof="open-elements-left-after-eof",e.abandonedHeadElementChild="abandoned-head-element-child",e.misplacedStartTagForHeadElement="misplaced-start-tag-for-head-element",e.nestedNoscriptInHead="nested-noscript-in-head",e.eofInElementThatCanContainOnlyText="eof-in-element-that-can-contain-only-text"})(P||(P={}));const dp=65536;class fp{constructor(t){this.handler=t,this.html="",this.pos=-1,this.lastGapPos=-2,this.gapStack=[],this.skipNextNewLine=!1,this.lastChunkWritten=!1,this.endOfChunkHit=!1,this.bufferWaterline=dp,this.isEol=!1,this.lineStartPos=0,this.droppedBufferSize=0,this.line=1,this.lastErrOffset=-1}get col(){return this.pos-this.lineStartPos+ +(this.lastGapPos!==this.pos)}get offset(){return this.droppedBufferSize+this.pos}getError(t,r){const{line:n,col:a,offset:i}=this,u=a+r,s=i+r;return{code:t,startLine:n,endLine:n,startCol:u,endCol:u,startOffset:s,endOffset:s}}_err(t){this.handler.onParseError&&this.lastErrOffset!==this.offset&&(this.lastErrOffset=this.offset,this.handler.onParseError(this.getError(t,0)))}_addGap(){this.gapStack.push(this.lastGapPos),this.lastGapPos=this.pos}_processSurrogate(t){if(this.pos!==this.html.length-1){const r=this.html.charCodeAt(this.pos+1);if(cp(r))return this.pos++,this._addGap(),hp(t,r)}else if(!this.lastChunkWritten)return this.endOfChunkHit=!0,T.EOF;return this._err(P.surrogateInInputStream),t}willDropParsedChunk(){return this.pos>this.bufferWaterline}dropParsedChunk(){this.willDropParsedChunk()&&(this.html=this.html.substring(this.pos),this.lineStartPos-=this.pos,this.droppedBufferSize+=this.pos,this.pos=0,this.lastGapPos=-2,this.gapStack.length=0)}write(t,r){this.html.length>0?this.html+=t:this.html=t,this.endOfChunkHit=!1,this.lastChunkWritten=r}insertHtmlAtCurrentPos(t){this.html=this.html.substring(0,this.pos+1)+t+this.html.substring(this.pos+1),this.endOfChunkHit=!1}startsWith(t,r){if(this.pos+t.length>this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,!1;if(r)return this.html.startsWith(t,this.pos);for(let n=0;n=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,T.EOF;const n=this.html.charCodeAt(r);return n===T.CARRIAGE_RETURN?T.LINE_FEED:n}advance(){if(this.pos++,this.isEol&&(this.isEol=!1,this.line++,this.lineStartPos=this.pos),this.pos>=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,T.EOF;let t=this.html.charCodeAt(this.pos);return t===T.CARRIAGE_RETURN?(this.isEol=!0,this.skipNextNewLine=!0,T.LINE_FEED):t===T.LINE_FEED&&(this.isEol=!0,this.skipNextNewLine)?(this.line--,this.skipNextNewLine=!1,this._addGap(),this.advance()):(this.skipNextNewLine=!1,uc(t)&&(t=this._processSurrogate(t)),this.handler.onParseError===null||t>31&&t<127||t===T.LINE_FEED||t===T.CARRIAGE_RETURN||t>159&&t<64976||this._checkForProblematicCharacters(t),t)}_checkForProblematicCharacters(t){sc(t)?this._err(P.controlCharacterInInputStream):lc(t)&&this._err(P.noncharacterInInputStream)}retreat(t){for(this.pos-=t;this.pos=0;r--)if(e.attrs[r].name===t)return e.attrs[r].value;return null}const mp=new Uint16Array('ᵁ<Õıʊҝջאٵ۞ޢߖࠏ੊ઑඡ๭༉༦჊ረዡᐕᒝᓃᓟᔥ\0\0\0\0\0\0ᕫᛍᦍᰒᷝ὾⁠↰⊍⏀⏻⑂⠤⤒ⴈ⹈⿎〖㊺㘹㞬㣾㨨㩱㫠㬮ࠀEMabcfglmnoprstu\\bfms„‹•˜¦³¹ÈÏlig耻Æ䃆P耻&䀦cute耻Á䃁reve;䄂Āiyx}rc耻Â䃂;䐐r;쀀𝔄rave耻À䃀pha;䎑acr;䄀d;橓Āgp¡on;䄄f;쀀𝔸plyFunction;恡ing耻Å䃅Ācs¾Ãr;쀀𝒜ign;扔ilde耻Ã䃃ml耻Ä䃄ЀaceforsuåûþėĜĢħĪĀcrêòkslash;或Ŷöø;櫧ed;挆y;䐑ƀcrtąċĔause;戵noullis;愬a;䎒r;쀀𝔅pf;쀀𝔹eve;䋘còēmpeq;扎܀HOacdefhilorsuōőŖƀƞƢƵƷƺǜȕɳɸɾcy;䐧PY耻©䂩ƀcpyŝŢźute;䄆Ā;iŧŨ拒talDifferentialD;慅leys;愭ȀaeioƉƎƔƘron;䄌dil耻Ç䃇rc;䄈nint;戰ot;䄊ĀdnƧƭilla;䂸terDot;䂷òſi;䎧rcleȀDMPTLJNjǑǖot;抙inus;抖lus;投imes;抗oĀcsǢǸkwiseContourIntegral;戲eCurlyĀDQȃȏoubleQuote;思uote;怙ȀlnpuȞȨɇɕonĀ;eȥȦ户;橴ƀgitȯȶȺruent;扡nt;戯ourIntegral;戮ĀfrɌɎ;愂oduct;成nterClockwiseContourIntegral;戳oss;樯cr;쀀𝒞pĀ;Cʄʅ拓ap;才րDJSZacefiosʠʬʰʴʸˋ˗ˡ˦̳ҍĀ;oŹʥtrahd;椑cy;䐂cy;䐅cy;䐏ƀgrsʿ˄ˇger;怡r;憡hv;櫤Āayː˕ron;䄎;䐔lĀ;t˝˞戇a;䎔r;쀀𝔇Āaf˫̧Ācm˰̢riticalȀADGT̖̜̀̆cute;䂴oŴ̋̍;䋙bleAcute;䋝rave;䁠ilde;䋜ond;拄ferentialD;慆Ѱ̽\0\0\0͔͂\0Ѕf;쀀𝔻ƀ;DE͈͉͍䂨ot;惜qual;扐blèCDLRUVͣͲ΂ϏϢϸontourIntegraìȹoɴ͹\0\0ͻ»͉nArrow;懓Āeo·ΤftƀARTΐΖΡrrow;懐ightArrow;懔eåˊngĀLRΫτeftĀARγιrrow;柸ightArrow;柺ightArrow;柹ightĀATϘϞrrow;懒ee;抨pɁϩ\0\0ϯrrow;懑ownArrow;懕erticalBar;戥ǹABLRTaВЪаўѿͼrrowƀ;BUНОТ憓ar;椓pArrow;懵reve;䌑eft˒к\0ц\0ѐightVector;楐eeVector;楞ectorĀ;Bљњ憽ar;楖ightǔѧ\0ѱeeVector;楟ectorĀ;BѺѻ懁ar;楗eeĀ;A҆҇护rrow;憧ĀctҒҗr;쀀𝒟rok;䄐ࠀNTacdfglmopqstuxҽӀӄӋӞӢӧӮӵԡԯԶՒ՝ՠեG;䅊H耻Ð䃐cute耻É䃉ƀaiyӒӗӜron;䄚rc耻Ê䃊;䐭ot;䄖r;쀀𝔈rave耻È䃈ement;戈ĀapӺӾcr;䄒tyɓԆ\0\0ԒmallSquare;旻erySmallSquare;斫ĀgpԦԪon;䄘f;쀀𝔼silon;䎕uĀaiԼՉlĀ;TՂՃ橵ilde;扂librium;懌Āci՗՚r;愰m;橳a;䎗ml耻Ë䃋Āipժկsts;戃onentialE;慇ʀcfiosօֈ֍ֲ׌y;䐤r;쀀𝔉lledɓ֗\0\0֣mallSquare;旼erySmallSquare;斪Ͱֺ\0ֿ\0\0ׄf;쀀𝔽All;戀riertrf;愱cò׋؀JTabcdfgorstר׬ׯ׺؀ؒؖ؛؝أ٬ٲcy;䐃耻>䀾mmaĀ;d׷׸䎓;䏜reve;䄞ƀeiy؇،ؐdil;䄢rc;䄜;䐓ot;䄠r;쀀𝔊;拙pf;쀀𝔾eater̀EFGLSTصلَٖٛ٦qualĀ;Lؾؿ扥ess;招ullEqual;执reater;檢ess;扷lantEqual;橾ilde;扳cr;쀀𝒢;扫ЀAacfiosuڅڋږڛڞڪھۊRDcy;䐪Āctڐڔek;䋇;䁞irc;䄤r;愌lbertSpace;愋ǰگ\0ڲf;愍izontalLine;攀Āctۃۅòکrok;䄦mpńېۘownHumðįqual;扏܀EJOacdfgmnostuۺ۾܃܇܎ܚܞܡܨ݄ݸދޏޕcy;䐕lig;䄲cy;䐁cute耻Í䃍Āiyܓܘrc耻Î䃎;䐘ot;䄰r;愑rave耻Ì䃌ƀ;apܠܯܿĀcgܴܷr;䄪inaryI;慈lieóϝǴ݉\0ݢĀ;eݍݎ戬Āgrݓݘral;戫section;拂isibleĀCTݬݲomma;恣imes;恢ƀgptݿރވon;䄮f;쀀𝕀a;䎙cr;愐ilde;䄨ǫޚ\0ޞcy;䐆l耻Ï䃏ʀcfosuެ޷޼߂ߐĀiyޱ޵rc;䄴;䐙r;쀀𝔍pf;쀀𝕁ǣ߇\0ߌr;쀀𝒥rcy;䐈kcy;䐄΀HJacfosߤߨ߽߬߱ࠂࠈcy;䐥cy;䐌ppa;䎚Āey߶߻dil;䄶;䐚r;쀀𝔎pf;쀀𝕂cr;쀀𝒦րJTaceflmostࠥࠩࠬࡐࡣ঳সে্਷ੇcy;䐉耻<䀼ʀcmnpr࠷࠼ࡁࡄࡍute;䄹bda;䎛g;柪lacetrf;愒r;憞ƀaeyࡗ࡜ࡡron;䄽dil;䄻;䐛Āfsࡨ॰tԀACDFRTUVarࡾࢩࢱࣦ࣠ࣼयज़ΐ४Ānrࢃ࢏gleBracket;柨rowƀ;BR࢙࢚࢞憐ar;懤ightArrow;懆eiling;挈oǵࢷ\0ࣃbleBracket;柦nǔࣈ\0࣒eeVector;楡ectorĀ;Bࣛࣜ懃ar;楙loor;挊ightĀAV࣯ࣵrrow;憔ector;楎Āerँगeƀ;AVउऊऐ抣rrow;憤ector;楚iangleƀ;BEतथऩ抲ar;槏qual;抴pƀDTVषूौownVector;楑eeVector;楠ectorĀ;Bॖॗ憿ar;楘ectorĀ;B॥०憼ar;楒ightáΜs̀EFGLSTॾঋকঝঢভqualGreater;拚ullEqual;扦reater;扶ess;檡lantEqual;橽ilde;扲r;쀀𝔏Ā;eঽা拘ftarrow;懚idot;䄿ƀnpw৔ਖਛgȀLRlr৞৷ਂਐeftĀAR০৬rrow;柵ightArrow;柷ightArrow;柶eftĀarγਊightáοightáϊf;쀀𝕃erĀLRਢਬeftArrow;憙ightArrow;憘ƀchtਾੀੂòࡌ;憰rok;䅁;扪Ѐacefiosuਗ਼੝੠੷੼અઋ઎p;椅y;䐜Ādl੥੯iumSpace;恟lintrf;愳r;쀀𝔐nusPlus;戓pf;쀀𝕄cò੶;䎜ҀJacefostuણધભીଔଙඑ඗ඞcy;䐊cute;䅃ƀaey઴હાron;䅇dil;䅅;䐝ƀgswે૰଎ativeƀMTV૓૟૨ediumSpace;怋hiĀcn૦૘ë૙eryThiî૙tedĀGL૸ଆreaterGreateòٳessLesóੈLine;䀊r;쀀𝔑ȀBnptଢନଷ଺reak;恠BreakingSpace;䂠f;愕ڀ;CDEGHLNPRSTV୕ୖ୪୼஡௫ఄ౞಄ದ೘ൡඅ櫬Āou୛୤ngruent;扢pCap;扭oubleVerticalBar;戦ƀlqxஃஊ஛ement;戉ualĀ;Tஒஓ扠ilde;쀀≂̸ists;戄reater΀;EFGLSTஶஷ஽௉௓௘௥扯qual;扱ullEqual;쀀≧̸reater;쀀≫̸ess;批lantEqual;쀀⩾̸ilde;扵umpń௲௽ownHump;쀀≎̸qual;쀀≏̸eĀfsఊధtTriangleƀ;BEచఛడ拪ar;쀀⧏̸qual;括s̀;EGLSTవశ఼ౄోౘ扮qual;扰reater;扸ess;쀀≪̸lantEqual;쀀⩽̸ilde;扴estedĀGL౨౹reaterGreater;쀀⪢̸essLess;쀀⪡̸recedesƀ;ESಒಓಛ技qual;쀀⪯̸lantEqual;拠ĀeiಫಹverseElement;戌ghtTriangleƀ;BEೋೌ೒拫ar;쀀⧐̸qual;拭ĀquೝഌuareSuĀbp೨೹setĀ;E೰ೳ쀀⊏̸qual;拢ersetĀ;Eഃആ쀀⊐̸qual;拣ƀbcpഓതൎsetĀ;Eഛഞ쀀⊂⃒qual;抈ceedsȀ;ESTലള഻െ抁qual;쀀⪰̸lantEqual;拡ilde;쀀≿̸ersetĀ;E൘൛쀀⊃⃒qual;抉ildeȀ;EFT൮൯൵ൿ扁qual;扄ullEqual;扇ilde;扉erticalBar;戤cr;쀀𝒩ilde耻Ñ䃑;䎝܀Eacdfgmoprstuvලෂ෉෕ෛ෠෧෼ขภยา฿ไlig;䅒cute耻Ó䃓Āiy෎ීrc耻Ô䃔;䐞blac;䅐r;쀀𝔒rave耻Ò䃒ƀaei෮ෲ෶cr;䅌ga;䎩cron;䎟pf;쀀𝕆enCurlyĀDQฎบoubleQuote;怜uote;怘;橔Āclวฬr;쀀𝒪ash耻Ø䃘iŬื฼de耻Õ䃕es;樷ml耻Ö䃖erĀBP๋๠Āar๐๓r;怾acĀek๚๜;揞et;掴arenthesis;揜Ҁacfhilors๿ງຊຏຒດຝະ໼rtialD;戂y;䐟r;쀀𝔓i;䎦;䎠usMinus;䂱Āipຢອncareplanåڝf;愙Ȁ;eio຺ູ໠໤檻cedesȀ;EST່້໏໚扺qual;檯lantEqual;扼ilde;找me;怳Ādp໩໮uct;戏ortionĀ;aȥ໹l;戝Āci༁༆r;쀀𝒫;䎨ȀUfos༑༖༛༟OT耻"䀢r;쀀𝔔pf;愚cr;쀀𝒬؀BEacefhiorsu༾གྷཇའཱིྦྷྪྭ႖ႩႴႾarr;椐G耻®䂮ƀcnrཎནབute;䅔g;柫rĀ;tཛྷཝ憠l;椖ƀaeyཧཬཱron;䅘dil;䅖;䐠Ā;vླྀཹ愜erseĀEUྂྙĀlq྇ྎement;戋uilibrium;懋pEquilibrium;楯r»ཹo;䎡ghtЀACDFTUVa࿁࿫࿳ဢဨၛႇϘĀnr࿆࿒gleBracket;柩rowƀ;BL࿜࿝࿡憒ar;懥eftArrow;懄eiling;按oǵ࿹\0စbleBracket;柧nǔည\0နeeVector;楝ectorĀ;Bဝသ懂ar;楕loor;挋Āerိ၃eƀ;AVဵံြ抢rrow;憦ector;楛iangleƀ;BEၐၑၕ抳ar;槐qual;抵pƀDTVၣၮၸownVector;楏eeVector;楜ectorĀ;Bႂႃ憾ar;楔ectorĀ;B႑႒懀ar;楓Āpuႛ႞f;愝ndImplies;楰ightarrow;懛ĀchႹႼr;愛;憱leDelayed;槴ڀHOacfhimoqstuფჱჷჽᄙᄞᅑᅖᅡᅧᆵᆻᆿĀCcჩხHcy;䐩y;䐨FTcy;䐬cute;䅚ʀ;aeiyᄈᄉᄎᄓᄗ檼ron;䅠dil;䅞rc;䅜;䐡r;쀀𝔖ortȀDLRUᄪᄴᄾᅉownArrow»ОeftArrow»࢚ightArrow»࿝pArrow;憑gma;䎣allCircle;战pf;쀀𝕊ɲᅭ\0\0ᅰt;戚areȀ;ISUᅻᅼᆉᆯ斡ntersection;抓uĀbpᆏᆞsetĀ;Eᆗᆘ抏qual;抑ersetĀ;Eᆨᆩ抐qual;抒nion;抔cr;쀀𝒮ar;拆ȀbcmpᇈᇛሉላĀ;sᇍᇎ拐etĀ;Eᇍᇕqual;抆ĀchᇠህeedsȀ;ESTᇭᇮᇴᇿ扻qual;檰lantEqual;扽ilde;承Tháྌ;我ƀ;esሒሓሣ拑rsetĀ;Eሜም抃qual;抇et»ሓրHRSacfhiorsሾቄ቉ቕ቞ቱቶኟዂወዑORN耻Þ䃞ADE;愢ĀHc቎ቒcy;䐋y;䐦Ābuቚቜ;䀉;䎤ƀaeyብቪቯron;䅤dil;䅢;䐢r;쀀𝔗Āeiቻ኉Dzኀ\0ኇefore;戴a;䎘Ācn኎ኘkSpace;쀀  Space;怉ldeȀ;EFTካኬኲኼ戼qual;扃ullEqual;扅ilde;扈pf;쀀𝕋ipleDot;惛Āctዖዛr;쀀𝒯rok;䅦ૡዷጎጚጦ\0ጬጱ\0\0\0\0\0ጸጽ፷ᎅ\0᏿ᐄᐊᐐĀcrዻጁute耻Ú䃚rĀ;oጇገ憟cir;楉rǣጓ\0጖y;䐎ve;䅬Āiyጞጣrc耻Û䃛;䐣blac;䅰r;쀀𝔘rave耻Ù䃙acr;䅪Ādiፁ፩erĀBPፈ፝Āarፍፐr;䁟acĀekፗፙ;揟et;掵arenthesis;揝onĀ;P፰፱拃lus;抎Āgp፻፿on;䅲f;쀀𝕌ЀADETadps᎕ᎮᎸᏄϨᏒᏗᏳrrowƀ;BDᅐᎠᎤar;椒ownArrow;懅ownArrow;憕quilibrium;楮eeĀ;AᏋᏌ报rrow;憥ownáϳerĀLRᏞᏨeftArrow;憖ightArrow;憗iĀ;lᏹᏺ䏒on;䎥ing;䅮cr;쀀𝒰ilde;䅨ml耻Ü䃜ҀDbcdefosvᐧᐬᐰᐳᐾᒅᒊᒐᒖash;披ar;櫫y;䐒ashĀ;lᐻᐼ抩;櫦Āerᑃᑅ;拁ƀbtyᑌᑐᑺar;怖Ā;iᑏᑕcalȀBLSTᑡᑥᑪᑴar;戣ine;䁼eparator;杘ilde;所ThinSpace;怊r;쀀𝔙pf;쀀𝕍cr;쀀𝒱dash;抪ʀcefosᒧᒬᒱᒶᒼirc;䅴dge;拀r;쀀𝔚pf;쀀𝕎cr;쀀𝒲Ȁfiosᓋᓐᓒᓘr;쀀𝔛;䎞pf;쀀𝕏cr;쀀𝒳ҀAIUacfosuᓱᓵᓹᓽᔄᔏᔔᔚᔠcy;䐯cy;䐇cy;䐮cute耻Ý䃝Āiyᔉᔍrc;䅶;䐫r;쀀𝔜pf;쀀𝕐cr;쀀𝒴ml;䅸ЀHacdefosᔵᔹᔿᕋᕏᕝᕠᕤcy;䐖cute;䅹Āayᕄᕉron;䅽;䐗ot;䅻Dzᕔ\0ᕛoWidtè૙a;䎖r;愨pf;愤cr;쀀𝒵௡ᖃᖊᖐ\0ᖰᖶᖿ\0\0\0\0ᗆᗛᗫᙟ᙭\0ᚕ᚛ᚲᚹ\0ᚾcute耻á䃡reve;䄃̀;Ediuyᖜᖝᖡᖣᖨᖭ戾;쀀∾̳;房rc耻â䃢te肻´̆;䐰lig耻æ䃦Ā;r²ᖺ;쀀𝔞rave耻à䃠ĀepᗊᗖĀfpᗏᗔsym;愵èᗓha;䎱ĀapᗟcĀclᗤᗧr;䄁g;樿ɤᗰ\0\0ᘊʀ;adsvᗺᗻᗿᘁᘇ戧nd;橕;橜lope;橘;橚΀;elmrszᘘᘙᘛᘞᘿᙏᙙ戠;榤e»ᘙsdĀ;aᘥᘦ戡ѡᘰᘲᘴᘶᘸᘺᘼᘾ;榨;榩;榪;榫;榬;榭;榮;榯tĀ;vᙅᙆ戟bĀ;dᙌᙍ抾;榝Āptᙔᙗh;戢»¹arr;捼Āgpᙣᙧon;䄅f;쀀𝕒΀;Eaeiop዁ᙻᙽᚂᚄᚇᚊ;橰cir;橯;扊d;手s;䀧roxĀ;e዁ᚒñᚃing耻å䃥ƀctyᚡᚦᚨr;쀀𝒶;䀪mpĀ;e዁ᚯñʈilde耻ã䃣ml耻ä䃤Āciᛂᛈoninôɲnt;樑ࠀNabcdefiklnoprsu᛭ᛱᜰ᜼ᝃᝈ᝸᝽០៦ᠹᡐᜍ᤽᥈ᥰot;櫭Ācrᛶ᜞kȀcepsᜀᜅᜍᜓong;扌psilon;䏶rime;怵imĀ;e᜚᜛戽q;拍Ŷᜢᜦee;抽edĀ;gᜬᜭ挅e»ᜭrkĀ;t፜᜷brk;掶Āoyᜁᝁ;䐱quo;怞ʀcmprtᝓ᝛ᝡᝤᝨausĀ;eĊĉptyv;榰séᜌnoõēƀahwᝯ᝱ᝳ;䎲;愶een;扬r;쀀𝔟g΀costuvwឍឝឳេ៕៛៞ƀaiuបពរðݠrc;旯p»፱ƀdptឤឨឭot;樀lus;樁imes;樂ɱឹ\0\0ើcup;樆ar;昅riangleĀdu៍្own;施p;斳plus;樄eåᑄåᒭarow;植ƀako៭ᠦᠵĀcn៲ᠣkƀlst៺֫᠂ozenge;槫riangleȀ;dlr᠒᠓᠘᠝斴own;斾eft;旂ight;斸k;搣Ʊᠫ\0ᠳƲᠯ\0ᠱ;斒;斑4;斓ck;斈ĀeoᠾᡍĀ;qᡃᡆ쀀=⃥uiv;쀀≡⃥t;挐Ȁptwxᡙᡞᡧᡬf;쀀𝕓Ā;tᏋᡣom»Ꮜtie;拈؀DHUVbdhmptuvᢅᢖᢪᢻᣗᣛᣬ᣿ᤅᤊᤐᤡȀLRlrᢎᢐᢒᢔ;敗;敔;敖;敓ʀ;DUduᢡᢢᢤᢦᢨ敐;敦;敩;敤;敧ȀLRlrᢳᢵᢷᢹ;敝;敚;敜;教΀;HLRhlrᣊᣋᣍᣏᣑᣓᣕ救;敬;散;敠;敫;敢;敟ox;槉ȀLRlrᣤᣦᣨᣪ;敕;敒;攐;攌ʀ;DUduڽ᣷᣹᣻᣽;敥;敨;攬;攴inus;抟lus;択imes;抠ȀLRlrᤙᤛᤝ᤟;敛;敘;攘;攔΀;HLRhlrᤰᤱᤳᤵᤷ᤻᤹攂;敪;敡;敞;攼;攤;攜Āevģ᥂bar耻¦䂦Ȁceioᥑᥖᥚᥠr;쀀𝒷mi;恏mĀ;e᜚᜜lƀ;bhᥨᥩᥫ䁜;槅sub;柈Ŭᥴ᥾lĀ;e᥹᥺怢t»᥺pƀ;Eeįᦅᦇ;檮Ā;qۜۛೡᦧ\0᧨ᨑᨕᨲ\0ᨷᩐ\0\0᪴\0\0᫁\0\0ᬡᬮ᭍᭒\0᯽\0ᰌƀcpr᦭ᦲ᧝ute;䄇̀;abcdsᦿᧀᧄ᧊᧕᧙戩nd;橄rcup;橉Āau᧏᧒p;橋p;橇ot;橀;쀀∩︀Āeo᧢᧥t;恁îړȀaeiu᧰᧻ᨁᨅǰ᧵\0᧸s;橍on;䄍dil耻ç䃧rc;䄉psĀ;sᨌᨍ橌m;橐ot;䄋ƀdmnᨛᨠᨦil肻¸ƭptyv;榲t脀¢;eᨭᨮ䂢räƲr;쀀𝔠ƀceiᨽᩀᩍy;䑇ckĀ;mᩇᩈ朓ark»ᩈ;䏇r΀;Ecefms᩟᩠ᩢᩫ᪤᪪᪮旋;槃ƀ;elᩩᩪᩭ䋆q;扗eɡᩴ\0\0᪈rrowĀlr᩼᪁eft;憺ight;憻ʀRSacd᪒᪔᪖᪚᪟»ཇ;擈st;抛irc;抚ash;抝nint;樐id;櫯cir;槂ubsĀ;u᪻᪼晣it»᪼ˬ᫇᫔᫺\0ᬊonĀ;eᫍᫎ䀺Ā;qÇÆɭ᫙\0\0᫢aĀ;t᫞᫟䀬;䁀ƀ;fl᫨᫩᫫戁îᅠeĀmx᫱᫶ent»᫩eóɍǧ᫾\0ᬇĀ;dኻᬂot;橭nôɆƀfryᬐᬔᬗ;쀀𝕔oäɔ脀©;sŕᬝr;愗Āaoᬥᬩrr;憵ss;朗Ācuᬲᬷr;쀀𝒸Ābpᬼ᭄Ā;eᭁᭂ櫏;櫑Ā;eᭉᭊ櫐;櫒dot;拯΀delprvw᭠᭬᭷ᮂᮬᯔ᯹arrĀlr᭨᭪;椸;椵ɰ᭲\0\0᭵r;拞c;拟arrĀ;p᭿ᮀ憶;椽̀;bcdosᮏᮐᮖᮡᮥᮨ截rcap;橈Āauᮛᮞp;橆p;橊ot;抍r;橅;쀀∪︀Ȁalrv᮵ᮿᯞᯣrrĀ;mᮼᮽ憷;椼yƀevwᯇᯔᯘqɰᯎ\0\0ᯒreã᭳uã᭵ee;拎edge;拏en耻¤䂤earrowĀlrᯮ᯳eft»ᮀight»ᮽeäᯝĀciᰁᰇoninôǷnt;戱lcty;挭ঀAHabcdefhijlorstuwz᰸᰻᰿ᱝᱩᱵᲊᲞᲬᲷ᳻᳿ᴍᵻᶑᶫᶻ᷆᷍rò΁ar;楥Ȁglrs᱈ᱍ᱒᱔ger;怠eth;愸òᄳhĀ;vᱚᱛ怐»ऊūᱡᱧarow;椏aã̕Āayᱮᱳron;䄏;䐴ƀ;ao̲ᱼᲄĀgrʿᲁr;懊tseq;橷ƀglmᲑᲔᲘ耻°䂰ta;䎴ptyv;榱ĀirᲣᲨsht;楿;쀀𝔡arĀlrᲳᲵ»ࣜ»သʀaegsv᳂͸᳖᳜᳠mƀ;oș᳊᳔ndĀ;ș᳑uit;晦amma;䏝in;拲ƀ;io᳧᳨᳸䃷de脀÷;o᳧ᳰntimes;拇nø᳷cy;䑒cɯᴆ\0\0ᴊrn;挞op;挍ʀlptuwᴘᴝᴢᵉᵕlar;䀤f;쀀𝕕ʀ;emps̋ᴭᴷᴽᵂqĀ;d͒ᴳot;扑inus;戸lus;戔quare;抡blebarwedgåúnƀadhᄮᵝᵧownarrowóᲃarpoonĀlrᵲᵶefôᲴighôᲶŢᵿᶅkaro÷གɯᶊ\0\0ᶎrn;挟op;挌ƀcotᶘᶣᶦĀryᶝᶡ;쀀𝒹;䑕l;槶rok;䄑Ādrᶰᶴot;拱iĀ;fᶺ᠖斿Āah᷀᷃ròЩaòྦangle;榦Āci᷒ᷕy;䑟grarr;柿ऀDacdefglmnopqrstuxḁḉḙḸոḼṉṡṾấắẽỡἪἷὄ὎὚ĀDoḆᴴoôᲉĀcsḎḔute耻é䃩ter;橮ȀaioyḢḧḱḶron;䄛rĀ;cḭḮ扖耻ê䃪lon;払;䑍ot;䄗ĀDrṁṅot;扒;쀀𝔢ƀ;rsṐṑṗ檚ave耻è䃨Ā;dṜṝ檖ot;檘Ȁ;ilsṪṫṲṴ檙nters;揧;愓Ā;dṹṺ檕ot;檗ƀapsẅẉẗcr;䄓tyƀ;svẒẓẕ戅et»ẓpĀ1;ẝẤijạả;怄;怅怃ĀgsẪẬ;䅋p;怂ĀgpẴẸon;䄙f;쀀𝕖ƀalsỄỎỒrĀ;sỊị拕l;槣us;橱iƀ;lvỚớở䎵on»ớ;䏵ȀcsuvỪỳἋἣĀioữḱrc»Ḯɩỹ\0\0ỻíՈantĀglἂἆtr»ṝess»Ṻƀaeiἒ἖Ἒls;䀽st;扟vĀ;DȵἠD;橸parsl;槥ĀDaἯἳot;打rr;楱ƀcdiἾὁỸr;愯oô͒ĀahὉὋ;䎷耻ð䃰Āmrὓὗl耻ë䃫o;悬ƀcipὡὤὧl;䀡sôծĀeoὬὴctatioîՙnentialåչৡᾒ\0ᾞ\0ᾡᾧ\0\0ῆῌ\0ΐ\0ῦῪ \0 ⁚llingdotseñṄy;䑄male;晀ƀilrᾭᾳ῁lig;耀ffiɩᾹ\0\0᾽g;耀ffig;耀ffl;쀀𝔣lig;耀filig;쀀fjƀaltῙ῜ῡt;晭ig;耀flns;斱of;䆒ǰ΅\0ῳf;쀀𝕗ĀakֿῷĀ;vῼ´拔;櫙artint;樍Āao‌⁕Ācs‑⁒ႉ‸⁅⁈\0⁐β•‥‧‪‬\0‮耻½䂽;慓耻¼䂼;慕;慙;慛Ƴ‴\0‶;慔;慖ʴ‾⁁\0\0⁃耻¾䂾;慗;慜5;慘ƶ⁌\0⁎;慚;慝8;慞l;恄wn;挢cr;쀀𝒻ࢀEabcdefgijlnorstv₂₉₟₥₰₴⃰⃵⃺⃿℃ℒℸ̗ℾ⅒↞Ā;lٍ₇;檌ƀcmpₐₕ₝ute;䇵maĀ;dₜ᳚䎳;檆reve;䄟Āiy₪₮rc;䄝;䐳ot;䄡Ȁ;lqsؾق₽⃉ƀ;qsؾٌ⃄lanô٥Ȁ;cdl٥⃒⃥⃕c;檩otĀ;o⃜⃝檀Ā;l⃢⃣檂;檄Ā;e⃪⃭쀀⋛︀s;檔r;쀀𝔤Ā;gٳ؛mel;愷cy;䑓Ȁ;Eajٚℌℎℐ;檒;檥;檤ȀEaesℛℝ℩ℴ;扩pĀ;p℣ℤ檊rox»ℤĀ;q℮ℯ檈Ā;q℮ℛim;拧pf;쀀𝕘Āci⅃ⅆr;愊mƀ;el٫ⅎ⅐;檎;檐茀>;cdlqr׮ⅠⅪⅮⅳⅹĀciⅥⅧ;檧r;橺ot;拗Par;榕uest;橼ʀadelsↄⅪ←ٖ↛ǰ↉\0↎proø₞r;楸qĀlqؿ↖lesó₈ií٫Āen↣↭rtneqq;쀀≩︀Å↪ԀAabcefkosy⇄⇇⇱⇵⇺∘∝∯≨≽ròΠȀilmr⇐⇔⇗⇛rsðᒄf»․ilôکĀdr⇠⇤cy;䑊ƀ;cwࣴ⇫⇯ir;楈;憭ar;意irc;䄥ƀalr∁∎∓rtsĀ;u∉∊晥it»∊lip;怦con;抹r;쀀𝔥sĀew∣∩arow;椥arow;椦ʀamopr∺∾≃≞≣rr;懿tht;戻kĀlr≉≓eftarrow;憩ightarrow;憪f;쀀𝕙bar;怕ƀclt≯≴≸r;쀀𝒽asè⇴rok;䄧Ābp⊂⊇ull;恃hen»ᱛૡ⊣\0⊪\0⊸⋅⋎\0⋕⋳\0\0⋸⌢⍧⍢⍿\0⎆⎪⎴cute耻í䃭ƀ;iyݱ⊰⊵rc耻î䃮;䐸Ācx⊼⊿y;䐵cl耻¡䂡ĀfrΟ⋉;쀀𝔦rave耻ì䃬Ȁ;inoܾ⋝⋩⋮Āin⋢⋦nt;樌t;戭fin;槜ta;愩lig;䄳ƀaop⋾⌚⌝ƀcgt⌅⌈⌗r;䄫ƀelpܟ⌏⌓inåގarôܠh;䄱f;抷ed;䆵ʀ;cfotӴ⌬⌱⌽⍁are;愅inĀ;t⌸⌹戞ie;槝doô⌙ʀ;celpݗ⍌⍐⍛⍡al;抺Āgr⍕⍙eróᕣã⍍arhk;樗rod;樼Ȁcgpt⍯⍲⍶⍻y;䑑on;䄯f;쀀𝕚a;䎹uest耻¿䂿Āci⎊⎏r;쀀𝒾nʀ;EdsvӴ⎛⎝⎡ӳ;拹ot;拵Ā;v⎦⎧拴;拳Ā;iݷ⎮lde;䄩ǫ⎸\0⎼cy;䑖l耻ï䃯̀cfmosu⏌⏗⏜⏡⏧⏵Āiy⏑⏕rc;䄵;䐹r;쀀𝔧ath;䈷pf;쀀𝕛ǣ⏬\0⏱r;쀀𝒿rcy;䑘kcy;䑔Ѐacfghjos␋␖␢␧␭␱␵␻ppaĀ;v␓␔䎺;䏰Āey␛␠dil;䄷;䐺r;쀀𝔨reen;䄸cy;䑅cy;䑜pf;쀀𝕜cr;쀀𝓀஀ABEHabcdefghjlmnoprstuv⑰⒁⒆⒍⒑┎┽╚▀♎♞♥♹♽⚚⚲⛘❝❨➋⟀⠁⠒ƀart⑷⑺⑼rò৆òΕail;椛arr;椎Ā;gঔ⒋;檋ar;楢ॣ⒥\0⒪\0⒱\0\0\0\0\0⒵Ⓔ\0ⓆⓈⓍ\0⓹ute;䄺mptyv;榴raîࡌbda;䎻gƀ;dlࢎⓁⓃ;榑åࢎ;檅uo耻«䂫rЀ;bfhlpst࢙ⓞⓦⓩ⓫⓮⓱⓵Ā;f࢝ⓣs;椟s;椝ë≒p;憫l;椹im;楳l;憢ƀ;ae⓿─┄檫il;椙Ā;s┉┊檭;쀀⪭︀ƀabr┕┙┝rr;椌rk;杲Āak┢┬cĀek┨┪;䁻;䁛Āes┱┳;榋lĀdu┹┻;榏;榍Ȁaeuy╆╋╖╘ron;䄾Ādi═╔il;䄼ìࢰâ┩;䐻Ȁcqrs╣╦╭╽a;椶uoĀ;rนᝆĀdu╲╷har;楧shar;楋h;憲ʀ;fgqs▋▌উ◳◿扤tʀahlrt▘▤▷◂◨rrowĀ;t࢙□aé⓶arpoonĀdu▯▴own»њp»०eftarrows;懇ightƀahs◍◖◞rrowĀ;sࣴࢧarpoonó྘quigarro÷⇰hreetimes;拋ƀ;qs▋ও◺lanôবʀ;cdgsব☊☍☝☨c;檨otĀ;o☔☕橿Ā;r☚☛檁;檃Ā;e☢☥쀀⋚︀s;檓ʀadegs☳☹☽♉♋pproøⓆot;拖qĀgq♃♅ôউgtò⒌ôছiíলƀilr♕࣡♚sht;楼;쀀𝔩Ā;Eজ♣;檑š♩♶rĀdu▲♮Ā;l॥♳;楪lk;斄cy;䑙ʀ;achtੈ⚈⚋⚑⚖rò◁orneòᴈard;楫ri;旺Āio⚟⚤dot;䅀ustĀ;a⚬⚭掰che»⚭ȀEaes⚻⚽⛉⛔;扨pĀ;p⛃⛄檉rox»⛄Ā;q⛎⛏檇Ā;q⛎⚻im;拦Ѐabnoptwz⛩⛴⛷✚✯❁❇❐Ānr⛮⛱g;柬r;懽rëࣁgƀlmr⛿✍✔eftĀar০✇ightá৲apsto;柼ightá৽parrowĀlr✥✩efô⓭ight;憬ƀafl✶✹✽r;榅;쀀𝕝us;樭imes;樴š❋❏st;戗áፎƀ;ef❗❘᠀旊nge»❘arĀ;l❤❥䀨t;榓ʀachmt❳❶❼➅➇ròࢨorneòᶌarĀ;d྘➃;業;怎ri;抿̀achiqt➘➝ੀ➢➮➻quo;怹r;쀀𝓁mƀ;egল➪➬;檍;檏Ābu┪➳oĀ;rฟ➹;怚rok;䅂萀<;cdhilqrࠫ⟒☹⟜⟠⟥⟪⟰Āci⟗⟙;檦r;橹reå◲mes;拉arr;楶uest;橻ĀPi⟵⟹ar;榖ƀ;ef⠀भ᠛旃rĀdu⠇⠍shar;楊har;楦Āen⠗⠡rtneqq;쀀≨︀Å⠞܀Dacdefhilnopsu⡀⡅⢂⢎⢓⢠⢥⢨⣚⣢⣤ઃ⣳⤂Dot;戺Ȁclpr⡎⡒⡣⡽r耻¯䂯Āet⡗⡙;時Ā;e⡞⡟朠se»⡟Ā;sျ⡨toȀ;dluျ⡳⡷⡻owîҌefôएðᏑker;斮Āoy⢇⢌mma;権;䐼ash;怔asuredangle»ᘦr;쀀𝔪o;愧ƀcdn⢯⢴⣉ro耻µ䂵Ȁ;acdᑤ⢽⣀⣄sôᚧir;櫰ot肻·Ƶusƀ;bd⣒ᤃ⣓戒Ā;uᴼ⣘;横ţ⣞⣡p;櫛ò−ðઁĀdp⣩⣮els;抧f;쀀𝕞Āct⣸⣽r;쀀𝓂pos»ᖝƀ;lm⤉⤊⤍䎼timap;抸ఀGLRVabcdefghijlmoprstuvw⥂⥓⥾⦉⦘⧚⧩⨕⨚⩘⩝⪃⪕⪤⪨⬄⬇⭄⭿⮮ⰴⱧⱼ⳩Āgt⥇⥋;쀀⋙̸Ā;v⥐௏쀀≫⃒ƀelt⥚⥲⥶ftĀar⥡⥧rrow;懍ightarrow;懎;쀀⋘̸Ā;v⥻ే쀀≪⃒ightarrow;懏ĀDd⦎⦓ash;抯ash;抮ʀbcnpt⦣⦧⦬⦱⧌la»˞ute;䅄g;쀀∠⃒ʀ;Eiop඄⦼⧀⧅⧈;쀀⩰̸d;쀀≋̸s;䅉roø඄urĀ;a⧓⧔普lĀ;s⧓ସdz⧟\0⧣p肻 ଷmpĀ;e௹ఀʀaeouy⧴⧾⨃⨐⨓ǰ⧹\0⧻;橃on;䅈dil;䅆ngĀ;dൾ⨊ot;쀀⩭̸p;橂;䐽ash;怓΀;Aadqsxஒ⨩⨭⨻⩁⩅⩐rr;懗rĀhr⨳⨶k;椤Ā;oᏲᏰot;쀀≐̸uiöୣĀei⩊⩎ar;椨í஘istĀ;s஠டr;쀀𝔫ȀEest௅⩦⩹⩼ƀ;qs஼⩭௡ƀ;qs஼௅⩴lanô௢ií௪Ā;rஶ⪁»ஷƀAap⪊⪍⪑rò⥱rr;憮ar;櫲ƀ;svྍ⪜ྌĀ;d⪡⪢拼;拺cy;䑚΀AEadest⪷⪺⪾⫂⫅⫶⫹rò⥦;쀀≦̸rr;憚r;急Ȁ;fqs఻⫎⫣⫯tĀar⫔⫙rro÷⫁ightarro÷⪐ƀ;qs఻⪺⫪lanôౕĀ;sౕ⫴»శiíౝĀ;rవ⫾iĀ;eచథiäඐĀpt⬌⬑f;쀀𝕟膀¬;in⬙⬚⬶䂬nȀ;Edvஉ⬤⬨⬮;쀀⋹̸ot;쀀⋵̸ǡஉ⬳⬵;拷;拶iĀ;vಸ⬼ǡಸ⭁⭃;拾;拽ƀaor⭋⭣⭩rȀ;ast୻⭕⭚⭟lleì୻l;쀀⫽⃥;쀀∂̸lint;樔ƀ;ceಒ⭰⭳uåಥĀ;cಘ⭸Ā;eಒ⭽ñಘȀAait⮈⮋⮝⮧rò⦈rrƀ;cw⮔⮕⮙憛;쀀⤳̸;쀀↝̸ghtarrow»⮕riĀ;eೋೖ΀chimpqu⮽⯍⯙⬄୸⯤⯯Ȁ;cerല⯆ഷ⯉uå൅;쀀𝓃ortɭ⬅\0\0⯖ará⭖mĀ;e൮⯟Ā;q൴൳suĀbp⯫⯭å೸åഋƀbcp⯶ⰑⰙȀ;Ees⯿ⰀഢⰄ抄;쀀⫅̸etĀ;eഛⰋqĀ;qണⰀcĀ;eലⰗñസȀ;EesⰢⰣൟⰧ抅;쀀⫆̸etĀ;e൘ⰮqĀ;qൠⰣȀgilrⰽⰿⱅⱇìௗlde耻ñ䃱çృiangleĀlrⱒⱜeftĀ;eచⱚñదightĀ;eೋⱥñ೗Ā;mⱬⱭ䎽ƀ;esⱴⱵⱹ䀣ro;愖p;怇ҀDHadgilrsⲏⲔⲙⲞⲣⲰⲶⳓⳣash;抭arr;椄p;쀀≍⃒ash;抬ĀetⲨⲬ;쀀≥⃒;쀀>⃒nfin;槞ƀAetⲽⳁⳅrr;椂;쀀≤⃒Ā;rⳊⳍ쀀<⃒ie;쀀⊴⃒ĀAtⳘⳜrr;椃rie;쀀⊵⃒im;쀀∼⃒ƀAan⳰⳴ⴂrr;懖rĀhr⳺⳽k;椣Ā;oᏧᏥear;椧ቓ᪕\0\0\0\0\0\0\0\0\0\0\0\0\0ⴭ\0ⴸⵈⵠⵥ⵲ⶄᬇ\0\0ⶍⶫ\0ⷈⷎ\0ⷜ⸙⸫⸾⹃Ācsⴱ᪗ute耻ó䃳ĀiyⴼⵅrĀ;c᪞ⵂ耻ô䃴;䐾ʀabios᪠ⵒⵗLjⵚlac;䅑v;樸old;榼lig;䅓Ācr⵩⵭ir;榿;쀀𝔬ͯ⵹\0\0⵼\0ⶂn;䋛ave耻ò䃲;槁Ābmⶈ෴ar;榵Ȁacitⶕ⶘ⶥⶨrò᪀Āir⶝ⶠr;榾oss;榻nå๒;槀ƀaeiⶱⶵⶹcr;䅍ga;䏉ƀcdnⷀⷅǍron;䎿;榶pf;쀀𝕠ƀaelⷔ⷗ǒr;榷rp;榹΀;adiosvⷪⷫⷮ⸈⸍⸐⸖戨rò᪆Ȁ;efmⷷⷸ⸂⸅橝rĀ;oⷾⷿ愴f»ⷿ耻ª䂪耻º䂺gof;抶r;橖lope;橗;橛ƀclo⸟⸡⸧ò⸁ash耻ø䃸l;折iŬⸯ⸴de耻õ䃵esĀ;aǛ⸺s;樶ml耻ö䃶bar;挽ૡ⹞\0⹽\0⺀⺝\0⺢⺹\0\0⻋ຜ\0⼓\0\0⼫⾼\0⿈rȀ;astЃ⹧⹲຅脀¶;l⹭⹮䂶leìЃɩ⹸\0\0⹻m;櫳;櫽y;䐿rʀcimpt⺋⺏⺓ᡥ⺗nt;䀥od;䀮il;怰enk;怱r;쀀𝔭ƀimo⺨⺰⺴Ā;v⺭⺮䏆;䏕maô੶ne;明ƀ;tv⺿⻀⻈䏀chfork»´;䏖Āau⻏⻟nĀck⻕⻝kĀ;h⇴⻛;愎ö⇴sҀ;abcdemst⻳⻴ᤈ⻹⻽⼄⼆⼊⼎䀫cir;樣ir;樢Āouᵀ⼂;樥;橲n肻±ຝim;樦wo;樧ƀipu⼙⼠⼥ntint;樕f;쀀𝕡nd耻£䂣Ԁ;Eaceinosu່⼿⽁⽄⽇⾁⾉⾒⽾⾶;檳p;檷uå໙Ā;c໎⽌̀;acens່⽙⽟⽦⽨⽾pproø⽃urlyeñ໙ñ໎ƀaes⽯⽶⽺pprox;檹qq;檵im;拨iíໟmeĀ;s⾈ຮ怲ƀEas⽸⾐⽺ð⽵ƀdfp໬⾙⾯ƀals⾠⾥⾪lar;挮ine;挒urf;挓Ā;t໻⾴ï໻rel;抰Āci⿀⿅r;쀀𝓅;䏈ncsp;怈̀fiopsu⿚⋢⿟⿥⿫⿱r;쀀𝔮pf;쀀𝕢rime;恗cr;쀀𝓆ƀaeo⿸〉〓tĀei⿾々rnionóڰnt;樖stĀ;e【】䀿ñἙô༔઀ABHabcdefhilmnoprstux぀けさすムㄎㄫㅇㅢㅲㆎ㈆㈕㈤㈩㉘㉮㉲㊐㊰㊷ƀartぇおがròႳòϝail;検aròᱥar;楤΀cdenqrtとふへみわゔヌĀeuねぱ;쀀∽̱te;䅕iãᅮmptyv;榳gȀ;del࿑らるろ;榒;榥å࿑uo耻»䂻rր;abcfhlpstw࿜ガクシスゼゾダッデナp;極Ā;f࿠ゴs;椠;椳s;椞ë≝ð✮l;楅im;楴l;憣;憝Āaiパフil;椚oĀ;nホボ戶aló༞ƀabrョリヮrò៥rk;杳ĀakンヽcĀekヹ・;䁽;䁝Āes㄂㄄;榌lĀduㄊㄌ;榎;榐Ȁaeuyㄗㄜㄧㄩron;䅙Ādiㄡㄥil;䅗ì࿲âヺ;䑀Ȁclqsㄴㄷㄽㅄa;椷dhar;楩uoĀ;rȎȍh;憳ƀacgㅎㅟངlȀ;ipsླྀㅘㅛႜnåႻarôྩt;断ƀilrㅩဣㅮsht;楽;쀀𝔯ĀaoㅷㆆrĀduㅽㅿ»ѻĀ;l႑ㆄ;楬Ā;vㆋㆌ䏁;䏱ƀgns㆕ㇹㇼht̀ahlrstㆤㆰ㇂㇘㇤㇮rrowĀ;t࿜ㆭaéトarpoonĀduㆻㆿowîㅾp»႒eftĀah㇊㇐rrowó࿪arpoonóՑightarrows;應quigarro÷ニhreetimes;拌g;䋚ingdotseñἲƀahm㈍㈐㈓rò࿪aòՑ;怏oustĀ;a㈞㈟掱che»㈟mid;櫮Ȁabpt㈲㈽㉀㉒Ānr㈷㈺g;柭r;懾rëဃƀafl㉇㉊㉎r;榆;쀀𝕣us;樮imes;樵Āap㉝㉧rĀ;g㉣㉤䀩t;榔olint;樒arò㇣Ȁachq㉻㊀Ⴜ㊅quo;怺r;쀀𝓇Ābu・㊊oĀ;rȔȓƀhir㊗㊛㊠reåㇸmes;拊iȀ;efl㊪ၙᠡ㊫方tri;槎luhar;楨;愞ൡ㋕㋛㋟㌬㌸㍱\0㍺㎤\0\0㏬㏰\0㐨㑈㑚㒭㒱㓊㓱\0㘖\0\0㘳cute;䅛quï➺Ԁ;Eaceinpsyᇭ㋳㋵㋿㌂㌋㌏㌟㌦㌩;檴ǰ㋺\0㋼;檸on;䅡uåᇾĀ;dᇳ㌇il;䅟rc;䅝ƀEas㌖㌘㌛;檶p;檺im;择olint;樓iíሄ;䑁otƀ;be㌴ᵇ㌵担;橦΀Aacmstx㍆㍊㍗㍛㍞㍣㍭rr;懘rĀhr㍐㍒ë∨Ā;oਸ਼਴t耻§䂧i;䀻war;椩mĀin㍩ðnuóñt;朶rĀ;o㍶⁕쀀𝔰Ȁacoy㎂㎆㎑㎠rp;景Āhy㎋㎏cy;䑉;䑈rtɭ㎙\0\0㎜iäᑤaraì⹯耻­䂭Āgm㎨㎴maƀ;fv㎱㎲㎲䏃;䏂Ѐ;deglnprካ㏅㏉㏎㏖㏞㏡㏦ot;橪Ā;q኱ኰĀ;E㏓㏔檞;檠Ā;E㏛㏜檝;檟e;扆lus;樤arr;楲aròᄽȀaeit㏸㐈㐏㐗Āls㏽㐄lsetmé㍪hp;樳parsl;槤Ādlᑣ㐔e;挣Ā;e㐜㐝檪Ā;s㐢㐣檬;쀀⪬︀ƀflp㐮㐳㑂tcy;䑌Ā;b㐸㐹䀯Ā;a㐾㐿槄r;挿f;쀀𝕤aĀdr㑍ЂesĀ;u㑔㑕晠it»㑕ƀcsu㑠㑹㒟Āau㑥㑯pĀ;sᆈ㑫;쀀⊓︀pĀ;sᆴ㑵;쀀⊔︀uĀbp㑿㒏ƀ;esᆗᆜ㒆etĀ;eᆗ㒍ñᆝƀ;esᆨᆭ㒖etĀ;eᆨ㒝ñᆮƀ;afᅻ㒦ְrť㒫ֱ»ᅼaròᅈȀcemt㒹㒾㓂㓅r;쀀𝓈tmîñiì㐕aræᆾĀar㓎㓕rĀ;f㓔ឿ昆Āan㓚㓭ightĀep㓣㓪psiloîỠhé⺯s»⡒ʀbcmnp㓻㕞ሉ㖋㖎Ҁ;Edemnprs㔎㔏㔑㔕㔞㔣㔬㔱㔶抂;櫅ot;檽Ā;dᇚ㔚ot;櫃ult;櫁ĀEe㔨㔪;櫋;把lus;檿arr;楹ƀeiu㔽㕒㕕tƀ;en㔎㕅㕋qĀ;qᇚ㔏eqĀ;q㔫㔨m;櫇Ābp㕚㕜;櫕;櫓c̀;acensᇭ㕬㕲㕹㕻㌦pproø㋺urlyeñᇾñᇳƀaes㖂㖈㌛pproø㌚qñ㌗g;晪ڀ123;Edehlmnps㖩㖬㖯ሜ㖲㖴㗀㗉㗕㗚㗟㗨㗭耻¹䂹耻²䂲耻³䂳;櫆Āos㖹㖼t;檾ub;櫘Ā;dሢ㗅ot;櫄sĀou㗏㗒l;柉b;櫗arr;楻ult;櫂ĀEe㗤㗦;櫌;抋lus;櫀ƀeiu㗴㘉㘌tƀ;enሜ㗼㘂qĀ;qሢ㖲eqĀ;q㗧㗤m;櫈Ābp㘑㘓;櫔;櫖ƀAan㘜㘠㘭rr;懙rĀhr㘦㘨ë∮Ā;oਫ਩war;椪lig耻ß䃟௡㙑㙝㙠ዎ㙳㙹\0㙾㛂\0\0\0\0\0㛛㜃\0㜉㝬\0\0\0㞇ɲ㙖\0\0㙛get;挖;䏄rë๟ƀaey㙦㙫㙰ron;䅥dil;䅣;䑂lrec;挕r;쀀𝔱Ȁeiko㚆㚝㚵㚼Dz㚋\0㚑eĀ4fኄኁaƀ;sv㚘㚙㚛䎸ym;䏑Ācn㚢㚲kĀas㚨㚮pproø዁im»ኬsðኞĀas㚺㚮ð዁rn耻þ䃾Ǭ̟㛆⋧es膀×;bd㛏㛐㛘䃗Ā;aᤏ㛕r;樱;樰ƀeps㛡㛣㜀á⩍Ȁ;bcf҆㛬㛰㛴ot;挶ir;櫱Ā;o㛹㛼쀀𝕥rk;櫚á㍢rime;怴ƀaip㜏㜒㝤dåቈ΀adempst㜡㝍㝀㝑㝗㝜㝟ngleʀ;dlqr㜰㜱㜶㝀㝂斵own»ᶻeftĀ;e⠀㜾ñम;扜ightĀ;e㊪㝋ñၚot;旬inus;樺lus;樹b;槍ime;樻ezium;揢ƀcht㝲㝽㞁Āry㝷㝻;쀀𝓉;䑆cy;䑛rok;䅧Āio㞋㞎xô᝷headĀlr㞗㞠eftarro÷ࡏightarrow»ཝऀAHabcdfghlmoprstuw㟐㟓㟗㟤㟰㟼㠎㠜㠣㠴㡑㡝㡫㢩㣌㣒㣪㣶ròϭar;楣Ācr㟜㟢ute耻ú䃺òᅐrǣ㟪\0㟭y;䑞ve;䅭Āiy㟵㟺rc耻û䃻;䑃ƀabh㠃㠆㠋ròᎭlac;䅱aòᏃĀir㠓㠘sht;楾;쀀𝔲rave耻ù䃹š㠧㠱rĀlr㠬㠮»ॗ»ႃlk;斀Āct㠹㡍ɯ㠿\0\0㡊rnĀ;e㡅㡆挜r»㡆op;挏ri;旸Āal㡖㡚cr;䅫肻¨͉Āgp㡢㡦on;䅳f;쀀𝕦̀adhlsuᅋ㡸㡽፲㢑㢠ownáᎳarpoonĀlr㢈㢌efô㠭ighô㠯iƀ;hl㢙㢚㢜䏅»ᏺon»㢚parrows;懈ƀcit㢰㣄㣈ɯ㢶\0\0㣁rnĀ;e㢼㢽挝r»㢽op;挎ng;䅯ri;旹cr;쀀𝓊ƀdir㣙㣝㣢ot;拰lde;䅩iĀ;f㜰㣨»᠓Āam㣯㣲rò㢨l耻ü䃼angle;榧ހABDacdeflnoprsz㤜㤟㤩㤭㦵㦸㦽㧟㧤㧨㧳㧹㧽㨁㨠ròϷarĀ;v㤦㤧櫨;櫩asèϡĀnr㤲㤷grt;榜΀eknprst㓣㥆㥋㥒㥝㥤㦖appá␕othinçẖƀhir㓫⻈㥙opô⾵Ā;hᎷ㥢ïㆍĀiu㥩㥭gmá㎳Ābp㥲㦄setneqĀ;q㥽㦀쀀⊊︀;쀀⫋︀setneqĀ;q㦏㦒쀀⊋︀;쀀⫌︀Āhr㦛㦟etá㚜iangleĀlr㦪㦯eft»थight»ၑy;䐲ash»ံƀelr㧄㧒㧗ƀ;beⷪ㧋㧏ar;抻q;扚lip;拮Ābt㧜ᑨaòᑩr;쀀𝔳tré㦮suĀbp㧯㧱»ജ»൙pf;쀀𝕧roð໻tré㦴Ācu㨆㨋r;쀀𝓋Ābp㨐㨘nĀEe㦀㨖»㥾nĀEe㦒㨞»㦐igzag;榚΀cefoprs㨶㨻㩖㩛㩔㩡㩪irc;䅵Ādi㩀㩑Ābg㩅㩉ar;機eĀ;qᗺ㩏;扙erp;愘r;쀀𝔴pf;쀀𝕨Ā;eᑹ㩦atèᑹcr;쀀𝓌ૣណ㪇\0㪋\0㪐㪛\0\0㪝㪨㪫㪯\0\0㫃㫎\0㫘ៜ៟tré៑r;쀀𝔵ĀAa㪔㪗ròσrò৶;䎾ĀAa㪡㪤ròθrò৫að✓is;拻ƀdptឤ㪵㪾Āfl㪺ឩ;쀀𝕩imåឲĀAa㫇㫊ròώròਁĀcq㫒ីr;쀀𝓍Āpt៖㫜ré។Ѐacefiosu㫰㫽㬈㬌㬑㬕㬛㬡cĀuy㫶㫻te耻ý䃽;䑏Āiy㬂㬆rc;䅷;䑋n耻¥䂥r;쀀𝔶cy;䑗pf;쀀𝕪cr;쀀𝓎Ācm㬦㬩y;䑎l耻ÿ䃿Ԁacdefhiosw㭂㭈㭔㭘㭤㭩㭭㭴㭺㮀cute;䅺Āay㭍㭒ron;䅾;䐷ot;䅼Āet㭝㭡træᕟa;䎶r;쀀𝔷cy;䐶grarr;懝pf;쀀𝕫cr;쀀𝓏Ājn㮅㮇;怍j;怌'.split("").map(e=>e.charCodeAt(0))),pp=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]);function gp(e){var t;return e>=55296&&e<=57343||e>1114111?65533:(t=pp.get(e))!==null&&t!==void 0?t:e}var qe;(function(e){e[e.NUM=35]="NUM",e[e.SEMI=59]="SEMI",e[e.EQUALS=61]="EQUALS",e[e.ZERO=48]="ZERO",e[e.NINE=57]="NINE",e[e.LOWER_A=97]="LOWER_A",e[e.LOWER_F=102]="LOWER_F",e[e.LOWER_X=120]="LOWER_X",e[e.LOWER_Z=122]="LOWER_Z",e[e.UPPER_A=65]="UPPER_A",e[e.UPPER_F=70]="UPPER_F",e[e.UPPER_Z=90]="UPPER_Z"})(qe||(qe={}));const bp=32;var Kt;(function(e){e[e.VALUE_LENGTH=49152]="VALUE_LENGTH",e[e.BRANCH_LENGTH=16256]="BRANCH_LENGTH",e[e.JUMP_TABLE=127]="JUMP_TABLE"})(Kt||(Kt={}));function $a(e){return e>=qe.ZERO&&e<=qe.NINE}function Ep(e){return e>=qe.UPPER_A&&e<=qe.UPPER_F||e>=qe.LOWER_A&&e<=qe.LOWER_F}function Tp(e){return e>=qe.UPPER_A&&e<=qe.UPPER_Z||e>=qe.LOWER_A&&e<=qe.LOWER_Z||$a(e)}function xp(e){return e===qe.EQUALS||Tp(e)}var Ue;(function(e){e[e.EntityStart=0]="EntityStart",e[e.NumericStart=1]="NumericStart",e[e.NumericDecimal=2]="NumericDecimal",e[e.NumericHex=3]="NumericHex",e[e.NamedEntity=4]="NamedEntity"})(Ue||(Ue={}));var Ft;(function(e){e[e.Legacy=0]="Legacy",e[e.Strict=1]="Strict",e[e.Attribute=2]="Attribute"})(Ft||(Ft={}));class yp{constructor(t,r,n){this.decodeTree=t,this.emitCodePoint=r,this.errors=n,this.state=Ue.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=Ft.Strict}startEntity(t){this.decodeMode=t,this.state=Ue.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1}write(t,r){switch(this.state){case Ue.EntityStart:return t.charCodeAt(r)===qe.NUM?(this.state=Ue.NumericStart,this.consumed+=1,this.stateNumericStart(t,r+1)):(this.state=Ue.NamedEntity,this.stateNamedEntity(t,r));case Ue.NumericStart:return this.stateNumericStart(t,r);case Ue.NumericDecimal:return this.stateNumericDecimal(t,r);case Ue.NumericHex:return this.stateNumericHex(t,r);case Ue.NamedEntity:return this.stateNamedEntity(t,r)}}stateNumericStart(t,r){return r>=t.length?-1:(t.charCodeAt(r)|bp)===qe.LOWER_X?(this.state=Ue.NumericHex,this.consumed+=1,this.stateNumericHex(t,r+1)):(this.state=Ue.NumericDecimal,this.stateNumericDecimal(t,r))}addToNumericResult(t,r,n,a){if(r!==n){const i=n-r;this.result=this.result*Math.pow(a,i)+Number.parseInt(t.substr(r,i),a),this.consumed+=i}}stateNumericHex(t,r){const n=r;for(;r>14;for(;r>14,i!==0){if(u===qe.SEMI)return this.emitNamedEntityData(this.treeIndex,i,this.consumed+this.excess);this.decodeMode!==Ft.Strict&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}}return-1}emitNotTerminatedNamedEntity(){var t;const{result:r,decodeTree:n}=this,a=(n[r]&Kt.VALUE_LENGTH)>>14;return this.emitNamedEntityData(r,a,this.consumed),(t=this.errors)===null||t===void 0||t.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(t,r,n){const{decodeTree:a}=this;return this.emitCodePoint(r===1?a[t]&~Kt.VALUE_LENGTH:a[t+1],n),r===3&&this.emitCodePoint(a[t+2],n),n}end(){var t;switch(this.state){case Ue.NamedEntity:return this.result!==0&&(this.decodeMode!==Ft.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case Ue.NumericDecimal:return this.emitNumericEntity(0,2);case Ue.NumericHex:return this.emitNumericEntity(0,3);case Ue.NumericStart:return(t=this.errors)===null||t===void 0||t.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case Ue.EntityStart:return 0}}}function vp(e,t,r,n){const a=(t&Kt.BRANCH_LENGTH)>>7,i=t&Kt.JUMP_TABLE;if(a===0)return i!==0&&n===i?r:-1;if(i){const l=n-i;return l<0||l>=a?-1:e[r+l]-1}let u=r,s=u+a-1;for(;u<=s;){const l=u+s>>>1,c=e[l];if(cn)s=l-1;else return e[l+a]}return-1}var H;(function(e){e.HTML="http://www.w3.org/1999/xhtml",e.MATHML="http://www.w3.org/1998/Math/MathML",e.SVG="http://www.w3.org/2000/svg",e.XLINK="http://www.w3.org/1999/xlink",e.XML="http://www.w3.org/XML/1998/namespace",e.XMLNS="http://www.w3.org/2000/xmlns/"})(H||(H={}));var mr;(function(e){e.TYPE="type",e.ACTION="action",e.ENCODING="encoding",e.PROMPT="prompt",e.NAME="name",e.COLOR="color",e.FACE="face",e.SIZE="size"})(mr||(mr={}));var pt;(function(e){e.NO_QUIRKS="no-quirks",e.QUIRKS="quirks",e.LIMITED_QUIRKS="limited-quirks"})(pt||(pt={}));var O;(function(e){e.A="a",e.ADDRESS="address",e.ANNOTATION_XML="annotation-xml",e.APPLET="applet",e.AREA="area",e.ARTICLE="article",e.ASIDE="aside",e.B="b",e.BASE="base",e.BASEFONT="basefont",e.BGSOUND="bgsound",e.BIG="big",e.BLOCKQUOTE="blockquote",e.BODY="body",e.BR="br",e.BUTTON="button",e.CAPTION="caption",e.CENTER="center",e.CODE="code",e.COL="col",e.COLGROUP="colgroup",e.DD="dd",e.DESC="desc",e.DETAILS="details",e.DIALOG="dialog",e.DIR="dir",e.DIV="div",e.DL="dl",e.DT="dt",e.EM="em",e.EMBED="embed",e.FIELDSET="fieldset",e.FIGCAPTION="figcaption",e.FIGURE="figure",e.FONT="font",e.FOOTER="footer",e.FOREIGN_OBJECT="foreignObject",e.FORM="form",e.FRAME="frame",e.FRAMESET="frameset",e.H1="h1",e.H2="h2",e.H3="h3",e.H4="h4",e.H5="h5",e.H6="h6",e.HEAD="head",e.HEADER="header",e.HGROUP="hgroup",e.HR="hr",e.HTML="html",e.I="i",e.IMG="img",e.IMAGE="image",e.INPUT="input",e.IFRAME="iframe",e.KEYGEN="keygen",e.LABEL="label",e.LI="li",e.LINK="link",e.LISTING="listing",e.MAIN="main",e.MALIGNMARK="malignmark",e.MARQUEE="marquee",e.MATH="math",e.MENU="menu",e.META="meta",e.MGLYPH="mglyph",e.MI="mi",e.MO="mo",e.MN="mn",e.MS="ms",e.MTEXT="mtext",e.NAV="nav",e.NOBR="nobr",e.NOFRAMES="noframes",e.NOEMBED="noembed",e.NOSCRIPT="noscript",e.OBJECT="object",e.OL="ol",e.OPTGROUP="optgroup",e.OPTION="option",e.P="p",e.PARAM="param",e.PLAINTEXT="plaintext",e.PRE="pre",e.RB="rb",e.RP="rp",e.RT="rt",e.RTC="rtc",e.RUBY="ruby",e.S="s",e.SCRIPT="script",e.SEARCH="search",e.SECTION="section",e.SELECT="select",e.SOURCE="source",e.SMALL="small",e.SPAN="span",e.STRIKE="strike",e.STRONG="strong",e.STYLE="style",e.SUB="sub",e.SUMMARY="summary",e.SUP="sup",e.TABLE="table",e.TBODY="tbody",e.TEMPLATE="template",e.TEXTAREA="textarea",e.TFOOT="tfoot",e.TD="td",e.TH="th",e.THEAD="thead",e.TITLE="title",e.TR="tr",e.TRACK="track",e.TT="tt",e.U="u",e.UL="ul",e.SVG="svg",e.VAR="var",e.WBR="wbr",e.XMP="xmp"})(O||(O={}));var o;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.A=1]="A",e[e.ADDRESS=2]="ADDRESS",e[e.ANNOTATION_XML=3]="ANNOTATION_XML",e[e.APPLET=4]="APPLET",e[e.AREA=5]="AREA",e[e.ARTICLE=6]="ARTICLE",e[e.ASIDE=7]="ASIDE",e[e.B=8]="B",e[e.BASE=9]="BASE",e[e.BASEFONT=10]="BASEFONT",e[e.BGSOUND=11]="BGSOUND",e[e.BIG=12]="BIG",e[e.BLOCKQUOTE=13]="BLOCKQUOTE",e[e.BODY=14]="BODY",e[e.BR=15]="BR",e[e.BUTTON=16]="BUTTON",e[e.CAPTION=17]="CAPTION",e[e.CENTER=18]="CENTER",e[e.CODE=19]="CODE",e[e.COL=20]="COL",e[e.COLGROUP=21]="COLGROUP",e[e.DD=22]="DD",e[e.DESC=23]="DESC",e[e.DETAILS=24]="DETAILS",e[e.DIALOG=25]="DIALOG",e[e.DIR=26]="DIR",e[e.DIV=27]="DIV",e[e.DL=28]="DL",e[e.DT=29]="DT",e[e.EM=30]="EM",e[e.EMBED=31]="EMBED",e[e.FIELDSET=32]="FIELDSET",e[e.FIGCAPTION=33]="FIGCAPTION",e[e.FIGURE=34]="FIGURE",e[e.FONT=35]="FONT",e[e.FOOTER=36]="FOOTER",e[e.FOREIGN_OBJECT=37]="FOREIGN_OBJECT",e[e.FORM=38]="FORM",e[e.FRAME=39]="FRAME",e[e.FRAMESET=40]="FRAMESET",e[e.H1=41]="H1",e[e.H2=42]="H2",e[e.H3=43]="H3",e[e.H4=44]="H4",e[e.H5=45]="H5",e[e.H6=46]="H6",e[e.HEAD=47]="HEAD",e[e.HEADER=48]="HEADER",e[e.HGROUP=49]="HGROUP",e[e.HR=50]="HR",e[e.HTML=51]="HTML",e[e.I=52]="I",e[e.IMG=53]="IMG",e[e.IMAGE=54]="IMAGE",e[e.INPUT=55]="INPUT",e[e.IFRAME=56]="IFRAME",e[e.KEYGEN=57]="KEYGEN",e[e.LABEL=58]="LABEL",e[e.LI=59]="LI",e[e.LINK=60]="LINK",e[e.LISTING=61]="LISTING",e[e.MAIN=62]="MAIN",e[e.MALIGNMARK=63]="MALIGNMARK",e[e.MARQUEE=64]="MARQUEE",e[e.MATH=65]="MATH",e[e.MENU=66]="MENU",e[e.META=67]="META",e[e.MGLYPH=68]="MGLYPH",e[e.MI=69]="MI",e[e.MO=70]="MO",e[e.MN=71]="MN",e[e.MS=72]="MS",e[e.MTEXT=73]="MTEXT",e[e.NAV=74]="NAV",e[e.NOBR=75]="NOBR",e[e.NOFRAMES=76]="NOFRAMES",e[e.NOEMBED=77]="NOEMBED",e[e.NOSCRIPT=78]="NOSCRIPT",e[e.OBJECT=79]="OBJECT",e[e.OL=80]="OL",e[e.OPTGROUP=81]="OPTGROUP",e[e.OPTION=82]="OPTION",e[e.P=83]="P",e[e.PARAM=84]="PARAM",e[e.PLAINTEXT=85]="PLAINTEXT",e[e.PRE=86]="PRE",e[e.RB=87]="RB",e[e.RP=88]="RP",e[e.RT=89]="RT",e[e.RTC=90]="RTC",e[e.RUBY=91]="RUBY",e[e.S=92]="S",e[e.SCRIPT=93]="SCRIPT",e[e.SEARCH=94]="SEARCH",e[e.SECTION=95]="SECTION",e[e.SELECT=96]="SELECT",e[e.SOURCE=97]="SOURCE",e[e.SMALL=98]="SMALL",e[e.SPAN=99]="SPAN",e[e.STRIKE=100]="STRIKE",e[e.STRONG=101]="STRONG",e[e.STYLE=102]="STYLE",e[e.SUB=103]="SUB",e[e.SUMMARY=104]="SUMMARY",e[e.SUP=105]="SUP",e[e.TABLE=106]="TABLE",e[e.TBODY=107]="TBODY",e[e.TEMPLATE=108]="TEMPLATE",e[e.TEXTAREA=109]="TEXTAREA",e[e.TFOOT=110]="TFOOT",e[e.TD=111]="TD",e[e.TH=112]="TH",e[e.THEAD=113]="THEAD",e[e.TITLE=114]="TITLE",e[e.TR=115]="TR",e[e.TRACK=116]="TRACK",e[e.TT=117]="TT",e[e.U=118]="U",e[e.UL=119]="UL",e[e.SVG=120]="SVG",e[e.VAR=121]="VAR",e[e.WBR=122]="WBR",e[e.XMP=123]="XMP"})(o||(o={}));const Ap=new Map([[O.A,o.A],[O.ADDRESS,o.ADDRESS],[O.ANNOTATION_XML,o.ANNOTATION_XML],[O.APPLET,o.APPLET],[O.AREA,o.AREA],[O.ARTICLE,o.ARTICLE],[O.ASIDE,o.ASIDE],[O.B,o.B],[O.BASE,o.BASE],[O.BASEFONT,o.BASEFONT],[O.BGSOUND,o.BGSOUND],[O.BIG,o.BIG],[O.BLOCKQUOTE,o.BLOCKQUOTE],[O.BODY,o.BODY],[O.BR,o.BR],[O.BUTTON,o.BUTTON],[O.CAPTION,o.CAPTION],[O.CENTER,o.CENTER],[O.CODE,o.CODE],[O.COL,o.COL],[O.COLGROUP,o.COLGROUP],[O.DD,o.DD],[O.DESC,o.DESC],[O.DETAILS,o.DETAILS],[O.DIALOG,o.DIALOG],[O.DIR,o.DIR],[O.DIV,o.DIV],[O.DL,o.DL],[O.DT,o.DT],[O.EM,o.EM],[O.EMBED,o.EMBED],[O.FIELDSET,o.FIELDSET],[O.FIGCAPTION,o.FIGCAPTION],[O.FIGURE,o.FIGURE],[O.FONT,o.FONT],[O.FOOTER,o.FOOTER],[O.FOREIGN_OBJECT,o.FOREIGN_OBJECT],[O.FORM,o.FORM],[O.FRAME,o.FRAME],[O.FRAMESET,o.FRAMESET],[O.H1,o.H1],[O.H2,o.H2],[O.H3,o.H3],[O.H4,o.H4],[O.H5,o.H5],[O.H6,o.H6],[O.HEAD,o.HEAD],[O.HEADER,o.HEADER],[O.HGROUP,o.HGROUP],[O.HR,o.HR],[O.HTML,o.HTML],[O.I,o.I],[O.IMG,o.IMG],[O.IMAGE,o.IMAGE],[O.INPUT,o.INPUT],[O.IFRAME,o.IFRAME],[O.KEYGEN,o.KEYGEN],[O.LABEL,o.LABEL],[O.LI,o.LI],[O.LINK,o.LINK],[O.LISTING,o.LISTING],[O.MAIN,o.MAIN],[O.MALIGNMARK,o.MALIGNMARK],[O.MARQUEE,o.MARQUEE],[O.MATH,o.MATH],[O.MENU,o.MENU],[O.META,o.META],[O.MGLYPH,o.MGLYPH],[O.MI,o.MI],[O.MO,o.MO],[O.MN,o.MN],[O.MS,o.MS],[O.MTEXT,o.MTEXT],[O.NAV,o.NAV],[O.NOBR,o.NOBR],[O.NOFRAMES,o.NOFRAMES],[O.NOEMBED,o.NOEMBED],[O.NOSCRIPT,o.NOSCRIPT],[O.OBJECT,o.OBJECT],[O.OL,o.OL],[O.OPTGROUP,o.OPTGROUP],[O.OPTION,o.OPTION],[O.P,o.P],[O.PARAM,o.PARAM],[O.PLAINTEXT,o.PLAINTEXT],[O.PRE,o.PRE],[O.RB,o.RB],[O.RP,o.RP],[O.RT,o.RT],[O.RTC,o.RTC],[O.RUBY,o.RUBY],[O.S,o.S],[O.SCRIPT,o.SCRIPT],[O.SEARCH,o.SEARCH],[O.SECTION,o.SECTION],[O.SELECT,o.SELECT],[O.SOURCE,o.SOURCE],[O.SMALL,o.SMALL],[O.SPAN,o.SPAN],[O.STRIKE,o.STRIKE],[O.STRONG,o.STRONG],[O.STYLE,o.STYLE],[O.SUB,o.SUB],[O.SUMMARY,o.SUMMARY],[O.SUP,o.SUP],[O.TABLE,o.TABLE],[O.TBODY,o.TBODY],[O.TEMPLATE,o.TEMPLATE],[O.TEXTAREA,o.TEXTAREA],[O.TFOOT,o.TFOOT],[O.TD,o.TD],[O.TH,o.TH],[O.THEAD,o.THEAD],[O.TITLE,o.TITLE],[O.TR,o.TR],[O.TRACK,o.TRACK],[O.TT,o.TT],[O.U,o.U],[O.UL,o.UL],[O.SVG,o.SVG],[O.VAR,o.VAR],[O.WBR,o.WBR],[O.XMP,o.XMP]]);function qr(e){var t;return(t=Ap.get(e))!==null&&t!==void 0?t:o.UNKNOWN}const U=o,kp={[H.HTML]:new Set([U.ADDRESS,U.APPLET,U.AREA,U.ARTICLE,U.ASIDE,U.BASE,U.BASEFONT,U.BGSOUND,U.BLOCKQUOTE,U.BODY,U.BR,U.BUTTON,U.CAPTION,U.CENTER,U.COL,U.COLGROUP,U.DD,U.DETAILS,U.DIR,U.DIV,U.DL,U.DT,U.EMBED,U.FIELDSET,U.FIGCAPTION,U.FIGURE,U.FOOTER,U.FORM,U.FRAME,U.FRAMESET,U.H1,U.H2,U.H3,U.H4,U.H5,U.H6,U.HEAD,U.HEADER,U.HGROUP,U.HR,U.HTML,U.IFRAME,U.IMG,U.INPUT,U.LI,U.LINK,U.LISTING,U.MAIN,U.MARQUEE,U.MENU,U.META,U.NAV,U.NOEMBED,U.NOFRAMES,U.NOSCRIPT,U.OBJECT,U.OL,U.P,U.PARAM,U.PLAINTEXT,U.PRE,U.SCRIPT,U.SECTION,U.SELECT,U.SOURCE,U.STYLE,U.SUMMARY,U.TABLE,U.TBODY,U.TD,U.TEMPLATE,U.TEXTAREA,U.TFOOT,U.TH,U.THEAD,U.TITLE,U.TR,U.TRACK,U.UL,U.WBR,U.XMP]),[H.MATHML]:new Set([U.MI,U.MO,U.MN,U.MS,U.MTEXT,U.ANNOTATION_XML]),[H.SVG]:new Set([U.TITLE,U.FOREIGN_OBJECT,U.DESC]),[H.XLINK]:new Set,[H.XML]:new Set,[H.XMLNS]:new Set},Qa=new Set([U.H1,U.H2,U.H3,U.H4,U.H5,U.H6]);O.STYLE,O.SCRIPT,O.XMP,O.IFRAME,O.NOEMBED,O.NOFRAMES,O.PLAINTEXT;var y;(function(e){e[e.DATA=0]="DATA",e[e.RCDATA=1]="RCDATA",e[e.RAWTEXT=2]="RAWTEXT",e[e.SCRIPT_DATA=3]="SCRIPT_DATA",e[e.PLAINTEXT=4]="PLAINTEXT",e[e.TAG_OPEN=5]="TAG_OPEN",e[e.END_TAG_OPEN=6]="END_TAG_OPEN",e[e.TAG_NAME=7]="TAG_NAME",e[e.RCDATA_LESS_THAN_SIGN=8]="RCDATA_LESS_THAN_SIGN",e[e.RCDATA_END_TAG_OPEN=9]="RCDATA_END_TAG_OPEN",e[e.RCDATA_END_TAG_NAME=10]="RCDATA_END_TAG_NAME",e[e.RAWTEXT_LESS_THAN_SIGN=11]="RAWTEXT_LESS_THAN_SIGN",e[e.RAWTEXT_END_TAG_OPEN=12]="RAWTEXT_END_TAG_OPEN",e[e.RAWTEXT_END_TAG_NAME=13]="RAWTEXT_END_TAG_NAME",e[e.SCRIPT_DATA_LESS_THAN_SIGN=14]="SCRIPT_DATA_LESS_THAN_SIGN",e[e.SCRIPT_DATA_END_TAG_OPEN=15]="SCRIPT_DATA_END_TAG_OPEN",e[e.SCRIPT_DATA_END_TAG_NAME=16]="SCRIPT_DATA_END_TAG_NAME",e[e.SCRIPT_DATA_ESCAPE_START=17]="SCRIPT_DATA_ESCAPE_START",e[e.SCRIPT_DATA_ESCAPE_START_DASH=18]="SCRIPT_DATA_ESCAPE_START_DASH",e[e.SCRIPT_DATA_ESCAPED=19]="SCRIPT_DATA_ESCAPED",e[e.SCRIPT_DATA_ESCAPED_DASH=20]="SCRIPT_DATA_ESCAPED_DASH",e[e.SCRIPT_DATA_ESCAPED_DASH_DASH=21]="SCRIPT_DATA_ESCAPED_DASH_DASH",e[e.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN=22]="SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN",e[e.SCRIPT_DATA_ESCAPED_END_TAG_OPEN=23]="SCRIPT_DATA_ESCAPED_END_TAG_OPEN",e[e.SCRIPT_DATA_ESCAPED_END_TAG_NAME=24]="SCRIPT_DATA_ESCAPED_END_TAG_NAME",e[e.SCRIPT_DATA_DOUBLE_ESCAPE_START=25]="SCRIPT_DATA_DOUBLE_ESCAPE_START",e[e.SCRIPT_DATA_DOUBLE_ESCAPED=26]="SCRIPT_DATA_DOUBLE_ESCAPED",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH=27]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH=28]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN=29]="SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN",e[e.SCRIPT_DATA_DOUBLE_ESCAPE_END=30]="SCRIPT_DATA_DOUBLE_ESCAPE_END",e[e.BEFORE_ATTRIBUTE_NAME=31]="BEFORE_ATTRIBUTE_NAME",e[e.ATTRIBUTE_NAME=32]="ATTRIBUTE_NAME",e[e.AFTER_ATTRIBUTE_NAME=33]="AFTER_ATTRIBUTE_NAME",e[e.BEFORE_ATTRIBUTE_VALUE=34]="BEFORE_ATTRIBUTE_VALUE",e[e.ATTRIBUTE_VALUE_DOUBLE_QUOTED=35]="ATTRIBUTE_VALUE_DOUBLE_QUOTED",e[e.ATTRIBUTE_VALUE_SINGLE_QUOTED=36]="ATTRIBUTE_VALUE_SINGLE_QUOTED",e[e.ATTRIBUTE_VALUE_UNQUOTED=37]="ATTRIBUTE_VALUE_UNQUOTED",e[e.AFTER_ATTRIBUTE_VALUE_QUOTED=38]="AFTER_ATTRIBUTE_VALUE_QUOTED",e[e.SELF_CLOSING_START_TAG=39]="SELF_CLOSING_START_TAG",e[e.BOGUS_COMMENT=40]="BOGUS_COMMENT",e[e.MARKUP_DECLARATION_OPEN=41]="MARKUP_DECLARATION_OPEN",e[e.COMMENT_START=42]="COMMENT_START",e[e.COMMENT_START_DASH=43]="COMMENT_START_DASH",e[e.COMMENT=44]="COMMENT",e[e.COMMENT_LESS_THAN_SIGN=45]="COMMENT_LESS_THAN_SIGN",e[e.COMMENT_LESS_THAN_SIGN_BANG=46]="COMMENT_LESS_THAN_SIGN_BANG",e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH=47]="COMMENT_LESS_THAN_SIGN_BANG_DASH",e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH=48]="COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH",e[e.COMMENT_END_DASH=49]="COMMENT_END_DASH",e[e.COMMENT_END=50]="COMMENT_END",e[e.COMMENT_END_BANG=51]="COMMENT_END_BANG",e[e.DOCTYPE=52]="DOCTYPE",e[e.BEFORE_DOCTYPE_NAME=53]="BEFORE_DOCTYPE_NAME",e[e.DOCTYPE_NAME=54]="DOCTYPE_NAME",e[e.AFTER_DOCTYPE_NAME=55]="AFTER_DOCTYPE_NAME",e[e.AFTER_DOCTYPE_PUBLIC_KEYWORD=56]="AFTER_DOCTYPE_PUBLIC_KEYWORD",e[e.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER=57]="BEFORE_DOCTYPE_PUBLIC_IDENTIFIER",e[e.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED=58]="DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED",e[e.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED=59]="DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED",e[e.AFTER_DOCTYPE_PUBLIC_IDENTIFIER=60]="AFTER_DOCTYPE_PUBLIC_IDENTIFIER",e[e.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS=61]="BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS",e[e.AFTER_DOCTYPE_SYSTEM_KEYWORD=62]="AFTER_DOCTYPE_SYSTEM_KEYWORD",e[e.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER=63]="BEFORE_DOCTYPE_SYSTEM_IDENTIFIER",e[e.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED=64]="DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED",e[e.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED=65]="DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED",e[e.AFTER_DOCTYPE_SYSTEM_IDENTIFIER=66]="AFTER_DOCTYPE_SYSTEM_IDENTIFIER",e[e.BOGUS_DOCTYPE=67]="BOGUS_DOCTYPE",e[e.CDATA_SECTION=68]="CDATA_SECTION",e[e.CDATA_SECTION_BRACKET=69]="CDATA_SECTION_BRACKET",e[e.CDATA_SECTION_END=70]="CDATA_SECTION_END",e[e.CHARACTER_REFERENCE=71]="CHARACTER_REFERENCE",e[e.AMBIGUOUS_AMPERSAND=72]="AMBIGUOUS_AMPERSAND"})(y||(y={}));const De={DATA:y.DATA,RCDATA:y.RCDATA,RAWTEXT:y.RAWTEXT,SCRIPT_DATA:y.SCRIPT_DATA,PLAINTEXT:y.PLAINTEXT,CDATA_SECTION:y.CDATA_SECTION};function Sp(e){return e>=T.DIGIT_0&&e<=T.DIGIT_9}function rn(e){return e>=T.LATIN_CAPITAL_A&&e<=T.LATIN_CAPITAL_Z}function wp(e){return e>=T.LATIN_SMALL_A&&e<=T.LATIN_SMALL_Z}function Xt(e){return wp(e)||rn(e)}function Cs(e){return Xt(e)||Sp(e)}function Wn(e){return e+32}function cc(e){return e===T.SPACE||e===T.LINE_FEED||e===T.TABULATION||e===T.FORM_FEED}function _s(e){return cc(e)||e===T.SOLIDUS||e===T.GREATER_THAN_SIGN}function Cp(e){return e===T.NULL?P.nullCharacterReference:e>1114111?P.characterReferenceOutsideUnicodeRange:uc(e)?P.surrogateCharacterReference:lc(e)?P.noncharacterCharacterReference:sc(e)||e===T.CARRIAGE_RETURN?P.controlCharacterReference:null}class _p{constructor(t,r){this.options=t,this.handler=r,this.paused=!1,this.inLoop=!1,this.inForeignNode=!1,this.lastStartTagName="",this.active=!1,this.state=y.DATA,this.returnState=y.DATA,this.entityStartPos=0,this.consumedAfterSnapshot=-1,this.currentCharacterToken=null,this.currentToken=null,this.currentAttr={name:"",value:""},this.preprocessor=new fp(r),this.currentLocation=this.getCurrentLocation(-1),this.entityDecoder=new yp(mp,(n,a)=>{this.preprocessor.pos=this.entityStartPos+a-1,this._flushCodePointConsumedAsCharacterReference(n)},r.onParseError?{missingSemicolonAfterCharacterReference:()=>{this._err(P.missingSemicolonAfterCharacterReference,1)},absenceOfDigitsInNumericCharacterReference:n=>{this._err(P.absenceOfDigitsInNumericCharacterReference,this.entityStartPos-this.preprocessor.pos+n)},validateNumericCharacterReference:n=>{const a=Cp(n);a&&this._err(a,1)}}:void 0)}_err(t,r=0){var n,a;(a=(n=this.handler).onParseError)===null||a===void 0||a.call(n,this.preprocessor.getError(t,r))}getCurrentLocation(t){return this.options.sourceCodeLocationInfo?{startLine:this.preprocessor.line,startCol:this.preprocessor.col-t,startOffset:this.preprocessor.offset-t,endLine:-1,endCol:-1,endOffset:-1}:null}_runParsingLoop(){if(!this.inLoop){for(this.inLoop=!0;this.active&&!this.paused;){this.consumedAfterSnapshot=0;const t=this._consume();this._ensureHibernation()||this._callState(t)}this.inLoop=!1}}pause(){this.paused=!0}resume(t){if(!this.paused)throw new Error("Parser was already resumed");this.paused=!1,!this.inLoop&&(this._runParsingLoop(),this.paused||t?.())}write(t,r,n){this.active=!0,this.preprocessor.write(t,r),this._runParsingLoop(),this.paused||n?.()}insertHtmlAtCurrentPos(t){this.active=!0,this.preprocessor.insertHtmlAtCurrentPos(t),this._runParsingLoop()}_ensureHibernation(){return this.preprocessor.endOfChunkHit?(this.preprocessor.retreat(this.consumedAfterSnapshot),this.consumedAfterSnapshot=0,this.active=!1,!0):!1}_consume(){return this.consumedAfterSnapshot++,this.preprocessor.advance()}_advanceBy(t){this.consumedAfterSnapshot+=t;for(let r=0;r0&&this._err(P.endTagWithAttributes),t.selfClosing&&this._err(P.endTagWithTrailingSolidus),this.handler.onEndTag(t)),this.preprocessor.dropParsedChunk()}emitCurrentComment(t){this.prepareToken(t),this.handler.onComment(t),this.preprocessor.dropParsedChunk()}emitCurrentDoctype(t){this.prepareToken(t),this.handler.onDoctype(t),this.preprocessor.dropParsedChunk()}_emitCurrentCharacterToken(t){if(this.currentCharacterToken){switch(t&&this.currentCharacterToken.location&&(this.currentCharacterToken.location.endLine=t.startLine,this.currentCharacterToken.location.endCol=t.startCol,this.currentCharacterToken.location.endOffset=t.startOffset),this.currentCharacterToken.type){case de.CHARACTER:{this.handler.onCharacter(this.currentCharacterToken);break}case de.NULL_CHARACTER:{this.handler.onNullCharacter(this.currentCharacterToken);break}case de.WHITESPACE_CHARACTER:{this.handler.onWhitespaceCharacter(this.currentCharacterToken);break}}this.currentCharacterToken=null}}_emitEOFToken(){const t=this.getCurrentLocation(0);t&&(t.endLine=t.startLine,t.endCol=t.startCol,t.endOffset=t.startOffset),this._emitCurrentCharacterToken(t),this.handler.onEof({type:de.EOF,location:t}),this.active=!1}_appendCharToCurrentCharacterToken(t,r){if(this.currentCharacterToken)if(this.currentCharacterToken.type===t){this.currentCharacterToken.chars+=r;return}else this.currentLocation=this.getCurrentLocation(0),this._emitCurrentCharacterToken(this.currentLocation),this.preprocessor.dropParsedChunk();this._createCharacterToken(t,r)}_emitCodePoint(t){const r=cc(t)?de.WHITESPACE_CHARACTER:t===T.NULL?de.NULL_CHARACTER:de.CHARACTER;this._appendCharToCurrentCharacterToken(r,String.fromCodePoint(t))}_emitChars(t){this._appendCharToCurrentCharacterToken(de.CHARACTER,t)}_startCharacterReference(){this.returnState=this.state,this.state=y.CHARACTER_REFERENCE,this.entityStartPos=this.preprocessor.pos,this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute()?Ft.Attribute:Ft.Legacy)}_isCharacterReferenceInAttribute(){return this.returnState===y.ATTRIBUTE_VALUE_DOUBLE_QUOTED||this.returnState===y.ATTRIBUTE_VALUE_SINGLE_QUOTED||this.returnState===y.ATTRIBUTE_VALUE_UNQUOTED}_flushCodePointConsumedAsCharacterReference(t){this._isCharacterReferenceInAttribute()?this.currentAttr.value+=String.fromCodePoint(t):this._emitCodePoint(t)}_callState(t){switch(this.state){case y.DATA:{this._stateData(t);break}case y.RCDATA:{this._stateRcdata(t);break}case y.RAWTEXT:{this._stateRawtext(t);break}case y.SCRIPT_DATA:{this._stateScriptData(t);break}case y.PLAINTEXT:{this._statePlaintext(t);break}case y.TAG_OPEN:{this._stateTagOpen(t);break}case y.END_TAG_OPEN:{this._stateEndTagOpen(t);break}case y.TAG_NAME:{this._stateTagName(t);break}case y.RCDATA_LESS_THAN_SIGN:{this._stateRcdataLessThanSign(t);break}case y.RCDATA_END_TAG_OPEN:{this._stateRcdataEndTagOpen(t);break}case y.RCDATA_END_TAG_NAME:{this._stateRcdataEndTagName(t);break}case y.RAWTEXT_LESS_THAN_SIGN:{this._stateRawtextLessThanSign(t);break}case y.RAWTEXT_END_TAG_OPEN:{this._stateRawtextEndTagOpen(t);break}case y.RAWTEXT_END_TAG_NAME:{this._stateRawtextEndTagName(t);break}case y.SCRIPT_DATA_LESS_THAN_SIGN:{this._stateScriptDataLessThanSign(t);break}case y.SCRIPT_DATA_END_TAG_OPEN:{this._stateScriptDataEndTagOpen(t);break}case y.SCRIPT_DATA_END_TAG_NAME:{this._stateScriptDataEndTagName(t);break}case y.SCRIPT_DATA_ESCAPE_START:{this._stateScriptDataEscapeStart(t);break}case y.SCRIPT_DATA_ESCAPE_START_DASH:{this._stateScriptDataEscapeStartDash(t);break}case y.SCRIPT_DATA_ESCAPED:{this._stateScriptDataEscaped(t);break}case y.SCRIPT_DATA_ESCAPED_DASH:{this._stateScriptDataEscapedDash(t);break}case y.SCRIPT_DATA_ESCAPED_DASH_DASH:{this._stateScriptDataEscapedDashDash(t);break}case y.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataEscapedLessThanSign(t);break}case y.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:{this._stateScriptDataEscapedEndTagOpen(t);break}case y.SCRIPT_DATA_ESCAPED_END_TAG_NAME:{this._stateScriptDataEscapedEndTagName(t);break}case y.SCRIPT_DATA_DOUBLE_ESCAPE_START:{this._stateScriptDataDoubleEscapeStart(t);break}case y.SCRIPT_DATA_DOUBLE_ESCAPED:{this._stateScriptDataDoubleEscaped(t);break}case y.SCRIPT_DATA_DOUBLE_ESCAPED_DASH:{this._stateScriptDataDoubleEscapedDash(t);break}case y.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH:{this._stateScriptDataDoubleEscapedDashDash(t);break}case y.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataDoubleEscapedLessThanSign(t);break}case y.SCRIPT_DATA_DOUBLE_ESCAPE_END:{this._stateScriptDataDoubleEscapeEnd(t);break}case y.BEFORE_ATTRIBUTE_NAME:{this._stateBeforeAttributeName(t);break}case y.ATTRIBUTE_NAME:{this._stateAttributeName(t);break}case y.AFTER_ATTRIBUTE_NAME:{this._stateAfterAttributeName(t);break}case y.BEFORE_ATTRIBUTE_VALUE:{this._stateBeforeAttributeValue(t);break}case y.ATTRIBUTE_VALUE_DOUBLE_QUOTED:{this._stateAttributeValueDoubleQuoted(t);break}case y.ATTRIBUTE_VALUE_SINGLE_QUOTED:{this._stateAttributeValueSingleQuoted(t);break}case y.ATTRIBUTE_VALUE_UNQUOTED:{this._stateAttributeValueUnquoted(t);break}case y.AFTER_ATTRIBUTE_VALUE_QUOTED:{this._stateAfterAttributeValueQuoted(t);break}case y.SELF_CLOSING_START_TAG:{this._stateSelfClosingStartTag(t);break}case y.BOGUS_COMMENT:{this._stateBogusComment(t);break}case y.MARKUP_DECLARATION_OPEN:{this._stateMarkupDeclarationOpen(t);break}case y.COMMENT_START:{this._stateCommentStart(t);break}case y.COMMENT_START_DASH:{this._stateCommentStartDash(t);break}case y.COMMENT:{this._stateComment(t);break}case y.COMMENT_LESS_THAN_SIGN:{this._stateCommentLessThanSign(t);break}case y.COMMENT_LESS_THAN_SIGN_BANG:{this._stateCommentLessThanSignBang(t);break}case y.COMMENT_LESS_THAN_SIGN_BANG_DASH:{this._stateCommentLessThanSignBangDash(t);break}case y.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH:{this._stateCommentLessThanSignBangDashDash(t);break}case y.COMMENT_END_DASH:{this._stateCommentEndDash(t);break}case y.COMMENT_END:{this._stateCommentEnd(t);break}case y.COMMENT_END_BANG:{this._stateCommentEndBang(t);break}case y.DOCTYPE:{this._stateDoctype(t);break}case y.BEFORE_DOCTYPE_NAME:{this._stateBeforeDoctypeName(t);break}case y.DOCTYPE_NAME:{this._stateDoctypeName(t);break}case y.AFTER_DOCTYPE_NAME:{this._stateAfterDoctypeName(t);break}case y.AFTER_DOCTYPE_PUBLIC_KEYWORD:{this._stateAfterDoctypePublicKeyword(t);break}case y.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateBeforeDoctypePublicIdentifier(t);break}case y.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypePublicIdentifierDoubleQuoted(t);break}case y.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypePublicIdentifierSingleQuoted(t);break}case y.AFTER_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateAfterDoctypePublicIdentifier(t);break}case y.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS:{this._stateBetweenDoctypePublicAndSystemIdentifiers(t);break}case y.AFTER_DOCTYPE_SYSTEM_KEYWORD:{this._stateAfterDoctypeSystemKeyword(t);break}case y.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateBeforeDoctypeSystemIdentifier(t);break}case y.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypeSystemIdentifierDoubleQuoted(t);break}case y.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypeSystemIdentifierSingleQuoted(t);break}case y.AFTER_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateAfterDoctypeSystemIdentifier(t);break}case y.BOGUS_DOCTYPE:{this._stateBogusDoctype(t);break}case y.CDATA_SECTION:{this._stateCdataSection(t);break}case y.CDATA_SECTION_BRACKET:{this._stateCdataSectionBracket(t);break}case y.CDATA_SECTION_END:{this._stateCdataSectionEnd(t);break}case y.CHARACTER_REFERENCE:{this._stateCharacterReference();break}case y.AMBIGUOUS_AMPERSAND:{this._stateAmbiguousAmpersand(t);break}default:throw new Error("Unknown state")}}_stateData(t){switch(t){case T.LESS_THAN_SIGN:{this.state=y.TAG_OPEN;break}case T.AMPERSAND:{this._startCharacterReference();break}case T.NULL:{this._err(P.unexpectedNullCharacter),this._emitCodePoint(t);break}case T.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t)}}_stateRcdata(t){switch(t){case T.AMPERSAND:{this._startCharacterReference();break}case T.LESS_THAN_SIGN:{this.state=y.RCDATA_LESS_THAN_SIGN;break}case T.NULL:{this._err(P.unexpectedNullCharacter),this._emitChars(Se);break}case T.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t)}}_stateRawtext(t){switch(t){case T.LESS_THAN_SIGN:{this.state=y.RAWTEXT_LESS_THAN_SIGN;break}case T.NULL:{this._err(P.unexpectedNullCharacter),this._emitChars(Se);break}case T.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t)}}_stateScriptData(t){switch(t){case T.LESS_THAN_SIGN:{this.state=y.SCRIPT_DATA_LESS_THAN_SIGN;break}case T.NULL:{this._err(P.unexpectedNullCharacter),this._emitChars(Se);break}case T.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t)}}_statePlaintext(t){switch(t){case T.NULL:{this._err(P.unexpectedNullCharacter),this._emitChars(Se);break}case T.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t)}}_stateTagOpen(t){if(Xt(t))this._createStartTagToken(),this.state=y.TAG_NAME,this._stateTagName(t);else switch(t){case T.EXCLAMATION_MARK:{this.state=y.MARKUP_DECLARATION_OPEN;break}case T.SOLIDUS:{this.state=y.END_TAG_OPEN;break}case T.QUESTION_MARK:{this._err(P.unexpectedQuestionMarkInsteadOfTagName),this._createCommentToken(1),this.state=y.BOGUS_COMMENT,this._stateBogusComment(t);break}case T.EOF:{this._err(P.eofBeforeTagName),this._emitChars("<"),this._emitEOFToken();break}default:this._err(P.invalidFirstCharacterOfTagName),this._emitChars("<"),this.state=y.DATA,this._stateData(t)}}_stateEndTagOpen(t){if(Xt(t))this._createEndTagToken(),this.state=y.TAG_NAME,this._stateTagName(t);else switch(t){case T.GREATER_THAN_SIGN:{this._err(P.missingEndTagName),this.state=y.DATA;break}case T.EOF:{this._err(P.eofBeforeTagName),this._emitChars("");break}case T.NULL:{this._err(P.unexpectedNullCharacter),this.state=y.SCRIPT_DATA_ESCAPED,this._emitChars(Se);break}case T.EOF:{this._err(P.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=y.SCRIPT_DATA_ESCAPED,this._emitCodePoint(t)}}_stateScriptDataEscapedLessThanSign(t){t===T.SOLIDUS?this.state=y.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:Xt(t)?(this._emitChars("<"),this.state=y.SCRIPT_DATA_DOUBLE_ESCAPE_START,this._stateScriptDataDoubleEscapeStart(t)):(this._emitChars("<"),this.state=y.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(t))}_stateScriptDataEscapedEndTagOpen(t){Xt(t)?(this.state=y.SCRIPT_DATA_ESCAPED_END_TAG_NAME,this._stateScriptDataEscapedEndTagName(t)):(this._emitChars("");break}case T.NULL:{this._err(P.unexpectedNullCharacter),this.state=y.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars(Se);break}case T.EOF:{this._err(P.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=y.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(t)}}_stateScriptDataDoubleEscapedLessThanSign(t){t===T.SOLIDUS?(this.state=y.SCRIPT_DATA_DOUBLE_ESCAPE_END,this._emitChars("/")):(this.state=y.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(t))}_stateScriptDataDoubleEscapeEnd(t){if(this.preprocessor.startsWith(et.SCRIPT,!1)&&_s(this.preprocessor.peek(et.SCRIPT.length))){this._emitCodePoint(t);for(let r=0;r0&&this._isInTemplate()&&this.tmplCount--,this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(t,!0)}replace(t,r){const n=this._indexOf(t);this.items[n]=r,n===this.stackTop&&(this.current=r)}insertAfter(t,r,n){const a=this._indexOf(t)+1;this.items.splice(a,0,r),this.tagIDs.splice(a,0,n),this.stackTop++,a===this.stackTop&&this._updateCurrentElement(),this.current&&this.currentTagId!==void 0&&this.handler.onItemPush(this.current,this.currentTagId,a===this.stackTop)}popUntilTagNamePopped(t){let r=this.stackTop+1;do r=this.tagIDs.lastIndexOf(t,r-1);while(r>0&&this.treeAdapter.getNamespaceURI(this.items[r])!==H.HTML);this.shortenToLength(Math.max(r,0))}shortenToLength(t){for(;this.stackTop>=t;){const r=this.current;this.tmplCount>0&&this._isInTemplate()&&(this.tmplCount-=1),this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(r,this.stackTop=0;n--)if(t.has(this.tagIDs[n])&&this.treeAdapter.getNamespaceURI(this.items[n])===r)return n;return-1}clearBackTo(t,r){const n=this._indexOfTagNames(t,r);this.shortenToLength(n+1)}clearBackToTableContext(){this.clearBackTo(Lp,H.HTML)}clearBackToTableBodyContext(){this.clearBackTo(Op,H.HTML)}clearBackToTableRowContext(){this.clearBackTo(Dp,H.HTML)}remove(t){const r=this._indexOf(t);r>=0&&(r===this.stackTop?this.pop():(this.items.splice(r,1),this.tagIDs.splice(r,1),this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(t,!1)))}tryPeekProperlyNestedBodyElement(){return this.stackTop>=1&&this.tagIDs[1]===o.BODY?this.items[1]:null}contains(t){return this._indexOf(t)>-1}getCommonAncestor(t){const r=this._indexOf(t)-1;return r>=0?this.items[r]:null}isRootHtmlElementCurrent(){return this.stackTop===0&&this.tagIDs[0]===o.HTML}hasInDynamicScope(t,r){for(let n=this.stackTop;n>=0;n--){const a=this.tagIDs[n];switch(this.treeAdapter.getNamespaceURI(this.items[n])){case H.HTML:{if(a===t)return!0;if(r.has(a))return!1;break}case H.SVG:{if(Ds.has(a))return!1;break}case H.MATHML:{if(Ns.has(a))return!1;break}}}return!0}hasInScope(t){return this.hasInDynamicScope(t,s0)}hasInListItemScope(t){return this.hasInDynamicScope(t,Ip)}hasInButtonScope(t){return this.hasInDynamicScope(t,Np)}hasNumberedHeaderInScope(){for(let t=this.stackTop;t>=0;t--){const r=this.tagIDs[t];switch(this.treeAdapter.getNamespaceURI(this.items[t])){case H.HTML:{if(Qa.has(r))return!0;if(s0.has(r))return!1;break}case H.SVG:{if(Ds.has(r))return!1;break}case H.MATHML:{if(Ns.has(r))return!1;break}}}return!0}hasInTableScope(t){for(let r=this.stackTop;r>=0;r--)if(this.treeAdapter.getNamespaceURI(this.items[r])===H.HTML)switch(this.tagIDs[r]){case t:return!0;case o.TABLE:case o.HTML:return!1}return!0}hasTableBodyContextInTableScope(){for(let t=this.stackTop;t>=0;t--)if(this.treeAdapter.getNamespaceURI(this.items[t])===H.HTML)switch(this.tagIDs[t]){case o.TBODY:case o.THEAD:case o.TFOOT:return!0;case o.TABLE:case o.HTML:return!1}return!0}hasInSelectScope(t){for(let r=this.stackTop;r>=0;r--)if(this.treeAdapter.getNamespaceURI(this.items[r])===H.HTML)switch(this.tagIDs[r]){case t:return!0;case o.OPTION:case o.OPTGROUP:break;default:return!1}return!0}generateImpliedEndTags(){for(;this.currentTagId!==void 0&&hc.has(this.currentTagId);)this.pop()}generateImpliedEndTagsThoroughly(){for(;this.currentTagId!==void 0&&Is.has(this.currentTagId);)this.pop()}generateImpliedEndTagsWithExclusion(t){for(;this.currentTagId!==void 0&&this.currentTagId!==t&&Is.has(this.currentTagId);)this.pop()}}const ga=3;var St;(function(e){e[e.Marker=0]="Marker",e[e.Element=1]="Element"})(St||(St={}));const Os={type:St.Marker};class Pp{constructor(t){this.treeAdapter=t,this.entries=[],this.bookmark=null}_getNoahArkConditionCandidates(t,r){const n=[],a=r.length,i=this.treeAdapter.getTagName(t),u=this.treeAdapter.getNamespaceURI(t);for(let s=0;s[u.name,u.value]));let i=0;for(let u=0;ua.get(l.name)===l.value)&&(i+=1,i>=ga&&this.entries.splice(s.idx,1))}}insertMarker(){this.entries.unshift(Os)}pushElement(t,r){this._ensureNoahArkCondition(t),this.entries.unshift({type:St.Element,element:t,token:r})}insertElementAfterBookmark(t,r){const n=this.entries.indexOf(this.bookmark);this.entries.splice(n,0,{type:St.Element,element:t,token:r})}removeEntry(t){const r=this.entries.indexOf(t);r!==-1&&this.entries.splice(r,1)}clearToLastMarker(){const t=this.entries.indexOf(Os);t===-1?this.entries.length=0:this.entries.splice(0,t+1)}getElementEntryInScopeWithTagName(t){const r=this.entries.find(n=>n.type===St.Marker||this.treeAdapter.getTagName(n.element)===t);return r&&r.type===St.Element?r:null}getElementEntry(t){return this.entries.find(r=>r.type===St.Element&&r.element===t)}}const $t={createDocument(){return{nodeName:"#document",mode:pt.NO_QUIRKS,childNodes:[]}},createDocumentFragment(){return{nodeName:"#document-fragment",childNodes:[]}},createElement(e,t,r){return{nodeName:e,tagName:e,attrs:r,namespaceURI:t,childNodes:[],parentNode:null}},createCommentNode(e){return{nodeName:"#comment",data:e,parentNode:null}},createTextNode(e){return{nodeName:"#text",value:e,parentNode:null}},appendChild(e,t){e.childNodes.push(t),t.parentNode=e},insertBefore(e,t,r){const n=e.childNodes.indexOf(r);e.childNodes.splice(n,0,t),t.parentNode=e},setTemplateContent(e,t){e.content=t},getTemplateContent(e){return e.content},setDocumentType(e,t,r,n){const a=e.childNodes.find(i=>i.nodeName==="#documentType");if(a)a.name=t,a.publicId=r,a.systemId=n;else{const i={nodeName:"#documentType",name:t,publicId:r,systemId:n,parentNode:null};$t.appendChild(e,i)}},setDocumentMode(e,t){e.mode=t},getDocumentMode(e){return e.mode},detachNode(e){if(e.parentNode){const t=e.parentNode.childNodes.indexOf(e);e.parentNode.childNodes.splice(t,1),e.parentNode=null}},insertText(e,t){if(e.childNodes.length>0){const r=e.childNodes[e.childNodes.length-1];if($t.isTextNode(r)){r.value+=t;return}}$t.appendChild(e,$t.createTextNode(t))},insertTextBefore(e,t,r){const n=e.childNodes[e.childNodes.indexOf(r)-1];n&&$t.isTextNode(n)?n.value+=t:$t.insertBefore(e,$t.createTextNode(t),r)},adoptAttributes(e,t){const r=new Set(e.attrs.map(n=>n.name));for(let n=0;ne.startsWith(r))}function qp(e){return e.name===dc&&e.publicId===null&&(e.systemId===null||e.systemId===Bp)}function Yp(e){if(e.name!==dc)return pt.QUIRKS;const{systemId:t}=e;if(t&&t.toLowerCase()===Fp)return pt.QUIRKS;let{publicId:r}=e;if(r!==null){if(r=r.toLowerCase(),zp.has(r))return pt.QUIRKS;let n=t===null?Hp:fc;if(Ls(r,n))return pt.QUIRKS;if(n=t===null?mc:Up,Ls(r,n))return pt.LIMITED_QUIRKS}return pt.NO_QUIRKS}const Rs={TEXT_HTML:"text/html",APPLICATION_XML:"application/xhtml+xml"},Gp="definitionurl",Vp="definitionURL",jp=new Map(["attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map(e=>[e.toLowerCase(),e])),Wp=new Map([["xlink:actuate",{prefix:"xlink",name:"actuate",namespace:H.XLINK}],["xlink:arcrole",{prefix:"xlink",name:"arcrole",namespace:H.XLINK}],["xlink:href",{prefix:"xlink",name:"href",namespace:H.XLINK}],["xlink:role",{prefix:"xlink",name:"role",namespace:H.XLINK}],["xlink:show",{prefix:"xlink",name:"show",namespace:H.XLINK}],["xlink:title",{prefix:"xlink",name:"title",namespace:H.XLINK}],["xlink:type",{prefix:"xlink",name:"type",namespace:H.XLINK}],["xml:lang",{prefix:"xml",name:"lang",namespace:H.XML}],["xml:space",{prefix:"xml",name:"space",namespace:H.XML}],["xmlns",{prefix:"",name:"xmlns",namespace:H.XMLNS}],["xmlns:xlink",{prefix:"xmlns",name:"xlink",namespace:H.XMLNS}]]),Xp=new Map(["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","textPath"].map(e=>[e.toLowerCase(),e])),$p=new Set([o.B,o.BIG,o.BLOCKQUOTE,o.BODY,o.BR,o.CENTER,o.CODE,o.DD,o.DIV,o.DL,o.DT,o.EM,o.EMBED,o.H1,o.H2,o.H3,o.H4,o.H5,o.H6,o.HEAD,o.HR,o.I,o.IMG,o.LI,o.LISTING,o.MENU,o.META,o.NOBR,o.OL,o.P,o.PRE,o.RUBY,o.S,o.SMALL,o.SPAN,o.STRONG,o.STRIKE,o.SUB,o.SUP,o.TABLE,o.TT,o.U,o.UL,o.VAR]);function Qp(e){const t=e.tagID;return t===o.FONT&&e.attrs.some(({name:n})=>n===mr.COLOR||n===mr.SIZE||n===mr.FACE)||$p.has(t)}function pc(e){for(let t=0;t0&&this._setContextModes(t,r)}onItemPop(t,r){var n,a;if(this.options.sourceCodeLocationInfo&&this._setEndLocation(t,this.currentToken),(a=(n=this.treeAdapter).onItemPop)===null||a===void 0||a.call(n,t,this.openElements.current),r){let i,u;this.openElements.stackTop===0&&this.fragmentContext?(i=this.fragmentContext,u=this.fragmentContextID):{current:i,currentTagId:u}=this.openElements,this._setContextModes(i,u)}}_setContextModes(t,r){const n=t===this.document||t&&this.treeAdapter.getNamespaceURI(t)===H.HTML;this.currentNotInHTML=!n,this.tokenizer.inForeignNode=!n&&t!==void 0&&r!==void 0&&!this._isIntegrationPoint(r,t)}_switchToTextParsing(t,r){this._insertElement(t,H.HTML),this.tokenizer.state=r,this.originalInsertionMode=this.insertionMode,this.insertionMode=k.TEXT}switchToPlaintextParsing(){this.insertionMode=k.TEXT,this.originalInsertionMode=k.IN_BODY,this.tokenizer.state=De.PLAINTEXT}_getAdjustedCurrentElement(){return this.openElements.stackTop===0&&this.fragmentContext?this.fragmentContext:this.openElements.current}_findFormInFragmentContext(){let t=this.fragmentContext;for(;t;){if(this.treeAdapter.getTagName(t)===O.FORM){this.formElement=t;break}t=this.treeAdapter.getParentNode(t)}}_initTokenizerForFragmentParsing(){if(!(!this.fragmentContext||this.treeAdapter.getNamespaceURI(this.fragmentContext)!==H.HTML))switch(this.fragmentContextID){case o.TITLE:case o.TEXTAREA:{this.tokenizer.state=De.RCDATA;break}case o.STYLE:case o.XMP:case o.IFRAME:case o.NOEMBED:case o.NOFRAMES:case o.NOSCRIPT:{this.tokenizer.state=De.RAWTEXT;break}case o.SCRIPT:{this.tokenizer.state=De.SCRIPT_DATA;break}case o.PLAINTEXT:{this.tokenizer.state=De.PLAINTEXT;break}}}_setDocumentType(t){const r=t.name||"",n=t.publicId||"",a=t.systemId||"";if(this.treeAdapter.setDocumentType(this.document,r,n,a),t.location){const u=this.treeAdapter.getChildNodes(this.document).find(s=>this.treeAdapter.isDocumentTypeNode(s));u&&this.treeAdapter.setNodeSourceCodeLocation(u,t.location)}}_attachElementToTree(t,r){if(this.options.sourceCodeLocationInfo){const n=r&&{...r,startTag:r};this.treeAdapter.setNodeSourceCodeLocation(t,n)}if(this._shouldFosterParentOnInsertion())this._fosterParentElement(t);else{const n=this.openElements.currentTmplContentOrNode;this.treeAdapter.appendChild(n??this.document,t)}}_appendElement(t,r){const n=this.treeAdapter.createElement(t.tagName,r,t.attrs);this._attachElementToTree(n,t.location)}_insertElement(t,r){const n=this.treeAdapter.createElement(t.tagName,r,t.attrs);this._attachElementToTree(n,t.location),this.openElements.push(n,t.tagID)}_insertFakeElement(t,r){const n=this.treeAdapter.createElement(t,H.HTML,[]);this._attachElementToTree(n,null),this.openElements.push(n,r)}_insertTemplate(t){const r=this.treeAdapter.createElement(t.tagName,H.HTML,t.attrs),n=this.treeAdapter.createDocumentFragment();this.treeAdapter.setTemplateContent(r,n),this._attachElementToTree(r,t.location),this.openElements.push(r,t.tagID),this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(n,null)}_insertFakeRootElement(){const t=this.treeAdapter.createElement(O.HTML,H.HTML,[]);this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(t,null),this.treeAdapter.appendChild(this.openElements.current,t),this.openElements.push(t,o.HTML)}_appendCommentNode(t,r){const n=this.treeAdapter.createCommentNode(t.data);this.treeAdapter.appendChild(r,n),this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(n,t.location)}_insertCharacters(t){let r,n;if(this._shouldFosterParentOnInsertion()?({parent:r,beforeElement:n}=this._findFosterParentingLocation(),n?this.treeAdapter.insertTextBefore(r,t.chars,n):this.treeAdapter.insertText(r,t.chars)):(r=this.openElements.currentTmplContentOrNode,this.treeAdapter.insertText(r,t.chars)),!t.location)return;const a=this.treeAdapter.getChildNodes(r),i=n?a.lastIndexOf(n):a.length,u=a[i-1];if(this.treeAdapter.getNodeSourceCodeLocation(u)){const{endLine:l,endCol:c,endOffset:d}=t.location;this.treeAdapter.updateNodeSourceCodeLocation(u,{endLine:l,endCol:c,endOffset:d})}else this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(u,t.location)}_adoptNodes(t,r){for(let n=this.treeAdapter.getFirstChild(t);n;n=this.treeAdapter.getFirstChild(t))this.treeAdapter.detachNode(n),this.treeAdapter.appendChild(r,n)}_setEndLocation(t,r){if(this.treeAdapter.getNodeSourceCodeLocation(t)&&r.location){const n=r.location,a=this.treeAdapter.getTagName(t),i=r.type===de.END_TAG&&a===r.tagName?{endTag:{...n},endLine:n.endLine,endCol:n.endCol,endOffset:n.endOffset}:{endLine:n.startLine,endCol:n.startCol,endOffset:n.startOffset};this.treeAdapter.updateNodeSourceCodeLocation(t,i)}}shouldProcessStartTagTokenInForeignContent(t){if(!this.currentNotInHTML)return!1;let r,n;return this.openElements.stackTop===0&&this.fragmentContext?(r=this.fragmentContext,n=this.fragmentContextID):{current:r,currentTagId:n}=this.openElements,t.tagID===o.SVG&&this.treeAdapter.getTagName(r)===O.ANNOTATION_XML&&this.treeAdapter.getNamespaceURI(r)===H.MATHML?!1:this.tokenizer.inForeignNode||(t.tagID===o.MGLYPH||t.tagID===o.MALIGNMARK)&&n!==void 0&&!this._isIntegrationPoint(n,r,H.HTML)}_processToken(t){switch(t.type){case de.CHARACTER:{this.onCharacter(t);break}case de.NULL_CHARACTER:{this.onNullCharacter(t);break}case de.COMMENT:{this.onComment(t);break}case de.DOCTYPE:{this.onDoctype(t);break}case de.START_TAG:{this._processStartTag(t);break}case de.END_TAG:{this.onEndTag(t);break}case de.EOF:{this.onEof(t);break}case de.WHITESPACE_CHARACTER:{this.onWhitespaceCharacter(t);break}}}_isIntegrationPoint(t,r,n){const a=this.treeAdapter.getNamespaceURI(r),i=this.treeAdapter.getAttrList(r);return e5(t,a,i,n)}_reconstructActiveFormattingElements(){const t=this.activeFormattingElements.entries.length;if(t){const r=this.activeFormattingElements.entries.findIndex(a=>a.type===St.Marker||this.openElements.contains(a.element)),n=r===-1?t-1:r-1;for(let a=n;a>=0;a--){const i=this.activeFormattingElements.entries[a];this._insertElement(i.token,this.treeAdapter.getNamespaceURI(i.element)),i.element=this.openElements.current}}}_closeTableCell(){this.openElements.generateImpliedEndTags(),this.openElements.popUntilTableCellPopped(),this.activeFormattingElements.clearToLastMarker(),this.insertionMode=k.IN_ROW}_closePElement(){this.openElements.generateImpliedEndTagsWithExclusion(o.P),this.openElements.popUntilTagNamePopped(o.P)}_resetInsertionMode(){for(let t=this.openElements.stackTop;t>=0;t--)switch(t===0&&this.fragmentContext?this.fragmentContextID:this.openElements.tagIDs[t]){case o.TR:{this.insertionMode=k.IN_ROW;return}case o.TBODY:case o.THEAD:case o.TFOOT:{this.insertionMode=k.IN_TABLE_BODY;return}case o.CAPTION:{this.insertionMode=k.IN_CAPTION;return}case o.COLGROUP:{this.insertionMode=k.IN_COLUMN_GROUP;return}case o.TABLE:{this.insertionMode=k.IN_TABLE;return}case o.BODY:{this.insertionMode=k.IN_BODY;return}case o.FRAMESET:{this.insertionMode=k.IN_FRAMESET;return}case o.SELECT:{this._resetInsertionModeForSelect(t);return}case o.TEMPLATE:{this.insertionMode=this.tmplInsertionModeStack[0];return}case o.HTML:{this.insertionMode=this.headElement?k.AFTER_HEAD:k.BEFORE_HEAD;return}case o.TD:case o.TH:{if(t>0){this.insertionMode=k.IN_CELL;return}break}case o.HEAD:{if(t>0){this.insertionMode=k.IN_HEAD;return}break}}this.insertionMode=k.IN_BODY}_resetInsertionModeForSelect(t){if(t>0)for(let r=t-1;r>0;r--){const n=this.openElements.tagIDs[r];if(n===o.TEMPLATE)break;if(n===o.TABLE){this.insertionMode=k.IN_SELECT_IN_TABLE;return}}this.insertionMode=k.IN_SELECT}_isElementCausesFosterParenting(t){return bc.has(t)}_shouldFosterParentOnInsertion(){return this.fosterParentingEnabled&&this.openElements.currentTagId!==void 0&&this._isElementCausesFosterParenting(this.openElements.currentTagId)}_findFosterParentingLocation(){for(let t=this.openElements.stackTop;t>=0;t--){const r=this.openElements.items[t];switch(this.openElements.tagIDs[t]){case o.TEMPLATE:{if(this.treeAdapter.getNamespaceURI(r)===H.HTML)return{parent:this.treeAdapter.getTemplateContent(r),beforeElement:null};break}case o.TABLE:{const n=this.treeAdapter.getParentNode(r);return n?{parent:n,beforeElement:r}:{parent:this.openElements.items[t-1],beforeElement:null}}}}return{parent:this.openElements.items[0],beforeElement:null}}_fosterParentElement(t){const r=this._findFosterParentingLocation();r.beforeElement?this.treeAdapter.insertBefore(r.parent,t,r.beforeElement):this.treeAdapter.appendChild(r.parent,t)}_isSpecialElement(t,r){const n=this.treeAdapter.getNamespaceURI(t);return kp[n].has(r)}onCharacter(t){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){R7(this,t);return}switch(this.insertionMode){case k.INITIAL:{Zr(this,t);break}case k.BEFORE_HTML:{ln(this,t);break}case k.BEFORE_HEAD:{on(this,t);break}case k.IN_HEAD:{cn(this,t);break}case k.IN_HEAD_NO_SCRIPT:{hn(this,t);break}case k.AFTER_HEAD:{dn(this,t);break}case k.IN_BODY:case k.IN_CAPTION:case k.IN_CELL:case k.IN_TEMPLATE:{Tc(this,t);break}case k.TEXT:case k.IN_SELECT:case k.IN_SELECT_IN_TABLE:{this._insertCharacters(t);break}case k.IN_TABLE:case k.IN_TABLE_BODY:case k.IN_ROW:{ba(this,t);break}case k.IN_TABLE_TEXT:{Sc(this,t);break}case k.IN_COLUMN_GROUP:{l0(this,t);break}case k.AFTER_BODY:{o0(this,t);break}case k.AFTER_AFTER_BODY:{Jn(this,t);break}}}onNullCharacter(t){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){L7(this,t);return}switch(this.insertionMode){case k.INITIAL:{Zr(this,t);break}case k.BEFORE_HTML:{ln(this,t);break}case k.BEFORE_HEAD:{on(this,t);break}case k.IN_HEAD:{cn(this,t);break}case k.IN_HEAD_NO_SCRIPT:{hn(this,t);break}case k.AFTER_HEAD:{dn(this,t);break}case k.TEXT:{this._insertCharacters(t);break}case k.IN_TABLE:case k.IN_TABLE_BODY:case k.IN_ROW:{ba(this,t);break}case k.IN_COLUMN_GROUP:{l0(this,t);break}case k.AFTER_BODY:{o0(this,t);break}case k.AFTER_AFTER_BODY:{Jn(this,t);break}}}onComment(t){if(this.skipNextNewLine=!1,this.currentNotInHTML){Ka(this,t);return}switch(this.insertionMode){case k.INITIAL:case k.BEFORE_HTML:case k.BEFORE_HEAD:case k.IN_HEAD:case k.IN_HEAD_NO_SCRIPT:case k.AFTER_HEAD:case k.IN_BODY:case k.IN_TABLE:case k.IN_CAPTION:case k.IN_COLUMN_GROUP:case k.IN_TABLE_BODY:case k.IN_ROW:case k.IN_CELL:case k.IN_SELECT:case k.IN_SELECT_IN_TABLE:case k.IN_TEMPLATE:case k.IN_FRAMESET:case k.AFTER_FRAMESET:{Ka(this,t);break}case k.IN_TABLE_TEXT:{en(this,t);break}case k.AFTER_BODY:{h5(this,t);break}case k.AFTER_AFTER_BODY:case k.AFTER_AFTER_FRAMESET:{d5(this,t);break}}}onDoctype(t){switch(this.skipNextNewLine=!1,this.insertionMode){case k.INITIAL:{f5(this,t);break}case k.BEFORE_HEAD:case k.IN_HEAD:case k.IN_HEAD_NO_SCRIPT:case k.AFTER_HEAD:{this._err(t,P.misplacedDoctype);break}case k.IN_TABLE_TEXT:{en(this,t);break}}}onStartTag(t){this.skipNextNewLine=!1,this.currentToken=t,this._processStartTag(t),t.selfClosing&&!t.ackSelfClosing&&this._err(t,P.nonVoidHtmlElementStartTagWithTrailingSolidus)}_processStartTag(t){this.shouldProcessStartTagTokenInForeignContent(t)?M7(this,t):this._startTagOutsideForeignContent(t)}_startTagOutsideForeignContent(t){switch(this.insertionMode){case k.INITIAL:{Zr(this,t);break}case k.BEFORE_HTML:{m5(this,t);break}case k.BEFORE_HEAD:{g5(this,t);break}case k.IN_HEAD:{yt(this,t);break}case k.IN_HEAD_NO_SCRIPT:{T5(this,t);break}case k.AFTER_HEAD:{y5(this,t);break}case k.IN_BODY:{We(this,t);break}case k.IN_TABLE:{Rr(this,t);break}case k.IN_TABLE_TEXT:{en(this,t);break}case k.IN_CAPTION:{b7(this,t);break}case k.IN_COLUMN_GROUP:{Bi(this,t);break}case k.IN_TABLE_BODY:{O0(this,t);break}case k.IN_ROW:{L0(this,t);break}case k.IN_CELL:{x7(this,t);break}case k.IN_SELECT:{_c(this,t);break}case k.IN_SELECT_IN_TABLE:{v7(this,t);break}case k.IN_TEMPLATE:{k7(this,t);break}case k.AFTER_BODY:{w7(this,t);break}case k.IN_FRAMESET:{C7(this,t);break}case k.AFTER_FRAMESET:{I7(this,t);break}case k.AFTER_AFTER_BODY:{D7(this,t);break}case k.AFTER_AFTER_FRAMESET:{O7(this,t);break}}}onEndTag(t){this.skipNextNewLine=!1,this.currentToken=t,this.currentNotInHTML?P7(this,t):this._endTagOutsideForeignContent(t)}_endTagOutsideForeignContent(t){switch(this.insertionMode){case k.INITIAL:{Zr(this,t);break}case k.BEFORE_HTML:{p5(this,t);break}case k.BEFORE_HEAD:{b5(this,t);break}case k.IN_HEAD:{E5(this,t);break}case k.IN_HEAD_NO_SCRIPT:{x5(this,t);break}case k.AFTER_HEAD:{v5(this,t);break}case k.IN_BODY:{D0(this,t);break}case k.TEXT:{s7(this,t);break}case k.IN_TABLE:{En(this,t);break}case k.IN_TABLE_TEXT:{en(this,t);break}case k.IN_CAPTION:{E7(this,t);break}case k.IN_COLUMN_GROUP:{T7(this,t);break}case k.IN_TABLE_BODY:{Ja(this,t);break}case k.IN_ROW:{Cc(this,t);break}case k.IN_CELL:{y7(this,t);break}case k.IN_SELECT:{Ic(this,t);break}case k.IN_SELECT_IN_TABLE:{A7(this,t);break}case k.IN_TEMPLATE:{S7(this,t);break}case k.AFTER_BODY:{Dc(this,t);break}case k.IN_FRAMESET:{_7(this,t);break}case k.AFTER_FRAMESET:{N7(this,t);break}case k.AFTER_AFTER_BODY:{Jn(this,t);break}}}onEof(t){switch(this.insertionMode){case k.INITIAL:{Zr(this,t);break}case k.BEFORE_HTML:{ln(this,t);break}case k.BEFORE_HEAD:{on(this,t);break}case k.IN_HEAD:{cn(this,t);break}case k.IN_HEAD_NO_SCRIPT:{hn(this,t);break}case k.AFTER_HEAD:{dn(this,t);break}case k.IN_BODY:case k.IN_TABLE:case k.IN_CAPTION:case k.IN_COLUMN_GROUP:case k.IN_TABLE_BODY:case k.IN_ROW:case k.IN_CELL:case k.IN_SELECT:case k.IN_SELECT_IN_TABLE:{Ac(this,t);break}case k.TEXT:{l7(this,t);break}case k.IN_TABLE_TEXT:{en(this,t);break}case k.IN_TEMPLATE:{Nc(this,t);break}case k.AFTER_BODY:case k.IN_FRAMESET:case k.AFTER_FRAMESET:case k.AFTER_AFTER_BODY:case k.AFTER_AFTER_FRAMESET:{Pi(this,t);break}}}onWhitespaceCharacter(t){if(this.skipNextNewLine&&(this.skipNextNewLine=!1,t.chars.charCodeAt(0)===T.LINE_FEED)){if(t.chars.length===1)return;t.chars=t.chars.substr(1)}if(this.tokenizer.inForeignNode){this._insertCharacters(t);return}switch(this.insertionMode){case k.IN_HEAD:case k.IN_HEAD_NO_SCRIPT:case k.AFTER_HEAD:case k.TEXT:case k.IN_COLUMN_GROUP:case k.IN_SELECT:case k.IN_SELECT_IN_TABLE:case k.IN_FRAMESET:case k.AFTER_FRAMESET:{this._insertCharacters(t);break}case k.IN_BODY:case k.IN_CAPTION:case k.IN_CELL:case k.IN_TEMPLATE:case k.AFTER_BODY:case k.AFTER_AFTER_BODY:case k.AFTER_AFTER_FRAMESET:{Ec(this,t);break}case k.IN_TABLE:case k.IN_TABLE_BODY:case k.IN_ROW:{ba(this,t);break}case k.IN_TABLE_TEXT:{kc(this,t);break}}}}function i5(e,t){let r=e.activeFormattingElements.getElementEntryInScopeWithTagName(t.tagName);return r?e.openElements.contains(r.element)?e.openElements.hasInScope(t.tagID)||(r=null):(e.activeFormattingElements.removeEntry(r),r=null):vc(e,t),r}function u5(e,t){let r=null,n=e.openElements.stackTop;for(;n>=0;n--){const a=e.openElements.items[n];if(a===t.element)break;e._isSpecialElement(a,e.openElements.tagIDs[n])&&(r=a)}return r||(e.openElements.shortenToLength(Math.max(n,0)),e.activeFormattingElements.removeEntry(t)),r}function s5(e,t,r){let n=t,a=e.openElements.getCommonAncestor(t);for(let i=0,u=a;u!==r;i++,u=a){a=e.openElements.getCommonAncestor(u);const s=e.activeFormattingElements.getElementEntry(u),l=s&&i>=n5;!s||l?(l&&e.activeFormattingElements.removeEntry(s),e.openElements.remove(u)):(u=l5(e,s),n===t&&(e.activeFormattingElements.bookmark=s),e.treeAdapter.detachNode(n),e.treeAdapter.appendChild(u,n),n=u)}return n}function l5(e,t){const r=e.treeAdapter.getNamespaceURI(t.element),n=e.treeAdapter.createElement(t.token.tagName,r,t.token.attrs);return e.openElements.replace(t.element,n),t.element=n,n}function o5(e,t,r){const n=e.treeAdapter.getTagName(t),a=qr(n);if(e._isElementCausesFosterParenting(a))e._fosterParentElement(r);else{const i=e.treeAdapter.getNamespaceURI(t);a===o.TEMPLATE&&i===H.HTML&&(t=e.treeAdapter.getTemplateContent(t)),e.treeAdapter.appendChild(t,r)}}function c5(e,t,r){const n=e.treeAdapter.getNamespaceURI(r.element),{token:a}=r,i=e.treeAdapter.createElement(a.tagName,n,a.attrs);e._adoptNodes(t,i),e.treeAdapter.appendChild(t,i),e.activeFormattingElements.insertElementAfterBookmark(i,a),e.activeFormattingElements.removeEntry(r),e.openElements.remove(r.element),e.openElements.insertAfter(t,i,a.tagID)}function Mi(e,t){for(let r=0;r=r;n--)e._setEndLocation(e.openElements.items[n],t);if(!e.fragmentContext&&e.openElements.stackTop>=0){const n=e.openElements.items[0],a=e.treeAdapter.getNodeSourceCodeLocation(n);if(a&&!a.endTag&&(e._setEndLocation(n,t),e.openElements.stackTop>=1)){const i=e.openElements.items[1],u=e.treeAdapter.getNodeSourceCodeLocation(i);u&&!u.endTag&&e._setEndLocation(i,t)}}}}function f5(e,t){e._setDocumentType(t);const r=t.forceQuirks?pt.QUIRKS:Yp(t);qp(t)||e._err(t,P.nonConformingDoctype),e.treeAdapter.setDocumentMode(e.document,r),e.insertionMode=k.BEFORE_HTML}function Zr(e,t){e._err(t,P.missingDoctype,!0),e.treeAdapter.setDocumentMode(e.document,pt.QUIRKS),e.insertionMode=k.BEFORE_HTML,e._processToken(t)}function m5(e,t){t.tagID===o.HTML?(e._insertElement(t,H.HTML),e.insertionMode=k.BEFORE_HEAD):ln(e,t)}function p5(e,t){const r=t.tagID;(r===o.HTML||r===o.HEAD||r===o.BODY||r===o.BR)&&ln(e,t)}function ln(e,t){e._insertFakeRootElement(),e.insertionMode=k.BEFORE_HEAD,e._processToken(t)}function g5(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.HEAD:{e._insertElement(t,H.HTML),e.headElement=e.openElements.current,e.insertionMode=k.IN_HEAD;break}default:on(e,t)}}function b5(e,t){const r=t.tagID;r===o.HEAD||r===o.BODY||r===o.HTML||r===o.BR?on(e,t):e._err(t,P.endTagWithoutMatchingOpenElement)}function on(e,t){e._insertFakeElement(O.HEAD,o.HEAD),e.headElement=e.openElements.current,e.insertionMode=k.IN_HEAD,e._processToken(t)}function yt(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.BASE:case o.BASEFONT:case o.BGSOUND:case o.LINK:case o.META:{e._appendElement(t,H.HTML),t.ackSelfClosing=!0;break}case o.TITLE:{e._switchToTextParsing(t,De.RCDATA);break}case o.NOSCRIPT:{e.options.scriptingEnabled?e._switchToTextParsing(t,De.RAWTEXT):(e._insertElement(t,H.HTML),e.insertionMode=k.IN_HEAD_NO_SCRIPT);break}case o.NOFRAMES:case o.STYLE:{e._switchToTextParsing(t,De.RAWTEXT);break}case o.SCRIPT:{e._switchToTextParsing(t,De.SCRIPT_DATA);break}case o.TEMPLATE:{e._insertTemplate(t),e.activeFormattingElements.insertMarker(),e.framesetOk=!1,e.insertionMode=k.IN_TEMPLATE,e.tmplInsertionModeStack.unshift(k.IN_TEMPLATE);break}case o.HEAD:{e._err(t,P.misplacedStartTagForHeadElement);break}default:cn(e,t)}}function E5(e,t){switch(t.tagID){case o.HEAD:{e.openElements.pop(),e.insertionMode=k.AFTER_HEAD;break}case o.BODY:case o.BR:case o.HTML:{cn(e,t);break}case o.TEMPLATE:{Tr(e,t);break}default:e._err(t,P.endTagWithoutMatchingOpenElement)}}function Tr(e,t){e.openElements.tmplCount>0?(e.openElements.generateImpliedEndTagsThoroughly(),e.openElements.currentTagId!==o.TEMPLATE&&e._err(t,P.closingOfElementWithOpenChildElements),e.openElements.popUntilTagNamePopped(o.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e.tmplInsertionModeStack.shift(),e._resetInsertionMode()):e._err(t,P.endTagWithoutMatchingOpenElement)}function cn(e,t){e.openElements.pop(),e.insertionMode=k.AFTER_HEAD,e._processToken(t)}function T5(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.BASEFONT:case o.BGSOUND:case o.HEAD:case o.LINK:case o.META:case o.NOFRAMES:case o.STYLE:{yt(e,t);break}case o.NOSCRIPT:{e._err(t,P.nestedNoscriptInHead);break}default:hn(e,t)}}function x5(e,t){switch(t.tagID){case o.NOSCRIPT:{e.openElements.pop(),e.insertionMode=k.IN_HEAD;break}case o.BR:{hn(e,t);break}default:e._err(t,P.endTagWithoutMatchingOpenElement)}}function hn(e,t){const r=t.type===de.EOF?P.openElementsLeftAfterEof:P.disallowedContentInNoscriptInHead;e._err(t,r),e.openElements.pop(),e.insertionMode=k.IN_HEAD,e._processToken(t)}function y5(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.BODY:{e._insertElement(t,H.HTML),e.framesetOk=!1,e.insertionMode=k.IN_BODY;break}case o.FRAMESET:{e._insertElement(t,H.HTML),e.insertionMode=k.IN_FRAMESET;break}case o.BASE:case o.BASEFONT:case o.BGSOUND:case o.LINK:case o.META:case o.NOFRAMES:case o.SCRIPT:case o.STYLE:case o.TEMPLATE:case o.TITLE:{e._err(t,P.abandonedHeadElementChild),e.openElements.push(e.headElement,o.HEAD),yt(e,t),e.openElements.remove(e.headElement);break}case o.HEAD:{e._err(t,P.misplacedStartTagForHeadElement);break}default:dn(e,t)}}function v5(e,t){switch(t.tagID){case o.BODY:case o.HTML:case o.BR:{dn(e,t);break}case o.TEMPLATE:{Tr(e,t);break}default:e._err(t,P.endTagWithoutMatchingOpenElement)}}function dn(e,t){e._insertFakeElement(O.BODY,o.BODY),e.insertionMode=k.IN_BODY,N0(e,t)}function N0(e,t){switch(t.type){case de.CHARACTER:{Tc(e,t);break}case de.WHITESPACE_CHARACTER:{Ec(e,t);break}case de.COMMENT:{Ka(e,t);break}case de.START_TAG:{We(e,t);break}case de.END_TAG:{D0(e,t);break}case de.EOF:{Ac(e,t);break}}}function Ec(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t)}function Tc(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t),e.framesetOk=!1}function A5(e,t){e.openElements.tmplCount===0&&e.treeAdapter.adoptAttributes(e.openElements.items[0],t.attrs)}function k5(e,t){const r=e.openElements.tryPeekProperlyNestedBodyElement();r&&e.openElements.tmplCount===0&&(e.framesetOk=!1,e.treeAdapter.adoptAttributes(r,t.attrs))}function S5(e,t){const r=e.openElements.tryPeekProperlyNestedBodyElement();e.framesetOk&&r&&(e.treeAdapter.detachNode(r),e.openElements.popAllUpToHtmlElement(),e._insertElement(t,H.HTML),e.insertionMode=k.IN_FRAMESET)}function w5(e,t){e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._insertElement(t,H.HTML)}function C5(e,t){e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e.openElements.currentTagId!==void 0&&Qa.has(e.openElements.currentTagId)&&e.openElements.pop(),e._insertElement(t,H.HTML)}function _5(e,t){e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._insertElement(t,H.HTML),e.skipNextNewLine=!0,e.framesetOk=!1}function I5(e,t){const r=e.openElements.tmplCount>0;(!e.formElement||r)&&(e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._insertElement(t,H.HTML),r||(e.formElement=e.openElements.current))}function N5(e,t){e.framesetOk=!1;const r=t.tagID;for(let n=e.openElements.stackTop;n>=0;n--){const a=e.openElements.tagIDs[n];if(r===o.LI&&a===o.LI||(r===o.DD||r===o.DT)&&(a===o.DD||a===o.DT)){e.openElements.generateImpliedEndTagsWithExclusion(a),e.openElements.popUntilTagNamePopped(a);break}if(a!==o.ADDRESS&&a!==o.DIV&&a!==o.P&&e._isSpecialElement(e.openElements.items[n],a))break}e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._insertElement(t,H.HTML)}function D5(e,t){e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._insertElement(t,H.HTML),e.tokenizer.state=De.PLAINTEXT}function O5(e,t){e.openElements.hasInScope(o.BUTTON)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(o.BUTTON)),e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML),e.framesetOk=!1}function L5(e,t){const r=e.activeFormattingElements.getElementEntryInScopeWithTagName(O.A);r&&(Mi(e,t),e.openElements.remove(r.element),e.activeFormattingElements.removeEntry(r)),e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}function R5(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}function M5(e,t){e._reconstructActiveFormattingElements(),e.openElements.hasInScope(o.NOBR)&&(Mi(e,t),e._reconstructActiveFormattingElements()),e._insertElement(t,H.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}function P5(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML),e.activeFormattingElements.insertMarker(),e.framesetOk=!1}function B5(e,t){e.treeAdapter.getDocumentMode(e.document)!==pt.QUIRKS&&e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._insertElement(t,H.HTML),e.framesetOk=!1,e.insertionMode=k.IN_TABLE}function xc(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,H.HTML),e.framesetOk=!1,t.ackSelfClosing=!0}function yc(e){const t=oc(e,mr.TYPE);return t!=null&&t.toLowerCase()===t5}function F5(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,H.HTML),yc(t)||(e.framesetOk=!1),t.ackSelfClosing=!0}function H5(e,t){e._appendElement(t,H.HTML),t.ackSelfClosing=!0}function z5(e,t){e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._appendElement(t,H.HTML),e.framesetOk=!1,t.ackSelfClosing=!0}function U5(e,t){t.tagName=O.IMG,t.tagID=o.IMG,xc(e,t)}function q5(e,t){e._insertElement(t,H.HTML),e.skipNextNewLine=!0,e.tokenizer.state=De.RCDATA,e.originalInsertionMode=e.insertionMode,e.framesetOk=!1,e.insertionMode=k.TEXT}function Y5(e,t){e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._reconstructActiveFormattingElements(),e.framesetOk=!1,e._switchToTextParsing(t,De.RAWTEXT)}function G5(e,t){e.framesetOk=!1,e._switchToTextParsing(t,De.RAWTEXT)}function Bs(e,t){e._switchToTextParsing(t,De.RAWTEXT)}function V5(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML),e.framesetOk=!1,e.insertionMode=e.insertionMode===k.IN_TABLE||e.insertionMode===k.IN_CAPTION||e.insertionMode===k.IN_TABLE_BODY||e.insertionMode===k.IN_ROW||e.insertionMode===k.IN_CELL?k.IN_SELECT_IN_TABLE:k.IN_SELECT}function j5(e,t){e.openElements.currentTagId===o.OPTION&&e.openElements.pop(),e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML)}function W5(e,t){e.openElements.hasInScope(o.RUBY)&&e.openElements.generateImpliedEndTags(),e._insertElement(t,H.HTML)}function X5(e,t){e.openElements.hasInScope(o.RUBY)&&e.openElements.generateImpliedEndTagsWithExclusion(o.RTC),e._insertElement(t,H.HTML)}function $5(e,t){e._reconstructActiveFormattingElements(),pc(t),Ri(t),t.selfClosing?e._appendElement(t,H.MATHML):e._insertElement(t,H.MATHML),t.ackSelfClosing=!0}function Q5(e,t){e._reconstructActiveFormattingElements(),gc(t),Ri(t),t.selfClosing?e._appendElement(t,H.SVG):e._insertElement(t,H.SVG),t.ackSelfClosing=!0}function Fs(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML)}function We(e,t){switch(t.tagID){case o.I:case o.S:case o.B:case o.U:case o.EM:case o.TT:case o.BIG:case o.CODE:case o.FONT:case o.SMALL:case o.STRIKE:case o.STRONG:{R5(e,t);break}case o.A:{L5(e,t);break}case o.H1:case o.H2:case o.H3:case o.H4:case o.H5:case o.H6:{C5(e,t);break}case o.P:case o.DL:case o.OL:case o.UL:case o.DIV:case o.DIR:case o.NAV:case o.MAIN:case o.MENU:case o.ASIDE:case o.CENTER:case o.FIGURE:case o.FOOTER:case o.HEADER:case o.HGROUP:case o.DIALOG:case o.DETAILS:case o.ADDRESS:case o.ARTICLE:case o.SEARCH:case o.SECTION:case o.SUMMARY:case o.FIELDSET:case o.BLOCKQUOTE:case o.FIGCAPTION:{w5(e,t);break}case o.LI:case o.DD:case o.DT:{N5(e,t);break}case o.BR:case o.IMG:case o.WBR:case o.AREA:case o.EMBED:case o.KEYGEN:{xc(e,t);break}case o.HR:{z5(e,t);break}case o.RB:case o.RTC:{W5(e,t);break}case o.RT:case o.RP:{X5(e,t);break}case o.PRE:case o.LISTING:{_5(e,t);break}case o.XMP:{Y5(e,t);break}case o.SVG:{Q5(e,t);break}case o.HTML:{A5(e,t);break}case o.BASE:case o.LINK:case o.META:case o.STYLE:case o.TITLE:case o.SCRIPT:case o.BGSOUND:case o.BASEFONT:case o.TEMPLATE:{yt(e,t);break}case o.BODY:{k5(e,t);break}case o.FORM:{I5(e,t);break}case o.NOBR:{M5(e,t);break}case o.MATH:{$5(e,t);break}case o.TABLE:{B5(e,t);break}case o.INPUT:{F5(e,t);break}case o.PARAM:case o.TRACK:case o.SOURCE:{H5(e,t);break}case o.IMAGE:{U5(e,t);break}case o.BUTTON:{O5(e,t);break}case o.APPLET:case o.OBJECT:case o.MARQUEE:{P5(e,t);break}case o.IFRAME:{G5(e,t);break}case o.SELECT:{V5(e,t);break}case o.OPTION:case o.OPTGROUP:{j5(e,t);break}case o.NOEMBED:case o.NOFRAMES:{Bs(e,t);break}case o.FRAMESET:{S5(e,t);break}case o.TEXTAREA:{q5(e,t);break}case o.NOSCRIPT:{e.options.scriptingEnabled?Bs(e,t):Fs(e,t);break}case o.PLAINTEXT:{D5(e,t);break}case o.COL:case o.TH:case o.TD:case o.TR:case o.HEAD:case o.FRAME:case o.TBODY:case o.TFOOT:case o.THEAD:case o.CAPTION:case o.COLGROUP:break;default:Fs(e,t)}}function K5(e,t){if(e.openElements.hasInScope(o.BODY)&&(e.insertionMode=k.AFTER_BODY,e.options.sourceCodeLocationInfo)){const r=e.openElements.tryPeekProperlyNestedBodyElement();r&&e._setEndLocation(r,t)}}function J5(e,t){e.openElements.hasInScope(o.BODY)&&(e.insertionMode=k.AFTER_BODY,Dc(e,t))}function Z5(e,t){const r=t.tagID;e.openElements.hasInScope(r)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(r))}function e7(e){const t=e.openElements.tmplCount>0,{formElement:r}=e;t||(e.formElement=null),(r||t)&&e.openElements.hasInScope(o.FORM)&&(e.openElements.generateImpliedEndTags(),t?e.openElements.popUntilTagNamePopped(o.FORM):r&&e.openElements.remove(r))}function t7(e){e.openElements.hasInButtonScope(o.P)||e._insertFakeElement(O.P,o.P),e._closePElement()}function r7(e){e.openElements.hasInListItemScope(o.LI)&&(e.openElements.generateImpliedEndTagsWithExclusion(o.LI),e.openElements.popUntilTagNamePopped(o.LI))}function n7(e,t){const r=t.tagID;e.openElements.hasInScope(r)&&(e.openElements.generateImpliedEndTagsWithExclusion(r),e.openElements.popUntilTagNamePopped(r))}function a7(e){e.openElements.hasNumberedHeaderInScope()&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilNumberedHeaderPopped())}function i7(e,t){const r=t.tagID;e.openElements.hasInScope(r)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(r),e.activeFormattingElements.clearToLastMarker())}function u7(e){e._reconstructActiveFormattingElements(),e._insertFakeElement(O.BR,o.BR),e.openElements.pop(),e.framesetOk=!1}function vc(e,t){const r=t.tagName,n=t.tagID;for(let a=e.openElements.stackTop;a>0;a--){const i=e.openElements.items[a],u=e.openElements.tagIDs[a];if(n===u&&(n!==o.UNKNOWN||e.treeAdapter.getTagName(i)===r)){e.openElements.generateImpliedEndTagsWithExclusion(n),e.openElements.stackTop>=a&&e.openElements.shortenToLength(a);break}if(e._isSpecialElement(i,u))break}}function D0(e,t){switch(t.tagID){case o.A:case o.B:case o.I:case o.S:case o.U:case o.EM:case o.TT:case o.BIG:case o.CODE:case o.FONT:case o.NOBR:case o.SMALL:case o.STRIKE:case o.STRONG:{Mi(e,t);break}case o.P:{t7(e);break}case o.DL:case o.UL:case o.OL:case o.DIR:case o.DIV:case o.NAV:case o.PRE:case o.MAIN:case o.MENU:case o.ASIDE:case o.BUTTON:case o.CENTER:case o.FIGURE:case o.FOOTER:case o.HEADER:case o.HGROUP:case o.DIALOG:case o.ADDRESS:case o.ARTICLE:case o.DETAILS:case o.SEARCH:case o.SECTION:case o.SUMMARY:case o.LISTING:case o.FIELDSET:case o.BLOCKQUOTE:case o.FIGCAPTION:{Z5(e,t);break}case o.LI:{r7(e);break}case o.DD:case o.DT:{n7(e,t);break}case o.H1:case o.H2:case o.H3:case o.H4:case o.H5:case o.H6:{a7(e);break}case o.BR:{u7(e);break}case o.BODY:{K5(e,t);break}case o.HTML:{J5(e,t);break}case o.FORM:{e7(e);break}case o.APPLET:case o.OBJECT:case o.MARQUEE:{i7(e,t);break}case o.TEMPLATE:{Tr(e,t);break}default:vc(e,t)}}function Ac(e,t){e.tmplInsertionModeStack.length>0?Nc(e,t):Pi(e,t)}function s7(e,t){var r;t.tagID===o.SCRIPT&&((r=e.scriptHandler)===null||r===void 0||r.call(e,e.openElements.current)),e.openElements.pop(),e.insertionMode=e.originalInsertionMode}function l7(e,t){e._err(t,P.eofInElementThatCanContainOnlyText),e.openElements.pop(),e.insertionMode=e.originalInsertionMode,e.onEof(t)}function ba(e,t){if(e.openElements.currentTagId!==void 0&&bc.has(e.openElements.currentTagId))switch(e.pendingCharacterTokens.length=0,e.hasNonWhitespacePendingCharacterToken=!1,e.originalInsertionMode=e.insertionMode,e.insertionMode=k.IN_TABLE_TEXT,t.type){case de.CHARACTER:{Sc(e,t);break}case de.WHITESPACE_CHARACTER:{kc(e,t);break}}else wn(e,t)}function o7(e,t){e.openElements.clearBackToTableContext(),e.activeFormattingElements.insertMarker(),e._insertElement(t,H.HTML),e.insertionMode=k.IN_CAPTION}function c7(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,H.HTML),e.insertionMode=k.IN_COLUMN_GROUP}function h7(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(O.COLGROUP,o.COLGROUP),e.insertionMode=k.IN_COLUMN_GROUP,Bi(e,t)}function d7(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,H.HTML),e.insertionMode=k.IN_TABLE_BODY}function f7(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(O.TBODY,o.TBODY),e.insertionMode=k.IN_TABLE_BODY,O0(e,t)}function m7(e,t){e.openElements.hasInTableScope(o.TABLE)&&(e.openElements.popUntilTagNamePopped(o.TABLE),e._resetInsertionMode(),e._processStartTag(t))}function p7(e,t){yc(t)?e._appendElement(t,H.HTML):wn(e,t),t.ackSelfClosing=!0}function g7(e,t){!e.formElement&&e.openElements.tmplCount===0&&(e._insertElement(t,H.HTML),e.formElement=e.openElements.current,e.openElements.pop())}function Rr(e,t){switch(t.tagID){case o.TD:case o.TH:case o.TR:{f7(e,t);break}case o.STYLE:case o.SCRIPT:case o.TEMPLATE:{yt(e,t);break}case o.COL:{h7(e,t);break}case o.FORM:{g7(e,t);break}case o.TABLE:{m7(e,t);break}case o.TBODY:case o.TFOOT:case o.THEAD:{d7(e,t);break}case o.INPUT:{p7(e,t);break}case o.CAPTION:{o7(e,t);break}case o.COLGROUP:{c7(e,t);break}default:wn(e,t)}}function En(e,t){switch(t.tagID){case o.TABLE:{e.openElements.hasInTableScope(o.TABLE)&&(e.openElements.popUntilTagNamePopped(o.TABLE),e._resetInsertionMode());break}case o.TEMPLATE:{Tr(e,t);break}case o.BODY:case o.CAPTION:case o.COL:case o.COLGROUP:case o.HTML:case o.TBODY:case o.TD:case o.TFOOT:case o.TH:case o.THEAD:case o.TR:break;default:wn(e,t)}}function wn(e,t){const r=e.fosterParentingEnabled;e.fosterParentingEnabled=!0,N0(e,t),e.fosterParentingEnabled=r}function kc(e,t){e.pendingCharacterTokens.push(t)}function Sc(e,t){e.pendingCharacterTokens.push(t),e.hasNonWhitespacePendingCharacterToken=!0}function en(e,t){let r=0;if(e.hasNonWhitespacePendingCharacterToken)for(;r0&&e.openElements.currentTagId===o.OPTION&&e.openElements.tagIDs[e.openElements.stackTop-1]===o.OPTGROUP&&e.openElements.pop(),e.openElements.currentTagId===o.OPTGROUP&&e.openElements.pop();break}case o.OPTION:{e.openElements.currentTagId===o.OPTION&&e.openElements.pop();break}case o.SELECT:{e.openElements.hasInSelectScope(o.SELECT)&&(e.openElements.popUntilTagNamePopped(o.SELECT),e._resetInsertionMode());break}case o.TEMPLATE:{Tr(e,t);break}}}function v7(e,t){const r=t.tagID;r===o.CAPTION||r===o.TABLE||r===o.TBODY||r===o.TFOOT||r===o.THEAD||r===o.TR||r===o.TD||r===o.TH?(e.openElements.popUntilTagNamePopped(o.SELECT),e._resetInsertionMode(),e._processStartTag(t)):_c(e,t)}function A7(e,t){const r=t.tagID;r===o.CAPTION||r===o.TABLE||r===o.TBODY||r===o.TFOOT||r===o.THEAD||r===o.TR||r===o.TD||r===o.TH?e.openElements.hasInTableScope(r)&&(e.openElements.popUntilTagNamePopped(o.SELECT),e._resetInsertionMode(),e.onEndTag(t)):Ic(e,t)}function k7(e,t){switch(t.tagID){case o.BASE:case o.BASEFONT:case o.BGSOUND:case o.LINK:case o.META:case o.NOFRAMES:case o.SCRIPT:case o.STYLE:case o.TEMPLATE:case o.TITLE:{yt(e,t);break}case o.CAPTION:case o.COLGROUP:case o.TBODY:case o.TFOOT:case o.THEAD:{e.tmplInsertionModeStack[0]=k.IN_TABLE,e.insertionMode=k.IN_TABLE,Rr(e,t);break}case o.COL:{e.tmplInsertionModeStack[0]=k.IN_COLUMN_GROUP,e.insertionMode=k.IN_COLUMN_GROUP,Bi(e,t);break}case o.TR:{e.tmplInsertionModeStack[0]=k.IN_TABLE_BODY,e.insertionMode=k.IN_TABLE_BODY,O0(e,t);break}case o.TD:case o.TH:{e.tmplInsertionModeStack[0]=k.IN_ROW,e.insertionMode=k.IN_ROW,L0(e,t);break}default:e.tmplInsertionModeStack[0]=k.IN_BODY,e.insertionMode=k.IN_BODY,We(e,t)}}function S7(e,t){t.tagID===o.TEMPLATE&&Tr(e,t)}function Nc(e,t){e.openElements.tmplCount>0?(e.openElements.popUntilTagNamePopped(o.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e.tmplInsertionModeStack.shift(),e._resetInsertionMode(),e.onEof(t)):Pi(e,t)}function w7(e,t){t.tagID===o.HTML?We(e,t):o0(e,t)}function Dc(e,t){var r;if(t.tagID===o.HTML){if(e.fragmentContext||(e.insertionMode=k.AFTER_AFTER_BODY),e.options.sourceCodeLocationInfo&&e.openElements.tagIDs[0]===o.HTML){e._setEndLocation(e.openElements.items[0],t);const n=e.openElements.items[1];n&&!(!((r=e.treeAdapter.getNodeSourceCodeLocation(n))===null||r===void 0)&&r.endTag)&&e._setEndLocation(n,t)}}else o0(e,t)}function o0(e,t){e.insertionMode=k.IN_BODY,N0(e,t)}function C7(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.FRAMESET:{e._insertElement(t,H.HTML);break}case o.FRAME:{e._appendElement(t,H.HTML),t.ackSelfClosing=!0;break}case o.NOFRAMES:{yt(e,t);break}}}function _7(e,t){t.tagID===o.FRAMESET&&!e.openElements.isRootHtmlElementCurrent()&&(e.openElements.pop(),!e.fragmentContext&&e.openElements.currentTagId!==o.FRAMESET&&(e.insertionMode=k.AFTER_FRAMESET))}function I7(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.NOFRAMES:{yt(e,t);break}}}function N7(e,t){t.tagID===o.HTML&&(e.insertionMode=k.AFTER_AFTER_FRAMESET)}function D7(e,t){t.tagID===o.HTML?We(e,t):Jn(e,t)}function Jn(e,t){e.insertionMode=k.IN_BODY,N0(e,t)}function O7(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.NOFRAMES:{yt(e,t);break}}}function L7(e,t){t.chars=Se,e._insertCharacters(t)}function R7(e,t){e._insertCharacters(t),e.framesetOk=!1}function Oc(e){for(;e.treeAdapter.getNamespaceURI(e.openElements.current)!==H.HTML&&e.openElements.currentTagId!==void 0&&!e._isIntegrationPoint(e.openElements.currentTagId,e.openElements.current);)e.openElements.pop()}function M7(e,t){if(Qp(t))Oc(e),e._startTagOutsideForeignContent(t);else{const r=e._getAdjustedCurrentElement(),n=e.treeAdapter.getNamespaceURI(r);n===H.MATHML?pc(t):n===H.SVG&&(Kp(t),gc(t)),Ri(t),t.selfClosing?e._appendElement(t,n):e._insertElement(t,n),t.ackSelfClosing=!0}}function P7(e,t){if(t.tagID===o.P||t.tagID===o.BR){Oc(e),e._endTagOutsideForeignContent(t);return}for(let r=e.openElements.stackTop;r>0;r--){const n=e.openElements.items[r];if(e.treeAdapter.getNamespaceURI(n)===H.HTML){e._endTagOutsideForeignContent(t);break}const a=e.treeAdapter.getTagName(n);if(a.toLowerCase()===t.tagName){t.tagName=a,e.openElements.shortenToLength(r);break}}}O.AREA,O.BASE,O.BASEFONT,O.BGSOUND,O.BR,O.COL,O.EMBED,O.FRAME,O.HR,O.IMG,O.INPUT,O.KEYGEN,O.LINK,O.META,O.PARAM,O.SOURCE,O.TRACK,O.WBR;const B7=/<(\/?)(iframe|noembed|noframes|plaintext|script|style|textarea|title|xmp)(?=[\t\n\f\r />])/gi,F7=new Set(["mdxFlowExpression","mdxJsxFlowElement","mdxJsxTextElement","mdxTextExpression","mdxjsEsm"]),Hs={sourceCodeLocationInfo:!0,scriptingEnabled:!1};function Lc(e,t){const r=X7(e),n=_l("type",{handlers:{root:H7,element:z7,text:U7,comment:Mc,doctype:q7,raw:G7},unknown:V7}),a={parser:r?new Ps(Hs):Ps.getFragmentParser(void 0,Hs),handle(s){n(s,a)},stitches:!1,options:t||{}};n(e,a),Yr(a,_t());const i=r?a.parser.document:a.parser.getFragment(),u=$6(i,{file:a.options.file});return a.stitches&&b0(u,"comment",function(s,l,c){const d=s;if(d.value.stitch&&c&&l!==void 0){const f=c.children;return f[l]=d.value.stitch,l}}),u.type==="root"&&u.children.length===1&&u.children[0].type===e.type?u.children[0]:u}function Rc(e,t){let r=-1;if(e)for(;++r4&&(t.parser.tokenizer.state=0);const r={type:de.CHARACTER,chars:e.value,location:Cn(e)};Yr(t,_t(e)),t.parser.currentToken=r,t.parser._processToken(t.parser.currentToken)}function q7(e,t){const r={type:de.DOCTYPE,name:"html",forceQuirks:!1,publicId:"",systemId:"",location:Cn(e)};Yr(t,_t(e)),t.parser.currentToken=r,t.parser._processToken(t.parser.currentToken)}function Y7(e,t){t.stitches=!0;const r=$7(e);if("children"in e&&"children"in r){const n=Lc({type:"root",children:e.children},t.options);r.children=n.children}Mc({type:"comment",value:{stitch:r}},t)}function Mc(e,t){const r=e.value,n={type:de.COMMENT,data:r,location:Cn(e)};Yr(t,_t(e)),t.parser.currentToken=n,t.parser._processToken(t.parser.currentToken)}function G7(e,t){if(t.parser.tokenizer.preprocessor.html="",t.parser.tokenizer.preprocessor.pos=-1,t.parser.tokenizer.preprocessor.lastGapPos=-2,t.parser.tokenizer.preprocessor.gapStack=[],t.parser.tokenizer.preprocessor.skipNextNewLine=!1,t.parser.tokenizer.preprocessor.lastChunkWritten=!1,t.parser.tokenizer.preprocessor.endOfChunkHit=!1,t.parser.tokenizer.preprocessor.isEol=!1,Pc(t,_t(e)),t.parser.tokenizer.write(t.options.tagfilter?e.value.replace(B7,"<$1$2"):e.value,!1),t.parser.tokenizer._runParsingLoop(),t.parser.tokenizer.state===72||t.parser.tokenizer.state===78){t.parser.tokenizer.preprocessor.lastChunkWritten=!0;const r=t.parser.tokenizer._consume();t.parser.tokenizer._callState(r)}}function V7(e,t){const r=e;if(t.options.passThrough&&t.options.passThrough.includes(r.type))Y7(r,t);else{let n="";throw F7.has(r.type)&&(n=". It looks like you are using MDX nodes with `hast-util-raw` (or `rehype-raw`). If you use this because you are using remark or rehype plugins that inject `'html'` nodes, then please raise an issue with that plugin, as its a bad and slow idea. If you use this because you are using markdown syntax, then you have to configure this utility (or plugin) to pass through these nodes (see `passThrough` in docs), but you can also migrate to use the MDX syntax"),new Error("Cannot compile `"+r.type+"` node"+n)}}function Yr(e,t){Pc(e,t);const r=e.parser.tokenizer.currentCharacterToken;r&&r.location&&(r.location.endLine=e.parser.tokenizer.preprocessor.line,r.location.endCol=e.parser.tokenizer.preprocessor.col+1,r.location.endOffset=e.parser.tokenizer.preprocessor.offset+1,e.parser.currentToken=r,e.parser._processToken(e.parser.currentToken)),e.parser.tokenizer.paused=!1,e.parser.tokenizer.inLoop=!1,e.parser.tokenizer.active=!1,e.parser.tokenizer.returnState=De.DATA,e.parser.tokenizer.charRefCode=-1,e.parser.tokenizer.consumedAfterSnapshot=-1,e.parser.tokenizer.currentLocation=null,e.parser.tokenizer.currentCharacterToken=null,e.parser.tokenizer.currentToken=null,e.parser.tokenizer.currentAttr={name:"",value:""}}function Pc(e,t){if(t&&t.offset!==void 0){const r={startLine:t.line,startCol:t.column,startOffset:t.offset,endLine:-1,endCol:-1,endOffset:-1};e.parser.tokenizer.preprocessor.lineStartPos=-t.column+1,e.parser.tokenizer.preprocessor.droppedBufferSize=t.offset,e.parser.tokenizer.preprocessor.line=t.line,e.parser.tokenizer.currentLocation=r}}function j7(e,t){const r=e.tagName.toLowerCase();if(t.parser.tokenizer.state===De.PLAINTEXT)return;Yr(t,_t(e));const n=t.parser.openElements.current;let a="namespaceURI"in n?n.namespaceURI:Ct.html;a===Ct.html&&r==="svg"&&(a=Ct.svg);const i=ep({...e,children:[]},{space:a===Ct.svg?"svg":"html"}),u={type:de.START_TAG,tagName:r,tagID:qr(r),selfClosing:!1,ackSelfClosing:!1,attrs:"attrs"in i?i.attrs:[],location:Cn(e)};t.parser.currentToken=u,t.parser._processToken(t.parser.currentToken),t.parser.tokenizer.lastStartTagName=r}function W7(e,t){const r=e.tagName.toLowerCase();if(!t.parser.tokenizer.inForeignNode&&lp.includes(r)||t.parser.tokenizer.state===De.PLAINTEXT)return;Yr(t,d0(e));const n={type:de.END_TAG,tagName:r,tagID:qr(r),selfClosing:!1,ackSelfClosing:!1,attrs:[],location:Cn(e)};t.parser.currentToken=n,t.parser._processToken(t.parser.currentToken),r===t.parser.tokenizer.lastStartTagName&&(t.parser.tokenizer.state===De.RCDATA||t.parser.tokenizer.state===De.RAWTEXT||t.parser.tokenizer.state===De.SCRIPT_DATA)&&(t.parser.tokenizer.state=De.DATA)}function X7(e){const t=e.type==="root"?e.children[0]:e;return!!(t&&(t.type==="doctype"||t.type==="element"&&t.tagName.toLowerCase()==="html"))}function Cn(e){const t=_t(e)||{line:void 0,column:void 0,offset:void 0},r=d0(e)||{line:void 0,column:void 0,offset:void 0};return{startLine:t.line,startCol:t.column,startOffset:t.offset,endLine:r.line,endCol:r.column,endOffset:r.offset}}function $7(e){return"children"in e?Nr({...e,children:[]}):Nr(e)}function Q7(e){return function(t,r){return Lc(t,{...e,file:r})}}function c0(e){return typeof e=="string"?e:typeof e=="number"?String(e):e?Array.isArray(e)?e.map(c0).join(""):typeof e=="object"&&"props"in e?c0(e.props.children):"":""}function K7(e){return e.replace(/\$[^$]*\$/g,"").replace(/\\[a-zA-Z]+\{[^}]*\}/g,"").replace(/[\\{}]/g,"").toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")}function Sr(e){return function({children:r,...n}){const a=c0(r),i=n.id||K7(a);return pe.jsx(e,{...n,id:i,children:r})}}const J7={h1:Sr("h1"),h2:Sr("h2"),h3:Sr("h3"),h4:Sr("h4"),h5:Sr("h5"),h6:Sr("h6")};function a8(){const{id:e}=Bc(),t=zc.find(d=>d.id===e),[r,n]=Xr.useState(""),[a,i]=Xr.useState(null),[u,s]=Xr.useState(null);Xr.useEffect(()=>{if(!t)return;const d=new AbortController,f=t.filename;return fetch(`/blog/${f}`,{signal:d.signal}).then(g=>{if(!g.ok)throw new Error("Failed to load post");return g.text()}).then(g=>{const p=g.replace(/^\s*#[^#\n]*\r?\n/,"");n(p),i(f),s(null)}).catch(g=>{g instanceof DOMException&&g.name==="AbortError"||(console.error(g),i(f),s(f))}),()=>d.abort()},[t]);const l=!!(t&&a!==t.filename),c=!!(t&&u===t.filename);return Xr.useEffect(()=>{function d(f){const p=f.target.closest("a");if(!p)return;const x=p.getAttribute("href");if(!x||!x.startsWith("#"))return;f.preventDefault();const S=document.getElementById(x.slice(1));S&&(S.scrollIntoView({behavior:"smooth",block:"start"}),window.history.pushState(null,"",x))}return document.addEventListener("click",d),()=>document.removeEventListener("click",d)},[]),t?pe.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[pe.jsx(Fc,{title:`${t.title} - QECTOR Blog`,description:t.description}),pe.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[pe.jsx("div",{className:"absolute top-0 right-0 w-[800px] h-[800px] bg-cyan-900/10 blur-[120px] rounded-full pointer-events-none -translate-y-1/2 translate-x-1/3"}),pe.jsx("div",{className:"absolute bottom-0 left-0 w-[600px] h-[600px] bg-slate-800/20 blur-[100px] rounded-full pointer-events-none translate-y-1/3 -translate-x-1/3"}),pe.jsxs("div",{className:"max-w-4xl mx-auto px-6 relative z-10",children:[pe.jsxs(P0,{to:"/blog",className:"inline-flex items-center min-h-[44px] text-slate-400 hover:text-cyan-300 mb-12 transition-colors duration-300 font-medium tracking-wide",children:[pe.jsx(Uc,{size:18,className:"mr-2"}),"Back to All Articles"]}),pe.jsxs("header",{className:"mb-16 border-b border-slate-800/60 pb-10",children:[pe.jsxs("div",{className:"flex flex-wrap items-center text-cyan-300 mb-6 gap-4",children:[pe.jsxs("span",{className:"flex items-center text-sm font-semibold tracking-widest uppercase",children:[pe.jsx(qc,{size:16,className:"mr-2"}),t.date]}),pe.jsx("span",{className:"rounded-full border border-slate-700 px-3 py-1 text-xs font-semibold tracking-wider text-slate-400",children:t.category}),pe.jsxs("span",{className:"text-sm text-slate-400",children:["By ",pe.jsx(P0,{to:"/guillaume-lessard",className:"hover:text-cyan-300",children:"Guillaume Lessard"}),r?` · ${Math.max(1,Math.round(r.split(/\s+/).length/220))} min read`:""]})]}),pe.jsx("h1",{className:"text-4xl md:text-5xl lg:text-6xl font-extrabold tracking-tight mb-8 leading-tight text-white",children:t.title}),pe.jsx("p",{className:"text-xl text-slate-300 leading-relaxed max-w-3xl",children:t.description})]}),pe.jsx("div",{className:"bg-slate-900/40 backdrop-blur-md border border-slate-800/80 rounded-3xl p-8 md:p-12 shadow-2xl",children:l?pe.jsxs("div",{className:"flex flex-col items-center justify-center py-20 text-slate-400",children:[pe.jsx(Yc,{size:48,className:"animate-spin text-cyan-400 mb-4"}),pe.jsx("p",{className:"animate-pulse",children:"Loading article..."})]}):c?pe.jsx("div",{className:"py-20 text-center text-red-400",children:pe.jsx("p",{children:"Failed to load the article. Please try again later."})}):pe.jsx("article",{className:"prose prose-invert prose-cyan max-w-none prose-headings:font-bold prose-headings:tracking-tight prose-a:text-cyan-300 prose-a:no-underline hover:prose-a:underline prose-code:text-cyan-200 prose-code:bg-cyan-950/30 prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded-md prose-pre:bg-slate-950/80 prose-pre:border prose-pre:border-slate-800 prose-img:rounded-xl prose-img:border prose-img:border-slate-800",children:pe.jsx(Qf,{remarkPlugins:[l4,g6],rehypePlugins:[j6,Q7],components:{...J7,table:d=>{const{node:f,...g}=d;return pe.jsx("div",{className:"overflow-x-auto",children:pe.jsx("table",{...g})})},pre:d=>{const{children:f}=d,g=Fi.Children.toArray(f)[0];let p="",x="text";if(Fi.isValidElement(g)){const S=g.props,D=/language-([\w-]+)/.exec(S.className||"");D&&(x=D[1]),p=c0(S.children).replace(/\n$/,"")}return pe.jsx(Hc,{code:p,language:x,className:"not-prose"})},img:d=>{const f=d.width!=null&&d.height!=null;return pe.jsx("img",{...d,className:f?"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto":"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto aspect-video object-cover",loading:"lazy"})}},children:r})})})]})]})]}):pe.jsx("div",{className:"min-h-screen bg-slate-950 text-slate-50 flex items-center justify-center",children:pe.jsxs("div",{className:"text-center",children:[pe.jsx("h1",{className:"text-4xl font-bold mb-4",children:"Post Not Found"}),pe.jsx(P0,{to:"/blog",className:"text-cyan-300 hover:text-cyan-200",children:"Return to Blog"})]})})}export{a8 as default}; diff --git a/assets/BlogPost-Cft_Na6k.js b/assets/BlogPost-Cft_Na6k.js deleted file mode 100644 index 702085b3..00000000 --- a/assets/BlogPost-Cft_Na6k.js +++ /dev/null @@ -1 +0,0 @@ -import{r as d,j as e,R as b}from"./vendor-react-BiHfrq0e.js";import{S as N,C as k}from"./index-BN-vOeL2.js";import{b as E}from"./blogData-OjR2ZtNr.js";import{M as C,r as A,a as L,b as B,c as P}from"./vendor-md-CLKxNZoa.js";import{C as z,L as j}from"./vendor-PiU4YGcH.js";import{m as F,k as S,n as $}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function u(t){return typeof t=="string"?t:typeof t=="number"?String(t):t?Array.isArray(t)?t.map(u).join(""):typeof t=="object"&&"props"in t?u(t.props.children):"":""}function R(t){return t.replace(/\$[^$]*\$/g,"").replace(/\\[a-zA-Z]+\{[^}]*\}/g,"").replace(/[\\{}]/g,"").toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")}function i(t){return function({children:x,...m}){const h=u(x),p=m.id||R(h);return e.jsx(t,{...m,id:p,children:x})}}const M={h1:i("h1"),h2:i("h2"),h3:i("h3"),h4:i("h4"),h5:i("h5"),h6:i("h6")};function G(){const{id:t}=z(),r=E.find(s=>s.id===t),[x,m]=d.useState(""),[h,p]=d.useState(null),[y,f]=d.useState(null);d.useEffect(()=>{if(!r)return;const s=new AbortController,n=r.filename;return fetch(`/blog/${n}`,{signal:s.signal}).then(a=>{if(!a.ok)throw new Error("Failed to load post");return a.text()}).then(a=>{const o=a.replace(/^\s*#[^#\n]*\r?\n/,"");m(o),p(n),f(null)}).catch(a=>{a instanceof DOMException&&a.name==="AbortError"||(console.error(a),p(n),f(n))}),()=>s.abort()},[r]);const w=!!(r&&h!==r.filename),v=!!(r&&y===r.filename);return d.useEffect(()=>{function s(n){const o=n.target.closest("a");if(!o)return;const l=o.getAttribute("href");if(!l||!l.startsWith("#"))return;n.preventDefault();const c=document.getElementById(l.slice(1));c&&(c.scrollIntoView({behavior:"smooth",block:"start"}),window.history.pushState(null,"",l))}return document.addEventListener("click",s),()=>document.removeEventListener("click",s)},[]),r?e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(N,{title:`${r.title} - QECTOR Blog`,description:r.description}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 right-0 w-[800px] h-[800px] bg-cyan-900/10 blur-[120px] rounded-full pointer-events-none -translate-y-1/2 translate-x-1/3"}),e.jsx("div",{className:"absolute bottom-0 left-0 w-[600px] h-[600px] bg-slate-800/20 blur-[100px] rounded-full pointer-events-none translate-y-1/3 -translate-x-1/3"}),e.jsxs("div",{className:"max-w-4xl mx-auto px-6 relative z-10",children:[e.jsxs(j,{to:"/blog",className:"inline-flex items-center min-h-[44px] text-slate-400 hover:text-cyan-300 mb-12 transition-colors duration-300 font-medium tracking-wide",children:[e.jsx(F,{size:18,className:"mr-2"}),"Back to All Articles"]}),e.jsxs("header",{className:"mb-16 border-b border-slate-800/60 pb-10",children:[e.jsxs("div",{className:"flex flex-wrap items-center text-cyan-300 mb-6 gap-4",children:[e.jsxs("span",{className:"flex items-center text-sm font-semibold tracking-widest uppercase",children:[e.jsx(S,{size:16,className:"mr-2"}),r.date]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-3 py-1 text-xs font-semibold tracking-wider text-slate-400",children:r.category})]}),e.jsx("h1",{className:"text-4xl md:text-5xl lg:text-6xl font-extrabold tracking-tight mb-8 leading-tight text-white",children:r.title}),e.jsx("p",{className:"text-xl text-slate-300 leading-relaxed max-w-3xl",children:r.description})]}),e.jsx("div",{className:"bg-slate-900/40 backdrop-blur-md border border-slate-800/80 rounded-3xl p-8 md:p-12 shadow-2xl",children:w?e.jsxs("div",{className:"flex flex-col items-center justify-center py-20 text-slate-400",children:[e.jsx($,{size:48,className:"animate-spin text-cyan-400 mb-4"}),e.jsx("p",{className:"animate-pulse",children:"Loading article..."})]}):v?e.jsx("div",{className:"py-20 text-center text-red-400",children:e.jsx("p",{children:"Failed to load the article. Please try again later."})}):e.jsx("article",{className:"prose prose-invert prose-cyan max-w-none prose-headings:font-bold prose-headings:tracking-tight prose-a:text-cyan-300 prose-a:no-underline hover:prose-a:underline prose-code:text-cyan-200 prose-code:bg-cyan-950/30 prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded-md prose-pre:bg-slate-950/80 prose-pre:border prose-pre:border-slate-800 prose-img:rounded-xl prose-img:border prose-img:border-slate-800",children:e.jsx(C,{remarkPlugins:[B,P],rehypePlugins:[A,L],components:{...M,table:s=>{const{node:n,...a}=s;return e.jsx("div",{className:"overflow-x-auto",children:e.jsx("table",{...a})})},pre:s=>{const{children:n}=s,a=b.Children.toArray(n)[0];let o="",l="text";if(b.isValidElement(a)){const c=a.props,g=/language-([\w-]+)/.exec(c.className||"");g&&(l=g[1]),o=u(c.children).replace(/\n$/,"")}return e.jsx(k,{code:o,language:l,className:"not-prose"})},img:s=>{const n=s.width!=null&&s.height!=null;return e.jsx("img",{...s,className:n?"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto":"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto aspect-video object-cover",loading:"lazy"})}},children:x})})})]})]})]}):e.jsx("div",{className:"min-h-screen bg-slate-950 text-slate-50 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx("h1",{className:"text-4xl font-bold mb-4",children:"Post Not Found"}),e.jsx(j,{to:"/blog",className:"text-cyan-300 hover:text-cyan-200",children:"Return to Blog"})]})})}export{G as default}; diff --git a/assets/BlogPost-CkWMP1e_.js b/assets/BlogPost-CkWMP1e_.js deleted file mode 100644 index 6ea45463..00000000 --- a/assets/BlogPost-CkWMP1e_.js +++ /dev/null @@ -1 +0,0 @@ -import{r as x,j as e,R as j}from"./vendor-react-BiHfrq0e.js";import{S as w,C as k}from"./index-Bh9DBCb3.js";import{b as E}from"./blogData-OjR2ZtNr.js";import{M as C,r as A,a as L,b as B,c as P}from"./vendor-md-CLKxNZoa.js";import{C as $,L as f}from"./vendor-PiU4YGcH.js";import{m as z,k as F,n as M}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function u(t){return typeof t=="string"?t:typeof t=="number"?String(t):t?Array.isArray(t)?t.map(u).join(""):typeof t=="object"&&"props"in t?u(t.props.children):"":""}function S(t){return t.replace(/\$[^$]*\$/g,"").replace(/\\[a-zA-Z]+\{[^}]*\}/g,"").replace(/[\\{}]/g,"").toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")}function c(t){return function({children:i,...m}){const h=u(i),p=m.id||S(h);return e.jsx(t,{...m,id:p,children:i})}}const R={h1:c("h1"),h2:c("h2"),h3:c("h3"),h4:c("h4"),h5:c("h5"),h6:c("h6")};function W(){const{id:t}=$(),s=E.find(r=>r.id===t),[i,m]=x.useState(""),[h,p]=x.useState(null),[y,g]=x.useState(null);x.useEffect(()=>{if(!s)return;const r=new AbortController,n=s.filename;return fetch(`/blog/${n}`,{signal:r.signal}).then(a=>{if(!a.ok)throw new Error("Failed to load post");return a.text()}).then(a=>{const o=a.replace(/^\s*#[^#\n]*\r?\n/,"");m(o),p(n),g(null)}).catch(a=>{a instanceof DOMException&&a.name==="AbortError"||(console.error(a),p(n),g(n))}),()=>r.abort()},[s]);const N=!!(s&&h!==s.filename),v=!!(s&&y===s.filename);return x.useEffect(()=>{function r(n){const o=n.target.closest("a");if(!o)return;const l=o.getAttribute("href");if(!l||!l.startsWith("#"))return;n.preventDefault();const d=document.getElementById(l.slice(1));d&&(d.scrollIntoView({behavior:"smooth",block:"start"}),window.history.pushState(null,"",l))}return document.addEventListener("click",r),()=>document.removeEventListener("click",r)},[]),s?e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(w,{title:`${s.title} - QECTOR Blog`,description:s.description}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 right-0 w-[800px] h-[800px] bg-cyan-900/10 blur-[120px] rounded-full pointer-events-none -translate-y-1/2 translate-x-1/3"}),e.jsx("div",{className:"absolute bottom-0 left-0 w-[600px] h-[600px] bg-slate-800/20 blur-[100px] rounded-full pointer-events-none translate-y-1/3 -translate-x-1/3"}),e.jsxs("div",{className:"max-w-4xl mx-auto px-6 relative z-10",children:[e.jsxs(f,{to:"/blog",className:"inline-flex items-center min-h-[44px] text-slate-400 hover:text-cyan-300 mb-12 transition-colors duration-300 font-medium tracking-wide",children:[e.jsx(z,{size:18,className:"mr-2"}),"Back to All Articles"]}),e.jsxs("header",{className:"mb-16 border-b border-slate-800/60 pb-10",children:[e.jsxs("div",{className:"flex flex-wrap items-center text-cyan-300 mb-6 gap-4",children:[e.jsxs("span",{className:"flex items-center text-sm font-semibold tracking-widest uppercase",children:[e.jsx(F,{size:16,className:"mr-2"}),s.date]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-3 py-1 text-xs font-semibold tracking-wider text-slate-400",children:s.category}),e.jsxs("span",{className:"text-sm text-slate-400",children:["By ",e.jsx(f,{to:"/guillaume-lessard",className:"hover:text-cyan-300",children:"Guillaume Lessard"}),i?` · ${Math.max(1,Math.round(i.split(/\s+/).length/220))} min read`:""]})]}),e.jsx("h1",{className:"text-4xl md:text-5xl lg:text-6xl font-extrabold tracking-tight mb-8 leading-tight text-white",children:s.title}),e.jsx("p",{className:"text-xl text-slate-300 leading-relaxed max-w-3xl",children:s.description})]}),e.jsx("div",{className:"bg-slate-900/40 backdrop-blur-md border border-slate-800/80 rounded-3xl p-8 md:p-12 shadow-2xl",children:N?e.jsxs("div",{className:"flex flex-col items-center justify-center py-20 text-slate-400",children:[e.jsx(M,{size:48,className:"animate-spin text-cyan-400 mb-4"}),e.jsx("p",{className:"animate-pulse",children:"Loading article..."})]}):v?e.jsx("div",{className:"py-20 text-center text-red-400",children:e.jsx("p",{children:"Failed to load the article. Please try again later."})}):e.jsx("article",{className:"prose prose-invert prose-cyan max-w-none prose-headings:font-bold prose-headings:tracking-tight prose-a:text-cyan-300 prose-a:no-underline hover:prose-a:underline prose-code:text-cyan-200 prose-code:bg-cyan-950/30 prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded-md prose-pre:bg-slate-950/80 prose-pre:border prose-pre:border-slate-800 prose-img:rounded-xl prose-img:border prose-img:border-slate-800",children:e.jsx(C,{remarkPlugins:[B,P],rehypePlugins:[A,L],components:{...R,table:r=>{const{node:n,...a}=r;return e.jsx("div",{className:"overflow-x-auto",children:e.jsx("table",{...a})})},pre:r=>{const{children:n}=r,a=j.Children.toArray(n)[0];let o="",l="text";if(j.isValidElement(a)){const d=a.props,b=/language-([\w-]+)/.exec(d.className||"");b&&(l=b[1]),o=u(d.children).replace(/\n$/,"")}return e.jsx(k,{code:o,language:l,className:"not-prose"})},img:r=>{const n=r.width!=null&&r.height!=null;return e.jsx("img",{...r,className:n?"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto":"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto aspect-video object-cover",loading:"lazy"})}},children:i})})})]})]})]}):e.jsx("div",{className:"min-h-screen bg-slate-950 text-slate-50 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx("h1",{className:"text-4xl font-bold mb-4",children:"Post Not Found"}),e.jsx(f,{to:"/blog",className:"text-cyan-300 hover:text-cyan-200",children:"Return to Blog"})]})})}export{W as default}; diff --git a/assets/BlogPost-DA4aOT_h.js b/assets/BlogPost-DA4aOT_h.js deleted file mode 100644 index 788fc8b2..00000000 --- a/assets/BlogPost-DA4aOT_h.js +++ /dev/null @@ -1 +0,0 @@ -import{r as d,j as e,R as j}from"./vendor-react-BiHfrq0e.js";import{S as k,C as E}from"./index-iVST85F-.js";import{b as C}from"./blogData-OjR2ZtNr.js";import{M as A,r as L,a as B,b as P,c as z}from"./vendor-md-CLKxNZoa.js";import{C as F,L as y}from"./vendor-PiU4YGcH.js";import{m as S,k as $,n as R}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function u(t){return typeof t=="string"?t:typeof t=="number"?String(t):t?Array.isArray(t)?t.map(u).join(""):typeof t=="object"&&"props"in t?u(t.props.children):"":""}function M(t){return t.replace(/\$[^$]*\$/g,"").replace(/\\[a-zA-Z]+\{[^}]*\}/g,"").replace(/[\\{}]/g,"").toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")}function i(t){return function({children:x,...m}){const h=u(x),p=m.id||M(h);return e.jsx(t,{...m,id:p,children:x})}}const I={h1:i("h1"),h2:i("h2"),h3:i("h3"),h4:i("h4"),h5:i("h5"),h6:i("h6")};function G(){const{id:t}=F(),r=C.find(s=>s.id===t),[x,m]=d.useState(""),[h,p]=d.useState(null),[w,f]=d.useState(null);d.useEffect(()=>{if(!r)return;const s=new AbortController,n=r.filename;return fetch(`/blog/${n}`,{signal:s.signal}).then(a=>{if(!a.ok)throw new Error("Failed to load post");return a.text()}).then(a=>{const o=a.replace(/^\s*#[^#\n]*\r?\n/,"");m(o),p(n),f(null)}).catch(a=>{a instanceof DOMException&&a.name==="AbortError"||(console.error(a),p(n),f(n))}),()=>s.abort()},[r]);const v=!!(r&&h!==r.filename),N=!!(r&&w===r.filename);return d.useEffect(()=>{function s(n){const o=n.target.closest("a");if(!o)return;const l=o.getAttribute("href");if(!l||!l.startsWith("#"))return;n.preventDefault();const c=document.getElementById(l.slice(1));c&&(c.scrollIntoView({behavior:"smooth",block:"start"}),window.history.pushState(null,"",l))}return document.addEventListener("click",s),()=>document.removeEventListener("click",s)},[]),r?e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(k,{title:`${r.title} - QECTOR Blog`,description:r.description}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 right-0 w-[800px] h-[800px] bg-cyan-900/10 blur-[120px] rounded-full pointer-events-none -translate-y-1/2 translate-x-1/3"}),e.jsx("div",{className:"absolute bottom-0 left-0 w-[600px] h-[600px] bg-slate-800/20 blur-[100px] rounded-full pointer-events-none translate-y-1/3 -translate-x-1/3"}),e.jsxs("div",{className:"max-w-4xl mx-auto px-6 relative z-10",children:[e.jsxs(y,{to:"/blog",className:"inline-flex items-center min-h-[44px] text-slate-400 hover:text-cyan-300 mb-12 transition-colors duration-300 font-medium tracking-wide",children:[e.jsx(S,{size:18,className:"mr-2"}),"Back to All Articles"]}),e.jsxs("header",{className:"mb-16 border-b border-slate-800/60 pb-10",children:[e.jsxs("div",{className:"flex flex-wrap items-center text-cyan-300 mb-6 gap-4",children:[e.jsxs("span",{className:"flex items-center text-sm font-semibold tracking-widest uppercase",children:[e.jsx($,{size:16,className:"mr-2"}),r.date]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-3 py-1 text-xs font-semibold tracking-wider text-slate-400",children:r.category})]}),e.jsx("h1",{className:"text-4xl md:text-5xl lg:text-6xl font-extrabold tracking-tight mb-8 leading-tight text-white",children:r.title}),e.jsx("p",{className:"text-xl text-slate-300 leading-relaxed max-w-3xl",children:r.description})]}),e.jsx("div",{className:"bg-slate-900/40 backdrop-blur-md border border-slate-800/80 rounded-3xl p-8 md:p-12 shadow-2xl",children:v?e.jsxs("div",{className:"flex flex-col items-center justify-center py-20 text-slate-400",children:[e.jsx(R,{size:48,className:"animate-spin text-cyan-400 mb-4"}),e.jsx("p",{className:"animate-pulse",children:"Loading article..."})]}):N?e.jsx("div",{className:"py-20 text-center text-red-400",children:e.jsx("p",{children:"Failed to load the article. Please try again later."})}):e.jsx("article",{className:"prose prose-invert prose-cyan max-w-none prose-headings:font-bold prose-headings:tracking-tight prose-a:text-cyan-300 prose-a:no-underline hover:prose-a:underline prose-code:text-cyan-200 prose-code:bg-cyan-950/30 prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded-md prose-pre:bg-slate-950/80 prose-pre:border prose-pre:border-slate-800 prose-img:rounded-xl prose-img:border prose-img:border-slate-800",children:e.jsx(A,{remarkPlugins:[P,z],rehypePlugins:[L,B],components:{...I,table:s=>{const{node:n,...a}=s;return e.jsx("div",{className:"overflow-x-auto",children:e.jsx("table",{...a})})},pre:s=>{const{node:n,children:a}=s,o=j.Children.toArray(a)[0];let l="",c="text";if(j.isValidElement(o)){const g=o.props,b=/language-([\w-]+)/.exec(g.className||"");b&&(c=b[1]),l=u(g.children).replace(/\n$/,"")}return e.jsx(E,{code:l,language:c,className:"not-prose"})},img:s=>{const n=s.width!=null&&s.height!=null;return e.jsx("img",{...s,className:n?"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto":"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto aspect-video object-cover",loading:"lazy"})}},children:x})})})]})]})]}):e.jsx("div",{className:"min-h-screen bg-slate-950 text-slate-50 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx("h1",{className:"text-4xl font-bold mb-4",children:"Post Not Found"}),e.jsx(y,{to:"/blog",className:"text-cyan-300 hover:text-cyan-200",children:"Return to Blog"})]})})}export{G as default}; diff --git a/assets/BlogPost-DI-YldHS.js b/assets/BlogPost-DI-YldHS.js deleted file mode 100644 index d3f702ea..00000000 --- a/assets/BlogPost-DI-YldHS.js +++ /dev/null @@ -1 +0,0 @@ -import{r as d,j as e,R as b}from"./vendor-react-BiHfrq0e.js";import{S as N,C as k}from"./index-CxWP17m6.js";import{b as E}from"./blogData-OjR2ZtNr.js";import{M as C,r as A,a as L,b as B,c as P}from"./vendor-md-CLKxNZoa.js";import{C as z,L as j}from"./vendor-PiU4YGcH.js";import{m as F,k as S,n as $}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function u(t){return typeof t=="string"?t:typeof t=="number"?String(t):t?Array.isArray(t)?t.map(u).join(""):typeof t=="object"&&"props"in t?u(t.props.children):"":""}function R(t){return t.replace(/\$[^$]*\$/g,"").replace(/\\[a-zA-Z]+\{[^}]*\}/g,"").replace(/[\\{}]/g,"").toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")}function i(t){return function({children:x,...m}){const h=u(x),p=m.id||R(h);return e.jsx(t,{...m,id:p,children:x})}}const M={h1:i("h1"),h2:i("h2"),h3:i("h3"),h4:i("h4"),h5:i("h5"),h6:i("h6")};function G(){const{id:t}=z(),r=E.find(s=>s.id===t),[x,m]=d.useState(""),[h,p]=d.useState(null),[y,f]=d.useState(null);d.useEffect(()=>{if(!r)return;const s=new AbortController,n=r.filename;return fetch(`/blog/${n}`,{signal:s.signal}).then(a=>{if(!a.ok)throw new Error("Failed to load post");return a.text()}).then(a=>{const o=a.replace(/^\s*#[^#\n]*\r?\n/,"");m(o),p(n),f(null)}).catch(a=>{a instanceof DOMException&&a.name==="AbortError"||(console.error(a),p(n),f(n))}),()=>s.abort()},[r]);const w=!!(r&&h!==r.filename),v=!!(r&&y===r.filename);return d.useEffect(()=>{function s(n){const o=n.target.closest("a");if(!o)return;const l=o.getAttribute("href");if(!l||!l.startsWith("#"))return;n.preventDefault();const c=document.getElementById(l.slice(1));c&&(c.scrollIntoView({behavior:"smooth",block:"start"}),window.history.pushState(null,"",l))}return document.addEventListener("click",s),()=>document.removeEventListener("click",s)},[]),r?e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(N,{title:`${r.title} - QECTOR Blog`,description:r.description}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 right-0 w-[800px] h-[800px] bg-cyan-900/10 blur-[120px] rounded-full pointer-events-none -translate-y-1/2 translate-x-1/3"}),e.jsx("div",{className:"absolute bottom-0 left-0 w-[600px] h-[600px] bg-slate-800/20 blur-[100px] rounded-full pointer-events-none translate-y-1/3 -translate-x-1/3"}),e.jsxs("div",{className:"max-w-4xl mx-auto px-6 relative z-10",children:[e.jsxs(j,{to:"/blog",className:"inline-flex items-center min-h-[44px] text-slate-400 hover:text-cyan-300 mb-12 transition-colors duration-300 font-medium tracking-wide",children:[e.jsx(F,{size:18,className:"mr-2"}),"Back to All Articles"]}),e.jsxs("header",{className:"mb-16 border-b border-slate-800/60 pb-10",children:[e.jsxs("div",{className:"flex flex-wrap items-center text-cyan-300 mb-6 gap-4",children:[e.jsxs("span",{className:"flex items-center text-sm font-semibold tracking-widest uppercase",children:[e.jsx(S,{size:16,className:"mr-2"}),r.date]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-3 py-1 text-xs font-semibold tracking-wider text-slate-400",children:r.category})]}),e.jsx("h1",{className:"text-4xl md:text-5xl lg:text-6xl font-extrabold tracking-tight mb-8 leading-tight text-white",children:r.title}),e.jsx("p",{className:"text-xl text-slate-300 leading-relaxed max-w-3xl",children:r.description})]}),e.jsx("div",{className:"bg-slate-900/40 backdrop-blur-md border border-slate-800/80 rounded-3xl p-8 md:p-12 shadow-2xl",children:w?e.jsxs("div",{className:"flex flex-col items-center justify-center py-20 text-slate-400",children:[e.jsx($,{size:48,className:"animate-spin text-cyan-400 mb-4"}),e.jsx("p",{className:"animate-pulse",children:"Loading article..."})]}):v?e.jsx("div",{className:"py-20 text-center text-red-400",children:e.jsx("p",{children:"Failed to load the article. Please try again later."})}):e.jsx("article",{className:"prose prose-invert prose-cyan max-w-none prose-headings:font-bold prose-headings:tracking-tight prose-a:text-cyan-300 prose-a:no-underline hover:prose-a:underline prose-code:text-cyan-200 prose-code:bg-cyan-950/30 prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded-md prose-pre:bg-slate-950/80 prose-pre:border prose-pre:border-slate-800 prose-img:rounded-xl prose-img:border prose-img:border-slate-800",children:e.jsx(C,{remarkPlugins:[B,P],rehypePlugins:[A,L],components:{...M,table:s=>{const{node:n,...a}=s;return e.jsx("div",{className:"overflow-x-auto",children:e.jsx("table",{...a})})},pre:s=>{const{children:n}=s,a=b.Children.toArray(n)[0];let o="",l="text";if(b.isValidElement(a)){const c=a.props,g=/language-([\w-]+)/.exec(c.className||"");g&&(l=g[1]),o=u(c.children).replace(/\n$/,"")}return e.jsx(k,{code:o,language:l,className:"not-prose"})},img:s=>{const n=s.width!=null&&s.height!=null;return e.jsx("img",{...s,className:n?"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto":"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto aspect-video object-cover",loading:"lazy"})}},children:x})})})]})]})]}):e.jsx("div",{className:"min-h-screen bg-slate-950 text-slate-50 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx("h1",{className:"text-4xl font-bold mb-4",children:"Post Not Found"}),e.jsx(j,{to:"/blog",className:"text-cyan-300 hover:text-cyan-200",children:"Return to Blog"})]})})}export{G as default}; diff --git a/assets/BlogPost-DItcK1GC.js b/assets/BlogPost-DItcK1GC.js deleted file mode 100644 index 1a010e7e..00000000 --- a/assets/BlogPost-DItcK1GC.js +++ /dev/null @@ -1 +0,0 @@ -import{r as d,j as e,R as b}from"./vendor-react-BiHfrq0e.js";import{S as N,C as k}from"./index-DRAXObZB.js";import{b as E}from"./blogData-OjR2ZtNr.js";import{M as C,r as A,a as L,b as B,c as P}from"./vendor-md-CLKxNZoa.js";import{C as z,L as j}from"./vendor-PiU4YGcH.js";import{m as F,k as S,n as $}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function u(t){return typeof t=="string"?t:typeof t=="number"?String(t):t?Array.isArray(t)?t.map(u).join(""):typeof t=="object"&&"props"in t?u(t.props.children):"":""}function R(t){return t.replace(/\$[^$]*\$/g,"").replace(/\\[a-zA-Z]+\{[^}]*\}/g,"").replace(/[\\{}]/g,"").toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")}function i(t){return function({children:x,...m}){const h=u(x),p=m.id||R(h);return e.jsx(t,{...m,id:p,children:x})}}const M={h1:i("h1"),h2:i("h2"),h3:i("h3"),h4:i("h4"),h5:i("h5"),h6:i("h6")};function G(){const{id:t}=z(),r=E.find(s=>s.id===t),[x,m]=d.useState(""),[h,p]=d.useState(null),[y,f]=d.useState(null);d.useEffect(()=>{if(!r)return;const s=new AbortController,n=r.filename;return fetch(`/blog/${n}`,{signal:s.signal}).then(a=>{if(!a.ok)throw new Error("Failed to load post");return a.text()}).then(a=>{const o=a.replace(/^\s*#[^#\n]*\r?\n/,"");m(o),p(n),f(null)}).catch(a=>{a instanceof DOMException&&a.name==="AbortError"||(console.error(a),p(n),f(n))}),()=>s.abort()},[r]);const w=!!(r&&h!==r.filename),v=!!(r&&y===r.filename);return d.useEffect(()=>{function s(n){const o=n.target.closest("a");if(!o)return;const l=o.getAttribute("href");if(!l||!l.startsWith("#"))return;n.preventDefault();const c=document.getElementById(l.slice(1));c&&(c.scrollIntoView({behavior:"smooth",block:"start"}),window.history.pushState(null,"",l))}return document.addEventListener("click",s),()=>document.removeEventListener("click",s)},[]),r?e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(N,{title:`${r.title} - QECTOR Blog`,description:r.description}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 right-0 w-[800px] h-[800px] bg-cyan-900/10 blur-[120px] rounded-full pointer-events-none -translate-y-1/2 translate-x-1/3"}),e.jsx("div",{className:"absolute bottom-0 left-0 w-[600px] h-[600px] bg-slate-800/20 blur-[100px] rounded-full pointer-events-none translate-y-1/3 -translate-x-1/3"}),e.jsxs("div",{className:"max-w-4xl mx-auto px-6 relative z-10",children:[e.jsxs(j,{to:"/blog",className:"inline-flex items-center min-h-[44px] text-slate-400 hover:text-cyan-300 mb-12 transition-colors duration-300 font-medium tracking-wide",children:[e.jsx(F,{size:18,className:"mr-2"}),"Back to All Articles"]}),e.jsxs("header",{className:"mb-16 border-b border-slate-800/60 pb-10",children:[e.jsxs("div",{className:"flex flex-wrap items-center text-cyan-300 mb-6 gap-4",children:[e.jsxs("span",{className:"flex items-center text-sm font-semibold tracking-widest uppercase",children:[e.jsx(S,{size:16,className:"mr-2"}),r.date]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-3 py-1 text-xs font-semibold tracking-wider text-slate-400",children:r.category})]}),e.jsx("h1",{className:"text-4xl md:text-5xl lg:text-6xl font-extrabold tracking-tight mb-8 leading-tight text-white",children:r.title}),e.jsx("p",{className:"text-xl text-slate-300 leading-relaxed max-w-3xl",children:r.description})]}),e.jsx("div",{className:"bg-slate-900/40 backdrop-blur-md border border-slate-800/80 rounded-3xl p-8 md:p-12 shadow-2xl",children:w?e.jsxs("div",{className:"flex flex-col items-center justify-center py-20 text-slate-400",children:[e.jsx($,{size:48,className:"animate-spin text-cyan-400 mb-4"}),e.jsx("p",{className:"animate-pulse",children:"Loading article..."})]}):v?e.jsx("div",{className:"py-20 text-center text-red-400",children:e.jsx("p",{children:"Failed to load the article. Please try again later."})}):e.jsx("article",{className:"prose prose-invert prose-cyan max-w-none prose-headings:font-bold prose-headings:tracking-tight prose-a:text-cyan-300 prose-a:no-underline hover:prose-a:underline prose-code:text-cyan-200 prose-code:bg-cyan-950/30 prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded-md prose-pre:bg-slate-950/80 prose-pre:border prose-pre:border-slate-800 prose-img:rounded-xl prose-img:border prose-img:border-slate-800",children:e.jsx(C,{remarkPlugins:[B,P],rehypePlugins:[A,L],components:{...M,table:s=>{const{node:n,...a}=s;return e.jsx("div",{className:"overflow-x-auto",children:e.jsx("table",{...a})})},pre:s=>{const{children:n}=s,a=b.Children.toArray(n)[0];let o="",l="text";if(b.isValidElement(a)){const c=a.props,g=/language-([\w-]+)/.exec(c.className||"");g&&(l=g[1]),o=u(c.children).replace(/\n$/,"")}return e.jsx(k,{code:o,language:l,className:"not-prose"})},img:s=>{const n=s.width!=null&&s.height!=null;return e.jsx("img",{...s,className:n?"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto":"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto aspect-video object-cover",loading:"lazy"})}},children:x})})})]})]})]}):e.jsx("div",{className:"min-h-screen bg-slate-950 text-slate-50 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx("h1",{className:"text-4xl font-bold mb-4",children:"Post Not Found"}),e.jsx(j,{to:"/blog",className:"text-cyan-300 hover:text-cyan-200",children:"Return to Blog"})]})})}export{G as default}; diff --git a/assets/BlogPost-DeO2pN01.js b/assets/BlogPost-DeO2pN01.js deleted file mode 100644 index 899712f6..00000000 --- a/assets/BlogPost-DeO2pN01.js +++ /dev/null @@ -1 +0,0 @@ -import{r as d,j as e,R as b}from"./vendor-react-BiHfrq0e.js";import{S as N,C as k}from"./index-BUYYSLdX.js";import{b as E}from"./blogData-OjR2ZtNr.js";import{M as C,r as A,a as L,b as B,c as P}from"./vendor-md-CLKxNZoa.js";import{C as z,L as j}from"./vendor-PiU4YGcH.js";import{m as F,k as S,n as $}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function u(t){return typeof t=="string"?t:typeof t=="number"?String(t):t?Array.isArray(t)?t.map(u).join(""):typeof t=="object"&&"props"in t?u(t.props.children):"":""}function R(t){return t.replace(/\$[^$]*\$/g,"").replace(/\\[a-zA-Z]+\{[^}]*\}/g,"").replace(/[\\{}]/g,"").toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")}function i(t){return function({children:x,...m}){const h=u(x),p=m.id||R(h);return e.jsx(t,{...m,id:p,children:x})}}const M={h1:i("h1"),h2:i("h2"),h3:i("h3"),h4:i("h4"),h5:i("h5"),h6:i("h6")};function G(){const{id:t}=z(),r=E.find(s=>s.id===t),[x,m]=d.useState(""),[h,p]=d.useState(null),[y,f]=d.useState(null);d.useEffect(()=>{if(!r)return;const s=new AbortController,n=r.filename;return fetch(`/blog/${n}`,{signal:s.signal}).then(a=>{if(!a.ok)throw new Error("Failed to load post");return a.text()}).then(a=>{const o=a.replace(/^\s*#[^#\n]*\r?\n/,"");m(o),p(n),f(null)}).catch(a=>{a instanceof DOMException&&a.name==="AbortError"||(console.error(a),p(n),f(n))}),()=>s.abort()},[r]);const w=!!(r&&h!==r.filename),v=!!(r&&y===r.filename);return d.useEffect(()=>{function s(n){const o=n.target.closest("a");if(!o)return;const l=o.getAttribute("href");if(!l||!l.startsWith("#"))return;n.preventDefault();const c=document.getElementById(l.slice(1));c&&(c.scrollIntoView({behavior:"smooth",block:"start"}),window.history.pushState(null,"",l))}return document.addEventListener("click",s),()=>document.removeEventListener("click",s)},[]),r?e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(N,{title:`${r.title} - QECTOR Blog`,description:r.description}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 right-0 w-[800px] h-[800px] bg-cyan-900/10 blur-[120px] rounded-full pointer-events-none -translate-y-1/2 translate-x-1/3"}),e.jsx("div",{className:"absolute bottom-0 left-0 w-[600px] h-[600px] bg-slate-800/20 blur-[100px] rounded-full pointer-events-none translate-y-1/3 -translate-x-1/3"}),e.jsxs("div",{className:"max-w-4xl mx-auto px-6 relative z-10",children:[e.jsxs(j,{to:"/blog",className:"inline-flex items-center min-h-[44px] text-slate-400 hover:text-cyan-300 mb-12 transition-colors duration-300 font-medium tracking-wide",children:[e.jsx(F,{size:18,className:"mr-2"}),"Back to All Articles"]}),e.jsxs("header",{className:"mb-16 border-b border-slate-800/60 pb-10",children:[e.jsxs("div",{className:"flex flex-wrap items-center text-cyan-300 mb-6 gap-4",children:[e.jsxs("span",{className:"flex items-center text-sm font-semibold tracking-widest uppercase",children:[e.jsx(S,{size:16,className:"mr-2"}),r.date]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-3 py-1 text-xs font-semibold tracking-wider text-slate-400",children:r.category})]}),e.jsx("h1",{className:"text-4xl md:text-5xl lg:text-6xl font-extrabold tracking-tight mb-8 leading-tight text-white",children:r.title}),e.jsx("p",{className:"text-xl text-slate-300 leading-relaxed max-w-3xl",children:r.description})]}),e.jsx("div",{className:"bg-slate-900/40 backdrop-blur-md border border-slate-800/80 rounded-3xl p-8 md:p-12 shadow-2xl",children:w?e.jsxs("div",{className:"flex flex-col items-center justify-center py-20 text-slate-400",children:[e.jsx($,{size:48,className:"animate-spin text-cyan-400 mb-4"}),e.jsx("p",{className:"animate-pulse",children:"Loading article..."})]}):v?e.jsx("div",{className:"py-20 text-center text-red-400",children:e.jsx("p",{children:"Failed to load the article. Please try again later."})}):e.jsx("article",{className:"prose prose-invert prose-cyan max-w-none prose-headings:font-bold prose-headings:tracking-tight prose-a:text-cyan-300 prose-a:no-underline hover:prose-a:underline prose-code:text-cyan-200 prose-code:bg-cyan-950/30 prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded-md prose-pre:bg-slate-950/80 prose-pre:border prose-pre:border-slate-800 prose-img:rounded-xl prose-img:border prose-img:border-slate-800",children:e.jsx(C,{remarkPlugins:[B,P],rehypePlugins:[A,L],components:{...M,table:s=>{const{node:n,...a}=s;return e.jsx("div",{className:"overflow-x-auto",children:e.jsx("table",{...a})})},pre:s=>{const{children:n}=s,a=b.Children.toArray(n)[0];let o="",l="text";if(b.isValidElement(a)){const c=a.props,g=/language-([\w-]+)/.exec(c.className||"");g&&(l=g[1]),o=u(c.children).replace(/\n$/,"")}return e.jsx(k,{code:o,language:l,className:"not-prose"})},img:s=>{const n=s.width!=null&&s.height!=null;return e.jsx("img",{...s,className:n?"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto":"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto aspect-video object-cover",loading:"lazy"})}},children:x})})})]})]})]}):e.jsx("div",{className:"min-h-screen bg-slate-950 text-slate-50 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx("h1",{className:"text-4xl font-bold mb-4",children:"Post Not Found"}),e.jsx(j,{to:"/blog",className:"text-cyan-300 hover:text-cyan-200",children:"Return to Blog"})]})})}export{G as default}; diff --git a/assets/BlogPost-Dhg8xum2.js b/assets/BlogPost-Dhg8xum2.js deleted file mode 100644 index c5235a68..00000000 --- a/assets/BlogPost-Dhg8xum2.js +++ /dev/null @@ -1,292 +0,0 @@ -import{g as zs,j as pe,r as Xr,R as Fi}from"./vendor-react-BiHfrq0e.js";import{b as Bc,L as P0,S as Fc,C as Hc}from"./index-CcwlvHYJ.js";import{b as zc}from"./blogData-OjR2ZtNr.js";import{m as Uc,k as qc,n as Yc}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function Hi(e){const t=[],r=String(e||"");let n=r.indexOf(","),a=0,i=!1;for(;!i;){n===-1&&(n=r.length,i=!0);const u=r.slice(a,n).trim();(u||!i)&&t.push(u),a=n+1,n=r.indexOf(",",a)}return t}function Us(e,t){const r={};return(e[e.length-1]===""?[...e,""]:e).join((r.padRight?" ":"")+","+(r.padLeft===!1?"":" ")).trim()}const Gc=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,Vc=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,jc={};function zi(e,t){return(jc.jsx?Vc:Gc).test(e)}const Wc=/[ \t\n\f\r]/g;function Xc(e){return typeof e=="object"?e.type==="text"?Ui(e.value):!1:Ui(e)}function Ui(e){return e.replace(Wc,"")===""}class Tn{constructor(t,r,n){this.normal=r,this.property=t,n&&(this.space=n)}}Tn.prototype.normal={};Tn.prototype.property={};Tn.prototype.space=void 0;function qs(e,t){const r={},n={};for(const a of e)Object.assign(r,a.property),Object.assign(n,a.normal);return new Tn(r,n,t)}function fn(e){return e.toLowerCase()}class nt{constructor(t,r){this.attribute=r,this.property=t}}nt.prototype.attribute="";nt.prototype.booleanish=!1;nt.prototype.boolean=!1;nt.prototype.commaOrSpaceSeparated=!1;nt.prototype.commaSeparated=!1;nt.prototype.defined=!1;nt.prototype.mustUseProperty=!1;nt.prototype.number=!1;nt.prototype.overloadedBoolean=!1;nt.prototype.property="";nt.prototype.spaceSeparated=!1;nt.prototype.space=void 0;let $c=0;const le=gr(),Le=gr(),Ea=gr(),q=gr(),ye=gr(),fr=gr(),st=gr();function gr(){return 2**++$c}const Ta=Object.freeze(Object.defineProperty({__proto__:null,boolean:le,booleanish:Le,commaOrSpaceSeparated:st,commaSeparated:fr,number:q,overloadedBoolean:Ea,spaceSeparated:ye},Symbol.toStringTag,{value:"Module"})),B0=Object.keys(Ta);class Za extends nt{constructor(t,r,n,a){let i=-1;if(super(t,r),qi(this,"space",a),typeof n=="number")for(;++i4&&r.slice(0,4)==="data"&&e1.test(t)){if(t.charAt(4)==="-"){const i=t.slice(5).replace(Yi,r1);n="data"+i.charAt(0).toUpperCase()+i.slice(1)}else{const i=t.slice(4);if(!Yi.test(i)){let u=i.replace(Zc,t1);u.charAt(0)!=="-"&&(u="-"+u),t="data"+u}}a=Za}return new a(n,t)}function t1(e){return"-"+e.toLowerCase()}function r1(e){return e.charAt(1).toUpperCase()}const xn=qs([Ys,Qc,js,Ws,Xs],"html"),rr=qs([Ys,Kc,js,Ws,Xs],"svg");function Gi(e){const t=String(e||"").trim();return t?t.split(/[ \t\n\r\f]+/g):[]}function $s(e){return e.join(" ").trim()}var Ar={},F0,Vi;function n1(){if(Vi)return F0;Vi=1;var e=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,t=/\n/g,r=/^\s*/,n=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,a=/^:\s*/,i=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,u=/^[;\s]*/,s=/^\s+|\s+$/g,l=` -`,c="/",d="*",f="",g="comment",p="declaration";function x(D,_){if(typeof D!="string")throw new TypeError("First argument must be a string");if(!D)return[];_=_||{};var N=1,M=1;function W(ne){var X=ne.match(t);X&&(N+=X.length);var me=ne.lastIndexOf(l);M=~me?ne.length-me:M+ne.length}function j(){var ne={line:N,column:M};return function(X){return X.position=new L(ne),K(),X}}function L(ne){this.start=ne,this.end={line:N,column:M},this.source=_.source}L.prototype.content=D;function ee(ne){var X=new Error(_.source+":"+N+":"+M+": "+ne);if(X.reason=ne,X.filename=_.source,X.line=N,X.column=M,X.source=D,!_.silent)throw X}function re(ne){var X=ne.exec(D);if(X){var me=X[0];return W(me),D=D.slice(me.length),X}}function K(){re(r)}function R(ne){var X;for(ne=ne||[];X=J();)X!==!1&&ne.push(X);return ne}function J(){var ne=j();if(!(c!=D.charAt(0)||d!=D.charAt(1))){for(var X=2;f!=D.charAt(X)&&(d!=D.charAt(X)||c!=D.charAt(X+1));)++X;if(X+=2,f===D.charAt(X-1))return ee("End of comment missing");var me=D.slice(2,X-2);return M+=2,W(me),D=D.slice(X),M+=2,ne({type:g,comment:me})}}function Q(){var ne=j(),X=re(n);if(X){if(J(),!re(a))return ee("property missing ':'");var me=re(i),ke=ne({type:p,property:S(X[0].replace(e,f)),value:me?S(me[0].replace(e,f)):f});return re(u),ke}}function be(){var ne=[];R(ne);for(var X;X=Q();)X!==!1&&(ne.push(X),R(ne));return ne}return K(),be()}function S(D){return D?D.replace(s,f):f}return F0=x,F0}var ji;function a1(){if(ji)return Ar;ji=1;var e=Ar&&Ar.__importDefault||function(n){return n&&n.__esModule?n:{default:n}};Object.defineProperty(Ar,"__esModule",{value:!0}),Ar.default=r;const t=e(n1());function r(n,a){let i=null;if(!n||typeof n!="string")return i;const u=(0,t.default)(n),s=typeof a=="function";return u.forEach(l=>{if(l.type!=="declaration")return;const{property:c,value:d}=l;s?a(c,d,l):d&&(i=i||{},i[c]=d)}),i}return Ar}var $r={},Wi;function i1(){if(Wi)return $r;Wi=1,Object.defineProperty($r,"__esModule",{value:!0}),$r.camelCase=void 0;var e=/^--[a-zA-Z0-9_-]+$/,t=/-([a-z])/g,r=/^[^-]+$/,n=/^-(webkit|moz|ms|o|khtml)-/,a=/^-(ms)-/,i=function(c){return!c||r.test(c)||e.test(c)},u=function(c,d){return d.toUpperCase()},s=function(c,d){return"".concat(d,"-")},l=function(c,d){return d===void 0&&(d={}),i(c)?c:(c=c.toLowerCase(),d.reactCompat?c=c.replace(a,s):c=c.replace(n,s),c.replace(t,u))};return $r.camelCase=l,$r}var Qr,Xi;function u1(){if(Xi)return Qr;Xi=1;var e=Qr&&Qr.__importDefault||function(a){return a&&a.__esModule?a:{default:a}},t=e(a1()),r=i1();function n(a,i){var u={};return!a||typeof a!="string"||(0,t.default)(a,function(s,l){s&&l&&(u[(0,r.camelCase)(s,i)]=l)}),u}return n.default=n,Qr=n,Qr}var s1=u1();const l1=zs(s1),d0=Qs("end"),_t=Qs("start");function Qs(e){return t;function t(r){const n=r&&r.position&&r.position[e]||{};if(typeof n.line=="number"&&n.line>0&&typeof n.column=="number"&&n.column>0)return{line:n.line,column:n.column,offset:typeof n.offset=="number"&&n.offset>-1?n.offset:void 0}}}function o1(e){const t=_t(e),r=d0(e);if(t&&r)return{start:t,end:r}}function nn(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?$i(e.position):"start"in e||"end"in e?$i(e):"line"in e||"column"in e?xa(e):""}function xa(e){return Qi(e&&e.line)+":"+Qi(e&&e.column)}function $i(e){return xa(e&&e.start)+"-"+xa(e&&e.end)}function Qi(e){return e&&typeof e=="number"?e:1}class je extends Error{constructor(t,r,n){super(),typeof r=="string"&&(n=r,r=void 0);let a="",i={},u=!1;if(r&&("line"in r&&"column"in r?i={place:r}:"start"in r&&"end"in r?i={place:r}:"type"in r?i={ancestors:[r],place:r.position}:i={...r}),typeof t=="string"?a=t:!i.cause&&t&&(u=!0,a=t.message,i.cause=t),!i.ruleId&&!i.source&&typeof n=="string"){const l=n.indexOf(":");l===-1?i.ruleId=n:(i.source=n.slice(0,l),i.ruleId=n.slice(l+1))}if(!i.place&&i.ancestors&&i.ancestors){const l=i.ancestors[i.ancestors.length-1];l&&(i.place=l.position)}const s=i.place&&"start"in i.place?i.place.start:i.place;this.ancestors=i.ancestors||void 0,this.cause=i.cause||void 0,this.column=s?s.column:void 0,this.fatal=void 0,this.file="",this.message=a,this.line=s?s.line:void 0,this.name=nn(i.place)||"1:1",this.place=i.place||void 0,this.reason=this.message,this.ruleId=i.ruleId||void 0,this.source=i.source||void 0,this.stack=u&&i.cause&&typeof i.cause.stack=="string"?i.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}}je.prototype.file="";je.prototype.name="";je.prototype.reason="";je.prototype.message="";je.prototype.stack="";je.prototype.column=void 0;je.prototype.line=void 0;je.prototype.ancestors=void 0;je.prototype.cause=void 0;je.prototype.fatal=void 0;je.prototype.place=void 0;je.prototype.ruleId=void 0;je.prototype.source=void 0;const ei={}.hasOwnProperty,c1=new Map,h1=/[A-Z]/g,d1=new Set(["table","tbody","thead","tfoot","tr"]),f1=new Set(["td","th"]),Ks="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function m1(e,t){if(!t||t.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const r=t.filePath||void 0;let n;if(t.development){if(typeof t.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");n=v1(r,t.jsxDEV)}else{if(typeof t.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof t.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");n=y1(r,t.jsx,t.jsxs)}const a={Fragment:t.Fragment,ancestors:[],components:t.components||{},create:n,elementAttributeNameCase:t.elementAttributeNameCase||"react",evaluater:t.createEvaluater?t.createEvaluater():void 0,filePath:r,ignoreInvalidStyle:t.ignoreInvalidStyle||!1,passKeys:t.passKeys!==!1,passNode:t.passNode||!1,schema:t.space==="svg"?rr:xn,stylePropertyNameCase:t.stylePropertyNameCase||"dom",tableCellAlignToStyle:t.tableCellAlignToStyle!==!1},i=Js(a,e,void 0);return i&&typeof i!="string"?i:a.create(e,a.Fragment,{children:i||void 0},void 0)}function Js(e,t,r){if(t.type==="element")return p1(e,t,r);if(t.type==="mdxFlowExpression"||t.type==="mdxTextExpression")return g1(e,t);if(t.type==="mdxJsxFlowElement"||t.type==="mdxJsxTextElement")return E1(e,t,r);if(t.type==="mdxjsEsm")return b1(e,t);if(t.type==="root")return T1(e,t,r);if(t.type==="text")return x1(e,t)}function p1(e,t,r){const n=e.schema;let a=n;t.tagName.toLowerCase()==="svg"&&n.space==="html"&&(a=rr,e.schema=a),e.ancestors.push(t);const i=el(e,t.tagName,!1),u=A1(e,t);let s=ri(e,t);return d1.has(t.tagName)&&(s=s.filter(function(l){return typeof l=="string"?!Xc(l):!0})),Zs(e,u,i,t),ti(u,s),e.ancestors.pop(),e.schema=n,e.create(t,i,u,r)}function g1(e,t){if(t.data&&t.data.estree&&e.evaluater){const n=t.data.estree.body[0];return n.type,e.evaluater.evaluateExpression(n.expression)}mn(e,t.position)}function b1(e,t){if(t.data&&t.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(t.data.estree);mn(e,t.position)}function E1(e,t,r){const n=e.schema;let a=n;t.name==="svg"&&n.space==="html"&&(a=rr,e.schema=a),e.ancestors.push(t);const i=t.name===null?e.Fragment:el(e,t.name,!0),u=k1(e,t),s=ri(e,t);return Zs(e,u,i,t),ti(u,s),e.ancestors.pop(),e.schema=n,e.create(t,i,u,r)}function T1(e,t,r){const n={};return ti(n,ri(e,t)),e.create(t,e.Fragment,n,r)}function x1(e,t){return t.value}function Zs(e,t,r,n){typeof r!="string"&&r!==e.Fragment&&e.passNode&&(t.node=n)}function ti(e,t){if(t.length>0){const r=t.length>1?t:t[0];r&&(e.children=r)}}function y1(e,t,r){return n;function n(a,i,u,s){const c=Array.isArray(u.children)?r:t;return s?c(i,u,s):c(i,u)}}function v1(e,t){return r;function r(n,a,i,u){const s=Array.isArray(i.children),l=_t(n);return t(a,i,u,s,{columnNumber:l?l.column-1:void 0,fileName:e,lineNumber:l?l.line:void 0},void 0)}}function A1(e,t){const r={};let n,a;for(a in t.properties)if(a!=="children"&&ei.call(t.properties,a)){const i=S1(e,a,t.properties[a]);if(i){const[u,s]=i;e.tableCellAlignToStyle&&u==="align"&&typeof s=="string"&&f1.has(t.tagName)?n=s:r[u]=s}}if(n){const i=r.style||(r.style={});i[e.stylePropertyNameCase==="css"?"text-align":"textAlign"]=n}return r}function k1(e,t){const r={};for(const n of t.attributes)if(n.type==="mdxJsxExpressionAttribute")if(n.data&&n.data.estree&&e.evaluater){const i=n.data.estree.body[0];i.type;const u=i.expression;u.type;const s=u.properties[0];s.type,Object.assign(r,e.evaluater.evaluateExpression(s.argument))}else mn(e,t.position);else{const a=n.name;let i;if(n.value&&typeof n.value=="object")if(n.value.data&&n.value.data.estree&&e.evaluater){const s=n.value.data.estree.body[0];s.type,i=e.evaluater.evaluateExpression(s.expression)}else mn(e,t.position);else i=n.value===null?!0:n.value;r[a]=i}return r}function ri(e,t){const r=[];let n=-1;const a=e.passKeys?new Map:c1;for(;++na?0:a+t:t=t>a?a:t,r=r>0?r:0,n.length<1e4)u=Array.from(n),u.unshift(t,r),e.splice(...u);else for(r&&e.splice(t,r);i0?(lt(e,e.length,0,t),e):t}const Zi={}.hasOwnProperty;function rl(e){const t={};let r=-1;for(;++r13&&r<32||r>126&&r<160||r>55295&&r<57344||r>64975&&r<65008||(r&65535)===65535||(r&65535)===65534||r>1114111?"�":String.fromCodePoint(r)}function xt(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const Ke=nr(/[A-Za-z]/),Ge=nr(/[\dA-Za-z]/),R1=nr(/[#-'*+\--9=?A-Z^-~]/);function Zn(e){return e!==null&&(e<32||e===127)}const ya=nr(/\d/),M1=nr(/[\dA-Fa-f]/),P1=nr(/[!-/:-@[-`{-~]/);function ae(e){return e!==null&&e<-2}function ve(e){return e!==null&&(e<0||e===32)}function ge(e){return e===-2||e===-1||e===32}const f0=nr(new RegExp("\\p{P}|\\p{S}","u")),pr=nr(/\s/);function nr(e){return t;function t(r){return r!==null&&r>-1&&e.test(String.fromCharCode(r))}}function Pr(e){const t=[];let r=-1,n=0,a=0;for(;++r55295&&i<57344){const s=e.charCodeAt(r+1);i<56320&&s>56319&&s<57344?(u=String.fromCharCode(i,s),a=1):u="�"}else u=String.fromCharCode(i);u&&(t.push(e.slice(n,r),encodeURIComponent(u)),n=r+a+1,u=""),a&&(r+=a,a=0)}return t.join("")+e.slice(n)}function fe(e,t,r,n){const a=n?n-1:Number.POSITIVE_INFINITY;let i=0;return u;function u(l){return ge(l)?(e.enter(r),s(l)):t(l)}function s(l){return ge(l)&&i++u))return;const ee=t.events.length;let re=ee,K,R;for(;re--;)if(t.events[re][0]==="exit"&&t.events[re][1].type==="chunkFlow"){if(K){R=t.events[re][1].end;break}K=!0}for(_(n),L=ee;LM;){const j=r[W];t.containerState=j[1],j[0].exit.call(t,e)}r.length=M}function N(){a.write([null]),i=void 0,a=void 0,t.containerState._closeFlow=void 0}}function U1(e,t,r){return fe(e,e.attempt(this.parser.constructs.document,t,r),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function Ir(e){if(e===null||ve(e)||pr(e))return 1;if(f0(e))return 2}function m0(e,t,r){const n=[];let a=-1;for(;++a1&&e[r][1].end.offset-e[r][1].start.offset>1?2:1;const f={...e[n][1].end},g={...e[r][1].start};tu(f,-l),tu(g,l),u={type:l>1?"strongSequence":"emphasisSequence",start:f,end:{...e[n][1].end}},s={type:l>1?"strongSequence":"emphasisSequence",start:{...e[r][1].start},end:g},i={type:l>1?"strongText":"emphasisText",start:{...e[n][1].end},end:{...e[r][1].start}},a={type:l>1?"strong":"emphasis",start:{...u.start},end:{...s.end}},e[n][1].end={...u.start},e[r][1].start={...s.end},c=[],e[n][1].end.offset-e[n][1].start.offset&&(c=mt(c,[["enter",e[n][1],t],["exit",e[n][1],t]])),c=mt(c,[["enter",a,t],["enter",u,t],["exit",u,t],["enter",i,t]]),c=mt(c,m0(t.parser.constructs.insideSpan.null,e.slice(n+1,r),t)),c=mt(c,[["exit",i,t],["enter",s,t],["exit",s,t],["exit",a,t]]),e[r][1].end.offset-e[r][1].start.offset?(d=2,c=mt(c,[["enter",e[r][1],t],["exit",e[r][1],t]])):d=0,lt(e,n-1,r-n+3,c),r=n+c.length-d-2;break}}for(r=-1;++r0&&ge(L)?fe(e,N,"linePrefix",i+1)(L):N(L)}function N(L){return L===null||ae(L)?e.check(ru,S,W)(L):(e.enter("codeFlowValue"),M(L))}function M(L){return L===null||ae(L)?(e.exit("codeFlowValue"),N(L)):(e.consume(L),M)}function W(L){return e.exit("codeFenced"),t(L)}function j(L,ee,re){let K=0;return R;function R(X){return L.enter("lineEnding"),L.consume(X),L.exit("lineEnding"),J}function J(X){return L.enter("codeFencedFence"),ge(X)?fe(L,Q,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(X):Q(X)}function Q(X){return X===s?(L.enter("codeFencedFenceSequence"),be(X)):re(X)}function be(X){return X===s?(K++,L.consume(X),be):K>=u?(L.exit("codeFencedFenceSequence"),ge(X)?fe(L,ne,"whitespace")(X):ne(X)):re(X)}function ne(X){return X===null||ae(X)?(L.exit("codeFencedFence"),ee(X)):re(X)}}}function Z1(e,t,r){const n=this;return a;function a(u){return u===null?r(u):(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),i)}function i(u){return n.parser.lazy[n.now().line]?r(u):t(u)}}const z0={name:"codeIndented",tokenize:th},eh={partial:!0,tokenize:rh};function th(e,t,r){const n=this;return a;function a(c){return e.enter("codeIndented"),fe(e,i,"linePrefix",5)(c)}function i(c){const d=n.events[n.events.length-1];return d&&d[1].type==="linePrefix"&&d[2].sliceSerialize(d[1],!0).length>=4?u(c):r(c)}function u(c){return c===null?l(c):ae(c)?e.attempt(eh,u,l)(c):(e.enter("codeFlowValue"),s(c))}function s(c){return c===null||ae(c)?(e.exit("codeFlowValue"),u(c)):(e.consume(c),s)}function l(c){return e.exit("codeIndented"),t(c)}}function rh(e,t,r){const n=this;return a;function a(u){return n.parser.lazy[n.now().line]?r(u):ae(u)?(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),a):fe(e,i,"linePrefix",5)(u)}function i(u){const s=n.events[n.events.length-1];return s&&s[1].type==="linePrefix"&&s[2].sliceSerialize(s[1],!0).length>=4?t(u):ae(u)?a(u):r(u)}}const nh={name:"codeText",previous:ih,resolve:ah,tokenize:uh};function ah(e){let t=e.length-4,r=3,n,a;if((e[r][1].type==="lineEnding"||e[r][1].type==="space")&&(e[t][1].type==="lineEnding"||e[t][1].type==="space")){for(n=r;++n=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+t+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return tthis.left.length?this.right.slice(this.right.length-n+this.left.length,this.right.length-t+this.left.length).reverse():this.left.slice(t).concat(this.right.slice(this.right.length-n+this.left.length).reverse())}splice(t,r,n){const a=r||0;this.setCursor(Math.trunc(t));const i=this.right.splice(this.right.length-a,Number.POSITIVE_INFINITY);return n&&Kr(this.left,n),i.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(t){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(t)}pushMany(t){this.setCursor(Number.POSITIVE_INFINITY),Kr(this.left,t)}unshift(t){this.setCursor(0),this.right.push(t)}unshiftMany(t){this.setCursor(0),Kr(this.right,t.reverse())}setCursor(t){if(!(t===this.left.length||t>this.left.length&&this.right.length===0||t<0&&this.left.length===0))if(t=4?t(u):e.interrupt(n.parser.constructs.flow,r,t)(u)}}function ll(e,t,r,n,a,i,u,s,l){const c=l||Number.POSITIVE_INFINITY;let d=0;return f;function f(_){return _===60?(e.enter(n),e.enter(a),e.enter(i),e.consume(_),e.exit(i),g):_===null||_===32||_===41||Zn(_)?r(_):(e.enter(n),e.enter(u),e.enter(s),e.enter("chunkString",{contentType:"string"}),S(_))}function g(_){return _===62?(e.enter(i),e.consume(_),e.exit(i),e.exit(a),e.exit(n),t):(e.enter(s),e.enter("chunkString",{contentType:"string"}),p(_))}function p(_){return _===62?(e.exit("chunkString"),e.exit(s),g(_)):_===null||_===60||ae(_)?r(_):(e.consume(_),_===92?x:p)}function x(_){return _===60||_===62||_===92?(e.consume(_),p):p(_)}function S(_){return!d&&(_===null||_===41||ve(_))?(e.exit("chunkString"),e.exit(s),e.exit(u),e.exit(n),t(_)):d999||p===null||p===91||p===93&&!l||p===94&&!s&&"_hiddenFootnoteSupport"in u.parser.constructs?r(p):p===93?(e.exit(i),e.enter(a),e.consume(p),e.exit(a),e.exit(n),t):ae(p)?(e.enter("lineEnding"),e.consume(p),e.exit("lineEnding"),d):(e.enter("chunkString",{contentType:"string"}),f(p))}function f(p){return p===null||p===91||p===93||ae(p)||s++>999?(e.exit("chunkString"),d(p)):(e.consume(p),l||(l=!ge(p)),p===92?g:f)}function g(p){return p===91||p===92||p===93?(e.consume(p),s++,f):f(p)}}function cl(e,t,r,n,a,i){let u;return s;function s(g){return g===34||g===39||g===40?(e.enter(n),e.enter(a),e.consume(g),e.exit(a),u=g===40?41:g,l):r(g)}function l(g){return g===u?(e.enter(a),e.consume(g),e.exit(a),e.exit(n),t):(e.enter(i),c(g))}function c(g){return g===u?(e.exit(i),l(u)):g===null?r(g):ae(g)?(e.enter("lineEnding"),e.consume(g),e.exit("lineEnding"),fe(e,c,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),d(g))}function d(g){return g===u||g===null||ae(g)?(e.exit("chunkString"),c(g)):(e.consume(g),g===92?f:d)}function f(g){return g===u||g===92?(e.consume(g),d):d(g)}}function an(e,t){let r;return n;function n(a){return ae(a)?(e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),r=!0,n):ge(a)?fe(e,n,r?"linePrefix":"lineSuffix")(a):t(a)}}const mh={name:"definition",tokenize:gh},ph={partial:!0,tokenize:bh};function gh(e,t,r){const n=this;let a;return i;function i(p){return e.enter("definition"),u(p)}function u(p){return ol.call(n,e,s,r,"definitionLabel","definitionLabelMarker","definitionLabelString")(p)}function s(p){return a=xt(n.sliceSerialize(n.events[n.events.length-1][1]).slice(1,-1)),p===58?(e.enter("definitionMarker"),e.consume(p),e.exit("definitionMarker"),l):r(p)}function l(p){return ve(p)?an(e,c)(p):c(p)}function c(p){return ll(e,d,r,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(p)}function d(p){return e.attempt(ph,f,f)(p)}function f(p){return ge(p)?fe(e,g,"whitespace")(p):g(p)}function g(p){return p===null||ae(p)?(e.exit("definition"),n.parser.defined.push(a),t(p)):r(p)}}function bh(e,t,r){return n;function n(s){return ve(s)?an(e,a)(s):r(s)}function a(s){return cl(e,i,r,"definitionTitle","definitionTitleMarker","definitionTitleString")(s)}function i(s){return ge(s)?fe(e,u,"whitespace")(s):u(s)}function u(s){return s===null||ae(s)?t(s):r(s)}}const Eh={name:"hardBreakEscape",tokenize:Th};function Th(e,t,r){return n;function n(i){return e.enter("hardBreakEscape"),e.consume(i),a}function a(i){return ae(i)?(e.exit("hardBreakEscape"),t(i)):r(i)}}const xh={name:"headingAtx",resolve:yh,tokenize:vh};function yh(e,t){let r=e.length-2,n=3,a,i;return e[n][1].type==="whitespace"&&(n+=2),r-2>n&&e[r][1].type==="whitespace"&&(r-=2),e[r][1].type==="atxHeadingSequence"&&(n===r-1||r-4>n&&e[r-2][1].type==="whitespace")&&(r-=n+1===r?2:4),r>n&&(a={type:"atxHeadingText",start:e[n][1].start,end:e[r][1].end},i={type:"chunkText",start:e[n][1].start,end:e[r][1].end,contentType:"text"},lt(e,n,r-n+1,[["enter",a,t],["enter",i,t],["exit",i,t],["exit",a,t]])),e}function vh(e,t,r){let n=0;return a;function a(d){return e.enter("atxHeading"),i(d)}function i(d){return e.enter("atxHeadingSequence"),u(d)}function u(d){return d===35&&n++<6?(e.consume(d),u):d===null||ve(d)?(e.exit("atxHeadingSequence"),s(d)):r(d)}function s(d){return d===35?(e.enter("atxHeadingSequence"),l(d)):d===null||ae(d)?(e.exit("atxHeading"),t(d)):ge(d)?fe(e,s,"whitespace")(d):(e.enter("atxHeadingText"),c(d))}function l(d){return d===35?(e.consume(d),l):(e.exit("atxHeadingSequence"),s(d))}function c(d){return d===null||d===35||ve(d)?(e.exit("atxHeadingText"),s(d)):(e.consume(d),c)}}const Ah=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],au=["pre","script","style","textarea"],kh={concrete:!0,name:"htmlFlow",resolveTo:Ch,tokenize:_h},Sh={partial:!0,tokenize:Nh},wh={partial:!0,tokenize:Ih};function Ch(e){let t=e.length;for(;t--&&!(e[t][0]==="enter"&&e[t][1].type==="htmlFlow"););return t>1&&e[t-2][1].type==="linePrefix"&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function _h(e,t,r){const n=this;let a,i,u,s,l;return c;function c(C){return d(C)}function d(C){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(C),f}function f(C){return C===33?(e.consume(C),g):C===47?(e.consume(C),i=!0,S):C===63?(e.consume(C),a=3,n.interrupt?t:w):Ke(C)?(e.consume(C),u=String.fromCharCode(C),D):r(C)}function g(C){return C===45?(e.consume(C),a=2,p):C===91?(e.consume(C),a=5,s=0,x):Ke(C)?(e.consume(C),a=4,n.interrupt?t:w):r(C)}function p(C){return C===45?(e.consume(C),n.interrupt?t:w):r(C)}function x(C){const Ye="CDATA[";return C===Ye.charCodeAt(s++)?(e.consume(C),s===Ye.length?n.interrupt?t:Q:x):r(C)}function S(C){return Ke(C)?(e.consume(C),u=String.fromCharCode(C),D):r(C)}function D(C){if(C===null||C===47||C===62||ve(C)){const Ye=C===47,vt=u.toLowerCase();return!Ye&&!i&&au.includes(vt)?(a=1,n.interrupt?t(C):Q(C)):Ah.includes(u.toLowerCase())?(a=6,Ye?(e.consume(C),_):n.interrupt?t(C):Q(C)):(a=7,n.interrupt&&!n.parser.lazy[n.now().line]?r(C):i?N(C):M(C))}return C===45||Ge(C)?(e.consume(C),u+=String.fromCharCode(C),D):r(C)}function _(C){return C===62?(e.consume(C),n.interrupt?t:Q):r(C)}function N(C){return ge(C)?(e.consume(C),N):R(C)}function M(C){return C===47?(e.consume(C),R):C===58||C===95||Ke(C)?(e.consume(C),W):ge(C)?(e.consume(C),M):R(C)}function W(C){return C===45||C===46||C===58||C===95||Ge(C)?(e.consume(C),W):j(C)}function j(C){return C===61?(e.consume(C),L):ge(C)?(e.consume(C),j):M(C)}function L(C){return C===null||C===60||C===61||C===62||C===96?r(C):C===34||C===39?(e.consume(C),l=C,ee):ge(C)?(e.consume(C),L):re(C)}function ee(C){return C===l?(e.consume(C),l=null,K):C===null||ae(C)?r(C):(e.consume(C),ee)}function re(C){return C===null||C===34||C===39||C===47||C===60||C===61||C===62||C===96||ve(C)?j(C):(e.consume(C),re)}function K(C){return C===47||C===62||ge(C)?M(C):r(C)}function R(C){return C===62?(e.consume(C),J):r(C)}function J(C){return C===null||ae(C)?Q(C):ge(C)?(e.consume(C),J):r(C)}function Q(C){return C===45&&a===2?(e.consume(C),me):C===60&&a===1?(e.consume(C),ke):C===62&&a===4?(e.consume(C),Oe):C===63&&a===3?(e.consume(C),w):C===93&&a===5?(e.consume(C),at):ae(C)&&(a===6||a===7)?(e.exit("htmlFlowData"),e.check(Sh,Xe,be)(C)):C===null||ae(C)?(e.exit("htmlFlowData"),be(C)):(e.consume(C),Q)}function be(C){return e.check(wh,ne,Xe)(C)}function ne(C){return e.enter("lineEnding"),e.consume(C),e.exit("lineEnding"),X}function X(C){return C===null||ae(C)?be(C):(e.enter("htmlFlowData"),Q(C))}function me(C){return C===45?(e.consume(C),w):Q(C)}function ke(C){return C===47?(e.consume(C),u="",ze):Q(C)}function ze(C){if(C===62){const Ye=u.toLowerCase();return au.includes(Ye)?(e.consume(C),Oe):Q(C)}return Ke(C)&&u.length<8?(e.consume(C),u+=String.fromCharCode(C),ze):Q(C)}function at(C){return C===93?(e.consume(C),w):Q(C)}function w(C){return C===62?(e.consume(C),Oe):C===45&&a===2?(e.consume(C),w):Q(C)}function Oe(C){return C===null||ae(C)?(e.exit("htmlFlowData"),Xe(C)):(e.consume(C),Oe)}function Xe(C){return e.exit("htmlFlow"),t(C)}}function Ih(e,t,r){const n=this;return a;function a(u){return ae(u)?(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),i):r(u)}function i(u){return n.parser.lazy[n.now().line]?r(u):t(u)}}function Nh(e,t,r){return n;function n(a){return e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),e.attempt(yn,t,r)}}const Dh={name:"htmlText",tokenize:Oh};function Oh(e,t,r){const n=this;let a,i,u;return s;function s(w){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(w),l}function l(w){return w===33?(e.consume(w),c):w===47?(e.consume(w),j):w===63?(e.consume(w),M):Ke(w)?(e.consume(w),re):r(w)}function c(w){return w===45?(e.consume(w),d):w===91?(e.consume(w),i=0,x):Ke(w)?(e.consume(w),N):r(w)}function d(w){return w===45?(e.consume(w),p):r(w)}function f(w){return w===null?r(w):w===45?(e.consume(w),g):ae(w)?(u=f,ke(w)):(e.consume(w),f)}function g(w){return w===45?(e.consume(w),p):f(w)}function p(w){return w===62?me(w):w===45?g(w):f(w)}function x(w){const Oe="CDATA[";return w===Oe.charCodeAt(i++)?(e.consume(w),i===Oe.length?S:x):r(w)}function S(w){return w===null?r(w):w===93?(e.consume(w),D):ae(w)?(u=S,ke(w)):(e.consume(w),S)}function D(w){return w===93?(e.consume(w),_):S(w)}function _(w){return w===62?me(w):w===93?(e.consume(w),_):S(w)}function N(w){return w===null||w===62?me(w):ae(w)?(u=N,ke(w)):(e.consume(w),N)}function M(w){return w===null?r(w):w===63?(e.consume(w),W):ae(w)?(u=M,ke(w)):(e.consume(w),M)}function W(w){return w===62?me(w):M(w)}function j(w){return Ke(w)?(e.consume(w),L):r(w)}function L(w){return w===45||Ge(w)?(e.consume(w),L):ee(w)}function ee(w){return ae(w)?(u=ee,ke(w)):ge(w)?(e.consume(w),ee):me(w)}function re(w){return w===45||Ge(w)?(e.consume(w),re):w===47||w===62||ve(w)?K(w):r(w)}function K(w){return w===47?(e.consume(w),me):w===58||w===95||Ke(w)?(e.consume(w),R):ae(w)?(u=K,ke(w)):ge(w)?(e.consume(w),K):me(w)}function R(w){return w===45||w===46||w===58||w===95||Ge(w)?(e.consume(w),R):J(w)}function J(w){return w===61?(e.consume(w),Q):ae(w)?(u=J,ke(w)):ge(w)?(e.consume(w),J):K(w)}function Q(w){return w===null||w===60||w===61||w===62||w===96?r(w):w===34||w===39?(e.consume(w),a=w,be):ae(w)?(u=Q,ke(w)):ge(w)?(e.consume(w),Q):(e.consume(w),ne)}function be(w){return w===a?(e.consume(w),a=void 0,X):w===null?r(w):ae(w)?(u=be,ke(w)):(e.consume(w),be)}function ne(w){return w===null||w===34||w===39||w===60||w===61||w===96?r(w):w===47||w===62||ve(w)?K(w):(e.consume(w),ne)}function X(w){return w===47||w===62||ve(w)?K(w):r(w)}function me(w){return w===62?(e.consume(w),e.exit("htmlTextData"),e.exit("htmlText"),t):r(w)}function ke(w){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(w),e.exit("lineEnding"),ze}function ze(w){return ge(w)?fe(e,at,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(w):at(w)}function at(w){return e.enter("htmlTextData"),u(w)}}const ii={name:"labelEnd",resolveAll:Ph,resolveTo:Bh,tokenize:Fh},Lh={tokenize:Hh},Rh={tokenize:zh},Mh={tokenize:Uh};function Ph(e){let t=-1;const r=[];for(;++t=3&&(c===null||ae(c))?(e.exit("thematicBreak"),t(c)):r(c)}function l(c){return c===a?(e.consume(c),n++,l):(e.exit("thematicBreakSequence"),ge(c)?fe(e,s,"whitespace")(c):s(c))}}const tt={continuation:{tokenize:Kh},exit:Zh,name:"list",tokenize:Qh},Xh={partial:!0,tokenize:ed},$h={partial:!0,tokenize:Jh};function Qh(e,t,r){const n=this,a=n.events[n.events.length-1];let i=a&&a[1].type==="linePrefix"?a[2].sliceSerialize(a[1],!0).length:0,u=0;return s;function s(p){const x=n.containerState.type||(p===42||p===43||p===45?"listUnordered":"listOrdered");if(x==="listUnordered"?!n.containerState.marker||p===n.containerState.marker:ya(p)){if(n.containerState.type||(n.containerState.type=x,e.enter(x,{_container:!0})),x==="listUnordered")return e.enter("listItemPrefix"),p===42||p===45?e.check(Xn,r,c)(p):c(p);if(!n.interrupt||p===49)return e.enter("listItemPrefix"),e.enter("listItemValue"),l(p)}return r(p)}function l(p){return ya(p)&&++u<10?(e.consume(p),l):(!n.interrupt||u<2)&&(n.containerState.marker?p===n.containerState.marker:p===41||p===46)?(e.exit("listItemValue"),c(p)):r(p)}function c(p){return e.enter("listItemMarker"),e.consume(p),e.exit("listItemMarker"),n.containerState.marker=n.containerState.marker||p,e.check(yn,n.interrupt?r:d,e.attempt(Xh,g,f))}function d(p){return n.containerState.initialBlankLine=!0,i++,g(p)}function f(p){return ge(p)?(e.enter("listItemPrefixWhitespace"),e.consume(p),e.exit("listItemPrefixWhitespace"),g):r(p)}function g(p){return n.containerState.size=i+n.sliceSerialize(e.exit("listItemPrefix"),!0).length,t(p)}}function Kh(e,t,r){const n=this;return n.containerState._closeFlow=void 0,e.check(yn,a,i);function a(s){return n.containerState.furtherBlankLines=n.containerState.furtherBlankLines||n.containerState.initialBlankLine,fe(e,t,"listItemIndent",n.containerState.size+1)(s)}function i(s){return n.containerState.furtherBlankLines||!ge(s)?(n.containerState.furtherBlankLines=void 0,n.containerState.initialBlankLine=void 0,u(s)):(n.containerState.furtherBlankLines=void 0,n.containerState.initialBlankLine=void 0,e.attempt($h,t,u)(s))}function u(s){return n.containerState._closeFlow=!0,n.interrupt=void 0,fe(e,e.attempt(tt,t,r),"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(s)}}function Jh(e,t,r){const n=this;return fe(e,a,"listItemIndent",n.containerState.size+1);function a(i){const u=n.events[n.events.length-1];return u&&u[1].type==="listItemIndent"&&u[2].sliceSerialize(u[1],!0).length===n.containerState.size?t(i):r(i)}}function Zh(e){e.exit(this.containerState.type)}function ed(e,t,r){const n=this;return fe(e,a,"listItemPrefixWhitespace",n.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function a(i){const u=n.events[n.events.length-1];return!ge(i)&&u&&u[1].type==="listItemPrefixWhitespace"?t(i):r(i)}}const iu={name:"setextUnderline",resolveTo:td,tokenize:rd};function td(e,t){let r=e.length,n,a,i;for(;r--;)if(e[r][0]==="enter"){if(e[r][1].type==="content"){n=r;break}e[r][1].type==="paragraph"&&(a=r)}else e[r][1].type==="content"&&e.splice(r,1),!i&&e[r][1].type==="definition"&&(i=r);const u={type:"setextHeading",start:{...e[n][1].start},end:{...e[e.length-1][1].end}};return e[a][1].type="setextHeadingText",i?(e.splice(a,0,["enter",u,t]),e.splice(i+1,0,["exit",e[n][1],t]),e[n][1].end={...e[i][1].end}):e[n][1]=u,e.push(["exit",u,t]),e}function rd(e,t,r){const n=this;let a;return i;function i(c){let d=n.events.length,f;for(;d--;)if(n.events[d][1].type!=="lineEnding"&&n.events[d][1].type!=="linePrefix"&&n.events[d][1].type!=="content"){f=n.events[d][1].type==="paragraph";break}return!n.parser.lazy[n.now().line]&&(n.interrupt||f)?(e.enter("setextHeadingLine"),a=c,u(c)):r(c)}function u(c){return e.enter("setextHeadingLineSequence"),s(c)}function s(c){return c===a?(e.consume(c),s):(e.exit("setextHeadingLineSequence"),ge(c)?fe(e,l,"lineSuffix")(c):l(c))}function l(c){return c===null||ae(c)?(e.exit("setextHeadingLine"),t(c)):r(c)}}const nd={tokenize:ad};function ad(e){const t=this,r=e.attempt(yn,n,e.attempt(this.parser.constructs.flowInitial,a,fe(e,e.attempt(this.parser.constructs.flow,a,e.attempt(oh,a)),"linePrefix")));return r;function n(i){if(i===null){e.consume(i);return}return e.enter("lineEndingBlank"),e.consume(i),e.exit("lineEndingBlank"),t.currentConstruct=void 0,r}function a(i){if(i===null){e.consume(i);return}return e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),t.currentConstruct=void 0,r}}const id={resolveAll:dl()},ud=hl("string"),sd=hl("text");function hl(e){return{resolveAll:dl(e==="text"?ld:void 0),tokenize:t};function t(r){const n=this,a=this.parser.constructs[e],i=r.attempt(a,u,s);return u;function u(d){return c(d)?i(d):s(d)}function s(d){if(d===null){r.consume(d);return}return r.enter("data"),r.consume(d),l}function l(d){return c(d)?(r.exit("data"),i(d)):(r.consume(d),l)}function c(d){if(d===null)return!0;const f=a[d];let g=-1;if(f)for(;++g-1){const s=u[0];typeof s=="string"?u[0]=s.slice(n):u.shift()}i>0&&u.push(e[a].slice(0,i))}return u}function yd(e,t){let r=-1;const n=[];let a;for(;++r0){const Tt=ue.tokenStack[ue.tokenStack.length-1];(Tt[1]||su).call(ue,void 0,Tt[0])}for($.position={start:Vt(B.length>0?B[0][1].start:{line:1,column:1,offset:0}),end:Vt(B.length>0?B[B.length-2][1].end:{line:1,column:1,offset:0})},xe=-1;++xe0&&(n.className=["language-"+a[0]]);let i={type:"element",tagName:"code",properties:n,children:[{type:"text",value:r}]};return t.meta&&(i.data={meta:t.meta}),e.patch(t,i),i=e.applyData(t,i),i={type:"element",tagName:"pre",properties:{},children:[i]},e.patch(t,i),i}function Md(e,t){const r={type:"element",tagName:"del",properties:{},children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function Pd(e,t){const r={type:"element",tagName:"em",properties:{},children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function Bd(e,t){const r=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",n=String(t.identifier).toUpperCase(),a=Pr(n.toLowerCase()),i=e.footnoteOrder.indexOf(n);let u,s=e.footnoteCounts.get(n);s===void 0?(s=0,e.footnoteOrder.push(n),u=e.footnoteOrder.length):u=i+1,s+=1,e.footnoteCounts.set(n,s);const l={type:"element",tagName:"a",properties:{href:"#"+r+"fn-"+a,id:r+"fnref-"+a+(s>1?"-"+s:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(u)}]};e.patch(t,l);const c={type:"element",tagName:"sup",properties:{},children:[l]};return e.patch(t,c),e.applyData(t,c)}function Fd(e,t){const r={type:"element",tagName:"h"+t.depth,properties:{},children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function Hd(e,t){if(e.options.allowDangerousHtml){const r={type:"raw",value:t.value};return e.patch(t,r),e.applyData(t,r)}}function pl(e,t){const r=t.referenceType;let n="]";if(r==="collapsed"?n+="[]":r==="full"&&(n+="["+(t.label||t.identifier)+"]"),t.type==="imageReference")return[{type:"text",value:"!["+t.alt+n}];const a=e.all(t),i=a[0];i&&i.type==="text"?i.value="["+i.value:a.unshift({type:"text",value:"["});const u=a[a.length-1];return u&&u.type==="text"?u.value+=n:a.push({type:"text",value:n}),a}function zd(e,t){const r=String(t.identifier).toUpperCase(),n=e.definitionById.get(r);if(!n)return pl(e,t);const a={src:Pr(n.url||""),alt:t.alt};n.title!==null&&n.title!==void 0&&(a.title=n.title);const i={type:"element",tagName:"img",properties:a,children:[]};return e.patch(t,i),e.applyData(t,i)}function Ud(e,t){const r={src:Pr(t.url)};t.alt!==null&&t.alt!==void 0&&(r.alt=t.alt),t.title!==null&&t.title!==void 0&&(r.title=t.title);const n={type:"element",tagName:"img",properties:r,children:[]};return e.patch(t,n),e.applyData(t,n)}function qd(e,t){const r={type:"text",value:t.value.replace(/\r?\n|\r/g," ")};e.patch(t,r);const n={type:"element",tagName:"code",properties:{},children:[r]};return e.patch(t,n),e.applyData(t,n)}function Yd(e,t){const r=String(t.identifier).toUpperCase(),n=e.definitionById.get(r);if(!n)return pl(e,t);const a={href:Pr(n.url||"")};n.title!==null&&n.title!==void 0&&(a.title=n.title);const i={type:"element",tagName:"a",properties:a,children:e.all(t)};return e.patch(t,i),e.applyData(t,i)}function Gd(e,t){const r={href:Pr(t.url)};t.title!==null&&t.title!==void 0&&(r.title=t.title);const n={type:"element",tagName:"a",properties:r,children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function Vd(e,t,r){const n=e.all(t),a=r?jd(r):gl(t),i={},u=[];if(typeof t.checked=="boolean"){const d=n[0];let f;d&&d.type==="element"&&d.tagName==="p"?f=d:(f={type:"element",tagName:"p",properties:{},children:[]},n.unshift(f)),f.children.length>0&&f.children.unshift({type:"text",value:" "}),f.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:t.checked,disabled:!0},children:[]}),i.className=["task-list-item"]}let s=-1;for(;++s1}function Wd(e,t){const r={},n=e.all(t);let a=-1;for(typeof t.start=="number"&&t.start!==1&&(r.start=t.start);++a0){const u={type:"element",tagName:"tbody",properties:{},children:e.wrap(r,!0)},s=_t(t.children[1]),l=d0(t.children[t.children.length-1]);s&&l&&(u.position={start:s,end:l}),a.push(u)}const i={type:"element",tagName:"table",properties:{},children:e.wrap(a,!0)};return e.patch(t,i),e.applyData(t,i)}function Jd(e,t,r){const n=r?r.children:void 0,i=(n?n.indexOf(t):1)===0?"th":"td",u=r&&r.type==="table"?r.align:void 0,s=u?u.length:t.children.length;let l=-1;const c=[];for(;++l0,!0),n[0]),a=n.index+n[0].length,n=r.exec(t);return i.push(cu(t.slice(a),a>0,!1)),i.join("")}function cu(e,t,r){let n=0,a=e.length;if(t){let i=e.codePointAt(n);for(;i===lu||i===ou;)n++,i=e.codePointAt(n)}if(r){let i=e.codePointAt(a-1);for(;i===lu||i===ou;)a--,i=e.codePointAt(a-1)}return a>n?e.slice(n,a):""}function tf(e,t){const r={type:"text",value:ef(String(t.value))};return e.patch(t,r),e.applyData(t,r)}function rf(e,t){const r={type:"element",tagName:"hr",properties:{},children:[]};return e.patch(t,r),e.applyData(t,r)}const nf={blockquote:Od,break:Ld,code:Rd,delete:Md,emphasis:Pd,footnoteReference:Bd,heading:Fd,html:Hd,imageReference:zd,image:Ud,inlineCode:qd,linkReference:Yd,link:Gd,listItem:Vd,list:Wd,paragraph:Xd,root:$d,strong:Qd,table:Kd,tableCell:Zd,tableRow:Jd,text:tf,thematicBreak:rf,toml:Mn,yaml:Mn,definition:Mn,footnoteDefinition:Mn};function Mn(){}const bl=-1,p0=0,un=1,e0=2,ui=3,si=4,li=5,oi=6,El=7,Tl=8,xl=typeof self=="object"?self:globalThis,hu=(e,t)=>{switch(e){case"Function":case"SharedWorker":case"Worker":case"eval":case"setInterval":case"setTimeout":throw new TypeError("unable to deserialize "+e)}return new xl[e](t)},af=(e,t)=>{const r=(a,i)=>(e.set(i,a),a),n=a=>{if(e.has(a))return e.get(a);const[i,u]=t[a];switch(i){case p0:case bl:return r(u,a);case un:{const s=r([],a);for(const l of u)s.push(n(l));return s}case e0:{const s=r({},a);for(const[l,c]of u)s[n(l)]=n(c);return s}case ui:return r(new Date(u),a);case si:{const{source:s,flags:l}=u;return r(new RegExp(s,l),a)}case li:{const s=r(new Map,a);for(const[l,c]of u)s.set(n(l),n(c));return s}case oi:{const s=r(new Set,a);for(const l of u)s.add(n(l));return s}case El:{const{name:s,message:l}=u;return r(typeof xl[s]=="function"?hu(s,l):new Error(l),a)}case Tl:return r(BigInt(u),a);case"BigInt":return r(Object(BigInt(u)),a);case"ArrayBuffer":return r(new Uint8Array(u).buffer,u);case"DataView":{const{buffer:s}=new Uint8Array(u);return r(new DataView(s),u)}}return r(hu(i,u),a)};return n},du=e=>af(new Map,e)(0),hr="",{toString:uf}={},{keys:sf}=Object,Jr=e=>{const t=typeof e;if(t!=="object"||!e)return[p0,t];const r=uf.call(e).slice(8,-1);switch(r){case"Array":return[un,hr];case"Object":return[e0,hr];case"Date":return[ui,hr];case"RegExp":return[si,hr];case"Map":return[li,hr];case"Set":return[oi,hr];case"DataView":return[un,r]}return r.includes("Array")?[un,r]:e instanceof Error?[El,e.name||"Error"]:[e0,r]},Pn=([e,t])=>e===p0&&(t==="function"||t==="symbol"),lf=(e,t,r,n)=>{const a=(u,s)=>{const l=n.push(u)-1;return r.set(s,l),l},i=u=>{if(r.has(u))return r.get(u);let[s,l]=Jr(u);switch(s){case p0:{let d=u;switch(l){case"bigint":s=Tl,d=u.toString();break;case"function":case"symbol":if(e)throw new TypeError("unable to serialize "+l);d=null;break;case"undefined":return a([bl],u)}return a([s,d],u)}case un:{if(l){let g=u;return l==="DataView"?g=new Uint8Array(u.buffer):l==="ArrayBuffer"&&(g=new Uint8Array(u)),a([l,[...g]],u)}const d=[],f=a([s,d],u);for(const g of u)d.push(i(g));return f}case e0:{if(l)switch(l){case"BigInt":return a([l,u.toString()],u);case"Boolean":case"Number":case"String":return a([l,u.valueOf()],u)}if(t&&"toJSON"in u)return i(u.toJSON());const d=[],f=a([s,d],u);for(const g of sf(u))(e||!Pn(Jr(u[g])))&&d.push([i(g),i(u[g])]);return f}case ui:return a([s,isNaN(u.getTime())?hr:u.toISOString()],u);case si:{const{source:d,flags:f}=u;return a([s,{source:d,flags:f}],u)}case li:{const d=[],f=a([s,d],u);for(const[g,p]of u)(e||!(Pn(Jr(g))||Pn(Jr(p))))&&d.push([i(g),i(p)]);return f}case oi:{const d=[],f=a([s,d],u);for(const g of u)(e||!Pn(Jr(g)))&&d.push(i(g));return f}}const{message:c}=u;return a([s,{name:l,message:c}],u)};return i},fu=(e,{json:t,lossy:r}={})=>{const n=[];return lf(!(t||r),!!t,new Map,n)(e),n},Nr=typeof structuredClone=="function"?(e,t)=>t&&("json"in t||"lossy"in t)?du(fu(e,t)):structuredClone(e):(e,t)=>du(fu(e,t));function of(e,t){const r=[{type:"text",value:"↩"}];return t>1&&r.push({type:"element",tagName:"sup",properties:{},children:[{type:"text",value:String(t)}]}),r}function cf(e,t){return"Back to reference "+(e+1)+(t>1?"-"+t:"")}function hf(e){const t=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",r=e.options.footnoteBackContent||of,n=e.options.footnoteBackLabel||cf,a=e.options.footnoteLabel||"Footnotes",i=e.options.footnoteLabelTagName||"h2",u=e.options.footnoteLabelProperties||{className:["sr-only"]},s=[];let l=-1;for(;++l0&&x.push({type:"text",value:" "});let N=typeof r=="string"?r:r(l,p);typeof N=="string"&&(N={type:"text",value:N}),x.push({type:"element",tagName:"a",properties:{href:"#"+t+"fnref-"+g+(p>1?"-"+p:""),dataFootnoteBackref:"",ariaLabel:typeof n=="string"?n:n(l,p),className:["data-footnote-backref"]},children:Array.isArray(N)?N:[N]})}const D=d[d.length-1];if(D&&D.type==="element"&&D.tagName==="p"){const N=D.children[D.children.length-1];N&&N.type==="text"?N.value+=" ":D.children.push({type:"text",value:" "}),D.children.push(...x)}else d.push(...x);const _={type:"element",tagName:"li",properties:{id:t+"fn-"+g},children:e.wrap(d,!0)};e.patch(c,_),s.push(_)}if(s.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:i,properties:{...Nr(u),id:"footnote-label"},children:[{type:"text",value:a}]},{type:"text",value:` -`},{type:"element",tagName:"ol",properties:{},children:e.wrap(s,!0)},{type:"text",value:` -`}]}}const vn=(function(e){if(e==null)return pf;if(typeof e=="function")return g0(e);if(typeof e=="object")return Array.isArray(e)?df(e):ff(e);if(typeof e=="string")return mf(e);throw new Error("Expected function, string, or object as test")});function df(e){const t=[];let r=-1;for(;++r":""))+")"})}return g;function g(){let p=yl,x,S,D;if((!t||i(l,c,d[d.length-1]||void 0))&&(p=Ef(r(l,d)),p[0]===Aa))return p;if("children"in l&&l.children){const _=l;if(_.children&&p[0]!==vl)for(S=(n?_.children.length:-1)+u,D=d.concat(_);S>-1&&S<_.children.length;){const N=_.children[S];if(x=s(N,S,D)(),x[0]===Aa)return x;S=typeof x[1]=="number"?x[1]:S+u}}return p}}}function Ef(e){return Array.isArray(e)?e:typeof e=="number"?[bf,e]:e==null?yl:[e]}function b0(e,t,r,n){let a,i,u;typeof t=="function"&&typeof r!="function"?(i=void 0,u=t,a=r):(i=t,u=r,a=n),ci(e,i,s,a);function s(l,c){const d=c[c.length-1],f=d?d.children.indexOf(l):void 0;return u(l,f,d)}}const ka={}.hasOwnProperty,Tf={};function xf(e,t){const r=t||Tf,n=new Map,a=new Map,i=new Map,u={...nf,...r.handlers},s={all:c,applyData:vf,definitionById:n,footnoteById:a,footnoteCounts:i,footnoteOrder:[],handlers:u,one:l,options:r,patch:yf,wrap:kf};return b0(e,function(d){if(d.type==="definition"||d.type==="footnoteDefinition"){const f=d.type==="definition"?n:a,g=String(d.identifier).toUpperCase();f.has(g)||f.set(g,d)}}),s;function l(d,f){const g=d.type,p=s.handlers[g];if(ka.call(s.handlers,g)&&p)return p(s,d,f);if(s.options.passThrough&&s.options.passThrough.includes(g)){if("children"in d){const{children:S,...D}=d,_=Nr(D);return _.children=s.all(d),_}return Nr(d)}return(s.options.unknownHandler||Af)(s,d,f)}function c(d){const f=[];if("children"in d){const g=d.children;let p=-1;for(;++p0&&r.push({type:"text",value:` -`}),r}function mu(e){let t=0,r=e.charCodeAt(t);for(;r===9||r===32;)t++,r=e.charCodeAt(t);return e.slice(t)}function pu(e,t){const r=xf(e,t),n=r.one(e,void 0),a=hf(r),i=Array.isArray(n)?{type:"root",children:n}:n||{type:"root",children:[]};return a&&i.children.push({type:"text",value:` -`},a),i}function Sf(e,t){return e&&"run"in e?async function(r,n){const a=pu(r,{file:n,...t});await e.run(a,n)}:function(r,n){return pu(r,{file:n,...e||t})}}function gu(e){if(e)throw e}var q0,bu;function wf(){if(bu)return q0;bu=1;var e=Object.prototype.hasOwnProperty,t=Object.prototype.toString,r=Object.defineProperty,n=Object.getOwnPropertyDescriptor,a=function(c){return typeof Array.isArray=="function"?Array.isArray(c):t.call(c)==="[object Array]"},i=function(c){if(!c||t.call(c)!=="[object Object]")return!1;var d=e.call(c,"constructor"),f=c.constructor&&c.constructor.prototype&&e.call(c.constructor.prototype,"isPrototypeOf");if(c.constructor&&!d&&!f)return!1;var g;for(g in c);return typeof g>"u"||e.call(c,g)},u=function(c,d){r&&d.name==="__proto__"?r(c,d.name,{enumerable:!0,configurable:!0,value:d.newValue,writable:!0}):c[d.name]=d.newValue},s=function(c,d){if(d==="__proto__")if(e.call(c,d)){if(n)return n(c,d).value}else return;return c[d]};return q0=function l(){var c,d,f,g,p,x,S=arguments[0],D=1,_=arguments.length,N=!1;for(typeof S=="boolean"&&(N=S,S=arguments[1]||{},D=2),(S==null||typeof S!="object"&&typeof S!="function")&&(S={});D<_;++D)if(c=arguments[D],c!=null)for(d in c)f=s(S,d),g=s(c,d),S!==g&&(N&&g&&(i(g)||(p=a(g)))?(p?(p=!1,x=f&&a(f)?f:[]):x=f&&i(f)?f:{},u(S,{name:d,newValue:l(N,x,g)})):typeof g<"u"&&u(S,{name:d,newValue:g}));return S},q0}var Cf=wf();const Y0=zs(Cf);function Sa(e){if(typeof e!="object"||e===null)return!1;const t=Object.getPrototypeOf(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)}function _f(){const e=[],t={run:r,use:n};return t;function r(...a){let i=-1;const u=a.pop();if(typeof u!="function")throw new TypeError("Expected function as last argument, not "+u);s(null,...a);function s(l,...c){const d=e[++i];let f=-1;if(l){u(l);return}for(;++fu.length;let l;s&&u.push(a);try{l=e.apply(this,u)}catch(c){const d=c;if(s&&r)throw d;return a(d)}s||(l&&l.then&&typeof l.then=="function"?l.then(i,a):l instanceof Error?a(l):i(l))}function a(u,...s){r||(r=!0,t(u,...s))}function i(u){a(null,u)}}const At={basename:Nf,dirname:Df,extname:Of,join:Lf,sep:"/"};function Nf(e,t){if(t!==void 0&&typeof t!="string")throw new TypeError('"ext" argument must be a string');An(e);let r=0,n=-1,a=e.length,i;if(t===void 0||t.length===0||t.length>e.length){for(;a--;)if(e.codePointAt(a)===47){if(i){r=a+1;break}}else n<0&&(i=!0,n=a+1);return n<0?"":e.slice(r,n)}if(t===e)return"";let u=-1,s=t.length-1;for(;a--;)if(e.codePointAt(a)===47){if(i){r=a+1;break}}else u<0&&(i=!0,u=a+1),s>-1&&(e.codePointAt(a)===t.codePointAt(s--)?s<0&&(n=a):(s=-1,n=u));return r===n?n=u:n<0&&(n=e.length),e.slice(r,n)}function Df(e){if(An(e),e.length===0)return".";let t=-1,r=e.length,n;for(;--r;)if(e.codePointAt(r)===47){if(n){t=r;break}}else n||(n=!0);return t<0?e.codePointAt(0)===47?"/":".":t===1&&e.codePointAt(0)===47?"//":e.slice(0,t)}function Of(e){An(e);let t=e.length,r=-1,n=0,a=-1,i=0,u;for(;t--;){const s=e.codePointAt(t);if(s===47){if(u){n=t+1;break}continue}r<0&&(u=!0,r=t+1),s===46?a<0?a=t:i!==1&&(i=1):a>-1&&(i=-1)}return a<0||r<0||i===0||i===1&&a===r-1&&a===n+1?"":e.slice(a,r)}function Lf(...e){let t=-1,r;for(;++t0&&e.codePointAt(e.length-1)===47&&(r+="/"),t?"/"+r:r}function Mf(e,t){let r="",n=0,a=-1,i=0,u=-1,s,l;for(;++u<=e.length;){if(u2){if(l=r.lastIndexOf("/"),l!==r.length-1){l<0?(r="",n=0):(r=r.slice(0,l),n=r.length-1-r.lastIndexOf("/")),a=u,i=0;continue}}else if(r.length>0){r="",n=0,a=u,i=0;continue}}t&&(r=r.length>0?r+"/..":"..",n=2)}else r.length>0?r+="/"+e.slice(a+1,u):r=e.slice(a+1,u),n=u-a-1;a=u,i=0}else s===46&&i>-1?i++:i=-1}return r}function An(e){if(typeof e!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}const Pf={cwd:Bf};function Bf(){return"/"}function wa(e){return!!(e!==null&&typeof e=="object"&&"href"in e&&e.href&&"protocol"in e&&e.protocol&&e.auth===void 0)}function Ff(e){if(typeof e=="string")e=new URL(e);else if(!wa(e)){const t=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw t.code="ERR_INVALID_ARG_TYPE",t}if(e.protocol!=="file:"){const t=new TypeError("The URL must be of scheme file");throw t.code="ERR_INVALID_URL_SCHEME",t}return Hf(e)}function Hf(e){if(e.hostname!==""){const n=new TypeError('File URL host must be "localhost" or empty on darwin');throw n.code="ERR_INVALID_FILE_URL_HOST",n}const t=e.pathname;let r=-1;for(;++r0){let[p,...x]=d;const S=n[g][1];Sa(S)&&Sa(p)&&(p=Y0(!0,S,p)),n[g]=[c,p,...x]}}}}const Yf=new hi().freeze();function W0(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `parser`")}function X0(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `compiler`")}function $0(e,t){if(t)throw new Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function Tu(e){if(!Sa(e)||typeof e.type!="string")throw new TypeError("Expected node, got `"+e+"`")}function xu(e,t,r){if(!r)throw new Error("`"+e+"` finished async. Use `"+t+"` instead")}function Bn(e){return Gf(e)?e:new Al(e)}function Gf(e){return!!(e&&typeof e=="object"&&"message"in e&&"messages"in e)}function Vf(e){return typeof e=="string"||jf(e)}function jf(e){return!!(e&&typeof e=="object"&&"byteLength"in e&&"byteOffset"in e)}const Wf="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",yu=[],vu={allowDangerousHtml:!0},Xf=/^(https?|ircs?|mailto|xmpp)$/i,$f=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"className",id:"remove-classname"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function Qf(e){const t=Kf(e),r=Jf(e);return Zf(t.runSync(t.parse(r),r),e)}function Kf(e){const t=e.rehypePlugins||yu,r=e.remarkPlugins||yu,n=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...vu}:vu;return Yf().use(Dd).use(r).use(Sf,n).use(t)}function Jf(e){const t=e.children||"",r=new Al;return typeof t=="string"&&(r.value=t),r}function Zf(e,t){const r=t.allowedElements,n=t.allowElement,a=t.components,i=t.disallowedElements,u=t.skipHtml,s=t.unwrapDisallowed,l=t.urlTransform||em;for(const d of $f)Object.hasOwn(t,d.from)&&(""+d.from+(d.to?"use `"+d.to+"` instead":"remove it")+Wf+d.id,void 0);return b0(e,c),m1(e,{Fragment:pe.Fragment,components:a,ignoreInvalidStyle:!0,jsx:pe.jsx,jsxs:pe.jsxs,passKeys:!0,passNode:!0});function c(d,f,g){if(d.type==="raw"&&g&&typeof f=="number")return u?g.children.splice(f,1):g.children[f]={type:"text",value:d.value},f;if(d.type==="element"){let p;for(p in H0)if(Object.hasOwn(H0,p)&&Object.hasOwn(d.properties,p)){const x=d.properties[p],S=H0[p];(S===null||S.includes(d.tagName))&&(d.properties[p]=l(String(x||""),p,d))}}if(d.type==="element"){let p=r?!r.includes(d.tagName):i?i.includes(d.tagName):!1;if(!p&&n&&typeof f=="number"&&(p=!n(d,f,g)),p&&g&&typeof f=="number")return s&&d.children?g.children.splice(f,1,...d.children):g.children.splice(f,1),f}}}function em(e){const t=e.indexOf(":"),r=e.indexOf("?"),n=e.indexOf("#"),a=e.indexOf("/");return t===-1||a!==-1&&t>a||r!==-1&&t>r||n!==-1&&t>n||Xf.test(e.slice(0,t))?e:""}function Au(e,t){const r=String(e);if(typeof t!="string")throw new TypeError("Expected character");let n=0,a=r.indexOf(t);for(;a!==-1;)n++,a=r.indexOf(t,a+t.length);return n}function tm(e){if(typeof e!="string")throw new TypeError("Expected a string");return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}function rm(e,t,r){const a=vn((r||{}).ignore||[]),i=nm(t);let u=-1;for(;++u0?{type:"text",value:L}:void 0),L===!1?g.lastIndex=W+1:(x!==W&&N.push({type:"text",value:c.value.slice(x,W)}),Array.isArray(L)?N.push(...L):L&&N.push(L),x=W+M[0].length,_=!0),!g.global)break;M=g.exec(c.value)}return _?(x?\]}]+$/.exec(e);if(!t)return[e,void 0];e=e.slice(0,t.index);let r=t[0],n=r.indexOf(")");const a=Au(e,"(");let i=Au(e,")");for(;n!==-1&&a>i;)e+=r.slice(0,n+1),r=r.slice(n+1),n=r.indexOf(")"),i++;return[e,r]}function kl(e,t){const r=e.input.charCodeAt(e.index-1);return(e.index===0||pr(r)||f0(r))&&(!t||r!==47)}Sl.peek=wm;function Em(){this.buffer()}function Tm(e){this.enter({type:"footnoteReference",identifier:"",label:""},e)}function xm(){this.buffer()}function ym(e){this.enter({type:"footnoteDefinition",identifier:"",label:"",children:[]},e)}function vm(e){const t=this.resume(),r=this.stack[this.stack.length-1];r.type,r.identifier=xt(this.sliceSerialize(e)).toLowerCase(),r.label=t}function Am(e){this.exit(e)}function km(e){const t=this.resume(),r=this.stack[this.stack.length-1];r.type,r.identifier=xt(this.sliceSerialize(e)).toLowerCase(),r.label=t}function Sm(e){this.exit(e)}function wm(){return"["}function Sl(e,t,r,n){const a=r.createTracker(n);let i=a.move("[^");const u=r.enter("footnoteReference"),s=r.enter("reference");return i+=a.move(r.safe(r.associationId(e),{after:"]",before:i})),s(),u(),i+=a.move("]"),i}function Cm(){return{enter:{gfmFootnoteCallString:Em,gfmFootnoteCall:Tm,gfmFootnoteDefinitionLabelString:xm,gfmFootnoteDefinition:ym},exit:{gfmFootnoteCallString:vm,gfmFootnoteCall:Am,gfmFootnoteDefinitionLabelString:km,gfmFootnoteDefinition:Sm}}}function _m(e){let t=!1;return e&&e.firstLineBlank&&(t=!0),{handlers:{footnoteDefinition:r,footnoteReference:Sl},unsafe:[{character:"[",inConstruct:["label","phrasing","reference"]}]};function r(n,a,i,u){const s=i.createTracker(u);let l=s.move("[^");const c=i.enter("footnoteDefinition"),d=i.enter("label");return l+=s.move(i.safe(i.associationId(n),{before:l,after:"]"})),d(),l+=s.move("]:"),n.children&&n.children.length>0&&(s.shift(4),l+=s.move((t?` -`:" ")+i.indentLines(i.containerFlow(n,s.current()),t?wl:Im))),c(),l}}function Im(e,t,r){return t===0?e:wl(e,t,r)}function wl(e,t,r){return(r?"":" ")+e}const Nm=["autolink","destinationLiteral","destinationRaw","reference","titleQuote","titleApostrophe"];Cl.peek=Mm;function Dm(){return{canContainEols:["delete"],enter:{strikethrough:Lm},exit:{strikethrough:Rm}}}function Om(){return{unsafe:[{character:"~",inConstruct:"phrasing",notInConstruct:Nm}],handlers:{delete:Cl}}}function Lm(e){this.enter({type:"delete",children:[]},e)}function Rm(e){this.exit(e)}function Cl(e,t,r,n){const a=r.createTracker(n),i=r.enter("strikethrough");let u=a.move("~~");return u+=r.containerPhrasing(e,{...a.current(),before:u,after:"~"}),u+=a.move("~~"),i(),u}function Mm(){return"~"}function Pm(e){return e.length}function Bm(e,t){const r=t||{},n=(r.align||[]).concat(),a=r.stringLength||Pm,i=[],u=[],s=[],l=[];let c=0,d=-1;for(;++dc&&(c=e[d].length);++_l[_])&&(l[_]=M)}S.push(N)}u[d]=S,s[d]=D}let f=-1;if(typeof n=="object"&&"length"in n)for(;++fl[f]&&(l[f]=N),p[f]=N),g[f]=M}u.splice(1,0,g),s.splice(1,0,p),d=-1;const x=[];for(;++d "),i.shift(2);const u=r.indentLines(r.containerFlow(e,i.current()),zm);return a(),u}function zm(e,t,r){return">"+(r?"":" ")+e}function Um(e,t){return wu(e,t.inConstruct,!0)&&!wu(e,t.notInConstruct,!1)}function wu(e,t,r){if(typeof t=="string"&&(t=[t]),!t||t.length===0)return r;let n=-1;for(;++nu&&(u=i):i=1,a=n+t.length,n=r.indexOf(t,a);return u}function qm(e,t){return!!(t.options.fences===!1&&e.value&&!e.lang&&/[^ \r\n]/.test(e.value)&&!/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(e.value))}function Ym(e){const t=e.options.fence||"`";if(t!=="`"&&t!=="~")throw new Error("Cannot serialize code with `"+t+"` for `options.fence`, expected `` ` `` or `~`");return t}function Gm(e,t,r,n){const a=Ym(r),i=e.value||"",u=a==="`"?"GraveAccent":"Tilde";if(qm(e,r)){const f=r.enter("codeIndented"),g=r.indentLines(i,Vm);return f(),g}const s=r.createTracker(n),l=a.repeat(Math.max(Il(i,a)+1,3)),c=r.enter("codeFenced");let d=s.move(l);if(e.lang){const f=r.enter(`codeFencedLang${u}`);d+=s.move(r.safe(e.lang,{before:d,after:" ",encode:["`"],...s.current()})),f()}if(e.lang&&e.meta){const f=r.enter(`codeFencedMeta${u}`);d+=s.move(" "),d+=s.move(r.safe(e.meta,{before:d,after:` -`,encode:["`"],...s.current()})),f()}return d+=s.move(` -`),i&&(d+=s.move(i+` -`)),d+=s.move(l),c(),d}function Vm(e,t,r){return(r?"":" ")+e}function di(e){const t=e.options.quote||'"';if(t!=='"'&&t!=="'")throw new Error("Cannot serialize title with `"+t+"` for `options.quote`, expected `\"`, or `'`");return t}function jm(e,t,r,n){const a=di(r),i=a==='"'?"Quote":"Apostrophe",u=r.enter("definition");let s=r.enter("label");const l=r.createTracker(n);let c=l.move("[");return c+=l.move(r.safe(r.associationId(e),{before:c,after:"]",...l.current()})),c+=l.move("]: "),s(),!e.url||/[\0- \u007F]/.test(e.url)?(s=r.enter("destinationLiteral"),c+=l.move("<"),c+=l.move(r.safe(e.url,{before:c,after:">",...l.current()})),c+=l.move(">")):(s=r.enter("destinationRaw"),c+=l.move(r.safe(e.url,{before:c,after:e.title?" ":` -`,...l.current()}))),s(),e.title&&(s=r.enter(`title${i}`),c+=l.move(" "+a),c+=l.move(r.safe(e.title,{before:c,after:a,...l.current()})),c+=l.move(a),s()),u(),c}function Wm(e){const t=e.options.emphasis||"*";if(t!=="*"&&t!=="_")throw new Error("Cannot serialize emphasis with `"+t+"` for `options.emphasis`, expected `*`, or `_`");return t}function pn(e){return"&#x"+e.toString(16).toUpperCase()+";"}function t0(e,t,r){const n=Ir(e),a=Ir(t);return n===void 0?a===void 0?r==="_"?{inside:!0,outside:!0}:{inside:!1,outside:!1}:a===1?{inside:!0,outside:!0}:{inside:!1,outside:!0}:n===1?a===void 0?{inside:!1,outside:!1}:a===1?{inside:!0,outside:!0}:{inside:!1,outside:!1}:a===void 0?{inside:!1,outside:!1}:a===1?{inside:!0,outside:!1}:{inside:!1,outside:!1}}Nl.peek=Xm;function Nl(e,t,r,n){const a=Wm(r),i=r.enter("emphasis"),u=r.createTracker(n),s=u.move(a);let l=u.move(r.containerPhrasing(e,{after:a,before:s,...u.current()}));const c=l.charCodeAt(0),d=t0(n.before.charCodeAt(n.before.length-1),c,a);d.inside&&(l=pn(c)+l.slice(1));const f=l.charCodeAt(l.length-1),g=t0(n.after.charCodeAt(0),f,a);g.inside&&(l=l.slice(0,-1)+pn(f));const p=u.move(a);return i(),r.attentionEncodeSurroundingInfo={after:g.outside,before:d.outside},s+l+p}function Xm(e,t,r){return r.options.emphasis||"*"}function $m(e,t){let r=!1;return b0(e,function(n){if("value"in n&&/\r?\n|\r/.test(n.value)||n.type==="break")return r=!0,Aa}),!!((!e.depth||e.depth<3)&&ni(e)&&(t.options.setext||r))}function Qm(e,t,r,n){const a=Math.max(Math.min(6,e.depth||1),1),i=r.createTracker(n);if($m(e,r)){const d=r.enter("headingSetext"),f=r.enter("phrasing"),g=r.containerPhrasing(e,{...i.current(),before:` -`,after:` -`});return f(),d(),g+` -`+(a===1?"=":"-").repeat(g.length-(Math.max(g.lastIndexOf("\r"),g.lastIndexOf(` -`))+1))}const u="#".repeat(a),s=r.enter("headingAtx"),l=r.enter("phrasing");i.move(u+" ");let c=r.containerPhrasing(e,{before:"# ",after:` -`,...i.current()});return/^[\t ]/.test(c)&&(c=pn(c.charCodeAt(0))+c.slice(1)),c=c?u+" "+c:u,r.options.closeAtx&&(c+=" "+u),l(),s(),c}Dl.peek=Km;function Dl(e){return e.value||""}function Km(){return"<"}Ol.peek=Jm;function Ol(e,t,r,n){const a=di(r),i=a==='"'?"Quote":"Apostrophe",u=r.enter("image");let s=r.enter("label");const l=r.createTracker(n);let c=l.move("![");return c+=l.move(r.safe(e.alt,{before:c,after:"]",...l.current()})),c+=l.move("]("),s(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(s=r.enter("destinationLiteral"),c+=l.move("<"),c+=l.move(r.safe(e.url,{before:c,after:">",...l.current()})),c+=l.move(">")):(s=r.enter("destinationRaw"),c+=l.move(r.safe(e.url,{before:c,after:e.title?" ":")",...l.current()}))),s(),e.title&&(s=r.enter(`title${i}`),c+=l.move(" "+a),c+=l.move(r.safe(e.title,{before:c,after:a,...l.current()})),c+=l.move(a),s()),c+=l.move(")"),u(),c}function Jm(){return"!"}Ll.peek=Zm;function Ll(e,t,r,n){const a=e.referenceType,i=r.enter("imageReference");let u=r.enter("label");const s=r.createTracker(n);let l=s.move("![");const c=r.safe(e.alt,{before:l,after:"]",...s.current()});l+=s.move(c+"]["),u();const d=r.stack;r.stack=[],u=r.enter("reference");const f=r.safe(r.associationId(e),{before:l,after:"]",...s.current()});return u(),r.stack=d,i(),a==="full"||!c||c!==f?l+=s.move(f+"]"):a==="shortcut"?l=l.slice(0,-1):l+=s.move("]"),l}function Zm(){return"!"}Rl.peek=e2;function Rl(e,t,r){let n=e.value||"",a="`",i=-1;for(;new RegExp("(^|[^`])"+a+"([^`]|$)").test(n);)a+="`";for(/[^ \r\n]/.test(n)&&(/^[ \r\n]/.test(n)&&/[ \r\n]$/.test(n)||/^`|`$/.test(n))&&(n=" "+n+" ");++i\u007F]/.test(e.url))}Pl.peek=t2;function Pl(e,t,r,n){const a=di(r),i=a==='"'?"Quote":"Apostrophe",u=r.createTracker(n);let s,l;if(Ml(e,r)){const d=r.stack;r.stack=[],s=r.enter("autolink");let f=u.move("<");return f+=u.move(r.containerPhrasing(e,{before:f,after:">",...u.current()})),f+=u.move(">"),s(),r.stack=d,f}s=r.enter("link"),l=r.enter("label");let c=u.move("[");return c+=u.move(r.containerPhrasing(e,{before:c,after:"](",...u.current()})),c+=u.move("]("),l(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(l=r.enter("destinationLiteral"),c+=u.move("<"),c+=u.move(r.safe(e.url,{before:c,after:">",...u.current()})),c+=u.move(">")):(l=r.enter("destinationRaw"),c+=u.move(r.safe(e.url,{before:c,after:e.title?" ":")",...u.current()}))),l(),e.title&&(l=r.enter(`title${i}`),c+=u.move(" "+a),c+=u.move(r.safe(e.title,{before:c,after:a,...u.current()})),c+=u.move(a),l()),c+=u.move(")"),s(),c}function t2(e,t,r){return Ml(e,r)?"<":"["}Bl.peek=r2;function Bl(e,t,r,n){const a=e.referenceType,i=r.enter("linkReference");let u=r.enter("label");const s=r.createTracker(n);let l=s.move("[");const c=r.containerPhrasing(e,{before:l,after:"]",...s.current()});l+=s.move(c+"]["),u();const d=r.stack;r.stack=[],u=r.enter("reference");const f=r.safe(r.associationId(e),{before:l,after:"]",...s.current()});return u(),r.stack=d,i(),a==="full"||!c||c!==f?l+=s.move(f+"]"):a==="shortcut"?l=l.slice(0,-1):l+=s.move("]"),l}function r2(){return"["}function fi(e){const t=e.options.bullet||"*";if(t!=="*"&&t!=="+"&&t!=="-")throw new Error("Cannot serialize items with `"+t+"` for `options.bullet`, expected `*`, `+`, or `-`");return t}function n2(e){const t=fi(e),r=e.options.bulletOther;if(!r)return t==="*"?"-":"*";if(r!=="*"&&r!=="+"&&r!=="-")throw new Error("Cannot serialize items with `"+r+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(r===t)throw new Error("Expected `bullet` (`"+t+"`) and `bulletOther` (`"+r+"`) to be different");return r}function a2(e){const t=e.options.bulletOrdered||".";if(t!=="."&&t!==")")throw new Error("Cannot serialize items with `"+t+"` for `options.bulletOrdered`, expected `.` or `)`");return t}function Fl(e){const t=e.options.rule||"*";if(t!=="*"&&t!=="-"&&t!=="_")throw new Error("Cannot serialize rules with `"+t+"` for `options.rule`, expected `*`, `-`, or `_`");return t}function i2(e,t,r,n){const a=r.enter("list"),i=r.bulletCurrent;let u=e.ordered?a2(r):fi(r);const s=e.ordered?u==="."?")":".":n2(r);let l=t&&r.bulletLastUsed?u===r.bulletLastUsed:!1;if(!e.ordered){const d=e.children?e.children[0]:void 0;if((u==="*"||u==="-")&&d&&(!d.children||!d.children[0])&&r.stack[r.stack.length-1]==="list"&&r.stack[r.stack.length-2]==="listItem"&&r.stack[r.stack.length-3]==="list"&&r.stack[r.stack.length-4]==="listItem"&&r.indexStack[r.indexStack.length-1]===0&&r.indexStack[r.indexStack.length-2]===0&&r.indexStack[r.indexStack.length-3]===0&&(l=!0),Fl(r)===u&&d){let f=-1;for(;++f-1?t.start:1)+(r.options.incrementListMarker===!1?0:t.children.indexOf(e))+i);let u=i.length+1;(a==="tab"||a==="mixed"&&(t&&t.type==="list"&&t.spread||e.spread))&&(u=Math.ceil(u/4)*4);const s=r.createTracker(n);s.move(i+" ".repeat(u-i.length)),s.shift(u);const l=r.enter("listItem"),c=r.indentLines(r.containerFlow(e,s.current()),d);return l(),c;function d(f,g,p){return g?(p?"":" ".repeat(u))+f:(p?i:i+" ".repeat(u-i.length))+f}}function l2(e,t,r,n){const a=r.enter("paragraph"),i=r.enter("phrasing"),u=r.containerPhrasing(e,n);return i(),a(),u}const o2=vn(["break","delete","emphasis","footnote","footnoteReference","image","imageReference","inlineCode","inlineMath","link","linkReference","mdxJsxTextElement","mdxTextExpression","strong","text","textDirective"]);function c2(e,t,r,n){return(e.children.some(function(u){return o2(u)})?r.containerPhrasing:r.containerFlow).call(r,e,n)}function h2(e){const t=e.options.strong||"*";if(t!=="*"&&t!=="_")throw new Error("Cannot serialize strong with `"+t+"` for `options.strong`, expected `*`, or `_`");return t}Hl.peek=d2;function Hl(e,t,r,n){const a=h2(r),i=r.enter("strong"),u=r.createTracker(n),s=u.move(a+a);let l=u.move(r.containerPhrasing(e,{after:a,before:s,...u.current()}));const c=l.charCodeAt(0),d=t0(n.before.charCodeAt(n.before.length-1),c,a);d.inside&&(l=pn(c)+l.slice(1));const f=l.charCodeAt(l.length-1),g=t0(n.after.charCodeAt(0),f,a);g.inside&&(l=l.slice(0,-1)+pn(f));const p=u.move(a+a);return i(),r.attentionEncodeSurroundingInfo={after:g.outside,before:d.outside},s+l+p}function d2(e,t,r){return r.options.strong||"*"}function f2(e,t,r,n){return r.safe(e.value,n)}function m2(e){const t=e.options.ruleRepetition||3;if(t<3)throw new Error("Cannot serialize rules with repetition `"+t+"` for `options.ruleRepetition`, expected `3` or more");return t}function p2(e,t,r){const n=(Fl(r)+(r.options.ruleSpaces?" ":"")).repeat(m2(r));return r.options.ruleSpaces?n.slice(0,-1):n}const zl={blockquote:Hm,break:Cu,code:Gm,definition:jm,emphasis:Nl,hardBreak:Cu,heading:Qm,html:Dl,image:Ol,imageReference:Ll,inlineCode:Rl,link:Pl,linkReference:Bl,list:i2,listItem:s2,paragraph:l2,root:c2,strong:Hl,text:f2,thematicBreak:p2};function g2(){return{enter:{table:b2,tableData:_u,tableHeader:_u,tableRow:T2},exit:{codeText:x2,table:E2,tableData:Z0,tableHeader:Z0,tableRow:Z0}}}function b2(e){const t=e._align;this.enter({type:"table",align:t.map(function(r){return r==="none"?null:r}),children:[]},e),this.data.inTable=!0}function E2(e){this.exit(e),this.data.inTable=void 0}function T2(e){this.enter({type:"tableRow",children:[]},e)}function Z0(e){this.exit(e)}function _u(e){this.enter({type:"tableCell",children:[]},e)}function x2(e){let t=this.resume();this.data.inTable&&(t=t.replace(/\\([\\|])/g,y2));const r=this.stack[this.stack.length-1];r.type,r.value=t,this.exit(e)}function y2(e,t){return t==="|"?t:e}function v2(e){const t=e||{},r=t.tableCellPadding,n=t.tablePipeAlign,a=t.stringLength,i=r?" ":"|";return{unsafe:[{character:"\r",inConstruct:"tableCell"},{character:` -`,inConstruct:"tableCell"},{atBreak:!0,character:"|",after:"[ :-]"},{character:"|",inConstruct:"tableCell"},{atBreak:!0,character:":",after:"-"},{atBreak:!0,character:"-",after:"[:|-]"}],handlers:{inlineCode:g,table:u,tableCell:l,tableRow:s}};function u(p,x,S,D){return c(d(p,S,D),p.align)}function s(p,x,S,D){const _=f(p,S,D),N=c([_]);return N.slice(0,N.indexOf(` -`))}function l(p,x,S,D){const _=S.enter("tableCell"),N=S.enter("phrasing"),M=S.containerPhrasing(p,{...D,before:i,after:i});return N(),_(),M}function c(p,x){return Bm(p,{align:x,alignDelimiters:n,padding:r,stringLength:a})}function d(p,x,S){const D=p.children;let _=-1;const N=[],M=x.enter("table");for(;++_0&&!r&&(e[e.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),r}const z2={tokenize:X2,partial:!0};function U2(){return{document:{91:{name:"gfmFootnoteDefinition",tokenize:V2,continuation:{tokenize:j2},exit:W2}},text:{91:{name:"gfmFootnoteCall",tokenize:G2},93:{name:"gfmPotentialFootnoteCall",add:"after",tokenize:q2,resolveTo:Y2}}}}function q2(e,t,r){const n=this;let a=n.events.length;const i=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]);let u;for(;a--;){const l=n.events[a][1];if(l.type==="labelImage"){u=l;break}if(l.type==="gfmFootnoteCall"||l.type==="labelLink"||l.type==="label"||l.type==="image"||l.type==="link")break}return s;function s(l){if(!u||!u._balanced)return r(l);const c=xt(n.sliceSerialize({start:u.end,end:n.now()}));return c.codePointAt(0)!==94||!i.includes(c.slice(1))?r(l):(e.enter("gfmFootnoteCallLabelMarker"),e.consume(l),e.exit("gfmFootnoteCallLabelMarker"),t(l))}}function Y2(e,t){let r=e.length;for(;r--;)if(e[r][1].type==="labelImage"&&e[r][0]==="enter"){e[r][1];break}e[r+1][1].type="data",e[r+3][1].type="gfmFootnoteCallLabelMarker";const n={type:"gfmFootnoteCall",start:Object.assign({},e[r+3][1].start),end:Object.assign({},e[e.length-1][1].end)},a={type:"gfmFootnoteCallMarker",start:Object.assign({},e[r+3][1].end),end:Object.assign({},e[r+3][1].end)};a.end.column++,a.end.offset++,a.end._bufferIndex++;const i={type:"gfmFootnoteCallString",start:Object.assign({},a.end),end:Object.assign({},e[e.length-1][1].start)},u={type:"chunkString",contentType:"string",start:Object.assign({},i.start),end:Object.assign({},i.end)},s=[e[r+1],e[r+2],["enter",n,t],e[r+3],e[r+4],["enter",a,t],["exit",a,t],["enter",i,t],["enter",u,t],["exit",u,t],["exit",i,t],e[e.length-2],e[e.length-1],["exit",n,t]];return e.splice(r,e.length-r+1,...s),e}function G2(e,t,r){const n=this,a=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]);let i=0,u;return s;function s(f){return e.enter("gfmFootnoteCall"),e.enter("gfmFootnoteCallLabelMarker"),e.consume(f),e.exit("gfmFootnoteCallLabelMarker"),l}function l(f){return f!==94?r(f):(e.enter("gfmFootnoteCallMarker"),e.consume(f),e.exit("gfmFootnoteCallMarker"),e.enter("gfmFootnoteCallString"),e.enter("chunkString").contentType="string",c)}function c(f){if(i>999||f===93&&!u||f===null||f===91||ve(f))return r(f);if(f===93){e.exit("chunkString");const g=e.exit("gfmFootnoteCallString");return a.includes(xt(n.sliceSerialize(g)))?(e.enter("gfmFootnoteCallLabelMarker"),e.consume(f),e.exit("gfmFootnoteCallLabelMarker"),e.exit("gfmFootnoteCall"),t):r(f)}return ve(f)||(u=!0),i++,e.consume(f),f===92?d:c}function d(f){return f===91||f===92||f===93?(e.consume(f),i++,c):c(f)}}function V2(e,t,r){const n=this,a=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]);let i,u=0,s;return l;function l(x){return e.enter("gfmFootnoteDefinition")._container=!0,e.enter("gfmFootnoteDefinitionLabel"),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(x),e.exit("gfmFootnoteDefinitionLabelMarker"),c}function c(x){return x===94?(e.enter("gfmFootnoteDefinitionMarker"),e.consume(x),e.exit("gfmFootnoteDefinitionMarker"),e.enter("gfmFootnoteDefinitionLabelString"),e.enter("chunkString").contentType="string",d):r(x)}function d(x){if(u>999||x===93&&!s||x===null||x===91||ve(x))return r(x);if(x===93){e.exit("chunkString");const S=e.exit("gfmFootnoteDefinitionLabelString");return i=xt(n.sliceSerialize(S)),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(x),e.exit("gfmFootnoteDefinitionLabelMarker"),e.exit("gfmFootnoteDefinitionLabel"),g}return ve(x)||(s=!0),u++,e.consume(x),x===92?f:d}function f(x){return x===91||x===92||x===93?(e.consume(x),u++,d):d(x)}function g(x){return x===58?(e.enter("definitionMarker"),e.consume(x),e.exit("definitionMarker"),a.includes(i)||a.push(i),fe(e,p,"gfmFootnoteDefinitionWhitespace")):r(x)}function p(x){return t(x)}}function j2(e,t,r){return e.check(yn,t,e.attempt(z2,t,r))}function W2(e){e.exit("gfmFootnoteDefinition")}function X2(e,t,r){const n=this;return fe(e,a,"gfmFootnoteDefinitionIndent",5);function a(i){const u=n.events[n.events.length-1];return u&&u[1].type==="gfmFootnoteDefinitionIndent"&&u[2].sliceSerialize(u[1],!0).length===4?t(i):r(i)}}function $2(e){let r=(e||{}).singleTilde;const n={name:"strikethrough",tokenize:i,resolveAll:a};return r==null&&(r=!0),{text:{126:n},insideSpan:{null:[n]},attentionMarkers:{null:[126]}};function a(u,s){let l=-1;for(;++l1?l(x):(u.consume(x),f++,p);if(f<2&&!r)return l(x);const D=u.exit("strikethroughSequenceTemporary"),_=Ir(x);return D._open=!_||_===2&&!!S,D._close=!S||S===2&&!!_,s(x)}}}class Q2{constructor(){this.map=[]}add(t,r,n){K2(this,t,r,n)}consume(t){if(this.map.sort(function(i,u){return i[0]-u[0]}),this.map.length===0)return;let r=this.map.length;const n=[];for(;r>0;)r-=1,n.push(t.slice(this.map[r][0]+this.map[r][1]),this.map[r][2]),t.length=this.map[r][0];n.push(t.slice()),t.length=0;let a=n.pop();for(;a;){for(const i of a)t.push(i);a=n.pop()}this.map.length=0}}function K2(e,t,r,n){let a=0;if(!(r===0&&n.length===0)){for(;a-1;){const ne=n.events[J][1].type;if(ne==="lineEnding"||ne==="linePrefix")J--;else break}const Q=J>-1?n.events[J][1].type:null,be=Q==="tableHead"||Q==="tableRow"?L:l;return be===L&&n.parser.lazy[n.now().line]?r(R):be(R)}function l(R){return e.enter("tableHead"),e.enter("tableRow"),c(R)}function c(R){return R===124||(u=!0,i+=1),d(R)}function d(R){return R===null?r(R):ae(R)?i>1?(i=0,n.interrupt=!0,e.exit("tableRow"),e.enter("lineEnding"),e.consume(R),e.exit("lineEnding"),p):r(R):ge(R)?fe(e,d,"whitespace")(R):(i+=1,u&&(u=!1,a+=1),R===124?(e.enter("tableCellDivider"),e.consume(R),e.exit("tableCellDivider"),u=!0,d):(e.enter("data"),f(R)))}function f(R){return R===null||R===124||ve(R)?(e.exit("data"),d(R)):(e.consume(R),R===92?g:f)}function g(R){return R===92||R===124?(e.consume(R),f):f(R)}function p(R){return n.interrupt=!1,n.parser.lazy[n.now().line]?r(R):(e.enter("tableDelimiterRow"),u=!1,ge(R)?fe(e,x,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(R):x(R))}function x(R){return R===45||R===58?D(R):R===124?(u=!0,e.enter("tableCellDivider"),e.consume(R),e.exit("tableCellDivider"),S):j(R)}function S(R){return ge(R)?fe(e,D,"whitespace")(R):D(R)}function D(R){return R===58?(i+=1,u=!0,e.enter("tableDelimiterMarker"),e.consume(R),e.exit("tableDelimiterMarker"),_):R===45?(i+=1,_(R)):R===null||ae(R)?W(R):j(R)}function _(R){return R===45?(e.enter("tableDelimiterFiller"),N(R)):j(R)}function N(R){return R===45?(e.consume(R),N):R===58?(u=!0,e.exit("tableDelimiterFiller"),e.enter("tableDelimiterMarker"),e.consume(R),e.exit("tableDelimiterMarker"),M):(e.exit("tableDelimiterFiller"),M(R))}function M(R){return ge(R)?fe(e,W,"whitespace")(R):W(R)}function W(R){return R===124?x(R):R===null||ae(R)?!u||a!==i?j(R):(e.exit("tableDelimiterRow"),e.exit("tableHead"),t(R)):j(R)}function j(R){return r(R)}function L(R){return e.enter("tableRow"),ee(R)}function ee(R){return R===124?(e.enter("tableCellDivider"),e.consume(R),e.exit("tableCellDivider"),ee):R===null||ae(R)?(e.exit("tableRow"),t(R)):ge(R)?fe(e,ee,"whitespace")(R):(e.enter("data"),re(R))}function re(R){return R===null||R===124||ve(R)?(e.exit("data"),ee(R)):(e.consume(R),R===92?K:re)}function K(R){return R===92||R===124?(e.consume(R),re):re(R)}}function t4(e,t){let r=-1,n=!0,a=0,i=[0,0,0,0],u=[0,0,0,0],s=!1,l=0,c,d,f;const g=new Q2;for(;++rr[2]+1){const x=r[2]+1,S=r[3]-r[2]-1;e.add(x,S,[])}}e.add(r[3]+1,0,[["exit",f,t]])}return a!==void 0&&(i.end=Object.assign({},wr(t.events,a)),e.add(a,0,[["exit",i,t]]),i=void 0),i}function Nu(e,t,r,n,a){const i=[],u=wr(t.events,r);a&&(a.end=Object.assign({},u),i.push(["exit",a,t])),n.end=Object.assign({},u),i.push(["exit",n,t]),e.add(r+1,0,i)}function wr(e,t){const r=e[t],n=r[0]==="enter"?"start":"end";return r[1][n]}const r4={name:"tasklistCheck",tokenize:a4};function n4(){return{text:{91:r4}}}function a4(e,t,r){const n=this;return a;function a(l){return n.previous!==null||!n._gfmTasklistFirstContentOfListItem?r(l):(e.enter("taskListCheck"),e.enter("taskListCheckMarker"),e.consume(l),e.exit("taskListCheckMarker"),i)}function i(l){return ve(l)?(e.enter("taskListCheckValueUnchecked"),e.consume(l),e.exit("taskListCheckValueUnchecked"),u):l===88||l===120?(e.enter("taskListCheckValueChecked"),e.consume(l),e.exit("taskListCheckValueChecked"),u):r(l)}function u(l){return l===93?(e.enter("taskListCheckMarker"),e.consume(l),e.exit("taskListCheckMarker"),e.exit("taskListCheck"),s):r(l)}function s(l){return ae(l)?t(l):ge(l)?e.check({tokenize:i4},t,r)(l):r(l)}}function i4(e,t,r){return fe(e,n,"whitespace");function n(a){return a===null?r(a):t(a)}}function u4(e){return rl([D2(),U2(),$2(e),Z2(),n4()])}const s4={};function l4(e){const t=this,r=e||s4,n=t.data(),a=n.micromarkExtensions||(n.micromarkExtensions=[]),i=n.fromMarkdownExtensions||(n.fromMarkdownExtensions=[]),u=n.toMarkdownExtensions||(n.toMarkdownExtensions=[]);a.push(u4(r)),i.push(C2()),u.push(_2(r))}function o4(){return{enter:{mathFlow:e,mathFlowFenceMeta:t,mathText:i},exit:{mathFlow:a,mathFlowFence:n,mathFlowFenceMeta:r,mathFlowValue:s,mathText:u,mathTextData:s}};function e(l){const c={type:"element",tagName:"code",properties:{className:["language-math","math-display"]},children:[]};this.enter({type:"math",meta:null,value:"",data:{hName:"pre",hChildren:[c]}},l)}function t(){this.buffer()}function r(){const l=this.resume(),c=this.stack[this.stack.length-1];c.type,c.meta=l}function n(){this.data.mathFlowInside||(this.buffer(),this.data.mathFlowInside=!0)}function a(l){const c=this.resume().replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,""),d=this.stack[this.stack.length-1];d.type,this.exit(l),d.value=c;const f=d.data.hChildren[0];f.type,f.tagName,f.children.push({type:"text",value:c}),this.data.mathFlowInside=void 0}function i(l){this.enter({type:"inlineMath",value:"",data:{hName:"code",hProperties:{className:["language-math","math-inline"]},hChildren:[]}},l),this.buffer()}function u(l){const c=this.resume(),d=this.stack[this.stack.length-1];d.type,this.exit(l),d.value=c,d.data.hChildren.push({type:"text",value:c})}function s(l){this.config.enter.data.call(this,l),this.config.exit.data.call(this,l)}}function c4(e){let t=(e||{}).singleDollarTextMath;return t==null&&(t=!0),n.peek=a,{unsafe:[{character:"\r",inConstruct:"mathFlowMeta"},{character:` -`,inConstruct:"mathFlowMeta"},{character:"$",after:t?void 0:"\\$",inConstruct:"phrasing"},{character:"$",inConstruct:"mathFlowMeta"},{atBreak:!0,character:"$",after:"\\$"}],handlers:{math:r,inlineMath:n}};function r(i,u,s,l){const c=i.value||"",d=s.createTracker(l),f="$".repeat(Math.max(Il(c,"$")+1,2)),g=s.enter("mathFlow");let p=d.move(f);if(i.meta){const x=s.enter("mathFlowMeta");p+=d.move(s.safe(i.meta,{after:` -`,before:p,encode:["$"],...d.current()})),x()}return p+=d.move(` -`),c&&(p+=d.move(c+` -`)),p+=d.move(f),g(),p}function n(i,u,s){let l=i.value||"",c=1;for(t||c++;new RegExp("(^|[^$])"+"\\$".repeat(c)+"([^$]|$)").test(l);)c++;const d="$".repeat(c);/[^ \r\n]/.test(l)&&(/^[ \r\n]/.test(l)&&/[ \r\n]$/.test(l)||/^\$|\$$/.test(l))&&(l=" "+l+" ");let f=-1;for(;++f15?c="…"+s.slice(a-15,a):c=s.slice(0,a);var d;i+15e.replace(E4,"-$1").toLowerCase(),x4={"&":"&",">":">","<":"<",'"':""","'":"'"},y4=/[&><"']/g,Ve=e=>String(e).replace(y4,t=>x4[t]),$n=e=>e.type==="ordgroup"||e.type==="color"?e.body.length===1?$n(e.body[0]):e:e.type==="font"?$n(e.body):e,v4=new Set(["mathord","textord","atom"]),qt=e=>v4.has($n(e).type),A4=e=>{var t=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return t?t[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(t[1])?null:t[1].toLowerCase():"_relative"},_a={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:e=>"#"+e},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(e,t)=>(t.push(e),t)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:e=>Math.max(0,e),cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:e=>Math.max(0,e),cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:e=>Math.max(0,e),cli:"-e, --max-expand ",cliProcessor:e=>e==="Infinity"?1/0:parseInt(e)},globalGroup:{type:"boolean",cli:!1}};function k4(e){if(typeof e!="string")return e.enum[0];switch(e){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{};default:throw new Error("Unexpected schema type; settings must declare an explicit default.")}}function S4(e){if(e.default!==void 0)return e.default;var t=Array.isArray(e.type)?e.type[0]:e.type;return k4(t)}function w4(e,t,r,n){var a=r[t];e[t]=a!==void 0?n.processor?n.processor(a):a:S4(n)}class pi{constructor(t){t===void 0&&(t={}),this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,t=t||{};for(var r of Object.keys(_a)){var n=_a[r];n&&w4(this,r,t,n)}}reportNonstrict(t,r,n){var a=this.strict;if(typeof a=="function"&&(a=a(t,r,n)),!(!a||a==="ignore")){if(a===!0||a==="error")throw new Y("LaTeX-incompatible input and strict mode is set to 'error': "+(r+" ["+t+"]"),n);a==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+t+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+a+"': "+r+" ["+t+"]"))}}useStrictBehavior(t,r,n){var a=this.strict;if(typeof a=="function")try{a=a(t,r,n)}catch{a="error"}return!a||a==="ignore"?!1:a===!0||a==="error"?!0:a==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+t+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+a+"': "+r+" ["+t+"]")),!1)}isTrusted(t){if("url"in t&&t.url&&!t.protocol){var r=A4(t.url);if(r==null)return!1;t.protocol=r}var n=typeof this.trust=="function"?this.trust(t):this.trust;return!!n}}class jt{constructor(t,r,n){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=t,this.size=r,this.cramped=n}sup(){return kt[C4[this.id]]}sub(){return kt[_4[this.id]]}fracNum(){return kt[I4[this.id]]}fracDen(){return kt[N4[this.id]]}cramp(){return kt[D4[this.id]]}text(){return kt[O4[this.id]]}isTight(){return this.size>=2}}var gi=0,r0=1,_r=2,Ht=3,gn=4,gt=5,Dr=6,Je=7,kt=[new jt(gi,0,!1),new jt(r0,0,!0),new jt(_r,1,!1),new jt(Ht,1,!0),new jt(gn,2,!1),new jt(gt,2,!0),new jt(Dr,3,!1),new jt(Je,3,!0)],C4=[gn,gt,gn,gt,Dr,Je,Dr,Je],_4=[gt,gt,gt,gt,Je,Je,Je,Je],I4=[_r,Ht,gn,gt,Dr,Je,Dr,Je],N4=[Ht,Ht,gt,gt,Je,Je,Je,Je],D4=[r0,r0,Ht,Ht,gt,gt,Je,Je],O4=[gi,r0,_r,Ht,_r,Ht,_r,Ht],oe={DISPLAY:kt[gi],TEXT:kt[_r],SCRIPT:kt[gn],SCRIPTSCRIPT:kt[Dr]},Ia=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];function L4(e){for(var t=0;t=a[0]&&e<=a[1])return r.name}return null}var Qn=[];Ia.forEach(e=>e.blocks.forEach(t=>Qn.push(...t)));function $l(e){for(var t=0;t=Qn[t]&&e<=Qn[t+1])return!0;return!1}var Fe=e=>e+" "+e,kr=80,R4=function(t,r){return"M95,"+(622+t+r)+` -c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14 -c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54 -c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10 -s173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429 -c69,-144,104.5,-217.7,106.5,-221 -l`+t/2.075+" -"+t+` -c5.3,-9.3,12,-14,20,-14 -H400000v`+(40+t)+`H845.2724 -s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7 -c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z -M`+(834+t)+" "+r+"h400000v"+(40+t)+"h-400000z"},M4=function(t,r){return"M263,"+(601+t+r)+`c0.7,0,18,39.7,52,119 -c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120 -c340,-704.7,510.7,-1060.3,512,-1067 -l`+t/2.084+" -"+t+` -c4.7,-7.3,11,-11,19,-11 -H40000v`+(40+t)+`H1012.3 -s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232 -c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1 -s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26 -c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z -M`+(1001+t)+" "+r+"h400000v"+(40+t)+"h-400000z"},P4=function(t,r){return"M983 "+(10+t+r)+` -l`+t/3.13+" -"+t+` -c4,-6.7,10,-10,18,-10 H400000v`+(40+t)+` -H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7 -s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744 -c-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30 -c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722 -c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5 -c53.7,-170.3,84.5,-266.8,92.5,-289.5z -M`+(1001+t)+" "+r+"h400000v"+(40+t)+"h-400000z"},B4=function(t,r){return"M424,"+(2398+t+r)+` -c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514 -c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20 -s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121 -s209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081 -l`+t/4.223+" -"+t+`c4,-6.7,10,-10,18,-10 H400000 -v`+(40+t)+`H1014.6 -s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185 -c-2,6,-10,9,-24,9 -c-8,0,-12,-0.7,-12,-2z M`+(1001+t)+" "+r+` -h400000v`+(40+t)+"h-400000z"},F4=function(t,r){return"M473,"+(2713+t+r)+` -c339.3,-1799.3,509.3,-2700,510,-2702 l`+t/5.298+" -"+t+` -c3.3,-7.3,9.3,-11,18,-11 H400000v`+(40+t)+`H1017.7 -s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9 -c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200 -c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26 -s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104, -606zM`+(1001+t)+" "+r+"h400000v"+(40+t)+"H1017.7z"},H4=function(t){var r=t/2;return"M400000 "+t+" H0 L"+r+" 0 l65 45 L145 "+(t-80)+" H400000z"},z4=function(t,r,n){var a=n-54-r-t;return"M702 "+(t+r)+"H400000"+(40+t)+` -H742v`+a+`l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1 -h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170 -c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667 -219 661 l218 661zM702 `+r+"H400000v"+(40+t)+"H742z"},U4=function(t,r,n){r=1e3*r;var a="";switch(t){case"sqrtMain":a=R4(r,kr);break;case"sqrtSize1":a=M4(r,kr);break;case"sqrtSize2":a=P4(r,kr);break;case"sqrtSize3":a=B4(r,kr);break;case"sqrtSize4":a=F4(r,kr);break;case"sqrtTall":a=z4(r,kr,n)}return a},q4=function(t,r){switch(t){case"⎜":return Fe("M291 0 H417 V"+r+" H291z");case"∣":return Fe("M145 0 H188 V"+r+" H145z");case"∥":return Fe("M145 0 H188 V"+r+" H145z")+Fe("M367 0 H410 V"+r+" H367z");case"⎟":return Fe("M457 0 H583 V"+r+" H457z");case"⎢":return Fe("M319 0 H403 V"+r+" H319z");case"⎥":return Fe("M263 0 H347 V"+r+" H263z");case"⎪":return Fe("M384 0 H504 V"+r+" H384z");case"⏐":return Fe("M312 0 H355 V"+r+" H312z");case"‖":return Fe("M257 0 H300 V"+r+" H257z")+Fe("M478 0 H521 V"+r+" H478z");default:return""}},Ou={doubleleftarrow:`M262 157 -l10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3 - 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28 - 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5 -c2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5 - 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87 --86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7 --2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z -m8 0v40h399730v-40zm0 194v40h399730v-40z`,doublerightarrow:`M399738 392l --10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5 - 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88 --33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68 --17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18 --13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782 -c-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3 --107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z`,leftarrow:`M400000 241H110l3-3c68.7-52.7 113.7-120 - 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8 --5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247 -c-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208 - 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3 - 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202 - l-3-3h399890zM100 241v40h399900v-40z`,leftbrace:`M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117 --45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7 - 5-6 9-10 13-.7 1-7.3 1-20 1H6z`,leftbraceunder:`M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13 - 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688 - 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7 --331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z`,leftgroup:`M400000 80 -H435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0 - 435 0h399565z`,leftgroupunder:`M400000 262 -H435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219 - 435 219h399565z`,leftharpoon:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3 --3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5 --18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7 --196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z`,leftharpoonplus:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5 - 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3 --4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7 --10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z -m0 0v40h400000v-40z`,leftharpoondown:`M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333 - 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5 - 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667 --152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z`,leftharpoondownplus:`M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12 - 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7 --2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0 -v40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z`,lefthook:`M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5 --83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3 --68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21 - 71.5 23h399859zM103 281v-40h399897v40z`,leftlinesegment:Fe("M40 281 V428 H0 V94 H40 V241 H400000 v40z"),leftbracketunder:Fe("M0 0 h120 V290 H399995 v120 H0z"),leftbracketover:Fe("M0 440 h120 V150 H399995 v-120 H0z"),leftmapsto:Fe("M40 281 V448H0V74H40V241H400000v40z"),leftToFrom:`M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23 --.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8 -c28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3 - 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z`,longequal:Fe("M0 50 h400000 v40H0z m0 194h40000v40H0z"),midbrace:`M200428 334 -c-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14 --53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7 - 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11 - 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z`,midbraceunder:`M199572 214 -c100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14 - 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3 - 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0 --5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z`,oiintSize1:`M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6 --320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z -m368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8 -60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z`,oiintSize2:`M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8 --451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z -m502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2 -c0 110 84 276 504 276s502.4-166 502.4-276z`,oiiintSize1:`M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6 --480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z -m525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0 -85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z`,oiiintSize2:`M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8 --707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z -m770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1 -c0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z`,rightarrow:`M0 241v40h399891c-47.3 35.3-84 78-110 128 --16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 - 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 - 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85 --40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 --12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 - 151.7 139 205zm0 0v40h399900v-40z`,rightbrace:`M400000 542l --6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5 -s-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1 -c124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z`,rightbraceunder:`M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3 - 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237 --174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z`,rightgroup:`M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0 - 3-1 3-3v-38c-76-158-257-219-435-219H0z`,rightgroupunder:`M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18 - 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z`,rightharpoon:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3 --3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2 --10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 - 69.2 92 94.5zm0 0v40h399900v-40z`,rightharpoonplus:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11 --18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7 - 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z -m0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z`,rightharpoondown:`M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8 - 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5 --7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95 --27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z`,rightharpoondownplus:`M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8 - 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 - 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3 --64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z -m0-194v40h400000v-40zm0 0v40h400000v-40z`,righthook:`M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3 - 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0 --13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21 - 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z`,rightlinesegment:Fe("M399960 241 V94 h40 V428 h-40 V281 H0 v-40z"),rightbracketunder:Fe("M399995 0 h-120 V290 H0 v120 H400000z"),rightbracketover:Fe("M399995 440 h-120 V150 H0 v-120 H399995z"),rightToFrom:`M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23 - 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32 --52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142 --167z M100 147v40h399900v-40zM0 341v40h399900v-40z`,twoheadleftarrow:`M0 167c68 40 - 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69 --70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3 --40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19 --37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101 - 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z`,twoheadrightarrow:`M400000 167 -c-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3 - 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42 - 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333 --19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70 - 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z`,tilde1:`M200 55.538c-77 0-168 73.953-177 73.953-3 0-7 --2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0 - 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0 - 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128 --68.267.847-113-73.952-191-73.952z`,tilde2:`M344 55.266c-142 0-300.638 81.316-311.5 86.418 --8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9 - 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114 -c1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751 - 181.476 676 181.476c-149 0-189-126.21-332-126.21z`,tilde3:`M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457 --11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0 - 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697 - 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696 - -338 0-409-156.573-744-156.573z`,tilde4:`M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345 --11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409 - 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9 - 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409 - -175.236-744-175.236z`,vec:`M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5 -3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11 -10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63 --1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1 --7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59 -H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359 -c-16-25.333-24-45-24-59z`,widehat1:`M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22 -c-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z`,widehat2:`M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10 --11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat3:`M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10 --11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat4:`M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10 --11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widecheck1:`M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1, --5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z`,widecheck2:`M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, --11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck3:`M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, --11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck4:`M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, --11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,baraboveleftarrow:`M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202 -c4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5 -c-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130 -s-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47 -121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6 -s2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11 -c0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z -M100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z`,rightarrowabovebar:`M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32 --27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0 -13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39 --84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5 --119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 --12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 -151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z`,baraboveshortleftharpoon:`M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 -c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17 -c2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21 -c-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40 -c-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z -M0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z`,rightharpoonaboveshortbar:`M0,241 l0,40c399126,0,399993,0,399993,0 -c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, --231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 -c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z -M0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z`,shortbaraboveleftharpoon:`M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 -c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9, -1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7, --152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z -M93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z`,shortrightharpoonabovebar:`M53,241l0,40c398570,0,399437,0,399437,0 -c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, --231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 -c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z -M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`},Y4=function(t,r){switch(t){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v1759 v84 h347 v-84 -H403z M403 1759 V0 H319 V1759 v`+r+" v1759 v84 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+r+` v1759 H0 v84 H347z -M347 1759 V0 H263 V1759 v`+r+" v1759 h84z";case"vert":return"M145 15 v585 v"+r+` v585 c2.667,10,9.667,15,21,15 -c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 -c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+r+" v585 h43z";case"doublevert":return"M145 15 v585 v"+r+` v585 c2.667,10,9.667,15,21,15 -c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 -c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+r+` v585 h43z -M367 15 v585 v`+r+` v585 c2.667,10,9.667,15,21,15 -c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 -c-10,0,-16.667,5,-20,15z M410 15 H367 v585 v`+r+" v585 h43z";case"lfloor":return"M319 602 V0 H403 V602 v"+r+` v1715 h263 v84 H319z -MM319 602 V0 H403 V602 v`+r+" v1715 H319z";case"rfloor":return"M319 602 V0 H403 V602 v"+r+` v1799 H0 v-84 H319z -MM319 602 V0 H403 V602 v`+r+" v1715 H319z";case"lceil":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v602 h84z -M403 1759 V0 H319 V1759 v`+r+" v602 h84z";case"rceil":return"M347 1759 V0 H0 V84 H263 V1759 v"+r+` v602 h84z -M347 1759 V0 h-84 V1759 v`+r+" v602 h84z";case"lparen":return`M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1 -c-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349, --36,557 l0,`+(r+84)+`c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210, -949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9 -c0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5, --544.7,-112.5,-882c-2,-104,-3,-167,-3,-189 -l0,-`+(r+92)+`c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3, --210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z`;case"rparen":return`M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3, -63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5 -c11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,`+(r+9)+` -c-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664 -c-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11 -c0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17 -c242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558 -l0,-`+(r+144)+`c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7, --470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`;default:throw new Error("Unknown stretchy delimiter.")}};function G4(e){return"toText"in e}class Br{constructor(t){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=t,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(t){return this.classes.includes(t)}toNode(){for(var t=document.createDocumentFragment(),r=0;r{if(G4(t))return t.toText();throw new Error("Expected MathDomNode with toText, got "+t.constructor.name)}).join("")}}var Na={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800},V4={ex:!0,em:!0,mu:!0},Ql=function(t){return typeof t!="string"&&(t=t.unit),t in Na||t in V4||t==="ex"},Ie=function(t,r){var n;if(t.unit in Na)n=Na[t.unit]/r.fontMetrics().ptPerEm/r.sizeMultiplier;else if(t.unit==="mu")n=r.fontMetrics().cssEmPerMu;else{var a;if(r.style.isTight()?a=r.havingStyle(r.style.text()):a=r,t.unit==="ex")n=a.fontMetrics().xHeight;else if(t.unit==="em")n=a.fontMetrics().quad;else throw new Y("Invalid unit: '"+t.unit+"'");a!==r&&(n*=a.sizeMultiplier/r.sizeMultiplier)}return Math.min(t.number*n,r.maxSize)},V=function(t){return+t.toFixed(4)+"em"},Jt=function(t){return t.filter(r=>r).join(" ")},bi=function(t){var r="";for(var n of Object.keys(t)){var a=t[n];a!==void 0&&(r+=T4(n)+":"+a+";")}return r},Kl=function(t,r,n){if(this.classes=t||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=n||{},r){r.style.isTight()&&this.classes.push("mtight");var a=r.getColor();a&&(this.style.color=a)}},Jl=function(t){var r=document.createElement(t);r.className=Jt(this.classes),Object.assign(r.style,this.style);for(var n of Object.keys(this.attributes))r.setAttribute(n,this.attributes[n]);for(var a=0;a/=\x00-\x1f]/,Zl=function(t){var r="<"+t;this.classes.length&&(r+=' class="'+Ve(Jt(this.classes))+'"');var n=bi(this.style);n&&(r+=' style="'+Ve(n)+'"');for(var a of Object.keys(this.attributes)){if(j4.test(a))throw new Y("Invalid attribute name '"+a+"'");r+=" "+a+'="'+Ve(this.attributes[a])+'"'}r+=">";for(var i=0;i",r};class Fr{constructor(t,r,n,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,this.italic=void 0,Kl.call(this,t,n,a),this.children=r||[]}setAttribute(t,r){this.attributes[t]=r}hasClass(t){return this.classes.includes(t)}toNode(){return Jl.call(this,"span")}toMarkup(){return Zl.call(this,"span")}}class E0{constructor(t,r,n,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,Kl.call(this,r,a),this.children=n||[],this.setAttribute("href",t)}setAttribute(t,r){this.attributes[t]=r}hasClass(t){return this.classes.includes(t)}toNode(){return Jl.call(this,"a")}toMarkup(){return Zl.call(this,"a")}}class W4{constructor(t,r,n){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=r,this.src=t,this.classes=["mord"],this.height=0,this.depth=0,this.maxFontSize=0,this.style=n}hasClass(t){return this.classes.includes(t)}toNode(){var t=document.createElement("img");return t.src=this.src,t.alt=this.alt,t.className="mord",Object.assign(t.style,this.style),t}toMarkup(){var t=''+Ve(this.alt)+'0&&(r=document.createElement("span"),r.style.marginRight=V(this.italic)),this.classes.length>0&&(r=r||document.createElement("span"),r.className=Jt(this.classes)),Object.keys(this.style).length>0&&(r=r||document.createElement("span"),Object.assign(r.style,this.style)),r?(r.appendChild(t),r):t}toMarkup(){var t=!1,r="0&&(n+="margin-right:"+V(this.italic)+";"),n+=bi(this.style),n&&(t=!0,r+=' style="'+Ve(n)+'"');var a=Ve(this.text);return t?(r+=">",r+=a,r+="",r):a}}class zt{constructor(t,r){this.children=void 0,this.attributes=void 0,this.children=t||[],this.attributes=r||{}}toNode(){var t="http://www.w3.org/2000/svg",r=document.createElementNS(t,"svg");for(var n of Object.keys(this.attributes))r.setAttribute(n,this.attributes[n]);for(var a=0;a':''}}class Da{constructor(t){this.attributes=void 0,this.attributes=t||{}}toNode(){var t="http://www.w3.org/2000/svg",r=document.createElementNS(t,"line");for(var n of Object.keys(this.attributes))r.setAttribute(n,this.attributes[n]);return r}toMarkup(){var t=" but got "+String(e)+".")}var K4=e=>e instanceof Fr||e instanceof E0||e instanceof Br,wt={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},Hn={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},Lu={Å:"A",Ð:"D",Þ:"o",å:"a",ð:"d",þ:"o",А:"A",Б:"B",В:"B",Г:"F",Д:"A",Е:"E",Ж:"K",З:"3",И:"N",Й:"N",К:"K",Л:"N",М:"M",Н:"H",О:"O",П:"N",Р:"P",С:"C",Т:"T",У:"y",Ф:"O",Х:"X",Ц:"U",Ч:"h",Ш:"W",Щ:"W",Ъ:"B",Ы:"X",Ь:"B",Э:"3",Ю:"X",Я:"R",а:"a",б:"b",в:"a",г:"r",д:"y",е:"e",ж:"m",з:"e",и:"n",й:"n",к:"n",л:"n",м:"m",н:"n",о:"o",п:"n",р:"p",с:"c",т:"o",у:"y",ф:"b",х:"x",ц:"n",ч:"n",ш:"w",щ:"w",ъ:"a",ы:"m",ь:"a",э:"e",ю:"m",я:"r"};function J4(e,t){wt[e]=t}function Ei(e,t,r){if(!wt[t])throw new Error("Font metrics not found for font: "+t+".");var n=e.charCodeAt(0),a=wt[t][n];if(!a&&e[0]in Lu&&(n=Lu[e[0]].charCodeAt(0),a=wt[t][n]),!a&&r==="text"&&$l(n)&&(a=wt[t][77]),a)return{depth:a[0],height:a[1],italic:a[2],skew:a[3],width:a[4]}}var ea={};function Z4(e){var t;if(e>=5?t=0:e>=3?t=1:t=2,!ea[t]){var r=ea[t]={cssEmPerMu:Hn.quad[t]/18};for(var n in Hn)Hn.hasOwnProperty(n)&&(r[n]=Hn[n][t])}return ea[t]}var we={math:{},text:{}};function h(e,t,r,n,a,i){we[e][a]={font:t,group:r,replace:n},i&&n&&(we[e][n]=we[e][a])}var m="math",F="text",b="main",v="ams",Ce="accent-token",te="bin",Ze="close",Hr="inner",ie="mathord",Pe="op-token",ht="open",kn="punct",A="rel",Yt="spacing",I="textord";h(m,b,A,"≡","\\equiv",!0);h(m,b,A,"≺","\\prec",!0);h(m,b,A,"≻","\\succ",!0);h(m,b,A,"∼","\\sim",!0);h(m,b,A,"⊥","\\perp");h(m,b,A,"⪯","\\preceq",!0);h(m,b,A,"⪰","\\succeq",!0);h(m,b,A,"≃","\\simeq",!0);h(m,b,A,"∣","\\mid",!0);h(m,b,A,"≪","\\ll",!0);h(m,b,A,"≫","\\gg",!0);h(m,b,A,"≍","\\asymp",!0);h(m,b,A,"∥","\\parallel");h(m,b,A,"⋈","\\bowtie",!0);h(m,b,A,"⌣","\\smile",!0);h(m,b,A,"⊑","\\sqsubseteq",!0);h(m,b,A,"⊒","\\sqsupseteq",!0);h(m,b,A,"≐","\\doteq",!0);h(m,b,A,"⌢","\\frown",!0);h(m,b,A,"∋","\\ni",!0);h(m,b,A,"∝","\\propto",!0);h(m,b,A,"⊢","\\vdash",!0);h(m,b,A,"⊣","\\dashv",!0);h(m,b,A,"∋","\\owns");h(m,b,kn,".","\\ldotp");h(m,b,kn,"⋅","\\cdotp");h(m,b,kn,"⋅","·");h(F,b,I,"⋅","·");h(m,b,I,"#","\\#");h(F,b,I,"#","\\#");h(m,b,I,"&","\\&");h(F,b,I,"&","\\&");h(m,b,I,"ℵ","\\aleph",!0);h(m,b,I,"∀","\\forall",!0);h(m,b,I,"ℏ","\\hbar",!0);h(m,b,I,"∃","\\exists",!0);h(m,b,I,"∇","\\nabla",!0);h(m,b,I,"♭","\\flat",!0);h(m,b,I,"ℓ","\\ell",!0);h(m,b,I,"♮","\\natural",!0);h(m,b,I,"♣","\\clubsuit",!0);h(m,b,I,"℘","\\wp",!0);h(m,b,I,"♯","\\sharp",!0);h(m,b,I,"♢","\\diamondsuit",!0);h(m,b,I,"ℜ","\\Re",!0);h(m,b,I,"♡","\\heartsuit",!0);h(m,b,I,"ℑ","\\Im",!0);h(m,b,I,"♠","\\spadesuit",!0);h(m,b,I,"§","\\S",!0);h(F,b,I,"§","\\S");h(m,b,I,"¶","\\P",!0);h(F,b,I,"¶","\\P");h(m,b,I,"†","\\dag");h(F,b,I,"†","\\dag");h(F,b,I,"†","\\textdagger");h(m,b,I,"‡","\\ddag");h(F,b,I,"‡","\\ddag");h(F,b,I,"‡","\\textdaggerdbl");h(m,b,Ze,"⎱","\\rmoustache",!0);h(m,b,ht,"⎰","\\lmoustache",!0);h(m,b,Ze,"⟯","\\rgroup",!0);h(m,b,ht,"⟮","\\lgroup",!0);h(m,b,te,"∓","\\mp",!0);h(m,b,te,"⊖","\\ominus",!0);h(m,b,te,"⊎","\\uplus",!0);h(m,b,te,"⊓","\\sqcap",!0);h(m,b,te,"∗","\\ast");h(m,b,te,"⊔","\\sqcup",!0);h(m,b,te,"◯","\\bigcirc",!0);h(m,b,te,"∙","\\bullet",!0);h(m,b,te,"‡","\\ddagger");h(m,b,te,"≀","\\wr",!0);h(m,b,te,"⨿","\\amalg");h(m,b,te,"&","\\And");h(m,b,A,"⟵","\\longleftarrow",!0);h(m,b,A,"⇐","\\Leftarrow",!0);h(m,b,A,"⟸","\\Longleftarrow",!0);h(m,b,A,"⟶","\\longrightarrow",!0);h(m,b,A,"⇒","\\Rightarrow",!0);h(m,b,A,"⟹","\\Longrightarrow",!0);h(m,b,A,"↔","\\leftrightarrow",!0);h(m,b,A,"⟷","\\longleftrightarrow",!0);h(m,b,A,"⇔","\\Leftrightarrow",!0);h(m,b,A,"⟺","\\Longleftrightarrow",!0);h(m,b,A,"↦","\\mapsto",!0);h(m,b,A,"⟼","\\longmapsto",!0);h(m,b,A,"↗","\\nearrow",!0);h(m,b,A,"↩","\\hookleftarrow",!0);h(m,b,A,"↪","\\hookrightarrow",!0);h(m,b,A,"↘","\\searrow",!0);h(m,b,A,"↼","\\leftharpoonup",!0);h(m,b,A,"⇀","\\rightharpoonup",!0);h(m,b,A,"↙","\\swarrow",!0);h(m,b,A,"↽","\\leftharpoondown",!0);h(m,b,A,"⇁","\\rightharpoondown",!0);h(m,b,A,"↖","\\nwarrow",!0);h(m,b,A,"⇌","\\rightleftharpoons",!0);h(m,v,A,"≮","\\nless",!0);h(m,v,A,"","\\@nleqslant");h(m,v,A,"","\\@nleqq");h(m,v,A,"⪇","\\lneq",!0);h(m,v,A,"≨","\\lneqq",!0);h(m,v,A,"","\\@lvertneqq");h(m,v,A,"⋦","\\lnsim",!0);h(m,v,A,"⪉","\\lnapprox",!0);h(m,v,A,"⊀","\\nprec",!0);h(m,v,A,"⋠","\\npreceq",!0);h(m,v,A,"⋨","\\precnsim",!0);h(m,v,A,"⪹","\\precnapprox",!0);h(m,v,A,"≁","\\nsim",!0);h(m,v,A,"","\\@nshortmid");h(m,v,A,"∤","\\nmid",!0);h(m,v,A,"⊬","\\nvdash",!0);h(m,v,A,"⊭","\\nvDash",!0);h(m,v,A,"⋪","\\ntriangleleft");h(m,v,A,"⋬","\\ntrianglelefteq",!0);h(m,v,A,"⊊","\\subsetneq",!0);h(m,v,A,"","\\@varsubsetneq");h(m,v,A,"⫋","\\subsetneqq",!0);h(m,v,A,"","\\@varsubsetneqq");h(m,v,A,"≯","\\ngtr",!0);h(m,v,A,"","\\@ngeqslant");h(m,v,A,"","\\@ngeqq");h(m,v,A,"⪈","\\gneq",!0);h(m,v,A,"≩","\\gneqq",!0);h(m,v,A,"","\\@gvertneqq");h(m,v,A,"⋧","\\gnsim",!0);h(m,v,A,"⪊","\\gnapprox",!0);h(m,v,A,"⊁","\\nsucc",!0);h(m,v,A,"⋡","\\nsucceq",!0);h(m,v,A,"⋩","\\succnsim",!0);h(m,v,A,"⪺","\\succnapprox",!0);h(m,v,A,"≆","\\ncong",!0);h(m,v,A,"","\\@nshortparallel");h(m,v,A,"∦","\\nparallel",!0);h(m,v,A,"⊯","\\nVDash",!0);h(m,v,A,"⋫","\\ntriangleright");h(m,v,A,"⋭","\\ntrianglerighteq",!0);h(m,v,A,"","\\@nsupseteqq");h(m,v,A,"⊋","\\supsetneq",!0);h(m,v,A,"","\\@varsupsetneq");h(m,v,A,"⫌","\\supsetneqq",!0);h(m,v,A,"","\\@varsupsetneqq");h(m,v,A,"⊮","\\nVdash",!0);h(m,v,A,"⪵","\\precneqq",!0);h(m,v,A,"⪶","\\succneqq",!0);h(m,v,A,"","\\@nsubseteqq");h(m,v,te,"⊴","\\unlhd");h(m,v,te,"⊵","\\unrhd");h(m,v,A,"↚","\\nleftarrow",!0);h(m,v,A,"↛","\\nrightarrow",!0);h(m,v,A,"⇍","\\nLeftarrow",!0);h(m,v,A,"⇏","\\nRightarrow",!0);h(m,v,A,"↮","\\nleftrightarrow",!0);h(m,v,A,"⇎","\\nLeftrightarrow",!0);h(m,v,A,"△","\\vartriangle");h(m,v,I,"ℏ","\\hslash");h(m,v,I,"▽","\\triangledown");h(m,v,I,"◊","\\lozenge");h(m,v,I,"Ⓢ","\\circledS");h(m,v,I,"®","\\circledR");h(F,v,I,"®","\\circledR");h(m,v,I,"∡","\\measuredangle",!0);h(m,v,I,"∄","\\nexists");h(m,v,I,"℧","\\mho");h(m,v,I,"Ⅎ","\\Finv",!0);h(m,v,I,"⅁","\\Game",!0);h(m,v,I,"‵","\\backprime");h(m,v,I,"▲","\\blacktriangle");h(m,v,I,"▼","\\blacktriangledown");h(m,v,I,"■","\\blacksquare");h(m,v,I,"⧫","\\blacklozenge");h(m,v,I,"★","\\bigstar");h(m,v,I,"∢","\\sphericalangle",!0);h(m,v,I,"∁","\\complement",!0);h(m,v,I,"ð","\\eth",!0);h(F,b,I,"ð","ð");h(m,v,I,"╱","\\diagup");h(m,v,I,"╲","\\diagdown");h(m,v,I,"□","\\square");h(m,v,I,"□","\\Box");h(m,v,I,"◊","\\Diamond");h(m,v,I,"¥","\\yen",!0);h(F,v,I,"¥","\\yen",!0);h(m,v,I,"✓","\\checkmark",!0);h(F,v,I,"✓","\\checkmark");h(m,v,I,"ℶ","\\beth",!0);h(m,v,I,"ℸ","\\daleth",!0);h(m,v,I,"ℷ","\\gimel",!0);h(m,v,I,"ϝ","\\digamma",!0);h(m,v,I,"ϰ","\\varkappa");h(m,v,ht,"┌","\\@ulcorner",!0);h(m,v,Ze,"┐","\\@urcorner",!0);h(m,v,ht,"└","\\@llcorner",!0);h(m,v,Ze,"┘","\\@lrcorner",!0);h(m,v,A,"≦","\\leqq",!0);h(m,v,A,"⩽","\\leqslant",!0);h(m,v,A,"⪕","\\eqslantless",!0);h(m,v,A,"≲","\\lesssim",!0);h(m,v,A,"⪅","\\lessapprox",!0);h(m,v,A,"≊","\\approxeq",!0);h(m,v,te,"⋖","\\lessdot");h(m,v,A,"⋘","\\lll",!0);h(m,v,A,"≶","\\lessgtr",!0);h(m,v,A,"⋚","\\lesseqgtr",!0);h(m,v,A,"⪋","\\lesseqqgtr",!0);h(m,v,A,"≑","\\doteqdot");h(m,v,A,"≓","\\risingdotseq",!0);h(m,v,A,"≒","\\fallingdotseq",!0);h(m,v,A,"∽","\\backsim",!0);h(m,v,A,"⋍","\\backsimeq",!0);h(m,v,A,"⫅","\\subseteqq",!0);h(m,v,A,"⋐","\\Subset",!0);h(m,v,A,"⊏","\\sqsubset",!0);h(m,v,A,"≼","\\preccurlyeq",!0);h(m,v,A,"⋞","\\curlyeqprec",!0);h(m,v,A,"≾","\\precsim",!0);h(m,v,A,"⪷","\\precapprox",!0);h(m,v,A,"⊲","\\vartriangleleft");h(m,v,A,"⊴","\\trianglelefteq");h(m,v,A,"⊨","\\vDash",!0);h(m,v,A,"⊪","\\Vvdash",!0);h(m,v,A,"⌣","\\smallsmile");h(m,v,A,"⌢","\\smallfrown");h(m,v,A,"≏","\\bumpeq",!0);h(m,v,A,"≎","\\Bumpeq",!0);h(m,v,A,"≧","\\geqq",!0);h(m,v,A,"⩾","\\geqslant",!0);h(m,v,A,"⪖","\\eqslantgtr",!0);h(m,v,A,"≳","\\gtrsim",!0);h(m,v,A,"⪆","\\gtrapprox",!0);h(m,v,te,"⋗","\\gtrdot");h(m,v,A,"⋙","\\ggg",!0);h(m,v,A,"≷","\\gtrless",!0);h(m,v,A,"⋛","\\gtreqless",!0);h(m,v,A,"⪌","\\gtreqqless",!0);h(m,v,A,"≖","\\eqcirc",!0);h(m,v,A,"≗","\\circeq",!0);h(m,v,A,"≜","\\triangleq",!0);h(m,v,A,"∼","\\thicksim");h(m,v,A,"≈","\\thickapprox");h(m,v,A,"⫆","\\supseteqq",!0);h(m,v,A,"⋑","\\Supset",!0);h(m,v,A,"⊐","\\sqsupset",!0);h(m,v,A,"≽","\\succcurlyeq",!0);h(m,v,A,"⋟","\\curlyeqsucc",!0);h(m,v,A,"≿","\\succsim",!0);h(m,v,A,"⪸","\\succapprox",!0);h(m,v,A,"⊳","\\vartriangleright");h(m,v,A,"⊵","\\trianglerighteq");h(m,v,A,"⊩","\\Vdash",!0);h(m,v,A,"∣","\\shortmid");h(m,v,A,"∥","\\shortparallel");h(m,v,A,"≬","\\between",!0);h(m,v,A,"⋔","\\pitchfork",!0);h(m,v,A,"∝","\\varpropto");h(m,v,A,"◀","\\blacktriangleleft");h(m,v,A,"∴","\\therefore",!0);h(m,v,A,"∍","\\backepsilon");h(m,v,A,"▶","\\blacktriangleright");h(m,v,A,"∵","\\because",!0);h(m,v,A,"⋘","\\llless");h(m,v,A,"⋙","\\gggtr");h(m,v,te,"⊲","\\lhd");h(m,v,te,"⊳","\\rhd");h(m,v,A,"≂","\\eqsim",!0);h(m,b,A,"⋈","\\Join");h(m,v,A,"≑","\\Doteq",!0);h(m,v,te,"∔","\\dotplus",!0);h(m,v,te,"∖","\\smallsetminus");h(m,v,te,"⋒","\\Cap",!0);h(m,v,te,"⋓","\\Cup",!0);h(m,v,te,"⩞","\\doublebarwedge",!0);h(m,v,te,"⊟","\\boxminus",!0);h(m,v,te,"⊞","\\boxplus",!0);h(m,v,te,"⋇","\\divideontimes",!0);h(m,v,te,"⋉","\\ltimes",!0);h(m,v,te,"⋊","\\rtimes",!0);h(m,v,te,"⋋","\\leftthreetimes",!0);h(m,v,te,"⋌","\\rightthreetimes",!0);h(m,v,te,"⋏","\\curlywedge",!0);h(m,v,te,"⋎","\\curlyvee",!0);h(m,v,te,"⊝","\\circleddash",!0);h(m,v,te,"⊛","\\circledast",!0);h(m,v,te,"⋅","\\centerdot");h(m,v,te,"⊺","\\intercal",!0);h(m,v,te,"⋒","\\doublecap");h(m,v,te,"⋓","\\doublecup");h(m,v,te,"⊠","\\boxtimes",!0);h(m,v,A,"⇢","\\dashrightarrow",!0);h(m,v,A,"⇠","\\dashleftarrow",!0);h(m,v,A,"⇇","\\leftleftarrows",!0);h(m,v,A,"⇆","\\leftrightarrows",!0);h(m,v,A,"⇚","\\Lleftarrow",!0);h(m,v,A,"↞","\\twoheadleftarrow",!0);h(m,v,A,"↢","\\leftarrowtail",!0);h(m,v,A,"↫","\\looparrowleft",!0);h(m,v,A,"⇋","\\leftrightharpoons",!0);h(m,v,A,"↶","\\curvearrowleft",!0);h(m,v,A,"↺","\\circlearrowleft",!0);h(m,v,A,"↰","\\Lsh",!0);h(m,v,A,"⇈","\\upuparrows",!0);h(m,v,A,"↿","\\upharpoonleft",!0);h(m,v,A,"⇃","\\downharpoonleft",!0);h(m,b,A,"⊶","\\origof",!0);h(m,b,A,"⊷","\\imageof",!0);h(m,v,A,"⊸","\\multimap",!0);h(m,v,A,"↭","\\leftrightsquigarrow",!0);h(m,v,A,"⇉","\\rightrightarrows",!0);h(m,v,A,"⇄","\\rightleftarrows",!0);h(m,v,A,"↠","\\twoheadrightarrow",!0);h(m,v,A,"↣","\\rightarrowtail",!0);h(m,v,A,"↬","\\looparrowright",!0);h(m,v,A,"↷","\\curvearrowright",!0);h(m,v,A,"↻","\\circlearrowright",!0);h(m,v,A,"↱","\\Rsh",!0);h(m,v,A,"⇊","\\downdownarrows",!0);h(m,v,A,"↾","\\upharpoonright",!0);h(m,v,A,"⇂","\\downharpoonright",!0);h(m,v,A,"⇝","\\rightsquigarrow",!0);h(m,v,A,"⇝","\\leadsto");h(m,v,A,"⇛","\\Rrightarrow",!0);h(m,v,A,"↾","\\restriction");h(m,b,I,"‘","`");h(m,b,I,"$","\\$");h(F,b,I,"$","\\$");h(F,b,I,"$","\\textdollar");h(m,b,I,"%","\\%");h(F,b,I,"%","\\%");h(m,b,I,"_","\\_");h(F,b,I,"_","\\_");h(F,b,I,"_","\\textunderscore");h(m,b,I,"∠","\\angle",!0);h(m,b,I,"∞","\\infty",!0);h(m,b,I,"′","\\prime");h(m,b,I,"△","\\triangle");h(m,b,I,"Γ","\\Gamma",!0);h(m,b,I,"Δ","\\Delta",!0);h(m,b,I,"Θ","\\Theta",!0);h(m,b,I,"Λ","\\Lambda",!0);h(m,b,I,"Ξ","\\Xi",!0);h(m,b,I,"Π","\\Pi",!0);h(m,b,I,"Σ","\\Sigma",!0);h(m,b,I,"Υ","\\Upsilon",!0);h(m,b,I,"Φ","\\Phi",!0);h(m,b,I,"Ψ","\\Psi",!0);h(m,b,I,"Ω","\\Omega",!0);h(m,b,I,"A","Α");h(m,b,I,"B","Β");h(m,b,I,"E","Ε");h(m,b,I,"Z","Ζ");h(m,b,I,"H","Η");h(m,b,I,"I","Ι");h(m,b,I,"K","Κ");h(m,b,I,"M","Μ");h(m,b,I,"N","Ν");h(m,b,I,"O","Ο");h(m,b,I,"P","Ρ");h(m,b,I,"T","Τ");h(m,b,I,"X","Χ");h(m,b,I,"¬","\\neg",!0);h(m,b,I,"¬","\\lnot");h(m,b,I,"⊤","\\top");h(m,b,I,"⊥","\\bot");h(m,b,I,"∅","\\emptyset");h(m,v,I,"∅","\\varnothing");h(m,b,ie,"α","\\alpha",!0);h(m,b,ie,"β","\\beta",!0);h(m,b,ie,"γ","\\gamma",!0);h(m,b,ie,"δ","\\delta",!0);h(m,b,ie,"ϵ","\\epsilon",!0);h(m,b,ie,"ζ","\\zeta",!0);h(m,b,ie,"η","\\eta",!0);h(m,b,ie,"θ","\\theta",!0);h(m,b,ie,"ι","\\iota",!0);h(m,b,ie,"κ","\\kappa",!0);h(m,b,ie,"λ","\\lambda",!0);h(m,b,ie,"μ","\\mu",!0);h(m,b,ie,"ν","\\nu",!0);h(m,b,ie,"ξ","\\xi",!0);h(m,b,ie,"ο","\\omicron",!0);h(m,b,ie,"π","\\pi",!0);h(m,b,ie,"ρ","\\rho",!0);h(m,b,ie,"σ","\\sigma",!0);h(m,b,ie,"τ","\\tau",!0);h(m,b,ie,"υ","\\upsilon",!0);h(m,b,ie,"ϕ","\\phi",!0);h(m,b,ie,"χ","\\chi",!0);h(m,b,ie,"ψ","\\psi",!0);h(m,b,ie,"ω","\\omega",!0);h(m,b,ie,"ε","\\varepsilon",!0);h(m,b,ie,"ϑ","\\vartheta",!0);h(m,b,ie,"ϖ","\\varpi",!0);h(m,b,ie,"ϱ","\\varrho",!0);h(m,b,ie,"ς","\\varsigma",!0);h(m,b,ie,"φ","\\varphi",!0);h(m,b,te,"∗","*",!0);h(m,b,te,"+","+");h(m,b,te,"−","-",!0);h(m,b,te,"⋅","\\cdot",!0);h(m,b,te,"∘","\\circ",!0);h(m,b,te,"÷","\\div",!0);h(m,b,te,"±","\\pm",!0);h(m,b,te,"×","\\times",!0);h(m,b,te,"∩","\\cap",!0);h(m,b,te,"∪","\\cup",!0);h(m,b,te,"∖","\\setminus",!0);h(m,b,te,"∧","\\land");h(m,b,te,"∨","\\lor");h(m,b,te,"∧","\\wedge",!0);h(m,b,te,"∨","\\vee",!0);h(m,b,I,"√","\\surd");h(m,b,ht,"⟨","\\langle",!0);h(m,b,ht,"∣","\\lvert");h(m,b,ht,"∥","\\lVert");h(m,b,Ze,"?","?");h(m,b,Ze,"!","!");h(m,b,Ze,"⟩","\\rangle",!0);h(m,b,Ze,"∣","\\rvert");h(m,b,Ze,"∥","\\rVert");h(m,b,A,"=","=");h(m,b,A,":",":");h(m,b,A,"≈","\\approx",!0);h(m,b,A,"≅","\\cong",!0);h(m,b,A,"≥","\\ge");h(m,b,A,"≥","\\geq",!0);h(m,b,A,"←","\\gets");h(m,b,A,">","\\gt",!0);h(m,b,A,"∈","\\in",!0);h(m,b,A,"","\\@not");h(m,b,A,"⊂","\\subset",!0);h(m,b,A,"⊃","\\supset",!0);h(m,b,A,"⊆","\\subseteq",!0);h(m,b,A,"⊇","\\supseteq",!0);h(m,v,A,"⊈","\\nsubseteq",!0);h(m,v,A,"⊉","\\nsupseteq",!0);h(m,b,A,"⊨","\\models");h(m,b,A,"←","\\leftarrow",!0);h(m,b,A,"≤","\\le");h(m,b,A,"≤","\\leq",!0);h(m,b,A,"<","\\lt",!0);h(m,b,A,"→","\\rightarrow",!0);h(m,b,A,"→","\\to");h(m,v,A,"≱","\\ngeq",!0);h(m,v,A,"≰","\\nleq",!0);h(m,b,Yt," ","\\ ");h(m,b,Yt," ","\\space");h(m,b,Yt," ","\\nobreakspace");h(F,b,Yt," ","\\ ");h(F,b,Yt," "," ");h(F,b,Yt," ","\\space");h(F,b,Yt," ","\\nobreakspace");h(m,b,Yt,"","\\nobreak");h(m,b,Yt,"","\\allowbreak");h(m,b,kn,",",",");h(m,b,kn,";",";");h(m,v,te,"⊼","\\barwedge",!0);h(m,v,te,"⊻","\\veebar",!0);h(m,b,te,"⊙","\\odot",!0);h(m,b,te,"⊕","\\oplus",!0);h(m,b,te,"⊗","\\otimes",!0);h(m,b,I,"∂","\\partial",!0);h(m,b,te,"⊘","\\oslash",!0);h(m,v,te,"⊚","\\circledcirc",!0);h(m,v,te,"⊡","\\boxdot",!0);h(m,b,te,"△","\\bigtriangleup");h(m,b,te,"▽","\\bigtriangledown");h(m,b,te,"†","\\dagger");h(m,b,te,"⋄","\\diamond");h(m,b,te,"⋆","\\star");h(m,b,te,"◃","\\triangleleft");h(m,b,te,"▹","\\triangleright");h(m,b,ht,"{","\\{");h(F,b,I,"{","\\{");h(F,b,I,"{","\\textbraceleft");h(m,b,Ze,"}","\\}");h(F,b,I,"}","\\}");h(F,b,I,"}","\\textbraceright");h(m,b,ht,"{","\\lbrace");h(m,b,Ze,"}","\\rbrace");h(m,b,ht,"[","\\lbrack",!0);h(F,b,I,"[","\\lbrack",!0);h(m,b,Ze,"]","\\rbrack",!0);h(F,b,I,"]","\\rbrack",!0);h(m,b,ht,"(","\\lparen",!0);h(m,b,Ze,")","\\rparen",!0);h(F,b,I,"<","\\textless",!0);h(F,b,I,">","\\textgreater",!0);h(m,b,ht,"⌊","\\lfloor",!0);h(m,b,Ze,"⌋","\\rfloor",!0);h(m,b,ht,"⌈","\\lceil",!0);h(m,b,Ze,"⌉","\\rceil",!0);h(m,b,I,"\\","\\backslash");h(m,b,I,"∣","|");h(m,b,I,"∣","\\vert");h(F,b,I,"|","\\textbar",!0);h(m,b,I,"∥","\\|");h(m,b,I,"∥","\\Vert");h(F,b,I,"∥","\\textbardbl");h(F,b,I,"~","\\textasciitilde");h(F,b,I,"\\","\\textbackslash");h(F,b,I,"^","\\textasciicircum");h(m,b,A,"↑","\\uparrow",!0);h(m,b,A,"⇑","\\Uparrow",!0);h(m,b,A,"↓","\\downarrow",!0);h(m,b,A,"⇓","\\Downarrow",!0);h(m,b,A,"↕","\\updownarrow",!0);h(m,b,A,"⇕","\\Updownarrow",!0);h(m,b,Pe,"∐","\\coprod");h(m,b,Pe,"⋁","\\bigvee");h(m,b,Pe,"⋀","\\bigwedge");h(m,b,Pe,"⨄","\\biguplus");h(m,b,Pe,"⋂","\\bigcap");h(m,b,Pe,"⋃","\\bigcup");h(m,b,Pe,"∫","\\int");h(m,b,Pe,"∫","\\intop");h(m,b,Pe,"∬","\\iint");h(m,b,Pe,"∭","\\iiint");h(m,b,Pe,"∏","\\prod");h(m,b,Pe,"∑","\\sum");h(m,b,Pe,"⨂","\\bigotimes");h(m,b,Pe,"⨁","\\bigoplus");h(m,b,Pe,"⨀","\\bigodot");h(m,b,Pe,"∮","\\oint");h(m,b,Pe,"∯","\\oiint");h(m,b,Pe,"∰","\\oiiint");h(m,b,Pe,"⨆","\\bigsqcup");h(m,b,Pe,"∫","\\smallint");h(F,b,Hr,"…","\\textellipsis");h(m,b,Hr,"…","\\mathellipsis");h(F,b,Hr,"…","\\ldots",!0);h(m,b,Hr,"…","\\ldots",!0);h(m,b,Hr,"⋯","\\@cdots",!0);h(m,b,Hr,"⋱","\\ddots",!0);h(m,b,I,"⋮","\\varvdots");h(F,b,I,"⋮","\\varvdots");h(m,b,Ce,"ˊ","\\acute");h(m,b,Ce,"ˋ","\\grave");h(m,b,Ce,"¨","\\ddot");h(m,b,Ce,"~","\\tilde");h(m,b,Ce,"ˉ","\\bar");h(m,b,Ce,"˘","\\breve");h(m,b,Ce,"ˇ","\\check");h(m,b,Ce,"^","\\hat");h(m,b,Ce,"⃗","\\vec");h(m,b,Ce,"˙","\\dot");h(m,b,Ce,"˚","\\mathring");h(m,b,ie,"","\\@imath");h(m,b,ie,"","\\@jmath");h(m,b,I,"ı","ı");h(m,b,I,"ȷ","ȷ");h(F,b,I,"ı","\\i",!0);h(F,b,I,"ȷ","\\j",!0);h(F,b,I,"ß","\\ss",!0);h(F,b,I,"æ","\\ae",!0);h(F,b,I,"œ","\\oe",!0);h(F,b,I,"ø","\\o",!0);h(F,b,I,"Æ","\\AE",!0);h(F,b,I,"Œ","\\OE",!0);h(F,b,I,"Ø","\\O",!0);h(F,b,Ce,"ˊ","\\'");h(F,b,Ce,"ˋ","\\`");h(F,b,Ce,"ˆ","\\^");h(F,b,Ce,"˜","\\~");h(F,b,Ce,"ˉ","\\=");h(F,b,Ce,"˘","\\u");h(F,b,Ce,"˙","\\.");h(F,b,Ce,"¸","\\c");h(F,b,Ce,"˚","\\r");h(F,b,Ce,"ˇ","\\v");h(F,b,Ce,"¨",'\\"');h(F,b,Ce,"˝","\\H");h(F,b,Ce,"◯","\\textcircled");var eo={"--":!0,"---":!0,"``":!0,"''":!0};h(F,b,I,"–","--",!0);h(F,b,I,"–","\\textendash");h(F,b,I,"—","---",!0);h(F,b,I,"—","\\textemdash");h(F,b,I,"‘","`",!0);h(F,b,I,"‘","\\textquoteleft");h(F,b,I,"’","'",!0);h(F,b,I,"’","\\textquoteright");h(F,b,I,"“","``",!0);h(F,b,I,"“","\\textquotedblleft");h(F,b,I,"”","''",!0);h(F,b,I,"”","\\textquotedblright");h(m,b,I,"°","\\degree",!0);h(F,b,I,"°","\\degree");h(F,b,I,"°","\\textdegree",!0);h(m,b,I,"£","\\pounds");h(m,b,I,"£","\\mathsterling",!0);h(F,b,I,"£","\\pounds");h(F,b,I,"£","\\textsterling",!0);h(m,v,I,"✠","\\maltese");h(F,v,I,"✠","\\maltese");var Ru='0123456789/@."';for(var ta=0;ta{var t=e.charCodeAt(0),r=e.charCodeAt(1),n=(t-55296)*1024+(r-56320)+65536;if(119808<=n&&n<120484){var a=Math.floor((n-119808)/26);return Gu[a]}else if(120782<=n&&n<=120831){var i=Math.floor((n-120782)/10);return t3[i]}else{if(n===120485||n===120486)return Gu[0];if(120486{if(Jt(e.classes)!==Jt(t.classes)||e.skew!==t.skew||e.maxFontSize!==t.maxFontSize||e.italic!==0&&e.hasClass("mathnormal"))return!1;if(e.classes.length===1){var r=e.classes[0];if(r==="mbin"||r==="mord")return!1}for(var n of Object.keys(e.style))if(e.style[n]!==t.style[n])return!1;for(var a of Object.keys(t.style))if(e.style[a]!==t.style[a])return!1;return!0},to=e=>{for(var t=0;tr&&(r=u.height),u.depth>n&&(n=u.depth),u.maxFontSize>a&&(a=u.maxFontSize)}t.height=r,t.depth=n,t.maxFontSize=a},z=function(t,r,n,a){var i=new Fr(t,r,n,a);return xi(i),i},er=(e,t,r,n)=>new Fr(e,t,r,n),Or=function(t,r,n){var a=z([t],[],r);return a.height=Math.max(n||r.fontMetrics().defaultRuleThickness,r.minRuleThickness),a.style.borderBottomWidth=V(a.height),a.maxFontSize=1,a},i3=function(t,r,n,a){var i=new E0(t,r,n,a);return xi(i),i},Gt=function(t){var r=new Br(t);return xi(r),r},Lr=function(t,r){return t instanceof Br?z([],[t],r):t},u3=function(t){if(t.positionType==="individualShift"){for(var r=t.children,n=[r[0]],a=-r[0].shift-r[0].elem.depth,i=a,u=1;u{var r=z(["mspace"],[],t),n=Ie(e,t);return r.style.marginRight=V(n),r},qn=(e,t,r)=>{var n,a;switch(e){case"amsrm":n="AMS";break;case"textrm":n="Main";break;case"textsf":n="SansSerif";break;case"texttt":n="Typewriter";break;default:n=e}return t==="textbf"&&r==="textit"?a="BoldItalic":t==="textbf"?a="Bold":r==="textit"?a="Italic":a="Regular",n+"-"+a},Ba={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathsfit:{variant:"sans-serif-italic",fontName:"SansSerif-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},no={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},ao=function(t,r){var[n,a,i]=no[t],u=new Zt(n),s=new zt([u],{width:V(a),height:V(i),style:"width:"+V(a),viewBox:"0 0 "+1e3*a+" "+1e3*i,preserveAspectRatio:"xMinYMin"}),l=er(["overlay"],[s],r);return l.height=i,l.style.height=V(i),l.style.width=V(a),l},_e={number:3,unit:"mu"},cr={number:4,unit:"mu"},Pt={number:5,unit:"mu"},s3={mord:{mop:_e,mbin:cr,mrel:Pt,minner:_e},mop:{mord:_e,mop:_e,mrel:Pt,minner:_e},mbin:{mord:cr,mop:cr,mopen:cr,minner:cr},mrel:{mord:Pt,mop:Pt,mopen:Pt,minner:Pt},mopen:{},mclose:{mop:_e,mbin:cr,mrel:Pt,minner:_e},mpunct:{mord:_e,mop:_e,mrel:Pt,mopen:_e,mclose:_e,mpunct:_e,minner:_e},minner:{mord:_e,mop:_e,mbin:cr,mrel:Pt,mopen:_e,mpunct:_e,minner:_e}},l3={mord:{mop:_e},mop:{mord:_e,mop:_e},mbin:{},mrel:{},mopen:{},mclose:{mop:_e},mpunct:{},minner:{mop:_e}},io={},a0={},i0={};function Z(e){for(var{type:t,names:r,props:n,handler:a,htmlBuilder:i,mathmlBuilder:u}=e,s={type:t,numArgs:n.numArgs,argTypes:n.argTypes,allowedInArgument:!!n.allowedInArgument,allowedInText:!!n.allowedInText,allowedInMath:n.allowedInMath===void 0?!0:n.allowedInMath,numOptionalArgs:n.numOptionalArgs||0,infix:!!n.infix,primitive:!!n.primitive,handler:a},l=0;l{var D=S.classes[0],_=x.classes[0];D==="mbin"&&c3.has(_)?S.classes[0]="mord":_==="mbin"&&o3.has(D)&&(x.classes[0]="mord")},{node:f},g,p),Fa(i,(x,S)=>{var D,_,N=za(S),M=za(x),W=N&&M?x.hasClass("mtight")?(D=l3[N])==null?void 0:D[M]:(_=s3[N])==null?void 0:_[M]:null;if(W)return ro(W,c)},{node:f},g,p),i},Fa=function(t,r,n,a,i){a&&t.push(a);for(var u=0;ug=>{t.splice(f+1,0,g),u++})(u)}a&&t.pop()},uo=function(t){return t instanceof Br||t instanceof E0||t instanceof Fr&&t.hasClass("enclosing")?t:null},Ha=function(t,r){var n=uo(t);if(n){var a=n.children;if(a.length){if(r==="right")return Ha(a[a.length-1],"right");if(r==="left")return Ha(a[0],"left")}}return t},za=function(t,r){if(!t)return null;r&&(t=Ha(t,r));var n=t.classes[0];return d3[n]||null},bn=function(t,r){var n=["nulldelimiter"].concat(t.baseSizingClasses());return z(r.concat(n))},Te=function(t,r,n){if(!t)return z();if(a0[t.type]){var a=a0[t.type](t,r);if(n&&r.size!==n.size){a=z(r.sizingClasses(n),[a],r);var i=r.sizeMultiplier/n.sizeMultiplier;a.height*=i,a.depth*=i}return a}else throw new Y("Got group of unknown type: '"+t.type+"'")};function Yn(e,t){var r=z(["base"],e,t),n=z(["strut"]);return n.style.height=V(r.height+r.depth),r.depth&&(n.style.verticalAlign=V(-r.depth)),r.children.unshift(n),r}function Ua(e,t){var r=null;e.length===1&&e[0].type==="tag"&&(r=e[0].tag,e=e[0].body);var n=He(e,t,"root"),a;n.length===2&&n[1].hasClass("tag")&&(a=n.pop());for(var i=[],u=[],s=0;s0&&(i.push(Yn(u,t)),u=[]),i.push(n[s]));u.length>0&&i.push(Yn(u,t));var c;r?(c=Yn(He(r,t,!0),t),c.classes=["tag"],i.push(c)):a&&i.push(a);var d=z(["katex-html"],i);if(d.setAttribute("aria-hidden","true"),c){var f=c.children[0];f.style.height=V(d.height+d.depth),d.depth&&(f.style.verticalAlign=V(-d.depth))}return d}function so(e){return new Br(e)}class G{constructor(t,r,n){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=t,this.attributes={},this.children=r||[],this.classes=n||[]}setAttribute(t,r){this.attributes[t]=r}getAttribute(t){return this.attributes[t]}toNode(){var t=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&t.setAttribute(r,this.attributes[r]);this.classes.length>0&&(t.className=Jt(this.classes));for(var n=0;n0&&(t+=' class ="'+Ve(Jt(this.classes))+'"'),t+=">";for(var n=0;n",t}toText(){return this.children.map(t=>t.toText()).join("")}}class Me{constructor(t){this.text=void 0,this.text=t}toNode(){return document.createTextNode(this.text)}toMarkup(){return Ve(this.toText())}toText(){return this.text}}class lo{constructor(t){this.width=void 0,this.character=void 0,this.width=t,t>=.05555&&t<=.05556?this.character=" ":t>=.1666&&t<=.1667?this.character=" ":t>=.2222&&t<=.2223?this.character=" ":t>=.2777&&t<=.2778?this.character="  ":t>=-.05556&&t<=-.05555?this.character=" ⁣":t>=-.1667&&t<=-.1666?this.character=" ⁣":t>=-.2223&&t<=-.2222?this.character=" ⁣":t>=-.2778&&t<=-.2777?this.character=" ⁣":this.character=null}toNode(){if(this.character)return document.createTextNode(this.character);var t=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return t.setAttribute("width",V(this.width)),t}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}}var f3=new Set(["\\imath","\\jmath"]),m3=new Set(["mrow","mtable"]),bt=function(t,r,n){return we[r][t]&&we[r][t].replace&&t.charCodeAt(0)!==55349&&!(eo.hasOwnProperty(t)&&n&&(n.fontFamily&&n.fontFamily.slice(4,6)==="tt"||n.font&&n.font.slice(4,6)==="tt"))&&(t=we[r][t].replace),new Me(t)},yi=function(t){return t.length===1?t[0]:new G("mrow",t)},p3={mathit:"italic",boldsymbol:e=>e.type==="textord"?"bold":"bold-italic",mathbf:"bold",mathbb:"double-struck",mathsfit:"sans-serif-italic",mathfrak:"fraktur",mathscr:"script",mathcal:"script",mathsf:"sans-serif",mathtt:"monospace"},vi=(e,t)=>{if(e.mode==="text"){if(t.fontFamily==="texttt")return"monospace";if(t.fontFamily==="textsf")return t.fontShape==="textit"&&t.fontWeight==="textbf"?"sans-serif-bold-italic":t.fontShape==="textit"?"sans-serif-italic":t.fontWeight==="textbf"?"bold-sans-serif":"sans-serif";if(t.fontShape==="textit"&&t.fontWeight==="textbf")return"bold-italic";if(t.fontShape==="textit")return"italic";if(t.fontWeight==="textbf")return"bold"}var r=t.font;if(!r||r==="mathnormal")return null;var n=e.mode,a=p3[r];if(a)return typeof a=="function"?a(e):a;var i=e.text;if(f3.has(i))return null;if(we[n][i]){var u=we[n][i].replace;u&&(i=u)}var s=Ba[r].fontName;return Ei(i,s,n)?Ba[r].variant:null};function ia(e){if(!e)return!1;if(e.type==="mi"&&e.children.length===1){var t=e.children[0];return t instanceof Me&&t.text==="."}else if(e.type==="mo"&&e.children.length===1&&e.getAttribute("separator")==="true"&&e.getAttribute("lspace")==="0em"&&e.getAttribute("rspace")==="0em"){var r=e.children[0];return r instanceof Me&&r.text===","}else return!1}var dt=function(t,r,n){if(t.length===1){var a=Ae(t[0],r);return n&&a instanceof G&&a.type==="mo"&&(a.setAttribute("lspace","0em"),a.setAttribute("rspace","0em")),[a]}for(var i=[],u,s=0;s=1&&(u.type==="mn"||ia(u))){var c=l.children[0];c instanceof G&&c.type==="mn"&&(c.children=[...u.children,...c.children],i.pop())}else if(u.type==="mi"&&u.children.length===1){var d=u.children[0];if(d instanceof Me&&d.text==="̸"&&(l.type==="mo"||l.type==="mi"||l.type==="mn")){var f=l.children[0];f instanceof Me&&f.text.length>0&&(f.text=f.text.slice(0,1)+"̸"+f.text.slice(1),i.pop())}}}i.push(l),u=l}return i},tr=function(t,r,n){return yi(dt(t,r,n))},Ae=function(t,r){if(!t)return new G("mrow");if(i0[t.type])return i0[t.type](t,r);throw new Y("Got group of unknown type: '"+t.type+"'")};function Vu(e,t,r,n,a){var i=dt(e,r),u;i.length===1&&i[0]instanceof G&&m3.has(i[0].type)?u=i[0]:u=new G("mrow",i);var s=new G("annotation",[new Me(t)]);s.setAttribute("encoding","application/x-tex");var l=new G("semantics",[u,s]),c=new G("math",[l]);c.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),n&&c.setAttribute("display","block");var d=a?"katex":"katex-mathml";return z([d],[c])}var g3=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],ju=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],Wu=function(t,r){return r.size<2?t:g3[t-1][r.size-1]};class Bt{constructor(t){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=t.style,this.color=t.color,this.size=t.size||Bt.BASESIZE,this.textSize=t.textSize||this.size,this.phantom=!!t.phantom,this.font=t.font||"",this.fontFamily=t.fontFamily||"",this.fontWeight=t.fontWeight||"",this.fontShape=t.fontShape||"",this.sizeMultiplier=ju[this.size-1],this.maxSize=t.maxSize,this.minRuleThickness=t.minRuleThickness,this._fontMetrics=void 0}extend(t){var r={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};return Object.assign(r,t),new Bt(r)}havingStyle(t){return this.style===t?this:this.extend({style:t,size:Wu(this.textSize,t)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(t){return this.size===t&&this.textSize===t?this:this.extend({style:this.style.text(),size:t,textSize:t,sizeMultiplier:ju[t-1]})}havingBaseStyle(t){t=t||this.style.text();var r=Wu(Bt.BASESIZE,t);return this.size===r&&this.textSize===Bt.BASESIZE&&this.style===t?this:this.extend({style:t,size:r})}havingBaseSizing(){var t;switch(this.style.id){case 4:case 5:t=3;break;case 6:case 7:t=1;break;default:t=6}return this.extend({style:this.style.text(),size:t})}withColor(t){return this.extend({color:t})}withPhantom(){return this.extend({phantom:!0})}withFont(t){return this.extend({font:t})}withTextFontFamily(t){return this.extend({fontFamily:t,font:""})}withTextFontWeight(t){return this.extend({fontWeight:t,font:""})}withTextFontShape(t){return this.extend({fontShape:t,font:""})}sizingClasses(t){return t.size!==this.size?["sizing","reset-size"+t.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==Bt.BASESIZE?["sizing","reset-size"+this.size,"size"+Bt.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=Z4(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}}Bt.BASESIZE=6;var oo=function(t){return new Bt({style:t.displayMode?oe.DISPLAY:oe.TEXT,maxSize:t.maxSize,minRuleThickness:t.minRuleThickness})},co=function(t,r){if(r.displayMode){var n=["katex-display"];r.leqno&&n.push("leqno"),r.fleqn&&n.push("fleqn"),t=z(n,[t])}return t},b3=function(t,r,n){var a=oo(n),i;if(n.output==="mathml")return Vu(t,r,a,n.displayMode,!0);if(n.output==="html"){var u=Ua(t,a);i=z(["katex"],[u])}else{var s=Vu(t,r,a,n.displayMode,!1),l=Ua(t,a);i=z(["katex"],[s,l])}return co(i,n)},E3=function(t,r,n){var a=oo(n),i=Ua(t,a),u=z(["katex"],[i]);return co(u,n)},T3={widehat:"^",widecheck:"ˇ",widetilde:"~",utilde:"~",overleftarrow:"←",underleftarrow:"←",xleftarrow:"←",overrightarrow:"→",underrightarrow:"→",xrightarrow:"→",underbrace:"⏟",overbrace:"⏞",underbracket:"⎵",overbracket:"⎴",overgroup:"⏠",undergroup:"⏡",overleftrightarrow:"↔",underleftrightarrow:"↔",xleftrightarrow:"↔",Overrightarrow:"⇒",xRightarrow:"⇒",overleftharpoon:"↼",xleftharpoonup:"↼",overrightharpoon:"⇀",xrightharpoonup:"⇀",xLeftarrow:"⇐",xLeftrightarrow:"⇔",xhookleftarrow:"↩",xhookrightarrow:"↪",xmapsto:"↦",xrightharpoondown:"⇁",xleftharpoondown:"↽",xrightleftharpoons:"⇌",xleftrightharpoons:"⇋",xtwoheadleftarrow:"↞",xtwoheadrightarrow:"↠",xlongequal:"=",xtofrom:"⇄",xrightleftarrows:"⇄",xrightequilibrium:"⇌",xleftequilibrium:"⇋","\\cdrightarrow":"→","\\cdleftarrow":"←","\\cdlongequal":"="},y0=function(t){var r=new G("mo",[new Me(T3[t.replace(/^\\/,"")])]);return r.setAttribute("stretchy","true"),r},x3={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overbracket:[["leftbracketover","rightbracketover"],1.6,440],underbracket:[["leftbracketunder","rightbracketunder"],1.6,410],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},y3=new Set(["widehat","widecheck","widetilde","utilde"]),v0=function(t,r){function n(){var s=4e5,l=t.label.slice(1);if(y3.has(l)&&"base"in t){var c=t.base.type==="ordgroup"?t.base.body.length:1,d,f,g;if(c>5)l==="widehat"||l==="widecheck"?(d=420,s=2364,g=.42,f=l+"4"):(d=312,s=2340,g=.34,f="tilde4");else{var p=[1,1,2,2,3,3][c];l==="widehat"||l==="widecheck"?(s=[0,1062,2364,2364,2364][p],d=[0,239,300,360,420][p],g=[0,.24,.3,.3,.36,.42][p],f=l+p):(s=[0,600,1033,2339,2340][p],d=[0,260,286,306,312][p],g=[0,.26,.286,.3,.306,.34][p],f="tilde"+p)}var x=new Zt(f),S=new zt([x],{width:"100%",height:V(g),viewBox:"0 0 "+s+" "+d,preserveAspectRatio:"none"});return{span:er([],[S],r),minWidth:0,height:g}}else{var D=[],_=x3[l];if(!_)throw new Error('No SVG data for "'+l+'".');var[N,M,W]=_,j=W/1e3,L=N.length,ee,re;if(L===1){if(_.length!==4)throw new Error('Expected 4-tuple for single-path SVG data "'+l+'".');ee=["hide-tail"],re=[_[3]]}else if(L===2)ee=["halfarrow-left","halfarrow-right"],re=["xMinYMin","xMaxYMin"];else if(L===3)ee=["brace-left","brace-center","brace-right"],re=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support - `+L+" children.");for(var K=0;K0&&(a.style.minWidth=V(i)),a},v3=function(t,r,n,a,i){var u,s=t.height+t.depth+n+a;if(/fbox|color|angl/.test(r)){if(u=z(["stretchy",r],[],i),r==="fbox"){var l=i.color&&i.getColor();l&&(u.style.borderColor=l)}}else{var c=[];/^[bx]cancel$/.test(r)&&c.push(new Da({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(r)&&c.push(new Da({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var d=new zt(c,{width:"100%",height:V(s)});u=er([],[d],i)}return u.height=s,u.style.height=V(s),u},A3={bin:1,close:1,inner:1,open:1,punct:1,rel:1},k3={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1};function S3(e){return e in A3}function ce(e,t){if(!e||e.type!==t)throw new Error("Expected node of type "+t+", but got "+(e?"node of type "+e.type:String(e)));return e}function A0(e){var t=k0(e);if(!t)throw new Error("Expected node of symbol group type, but got "+(e?"node of type "+e.type:String(e)));return t}function k0(e){return e&&(e.type==="atom"||k3.hasOwnProperty(e.type))?e:null}var ho=e=>{if(e instanceof ct)return e;if(K4(e)&&e.children.length===1)return ho(e.children[0])},Ai=(e,t)=>{var r,n,a;e&&e.type==="supsub"?(n=ce(e.base,"accent"),r=n.base,e.base=r,a=Q4(Te(e,t)),e.base=n):(n=ce(e,"accent"),r=n.base);var i=Te(r,t.havingCrampedStyle()),u=n.isShifty&&qt(r),s=0;if(u){var l,c;s=(l=(c=ho(i))==null?void 0:c.skew)!=null?l:0}var d=n.label==="\\c",f=d?i.height+i.depth:Math.min(i.height,t.fontMetrics().xHeight),g;if(n.isStretchy)g=v0(n,t),g=Ee({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"elem",elem:g,wrapperClasses:["svg-align"],wrapperStyle:s>0?{width:"calc(100% - "+V(2*s)+")",marginLeft:V(2*s)}:void 0}]});else{var p,x;n.label==="\\vec"?(p=ao("vec",t),x=no.vec[1]):(p=x0({mode:n.mode,text:n.label},t,"textord"),p=$4(p),p.italic=0,x=p.width,d&&(f+=p.depth)),g=z(["accent-body"],[p]);var S=n.label==="\\textcircled";S&&(g.classes.push("accent-full"),f=i.height);var D=s;S||(D-=x/2),g.style.left=V(D),n.label==="\\textcircled"&&(g.style.top=".2em"),g=Ee({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:-f},{type:"elem",elem:g}]})}var _=z(["mord","accent"],[g],t);return a?(a.children[0]=_,a.height=Math.max(_.height,a.height),a.classes[0]="mord",a):_},fo=(e,t)=>{var r=e.isStretchy?y0(e.label):new G("mo",[bt(e.label,e.mode)]),n=new G("mover",[Ae(e.base,t),r]);return n.setAttribute("accent","true"),n},w3=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(e=>"\\"+e).join("|"));Z({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:(e,t)=>{var r=u0(t[0]),n=!w3.test(e.funcName),a=!n||e.funcName==="\\widehat"||e.funcName==="\\widetilde"||e.funcName==="\\widecheck";return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:n,isShifty:a,base:r}},htmlBuilder:Ai,mathmlBuilder:fo});Z({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(e,t)=>{var r=t[0],n=e.parser.mode;return n==="math"&&(e.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+e.funcName+" works only in text mode"),n="text"),{type:"accent",mode:n,label:e.funcName,isStretchy:!1,isShifty:!0,base:r}},htmlBuilder:Ai,mathmlBuilder:fo});Z({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=t[0];return{type:"accentUnder",mode:r.mode,label:n,base:a}},htmlBuilder:(e,t)=>{var r=Te(e.base,t),n=v0(e,t),a=e.label==="\\utilde"?.12:0,i=Ee({positionType:"top",positionData:r.height,children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:a},{type:"elem",elem:r}]});return z(["mord","accentunder"],[i],t)},mathmlBuilder:(e,t)=>{var r=y0(e.label),n=new G("munder",[Ae(e.base,t),r]);return n.setAttribute("accentunder","true"),n}});var Gn=e=>{var t=new G("mpadded",e?[e]:[]);return t.setAttribute("width","+0.6em"),t.setAttribute("lspace","0.3em"),t};Z({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){var{parser:n,funcName:a}=e;return{type:"xArrow",mode:n.mode,label:a,body:t[0],below:r[0]}},htmlBuilder(e,t){var r=t.style,n=t.havingStyle(r.sup()),a=Lr(Te(e.body,n,t),t),i=e.label.slice(0,2)==="\\x"?"x":"cd";a.classes.push(i+"-arrow-pad");var u;e.below&&(n=t.havingStyle(r.sub()),u=Lr(Te(e.below,n,t),t),u.classes.push(i+"-arrow-pad"));var s=v0(e,t),l=-t.fontMetrics().axisHeight+.5*s.height,c=-t.fontMetrics().axisHeight-.5*s.height-.111;(a.depth>.25||e.label==="\\xleftequilibrium")&&(c-=a.depth);var d;if(u){var f=-t.fontMetrics().axisHeight+u.height+.5*s.height+.111;d=Ee({positionType:"individualShift",children:[{type:"elem",elem:a,shift:c},{type:"elem",elem:s,shift:l,wrapperClasses:["svg-align"]},{type:"elem",elem:u,shift:f}]})}else d=Ee({positionType:"individualShift",children:[{type:"elem",elem:a,shift:c},{type:"elem",elem:s,shift:l,wrapperClasses:["svg-align"]}]});return z(["mrel","x-arrow"],[d],t)},mathmlBuilder(e,t){var r=y0(e.label);r.setAttribute("minsize",e.label.charAt(0)==="x"?"1.75em":"3.0em");var n;if(e.body){var a=Gn(Ae(e.body,t));if(e.below){var i=Gn(Ae(e.below,t));n=new G("munderover",[r,i,a])}else n=new G("mover",[r,a])}else if(e.below){var u=Gn(Ae(e.below,t));n=new G("munder",[r,u])}else n=Gn(),n=new G("mover",[r,n]);return n}});function mo(e,t){var r=He(e.body,t,!0);return z([e.mclass],r,t)}function po(e,t){var r,n=dt(e.body,t);return e.mclass==="minner"?r=new G("mpadded",n):e.mclass==="mord"?e.isCharacterBox?(r=n[0],r.type="mi"):r=new G("mi",n):(e.isCharacterBox?(r=n[0],r.type="mo"):r=new G("mo",n),e.mclass==="mbin"?(r.attributes.lspace="0.22em",r.attributes.rspace="0.22em"):e.mclass==="mpunct"?(r.attributes.lspace="0em",r.attributes.rspace="0.17em"):e.mclass==="mopen"||e.mclass==="mclose"?(r.attributes.lspace="0em",r.attributes.rspace="0em"):e.mclass==="minner"&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em")),r}Z({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(e,t){var{parser:r,funcName:n}=e,a=t[0];return{type:"mclass",mode:r.mode,mclass:"m"+n.slice(5),body:Re(a),isCharacterBox:qt(a)}},htmlBuilder:mo,mathmlBuilder:po});var S0=e=>{var t=e.type==="ordgroup"&&e.body.length?e.body[0]:e;return t.type==="atom"&&(t.family==="bin"||t.family==="rel")?"m"+t.family:"mord"};Z({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(e,t){var{parser:r}=e;return{type:"mclass",mode:r.mode,mclass:S0(t[0]),body:Re(t[1]),isCharacterBox:qt(t[1])}}});Z({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(e,t){var{parser:r,funcName:n}=e,a=t[1],i=t[0],u;n!=="\\stackrel"?u=S0(a):u="mrel";var s={type:"op",mode:a.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:n!=="\\stackrel",body:Re(a)},l={type:"supsub",mode:i.mode,base:s,sup:n==="\\underset"?null:i,sub:n==="\\underset"?i:null};return{type:"mclass",mode:r.mode,mclass:u,body:[l],isCharacterBox:qt(l)}},htmlBuilder:mo,mathmlBuilder:po});Z({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"pmb",mode:r.mode,mclass:S0(t[0]),body:Re(t[0])}},htmlBuilder(e,t){var r=He(e.body,t,!0),n=z([e.mclass],r,t);return n.style.textShadow="0.02em 0.01em 0.04px",n},mathmlBuilder(e,t){var r=dt(e.body,t),n=new G("mstyle",r);return n.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),n}});var C3={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},Xu=()=>({type:"styling",body:[],mode:"math",style:"display",resetFont:!0}),$u=e=>e.type==="textord"&&e.text==="@",_3=(e,t)=>(e.type==="mathord"||e.type==="atom")&&e.text===t;function I3(e,t,r){var n=C3[e];switch(n){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(n,[t[0]],[t[1]]);case"\\uparrow":case"\\downarrow":{var a=r.callFunction("\\\\cdleft",[t[0]],[]),i={type:"atom",text:n,mode:"math",family:"rel"},u=r.callFunction("\\Big",[i],[]),s=r.callFunction("\\\\cdright",[t[1]],[]),l={type:"ordgroup",mode:"math",body:[a,u,s]};return r.callFunction("\\\\cdparent",[l],[])}case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var c={type:"textord",text:"\\Vert",mode:"math"};return r.callFunction("\\Big",[c],[])}default:return{type:"textord",text:" ",mode:"math"}}}function N3(e){var t=[];for(e.gullet.beginGroup(),e.gullet.macros.set("\\cr","\\\\\\relax"),e.gullet.beginGroup();;){t.push(e.parseExpression(!1,"\\\\")),e.gullet.endGroup(),e.gullet.beginGroup();var r=e.fetch().text;if(r==="&"||r==="\\\\")e.consume();else if(r==="\\end"){t[t.length-1].length===0&&t.pop();break}else throw new Y("Expected \\\\ or \\cr or \\end",e.nextToken)}for(var n=[],a=[n],i=0;iAV".includes(c))for(var f=0;f<2;f++){for(var g=!0,p=l+1;pAV=|." after @',u[l]);var x=I3(c,d,e),S={type:"styling",body:[x],mode:"math",style:"display",resetFont:!0};n.push(S),s=Xu()}i%2===0?n.push(s):n.shift(),n=[],a.push(n)}e.gullet.endGroup(),e.gullet.endGroup();var D=new Array(a[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25});return{type:"array",mode:"math",body:a,arraystretch:1,addJot:!0,rowGaps:[null],cols:D,colSeparationType:"CD",hLinesBeforeRow:new Array(a.length+1).fill([])}}Z({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:n}=e;return{type:"cdlabel",mode:r.mode,side:n.slice(4),label:t[0]}},htmlBuilder(e,t){var r=t.havingStyle(t.style.sup()),n=Lr(Te(e.label,r,t),t);return n.classes.push("cd-label-"+e.side),n.style.bottom=V(.8-n.depth),n.height=0,n.depth=0,n},mathmlBuilder(e,t){var r=new G("mrow",[Ae(e.label,t)]);return r=new G("mpadded",[r]),r.setAttribute("width","0"),e.side==="left"&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),r=new G("mstyle",[r]),r.setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}});Z({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(e,t){var{parser:r}=e;return{type:"cdlabelparent",mode:r.mode,fragment:t[0]}},htmlBuilder(e,t){var r=Lr(Te(e.fragment,t),t);return r.classes.push("cd-vert-arrow"),r},mathmlBuilder(e,t){return new G("mrow",[Ae(e.fragment,t)])}});Z({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(e,t){for(var{parser:r}=e,n=ce(t[0],"ordgroup"),a=n.body,i="",u=0;u=1114111)throw new Y("\\@char with invalid code point "+i);return l<=65535?c=String.fromCharCode(l):(l-=65536,c=String.fromCharCode((l>>10)+55296,(l&1023)+56320)),{type:"textord",mode:r.mode,text:c}}});var go=(e,t)=>{var r=He(e.body,t.withColor(e.color),!1);return Gt(r)},bo=(e,t)=>{var r=dt(e.body,t.withColor(e.color)),n=new G("mstyle",r);return n.setAttribute("mathcolor",e.color),n};Z({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(e,t){var{parser:r}=e,n=ce(t[0],"color-token").color,a=t[1];return{type:"color",mode:r.mode,color:n,body:Re(a)}},htmlBuilder:go,mathmlBuilder:bo});Z({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(e,t){var{parser:r,breakOnTokenText:n}=e,a=ce(t[0],"color-token").color;r.gullet.macros.set("\\current@color",a);var i=r.parseExpression(!0,n);return{type:"color",mode:r.mode,color:a,body:i}},htmlBuilder:go,mathmlBuilder:bo});Z({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(e,t,r){var{parser:n}=e,a=n.gullet.future().text==="["?n.parseSizeGroup(!0):null,i=!n.settings.displayMode||!n.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:n.mode,newLine:i,size:a&&ce(a,"size").value}},htmlBuilder(e,t){var r=z(["mspace"],[],t);return e.newLine&&(r.classes.push("newline"),e.size&&(r.style.marginTop=V(Ie(e.size,t)))),r},mathmlBuilder(e,t){var r=new G("mspace");return e.newLine&&(r.setAttribute("linebreak","newline"),e.size&&r.setAttribute("height",V(Ie(e.size,t)))),r}});var qa={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},Eo=e=>{var t=e.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(t))throw new Y("Expected a control sequence",e);return t},D3=e=>{var t=e.gullet.popToken();return t.text==="="&&(t=e.gullet.popToken(),t.text===" "&&(t=e.gullet.popToken())),t},To=(e,t,r,n)=>{var a=e.gullet.macros.get(r.text);a==null&&(r.noexpand=!0,a={tokens:[r],numArgs:0,unexpandable:!e.gullet.isExpandable(r.text)}),e.gullet.macros.set(t,a,n)};Z({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(e){var{parser:t,funcName:r}=e;t.consumeSpaces();var n=t.fetch();if(qa[n.text])return(r==="\\global"||r==="\\\\globallong")&&(n.text=qa[n.text]),ce(t.parseFunction(),"internal");throw new Y("Invalid token after macro prefix",n)}});Z({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,n=t.gullet.popToken(),a=n.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(a))throw new Y("Expected a control sequence",n);for(var i=0,u,s=[[]];t.gullet.future().text!=="{";)if(n=t.gullet.popToken(),n.text==="#"){if(t.gullet.future().text==="{"){u=t.gullet.future(),s[i].push("{");break}if(n=t.gullet.popToken(),!/^[1-9]$/.test(n.text))throw new Y('Invalid argument number "'+n.text+'"');if(parseInt(n.text)!==i+1)throw new Y('Argument number "'+n.text+'" out of order');i++,s.push([])}else{if(n.text==="EOF")throw new Y("Expected a macro definition");s[i].push(n.text)}var{tokens:l}=t.gullet.consumeArg();return u&&l.unshift(u),(r==="\\edef"||r==="\\xdef")&&(l=t.gullet.expandTokens(l),l.reverse()),t.gullet.macros.set(a,{tokens:l,numArgs:i,delimiters:s},r===qa[r]),{type:"internal",mode:t.mode}}});Z({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,n=Eo(t.gullet.popToken());t.gullet.consumeSpaces();var a=D3(t);return To(t,n,a,r==="\\\\globallet"),{type:"internal",mode:t.mode}}});Z({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,n=Eo(t.gullet.popToken()),a=t.gullet.popToken(),i=t.gullet.popToken();return To(t,n,i,r==="\\\\globalfuture"),t.gullet.pushToken(i),t.gullet.pushToken(a),{type:"internal",mode:t.mode}}});var tn=function(t,r,n){var a=we.math[t]&&we.math[t].replace,i=Ei(a||t,r,n);if(!i)throw new Error("Unsupported symbol "+t+" and font size "+r+".");return i},ki=function(t,r,n,a){var i=n.havingBaseStyle(r),u=z(a.concat(i.sizingClasses(n)),[t],n),s=i.sizeMultiplier/n.sizeMultiplier;return u.height*=s,u.depth*=s,u.maxFontSize=i.sizeMultiplier,u},xo=function(t,r,n){var a=r.havingBaseStyle(n),i=(1-r.sizeMultiplier/a.sizeMultiplier)*r.fontMetrics().axisHeight;t.classes.push("delimcenter"),t.style.top=V(i),t.height-=i,t.depth+=i},O3=function(t,r,n,a,i,u){var s=Qe(t,"Main-Regular",i,a),l=ki(s,r,a,u);return xo(l,a,r),l},L3=function(t,r,n,a){return Qe(t,"Size"+r+"-Regular",n,a)},yo=function(t,r,n,a,i,u){var s=L3(t,r,i,a),l=ki(z(["delimsizing","size"+r],[s],a),oe.TEXT,a,u);return n&&xo(l,a,oe.TEXT),l},ua=function(t,r,n){var a;r==="Size1-Regular"?a="delim-size1":a="delim-size4";var i=z(["delimsizinginner",a],[z([],[Qe(t,r,n)])]);return{type:"elem",elem:i}},sa=function(t,r,n){var a=wt["Size4-Regular"][t.charCodeAt(0)]?wt["Size4-Regular"][t.charCodeAt(0)][4]:wt["Size1-Regular"][t.charCodeAt(0)][4],i=new Zt("inner",q4(t,Math.round(1e3*r))),u=new zt([i],{width:V(a),height:V(r),style:"width:"+V(a),viewBox:"0 0 "+1e3*a+" "+Math.round(1e3*r),preserveAspectRatio:"xMinYMin"}),s=er([],[u],n);return s.height=r,s.style.height=V(r),s.style.width=V(a),{type:"elem",elem:s}},Ya=.008,Vn={type:"kern",size:-1*Ya},R3=new Set(["|","\\lvert","\\rvert","\\vert"]),M3=new Set(["\\|","\\lVert","\\rVert","\\Vert"]),vo=function(t,r,n,a,i,u){var s,l,c,d,f="",g=0;s=c=d=t,l=null;var p="Size1-Regular";t==="\\uparrow"?c=d="⏐":t==="\\Uparrow"?c=d="‖":t==="\\downarrow"?s=c="⏐":t==="\\Downarrow"?s=c="‖":t==="\\updownarrow"?(s="\\uparrow",c="⏐",d="\\downarrow"):t==="\\Updownarrow"?(s="\\Uparrow",c="‖",d="\\Downarrow"):R3.has(t)?(c="∣",f="vert",g=333):M3.has(t)?(c="∥",f="doublevert",g=556):t==="["||t==="\\lbrack"?(s="⎡",c="⎢",d="⎣",p="Size4-Regular",f="lbrack",g=667):t==="]"||t==="\\rbrack"?(s="⎤",c="⎥",d="⎦",p="Size4-Regular",f="rbrack",g=667):t==="\\lfloor"||t==="⌊"?(c=s="⎢",d="⎣",p="Size4-Regular",f="lfloor",g=667):t==="\\lceil"||t==="⌈"?(s="⎡",c=d="⎢",p="Size4-Regular",f="lceil",g=667):t==="\\rfloor"||t==="⌋"?(c=s="⎥",d="⎦",p="Size4-Regular",f="rfloor",g=667):t==="\\rceil"||t==="⌉"?(s="⎤",c=d="⎥",p="Size4-Regular",f="rceil",g=667):t==="("||t==="\\lparen"?(s="⎛",c="⎜",d="⎝",p="Size4-Regular",f="lparen",g=875):t===")"||t==="\\rparen"?(s="⎞",c="⎟",d="⎠",p="Size4-Regular",f="rparen",g=875):t==="\\{"||t==="\\lbrace"?(s="⎧",l="⎨",d="⎩",c="⎪",p="Size4-Regular"):t==="\\}"||t==="\\rbrace"?(s="⎫",l="⎬",d="⎭",c="⎪",p="Size4-Regular"):t==="\\lgroup"||t==="⟮"?(s="⎧",d="⎩",c="⎪",p="Size4-Regular"):t==="\\rgroup"||t==="⟯"?(s="⎫",d="⎭",c="⎪",p="Size4-Regular"):t==="\\lmoustache"||t==="⎰"?(s="⎧",d="⎭",c="⎪",p="Size4-Regular"):(t==="\\rmoustache"||t==="⎱")&&(s="⎫",d="⎩",c="⎪",p="Size4-Regular");var x=tn(s,p,i),S=x.height+x.depth,D=tn(c,p,i),_=D.height+D.depth,N=tn(d,p,i),M=N.height+N.depth,W=0,j=1;if(l!==null){var L=tn(l,p,i);W=L.height+L.depth,j=2}var ee=S+M+W,re=Math.max(0,Math.ceil((r-ee)/(j*_))),K=ee+re*j*_,R=a.fontMetrics().axisHeight;n&&(R*=a.sizeMultiplier);var J=K/2-R,Q=[];if(f.length>0){var be=K-S-M,ne=Math.round(K*1e3),X=Y4(f,Math.round(be*1e3)),me=new Zt(f,X),ke=V(g/1e3),ze=V(ne/1e3),at=new zt([me],{width:ke,height:ze,viewBox:"0 0 "+g+" "+ne}),w=er([],[at],a);w.height=ne/1e3,w.style.width=ke,w.style.height=ze,Q.push({type:"elem",elem:w})}else{if(Q.push(ua(d,p,i)),Q.push(Vn),l===null){var Oe=K-S-M+2*Ya;Q.push(sa(c,Oe,a))}else{var Xe=(K-S-M-W)/2+2*Ya;Q.push(sa(c,Xe,a)),Q.push(Vn),Q.push(ua(l,p,i)),Q.push(Vn),Q.push(sa(c,Xe,a))}Q.push(Vn),Q.push(ua(s,p,i))}var C=a.havingBaseStyle(oe.TEXT),Ye=Ee({positionType:"bottom",positionData:J,children:Q});return ki(z(["delimsizing","mult"],[Ye],C),oe.TEXT,a,u)},la=80,oa=.08,ca=function(t,r,n,a,i){var u=U4(t,a,n),s=new Zt(t,u),l=new zt([s],{width:"400em",height:V(r),viewBox:"0 0 400000 "+n,preserveAspectRatio:"xMinYMin slice"});return er(["hide-tail"],[l],i)},P3=function(t,r){var n=r.havingBaseSizing(),a=Co("\\surd",t*n.sizeMultiplier,wo,n),i=n.sizeMultiplier,u=Math.max(0,r.minRuleThickness-r.fontMetrics().sqrtRuleThickness),s,l,c,d,f;return a.type==="small"?(d=1e3+1e3*u+la,t<1?i=1:t<1.4&&(i=.7),l=(1+u+oa)/i,c=(1+u)/i,s=ca("sqrtMain",l,d,u,r),s.style.minWidth="0.853em",f=.833/i):a.type==="large"?(d=(1e3+la)*sn[a.size],c=(sn[a.size]+u)/i,l=(sn[a.size]+u+oa)/i,s=ca("sqrtSize"+a.size,l,d,u,r),s.style.minWidth="1.02em",f=1/i):(l=t+u+oa,c=t+u,d=Math.floor(1e3*t+u)+la,s=ca("sqrtTall",l,d,u,r),s.style.minWidth="0.742em",f=1.056),s.height=c,s.style.height=V(l),{span:s,advanceWidth:f,ruleWidth:(r.fontMetrics().sqrtRuleThickness+u)*i}},Ao=new Set(["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","\\surd"]),B3=new Set(["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱"]),ko=new Set(["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"]),sn=[0,1.2,1.8,2.4,3],So=function(t,r,n,a,i){if(t==="<"||t==="\\lt"||t==="⟨"?t="\\langle":(t===">"||t==="\\gt"||t==="⟩")&&(t="\\rangle"),Ao.has(t)||ko.has(t))return yo(t,r,!1,n,a,i);if(B3.has(t))return vo(t,sn[r],!1,n,a,i);throw new Y("Illegal delimiter: '"+t+"'")},F3=[{type:"small",style:oe.SCRIPTSCRIPT},{type:"small",style:oe.SCRIPT},{type:"small",style:oe.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],H3=[{type:"small",style:oe.SCRIPTSCRIPT},{type:"small",style:oe.SCRIPT},{type:"small",style:oe.TEXT},{type:"stack"}],wo=[{type:"small",style:oe.SCRIPTSCRIPT},{type:"small",style:oe.SCRIPT},{type:"small",style:oe.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],z3=function(t){if(t.type==="small")return"Main-Regular";if(t.type==="large")return"Size"+t.size+"-Regular";if(t.type==="stack")return"Size4-Regular";var r=t.type;throw new Error("Add support for delim type '"+r+"' here.")},Co=function(t,r,n,a){for(var i=Math.min(2,3-a.style.size),u=i;ur)return s}return n[n.length-1]},Ga=function(t,r,n,a,i,u){t==="<"||t==="\\lt"||t==="⟨"?t="\\langle":(t===">"||t==="\\gt"||t==="⟩")&&(t="\\rangle");var s;ko.has(t)?s=F3:Ao.has(t)?s=wo:s=H3;var l=Co(t,r,s,a);return l.type==="small"?O3(t,l.style,n,a,i,u):l.type==="large"?yo(t,l.size,n,a,i,u):vo(t,r,n,a,i,u)},ha=function(t,r,n,a,i,u){var s=a.fontMetrics().axisHeight*a.sizeMultiplier,l=901,c=5/a.fontMetrics().ptPerEm,d=Math.max(r-s,n+s),f=Math.max(d/500*l,2*d-c);return Ga(t,f,!0,a,i,u)},Qu={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},U3=new Set(["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","<",">","\\langle","⟨","\\rangle","⟩","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."]);function Ku(e){return"isMiddle"in e}function w0(e,t){var r=k0(e);if(r&&U3.has(r.text))return r;throw r?new Y("Invalid delimiter '"+r.text+"' after '"+t.funcName+"'",e):new Y("Invalid delimiter type '"+e.type+"'",e)}Z({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:(e,t)=>{var r=w0(t[0],e);return{type:"delimsizing",mode:e.parser.mode,size:Qu[e.funcName].size,mclass:Qu[e.funcName].mclass,delim:r.text}},htmlBuilder:(e,t)=>e.delim==="."?z([e.mclass]):So(e.delim,e.size,t,e.mode,[e.mclass]),mathmlBuilder:e=>{var t=[];e.delim!=="."&&t.push(bt(e.delim,e.mode));var r=new G("mo",t);e.mclass==="mopen"||e.mclass==="mclose"?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r.setAttribute("stretchy","true");var n=V(sn[e.size]);return r.setAttribute("minsize",n),r.setAttribute("maxsize",n),r}});function Ju(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}Z({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=e.parser.gullet.macros.get("\\current@color");if(r&&typeof r!="string")throw new Y("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:e.parser.mode,delim:w0(t[0],e).text,color:r}}});Z({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=w0(t[0],e),n=e.parser;++n.leftrightDepth;var a=n.parseExpression(!1);--n.leftrightDepth,n.expect("\\right",!1);var i=ce(n.parseFunction(),"leftright-right");return{type:"leftright",mode:n.mode,body:a,left:r.text,right:i.delim,rightColor:i.color}},htmlBuilder:(e,t)=>{Ju(e);for(var r=He(e.body,t,!0,["mopen","mclose"]),n=0,a=0,i=!1,u=0;u{Ju(e);var r=dt(e.body,t);if(e.left!=="."){var n=new G("mo",[bt(e.left,e.mode)]);n.setAttribute("fence","true"),r.unshift(n)}if(e.right!=="."){var a=new G("mo",[bt(e.right,e.mode)]);a.setAttribute("fence","true"),e.rightColor&&a.setAttribute("mathcolor",e.rightColor),r.push(a)}return yi(r)}});Z({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=w0(t[0],e);if(!e.parser.leftrightDepth)throw new Y("\\middle without preceding \\left",r);return{type:"middle",mode:e.parser.mode,delim:r.text}},htmlBuilder:(e,t)=>{var r;return e.delim==="."?r=bn(t,[]):(r=So(e.delim,1,t,e.mode,[]),r.isMiddle={delim:e.delim,options:t}),r},mathmlBuilder:(e,t)=>{var r=e.delim==="\\vert"||e.delim==="|"?bt("|","text"):bt(e.delim,e.mode),n=new G("mo",[r]);return n.setAttribute("fence","true"),n.setAttribute("lspace","0.05em"),n.setAttribute("rspace","0.05em"),n}});var C0=(e,t)=>{var r=Lr(Te(e.body,t),t),n=e.label.slice(1),a=t.sizeMultiplier,i,u,s=qt(e.body);if(n==="sout")i=z(["stretchy","sout"]),i.height=t.fontMetrics().defaultRuleThickness/a,u=-.5*t.fontMetrics().xHeight;else if(n==="phase"){var l=Ie({number:.6,unit:"pt"},t),c=Ie({number:.35,unit:"ex"},t),d=t.havingBaseSizing();a=a/d.sizeMultiplier;var f=r.height+r.depth+l+c;r.style.paddingLeft=V(f/2+l);var g=Math.floor(1e3*f*a),p=H4(g),x=new zt([new Zt("phase",p)],{width:"400em",height:V(g/1e3),viewBox:"0 0 400000 "+g,preserveAspectRatio:"xMinYMin slice"});i=er(["hide-tail"],[x],t),i.style.height=V(f),u=r.depth+l+c}else{/cancel/.test(n)?s||r.classes.push("cancel-pad"):n==="angl"?r.classes.push("anglpad"):r.classes.push("boxpad");var S,D,_=0;/box/.test(n)?(_=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness),S=t.fontMetrics().fboxsep+(n==="colorbox"?0:_),D=S):n==="angl"?(_=Math.max(t.fontMetrics().defaultRuleThickness,t.minRuleThickness),S=4*_,D=Math.max(0,.25-r.depth)):(S=s?.2:0,D=S),i=v3(r,n,S,D,t),/fbox|boxed|fcolorbox/.test(n)?(i.style.borderStyle="solid",i.style.borderWidth=V(_)):n==="angl"&&_!==.049&&(i.style.borderTopWidth=V(_),i.style.borderRightWidth=V(_)),u=r.depth+D,e.backgroundColor&&(i.style.backgroundColor=e.backgroundColor,e.borderColor&&(i.style.borderColor=e.borderColor))}var N;if(e.backgroundColor)N=Ee({positionType:"individualShift",children:[{type:"elem",elem:i,shift:u},{type:"elem",elem:r,shift:0}]});else{var M=/cancel|phase/.test(n)?["svg-align"]:[];N=Ee({positionType:"individualShift",children:[{type:"elem",elem:r,shift:0},{type:"elem",elem:i,shift:u,wrapperClasses:M}]})}return/cancel/.test(n)&&(N.height=r.height,N.depth=r.depth),/cancel/.test(n)&&!s?z(["mord","cancel-lap"],[N],t):z(["mord"],[N],t)},_0=(e,t)=>{var r,n=new G(e.label.includes("colorbox")?"mpadded":"menclose",[Ae(e.body,t)]);switch(e.label){case"\\cancel":n.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":n.setAttribute("notation","downdiagonalstrike");break;case"\\phase":n.setAttribute("notation","phasorangle");break;case"\\sout":n.setAttribute("notation","horizontalstrike");break;case"\\fbox":n.setAttribute("notation","box");break;case"\\angl":n.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(r=t.fontMetrics().fboxsep*t.fontMetrics().ptPerEm,n.setAttribute("width","+"+2*r+"pt"),n.setAttribute("height","+"+2*r+"pt"),n.setAttribute("lspace",r+"pt"),n.setAttribute("voffset",r+"pt"),e.label==="\\fcolorbox"){var a=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness);n.setAttribute("style","border: "+V(a)+" solid "+e.borderColor)}break;case"\\xcancel":n.setAttribute("notation","updiagonalstrike downdiagonalstrike");break}return e.backgroundColor&&n.setAttribute("mathbackground",e.backgroundColor),n};Z({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","hbox"]},handler(e,t,r){var{parser:n,funcName:a}=e,i=ce(t[0],"color-token").color,u=t[1];return{type:"enclose",mode:n.mode,label:a,backgroundColor:i,body:u}},htmlBuilder:C0,mathmlBuilder:_0});Z({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","hbox"]},handler(e,t,r){var{parser:n,funcName:a}=e,i=ce(t[0],"color-token").color,u=ce(t[1],"color-token").color,s=t[2];return{type:"enclose",mode:n.mode,label:a,backgroundColor:u,borderColor:i,body:s}},htmlBuilder:C0,mathmlBuilder:_0});Z({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\fbox",body:t[0]}}});Z({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\phase"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:n}=e,a=t[0];return{type:"enclose",mode:r.mode,label:n,body:a}},htmlBuilder:C0,mathmlBuilder:_0});Z({type:"enclose",names:["\\sout"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r,funcName:n}=e;r.mode==="math"&&r.settings.reportNonstrict("mathVsSout","LaTeX's \\sout works only in text mode");var a=t[0];return{type:"enclose",mode:r.mode,label:n,body:a}},htmlBuilder:C0,mathmlBuilder:_0});Z({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(e,t){var{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\angl",body:t[0]}}});var _o={};function Nt(e){for(var{type:t,names:r,props:n,handler:a,htmlBuilder:i,mathmlBuilder:u}=e,s={type:t,numArgs:n.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:a},l=0;l{var t=e.parser.settings;if(!t.displayMode)throw new Y("{"+e.envName+"} can be used only in display mode.")},q3=new Set(["gather","gather*"]);function Si(e){if(!e.includes("ed"))return!e.includes("*")}function ar(e,t,r){var{hskipBeforeAndAfter:n,addJot:a,cols:i,arraystretch:u,colSeparationType:s,autoTag:l,singleRow:c,emptySingleRow:d,maxNumCols:f,leqno:g}=t;if(e.gullet.beginGroup(),c||e.gullet.macros.set("\\cr","\\\\\\relax"),!u){var p=e.gullet.expandMacroAsText("\\arraystretch");if(p==null)u=1;else if(u=parseFloat(p),!u||u<0)throw new Y("Invalid \\arraystretch: "+p)}e.gullet.beginGroup();var x=[],S=[x],D=[],_=[],N=l!=null?[]:void 0;function M(){l&&e.gullet.macros.set("\\@eqnsw","1",!0)}function W(){N&&(e.gullet.macros.get("\\df@tag")?(N.push(e.subparse([new ot("\\df@tag")])),e.gullet.macros.set("\\df@tag",void 0,!0)):N.push(!!l&&e.gullet.macros.get("\\@eqnsw")==="1"))}for(M(),_.push(Zu(e));;){var j=e.parseExpression(!1,c?"\\end":"\\\\");e.gullet.endGroup(),e.gullet.beginGroup();var L={type:"ordgroup",mode:e.mode,body:j};r&&(L={type:"styling",mode:e.mode,style:r,resetFont:!0,body:[L]}),x.push(L);var ee=e.fetch().text;if(ee==="&"){if(f&&x.length===f){if(c||s)throw new Y("Too many tab characters: &",e.nextToken);e.settings.reportNonstrict("textEnv","Too few columns specified in the {array} column argument.")}e.consume()}else if(ee==="\\end"){W(),x.length===1&&L.type==="styling"&&L.body.length===1&&L.body[0].type==="ordgroup"&&L.body[0].body.length===0&&(S.length>1||!d)&&S.pop(),_.length0&&(M+=.25),c.push({pos:M,isDashed:ue[he]})}for(W(u[0]),n=0;n0&&(J+=N,eeue))for(n=0;n=s)){var it=void 0;if(a>0||t.hskipBeforeAndAfter){var Lt,ir;it=(Lt=(ir=C)==null?void 0:ir.pregap)!=null?Lt:g,it!==0&&(X=z(["arraycolsep"],[]),X.style.width=V(it),ne.push(X))}var _n=[];for(n=0;n0){for(var R0=Or("hline",r,d),M0=Or("hdashline",r,d),Vr=[{type:"elem",elem:ur,shift:0}];c.length>0;){var Ln=c.pop(),Rn=Ln.pos-Q;Ln.isDashed?Vr.push({type:"elem",elem:M0,shift:Rn}):Vr.push({type:"elem",elem:R0,shift:Rn})}ur=Ee({positionType:"individualShift",children:Vr})}if(ke.length===0)return z(["mord"],[ur],r);var B=Ee({positionType:"individualShift",children:ke}),$=z(["tag"],[B],r);return Gt([ur,$])},Y3={c:"center ",l:"left ",r:"right "},Ot=function(t,r){for(var n=[],a=new G("mtd",[],["mtr-glue"]),i=new G("mtd",[],["mml-eqn-num"]),u=0;u0){var x=t.cols,S="",D=!1,_=0,N=x.length;x[0].type==="separator"&&(g+="top ",_=1),x[x.length-1].type==="separator"&&(g+="bottom ",N-=1);for(var M=_;M0?"left ":"",g+=K[K.length-1].length>0?"right ":"";for(var R=1;R0&&p&&(D=1),n[x]={type:"align",align:S,pregap:D,postgap:0}}return u.colSeparationType=p?"align":"alignat",u};Nt({type:"array",names:["array","darray"],props:{numArgs:1},handler(e,t){var r=k0(t[0]),n=r?[t[0]]:ce(t[0],"ordgroup").body,a=n.map(function(u){var s=A0(u),l=s.text;if("lcr".includes(l))return{type:"align",align:l};if(l==="|")return{type:"separator",separator:"|"};if(l===":")return{type:"separator",separator:":"};throw new Y("Unknown column alignment: "+l,u)}),i={cols:a,hskipBeforeAndAfter:!0,maxNumCols:a.length};return ar(e.parser,i,wi(e.envName))},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(e){var t={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[e.envName.replace("*","")],r="c",n={hskipBeforeAndAfter:!1,cols:[{type:"align",align:r}]};if(e.envName.charAt(e.envName.length-1)==="*"){var a=e.parser;if(a.consumeSpaces(),a.fetch().text==="["){if(a.consume(),a.consumeSpaces(),r=a.fetch().text,!"lcr".includes(r))throw new Y("Expected l or c or r",a.nextToken);a.consume(),a.consumeSpaces(),a.expect("]"),a.consume(),n.cols=[{type:"align",align:r}]}}var i=ar(e.parser,n,wi(e.envName)),u=Math.max(0,...i.body.map(s=>s.length));return i.cols=new Array(u).fill({type:"align",align:r}),t?{type:"leftright",mode:e.mode,body:[i],left:t[0],right:t[1],rightColor:void 0}:i},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(e){var t={arraystretch:.5},r=ar(e.parser,t,"script");return r.colSeparationType="small",r},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["subarray"],props:{numArgs:1},handler(e,t){var r=k0(t[0]),n=r?[t[0]]:ce(t[0],"ordgroup").body,a=n.map(function(s){var l=A0(s),c=l.text;if("lc".includes(c))return{type:"align",align:c};throw new Y("Unknown column alignment: "+c,s)});if(a.length>1)throw new Y("{subarray} can contain only one column");var i={cols:a,hskipBeforeAndAfter:!1,arraystretch:.5},u=ar(e.parser,i,"script");if(u.body.length>0&&u.body[0].length>1)throw new Y("{subarray} can contain only one column");return u},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(e){var t={arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},r=ar(e.parser,t,wi(e.envName));return{type:"leftright",mode:e.mode,body:[r],left:e.envName.includes("r")?".":"\\{",right:e.envName.includes("r")?"\\}":".",rightColor:void 0}},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:No,htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(e){q3.has(e.envName)&&I0(e);var t={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:Si(e.envName),emptySingleRow:!0,leqno:e.parser.settings.leqno};return ar(e.parser,t,"display")},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:No,htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(e){I0(e);var t={autoTag:Si(e.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:e.parser.settings.leqno};return ar(e.parser,t,"display")},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["CD"],props:{numArgs:0},handler(e){return I0(e),N3(e.parser)},htmlBuilder:Dt,mathmlBuilder:Ot});E("\\nonumber","\\gdef\\@eqnsw{0}");E("\\notag","\\nonumber");Z({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(e,t){throw new Y(e.funcName+" valid only within array environment")}});var es=_o;Z({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(e,t){var{parser:r,funcName:n}=e,a=t[0];if(a.type!=="ordgroup")throw new Y("Invalid environment name",a);for(var i="",u=0;u{var r=e.font,n=t.withFont(r);return Te(e.body,n)},Oo=(e,t)=>{var r=e.font,n=t.withFont(r);return Ae(e.body,n)},ts={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak"};Z({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=u0(t[0]),i=n;return i in ts&&(i=ts[i]),{type:"font",mode:r.mode,font:i.slice(1),body:a}},htmlBuilder:Do,mathmlBuilder:Oo});Z({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:(e,t)=>{var{parser:r}=e,n=t[0];return{type:"mclass",mode:r.mode,mclass:S0(n),body:[{type:"font",mode:r.mode,font:"boldsymbol",body:n}],isCharacterBox:qt(n)}}});Z({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:(e,t)=>{var{parser:r,funcName:n,breakOnTokenText:a}=e,{mode:i}=r,u=r.parseExpression(!0,a);return{type:"font",mode:i,font:"math"+n.slice(1),body:{type:"ordgroup",mode:r.mode,body:u}}},htmlBuilder:Do,mathmlBuilder:Oo});var G3=(e,t)=>{var r=t.style,n=r.fracNum(),a=r.fracDen(),i;i=t.havingStyle(n);var u=Te(e.numer,i,t);if(e.continued){var s=8.5/t.fontMetrics().ptPerEm,l=3.5/t.fontMetrics().ptPerEm;u.height=u.height0?x=3*g:x=7*g,S=t.fontMetrics().denom1):(f>0?(p=t.fontMetrics().num2,x=g):(p=t.fontMetrics().num3,x=3*g),S=t.fontMetrics().denom2);var D;if(d){var N=t.fontMetrics().axisHeight;p-u.depth-(N+.5*f){var r=new G("mfrac",[Ae(e.numer,t),Ae(e.denom,t)]);if(!e.hasBarLine)r.setAttribute("linethickness","0px");else if(e.barSize){var n=Ie(e.barSize,t);r.setAttribute("linethickness",V(n))}if(e.leftDelim!=null||e.rightDelim!=null){var a=[];if(e.leftDelim!=null){var i=new G("mo",[new Me(e.leftDelim.replace("\\",""))]);i.setAttribute("fence","true"),a.push(i)}if(a.push(r),e.rightDelim!=null){var u=new G("mo",[new Me(e.rightDelim.replace("\\",""))]);u.setAttribute("fence","true"),a.push(u)}return yi(a)}return r},Lo=(e,t)=>{if(!t)return e;var r={type:"styling",mode:e.mode,style:t,body:[e]};return r};Z({type:"genfrac",names:["\\cfrac","\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=t[0],i=t[1],u,s=null,l=null;switch(n){case"\\cfrac":case"\\dfrac":case"\\frac":case"\\tfrac":u=!0;break;case"\\\\atopfrac":u=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":u=!1,s="(",l=")";break;case"\\\\bracefrac":u=!1,s="\\{",l="\\}";break;case"\\\\brackfrac":u=!1,s="[",l="]";break;default:throw new Error("Unrecognized genfrac command")}var c=n==="\\cfrac",d=null;return c||n.startsWith("\\d")?d="display":n.startsWith("\\t")&&(d="text"),Lo({type:"genfrac",mode:r.mode,numer:a,denom:i,continued:c,hasBarLine:u,leftDelim:s,rightDelim:l,barSize:null},d)},htmlBuilder:G3,mathmlBuilder:V3});Z({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(e){var{parser:t,funcName:r,token:n}=e,a;switch(r){case"\\over":a="\\frac";break;case"\\choose":a="\\binom";break;case"\\atop":a="\\\\atopfrac";break;case"\\brace":a="\\\\bracefrac";break;case"\\brack":a="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:t.mode,replaceWith:a,token:n}}});var rs=["display","text","script","scriptscript"],ns=function(t){var r=null;return t.length>0&&(r=t,r=r==="."?null:r),r};Z({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(e,t){var{parser:r}=e,n=t[4],a=t[5],i=u0(t[0]),u=i.type==="atom"&&i.family==="open"?ns(i.text):null,s=u0(t[1]),l=s.type==="atom"&&s.family==="close"?ns(s.text):null,c=ce(t[2],"size"),d,f=null;c.isBlank?d=!0:(f=c.value,d=f.number>0);var g=null,p=t[3];if(p.type==="ordgroup"){if(p.body.length>0){var x=ce(p.body[0],"textord");g=rs[Number(x.text)]}}else p=ce(p,"textord"),g=rs[Number(p.text)];return Lo({type:"genfrac",mode:r.mode,numer:n,denom:a,continued:!1,hasBarLine:d,barSize:f,leftDelim:u,rightDelim:l},g)}});Z({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(e,t){var{parser:r,funcName:n,token:a}=e;return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:ce(t[0],"size").value,token:a}}});Z({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=t[0],i=ce(t[1],"infix").size;if(!i)throw new Error("\\\\abovefrac expected size, but got "+String(i));var u=t[2],s=i.number>0;return{type:"genfrac",mode:r.mode,numer:a,denom:u,continued:!1,hasBarLine:s,barSize:i,leftDelim:null,rightDelim:null}}});var Ro=(e,t)=>{var r=t.style,n,a;e.type==="supsub"?(n=e.sup?Te(e.sup,t.havingStyle(r.sup()),t):Te(e.sub,t.havingStyle(r.sub()),t),a=ce(e.base,"horizBrace")):a=ce(e,"horizBrace");var i=Te(a.base,t.havingBaseStyle(oe.DISPLAY)),u=v0(a,t),s;if(a.isOver?s=Ee({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:.1},{type:"elem",elem:u,wrapperClasses:["svg-align"]}]}):s=Ee({positionType:"bottom",positionData:i.depth+.1+u.height,children:[{type:"elem",elem:u,wrapperClasses:["svg-align"]},{type:"kern",size:.1},{type:"elem",elem:i}]}),n){var l=z(["minner",a.isOver?"mover":"munder"],[s],t);a.isOver?s=Ee({positionType:"firstBaseline",children:[{type:"elem",elem:l},{type:"kern",size:.2},{type:"elem",elem:n}]}):s=Ee({positionType:"bottom",positionData:l.depth+.2+n.height+n.depth,children:[{type:"elem",elem:n},{type:"kern",size:.2},{type:"elem",elem:l}]})}return z(["minner",a.isOver?"mover":"munder"],[s],t)},j3=(e,t)=>{var r=y0(e.label);return new G(e.isOver?"mover":"munder",[Ae(e.base,t),r])};Z({type:"horizBrace",names:["\\overbrace","\\underbrace","\\overbracket","\\underbracket"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:n}=e;return{type:"horizBrace",mode:r.mode,label:n,isOver:n.includes("\\over"),base:t[0]}},htmlBuilder:Ro,mathmlBuilder:j3});Z({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,n=t[1],a=ce(t[0],"url").url;return r.settings.isTrusted({command:"\\href",url:a})?{type:"href",mode:r.mode,href:a,body:Re(n)}:r.formatUnsupportedCmd("\\href")},htmlBuilder:(e,t)=>{var r=He(e.body,t,!1);return i3(e.href,[],r,t)},mathmlBuilder:(e,t)=>{var r=tr(e.body,t);return r instanceof G||(r=new G("mrow",[r])),r.setAttribute("href",e.href),r}});Z({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,n=ce(t[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:n}))return r.formatUnsupportedCmd("\\url");for(var a=[],i=0;i{var{parser:r,funcName:n,token:a}=e,i=ce(t[0],"raw").string,u=t[1];r.settings.strict&&r.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var s,l={};switch(n){case"\\htmlClass":l.class=i,s={command:"\\htmlClass",class:i};break;case"\\htmlId":l.id=i,s={command:"\\htmlId",id:i};break;case"\\htmlStyle":l.style=i,s={command:"\\htmlStyle",style:i};break;case"\\htmlData":{for(var c=i.split(","),d=0;d{var r=He(e.body,t,!1),n=["enclosing"];e.attributes.class&&n.push(...e.attributes.class.trim().split(/\s+/));var a=z(n,r,t);for(var i in e.attributes)i!=="class"&&e.attributes.hasOwnProperty(i)&&a.setAttribute(i,e.attributes[i]);return a},mathmlBuilder:(e,t)=>tr(e.body,t)});Z({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInArgument:!0,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e;return{type:"htmlmathml",mode:r.mode,html:Re(t[0]),mathml:Re(t[1])}},htmlBuilder:(e,t)=>{var r=He(e.html,t,!1);return Gt(r)},mathmlBuilder:(e,t)=>tr(e.mathml,t)});var da=function(t){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(t))return{number:+t,unit:"bp"};var r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t);if(!r)throw new Y("Invalid size: '"+t+"' in \\includegraphics");var n={number:+(r[1]+r[2]),unit:r[3]};if(!Ql(n))throw new Y("Invalid unit: '"+n.unit+"' in \\includegraphics.");return n};Z({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:(e,t,r)=>{var{parser:n}=e,a={number:0,unit:"em"},i={number:.9,unit:"em"},u={number:0,unit:"em"},s="";if(r[0])for(var l=ce(r[0],"raw").string,c=l.split(","),d=0;d{var r=Ie(e.height,t),n=0;e.totalheight.number>0&&(n=Ie(e.totalheight,t)-r);var a=0;e.width.number>0&&(a=Ie(e.width,t));var i={height:V(r+n)};a>0&&(i.width=V(a)),n>0&&(i.verticalAlign=V(-n));var u=new W4(e.src,e.alt,i);return u.height=r,u.depth=n,u},mathmlBuilder:(e,t)=>{var r=new G("mglyph",[]);r.setAttribute("alt",e.alt);var n=Ie(e.height,t),a=0;if(e.totalheight.number>0&&(a=Ie(e.totalheight,t)-n,r.setAttribute("valign",V(-a))),r.setAttribute("height",V(n+a)),e.width.number>0){var i=Ie(e.width,t);r.setAttribute("width",V(i))}return r.setAttribute("src",e.src),r}});Z({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(e,t){var{parser:r,funcName:n}=e,a=ce(t[0],"size");if(r.settings.strict){var i=n[1]==="m",u=a.value.unit==="mu";i?(u||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" supports only mu units, "+("not "+a.value.unit+" units")),r.mode!=="math"&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" works only in math mode")):u&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:a.value}},htmlBuilder(e,t){return ro(e.dimension,t)},mathmlBuilder(e,t){var r=Ie(e.dimension,t);return new lo(r)}});Z({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=t[0];return{type:"lap",mode:r.mode,alignment:n.slice(5),body:a}},htmlBuilder:(e,t)=>{var r;e.alignment==="clap"?(r=z([],[Te(e.body,t)]),r=z(["inner"],[r],t)):r=z(["inner"],[Te(e.body,t)]);var n=z(["fix"],[]),a=z([e.alignment],[r,n],t),i=z(["strut"]);return i.style.height=V(a.height+a.depth),a.depth&&(i.style.verticalAlign=V(-a.depth)),a.children.unshift(i),a=z(["thinbox"],[a],t),z(["mord","vbox"],[a],t)},mathmlBuilder:(e,t)=>{var r=new G("mpadded",[Ae(e.body,t)]);if(e.alignment!=="rlap"){var n=e.alignment==="llap"?"-1":"-0.5";r.setAttribute("lspace",n+"width")}return r.setAttribute("width","0px"),r}});Z({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){var{funcName:r,parser:n}=e,a=n.mode;n.switchMode("math");var i=r==="\\("?"\\)":"$",u=n.parseExpression(!1,i);return n.expect(i),n.switchMode(a),{type:"styling",mode:n.mode,style:"text",resetFont:!0,body:u}}});Z({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){throw new Y("Mismatched "+e.funcName)}});var as=(e,t)=>{switch(t.style.size){case oe.DISPLAY.size:return e.display;case oe.TEXT.size:return e.text;case oe.SCRIPT.size:return e.script;case oe.SCRIPTSCRIPT.size:return e.scriptscript;default:return e.text}};Z({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:(e,t)=>{var{parser:r}=e;return{type:"mathchoice",mode:r.mode,display:Re(t[0]),text:Re(t[1]),script:Re(t[2]),scriptscript:Re(t[3])}},htmlBuilder:(e,t)=>{var r=as(e,t),n=He(r,t,!1);return Gt(n)},mathmlBuilder:(e,t)=>{var r=as(e,t);return tr(r,t)}});var Mo=(e,t,r,n,a,i,u)=>{e=z([],[e]);var s=r&&qt(r),l,c;if(t){var d=Te(t,n.havingStyle(a.sup()),n);c={elem:d,kern:Math.max(n.fontMetrics().bigOpSpacing1,n.fontMetrics().bigOpSpacing3-d.depth)}}if(r){var f=Te(r,n.havingStyle(a.sub()),n);l={elem:f,kern:Math.max(n.fontMetrics().bigOpSpacing2,n.fontMetrics().bigOpSpacing4-f.height)}}var g;if(c&&l){var p=n.fontMetrics().bigOpSpacing5+l.elem.height+l.elem.depth+l.kern+e.depth+u;g=Ee({positionType:"bottom",positionData:p,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:l.elem,marginLeft:V(-i)},{type:"kern",size:l.kern},{type:"elem",elem:e},{type:"kern",size:c.kern},{type:"elem",elem:c.elem,marginLeft:V(i)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]})}else if(l){var x=e.height-u;g=Ee({positionType:"top",positionData:x,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:l.elem,marginLeft:V(-i)},{type:"kern",size:l.kern},{type:"elem",elem:e}]})}else if(c){var S=e.depth+u;g=Ee({positionType:"bottom",positionData:S,children:[{type:"elem",elem:e},{type:"kern",size:c.kern},{type:"elem",elem:c.elem,marginLeft:V(i)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]})}else return e;var D=[g];if(l&&i!==0&&!s){var _=z(["mspace"],[],n);_.style.marginRight=V(i),D.unshift(_)}return z(["mop","op-limits"],D,n)},Po=new Set(["\\smallint"]),zr=(e,t)=>{var r,n,a=!1,i;e.type==="supsub"?(r=e.sup,n=e.sub,i=ce(e.base,"op"),a=!0):i=ce(e,"op");var u=t.style,s=!1;u.size===oe.DISPLAY.size&&i.symbol&&!Po.has(i.name)&&(s=!0);var l,c;if(i.symbol){var d=s?"Size2-Regular":"Size1-Regular",f="";if((i.name==="\\oiint"||i.name==="\\oiiint")&&(f=i.name.slice(1),i.name=f==="oiint"?"\\iint":"\\iiint"),l=Qe(i.name,d,"math",t,["mop","op-symbol",s?"large-op":"small-op"]),c=l.italic,f.length>0){var g=ao(f+"Size"+(s?"2":"1"),t);l=Ee({positionType:"individualShift",children:[{type:"elem",elem:l,shift:0},{type:"elem",elem:g,shift:s?.08:0}]}),i.name="\\"+f,l.classes.unshift("mop"),l.italic=c}}else if(i.body){var p=He(i.body,t,!0);p.length===1&&p[0]instanceof ct?(l=p[0],l.classes[0]="mop"):l=z(["mop"],p,t)}else{for(var x=[],S=1;S{var r;if(e.symbol)r=new G("mo",[bt(e.name,e.mode)]),Po.has(e.name)&&r.setAttribute("largeop","false");else if(e.body)r=new G("mo",dt(e.body,t));else{r=new G("mi",[new Me(e.name.slice(1))]);var n=new G("mo",[bt("⁡","text")]);e.parentIsSupSub?r=new G("mrow",[r,n]):r=so([r,n])}return r},W3={"∏":"\\prod","∐":"\\coprod","∑":"\\sum","⋀":"\\bigwedge","⋁":"\\bigvee","⋂":"\\bigcap","⋃":"\\bigcup","⨀":"\\bigodot","⨁":"\\bigoplus","⨂":"\\bigotimes","⨄":"\\biguplus","⨆":"\\bigsqcup"};Z({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","∏","∐","∑","⋀","⋁","⋂","⋃","⨀","⨁","⨂","⨄","⨆"],props:{numArgs:0},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=n;return a.length===1&&(a=W3[a]),{type:"op",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:a}},htmlBuilder:zr,mathmlBuilder:Sn});Z({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var{parser:r}=e,n=t[0];return{type:"op",mode:r.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:Re(n)}},htmlBuilder:zr,mathmlBuilder:Sn});var X3={"∫":"\\int","∬":"\\iint","∭":"\\iiint","∮":"\\oint","∯":"\\oiint","∰":"\\oiiint"};Z({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:zr,mathmlBuilder:Sn});Z({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:zr,mathmlBuilder:Sn});Z({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","∫","∬","∭","∮","∯","∰"],props:{numArgs:0,allowedInArgument:!0},handler(e){var{parser:t,funcName:r}=e,n=r;return n.length===1&&(n=X3[n]),{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:zr,mathmlBuilder:Sn});var Bo=(e,t)=>{var r,n,a=!1,i;e.type==="supsub"?(r=e.sup,n=e.sub,i=ce(e.base,"operatorname"),a=!0):i=ce(e,"operatorname");var u;if(i.body.length>0){for(var s=i.body.map(f=>{var g="text"in f?f.text:void 0;return typeof g=="string"?{type:"textord",mode:f.mode,text:g}:f}),l=He(s,t.withFont("mathrm"),!0),c=0;c{for(var r=dt(e.body,t.withFont("mathrm")),n=!0,a=0;ad.toText()).join("");r=[new Me(s)]}var l=new G("mi",r);l.setAttribute("mathvariant","normal");var c=new G("mo",[bt("⁡","text")]);return e.parentIsSupSub?new G("mrow",[l,c]):so([l,c])};Z({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=t[0];return{type:"operatorname",mode:r.mode,body:Re(a),alwaysHandleSupSub:n==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},htmlBuilder:Bo,mathmlBuilder:$3});E("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");br({type:"ordgroup",htmlBuilder(e,t){return e.semisimple?Gt(He(e.body,t,!1)):z(["mord"],He(e.body,t,!0),t)},mathmlBuilder(e,t){return tr(e.body,t,!0)}});Z({type:"overline",names:["\\overline"],props:{numArgs:1},handler(e,t){var{parser:r}=e,n=t[0];return{type:"overline",mode:r.mode,body:n}},htmlBuilder(e,t){var r=Te(e.body,t.havingCrampedStyle()),n=Or("overline-line",t),a=t.fontMetrics().defaultRuleThickness,i=Ee({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*a},{type:"elem",elem:n},{type:"kern",size:a}]});return z(["mord","overline"],[i],t)},mathmlBuilder(e,t){var r=new G("mo",[new Me("‾")]);r.setAttribute("stretchy","true");var n=new G("mover",[Ae(e.body,t),r]);return n.setAttribute("accent","true"),n}});Z({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,n=t[0];return{type:"phantom",mode:r.mode,body:Re(n)}},htmlBuilder:(e,t)=>{var r=He(e.body,t.withPhantom(),!1);return Gt(r)},mathmlBuilder:(e,t)=>{var r=dt(e.body,t);return new G("mphantom",r)}});E("\\hphantom","\\smash{\\phantom{#1}}");Z({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,n=t[0];return{type:"vphantom",mode:r.mode,body:n}},htmlBuilder:(e,t)=>{var r=z(["inner"],[Te(e.body,t.withPhantom())]),n=z(["fix"],[]);return z(["mord","rlap"],[r,n],t)},mathmlBuilder:(e,t)=>{var r=dt(Re(e.body),t),n=new G("mphantom",r),a=new G("mpadded",[n]);return a.setAttribute("width","0px"),a}});Z({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(e,t){var{parser:r}=e,n=ce(t[0],"size").value,a=t[1];return{type:"raisebox",mode:r.mode,dy:n,body:a}},htmlBuilder(e,t){var r=Te(e.body,t),n=Ie(e.dy,t);return Ee({positionType:"shift",positionData:-n,children:[{type:"elem",elem:r}]})},mathmlBuilder(e,t){var r=new G("mpadded",[Ae(e.body,t)]),n=e.dy.number+e.dy.unit;return r.setAttribute("voffset",n),r}});Z({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(e){var{parser:t}=e;return{type:"internal",mode:t.mode}}});Z({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(e,t,r){var{parser:n}=e,a=r[0],i=ce(t[0],"size"),u=ce(t[1],"size");return{type:"rule",mode:n.mode,shift:a&&ce(a,"size").value,width:i.value,height:u.value}},htmlBuilder(e,t){var r=z(["mord","rule"],[],t),n=Ie(e.width,t),a=Ie(e.height,t),i=e.shift?Ie(e.shift,t):0;return r.style.borderRightWidth=V(n),r.style.borderTopWidth=V(a),r.style.bottom=V(i),r.width=n,r.height=a+i,r.depth=-i,r.maxFontSize=a*1.125*t.sizeMultiplier,r},mathmlBuilder(e,t){var r=Ie(e.width,t),n=Ie(e.height,t),a=e.shift?Ie(e.shift,t):0,i=t.color&&t.getColor()||"black",u=new G("mspace");u.setAttribute("mathbackground",i),u.setAttribute("width",V(r)),u.setAttribute("height",V(n));var s=new G("mpadded",[u]);return a>=0?s.setAttribute("height",V(a)):(s.setAttribute("height",V(a)),s.setAttribute("depth",V(-a))),s.setAttribute("voffset",V(a)),s}});function Fo(e,t,r){for(var n=He(e,t,!1),a=t.sizeMultiplier/r.sizeMultiplier,i=0;i{var r=t.havingSize(e.size);return Fo(e.body,r,t)};Z({type:"sizing",names:is,props:{numArgs:0,allowedInText:!0},handler:(e,t)=>{var{breakOnTokenText:r,funcName:n,parser:a}=e,i=a.parseExpression(!1,r);return{type:"sizing",mode:a.mode,size:is.indexOf(n)+1,body:i}},htmlBuilder:Q3,mathmlBuilder:(e,t)=>{var r=t.havingSize(e.size),n=dt(e.body,r),a=new G("mstyle",n);return a.setAttribute("mathsize",V(r.sizeMultiplier)),a}});Z({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:(e,t,r)=>{var{parser:n}=e,a=!1,i=!1,u=r[0]&&ce(r[0],"ordgroup");if(u)for(var s,l=0;l{var r=z([],[Te(e.body,t)]);if(!e.smashHeight&&!e.smashDepth)return r;if(e.smashHeight&&(r.height=0),e.smashDepth&&(r.depth=0),e.smashHeight&&e.smashDepth)return z(["mord","smash"],[r],t);if(r.children)for(var n=0;n{var r=new G("mpadded",[Ae(e.body,t)]);return e.smashHeight&&r.setAttribute("height","0px"),e.smashDepth&&r.setAttribute("depth","0px"),r}});Z({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){var{parser:n}=e,a=r[0],i=t[0];return{type:"sqrt",mode:n.mode,body:i,index:a}},htmlBuilder(e,t){var r=Te(e.body,t.havingCrampedStyle());r.height===0&&(r.height=t.fontMetrics().xHeight),r=Lr(r,t);var n=t.fontMetrics(),a=n.defaultRuleThickness,i=a;t.style.idr.height+r.depth+u&&(u=(u+f-r.height-r.depth)/2);var g=l.height-r.height-u-c;r.style.paddingLeft=V(d);var p=Ee({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+g)},{type:"elem",elem:l},{type:"kern",size:c}]});if(e.index){var x=t.havingStyle(oe.SCRIPTSCRIPT),S=Te(e.index,x,t),D=.6*(p.height-p.depth),_=Ee({positionType:"shift",positionData:-D,children:[{type:"elem",elem:S}]}),N=z(["root"],[_]);return z(["mord","sqrt"],[N,p],t)}else return z(["mord","sqrt"],[p],t)},mathmlBuilder(e,t){var{body:r,index:n}=e;return n?new G("mroot",[Ae(r,t),Ae(n,t)]):new G("msqrt",[Ae(r,t)])}});var Va={display:oe.DISPLAY,text:oe.TEXT,script:oe.SCRIPT,scriptscript:oe.SCRIPTSCRIPT};function K3(e){return e in Va}Z({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e,t){var{breakOnTokenText:r,funcName:n,parser:a}=e,i=a.parseExpression(!0,r),u=n.slice(1,n.length-5);if(!K3(u))throw new Error("Unknown style: "+u);return{type:"styling",mode:a.mode,style:u,body:i}},htmlBuilder(e,t){var r=Va[e.style],n=t.havingStyle(r);return e.resetFont&&(n=n.withFont("")),Fo(e.body,n,t)},mathmlBuilder(e,t){var r=Va[e.style],n=t.havingStyle(r);e.resetFont&&(n=n.withFont(""));var a=dt(e.body,n),i=new G("mstyle",a),u={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},s=u[e.style];return i.setAttribute("scriptlevel",s[0]),i.setAttribute("displaystyle",s[1]),i}});var J3=function(t,r){var n=t.base;if(n)if(n.type==="op"){var a=n.limits&&(r.style.size===oe.DISPLAY.size||n.alwaysHandleSupSub);return a?zr:null}else if(n.type==="operatorname"){var i=n.alwaysHandleSupSub&&(r.style.size===oe.DISPLAY.size||n.limits);return i?Bo:null}else{if(n.type==="accent")return qt(n.base)?Ai:null;if(n.type==="horizBrace"){var u=!t.sub;return u===n.isOver?Ro:null}else return null}else return null};br({type:"supsub",htmlBuilder(e,t){var r=J3(e,t);if(r)return r(e,t);var{base:n,sup:a,sub:i}=e,u=Te(n,t),s,l,c=t.fontMetrics(),d=0,f=0,g=n&&qt(n);if(a){var p=t.havingStyle(t.style.sup());s=Te(a,p,t),g||(d=u.height-p.fontMetrics().supDrop*p.sizeMultiplier/t.sizeMultiplier)}if(i){var x=t.havingStyle(t.style.sub());l=Te(i,x,t),g||(f=u.depth+x.fontMetrics().subDrop*x.sizeMultiplier/t.sizeMultiplier)}var S;t.style===oe.DISPLAY?S=c.sup1:t.style.cramped?S=c.sup3:S=c.sup2;var D=t.sizeMultiplier,_=V(.5/c.ptPerEm/D),N=null;if(l){var M=e.base&&e.base.type==="op"&&e.base.name&&(e.base.name==="\\oiint"||e.base.name==="\\oiiint");if(u instanceof ct||M){var W;N=V(-((W=u.italic)!=null?W:0))}}var j;if(s&&l){d=Math.max(d,S,s.depth+.25*c.xHeight),f=Math.max(f,c.sub2);var L=c.defaultRuleThickness,ee=4*L;if(d-s.depth-(l.height-f)0&&(d+=re,f-=re)}var K=[{type:"elem",elem:l,shift:f,marginRight:_,marginLeft:N},{type:"elem",elem:s,shift:-d,marginRight:_}];j=Ee({positionType:"individualShift",children:K})}else if(l){f=Math.max(f,c.sub1,l.height-.8*c.xHeight);var R=[{type:"elem",elem:l,marginLeft:N,marginRight:_}];j=Ee({positionType:"shift",positionData:f,children:R})}else if(s)d=Math.max(d,S,s.depth+.25*c.xHeight),j=Ee({positionType:"shift",positionData:-d,children:[{type:"elem",elem:s,marginRight:_}]});else throw new Error("supsub must have either sup or sub.");var J=za(u,"right")||"mord";return z([J],[u,z(["msupsub"],[j])],t)},mathmlBuilder(e,t){var r=!1,n,a;e.base&&e.base.type==="horizBrace"&&(a=!!e.sup,a===e.base.isOver&&(r=!0,n=e.base.isOver)),e.base&&(e.base.type==="op"||e.base.type==="operatorname")&&(e.base.parentIsSupSub=!0);var i=[Ae(e.base,t)];e.sub&&i.push(Ae(e.sub,t)),e.sup&&i.push(Ae(e.sup,t));var u;if(r)u=n?"mover":"munder";else if(e.sub)if(e.sup){var c=e.base;c&&c.type==="op"&&c.limits&&t.style===oe.DISPLAY||c&&c.type==="operatorname"&&c.alwaysHandleSupSub&&(t.style===oe.DISPLAY||c.limits)?u="munderover":u="msubsup"}else{var l=e.base;l&&l.type==="op"&&l.limits&&(t.style===oe.DISPLAY||l.alwaysHandleSupSub)||l&&l.type==="operatorname"&&l.alwaysHandleSupSub&&(l.limits||t.style===oe.DISPLAY)?u="munder":u="msub"}else{var s=e.base;s&&s.type==="op"&&s.limits&&(t.style===oe.DISPLAY||s.alwaysHandleSupSub)||s&&s.type==="operatorname"&&s.alwaysHandleSupSub&&(s.limits||t.style===oe.DISPLAY)?u="mover":u="msup"}return new G(u,i)}});br({type:"atom",htmlBuilder(e,t){return Ti(e.text,e.mode,t,["m"+e.family])},mathmlBuilder(e,t){var r=new G("mo",[bt(e.text,e.mode)]);if(e.family==="bin"){var n=vi(e,t);n==="bold-italic"&&r.setAttribute("mathvariant",n)}else e.family==="punct"?r.setAttribute("separator","true"):(e.family==="open"||e.family==="close")&&r.setAttribute("stretchy","false");return r}});var Ho={mi:"italic",mn:"normal",mtext:"normal"};br({type:"mathord",htmlBuilder(e,t){return x0(e,t,"mathord")},mathmlBuilder(e,t){var r=new G("mi",[bt(e.text,e.mode,t)]),n=vi(e,t)||"italic";return n!==Ho[r.type]&&r.setAttribute("mathvariant",n),r}});br({type:"textord",htmlBuilder(e,t){return x0(e,t,"textord")},mathmlBuilder(e,t){var r=bt(e.text,e.mode,t),n=vi(e,t)||"normal",a;return e.mode==="text"?a=new G("mtext",[r]):/[0-9]/.test(e.text)?a=new G("mn",[r]):e.text==="\\prime"?a=new G("mo",[r]):a=new G("mi",[r]),n!==Ho[a.type]&&a.setAttribute("mathvariant",n),a}});var fa={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},ma={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};br({type:"spacing",htmlBuilder(e,t){if(ma.hasOwnProperty(e.text)){var r=ma[e.text].className||"";if(e.mode==="text"){var n=x0(e,t,"textord");return n.classes.push(r),n}else return z(["mspace",r],[Ti(e.text,e.mode,t)],t)}else{if(fa.hasOwnProperty(e.text))return z(["mspace",fa[e.text]],[],t);throw new Y('Unknown type of space "'+e.text+'"')}},mathmlBuilder(e,t){var r;if(ma.hasOwnProperty(e.text))r=new G("mtext",[new Me(" ")]);else{if(fa.hasOwnProperty(e.text))return new G("mspace");throw new Y('Unknown type of space "'+e.text+'"')}return r}});var us=()=>{var e=new G("mtd",[]);return e.setAttribute("width","50%"),e};br({type:"tag",mathmlBuilder(e,t){var r=new G("mtable",[new G("mtr",[us(),new G("mtd",[tr(e.body,t)]),us(),new G("mtd",[tr(e.tag,t)])])]);return r.setAttribute("width","100%"),r}});var ss={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},ls={"\\textbf":"textbf","\\textmd":"textmd"},Z3={"\\textit":"textit","\\textup":"textup"},os=(e,t)=>{var r=e.font;if(r){if(ss[r])return t.withTextFontFamily(ss[r]);if(ls[r])return t.withTextFontWeight(ls[r]);if(r==="\\emph")return t.fontShape==="textit"?t.withTextFontShape("textup"):t.withTextFontShape("textit")}else return t;return t.withTextFontShape(Z3[r])};Z({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(e,t){var{parser:r,funcName:n}=e,a=t[0];return{type:"text",mode:r.mode,body:Re(a),font:n}},htmlBuilder(e,t){var r=os(e,t),n=He(e.body,r,!0);return z(["mord","text"],n,r)},mathmlBuilder(e,t){var r=os(e,t);return tr(e.body,r)}});Z({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"underline",mode:r.mode,body:t[0]}},htmlBuilder(e,t){var r=Te(e.body,t),n=Or("underline-line",t),a=t.fontMetrics().defaultRuleThickness,i=Ee({positionType:"top",positionData:r.height,children:[{type:"kern",size:a},{type:"elem",elem:n},{type:"kern",size:3*a},{type:"elem",elem:r}]});return z(["mord","underline"],[i],t)},mathmlBuilder(e,t){var r=new G("mo",[new Me("‾")]);r.setAttribute("stretchy","true");var n=new G("munder",[Ae(e.body,t),r]);return n.setAttribute("accentunder","true"),n}});Z({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(e,t){var{parser:r}=e;return{type:"vcenter",mode:r.mode,body:t[0]}},htmlBuilder(e,t){var r=Te(e.body,t),n=t.fontMetrics().axisHeight,a=.5*(r.height-n-(r.depth+n));return Ee({positionType:"shift",positionData:a,children:[{type:"elem",elem:r}]})},mathmlBuilder(e,t){var r=new G("mpadded",[Ae(e.body,t)],["vcenter"]);return new G("mrow",[r])}});Z({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(e,t,r){throw new Y("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(e,t){for(var r=cs(e),n=[],a=t.havingStyle(t.style.text()),i=0;ie.body.replace(/ /g,e.star?"␣":" "),Qt=io,zo=`[ \r - ]`,e6="\\\\[a-zA-Z@]+",t6="\\\\[^\uD800-\uDFFF]",r6="("+e6+")"+zo+"*",n6=`\\\\( -|[ \r ]+ -?)[ \r ]*`,ja="[̀-ͯ]",a6=new RegExp(ja+"+$"),i6="("+zo+"+)|"+(n6+"|")+"([!-\\[\\]-‧‪-퟿豈-￿]"+(ja+"*")+"|[\uD800-\uDBFF][\uDC00-\uDFFF]"+(ja+"*")+"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5"+("|"+r6)+("|"+t6+")");class hs{constructor(t,r){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=t,this.settings=r,this.tokenRegex=new RegExp(i6,"g"),this.catcodes={"%":14,"~":13}}setCatcode(t,r){this.catcodes[t]=r}lex(){var t=this.input,r=this.tokenRegex.lastIndex;if(r===t.length)return new ot("EOF",new rt(this,r,r));var n=this.tokenRegex.exec(t);if(n===null||n.index!==r)throw new Y("Unexpected character: '"+t[r]+"'",new ot(t[r],new rt(this,r,r+1)));var a=n[6]||n[3]||(n[2]?"\\ ":" ");if(this.catcodes[a]===14){var i=t.indexOf(` -`,this.tokenRegex.lastIndex);return i===-1?(this.tokenRegex.lastIndex=t.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=i+1,this.lex()}return new ot(a,new rt(this,r,this.tokenRegex.lastIndex))}}class u6{constructor(t,r){t===void 0&&(t={}),r===void 0&&(r={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=r,this.builtins=t,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(this.undefStack.length===0)throw new Y("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var t=this.undefStack.pop();for(var r in t)t.hasOwnProperty(r)&&(t[r]==null?delete this.current[r]:this.current[r]=t[r])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(t){return this.current.hasOwnProperty(t)||this.builtins.hasOwnProperty(t)}get(t){return this.current.hasOwnProperty(t)?this.current[t]:this.builtins[t]}set(t,r,n){if(n===void 0&&(n=!1),n){for(var a=0;a0&&(this.undefStack[this.undefStack.length-1][t]=r)}else{var i=this.undefStack[this.undefStack.length-1];i&&!i.hasOwnProperty(t)&&(i[t]=this.current[t])}r==null?delete this.current[t]:this.current[t]=r}}var s6=Io;E("\\noexpand",function(e){var t=e.popToken();return e.isExpandable(t.text)&&(t.noexpand=!0,t.treatAsRelax=!0),{tokens:[t],numArgs:0}});E("\\expandafter",function(e){var t=e.popToken();return e.expandOnce(!0),{tokens:[t],numArgs:0}});E("\\@firstoftwo",function(e){var t=e.consumeArgs(2);return{tokens:t[0],numArgs:0}});E("\\@secondoftwo",function(e){var t=e.consumeArgs(2);return{tokens:t[1],numArgs:0}});E("\\@ifnextchar",function(e){var t=e.consumeArgs(3);e.consumeSpaces();var r=e.future();return t[0].length===1&&t[0][0].text===r.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}});E("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");E("\\TextOrMath",function(e){var t=e.consumeArgs(2);return e.mode==="text"?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}});var ds={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};E("\\char",function(e){var t=e.popToken(),r,n=0;if(t.text==="'")r=8,t=e.popToken();else if(t.text==='"')r=16,t=e.popToken();else if(t.text==="`")if(t=e.popToken(),t.text[0]==="\\")n=t.text.charCodeAt(1);else{if(t.text==="EOF")throw new Y("\\char` missing argument");n=t.text.charCodeAt(0)}else r=10;if(r){if(n=ds[t.text],n==null||n>=r)throw new Y("Invalid base-"+r+" digit "+t.text);for(var a;(a=ds[e.future().text])!=null&&a{var a=e.consumeArg().tokens;if(a.length!==1)throw new Y("\\newcommand's first argument must be a macro name");var i=a[0].text,u=e.isDefined(i);if(u&&!t)throw new Y("\\newcommand{"+i+"} attempting to redefine "+(i+"; use \\renewcommand"));if(!u&&!r)throw new Y("\\renewcommand{"+i+"} when command "+i+" does not yet exist; use \\newcommand");var s=0;if(a=e.consumeArg().tokens,a.length===1&&a[0].text==="["){for(var l="",c=e.expandNextToken();c.text!=="]"&&c.text!=="EOF";)l+=c.text,c=e.expandNextToken();if(!l.match(/^\s*[0-9]+\s*$/))throw new Y("Invalid number of arguments: "+l);s=parseInt(l),a=e.consumeArg().tokens}return u&&n||e.macros.set(i,{tokens:a,numArgs:s}),""};E("\\newcommand",e=>Ci(e,!1,!0,!1));E("\\renewcommand",e=>Ci(e,!0,!1,!1));E("\\providecommand",e=>Ci(e,!0,!0,!0));E("\\message",e=>{var t=e.consumeArgs(1)[0];return console.log(t.reverse().map(r=>r.text).join("")),""});E("\\errmessage",e=>{var t=e.consumeArgs(1)[0];return console.error(t.reverse().map(r=>r.text).join("")),""});E("\\show",e=>{var t=e.popToken(),r=t.text;return console.log(t,e.macros.get(r),Qt[r],we.math[r],we.text[r]),""});E("\\bgroup","{");E("\\egroup","}");E("~","\\nobreakspace");E("\\lq","`");E("\\rq","'");E("\\aa","\\r a");E("\\AA","\\r A");E("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`©}");E("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");E("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}");E("ℬ","\\mathscr{B}");E("ℰ","\\mathscr{E}");E("ℱ","\\mathscr{F}");E("ℋ","\\mathscr{H}");E("ℐ","\\mathscr{I}");E("ℒ","\\mathscr{L}");E("ℳ","\\mathscr{M}");E("ℛ","\\mathscr{R}");E("ℭ","\\mathfrak{C}");E("ℌ","\\mathfrak{H}");E("ℨ","\\mathfrak{Z}");E("\\Bbbk","\\Bbb{k}");E("\\llap","\\mathllap{\\textrm{#1}}");E("\\rlap","\\mathrlap{\\textrm{#1}}");E("\\clap","\\mathclap{\\textrm{#1}}");E("\\mathstrut","\\vphantom{(}");E("\\underbar","\\underline{\\text{#1}}");E("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}\\nobreak}{\\char"338}');E("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`≠}}");E("\\ne","\\neq");E("≠","\\neq");E("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`∉}}");E("∉","\\notin");E("≘","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`≘}}");E("≙","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`≘}}");E("≚","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`≚}}");E("≛","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`≛}}");E("≝","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`≝}}");E("≞","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`≞}}");E("≟","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`≟}}");E("⟂","\\perp");E("‼","\\mathclose{!\\mkern-0.8mu!}");E("∌","\\notni");E("⌜","\\ulcorner");E("⌝","\\urcorner");E("⌞","\\llcorner");E("⌟","\\lrcorner");E("©","\\copyright");E("®","\\textregistered");E("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');E("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');E("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');E("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');E("\\vdots","{\\varvdots\\rule{0pt}{15pt}}");E("⋮","\\vdots");E("\\varGamma","\\mathit{\\Gamma}");E("\\varDelta","\\mathit{\\Delta}");E("\\varTheta","\\mathit{\\Theta}");E("\\varLambda","\\mathit{\\Lambda}");E("\\varXi","\\mathit{\\Xi}");E("\\varPi","\\mathit{\\Pi}");E("\\varSigma","\\mathit{\\Sigma}");E("\\varUpsilon","\\mathit{\\Upsilon}");E("\\varPhi","\\mathit{\\Phi}");E("\\varPsi","\\mathit{\\Psi}");E("\\varOmega","\\mathit{\\Omega}");E("\\substack","\\begin{subarray}{c}#1\\end{subarray}");E("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");E("\\boxed","\\fbox{$\\displaystyle{#1}$}");E("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");E("\\implies","\\DOTSB\\;\\Longrightarrow\\;");E("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");E("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}");E("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");var fs={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"},l6=new Set(["bin","rel"]);E("\\dots",function(e){var t="\\dotso",r=e.expandAfterFuture().text;return r in fs?t=fs[r]:(r.slice(0,4)==="\\not"||r in we.math&&l6.has(we.math[r].group))&&(t="\\dotsb"),t});var _i={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};E("\\dotso",function(e){var t=e.future().text;return t in _i?"\\ldots\\,":"\\ldots"});E("\\dotsc",function(e){var t=e.future().text;return t in _i&&t!==","?"\\ldots\\,":"\\ldots"});E("\\cdots",function(e){var t=e.future().text;return t in _i?"\\@cdots\\,":"\\@cdots"});E("\\dotsb","\\cdots");E("\\dotsm","\\cdots");E("\\dotsi","\\!\\cdots");E("\\dotsx","\\ldots\\,");E("\\DOTSI","\\relax");E("\\DOTSB","\\relax");E("\\DOTSX","\\relax");E("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");E("\\,","\\tmspace+{3mu}{.1667em}");E("\\thinspace","\\,");E("\\>","\\mskip{4mu}");E("\\:","\\tmspace+{4mu}{.2222em}");E("\\medspace","\\:");E("\\;","\\tmspace+{5mu}{.2777em}");E("\\thickspace","\\;");E("\\!","\\tmspace-{3mu}{.1667em}");E("\\negthinspace","\\!");E("\\negmedspace","\\tmspace-{4mu}{.2222em}");E("\\negthickspace","\\tmspace-{5mu}{.277em}");E("\\enspace","\\kern.5em ");E("\\enskip","\\hskip.5em\\relax");E("\\quad","\\hskip1em\\relax");E("\\qquad","\\hskip2em\\relax");E("\\tag","\\@ifstar\\tag@literal\\tag@paren");E("\\tag@paren","\\tag@literal{({#1})}");E("\\tag@literal",e=>{if(e.macros.get("\\df@tag"))throw new Y("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});E("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");E("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");E("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");E("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");E("\\newline","\\\\\\relax");E("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var Uo=V(wt["Main-Regular"][84][1]-.7*wt["Main-Regular"][65][1]);E("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+Uo+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");E("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+Uo+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");E("\\hspace","\\@ifstar\\@hspacer\\@hspace");E("\\@hspace","\\hskip #1\\relax");E("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");E("\\ordinarycolon",":");E("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");E("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');E("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');E("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');E("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');E("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');E("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');E("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');E("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');E("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');E("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');E("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');E("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');E("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');E("∷","\\dblcolon");E("∹","\\eqcolon");E("≔","\\coloneqq");E("≕","\\eqqcolon");E("⩴","\\Coloneqq");E("\\ratio","\\vcentcolon");E("\\coloncolon","\\dblcolon");E("\\colonequals","\\coloneqq");E("\\coloncolonequals","\\Coloneqq");E("\\equalscolon","\\eqqcolon");E("\\equalscoloncolon","\\Eqqcolon");E("\\colonminus","\\coloneq");E("\\coloncolonminus","\\Coloneq");E("\\minuscolon","\\eqcolon");E("\\minuscoloncolon","\\Eqcolon");E("\\coloncolonapprox","\\Colonapprox");E("\\coloncolonsim","\\Colonsim");E("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");E("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");E("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");E("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");E("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`∌}}");E("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");E("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");E("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");E("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");E("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");E("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");E("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");E("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");E("\\gvertneqq","\\html@mathml{\\@gvertneqq}{≩}");E("\\lvertneqq","\\html@mathml{\\@lvertneqq}{≨}");E("\\ngeqq","\\html@mathml{\\@ngeqq}{≱}");E("\\ngeqslant","\\html@mathml{\\@ngeqslant}{≱}");E("\\nleqq","\\html@mathml{\\@nleqq}{≰}");E("\\nleqslant","\\html@mathml{\\@nleqslant}{≰}");E("\\nshortmid","\\html@mathml{\\@nshortmid}{∤}");E("\\nshortparallel","\\html@mathml{\\@nshortparallel}{∦}");E("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{⊈}");E("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{⊉}");E("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{⊊}");E("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{⫋}");E("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{⊋}");E("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{⫌}");E("\\imath","\\html@mathml{\\@imath}{ı}");E("\\jmath","\\html@mathml{\\@jmath}{ȷ}");E("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`⟦}}");E("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`⟧}}");E("⟦","\\llbracket");E("⟧","\\rrbracket");E("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`⦃}}");E("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`⦄}}");E("⦃","\\lBrace");E("⦄","\\rBrace");E("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`⦵}}");E("⦵","\\minuso");E("\\darr","\\downarrow");E("\\dArr","\\Downarrow");E("\\Darr","\\Downarrow");E("\\lang","\\langle");E("\\rang","\\rangle");E("\\uarr","\\uparrow");E("\\uArr","\\Uparrow");E("\\Uarr","\\Uparrow");E("\\N","\\mathbb{N}");E("\\R","\\mathbb{R}");E("\\Z","\\mathbb{Z}");E("\\alef","\\aleph");E("\\alefsym","\\aleph");E("\\Alpha","\\mathrm{A}");E("\\Beta","\\mathrm{B}");E("\\bull","\\bullet");E("\\Chi","\\mathrm{X}");E("\\clubs","\\clubsuit");E("\\cnums","\\mathbb{C}");E("\\Complex","\\mathbb{C}");E("\\Dagger","\\ddagger");E("\\diamonds","\\diamondsuit");E("\\empty","\\emptyset");E("\\Epsilon","\\mathrm{E}");E("\\Eta","\\mathrm{H}");E("\\exist","\\exists");E("\\harr","\\leftrightarrow");E("\\hArr","\\Leftrightarrow");E("\\Harr","\\Leftrightarrow");E("\\hearts","\\heartsuit");E("\\image","\\Im");E("\\infin","\\infty");E("\\Iota","\\mathrm{I}");E("\\isin","\\in");E("\\Kappa","\\mathrm{K}");E("\\larr","\\leftarrow");E("\\lArr","\\Leftarrow");E("\\Larr","\\Leftarrow");E("\\lrarr","\\leftrightarrow");E("\\lrArr","\\Leftrightarrow");E("\\Lrarr","\\Leftrightarrow");E("\\Mu","\\mathrm{M}");E("\\natnums","\\mathbb{N}");E("\\Nu","\\mathrm{N}");E("\\Omicron","\\mathrm{O}");E("\\plusmn","\\pm");E("\\rarr","\\rightarrow");E("\\rArr","\\Rightarrow");E("\\Rarr","\\Rightarrow");E("\\real","\\Re");E("\\reals","\\mathbb{R}");E("\\Reals","\\mathbb{R}");E("\\Rho","\\mathrm{P}");E("\\sdot","\\cdot");E("\\sect","\\S");E("\\spades","\\spadesuit");E("\\sub","\\subset");E("\\sube","\\subseteq");E("\\supe","\\supseteq");E("\\Tau","\\mathrm{T}");E("\\thetasym","\\vartheta");E("\\weierp","\\wp");E("\\Zeta","\\mathrm{Z}");E("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");E("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");E("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");E("\\bra","\\mathinner{\\langle{#1}|}");E("\\ket","\\mathinner{|{#1}\\rangle}");E("\\braket","\\mathinner{\\langle{#1}\\rangle}");E("\\Bra","\\left\\langle#1\\right|");E("\\Ket","\\left|#1\\right\\rangle");var qo=e=>t=>{var r=t.consumeArg().tokens,n=t.consumeArg().tokens,a=t.consumeArg().tokens,i=t.consumeArg().tokens,u=t.macros.get("|"),s=t.macros.get("\\|");t.macros.beginGroup();var l=f=>g=>{e&&(g.macros.set("|",u),a.length&&g.macros.set("\\|",s));var p=f;if(!f&&a.length){var x=g.future();x.text==="|"&&(g.popToken(),p=!0)}return{tokens:p?a:n,numArgs:0}};t.macros.set("|",l(!1)),a.length&&t.macros.set("\\|",l(!0));var c=t.consumeArg().tokens,d=t.expandTokens([...i,...c,...r]);return t.macros.endGroup(),{tokens:d.reverse(),numArgs:0}};E("\\bra@ket",qo(!1));E("\\bra@set",qo(!0));E("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");E("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");E("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");E("\\angln","{\\angl n}");E("\\blue","\\textcolor{##6495ed}{#1}");E("\\orange","\\textcolor{##ffa500}{#1}");E("\\pink","\\textcolor{##ff00af}{#1}");E("\\red","\\textcolor{##df0030}{#1}");E("\\green","\\textcolor{##28ae7b}{#1}");E("\\gray","\\textcolor{gray}{#1}");E("\\purple","\\textcolor{##9d38bd}{#1}");E("\\blueA","\\textcolor{##ccfaff}{#1}");E("\\blueB","\\textcolor{##80f6ff}{#1}");E("\\blueC","\\textcolor{##63d9ea}{#1}");E("\\blueD","\\textcolor{##11accd}{#1}");E("\\blueE","\\textcolor{##0c7f99}{#1}");E("\\tealA","\\textcolor{##94fff5}{#1}");E("\\tealB","\\textcolor{##26edd5}{#1}");E("\\tealC","\\textcolor{##01d1c1}{#1}");E("\\tealD","\\textcolor{##01a995}{#1}");E("\\tealE","\\textcolor{##208170}{#1}");E("\\greenA","\\textcolor{##b6ffb0}{#1}");E("\\greenB","\\textcolor{##8af281}{#1}");E("\\greenC","\\textcolor{##74cf70}{#1}");E("\\greenD","\\textcolor{##1fab54}{#1}");E("\\greenE","\\textcolor{##0d923f}{#1}");E("\\goldA","\\textcolor{##ffd0a9}{#1}");E("\\goldB","\\textcolor{##ffbb71}{#1}");E("\\goldC","\\textcolor{##ff9c39}{#1}");E("\\goldD","\\textcolor{##e07d10}{#1}");E("\\goldE","\\textcolor{##a75a05}{#1}");E("\\redA","\\textcolor{##fca9a9}{#1}");E("\\redB","\\textcolor{##ff8482}{#1}");E("\\redC","\\textcolor{##f9685d}{#1}");E("\\redD","\\textcolor{##e84d39}{#1}");E("\\redE","\\textcolor{##bc2612}{#1}");E("\\maroonA","\\textcolor{##ffbde0}{#1}");E("\\maroonB","\\textcolor{##ff92c6}{#1}");E("\\maroonC","\\textcolor{##ed5fa6}{#1}");E("\\maroonD","\\textcolor{##ca337c}{#1}");E("\\maroonE","\\textcolor{##9e034e}{#1}");E("\\purpleA","\\textcolor{##ddd7ff}{#1}");E("\\purpleB","\\textcolor{##c6b9fc}{#1}");E("\\purpleC","\\textcolor{##aa87ff}{#1}");E("\\purpleD","\\textcolor{##7854ab}{#1}");E("\\purpleE","\\textcolor{##543b78}{#1}");E("\\mintA","\\textcolor{##f5f9e8}{#1}");E("\\mintB","\\textcolor{##edf2df}{#1}");E("\\mintC","\\textcolor{##e0e5cc}{#1}");E("\\grayA","\\textcolor{##f6f7f7}{#1}");E("\\grayB","\\textcolor{##f0f1f2}{#1}");E("\\grayC","\\textcolor{##e3e5e6}{#1}");E("\\grayD","\\textcolor{##d6d8da}{#1}");E("\\grayE","\\textcolor{##babec2}{#1}");E("\\grayF","\\textcolor{##888d93}{#1}");E("\\grayG","\\textcolor{##626569}{#1}");E("\\grayH","\\textcolor{##3b3e40}{#1}");E("\\grayI","\\textcolor{##21242c}{#1}");E("\\kaBlue","\\textcolor{##314453}{#1}");E("\\kaGreen","\\textcolor{##71B307}{#1}");var Yo={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0};class o6{constructor(t,r,n){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=r,this.expansionCount=0,this.feed(t),this.macros=new u6(s6,r.macros),this.mode=n,this.stack=[]}feed(t){this.lexer=new hs(t,this.settings)}switchMode(t){this.mode=t}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return this.stack.length===0&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(t){this.stack.push(t)}pushTokens(t){this.stack.push(...t)}scanArgument(t){var r,n,a;if(t){if(this.consumeSpaces(),this.future().text!=="[")return null;r=this.popToken(),{tokens:a,end:n}=this.consumeArg(["]"])}else({tokens:a,start:r,end:n}=this.consumeArg());return this.pushToken(new ot("EOF",n.loc)),this.pushTokens(a),new ot("",rt.range(r,n))}consumeSpaces(){for(;;){var t=this.future();if(t.text===" ")this.stack.pop();else break}}consumeArg(t){var r=[],n=t&&t.length>0;n||this.consumeSpaces();var a=this.future(),i,u=0,s=0;do{if(i=this.popToken(),r.push(i),i.text==="{")++u;else if(i.text==="}"){if(--u,u===-1)throw new Y("Extra }",i)}else if(i.text==="EOF")throw new Y("Unexpected end of input in a macro argument, expected '"+(t&&n?t[s]:"}")+"'",i);if(t&&n)if((u===0||u===1&&t[s]==="{")&&i.text===t[s]){if(++s,s===t.length){r.splice(-s,s);break}}else s=0}while(u!==0||n);return a.text==="{"&&r[r.length-1].text==="}"&&(r.pop(),r.shift()),r.reverse(),{tokens:r,start:a,end:i}}consumeArgs(t,r){if(r){if(r.length!==t+1)throw new Y("The length of delimiters doesn't match the number of args!");for(var n=r[0],a=0;athis.settings.maxExpand)throw new Y("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(t){var r=this.popToken(),n=r.text,a=r.noexpand?null:this._getExpansion(n);if(a==null||t&&a.unexpandable){if(t&&a==null&&n[0]==="\\"&&!this.isDefined(n))throw new Y("Undefined control sequence: "+n);return this.pushToken(r),!1}this.countExpansion(1);var i=a.tokens,u=this.consumeArgs(a.numArgs,a.delimiters);if(a.numArgs){i=i.slice();for(var s=i.length-1;s>=0;--s){var l=i[s];if(l.text==="#"){if(s===0)throw new Y("Incomplete placeholder at end of macro body",l);if(l=i[--s],l.text==="#")i.splice(s+1,1);else if(/^[1-9]$/.test(l.text))i.splice(s,2,...u[+l.text-1]);else throw new Y("Not a valid argument number",l)}}}return this.pushTokens(i),i.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(this.expandOnce()===!1){var t=this.stack.pop();return t.treatAsRelax&&(t.text="\\relax"),t}}expandMacro(t){return this.macros.has(t)?this.expandTokens([new ot(t)]):void 0}expandTokens(t){var r=[],n=this.stack.length;for(this.pushTokens(t);this.stack.length>n;)if(this.expandOnce(!0)===!1){var a=this.stack.pop();a.treatAsRelax&&(a.noexpand=!1,a.treatAsRelax=!1),r.push(a)}return this.countExpansion(r.length),r}expandMacroAsText(t){var r=this.expandMacro(t);return r&&r.map(n=>n.text).join("")}_getExpansion(t){var r=this.macros.get(t);if(r==null)return r;if(t.length===1){var n=this.lexer.catcodes[t];if(n!=null&&n!==13)return}var a=typeof r=="function"?r(this):r;if(typeof a=="string"){var i=0;if(a.includes("#"))for(var u=a.replace(/##/g,"");u.includes("#"+(i+1));)++i;for(var s=new hs(a,this.settings),l=[],c=s.lex();c.text!=="EOF";)l.push(c),c=s.lex();l.reverse();var d={tokens:l,numArgs:i};return d}return a}isDefined(t){return this.macros.has(t)||Qt.hasOwnProperty(t)||we.math.hasOwnProperty(t)||we.text.hasOwnProperty(t)||Yo.hasOwnProperty(t)}isExpandable(t){var r=this.macros.get(t);return r!=null?typeof r=="string"||typeof r=="function"||!r.unexpandable:Qt.hasOwnProperty(t)&&!Qt[t].primitive}}var ms=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,jn=Object.freeze({"₊":"+","₋":"-","₌":"=","₍":"(","₎":")","₀":"0","₁":"1","₂":"2","₃":"3","₄":"4","₅":"5","₆":"6","₇":"7","₈":"8","₉":"9","ₐ":"a","ₑ":"e","ₕ":"h","ᵢ":"i","ⱼ":"j","ₖ":"k","ₗ":"l","ₘ":"m","ₙ":"n","ₒ":"o","ₚ":"p","ᵣ":"r","ₛ":"s","ₜ":"t","ᵤ":"u","ᵥ":"v","ₓ":"x","ᵦ":"β","ᵧ":"γ","ᵨ":"ρ","ᵩ":"ϕ","ᵪ":"χ","⁺":"+","⁻":"-","⁼":"=","⁽":"(","⁾":")","⁰":"0","¹":"1","²":"2","³":"3","⁴":"4","⁵":"5","⁶":"6","⁷":"7","⁸":"8","⁹":"9","ᴬ":"A","ᴮ":"B","ᴰ":"D","ᴱ":"E","ᴳ":"G","ᴴ":"H","ᴵ":"I","ᴶ":"J","ᴷ":"K","ᴸ":"L","ᴹ":"M","ᴺ":"N","ᴼ":"O","ᴾ":"P","ᴿ":"R","ᵀ":"T","ᵁ":"U","ⱽ":"V","ᵂ":"W","ᵃ":"a","ᵇ":"b","ᶜ":"c","ᵈ":"d","ᵉ":"e","ᶠ":"f","ᵍ":"g",ʰ:"h","ⁱ":"i",ʲ:"j","ᵏ":"k",ˡ:"l","ᵐ":"m",ⁿ:"n","ᵒ":"o","ᵖ":"p",ʳ:"r",ˢ:"s","ᵗ":"t","ᵘ":"u","ᵛ":"v",ʷ:"w",ˣ:"x",ʸ:"y","ᶻ":"z","ᵝ":"β","ᵞ":"γ","ᵟ":"δ","ᵠ":"ϕ","ᵡ":"χ","ᶿ":"θ"}),pa={"́":{text:"\\'",math:"\\acute"},"̀":{text:"\\`",math:"\\grave"},"̈":{text:'\\"',math:"\\ddot"},"̃":{text:"\\~",math:"\\tilde"},"̄":{text:"\\=",math:"\\bar"},"̆":{text:"\\u",math:"\\breve"},"̌":{text:"\\v",math:"\\check"},"̂":{text:"\\^",math:"\\hat"},"̇":{text:"\\.",math:"\\dot"},"̊":{text:"\\r",math:"\\mathring"},"̋":{text:"\\H"},"̧":{text:"\\c"}},ps={á:"á",à:"à",ä:"ä",ǟ:"ǟ",ã:"ã",ā:"ā",ă:"ă",ắ:"ắ",ằ:"ằ",ẵ:"ẵ",ǎ:"ǎ",â:"â",ấ:"ấ",ầ:"ầ",ẫ:"ẫ",ȧ:"ȧ",ǡ:"ǡ",å:"å",ǻ:"ǻ",ḃ:"ḃ",ć:"ć",ḉ:"ḉ",č:"č",ĉ:"ĉ",ċ:"ċ",ç:"ç",ď:"ď",ḋ:"ḋ",ḑ:"ḑ",é:"é",è:"è",ë:"ë",ẽ:"ẽ",ē:"ē",ḗ:"ḗ",ḕ:"ḕ",ĕ:"ĕ",ḝ:"ḝ",ě:"ě",ê:"ê",ế:"ế",ề:"ề",ễ:"ễ",ė:"ė",ȩ:"ȩ",ḟ:"ḟ",ǵ:"ǵ",ḡ:"ḡ",ğ:"ğ",ǧ:"ǧ",ĝ:"ĝ",ġ:"ġ",ģ:"ģ",ḧ:"ḧ",ȟ:"ȟ",ĥ:"ĥ",ḣ:"ḣ",ḩ:"ḩ",í:"í",ì:"ì",ï:"ï",ḯ:"ḯ",ĩ:"ĩ",ī:"ī",ĭ:"ĭ",ǐ:"ǐ",î:"î",ǰ:"ǰ",ĵ:"ĵ",ḱ:"ḱ",ǩ:"ǩ",ķ:"ķ",ĺ:"ĺ",ľ:"ľ",ļ:"ļ",ḿ:"ḿ",ṁ:"ṁ",ń:"ń",ǹ:"ǹ",ñ:"ñ",ň:"ň",ṅ:"ṅ",ņ:"ņ",ó:"ó",ò:"ò",ö:"ö",ȫ:"ȫ",õ:"õ",ṍ:"ṍ",ṏ:"ṏ",ȭ:"ȭ",ō:"ō",ṓ:"ṓ",ṑ:"ṑ",ŏ:"ŏ",ǒ:"ǒ",ô:"ô",ố:"ố",ồ:"ồ",ỗ:"ỗ",ȯ:"ȯ",ȱ:"ȱ",ő:"ő",ṕ:"ṕ",ṗ:"ṗ",ŕ:"ŕ",ř:"ř",ṙ:"ṙ",ŗ:"ŗ",ś:"ś",ṥ:"ṥ",š:"š",ṧ:"ṧ",ŝ:"ŝ",ṡ:"ṡ",ş:"ş",ẗ:"ẗ",ť:"ť",ṫ:"ṫ",ţ:"ţ",ú:"ú",ù:"ù",ü:"ü",ǘ:"ǘ",ǜ:"ǜ",ǖ:"ǖ",ǚ:"ǚ",ũ:"ũ",ṹ:"ṹ",ū:"ū",ṻ:"ṻ",ŭ:"ŭ",ǔ:"ǔ",û:"û",ů:"ů",ű:"ű",ṽ:"ṽ",ẃ:"ẃ",ẁ:"ẁ",ẅ:"ẅ",ŵ:"ŵ",ẇ:"ẇ",ẘ:"ẘ",ẍ:"ẍ",ẋ:"ẋ",ý:"ý",ỳ:"ỳ",ÿ:"ÿ",ỹ:"ỹ",ȳ:"ȳ",ŷ:"ŷ",ẏ:"ẏ",ẙ:"ẙ",ź:"ź",ž:"ž",ẑ:"ẑ",ż:"ż",Á:"Á",À:"À",Ä:"Ä",Ǟ:"Ǟ",Ã:"Ã",Ā:"Ā",Ă:"Ă",Ắ:"Ắ",Ằ:"Ằ",Ẵ:"Ẵ",Ǎ:"Ǎ",Â:"Â",Ấ:"Ấ",Ầ:"Ầ",Ẫ:"Ẫ",Ȧ:"Ȧ",Ǡ:"Ǡ",Å:"Å",Ǻ:"Ǻ",Ḃ:"Ḃ",Ć:"Ć",Ḉ:"Ḉ",Č:"Č",Ĉ:"Ĉ",Ċ:"Ċ",Ç:"Ç",Ď:"Ď",Ḋ:"Ḋ",Ḑ:"Ḑ",É:"É",È:"È",Ë:"Ë",Ẽ:"Ẽ",Ē:"Ē",Ḗ:"Ḗ",Ḕ:"Ḕ",Ĕ:"Ĕ",Ḝ:"Ḝ",Ě:"Ě",Ê:"Ê",Ế:"Ế",Ề:"Ề",Ễ:"Ễ",Ė:"Ė",Ȩ:"Ȩ",Ḟ:"Ḟ",Ǵ:"Ǵ",Ḡ:"Ḡ",Ğ:"Ğ",Ǧ:"Ǧ",Ĝ:"Ĝ",Ġ:"Ġ",Ģ:"Ģ",Ḧ:"Ḧ",Ȟ:"Ȟ",Ĥ:"Ĥ",Ḣ:"Ḣ",Ḩ:"Ḩ",Í:"Í",Ì:"Ì",Ï:"Ï",Ḯ:"Ḯ",Ĩ:"Ĩ",Ī:"Ī",Ĭ:"Ĭ",Ǐ:"Ǐ",Î:"Î",İ:"İ",Ĵ:"Ĵ",Ḱ:"Ḱ",Ǩ:"Ǩ",Ķ:"Ķ",Ĺ:"Ĺ",Ľ:"Ľ",Ļ:"Ļ",Ḿ:"Ḿ",Ṁ:"Ṁ",Ń:"Ń",Ǹ:"Ǹ",Ñ:"Ñ",Ň:"Ň",Ṅ:"Ṅ",Ņ:"Ņ",Ó:"Ó",Ò:"Ò",Ö:"Ö",Ȫ:"Ȫ",Õ:"Õ",Ṍ:"Ṍ",Ṏ:"Ṏ",Ȭ:"Ȭ",Ō:"Ō",Ṓ:"Ṓ",Ṑ:"Ṑ",Ŏ:"Ŏ",Ǒ:"Ǒ",Ô:"Ô",Ố:"Ố",Ồ:"Ồ",Ỗ:"Ỗ",Ȯ:"Ȯ",Ȱ:"Ȱ",Ő:"Ő",Ṕ:"Ṕ",Ṗ:"Ṗ",Ŕ:"Ŕ",Ř:"Ř",Ṙ:"Ṙ",Ŗ:"Ŗ",Ś:"Ś",Ṥ:"Ṥ",Š:"Š",Ṧ:"Ṧ",Ŝ:"Ŝ",Ṡ:"Ṡ",Ş:"Ş",Ť:"Ť",Ṫ:"Ṫ",Ţ:"Ţ",Ú:"Ú",Ù:"Ù",Ü:"Ü",Ǘ:"Ǘ",Ǜ:"Ǜ",Ǖ:"Ǖ",Ǚ:"Ǚ",Ũ:"Ũ",Ṹ:"Ṹ",Ū:"Ū",Ṻ:"Ṻ",Ŭ:"Ŭ",Ǔ:"Ǔ",Û:"Û",Ů:"Ů",Ű:"Ű",Ṽ:"Ṽ",Ẃ:"Ẃ",Ẁ:"Ẁ",Ẅ:"Ẅ",Ŵ:"Ŵ",Ẇ:"Ẇ",Ẍ:"Ẍ",Ẋ:"Ẋ",Ý:"Ý",Ỳ:"Ỳ",Ÿ:"Ÿ",Ỹ:"Ỹ",Ȳ:"Ȳ",Ŷ:"Ŷ",Ẏ:"Ẏ",Ź:"Ź",Ž:"Ž",Ẑ:"Ẑ",Ż:"Ż",ά:"ά",ὰ:"ὰ",ᾱ:"ᾱ",ᾰ:"ᾰ",έ:"έ",ὲ:"ὲ",ή:"ή",ὴ:"ὴ",ί:"ί",ὶ:"ὶ",ϊ:"ϊ",ΐ:"ΐ",ῒ:"ῒ",ῑ:"ῑ",ῐ:"ῐ",ό:"ό",ὸ:"ὸ",ύ:"ύ",ὺ:"ὺ",ϋ:"ϋ",ΰ:"ΰ",ῢ:"ῢ",ῡ:"ῡ",ῠ:"ῠ",ώ:"ώ",ὼ:"ὼ",Ύ:"Ύ",Ὺ:"Ὺ",Ϋ:"Ϋ",Ῡ:"Ῡ",Ῠ:"Ῠ",Ώ:"Ώ",Ὼ:"Ὼ"};let Go=class Vo{constructor(t,r){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new o6(t,r,this.mode),this.settings=r,this.leftrightDepth=0,this.nextToken=null}expect(t,r){if(r===void 0&&(r=!0),this.fetch().text!==t)throw new Y("Expected '"+t+"', got '"+this.fetch().text+"'",this.fetch());r&&this.consume()}consume(){this.nextToken=null}fetch(){return this.nextToken==null&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(t){this.mode=t,this.gullet.switchMode(t)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var t=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),t}finally{this.gullet.endGroups()}}subparse(t){var r=this.nextToken;this.consume(),this.gullet.pushToken(new ot("}")),this.gullet.pushTokens(t);var n=this.parseExpression(!1);return this.expect("}"),this.nextToken=r,n}parseExpression(t,r){for(var n=[];;){this.mode==="math"&&this.consumeSpaces();var a=this.fetch();if(Vo.endOfExpression.has(a.text)||r&&a.text===r||t&&Qt[a.text]&&Qt[a.text].infix)break;var i=this.parseAtom(r);if(i){if(i.type==="internal")continue}else break;n.push(i)}return this.mode==="text"&&this.formLigatures(n),this.handleInfixNodes(n)}handleInfixNodes(t){for(var r=-1,n,a=0;a=128)this.settings.strict&&($l(r.charCodeAt(0))?this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+r[0]+'" used in math mode',t):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+r[0]+'"'+(" ("+r.charCodeAt(0)+")"),t)),u={type:"textord",mode:"text",loc:rt.range(t),text:r};else return null;if(this.consume(),i)for(var d=0;dc&&(c=d):d&&(c!==void 0&&c>-1&&l.push(` -`.repeat(c)||" "),c=-1,l.push(d))}return l.join("")}function ec(e,t,r){return e.type==="element"?F6(e,t,r):e.type==="text"?r.whitespace==="normal"?tc(e,r):H6(e):[]}function F6(e,t,r){const n=rc(e,r),a=e.children||[];let i=-1,u=[];if(P6(e))return u;let s,l;for(Xa(e)||ks(e)&&xs(t,e,ks)?l=` -`:M6(e)?(s=2,l=2):Zo(e)&&(s=1,l=1);++i-1&&i<=t.length){let u=0;for(;;){let s=r[u];if(s===void 0){const l=Ss(t,r[u-1]);s=l===-1?t.length+1:l+1,r[u]=s}if(s>i)return{line:u+1,column:i-(u>0?r[u-1]:0)+1,offset:i};u++}}}function a(i){if(i&&typeof i.line=="number"&&typeof i.column=="number"&&!Number.isNaN(i.line)&&!Number.isNaN(i.column)){for(;r.length1?r[i.line-2]:0)+i.column-1;if(u=55296&&e<=57343}function cp(e){return e>=56320&&e<=57343}function hp(e,t){return(e-55296)*1024+9216+t}function sc(e){return e!==32&&e!==10&&e!==13&&e!==9&&e!==12&&e>=1&&e<=31||e>=127&&e<=159}function lc(e){return e>=64976&&e<=65007||op.has(e)}var P;(function(e){e.controlCharacterInInputStream="control-character-in-input-stream",e.noncharacterInInputStream="noncharacter-in-input-stream",e.surrogateInInputStream="surrogate-in-input-stream",e.nonVoidHtmlElementStartTagWithTrailingSolidus="non-void-html-element-start-tag-with-trailing-solidus",e.endTagWithAttributes="end-tag-with-attributes",e.endTagWithTrailingSolidus="end-tag-with-trailing-solidus",e.unexpectedSolidusInTag="unexpected-solidus-in-tag",e.unexpectedNullCharacter="unexpected-null-character",e.unexpectedQuestionMarkInsteadOfTagName="unexpected-question-mark-instead-of-tag-name",e.invalidFirstCharacterOfTagName="invalid-first-character-of-tag-name",e.unexpectedEqualsSignBeforeAttributeName="unexpected-equals-sign-before-attribute-name",e.missingEndTagName="missing-end-tag-name",e.unexpectedCharacterInAttributeName="unexpected-character-in-attribute-name",e.unknownNamedCharacterReference="unknown-named-character-reference",e.missingSemicolonAfterCharacterReference="missing-semicolon-after-character-reference",e.unexpectedCharacterAfterDoctypeSystemIdentifier="unexpected-character-after-doctype-system-identifier",e.unexpectedCharacterInUnquotedAttributeValue="unexpected-character-in-unquoted-attribute-value",e.eofBeforeTagName="eof-before-tag-name",e.eofInTag="eof-in-tag",e.missingAttributeValue="missing-attribute-value",e.missingWhitespaceBetweenAttributes="missing-whitespace-between-attributes",e.missingWhitespaceAfterDoctypePublicKeyword="missing-whitespace-after-doctype-public-keyword",e.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers="missing-whitespace-between-doctype-public-and-system-identifiers",e.missingWhitespaceAfterDoctypeSystemKeyword="missing-whitespace-after-doctype-system-keyword",e.missingQuoteBeforeDoctypePublicIdentifier="missing-quote-before-doctype-public-identifier",e.missingQuoteBeforeDoctypeSystemIdentifier="missing-quote-before-doctype-system-identifier",e.missingDoctypePublicIdentifier="missing-doctype-public-identifier",e.missingDoctypeSystemIdentifier="missing-doctype-system-identifier",e.abruptDoctypePublicIdentifier="abrupt-doctype-public-identifier",e.abruptDoctypeSystemIdentifier="abrupt-doctype-system-identifier",e.cdataInHtmlContent="cdata-in-html-content",e.incorrectlyOpenedComment="incorrectly-opened-comment",e.eofInScriptHtmlCommentLikeText="eof-in-script-html-comment-like-text",e.eofInDoctype="eof-in-doctype",e.nestedComment="nested-comment",e.abruptClosingOfEmptyComment="abrupt-closing-of-empty-comment",e.eofInComment="eof-in-comment",e.incorrectlyClosedComment="incorrectly-closed-comment",e.eofInCdata="eof-in-cdata",e.absenceOfDigitsInNumericCharacterReference="absence-of-digits-in-numeric-character-reference",e.nullCharacterReference="null-character-reference",e.surrogateCharacterReference="surrogate-character-reference",e.characterReferenceOutsideUnicodeRange="character-reference-outside-unicode-range",e.controlCharacterReference="control-character-reference",e.noncharacterCharacterReference="noncharacter-character-reference",e.missingWhitespaceBeforeDoctypeName="missing-whitespace-before-doctype-name",e.missingDoctypeName="missing-doctype-name",e.invalidCharacterSequenceAfterDoctypeName="invalid-character-sequence-after-doctype-name",e.duplicateAttribute="duplicate-attribute",e.nonConformingDoctype="non-conforming-doctype",e.missingDoctype="missing-doctype",e.misplacedDoctype="misplaced-doctype",e.endTagWithoutMatchingOpenElement="end-tag-without-matching-open-element",e.closingOfElementWithOpenChildElements="closing-of-element-with-open-child-elements",e.disallowedContentInNoscriptInHead="disallowed-content-in-noscript-in-head",e.openElementsLeftAfterEof="open-elements-left-after-eof",e.abandonedHeadElementChild="abandoned-head-element-child",e.misplacedStartTagForHeadElement="misplaced-start-tag-for-head-element",e.nestedNoscriptInHead="nested-noscript-in-head",e.eofInElementThatCanContainOnlyText="eof-in-element-that-can-contain-only-text"})(P||(P={}));const dp=65536;class fp{constructor(t){this.handler=t,this.html="",this.pos=-1,this.lastGapPos=-2,this.gapStack=[],this.skipNextNewLine=!1,this.lastChunkWritten=!1,this.endOfChunkHit=!1,this.bufferWaterline=dp,this.isEol=!1,this.lineStartPos=0,this.droppedBufferSize=0,this.line=1,this.lastErrOffset=-1}get col(){return this.pos-this.lineStartPos+ +(this.lastGapPos!==this.pos)}get offset(){return this.droppedBufferSize+this.pos}getError(t,r){const{line:n,col:a,offset:i}=this,u=a+r,s=i+r;return{code:t,startLine:n,endLine:n,startCol:u,endCol:u,startOffset:s,endOffset:s}}_err(t){this.handler.onParseError&&this.lastErrOffset!==this.offset&&(this.lastErrOffset=this.offset,this.handler.onParseError(this.getError(t,0)))}_addGap(){this.gapStack.push(this.lastGapPos),this.lastGapPos=this.pos}_processSurrogate(t){if(this.pos!==this.html.length-1){const r=this.html.charCodeAt(this.pos+1);if(cp(r))return this.pos++,this._addGap(),hp(t,r)}else if(!this.lastChunkWritten)return this.endOfChunkHit=!0,T.EOF;return this._err(P.surrogateInInputStream),t}willDropParsedChunk(){return this.pos>this.bufferWaterline}dropParsedChunk(){this.willDropParsedChunk()&&(this.html=this.html.substring(this.pos),this.lineStartPos-=this.pos,this.droppedBufferSize+=this.pos,this.pos=0,this.lastGapPos=-2,this.gapStack.length=0)}write(t,r){this.html.length>0?this.html+=t:this.html=t,this.endOfChunkHit=!1,this.lastChunkWritten=r}insertHtmlAtCurrentPos(t){this.html=this.html.substring(0,this.pos+1)+t+this.html.substring(this.pos+1),this.endOfChunkHit=!1}startsWith(t,r){if(this.pos+t.length>this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,!1;if(r)return this.html.startsWith(t,this.pos);for(let n=0;n=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,T.EOF;const n=this.html.charCodeAt(r);return n===T.CARRIAGE_RETURN?T.LINE_FEED:n}advance(){if(this.pos++,this.isEol&&(this.isEol=!1,this.line++,this.lineStartPos=this.pos),this.pos>=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,T.EOF;let t=this.html.charCodeAt(this.pos);return t===T.CARRIAGE_RETURN?(this.isEol=!0,this.skipNextNewLine=!0,T.LINE_FEED):t===T.LINE_FEED&&(this.isEol=!0,this.skipNextNewLine)?(this.line--,this.skipNextNewLine=!1,this._addGap(),this.advance()):(this.skipNextNewLine=!1,uc(t)&&(t=this._processSurrogate(t)),this.handler.onParseError===null||t>31&&t<127||t===T.LINE_FEED||t===T.CARRIAGE_RETURN||t>159&&t<64976||this._checkForProblematicCharacters(t),t)}_checkForProblematicCharacters(t){sc(t)?this._err(P.controlCharacterInInputStream):lc(t)&&this._err(P.noncharacterInInputStream)}retreat(t){for(this.pos-=t;this.pos=0;r--)if(e.attrs[r].name===t)return e.attrs[r].value;return null}const mp=new Uint16Array('ᵁ<Õıʊҝջאٵ۞ޢߖࠏ੊ઑඡ๭༉༦჊ረዡᐕᒝᓃᓟᔥ\0\0\0\0\0\0ᕫᛍᦍᰒᷝ὾⁠↰⊍⏀⏻⑂⠤⤒ⴈ⹈⿎〖㊺㘹㞬㣾㨨㩱㫠㬮ࠀEMabcfglmnoprstu\\bfms„‹•˜¦³¹ÈÏlig耻Æ䃆P耻&䀦cute耻Á䃁reve;䄂Āiyx}rc耻Â䃂;䐐r;쀀𝔄rave耻À䃀pha;䎑acr;䄀d;橓Āgp¡on;䄄f;쀀𝔸plyFunction;恡ing耻Å䃅Ācs¾Ãr;쀀𝒜ign;扔ilde耻Ã䃃ml耻Ä䃄ЀaceforsuåûþėĜĢħĪĀcrêòkslash;或Ŷöø;櫧ed;挆y;䐑ƀcrtąċĔause;戵noullis;愬a;䎒r;쀀𝔅pf;쀀𝔹eve;䋘còēmpeq;扎܀HOacdefhilorsuōőŖƀƞƢƵƷƺǜȕɳɸɾcy;䐧PY耻©䂩ƀcpyŝŢźute;䄆Ā;iŧŨ拒talDifferentialD;慅leys;愭ȀaeioƉƎƔƘron;䄌dil耻Ç䃇rc;䄈nint;戰ot;䄊ĀdnƧƭilla;䂸terDot;䂷òſi;䎧rcleȀDMPTLJNjǑǖot;抙inus;抖lus;投imes;抗oĀcsǢǸkwiseContourIntegral;戲eCurlyĀDQȃȏoubleQuote;思uote;怙ȀlnpuȞȨɇɕonĀ;eȥȦ户;橴ƀgitȯȶȺruent;扡nt;戯ourIntegral;戮ĀfrɌɎ;愂oduct;成nterClockwiseContourIntegral;戳oss;樯cr;쀀𝒞pĀ;Cʄʅ拓ap;才րDJSZacefiosʠʬʰʴʸˋ˗ˡ˦̳ҍĀ;oŹʥtrahd;椑cy;䐂cy;䐅cy;䐏ƀgrsʿ˄ˇger;怡r;憡hv;櫤Āayː˕ron;䄎;䐔lĀ;t˝˞戇a;䎔r;쀀𝔇Āaf˫̧Ācm˰̢riticalȀADGT̖̜̀̆cute;䂴oŴ̋̍;䋙bleAcute;䋝rave;䁠ilde;䋜ond;拄ferentialD;慆Ѱ̽\0\0\0͔͂\0Ѕf;쀀𝔻ƀ;DE͈͉͍䂨ot;惜qual;扐blèCDLRUVͣͲ΂ϏϢϸontourIntegraìȹoɴ͹\0\0ͻ»͉nArrow;懓Āeo·ΤftƀARTΐΖΡrrow;懐ightArrow;懔eåˊngĀLRΫτeftĀARγιrrow;柸ightArrow;柺ightArrow;柹ightĀATϘϞrrow;懒ee;抨pɁϩ\0\0ϯrrow;懑ownArrow;懕erticalBar;戥ǹABLRTaВЪаўѿͼrrowƀ;BUНОТ憓ar;椓pArrow;懵reve;䌑eft˒к\0ц\0ѐightVector;楐eeVector;楞ectorĀ;Bљњ憽ar;楖ightǔѧ\0ѱeeVector;楟ectorĀ;BѺѻ懁ar;楗eeĀ;A҆҇护rrow;憧ĀctҒҗr;쀀𝒟rok;䄐ࠀNTacdfglmopqstuxҽӀӄӋӞӢӧӮӵԡԯԶՒ՝ՠեG;䅊H耻Ð䃐cute耻É䃉ƀaiyӒӗӜron;䄚rc耻Ê䃊;䐭ot;䄖r;쀀𝔈rave耻È䃈ement;戈ĀapӺӾcr;䄒tyɓԆ\0\0ԒmallSquare;旻erySmallSquare;斫ĀgpԦԪon;䄘f;쀀𝔼silon;䎕uĀaiԼՉlĀ;TՂՃ橵ilde;扂librium;懌Āci՗՚r;愰m;橳a;䎗ml耻Ë䃋Āipժկsts;戃onentialE;慇ʀcfiosօֈ֍ֲ׌y;䐤r;쀀𝔉lledɓ֗\0\0֣mallSquare;旼erySmallSquare;斪Ͱֺ\0ֿ\0\0ׄf;쀀𝔽All;戀riertrf;愱cò׋؀JTabcdfgorstר׬ׯ׺؀ؒؖ؛؝أ٬ٲcy;䐃耻>䀾mmaĀ;d׷׸䎓;䏜reve;䄞ƀeiy؇،ؐdil;䄢rc;䄜;䐓ot;䄠r;쀀𝔊;拙pf;쀀𝔾eater̀EFGLSTصلَٖٛ٦qualĀ;Lؾؿ扥ess;招ullEqual;执reater;檢ess;扷lantEqual;橾ilde;扳cr;쀀𝒢;扫ЀAacfiosuڅڋږڛڞڪھۊRDcy;䐪Āctڐڔek;䋇;䁞irc;䄤r;愌lbertSpace;愋ǰگ\0ڲf;愍izontalLine;攀Āctۃۅòکrok;䄦mpńېۘownHumðįqual;扏܀EJOacdfgmnostuۺ۾܃܇܎ܚܞܡܨ݄ݸދޏޕcy;䐕lig;䄲cy;䐁cute耻Í䃍Āiyܓܘrc耻Î䃎;䐘ot;䄰r;愑rave耻Ì䃌ƀ;apܠܯܿĀcgܴܷr;䄪inaryI;慈lieóϝǴ݉\0ݢĀ;eݍݎ戬Āgrݓݘral;戫section;拂isibleĀCTݬݲomma;恣imes;恢ƀgptݿރވon;䄮f;쀀𝕀a;䎙cr;愐ilde;䄨ǫޚ\0ޞcy;䐆l耻Ï䃏ʀcfosuެ޷޼߂ߐĀiyޱ޵rc;䄴;䐙r;쀀𝔍pf;쀀𝕁ǣ߇\0ߌr;쀀𝒥rcy;䐈kcy;䐄΀HJacfosߤߨ߽߬߱ࠂࠈcy;䐥cy;䐌ppa;䎚Āey߶߻dil;䄶;䐚r;쀀𝔎pf;쀀𝕂cr;쀀𝒦րJTaceflmostࠥࠩࠬࡐࡣ঳সে্਷ੇcy;䐉耻<䀼ʀcmnpr࠷࠼ࡁࡄࡍute;䄹bda;䎛g;柪lacetrf;愒r;憞ƀaeyࡗ࡜ࡡron;䄽dil;䄻;䐛Āfsࡨ॰tԀACDFRTUVarࡾࢩࢱࣦ࣠ࣼयज़ΐ४Ānrࢃ࢏gleBracket;柨rowƀ;BR࢙࢚࢞憐ar;懤ightArrow;懆eiling;挈oǵࢷ\0ࣃbleBracket;柦nǔࣈ\0࣒eeVector;楡ectorĀ;Bࣛࣜ懃ar;楙loor;挊ightĀAV࣯ࣵrrow;憔ector;楎Āerँगeƀ;AVउऊऐ抣rrow;憤ector;楚iangleƀ;BEतथऩ抲ar;槏qual;抴pƀDTVषूौownVector;楑eeVector;楠ectorĀ;Bॖॗ憿ar;楘ectorĀ;B॥०憼ar;楒ightáΜs̀EFGLSTॾঋকঝঢভqualGreater;拚ullEqual;扦reater;扶ess;檡lantEqual;橽ilde;扲r;쀀𝔏Ā;eঽা拘ftarrow;懚idot;䄿ƀnpw৔ਖਛgȀLRlr৞৷ਂਐeftĀAR০৬rrow;柵ightArrow;柷ightArrow;柶eftĀarγਊightáοightáϊf;쀀𝕃erĀLRਢਬeftArrow;憙ightArrow;憘ƀchtਾੀੂòࡌ;憰rok;䅁;扪Ѐacefiosuਗ਼੝੠੷੼અઋ઎p;椅y;䐜Ādl੥੯iumSpace;恟lintrf;愳r;쀀𝔐nusPlus;戓pf;쀀𝕄cò੶;䎜ҀJacefostuણધભીଔଙඑ඗ඞcy;䐊cute;䅃ƀaey઴હાron;䅇dil;䅅;䐝ƀgswે૰଎ativeƀMTV૓૟૨ediumSpace;怋hiĀcn૦૘ë૙eryThiî૙tedĀGL૸ଆreaterGreateòٳessLesóੈLine;䀊r;쀀𝔑ȀBnptଢନଷ଺reak;恠BreakingSpace;䂠f;愕ڀ;CDEGHLNPRSTV୕ୖ୪୼஡௫ఄ౞಄ದ೘ൡඅ櫬Āou୛୤ngruent;扢pCap;扭oubleVerticalBar;戦ƀlqxஃஊ஛ement;戉ualĀ;Tஒஓ扠ilde;쀀≂̸ists;戄reater΀;EFGLSTஶஷ஽௉௓௘௥扯qual;扱ullEqual;쀀≧̸reater;쀀≫̸ess;批lantEqual;쀀⩾̸ilde;扵umpń௲௽ownHump;쀀≎̸qual;쀀≏̸eĀfsఊధtTriangleƀ;BEచఛడ拪ar;쀀⧏̸qual;括s̀;EGLSTవశ఼ౄోౘ扮qual;扰reater;扸ess;쀀≪̸lantEqual;쀀⩽̸ilde;扴estedĀGL౨౹reaterGreater;쀀⪢̸essLess;쀀⪡̸recedesƀ;ESಒಓಛ技qual;쀀⪯̸lantEqual;拠ĀeiಫಹverseElement;戌ghtTriangleƀ;BEೋೌ೒拫ar;쀀⧐̸qual;拭ĀquೝഌuareSuĀbp೨೹setĀ;E೰ೳ쀀⊏̸qual;拢ersetĀ;Eഃആ쀀⊐̸qual;拣ƀbcpഓതൎsetĀ;Eഛഞ쀀⊂⃒qual;抈ceedsȀ;ESTലള഻െ抁qual;쀀⪰̸lantEqual;拡ilde;쀀≿̸ersetĀ;E൘൛쀀⊃⃒qual;抉ildeȀ;EFT൮൯൵ൿ扁qual;扄ullEqual;扇ilde;扉erticalBar;戤cr;쀀𝒩ilde耻Ñ䃑;䎝܀Eacdfgmoprstuvලෂ෉෕ෛ෠෧෼ขภยา฿ไlig;䅒cute耻Ó䃓Āiy෎ීrc耻Ô䃔;䐞blac;䅐r;쀀𝔒rave耻Ò䃒ƀaei෮ෲ෶cr;䅌ga;䎩cron;䎟pf;쀀𝕆enCurlyĀDQฎบoubleQuote;怜uote;怘;橔Āclวฬr;쀀𝒪ash耻Ø䃘iŬื฼de耻Õ䃕es;樷ml耻Ö䃖erĀBP๋๠Āar๐๓r;怾acĀek๚๜;揞et;掴arenthesis;揜Ҁacfhilors๿ງຊຏຒດຝະ໼rtialD;戂y;䐟r;쀀𝔓i;䎦;䎠usMinus;䂱Āipຢອncareplanåڝf;愙Ȁ;eio຺ູ໠໤檻cedesȀ;EST່້໏໚扺qual;檯lantEqual;扼ilde;找me;怳Ādp໩໮uct;戏ortionĀ;aȥ໹l;戝Āci༁༆r;쀀𝒫;䎨ȀUfos༑༖༛༟OT耻"䀢r;쀀𝔔pf;愚cr;쀀𝒬؀BEacefhiorsu༾གྷཇའཱིྦྷྪྭ႖ႩႴႾarr;椐G耻®䂮ƀcnrཎནབute;䅔g;柫rĀ;tཛྷཝ憠l;椖ƀaeyཧཬཱron;䅘dil;䅖;䐠Ā;vླྀཹ愜erseĀEUྂྙĀlq྇ྎement;戋uilibrium;懋pEquilibrium;楯r»ཹo;䎡ghtЀACDFTUVa࿁࿫࿳ဢဨၛႇϘĀnr࿆࿒gleBracket;柩rowƀ;BL࿜࿝࿡憒ar;懥eftArrow;懄eiling;按oǵ࿹\0စbleBracket;柧nǔည\0နeeVector;楝ectorĀ;Bဝသ懂ar;楕loor;挋Āerိ၃eƀ;AVဵံြ抢rrow;憦ector;楛iangleƀ;BEၐၑၕ抳ar;槐qual;抵pƀDTVၣၮၸownVector;楏eeVector;楜ectorĀ;Bႂႃ憾ar;楔ectorĀ;B႑႒懀ar;楓Āpuႛ႞f;愝ndImplies;楰ightarrow;懛ĀchႹႼr;愛;憱leDelayed;槴ڀHOacfhimoqstuფჱჷჽᄙᄞᅑᅖᅡᅧᆵᆻᆿĀCcჩხHcy;䐩y;䐨FTcy;䐬cute;䅚ʀ;aeiyᄈᄉᄎᄓᄗ檼ron;䅠dil;䅞rc;䅜;䐡r;쀀𝔖ortȀDLRUᄪᄴᄾᅉownArrow»ОeftArrow»࢚ightArrow»࿝pArrow;憑gma;䎣allCircle;战pf;쀀𝕊ɲᅭ\0\0ᅰt;戚areȀ;ISUᅻᅼᆉᆯ斡ntersection;抓uĀbpᆏᆞsetĀ;Eᆗᆘ抏qual;抑ersetĀ;Eᆨᆩ抐qual;抒nion;抔cr;쀀𝒮ar;拆ȀbcmpᇈᇛሉላĀ;sᇍᇎ拐etĀ;Eᇍᇕqual;抆ĀchᇠህeedsȀ;ESTᇭᇮᇴᇿ扻qual;檰lantEqual;扽ilde;承Tháྌ;我ƀ;esሒሓሣ拑rsetĀ;Eሜም抃qual;抇et»ሓրHRSacfhiorsሾቄ቉ቕ቞ቱቶኟዂወዑORN耻Þ䃞ADE;愢ĀHc቎ቒcy;䐋y;䐦Ābuቚቜ;䀉;䎤ƀaeyብቪቯron;䅤dil;䅢;䐢r;쀀𝔗Āeiቻ኉Dzኀ\0ኇefore;戴a;䎘Ācn኎ኘkSpace;쀀  Space;怉ldeȀ;EFTካኬኲኼ戼qual;扃ullEqual;扅ilde;扈pf;쀀𝕋ipleDot;惛Āctዖዛr;쀀𝒯rok;䅦ૡዷጎጚጦ\0ጬጱ\0\0\0\0\0ጸጽ፷ᎅ\0᏿ᐄᐊᐐĀcrዻጁute耻Ú䃚rĀ;oጇገ憟cir;楉rǣጓ\0጖y;䐎ve;䅬Āiyጞጣrc耻Û䃛;䐣blac;䅰r;쀀𝔘rave耻Ù䃙acr;䅪Ādiፁ፩erĀBPፈ፝Āarፍፐr;䁟acĀekፗፙ;揟et;掵arenthesis;揝onĀ;P፰፱拃lus;抎Āgp፻፿on;䅲f;쀀𝕌ЀADETadps᎕ᎮᎸᏄϨᏒᏗᏳrrowƀ;BDᅐᎠᎤar;椒ownArrow;懅ownArrow;憕quilibrium;楮eeĀ;AᏋᏌ报rrow;憥ownáϳerĀLRᏞᏨeftArrow;憖ightArrow;憗iĀ;lᏹᏺ䏒on;䎥ing;䅮cr;쀀𝒰ilde;䅨ml耻Ü䃜ҀDbcdefosvᐧᐬᐰᐳᐾᒅᒊᒐᒖash;披ar;櫫y;䐒ashĀ;lᐻᐼ抩;櫦Āerᑃᑅ;拁ƀbtyᑌᑐᑺar;怖Ā;iᑏᑕcalȀBLSTᑡᑥᑪᑴar;戣ine;䁼eparator;杘ilde;所ThinSpace;怊r;쀀𝔙pf;쀀𝕍cr;쀀𝒱dash;抪ʀcefosᒧᒬᒱᒶᒼirc;䅴dge;拀r;쀀𝔚pf;쀀𝕎cr;쀀𝒲Ȁfiosᓋᓐᓒᓘr;쀀𝔛;䎞pf;쀀𝕏cr;쀀𝒳ҀAIUacfosuᓱᓵᓹᓽᔄᔏᔔᔚᔠcy;䐯cy;䐇cy;䐮cute耻Ý䃝Āiyᔉᔍrc;䅶;䐫r;쀀𝔜pf;쀀𝕐cr;쀀𝒴ml;䅸ЀHacdefosᔵᔹᔿᕋᕏᕝᕠᕤcy;䐖cute;䅹Āayᕄᕉron;䅽;䐗ot;䅻Dzᕔ\0ᕛoWidtè૙a;䎖r;愨pf;愤cr;쀀𝒵௡ᖃᖊᖐ\0ᖰᖶᖿ\0\0\0\0ᗆᗛᗫᙟ᙭\0ᚕ᚛ᚲᚹ\0ᚾcute耻á䃡reve;䄃̀;Ediuyᖜᖝᖡᖣᖨᖭ戾;쀀∾̳;房rc耻â䃢te肻´̆;䐰lig耻æ䃦Ā;r²ᖺ;쀀𝔞rave耻à䃠ĀepᗊᗖĀfpᗏᗔsym;愵èᗓha;䎱ĀapᗟcĀclᗤᗧr;䄁g;樿ɤᗰ\0\0ᘊʀ;adsvᗺᗻᗿᘁᘇ戧nd;橕;橜lope;橘;橚΀;elmrszᘘᘙᘛᘞᘿᙏᙙ戠;榤e»ᘙsdĀ;aᘥᘦ戡ѡᘰᘲᘴᘶᘸᘺᘼᘾ;榨;榩;榪;榫;榬;榭;榮;榯tĀ;vᙅᙆ戟bĀ;dᙌᙍ抾;榝Āptᙔᙗh;戢»¹arr;捼Āgpᙣᙧon;䄅f;쀀𝕒΀;Eaeiop዁ᙻᙽᚂᚄᚇᚊ;橰cir;橯;扊d;手s;䀧roxĀ;e዁ᚒñᚃing耻å䃥ƀctyᚡᚦᚨr;쀀𝒶;䀪mpĀ;e዁ᚯñʈilde耻ã䃣ml耻ä䃤Āciᛂᛈoninôɲnt;樑ࠀNabcdefiklnoprsu᛭ᛱᜰ᜼ᝃᝈ᝸᝽០៦ᠹᡐᜍ᤽᥈ᥰot;櫭Ācrᛶ᜞kȀcepsᜀᜅᜍᜓong;扌psilon;䏶rime;怵imĀ;e᜚᜛戽q;拍Ŷᜢᜦee;抽edĀ;gᜬᜭ挅e»ᜭrkĀ;t፜᜷brk;掶Āoyᜁᝁ;䐱quo;怞ʀcmprtᝓ᝛ᝡᝤᝨausĀ;eĊĉptyv;榰séᜌnoõēƀahwᝯ᝱ᝳ;䎲;愶een;扬r;쀀𝔟g΀costuvwឍឝឳេ៕៛៞ƀaiuបពរðݠrc;旯p»፱ƀdptឤឨឭot;樀lus;樁imes;樂ɱឹ\0\0ើcup;樆ar;昅riangleĀdu៍្own;施p;斳plus;樄eåᑄåᒭarow;植ƀako៭ᠦᠵĀcn៲ᠣkƀlst៺֫᠂ozenge;槫riangleȀ;dlr᠒᠓᠘᠝斴own;斾eft;旂ight;斸k;搣Ʊᠫ\0ᠳƲᠯ\0ᠱ;斒;斑4;斓ck;斈ĀeoᠾᡍĀ;qᡃᡆ쀀=⃥uiv;쀀≡⃥t;挐Ȁptwxᡙᡞᡧᡬf;쀀𝕓Ā;tᏋᡣom»Ꮜtie;拈؀DHUVbdhmptuvᢅᢖᢪᢻᣗᣛᣬ᣿ᤅᤊᤐᤡȀLRlrᢎᢐᢒᢔ;敗;敔;敖;敓ʀ;DUduᢡᢢᢤᢦᢨ敐;敦;敩;敤;敧ȀLRlrᢳᢵᢷᢹ;敝;敚;敜;教΀;HLRhlrᣊᣋᣍᣏᣑᣓᣕ救;敬;散;敠;敫;敢;敟ox;槉ȀLRlrᣤᣦᣨᣪ;敕;敒;攐;攌ʀ;DUduڽ᣷᣹᣻᣽;敥;敨;攬;攴inus;抟lus;択imes;抠ȀLRlrᤙᤛᤝ᤟;敛;敘;攘;攔΀;HLRhlrᤰᤱᤳᤵᤷ᤻᤹攂;敪;敡;敞;攼;攤;攜Āevģ᥂bar耻¦䂦Ȁceioᥑᥖᥚᥠr;쀀𝒷mi;恏mĀ;e᜚᜜lƀ;bhᥨᥩᥫ䁜;槅sub;柈Ŭᥴ᥾lĀ;e᥹᥺怢t»᥺pƀ;Eeįᦅᦇ;檮Ā;qۜۛೡᦧ\0᧨ᨑᨕᨲ\0ᨷᩐ\0\0᪴\0\0᫁\0\0ᬡᬮ᭍᭒\0᯽\0ᰌƀcpr᦭ᦲ᧝ute;䄇̀;abcdsᦿᧀᧄ᧊᧕᧙戩nd;橄rcup;橉Āau᧏᧒p;橋p;橇ot;橀;쀀∩︀Āeo᧢᧥t;恁îړȀaeiu᧰᧻ᨁᨅǰ᧵\0᧸s;橍on;䄍dil耻ç䃧rc;䄉psĀ;sᨌᨍ橌m;橐ot;䄋ƀdmnᨛᨠᨦil肻¸ƭptyv;榲t脀¢;eᨭᨮ䂢räƲr;쀀𝔠ƀceiᨽᩀᩍy;䑇ckĀ;mᩇᩈ朓ark»ᩈ;䏇r΀;Ecefms᩟᩠ᩢᩫ᪤᪪᪮旋;槃ƀ;elᩩᩪᩭ䋆q;扗eɡᩴ\0\0᪈rrowĀlr᩼᪁eft;憺ight;憻ʀRSacd᪒᪔᪖᪚᪟»ཇ;擈st;抛irc;抚ash;抝nint;樐id;櫯cir;槂ubsĀ;u᪻᪼晣it»᪼ˬ᫇᫔᫺\0ᬊonĀ;eᫍᫎ䀺Ā;qÇÆɭ᫙\0\0᫢aĀ;t᫞᫟䀬;䁀ƀ;fl᫨᫩᫫戁îᅠeĀmx᫱᫶ent»᫩eóɍǧ᫾\0ᬇĀ;dኻᬂot;橭nôɆƀfryᬐᬔᬗ;쀀𝕔oäɔ脀©;sŕᬝr;愗Āaoᬥᬩrr;憵ss;朗Ācuᬲᬷr;쀀𝒸Ābpᬼ᭄Ā;eᭁᭂ櫏;櫑Ā;eᭉᭊ櫐;櫒dot;拯΀delprvw᭠᭬᭷ᮂᮬᯔ᯹arrĀlr᭨᭪;椸;椵ɰ᭲\0\0᭵r;拞c;拟arrĀ;p᭿ᮀ憶;椽̀;bcdosᮏᮐᮖᮡᮥᮨ截rcap;橈Āauᮛᮞp;橆p;橊ot;抍r;橅;쀀∪︀Ȁalrv᮵ᮿᯞᯣrrĀ;mᮼᮽ憷;椼yƀevwᯇᯔᯘqɰᯎ\0\0ᯒreã᭳uã᭵ee;拎edge;拏en耻¤䂤earrowĀlrᯮ᯳eft»ᮀight»ᮽeäᯝĀciᰁᰇoninôǷnt;戱lcty;挭ঀAHabcdefhijlorstuwz᰸᰻᰿ᱝᱩᱵᲊᲞᲬᲷ᳻᳿ᴍᵻᶑᶫᶻ᷆᷍rò΁ar;楥Ȁglrs᱈ᱍ᱒᱔ger;怠eth;愸òᄳhĀ;vᱚᱛ怐»ऊūᱡᱧarow;椏aã̕Āayᱮᱳron;䄏;䐴ƀ;ao̲ᱼᲄĀgrʿᲁr;懊tseq;橷ƀglmᲑᲔᲘ耻°䂰ta;䎴ptyv;榱ĀirᲣᲨsht;楿;쀀𝔡arĀlrᲳᲵ»ࣜ»သʀaegsv᳂͸᳖᳜᳠mƀ;oș᳊᳔ndĀ;ș᳑uit;晦amma;䏝in;拲ƀ;io᳧᳨᳸䃷de脀÷;o᳧ᳰntimes;拇nø᳷cy;䑒cɯᴆ\0\0ᴊrn;挞op;挍ʀlptuwᴘᴝᴢᵉᵕlar;䀤f;쀀𝕕ʀ;emps̋ᴭᴷᴽᵂqĀ;d͒ᴳot;扑inus;戸lus;戔quare;抡blebarwedgåúnƀadhᄮᵝᵧownarrowóᲃarpoonĀlrᵲᵶefôᲴighôᲶŢᵿᶅkaro÷གɯᶊ\0\0ᶎrn;挟op;挌ƀcotᶘᶣᶦĀryᶝᶡ;쀀𝒹;䑕l;槶rok;䄑Ādrᶰᶴot;拱iĀ;fᶺ᠖斿Āah᷀᷃ròЩaòྦangle;榦Āci᷒ᷕy;䑟grarr;柿ऀDacdefglmnopqrstuxḁḉḙḸոḼṉṡṾấắẽỡἪἷὄ὎὚ĀDoḆᴴoôᲉĀcsḎḔute耻é䃩ter;橮ȀaioyḢḧḱḶron;䄛rĀ;cḭḮ扖耻ê䃪lon;払;䑍ot;䄗ĀDrṁṅot;扒;쀀𝔢ƀ;rsṐṑṗ檚ave耻è䃨Ā;dṜṝ檖ot;檘Ȁ;ilsṪṫṲṴ檙nters;揧;愓Ā;dṹṺ檕ot;檗ƀapsẅẉẗcr;䄓tyƀ;svẒẓẕ戅et»ẓpĀ1;ẝẤijạả;怄;怅怃ĀgsẪẬ;䅋p;怂ĀgpẴẸon;䄙f;쀀𝕖ƀalsỄỎỒrĀ;sỊị拕l;槣us;橱iƀ;lvỚớở䎵on»ớ;䏵ȀcsuvỪỳἋἣĀioữḱrc»Ḯɩỹ\0\0ỻíՈantĀglἂἆtr»ṝess»Ṻƀaeiἒ἖Ἒls;䀽st;扟vĀ;DȵἠD;橸parsl;槥ĀDaἯἳot;打rr;楱ƀcdiἾὁỸr;愯oô͒ĀahὉὋ;䎷耻ð䃰Āmrὓὗl耻ë䃫o;悬ƀcipὡὤὧl;䀡sôծĀeoὬὴctatioîՙnentialåչৡᾒ\0ᾞ\0ᾡᾧ\0\0ῆῌ\0ΐ\0ῦῪ \0 ⁚llingdotseñṄy;䑄male;晀ƀilrᾭᾳ῁lig;耀ffiɩᾹ\0\0᾽g;耀ffig;耀ffl;쀀𝔣lig;耀filig;쀀fjƀaltῙ῜ῡt;晭ig;耀flns;斱of;䆒ǰ΅\0ῳf;쀀𝕗ĀakֿῷĀ;vῼ´拔;櫙artint;樍Āao‌⁕Ācs‑⁒ႉ‸⁅⁈\0⁐β•‥‧‪‬\0‮耻½䂽;慓耻¼䂼;慕;慙;慛Ƴ‴\0‶;慔;慖ʴ‾⁁\0\0⁃耻¾䂾;慗;慜5;慘ƶ⁌\0⁎;慚;慝8;慞l;恄wn;挢cr;쀀𝒻ࢀEabcdefgijlnorstv₂₉₟₥₰₴⃰⃵⃺⃿℃ℒℸ̗ℾ⅒↞Ā;lٍ₇;檌ƀcmpₐₕ₝ute;䇵maĀ;dₜ᳚䎳;檆reve;䄟Āiy₪₮rc;䄝;䐳ot;䄡Ȁ;lqsؾق₽⃉ƀ;qsؾٌ⃄lanô٥Ȁ;cdl٥⃒⃥⃕c;檩otĀ;o⃜⃝檀Ā;l⃢⃣檂;檄Ā;e⃪⃭쀀⋛︀s;檔r;쀀𝔤Ā;gٳ؛mel;愷cy;䑓Ȁ;Eajٚℌℎℐ;檒;檥;檤ȀEaesℛℝ℩ℴ;扩pĀ;p℣ℤ檊rox»ℤĀ;q℮ℯ檈Ā;q℮ℛim;拧pf;쀀𝕘Āci⅃ⅆr;愊mƀ;el٫ⅎ⅐;檎;檐茀>;cdlqr׮ⅠⅪⅮⅳⅹĀciⅥⅧ;檧r;橺ot;拗Par;榕uest;橼ʀadelsↄⅪ←ٖ↛ǰ↉\0↎proø₞r;楸qĀlqؿ↖lesó₈ií٫Āen↣↭rtneqq;쀀≩︀Å↪ԀAabcefkosy⇄⇇⇱⇵⇺∘∝∯≨≽ròΠȀilmr⇐⇔⇗⇛rsðᒄf»․ilôکĀdr⇠⇤cy;䑊ƀ;cwࣴ⇫⇯ir;楈;憭ar;意irc;䄥ƀalr∁∎∓rtsĀ;u∉∊晥it»∊lip;怦con;抹r;쀀𝔥sĀew∣∩arow;椥arow;椦ʀamopr∺∾≃≞≣rr;懿tht;戻kĀlr≉≓eftarrow;憩ightarrow;憪f;쀀𝕙bar;怕ƀclt≯≴≸r;쀀𝒽asè⇴rok;䄧Ābp⊂⊇ull;恃hen»ᱛૡ⊣\0⊪\0⊸⋅⋎\0⋕⋳\0\0⋸⌢⍧⍢⍿\0⎆⎪⎴cute耻í䃭ƀ;iyݱ⊰⊵rc耻î䃮;䐸Ācx⊼⊿y;䐵cl耻¡䂡ĀfrΟ⋉;쀀𝔦rave耻ì䃬Ȁ;inoܾ⋝⋩⋮Āin⋢⋦nt;樌t;戭fin;槜ta;愩lig;䄳ƀaop⋾⌚⌝ƀcgt⌅⌈⌗r;䄫ƀelpܟ⌏⌓inåގarôܠh;䄱f;抷ed;䆵ʀ;cfotӴ⌬⌱⌽⍁are;愅inĀ;t⌸⌹戞ie;槝doô⌙ʀ;celpݗ⍌⍐⍛⍡al;抺Āgr⍕⍙eróᕣã⍍arhk;樗rod;樼Ȁcgpt⍯⍲⍶⍻y;䑑on;䄯f;쀀𝕚a;䎹uest耻¿䂿Āci⎊⎏r;쀀𝒾nʀ;EdsvӴ⎛⎝⎡ӳ;拹ot;拵Ā;v⎦⎧拴;拳Ā;iݷ⎮lde;䄩ǫ⎸\0⎼cy;䑖l耻ï䃯̀cfmosu⏌⏗⏜⏡⏧⏵Āiy⏑⏕rc;䄵;䐹r;쀀𝔧ath;䈷pf;쀀𝕛ǣ⏬\0⏱r;쀀𝒿rcy;䑘kcy;䑔Ѐacfghjos␋␖␢␧␭␱␵␻ppaĀ;v␓␔䎺;䏰Āey␛␠dil;䄷;䐺r;쀀𝔨reen;䄸cy;䑅cy;䑜pf;쀀𝕜cr;쀀𝓀஀ABEHabcdefghjlmnoprstuv⑰⒁⒆⒍⒑┎┽╚▀♎♞♥♹♽⚚⚲⛘❝❨➋⟀⠁⠒ƀart⑷⑺⑼rò৆òΕail;椛arr;椎Ā;gঔ⒋;檋ar;楢ॣ⒥\0⒪\0⒱\0\0\0\0\0⒵Ⓔ\0ⓆⓈⓍ\0⓹ute;䄺mptyv;榴raîࡌbda;䎻gƀ;dlࢎⓁⓃ;榑åࢎ;檅uo耻«䂫rЀ;bfhlpst࢙ⓞⓦⓩ⓫⓮⓱⓵Ā;f࢝ⓣs;椟s;椝ë≒p;憫l;椹im;楳l;憢ƀ;ae⓿─┄檫il;椙Ā;s┉┊檭;쀀⪭︀ƀabr┕┙┝rr;椌rk;杲Āak┢┬cĀek┨┪;䁻;䁛Āes┱┳;榋lĀdu┹┻;榏;榍Ȁaeuy╆╋╖╘ron;䄾Ādi═╔il;䄼ìࢰâ┩;䐻Ȁcqrs╣╦╭╽a;椶uoĀ;rนᝆĀdu╲╷har;楧shar;楋h;憲ʀ;fgqs▋▌উ◳◿扤tʀahlrt▘▤▷◂◨rrowĀ;t࢙□aé⓶arpoonĀdu▯▴own»њp»०eftarrows;懇ightƀahs◍◖◞rrowĀ;sࣴࢧarpoonó྘quigarro÷⇰hreetimes;拋ƀ;qs▋ও◺lanôবʀ;cdgsব☊☍☝☨c;檨otĀ;o☔☕橿Ā;r☚☛檁;檃Ā;e☢☥쀀⋚︀s;檓ʀadegs☳☹☽♉♋pproøⓆot;拖qĀgq♃♅ôউgtò⒌ôছiíলƀilr♕࣡♚sht;楼;쀀𝔩Ā;Eজ♣;檑š♩♶rĀdu▲♮Ā;l॥♳;楪lk;斄cy;䑙ʀ;achtੈ⚈⚋⚑⚖rò◁orneòᴈard;楫ri;旺Āio⚟⚤dot;䅀ustĀ;a⚬⚭掰che»⚭ȀEaes⚻⚽⛉⛔;扨pĀ;p⛃⛄檉rox»⛄Ā;q⛎⛏檇Ā;q⛎⚻im;拦Ѐabnoptwz⛩⛴⛷✚✯❁❇❐Ānr⛮⛱g;柬r;懽rëࣁgƀlmr⛿✍✔eftĀar০✇ightá৲apsto;柼ightá৽parrowĀlr✥✩efô⓭ight;憬ƀafl✶✹✽r;榅;쀀𝕝us;樭imes;樴š❋❏st;戗áፎƀ;ef❗❘᠀旊nge»❘arĀ;l❤❥䀨t;榓ʀachmt❳❶❼➅➇ròࢨorneòᶌarĀ;d྘➃;業;怎ri;抿̀achiqt➘➝ੀ➢➮➻quo;怹r;쀀𝓁mƀ;egল➪➬;檍;檏Ābu┪➳oĀ;rฟ➹;怚rok;䅂萀<;cdhilqrࠫ⟒☹⟜⟠⟥⟪⟰Āci⟗⟙;檦r;橹reå◲mes;拉arr;楶uest;橻ĀPi⟵⟹ar;榖ƀ;ef⠀भ᠛旃rĀdu⠇⠍shar;楊har;楦Āen⠗⠡rtneqq;쀀≨︀Å⠞܀Dacdefhilnopsu⡀⡅⢂⢎⢓⢠⢥⢨⣚⣢⣤ઃ⣳⤂Dot;戺Ȁclpr⡎⡒⡣⡽r耻¯䂯Āet⡗⡙;時Ā;e⡞⡟朠se»⡟Ā;sျ⡨toȀ;dluျ⡳⡷⡻owîҌefôएðᏑker;斮Āoy⢇⢌mma;権;䐼ash;怔asuredangle»ᘦr;쀀𝔪o;愧ƀcdn⢯⢴⣉ro耻µ䂵Ȁ;acdᑤ⢽⣀⣄sôᚧir;櫰ot肻·Ƶusƀ;bd⣒ᤃ⣓戒Ā;uᴼ⣘;横ţ⣞⣡p;櫛ò−ðઁĀdp⣩⣮els;抧f;쀀𝕞Āct⣸⣽r;쀀𝓂pos»ᖝƀ;lm⤉⤊⤍䎼timap;抸ఀGLRVabcdefghijlmoprstuvw⥂⥓⥾⦉⦘⧚⧩⨕⨚⩘⩝⪃⪕⪤⪨⬄⬇⭄⭿⮮ⰴⱧⱼ⳩Āgt⥇⥋;쀀⋙̸Ā;v⥐௏쀀≫⃒ƀelt⥚⥲⥶ftĀar⥡⥧rrow;懍ightarrow;懎;쀀⋘̸Ā;v⥻ే쀀≪⃒ightarrow;懏ĀDd⦎⦓ash;抯ash;抮ʀbcnpt⦣⦧⦬⦱⧌la»˞ute;䅄g;쀀∠⃒ʀ;Eiop඄⦼⧀⧅⧈;쀀⩰̸d;쀀≋̸s;䅉roø඄urĀ;a⧓⧔普lĀ;s⧓ସdz⧟\0⧣p肻 ଷmpĀ;e௹ఀʀaeouy⧴⧾⨃⨐⨓ǰ⧹\0⧻;橃on;䅈dil;䅆ngĀ;dൾ⨊ot;쀀⩭̸p;橂;䐽ash;怓΀;Aadqsxஒ⨩⨭⨻⩁⩅⩐rr;懗rĀhr⨳⨶k;椤Ā;oᏲᏰot;쀀≐̸uiöୣĀei⩊⩎ar;椨í஘istĀ;s஠டr;쀀𝔫ȀEest௅⩦⩹⩼ƀ;qs஼⩭௡ƀ;qs஼௅⩴lanô௢ií௪Ā;rஶ⪁»ஷƀAap⪊⪍⪑rò⥱rr;憮ar;櫲ƀ;svྍ⪜ྌĀ;d⪡⪢拼;拺cy;䑚΀AEadest⪷⪺⪾⫂⫅⫶⫹rò⥦;쀀≦̸rr;憚r;急Ȁ;fqs఻⫎⫣⫯tĀar⫔⫙rro÷⫁ightarro÷⪐ƀ;qs఻⪺⫪lanôౕĀ;sౕ⫴»శiíౝĀ;rవ⫾iĀ;eచథiäඐĀpt⬌⬑f;쀀𝕟膀¬;in⬙⬚⬶䂬nȀ;Edvஉ⬤⬨⬮;쀀⋹̸ot;쀀⋵̸ǡஉ⬳⬵;拷;拶iĀ;vಸ⬼ǡಸ⭁⭃;拾;拽ƀaor⭋⭣⭩rȀ;ast୻⭕⭚⭟lleì୻l;쀀⫽⃥;쀀∂̸lint;樔ƀ;ceಒ⭰⭳uåಥĀ;cಘ⭸Ā;eಒ⭽ñಘȀAait⮈⮋⮝⮧rò⦈rrƀ;cw⮔⮕⮙憛;쀀⤳̸;쀀↝̸ghtarrow»⮕riĀ;eೋೖ΀chimpqu⮽⯍⯙⬄୸⯤⯯Ȁ;cerല⯆ഷ⯉uå൅;쀀𝓃ortɭ⬅\0\0⯖ará⭖mĀ;e൮⯟Ā;q൴൳suĀbp⯫⯭å೸åഋƀbcp⯶ⰑⰙȀ;Ees⯿ⰀഢⰄ抄;쀀⫅̸etĀ;eഛⰋqĀ;qണⰀcĀ;eലⰗñസȀ;EesⰢⰣൟⰧ抅;쀀⫆̸etĀ;e൘ⰮqĀ;qൠⰣȀgilrⰽⰿⱅⱇìௗlde耻ñ䃱çృiangleĀlrⱒⱜeftĀ;eచⱚñదightĀ;eೋⱥñ೗Ā;mⱬⱭ䎽ƀ;esⱴⱵⱹ䀣ro;愖p;怇ҀDHadgilrsⲏⲔⲙⲞⲣⲰⲶⳓⳣash;抭arr;椄p;쀀≍⃒ash;抬ĀetⲨⲬ;쀀≥⃒;쀀>⃒nfin;槞ƀAetⲽⳁⳅrr;椂;쀀≤⃒Ā;rⳊⳍ쀀<⃒ie;쀀⊴⃒ĀAtⳘⳜrr;椃rie;쀀⊵⃒im;쀀∼⃒ƀAan⳰⳴ⴂrr;懖rĀhr⳺⳽k;椣Ā;oᏧᏥear;椧ቓ᪕\0\0\0\0\0\0\0\0\0\0\0\0\0ⴭ\0ⴸⵈⵠⵥ⵲ⶄᬇ\0\0ⶍⶫ\0ⷈⷎ\0ⷜ⸙⸫⸾⹃Ācsⴱ᪗ute耻ó䃳ĀiyⴼⵅrĀ;c᪞ⵂ耻ô䃴;䐾ʀabios᪠ⵒⵗLjⵚlac;䅑v;樸old;榼lig;䅓Ācr⵩⵭ir;榿;쀀𝔬ͯ⵹\0\0⵼\0ⶂn;䋛ave耻ò䃲;槁Ābmⶈ෴ar;榵Ȁacitⶕ⶘ⶥⶨrò᪀Āir⶝ⶠr;榾oss;榻nå๒;槀ƀaeiⶱⶵⶹcr;䅍ga;䏉ƀcdnⷀⷅǍron;䎿;榶pf;쀀𝕠ƀaelⷔ⷗ǒr;榷rp;榹΀;adiosvⷪⷫⷮ⸈⸍⸐⸖戨rò᪆Ȁ;efmⷷⷸ⸂⸅橝rĀ;oⷾⷿ愴f»ⷿ耻ª䂪耻º䂺gof;抶r;橖lope;橗;橛ƀclo⸟⸡⸧ò⸁ash耻ø䃸l;折iŬⸯ⸴de耻õ䃵esĀ;aǛ⸺s;樶ml耻ö䃶bar;挽ૡ⹞\0⹽\0⺀⺝\0⺢⺹\0\0⻋ຜ\0⼓\0\0⼫⾼\0⿈rȀ;astЃ⹧⹲຅脀¶;l⹭⹮䂶leìЃɩ⹸\0\0⹻m;櫳;櫽y;䐿rʀcimpt⺋⺏⺓ᡥ⺗nt;䀥od;䀮il;怰enk;怱r;쀀𝔭ƀimo⺨⺰⺴Ā;v⺭⺮䏆;䏕maô੶ne;明ƀ;tv⺿⻀⻈䏀chfork»´;䏖Āau⻏⻟nĀck⻕⻝kĀ;h⇴⻛;愎ö⇴sҀ;abcdemst⻳⻴ᤈ⻹⻽⼄⼆⼊⼎䀫cir;樣ir;樢Āouᵀ⼂;樥;橲n肻±ຝim;樦wo;樧ƀipu⼙⼠⼥ntint;樕f;쀀𝕡nd耻£䂣Ԁ;Eaceinosu່⼿⽁⽄⽇⾁⾉⾒⽾⾶;檳p;檷uå໙Ā;c໎⽌̀;acens່⽙⽟⽦⽨⽾pproø⽃urlyeñ໙ñ໎ƀaes⽯⽶⽺pprox;檹qq;檵im;拨iíໟmeĀ;s⾈ຮ怲ƀEas⽸⾐⽺ð⽵ƀdfp໬⾙⾯ƀals⾠⾥⾪lar;挮ine;挒urf;挓Ā;t໻⾴ï໻rel;抰Āci⿀⿅r;쀀𝓅;䏈ncsp;怈̀fiopsu⿚⋢⿟⿥⿫⿱r;쀀𝔮pf;쀀𝕢rime;恗cr;쀀𝓆ƀaeo⿸〉〓tĀei⿾々rnionóڰnt;樖stĀ;e【】䀿ñἙô༔઀ABHabcdefhilmnoprstux぀けさすムㄎㄫㅇㅢㅲㆎ㈆㈕㈤㈩㉘㉮㉲㊐㊰㊷ƀartぇおがròႳòϝail;検aròᱥar;楤΀cdenqrtとふへみわゔヌĀeuねぱ;쀀∽̱te;䅕iãᅮmptyv;榳gȀ;del࿑らるろ;榒;榥å࿑uo耻»䂻rր;abcfhlpstw࿜ガクシスゼゾダッデナp;極Ā;f࿠ゴs;椠;椳s;椞ë≝ð✮l;楅im;楴l;憣;憝Āaiパフil;椚oĀ;nホボ戶aló༞ƀabrョリヮrò៥rk;杳ĀakンヽcĀekヹ・;䁽;䁝Āes㄂㄄;榌lĀduㄊㄌ;榎;榐Ȁaeuyㄗㄜㄧㄩron;䅙Ādiㄡㄥil;䅗ì࿲âヺ;䑀Ȁclqsㄴㄷㄽㅄa;椷dhar;楩uoĀ;rȎȍh;憳ƀacgㅎㅟངlȀ;ipsླྀㅘㅛႜnåႻarôྩt;断ƀilrㅩဣㅮsht;楽;쀀𝔯ĀaoㅷㆆrĀduㅽㅿ»ѻĀ;l႑ㆄ;楬Ā;vㆋㆌ䏁;䏱ƀgns㆕ㇹㇼht̀ahlrstㆤㆰ㇂㇘㇤㇮rrowĀ;t࿜ㆭaéトarpoonĀduㆻㆿowîㅾp»႒eftĀah㇊㇐rrowó࿪arpoonóՑightarrows;應quigarro÷ニhreetimes;拌g;䋚ingdotseñἲƀahm㈍㈐㈓rò࿪aòՑ;怏oustĀ;a㈞㈟掱che»㈟mid;櫮Ȁabpt㈲㈽㉀㉒Ānr㈷㈺g;柭r;懾rëဃƀafl㉇㉊㉎r;榆;쀀𝕣us;樮imes;樵Āap㉝㉧rĀ;g㉣㉤䀩t;榔olint;樒arò㇣Ȁachq㉻㊀Ⴜ㊅quo;怺r;쀀𝓇Ābu・㊊oĀ;rȔȓƀhir㊗㊛㊠reåㇸmes;拊iȀ;efl㊪ၙᠡ㊫方tri;槎luhar;楨;愞ൡ㋕㋛㋟㌬㌸㍱\0㍺㎤\0\0㏬㏰\0㐨㑈㑚㒭㒱㓊㓱\0㘖\0\0㘳cute;䅛quï➺Ԁ;Eaceinpsyᇭ㋳㋵㋿㌂㌋㌏㌟㌦㌩;檴ǰ㋺\0㋼;檸on;䅡uåᇾĀ;dᇳ㌇il;䅟rc;䅝ƀEas㌖㌘㌛;檶p;檺im;择olint;樓iíሄ;䑁otƀ;be㌴ᵇ㌵担;橦΀Aacmstx㍆㍊㍗㍛㍞㍣㍭rr;懘rĀhr㍐㍒ë∨Ā;oਸ਼਴t耻§䂧i;䀻war;椩mĀin㍩ðnuóñt;朶rĀ;o㍶⁕쀀𝔰Ȁacoy㎂㎆㎑㎠rp;景Āhy㎋㎏cy;䑉;䑈rtɭ㎙\0\0㎜iäᑤaraì⹯耻­䂭Āgm㎨㎴maƀ;fv㎱㎲㎲䏃;䏂Ѐ;deglnprካ㏅㏉㏎㏖㏞㏡㏦ot;橪Ā;q኱ኰĀ;E㏓㏔檞;檠Ā;E㏛㏜檝;檟e;扆lus;樤arr;楲aròᄽȀaeit㏸㐈㐏㐗Āls㏽㐄lsetmé㍪hp;樳parsl;槤Ādlᑣ㐔e;挣Ā;e㐜㐝檪Ā;s㐢㐣檬;쀀⪬︀ƀflp㐮㐳㑂tcy;䑌Ā;b㐸㐹䀯Ā;a㐾㐿槄r;挿f;쀀𝕤aĀdr㑍ЂesĀ;u㑔㑕晠it»㑕ƀcsu㑠㑹㒟Āau㑥㑯pĀ;sᆈ㑫;쀀⊓︀pĀ;sᆴ㑵;쀀⊔︀uĀbp㑿㒏ƀ;esᆗᆜ㒆etĀ;eᆗ㒍ñᆝƀ;esᆨᆭ㒖etĀ;eᆨ㒝ñᆮƀ;afᅻ㒦ְrť㒫ֱ»ᅼaròᅈȀcemt㒹㒾㓂㓅r;쀀𝓈tmîñiì㐕aræᆾĀar㓎㓕rĀ;f㓔ឿ昆Āan㓚㓭ightĀep㓣㓪psiloîỠhé⺯s»⡒ʀbcmnp㓻㕞ሉ㖋㖎Ҁ;Edemnprs㔎㔏㔑㔕㔞㔣㔬㔱㔶抂;櫅ot;檽Ā;dᇚ㔚ot;櫃ult;櫁ĀEe㔨㔪;櫋;把lus;檿arr;楹ƀeiu㔽㕒㕕tƀ;en㔎㕅㕋qĀ;qᇚ㔏eqĀ;q㔫㔨m;櫇Ābp㕚㕜;櫕;櫓c̀;acensᇭ㕬㕲㕹㕻㌦pproø㋺urlyeñᇾñᇳƀaes㖂㖈㌛pproø㌚qñ㌗g;晪ڀ123;Edehlmnps㖩㖬㖯ሜ㖲㖴㗀㗉㗕㗚㗟㗨㗭耻¹䂹耻²䂲耻³䂳;櫆Āos㖹㖼t;檾ub;櫘Ā;dሢ㗅ot;櫄sĀou㗏㗒l;柉b;櫗arr;楻ult;櫂ĀEe㗤㗦;櫌;抋lus;櫀ƀeiu㗴㘉㘌tƀ;enሜ㗼㘂qĀ;qሢ㖲eqĀ;q㗧㗤m;櫈Ābp㘑㘓;櫔;櫖ƀAan㘜㘠㘭rr;懙rĀhr㘦㘨ë∮Ā;oਫ਩war;椪lig耻ß䃟௡㙑㙝㙠ዎ㙳㙹\0㙾㛂\0\0\0\0\0㛛㜃\0㜉㝬\0\0\0㞇ɲ㙖\0\0㙛get;挖;䏄rë๟ƀaey㙦㙫㙰ron;䅥dil;䅣;䑂lrec;挕r;쀀𝔱Ȁeiko㚆㚝㚵㚼Dz㚋\0㚑eĀ4fኄኁaƀ;sv㚘㚙㚛䎸ym;䏑Ācn㚢㚲kĀas㚨㚮pproø዁im»ኬsðኞĀas㚺㚮ð዁rn耻þ䃾Ǭ̟㛆⋧es膀×;bd㛏㛐㛘䃗Ā;aᤏ㛕r;樱;樰ƀeps㛡㛣㜀á⩍Ȁ;bcf҆㛬㛰㛴ot;挶ir;櫱Ā;o㛹㛼쀀𝕥rk;櫚á㍢rime;怴ƀaip㜏㜒㝤dåቈ΀adempst㜡㝍㝀㝑㝗㝜㝟ngleʀ;dlqr㜰㜱㜶㝀㝂斵own»ᶻeftĀ;e⠀㜾ñम;扜ightĀ;e㊪㝋ñၚot;旬inus;樺lus;樹b;槍ime;樻ezium;揢ƀcht㝲㝽㞁Āry㝷㝻;쀀𝓉;䑆cy;䑛rok;䅧Āio㞋㞎xô᝷headĀlr㞗㞠eftarro÷ࡏightarrow»ཝऀAHabcdfghlmoprstuw㟐㟓㟗㟤㟰㟼㠎㠜㠣㠴㡑㡝㡫㢩㣌㣒㣪㣶ròϭar;楣Ācr㟜㟢ute耻ú䃺òᅐrǣ㟪\0㟭y;䑞ve;䅭Āiy㟵㟺rc耻û䃻;䑃ƀabh㠃㠆㠋ròᎭlac;䅱aòᏃĀir㠓㠘sht;楾;쀀𝔲rave耻ù䃹š㠧㠱rĀlr㠬㠮»ॗ»ႃlk;斀Āct㠹㡍ɯ㠿\0\0㡊rnĀ;e㡅㡆挜r»㡆op;挏ri;旸Āal㡖㡚cr;䅫肻¨͉Āgp㡢㡦on;䅳f;쀀𝕦̀adhlsuᅋ㡸㡽፲㢑㢠ownáᎳarpoonĀlr㢈㢌efô㠭ighô㠯iƀ;hl㢙㢚㢜䏅»ᏺon»㢚parrows;懈ƀcit㢰㣄㣈ɯ㢶\0\0㣁rnĀ;e㢼㢽挝r»㢽op;挎ng;䅯ri;旹cr;쀀𝓊ƀdir㣙㣝㣢ot;拰lde;䅩iĀ;f㜰㣨»᠓Āam㣯㣲rò㢨l耻ü䃼angle;榧ހABDacdeflnoprsz㤜㤟㤩㤭㦵㦸㦽㧟㧤㧨㧳㧹㧽㨁㨠ròϷarĀ;v㤦㤧櫨;櫩asèϡĀnr㤲㤷grt;榜΀eknprst㓣㥆㥋㥒㥝㥤㦖appá␕othinçẖƀhir㓫⻈㥙opô⾵Ā;hᎷ㥢ïㆍĀiu㥩㥭gmá㎳Ābp㥲㦄setneqĀ;q㥽㦀쀀⊊︀;쀀⫋︀setneqĀ;q㦏㦒쀀⊋︀;쀀⫌︀Āhr㦛㦟etá㚜iangleĀlr㦪㦯eft»थight»ၑy;䐲ash»ံƀelr㧄㧒㧗ƀ;beⷪ㧋㧏ar;抻q;扚lip;拮Ābt㧜ᑨaòᑩr;쀀𝔳tré㦮suĀbp㧯㧱»ജ»൙pf;쀀𝕧roð໻tré㦴Ācu㨆㨋r;쀀𝓋Ābp㨐㨘nĀEe㦀㨖»㥾nĀEe㦒㨞»㦐igzag;榚΀cefoprs㨶㨻㩖㩛㩔㩡㩪irc;䅵Ādi㩀㩑Ābg㩅㩉ar;機eĀ;qᗺ㩏;扙erp;愘r;쀀𝔴pf;쀀𝕨Ā;eᑹ㩦atèᑹcr;쀀𝓌ૣណ㪇\0㪋\0㪐㪛\0\0㪝㪨㪫㪯\0\0㫃㫎\0㫘ៜ៟tré៑r;쀀𝔵ĀAa㪔㪗ròσrò৶;䎾ĀAa㪡㪤ròθrò৫að✓is;拻ƀdptឤ㪵㪾Āfl㪺ឩ;쀀𝕩imåឲĀAa㫇㫊ròώròਁĀcq㫒ីr;쀀𝓍Āpt៖㫜ré។Ѐacefiosu㫰㫽㬈㬌㬑㬕㬛㬡cĀuy㫶㫻te耻ý䃽;䑏Āiy㬂㬆rc;䅷;䑋n耻¥䂥r;쀀𝔶cy;䑗pf;쀀𝕪cr;쀀𝓎Ācm㬦㬩y;䑎l耻ÿ䃿Ԁacdefhiosw㭂㭈㭔㭘㭤㭩㭭㭴㭺㮀cute;䅺Āay㭍㭒ron;䅾;䐷ot;䅼Āet㭝㭡træᕟa;䎶r;쀀𝔷cy;䐶grarr;懝pf;쀀𝕫cr;쀀𝓏Ājn㮅㮇;怍j;怌'.split("").map(e=>e.charCodeAt(0))),pp=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]);function gp(e){var t;return e>=55296&&e<=57343||e>1114111?65533:(t=pp.get(e))!==null&&t!==void 0?t:e}var qe;(function(e){e[e.NUM=35]="NUM",e[e.SEMI=59]="SEMI",e[e.EQUALS=61]="EQUALS",e[e.ZERO=48]="ZERO",e[e.NINE=57]="NINE",e[e.LOWER_A=97]="LOWER_A",e[e.LOWER_F=102]="LOWER_F",e[e.LOWER_X=120]="LOWER_X",e[e.LOWER_Z=122]="LOWER_Z",e[e.UPPER_A=65]="UPPER_A",e[e.UPPER_F=70]="UPPER_F",e[e.UPPER_Z=90]="UPPER_Z"})(qe||(qe={}));const bp=32;var Kt;(function(e){e[e.VALUE_LENGTH=49152]="VALUE_LENGTH",e[e.BRANCH_LENGTH=16256]="BRANCH_LENGTH",e[e.JUMP_TABLE=127]="JUMP_TABLE"})(Kt||(Kt={}));function $a(e){return e>=qe.ZERO&&e<=qe.NINE}function Ep(e){return e>=qe.UPPER_A&&e<=qe.UPPER_F||e>=qe.LOWER_A&&e<=qe.LOWER_F}function Tp(e){return e>=qe.UPPER_A&&e<=qe.UPPER_Z||e>=qe.LOWER_A&&e<=qe.LOWER_Z||$a(e)}function xp(e){return e===qe.EQUALS||Tp(e)}var Ue;(function(e){e[e.EntityStart=0]="EntityStart",e[e.NumericStart=1]="NumericStart",e[e.NumericDecimal=2]="NumericDecimal",e[e.NumericHex=3]="NumericHex",e[e.NamedEntity=4]="NamedEntity"})(Ue||(Ue={}));var Ft;(function(e){e[e.Legacy=0]="Legacy",e[e.Strict=1]="Strict",e[e.Attribute=2]="Attribute"})(Ft||(Ft={}));class yp{constructor(t,r,n){this.decodeTree=t,this.emitCodePoint=r,this.errors=n,this.state=Ue.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=Ft.Strict}startEntity(t){this.decodeMode=t,this.state=Ue.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1}write(t,r){switch(this.state){case Ue.EntityStart:return t.charCodeAt(r)===qe.NUM?(this.state=Ue.NumericStart,this.consumed+=1,this.stateNumericStart(t,r+1)):(this.state=Ue.NamedEntity,this.stateNamedEntity(t,r));case Ue.NumericStart:return this.stateNumericStart(t,r);case Ue.NumericDecimal:return this.stateNumericDecimal(t,r);case Ue.NumericHex:return this.stateNumericHex(t,r);case Ue.NamedEntity:return this.stateNamedEntity(t,r)}}stateNumericStart(t,r){return r>=t.length?-1:(t.charCodeAt(r)|bp)===qe.LOWER_X?(this.state=Ue.NumericHex,this.consumed+=1,this.stateNumericHex(t,r+1)):(this.state=Ue.NumericDecimal,this.stateNumericDecimal(t,r))}addToNumericResult(t,r,n,a){if(r!==n){const i=n-r;this.result=this.result*Math.pow(a,i)+Number.parseInt(t.substr(r,i),a),this.consumed+=i}}stateNumericHex(t,r){const n=r;for(;r>14;for(;r>14,i!==0){if(u===qe.SEMI)return this.emitNamedEntityData(this.treeIndex,i,this.consumed+this.excess);this.decodeMode!==Ft.Strict&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}}return-1}emitNotTerminatedNamedEntity(){var t;const{result:r,decodeTree:n}=this,a=(n[r]&Kt.VALUE_LENGTH)>>14;return this.emitNamedEntityData(r,a,this.consumed),(t=this.errors)===null||t===void 0||t.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(t,r,n){const{decodeTree:a}=this;return this.emitCodePoint(r===1?a[t]&~Kt.VALUE_LENGTH:a[t+1],n),r===3&&this.emitCodePoint(a[t+2],n),n}end(){var t;switch(this.state){case Ue.NamedEntity:return this.result!==0&&(this.decodeMode!==Ft.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case Ue.NumericDecimal:return this.emitNumericEntity(0,2);case Ue.NumericHex:return this.emitNumericEntity(0,3);case Ue.NumericStart:return(t=this.errors)===null||t===void 0||t.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case Ue.EntityStart:return 0}}}function vp(e,t,r,n){const a=(t&Kt.BRANCH_LENGTH)>>7,i=t&Kt.JUMP_TABLE;if(a===0)return i!==0&&n===i?r:-1;if(i){const l=n-i;return l<0||l>=a?-1:e[r+l]-1}let u=r,s=u+a-1;for(;u<=s;){const l=u+s>>>1,c=e[l];if(cn)s=l-1;else return e[l+a]}return-1}var H;(function(e){e.HTML="http://www.w3.org/1999/xhtml",e.MATHML="http://www.w3.org/1998/Math/MathML",e.SVG="http://www.w3.org/2000/svg",e.XLINK="http://www.w3.org/1999/xlink",e.XML="http://www.w3.org/XML/1998/namespace",e.XMLNS="http://www.w3.org/2000/xmlns/"})(H||(H={}));var mr;(function(e){e.TYPE="type",e.ACTION="action",e.ENCODING="encoding",e.PROMPT="prompt",e.NAME="name",e.COLOR="color",e.FACE="face",e.SIZE="size"})(mr||(mr={}));var pt;(function(e){e.NO_QUIRKS="no-quirks",e.QUIRKS="quirks",e.LIMITED_QUIRKS="limited-quirks"})(pt||(pt={}));var O;(function(e){e.A="a",e.ADDRESS="address",e.ANNOTATION_XML="annotation-xml",e.APPLET="applet",e.AREA="area",e.ARTICLE="article",e.ASIDE="aside",e.B="b",e.BASE="base",e.BASEFONT="basefont",e.BGSOUND="bgsound",e.BIG="big",e.BLOCKQUOTE="blockquote",e.BODY="body",e.BR="br",e.BUTTON="button",e.CAPTION="caption",e.CENTER="center",e.CODE="code",e.COL="col",e.COLGROUP="colgroup",e.DD="dd",e.DESC="desc",e.DETAILS="details",e.DIALOG="dialog",e.DIR="dir",e.DIV="div",e.DL="dl",e.DT="dt",e.EM="em",e.EMBED="embed",e.FIELDSET="fieldset",e.FIGCAPTION="figcaption",e.FIGURE="figure",e.FONT="font",e.FOOTER="footer",e.FOREIGN_OBJECT="foreignObject",e.FORM="form",e.FRAME="frame",e.FRAMESET="frameset",e.H1="h1",e.H2="h2",e.H3="h3",e.H4="h4",e.H5="h5",e.H6="h6",e.HEAD="head",e.HEADER="header",e.HGROUP="hgroup",e.HR="hr",e.HTML="html",e.I="i",e.IMG="img",e.IMAGE="image",e.INPUT="input",e.IFRAME="iframe",e.KEYGEN="keygen",e.LABEL="label",e.LI="li",e.LINK="link",e.LISTING="listing",e.MAIN="main",e.MALIGNMARK="malignmark",e.MARQUEE="marquee",e.MATH="math",e.MENU="menu",e.META="meta",e.MGLYPH="mglyph",e.MI="mi",e.MO="mo",e.MN="mn",e.MS="ms",e.MTEXT="mtext",e.NAV="nav",e.NOBR="nobr",e.NOFRAMES="noframes",e.NOEMBED="noembed",e.NOSCRIPT="noscript",e.OBJECT="object",e.OL="ol",e.OPTGROUP="optgroup",e.OPTION="option",e.P="p",e.PARAM="param",e.PLAINTEXT="plaintext",e.PRE="pre",e.RB="rb",e.RP="rp",e.RT="rt",e.RTC="rtc",e.RUBY="ruby",e.S="s",e.SCRIPT="script",e.SEARCH="search",e.SECTION="section",e.SELECT="select",e.SOURCE="source",e.SMALL="small",e.SPAN="span",e.STRIKE="strike",e.STRONG="strong",e.STYLE="style",e.SUB="sub",e.SUMMARY="summary",e.SUP="sup",e.TABLE="table",e.TBODY="tbody",e.TEMPLATE="template",e.TEXTAREA="textarea",e.TFOOT="tfoot",e.TD="td",e.TH="th",e.THEAD="thead",e.TITLE="title",e.TR="tr",e.TRACK="track",e.TT="tt",e.U="u",e.UL="ul",e.SVG="svg",e.VAR="var",e.WBR="wbr",e.XMP="xmp"})(O||(O={}));var o;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.A=1]="A",e[e.ADDRESS=2]="ADDRESS",e[e.ANNOTATION_XML=3]="ANNOTATION_XML",e[e.APPLET=4]="APPLET",e[e.AREA=5]="AREA",e[e.ARTICLE=6]="ARTICLE",e[e.ASIDE=7]="ASIDE",e[e.B=8]="B",e[e.BASE=9]="BASE",e[e.BASEFONT=10]="BASEFONT",e[e.BGSOUND=11]="BGSOUND",e[e.BIG=12]="BIG",e[e.BLOCKQUOTE=13]="BLOCKQUOTE",e[e.BODY=14]="BODY",e[e.BR=15]="BR",e[e.BUTTON=16]="BUTTON",e[e.CAPTION=17]="CAPTION",e[e.CENTER=18]="CENTER",e[e.CODE=19]="CODE",e[e.COL=20]="COL",e[e.COLGROUP=21]="COLGROUP",e[e.DD=22]="DD",e[e.DESC=23]="DESC",e[e.DETAILS=24]="DETAILS",e[e.DIALOG=25]="DIALOG",e[e.DIR=26]="DIR",e[e.DIV=27]="DIV",e[e.DL=28]="DL",e[e.DT=29]="DT",e[e.EM=30]="EM",e[e.EMBED=31]="EMBED",e[e.FIELDSET=32]="FIELDSET",e[e.FIGCAPTION=33]="FIGCAPTION",e[e.FIGURE=34]="FIGURE",e[e.FONT=35]="FONT",e[e.FOOTER=36]="FOOTER",e[e.FOREIGN_OBJECT=37]="FOREIGN_OBJECT",e[e.FORM=38]="FORM",e[e.FRAME=39]="FRAME",e[e.FRAMESET=40]="FRAMESET",e[e.H1=41]="H1",e[e.H2=42]="H2",e[e.H3=43]="H3",e[e.H4=44]="H4",e[e.H5=45]="H5",e[e.H6=46]="H6",e[e.HEAD=47]="HEAD",e[e.HEADER=48]="HEADER",e[e.HGROUP=49]="HGROUP",e[e.HR=50]="HR",e[e.HTML=51]="HTML",e[e.I=52]="I",e[e.IMG=53]="IMG",e[e.IMAGE=54]="IMAGE",e[e.INPUT=55]="INPUT",e[e.IFRAME=56]="IFRAME",e[e.KEYGEN=57]="KEYGEN",e[e.LABEL=58]="LABEL",e[e.LI=59]="LI",e[e.LINK=60]="LINK",e[e.LISTING=61]="LISTING",e[e.MAIN=62]="MAIN",e[e.MALIGNMARK=63]="MALIGNMARK",e[e.MARQUEE=64]="MARQUEE",e[e.MATH=65]="MATH",e[e.MENU=66]="MENU",e[e.META=67]="META",e[e.MGLYPH=68]="MGLYPH",e[e.MI=69]="MI",e[e.MO=70]="MO",e[e.MN=71]="MN",e[e.MS=72]="MS",e[e.MTEXT=73]="MTEXT",e[e.NAV=74]="NAV",e[e.NOBR=75]="NOBR",e[e.NOFRAMES=76]="NOFRAMES",e[e.NOEMBED=77]="NOEMBED",e[e.NOSCRIPT=78]="NOSCRIPT",e[e.OBJECT=79]="OBJECT",e[e.OL=80]="OL",e[e.OPTGROUP=81]="OPTGROUP",e[e.OPTION=82]="OPTION",e[e.P=83]="P",e[e.PARAM=84]="PARAM",e[e.PLAINTEXT=85]="PLAINTEXT",e[e.PRE=86]="PRE",e[e.RB=87]="RB",e[e.RP=88]="RP",e[e.RT=89]="RT",e[e.RTC=90]="RTC",e[e.RUBY=91]="RUBY",e[e.S=92]="S",e[e.SCRIPT=93]="SCRIPT",e[e.SEARCH=94]="SEARCH",e[e.SECTION=95]="SECTION",e[e.SELECT=96]="SELECT",e[e.SOURCE=97]="SOURCE",e[e.SMALL=98]="SMALL",e[e.SPAN=99]="SPAN",e[e.STRIKE=100]="STRIKE",e[e.STRONG=101]="STRONG",e[e.STYLE=102]="STYLE",e[e.SUB=103]="SUB",e[e.SUMMARY=104]="SUMMARY",e[e.SUP=105]="SUP",e[e.TABLE=106]="TABLE",e[e.TBODY=107]="TBODY",e[e.TEMPLATE=108]="TEMPLATE",e[e.TEXTAREA=109]="TEXTAREA",e[e.TFOOT=110]="TFOOT",e[e.TD=111]="TD",e[e.TH=112]="TH",e[e.THEAD=113]="THEAD",e[e.TITLE=114]="TITLE",e[e.TR=115]="TR",e[e.TRACK=116]="TRACK",e[e.TT=117]="TT",e[e.U=118]="U",e[e.UL=119]="UL",e[e.SVG=120]="SVG",e[e.VAR=121]="VAR",e[e.WBR=122]="WBR",e[e.XMP=123]="XMP"})(o||(o={}));const Ap=new Map([[O.A,o.A],[O.ADDRESS,o.ADDRESS],[O.ANNOTATION_XML,o.ANNOTATION_XML],[O.APPLET,o.APPLET],[O.AREA,o.AREA],[O.ARTICLE,o.ARTICLE],[O.ASIDE,o.ASIDE],[O.B,o.B],[O.BASE,o.BASE],[O.BASEFONT,o.BASEFONT],[O.BGSOUND,o.BGSOUND],[O.BIG,o.BIG],[O.BLOCKQUOTE,o.BLOCKQUOTE],[O.BODY,o.BODY],[O.BR,o.BR],[O.BUTTON,o.BUTTON],[O.CAPTION,o.CAPTION],[O.CENTER,o.CENTER],[O.CODE,o.CODE],[O.COL,o.COL],[O.COLGROUP,o.COLGROUP],[O.DD,o.DD],[O.DESC,o.DESC],[O.DETAILS,o.DETAILS],[O.DIALOG,o.DIALOG],[O.DIR,o.DIR],[O.DIV,o.DIV],[O.DL,o.DL],[O.DT,o.DT],[O.EM,o.EM],[O.EMBED,o.EMBED],[O.FIELDSET,o.FIELDSET],[O.FIGCAPTION,o.FIGCAPTION],[O.FIGURE,o.FIGURE],[O.FONT,o.FONT],[O.FOOTER,o.FOOTER],[O.FOREIGN_OBJECT,o.FOREIGN_OBJECT],[O.FORM,o.FORM],[O.FRAME,o.FRAME],[O.FRAMESET,o.FRAMESET],[O.H1,o.H1],[O.H2,o.H2],[O.H3,o.H3],[O.H4,o.H4],[O.H5,o.H5],[O.H6,o.H6],[O.HEAD,o.HEAD],[O.HEADER,o.HEADER],[O.HGROUP,o.HGROUP],[O.HR,o.HR],[O.HTML,o.HTML],[O.I,o.I],[O.IMG,o.IMG],[O.IMAGE,o.IMAGE],[O.INPUT,o.INPUT],[O.IFRAME,o.IFRAME],[O.KEYGEN,o.KEYGEN],[O.LABEL,o.LABEL],[O.LI,o.LI],[O.LINK,o.LINK],[O.LISTING,o.LISTING],[O.MAIN,o.MAIN],[O.MALIGNMARK,o.MALIGNMARK],[O.MARQUEE,o.MARQUEE],[O.MATH,o.MATH],[O.MENU,o.MENU],[O.META,o.META],[O.MGLYPH,o.MGLYPH],[O.MI,o.MI],[O.MO,o.MO],[O.MN,o.MN],[O.MS,o.MS],[O.MTEXT,o.MTEXT],[O.NAV,o.NAV],[O.NOBR,o.NOBR],[O.NOFRAMES,o.NOFRAMES],[O.NOEMBED,o.NOEMBED],[O.NOSCRIPT,o.NOSCRIPT],[O.OBJECT,o.OBJECT],[O.OL,o.OL],[O.OPTGROUP,o.OPTGROUP],[O.OPTION,o.OPTION],[O.P,o.P],[O.PARAM,o.PARAM],[O.PLAINTEXT,o.PLAINTEXT],[O.PRE,o.PRE],[O.RB,o.RB],[O.RP,o.RP],[O.RT,o.RT],[O.RTC,o.RTC],[O.RUBY,o.RUBY],[O.S,o.S],[O.SCRIPT,o.SCRIPT],[O.SEARCH,o.SEARCH],[O.SECTION,o.SECTION],[O.SELECT,o.SELECT],[O.SOURCE,o.SOURCE],[O.SMALL,o.SMALL],[O.SPAN,o.SPAN],[O.STRIKE,o.STRIKE],[O.STRONG,o.STRONG],[O.STYLE,o.STYLE],[O.SUB,o.SUB],[O.SUMMARY,o.SUMMARY],[O.SUP,o.SUP],[O.TABLE,o.TABLE],[O.TBODY,o.TBODY],[O.TEMPLATE,o.TEMPLATE],[O.TEXTAREA,o.TEXTAREA],[O.TFOOT,o.TFOOT],[O.TD,o.TD],[O.TH,o.TH],[O.THEAD,o.THEAD],[O.TITLE,o.TITLE],[O.TR,o.TR],[O.TRACK,o.TRACK],[O.TT,o.TT],[O.U,o.U],[O.UL,o.UL],[O.SVG,o.SVG],[O.VAR,o.VAR],[O.WBR,o.WBR],[O.XMP,o.XMP]]);function qr(e){var t;return(t=Ap.get(e))!==null&&t!==void 0?t:o.UNKNOWN}const U=o,kp={[H.HTML]:new Set([U.ADDRESS,U.APPLET,U.AREA,U.ARTICLE,U.ASIDE,U.BASE,U.BASEFONT,U.BGSOUND,U.BLOCKQUOTE,U.BODY,U.BR,U.BUTTON,U.CAPTION,U.CENTER,U.COL,U.COLGROUP,U.DD,U.DETAILS,U.DIR,U.DIV,U.DL,U.DT,U.EMBED,U.FIELDSET,U.FIGCAPTION,U.FIGURE,U.FOOTER,U.FORM,U.FRAME,U.FRAMESET,U.H1,U.H2,U.H3,U.H4,U.H5,U.H6,U.HEAD,U.HEADER,U.HGROUP,U.HR,U.HTML,U.IFRAME,U.IMG,U.INPUT,U.LI,U.LINK,U.LISTING,U.MAIN,U.MARQUEE,U.MENU,U.META,U.NAV,U.NOEMBED,U.NOFRAMES,U.NOSCRIPT,U.OBJECT,U.OL,U.P,U.PARAM,U.PLAINTEXT,U.PRE,U.SCRIPT,U.SECTION,U.SELECT,U.SOURCE,U.STYLE,U.SUMMARY,U.TABLE,U.TBODY,U.TD,U.TEMPLATE,U.TEXTAREA,U.TFOOT,U.TH,U.THEAD,U.TITLE,U.TR,U.TRACK,U.UL,U.WBR,U.XMP]),[H.MATHML]:new Set([U.MI,U.MO,U.MN,U.MS,U.MTEXT,U.ANNOTATION_XML]),[H.SVG]:new Set([U.TITLE,U.FOREIGN_OBJECT,U.DESC]),[H.XLINK]:new Set,[H.XML]:new Set,[H.XMLNS]:new Set},Qa=new Set([U.H1,U.H2,U.H3,U.H4,U.H5,U.H6]);O.STYLE,O.SCRIPT,O.XMP,O.IFRAME,O.NOEMBED,O.NOFRAMES,O.PLAINTEXT;var y;(function(e){e[e.DATA=0]="DATA",e[e.RCDATA=1]="RCDATA",e[e.RAWTEXT=2]="RAWTEXT",e[e.SCRIPT_DATA=3]="SCRIPT_DATA",e[e.PLAINTEXT=4]="PLAINTEXT",e[e.TAG_OPEN=5]="TAG_OPEN",e[e.END_TAG_OPEN=6]="END_TAG_OPEN",e[e.TAG_NAME=7]="TAG_NAME",e[e.RCDATA_LESS_THAN_SIGN=8]="RCDATA_LESS_THAN_SIGN",e[e.RCDATA_END_TAG_OPEN=9]="RCDATA_END_TAG_OPEN",e[e.RCDATA_END_TAG_NAME=10]="RCDATA_END_TAG_NAME",e[e.RAWTEXT_LESS_THAN_SIGN=11]="RAWTEXT_LESS_THAN_SIGN",e[e.RAWTEXT_END_TAG_OPEN=12]="RAWTEXT_END_TAG_OPEN",e[e.RAWTEXT_END_TAG_NAME=13]="RAWTEXT_END_TAG_NAME",e[e.SCRIPT_DATA_LESS_THAN_SIGN=14]="SCRIPT_DATA_LESS_THAN_SIGN",e[e.SCRIPT_DATA_END_TAG_OPEN=15]="SCRIPT_DATA_END_TAG_OPEN",e[e.SCRIPT_DATA_END_TAG_NAME=16]="SCRIPT_DATA_END_TAG_NAME",e[e.SCRIPT_DATA_ESCAPE_START=17]="SCRIPT_DATA_ESCAPE_START",e[e.SCRIPT_DATA_ESCAPE_START_DASH=18]="SCRIPT_DATA_ESCAPE_START_DASH",e[e.SCRIPT_DATA_ESCAPED=19]="SCRIPT_DATA_ESCAPED",e[e.SCRIPT_DATA_ESCAPED_DASH=20]="SCRIPT_DATA_ESCAPED_DASH",e[e.SCRIPT_DATA_ESCAPED_DASH_DASH=21]="SCRIPT_DATA_ESCAPED_DASH_DASH",e[e.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN=22]="SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN",e[e.SCRIPT_DATA_ESCAPED_END_TAG_OPEN=23]="SCRIPT_DATA_ESCAPED_END_TAG_OPEN",e[e.SCRIPT_DATA_ESCAPED_END_TAG_NAME=24]="SCRIPT_DATA_ESCAPED_END_TAG_NAME",e[e.SCRIPT_DATA_DOUBLE_ESCAPE_START=25]="SCRIPT_DATA_DOUBLE_ESCAPE_START",e[e.SCRIPT_DATA_DOUBLE_ESCAPED=26]="SCRIPT_DATA_DOUBLE_ESCAPED",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH=27]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH=28]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN=29]="SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN",e[e.SCRIPT_DATA_DOUBLE_ESCAPE_END=30]="SCRIPT_DATA_DOUBLE_ESCAPE_END",e[e.BEFORE_ATTRIBUTE_NAME=31]="BEFORE_ATTRIBUTE_NAME",e[e.ATTRIBUTE_NAME=32]="ATTRIBUTE_NAME",e[e.AFTER_ATTRIBUTE_NAME=33]="AFTER_ATTRIBUTE_NAME",e[e.BEFORE_ATTRIBUTE_VALUE=34]="BEFORE_ATTRIBUTE_VALUE",e[e.ATTRIBUTE_VALUE_DOUBLE_QUOTED=35]="ATTRIBUTE_VALUE_DOUBLE_QUOTED",e[e.ATTRIBUTE_VALUE_SINGLE_QUOTED=36]="ATTRIBUTE_VALUE_SINGLE_QUOTED",e[e.ATTRIBUTE_VALUE_UNQUOTED=37]="ATTRIBUTE_VALUE_UNQUOTED",e[e.AFTER_ATTRIBUTE_VALUE_QUOTED=38]="AFTER_ATTRIBUTE_VALUE_QUOTED",e[e.SELF_CLOSING_START_TAG=39]="SELF_CLOSING_START_TAG",e[e.BOGUS_COMMENT=40]="BOGUS_COMMENT",e[e.MARKUP_DECLARATION_OPEN=41]="MARKUP_DECLARATION_OPEN",e[e.COMMENT_START=42]="COMMENT_START",e[e.COMMENT_START_DASH=43]="COMMENT_START_DASH",e[e.COMMENT=44]="COMMENT",e[e.COMMENT_LESS_THAN_SIGN=45]="COMMENT_LESS_THAN_SIGN",e[e.COMMENT_LESS_THAN_SIGN_BANG=46]="COMMENT_LESS_THAN_SIGN_BANG",e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH=47]="COMMENT_LESS_THAN_SIGN_BANG_DASH",e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH=48]="COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH",e[e.COMMENT_END_DASH=49]="COMMENT_END_DASH",e[e.COMMENT_END=50]="COMMENT_END",e[e.COMMENT_END_BANG=51]="COMMENT_END_BANG",e[e.DOCTYPE=52]="DOCTYPE",e[e.BEFORE_DOCTYPE_NAME=53]="BEFORE_DOCTYPE_NAME",e[e.DOCTYPE_NAME=54]="DOCTYPE_NAME",e[e.AFTER_DOCTYPE_NAME=55]="AFTER_DOCTYPE_NAME",e[e.AFTER_DOCTYPE_PUBLIC_KEYWORD=56]="AFTER_DOCTYPE_PUBLIC_KEYWORD",e[e.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER=57]="BEFORE_DOCTYPE_PUBLIC_IDENTIFIER",e[e.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED=58]="DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED",e[e.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED=59]="DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED",e[e.AFTER_DOCTYPE_PUBLIC_IDENTIFIER=60]="AFTER_DOCTYPE_PUBLIC_IDENTIFIER",e[e.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS=61]="BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS",e[e.AFTER_DOCTYPE_SYSTEM_KEYWORD=62]="AFTER_DOCTYPE_SYSTEM_KEYWORD",e[e.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER=63]="BEFORE_DOCTYPE_SYSTEM_IDENTIFIER",e[e.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED=64]="DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED",e[e.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED=65]="DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED",e[e.AFTER_DOCTYPE_SYSTEM_IDENTIFIER=66]="AFTER_DOCTYPE_SYSTEM_IDENTIFIER",e[e.BOGUS_DOCTYPE=67]="BOGUS_DOCTYPE",e[e.CDATA_SECTION=68]="CDATA_SECTION",e[e.CDATA_SECTION_BRACKET=69]="CDATA_SECTION_BRACKET",e[e.CDATA_SECTION_END=70]="CDATA_SECTION_END",e[e.CHARACTER_REFERENCE=71]="CHARACTER_REFERENCE",e[e.AMBIGUOUS_AMPERSAND=72]="AMBIGUOUS_AMPERSAND"})(y||(y={}));const De={DATA:y.DATA,RCDATA:y.RCDATA,RAWTEXT:y.RAWTEXT,SCRIPT_DATA:y.SCRIPT_DATA,PLAINTEXT:y.PLAINTEXT,CDATA_SECTION:y.CDATA_SECTION};function Sp(e){return e>=T.DIGIT_0&&e<=T.DIGIT_9}function rn(e){return e>=T.LATIN_CAPITAL_A&&e<=T.LATIN_CAPITAL_Z}function wp(e){return e>=T.LATIN_SMALL_A&&e<=T.LATIN_SMALL_Z}function Xt(e){return wp(e)||rn(e)}function Cs(e){return Xt(e)||Sp(e)}function Wn(e){return e+32}function cc(e){return e===T.SPACE||e===T.LINE_FEED||e===T.TABULATION||e===T.FORM_FEED}function _s(e){return cc(e)||e===T.SOLIDUS||e===T.GREATER_THAN_SIGN}function Cp(e){return e===T.NULL?P.nullCharacterReference:e>1114111?P.characterReferenceOutsideUnicodeRange:uc(e)?P.surrogateCharacterReference:lc(e)?P.noncharacterCharacterReference:sc(e)||e===T.CARRIAGE_RETURN?P.controlCharacterReference:null}class _p{constructor(t,r){this.options=t,this.handler=r,this.paused=!1,this.inLoop=!1,this.inForeignNode=!1,this.lastStartTagName="",this.active=!1,this.state=y.DATA,this.returnState=y.DATA,this.entityStartPos=0,this.consumedAfterSnapshot=-1,this.currentCharacterToken=null,this.currentToken=null,this.currentAttr={name:"",value:""},this.preprocessor=new fp(r),this.currentLocation=this.getCurrentLocation(-1),this.entityDecoder=new yp(mp,(n,a)=>{this.preprocessor.pos=this.entityStartPos+a-1,this._flushCodePointConsumedAsCharacterReference(n)},r.onParseError?{missingSemicolonAfterCharacterReference:()=>{this._err(P.missingSemicolonAfterCharacterReference,1)},absenceOfDigitsInNumericCharacterReference:n=>{this._err(P.absenceOfDigitsInNumericCharacterReference,this.entityStartPos-this.preprocessor.pos+n)},validateNumericCharacterReference:n=>{const a=Cp(n);a&&this._err(a,1)}}:void 0)}_err(t,r=0){var n,a;(a=(n=this.handler).onParseError)===null||a===void 0||a.call(n,this.preprocessor.getError(t,r))}getCurrentLocation(t){return this.options.sourceCodeLocationInfo?{startLine:this.preprocessor.line,startCol:this.preprocessor.col-t,startOffset:this.preprocessor.offset-t,endLine:-1,endCol:-1,endOffset:-1}:null}_runParsingLoop(){if(!this.inLoop){for(this.inLoop=!0;this.active&&!this.paused;){this.consumedAfterSnapshot=0;const t=this._consume();this._ensureHibernation()||this._callState(t)}this.inLoop=!1}}pause(){this.paused=!0}resume(t){if(!this.paused)throw new Error("Parser was already resumed");this.paused=!1,!this.inLoop&&(this._runParsingLoop(),this.paused||t?.())}write(t,r,n){this.active=!0,this.preprocessor.write(t,r),this._runParsingLoop(),this.paused||n?.()}insertHtmlAtCurrentPos(t){this.active=!0,this.preprocessor.insertHtmlAtCurrentPos(t),this._runParsingLoop()}_ensureHibernation(){return this.preprocessor.endOfChunkHit?(this.preprocessor.retreat(this.consumedAfterSnapshot),this.consumedAfterSnapshot=0,this.active=!1,!0):!1}_consume(){return this.consumedAfterSnapshot++,this.preprocessor.advance()}_advanceBy(t){this.consumedAfterSnapshot+=t;for(let r=0;r0&&this._err(P.endTagWithAttributes),t.selfClosing&&this._err(P.endTagWithTrailingSolidus),this.handler.onEndTag(t)),this.preprocessor.dropParsedChunk()}emitCurrentComment(t){this.prepareToken(t),this.handler.onComment(t),this.preprocessor.dropParsedChunk()}emitCurrentDoctype(t){this.prepareToken(t),this.handler.onDoctype(t),this.preprocessor.dropParsedChunk()}_emitCurrentCharacterToken(t){if(this.currentCharacterToken){switch(t&&this.currentCharacterToken.location&&(this.currentCharacterToken.location.endLine=t.startLine,this.currentCharacterToken.location.endCol=t.startCol,this.currentCharacterToken.location.endOffset=t.startOffset),this.currentCharacterToken.type){case de.CHARACTER:{this.handler.onCharacter(this.currentCharacterToken);break}case de.NULL_CHARACTER:{this.handler.onNullCharacter(this.currentCharacterToken);break}case de.WHITESPACE_CHARACTER:{this.handler.onWhitespaceCharacter(this.currentCharacterToken);break}}this.currentCharacterToken=null}}_emitEOFToken(){const t=this.getCurrentLocation(0);t&&(t.endLine=t.startLine,t.endCol=t.startCol,t.endOffset=t.startOffset),this._emitCurrentCharacterToken(t),this.handler.onEof({type:de.EOF,location:t}),this.active=!1}_appendCharToCurrentCharacterToken(t,r){if(this.currentCharacterToken)if(this.currentCharacterToken.type===t){this.currentCharacterToken.chars+=r;return}else this.currentLocation=this.getCurrentLocation(0),this._emitCurrentCharacterToken(this.currentLocation),this.preprocessor.dropParsedChunk();this._createCharacterToken(t,r)}_emitCodePoint(t){const r=cc(t)?de.WHITESPACE_CHARACTER:t===T.NULL?de.NULL_CHARACTER:de.CHARACTER;this._appendCharToCurrentCharacterToken(r,String.fromCodePoint(t))}_emitChars(t){this._appendCharToCurrentCharacterToken(de.CHARACTER,t)}_startCharacterReference(){this.returnState=this.state,this.state=y.CHARACTER_REFERENCE,this.entityStartPos=this.preprocessor.pos,this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute()?Ft.Attribute:Ft.Legacy)}_isCharacterReferenceInAttribute(){return this.returnState===y.ATTRIBUTE_VALUE_DOUBLE_QUOTED||this.returnState===y.ATTRIBUTE_VALUE_SINGLE_QUOTED||this.returnState===y.ATTRIBUTE_VALUE_UNQUOTED}_flushCodePointConsumedAsCharacterReference(t){this._isCharacterReferenceInAttribute()?this.currentAttr.value+=String.fromCodePoint(t):this._emitCodePoint(t)}_callState(t){switch(this.state){case y.DATA:{this._stateData(t);break}case y.RCDATA:{this._stateRcdata(t);break}case y.RAWTEXT:{this._stateRawtext(t);break}case y.SCRIPT_DATA:{this._stateScriptData(t);break}case y.PLAINTEXT:{this._statePlaintext(t);break}case y.TAG_OPEN:{this._stateTagOpen(t);break}case y.END_TAG_OPEN:{this._stateEndTagOpen(t);break}case y.TAG_NAME:{this._stateTagName(t);break}case y.RCDATA_LESS_THAN_SIGN:{this._stateRcdataLessThanSign(t);break}case y.RCDATA_END_TAG_OPEN:{this._stateRcdataEndTagOpen(t);break}case y.RCDATA_END_TAG_NAME:{this._stateRcdataEndTagName(t);break}case y.RAWTEXT_LESS_THAN_SIGN:{this._stateRawtextLessThanSign(t);break}case y.RAWTEXT_END_TAG_OPEN:{this._stateRawtextEndTagOpen(t);break}case y.RAWTEXT_END_TAG_NAME:{this._stateRawtextEndTagName(t);break}case y.SCRIPT_DATA_LESS_THAN_SIGN:{this._stateScriptDataLessThanSign(t);break}case y.SCRIPT_DATA_END_TAG_OPEN:{this._stateScriptDataEndTagOpen(t);break}case y.SCRIPT_DATA_END_TAG_NAME:{this._stateScriptDataEndTagName(t);break}case y.SCRIPT_DATA_ESCAPE_START:{this._stateScriptDataEscapeStart(t);break}case y.SCRIPT_DATA_ESCAPE_START_DASH:{this._stateScriptDataEscapeStartDash(t);break}case y.SCRIPT_DATA_ESCAPED:{this._stateScriptDataEscaped(t);break}case y.SCRIPT_DATA_ESCAPED_DASH:{this._stateScriptDataEscapedDash(t);break}case y.SCRIPT_DATA_ESCAPED_DASH_DASH:{this._stateScriptDataEscapedDashDash(t);break}case y.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataEscapedLessThanSign(t);break}case y.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:{this._stateScriptDataEscapedEndTagOpen(t);break}case y.SCRIPT_DATA_ESCAPED_END_TAG_NAME:{this._stateScriptDataEscapedEndTagName(t);break}case y.SCRIPT_DATA_DOUBLE_ESCAPE_START:{this._stateScriptDataDoubleEscapeStart(t);break}case y.SCRIPT_DATA_DOUBLE_ESCAPED:{this._stateScriptDataDoubleEscaped(t);break}case y.SCRIPT_DATA_DOUBLE_ESCAPED_DASH:{this._stateScriptDataDoubleEscapedDash(t);break}case y.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH:{this._stateScriptDataDoubleEscapedDashDash(t);break}case y.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataDoubleEscapedLessThanSign(t);break}case y.SCRIPT_DATA_DOUBLE_ESCAPE_END:{this._stateScriptDataDoubleEscapeEnd(t);break}case y.BEFORE_ATTRIBUTE_NAME:{this._stateBeforeAttributeName(t);break}case y.ATTRIBUTE_NAME:{this._stateAttributeName(t);break}case y.AFTER_ATTRIBUTE_NAME:{this._stateAfterAttributeName(t);break}case y.BEFORE_ATTRIBUTE_VALUE:{this._stateBeforeAttributeValue(t);break}case y.ATTRIBUTE_VALUE_DOUBLE_QUOTED:{this._stateAttributeValueDoubleQuoted(t);break}case y.ATTRIBUTE_VALUE_SINGLE_QUOTED:{this._stateAttributeValueSingleQuoted(t);break}case y.ATTRIBUTE_VALUE_UNQUOTED:{this._stateAttributeValueUnquoted(t);break}case y.AFTER_ATTRIBUTE_VALUE_QUOTED:{this._stateAfterAttributeValueQuoted(t);break}case y.SELF_CLOSING_START_TAG:{this._stateSelfClosingStartTag(t);break}case y.BOGUS_COMMENT:{this._stateBogusComment(t);break}case y.MARKUP_DECLARATION_OPEN:{this._stateMarkupDeclarationOpen(t);break}case y.COMMENT_START:{this._stateCommentStart(t);break}case y.COMMENT_START_DASH:{this._stateCommentStartDash(t);break}case y.COMMENT:{this._stateComment(t);break}case y.COMMENT_LESS_THAN_SIGN:{this._stateCommentLessThanSign(t);break}case y.COMMENT_LESS_THAN_SIGN_BANG:{this._stateCommentLessThanSignBang(t);break}case y.COMMENT_LESS_THAN_SIGN_BANG_DASH:{this._stateCommentLessThanSignBangDash(t);break}case y.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH:{this._stateCommentLessThanSignBangDashDash(t);break}case y.COMMENT_END_DASH:{this._stateCommentEndDash(t);break}case y.COMMENT_END:{this._stateCommentEnd(t);break}case y.COMMENT_END_BANG:{this._stateCommentEndBang(t);break}case y.DOCTYPE:{this._stateDoctype(t);break}case y.BEFORE_DOCTYPE_NAME:{this._stateBeforeDoctypeName(t);break}case y.DOCTYPE_NAME:{this._stateDoctypeName(t);break}case y.AFTER_DOCTYPE_NAME:{this._stateAfterDoctypeName(t);break}case y.AFTER_DOCTYPE_PUBLIC_KEYWORD:{this._stateAfterDoctypePublicKeyword(t);break}case y.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateBeforeDoctypePublicIdentifier(t);break}case y.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypePublicIdentifierDoubleQuoted(t);break}case y.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypePublicIdentifierSingleQuoted(t);break}case y.AFTER_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateAfterDoctypePublicIdentifier(t);break}case y.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS:{this._stateBetweenDoctypePublicAndSystemIdentifiers(t);break}case y.AFTER_DOCTYPE_SYSTEM_KEYWORD:{this._stateAfterDoctypeSystemKeyword(t);break}case y.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateBeforeDoctypeSystemIdentifier(t);break}case y.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypeSystemIdentifierDoubleQuoted(t);break}case y.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypeSystemIdentifierSingleQuoted(t);break}case y.AFTER_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateAfterDoctypeSystemIdentifier(t);break}case y.BOGUS_DOCTYPE:{this._stateBogusDoctype(t);break}case y.CDATA_SECTION:{this._stateCdataSection(t);break}case y.CDATA_SECTION_BRACKET:{this._stateCdataSectionBracket(t);break}case y.CDATA_SECTION_END:{this._stateCdataSectionEnd(t);break}case y.CHARACTER_REFERENCE:{this._stateCharacterReference();break}case y.AMBIGUOUS_AMPERSAND:{this._stateAmbiguousAmpersand(t);break}default:throw new Error("Unknown state")}}_stateData(t){switch(t){case T.LESS_THAN_SIGN:{this.state=y.TAG_OPEN;break}case T.AMPERSAND:{this._startCharacterReference();break}case T.NULL:{this._err(P.unexpectedNullCharacter),this._emitCodePoint(t);break}case T.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t)}}_stateRcdata(t){switch(t){case T.AMPERSAND:{this._startCharacterReference();break}case T.LESS_THAN_SIGN:{this.state=y.RCDATA_LESS_THAN_SIGN;break}case T.NULL:{this._err(P.unexpectedNullCharacter),this._emitChars(Se);break}case T.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t)}}_stateRawtext(t){switch(t){case T.LESS_THAN_SIGN:{this.state=y.RAWTEXT_LESS_THAN_SIGN;break}case T.NULL:{this._err(P.unexpectedNullCharacter),this._emitChars(Se);break}case T.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t)}}_stateScriptData(t){switch(t){case T.LESS_THAN_SIGN:{this.state=y.SCRIPT_DATA_LESS_THAN_SIGN;break}case T.NULL:{this._err(P.unexpectedNullCharacter),this._emitChars(Se);break}case T.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t)}}_statePlaintext(t){switch(t){case T.NULL:{this._err(P.unexpectedNullCharacter),this._emitChars(Se);break}case T.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t)}}_stateTagOpen(t){if(Xt(t))this._createStartTagToken(),this.state=y.TAG_NAME,this._stateTagName(t);else switch(t){case T.EXCLAMATION_MARK:{this.state=y.MARKUP_DECLARATION_OPEN;break}case T.SOLIDUS:{this.state=y.END_TAG_OPEN;break}case T.QUESTION_MARK:{this._err(P.unexpectedQuestionMarkInsteadOfTagName),this._createCommentToken(1),this.state=y.BOGUS_COMMENT,this._stateBogusComment(t);break}case T.EOF:{this._err(P.eofBeforeTagName),this._emitChars("<"),this._emitEOFToken();break}default:this._err(P.invalidFirstCharacterOfTagName),this._emitChars("<"),this.state=y.DATA,this._stateData(t)}}_stateEndTagOpen(t){if(Xt(t))this._createEndTagToken(),this.state=y.TAG_NAME,this._stateTagName(t);else switch(t){case T.GREATER_THAN_SIGN:{this._err(P.missingEndTagName),this.state=y.DATA;break}case T.EOF:{this._err(P.eofBeforeTagName),this._emitChars("");break}case T.NULL:{this._err(P.unexpectedNullCharacter),this.state=y.SCRIPT_DATA_ESCAPED,this._emitChars(Se);break}case T.EOF:{this._err(P.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=y.SCRIPT_DATA_ESCAPED,this._emitCodePoint(t)}}_stateScriptDataEscapedLessThanSign(t){t===T.SOLIDUS?this.state=y.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:Xt(t)?(this._emitChars("<"),this.state=y.SCRIPT_DATA_DOUBLE_ESCAPE_START,this._stateScriptDataDoubleEscapeStart(t)):(this._emitChars("<"),this.state=y.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(t))}_stateScriptDataEscapedEndTagOpen(t){Xt(t)?(this.state=y.SCRIPT_DATA_ESCAPED_END_TAG_NAME,this._stateScriptDataEscapedEndTagName(t)):(this._emitChars("");break}case T.NULL:{this._err(P.unexpectedNullCharacter),this.state=y.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars(Se);break}case T.EOF:{this._err(P.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=y.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(t)}}_stateScriptDataDoubleEscapedLessThanSign(t){t===T.SOLIDUS?(this.state=y.SCRIPT_DATA_DOUBLE_ESCAPE_END,this._emitChars("/")):(this.state=y.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(t))}_stateScriptDataDoubleEscapeEnd(t){if(this.preprocessor.startsWith(et.SCRIPT,!1)&&_s(this.preprocessor.peek(et.SCRIPT.length))){this._emitCodePoint(t);for(let r=0;r0&&this._isInTemplate()&&this.tmplCount--,this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(t,!0)}replace(t,r){const n=this._indexOf(t);this.items[n]=r,n===this.stackTop&&(this.current=r)}insertAfter(t,r,n){const a=this._indexOf(t)+1;this.items.splice(a,0,r),this.tagIDs.splice(a,0,n),this.stackTop++,a===this.stackTop&&this._updateCurrentElement(),this.current&&this.currentTagId!==void 0&&this.handler.onItemPush(this.current,this.currentTagId,a===this.stackTop)}popUntilTagNamePopped(t){let r=this.stackTop+1;do r=this.tagIDs.lastIndexOf(t,r-1);while(r>0&&this.treeAdapter.getNamespaceURI(this.items[r])!==H.HTML);this.shortenToLength(Math.max(r,0))}shortenToLength(t){for(;this.stackTop>=t;){const r=this.current;this.tmplCount>0&&this._isInTemplate()&&(this.tmplCount-=1),this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(r,this.stackTop=0;n--)if(t.has(this.tagIDs[n])&&this.treeAdapter.getNamespaceURI(this.items[n])===r)return n;return-1}clearBackTo(t,r){const n=this._indexOfTagNames(t,r);this.shortenToLength(n+1)}clearBackToTableContext(){this.clearBackTo(Lp,H.HTML)}clearBackToTableBodyContext(){this.clearBackTo(Op,H.HTML)}clearBackToTableRowContext(){this.clearBackTo(Dp,H.HTML)}remove(t){const r=this._indexOf(t);r>=0&&(r===this.stackTop?this.pop():(this.items.splice(r,1),this.tagIDs.splice(r,1),this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(t,!1)))}tryPeekProperlyNestedBodyElement(){return this.stackTop>=1&&this.tagIDs[1]===o.BODY?this.items[1]:null}contains(t){return this._indexOf(t)>-1}getCommonAncestor(t){const r=this._indexOf(t)-1;return r>=0?this.items[r]:null}isRootHtmlElementCurrent(){return this.stackTop===0&&this.tagIDs[0]===o.HTML}hasInDynamicScope(t,r){for(let n=this.stackTop;n>=0;n--){const a=this.tagIDs[n];switch(this.treeAdapter.getNamespaceURI(this.items[n])){case H.HTML:{if(a===t)return!0;if(r.has(a))return!1;break}case H.SVG:{if(Ds.has(a))return!1;break}case H.MATHML:{if(Ns.has(a))return!1;break}}}return!0}hasInScope(t){return this.hasInDynamicScope(t,s0)}hasInListItemScope(t){return this.hasInDynamicScope(t,Ip)}hasInButtonScope(t){return this.hasInDynamicScope(t,Np)}hasNumberedHeaderInScope(){for(let t=this.stackTop;t>=0;t--){const r=this.tagIDs[t];switch(this.treeAdapter.getNamespaceURI(this.items[t])){case H.HTML:{if(Qa.has(r))return!0;if(s0.has(r))return!1;break}case H.SVG:{if(Ds.has(r))return!1;break}case H.MATHML:{if(Ns.has(r))return!1;break}}}return!0}hasInTableScope(t){for(let r=this.stackTop;r>=0;r--)if(this.treeAdapter.getNamespaceURI(this.items[r])===H.HTML)switch(this.tagIDs[r]){case t:return!0;case o.TABLE:case o.HTML:return!1}return!0}hasTableBodyContextInTableScope(){for(let t=this.stackTop;t>=0;t--)if(this.treeAdapter.getNamespaceURI(this.items[t])===H.HTML)switch(this.tagIDs[t]){case o.TBODY:case o.THEAD:case o.TFOOT:return!0;case o.TABLE:case o.HTML:return!1}return!0}hasInSelectScope(t){for(let r=this.stackTop;r>=0;r--)if(this.treeAdapter.getNamespaceURI(this.items[r])===H.HTML)switch(this.tagIDs[r]){case t:return!0;case o.OPTION:case o.OPTGROUP:break;default:return!1}return!0}generateImpliedEndTags(){for(;this.currentTagId!==void 0&&hc.has(this.currentTagId);)this.pop()}generateImpliedEndTagsThoroughly(){for(;this.currentTagId!==void 0&&Is.has(this.currentTagId);)this.pop()}generateImpliedEndTagsWithExclusion(t){for(;this.currentTagId!==void 0&&this.currentTagId!==t&&Is.has(this.currentTagId);)this.pop()}}const ga=3;var St;(function(e){e[e.Marker=0]="Marker",e[e.Element=1]="Element"})(St||(St={}));const Os={type:St.Marker};class Pp{constructor(t){this.treeAdapter=t,this.entries=[],this.bookmark=null}_getNoahArkConditionCandidates(t,r){const n=[],a=r.length,i=this.treeAdapter.getTagName(t),u=this.treeAdapter.getNamespaceURI(t);for(let s=0;s[u.name,u.value]));let i=0;for(let u=0;ua.get(l.name)===l.value)&&(i+=1,i>=ga&&this.entries.splice(s.idx,1))}}insertMarker(){this.entries.unshift(Os)}pushElement(t,r){this._ensureNoahArkCondition(t),this.entries.unshift({type:St.Element,element:t,token:r})}insertElementAfterBookmark(t,r){const n=this.entries.indexOf(this.bookmark);this.entries.splice(n,0,{type:St.Element,element:t,token:r})}removeEntry(t){const r=this.entries.indexOf(t);r!==-1&&this.entries.splice(r,1)}clearToLastMarker(){const t=this.entries.indexOf(Os);t===-1?this.entries.length=0:this.entries.splice(0,t+1)}getElementEntryInScopeWithTagName(t){const r=this.entries.find(n=>n.type===St.Marker||this.treeAdapter.getTagName(n.element)===t);return r&&r.type===St.Element?r:null}getElementEntry(t){return this.entries.find(r=>r.type===St.Element&&r.element===t)}}const $t={createDocument(){return{nodeName:"#document",mode:pt.NO_QUIRKS,childNodes:[]}},createDocumentFragment(){return{nodeName:"#document-fragment",childNodes:[]}},createElement(e,t,r){return{nodeName:e,tagName:e,attrs:r,namespaceURI:t,childNodes:[],parentNode:null}},createCommentNode(e){return{nodeName:"#comment",data:e,parentNode:null}},createTextNode(e){return{nodeName:"#text",value:e,parentNode:null}},appendChild(e,t){e.childNodes.push(t),t.parentNode=e},insertBefore(e,t,r){const n=e.childNodes.indexOf(r);e.childNodes.splice(n,0,t),t.parentNode=e},setTemplateContent(e,t){e.content=t},getTemplateContent(e){return e.content},setDocumentType(e,t,r,n){const a=e.childNodes.find(i=>i.nodeName==="#documentType");if(a)a.name=t,a.publicId=r,a.systemId=n;else{const i={nodeName:"#documentType",name:t,publicId:r,systemId:n,parentNode:null};$t.appendChild(e,i)}},setDocumentMode(e,t){e.mode=t},getDocumentMode(e){return e.mode},detachNode(e){if(e.parentNode){const t=e.parentNode.childNodes.indexOf(e);e.parentNode.childNodes.splice(t,1),e.parentNode=null}},insertText(e,t){if(e.childNodes.length>0){const r=e.childNodes[e.childNodes.length-1];if($t.isTextNode(r)){r.value+=t;return}}$t.appendChild(e,$t.createTextNode(t))},insertTextBefore(e,t,r){const n=e.childNodes[e.childNodes.indexOf(r)-1];n&&$t.isTextNode(n)?n.value+=t:$t.insertBefore(e,$t.createTextNode(t),r)},adoptAttributes(e,t){const r=new Set(e.attrs.map(n=>n.name));for(let n=0;ne.startsWith(r))}function qp(e){return e.name===dc&&e.publicId===null&&(e.systemId===null||e.systemId===Bp)}function Yp(e){if(e.name!==dc)return pt.QUIRKS;const{systemId:t}=e;if(t&&t.toLowerCase()===Fp)return pt.QUIRKS;let{publicId:r}=e;if(r!==null){if(r=r.toLowerCase(),zp.has(r))return pt.QUIRKS;let n=t===null?Hp:fc;if(Ls(r,n))return pt.QUIRKS;if(n=t===null?mc:Up,Ls(r,n))return pt.LIMITED_QUIRKS}return pt.NO_QUIRKS}const Rs={TEXT_HTML:"text/html",APPLICATION_XML:"application/xhtml+xml"},Gp="definitionurl",Vp="definitionURL",jp=new Map(["attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map(e=>[e.toLowerCase(),e])),Wp=new Map([["xlink:actuate",{prefix:"xlink",name:"actuate",namespace:H.XLINK}],["xlink:arcrole",{prefix:"xlink",name:"arcrole",namespace:H.XLINK}],["xlink:href",{prefix:"xlink",name:"href",namespace:H.XLINK}],["xlink:role",{prefix:"xlink",name:"role",namespace:H.XLINK}],["xlink:show",{prefix:"xlink",name:"show",namespace:H.XLINK}],["xlink:title",{prefix:"xlink",name:"title",namespace:H.XLINK}],["xlink:type",{prefix:"xlink",name:"type",namespace:H.XLINK}],["xml:lang",{prefix:"xml",name:"lang",namespace:H.XML}],["xml:space",{prefix:"xml",name:"space",namespace:H.XML}],["xmlns",{prefix:"",name:"xmlns",namespace:H.XMLNS}],["xmlns:xlink",{prefix:"xmlns",name:"xlink",namespace:H.XMLNS}]]),Xp=new Map(["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","textPath"].map(e=>[e.toLowerCase(),e])),$p=new Set([o.B,o.BIG,o.BLOCKQUOTE,o.BODY,o.BR,o.CENTER,o.CODE,o.DD,o.DIV,o.DL,o.DT,o.EM,o.EMBED,o.H1,o.H2,o.H3,o.H4,o.H5,o.H6,o.HEAD,o.HR,o.I,o.IMG,o.LI,o.LISTING,o.MENU,o.META,o.NOBR,o.OL,o.P,o.PRE,o.RUBY,o.S,o.SMALL,o.SPAN,o.STRONG,o.STRIKE,o.SUB,o.SUP,o.TABLE,o.TT,o.U,o.UL,o.VAR]);function Qp(e){const t=e.tagID;return t===o.FONT&&e.attrs.some(({name:n})=>n===mr.COLOR||n===mr.SIZE||n===mr.FACE)||$p.has(t)}function pc(e){for(let t=0;t0&&this._setContextModes(t,r)}onItemPop(t,r){var n,a;if(this.options.sourceCodeLocationInfo&&this._setEndLocation(t,this.currentToken),(a=(n=this.treeAdapter).onItemPop)===null||a===void 0||a.call(n,t,this.openElements.current),r){let i,u;this.openElements.stackTop===0&&this.fragmentContext?(i=this.fragmentContext,u=this.fragmentContextID):{current:i,currentTagId:u}=this.openElements,this._setContextModes(i,u)}}_setContextModes(t,r){const n=t===this.document||t&&this.treeAdapter.getNamespaceURI(t)===H.HTML;this.currentNotInHTML=!n,this.tokenizer.inForeignNode=!n&&t!==void 0&&r!==void 0&&!this._isIntegrationPoint(r,t)}_switchToTextParsing(t,r){this._insertElement(t,H.HTML),this.tokenizer.state=r,this.originalInsertionMode=this.insertionMode,this.insertionMode=k.TEXT}switchToPlaintextParsing(){this.insertionMode=k.TEXT,this.originalInsertionMode=k.IN_BODY,this.tokenizer.state=De.PLAINTEXT}_getAdjustedCurrentElement(){return this.openElements.stackTop===0&&this.fragmentContext?this.fragmentContext:this.openElements.current}_findFormInFragmentContext(){let t=this.fragmentContext;for(;t;){if(this.treeAdapter.getTagName(t)===O.FORM){this.formElement=t;break}t=this.treeAdapter.getParentNode(t)}}_initTokenizerForFragmentParsing(){if(!(!this.fragmentContext||this.treeAdapter.getNamespaceURI(this.fragmentContext)!==H.HTML))switch(this.fragmentContextID){case o.TITLE:case o.TEXTAREA:{this.tokenizer.state=De.RCDATA;break}case o.STYLE:case o.XMP:case o.IFRAME:case o.NOEMBED:case o.NOFRAMES:case o.NOSCRIPT:{this.tokenizer.state=De.RAWTEXT;break}case o.SCRIPT:{this.tokenizer.state=De.SCRIPT_DATA;break}case o.PLAINTEXT:{this.tokenizer.state=De.PLAINTEXT;break}}}_setDocumentType(t){const r=t.name||"",n=t.publicId||"",a=t.systemId||"";if(this.treeAdapter.setDocumentType(this.document,r,n,a),t.location){const u=this.treeAdapter.getChildNodes(this.document).find(s=>this.treeAdapter.isDocumentTypeNode(s));u&&this.treeAdapter.setNodeSourceCodeLocation(u,t.location)}}_attachElementToTree(t,r){if(this.options.sourceCodeLocationInfo){const n=r&&{...r,startTag:r};this.treeAdapter.setNodeSourceCodeLocation(t,n)}if(this._shouldFosterParentOnInsertion())this._fosterParentElement(t);else{const n=this.openElements.currentTmplContentOrNode;this.treeAdapter.appendChild(n??this.document,t)}}_appendElement(t,r){const n=this.treeAdapter.createElement(t.tagName,r,t.attrs);this._attachElementToTree(n,t.location)}_insertElement(t,r){const n=this.treeAdapter.createElement(t.tagName,r,t.attrs);this._attachElementToTree(n,t.location),this.openElements.push(n,t.tagID)}_insertFakeElement(t,r){const n=this.treeAdapter.createElement(t,H.HTML,[]);this._attachElementToTree(n,null),this.openElements.push(n,r)}_insertTemplate(t){const r=this.treeAdapter.createElement(t.tagName,H.HTML,t.attrs),n=this.treeAdapter.createDocumentFragment();this.treeAdapter.setTemplateContent(r,n),this._attachElementToTree(r,t.location),this.openElements.push(r,t.tagID),this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(n,null)}_insertFakeRootElement(){const t=this.treeAdapter.createElement(O.HTML,H.HTML,[]);this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(t,null),this.treeAdapter.appendChild(this.openElements.current,t),this.openElements.push(t,o.HTML)}_appendCommentNode(t,r){const n=this.treeAdapter.createCommentNode(t.data);this.treeAdapter.appendChild(r,n),this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(n,t.location)}_insertCharacters(t){let r,n;if(this._shouldFosterParentOnInsertion()?({parent:r,beforeElement:n}=this._findFosterParentingLocation(),n?this.treeAdapter.insertTextBefore(r,t.chars,n):this.treeAdapter.insertText(r,t.chars)):(r=this.openElements.currentTmplContentOrNode,this.treeAdapter.insertText(r,t.chars)),!t.location)return;const a=this.treeAdapter.getChildNodes(r),i=n?a.lastIndexOf(n):a.length,u=a[i-1];if(this.treeAdapter.getNodeSourceCodeLocation(u)){const{endLine:l,endCol:c,endOffset:d}=t.location;this.treeAdapter.updateNodeSourceCodeLocation(u,{endLine:l,endCol:c,endOffset:d})}else this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(u,t.location)}_adoptNodes(t,r){for(let n=this.treeAdapter.getFirstChild(t);n;n=this.treeAdapter.getFirstChild(t))this.treeAdapter.detachNode(n),this.treeAdapter.appendChild(r,n)}_setEndLocation(t,r){if(this.treeAdapter.getNodeSourceCodeLocation(t)&&r.location){const n=r.location,a=this.treeAdapter.getTagName(t),i=r.type===de.END_TAG&&a===r.tagName?{endTag:{...n},endLine:n.endLine,endCol:n.endCol,endOffset:n.endOffset}:{endLine:n.startLine,endCol:n.startCol,endOffset:n.startOffset};this.treeAdapter.updateNodeSourceCodeLocation(t,i)}}shouldProcessStartTagTokenInForeignContent(t){if(!this.currentNotInHTML)return!1;let r,n;return this.openElements.stackTop===0&&this.fragmentContext?(r=this.fragmentContext,n=this.fragmentContextID):{current:r,currentTagId:n}=this.openElements,t.tagID===o.SVG&&this.treeAdapter.getTagName(r)===O.ANNOTATION_XML&&this.treeAdapter.getNamespaceURI(r)===H.MATHML?!1:this.tokenizer.inForeignNode||(t.tagID===o.MGLYPH||t.tagID===o.MALIGNMARK)&&n!==void 0&&!this._isIntegrationPoint(n,r,H.HTML)}_processToken(t){switch(t.type){case de.CHARACTER:{this.onCharacter(t);break}case de.NULL_CHARACTER:{this.onNullCharacter(t);break}case de.COMMENT:{this.onComment(t);break}case de.DOCTYPE:{this.onDoctype(t);break}case de.START_TAG:{this._processStartTag(t);break}case de.END_TAG:{this.onEndTag(t);break}case de.EOF:{this.onEof(t);break}case de.WHITESPACE_CHARACTER:{this.onWhitespaceCharacter(t);break}}}_isIntegrationPoint(t,r,n){const a=this.treeAdapter.getNamespaceURI(r),i=this.treeAdapter.getAttrList(r);return e5(t,a,i,n)}_reconstructActiveFormattingElements(){const t=this.activeFormattingElements.entries.length;if(t){const r=this.activeFormattingElements.entries.findIndex(a=>a.type===St.Marker||this.openElements.contains(a.element)),n=r===-1?t-1:r-1;for(let a=n;a>=0;a--){const i=this.activeFormattingElements.entries[a];this._insertElement(i.token,this.treeAdapter.getNamespaceURI(i.element)),i.element=this.openElements.current}}}_closeTableCell(){this.openElements.generateImpliedEndTags(),this.openElements.popUntilTableCellPopped(),this.activeFormattingElements.clearToLastMarker(),this.insertionMode=k.IN_ROW}_closePElement(){this.openElements.generateImpliedEndTagsWithExclusion(o.P),this.openElements.popUntilTagNamePopped(o.P)}_resetInsertionMode(){for(let t=this.openElements.stackTop;t>=0;t--)switch(t===0&&this.fragmentContext?this.fragmentContextID:this.openElements.tagIDs[t]){case o.TR:{this.insertionMode=k.IN_ROW;return}case o.TBODY:case o.THEAD:case o.TFOOT:{this.insertionMode=k.IN_TABLE_BODY;return}case o.CAPTION:{this.insertionMode=k.IN_CAPTION;return}case o.COLGROUP:{this.insertionMode=k.IN_COLUMN_GROUP;return}case o.TABLE:{this.insertionMode=k.IN_TABLE;return}case o.BODY:{this.insertionMode=k.IN_BODY;return}case o.FRAMESET:{this.insertionMode=k.IN_FRAMESET;return}case o.SELECT:{this._resetInsertionModeForSelect(t);return}case o.TEMPLATE:{this.insertionMode=this.tmplInsertionModeStack[0];return}case o.HTML:{this.insertionMode=this.headElement?k.AFTER_HEAD:k.BEFORE_HEAD;return}case o.TD:case o.TH:{if(t>0){this.insertionMode=k.IN_CELL;return}break}case o.HEAD:{if(t>0){this.insertionMode=k.IN_HEAD;return}break}}this.insertionMode=k.IN_BODY}_resetInsertionModeForSelect(t){if(t>0)for(let r=t-1;r>0;r--){const n=this.openElements.tagIDs[r];if(n===o.TEMPLATE)break;if(n===o.TABLE){this.insertionMode=k.IN_SELECT_IN_TABLE;return}}this.insertionMode=k.IN_SELECT}_isElementCausesFosterParenting(t){return bc.has(t)}_shouldFosterParentOnInsertion(){return this.fosterParentingEnabled&&this.openElements.currentTagId!==void 0&&this._isElementCausesFosterParenting(this.openElements.currentTagId)}_findFosterParentingLocation(){for(let t=this.openElements.stackTop;t>=0;t--){const r=this.openElements.items[t];switch(this.openElements.tagIDs[t]){case o.TEMPLATE:{if(this.treeAdapter.getNamespaceURI(r)===H.HTML)return{parent:this.treeAdapter.getTemplateContent(r),beforeElement:null};break}case o.TABLE:{const n=this.treeAdapter.getParentNode(r);return n?{parent:n,beforeElement:r}:{parent:this.openElements.items[t-1],beforeElement:null}}}}return{parent:this.openElements.items[0],beforeElement:null}}_fosterParentElement(t){const r=this._findFosterParentingLocation();r.beforeElement?this.treeAdapter.insertBefore(r.parent,t,r.beforeElement):this.treeAdapter.appendChild(r.parent,t)}_isSpecialElement(t,r){const n=this.treeAdapter.getNamespaceURI(t);return kp[n].has(r)}onCharacter(t){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){R7(this,t);return}switch(this.insertionMode){case k.INITIAL:{Zr(this,t);break}case k.BEFORE_HTML:{ln(this,t);break}case k.BEFORE_HEAD:{on(this,t);break}case k.IN_HEAD:{cn(this,t);break}case k.IN_HEAD_NO_SCRIPT:{hn(this,t);break}case k.AFTER_HEAD:{dn(this,t);break}case k.IN_BODY:case k.IN_CAPTION:case k.IN_CELL:case k.IN_TEMPLATE:{Tc(this,t);break}case k.TEXT:case k.IN_SELECT:case k.IN_SELECT_IN_TABLE:{this._insertCharacters(t);break}case k.IN_TABLE:case k.IN_TABLE_BODY:case k.IN_ROW:{ba(this,t);break}case k.IN_TABLE_TEXT:{Sc(this,t);break}case k.IN_COLUMN_GROUP:{l0(this,t);break}case k.AFTER_BODY:{o0(this,t);break}case k.AFTER_AFTER_BODY:{Jn(this,t);break}}}onNullCharacter(t){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){L7(this,t);return}switch(this.insertionMode){case k.INITIAL:{Zr(this,t);break}case k.BEFORE_HTML:{ln(this,t);break}case k.BEFORE_HEAD:{on(this,t);break}case k.IN_HEAD:{cn(this,t);break}case k.IN_HEAD_NO_SCRIPT:{hn(this,t);break}case k.AFTER_HEAD:{dn(this,t);break}case k.TEXT:{this._insertCharacters(t);break}case k.IN_TABLE:case k.IN_TABLE_BODY:case k.IN_ROW:{ba(this,t);break}case k.IN_COLUMN_GROUP:{l0(this,t);break}case k.AFTER_BODY:{o0(this,t);break}case k.AFTER_AFTER_BODY:{Jn(this,t);break}}}onComment(t){if(this.skipNextNewLine=!1,this.currentNotInHTML){Ka(this,t);return}switch(this.insertionMode){case k.INITIAL:case k.BEFORE_HTML:case k.BEFORE_HEAD:case k.IN_HEAD:case k.IN_HEAD_NO_SCRIPT:case k.AFTER_HEAD:case k.IN_BODY:case k.IN_TABLE:case k.IN_CAPTION:case k.IN_COLUMN_GROUP:case k.IN_TABLE_BODY:case k.IN_ROW:case k.IN_CELL:case k.IN_SELECT:case k.IN_SELECT_IN_TABLE:case k.IN_TEMPLATE:case k.IN_FRAMESET:case k.AFTER_FRAMESET:{Ka(this,t);break}case k.IN_TABLE_TEXT:{en(this,t);break}case k.AFTER_BODY:{h5(this,t);break}case k.AFTER_AFTER_BODY:case k.AFTER_AFTER_FRAMESET:{d5(this,t);break}}}onDoctype(t){switch(this.skipNextNewLine=!1,this.insertionMode){case k.INITIAL:{f5(this,t);break}case k.BEFORE_HEAD:case k.IN_HEAD:case k.IN_HEAD_NO_SCRIPT:case k.AFTER_HEAD:{this._err(t,P.misplacedDoctype);break}case k.IN_TABLE_TEXT:{en(this,t);break}}}onStartTag(t){this.skipNextNewLine=!1,this.currentToken=t,this._processStartTag(t),t.selfClosing&&!t.ackSelfClosing&&this._err(t,P.nonVoidHtmlElementStartTagWithTrailingSolidus)}_processStartTag(t){this.shouldProcessStartTagTokenInForeignContent(t)?M7(this,t):this._startTagOutsideForeignContent(t)}_startTagOutsideForeignContent(t){switch(this.insertionMode){case k.INITIAL:{Zr(this,t);break}case k.BEFORE_HTML:{m5(this,t);break}case k.BEFORE_HEAD:{g5(this,t);break}case k.IN_HEAD:{yt(this,t);break}case k.IN_HEAD_NO_SCRIPT:{T5(this,t);break}case k.AFTER_HEAD:{y5(this,t);break}case k.IN_BODY:{We(this,t);break}case k.IN_TABLE:{Rr(this,t);break}case k.IN_TABLE_TEXT:{en(this,t);break}case k.IN_CAPTION:{b7(this,t);break}case k.IN_COLUMN_GROUP:{Bi(this,t);break}case k.IN_TABLE_BODY:{O0(this,t);break}case k.IN_ROW:{L0(this,t);break}case k.IN_CELL:{x7(this,t);break}case k.IN_SELECT:{_c(this,t);break}case k.IN_SELECT_IN_TABLE:{v7(this,t);break}case k.IN_TEMPLATE:{k7(this,t);break}case k.AFTER_BODY:{w7(this,t);break}case k.IN_FRAMESET:{C7(this,t);break}case k.AFTER_FRAMESET:{I7(this,t);break}case k.AFTER_AFTER_BODY:{D7(this,t);break}case k.AFTER_AFTER_FRAMESET:{O7(this,t);break}}}onEndTag(t){this.skipNextNewLine=!1,this.currentToken=t,this.currentNotInHTML?P7(this,t):this._endTagOutsideForeignContent(t)}_endTagOutsideForeignContent(t){switch(this.insertionMode){case k.INITIAL:{Zr(this,t);break}case k.BEFORE_HTML:{p5(this,t);break}case k.BEFORE_HEAD:{b5(this,t);break}case k.IN_HEAD:{E5(this,t);break}case k.IN_HEAD_NO_SCRIPT:{x5(this,t);break}case k.AFTER_HEAD:{v5(this,t);break}case k.IN_BODY:{D0(this,t);break}case k.TEXT:{s7(this,t);break}case k.IN_TABLE:{En(this,t);break}case k.IN_TABLE_TEXT:{en(this,t);break}case k.IN_CAPTION:{E7(this,t);break}case k.IN_COLUMN_GROUP:{T7(this,t);break}case k.IN_TABLE_BODY:{Ja(this,t);break}case k.IN_ROW:{Cc(this,t);break}case k.IN_CELL:{y7(this,t);break}case k.IN_SELECT:{Ic(this,t);break}case k.IN_SELECT_IN_TABLE:{A7(this,t);break}case k.IN_TEMPLATE:{S7(this,t);break}case k.AFTER_BODY:{Dc(this,t);break}case k.IN_FRAMESET:{_7(this,t);break}case k.AFTER_FRAMESET:{N7(this,t);break}case k.AFTER_AFTER_BODY:{Jn(this,t);break}}}onEof(t){switch(this.insertionMode){case k.INITIAL:{Zr(this,t);break}case k.BEFORE_HTML:{ln(this,t);break}case k.BEFORE_HEAD:{on(this,t);break}case k.IN_HEAD:{cn(this,t);break}case k.IN_HEAD_NO_SCRIPT:{hn(this,t);break}case k.AFTER_HEAD:{dn(this,t);break}case k.IN_BODY:case k.IN_TABLE:case k.IN_CAPTION:case k.IN_COLUMN_GROUP:case k.IN_TABLE_BODY:case k.IN_ROW:case k.IN_CELL:case k.IN_SELECT:case k.IN_SELECT_IN_TABLE:{Ac(this,t);break}case k.TEXT:{l7(this,t);break}case k.IN_TABLE_TEXT:{en(this,t);break}case k.IN_TEMPLATE:{Nc(this,t);break}case k.AFTER_BODY:case k.IN_FRAMESET:case k.AFTER_FRAMESET:case k.AFTER_AFTER_BODY:case k.AFTER_AFTER_FRAMESET:{Pi(this,t);break}}}onWhitespaceCharacter(t){if(this.skipNextNewLine&&(this.skipNextNewLine=!1,t.chars.charCodeAt(0)===T.LINE_FEED)){if(t.chars.length===1)return;t.chars=t.chars.substr(1)}if(this.tokenizer.inForeignNode){this._insertCharacters(t);return}switch(this.insertionMode){case k.IN_HEAD:case k.IN_HEAD_NO_SCRIPT:case k.AFTER_HEAD:case k.TEXT:case k.IN_COLUMN_GROUP:case k.IN_SELECT:case k.IN_SELECT_IN_TABLE:case k.IN_FRAMESET:case k.AFTER_FRAMESET:{this._insertCharacters(t);break}case k.IN_BODY:case k.IN_CAPTION:case k.IN_CELL:case k.IN_TEMPLATE:case k.AFTER_BODY:case k.AFTER_AFTER_BODY:case k.AFTER_AFTER_FRAMESET:{Ec(this,t);break}case k.IN_TABLE:case k.IN_TABLE_BODY:case k.IN_ROW:{ba(this,t);break}case k.IN_TABLE_TEXT:{kc(this,t);break}}}}function i5(e,t){let r=e.activeFormattingElements.getElementEntryInScopeWithTagName(t.tagName);return r?e.openElements.contains(r.element)?e.openElements.hasInScope(t.tagID)||(r=null):(e.activeFormattingElements.removeEntry(r),r=null):vc(e,t),r}function u5(e,t){let r=null,n=e.openElements.stackTop;for(;n>=0;n--){const a=e.openElements.items[n];if(a===t.element)break;e._isSpecialElement(a,e.openElements.tagIDs[n])&&(r=a)}return r||(e.openElements.shortenToLength(Math.max(n,0)),e.activeFormattingElements.removeEntry(t)),r}function s5(e,t,r){let n=t,a=e.openElements.getCommonAncestor(t);for(let i=0,u=a;u!==r;i++,u=a){a=e.openElements.getCommonAncestor(u);const s=e.activeFormattingElements.getElementEntry(u),l=s&&i>=n5;!s||l?(l&&e.activeFormattingElements.removeEntry(s),e.openElements.remove(u)):(u=l5(e,s),n===t&&(e.activeFormattingElements.bookmark=s),e.treeAdapter.detachNode(n),e.treeAdapter.appendChild(u,n),n=u)}return n}function l5(e,t){const r=e.treeAdapter.getNamespaceURI(t.element),n=e.treeAdapter.createElement(t.token.tagName,r,t.token.attrs);return e.openElements.replace(t.element,n),t.element=n,n}function o5(e,t,r){const n=e.treeAdapter.getTagName(t),a=qr(n);if(e._isElementCausesFosterParenting(a))e._fosterParentElement(r);else{const i=e.treeAdapter.getNamespaceURI(t);a===o.TEMPLATE&&i===H.HTML&&(t=e.treeAdapter.getTemplateContent(t)),e.treeAdapter.appendChild(t,r)}}function c5(e,t,r){const n=e.treeAdapter.getNamespaceURI(r.element),{token:a}=r,i=e.treeAdapter.createElement(a.tagName,n,a.attrs);e._adoptNodes(t,i),e.treeAdapter.appendChild(t,i),e.activeFormattingElements.insertElementAfterBookmark(i,a),e.activeFormattingElements.removeEntry(r),e.openElements.remove(r.element),e.openElements.insertAfter(t,i,a.tagID)}function Mi(e,t){for(let r=0;r=r;n--)e._setEndLocation(e.openElements.items[n],t);if(!e.fragmentContext&&e.openElements.stackTop>=0){const n=e.openElements.items[0],a=e.treeAdapter.getNodeSourceCodeLocation(n);if(a&&!a.endTag&&(e._setEndLocation(n,t),e.openElements.stackTop>=1)){const i=e.openElements.items[1],u=e.treeAdapter.getNodeSourceCodeLocation(i);u&&!u.endTag&&e._setEndLocation(i,t)}}}}function f5(e,t){e._setDocumentType(t);const r=t.forceQuirks?pt.QUIRKS:Yp(t);qp(t)||e._err(t,P.nonConformingDoctype),e.treeAdapter.setDocumentMode(e.document,r),e.insertionMode=k.BEFORE_HTML}function Zr(e,t){e._err(t,P.missingDoctype,!0),e.treeAdapter.setDocumentMode(e.document,pt.QUIRKS),e.insertionMode=k.BEFORE_HTML,e._processToken(t)}function m5(e,t){t.tagID===o.HTML?(e._insertElement(t,H.HTML),e.insertionMode=k.BEFORE_HEAD):ln(e,t)}function p5(e,t){const r=t.tagID;(r===o.HTML||r===o.HEAD||r===o.BODY||r===o.BR)&&ln(e,t)}function ln(e,t){e._insertFakeRootElement(),e.insertionMode=k.BEFORE_HEAD,e._processToken(t)}function g5(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.HEAD:{e._insertElement(t,H.HTML),e.headElement=e.openElements.current,e.insertionMode=k.IN_HEAD;break}default:on(e,t)}}function b5(e,t){const r=t.tagID;r===o.HEAD||r===o.BODY||r===o.HTML||r===o.BR?on(e,t):e._err(t,P.endTagWithoutMatchingOpenElement)}function on(e,t){e._insertFakeElement(O.HEAD,o.HEAD),e.headElement=e.openElements.current,e.insertionMode=k.IN_HEAD,e._processToken(t)}function yt(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.BASE:case o.BASEFONT:case o.BGSOUND:case o.LINK:case o.META:{e._appendElement(t,H.HTML),t.ackSelfClosing=!0;break}case o.TITLE:{e._switchToTextParsing(t,De.RCDATA);break}case o.NOSCRIPT:{e.options.scriptingEnabled?e._switchToTextParsing(t,De.RAWTEXT):(e._insertElement(t,H.HTML),e.insertionMode=k.IN_HEAD_NO_SCRIPT);break}case o.NOFRAMES:case o.STYLE:{e._switchToTextParsing(t,De.RAWTEXT);break}case o.SCRIPT:{e._switchToTextParsing(t,De.SCRIPT_DATA);break}case o.TEMPLATE:{e._insertTemplate(t),e.activeFormattingElements.insertMarker(),e.framesetOk=!1,e.insertionMode=k.IN_TEMPLATE,e.tmplInsertionModeStack.unshift(k.IN_TEMPLATE);break}case o.HEAD:{e._err(t,P.misplacedStartTagForHeadElement);break}default:cn(e,t)}}function E5(e,t){switch(t.tagID){case o.HEAD:{e.openElements.pop(),e.insertionMode=k.AFTER_HEAD;break}case o.BODY:case o.BR:case o.HTML:{cn(e,t);break}case o.TEMPLATE:{Tr(e,t);break}default:e._err(t,P.endTagWithoutMatchingOpenElement)}}function Tr(e,t){e.openElements.tmplCount>0?(e.openElements.generateImpliedEndTagsThoroughly(),e.openElements.currentTagId!==o.TEMPLATE&&e._err(t,P.closingOfElementWithOpenChildElements),e.openElements.popUntilTagNamePopped(o.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e.tmplInsertionModeStack.shift(),e._resetInsertionMode()):e._err(t,P.endTagWithoutMatchingOpenElement)}function cn(e,t){e.openElements.pop(),e.insertionMode=k.AFTER_HEAD,e._processToken(t)}function T5(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.BASEFONT:case o.BGSOUND:case o.HEAD:case o.LINK:case o.META:case o.NOFRAMES:case o.STYLE:{yt(e,t);break}case o.NOSCRIPT:{e._err(t,P.nestedNoscriptInHead);break}default:hn(e,t)}}function x5(e,t){switch(t.tagID){case o.NOSCRIPT:{e.openElements.pop(),e.insertionMode=k.IN_HEAD;break}case o.BR:{hn(e,t);break}default:e._err(t,P.endTagWithoutMatchingOpenElement)}}function hn(e,t){const r=t.type===de.EOF?P.openElementsLeftAfterEof:P.disallowedContentInNoscriptInHead;e._err(t,r),e.openElements.pop(),e.insertionMode=k.IN_HEAD,e._processToken(t)}function y5(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.BODY:{e._insertElement(t,H.HTML),e.framesetOk=!1,e.insertionMode=k.IN_BODY;break}case o.FRAMESET:{e._insertElement(t,H.HTML),e.insertionMode=k.IN_FRAMESET;break}case o.BASE:case o.BASEFONT:case o.BGSOUND:case o.LINK:case o.META:case o.NOFRAMES:case o.SCRIPT:case o.STYLE:case o.TEMPLATE:case o.TITLE:{e._err(t,P.abandonedHeadElementChild),e.openElements.push(e.headElement,o.HEAD),yt(e,t),e.openElements.remove(e.headElement);break}case o.HEAD:{e._err(t,P.misplacedStartTagForHeadElement);break}default:dn(e,t)}}function v5(e,t){switch(t.tagID){case o.BODY:case o.HTML:case o.BR:{dn(e,t);break}case o.TEMPLATE:{Tr(e,t);break}default:e._err(t,P.endTagWithoutMatchingOpenElement)}}function dn(e,t){e._insertFakeElement(O.BODY,o.BODY),e.insertionMode=k.IN_BODY,N0(e,t)}function N0(e,t){switch(t.type){case de.CHARACTER:{Tc(e,t);break}case de.WHITESPACE_CHARACTER:{Ec(e,t);break}case de.COMMENT:{Ka(e,t);break}case de.START_TAG:{We(e,t);break}case de.END_TAG:{D0(e,t);break}case de.EOF:{Ac(e,t);break}}}function Ec(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t)}function Tc(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t),e.framesetOk=!1}function A5(e,t){e.openElements.tmplCount===0&&e.treeAdapter.adoptAttributes(e.openElements.items[0],t.attrs)}function k5(e,t){const r=e.openElements.tryPeekProperlyNestedBodyElement();r&&e.openElements.tmplCount===0&&(e.framesetOk=!1,e.treeAdapter.adoptAttributes(r,t.attrs))}function S5(e,t){const r=e.openElements.tryPeekProperlyNestedBodyElement();e.framesetOk&&r&&(e.treeAdapter.detachNode(r),e.openElements.popAllUpToHtmlElement(),e._insertElement(t,H.HTML),e.insertionMode=k.IN_FRAMESET)}function w5(e,t){e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._insertElement(t,H.HTML)}function C5(e,t){e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e.openElements.currentTagId!==void 0&&Qa.has(e.openElements.currentTagId)&&e.openElements.pop(),e._insertElement(t,H.HTML)}function _5(e,t){e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._insertElement(t,H.HTML),e.skipNextNewLine=!0,e.framesetOk=!1}function I5(e,t){const r=e.openElements.tmplCount>0;(!e.formElement||r)&&(e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._insertElement(t,H.HTML),r||(e.formElement=e.openElements.current))}function N5(e,t){e.framesetOk=!1;const r=t.tagID;for(let n=e.openElements.stackTop;n>=0;n--){const a=e.openElements.tagIDs[n];if(r===o.LI&&a===o.LI||(r===o.DD||r===o.DT)&&(a===o.DD||a===o.DT)){e.openElements.generateImpliedEndTagsWithExclusion(a),e.openElements.popUntilTagNamePopped(a);break}if(a!==o.ADDRESS&&a!==o.DIV&&a!==o.P&&e._isSpecialElement(e.openElements.items[n],a))break}e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._insertElement(t,H.HTML)}function D5(e,t){e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._insertElement(t,H.HTML),e.tokenizer.state=De.PLAINTEXT}function O5(e,t){e.openElements.hasInScope(o.BUTTON)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(o.BUTTON)),e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML),e.framesetOk=!1}function L5(e,t){const r=e.activeFormattingElements.getElementEntryInScopeWithTagName(O.A);r&&(Mi(e,t),e.openElements.remove(r.element),e.activeFormattingElements.removeEntry(r)),e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}function R5(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}function M5(e,t){e._reconstructActiveFormattingElements(),e.openElements.hasInScope(o.NOBR)&&(Mi(e,t),e._reconstructActiveFormattingElements()),e._insertElement(t,H.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}function P5(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML),e.activeFormattingElements.insertMarker(),e.framesetOk=!1}function B5(e,t){e.treeAdapter.getDocumentMode(e.document)!==pt.QUIRKS&&e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._insertElement(t,H.HTML),e.framesetOk=!1,e.insertionMode=k.IN_TABLE}function xc(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,H.HTML),e.framesetOk=!1,t.ackSelfClosing=!0}function yc(e){const t=oc(e,mr.TYPE);return t!=null&&t.toLowerCase()===t5}function F5(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,H.HTML),yc(t)||(e.framesetOk=!1),t.ackSelfClosing=!0}function H5(e,t){e._appendElement(t,H.HTML),t.ackSelfClosing=!0}function z5(e,t){e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._appendElement(t,H.HTML),e.framesetOk=!1,t.ackSelfClosing=!0}function U5(e,t){t.tagName=O.IMG,t.tagID=o.IMG,xc(e,t)}function q5(e,t){e._insertElement(t,H.HTML),e.skipNextNewLine=!0,e.tokenizer.state=De.RCDATA,e.originalInsertionMode=e.insertionMode,e.framesetOk=!1,e.insertionMode=k.TEXT}function Y5(e,t){e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._reconstructActiveFormattingElements(),e.framesetOk=!1,e._switchToTextParsing(t,De.RAWTEXT)}function G5(e,t){e.framesetOk=!1,e._switchToTextParsing(t,De.RAWTEXT)}function Bs(e,t){e._switchToTextParsing(t,De.RAWTEXT)}function V5(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML),e.framesetOk=!1,e.insertionMode=e.insertionMode===k.IN_TABLE||e.insertionMode===k.IN_CAPTION||e.insertionMode===k.IN_TABLE_BODY||e.insertionMode===k.IN_ROW||e.insertionMode===k.IN_CELL?k.IN_SELECT_IN_TABLE:k.IN_SELECT}function j5(e,t){e.openElements.currentTagId===o.OPTION&&e.openElements.pop(),e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML)}function W5(e,t){e.openElements.hasInScope(o.RUBY)&&e.openElements.generateImpliedEndTags(),e._insertElement(t,H.HTML)}function X5(e,t){e.openElements.hasInScope(o.RUBY)&&e.openElements.generateImpliedEndTagsWithExclusion(o.RTC),e._insertElement(t,H.HTML)}function $5(e,t){e._reconstructActiveFormattingElements(),pc(t),Ri(t),t.selfClosing?e._appendElement(t,H.MATHML):e._insertElement(t,H.MATHML),t.ackSelfClosing=!0}function Q5(e,t){e._reconstructActiveFormattingElements(),gc(t),Ri(t),t.selfClosing?e._appendElement(t,H.SVG):e._insertElement(t,H.SVG),t.ackSelfClosing=!0}function Fs(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML)}function We(e,t){switch(t.tagID){case o.I:case o.S:case o.B:case o.U:case o.EM:case o.TT:case o.BIG:case o.CODE:case o.FONT:case o.SMALL:case o.STRIKE:case o.STRONG:{R5(e,t);break}case o.A:{L5(e,t);break}case o.H1:case o.H2:case o.H3:case o.H4:case o.H5:case o.H6:{C5(e,t);break}case o.P:case o.DL:case o.OL:case o.UL:case o.DIV:case o.DIR:case o.NAV:case o.MAIN:case o.MENU:case o.ASIDE:case o.CENTER:case o.FIGURE:case o.FOOTER:case o.HEADER:case o.HGROUP:case o.DIALOG:case o.DETAILS:case o.ADDRESS:case o.ARTICLE:case o.SEARCH:case o.SECTION:case o.SUMMARY:case o.FIELDSET:case o.BLOCKQUOTE:case o.FIGCAPTION:{w5(e,t);break}case o.LI:case o.DD:case o.DT:{N5(e,t);break}case o.BR:case o.IMG:case o.WBR:case o.AREA:case o.EMBED:case o.KEYGEN:{xc(e,t);break}case o.HR:{z5(e,t);break}case o.RB:case o.RTC:{W5(e,t);break}case o.RT:case o.RP:{X5(e,t);break}case o.PRE:case o.LISTING:{_5(e,t);break}case o.XMP:{Y5(e,t);break}case o.SVG:{Q5(e,t);break}case o.HTML:{A5(e,t);break}case o.BASE:case o.LINK:case o.META:case o.STYLE:case o.TITLE:case o.SCRIPT:case o.BGSOUND:case o.BASEFONT:case o.TEMPLATE:{yt(e,t);break}case o.BODY:{k5(e,t);break}case o.FORM:{I5(e,t);break}case o.NOBR:{M5(e,t);break}case o.MATH:{$5(e,t);break}case o.TABLE:{B5(e,t);break}case o.INPUT:{F5(e,t);break}case o.PARAM:case o.TRACK:case o.SOURCE:{H5(e,t);break}case o.IMAGE:{U5(e,t);break}case o.BUTTON:{O5(e,t);break}case o.APPLET:case o.OBJECT:case o.MARQUEE:{P5(e,t);break}case o.IFRAME:{G5(e,t);break}case o.SELECT:{V5(e,t);break}case o.OPTION:case o.OPTGROUP:{j5(e,t);break}case o.NOEMBED:case o.NOFRAMES:{Bs(e,t);break}case o.FRAMESET:{S5(e,t);break}case o.TEXTAREA:{q5(e,t);break}case o.NOSCRIPT:{e.options.scriptingEnabled?Bs(e,t):Fs(e,t);break}case o.PLAINTEXT:{D5(e,t);break}case o.COL:case o.TH:case o.TD:case o.TR:case o.HEAD:case o.FRAME:case o.TBODY:case o.TFOOT:case o.THEAD:case o.CAPTION:case o.COLGROUP:break;default:Fs(e,t)}}function K5(e,t){if(e.openElements.hasInScope(o.BODY)&&(e.insertionMode=k.AFTER_BODY,e.options.sourceCodeLocationInfo)){const r=e.openElements.tryPeekProperlyNestedBodyElement();r&&e._setEndLocation(r,t)}}function J5(e,t){e.openElements.hasInScope(o.BODY)&&(e.insertionMode=k.AFTER_BODY,Dc(e,t))}function Z5(e,t){const r=t.tagID;e.openElements.hasInScope(r)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(r))}function e7(e){const t=e.openElements.tmplCount>0,{formElement:r}=e;t||(e.formElement=null),(r||t)&&e.openElements.hasInScope(o.FORM)&&(e.openElements.generateImpliedEndTags(),t?e.openElements.popUntilTagNamePopped(o.FORM):r&&e.openElements.remove(r))}function t7(e){e.openElements.hasInButtonScope(o.P)||e._insertFakeElement(O.P,o.P),e._closePElement()}function r7(e){e.openElements.hasInListItemScope(o.LI)&&(e.openElements.generateImpliedEndTagsWithExclusion(o.LI),e.openElements.popUntilTagNamePopped(o.LI))}function n7(e,t){const r=t.tagID;e.openElements.hasInScope(r)&&(e.openElements.generateImpliedEndTagsWithExclusion(r),e.openElements.popUntilTagNamePopped(r))}function a7(e){e.openElements.hasNumberedHeaderInScope()&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilNumberedHeaderPopped())}function i7(e,t){const r=t.tagID;e.openElements.hasInScope(r)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(r),e.activeFormattingElements.clearToLastMarker())}function u7(e){e._reconstructActiveFormattingElements(),e._insertFakeElement(O.BR,o.BR),e.openElements.pop(),e.framesetOk=!1}function vc(e,t){const r=t.tagName,n=t.tagID;for(let a=e.openElements.stackTop;a>0;a--){const i=e.openElements.items[a],u=e.openElements.tagIDs[a];if(n===u&&(n!==o.UNKNOWN||e.treeAdapter.getTagName(i)===r)){e.openElements.generateImpliedEndTagsWithExclusion(n),e.openElements.stackTop>=a&&e.openElements.shortenToLength(a);break}if(e._isSpecialElement(i,u))break}}function D0(e,t){switch(t.tagID){case o.A:case o.B:case o.I:case o.S:case o.U:case o.EM:case o.TT:case o.BIG:case o.CODE:case o.FONT:case o.NOBR:case o.SMALL:case o.STRIKE:case o.STRONG:{Mi(e,t);break}case o.P:{t7(e);break}case o.DL:case o.UL:case o.OL:case o.DIR:case o.DIV:case o.NAV:case o.PRE:case o.MAIN:case o.MENU:case o.ASIDE:case o.BUTTON:case o.CENTER:case o.FIGURE:case o.FOOTER:case o.HEADER:case o.HGROUP:case o.DIALOG:case o.ADDRESS:case o.ARTICLE:case o.DETAILS:case o.SEARCH:case o.SECTION:case o.SUMMARY:case o.LISTING:case o.FIELDSET:case o.BLOCKQUOTE:case o.FIGCAPTION:{Z5(e,t);break}case o.LI:{r7(e);break}case o.DD:case o.DT:{n7(e,t);break}case o.H1:case o.H2:case o.H3:case o.H4:case o.H5:case o.H6:{a7(e);break}case o.BR:{u7(e);break}case o.BODY:{K5(e,t);break}case o.HTML:{J5(e,t);break}case o.FORM:{e7(e);break}case o.APPLET:case o.OBJECT:case o.MARQUEE:{i7(e,t);break}case o.TEMPLATE:{Tr(e,t);break}default:vc(e,t)}}function Ac(e,t){e.tmplInsertionModeStack.length>0?Nc(e,t):Pi(e,t)}function s7(e,t){var r;t.tagID===o.SCRIPT&&((r=e.scriptHandler)===null||r===void 0||r.call(e,e.openElements.current)),e.openElements.pop(),e.insertionMode=e.originalInsertionMode}function l7(e,t){e._err(t,P.eofInElementThatCanContainOnlyText),e.openElements.pop(),e.insertionMode=e.originalInsertionMode,e.onEof(t)}function ba(e,t){if(e.openElements.currentTagId!==void 0&&bc.has(e.openElements.currentTagId))switch(e.pendingCharacterTokens.length=0,e.hasNonWhitespacePendingCharacterToken=!1,e.originalInsertionMode=e.insertionMode,e.insertionMode=k.IN_TABLE_TEXT,t.type){case de.CHARACTER:{Sc(e,t);break}case de.WHITESPACE_CHARACTER:{kc(e,t);break}}else wn(e,t)}function o7(e,t){e.openElements.clearBackToTableContext(),e.activeFormattingElements.insertMarker(),e._insertElement(t,H.HTML),e.insertionMode=k.IN_CAPTION}function c7(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,H.HTML),e.insertionMode=k.IN_COLUMN_GROUP}function h7(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(O.COLGROUP,o.COLGROUP),e.insertionMode=k.IN_COLUMN_GROUP,Bi(e,t)}function d7(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,H.HTML),e.insertionMode=k.IN_TABLE_BODY}function f7(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(O.TBODY,o.TBODY),e.insertionMode=k.IN_TABLE_BODY,O0(e,t)}function m7(e,t){e.openElements.hasInTableScope(o.TABLE)&&(e.openElements.popUntilTagNamePopped(o.TABLE),e._resetInsertionMode(),e._processStartTag(t))}function p7(e,t){yc(t)?e._appendElement(t,H.HTML):wn(e,t),t.ackSelfClosing=!0}function g7(e,t){!e.formElement&&e.openElements.tmplCount===0&&(e._insertElement(t,H.HTML),e.formElement=e.openElements.current,e.openElements.pop())}function Rr(e,t){switch(t.tagID){case o.TD:case o.TH:case o.TR:{f7(e,t);break}case o.STYLE:case o.SCRIPT:case o.TEMPLATE:{yt(e,t);break}case o.COL:{h7(e,t);break}case o.FORM:{g7(e,t);break}case o.TABLE:{m7(e,t);break}case o.TBODY:case o.TFOOT:case o.THEAD:{d7(e,t);break}case o.INPUT:{p7(e,t);break}case o.CAPTION:{o7(e,t);break}case o.COLGROUP:{c7(e,t);break}default:wn(e,t)}}function En(e,t){switch(t.tagID){case o.TABLE:{e.openElements.hasInTableScope(o.TABLE)&&(e.openElements.popUntilTagNamePopped(o.TABLE),e._resetInsertionMode());break}case o.TEMPLATE:{Tr(e,t);break}case o.BODY:case o.CAPTION:case o.COL:case o.COLGROUP:case o.HTML:case o.TBODY:case o.TD:case o.TFOOT:case o.TH:case o.THEAD:case o.TR:break;default:wn(e,t)}}function wn(e,t){const r=e.fosterParentingEnabled;e.fosterParentingEnabled=!0,N0(e,t),e.fosterParentingEnabled=r}function kc(e,t){e.pendingCharacterTokens.push(t)}function Sc(e,t){e.pendingCharacterTokens.push(t),e.hasNonWhitespacePendingCharacterToken=!0}function en(e,t){let r=0;if(e.hasNonWhitespacePendingCharacterToken)for(;r0&&e.openElements.currentTagId===o.OPTION&&e.openElements.tagIDs[e.openElements.stackTop-1]===o.OPTGROUP&&e.openElements.pop(),e.openElements.currentTagId===o.OPTGROUP&&e.openElements.pop();break}case o.OPTION:{e.openElements.currentTagId===o.OPTION&&e.openElements.pop();break}case o.SELECT:{e.openElements.hasInSelectScope(o.SELECT)&&(e.openElements.popUntilTagNamePopped(o.SELECT),e._resetInsertionMode());break}case o.TEMPLATE:{Tr(e,t);break}}}function v7(e,t){const r=t.tagID;r===o.CAPTION||r===o.TABLE||r===o.TBODY||r===o.TFOOT||r===o.THEAD||r===o.TR||r===o.TD||r===o.TH?(e.openElements.popUntilTagNamePopped(o.SELECT),e._resetInsertionMode(),e._processStartTag(t)):_c(e,t)}function A7(e,t){const r=t.tagID;r===o.CAPTION||r===o.TABLE||r===o.TBODY||r===o.TFOOT||r===o.THEAD||r===o.TR||r===o.TD||r===o.TH?e.openElements.hasInTableScope(r)&&(e.openElements.popUntilTagNamePopped(o.SELECT),e._resetInsertionMode(),e.onEndTag(t)):Ic(e,t)}function k7(e,t){switch(t.tagID){case o.BASE:case o.BASEFONT:case o.BGSOUND:case o.LINK:case o.META:case o.NOFRAMES:case o.SCRIPT:case o.STYLE:case o.TEMPLATE:case o.TITLE:{yt(e,t);break}case o.CAPTION:case o.COLGROUP:case o.TBODY:case o.TFOOT:case o.THEAD:{e.tmplInsertionModeStack[0]=k.IN_TABLE,e.insertionMode=k.IN_TABLE,Rr(e,t);break}case o.COL:{e.tmplInsertionModeStack[0]=k.IN_COLUMN_GROUP,e.insertionMode=k.IN_COLUMN_GROUP,Bi(e,t);break}case o.TR:{e.tmplInsertionModeStack[0]=k.IN_TABLE_BODY,e.insertionMode=k.IN_TABLE_BODY,O0(e,t);break}case o.TD:case o.TH:{e.tmplInsertionModeStack[0]=k.IN_ROW,e.insertionMode=k.IN_ROW,L0(e,t);break}default:e.tmplInsertionModeStack[0]=k.IN_BODY,e.insertionMode=k.IN_BODY,We(e,t)}}function S7(e,t){t.tagID===o.TEMPLATE&&Tr(e,t)}function Nc(e,t){e.openElements.tmplCount>0?(e.openElements.popUntilTagNamePopped(o.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e.tmplInsertionModeStack.shift(),e._resetInsertionMode(),e.onEof(t)):Pi(e,t)}function w7(e,t){t.tagID===o.HTML?We(e,t):o0(e,t)}function Dc(e,t){var r;if(t.tagID===o.HTML){if(e.fragmentContext||(e.insertionMode=k.AFTER_AFTER_BODY),e.options.sourceCodeLocationInfo&&e.openElements.tagIDs[0]===o.HTML){e._setEndLocation(e.openElements.items[0],t);const n=e.openElements.items[1];n&&!(!((r=e.treeAdapter.getNodeSourceCodeLocation(n))===null||r===void 0)&&r.endTag)&&e._setEndLocation(n,t)}}else o0(e,t)}function o0(e,t){e.insertionMode=k.IN_BODY,N0(e,t)}function C7(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.FRAMESET:{e._insertElement(t,H.HTML);break}case o.FRAME:{e._appendElement(t,H.HTML),t.ackSelfClosing=!0;break}case o.NOFRAMES:{yt(e,t);break}}}function _7(e,t){t.tagID===o.FRAMESET&&!e.openElements.isRootHtmlElementCurrent()&&(e.openElements.pop(),!e.fragmentContext&&e.openElements.currentTagId!==o.FRAMESET&&(e.insertionMode=k.AFTER_FRAMESET))}function I7(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.NOFRAMES:{yt(e,t);break}}}function N7(e,t){t.tagID===o.HTML&&(e.insertionMode=k.AFTER_AFTER_FRAMESET)}function D7(e,t){t.tagID===o.HTML?We(e,t):Jn(e,t)}function Jn(e,t){e.insertionMode=k.IN_BODY,N0(e,t)}function O7(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.NOFRAMES:{yt(e,t);break}}}function L7(e,t){t.chars=Se,e._insertCharacters(t)}function R7(e,t){e._insertCharacters(t),e.framesetOk=!1}function Oc(e){for(;e.treeAdapter.getNamespaceURI(e.openElements.current)!==H.HTML&&e.openElements.currentTagId!==void 0&&!e._isIntegrationPoint(e.openElements.currentTagId,e.openElements.current);)e.openElements.pop()}function M7(e,t){if(Qp(t))Oc(e),e._startTagOutsideForeignContent(t);else{const r=e._getAdjustedCurrentElement(),n=e.treeAdapter.getNamespaceURI(r);n===H.MATHML?pc(t):n===H.SVG&&(Kp(t),gc(t)),Ri(t),t.selfClosing?e._appendElement(t,n):e._insertElement(t,n),t.ackSelfClosing=!0}}function P7(e,t){if(t.tagID===o.P||t.tagID===o.BR){Oc(e),e._endTagOutsideForeignContent(t);return}for(let r=e.openElements.stackTop;r>0;r--){const n=e.openElements.items[r];if(e.treeAdapter.getNamespaceURI(n)===H.HTML){e._endTagOutsideForeignContent(t);break}const a=e.treeAdapter.getTagName(n);if(a.toLowerCase()===t.tagName){t.tagName=a,e.openElements.shortenToLength(r);break}}}O.AREA,O.BASE,O.BASEFONT,O.BGSOUND,O.BR,O.COL,O.EMBED,O.FRAME,O.HR,O.IMG,O.INPUT,O.KEYGEN,O.LINK,O.META,O.PARAM,O.SOURCE,O.TRACK,O.WBR;const B7=/<(\/?)(iframe|noembed|noframes|plaintext|script|style|textarea|title|xmp)(?=[\t\n\f\r />])/gi,F7=new Set(["mdxFlowExpression","mdxJsxFlowElement","mdxJsxTextElement","mdxTextExpression","mdxjsEsm"]),Hs={sourceCodeLocationInfo:!0,scriptingEnabled:!1};function Lc(e,t){const r=X7(e),n=_l("type",{handlers:{root:H7,element:z7,text:U7,comment:Mc,doctype:q7,raw:G7},unknown:V7}),a={parser:r?new Ps(Hs):Ps.getFragmentParser(void 0,Hs),handle(s){n(s,a)},stitches:!1,options:t||{}};n(e,a),Yr(a,_t());const i=r?a.parser.document:a.parser.getFragment(),u=$6(i,{file:a.options.file});return a.stitches&&b0(u,"comment",function(s,l,c){const d=s;if(d.value.stitch&&c&&l!==void 0){const f=c.children;return f[l]=d.value.stitch,l}}),u.type==="root"&&u.children.length===1&&u.children[0].type===e.type?u.children[0]:u}function Rc(e,t){let r=-1;if(e)for(;++r4&&(t.parser.tokenizer.state=0);const r={type:de.CHARACTER,chars:e.value,location:Cn(e)};Yr(t,_t(e)),t.parser.currentToken=r,t.parser._processToken(t.parser.currentToken)}function q7(e,t){const r={type:de.DOCTYPE,name:"html",forceQuirks:!1,publicId:"",systemId:"",location:Cn(e)};Yr(t,_t(e)),t.parser.currentToken=r,t.parser._processToken(t.parser.currentToken)}function Y7(e,t){t.stitches=!0;const r=$7(e);if("children"in e&&"children"in r){const n=Lc({type:"root",children:e.children},t.options);r.children=n.children}Mc({type:"comment",value:{stitch:r}},t)}function Mc(e,t){const r=e.value,n={type:de.COMMENT,data:r,location:Cn(e)};Yr(t,_t(e)),t.parser.currentToken=n,t.parser._processToken(t.parser.currentToken)}function G7(e,t){if(t.parser.tokenizer.preprocessor.html="",t.parser.tokenizer.preprocessor.pos=-1,t.parser.tokenizer.preprocessor.lastGapPos=-2,t.parser.tokenizer.preprocessor.gapStack=[],t.parser.tokenizer.preprocessor.skipNextNewLine=!1,t.parser.tokenizer.preprocessor.lastChunkWritten=!1,t.parser.tokenizer.preprocessor.endOfChunkHit=!1,t.parser.tokenizer.preprocessor.isEol=!1,Pc(t,_t(e)),t.parser.tokenizer.write(t.options.tagfilter?e.value.replace(B7,"<$1$2"):e.value,!1),t.parser.tokenizer._runParsingLoop(),t.parser.tokenizer.state===72||t.parser.tokenizer.state===78){t.parser.tokenizer.preprocessor.lastChunkWritten=!0;const r=t.parser.tokenizer._consume();t.parser.tokenizer._callState(r)}}function V7(e,t){const r=e;if(t.options.passThrough&&t.options.passThrough.includes(r.type))Y7(r,t);else{let n="";throw F7.has(r.type)&&(n=". It looks like you are using MDX nodes with `hast-util-raw` (or `rehype-raw`). If you use this because you are using remark or rehype plugins that inject `'html'` nodes, then please raise an issue with that plugin, as its a bad and slow idea. If you use this because you are using markdown syntax, then you have to configure this utility (or plugin) to pass through these nodes (see `passThrough` in docs), but you can also migrate to use the MDX syntax"),new Error("Cannot compile `"+r.type+"` node"+n)}}function Yr(e,t){Pc(e,t);const r=e.parser.tokenizer.currentCharacterToken;r&&r.location&&(r.location.endLine=e.parser.tokenizer.preprocessor.line,r.location.endCol=e.parser.tokenizer.preprocessor.col+1,r.location.endOffset=e.parser.tokenizer.preprocessor.offset+1,e.parser.currentToken=r,e.parser._processToken(e.parser.currentToken)),e.parser.tokenizer.paused=!1,e.parser.tokenizer.inLoop=!1,e.parser.tokenizer.active=!1,e.parser.tokenizer.returnState=De.DATA,e.parser.tokenizer.charRefCode=-1,e.parser.tokenizer.consumedAfterSnapshot=-1,e.parser.tokenizer.currentLocation=null,e.parser.tokenizer.currentCharacterToken=null,e.parser.tokenizer.currentToken=null,e.parser.tokenizer.currentAttr={name:"",value:""}}function Pc(e,t){if(t&&t.offset!==void 0){const r={startLine:t.line,startCol:t.column,startOffset:t.offset,endLine:-1,endCol:-1,endOffset:-1};e.parser.tokenizer.preprocessor.lineStartPos=-t.column+1,e.parser.tokenizer.preprocessor.droppedBufferSize=t.offset,e.parser.tokenizer.preprocessor.line=t.line,e.parser.tokenizer.currentLocation=r}}function j7(e,t){const r=e.tagName.toLowerCase();if(t.parser.tokenizer.state===De.PLAINTEXT)return;Yr(t,_t(e));const n=t.parser.openElements.current;let a="namespaceURI"in n?n.namespaceURI:Ct.html;a===Ct.html&&r==="svg"&&(a=Ct.svg);const i=ep({...e,children:[]},{space:a===Ct.svg?"svg":"html"}),u={type:de.START_TAG,tagName:r,tagID:qr(r),selfClosing:!1,ackSelfClosing:!1,attrs:"attrs"in i?i.attrs:[],location:Cn(e)};t.parser.currentToken=u,t.parser._processToken(t.parser.currentToken),t.parser.tokenizer.lastStartTagName=r}function W7(e,t){const r=e.tagName.toLowerCase();if(!t.parser.tokenizer.inForeignNode&&lp.includes(r)||t.parser.tokenizer.state===De.PLAINTEXT)return;Yr(t,d0(e));const n={type:de.END_TAG,tagName:r,tagID:qr(r),selfClosing:!1,ackSelfClosing:!1,attrs:[],location:Cn(e)};t.parser.currentToken=n,t.parser._processToken(t.parser.currentToken),r===t.parser.tokenizer.lastStartTagName&&(t.parser.tokenizer.state===De.RCDATA||t.parser.tokenizer.state===De.RAWTEXT||t.parser.tokenizer.state===De.SCRIPT_DATA)&&(t.parser.tokenizer.state=De.DATA)}function X7(e){const t=e.type==="root"?e.children[0]:e;return!!(t&&(t.type==="doctype"||t.type==="element"&&t.tagName.toLowerCase()==="html"))}function Cn(e){const t=_t(e)||{line:void 0,column:void 0,offset:void 0},r=d0(e)||{line:void 0,column:void 0,offset:void 0};return{startLine:t.line,startCol:t.column,startOffset:t.offset,endLine:r.line,endCol:r.column,endOffset:r.offset}}function $7(e){return"children"in e?Nr({...e,children:[]}):Nr(e)}function Q7(e){return function(t,r){return Lc(t,{...e,file:r})}}function c0(e){return typeof e=="string"?e:typeof e=="number"?String(e):e?Array.isArray(e)?e.map(c0).join(""):typeof e=="object"&&"props"in e?c0(e.props.children):"":""}function K7(e){return e.replace(/\$[^$]*\$/g,"").replace(/\\[a-zA-Z]+\{[^}]*\}/g,"").replace(/[\\{}]/g,"").toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")}function Sr(e){return function({children:r,...n}){const a=c0(r),i=n.id||K7(a);return pe.jsx(e,{...n,id:i,children:r})}}const J7={h1:Sr("h1"),h2:Sr("h2"),h3:Sr("h3"),h4:Sr("h4"),h5:Sr("h5"),h6:Sr("h6")};function a8(){const{id:e}=Bc(),t=zc.find(d=>d.id===e),[r,n]=Xr.useState(""),[a,i]=Xr.useState(null),[u,s]=Xr.useState(null);Xr.useEffect(()=>{if(!t)return;const d=new AbortController,f=t.filename;return fetch(`/blog/${f}`,{signal:d.signal}).then(g=>{if(!g.ok)throw new Error("Failed to load post");return g.text()}).then(g=>{const p=g.replace(/^\s*#[^#\n]*\r?\n/,"");n(p),i(f),s(null)}).catch(g=>{g instanceof DOMException&&g.name==="AbortError"||(console.error(g),i(f),s(f))}),()=>d.abort()},[t]);const l=!!(t&&a!==t.filename),c=!!(t&&u===t.filename);return Xr.useEffect(()=>{function d(f){const p=f.target.closest("a");if(!p)return;const x=p.getAttribute("href");if(!x||!x.startsWith("#"))return;f.preventDefault();const S=document.getElementById(x.slice(1));S&&(S.scrollIntoView({behavior:"smooth",block:"start"}),window.history.pushState(null,"",x))}return document.addEventListener("click",d),()=>document.removeEventListener("click",d)},[]),t?pe.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[pe.jsx(Fc,{title:`${t.title} - QECTOR Blog`,description:t.description}),pe.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[pe.jsx("div",{className:"absolute top-0 right-0 w-[800px] h-[800px] bg-cyan-900/10 blur-[120px] rounded-full pointer-events-none -translate-y-1/2 translate-x-1/3"}),pe.jsx("div",{className:"absolute bottom-0 left-0 w-[600px] h-[600px] bg-slate-800/20 blur-[100px] rounded-full pointer-events-none translate-y-1/3 -translate-x-1/3"}),pe.jsxs("div",{className:"max-w-4xl mx-auto px-6 relative z-10",children:[pe.jsxs(P0,{to:"/blog",className:"inline-flex items-center min-h-[44px] text-slate-400 hover:text-cyan-300 mb-12 transition-colors duration-300 font-medium tracking-wide",children:[pe.jsx(Uc,{size:18,className:"mr-2"}),"Back to All Articles"]}),pe.jsxs("header",{className:"mb-16 border-b border-slate-800/60 pb-10",children:[pe.jsxs("div",{className:"flex flex-wrap items-center text-cyan-300 mb-6 gap-4",children:[pe.jsxs("span",{className:"flex items-center text-sm font-semibold tracking-widest uppercase",children:[pe.jsx(qc,{size:16,className:"mr-2"}),t.date]}),pe.jsx("span",{className:"rounded-full border border-slate-700 px-3 py-1 text-xs font-semibold tracking-wider text-slate-400",children:t.category}),pe.jsxs("span",{className:"text-sm text-slate-400",children:["By ",pe.jsx(P0,{to:"/guillaume-lessard",className:"hover:text-cyan-300",children:"Guillaume Lessard"}),r?` · ${Math.max(1,Math.round(r.split(/\s+/).length/220))} min read`:""]})]}),pe.jsx("h1",{className:"text-4xl md:text-5xl lg:text-6xl font-extrabold tracking-tight mb-8 leading-tight text-white",children:t.title}),pe.jsx("p",{className:"text-xl text-slate-300 leading-relaxed max-w-3xl",children:t.description})]}),pe.jsx("div",{className:"bg-slate-900/40 backdrop-blur-md border border-slate-800/80 rounded-3xl p-8 md:p-12 shadow-2xl",children:l?pe.jsxs("div",{className:"flex flex-col items-center justify-center py-20 text-slate-400",children:[pe.jsx(Yc,{size:48,className:"animate-spin text-cyan-400 mb-4"}),pe.jsx("p",{className:"animate-pulse",children:"Loading article..."})]}):c?pe.jsx("div",{className:"py-20 text-center text-red-400",children:pe.jsx("p",{children:"Failed to load the article. Please try again later."})}):pe.jsx("article",{className:"prose prose-invert prose-cyan max-w-none prose-headings:font-bold prose-headings:tracking-tight prose-a:text-cyan-300 prose-a:no-underline hover:prose-a:underline prose-code:text-cyan-200 prose-code:bg-cyan-950/30 prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded-md prose-pre:bg-slate-950/80 prose-pre:border prose-pre:border-slate-800 prose-img:rounded-xl prose-img:border prose-img:border-slate-800",children:pe.jsx(Qf,{remarkPlugins:[l4,g6],rehypePlugins:[j6,Q7],components:{...J7,table:d=>{const{node:f,...g}=d;return pe.jsx("div",{className:"overflow-x-auto",children:pe.jsx("table",{...g})})},pre:d=>{const{children:f}=d,g=Fi.Children.toArray(f)[0];let p="",x="text";if(Fi.isValidElement(g)){const S=g.props,D=/language-([\w-]+)/.exec(S.className||"");D&&(x=D[1]),p=c0(S.children).replace(/\n$/,"")}return pe.jsx(Hc,{code:p,language:x,className:"not-prose"})},img:d=>{const f=d.width!=null&&d.height!=null;return pe.jsx("img",{...d,className:f?"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto":"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto aspect-video object-cover",loading:"lazy"})}},children:r})})})]})]})]}):pe.jsx("div",{className:"min-h-screen bg-slate-950 text-slate-50 flex items-center justify-center",children:pe.jsxs("div",{className:"text-center",children:[pe.jsx("h1",{className:"text-4xl font-bold mb-4",children:"Post Not Found"}),pe.jsx(P0,{to:"/blog",className:"text-cyan-300 hover:text-cyan-200",children:"Return to Blog"})]})})}export{a8 as default}; diff --git a/assets/BlogPost-Dix1a_3A.js b/assets/BlogPost-Dix1a_3A.js deleted file mode 100644 index 2ce2f3b5..00000000 --- a/assets/BlogPost-Dix1a_3A.js +++ /dev/null @@ -1 +0,0 @@ -import{r as d,j as e,R as b}from"./vendor-react-BiHfrq0e.js";import{S as N,C as k}from"./index-CqAA-ZXu.js";import{b as E}from"./blogData-OjR2ZtNr.js";import{M as C,r as A,a as L,b as B,c as P}from"./vendor-md-CLKxNZoa.js";import{C as z,L as j}from"./vendor-PiU4YGcH.js";import{m as F,k as S,n as $}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function u(t){return typeof t=="string"?t:typeof t=="number"?String(t):t?Array.isArray(t)?t.map(u).join(""):typeof t=="object"&&"props"in t?u(t.props.children):"":""}function R(t){return t.replace(/\$[^$]*\$/g,"").replace(/\\[a-zA-Z]+\{[^}]*\}/g,"").replace(/[\\{}]/g,"").toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")}function i(t){return function({children:x,...m}){const h=u(x),p=m.id||R(h);return e.jsx(t,{...m,id:p,children:x})}}const M={h1:i("h1"),h2:i("h2"),h3:i("h3"),h4:i("h4"),h5:i("h5"),h6:i("h6")};function G(){const{id:t}=z(),r=E.find(s=>s.id===t),[x,m]=d.useState(""),[h,p]=d.useState(null),[y,f]=d.useState(null);d.useEffect(()=>{if(!r)return;const s=new AbortController,n=r.filename;return fetch(`/blog/${n}`,{signal:s.signal}).then(a=>{if(!a.ok)throw new Error("Failed to load post");return a.text()}).then(a=>{const o=a.replace(/^\s*#[^#\n]*\r?\n/,"");m(o),p(n),f(null)}).catch(a=>{a instanceof DOMException&&a.name==="AbortError"||(console.error(a),p(n),f(n))}),()=>s.abort()},[r]);const w=!!(r&&h!==r.filename),v=!!(r&&y===r.filename);return d.useEffect(()=>{function s(n){const o=n.target.closest("a");if(!o)return;const l=o.getAttribute("href");if(!l||!l.startsWith("#"))return;n.preventDefault();const c=document.getElementById(l.slice(1));c&&(c.scrollIntoView({behavior:"smooth",block:"start"}),window.history.pushState(null,"",l))}return document.addEventListener("click",s),()=>document.removeEventListener("click",s)},[]),r?e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(N,{title:`${r.title} - QECTOR Blog`,description:r.description}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 right-0 w-[800px] h-[800px] bg-cyan-900/10 blur-[120px] rounded-full pointer-events-none -translate-y-1/2 translate-x-1/3"}),e.jsx("div",{className:"absolute bottom-0 left-0 w-[600px] h-[600px] bg-slate-800/20 blur-[100px] rounded-full pointer-events-none translate-y-1/3 -translate-x-1/3"}),e.jsxs("div",{className:"max-w-4xl mx-auto px-6 relative z-10",children:[e.jsxs(j,{to:"/blog",className:"inline-flex items-center min-h-[44px] text-slate-400 hover:text-cyan-300 mb-12 transition-colors duration-300 font-medium tracking-wide",children:[e.jsx(F,{size:18,className:"mr-2"}),"Back to All Articles"]}),e.jsxs("header",{className:"mb-16 border-b border-slate-800/60 pb-10",children:[e.jsxs("div",{className:"flex flex-wrap items-center text-cyan-300 mb-6 gap-4",children:[e.jsxs("span",{className:"flex items-center text-sm font-semibold tracking-widest uppercase",children:[e.jsx(S,{size:16,className:"mr-2"}),r.date]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-3 py-1 text-xs font-semibold tracking-wider text-slate-400",children:r.category})]}),e.jsx("h1",{className:"text-4xl md:text-5xl lg:text-6xl font-extrabold tracking-tight mb-8 leading-tight text-white",children:r.title}),e.jsx("p",{className:"text-xl text-slate-300 leading-relaxed max-w-3xl",children:r.description})]}),e.jsx("div",{className:"bg-slate-900/40 backdrop-blur-md border border-slate-800/80 rounded-3xl p-8 md:p-12 shadow-2xl",children:w?e.jsxs("div",{className:"flex flex-col items-center justify-center py-20 text-slate-400",children:[e.jsx($,{size:48,className:"animate-spin text-cyan-400 mb-4"}),e.jsx("p",{className:"animate-pulse",children:"Loading article..."})]}):v?e.jsx("div",{className:"py-20 text-center text-red-400",children:e.jsx("p",{children:"Failed to load the article. Please try again later."})}):e.jsx("article",{className:"prose prose-invert prose-cyan max-w-none prose-headings:font-bold prose-headings:tracking-tight prose-a:text-cyan-300 prose-a:no-underline hover:prose-a:underline prose-code:text-cyan-200 prose-code:bg-cyan-950/30 prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded-md prose-pre:bg-slate-950/80 prose-pre:border prose-pre:border-slate-800 prose-img:rounded-xl prose-img:border prose-img:border-slate-800",children:e.jsx(C,{remarkPlugins:[B,P],rehypePlugins:[A,L],components:{...M,table:s=>{const{node:n,...a}=s;return e.jsx("div",{className:"overflow-x-auto",children:e.jsx("table",{...a})})},pre:s=>{const{children:n}=s,a=b.Children.toArray(n)[0];let o="",l="text";if(b.isValidElement(a)){const c=a.props,g=/language-([\w-]+)/.exec(c.className||"");g&&(l=g[1]),o=u(c.children).replace(/\n$/,"")}return e.jsx(k,{code:o,language:l,className:"not-prose"})},img:s=>{const n=s.width!=null&&s.height!=null;return e.jsx("img",{...s,className:n?"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto":"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto aspect-video object-cover",loading:"lazy"})}},children:x})})})]})]})]}):e.jsx("div",{className:"min-h-screen bg-slate-950 text-slate-50 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx("h1",{className:"text-4xl font-bold mb-4",children:"Post Not Found"}),e.jsx(j,{to:"/blog",className:"text-cyan-300 hover:text-cyan-200",children:"Return to Blog"})]})})}export{G as default}; diff --git a/assets/BlogPost-DkXdKW1C.js b/assets/BlogPost-DkXdKW1C.js deleted file mode 100644 index 133d7910..00000000 --- a/assets/BlogPost-DkXdKW1C.js +++ /dev/null @@ -1 +0,0 @@ -import{r as d,j as e,R as b}from"./vendor-react-BiHfrq0e.js";import{S as N,C as k}from"./index-WV1aysjN.js";import{b as E}from"./blogData-OjR2ZtNr.js";import{M as C,r as A,a as L,b as B,c as P}from"./vendor-md-CLKxNZoa.js";import{C as z,L as j}from"./vendor-PiU4YGcH.js";import{m as F,k as S,n as $}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function u(t){return typeof t=="string"?t:typeof t=="number"?String(t):t?Array.isArray(t)?t.map(u).join(""):typeof t=="object"&&"props"in t?u(t.props.children):"":""}function R(t){return t.replace(/\$[^$]*\$/g,"").replace(/\\[a-zA-Z]+\{[^}]*\}/g,"").replace(/[\\{}]/g,"").toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")}function i(t){return function({children:x,...m}){const h=u(x),p=m.id||R(h);return e.jsx(t,{...m,id:p,children:x})}}const M={h1:i("h1"),h2:i("h2"),h3:i("h3"),h4:i("h4"),h5:i("h5"),h6:i("h6")};function G(){const{id:t}=z(),r=E.find(s=>s.id===t),[x,m]=d.useState(""),[h,p]=d.useState(null),[y,f]=d.useState(null);d.useEffect(()=>{if(!r)return;const s=new AbortController,n=r.filename;return fetch(`/blog/${n}`,{signal:s.signal}).then(a=>{if(!a.ok)throw new Error("Failed to load post");return a.text()}).then(a=>{const o=a.replace(/^\s*#[^#\n]*\r?\n/,"");m(o),p(n),f(null)}).catch(a=>{a instanceof DOMException&&a.name==="AbortError"||(console.error(a),p(n),f(n))}),()=>s.abort()},[r]);const w=!!(r&&h!==r.filename),v=!!(r&&y===r.filename);return d.useEffect(()=>{function s(n){const o=n.target.closest("a");if(!o)return;const l=o.getAttribute("href");if(!l||!l.startsWith("#"))return;n.preventDefault();const c=document.getElementById(l.slice(1));c&&(c.scrollIntoView({behavior:"smooth",block:"start"}),window.history.pushState(null,"",l))}return document.addEventListener("click",s),()=>document.removeEventListener("click",s)},[]),r?e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(N,{title:`${r.title} - QECTOR Blog`,description:r.description}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 right-0 w-[800px] h-[800px] bg-cyan-900/10 blur-[120px] rounded-full pointer-events-none -translate-y-1/2 translate-x-1/3"}),e.jsx("div",{className:"absolute bottom-0 left-0 w-[600px] h-[600px] bg-slate-800/20 blur-[100px] rounded-full pointer-events-none translate-y-1/3 -translate-x-1/3"}),e.jsxs("div",{className:"max-w-4xl mx-auto px-6 relative z-10",children:[e.jsxs(j,{to:"/blog",className:"inline-flex items-center min-h-[44px] text-slate-400 hover:text-cyan-300 mb-12 transition-colors duration-300 font-medium tracking-wide",children:[e.jsx(F,{size:18,className:"mr-2"}),"Back to All Articles"]}),e.jsxs("header",{className:"mb-16 border-b border-slate-800/60 pb-10",children:[e.jsxs("div",{className:"flex flex-wrap items-center text-cyan-300 mb-6 gap-4",children:[e.jsxs("span",{className:"flex items-center text-sm font-semibold tracking-widest uppercase",children:[e.jsx(S,{size:16,className:"mr-2"}),r.date]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-3 py-1 text-xs font-semibold tracking-wider text-slate-400",children:r.category})]}),e.jsx("h1",{className:"text-4xl md:text-5xl lg:text-6xl font-extrabold tracking-tight mb-8 leading-tight text-white",children:r.title}),e.jsx("p",{className:"text-xl text-slate-300 leading-relaxed max-w-3xl",children:r.description})]}),e.jsx("div",{className:"bg-slate-900/40 backdrop-blur-md border border-slate-800/80 rounded-3xl p-8 md:p-12 shadow-2xl",children:w?e.jsxs("div",{className:"flex flex-col items-center justify-center py-20 text-slate-400",children:[e.jsx($,{size:48,className:"animate-spin text-cyan-400 mb-4"}),e.jsx("p",{className:"animate-pulse",children:"Loading article..."})]}):v?e.jsx("div",{className:"py-20 text-center text-red-400",children:e.jsx("p",{children:"Failed to load the article. Please try again later."})}):e.jsx("article",{className:"prose prose-invert prose-cyan max-w-none prose-headings:font-bold prose-headings:tracking-tight prose-a:text-cyan-300 prose-a:no-underline hover:prose-a:underline prose-code:text-cyan-200 prose-code:bg-cyan-950/30 prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded-md prose-pre:bg-slate-950/80 prose-pre:border prose-pre:border-slate-800 prose-img:rounded-xl prose-img:border prose-img:border-slate-800",children:e.jsx(C,{remarkPlugins:[B,P],rehypePlugins:[A,L],components:{...M,table:s=>{const{node:n,...a}=s;return e.jsx("div",{className:"overflow-x-auto",children:e.jsx("table",{...a})})},pre:s=>{const{children:n}=s,a=b.Children.toArray(n)[0];let o="",l="text";if(b.isValidElement(a)){const c=a.props,g=/language-([\w-]+)/.exec(c.className||"");g&&(l=g[1]),o=u(c.children).replace(/\n$/,"")}return e.jsx(k,{code:o,language:l,className:"not-prose"})},img:s=>{const n=s.width!=null&&s.height!=null;return e.jsx("img",{...s,className:n?"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto":"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto aspect-video object-cover",loading:"lazy"})}},children:x})})})]})]})]}):e.jsx("div",{className:"min-h-screen bg-slate-950 text-slate-50 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx("h1",{className:"text-4xl font-bold mb-4",children:"Post Not Found"}),e.jsx(j,{to:"/blog",className:"text-cyan-300 hover:text-cyan-200",children:"Return to Blog"})]})})}export{G as default}; diff --git a/assets/BlogPost-XSU2NJYI.js b/assets/BlogPost-XSU2NJYI.js deleted file mode 100644 index 80938b83..00000000 --- a/assets/BlogPost-XSU2NJYI.js +++ /dev/null @@ -1,292 +0,0 @@ -import{g as zs,j as pe,r as Xr,R as Fi}from"./vendor-react-BiHfrq0e.js";import{b as Bc,L as P0,S as Fc,C as Hc}from"./index-DayaklK-.js";import{b as zc}from"./blogData-OjR2ZtNr.js";import{m as Uc,k as qc,n as Yc}from"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";function Hi(e){const t=[],r=String(e||"");let n=r.indexOf(","),a=0,i=!1;for(;!i;){n===-1&&(n=r.length,i=!0);const u=r.slice(a,n).trim();(u||!i)&&t.push(u),a=n+1,n=r.indexOf(",",a)}return t}function Us(e,t){const r={};return(e[e.length-1]===""?[...e,""]:e).join((r.padRight?" ":"")+","+(r.padLeft===!1?"":" ")).trim()}const Gc=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,Vc=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,jc={};function zi(e,t){return(jc.jsx?Vc:Gc).test(e)}const Wc=/[ \t\n\f\r]/g;function Xc(e){return typeof e=="object"?e.type==="text"?Ui(e.value):!1:Ui(e)}function Ui(e){return e.replace(Wc,"")===""}class Tn{constructor(t,r,n){this.normal=r,this.property=t,n&&(this.space=n)}}Tn.prototype.normal={};Tn.prototype.property={};Tn.prototype.space=void 0;function qs(e,t){const r={},n={};for(const a of e)Object.assign(r,a.property),Object.assign(n,a.normal);return new Tn(r,n,t)}function fn(e){return e.toLowerCase()}class nt{constructor(t,r){this.attribute=r,this.property=t}}nt.prototype.attribute="";nt.prototype.booleanish=!1;nt.prototype.boolean=!1;nt.prototype.commaOrSpaceSeparated=!1;nt.prototype.commaSeparated=!1;nt.prototype.defined=!1;nt.prototype.mustUseProperty=!1;nt.prototype.number=!1;nt.prototype.overloadedBoolean=!1;nt.prototype.property="";nt.prototype.spaceSeparated=!1;nt.prototype.space=void 0;let $c=0;const le=gr(),Le=gr(),Ea=gr(),q=gr(),ye=gr(),fr=gr(),st=gr();function gr(){return 2**++$c}const Ta=Object.freeze(Object.defineProperty({__proto__:null,boolean:le,booleanish:Le,commaOrSpaceSeparated:st,commaSeparated:fr,number:q,overloadedBoolean:Ea,spaceSeparated:ye},Symbol.toStringTag,{value:"Module"})),B0=Object.keys(Ta);class Za extends nt{constructor(t,r,n,a){let i=-1;if(super(t,r),qi(this,"space",a),typeof n=="number")for(;++i4&&r.slice(0,4)==="data"&&e1.test(t)){if(t.charAt(4)==="-"){const i=t.slice(5).replace(Yi,r1);n="data"+i.charAt(0).toUpperCase()+i.slice(1)}else{const i=t.slice(4);if(!Yi.test(i)){let u=i.replace(Zc,t1);u.charAt(0)!=="-"&&(u="-"+u),t="data"+u}}a=Za}return new a(n,t)}function t1(e){return"-"+e.toLowerCase()}function r1(e){return e.charAt(1).toUpperCase()}const xn=qs([Ys,Qc,js,Ws,Xs],"html"),rr=qs([Ys,Kc,js,Ws,Xs],"svg");function Gi(e){const t=String(e||"").trim();return t?t.split(/[ \t\n\r\f]+/g):[]}function $s(e){return e.join(" ").trim()}var Ar={},F0,Vi;function n1(){if(Vi)return F0;Vi=1;var e=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,t=/\n/g,r=/^\s*/,n=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,a=/^:\s*/,i=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,u=/^[;\s]*/,s=/^\s+|\s+$/g,l=` -`,c="/",d="*",f="",g="comment",p="declaration";function x(D,_){if(typeof D!="string")throw new TypeError("First argument must be a string");if(!D)return[];_=_||{};var N=1,M=1;function W(ne){var X=ne.match(t);X&&(N+=X.length);var me=ne.lastIndexOf(l);M=~me?ne.length-me:M+ne.length}function j(){var ne={line:N,column:M};return function(X){return X.position=new L(ne),K(),X}}function L(ne){this.start=ne,this.end={line:N,column:M},this.source=_.source}L.prototype.content=D;function ee(ne){var X=new Error(_.source+":"+N+":"+M+": "+ne);if(X.reason=ne,X.filename=_.source,X.line=N,X.column=M,X.source=D,!_.silent)throw X}function re(ne){var X=ne.exec(D);if(X){var me=X[0];return W(me),D=D.slice(me.length),X}}function K(){re(r)}function R(ne){var X;for(ne=ne||[];X=J();)X!==!1&&ne.push(X);return ne}function J(){var ne=j();if(!(c!=D.charAt(0)||d!=D.charAt(1))){for(var X=2;f!=D.charAt(X)&&(d!=D.charAt(X)||c!=D.charAt(X+1));)++X;if(X+=2,f===D.charAt(X-1))return ee("End of comment missing");var me=D.slice(2,X-2);return M+=2,W(me),D=D.slice(X),M+=2,ne({type:g,comment:me})}}function Q(){var ne=j(),X=re(n);if(X){if(J(),!re(a))return ee("property missing ':'");var me=re(i),ke=ne({type:p,property:S(X[0].replace(e,f)),value:me?S(me[0].replace(e,f)):f});return re(u),ke}}function be(){var ne=[];R(ne);for(var X;X=Q();)X!==!1&&(ne.push(X),R(ne));return ne}return K(),be()}function S(D){return D?D.replace(s,f):f}return F0=x,F0}var ji;function a1(){if(ji)return Ar;ji=1;var e=Ar&&Ar.__importDefault||function(n){return n&&n.__esModule?n:{default:n}};Object.defineProperty(Ar,"__esModule",{value:!0}),Ar.default=r;const t=e(n1());function r(n,a){let i=null;if(!n||typeof n!="string")return i;const u=(0,t.default)(n),s=typeof a=="function";return u.forEach(l=>{if(l.type!=="declaration")return;const{property:c,value:d}=l;s?a(c,d,l):d&&(i=i||{},i[c]=d)}),i}return Ar}var $r={},Wi;function i1(){if(Wi)return $r;Wi=1,Object.defineProperty($r,"__esModule",{value:!0}),$r.camelCase=void 0;var e=/^--[a-zA-Z0-9_-]+$/,t=/-([a-z])/g,r=/^[^-]+$/,n=/^-(webkit|moz|ms|o|khtml)-/,a=/^-(ms)-/,i=function(c){return!c||r.test(c)||e.test(c)},u=function(c,d){return d.toUpperCase()},s=function(c,d){return"".concat(d,"-")},l=function(c,d){return d===void 0&&(d={}),i(c)?c:(c=c.toLowerCase(),d.reactCompat?c=c.replace(a,s):c=c.replace(n,s),c.replace(t,u))};return $r.camelCase=l,$r}var Qr,Xi;function u1(){if(Xi)return Qr;Xi=1;var e=Qr&&Qr.__importDefault||function(a){return a&&a.__esModule?a:{default:a}},t=e(a1()),r=i1();function n(a,i){var u={};return!a||typeof a!="string"||(0,t.default)(a,function(s,l){s&&l&&(u[(0,r.camelCase)(s,i)]=l)}),u}return n.default=n,Qr=n,Qr}var s1=u1();const l1=zs(s1),d0=Qs("end"),_t=Qs("start");function Qs(e){return t;function t(r){const n=r&&r.position&&r.position[e]||{};if(typeof n.line=="number"&&n.line>0&&typeof n.column=="number"&&n.column>0)return{line:n.line,column:n.column,offset:typeof n.offset=="number"&&n.offset>-1?n.offset:void 0}}}function o1(e){const t=_t(e),r=d0(e);if(t&&r)return{start:t,end:r}}function nn(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?$i(e.position):"start"in e||"end"in e?$i(e):"line"in e||"column"in e?xa(e):""}function xa(e){return Qi(e&&e.line)+":"+Qi(e&&e.column)}function $i(e){return xa(e&&e.start)+"-"+xa(e&&e.end)}function Qi(e){return e&&typeof e=="number"?e:1}class je extends Error{constructor(t,r,n){super(),typeof r=="string"&&(n=r,r=void 0);let a="",i={},u=!1;if(r&&("line"in r&&"column"in r?i={place:r}:"start"in r&&"end"in r?i={place:r}:"type"in r?i={ancestors:[r],place:r.position}:i={...r}),typeof t=="string"?a=t:!i.cause&&t&&(u=!0,a=t.message,i.cause=t),!i.ruleId&&!i.source&&typeof n=="string"){const l=n.indexOf(":");l===-1?i.ruleId=n:(i.source=n.slice(0,l),i.ruleId=n.slice(l+1))}if(!i.place&&i.ancestors&&i.ancestors){const l=i.ancestors[i.ancestors.length-1];l&&(i.place=l.position)}const s=i.place&&"start"in i.place?i.place.start:i.place;this.ancestors=i.ancestors||void 0,this.cause=i.cause||void 0,this.column=s?s.column:void 0,this.fatal=void 0,this.file="",this.message=a,this.line=s?s.line:void 0,this.name=nn(i.place)||"1:1",this.place=i.place||void 0,this.reason=this.message,this.ruleId=i.ruleId||void 0,this.source=i.source||void 0,this.stack=u&&i.cause&&typeof i.cause.stack=="string"?i.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}}je.prototype.file="";je.prototype.name="";je.prototype.reason="";je.prototype.message="";je.prototype.stack="";je.prototype.column=void 0;je.prototype.line=void 0;je.prototype.ancestors=void 0;je.prototype.cause=void 0;je.prototype.fatal=void 0;je.prototype.place=void 0;je.prototype.ruleId=void 0;je.prototype.source=void 0;const ei={}.hasOwnProperty,c1=new Map,h1=/[A-Z]/g,d1=new Set(["table","tbody","thead","tfoot","tr"]),f1=new Set(["td","th"]),Ks="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function m1(e,t){if(!t||t.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const r=t.filePath||void 0;let n;if(t.development){if(typeof t.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");n=v1(r,t.jsxDEV)}else{if(typeof t.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof t.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");n=y1(r,t.jsx,t.jsxs)}const a={Fragment:t.Fragment,ancestors:[],components:t.components||{},create:n,elementAttributeNameCase:t.elementAttributeNameCase||"react",evaluater:t.createEvaluater?t.createEvaluater():void 0,filePath:r,ignoreInvalidStyle:t.ignoreInvalidStyle||!1,passKeys:t.passKeys!==!1,passNode:t.passNode||!1,schema:t.space==="svg"?rr:xn,stylePropertyNameCase:t.stylePropertyNameCase||"dom",tableCellAlignToStyle:t.tableCellAlignToStyle!==!1},i=Js(a,e,void 0);return i&&typeof i!="string"?i:a.create(e,a.Fragment,{children:i||void 0},void 0)}function Js(e,t,r){if(t.type==="element")return p1(e,t,r);if(t.type==="mdxFlowExpression"||t.type==="mdxTextExpression")return g1(e,t);if(t.type==="mdxJsxFlowElement"||t.type==="mdxJsxTextElement")return E1(e,t,r);if(t.type==="mdxjsEsm")return b1(e,t);if(t.type==="root")return T1(e,t,r);if(t.type==="text")return x1(e,t)}function p1(e,t,r){const n=e.schema;let a=n;t.tagName.toLowerCase()==="svg"&&n.space==="html"&&(a=rr,e.schema=a),e.ancestors.push(t);const i=el(e,t.tagName,!1),u=A1(e,t);let s=ri(e,t);return d1.has(t.tagName)&&(s=s.filter(function(l){return typeof l=="string"?!Xc(l):!0})),Zs(e,u,i,t),ti(u,s),e.ancestors.pop(),e.schema=n,e.create(t,i,u,r)}function g1(e,t){if(t.data&&t.data.estree&&e.evaluater){const n=t.data.estree.body[0];return n.type,e.evaluater.evaluateExpression(n.expression)}mn(e,t.position)}function b1(e,t){if(t.data&&t.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(t.data.estree);mn(e,t.position)}function E1(e,t,r){const n=e.schema;let a=n;t.name==="svg"&&n.space==="html"&&(a=rr,e.schema=a),e.ancestors.push(t);const i=t.name===null?e.Fragment:el(e,t.name,!0),u=k1(e,t),s=ri(e,t);return Zs(e,u,i,t),ti(u,s),e.ancestors.pop(),e.schema=n,e.create(t,i,u,r)}function T1(e,t,r){const n={};return ti(n,ri(e,t)),e.create(t,e.Fragment,n,r)}function x1(e,t){return t.value}function Zs(e,t,r,n){typeof r!="string"&&r!==e.Fragment&&e.passNode&&(t.node=n)}function ti(e,t){if(t.length>0){const r=t.length>1?t:t[0];r&&(e.children=r)}}function y1(e,t,r){return n;function n(a,i,u,s){const c=Array.isArray(u.children)?r:t;return s?c(i,u,s):c(i,u)}}function v1(e,t){return r;function r(n,a,i,u){const s=Array.isArray(i.children),l=_t(n);return t(a,i,u,s,{columnNumber:l?l.column-1:void 0,fileName:e,lineNumber:l?l.line:void 0},void 0)}}function A1(e,t){const r={};let n,a;for(a in t.properties)if(a!=="children"&&ei.call(t.properties,a)){const i=S1(e,a,t.properties[a]);if(i){const[u,s]=i;e.tableCellAlignToStyle&&u==="align"&&typeof s=="string"&&f1.has(t.tagName)?n=s:r[u]=s}}if(n){const i=r.style||(r.style={});i[e.stylePropertyNameCase==="css"?"text-align":"textAlign"]=n}return r}function k1(e,t){const r={};for(const n of t.attributes)if(n.type==="mdxJsxExpressionAttribute")if(n.data&&n.data.estree&&e.evaluater){const i=n.data.estree.body[0];i.type;const u=i.expression;u.type;const s=u.properties[0];s.type,Object.assign(r,e.evaluater.evaluateExpression(s.argument))}else mn(e,t.position);else{const a=n.name;let i;if(n.value&&typeof n.value=="object")if(n.value.data&&n.value.data.estree&&e.evaluater){const s=n.value.data.estree.body[0];s.type,i=e.evaluater.evaluateExpression(s.expression)}else mn(e,t.position);else i=n.value===null?!0:n.value;r[a]=i}return r}function ri(e,t){const r=[];let n=-1;const a=e.passKeys?new Map:c1;for(;++na?0:a+t:t=t>a?a:t,r=r>0?r:0,n.length<1e4)u=Array.from(n),u.unshift(t,r),e.splice(...u);else for(r&&e.splice(t,r);i0?(lt(e,e.length,0,t),e):t}const Zi={}.hasOwnProperty;function rl(e){const t={};let r=-1;for(;++r13&&r<32||r>126&&r<160||r>55295&&r<57344||r>64975&&r<65008||(r&65535)===65535||(r&65535)===65534||r>1114111?"�":String.fromCodePoint(r)}function xt(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const Ke=nr(/[A-Za-z]/),Ge=nr(/[\dA-Za-z]/),R1=nr(/[#-'*+\--9=?A-Z^-~]/);function Zn(e){return e!==null&&(e<32||e===127)}const ya=nr(/\d/),M1=nr(/[\dA-Fa-f]/),P1=nr(/[!-/:-@[-`{-~]/);function ae(e){return e!==null&&e<-2}function ve(e){return e!==null&&(e<0||e===32)}function ge(e){return e===-2||e===-1||e===32}const f0=nr(new RegExp("\\p{P}|\\p{S}","u")),pr=nr(/\s/);function nr(e){return t;function t(r){return r!==null&&r>-1&&e.test(String.fromCharCode(r))}}function Pr(e){const t=[];let r=-1,n=0,a=0;for(;++r55295&&i<57344){const s=e.charCodeAt(r+1);i<56320&&s>56319&&s<57344?(u=String.fromCharCode(i,s),a=1):u="�"}else u=String.fromCharCode(i);u&&(t.push(e.slice(n,r),encodeURIComponent(u)),n=r+a+1,u=""),a&&(r+=a,a=0)}return t.join("")+e.slice(n)}function fe(e,t,r,n){const a=n?n-1:Number.POSITIVE_INFINITY;let i=0;return u;function u(l){return ge(l)?(e.enter(r),s(l)):t(l)}function s(l){return ge(l)&&i++u))return;const ee=t.events.length;let re=ee,K,R;for(;re--;)if(t.events[re][0]==="exit"&&t.events[re][1].type==="chunkFlow"){if(K){R=t.events[re][1].end;break}K=!0}for(_(n),L=ee;LM;){const j=r[W];t.containerState=j[1],j[0].exit.call(t,e)}r.length=M}function N(){a.write([null]),i=void 0,a=void 0,t.containerState._closeFlow=void 0}}function U1(e,t,r){return fe(e,e.attempt(this.parser.constructs.document,t,r),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function Ir(e){if(e===null||ve(e)||pr(e))return 1;if(f0(e))return 2}function m0(e,t,r){const n=[];let a=-1;for(;++a1&&e[r][1].end.offset-e[r][1].start.offset>1?2:1;const f={...e[n][1].end},g={...e[r][1].start};tu(f,-l),tu(g,l),u={type:l>1?"strongSequence":"emphasisSequence",start:f,end:{...e[n][1].end}},s={type:l>1?"strongSequence":"emphasisSequence",start:{...e[r][1].start},end:g},i={type:l>1?"strongText":"emphasisText",start:{...e[n][1].end},end:{...e[r][1].start}},a={type:l>1?"strong":"emphasis",start:{...u.start},end:{...s.end}},e[n][1].end={...u.start},e[r][1].start={...s.end},c=[],e[n][1].end.offset-e[n][1].start.offset&&(c=mt(c,[["enter",e[n][1],t],["exit",e[n][1],t]])),c=mt(c,[["enter",a,t],["enter",u,t],["exit",u,t],["enter",i,t]]),c=mt(c,m0(t.parser.constructs.insideSpan.null,e.slice(n+1,r),t)),c=mt(c,[["exit",i,t],["enter",s,t],["exit",s,t],["exit",a,t]]),e[r][1].end.offset-e[r][1].start.offset?(d=2,c=mt(c,[["enter",e[r][1],t],["exit",e[r][1],t]])):d=0,lt(e,n-1,r-n+3,c),r=n+c.length-d-2;break}}for(r=-1;++r0&&ge(L)?fe(e,N,"linePrefix",i+1)(L):N(L)}function N(L){return L===null||ae(L)?e.check(ru,S,W)(L):(e.enter("codeFlowValue"),M(L))}function M(L){return L===null||ae(L)?(e.exit("codeFlowValue"),N(L)):(e.consume(L),M)}function W(L){return e.exit("codeFenced"),t(L)}function j(L,ee,re){let K=0;return R;function R(X){return L.enter("lineEnding"),L.consume(X),L.exit("lineEnding"),J}function J(X){return L.enter("codeFencedFence"),ge(X)?fe(L,Q,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(X):Q(X)}function Q(X){return X===s?(L.enter("codeFencedFenceSequence"),be(X)):re(X)}function be(X){return X===s?(K++,L.consume(X),be):K>=u?(L.exit("codeFencedFenceSequence"),ge(X)?fe(L,ne,"whitespace")(X):ne(X)):re(X)}function ne(X){return X===null||ae(X)?(L.exit("codeFencedFence"),ee(X)):re(X)}}}function Z1(e,t,r){const n=this;return a;function a(u){return u===null?r(u):(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),i)}function i(u){return n.parser.lazy[n.now().line]?r(u):t(u)}}const z0={name:"codeIndented",tokenize:th},eh={partial:!0,tokenize:rh};function th(e,t,r){const n=this;return a;function a(c){return e.enter("codeIndented"),fe(e,i,"linePrefix",5)(c)}function i(c){const d=n.events[n.events.length-1];return d&&d[1].type==="linePrefix"&&d[2].sliceSerialize(d[1],!0).length>=4?u(c):r(c)}function u(c){return c===null?l(c):ae(c)?e.attempt(eh,u,l)(c):(e.enter("codeFlowValue"),s(c))}function s(c){return c===null||ae(c)?(e.exit("codeFlowValue"),u(c)):(e.consume(c),s)}function l(c){return e.exit("codeIndented"),t(c)}}function rh(e,t,r){const n=this;return a;function a(u){return n.parser.lazy[n.now().line]?r(u):ae(u)?(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),a):fe(e,i,"linePrefix",5)(u)}function i(u){const s=n.events[n.events.length-1];return s&&s[1].type==="linePrefix"&&s[2].sliceSerialize(s[1],!0).length>=4?t(u):ae(u)?a(u):r(u)}}const nh={name:"codeText",previous:ih,resolve:ah,tokenize:uh};function ah(e){let t=e.length-4,r=3,n,a;if((e[r][1].type==="lineEnding"||e[r][1].type==="space")&&(e[t][1].type==="lineEnding"||e[t][1].type==="space")){for(n=r;++n=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+t+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return tthis.left.length?this.right.slice(this.right.length-n+this.left.length,this.right.length-t+this.left.length).reverse():this.left.slice(t).concat(this.right.slice(this.right.length-n+this.left.length).reverse())}splice(t,r,n){const a=r||0;this.setCursor(Math.trunc(t));const i=this.right.splice(this.right.length-a,Number.POSITIVE_INFINITY);return n&&Kr(this.left,n),i.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(t){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(t)}pushMany(t){this.setCursor(Number.POSITIVE_INFINITY),Kr(this.left,t)}unshift(t){this.setCursor(0),this.right.push(t)}unshiftMany(t){this.setCursor(0),Kr(this.right,t.reverse())}setCursor(t){if(!(t===this.left.length||t>this.left.length&&this.right.length===0||t<0&&this.left.length===0))if(t=4?t(u):e.interrupt(n.parser.constructs.flow,r,t)(u)}}function ll(e,t,r,n,a,i,u,s,l){const c=l||Number.POSITIVE_INFINITY;let d=0;return f;function f(_){return _===60?(e.enter(n),e.enter(a),e.enter(i),e.consume(_),e.exit(i),g):_===null||_===32||_===41||Zn(_)?r(_):(e.enter(n),e.enter(u),e.enter(s),e.enter("chunkString",{contentType:"string"}),S(_))}function g(_){return _===62?(e.enter(i),e.consume(_),e.exit(i),e.exit(a),e.exit(n),t):(e.enter(s),e.enter("chunkString",{contentType:"string"}),p(_))}function p(_){return _===62?(e.exit("chunkString"),e.exit(s),g(_)):_===null||_===60||ae(_)?r(_):(e.consume(_),_===92?x:p)}function x(_){return _===60||_===62||_===92?(e.consume(_),p):p(_)}function S(_){return!d&&(_===null||_===41||ve(_))?(e.exit("chunkString"),e.exit(s),e.exit(u),e.exit(n),t(_)):d999||p===null||p===91||p===93&&!l||p===94&&!s&&"_hiddenFootnoteSupport"in u.parser.constructs?r(p):p===93?(e.exit(i),e.enter(a),e.consume(p),e.exit(a),e.exit(n),t):ae(p)?(e.enter("lineEnding"),e.consume(p),e.exit("lineEnding"),d):(e.enter("chunkString",{contentType:"string"}),f(p))}function f(p){return p===null||p===91||p===93||ae(p)||s++>999?(e.exit("chunkString"),d(p)):(e.consume(p),l||(l=!ge(p)),p===92?g:f)}function g(p){return p===91||p===92||p===93?(e.consume(p),s++,f):f(p)}}function cl(e,t,r,n,a,i){let u;return s;function s(g){return g===34||g===39||g===40?(e.enter(n),e.enter(a),e.consume(g),e.exit(a),u=g===40?41:g,l):r(g)}function l(g){return g===u?(e.enter(a),e.consume(g),e.exit(a),e.exit(n),t):(e.enter(i),c(g))}function c(g){return g===u?(e.exit(i),l(u)):g===null?r(g):ae(g)?(e.enter("lineEnding"),e.consume(g),e.exit("lineEnding"),fe(e,c,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),d(g))}function d(g){return g===u||g===null||ae(g)?(e.exit("chunkString"),c(g)):(e.consume(g),g===92?f:d)}function f(g){return g===u||g===92?(e.consume(g),d):d(g)}}function an(e,t){let r;return n;function n(a){return ae(a)?(e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),r=!0,n):ge(a)?fe(e,n,r?"linePrefix":"lineSuffix")(a):t(a)}}const mh={name:"definition",tokenize:gh},ph={partial:!0,tokenize:bh};function gh(e,t,r){const n=this;let a;return i;function i(p){return e.enter("definition"),u(p)}function u(p){return ol.call(n,e,s,r,"definitionLabel","definitionLabelMarker","definitionLabelString")(p)}function s(p){return a=xt(n.sliceSerialize(n.events[n.events.length-1][1]).slice(1,-1)),p===58?(e.enter("definitionMarker"),e.consume(p),e.exit("definitionMarker"),l):r(p)}function l(p){return ve(p)?an(e,c)(p):c(p)}function c(p){return ll(e,d,r,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(p)}function d(p){return e.attempt(ph,f,f)(p)}function f(p){return ge(p)?fe(e,g,"whitespace")(p):g(p)}function g(p){return p===null||ae(p)?(e.exit("definition"),n.parser.defined.push(a),t(p)):r(p)}}function bh(e,t,r){return n;function n(s){return ve(s)?an(e,a)(s):r(s)}function a(s){return cl(e,i,r,"definitionTitle","definitionTitleMarker","definitionTitleString")(s)}function i(s){return ge(s)?fe(e,u,"whitespace")(s):u(s)}function u(s){return s===null||ae(s)?t(s):r(s)}}const Eh={name:"hardBreakEscape",tokenize:Th};function Th(e,t,r){return n;function n(i){return e.enter("hardBreakEscape"),e.consume(i),a}function a(i){return ae(i)?(e.exit("hardBreakEscape"),t(i)):r(i)}}const xh={name:"headingAtx",resolve:yh,tokenize:vh};function yh(e,t){let r=e.length-2,n=3,a,i;return e[n][1].type==="whitespace"&&(n+=2),r-2>n&&e[r][1].type==="whitespace"&&(r-=2),e[r][1].type==="atxHeadingSequence"&&(n===r-1||r-4>n&&e[r-2][1].type==="whitespace")&&(r-=n+1===r?2:4),r>n&&(a={type:"atxHeadingText",start:e[n][1].start,end:e[r][1].end},i={type:"chunkText",start:e[n][1].start,end:e[r][1].end,contentType:"text"},lt(e,n,r-n+1,[["enter",a,t],["enter",i,t],["exit",i,t],["exit",a,t]])),e}function vh(e,t,r){let n=0;return a;function a(d){return e.enter("atxHeading"),i(d)}function i(d){return e.enter("atxHeadingSequence"),u(d)}function u(d){return d===35&&n++<6?(e.consume(d),u):d===null||ve(d)?(e.exit("atxHeadingSequence"),s(d)):r(d)}function s(d){return d===35?(e.enter("atxHeadingSequence"),l(d)):d===null||ae(d)?(e.exit("atxHeading"),t(d)):ge(d)?fe(e,s,"whitespace")(d):(e.enter("atxHeadingText"),c(d))}function l(d){return d===35?(e.consume(d),l):(e.exit("atxHeadingSequence"),s(d))}function c(d){return d===null||d===35||ve(d)?(e.exit("atxHeadingText"),s(d)):(e.consume(d),c)}}const Ah=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],au=["pre","script","style","textarea"],kh={concrete:!0,name:"htmlFlow",resolveTo:Ch,tokenize:_h},Sh={partial:!0,tokenize:Nh},wh={partial:!0,tokenize:Ih};function Ch(e){let t=e.length;for(;t--&&!(e[t][0]==="enter"&&e[t][1].type==="htmlFlow"););return t>1&&e[t-2][1].type==="linePrefix"&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function _h(e,t,r){const n=this;let a,i,u,s,l;return c;function c(C){return d(C)}function d(C){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(C),f}function f(C){return C===33?(e.consume(C),g):C===47?(e.consume(C),i=!0,S):C===63?(e.consume(C),a=3,n.interrupt?t:w):Ke(C)?(e.consume(C),u=String.fromCharCode(C),D):r(C)}function g(C){return C===45?(e.consume(C),a=2,p):C===91?(e.consume(C),a=5,s=0,x):Ke(C)?(e.consume(C),a=4,n.interrupt?t:w):r(C)}function p(C){return C===45?(e.consume(C),n.interrupt?t:w):r(C)}function x(C){const Ye="CDATA[";return C===Ye.charCodeAt(s++)?(e.consume(C),s===Ye.length?n.interrupt?t:Q:x):r(C)}function S(C){return Ke(C)?(e.consume(C),u=String.fromCharCode(C),D):r(C)}function D(C){if(C===null||C===47||C===62||ve(C)){const Ye=C===47,vt=u.toLowerCase();return!Ye&&!i&&au.includes(vt)?(a=1,n.interrupt?t(C):Q(C)):Ah.includes(u.toLowerCase())?(a=6,Ye?(e.consume(C),_):n.interrupt?t(C):Q(C)):(a=7,n.interrupt&&!n.parser.lazy[n.now().line]?r(C):i?N(C):M(C))}return C===45||Ge(C)?(e.consume(C),u+=String.fromCharCode(C),D):r(C)}function _(C){return C===62?(e.consume(C),n.interrupt?t:Q):r(C)}function N(C){return ge(C)?(e.consume(C),N):R(C)}function M(C){return C===47?(e.consume(C),R):C===58||C===95||Ke(C)?(e.consume(C),W):ge(C)?(e.consume(C),M):R(C)}function W(C){return C===45||C===46||C===58||C===95||Ge(C)?(e.consume(C),W):j(C)}function j(C){return C===61?(e.consume(C),L):ge(C)?(e.consume(C),j):M(C)}function L(C){return C===null||C===60||C===61||C===62||C===96?r(C):C===34||C===39?(e.consume(C),l=C,ee):ge(C)?(e.consume(C),L):re(C)}function ee(C){return C===l?(e.consume(C),l=null,K):C===null||ae(C)?r(C):(e.consume(C),ee)}function re(C){return C===null||C===34||C===39||C===47||C===60||C===61||C===62||C===96||ve(C)?j(C):(e.consume(C),re)}function K(C){return C===47||C===62||ge(C)?M(C):r(C)}function R(C){return C===62?(e.consume(C),J):r(C)}function J(C){return C===null||ae(C)?Q(C):ge(C)?(e.consume(C),J):r(C)}function Q(C){return C===45&&a===2?(e.consume(C),me):C===60&&a===1?(e.consume(C),ke):C===62&&a===4?(e.consume(C),Oe):C===63&&a===3?(e.consume(C),w):C===93&&a===5?(e.consume(C),at):ae(C)&&(a===6||a===7)?(e.exit("htmlFlowData"),e.check(Sh,Xe,be)(C)):C===null||ae(C)?(e.exit("htmlFlowData"),be(C)):(e.consume(C),Q)}function be(C){return e.check(wh,ne,Xe)(C)}function ne(C){return e.enter("lineEnding"),e.consume(C),e.exit("lineEnding"),X}function X(C){return C===null||ae(C)?be(C):(e.enter("htmlFlowData"),Q(C))}function me(C){return C===45?(e.consume(C),w):Q(C)}function ke(C){return C===47?(e.consume(C),u="",ze):Q(C)}function ze(C){if(C===62){const Ye=u.toLowerCase();return au.includes(Ye)?(e.consume(C),Oe):Q(C)}return Ke(C)&&u.length<8?(e.consume(C),u+=String.fromCharCode(C),ze):Q(C)}function at(C){return C===93?(e.consume(C),w):Q(C)}function w(C){return C===62?(e.consume(C),Oe):C===45&&a===2?(e.consume(C),w):Q(C)}function Oe(C){return C===null||ae(C)?(e.exit("htmlFlowData"),Xe(C)):(e.consume(C),Oe)}function Xe(C){return e.exit("htmlFlow"),t(C)}}function Ih(e,t,r){const n=this;return a;function a(u){return ae(u)?(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),i):r(u)}function i(u){return n.parser.lazy[n.now().line]?r(u):t(u)}}function Nh(e,t,r){return n;function n(a){return e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),e.attempt(yn,t,r)}}const Dh={name:"htmlText",tokenize:Oh};function Oh(e,t,r){const n=this;let a,i,u;return s;function s(w){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(w),l}function l(w){return w===33?(e.consume(w),c):w===47?(e.consume(w),j):w===63?(e.consume(w),M):Ke(w)?(e.consume(w),re):r(w)}function c(w){return w===45?(e.consume(w),d):w===91?(e.consume(w),i=0,x):Ke(w)?(e.consume(w),N):r(w)}function d(w){return w===45?(e.consume(w),p):r(w)}function f(w){return w===null?r(w):w===45?(e.consume(w),g):ae(w)?(u=f,ke(w)):(e.consume(w),f)}function g(w){return w===45?(e.consume(w),p):f(w)}function p(w){return w===62?me(w):w===45?g(w):f(w)}function x(w){const Oe="CDATA[";return w===Oe.charCodeAt(i++)?(e.consume(w),i===Oe.length?S:x):r(w)}function S(w){return w===null?r(w):w===93?(e.consume(w),D):ae(w)?(u=S,ke(w)):(e.consume(w),S)}function D(w){return w===93?(e.consume(w),_):S(w)}function _(w){return w===62?me(w):w===93?(e.consume(w),_):S(w)}function N(w){return w===null||w===62?me(w):ae(w)?(u=N,ke(w)):(e.consume(w),N)}function M(w){return w===null?r(w):w===63?(e.consume(w),W):ae(w)?(u=M,ke(w)):(e.consume(w),M)}function W(w){return w===62?me(w):M(w)}function j(w){return Ke(w)?(e.consume(w),L):r(w)}function L(w){return w===45||Ge(w)?(e.consume(w),L):ee(w)}function ee(w){return ae(w)?(u=ee,ke(w)):ge(w)?(e.consume(w),ee):me(w)}function re(w){return w===45||Ge(w)?(e.consume(w),re):w===47||w===62||ve(w)?K(w):r(w)}function K(w){return w===47?(e.consume(w),me):w===58||w===95||Ke(w)?(e.consume(w),R):ae(w)?(u=K,ke(w)):ge(w)?(e.consume(w),K):me(w)}function R(w){return w===45||w===46||w===58||w===95||Ge(w)?(e.consume(w),R):J(w)}function J(w){return w===61?(e.consume(w),Q):ae(w)?(u=J,ke(w)):ge(w)?(e.consume(w),J):K(w)}function Q(w){return w===null||w===60||w===61||w===62||w===96?r(w):w===34||w===39?(e.consume(w),a=w,be):ae(w)?(u=Q,ke(w)):ge(w)?(e.consume(w),Q):(e.consume(w),ne)}function be(w){return w===a?(e.consume(w),a=void 0,X):w===null?r(w):ae(w)?(u=be,ke(w)):(e.consume(w),be)}function ne(w){return w===null||w===34||w===39||w===60||w===61||w===96?r(w):w===47||w===62||ve(w)?K(w):(e.consume(w),ne)}function X(w){return w===47||w===62||ve(w)?K(w):r(w)}function me(w){return w===62?(e.consume(w),e.exit("htmlTextData"),e.exit("htmlText"),t):r(w)}function ke(w){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(w),e.exit("lineEnding"),ze}function ze(w){return ge(w)?fe(e,at,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(w):at(w)}function at(w){return e.enter("htmlTextData"),u(w)}}const ii={name:"labelEnd",resolveAll:Ph,resolveTo:Bh,tokenize:Fh},Lh={tokenize:Hh},Rh={tokenize:zh},Mh={tokenize:Uh};function Ph(e){let t=-1;const r=[];for(;++t=3&&(c===null||ae(c))?(e.exit("thematicBreak"),t(c)):r(c)}function l(c){return c===a?(e.consume(c),n++,l):(e.exit("thematicBreakSequence"),ge(c)?fe(e,s,"whitespace")(c):s(c))}}const tt={continuation:{tokenize:Kh},exit:Zh,name:"list",tokenize:Qh},Xh={partial:!0,tokenize:ed},$h={partial:!0,tokenize:Jh};function Qh(e,t,r){const n=this,a=n.events[n.events.length-1];let i=a&&a[1].type==="linePrefix"?a[2].sliceSerialize(a[1],!0).length:0,u=0;return s;function s(p){const x=n.containerState.type||(p===42||p===43||p===45?"listUnordered":"listOrdered");if(x==="listUnordered"?!n.containerState.marker||p===n.containerState.marker:ya(p)){if(n.containerState.type||(n.containerState.type=x,e.enter(x,{_container:!0})),x==="listUnordered")return e.enter("listItemPrefix"),p===42||p===45?e.check(Xn,r,c)(p):c(p);if(!n.interrupt||p===49)return e.enter("listItemPrefix"),e.enter("listItemValue"),l(p)}return r(p)}function l(p){return ya(p)&&++u<10?(e.consume(p),l):(!n.interrupt||u<2)&&(n.containerState.marker?p===n.containerState.marker:p===41||p===46)?(e.exit("listItemValue"),c(p)):r(p)}function c(p){return e.enter("listItemMarker"),e.consume(p),e.exit("listItemMarker"),n.containerState.marker=n.containerState.marker||p,e.check(yn,n.interrupt?r:d,e.attempt(Xh,g,f))}function d(p){return n.containerState.initialBlankLine=!0,i++,g(p)}function f(p){return ge(p)?(e.enter("listItemPrefixWhitespace"),e.consume(p),e.exit("listItemPrefixWhitespace"),g):r(p)}function g(p){return n.containerState.size=i+n.sliceSerialize(e.exit("listItemPrefix"),!0).length,t(p)}}function Kh(e,t,r){const n=this;return n.containerState._closeFlow=void 0,e.check(yn,a,i);function a(s){return n.containerState.furtherBlankLines=n.containerState.furtherBlankLines||n.containerState.initialBlankLine,fe(e,t,"listItemIndent",n.containerState.size+1)(s)}function i(s){return n.containerState.furtherBlankLines||!ge(s)?(n.containerState.furtherBlankLines=void 0,n.containerState.initialBlankLine=void 0,u(s)):(n.containerState.furtherBlankLines=void 0,n.containerState.initialBlankLine=void 0,e.attempt($h,t,u)(s))}function u(s){return n.containerState._closeFlow=!0,n.interrupt=void 0,fe(e,e.attempt(tt,t,r),"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(s)}}function Jh(e,t,r){const n=this;return fe(e,a,"listItemIndent",n.containerState.size+1);function a(i){const u=n.events[n.events.length-1];return u&&u[1].type==="listItemIndent"&&u[2].sliceSerialize(u[1],!0).length===n.containerState.size?t(i):r(i)}}function Zh(e){e.exit(this.containerState.type)}function ed(e,t,r){const n=this;return fe(e,a,"listItemPrefixWhitespace",n.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function a(i){const u=n.events[n.events.length-1];return!ge(i)&&u&&u[1].type==="listItemPrefixWhitespace"?t(i):r(i)}}const iu={name:"setextUnderline",resolveTo:td,tokenize:rd};function td(e,t){let r=e.length,n,a,i;for(;r--;)if(e[r][0]==="enter"){if(e[r][1].type==="content"){n=r;break}e[r][1].type==="paragraph"&&(a=r)}else e[r][1].type==="content"&&e.splice(r,1),!i&&e[r][1].type==="definition"&&(i=r);const u={type:"setextHeading",start:{...e[n][1].start},end:{...e[e.length-1][1].end}};return e[a][1].type="setextHeadingText",i?(e.splice(a,0,["enter",u,t]),e.splice(i+1,0,["exit",e[n][1],t]),e[n][1].end={...e[i][1].end}):e[n][1]=u,e.push(["exit",u,t]),e}function rd(e,t,r){const n=this;let a;return i;function i(c){let d=n.events.length,f;for(;d--;)if(n.events[d][1].type!=="lineEnding"&&n.events[d][1].type!=="linePrefix"&&n.events[d][1].type!=="content"){f=n.events[d][1].type==="paragraph";break}return!n.parser.lazy[n.now().line]&&(n.interrupt||f)?(e.enter("setextHeadingLine"),a=c,u(c)):r(c)}function u(c){return e.enter("setextHeadingLineSequence"),s(c)}function s(c){return c===a?(e.consume(c),s):(e.exit("setextHeadingLineSequence"),ge(c)?fe(e,l,"lineSuffix")(c):l(c))}function l(c){return c===null||ae(c)?(e.exit("setextHeadingLine"),t(c)):r(c)}}const nd={tokenize:ad};function ad(e){const t=this,r=e.attempt(yn,n,e.attempt(this.parser.constructs.flowInitial,a,fe(e,e.attempt(this.parser.constructs.flow,a,e.attempt(oh,a)),"linePrefix")));return r;function n(i){if(i===null){e.consume(i);return}return e.enter("lineEndingBlank"),e.consume(i),e.exit("lineEndingBlank"),t.currentConstruct=void 0,r}function a(i){if(i===null){e.consume(i);return}return e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),t.currentConstruct=void 0,r}}const id={resolveAll:dl()},ud=hl("string"),sd=hl("text");function hl(e){return{resolveAll:dl(e==="text"?ld:void 0),tokenize:t};function t(r){const n=this,a=this.parser.constructs[e],i=r.attempt(a,u,s);return u;function u(d){return c(d)?i(d):s(d)}function s(d){if(d===null){r.consume(d);return}return r.enter("data"),r.consume(d),l}function l(d){return c(d)?(r.exit("data"),i(d)):(r.consume(d),l)}function c(d){if(d===null)return!0;const f=a[d];let g=-1;if(f)for(;++g-1){const s=u[0];typeof s=="string"?u[0]=s.slice(n):u.shift()}i>0&&u.push(e[a].slice(0,i))}return u}function yd(e,t){let r=-1;const n=[];let a;for(;++r0){const Tt=ue.tokenStack[ue.tokenStack.length-1];(Tt[1]||su).call(ue,void 0,Tt[0])}for($.position={start:Vt(B.length>0?B[0][1].start:{line:1,column:1,offset:0}),end:Vt(B.length>0?B[B.length-2][1].end:{line:1,column:1,offset:0})},xe=-1;++xe0&&(n.className=["language-"+a[0]]);let i={type:"element",tagName:"code",properties:n,children:[{type:"text",value:r}]};return t.meta&&(i.data={meta:t.meta}),e.patch(t,i),i=e.applyData(t,i),i={type:"element",tagName:"pre",properties:{},children:[i]},e.patch(t,i),i}function Md(e,t){const r={type:"element",tagName:"del",properties:{},children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function Pd(e,t){const r={type:"element",tagName:"em",properties:{},children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function Bd(e,t){const r=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",n=String(t.identifier).toUpperCase(),a=Pr(n.toLowerCase()),i=e.footnoteOrder.indexOf(n);let u,s=e.footnoteCounts.get(n);s===void 0?(s=0,e.footnoteOrder.push(n),u=e.footnoteOrder.length):u=i+1,s+=1,e.footnoteCounts.set(n,s);const l={type:"element",tagName:"a",properties:{href:"#"+r+"fn-"+a,id:r+"fnref-"+a+(s>1?"-"+s:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(u)}]};e.patch(t,l);const c={type:"element",tagName:"sup",properties:{},children:[l]};return e.patch(t,c),e.applyData(t,c)}function Fd(e,t){const r={type:"element",tagName:"h"+t.depth,properties:{},children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function Hd(e,t){if(e.options.allowDangerousHtml){const r={type:"raw",value:t.value};return e.patch(t,r),e.applyData(t,r)}}function pl(e,t){const r=t.referenceType;let n="]";if(r==="collapsed"?n+="[]":r==="full"&&(n+="["+(t.label||t.identifier)+"]"),t.type==="imageReference")return[{type:"text",value:"!["+t.alt+n}];const a=e.all(t),i=a[0];i&&i.type==="text"?i.value="["+i.value:a.unshift({type:"text",value:"["});const u=a[a.length-1];return u&&u.type==="text"?u.value+=n:a.push({type:"text",value:n}),a}function zd(e,t){const r=String(t.identifier).toUpperCase(),n=e.definitionById.get(r);if(!n)return pl(e,t);const a={src:Pr(n.url||""),alt:t.alt};n.title!==null&&n.title!==void 0&&(a.title=n.title);const i={type:"element",tagName:"img",properties:a,children:[]};return e.patch(t,i),e.applyData(t,i)}function Ud(e,t){const r={src:Pr(t.url)};t.alt!==null&&t.alt!==void 0&&(r.alt=t.alt),t.title!==null&&t.title!==void 0&&(r.title=t.title);const n={type:"element",tagName:"img",properties:r,children:[]};return e.patch(t,n),e.applyData(t,n)}function qd(e,t){const r={type:"text",value:t.value.replace(/\r?\n|\r/g," ")};e.patch(t,r);const n={type:"element",tagName:"code",properties:{},children:[r]};return e.patch(t,n),e.applyData(t,n)}function Yd(e,t){const r=String(t.identifier).toUpperCase(),n=e.definitionById.get(r);if(!n)return pl(e,t);const a={href:Pr(n.url||"")};n.title!==null&&n.title!==void 0&&(a.title=n.title);const i={type:"element",tagName:"a",properties:a,children:e.all(t)};return e.patch(t,i),e.applyData(t,i)}function Gd(e,t){const r={href:Pr(t.url)};t.title!==null&&t.title!==void 0&&(r.title=t.title);const n={type:"element",tagName:"a",properties:r,children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function Vd(e,t,r){const n=e.all(t),a=r?jd(r):gl(t),i={},u=[];if(typeof t.checked=="boolean"){const d=n[0];let f;d&&d.type==="element"&&d.tagName==="p"?f=d:(f={type:"element",tagName:"p",properties:{},children:[]},n.unshift(f)),f.children.length>0&&f.children.unshift({type:"text",value:" "}),f.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:t.checked,disabled:!0},children:[]}),i.className=["task-list-item"]}let s=-1;for(;++s1}function Wd(e,t){const r={},n=e.all(t);let a=-1;for(typeof t.start=="number"&&t.start!==1&&(r.start=t.start);++a0){const u={type:"element",tagName:"tbody",properties:{},children:e.wrap(r,!0)},s=_t(t.children[1]),l=d0(t.children[t.children.length-1]);s&&l&&(u.position={start:s,end:l}),a.push(u)}const i={type:"element",tagName:"table",properties:{},children:e.wrap(a,!0)};return e.patch(t,i),e.applyData(t,i)}function Jd(e,t,r){const n=r?r.children:void 0,i=(n?n.indexOf(t):1)===0?"th":"td",u=r&&r.type==="table"?r.align:void 0,s=u?u.length:t.children.length;let l=-1;const c=[];for(;++l0,!0),n[0]),a=n.index+n[0].length,n=r.exec(t);return i.push(cu(t.slice(a),a>0,!1)),i.join("")}function cu(e,t,r){let n=0,a=e.length;if(t){let i=e.codePointAt(n);for(;i===lu||i===ou;)n++,i=e.codePointAt(n)}if(r){let i=e.codePointAt(a-1);for(;i===lu||i===ou;)a--,i=e.codePointAt(a-1)}return a>n?e.slice(n,a):""}function tf(e,t){const r={type:"text",value:ef(String(t.value))};return e.patch(t,r),e.applyData(t,r)}function rf(e,t){const r={type:"element",tagName:"hr",properties:{},children:[]};return e.patch(t,r),e.applyData(t,r)}const nf={blockquote:Od,break:Ld,code:Rd,delete:Md,emphasis:Pd,footnoteReference:Bd,heading:Fd,html:Hd,imageReference:zd,image:Ud,inlineCode:qd,linkReference:Yd,link:Gd,listItem:Vd,list:Wd,paragraph:Xd,root:$d,strong:Qd,table:Kd,tableCell:Zd,tableRow:Jd,text:tf,thematicBreak:rf,toml:Mn,yaml:Mn,definition:Mn,footnoteDefinition:Mn};function Mn(){}const bl=-1,p0=0,un=1,e0=2,ui=3,si=4,li=5,oi=6,El=7,Tl=8,xl=typeof self=="object"?self:globalThis,hu=(e,t)=>{switch(e){case"Function":case"SharedWorker":case"Worker":case"eval":case"setInterval":case"setTimeout":throw new TypeError("unable to deserialize "+e)}return new xl[e](t)},af=(e,t)=>{const r=(a,i)=>(e.set(i,a),a),n=a=>{if(e.has(a))return e.get(a);const[i,u]=t[a];switch(i){case p0:case bl:return r(u,a);case un:{const s=r([],a);for(const l of u)s.push(n(l));return s}case e0:{const s=r({},a);for(const[l,c]of u)s[n(l)]=n(c);return s}case ui:return r(new Date(u),a);case si:{const{source:s,flags:l}=u;return r(new RegExp(s,l),a)}case li:{const s=r(new Map,a);for(const[l,c]of u)s.set(n(l),n(c));return s}case oi:{const s=r(new Set,a);for(const l of u)s.add(n(l));return s}case El:{const{name:s,message:l}=u;return r(typeof xl[s]=="function"?hu(s,l):new Error(l),a)}case Tl:return r(BigInt(u),a);case"BigInt":return r(Object(BigInt(u)),a);case"ArrayBuffer":return r(new Uint8Array(u).buffer,u);case"DataView":{const{buffer:s}=new Uint8Array(u);return r(new DataView(s),u)}}return r(hu(i,u),a)};return n},du=e=>af(new Map,e)(0),hr="",{toString:uf}={},{keys:sf}=Object,Jr=e=>{const t=typeof e;if(t!=="object"||!e)return[p0,t];const r=uf.call(e).slice(8,-1);switch(r){case"Array":return[un,hr];case"Object":return[e0,hr];case"Date":return[ui,hr];case"RegExp":return[si,hr];case"Map":return[li,hr];case"Set":return[oi,hr];case"DataView":return[un,r]}return r.includes("Array")?[un,r]:e instanceof Error?[El,e.name||"Error"]:[e0,r]},Pn=([e,t])=>e===p0&&(t==="function"||t==="symbol"),lf=(e,t,r,n)=>{const a=(u,s)=>{const l=n.push(u)-1;return r.set(s,l),l},i=u=>{if(r.has(u))return r.get(u);let[s,l]=Jr(u);switch(s){case p0:{let d=u;switch(l){case"bigint":s=Tl,d=u.toString();break;case"function":case"symbol":if(e)throw new TypeError("unable to serialize "+l);d=null;break;case"undefined":return a([bl],u)}return a([s,d],u)}case un:{if(l){let g=u;return l==="DataView"?g=new Uint8Array(u.buffer):l==="ArrayBuffer"&&(g=new Uint8Array(u)),a([l,[...g]],u)}const d=[],f=a([s,d],u);for(const g of u)d.push(i(g));return f}case e0:{if(l)switch(l){case"BigInt":return a([l,u.toString()],u);case"Boolean":case"Number":case"String":return a([l,u.valueOf()],u)}if(t&&"toJSON"in u)return i(u.toJSON());const d=[],f=a([s,d],u);for(const g of sf(u))(e||!Pn(Jr(u[g])))&&d.push([i(g),i(u[g])]);return f}case ui:return a([s,isNaN(u.getTime())?hr:u.toISOString()],u);case si:{const{source:d,flags:f}=u;return a([s,{source:d,flags:f}],u)}case li:{const d=[],f=a([s,d],u);for(const[g,p]of u)(e||!(Pn(Jr(g))||Pn(Jr(p))))&&d.push([i(g),i(p)]);return f}case oi:{const d=[],f=a([s,d],u);for(const g of u)(e||!Pn(Jr(g)))&&d.push(i(g));return f}}const{message:c}=u;return a([s,{name:l,message:c}],u)};return i},fu=(e,{json:t,lossy:r}={})=>{const n=[];return lf(!(t||r),!!t,new Map,n)(e),n},Nr=typeof structuredClone=="function"?(e,t)=>t&&("json"in t||"lossy"in t)?du(fu(e,t)):structuredClone(e):(e,t)=>du(fu(e,t));function of(e,t){const r=[{type:"text",value:"↩"}];return t>1&&r.push({type:"element",tagName:"sup",properties:{},children:[{type:"text",value:String(t)}]}),r}function cf(e,t){return"Back to reference "+(e+1)+(t>1?"-"+t:"")}function hf(e){const t=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",r=e.options.footnoteBackContent||of,n=e.options.footnoteBackLabel||cf,a=e.options.footnoteLabel||"Footnotes",i=e.options.footnoteLabelTagName||"h2",u=e.options.footnoteLabelProperties||{className:["sr-only"]},s=[];let l=-1;for(;++l0&&x.push({type:"text",value:" "});let N=typeof r=="string"?r:r(l,p);typeof N=="string"&&(N={type:"text",value:N}),x.push({type:"element",tagName:"a",properties:{href:"#"+t+"fnref-"+g+(p>1?"-"+p:""),dataFootnoteBackref:"",ariaLabel:typeof n=="string"?n:n(l,p),className:["data-footnote-backref"]},children:Array.isArray(N)?N:[N]})}const D=d[d.length-1];if(D&&D.type==="element"&&D.tagName==="p"){const N=D.children[D.children.length-1];N&&N.type==="text"?N.value+=" ":D.children.push({type:"text",value:" "}),D.children.push(...x)}else d.push(...x);const _={type:"element",tagName:"li",properties:{id:t+"fn-"+g},children:e.wrap(d,!0)};e.patch(c,_),s.push(_)}if(s.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:i,properties:{...Nr(u),id:"footnote-label"},children:[{type:"text",value:a}]},{type:"text",value:` -`},{type:"element",tagName:"ol",properties:{},children:e.wrap(s,!0)},{type:"text",value:` -`}]}}const vn=(function(e){if(e==null)return pf;if(typeof e=="function")return g0(e);if(typeof e=="object")return Array.isArray(e)?df(e):ff(e);if(typeof e=="string")return mf(e);throw new Error("Expected function, string, or object as test")});function df(e){const t=[];let r=-1;for(;++r":""))+")"})}return g;function g(){let p=yl,x,S,D;if((!t||i(l,c,d[d.length-1]||void 0))&&(p=Ef(r(l,d)),p[0]===Aa))return p;if("children"in l&&l.children){const _=l;if(_.children&&p[0]!==vl)for(S=(n?_.children.length:-1)+u,D=d.concat(_);S>-1&&S<_.children.length;){const N=_.children[S];if(x=s(N,S,D)(),x[0]===Aa)return x;S=typeof x[1]=="number"?x[1]:S+u}}return p}}}function Ef(e){return Array.isArray(e)?e:typeof e=="number"?[bf,e]:e==null?yl:[e]}function b0(e,t,r,n){let a,i,u;typeof t=="function"&&typeof r!="function"?(i=void 0,u=t,a=r):(i=t,u=r,a=n),ci(e,i,s,a);function s(l,c){const d=c[c.length-1],f=d?d.children.indexOf(l):void 0;return u(l,f,d)}}const ka={}.hasOwnProperty,Tf={};function xf(e,t){const r=t||Tf,n=new Map,a=new Map,i=new Map,u={...nf,...r.handlers},s={all:c,applyData:vf,definitionById:n,footnoteById:a,footnoteCounts:i,footnoteOrder:[],handlers:u,one:l,options:r,patch:yf,wrap:kf};return b0(e,function(d){if(d.type==="definition"||d.type==="footnoteDefinition"){const f=d.type==="definition"?n:a,g=String(d.identifier).toUpperCase();f.has(g)||f.set(g,d)}}),s;function l(d,f){const g=d.type,p=s.handlers[g];if(ka.call(s.handlers,g)&&p)return p(s,d,f);if(s.options.passThrough&&s.options.passThrough.includes(g)){if("children"in d){const{children:S,...D}=d,_=Nr(D);return _.children=s.all(d),_}return Nr(d)}return(s.options.unknownHandler||Af)(s,d,f)}function c(d){const f=[];if("children"in d){const g=d.children;let p=-1;for(;++p0&&r.push({type:"text",value:` -`}),r}function mu(e){let t=0,r=e.charCodeAt(t);for(;r===9||r===32;)t++,r=e.charCodeAt(t);return e.slice(t)}function pu(e,t){const r=xf(e,t),n=r.one(e,void 0),a=hf(r),i=Array.isArray(n)?{type:"root",children:n}:n||{type:"root",children:[]};return a&&i.children.push({type:"text",value:` -`},a),i}function Sf(e,t){return e&&"run"in e?async function(r,n){const a=pu(r,{file:n,...t});await e.run(a,n)}:function(r,n){return pu(r,{file:n,...e||t})}}function gu(e){if(e)throw e}var q0,bu;function wf(){if(bu)return q0;bu=1;var e=Object.prototype.hasOwnProperty,t=Object.prototype.toString,r=Object.defineProperty,n=Object.getOwnPropertyDescriptor,a=function(c){return typeof Array.isArray=="function"?Array.isArray(c):t.call(c)==="[object Array]"},i=function(c){if(!c||t.call(c)!=="[object Object]")return!1;var d=e.call(c,"constructor"),f=c.constructor&&c.constructor.prototype&&e.call(c.constructor.prototype,"isPrototypeOf");if(c.constructor&&!d&&!f)return!1;var g;for(g in c);return typeof g>"u"||e.call(c,g)},u=function(c,d){r&&d.name==="__proto__"?r(c,d.name,{enumerable:!0,configurable:!0,value:d.newValue,writable:!0}):c[d.name]=d.newValue},s=function(c,d){if(d==="__proto__")if(e.call(c,d)){if(n)return n(c,d).value}else return;return c[d]};return q0=function l(){var c,d,f,g,p,x,S=arguments[0],D=1,_=arguments.length,N=!1;for(typeof S=="boolean"&&(N=S,S=arguments[1]||{},D=2),(S==null||typeof S!="object"&&typeof S!="function")&&(S={});D<_;++D)if(c=arguments[D],c!=null)for(d in c)f=s(S,d),g=s(c,d),S!==g&&(N&&g&&(i(g)||(p=a(g)))?(p?(p=!1,x=f&&a(f)?f:[]):x=f&&i(f)?f:{},u(S,{name:d,newValue:l(N,x,g)})):typeof g<"u"&&u(S,{name:d,newValue:g}));return S},q0}var Cf=wf();const Y0=zs(Cf);function Sa(e){if(typeof e!="object"||e===null)return!1;const t=Object.getPrototypeOf(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)}function _f(){const e=[],t={run:r,use:n};return t;function r(...a){let i=-1;const u=a.pop();if(typeof u!="function")throw new TypeError("Expected function as last argument, not "+u);s(null,...a);function s(l,...c){const d=e[++i];let f=-1;if(l){u(l);return}for(;++fu.length;let l;s&&u.push(a);try{l=e.apply(this,u)}catch(c){const d=c;if(s&&r)throw d;return a(d)}s||(l&&l.then&&typeof l.then=="function"?l.then(i,a):l instanceof Error?a(l):i(l))}function a(u,...s){r||(r=!0,t(u,...s))}function i(u){a(null,u)}}const At={basename:Nf,dirname:Df,extname:Of,join:Lf,sep:"/"};function Nf(e,t){if(t!==void 0&&typeof t!="string")throw new TypeError('"ext" argument must be a string');An(e);let r=0,n=-1,a=e.length,i;if(t===void 0||t.length===0||t.length>e.length){for(;a--;)if(e.codePointAt(a)===47){if(i){r=a+1;break}}else n<0&&(i=!0,n=a+1);return n<0?"":e.slice(r,n)}if(t===e)return"";let u=-1,s=t.length-1;for(;a--;)if(e.codePointAt(a)===47){if(i){r=a+1;break}}else u<0&&(i=!0,u=a+1),s>-1&&(e.codePointAt(a)===t.codePointAt(s--)?s<0&&(n=a):(s=-1,n=u));return r===n?n=u:n<0&&(n=e.length),e.slice(r,n)}function Df(e){if(An(e),e.length===0)return".";let t=-1,r=e.length,n;for(;--r;)if(e.codePointAt(r)===47){if(n){t=r;break}}else n||(n=!0);return t<0?e.codePointAt(0)===47?"/":".":t===1&&e.codePointAt(0)===47?"//":e.slice(0,t)}function Of(e){An(e);let t=e.length,r=-1,n=0,a=-1,i=0,u;for(;t--;){const s=e.codePointAt(t);if(s===47){if(u){n=t+1;break}continue}r<0&&(u=!0,r=t+1),s===46?a<0?a=t:i!==1&&(i=1):a>-1&&(i=-1)}return a<0||r<0||i===0||i===1&&a===r-1&&a===n+1?"":e.slice(a,r)}function Lf(...e){let t=-1,r;for(;++t0&&e.codePointAt(e.length-1)===47&&(r+="/"),t?"/"+r:r}function Mf(e,t){let r="",n=0,a=-1,i=0,u=-1,s,l;for(;++u<=e.length;){if(u2){if(l=r.lastIndexOf("/"),l!==r.length-1){l<0?(r="",n=0):(r=r.slice(0,l),n=r.length-1-r.lastIndexOf("/")),a=u,i=0;continue}}else if(r.length>0){r="",n=0,a=u,i=0;continue}}t&&(r=r.length>0?r+"/..":"..",n=2)}else r.length>0?r+="/"+e.slice(a+1,u):r=e.slice(a+1,u),n=u-a-1;a=u,i=0}else s===46&&i>-1?i++:i=-1}return r}function An(e){if(typeof e!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}const Pf={cwd:Bf};function Bf(){return"/"}function wa(e){return!!(e!==null&&typeof e=="object"&&"href"in e&&e.href&&"protocol"in e&&e.protocol&&e.auth===void 0)}function Ff(e){if(typeof e=="string")e=new URL(e);else if(!wa(e)){const t=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw t.code="ERR_INVALID_ARG_TYPE",t}if(e.protocol!=="file:"){const t=new TypeError("The URL must be of scheme file");throw t.code="ERR_INVALID_URL_SCHEME",t}return Hf(e)}function Hf(e){if(e.hostname!==""){const n=new TypeError('File URL host must be "localhost" or empty on darwin');throw n.code="ERR_INVALID_FILE_URL_HOST",n}const t=e.pathname;let r=-1;for(;++r0){let[p,...x]=d;const S=n[g][1];Sa(S)&&Sa(p)&&(p=Y0(!0,S,p)),n[g]=[c,p,...x]}}}}const Yf=new hi().freeze();function W0(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `parser`")}function X0(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `compiler`")}function $0(e,t){if(t)throw new Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function Tu(e){if(!Sa(e)||typeof e.type!="string")throw new TypeError("Expected node, got `"+e+"`")}function xu(e,t,r){if(!r)throw new Error("`"+e+"` finished async. Use `"+t+"` instead")}function Bn(e){return Gf(e)?e:new Al(e)}function Gf(e){return!!(e&&typeof e=="object"&&"message"in e&&"messages"in e)}function Vf(e){return typeof e=="string"||jf(e)}function jf(e){return!!(e&&typeof e=="object"&&"byteLength"in e&&"byteOffset"in e)}const Wf="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",yu=[],vu={allowDangerousHtml:!0},Xf=/^(https?|ircs?|mailto|xmpp)$/i,$f=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"className",id:"remove-classname"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function Qf(e){const t=Kf(e),r=Jf(e);return Zf(t.runSync(t.parse(r),r),e)}function Kf(e){const t=e.rehypePlugins||yu,r=e.remarkPlugins||yu,n=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...vu}:vu;return Yf().use(Dd).use(r).use(Sf,n).use(t)}function Jf(e){const t=e.children||"",r=new Al;return typeof t=="string"&&(r.value=t),r}function Zf(e,t){const r=t.allowedElements,n=t.allowElement,a=t.components,i=t.disallowedElements,u=t.skipHtml,s=t.unwrapDisallowed,l=t.urlTransform||em;for(const d of $f)Object.hasOwn(t,d.from)&&(""+d.from+(d.to?"use `"+d.to+"` instead":"remove it")+Wf+d.id,void 0);return b0(e,c),m1(e,{Fragment:pe.Fragment,components:a,ignoreInvalidStyle:!0,jsx:pe.jsx,jsxs:pe.jsxs,passKeys:!0,passNode:!0});function c(d,f,g){if(d.type==="raw"&&g&&typeof f=="number")return u?g.children.splice(f,1):g.children[f]={type:"text",value:d.value},f;if(d.type==="element"){let p;for(p in H0)if(Object.hasOwn(H0,p)&&Object.hasOwn(d.properties,p)){const x=d.properties[p],S=H0[p];(S===null||S.includes(d.tagName))&&(d.properties[p]=l(String(x||""),p,d))}}if(d.type==="element"){let p=r?!r.includes(d.tagName):i?i.includes(d.tagName):!1;if(!p&&n&&typeof f=="number"&&(p=!n(d,f,g)),p&&g&&typeof f=="number")return s&&d.children?g.children.splice(f,1,...d.children):g.children.splice(f,1),f}}}function em(e){const t=e.indexOf(":"),r=e.indexOf("?"),n=e.indexOf("#"),a=e.indexOf("/");return t===-1||a!==-1&&t>a||r!==-1&&t>r||n!==-1&&t>n||Xf.test(e.slice(0,t))?e:""}function Au(e,t){const r=String(e);if(typeof t!="string")throw new TypeError("Expected character");let n=0,a=r.indexOf(t);for(;a!==-1;)n++,a=r.indexOf(t,a+t.length);return n}function tm(e){if(typeof e!="string")throw new TypeError("Expected a string");return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}function rm(e,t,r){const a=vn((r||{}).ignore||[]),i=nm(t);let u=-1;for(;++u0?{type:"text",value:L}:void 0),L===!1?g.lastIndex=W+1:(x!==W&&N.push({type:"text",value:c.value.slice(x,W)}),Array.isArray(L)?N.push(...L):L&&N.push(L),x=W+M[0].length,_=!0),!g.global)break;M=g.exec(c.value)}return _?(x?\]}]+$/.exec(e);if(!t)return[e,void 0];e=e.slice(0,t.index);let r=t[0],n=r.indexOf(")");const a=Au(e,"(");let i=Au(e,")");for(;n!==-1&&a>i;)e+=r.slice(0,n+1),r=r.slice(n+1),n=r.indexOf(")"),i++;return[e,r]}function kl(e,t){const r=e.input.charCodeAt(e.index-1);return(e.index===0||pr(r)||f0(r))&&(!t||r!==47)}Sl.peek=wm;function Em(){this.buffer()}function Tm(e){this.enter({type:"footnoteReference",identifier:"",label:""},e)}function xm(){this.buffer()}function ym(e){this.enter({type:"footnoteDefinition",identifier:"",label:"",children:[]},e)}function vm(e){const t=this.resume(),r=this.stack[this.stack.length-1];r.type,r.identifier=xt(this.sliceSerialize(e)).toLowerCase(),r.label=t}function Am(e){this.exit(e)}function km(e){const t=this.resume(),r=this.stack[this.stack.length-1];r.type,r.identifier=xt(this.sliceSerialize(e)).toLowerCase(),r.label=t}function Sm(e){this.exit(e)}function wm(){return"["}function Sl(e,t,r,n){const a=r.createTracker(n);let i=a.move("[^");const u=r.enter("footnoteReference"),s=r.enter("reference");return i+=a.move(r.safe(r.associationId(e),{after:"]",before:i})),s(),u(),i+=a.move("]"),i}function Cm(){return{enter:{gfmFootnoteCallString:Em,gfmFootnoteCall:Tm,gfmFootnoteDefinitionLabelString:xm,gfmFootnoteDefinition:ym},exit:{gfmFootnoteCallString:vm,gfmFootnoteCall:Am,gfmFootnoteDefinitionLabelString:km,gfmFootnoteDefinition:Sm}}}function _m(e){let t=!1;return e&&e.firstLineBlank&&(t=!0),{handlers:{footnoteDefinition:r,footnoteReference:Sl},unsafe:[{character:"[",inConstruct:["label","phrasing","reference"]}]};function r(n,a,i,u){const s=i.createTracker(u);let l=s.move("[^");const c=i.enter("footnoteDefinition"),d=i.enter("label");return l+=s.move(i.safe(i.associationId(n),{before:l,after:"]"})),d(),l+=s.move("]:"),n.children&&n.children.length>0&&(s.shift(4),l+=s.move((t?` -`:" ")+i.indentLines(i.containerFlow(n,s.current()),t?wl:Im))),c(),l}}function Im(e,t,r){return t===0?e:wl(e,t,r)}function wl(e,t,r){return(r?"":" ")+e}const Nm=["autolink","destinationLiteral","destinationRaw","reference","titleQuote","titleApostrophe"];Cl.peek=Mm;function Dm(){return{canContainEols:["delete"],enter:{strikethrough:Lm},exit:{strikethrough:Rm}}}function Om(){return{unsafe:[{character:"~",inConstruct:"phrasing",notInConstruct:Nm}],handlers:{delete:Cl}}}function Lm(e){this.enter({type:"delete",children:[]},e)}function Rm(e){this.exit(e)}function Cl(e,t,r,n){const a=r.createTracker(n),i=r.enter("strikethrough");let u=a.move("~~");return u+=r.containerPhrasing(e,{...a.current(),before:u,after:"~"}),u+=a.move("~~"),i(),u}function Mm(){return"~"}function Pm(e){return e.length}function Bm(e,t){const r=t||{},n=(r.align||[]).concat(),a=r.stringLength||Pm,i=[],u=[],s=[],l=[];let c=0,d=-1;for(;++dc&&(c=e[d].length);++_l[_])&&(l[_]=M)}S.push(N)}u[d]=S,s[d]=D}let f=-1;if(typeof n=="object"&&"length"in n)for(;++fl[f]&&(l[f]=N),p[f]=N),g[f]=M}u.splice(1,0,g),s.splice(1,0,p),d=-1;const x=[];for(;++d "),i.shift(2);const u=r.indentLines(r.containerFlow(e,i.current()),zm);return a(),u}function zm(e,t,r){return">"+(r?"":" ")+e}function Um(e,t){return wu(e,t.inConstruct,!0)&&!wu(e,t.notInConstruct,!1)}function wu(e,t,r){if(typeof t=="string"&&(t=[t]),!t||t.length===0)return r;let n=-1;for(;++nu&&(u=i):i=1,a=n+t.length,n=r.indexOf(t,a);return u}function qm(e,t){return!!(t.options.fences===!1&&e.value&&!e.lang&&/[^ \r\n]/.test(e.value)&&!/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(e.value))}function Ym(e){const t=e.options.fence||"`";if(t!=="`"&&t!=="~")throw new Error("Cannot serialize code with `"+t+"` for `options.fence`, expected `` ` `` or `~`");return t}function Gm(e,t,r,n){const a=Ym(r),i=e.value||"",u=a==="`"?"GraveAccent":"Tilde";if(qm(e,r)){const f=r.enter("codeIndented"),g=r.indentLines(i,Vm);return f(),g}const s=r.createTracker(n),l=a.repeat(Math.max(Il(i,a)+1,3)),c=r.enter("codeFenced");let d=s.move(l);if(e.lang){const f=r.enter(`codeFencedLang${u}`);d+=s.move(r.safe(e.lang,{before:d,after:" ",encode:["`"],...s.current()})),f()}if(e.lang&&e.meta){const f=r.enter(`codeFencedMeta${u}`);d+=s.move(" "),d+=s.move(r.safe(e.meta,{before:d,after:` -`,encode:["`"],...s.current()})),f()}return d+=s.move(` -`),i&&(d+=s.move(i+` -`)),d+=s.move(l),c(),d}function Vm(e,t,r){return(r?"":" ")+e}function di(e){const t=e.options.quote||'"';if(t!=='"'&&t!=="'")throw new Error("Cannot serialize title with `"+t+"` for `options.quote`, expected `\"`, or `'`");return t}function jm(e,t,r,n){const a=di(r),i=a==='"'?"Quote":"Apostrophe",u=r.enter("definition");let s=r.enter("label");const l=r.createTracker(n);let c=l.move("[");return c+=l.move(r.safe(r.associationId(e),{before:c,after:"]",...l.current()})),c+=l.move("]: "),s(),!e.url||/[\0- \u007F]/.test(e.url)?(s=r.enter("destinationLiteral"),c+=l.move("<"),c+=l.move(r.safe(e.url,{before:c,after:">",...l.current()})),c+=l.move(">")):(s=r.enter("destinationRaw"),c+=l.move(r.safe(e.url,{before:c,after:e.title?" ":` -`,...l.current()}))),s(),e.title&&(s=r.enter(`title${i}`),c+=l.move(" "+a),c+=l.move(r.safe(e.title,{before:c,after:a,...l.current()})),c+=l.move(a),s()),u(),c}function Wm(e){const t=e.options.emphasis||"*";if(t!=="*"&&t!=="_")throw new Error("Cannot serialize emphasis with `"+t+"` for `options.emphasis`, expected `*`, or `_`");return t}function pn(e){return"&#x"+e.toString(16).toUpperCase()+";"}function t0(e,t,r){const n=Ir(e),a=Ir(t);return n===void 0?a===void 0?r==="_"?{inside:!0,outside:!0}:{inside:!1,outside:!1}:a===1?{inside:!0,outside:!0}:{inside:!1,outside:!0}:n===1?a===void 0?{inside:!1,outside:!1}:a===1?{inside:!0,outside:!0}:{inside:!1,outside:!1}:a===void 0?{inside:!1,outside:!1}:a===1?{inside:!0,outside:!1}:{inside:!1,outside:!1}}Nl.peek=Xm;function Nl(e,t,r,n){const a=Wm(r),i=r.enter("emphasis"),u=r.createTracker(n),s=u.move(a);let l=u.move(r.containerPhrasing(e,{after:a,before:s,...u.current()}));const c=l.charCodeAt(0),d=t0(n.before.charCodeAt(n.before.length-1),c,a);d.inside&&(l=pn(c)+l.slice(1));const f=l.charCodeAt(l.length-1),g=t0(n.after.charCodeAt(0),f,a);g.inside&&(l=l.slice(0,-1)+pn(f));const p=u.move(a);return i(),r.attentionEncodeSurroundingInfo={after:g.outside,before:d.outside},s+l+p}function Xm(e,t,r){return r.options.emphasis||"*"}function $m(e,t){let r=!1;return b0(e,function(n){if("value"in n&&/\r?\n|\r/.test(n.value)||n.type==="break")return r=!0,Aa}),!!((!e.depth||e.depth<3)&&ni(e)&&(t.options.setext||r))}function Qm(e,t,r,n){const a=Math.max(Math.min(6,e.depth||1),1),i=r.createTracker(n);if($m(e,r)){const d=r.enter("headingSetext"),f=r.enter("phrasing"),g=r.containerPhrasing(e,{...i.current(),before:` -`,after:` -`});return f(),d(),g+` -`+(a===1?"=":"-").repeat(g.length-(Math.max(g.lastIndexOf("\r"),g.lastIndexOf(` -`))+1))}const u="#".repeat(a),s=r.enter("headingAtx"),l=r.enter("phrasing");i.move(u+" ");let c=r.containerPhrasing(e,{before:"# ",after:` -`,...i.current()});return/^[\t ]/.test(c)&&(c=pn(c.charCodeAt(0))+c.slice(1)),c=c?u+" "+c:u,r.options.closeAtx&&(c+=" "+u),l(),s(),c}Dl.peek=Km;function Dl(e){return e.value||""}function Km(){return"<"}Ol.peek=Jm;function Ol(e,t,r,n){const a=di(r),i=a==='"'?"Quote":"Apostrophe",u=r.enter("image");let s=r.enter("label");const l=r.createTracker(n);let c=l.move("![");return c+=l.move(r.safe(e.alt,{before:c,after:"]",...l.current()})),c+=l.move("]("),s(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(s=r.enter("destinationLiteral"),c+=l.move("<"),c+=l.move(r.safe(e.url,{before:c,after:">",...l.current()})),c+=l.move(">")):(s=r.enter("destinationRaw"),c+=l.move(r.safe(e.url,{before:c,after:e.title?" ":")",...l.current()}))),s(),e.title&&(s=r.enter(`title${i}`),c+=l.move(" "+a),c+=l.move(r.safe(e.title,{before:c,after:a,...l.current()})),c+=l.move(a),s()),c+=l.move(")"),u(),c}function Jm(){return"!"}Ll.peek=Zm;function Ll(e,t,r,n){const a=e.referenceType,i=r.enter("imageReference");let u=r.enter("label");const s=r.createTracker(n);let l=s.move("![");const c=r.safe(e.alt,{before:l,after:"]",...s.current()});l+=s.move(c+"]["),u();const d=r.stack;r.stack=[],u=r.enter("reference");const f=r.safe(r.associationId(e),{before:l,after:"]",...s.current()});return u(),r.stack=d,i(),a==="full"||!c||c!==f?l+=s.move(f+"]"):a==="shortcut"?l=l.slice(0,-1):l+=s.move("]"),l}function Zm(){return"!"}Rl.peek=e2;function Rl(e,t,r){let n=e.value||"",a="`",i=-1;for(;new RegExp("(^|[^`])"+a+"([^`]|$)").test(n);)a+="`";for(/[^ \r\n]/.test(n)&&(/^[ \r\n]/.test(n)&&/[ \r\n]$/.test(n)||/^`|`$/.test(n))&&(n=" "+n+" ");++i\u007F]/.test(e.url))}Pl.peek=t2;function Pl(e,t,r,n){const a=di(r),i=a==='"'?"Quote":"Apostrophe",u=r.createTracker(n);let s,l;if(Ml(e,r)){const d=r.stack;r.stack=[],s=r.enter("autolink");let f=u.move("<");return f+=u.move(r.containerPhrasing(e,{before:f,after:">",...u.current()})),f+=u.move(">"),s(),r.stack=d,f}s=r.enter("link"),l=r.enter("label");let c=u.move("[");return c+=u.move(r.containerPhrasing(e,{before:c,after:"](",...u.current()})),c+=u.move("]("),l(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(l=r.enter("destinationLiteral"),c+=u.move("<"),c+=u.move(r.safe(e.url,{before:c,after:">",...u.current()})),c+=u.move(">")):(l=r.enter("destinationRaw"),c+=u.move(r.safe(e.url,{before:c,after:e.title?" ":")",...u.current()}))),l(),e.title&&(l=r.enter(`title${i}`),c+=u.move(" "+a),c+=u.move(r.safe(e.title,{before:c,after:a,...u.current()})),c+=u.move(a),l()),c+=u.move(")"),s(),c}function t2(e,t,r){return Ml(e,r)?"<":"["}Bl.peek=r2;function Bl(e,t,r,n){const a=e.referenceType,i=r.enter("linkReference");let u=r.enter("label");const s=r.createTracker(n);let l=s.move("[");const c=r.containerPhrasing(e,{before:l,after:"]",...s.current()});l+=s.move(c+"]["),u();const d=r.stack;r.stack=[],u=r.enter("reference");const f=r.safe(r.associationId(e),{before:l,after:"]",...s.current()});return u(),r.stack=d,i(),a==="full"||!c||c!==f?l+=s.move(f+"]"):a==="shortcut"?l=l.slice(0,-1):l+=s.move("]"),l}function r2(){return"["}function fi(e){const t=e.options.bullet||"*";if(t!=="*"&&t!=="+"&&t!=="-")throw new Error("Cannot serialize items with `"+t+"` for `options.bullet`, expected `*`, `+`, or `-`");return t}function n2(e){const t=fi(e),r=e.options.bulletOther;if(!r)return t==="*"?"-":"*";if(r!=="*"&&r!=="+"&&r!=="-")throw new Error("Cannot serialize items with `"+r+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(r===t)throw new Error("Expected `bullet` (`"+t+"`) and `bulletOther` (`"+r+"`) to be different");return r}function a2(e){const t=e.options.bulletOrdered||".";if(t!=="."&&t!==")")throw new Error("Cannot serialize items with `"+t+"` for `options.bulletOrdered`, expected `.` or `)`");return t}function Fl(e){const t=e.options.rule||"*";if(t!=="*"&&t!=="-"&&t!=="_")throw new Error("Cannot serialize rules with `"+t+"` for `options.rule`, expected `*`, `-`, or `_`");return t}function i2(e,t,r,n){const a=r.enter("list"),i=r.bulletCurrent;let u=e.ordered?a2(r):fi(r);const s=e.ordered?u==="."?")":".":n2(r);let l=t&&r.bulletLastUsed?u===r.bulletLastUsed:!1;if(!e.ordered){const d=e.children?e.children[0]:void 0;if((u==="*"||u==="-")&&d&&(!d.children||!d.children[0])&&r.stack[r.stack.length-1]==="list"&&r.stack[r.stack.length-2]==="listItem"&&r.stack[r.stack.length-3]==="list"&&r.stack[r.stack.length-4]==="listItem"&&r.indexStack[r.indexStack.length-1]===0&&r.indexStack[r.indexStack.length-2]===0&&r.indexStack[r.indexStack.length-3]===0&&(l=!0),Fl(r)===u&&d){let f=-1;for(;++f-1?t.start:1)+(r.options.incrementListMarker===!1?0:t.children.indexOf(e))+i);let u=i.length+1;(a==="tab"||a==="mixed"&&(t&&t.type==="list"&&t.spread||e.spread))&&(u=Math.ceil(u/4)*4);const s=r.createTracker(n);s.move(i+" ".repeat(u-i.length)),s.shift(u);const l=r.enter("listItem"),c=r.indentLines(r.containerFlow(e,s.current()),d);return l(),c;function d(f,g,p){return g?(p?"":" ".repeat(u))+f:(p?i:i+" ".repeat(u-i.length))+f}}function l2(e,t,r,n){const a=r.enter("paragraph"),i=r.enter("phrasing"),u=r.containerPhrasing(e,n);return i(),a(),u}const o2=vn(["break","delete","emphasis","footnote","footnoteReference","image","imageReference","inlineCode","inlineMath","link","linkReference","mdxJsxTextElement","mdxTextExpression","strong","text","textDirective"]);function c2(e,t,r,n){return(e.children.some(function(u){return o2(u)})?r.containerPhrasing:r.containerFlow).call(r,e,n)}function h2(e){const t=e.options.strong||"*";if(t!=="*"&&t!=="_")throw new Error("Cannot serialize strong with `"+t+"` for `options.strong`, expected `*`, or `_`");return t}Hl.peek=d2;function Hl(e,t,r,n){const a=h2(r),i=r.enter("strong"),u=r.createTracker(n),s=u.move(a+a);let l=u.move(r.containerPhrasing(e,{after:a,before:s,...u.current()}));const c=l.charCodeAt(0),d=t0(n.before.charCodeAt(n.before.length-1),c,a);d.inside&&(l=pn(c)+l.slice(1));const f=l.charCodeAt(l.length-1),g=t0(n.after.charCodeAt(0),f,a);g.inside&&(l=l.slice(0,-1)+pn(f));const p=u.move(a+a);return i(),r.attentionEncodeSurroundingInfo={after:g.outside,before:d.outside},s+l+p}function d2(e,t,r){return r.options.strong||"*"}function f2(e,t,r,n){return r.safe(e.value,n)}function m2(e){const t=e.options.ruleRepetition||3;if(t<3)throw new Error("Cannot serialize rules with repetition `"+t+"` for `options.ruleRepetition`, expected `3` or more");return t}function p2(e,t,r){const n=(Fl(r)+(r.options.ruleSpaces?" ":"")).repeat(m2(r));return r.options.ruleSpaces?n.slice(0,-1):n}const zl={blockquote:Hm,break:Cu,code:Gm,definition:jm,emphasis:Nl,hardBreak:Cu,heading:Qm,html:Dl,image:Ol,imageReference:Ll,inlineCode:Rl,link:Pl,linkReference:Bl,list:i2,listItem:s2,paragraph:l2,root:c2,strong:Hl,text:f2,thematicBreak:p2};function g2(){return{enter:{table:b2,tableData:_u,tableHeader:_u,tableRow:T2},exit:{codeText:x2,table:E2,tableData:Z0,tableHeader:Z0,tableRow:Z0}}}function b2(e){const t=e._align;this.enter({type:"table",align:t.map(function(r){return r==="none"?null:r}),children:[]},e),this.data.inTable=!0}function E2(e){this.exit(e),this.data.inTable=void 0}function T2(e){this.enter({type:"tableRow",children:[]},e)}function Z0(e){this.exit(e)}function _u(e){this.enter({type:"tableCell",children:[]},e)}function x2(e){let t=this.resume();this.data.inTable&&(t=t.replace(/\\([\\|])/g,y2));const r=this.stack[this.stack.length-1];r.type,r.value=t,this.exit(e)}function y2(e,t){return t==="|"?t:e}function v2(e){const t=e||{},r=t.tableCellPadding,n=t.tablePipeAlign,a=t.stringLength,i=r?" ":"|";return{unsafe:[{character:"\r",inConstruct:"tableCell"},{character:` -`,inConstruct:"tableCell"},{atBreak:!0,character:"|",after:"[ :-]"},{character:"|",inConstruct:"tableCell"},{atBreak:!0,character:":",after:"-"},{atBreak:!0,character:"-",after:"[:|-]"}],handlers:{inlineCode:g,table:u,tableCell:l,tableRow:s}};function u(p,x,S,D){return c(d(p,S,D),p.align)}function s(p,x,S,D){const _=f(p,S,D),N=c([_]);return N.slice(0,N.indexOf(` -`))}function l(p,x,S,D){const _=S.enter("tableCell"),N=S.enter("phrasing"),M=S.containerPhrasing(p,{...D,before:i,after:i});return N(),_(),M}function c(p,x){return Bm(p,{align:x,alignDelimiters:n,padding:r,stringLength:a})}function d(p,x,S){const D=p.children;let _=-1;const N=[],M=x.enter("table");for(;++_0&&!r&&(e[e.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),r}const z2={tokenize:X2,partial:!0};function U2(){return{document:{91:{name:"gfmFootnoteDefinition",tokenize:V2,continuation:{tokenize:j2},exit:W2}},text:{91:{name:"gfmFootnoteCall",tokenize:G2},93:{name:"gfmPotentialFootnoteCall",add:"after",tokenize:q2,resolveTo:Y2}}}}function q2(e,t,r){const n=this;let a=n.events.length;const i=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]);let u;for(;a--;){const l=n.events[a][1];if(l.type==="labelImage"){u=l;break}if(l.type==="gfmFootnoteCall"||l.type==="labelLink"||l.type==="label"||l.type==="image"||l.type==="link")break}return s;function s(l){if(!u||!u._balanced)return r(l);const c=xt(n.sliceSerialize({start:u.end,end:n.now()}));return c.codePointAt(0)!==94||!i.includes(c.slice(1))?r(l):(e.enter("gfmFootnoteCallLabelMarker"),e.consume(l),e.exit("gfmFootnoteCallLabelMarker"),t(l))}}function Y2(e,t){let r=e.length;for(;r--;)if(e[r][1].type==="labelImage"&&e[r][0]==="enter"){e[r][1];break}e[r+1][1].type="data",e[r+3][1].type="gfmFootnoteCallLabelMarker";const n={type:"gfmFootnoteCall",start:Object.assign({},e[r+3][1].start),end:Object.assign({},e[e.length-1][1].end)},a={type:"gfmFootnoteCallMarker",start:Object.assign({},e[r+3][1].end),end:Object.assign({},e[r+3][1].end)};a.end.column++,a.end.offset++,a.end._bufferIndex++;const i={type:"gfmFootnoteCallString",start:Object.assign({},a.end),end:Object.assign({},e[e.length-1][1].start)},u={type:"chunkString",contentType:"string",start:Object.assign({},i.start),end:Object.assign({},i.end)},s=[e[r+1],e[r+2],["enter",n,t],e[r+3],e[r+4],["enter",a,t],["exit",a,t],["enter",i,t],["enter",u,t],["exit",u,t],["exit",i,t],e[e.length-2],e[e.length-1],["exit",n,t]];return e.splice(r,e.length-r+1,...s),e}function G2(e,t,r){const n=this,a=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]);let i=0,u;return s;function s(f){return e.enter("gfmFootnoteCall"),e.enter("gfmFootnoteCallLabelMarker"),e.consume(f),e.exit("gfmFootnoteCallLabelMarker"),l}function l(f){return f!==94?r(f):(e.enter("gfmFootnoteCallMarker"),e.consume(f),e.exit("gfmFootnoteCallMarker"),e.enter("gfmFootnoteCallString"),e.enter("chunkString").contentType="string",c)}function c(f){if(i>999||f===93&&!u||f===null||f===91||ve(f))return r(f);if(f===93){e.exit("chunkString");const g=e.exit("gfmFootnoteCallString");return a.includes(xt(n.sliceSerialize(g)))?(e.enter("gfmFootnoteCallLabelMarker"),e.consume(f),e.exit("gfmFootnoteCallLabelMarker"),e.exit("gfmFootnoteCall"),t):r(f)}return ve(f)||(u=!0),i++,e.consume(f),f===92?d:c}function d(f){return f===91||f===92||f===93?(e.consume(f),i++,c):c(f)}}function V2(e,t,r){const n=this,a=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]);let i,u=0,s;return l;function l(x){return e.enter("gfmFootnoteDefinition")._container=!0,e.enter("gfmFootnoteDefinitionLabel"),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(x),e.exit("gfmFootnoteDefinitionLabelMarker"),c}function c(x){return x===94?(e.enter("gfmFootnoteDefinitionMarker"),e.consume(x),e.exit("gfmFootnoteDefinitionMarker"),e.enter("gfmFootnoteDefinitionLabelString"),e.enter("chunkString").contentType="string",d):r(x)}function d(x){if(u>999||x===93&&!s||x===null||x===91||ve(x))return r(x);if(x===93){e.exit("chunkString");const S=e.exit("gfmFootnoteDefinitionLabelString");return i=xt(n.sliceSerialize(S)),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(x),e.exit("gfmFootnoteDefinitionLabelMarker"),e.exit("gfmFootnoteDefinitionLabel"),g}return ve(x)||(s=!0),u++,e.consume(x),x===92?f:d}function f(x){return x===91||x===92||x===93?(e.consume(x),u++,d):d(x)}function g(x){return x===58?(e.enter("definitionMarker"),e.consume(x),e.exit("definitionMarker"),a.includes(i)||a.push(i),fe(e,p,"gfmFootnoteDefinitionWhitespace")):r(x)}function p(x){return t(x)}}function j2(e,t,r){return e.check(yn,t,e.attempt(z2,t,r))}function W2(e){e.exit("gfmFootnoteDefinition")}function X2(e,t,r){const n=this;return fe(e,a,"gfmFootnoteDefinitionIndent",5);function a(i){const u=n.events[n.events.length-1];return u&&u[1].type==="gfmFootnoteDefinitionIndent"&&u[2].sliceSerialize(u[1],!0).length===4?t(i):r(i)}}function $2(e){let r=(e||{}).singleTilde;const n={name:"strikethrough",tokenize:i,resolveAll:a};return r==null&&(r=!0),{text:{126:n},insideSpan:{null:[n]},attentionMarkers:{null:[126]}};function a(u,s){let l=-1;for(;++l1?l(x):(u.consume(x),f++,p);if(f<2&&!r)return l(x);const D=u.exit("strikethroughSequenceTemporary"),_=Ir(x);return D._open=!_||_===2&&!!S,D._close=!S||S===2&&!!_,s(x)}}}class Q2{constructor(){this.map=[]}add(t,r,n){K2(this,t,r,n)}consume(t){if(this.map.sort(function(i,u){return i[0]-u[0]}),this.map.length===0)return;let r=this.map.length;const n=[];for(;r>0;)r-=1,n.push(t.slice(this.map[r][0]+this.map[r][1]),this.map[r][2]),t.length=this.map[r][0];n.push(t.slice()),t.length=0;let a=n.pop();for(;a;){for(const i of a)t.push(i);a=n.pop()}this.map.length=0}}function K2(e,t,r,n){let a=0;if(!(r===0&&n.length===0)){for(;a-1;){const ne=n.events[J][1].type;if(ne==="lineEnding"||ne==="linePrefix")J--;else break}const Q=J>-1?n.events[J][1].type:null,be=Q==="tableHead"||Q==="tableRow"?L:l;return be===L&&n.parser.lazy[n.now().line]?r(R):be(R)}function l(R){return e.enter("tableHead"),e.enter("tableRow"),c(R)}function c(R){return R===124||(u=!0,i+=1),d(R)}function d(R){return R===null?r(R):ae(R)?i>1?(i=0,n.interrupt=!0,e.exit("tableRow"),e.enter("lineEnding"),e.consume(R),e.exit("lineEnding"),p):r(R):ge(R)?fe(e,d,"whitespace")(R):(i+=1,u&&(u=!1,a+=1),R===124?(e.enter("tableCellDivider"),e.consume(R),e.exit("tableCellDivider"),u=!0,d):(e.enter("data"),f(R)))}function f(R){return R===null||R===124||ve(R)?(e.exit("data"),d(R)):(e.consume(R),R===92?g:f)}function g(R){return R===92||R===124?(e.consume(R),f):f(R)}function p(R){return n.interrupt=!1,n.parser.lazy[n.now().line]?r(R):(e.enter("tableDelimiterRow"),u=!1,ge(R)?fe(e,x,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(R):x(R))}function x(R){return R===45||R===58?D(R):R===124?(u=!0,e.enter("tableCellDivider"),e.consume(R),e.exit("tableCellDivider"),S):j(R)}function S(R){return ge(R)?fe(e,D,"whitespace")(R):D(R)}function D(R){return R===58?(i+=1,u=!0,e.enter("tableDelimiterMarker"),e.consume(R),e.exit("tableDelimiterMarker"),_):R===45?(i+=1,_(R)):R===null||ae(R)?W(R):j(R)}function _(R){return R===45?(e.enter("tableDelimiterFiller"),N(R)):j(R)}function N(R){return R===45?(e.consume(R),N):R===58?(u=!0,e.exit("tableDelimiterFiller"),e.enter("tableDelimiterMarker"),e.consume(R),e.exit("tableDelimiterMarker"),M):(e.exit("tableDelimiterFiller"),M(R))}function M(R){return ge(R)?fe(e,W,"whitespace")(R):W(R)}function W(R){return R===124?x(R):R===null||ae(R)?!u||a!==i?j(R):(e.exit("tableDelimiterRow"),e.exit("tableHead"),t(R)):j(R)}function j(R){return r(R)}function L(R){return e.enter("tableRow"),ee(R)}function ee(R){return R===124?(e.enter("tableCellDivider"),e.consume(R),e.exit("tableCellDivider"),ee):R===null||ae(R)?(e.exit("tableRow"),t(R)):ge(R)?fe(e,ee,"whitespace")(R):(e.enter("data"),re(R))}function re(R){return R===null||R===124||ve(R)?(e.exit("data"),ee(R)):(e.consume(R),R===92?K:re)}function K(R){return R===92||R===124?(e.consume(R),re):re(R)}}function t4(e,t){let r=-1,n=!0,a=0,i=[0,0,0,0],u=[0,0,0,0],s=!1,l=0,c,d,f;const g=new Q2;for(;++rr[2]+1){const x=r[2]+1,S=r[3]-r[2]-1;e.add(x,S,[])}}e.add(r[3]+1,0,[["exit",f,t]])}return a!==void 0&&(i.end=Object.assign({},wr(t.events,a)),e.add(a,0,[["exit",i,t]]),i=void 0),i}function Nu(e,t,r,n,a){const i=[],u=wr(t.events,r);a&&(a.end=Object.assign({},u),i.push(["exit",a,t])),n.end=Object.assign({},u),i.push(["exit",n,t]),e.add(r+1,0,i)}function wr(e,t){const r=e[t],n=r[0]==="enter"?"start":"end";return r[1][n]}const r4={name:"tasklistCheck",tokenize:a4};function n4(){return{text:{91:r4}}}function a4(e,t,r){const n=this;return a;function a(l){return n.previous!==null||!n._gfmTasklistFirstContentOfListItem?r(l):(e.enter("taskListCheck"),e.enter("taskListCheckMarker"),e.consume(l),e.exit("taskListCheckMarker"),i)}function i(l){return ve(l)?(e.enter("taskListCheckValueUnchecked"),e.consume(l),e.exit("taskListCheckValueUnchecked"),u):l===88||l===120?(e.enter("taskListCheckValueChecked"),e.consume(l),e.exit("taskListCheckValueChecked"),u):r(l)}function u(l){return l===93?(e.enter("taskListCheckMarker"),e.consume(l),e.exit("taskListCheckMarker"),e.exit("taskListCheck"),s):r(l)}function s(l){return ae(l)?t(l):ge(l)?e.check({tokenize:i4},t,r)(l):r(l)}}function i4(e,t,r){return fe(e,n,"whitespace");function n(a){return a===null?r(a):t(a)}}function u4(e){return rl([D2(),U2(),$2(e),Z2(),n4()])}const s4={};function l4(e){const t=this,r=e||s4,n=t.data(),a=n.micromarkExtensions||(n.micromarkExtensions=[]),i=n.fromMarkdownExtensions||(n.fromMarkdownExtensions=[]),u=n.toMarkdownExtensions||(n.toMarkdownExtensions=[]);a.push(u4(r)),i.push(C2()),u.push(_2(r))}function o4(){return{enter:{mathFlow:e,mathFlowFenceMeta:t,mathText:i},exit:{mathFlow:a,mathFlowFence:n,mathFlowFenceMeta:r,mathFlowValue:s,mathText:u,mathTextData:s}};function e(l){const c={type:"element",tagName:"code",properties:{className:["language-math","math-display"]},children:[]};this.enter({type:"math",meta:null,value:"",data:{hName:"pre",hChildren:[c]}},l)}function t(){this.buffer()}function r(){const l=this.resume(),c=this.stack[this.stack.length-1];c.type,c.meta=l}function n(){this.data.mathFlowInside||(this.buffer(),this.data.mathFlowInside=!0)}function a(l){const c=this.resume().replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,""),d=this.stack[this.stack.length-1];d.type,this.exit(l),d.value=c;const f=d.data.hChildren[0];f.type,f.tagName,f.children.push({type:"text",value:c}),this.data.mathFlowInside=void 0}function i(l){this.enter({type:"inlineMath",value:"",data:{hName:"code",hProperties:{className:["language-math","math-inline"]},hChildren:[]}},l),this.buffer()}function u(l){const c=this.resume(),d=this.stack[this.stack.length-1];d.type,this.exit(l),d.value=c,d.data.hChildren.push({type:"text",value:c})}function s(l){this.config.enter.data.call(this,l),this.config.exit.data.call(this,l)}}function c4(e){let t=(e||{}).singleDollarTextMath;return t==null&&(t=!0),n.peek=a,{unsafe:[{character:"\r",inConstruct:"mathFlowMeta"},{character:` -`,inConstruct:"mathFlowMeta"},{character:"$",after:t?void 0:"\\$",inConstruct:"phrasing"},{character:"$",inConstruct:"mathFlowMeta"},{atBreak:!0,character:"$",after:"\\$"}],handlers:{math:r,inlineMath:n}};function r(i,u,s,l){const c=i.value||"",d=s.createTracker(l),f="$".repeat(Math.max(Il(c,"$")+1,2)),g=s.enter("mathFlow");let p=d.move(f);if(i.meta){const x=s.enter("mathFlowMeta");p+=d.move(s.safe(i.meta,{after:` -`,before:p,encode:["$"],...d.current()})),x()}return p+=d.move(` -`),c&&(p+=d.move(c+` -`)),p+=d.move(f),g(),p}function n(i,u,s){let l=i.value||"",c=1;for(t||c++;new RegExp("(^|[^$])"+"\\$".repeat(c)+"([^$]|$)").test(l);)c++;const d="$".repeat(c);/[^ \r\n]/.test(l)&&(/^[ \r\n]/.test(l)&&/[ \r\n]$/.test(l)||/^\$|\$$/.test(l))&&(l=" "+l+" ");let f=-1;for(;++f15?c="…"+s.slice(a-15,a):c=s.slice(0,a);var d;i+15e.replace(E4,"-$1").toLowerCase(),x4={"&":"&",">":">","<":"<",'"':""","'":"'"},y4=/[&><"']/g,Ve=e=>String(e).replace(y4,t=>x4[t]),$n=e=>e.type==="ordgroup"||e.type==="color"?e.body.length===1?$n(e.body[0]):e:e.type==="font"?$n(e.body):e,v4=new Set(["mathord","textord","atom"]),qt=e=>v4.has($n(e).type),A4=e=>{var t=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return t?t[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(t[1])?null:t[1].toLowerCase():"_relative"},_a={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:e=>"#"+e},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(e,t)=>(t.push(e),t)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:e=>Math.max(0,e),cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:e=>Math.max(0,e),cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:e=>Math.max(0,e),cli:"-e, --max-expand ",cliProcessor:e=>e==="Infinity"?1/0:parseInt(e)},globalGroup:{type:"boolean",cli:!1}};function k4(e){if(typeof e!="string")return e.enum[0];switch(e){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{};default:throw new Error("Unexpected schema type; settings must declare an explicit default.")}}function S4(e){if(e.default!==void 0)return e.default;var t=Array.isArray(e.type)?e.type[0]:e.type;return k4(t)}function w4(e,t,r,n){var a=r[t];e[t]=a!==void 0?n.processor?n.processor(a):a:S4(n)}class pi{constructor(t){t===void 0&&(t={}),this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,t=t||{};for(var r of Object.keys(_a)){var n=_a[r];n&&w4(this,r,t,n)}}reportNonstrict(t,r,n){var a=this.strict;if(typeof a=="function"&&(a=a(t,r,n)),!(!a||a==="ignore")){if(a===!0||a==="error")throw new Y("LaTeX-incompatible input and strict mode is set to 'error': "+(r+" ["+t+"]"),n);a==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+t+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+a+"': "+r+" ["+t+"]"))}}useStrictBehavior(t,r,n){var a=this.strict;if(typeof a=="function")try{a=a(t,r,n)}catch{a="error"}return!a||a==="ignore"?!1:a===!0||a==="error"?!0:a==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+t+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+a+"': "+r+" ["+t+"]")),!1)}isTrusted(t){if("url"in t&&t.url&&!t.protocol){var r=A4(t.url);if(r==null)return!1;t.protocol=r}var n=typeof this.trust=="function"?this.trust(t):this.trust;return!!n}}class jt{constructor(t,r,n){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=t,this.size=r,this.cramped=n}sup(){return kt[C4[this.id]]}sub(){return kt[_4[this.id]]}fracNum(){return kt[I4[this.id]]}fracDen(){return kt[N4[this.id]]}cramp(){return kt[D4[this.id]]}text(){return kt[O4[this.id]]}isTight(){return this.size>=2}}var gi=0,r0=1,_r=2,Ht=3,gn=4,gt=5,Dr=6,Je=7,kt=[new jt(gi,0,!1),new jt(r0,0,!0),new jt(_r,1,!1),new jt(Ht,1,!0),new jt(gn,2,!1),new jt(gt,2,!0),new jt(Dr,3,!1),new jt(Je,3,!0)],C4=[gn,gt,gn,gt,Dr,Je,Dr,Je],_4=[gt,gt,gt,gt,Je,Je,Je,Je],I4=[_r,Ht,gn,gt,Dr,Je,Dr,Je],N4=[Ht,Ht,gt,gt,Je,Je,Je,Je],D4=[r0,r0,Ht,Ht,gt,gt,Je,Je],O4=[gi,r0,_r,Ht,_r,Ht,_r,Ht],oe={DISPLAY:kt[gi],TEXT:kt[_r],SCRIPT:kt[gn],SCRIPTSCRIPT:kt[Dr]},Ia=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];function L4(e){for(var t=0;t=a[0]&&e<=a[1])return r.name}return null}var Qn=[];Ia.forEach(e=>e.blocks.forEach(t=>Qn.push(...t)));function $l(e){for(var t=0;t=Qn[t]&&e<=Qn[t+1])return!0;return!1}var Fe=e=>e+" "+e,kr=80,R4=function(t,r){return"M95,"+(622+t+r)+` -c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14 -c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54 -c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10 -s173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429 -c69,-144,104.5,-217.7,106.5,-221 -l`+t/2.075+" -"+t+` -c5.3,-9.3,12,-14,20,-14 -H400000v`+(40+t)+`H845.2724 -s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7 -c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z -M`+(834+t)+" "+r+"h400000v"+(40+t)+"h-400000z"},M4=function(t,r){return"M263,"+(601+t+r)+`c0.7,0,18,39.7,52,119 -c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120 -c340,-704.7,510.7,-1060.3,512,-1067 -l`+t/2.084+" -"+t+` -c4.7,-7.3,11,-11,19,-11 -H40000v`+(40+t)+`H1012.3 -s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232 -c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1 -s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26 -c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z -M`+(1001+t)+" "+r+"h400000v"+(40+t)+"h-400000z"},P4=function(t,r){return"M983 "+(10+t+r)+` -l`+t/3.13+" -"+t+` -c4,-6.7,10,-10,18,-10 H400000v`+(40+t)+` -H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7 -s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744 -c-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30 -c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722 -c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5 -c53.7,-170.3,84.5,-266.8,92.5,-289.5z -M`+(1001+t)+" "+r+"h400000v"+(40+t)+"h-400000z"},B4=function(t,r){return"M424,"+(2398+t+r)+` -c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514 -c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20 -s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121 -s209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081 -l`+t/4.223+" -"+t+`c4,-6.7,10,-10,18,-10 H400000 -v`+(40+t)+`H1014.6 -s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185 -c-2,6,-10,9,-24,9 -c-8,0,-12,-0.7,-12,-2z M`+(1001+t)+" "+r+` -h400000v`+(40+t)+"h-400000z"},F4=function(t,r){return"M473,"+(2713+t+r)+` -c339.3,-1799.3,509.3,-2700,510,-2702 l`+t/5.298+" -"+t+` -c3.3,-7.3,9.3,-11,18,-11 H400000v`+(40+t)+`H1017.7 -s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9 -c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200 -c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26 -s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104, -606zM`+(1001+t)+" "+r+"h400000v"+(40+t)+"H1017.7z"},H4=function(t){var r=t/2;return"M400000 "+t+" H0 L"+r+" 0 l65 45 L145 "+(t-80)+" H400000z"},z4=function(t,r,n){var a=n-54-r-t;return"M702 "+(t+r)+"H400000"+(40+t)+` -H742v`+a+`l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1 -h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170 -c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667 -219 661 l218 661zM702 `+r+"H400000v"+(40+t)+"H742z"},U4=function(t,r,n){r=1e3*r;var a="";switch(t){case"sqrtMain":a=R4(r,kr);break;case"sqrtSize1":a=M4(r,kr);break;case"sqrtSize2":a=P4(r,kr);break;case"sqrtSize3":a=B4(r,kr);break;case"sqrtSize4":a=F4(r,kr);break;case"sqrtTall":a=z4(r,kr,n)}return a},q4=function(t,r){switch(t){case"⎜":return Fe("M291 0 H417 V"+r+" H291z");case"∣":return Fe("M145 0 H188 V"+r+" H145z");case"∥":return Fe("M145 0 H188 V"+r+" H145z")+Fe("M367 0 H410 V"+r+" H367z");case"⎟":return Fe("M457 0 H583 V"+r+" H457z");case"⎢":return Fe("M319 0 H403 V"+r+" H319z");case"⎥":return Fe("M263 0 H347 V"+r+" H263z");case"⎪":return Fe("M384 0 H504 V"+r+" H384z");case"⏐":return Fe("M312 0 H355 V"+r+" H312z");case"‖":return Fe("M257 0 H300 V"+r+" H257z")+Fe("M478 0 H521 V"+r+" H478z");default:return""}},Ou={doubleleftarrow:`M262 157 -l10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3 - 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28 - 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5 -c2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5 - 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87 --86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7 --2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z -m8 0v40h399730v-40zm0 194v40h399730v-40z`,doublerightarrow:`M399738 392l --10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5 - 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88 --33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68 --17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18 --13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782 -c-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3 --107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z`,leftarrow:`M400000 241H110l3-3c68.7-52.7 113.7-120 - 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8 --5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247 -c-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208 - 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3 - 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202 - l-3-3h399890zM100 241v40h399900v-40z`,leftbrace:`M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117 --45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7 - 5-6 9-10 13-.7 1-7.3 1-20 1H6z`,leftbraceunder:`M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13 - 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688 - 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7 --331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z`,leftgroup:`M400000 80 -H435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0 - 435 0h399565z`,leftgroupunder:`M400000 262 -H435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219 - 435 219h399565z`,leftharpoon:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3 --3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5 --18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7 --196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z`,leftharpoonplus:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5 - 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3 --4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7 --10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z -m0 0v40h400000v-40z`,leftharpoondown:`M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333 - 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5 - 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667 --152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z`,leftharpoondownplus:`M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12 - 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7 --2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0 -v40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z`,lefthook:`M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5 --83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3 --68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21 - 71.5 23h399859zM103 281v-40h399897v40z`,leftlinesegment:Fe("M40 281 V428 H0 V94 H40 V241 H400000 v40z"),leftbracketunder:Fe("M0 0 h120 V290 H399995 v120 H0z"),leftbracketover:Fe("M0 440 h120 V150 H399995 v-120 H0z"),leftmapsto:Fe("M40 281 V448H0V74H40V241H400000v40z"),leftToFrom:`M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23 --.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8 -c28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3 - 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z`,longequal:Fe("M0 50 h400000 v40H0z m0 194h40000v40H0z"),midbrace:`M200428 334 -c-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14 --53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7 - 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11 - 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z`,midbraceunder:`M199572 214 -c100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14 - 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3 - 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0 --5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z`,oiintSize1:`M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6 --320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z -m368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8 -60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z`,oiintSize2:`M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8 --451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z -m502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2 -c0 110 84 276 504 276s502.4-166 502.4-276z`,oiiintSize1:`M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6 --480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z -m525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0 -85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z`,oiiintSize2:`M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8 --707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z -m770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1 -c0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z`,rightarrow:`M0 241v40h399891c-47.3 35.3-84 78-110 128 --16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 - 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 - 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85 --40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 --12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 - 151.7 139 205zm0 0v40h399900v-40z`,rightbrace:`M400000 542l --6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5 -s-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1 -c124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z`,rightbraceunder:`M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3 - 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237 --174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z`,rightgroup:`M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0 - 3-1 3-3v-38c-76-158-257-219-435-219H0z`,rightgroupunder:`M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18 - 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z`,rightharpoon:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3 --3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2 --10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 - 69.2 92 94.5zm0 0v40h399900v-40z`,rightharpoonplus:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11 --18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7 - 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z -m0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z`,rightharpoondown:`M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8 - 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5 --7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95 --27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z`,rightharpoondownplus:`M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8 - 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 - 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3 --64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z -m0-194v40h400000v-40zm0 0v40h400000v-40z`,righthook:`M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3 - 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0 --13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21 - 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z`,rightlinesegment:Fe("M399960 241 V94 h40 V428 h-40 V281 H0 v-40z"),rightbracketunder:Fe("M399995 0 h-120 V290 H0 v120 H400000z"),rightbracketover:Fe("M399995 440 h-120 V150 H0 v-120 H399995z"),rightToFrom:`M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23 - 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32 --52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142 --167z M100 147v40h399900v-40zM0 341v40h399900v-40z`,twoheadleftarrow:`M0 167c68 40 - 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69 --70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3 --40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19 --37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101 - 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z`,twoheadrightarrow:`M400000 167 -c-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3 - 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42 - 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333 --19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70 - 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z`,tilde1:`M200 55.538c-77 0-168 73.953-177 73.953-3 0-7 --2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0 - 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0 - 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128 --68.267.847-113-73.952-191-73.952z`,tilde2:`M344 55.266c-142 0-300.638 81.316-311.5 86.418 --8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9 - 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114 -c1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751 - 181.476 676 181.476c-149 0-189-126.21-332-126.21z`,tilde3:`M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457 --11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0 - 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697 - 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696 - -338 0-409-156.573-744-156.573z`,tilde4:`M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345 --11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409 - 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9 - 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409 - -175.236-744-175.236z`,vec:`M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5 -3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11 -10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63 --1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1 --7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59 -H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359 -c-16-25.333-24-45-24-59z`,widehat1:`M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22 -c-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z`,widehat2:`M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10 --11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat3:`M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10 --11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat4:`M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10 --11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widecheck1:`M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1, --5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z`,widecheck2:`M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, --11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck3:`M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, --11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck4:`M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, --11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,baraboveleftarrow:`M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202 -c4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5 -c-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130 -s-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47 -121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6 -s2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11 -c0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z -M100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z`,rightarrowabovebar:`M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32 --27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0 -13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39 --84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5 --119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 --12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 -151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z`,baraboveshortleftharpoon:`M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 -c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17 -c2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21 -c-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40 -c-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z -M0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z`,rightharpoonaboveshortbar:`M0,241 l0,40c399126,0,399993,0,399993,0 -c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, --231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 -c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z -M0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z`,shortbaraboveleftharpoon:`M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 -c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9, -1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7, --152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z -M93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z`,shortrightharpoonabovebar:`M53,241l0,40c398570,0,399437,0,399437,0 -c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, --231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 -c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z -M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`},Y4=function(t,r){switch(t){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v1759 v84 h347 v-84 -H403z M403 1759 V0 H319 V1759 v`+r+" v1759 v84 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+r+` v1759 H0 v84 H347z -M347 1759 V0 H263 V1759 v`+r+" v1759 h84z";case"vert":return"M145 15 v585 v"+r+` v585 c2.667,10,9.667,15,21,15 -c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 -c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+r+" v585 h43z";case"doublevert":return"M145 15 v585 v"+r+` v585 c2.667,10,9.667,15,21,15 -c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 -c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+r+` v585 h43z -M367 15 v585 v`+r+` v585 c2.667,10,9.667,15,21,15 -c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 -c-10,0,-16.667,5,-20,15z M410 15 H367 v585 v`+r+" v585 h43z";case"lfloor":return"M319 602 V0 H403 V602 v"+r+` v1715 h263 v84 H319z -MM319 602 V0 H403 V602 v`+r+" v1715 H319z";case"rfloor":return"M319 602 V0 H403 V602 v"+r+` v1799 H0 v-84 H319z -MM319 602 V0 H403 V602 v`+r+" v1715 H319z";case"lceil":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v602 h84z -M403 1759 V0 H319 V1759 v`+r+" v602 h84z";case"rceil":return"M347 1759 V0 H0 V84 H263 V1759 v"+r+` v602 h84z -M347 1759 V0 h-84 V1759 v`+r+" v602 h84z";case"lparen":return`M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1 -c-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349, --36,557 l0,`+(r+84)+`c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210, -949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9 -c0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5, --544.7,-112.5,-882c-2,-104,-3,-167,-3,-189 -l0,-`+(r+92)+`c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3, --210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z`;case"rparen":return`M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3, -63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5 -c11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,`+(r+9)+` -c-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664 -c-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11 -c0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17 -c242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558 -l0,-`+(r+144)+`c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7, --470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`;default:throw new Error("Unknown stretchy delimiter.")}};function G4(e){return"toText"in e}class Br{constructor(t){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=t,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(t){return this.classes.includes(t)}toNode(){for(var t=document.createDocumentFragment(),r=0;r{if(G4(t))return t.toText();throw new Error("Expected MathDomNode with toText, got "+t.constructor.name)}).join("")}}var Na={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800},V4={ex:!0,em:!0,mu:!0},Ql=function(t){return typeof t!="string"&&(t=t.unit),t in Na||t in V4||t==="ex"},Ie=function(t,r){var n;if(t.unit in Na)n=Na[t.unit]/r.fontMetrics().ptPerEm/r.sizeMultiplier;else if(t.unit==="mu")n=r.fontMetrics().cssEmPerMu;else{var a;if(r.style.isTight()?a=r.havingStyle(r.style.text()):a=r,t.unit==="ex")n=a.fontMetrics().xHeight;else if(t.unit==="em")n=a.fontMetrics().quad;else throw new Y("Invalid unit: '"+t.unit+"'");a!==r&&(n*=a.sizeMultiplier/r.sizeMultiplier)}return Math.min(t.number*n,r.maxSize)},V=function(t){return+t.toFixed(4)+"em"},Jt=function(t){return t.filter(r=>r).join(" ")},bi=function(t){var r="";for(var n of Object.keys(t)){var a=t[n];a!==void 0&&(r+=T4(n)+":"+a+";")}return r},Kl=function(t,r,n){if(this.classes=t||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=n||{},r){r.style.isTight()&&this.classes.push("mtight");var a=r.getColor();a&&(this.style.color=a)}},Jl=function(t){var r=document.createElement(t);r.className=Jt(this.classes),Object.assign(r.style,this.style);for(var n of Object.keys(this.attributes))r.setAttribute(n,this.attributes[n]);for(var a=0;a/=\x00-\x1f]/,Zl=function(t){var r="<"+t;this.classes.length&&(r+=' class="'+Ve(Jt(this.classes))+'"');var n=bi(this.style);n&&(r+=' style="'+Ve(n)+'"');for(var a of Object.keys(this.attributes)){if(j4.test(a))throw new Y("Invalid attribute name '"+a+"'");r+=" "+a+'="'+Ve(this.attributes[a])+'"'}r+=">";for(var i=0;i",r};class Fr{constructor(t,r,n,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,this.italic=void 0,Kl.call(this,t,n,a),this.children=r||[]}setAttribute(t,r){this.attributes[t]=r}hasClass(t){return this.classes.includes(t)}toNode(){return Jl.call(this,"span")}toMarkup(){return Zl.call(this,"span")}}class E0{constructor(t,r,n,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,Kl.call(this,r,a),this.children=n||[],this.setAttribute("href",t)}setAttribute(t,r){this.attributes[t]=r}hasClass(t){return this.classes.includes(t)}toNode(){return Jl.call(this,"a")}toMarkup(){return Zl.call(this,"a")}}class W4{constructor(t,r,n){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=r,this.src=t,this.classes=["mord"],this.height=0,this.depth=0,this.maxFontSize=0,this.style=n}hasClass(t){return this.classes.includes(t)}toNode(){var t=document.createElement("img");return t.src=this.src,t.alt=this.alt,t.className="mord",Object.assign(t.style,this.style),t}toMarkup(){var t=''+Ve(this.alt)+'0&&(r=document.createElement("span"),r.style.marginRight=V(this.italic)),this.classes.length>0&&(r=r||document.createElement("span"),r.className=Jt(this.classes)),Object.keys(this.style).length>0&&(r=r||document.createElement("span"),Object.assign(r.style,this.style)),r?(r.appendChild(t),r):t}toMarkup(){var t=!1,r="0&&(n+="margin-right:"+V(this.italic)+";"),n+=bi(this.style),n&&(t=!0,r+=' style="'+Ve(n)+'"');var a=Ve(this.text);return t?(r+=">",r+=a,r+="",r):a}}class zt{constructor(t,r){this.children=void 0,this.attributes=void 0,this.children=t||[],this.attributes=r||{}}toNode(){var t="http://www.w3.org/2000/svg",r=document.createElementNS(t,"svg");for(var n of Object.keys(this.attributes))r.setAttribute(n,this.attributes[n]);for(var a=0;a':''}}class Da{constructor(t){this.attributes=void 0,this.attributes=t||{}}toNode(){var t="http://www.w3.org/2000/svg",r=document.createElementNS(t,"line");for(var n of Object.keys(this.attributes))r.setAttribute(n,this.attributes[n]);return r}toMarkup(){var t=" but got "+String(e)+".")}var K4=e=>e instanceof Fr||e instanceof E0||e instanceof Br,wt={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},Hn={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},Lu={Å:"A",Ð:"D",Þ:"o",å:"a",ð:"d",þ:"o",А:"A",Б:"B",В:"B",Г:"F",Д:"A",Е:"E",Ж:"K",З:"3",И:"N",Й:"N",К:"K",Л:"N",М:"M",Н:"H",О:"O",П:"N",Р:"P",С:"C",Т:"T",У:"y",Ф:"O",Х:"X",Ц:"U",Ч:"h",Ш:"W",Щ:"W",Ъ:"B",Ы:"X",Ь:"B",Э:"3",Ю:"X",Я:"R",а:"a",б:"b",в:"a",г:"r",д:"y",е:"e",ж:"m",з:"e",и:"n",й:"n",к:"n",л:"n",м:"m",н:"n",о:"o",п:"n",р:"p",с:"c",т:"o",у:"y",ф:"b",х:"x",ц:"n",ч:"n",ш:"w",щ:"w",ъ:"a",ы:"m",ь:"a",э:"e",ю:"m",я:"r"};function J4(e,t){wt[e]=t}function Ei(e,t,r){if(!wt[t])throw new Error("Font metrics not found for font: "+t+".");var n=e.charCodeAt(0),a=wt[t][n];if(!a&&e[0]in Lu&&(n=Lu[e[0]].charCodeAt(0),a=wt[t][n]),!a&&r==="text"&&$l(n)&&(a=wt[t][77]),a)return{depth:a[0],height:a[1],italic:a[2],skew:a[3],width:a[4]}}var ea={};function Z4(e){var t;if(e>=5?t=0:e>=3?t=1:t=2,!ea[t]){var r=ea[t]={cssEmPerMu:Hn.quad[t]/18};for(var n in Hn)Hn.hasOwnProperty(n)&&(r[n]=Hn[n][t])}return ea[t]}var we={math:{},text:{}};function h(e,t,r,n,a,i){we[e][a]={font:t,group:r,replace:n},i&&n&&(we[e][n]=we[e][a])}var m="math",F="text",b="main",v="ams",Ce="accent-token",te="bin",Ze="close",Hr="inner",ie="mathord",Pe="op-token",ht="open",kn="punct",A="rel",Yt="spacing",I="textord";h(m,b,A,"≡","\\equiv",!0);h(m,b,A,"≺","\\prec",!0);h(m,b,A,"≻","\\succ",!0);h(m,b,A,"∼","\\sim",!0);h(m,b,A,"⊥","\\perp");h(m,b,A,"⪯","\\preceq",!0);h(m,b,A,"⪰","\\succeq",!0);h(m,b,A,"≃","\\simeq",!0);h(m,b,A,"∣","\\mid",!0);h(m,b,A,"≪","\\ll",!0);h(m,b,A,"≫","\\gg",!0);h(m,b,A,"≍","\\asymp",!0);h(m,b,A,"∥","\\parallel");h(m,b,A,"⋈","\\bowtie",!0);h(m,b,A,"⌣","\\smile",!0);h(m,b,A,"⊑","\\sqsubseteq",!0);h(m,b,A,"⊒","\\sqsupseteq",!0);h(m,b,A,"≐","\\doteq",!0);h(m,b,A,"⌢","\\frown",!0);h(m,b,A,"∋","\\ni",!0);h(m,b,A,"∝","\\propto",!0);h(m,b,A,"⊢","\\vdash",!0);h(m,b,A,"⊣","\\dashv",!0);h(m,b,A,"∋","\\owns");h(m,b,kn,".","\\ldotp");h(m,b,kn,"⋅","\\cdotp");h(m,b,kn,"⋅","·");h(F,b,I,"⋅","·");h(m,b,I,"#","\\#");h(F,b,I,"#","\\#");h(m,b,I,"&","\\&");h(F,b,I,"&","\\&");h(m,b,I,"ℵ","\\aleph",!0);h(m,b,I,"∀","\\forall",!0);h(m,b,I,"ℏ","\\hbar",!0);h(m,b,I,"∃","\\exists",!0);h(m,b,I,"∇","\\nabla",!0);h(m,b,I,"♭","\\flat",!0);h(m,b,I,"ℓ","\\ell",!0);h(m,b,I,"♮","\\natural",!0);h(m,b,I,"♣","\\clubsuit",!0);h(m,b,I,"℘","\\wp",!0);h(m,b,I,"♯","\\sharp",!0);h(m,b,I,"♢","\\diamondsuit",!0);h(m,b,I,"ℜ","\\Re",!0);h(m,b,I,"♡","\\heartsuit",!0);h(m,b,I,"ℑ","\\Im",!0);h(m,b,I,"♠","\\spadesuit",!0);h(m,b,I,"§","\\S",!0);h(F,b,I,"§","\\S");h(m,b,I,"¶","\\P",!0);h(F,b,I,"¶","\\P");h(m,b,I,"†","\\dag");h(F,b,I,"†","\\dag");h(F,b,I,"†","\\textdagger");h(m,b,I,"‡","\\ddag");h(F,b,I,"‡","\\ddag");h(F,b,I,"‡","\\textdaggerdbl");h(m,b,Ze,"⎱","\\rmoustache",!0);h(m,b,ht,"⎰","\\lmoustache",!0);h(m,b,Ze,"⟯","\\rgroup",!0);h(m,b,ht,"⟮","\\lgroup",!0);h(m,b,te,"∓","\\mp",!0);h(m,b,te,"⊖","\\ominus",!0);h(m,b,te,"⊎","\\uplus",!0);h(m,b,te,"⊓","\\sqcap",!0);h(m,b,te,"∗","\\ast");h(m,b,te,"⊔","\\sqcup",!0);h(m,b,te,"◯","\\bigcirc",!0);h(m,b,te,"∙","\\bullet",!0);h(m,b,te,"‡","\\ddagger");h(m,b,te,"≀","\\wr",!0);h(m,b,te,"⨿","\\amalg");h(m,b,te,"&","\\And");h(m,b,A,"⟵","\\longleftarrow",!0);h(m,b,A,"⇐","\\Leftarrow",!0);h(m,b,A,"⟸","\\Longleftarrow",!0);h(m,b,A,"⟶","\\longrightarrow",!0);h(m,b,A,"⇒","\\Rightarrow",!0);h(m,b,A,"⟹","\\Longrightarrow",!0);h(m,b,A,"↔","\\leftrightarrow",!0);h(m,b,A,"⟷","\\longleftrightarrow",!0);h(m,b,A,"⇔","\\Leftrightarrow",!0);h(m,b,A,"⟺","\\Longleftrightarrow",!0);h(m,b,A,"↦","\\mapsto",!0);h(m,b,A,"⟼","\\longmapsto",!0);h(m,b,A,"↗","\\nearrow",!0);h(m,b,A,"↩","\\hookleftarrow",!0);h(m,b,A,"↪","\\hookrightarrow",!0);h(m,b,A,"↘","\\searrow",!0);h(m,b,A,"↼","\\leftharpoonup",!0);h(m,b,A,"⇀","\\rightharpoonup",!0);h(m,b,A,"↙","\\swarrow",!0);h(m,b,A,"↽","\\leftharpoondown",!0);h(m,b,A,"⇁","\\rightharpoondown",!0);h(m,b,A,"↖","\\nwarrow",!0);h(m,b,A,"⇌","\\rightleftharpoons",!0);h(m,v,A,"≮","\\nless",!0);h(m,v,A,"","\\@nleqslant");h(m,v,A,"","\\@nleqq");h(m,v,A,"⪇","\\lneq",!0);h(m,v,A,"≨","\\lneqq",!0);h(m,v,A,"","\\@lvertneqq");h(m,v,A,"⋦","\\lnsim",!0);h(m,v,A,"⪉","\\lnapprox",!0);h(m,v,A,"⊀","\\nprec",!0);h(m,v,A,"⋠","\\npreceq",!0);h(m,v,A,"⋨","\\precnsim",!0);h(m,v,A,"⪹","\\precnapprox",!0);h(m,v,A,"≁","\\nsim",!0);h(m,v,A,"","\\@nshortmid");h(m,v,A,"∤","\\nmid",!0);h(m,v,A,"⊬","\\nvdash",!0);h(m,v,A,"⊭","\\nvDash",!0);h(m,v,A,"⋪","\\ntriangleleft");h(m,v,A,"⋬","\\ntrianglelefteq",!0);h(m,v,A,"⊊","\\subsetneq",!0);h(m,v,A,"","\\@varsubsetneq");h(m,v,A,"⫋","\\subsetneqq",!0);h(m,v,A,"","\\@varsubsetneqq");h(m,v,A,"≯","\\ngtr",!0);h(m,v,A,"","\\@ngeqslant");h(m,v,A,"","\\@ngeqq");h(m,v,A,"⪈","\\gneq",!0);h(m,v,A,"≩","\\gneqq",!0);h(m,v,A,"","\\@gvertneqq");h(m,v,A,"⋧","\\gnsim",!0);h(m,v,A,"⪊","\\gnapprox",!0);h(m,v,A,"⊁","\\nsucc",!0);h(m,v,A,"⋡","\\nsucceq",!0);h(m,v,A,"⋩","\\succnsim",!0);h(m,v,A,"⪺","\\succnapprox",!0);h(m,v,A,"≆","\\ncong",!0);h(m,v,A,"","\\@nshortparallel");h(m,v,A,"∦","\\nparallel",!0);h(m,v,A,"⊯","\\nVDash",!0);h(m,v,A,"⋫","\\ntriangleright");h(m,v,A,"⋭","\\ntrianglerighteq",!0);h(m,v,A,"","\\@nsupseteqq");h(m,v,A,"⊋","\\supsetneq",!0);h(m,v,A,"","\\@varsupsetneq");h(m,v,A,"⫌","\\supsetneqq",!0);h(m,v,A,"","\\@varsupsetneqq");h(m,v,A,"⊮","\\nVdash",!0);h(m,v,A,"⪵","\\precneqq",!0);h(m,v,A,"⪶","\\succneqq",!0);h(m,v,A,"","\\@nsubseteqq");h(m,v,te,"⊴","\\unlhd");h(m,v,te,"⊵","\\unrhd");h(m,v,A,"↚","\\nleftarrow",!0);h(m,v,A,"↛","\\nrightarrow",!0);h(m,v,A,"⇍","\\nLeftarrow",!0);h(m,v,A,"⇏","\\nRightarrow",!0);h(m,v,A,"↮","\\nleftrightarrow",!0);h(m,v,A,"⇎","\\nLeftrightarrow",!0);h(m,v,A,"△","\\vartriangle");h(m,v,I,"ℏ","\\hslash");h(m,v,I,"▽","\\triangledown");h(m,v,I,"◊","\\lozenge");h(m,v,I,"Ⓢ","\\circledS");h(m,v,I,"®","\\circledR");h(F,v,I,"®","\\circledR");h(m,v,I,"∡","\\measuredangle",!0);h(m,v,I,"∄","\\nexists");h(m,v,I,"℧","\\mho");h(m,v,I,"Ⅎ","\\Finv",!0);h(m,v,I,"⅁","\\Game",!0);h(m,v,I,"‵","\\backprime");h(m,v,I,"▲","\\blacktriangle");h(m,v,I,"▼","\\blacktriangledown");h(m,v,I,"■","\\blacksquare");h(m,v,I,"⧫","\\blacklozenge");h(m,v,I,"★","\\bigstar");h(m,v,I,"∢","\\sphericalangle",!0);h(m,v,I,"∁","\\complement",!0);h(m,v,I,"ð","\\eth",!0);h(F,b,I,"ð","ð");h(m,v,I,"╱","\\diagup");h(m,v,I,"╲","\\diagdown");h(m,v,I,"□","\\square");h(m,v,I,"□","\\Box");h(m,v,I,"◊","\\Diamond");h(m,v,I,"¥","\\yen",!0);h(F,v,I,"¥","\\yen",!0);h(m,v,I,"✓","\\checkmark",!0);h(F,v,I,"✓","\\checkmark");h(m,v,I,"ℶ","\\beth",!0);h(m,v,I,"ℸ","\\daleth",!0);h(m,v,I,"ℷ","\\gimel",!0);h(m,v,I,"ϝ","\\digamma",!0);h(m,v,I,"ϰ","\\varkappa");h(m,v,ht,"┌","\\@ulcorner",!0);h(m,v,Ze,"┐","\\@urcorner",!0);h(m,v,ht,"└","\\@llcorner",!0);h(m,v,Ze,"┘","\\@lrcorner",!0);h(m,v,A,"≦","\\leqq",!0);h(m,v,A,"⩽","\\leqslant",!0);h(m,v,A,"⪕","\\eqslantless",!0);h(m,v,A,"≲","\\lesssim",!0);h(m,v,A,"⪅","\\lessapprox",!0);h(m,v,A,"≊","\\approxeq",!0);h(m,v,te,"⋖","\\lessdot");h(m,v,A,"⋘","\\lll",!0);h(m,v,A,"≶","\\lessgtr",!0);h(m,v,A,"⋚","\\lesseqgtr",!0);h(m,v,A,"⪋","\\lesseqqgtr",!0);h(m,v,A,"≑","\\doteqdot");h(m,v,A,"≓","\\risingdotseq",!0);h(m,v,A,"≒","\\fallingdotseq",!0);h(m,v,A,"∽","\\backsim",!0);h(m,v,A,"⋍","\\backsimeq",!0);h(m,v,A,"⫅","\\subseteqq",!0);h(m,v,A,"⋐","\\Subset",!0);h(m,v,A,"⊏","\\sqsubset",!0);h(m,v,A,"≼","\\preccurlyeq",!0);h(m,v,A,"⋞","\\curlyeqprec",!0);h(m,v,A,"≾","\\precsim",!0);h(m,v,A,"⪷","\\precapprox",!0);h(m,v,A,"⊲","\\vartriangleleft");h(m,v,A,"⊴","\\trianglelefteq");h(m,v,A,"⊨","\\vDash",!0);h(m,v,A,"⊪","\\Vvdash",!0);h(m,v,A,"⌣","\\smallsmile");h(m,v,A,"⌢","\\smallfrown");h(m,v,A,"≏","\\bumpeq",!0);h(m,v,A,"≎","\\Bumpeq",!0);h(m,v,A,"≧","\\geqq",!0);h(m,v,A,"⩾","\\geqslant",!0);h(m,v,A,"⪖","\\eqslantgtr",!0);h(m,v,A,"≳","\\gtrsim",!0);h(m,v,A,"⪆","\\gtrapprox",!0);h(m,v,te,"⋗","\\gtrdot");h(m,v,A,"⋙","\\ggg",!0);h(m,v,A,"≷","\\gtrless",!0);h(m,v,A,"⋛","\\gtreqless",!0);h(m,v,A,"⪌","\\gtreqqless",!0);h(m,v,A,"≖","\\eqcirc",!0);h(m,v,A,"≗","\\circeq",!0);h(m,v,A,"≜","\\triangleq",!0);h(m,v,A,"∼","\\thicksim");h(m,v,A,"≈","\\thickapprox");h(m,v,A,"⫆","\\supseteqq",!0);h(m,v,A,"⋑","\\Supset",!0);h(m,v,A,"⊐","\\sqsupset",!0);h(m,v,A,"≽","\\succcurlyeq",!0);h(m,v,A,"⋟","\\curlyeqsucc",!0);h(m,v,A,"≿","\\succsim",!0);h(m,v,A,"⪸","\\succapprox",!0);h(m,v,A,"⊳","\\vartriangleright");h(m,v,A,"⊵","\\trianglerighteq");h(m,v,A,"⊩","\\Vdash",!0);h(m,v,A,"∣","\\shortmid");h(m,v,A,"∥","\\shortparallel");h(m,v,A,"≬","\\between",!0);h(m,v,A,"⋔","\\pitchfork",!0);h(m,v,A,"∝","\\varpropto");h(m,v,A,"◀","\\blacktriangleleft");h(m,v,A,"∴","\\therefore",!0);h(m,v,A,"∍","\\backepsilon");h(m,v,A,"▶","\\blacktriangleright");h(m,v,A,"∵","\\because",!0);h(m,v,A,"⋘","\\llless");h(m,v,A,"⋙","\\gggtr");h(m,v,te,"⊲","\\lhd");h(m,v,te,"⊳","\\rhd");h(m,v,A,"≂","\\eqsim",!0);h(m,b,A,"⋈","\\Join");h(m,v,A,"≑","\\Doteq",!0);h(m,v,te,"∔","\\dotplus",!0);h(m,v,te,"∖","\\smallsetminus");h(m,v,te,"⋒","\\Cap",!0);h(m,v,te,"⋓","\\Cup",!0);h(m,v,te,"⩞","\\doublebarwedge",!0);h(m,v,te,"⊟","\\boxminus",!0);h(m,v,te,"⊞","\\boxplus",!0);h(m,v,te,"⋇","\\divideontimes",!0);h(m,v,te,"⋉","\\ltimes",!0);h(m,v,te,"⋊","\\rtimes",!0);h(m,v,te,"⋋","\\leftthreetimes",!0);h(m,v,te,"⋌","\\rightthreetimes",!0);h(m,v,te,"⋏","\\curlywedge",!0);h(m,v,te,"⋎","\\curlyvee",!0);h(m,v,te,"⊝","\\circleddash",!0);h(m,v,te,"⊛","\\circledast",!0);h(m,v,te,"⋅","\\centerdot");h(m,v,te,"⊺","\\intercal",!0);h(m,v,te,"⋒","\\doublecap");h(m,v,te,"⋓","\\doublecup");h(m,v,te,"⊠","\\boxtimes",!0);h(m,v,A,"⇢","\\dashrightarrow",!0);h(m,v,A,"⇠","\\dashleftarrow",!0);h(m,v,A,"⇇","\\leftleftarrows",!0);h(m,v,A,"⇆","\\leftrightarrows",!0);h(m,v,A,"⇚","\\Lleftarrow",!0);h(m,v,A,"↞","\\twoheadleftarrow",!0);h(m,v,A,"↢","\\leftarrowtail",!0);h(m,v,A,"↫","\\looparrowleft",!0);h(m,v,A,"⇋","\\leftrightharpoons",!0);h(m,v,A,"↶","\\curvearrowleft",!0);h(m,v,A,"↺","\\circlearrowleft",!0);h(m,v,A,"↰","\\Lsh",!0);h(m,v,A,"⇈","\\upuparrows",!0);h(m,v,A,"↿","\\upharpoonleft",!0);h(m,v,A,"⇃","\\downharpoonleft",!0);h(m,b,A,"⊶","\\origof",!0);h(m,b,A,"⊷","\\imageof",!0);h(m,v,A,"⊸","\\multimap",!0);h(m,v,A,"↭","\\leftrightsquigarrow",!0);h(m,v,A,"⇉","\\rightrightarrows",!0);h(m,v,A,"⇄","\\rightleftarrows",!0);h(m,v,A,"↠","\\twoheadrightarrow",!0);h(m,v,A,"↣","\\rightarrowtail",!0);h(m,v,A,"↬","\\looparrowright",!0);h(m,v,A,"↷","\\curvearrowright",!0);h(m,v,A,"↻","\\circlearrowright",!0);h(m,v,A,"↱","\\Rsh",!0);h(m,v,A,"⇊","\\downdownarrows",!0);h(m,v,A,"↾","\\upharpoonright",!0);h(m,v,A,"⇂","\\downharpoonright",!0);h(m,v,A,"⇝","\\rightsquigarrow",!0);h(m,v,A,"⇝","\\leadsto");h(m,v,A,"⇛","\\Rrightarrow",!0);h(m,v,A,"↾","\\restriction");h(m,b,I,"‘","`");h(m,b,I,"$","\\$");h(F,b,I,"$","\\$");h(F,b,I,"$","\\textdollar");h(m,b,I,"%","\\%");h(F,b,I,"%","\\%");h(m,b,I,"_","\\_");h(F,b,I,"_","\\_");h(F,b,I,"_","\\textunderscore");h(m,b,I,"∠","\\angle",!0);h(m,b,I,"∞","\\infty",!0);h(m,b,I,"′","\\prime");h(m,b,I,"△","\\triangle");h(m,b,I,"Γ","\\Gamma",!0);h(m,b,I,"Δ","\\Delta",!0);h(m,b,I,"Θ","\\Theta",!0);h(m,b,I,"Λ","\\Lambda",!0);h(m,b,I,"Ξ","\\Xi",!0);h(m,b,I,"Π","\\Pi",!0);h(m,b,I,"Σ","\\Sigma",!0);h(m,b,I,"Υ","\\Upsilon",!0);h(m,b,I,"Φ","\\Phi",!0);h(m,b,I,"Ψ","\\Psi",!0);h(m,b,I,"Ω","\\Omega",!0);h(m,b,I,"A","Α");h(m,b,I,"B","Β");h(m,b,I,"E","Ε");h(m,b,I,"Z","Ζ");h(m,b,I,"H","Η");h(m,b,I,"I","Ι");h(m,b,I,"K","Κ");h(m,b,I,"M","Μ");h(m,b,I,"N","Ν");h(m,b,I,"O","Ο");h(m,b,I,"P","Ρ");h(m,b,I,"T","Τ");h(m,b,I,"X","Χ");h(m,b,I,"¬","\\neg",!0);h(m,b,I,"¬","\\lnot");h(m,b,I,"⊤","\\top");h(m,b,I,"⊥","\\bot");h(m,b,I,"∅","\\emptyset");h(m,v,I,"∅","\\varnothing");h(m,b,ie,"α","\\alpha",!0);h(m,b,ie,"β","\\beta",!0);h(m,b,ie,"γ","\\gamma",!0);h(m,b,ie,"δ","\\delta",!0);h(m,b,ie,"ϵ","\\epsilon",!0);h(m,b,ie,"ζ","\\zeta",!0);h(m,b,ie,"η","\\eta",!0);h(m,b,ie,"θ","\\theta",!0);h(m,b,ie,"ι","\\iota",!0);h(m,b,ie,"κ","\\kappa",!0);h(m,b,ie,"λ","\\lambda",!0);h(m,b,ie,"μ","\\mu",!0);h(m,b,ie,"ν","\\nu",!0);h(m,b,ie,"ξ","\\xi",!0);h(m,b,ie,"ο","\\omicron",!0);h(m,b,ie,"π","\\pi",!0);h(m,b,ie,"ρ","\\rho",!0);h(m,b,ie,"σ","\\sigma",!0);h(m,b,ie,"τ","\\tau",!0);h(m,b,ie,"υ","\\upsilon",!0);h(m,b,ie,"ϕ","\\phi",!0);h(m,b,ie,"χ","\\chi",!0);h(m,b,ie,"ψ","\\psi",!0);h(m,b,ie,"ω","\\omega",!0);h(m,b,ie,"ε","\\varepsilon",!0);h(m,b,ie,"ϑ","\\vartheta",!0);h(m,b,ie,"ϖ","\\varpi",!0);h(m,b,ie,"ϱ","\\varrho",!0);h(m,b,ie,"ς","\\varsigma",!0);h(m,b,ie,"φ","\\varphi",!0);h(m,b,te,"∗","*",!0);h(m,b,te,"+","+");h(m,b,te,"−","-",!0);h(m,b,te,"⋅","\\cdot",!0);h(m,b,te,"∘","\\circ",!0);h(m,b,te,"÷","\\div",!0);h(m,b,te,"±","\\pm",!0);h(m,b,te,"×","\\times",!0);h(m,b,te,"∩","\\cap",!0);h(m,b,te,"∪","\\cup",!0);h(m,b,te,"∖","\\setminus",!0);h(m,b,te,"∧","\\land");h(m,b,te,"∨","\\lor");h(m,b,te,"∧","\\wedge",!0);h(m,b,te,"∨","\\vee",!0);h(m,b,I,"√","\\surd");h(m,b,ht,"⟨","\\langle",!0);h(m,b,ht,"∣","\\lvert");h(m,b,ht,"∥","\\lVert");h(m,b,Ze,"?","?");h(m,b,Ze,"!","!");h(m,b,Ze,"⟩","\\rangle",!0);h(m,b,Ze,"∣","\\rvert");h(m,b,Ze,"∥","\\rVert");h(m,b,A,"=","=");h(m,b,A,":",":");h(m,b,A,"≈","\\approx",!0);h(m,b,A,"≅","\\cong",!0);h(m,b,A,"≥","\\ge");h(m,b,A,"≥","\\geq",!0);h(m,b,A,"←","\\gets");h(m,b,A,">","\\gt",!0);h(m,b,A,"∈","\\in",!0);h(m,b,A,"","\\@not");h(m,b,A,"⊂","\\subset",!0);h(m,b,A,"⊃","\\supset",!0);h(m,b,A,"⊆","\\subseteq",!0);h(m,b,A,"⊇","\\supseteq",!0);h(m,v,A,"⊈","\\nsubseteq",!0);h(m,v,A,"⊉","\\nsupseteq",!0);h(m,b,A,"⊨","\\models");h(m,b,A,"←","\\leftarrow",!0);h(m,b,A,"≤","\\le");h(m,b,A,"≤","\\leq",!0);h(m,b,A,"<","\\lt",!0);h(m,b,A,"→","\\rightarrow",!0);h(m,b,A,"→","\\to");h(m,v,A,"≱","\\ngeq",!0);h(m,v,A,"≰","\\nleq",!0);h(m,b,Yt," ","\\ ");h(m,b,Yt," ","\\space");h(m,b,Yt," ","\\nobreakspace");h(F,b,Yt," ","\\ ");h(F,b,Yt," "," ");h(F,b,Yt," ","\\space");h(F,b,Yt," ","\\nobreakspace");h(m,b,Yt,"","\\nobreak");h(m,b,Yt,"","\\allowbreak");h(m,b,kn,",",",");h(m,b,kn,";",";");h(m,v,te,"⊼","\\barwedge",!0);h(m,v,te,"⊻","\\veebar",!0);h(m,b,te,"⊙","\\odot",!0);h(m,b,te,"⊕","\\oplus",!0);h(m,b,te,"⊗","\\otimes",!0);h(m,b,I,"∂","\\partial",!0);h(m,b,te,"⊘","\\oslash",!0);h(m,v,te,"⊚","\\circledcirc",!0);h(m,v,te,"⊡","\\boxdot",!0);h(m,b,te,"△","\\bigtriangleup");h(m,b,te,"▽","\\bigtriangledown");h(m,b,te,"†","\\dagger");h(m,b,te,"⋄","\\diamond");h(m,b,te,"⋆","\\star");h(m,b,te,"◃","\\triangleleft");h(m,b,te,"▹","\\triangleright");h(m,b,ht,"{","\\{");h(F,b,I,"{","\\{");h(F,b,I,"{","\\textbraceleft");h(m,b,Ze,"}","\\}");h(F,b,I,"}","\\}");h(F,b,I,"}","\\textbraceright");h(m,b,ht,"{","\\lbrace");h(m,b,Ze,"}","\\rbrace");h(m,b,ht,"[","\\lbrack",!0);h(F,b,I,"[","\\lbrack",!0);h(m,b,Ze,"]","\\rbrack",!0);h(F,b,I,"]","\\rbrack",!0);h(m,b,ht,"(","\\lparen",!0);h(m,b,Ze,")","\\rparen",!0);h(F,b,I,"<","\\textless",!0);h(F,b,I,">","\\textgreater",!0);h(m,b,ht,"⌊","\\lfloor",!0);h(m,b,Ze,"⌋","\\rfloor",!0);h(m,b,ht,"⌈","\\lceil",!0);h(m,b,Ze,"⌉","\\rceil",!0);h(m,b,I,"\\","\\backslash");h(m,b,I,"∣","|");h(m,b,I,"∣","\\vert");h(F,b,I,"|","\\textbar",!0);h(m,b,I,"∥","\\|");h(m,b,I,"∥","\\Vert");h(F,b,I,"∥","\\textbardbl");h(F,b,I,"~","\\textasciitilde");h(F,b,I,"\\","\\textbackslash");h(F,b,I,"^","\\textasciicircum");h(m,b,A,"↑","\\uparrow",!0);h(m,b,A,"⇑","\\Uparrow",!0);h(m,b,A,"↓","\\downarrow",!0);h(m,b,A,"⇓","\\Downarrow",!0);h(m,b,A,"↕","\\updownarrow",!0);h(m,b,A,"⇕","\\Updownarrow",!0);h(m,b,Pe,"∐","\\coprod");h(m,b,Pe,"⋁","\\bigvee");h(m,b,Pe,"⋀","\\bigwedge");h(m,b,Pe,"⨄","\\biguplus");h(m,b,Pe,"⋂","\\bigcap");h(m,b,Pe,"⋃","\\bigcup");h(m,b,Pe,"∫","\\int");h(m,b,Pe,"∫","\\intop");h(m,b,Pe,"∬","\\iint");h(m,b,Pe,"∭","\\iiint");h(m,b,Pe,"∏","\\prod");h(m,b,Pe,"∑","\\sum");h(m,b,Pe,"⨂","\\bigotimes");h(m,b,Pe,"⨁","\\bigoplus");h(m,b,Pe,"⨀","\\bigodot");h(m,b,Pe,"∮","\\oint");h(m,b,Pe,"∯","\\oiint");h(m,b,Pe,"∰","\\oiiint");h(m,b,Pe,"⨆","\\bigsqcup");h(m,b,Pe,"∫","\\smallint");h(F,b,Hr,"…","\\textellipsis");h(m,b,Hr,"…","\\mathellipsis");h(F,b,Hr,"…","\\ldots",!0);h(m,b,Hr,"…","\\ldots",!0);h(m,b,Hr,"⋯","\\@cdots",!0);h(m,b,Hr,"⋱","\\ddots",!0);h(m,b,I,"⋮","\\varvdots");h(F,b,I,"⋮","\\varvdots");h(m,b,Ce,"ˊ","\\acute");h(m,b,Ce,"ˋ","\\grave");h(m,b,Ce,"¨","\\ddot");h(m,b,Ce,"~","\\tilde");h(m,b,Ce,"ˉ","\\bar");h(m,b,Ce,"˘","\\breve");h(m,b,Ce,"ˇ","\\check");h(m,b,Ce,"^","\\hat");h(m,b,Ce,"⃗","\\vec");h(m,b,Ce,"˙","\\dot");h(m,b,Ce,"˚","\\mathring");h(m,b,ie,"","\\@imath");h(m,b,ie,"","\\@jmath");h(m,b,I,"ı","ı");h(m,b,I,"ȷ","ȷ");h(F,b,I,"ı","\\i",!0);h(F,b,I,"ȷ","\\j",!0);h(F,b,I,"ß","\\ss",!0);h(F,b,I,"æ","\\ae",!0);h(F,b,I,"œ","\\oe",!0);h(F,b,I,"ø","\\o",!0);h(F,b,I,"Æ","\\AE",!0);h(F,b,I,"Œ","\\OE",!0);h(F,b,I,"Ø","\\O",!0);h(F,b,Ce,"ˊ","\\'");h(F,b,Ce,"ˋ","\\`");h(F,b,Ce,"ˆ","\\^");h(F,b,Ce,"˜","\\~");h(F,b,Ce,"ˉ","\\=");h(F,b,Ce,"˘","\\u");h(F,b,Ce,"˙","\\.");h(F,b,Ce,"¸","\\c");h(F,b,Ce,"˚","\\r");h(F,b,Ce,"ˇ","\\v");h(F,b,Ce,"¨",'\\"');h(F,b,Ce,"˝","\\H");h(F,b,Ce,"◯","\\textcircled");var eo={"--":!0,"---":!0,"``":!0,"''":!0};h(F,b,I,"–","--",!0);h(F,b,I,"–","\\textendash");h(F,b,I,"—","---",!0);h(F,b,I,"—","\\textemdash");h(F,b,I,"‘","`",!0);h(F,b,I,"‘","\\textquoteleft");h(F,b,I,"’","'",!0);h(F,b,I,"’","\\textquoteright");h(F,b,I,"“","``",!0);h(F,b,I,"“","\\textquotedblleft");h(F,b,I,"”","''",!0);h(F,b,I,"”","\\textquotedblright");h(m,b,I,"°","\\degree",!0);h(F,b,I,"°","\\degree");h(F,b,I,"°","\\textdegree",!0);h(m,b,I,"£","\\pounds");h(m,b,I,"£","\\mathsterling",!0);h(F,b,I,"£","\\pounds");h(F,b,I,"£","\\textsterling",!0);h(m,v,I,"✠","\\maltese");h(F,v,I,"✠","\\maltese");var Ru='0123456789/@."';for(var ta=0;ta{var t=e.charCodeAt(0),r=e.charCodeAt(1),n=(t-55296)*1024+(r-56320)+65536;if(119808<=n&&n<120484){var a=Math.floor((n-119808)/26);return Gu[a]}else if(120782<=n&&n<=120831){var i=Math.floor((n-120782)/10);return t3[i]}else{if(n===120485||n===120486)return Gu[0];if(120486{if(Jt(e.classes)!==Jt(t.classes)||e.skew!==t.skew||e.maxFontSize!==t.maxFontSize||e.italic!==0&&e.hasClass("mathnormal"))return!1;if(e.classes.length===1){var r=e.classes[0];if(r==="mbin"||r==="mord")return!1}for(var n of Object.keys(e.style))if(e.style[n]!==t.style[n])return!1;for(var a of Object.keys(t.style))if(e.style[a]!==t.style[a])return!1;return!0},to=e=>{for(var t=0;tr&&(r=u.height),u.depth>n&&(n=u.depth),u.maxFontSize>a&&(a=u.maxFontSize)}t.height=r,t.depth=n,t.maxFontSize=a},z=function(t,r,n,a){var i=new Fr(t,r,n,a);return xi(i),i},er=(e,t,r,n)=>new Fr(e,t,r,n),Or=function(t,r,n){var a=z([t],[],r);return a.height=Math.max(n||r.fontMetrics().defaultRuleThickness,r.minRuleThickness),a.style.borderBottomWidth=V(a.height),a.maxFontSize=1,a},i3=function(t,r,n,a){var i=new E0(t,r,n,a);return xi(i),i},Gt=function(t){var r=new Br(t);return xi(r),r},Lr=function(t,r){return t instanceof Br?z([],[t],r):t},u3=function(t){if(t.positionType==="individualShift"){for(var r=t.children,n=[r[0]],a=-r[0].shift-r[0].elem.depth,i=a,u=1;u{var r=z(["mspace"],[],t),n=Ie(e,t);return r.style.marginRight=V(n),r},qn=(e,t,r)=>{var n,a;switch(e){case"amsrm":n="AMS";break;case"textrm":n="Main";break;case"textsf":n="SansSerif";break;case"texttt":n="Typewriter";break;default:n=e}return t==="textbf"&&r==="textit"?a="BoldItalic":t==="textbf"?a="Bold":r==="textit"?a="Italic":a="Regular",n+"-"+a},Ba={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathsfit:{variant:"sans-serif-italic",fontName:"SansSerif-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},no={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},ao=function(t,r){var[n,a,i]=no[t],u=new Zt(n),s=new zt([u],{width:V(a),height:V(i),style:"width:"+V(a),viewBox:"0 0 "+1e3*a+" "+1e3*i,preserveAspectRatio:"xMinYMin"}),l=er(["overlay"],[s],r);return l.height=i,l.style.height=V(i),l.style.width=V(a),l},_e={number:3,unit:"mu"},cr={number:4,unit:"mu"},Pt={number:5,unit:"mu"},s3={mord:{mop:_e,mbin:cr,mrel:Pt,minner:_e},mop:{mord:_e,mop:_e,mrel:Pt,minner:_e},mbin:{mord:cr,mop:cr,mopen:cr,minner:cr},mrel:{mord:Pt,mop:Pt,mopen:Pt,minner:Pt},mopen:{},mclose:{mop:_e,mbin:cr,mrel:Pt,minner:_e},mpunct:{mord:_e,mop:_e,mrel:Pt,mopen:_e,mclose:_e,mpunct:_e,minner:_e},minner:{mord:_e,mop:_e,mbin:cr,mrel:Pt,mopen:_e,mpunct:_e,minner:_e}},l3={mord:{mop:_e},mop:{mord:_e,mop:_e},mbin:{},mrel:{},mopen:{},mclose:{mop:_e},mpunct:{},minner:{mop:_e}},io={},a0={},i0={};function Z(e){for(var{type:t,names:r,props:n,handler:a,htmlBuilder:i,mathmlBuilder:u}=e,s={type:t,numArgs:n.numArgs,argTypes:n.argTypes,allowedInArgument:!!n.allowedInArgument,allowedInText:!!n.allowedInText,allowedInMath:n.allowedInMath===void 0?!0:n.allowedInMath,numOptionalArgs:n.numOptionalArgs||0,infix:!!n.infix,primitive:!!n.primitive,handler:a},l=0;l{var D=S.classes[0],_=x.classes[0];D==="mbin"&&c3.has(_)?S.classes[0]="mord":_==="mbin"&&o3.has(D)&&(x.classes[0]="mord")},{node:f},g,p),Fa(i,(x,S)=>{var D,_,N=za(S),M=za(x),W=N&&M?x.hasClass("mtight")?(D=l3[N])==null?void 0:D[M]:(_=s3[N])==null?void 0:_[M]:null;if(W)return ro(W,c)},{node:f},g,p),i},Fa=function(t,r,n,a,i){a&&t.push(a);for(var u=0;ug=>{t.splice(f+1,0,g),u++})(u)}a&&t.pop()},uo=function(t){return t instanceof Br||t instanceof E0||t instanceof Fr&&t.hasClass("enclosing")?t:null},Ha=function(t,r){var n=uo(t);if(n){var a=n.children;if(a.length){if(r==="right")return Ha(a[a.length-1],"right");if(r==="left")return Ha(a[0],"left")}}return t},za=function(t,r){if(!t)return null;r&&(t=Ha(t,r));var n=t.classes[0];return d3[n]||null},bn=function(t,r){var n=["nulldelimiter"].concat(t.baseSizingClasses());return z(r.concat(n))},Te=function(t,r,n){if(!t)return z();if(a0[t.type]){var a=a0[t.type](t,r);if(n&&r.size!==n.size){a=z(r.sizingClasses(n),[a],r);var i=r.sizeMultiplier/n.sizeMultiplier;a.height*=i,a.depth*=i}return a}else throw new Y("Got group of unknown type: '"+t.type+"'")};function Yn(e,t){var r=z(["base"],e,t),n=z(["strut"]);return n.style.height=V(r.height+r.depth),r.depth&&(n.style.verticalAlign=V(-r.depth)),r.children.unshift(n),r}function Ua(e,t){var r=null;e.length===1&&e[0].type==="tag"&&(r=e[0].tag,e=e[0].body);var n=He(e,t,"root"),a;n.length===2&&n[1].hasClass("tag")&&(a=n.pop());for(var i=[],u=[],s=0;s0&&(i.push(Yn(u,t)),u=[]),i.push(n[s]));u.length>0&&i.push(Yn(u,t));var c;r?(c=Yn(He(r,t,!0),t),c.classes=["tag"],i.push(c)):a&&i.push(a);var d=z(["katex-html"],i);if(d.setAttribute("aria-hidden","true"),c){var f=c.children[0];f.style.height=V(d.height+d.depth),d.depth&&(f.style.verticalAlign=V(-d.depth))}return d}function so(e){return new Br(e)}class G{constructor(t,r,n){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=t,this.attributes={},this.children=r||[],this.classes=n||[]}setAttribute(t,r){this.attributes[t]=r}getAttribute(t){return this.attributes[t]}toNode(){var t=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&t.setAttribute(r,this.attributes[r]);this.classes.length>0&&(t.className=Jt(this.classes));for(var n=0;n0&&(t+=' class ="'+Ve(Jt(this.classes))+'"'),t+=">";for(var n=0;n",t}toText(){return this.children.map(t=>t.toText()).join("")}}class Me{constructor(t){this.text=void 0,this.text=t}toNode(){return document.createTextNode(this.text)}toMarkup(){return Ve(this.toText())}toText(){return this.text}}class lo{constructor(t){this.width=void 0,this.character=void 0,this.width=t,t>=.05555&&t<=.05556?this.character=" ":t>=.1666&&t<=.1667?this.character=" ":t>=.2222&&t<=.2223?this.character=" ":t>=.2777&&t<=.2778?this.character="  ":t>=-.05556&&t<=-.05555?this.character=" ⁣":t>=-.1667&&t<=-.1666?this.character=" ⁣":t>=-.2223&&t<=-.2222?this.character=" ⁣":t>=-.2778&&t<=-.2777?this.character=" ⁣":this.character=null}toNode(){if(this.character)return document.createTextNode(this.character);var t=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return t.setAttribute("width",V(this.width)),t}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}}var f3=new Set(["\\imath","\\jmath"]),m3=new Set(["mrow","mtable"]),bt=function(t,r,n){return we[r][t]&&we[r][t].replace&&t.charCodeAt(0)!==55349&&!(eo.hasOwnProperty(t)&&n&&(n.fontFamily&&n.fontFamily.slice(4,6)==="tt"||n.font&&n.font.slice(4,6)==="tt"))&&(t=we[r][t].replace),new Me(t)},yi=function(t){return t.length===1?t[0]:new G("mrow",t)},p3={mathit:"italic",boldsymbol:e=>e.type==="textord"?"bold":"bold-italic",mathbf:"bold",mathbb:"double-struck",mathsfit:"sans-serif-italic",mathfrak:"fraktur",mathscr:"script",mathcal:"script",mathsf:"sans-serif",mathtt:"monospace"},vi=(e,t)=>{if(e.mode==="text"){if(t.fontFamily==="texttt")return"monospace";if(t.fontFamily==="textsf")return t.fontShape==="textit"&&t.fontWeight==="textbf"?"sans-serif-bold-italic":t.fontShape==="textit"?"sans-serif-italic":t.fontWeight==="textbf"?"bold-sans-serif":"sans-serif";if(t.fontShape==="textit"&&t.fontWeight==="textbf")return"bold-italic";if(t.fontShape==="textit")return"italic";if(t.fontWeight==="textbf")return"bold"}var r=t.font;if(!r||r==="mathnormal")return null;var n=e.mode,a=p3[r];if(a)return typeof a=="function"?a(e):a;var i=e.text;if(f3.has(i))return null;if(we[n][i]){var u=we[n][i].replace;u&&(i=u)}var s=Ba[r].fontName;return Ei(i,s,n)?Ba[r].variant:null};function ia(e){if(!e)return!1;if(e.type==="mi"&&e.children.length===1){var t=e.children[0];return t instanceof Me&&t.text==="."}else if(e.type==="mo"&&e.children.length===1&&e.getAttribute("separator")==="true"&&e.getAttribute("lspace")==="0em"&&e.getAttribute("rspace")==="0em"){var r=e.children[0];return r instanceof Me&&r.text===","}else return!1}var dt=function(t,r,n){if(t.length===1){var a=Ae(t[0],r);return n&&a instanceof G&&a.type==="mo"&&(a.setAttribute("lspace","0em"),a.setAttribute("rspace","0em")),[a]}for(var i=[],u,s=0;s=1&&(u.type==="mn"||ia(u))){var c=l.children[0];c instanceof G&&c.type==="mn"&&(c.children=[...u.children,...c.children],i.pop())}else if(u.type==="mi"&&u.children.length===1){var d=u.children[0];if(d instanceof Me&&d.text==="̸"&&(l.type==="mo"||l.type==="mi"||l.type==="mn")){var f=l.children[0];f instanceof Me&&f.text.length>0&&(f.text=f.text.slice(0,1)+"̸"+f.text.slice(1),i.pop())}}}i.push(l),u=l}return i},tr=function(t,r,n){return yi(dt(t,r,n))},Ae=function(t,r){if(!t)return new G("mrow");if(i0[t.type])return i0[t.type](t,r);throw new Y("Got group of unknown type: '"+t.type+"'")};function Vu(e,t,r,n,a){var i=dt(e,r),u;i.length===1&&i[0]instanceof G&&m3.has(i[0].type)?u=i[0]:u=new G("mrow",i);var s=new G("annotation",[new Me(t)]);s.setAttribute("encoding","application/x-tex");var l=new G("semantics",[u,s]),c=new G("math",[l]);c.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),n&&c.setAttribute("display","block");var d=a?"katex":"katex-mathml";return z([d],[c])}var g3=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],ju=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],Wu=function(t,r){return r.size<2?t:g3[t-1][r.size-1]};class Bt{constructor(t){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=t.style,this.color=t.color,this.size=t.size||Bt.BASESIZE,this.textSize=t.textSize||this.size,this.phantom=!!t.phantom,this.font=t.font||"",this.fontFamily=t.fontFamily||"",this.fontWeight=t.fontWeight||"",this.fontShape=t.fontShape||"",this.sizeMultiplier=ju[this.size-1],this.maxSize=t.maxSize,this.minRuleThickness=t.minRuleThickness,this._fontMetrics=void 0}extend(t){var r={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};return Object.assign(r,t),new Bt(r)}havingStyle(t){return this.style===t?this:this.extend({style:t,size:Wu(this.textSize,t)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(t){return this.size===t&&this.textSize===t?this:this.extend({style:this.style.text(),size:t,textSize:t,sizeMultiplier:ju[t-1]})}havingBaseStyle(t){t=t||this.style.text();var r=Wu(Bt.BASESIZE,t);return this.size===r&&this.textSize===Bt.BASESIZE&&this.style===t?this:this.extend({style:t,size:r})}havingBaseSizing(){var t;switch(this.style.id){case 4:case 5:t=3;break;case 6:case 7:t=1;break;default:t=6}return this.extend({style:this.style.text(),size:t})}withColor(t){return this.extend({color:t})}withPhantom(){return this.extend({phantom:!0})}withFont(t){return this.extend({font:t})}withTextFontFamily(t){return this.extend({fontFamily:t,font:""})}withTextFontWeight(t){return this.extend({fontWeight:t,font:""})}withTextFontShape(t){return this.extend({fontShape:t,font:""})}sizingClasses(t){return t.size!==this.size?["sizing","reset-size"+t.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==Bt.BASESIZE?["sizing","reset-size"+this.size,"size"+Bt.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=Z4(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}}Bt.BASESIZE=6;var oo=function(t){return new Bt({style:t.displayMode?oe.DISPLAY:oe.TEXT,maxSize:t.maxSize,minRuleThickness:t.minRuleThickness})},co=function(t,r){if(r.displayMode){var n=["katex-display"];r.leqno&&n.push("leqno"),r.fleqn&&n.push("fleqn"),t=z(n,[t])}return t},b3=function(t,r,n){var a=oo(n),i;if(n.output==="mathml")return Vu(t,r,a,n.displayMode,!0);if(n.output==="html"){var u=Ua(t,a);i=z(["katex"],[u])}else{var s=Vu(t,r,a,n.displayMode,!1),l=Ua(t,a);i=z(["katex"],[s,l])}return co(i,n)},E3=function(t,r,n){var a=oo(n),i=Ua(t,a),u=z(["katex"],[i]);return co(u,n)},T3={widehat:"^",widecheck:"ˇ",widetilde:"~",utilde:"~",overleftarrow:"←",underleftarrow:"←",xleftarrow:"←",overrightarrow:"→",underrightarrow:"→",xrightarrow:"→",underbrace:"⏟",overbrace:"⏞",underbracket:"⎵",overbracket:"⎴",overgroup:"⏠",undergroup:"⏡",overleftrightarrow:"↔",underleftrightarrow:"↔",xleftrightarrow:"↔",Overrightarrow:"⇒",xRightarrow:"⇒",overleftharpoon:"↼",xleftharpoonup:"↼",overrightharpoon:"⇀",xrightharpoonup:"⇀",xLeftarrow:"⇐",xLeftrightarrow:"⇔",xhookleftarrow:"↩",xhookrightarrow:"↪",xmapsto:"↦",xrightharpoondown:"⇁",xleftharpoondown:"↽",xrightleftharpoons:"⇌",xleftrightharpoons:"⇋",xtwoheadleftarrow:"↞",xtwoheadrightarrow:"↠",xlongequal:"=",xtofrom:"⇄",xrightleftarrows:"⇄",xrightequilibrium:"⇌",xleftequilibrium:"⇋","\\cdrightarrow":"→","\\cdleftarrow":"←","\\cdlongequal":"="},y0=function(t){var r=new G("mo",[new Me(T3[t.replace(/^\\/,"")])]);return r.setAttribute("stretchy","true"),r},x3={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overbracket:[["leftbracketover","rightbracketover"],1.6,440],underbracket:[["leftbracketunder","rightbracketunder"],1.6,410],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},y3=new Set(["widehat","widecheck","widetilde","utilde"]),v0=function(t,r){function n(){var s=4e5,l=t.label.slice(1);if(y3.has(l)&&"base"in t){var c=t.base.type==="ordgroup"?t.base.body.length:1,d,f,g;if(c>5)l==="widehat"||l==="widecheck"?(d=420,s=2364,g=.42,f=l+"4"):(d=312,s=2340,g=.34,f="tilde4");else{var p=[1,1,2,2,3,3][c];l==="widehat"||l==="widecheck"?(s=[0,1062,2364,2364,2364][p],d=[0,239,300,360,420][p],g=[0,.24,.3,.3,.36,.42][p],f=l+p):(s=[0,600,1033,2339,2340][p],d=[0,260,286,306,312][p],g=[0,.26,.286,.3,.306,.34][p],f="tilde"+p)}var x=new Zt(f),S=new zt([x],{width:"100%",height:V(g),viewBox:"0 0 "+s+" "+d,preserveAspectRatio:"none"});return{span:er([],[S],r),minWidth:0,height:g}}else{var D=[],_=x3[l];if(!_)throw new Error('No SVG data for "'+l+'".');var[N,M,W]=_,j=W/1e3,L=N.length,ee,re;if(L===1){if(_.length!==4)throw new Error('Expected 4-tuple for single-path SVG data "'+l+'".');ee=["hide-tail"],re=[_[3]]}else if(L===2)ee=["halfarrow-left","halfarrow-right"],re=["xMinYMin","xMaxYMin"];else if(L===3)ee=["brace-left","brace-center","brace-right"],re=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support - `+L+" children.");for(var K=0;K0&&(a.style.minWidth=V(i)),a},v3=function(t,r,n,a,i){var u,s=t.height+t.depth+n+a;if(/fbox|color|angl/.test(r)){if(u=z(["stretchy",r],[],i),r==="fbox"){var l=i.color&&i.getColor();l&&(u.style.borderColor=l)}}else{var c=[];/^[bx]cancel$/.test(r)&&c.push(new Da({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(r)&&c.push(new Da({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var d=new zt(c,{width:"100%",height:V(s)});u=er([],[d],i)}return u.height=s,u.style.height=V(s),u},A3={bin:1,close:1,inner:1,open:1,punct:1,rel:1},k3={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1};function S3(e){return e in A3}function ce(e,t){if(!e||e.type!==t)throw new Error("Expected node of type "+t+", but got "+(e?"node of type "+e.type:String(e)));return e}function A0(e){var t=k0(e);if(!t)throw new Error("Expected node of symbol group type, but got "+(e?"node of type "+e.type:String(e)));return t}function k0(e){return e&&(e.type==="atom"||k3.hasOwnProperty(e.type))?e:null}var ho=e=>{if(e instanceof ct)return e;if(K4(e)&&e.children.length===1)return ho(e.children[0])},Ai=(e,t)=>{var r,n,a;e&&e.type==="supsub"?(n=ce(e.base,"accent"),r=n.base,e.base=r,a=Q4(Te(e,t)),e.base=n):(n=ce(e,"accent"),r=n.base);var i=Te(r,t.havingCrampedStyle()),u=n.isShifty&&qt(r),s=0;if(u){var l,c;s=(l=(c=ho(i))==null?void 0:c.skew)!=null?l:0}var d=n.label==="\\c",f=d?i.height+i.depth:Math.min(i.height,t.fontMetrics().xHeight),g;if(n.isStretchy)g=v0(n,t),g=Ee({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"elem",elem:g,wrapperClasses:["svg-align"],wrapperStyle:s>0?{width:"calc(100% - "+V(2*s)+")",marginLeft:V(2*s)}:void 0}]});else{var p,x;n.label==="\\vec"?(p=ao("vec",t),x=no.vec[1]):(p=x0({mode:n.mode,text:n.label},t,"textord"),p=$4(p),p.italic=0,x=p.width,d&&(f+=p.depth)),g=z(["accent-body"],[p]);var S=n.label==="\\textcircled";S&&(g.classes.push("accent-full"),f=i.height);var D=s;S||(D-=x/2),g.style.left=V(D),n.label==="\\textcircled"&&(g.style.top=".2em"),g=Ee({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:-f},{type:"elem",elem:g}]})}var _=z(["mord","accent"],[g],t);return a?(a.children[0]=_,a.height=Math.max(_.height,a.height),a.classes[0]="mord",a):_},fo=(e,t)=>{var r=e.isStretchy?y0(e.label):new G("mo",[bt(e.label,e.mode)]),n=new G("mover",[Ae(e.base,t),r]);return n.setAttribute("accent","true"),n},w3=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(e=>"\\"+e).join("|"));Z({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:(e,t)=>{var r=u0(t[0]),n=!w3.test(e.funcName),a=!n||e.funcName==="\\widehat"||e.funcName==="\\widetilde"||e.funcName==="\\widecheck";return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:n,isShifty:a,base:r}},htmlBuilder:Ai,mathmlBuilder:fo});Z({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(e,t)=>{var r=t[0],n=e.parser.mode;return n==="math"&&(e.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+e.funcName+" works only in text mode"),n="text"),{type:"accent",mode:n,label:e.funcName,isStretchy:!1,isShifty:!0,base:r}},htmlBuilder:Ai,mathmlBuilder:fo});Z({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=t[0];return{type:"accentUnder",mode:r.mode,label:n,base:a}},htmlBuilder:(e,t)=>{var r=Te(e.base,t),n=v0(e,t),a=e.label==="\\utilde"?.12:0,i=Ee({positionType:"top",positionData:r.height,children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:a},{type:"elem",elem:r}]});return z(["mord","accentunder"],[i],t)},mathmlBuilder:(e,t)=>{var r=y0(e.label),n=new G("munder",[Ae(e.base,t),r]);return n.setAttribute("accentunder","true"),n}});var Gn=e=>{var t=new G("mpadded",e?[e]:[]);return t.setAttribute("width","+0.6em"),t.setAttribute("lspace","0.3em"),t};Z({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){var{parser:n,funcName:a}=e;return{type:"xArrow",mode:n.mode,label:a,body:t[0],below:r[0]}},htmlBuilder(e,t){var r=t.style,n=t.havingStyle(r.sup()),a=Lr(Te(e.body,n,t),t),i=e.label.slice(0,2)==="\\x"?"x":"cd";a.classes.push(i+"-arrow-pad");var u;e.below&&(n=t.havingStyle(r.sub()),u=Lr(Te(e.below,n,t),t),u.classes.push(i+"-arrow-pad"));var s=v0(e,t),l=-t.fontMetrics().axisHeight+.5*s.height,c=-t.fontMetrics().axisHeight-.5*s.height-.111;(a.depth>.25||e.label==="\\xleftequilibrium")&&(c-=a.depth);var d;if(u){var f=-t.fontMetrics().axisHeight+u.height+.5*s.height+.111;d=Ee({positionType:"individualShift",children:[{type:"elem",elem:a,shift:c},{type:"elem",elem:s,shift:l,wrapperClasses:["svg-align"]},{type:"elem",elem:u,shift:f}]})}else d=Ee({positionType:"individualShift",children:[{type:"elem",elem:a,shift:c},{type:"elem",elem:s,shift:l,wrapperClasses:["svg-align"]}]});return z(["mrel","x-arrow"],[d],t)},mathmlBuilder(e,t){var r=y0(e.label);r.setAttribute("minsize",e.label.charAt(0)==="x"?"1.75em":"3.0em");var n;if(e.body){var a=Gn(Ae(e.body,t));if(e.below){var i=Gn(Ae(e.below,t));n=new G("munderover",[r,i,a])}else n=new G("mover",[r,a])}else if(e.below){var u=Gn(Ae(e.below,t));n=new G("munder",[r,u])}else n=Gn(),n=new G("mover",[r,n]);return n}});function mo(e,t){var r=He(e.body,t,!0);return z([e.mclass],r,t)}function po(e,t){var r,n=dt(e.body,t);return e.mclass==="minner"?r=new G("mpadded",n):e.mclass==="mord"?e.isCharacterBox?(r=n[0],r.type="mi"):r=new G("mi",n):(e.isCharacterBox?(r=n[0],r.type="mo"):r=new G("mo",n),e.mclass==="mbin"?(r.attributes.lspace="0.22em",r.attributes.rspace="0.22em"):e.mclass==="mpunct"?(r.attributes.lspace="0em",r.attributes.rspace="0.17em"):e.mclass==="mopen"||e.mclass==="mclose"?(r.attributes.lspace="0em",r.attributes.rspace="0em"):e.mclass==="minner"&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em")),r}Z({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(e,t){var{parser:r,funcName:n}=e,a=t[0];return{type:"mclass",mode:r.mode,mclass:"m"+n.slice(5),body:Re(a),isCharacterBox:qt(a)}},htmlBuilder:mo,mathmlBuilder:po});var S0=e=>{var t=e.type==="ordgroup"&&e.body.length?e.body[0]:e;return t.type==="atom"&&(t.family==="bin"||t.family==="rel")?"m"+t.family:"mord"};Z({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(e,t){var{parser:r}=e;return{type:"mclass",mode:r.mode,mclass:S0(t[0]),body:Re(t[1]),isCharacterBox:qt(t[1])}}});Z({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(e,t){var{parser:r,funcName:n}=e,a=t[1],i=t[0],u;n!=="\\stackrel"?u=S0(a):u="mrel";var s={type:"op",mode:a.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:n!=="\\stackrel",body:Re(a)},l={type:"supsub",mode:i.mode,base:s,sup:n==="\\underset"?null:i,sub:n==="\\underset"?i:null};return{type:"mclass",mode:r.mode,mclass:u,body:[l],isCharacterBox:qt(l)}},htmlBuilder:mo,mathmlBuilder:po});Z({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"pmb",mode:r.mode,mclass:S0(t[0]),body:Re(t[0])}},htmlBuilder(e,t){var r=He(e.body,t,!0),n=z([e.mclass],r,t);return n.style.textShadow="0.02em 0.01em 0.04px",n},mathmlBuilder(e,t){var r=dt(e.body,t),n=new G("mstyle",r);return n.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),n}});var C3={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},Xu=()=>({type:"styling",body:[],mode:"math",style:"display",resetFont:!0}),$u=e=>e.type==="textord"&&e.text==="@",_3=(e,t)=>(e.type==="mathord"||e.type==="atom")&&e.text===t;function I3(e,t,r){var n=C3[e];switch(n){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(n,[t[0]],[t[1]]);case"\\uparrow":case"\\downarrow":{var a=r.callFunction("\\\\cdleft",[t[0]],[]),i={type:"atom",text:n,mode:"math",family:"rel"},u=r.callFunction("\\Big",[i],[]),s=r.callFunction("\\\\cdright",[t[1]],[]),l={type:"ordgroup",mode:"math",body:[a,u,s]};return r.callFunction("\\\\cdparent",[l],[])}case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var c={type:"textord",text:"\\Vert",mode:"math"};return r.callFunction("\\Big",[c],[])}default:return{type:"textord",text:" ",mode:"math"}}}function N3(e){var t=[];for(e.gullet.beginGroup(),e.gullet.macros.set("\\cr","\\\\\\relax"),e.gullet.beginGroup();;){t.push(e.parseExpression(!1,"\\\\")),e.gullet.endGroup(),e.gullet.beginGroup();var r=e.fetch().text;if(r==="&"||r==="\\\\")e.consume();else if(r==="\\end"){t[t.length-1].length===0&&t.pop();break}else throw new Y("Expected \\\\ or \\cr or \\end",e.nextToken)}for(var n=[],a=[n],i=0;iAV".includes(c))for(var f=0;f<2;f++){for(var g=!0,p=l+1;pAV=|." after @',u[l]);var x=I3(c,d,e),S={type:"styling",body:[x],mode:"math",style:"display",resetFont:!0};n.push(S),s=Xu()}i%2===0?n.push(s):n.shift(),n=[],a.push(n)}e.gullet.endGroup(),e.gullet.endGroup();var D=new Array(a[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25});return{type:"array",mode:"math",body:a,arraystretch:1,addJot:!0,rowGaps:[null],cols:D,colSeparationType:"CD",hLinesBeforeRow:new Array(a.length+1).fill([])}}Z({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:n}=e;return{type:"cdlabel",mode:r.mode,side:n.slice(4),label:t[0]}},htmlBuilder(e,t){var r=t.havingStyle(t.style.sup()),n=Lr(Te(e.label,r,t),t);return n.classes.push("cd-label-"+e.side),n.style.bottom=V(.8-n.depth),n.height=0,n.depth=0,n},mathmlBuilder(e,t){var r=new G("mrow",[Ae(e.label,t)]);return r=new G("mpadded",[r]),r.setAttribute("width","0"),e.side==="left"&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),r=new G("mstyle",[r]),r.setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}});Z({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(e,t){var{parser:r}=e;return{type:"cdlabelparent",mode:r.mode,fragment:t[0]}},htmlBuilder(e,t){var r=Lr(Te(e.fragment,t),t);return r.classes.push("cd-vert-arrow"),r},mathmlBuilder(e,t){return new G("mrow",[Ae(e.fragment,t)])}});Z({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(e,t){for(var{parser:r}=e,n=ce(t[0],"ordgroup"),a=n.body,i="",u=0;u=1114111)throw new Y("\\@char with invalid code point "+i);return l<=65535?c=String.fromCharCode(l):(l-=65536,c=String.fromCharCode((l>>10)+55296,(l&1023)+56320)),{type:"textord",mode:r.mode,text:c}}});var go=(e,t)=>{var r=He(e.body,t.withColor(e.color),!1);return Gt(r)},bo=(e,t)=>{var r=dt(e.body,t.withColor(e.color)),n=new G("mstyle",r);return n.setAttribute("mathcolor",e.color),n};Z({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(e,t){var{parser:r}=e,n=ce(t[0],"color-token").color,a=t[1];return{type:"color",mode:r.mode,color:n,body:Re(a)}},htmlBuilder:go,mathmlBuilder:bo});Z({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(e,t){var{parser:r,breakOnTokenText:n}=e,a=ce(t[0],"color-token").color;r.gullet.macros.set("\\current@color",a);var i=r.parseExpression(!0,n);return{type:"color",mode:r.mode,color:a,body:i}},htmlBuilder:go,mathmlBuilder:bo});Z({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(e,t,r){var{parser:n}=e,a=n.gullet.future().text==="["?n.parseSizeGroup(!0):null,i=!n.settings.displayMode||!n.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:n.mode,newLine:i,size:a&&ce(a,"size").value}},htmlBuilder(e,t){var r=z(["mspace"],[],t);return e.newLine&&(r.classes.push("newline"),e.size&&(r.style.marginTop=V(Ie(e.size,t)))),r},mathmlBuilder(e,t){var r=new G("mspace");return e.newLine&&(r.setAttribute("linebreak","newline"),e.size&&r.setAttribute("height",V(Ie(e.size,t)))),r}});var qa={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},Eo=e=>{var t=e.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(t))throw new Y("Expected a control sequence",e);return t},D3=e=>{var t=e.gullet.popToken();return t.text==="="&&(t=e.gullet.popToken(),t.text===" "&&(t=e.gullet.popToken())),t},To=(e,t,r,n)=>{var a=e.gullet.macros.get(r.text);a==null&&(r.noexpand=!0,a={tokens:[r],numArgs:0,unexpandable:!e.gullet.isExpandable(r.text)}),e.gullet.macros.set(t,a,n)};Z({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(e){var{parser:t,funcName:r}=e;t.consumeSpaces();var n=t.fetch();if(qa[n.text])return(r==="\\global"||r==="\\\\globallong")&&(n.text=qa[n.text]),ce(t.parseFunction(),"internal");throw new Y("Invalid token after macro prefix",n)}});Z({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,n=t.gullet.popToken(),a=n.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(a))throw new Y("Expected a control sequence",n);for(var i=0,u,s=[[]];t.gullet.future().text!=="{";)if(n=t.gullet.popToken(),n.text==="#"){if(t.gullet.future().text==="{"){u=t.gullet.future(),s[i].push("{");break}if(n=t.gullet.popToken(),!/^[1-9]$/.test(n.text))throw new Y('Invalid argument number "'+n.text+'"');if(parseInt(n.text)!==i+1)throw new Y('Argument number "'+n.text+'" out of order');i++,s.push([])}else{if(n.text==="EOF")throw new Y("Expected a macro definition");s[i].push(n.text)}var{tokens:l}=t.gullet.consumeArg();return u&&l.unshift(u),(r==="\\edef"||r==="\\xdef")&&(l=t.gullet.expandTokens(l),l.reverse()),t.gullet.macros.set(a,{tokens:l,numArgs:i,delimiters:s},r===qa[r]),{type:"internal",mode:t.mode}}});Z({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,n=Eo(t.gullet.popToken());t.gullet.consumeSpaces();var a=D3(t);return To(t,n,a,r==="\\\\globallet"),{type:"internal",mode:t.mode}}});Z({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,n=Eo(t.gullet.popToken()),a=t.gullet.popToken(),i=t.gullet.popToken();return To(t,n,i,r==="\\\\globalfuture"),t.gullet.pushToken(i),t.gullet.pushToken(a),{type:"internal",mode:t.mode}}});var tn=function(t,r,n){var a=we.math[t]&&we.math[t].replace,i=Ei(a||t,r,n);if(!i)throw new Error("Unsupported symbol "+t+" and font size "+r+".");return i},ki=function(t,r,n,a){var i=n.havingBaseStyle(r),u=z(a.concat(i.sizingClasses(n)),[t],n),s=i.sizeMultiplier/n.sizeMultiplier;return u.height*=s,u.depth*=s,u.maxFontSize=i.sizeMultiplier,u},xo=function(t,r,n){var a=r.havingBaseStyle(n),i=(1-r.sizeMultiplier/a.sizeMultiplier)*r.fontMetrics().axisHeight;t.classes.push("delimcenter"),t.style.top=V(i),t.height-=i,t.depth+=i},O3=function(t,r,n,a,i,u){var s=Qe(t,"Main-Regular",i,a),l=ki(s,r,a,u);return xo(l,a,r),l},L3=function(t,r,n,a){return Qe(t,"Size"+r+"-Regular",n,a)},yo=function(t,r,n,a,i,u){var s=L3(t,r,i,a),l=ki(z(["delimsizing","size"+r],[s],a),oe.TEXT,a,u);return n&&xo(l,a,oe.TEXT),l},ua=function(t,r,n){var a;r==="Size1-Regular"?a="delim-size1":a="delim-size4";var i=z(["delimsizinginner",a],[z([],[Qe(t,r,n)])]);return{type:"elem",elem:i}},sa=function(t,r,n){var a=wt["Size4-Regular"][t.charCodeAt(0)]?wt["Size4-Regular"][t.charCodeAt(0)][4]:wt["Size1-Regular"][t.charCodeAt(0)][4],i=new Zt("inner",q4(t,Math.round(1e3*r))),u=new zt([i],{width:V(a),height:V(r),style:"width:"+V(a),viewBox:"0 0 "+1e3*a+" "+Math.round(1e3*r),preserveAspectRatio:"xMinYMin"}),s=er([],[u],n);return s.height=r,s.style.height=V(r),s.style.width=V(a),{type:"elem",elem:s}},Ya=.008,Vn={type:"kern",size:-1*Ya},R3=new Set(["|","\\lvert","\\rvert","\\vert"]),M3=new Set(["\\|","\\lVert","\\rVert","\\Vert"]),vo=function(t,r,n,a,i,u){var s,l,c,d,f="",g=0;s=c=d=t,l=null;var p="Size1-Regular";t==="\\uparrow"?c=d="⏐":t==="\\Uparrow"?c=d="‖":t==="\\downarrow"?s=c="⏐":t==="\\Downarrow"?s=c="‖":t==="\\updownarrow"?(s="\\uparrow",c="⏐",d="\\downarrow"):t==="\\Updownarrow"?(s="\\Uparrow",c="‖",d="\\Downarrow"):R3.has(t)?(c="∣",f="vert",g=333):M3.has(t)?(c="∥",f="doublevert",g=556):t==="["||t==="\\lbrack"?(s="⎡",c="⎢",d="⎣",p="Size4-Regular",f="lbrack",g=667):t==="]"||t==="\\rbrack"?(s="⎤",c="⎥",d="⎦",p="Size4-Regular",f="rbrack",g=667):t==="\\lfloor"||t==="⌊"?(c=s="⎢",d="⎣",p="Size4-Regular",f="lfloor",g=667):t==="\\lceil"||t==="⌈"?(s="⎡",c=d="⎢",p="Size4-Regular",f="lceil",g=667):t==="\\rfloor"||t==="⌋"?(c=s="⎥",d="⎦",p="Size4-Regular",f="rfloor",g=667):t==="\\rceil"||t==="⌉"?(s="⎤",c=d="⎥",p="Size4-Regular",f="rceil",g=667):t==="("||t==="\\lparen"?(s="⎛",c="⎜",d="⎝",p="Size4-Regular",f="lparen",g=875):t===")"||t==="\\rparen"?(s="⎞",c="⎟",d="⎠",p="Size4-Regular",f="rparen",g=875):t==="\\{"||t==="\\lbrace"?(s="⎧",l="⎨",d="⎩",c="⎪",p="Size4-Regular"):t==="\\}"||t==="\\rbrace"?(s="⎫",l="⎬",d="⎭",c="⎪",p="Size4-Regular"):t==="\\lgroup"||t==="⟮"?(s="⎧",d="⎩",c="⎪",p="Size4-Regular"):t==="\\rgroup"||t==="⟯"?(s="⎫",d="⎭",c="⎪",p="Size4-Regular"):t==="\\lmoustache"||t==="⎰"?(s="⎧",d="⎭",c="⎪",p="Size4-Regular"):(t==="\\rmoustache"||t==="⎱")&&(s="⎫",d="⎩",c="⎪",p="Size4-Regular");var x=tn(s,p,i),S=x.height+x.depth,D=tn(c,p,i),_=D.height+D.depth,N=tn(d,p,i),M=N.height+N.depth,W=0,j=1;if(l!==null){var L=tn(l,p,i);W=L.height+L.depth,j=2}var ee=S+M+W,re=Math.max(0,Math.ceil((r-ee)/(j*_))),K=ee+re*j*_,R=a.fontMetrics().axisHeight;n&&(R*=a.sizeMultiplier);var J=K/2-R,Q=[];if(f.length>0){var be=K-S-M,ne=Math.round(K*1e3),X=Y4(f,Math.round(be*1e3)),me=new Zt(f,X),ke=V(g/1e3),ze=V(ne/1e3),at=new zt([me],{width:ke,height:ze,viewBox:"0 0 "+g+" "+ne}),w=er([],[at],a);w.height=ne/1e3,w.style.width=ke,w.style.height=ze,Q.push({type:"elem",elem:w})}else{if(Q.push(ua(d,p,i)),Q.push(Vn),l===null){var Oe=K-S-M+2*Ya;Q.push(sa(c,Oe,a))}else{var Xe=(K-S-M-W)/2+2*Ya;Q.push(sa(c,Xe,a)),Q.push(Vn),Q.push(ua(l,p,i)),Q.push(Vn),Q.push(sa(c,Xe,a))}Q.push(Vn),Q.push(ua(s,p,i))}var C=a.havingBaseStyle(oe.TEXT),Ye=Ee({positionType:"bottom",positionData:J,children:Q});return ki(z(["delimsizing","mult"],[Ye],C),oe.TEXT,a,u)},la=80,oa=.08,ca=function(t,r,n,a,i){var u=U4(t,a,n),s=new Zt(t,u),l=new zt([s],{width:"400em",height:V(r),viewBox:"0 0 400000 "+n,preserveAspectRatio:"xMinYMin slice"});return er(["hide-tail"],[l],i)},P3=function(t,r){var n=r.havingBaseSizing(),a=Co("\\surd",t*n.sizeMultiplier,wo,n),i=n.sizeMultiplier,u=Math.max(0,r.minRuleThickness-r.fontMetrics().sqrtRuleThickness),s,l,c,d,f;return a.type==="small"?(d=1e3+1e3*u+la,t<1?i=1:t<1.4&&(i=.7),l=(1+u+oa)/i,c=(1+u)/i,s=ca("sqrtMain",l,d,u,r),s.style.minWidth="0.853em",f=.833/i):a.type==="large"?(d=(1e3+la)*sn[a.size],c=(sn[a.size]+u)/i,l=(sn[a.size]+u+oa)/i,s=ca("sqrtSize"+a.size,l,d,u,r),s.style.minWidth="1.02em",f=1/i):(l=t+u+oa,c=t+u,d=Math.floor(1e3*t+u)+la,s=ca("sqrtTall",l,d,u,r),s.style.minWidth="0.742em",f=1.056),s.height=c,s.style.height=V(l),{span:s,advanceWidth:f,ruleWidth:(r.fontMetrics().sqrtRuleThickness+u)*i}},Ao=new Set(["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","\\surd"]),B3=new Set(["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱"]),ko=new Set(["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"]),sn=[0,1.2,1.8,2.4,3],So=function(t,r,n,a,i){if(t==="<"||t==="\\lt"||t==="⟨"?t="\\langle":(t===">"||t==="\\gt"||t==="⟩")&&(t="\\rangle"),Ao.has(t)||ko.has(t))return yo(t,r,!1,n,a,i);if(B3.has(t))return vo(t,sn[r],!1,n,a,i);throw new Y("Illegal delimiter: '"+t+"'")},F3=[{type:"small",style:oe.SCRIPTSCRIPT},{type:"small",style:oe.SCRIPT},{type:"small",style:oe.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],H3=[{type:"small",style:oe.SCRIPTSCRIPT},{type:"small",style:oe.SCRIPT},{type:"small",style:oe.TEXT},{type:"stack"}],wo=[{type:"small",style:oe.SCRIPTSCRIPT},{type:"small",style:oe.SCRIPT},{type:"small",style:oe.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],z3=function(t){if(t.type==="small")return"Main-Regular";if(t.type==="large")return"Size"+t.size+"-Regular";if(t.type==="stack")return"Size4-Regular";var r=t.type;throw new Error("Add support for delim type '"+r+"' here.")},Co=function(t,r,n,a){for(var i=Math.min(2,3-a.style.size),u=i;ur)return s}return n[n.length-1]},Ga=function(t,r,n,a,i,u){t==="<"||t==="\\lt"||t==="⟨"?t="\\langle":(t===">"||t==="\\gt"||t==="⟩")&&(t="\\rangle");var s;ko.has(t)?s=F3:Ao.has(t)?s=wo:s=H3;var l=Co(t,r,s,a);return l.type==="small"?O3(t,l.style,n,a,i,u):l.type==="large"?yo(t,l.size,n,a,i,u):vo(t,r,n,a,i,u)},ha=function(t,r,n,a,i,u){var s=a.fontMetrics().axisHeight*a.sizeMultiplier,l=901,c=5/a.fontMetrics().ptPerEm,d=Math.max(r-s,n+s),f=Math.max(d/500*l,2*d-c);return Ga(t,f,!0,a,i,u)},Qu={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},U3=new Set(["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","<",">","\\langle","⟨","\\rangle","⟩","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."]);function Ku(e){return"isMiddle"in e}function w0(e,t){var r=k0(e);if(r&&U3.has(r.text))return r;throw r?new Y("Invalid delimiter '"+r.text+"' after '"+t.funcName+"'",e):new Y("Invalid delimiter type '"+e.type+"'",e)}Z({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:(e,t)=>{var r=w0(t[0],e);return{type:"delimsizing",mode:e.parser.mode,size:Qu[e.funcName].size,mclass:Qu[e.funcName].mclass,delim:r.text}},htmlBuilder:(e,t)=>e.delim==="."?z([e.mclass]):So(e.delim,e.size,t,e.mode,[e.mclass]),mathmlBuilder:e=>{var t=[];e.delim!=="."&&t.push(bt(e.delim,e.mode));var r=new G("mo",t);e.mclass==="mopen"||e.mclass==="mclose"?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r.setAttribute("stretchy","true");var n=V(sn[e.size]);return r.setAttribute("minsize",n),r.setAttribute("maxsize",n),r}});function Ju(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}Z({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=e.parser.gullet.macros.get("\\current@color");if(r&&typeof r!="string")throw new Y("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:e.parser.mode,delim:w0(t[0],e).text,color:r}}});Z({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=w0(t[0],e),n=e.parser;++n.leftrightDepth;var a=n.parseExpression(!1);--n.leftrightDepth,n.expect("\\right",!1);var i=ce(n.parseFunction(),"leftright-right");return{type:"leftright",mode:n.mode,body:a,left:r.text,right:i.delim,rightColor:i.color}},htmlBuilder:(e,t)=>{Ju(e);for(var r=He(e.body,t,!0,["mopen","mclose"]),n=0,a=0,i=!1,u=0;u{Ju(e);var r=dt(e.body,t);if(e.left!=="."){var n=new G("mo",[bt(e.left,e.mode)]);n.setAttribute("fence","true"),r.unshift(n)}if(e.right!=="."){var a=new G("mo",[bt(e.right,e.mode)]);a.setAttribute("fence","true"),e.rightColor&&a.setAttribute("mathcolor",e.rightColor),r.push(a)}return yi(r)}});Z({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=w0(t[0],e);if(!e.parser.leftrightDepth)throw new Y("\\middle without preceding \\left",r);return{type:"middle",mode:e.parser.mode,delim:r.text}},htmlBuilder:(e,t)=>{var r;return e.delim==="."?r=bn(t,[]):(r=So(e.delim,1,t,e.mode,[]),r.isMiddle={delim:e.delim,options:t}),r},mathmlBuilder:(e,t)=>{var r=e.delim==="\\vert"||e.delim==="|"?bt("|","text"):bt(e.delim,e.mode),n=new G("mo",[r]);return n.setAttribute("fence","true"),n.setAttribute("lspace","0.05em"),n.setAttribute("rspace","0.05em"),n}});var C0=(e,t)=>{var r=Lr(Te(e.body,t),t),n=e.label.slice(1),a=t.sizeMultiplier,i,u,s=qt(e.body);if(n==="sout")i=z(["stretchy","sout"]),i.height=t.fontMetrics().defaultRuleThickness/a,u=-.5*t.fontMetrics().xHeight;else if(n==="phase"){var l=Ie({number:.6,unit:"pt"},t),c=Ie({number:.35,unit:"ex"},t),d=t.havingBaseSizing();a=a/d.sizeMultiplier;var f=r.height+r.depth+l+c;r.style.paddingLeft=V(f/2+l);var g=Math.floor(1e3*f*a),p=H4(g),x=new zt([new Zt("phase",p)],{width:"400em",height:V(g/1e3),viewBox:"0 0 400000 "+g,preserveAspectRatio:"xMinYMin slice"});i=er(["hide-tail"],[x],t),i.style.height=V(f),u=r.depth+l+c}else{/cancel/.test(n)?s||r.classes.push("cancel-pad"):n==="angl"?r.classes.push("anglpad"):r.classes.push("boxpad");var S,D,_=0;/box/.test(n)?(_=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness),S=t.fontMetrics().fboxsep+(n==="colorbox"?0:_),D=S):n==="angl"?(_=Math.max(t.fontMetrics().defaultRuleThickness,t.minRuleThickness),S=4*_,D=Math.max(0,.25-r.depth)):(S=s?.2:0,D=S),i=v3(r,n,S,D,t),/fbox|boxed|fcolorbox/.test(n)?(i.style.borderStyle="solid",i.style.borderWidth=V(_)):n==="angl"&&_!==.049&&(i.style.borderTopWidth=V(_),i.style.borderRightWidth=V(_)),u=r.depth+D,e.backgroundColor&&(i.style.backgroundColor=e.backgroundColor,e.borderColor&&(i.style.borderColor=e.borderColor))}var N;if(e.backgroundColor)N=Ee({positionType:"individualShift",children:[{type:"elem",elem:i,shift:u},{type:"elem",elem:r,shift:0}]});else{var M=/cancel|phase/.test(n)?["svg-align"]:[];N=Ee({positionType:"individualShift",children:[{type:"elem",elem:r,shift:0},{type:"elem",elem:i,shift:u,wrapperClasses:M}]})}return/cancel/.test(n)&&(N.height=r.height,N.depth=r.depth),/cancel/.test(n)&&!s?z(["mord","cancel-lap"],[N],t):z(["mord"],[N],t)},_0=(e,t)=>{var r,n=new G(e.label.includes("colorbox")?"mpadded":"menclose",[Ae(e.body,t)]);switch(e.label){case"\\cancel":n.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":n.setAttribute("notation","downdiagonalstrike");break;case"\\phase":n.setAttribute("notation","phasorangle");break;case"\\sout":n.setAttribute("notation","horizontalstrike");break;case"\\fbox":n.setAttribute("notation","box");break;case"\\angl":n.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(r=t.fontMetrics().fboxsep*t.fontMetrics().ptPerEm,n.setAttribute("width","+"+2*r+"pt"),n.setAttribute("height","+"+2*r+"pt"),n.setAttribute("lspace",r+"pt"),n.setAttribute("voffset",r+"pt"),e.label==="\\fcolorbox"){var a=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness);n.setAttribute("style","border: "+V(a)+" solid "+e.borderColor)}break;case"\\xcancel":n.setAttribute("notation","updiagonalstrike downdiagonalstrike");break}return e.backgroundColor&&n.setAttribute("mathbackground",e.backgroundColor),n};Z({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","hbox"]},handler(e,t,r){var{parser:n,funcName:a}=e,i=ce(t[0],"color-token").color,u=t[1];return{type:"enclose",mode:n.mode,label:a,backgroundColor:i,body:u}},htmlBuilder:C0,mathmlBuilder:_0});Z({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","hbox"]},handler(e,t,r){var{parser:n,funcName:a}=e,i=ce(t[0],"color-token").color,u=ce(t[1],"color-token").color,s=t[2];return{type:"enclose",mode:n.mode,label:a,backgroundColor:u,borderColor:i,body:s}},htmlBuilder:C0,mathmlBuilder:_0});Z({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\fbox",body:t[0]}}});Z({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\phase"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:n}=e,a=t[0];return{type:"enclose",mode:r.mode,label:n,body:a}},htmlBuilder:C0,mathmlBuilder:_0});Z({type:"enclose",names:["\\sout"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r,funcName:n}=e;r.mode==="math"&&r.settings.reportNonstrict("mathVsSout","LaTeX's \\sout works only in text mode");var a=t[0];return{type:"enclose",mode:r.mode,label:n,body:a}},htmlBuilder:C0,mathmlBuilder:_0});Z({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(e,t){var{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\angl",body:t[0]}}});var _o={};function Nt(e){for(var{type:t,names:r,props:n,handler:a,htmlBuilder:i,mathmlBuilder:u}=e,s={type:t,numArgs:n.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:a},l=0;l{var t=e.parser.settings;if(!t.displayMode)throw new Y("{"+e.envName+"} can be used only in display mode.")},q3=new Set(["gather","gather*"]);function Si(e){if(!e.includes("ed"))return!e.includes("*")}function ar(e,t,r){var{hskipBeforeAndAfter:n,addJot:a,cols:i,arraystretch:u,colSeparationType:s,autoTag:l,singleRow:c,emptySingleRow:d,maxNumCols:f,leqno:g}=t;if(e.gullet.beginGroup(),c||e.gullet.macros.set("\\cr","\\\\\\relax"),!u){var p=e.gullet.expandMacroAsText("\\arraystretch");if(p==null)u=1;else if(u=parseFloat(p),!u||u<0)throw new Y("Invalid \\arraystretch: "+p)}e.gullet.beginGroup();var x=[],S=[x],D=[],_=[],N=l!=null?[]:void 0;function M(){l&&e.gullet.macros.set("\\@eqnsw","1",!0)}function W(){N&&(e.gullet.macros.get("\\df@tag")?(N.push(e.subparse([new ot("\\df@tag")])),e.gullet.macros.set("\\df@tag",void 0,!0)):N.push(!!l&&e.gullet.macros.get("\\@eqnsw")==="1"))}for(M(),_.push(Zu(e));;){var j=e.parseExpression(!1,c?"\\end":"\\\\");e.gullet.endGroup(),e.gullet.beginGroup();var L={type:"ordgroup",mode:e.mode,body:j};r&&(L={type:"styling",mode:e.mode,style:r,resetFont:!0,body:[L]}),x.push(L);var ee=e.fetch().text;if(ee==="&"){if(f&&x.length===f){if(c||s)throw new Y("Too many tab characters: &",e.nextToken);e.settings.reportNonstrict("textEnv","Too few columns specified in the {array} column argument.")}e.consume()}else if(ee==="\\end"){W(),x.length===1&&L.type==="styling"&&L.body.length===1&&L.body[0].type==="ordgroup"&&L.body[0].body.length===0&&(S.length>1||!d)&&S.pop(),_.length0&&(M+=.25),c.push({pos:M,isDashed:ue[he]})}for(W(u[0]),n=0;n0&&(J+=N,eeue))for(n=0;n=s)){var it=void 0;if(a>0||t.hskipBeforeAndAfter){var Lt,ir;it=(Lt=(ir=C)==null?void 0:ir.pregap)!=null?Lt:g,it!==0&&(X=z(["arraycolsep"],[]),X.style.width=V(it),ne.push(X))}var _n=[];for(n=0;n0){for(var R0=Or("hline",r,d),M0=Or("hdashline",r,d),Vr=[{type:"elem",elem:ur,shift:0}];c.length>0;){var Ln=c.pop(),Rn=Ln.pos-Q;Ln.isDashed?Vr.push({type:"elem",elem:M0,shift:Rn}):Vr.push({type:"elem",elem:R0,shift:Rn})}ur=Ee({positionType:"individualShift",children:Vr})}if(ke.length===0)return z(["mord"],[ur],r);var B=Ee({positionType:"individualShift",children:ke}),$=z(["tag"],[B],r);return Gt([ur,$])},Y3={c:"center ",l:"left ",r:"right "},Ot=function(t,r){for(var n=[],a=new G("mtd",[],["mtr-glue"]),i=new G("mtd",[],["mml-eqn-num"]),u=0;u0){var x=t.cols,S="",D=!1,_=0,N=x.length;x[0].type==="separator"&&(g+="top ",_=1),x[x.length-1].type==="separator"&&(g+="bottom ",N-=1);for(var M=_;M0?"left ":"",g+=K[K.length-1].length>0?"right ":"";for(var R=1;R0&&p&&(D=1),n[x]={type:"align",align:S,pregap:D,postgap:0}}return u.colSeparationType=p?"align":"alignat",u};Nt({type:"array",names:["array","darray"],props:{numArgs:1},handler(e,t){var r=k0(t[0]),n=r?[t[0]]:ce(t[0],"ordgroup").body,a=n.map(function(u){var s=A0(u),l=s.text;if("lcr".includes(l))return{type:"align",align:l};if(l==="|")return{type:"separator",separator:"|"};if(l===":")return{type:"separator",separator:":"};throw new Y("Unknown column alignment: "+l,u)}),i={cols:a,hskipBeforeAndAfter:!0,maxNumCols:a.length};return ar(e.parser,i,wi(e.envName))},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(e){var t={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[e.envName.replace("*","")],r="c",n={hskipBeforeAndAfter:!1,cols:[{type:"align",align:r}]};if(e.envName.charAt(e.envName.length-1)==="*"){var a=e.parser;if(a.consumeSpaces(),a.fetch().text==="["){if(a.consume(),a.consumeSpaces(),r=a.fetch().text,!"lcr".includes(r))throw new Y("Expected l or c or r",a.nextToken);a.consume(),a.consumeSpaces(),a.expect("]"),a.consume(),n.cols=[{type:"align",align:r}]}}var i=ar(e.parser,n,wi(e.envName)),u=Math.max(0,...i.body.map(s=>s.length));return i.cols=new Array(u).fill({type:"align",align:r}),t?{type:"leftright",mode:e.mode,body:[i],left:t[0],right:t[1],rightColor:void 0}:i},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(e){var t={arraystretch:.5},r=ar(e.parser,t,"script");return r.colSeparationType="small",r},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["subarray"],props:{numArgs:1},handler(e,t){var r=k0(t[0]),n=r?[t[0]]:ce(t[0],"ordgroup").body,a=n.map(function(s){var l=A0(s),c=l.text;if("lc".includes(c))return{type:"align",align:c};throw new Y("Unknown column alignment: "+c,s)});if(a.length>1)throw new Y("{subarray} can contain only one column");var i={cols:a,hskipBeforeAndAfter:!1,arraystretch:.5},u=ar(e.parser,i,"script");if(u.body.length>0&&u.body[0].length>1)throw new Y("{subarray} can contain only one column");return u},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(e){var t={arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},r=ar(e.parser,t,wi(e.envName));return{type:"leftright",mode:e.mode,body:[r],left:e.envName.includes("r")?".":"\\{",right:e.envName.includes("r")?"\\}":".",rightColor:void 0}},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:No,htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(e){q3.has(e.envName)&&I0(e);var t={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:Si(e.envName),emptySingleRow:!0,leqno:e.parser.settings.leqno};return ar(e.parser,t,"display")},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:No,htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(e){I0(e);var t={autoTag:Si(e.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:e.parser.settings.leqno};return ar(e.parser,t,"display")},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["CD"],props:{numArgs:0},handler(e){return I0(e),N3(e.parser)},htmlBuilder:Dt,mathmlBuilder:Ot});E("\\nonumber","\\gdef\\@eqnsw{0}");E("\\notag","\\nonumber");Z({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(e,t){throw new Y(e.funcName+" valid only within array environment")}});var es=_o;Z({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(e,t){var{parser:r,funcName:n}=e,a=t[0];if(a.type!=="ordgroup")throw new Y("Invalid environment name",a);for(var i="",u=0;u{var r=e.font,n=t.withFont(r);return Te(e.body,n)},Oo=(e,t)=>{var r=e.font,n=t.withFont(r);return Ae(e.body,n)},ts={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak"};Z({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=u0(t[0]),i=n;return i in ts&&(i=ts[i]),{type:"font",mode:r.mode,font:i.slice(1),body:a}},htmlBuilder:Do,mathmlBuilder:Oo});Z({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:(e,t)=>{var{parser:r}=e,n=t[0];return{type:"mclass",mode:r.mode,mclass:S0(n),body:[{type:"font",mode:r.mode,font:"boldsymbol",body:n}],isCharacterBox:qt(n)}}});Z({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:(e,t)=>{var{parser:r,funcName:n,breakOnTokenText:a}=e,{mode:i}=r,u=r.parseExpression(!0,a);return{type:"font",mode:i,font:"math"+n.slice(1),body:{type:"ordgroup",mode:r.mode,body:u}}},htmlBuilder:Do,mathmlBuilder:Oo});var G3=(e,t)=>{var r=t.style,n=r.fracNum(),a=r.fracDen(),i;i=t.havingStyle(n);var u=Te(e.numer,i,t);if(e.continued){var s=8.5/t.fontMetrics().ptPerEm,l=3.5/t.fontMetrics().ptPerEm;u.height=u.height0?x=3*g:x=7*g,S=t.fontMetrics().denom1):(f>0?(p=t.fontMetrics().num2,x=g):(p=t.fontMetrics().num3,x=3*g),S=t.fontMetrics().denom2);var D;if(d){var N=t.fontMetrics().axisHeight;p-u.depth-(N+.5*f){var r=new G("mfrac",[Ae(e.numer,t),Ae(e.denom,t)]);if(!e.hasBarLine)r.setAttribute("linethickness","0px");else if(e.barSize){var n=Ie(e.barSize,t);r.setAttribute("linethickness",V(n))}if(e.leftDelim!=null||e.rightDelim!=null){var a=[];if(e.leftDelim!=null){var i=new G("mo",[new Me(e.leftDelim.replace("\\",""))]);i.setAttribute("fence","true"),a.push(i)}if(a.push(r),e.rightDelim!=null){var u=new G("mo",[new Me(e.rightDelim.replace("\\",""))]);u.setAttribute("fence","true"),a.push(u)}return yi(a)}return r},Lo=(e,t)=>{if(!t)return e;var r={type:"styling",mode:e.mode,style:t,body:[e]};return r};Z({type:"genfrac",names:["\\cfrac","\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=t[0],i=t[1],u,s=null,l=null;switch(n){case"\\cfrac":case"\\dfrac":case"\\frac":case"\\tfrac":u=!0;break;case"\\\\atopfrac":u=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":u=!1,s="(",l=")";break;case"\\\\bracefrac":u=!1,s="\\{",l="\\}";break;case"\\\\brackfrac":u=!1,s="[",l="]";break;default:throw new Error("Unrecognized genfrac command")}var c=n==="\\cfrac",d=null;return c||n.startsWith("\\d")?d="display":n.startsWith("\\t")&&(d="text"),Lo({type:"genfrac",mode:r.mode,numer:a,denom:i,continued:c,hasBarLine:u,leftDelim:s,rightDelim:l,barSize:null},d)},htmlBuilder:G3,mathmlBuilder:V3});Z({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(e){var{parser:t,funcName:r,token:n}=e,a;switch(r){case"\\over":a="\\frac";break;case"\\choose":a="\\binom";break;case"\\atop":a="\\\\atopfrac";break;case"\\brace":a="\\\\bracefrac";break;case"\\brack":a="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:t.mode,replaceWith:a,token:n}}});var rs=["display","text","script","scriptscript"],ns=function(t){var r=null;return t.length>0&&(r=t,r=r==="."?null:r),r};Z({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(e,t){var{parser:r}=e,n=t[4],a=t[5],i=u0(t[0]),u=i.type==="atom"&&i.family==="open"?ns(i.text):null,s=u0(t[1]),l=s.type==="atom"&&s.family==="close"?ns(s.text):null,c=ce(t[2],"size"),d,f=null;c.isBlank?d=!0:(f=c.value,d=f.number>0);var g=null,p=t[3];if(p.type==="ordgroup"){if(p.body.length>0){var x=ce(p.body[0],"textord");g=rs[Number(x.text)]}}else p=ce(p,"textord"),g=rs[Number(p.text)];return Lo({type:"genfrac",mode:r.mode,numer:n,denom:a,continued:!1,hasBarLine:d,barSize:f,leftDelim:u,rightDelim:l},g)}});Z({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(e,t){var{parser:r,funcName:n,token:a}=e;return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:ce(t[0],"size").value,token:a}}});Z({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=t[0],i=ce(t[1],"infix").size;if(!i)throw new Error("\\\\abovefrac expected size, but got "+String(i));var u=t[2],s=i.number>0;return{type:"genfrac",mode:r.mode,numer:a,denom:u,continued:!1,hasBarLine:s,barSize:i,leftDelim:null,rightDelim:null}}});var Ro=(e,t)=>{var r=t.style,n,a;e.type==="supsub"?(n=e.sup?Te(e.sup,t.havingStyle(r.sup()),t):Te(e.sub,t.havingStyle(r.sub()),t),a=ce(e.base,"horizBrace")):a=ce(e,"horizBrace");var i=Te(a.base,t.havingBaseStyle(oe.DISPLAY)),u=v0(a,t),s;if(a.isOver?s=Ee({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:.1},{type:"elem",elem:u,wrapperClasses:["svg-align"]}]}):s=Ee({positionType:"bottom",positionData:i.depth+.1+u.height,children:[{type:"elem",elem:u,wrapperClasses:["svg-align"]},{type:"kern",size:.1},{type:"elem",elem:i}]}),n){var l=z(["minner",a.isOver?"mover":"munder"],[s],t);a.isOver?s=Ee({positionType:"firstBaseline",children:[{type:"elem",elem:l},{type:"kern",size:.2},{type:"elem",elem:n}]}):s=Ee({positionType:"bottom",positionData:l.depth+.2+n.height+n.depth,children:[{type:"elem",elem:n},{type:"kern",size:.2},{type:"elem",elem:l}]})}return z(["minner",a.isOver?"mover":"munder"],[s],t)},j3=(e,t)=>{var r=y0(e.label);return new G(e.isOver?"mover":"munder",[Ae(e.base,t),r])};Z({type:"horizBrace",names:["\\overbrace","\\underbrace","\\overbracket","\\underbracket"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:n}=e;return{type:"horizBrace",mode:r.mode,label:n,isOver:n.includes("\\over"),base:t[0]}},htmlBuilder:Ro,mathmlBuilder:j3});Z({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,n=t[1],a=ce(t[0],"url").url;return r.settings.isTrusted({command:"\\href",url:a})?{type:"href",mode:r.mode,href:a,body:Re(n)}:r.formatUnsupportedCmd("\\href")},htmlBuilder:(e,t)=>{var r=He(e.body,t,!1);return i3(e.href,[],r,t)},mathmlBuilder:(e,t)=>{var r=tr(e.body,t);return r instanceof G||(r=new G("mrow",[r])),r.setAttribute("href",e.href),r}});Z({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,n=ce(t[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:n}))return r.formatUnsupportedCmd("\\url");for(var a=[],i=0;i{var{parser:r,funcName:n,token:a}=e,i=ce(t[0],"raw").string,u=t[1];r.settings.strict&&r.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var s,l={};switch(n){case"\\htmlClass":l.class=i,s={command:"\\htmlClass",class:i};break;case"\\htmlId":l.id=i,s={command:"\\htmlId",id:i};break;case"\\htmlStyle":l.style=i,s={command:"\\htmlStyle",style:i};break;case"\\htmlData":{for(var c=i.split(","),d=0;d{var r=He(e.body,t,!1),n=["enclosing"];e.attributes.class&&n.push(...e.attributes.class.trim().split(/\s+/));var a=z(n,r,t);for(var i in e.attributes)i!=="class"&&e.attributes.hasOwnProperty(i)&&a.setAttribute(i,e.attributes[i]);return a},mathmlBuilder:(e,t)=>tr(e.body,t)});Z({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInArgument:!0,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e;return{type:"htmlmathml",mode:r.mode,html:Re(t[0]),mathml:Re(t[1])}},htmlBuilder:(e,t)=>{var r=He(e.html,t,!1);return Gt(r)},mathmlBuilder:(e,t)=>tr(e.mathml,t)});var da=function(t){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(t))return{number:+t,unit:"bp"};var r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t);if(!r)throw new Y("Invalid size: '"+t+"' in \\includegraphics");var n={number:+(r[1]+r[2]),unit:r[3]};if(!Ql(n))throw new Y("Invalid unit: '"+n.unit+"' in \\includegraphics.");return n};Z({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:(e,t,r)=>{var{parser:n}=e,a={number:0,unit:"em"},i={number:.9,unit:"em"},u={number:0,unit:"em"},s="";if(r[0])for(var l=ce(r[0],"raw").string,c=l.split(","),d=0;d{var r=Ie(e.height,t),n=0;e.totalheight.number>0&&(n=Ie(e.totalheight,t)-r);var a=0;e.width.number>0&&(a=Ie(e.width,t));var i={height:V(r+n)};a>0&&(i.width=V(a)),n>0&&(i.verticalAlign=V(-n));var u=new W4(e.src,e.alt,i);return u.height=r,u.depth=n,u},mathmlBuilder:(e,t)=>{var r=new G("mglyph",[]);r.setAttribute("alt",e.alt);var n=Ie(e.height,t),a=0;if(e.totalheight.number>0&&(a=Ie(e.totalheight,t)-n,r.setAttribute("valign",V(-a))),r.setAttribute("height",V(n+a)),e.width.number>0){var i=Ie(e.width,t);r.setAttribute("width",V(i))}return r.setAttribute("src",e.src),r}});Z({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(e,t){var{parser:r,funcName:n}=e,a=ce(t[0],"size");if(r.settings.strict){var i=n[1]==="m",u=a.value.unit==="mu";i?(u||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" supports only mu units, "+("not "+a.value.unit+" units")),r.mode!=="math"&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" works only in math mode")):u&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:a.value}},htmlBuilder(e,t){return ro(e.dimension,t)},mathmlBuilder(e,t){var r=Ie(e.dimension,t);return new lo(r)}});Z({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=t[0];return{type:"lap",mode:r.mode,alignment:n.slice(5),body:a}},htmlBuilder:(e,t)=>{var r;e.alignment==="clap"?(r=z([],[Te(e.body,t)]),r=z(["inner"],[r],t)):r=z(["inner"],[Te(e.body,t)]);var n=z(["fix"],[]),a=z([e.alignment],[r,n],t),i=z(["strut"]);return i.style.height=V(a.height+a.depth),a.depth&&(i.style.verticalAlign=V(-a.depth)),a.children.unshift(i),a=z(["thinbox"],[a],t),z(["mord","vbox"],[a],t)},mathmlBuilder:(e,t)=>{var r=new G("mpadded",[Ae(e.body,t)]);if(e.alignment!=="rlap"){var n=e.alignment==="llap"?"-1":"-0.5";r.setAttribute("lspace",n+"width")}return r.setAttribute("width","0px"),r}});Z({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){var{funcName:r,parser:n}=e,a=n.mode;n.switchMode("math");var i=r==="\\("?"\\)":"$",u=n.parseExpression(!1,i);return n.expect(i),n.switchMode(a),{type:"styling",mode:n.mode,style:"text",resetFont:!0,body:u}}});Z({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){throw new Y("Mismatched "+e.funcName)}});var as=(e,t)=>{switch(t.style.size){case oe.DISPLAY.size:return e.display;case oe.TEXT.size:return e.text;case oe.SCRIPT.size:return e.script;case oe.SCRIPTSCRIPT.size:return e.scriptscript;default:return e.text}};Z({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:(e,t)=>{var{parser:r}=e;return{type:"mathchoice",mode:r.mode,display:Re(t[0]),text:Re(t[1]),script:Re(t[2]),scriptscript:Re(t[3])}},htmlBuilder:(e,t)=>{var r=as(e,t),n=He(r,t,!1);return Gt(n)},mathmlBuilder:(e,t)=>{var r=as(e,t);return tr(r,t)}});var Mo=(e,t,r,n,a,i,u)=>{e=z([],[e]);var s=r&&qt(r),l,c;if(t){var d=Te(t,n.havingStyle(a.sup()),n);c={elem:d,kern:Math.max(n.fontMetrics().bigOpSpacing1,n.fontMetrics().bigOpSpacing3-d.depth)}}if(r){var f=Te(r,n.havingStyle(a.sub()),n);l={elem:f,kern:Math.max(n.fontMetrics().bigOpSpacing2,n.fontMetrics().bigOpSpacing4-f.height)}}var g;if(c&&l){var p=n.fontMetrics().bigOpSpacing5+l.elem.height+l.elem.depth+l.kern+e.depth+u;g=Ee({positionType:"bottom",positionData:p,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:l.elem,marginLeft:V(-i)},{type:"kern",size:l.kern},{type:"elem",elem:e},{type:"kern",size:c.kern},{type:"elem",elem:c.elem,marginLeft:V(i)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]})}else if(l){var x=e.height-u;g=Ee({positionType:"top",positionData:x,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:l.elem,marginLeft:V(-i)},{type:"kern",size:l.kern},{type:"elem",elem:e}]})}else if(c){var S=e.depth+u;g=Ee({positionType:"bottom",positionData:S,children:[{type:"elem",elem:e},{type:"kern",size:c.kern},{type:"elem",elem:c.elem,marginLeft:V(i)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]})}else return e;var D=[g];if(l&&i!==0&&!s){var _=z(["mspace"],[],n);_.style.marginRight=V(i),D.unshift(_)}return z(["mop","op-limits"],D,n)},Po=new Set(["\\smallint"]),zr=(e,t)=>{var r,n,a=!1,i;e.type==="supsub"?(r=e.sup,n=e.sub,i=ce(e.base,"op"),a=!0):i=ce(e,"op");var u=t.style,s=!1;u.size===oe.DISPLAY.size&&i.symbol&&!Po.has(i.name)&&(s=!0);var l,c;if(i.symbol){var d=s?"Size2-Regular":"Size1-Regular",f="";if((i.name==="\\oiint"||i.name==="\\oiiint")&&(f=i.name.slice(1),i.name=f==="oiint"?"\\iint":"\\iiint"),l=Qe(i.name,d,"math",t,["mop","op-symbol",s?"large-op":"small-op"]),c=l.italic,f.length>0){var g=ao(f+"Size"+(s?"2":"1"),t);l=Ee({positionType:"individualShift",children:[{type:"elem",elem:l,shift:0},{type:"elem",elem:g,shift:s?.08:0}]}),i.name="\\"+f,l.classes.unshift("mop"),l.italic=c}}else if(i.body){var p=He(i.body,t,!0);p.length===1&&p[0]instanceof ct?(l=p[0],l.classes[0]="mop"):l=z(["mop"],p,t)}else{for(var x=[],S=1;S{var r;if(e.symbol)r=new G("mo",[bt(e.name,e.mode)]),Po.has(e.name)&&r.setAttribute("largeop","false");else if(e.body)r=new G("mo",dt(e.body,t));else{r=new G("mi",[new Me(e.name.slice(1))]);var n=new G("mo",[bt("⁡","text")]);e.parentIsSupSub?r=new G("mrow",[r,n]):r=so([r,n])}return r},W3={"∏":"\\prod","∐":"\\coprod","∑":"\\sum","⋀":"\\bigwedge","⋁":"\\bigvee","⋂":"\\bigcap","⋃":"\\bigcup","⨀":"\\bigodot","⨁":"\\bigoplus","⨂":"\\bigotimes","⨄":"\\biguplus","⨆":"\\bigsqcup"};Z({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","∏","∐","∑","⋀","⋁","⋂","⋃","⨀","⨁","⨂","⨄","⨆"],props:{numArgs:0},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=n;return a.length===1&&(a=W3[a]),{type:"op",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:a}},htmlBuilder:zr,mathmlBuilder:Sn});Z({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var{parser:r}=e,n=t[0];return{type:"op",mode:r.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:Re(n)}},htmlBuilder:zr,mathmlBuilder:Sn});var X3={"∫":"\\int","∬":"\\iint","∭":"\\iiint","∮":"\\oint","∯":"\\oiint","∰":"\\oiiint"};Z({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:zr,mathmlBuilder:Sn});Z({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:zr,mathmlBuilder:Sn});Z({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","∫","∬","∭","∮","∯","∰"],props:{numArgs:0,allowedInArgument:!0},handler(e){var{parser:t,funcName:r}=e,n=r;return n.length===1&&(n=X3[n]),{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:zr,mathmlBuilder:Sn});var Bo=(e,t)=>{var r,n,a=!1,i;e.type==="supsub"?(r=e.sup,n=e.sub,i=ce(e.base,"operatorname"),a=!0):i=ce(e,"operatorname");var u;if(i.body.length>0){for(var s=i.body.map(f=>{var g="text"in f?f.text:void 0;return typeof g=="string"?{type:"textord",mode:f.mode,text:g}:f}),l=He(s,t.withFont("mathrm"),!0),c=0;c{for(var r=dt(e.body,t.withFont("mathrm")),n=!0,a=0;ad.toText()).join("");r=[new Me(s)]}var l=new G("mi",r);l.setAttribute("mathvariant","normal");var c=new G("mo",[bt("⁡","text")]);return e.parentIsSupSub?new G("mrow",[l,c]):so([l,c])};Z({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=t[0];return{type:"operatorname",mode:r.mode,body:Re(a),alwaysHandleSupSub:n==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},htmlBuilder:Bo,mathmlBuilder:$3});E("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");br({type:"ordgroup",htmlBuilder(e,t){return e.semisimple?Gt(He(e.body,t,!1)):z(["mord"],He(e.body,t,!0),t)},mathmlBuilder(e,t){return tr(e.body,t,!0)}});Z({type:"overline",names:["\\overline"],props:{numArgs:1},handler(e,t){var{parser:r}=e,n=t[0];return{type:"overline",mode:r.mode,body:n}},htmlBuilder(e,t){var r=Te(e.body,t.havingCrampedStyle()),n=Or("overline-line",t),a=t.fontMetrics().defaultRuleThickness,i=Ee({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*a},{type:"elem",elem:n},{type:"kern",size:a}]});return z(["mord","overline"],[i],t)},mathmlBuilder(e,t){var r=new G("mo",[new Me("‾")]);r.setAttribute("stretchy","true");var n=new G("mover",[Ae(e.body,t),r]);return n.setAttribute("accent","true"),n}});Z({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,n=t[0];return{type:"phantom",mode:r.mode,body:Re(n)}},htmlBuilder:(e,t)=>{var r=He(e.body,t.withPhantom(),!1);return Gt(r)},mathmlBuilder:(e,t)=>{var r=dt(e.body,t);return new G("mphantom",r)}});E("\\hphantom","\\smash{\\phantom{#1}}");Z({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,n=t[0];return{type:"vphantom",mode:r.mode,body:n}},htmlBuilder:(e,t)=>{var r=z(["inner"],[Te(e.body,t.withPhantom())]),n=z(["fix"],[]);return z(["mord","rlap"],[r,n],t)},mathmlBuilder:(e,t)=>{var r=dt(Re(e.body),t),n=new G("mphantom",r),a=new G("mpadded",[n]);return a.setAttribute("width","0px"),a}});Z({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(e,t){var{parser:r}=e,n=ce(t[0],"size").value,a=t[1];return{type:"raisebox",mode:r.mode,dy:n,body:a}},htmlBuilder(e,t){var r=Te(e.body,t),n=Ie(e.dy,t);return Ee({positionType:"shift",positionData:-n,children:[{type:"elem",elem:r}]})},mathmlBuilder(e,t){var r=new G("mpadded",[Ae(e.body,t)]),n=e.dy.number+e.dy.unit;return r.setAttribute("voffset",n),r}});Z({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(e){var{parser:t}=e;return{type:"internal",mode:t.mode}}});Z({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(e,t,r){var{parser:n}=e,a=r[0],i=ce(t[0],"size"),u=ce(t[1],"size");return{type:"rule",mode:n.mode,shift:a&&ce(a,"size").value,width:i.value,height:u.value}},htmlBuilder(e,t){var r=z(["mord","rule"],[],t),n=Ie(e.width,t),a=Ie(e.height,t),i=e.shift?Ie(e.shift,t):0;return r.style.borderRightWidth=V(n),r.style.borderTopWidth=V(a),r.style.bottom=V(i),r.width=n,r.height=a+i,r.depth=-i,r.maxFontSize=a*1.125*t.sizeMultiplier,r},mathmlBuilder(e,t){var r=Ie(e.width,t),n=Ie(e.height,t),a=e.shift?Ie(e.shift,t):0,i=t.color&&t.getColor()||"black",u=new G("mspace");u.setAttribute("mathbackground",i),u.setAttribute("width",V(r)),u.setAttribute("height",V(n));var s=new G("mpadded",[u]);return a>=0?s.setAttribute("height",V(a)):(s.setAttribute("height",V(a)),s.setAttribute("depth",V(-a))),s.setAttribute("voffset",V(a)),s}});function Fo(e,t,r){for(var n=He(e,t,!1),a=t.sizeMultiplier/r.sizeMultiplier,i=0;i{var r=t.havingSize(e.size);return Fo(e.body,r,t)};Z({type:"sizing",names:is,props:{numArgs:0,allowedInText:!0},handler:(e,t)=>{var{breakOnTokenText:r,funcName:n,parser:a}=e,i=a.parseExpression(!1,r);return{type:"sizing",mode:a.mode,size:is.indexOf(n)+1,body:i}},htmlBuilder:Q3,mathmlBuilder:(e,t)=>{var r=t.havingSize(e.size),n=dt(e.body,r),a=new G("mstyle",n);return a.setAttribute("mathsize",V(r.sizeMultiplier)),a}});Z({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:(e,t,r)=>{var{parser:n}=e,a=!1,i=!1,u=r[0]&&ce(r[0],"ordgroup");if(u)for(var s,l=0;l{var r=z([],[Te(e.body,t)]);if(!e.smashHeight&&!e.smashDepth)return r;if(e.smashHeight&&(r.height=0),e.smashDepth&&(r.depth=0),e.smashHeight&&e.smashDepth)return z(["mord","smash"],[r],t);if(r.children)for(var n=0;n{var r=new G("mpadded",[Ae(e.body,t)]);return e.smashHeight&&r.setAttribute("height","0px"),e.smashDepth&&r.setAttribute("depth","0px"),r}});Z({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){var{parser:n}=e,a=r[0],i=t[0];return{type:"sqrt",mode:n.mode,body:i,index:a}},htmlBuilder(e,t){var r=Te(e.body,t.havingCrampedStyle());r.height===0&&(r.height=t.fontMetrics().xHeight),r=Lr(r,t);var n=t.fontMetrics(),a=n.defaultRuleThickness,i=a;t.style.idr.height+r.depth+u&&(u=(u+f-r.height-r.depth)/2);var g=l.height-r.height-u-c;r.style.paddingLeft=V(d);var p=Ee({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+g)},{type:"elem",elem:l},{type:"kern",size:c}]});if(e.index){var x=t.havingStyle(oe.SCRIPTSCRIPT),S=Te(e.index,x,t),D=.6*(p.height-p.depth),_=Ee({positionType:"shift",positionData:-D,children:[{type:"elem",elem:S}]}),N=z(["root"],[_]);return z(["mord","sqrt"],[N,p],t)}else return z(["mord","sqrt"],[p],t)},mathmlBuilder(e,t){var{body:r,index:n}=e;return n?new G("mroot",[Ae(r,t),Ae(n,t)]):new G("msqrt",[Ae(r,t)])}});var Va={display:oe.DISPLAY,text:oe.TEXT,script:oe.SCRIPT,scriptscript:oe.SCRIPTSCRIPT};function K3(e){return e in Va}Z({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e,t){var{breakOnTokenText:r,funcName:n,parser:a}=e,i=a.parseExpression(!0,r),u=n.slice(1,n.length-5);if(!K3(u))throw new Error("Unknown style: "+u);return{type:"styling",mode:a.mode,style:u,body:i}},htmlBuilder(e,t){var r=Va[e.style],n=t.havingStyle(r);return e.resetFont&&(n=n.withFont("")),Fo(e.body,n,t)},mathmlBuilder(e,t){var r=Va[e.style],n=t.havingStyle(r);e.resetFont&&(n=n.withFont(""));var a=dt(e.body,n),i=new G("mstyle",a),u={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},s=u[e.style];return i.setAttribute("scriptlevel",s[0]),i.setAttribute("displaystyle",s[1]),i}});var J3=function(t,r){var n=t.base;if(n)if(n.type==="op"){var a=n.limits&&(r.style.size===oe.DISPLAY.size||n.alwaysHandleSupSub);return a?zr:null}else if(n.type==="operatorname"){var i=n.alwaysHandleSupSub&&(r.style.size===oe.DISPLAY.size||n.limits);return i?Bo:null}else{if(n.type==="accent")return qt(n.base)?Ai:null;if(n.type==="horizBrace"){var u=!t.sub;return u===n.isOver?Ro:null}else return null}else return null};br({type:"supsub",htmlBuilder(e,t){var r=J3(e,t);if(r)return r(e,t);var{base:n,sup:a,sub:i}=e,u=Te(n,t),s,l,c=t.fontMetrics(),d=0,f=0,g=n&&qt(n);if(a){var p=t.havingStyle(t.style.sup());s=Te(a,p,t),g||(d=u.height-p.fontMetrics().supDrop*p.sizeMultiplier/t.sizeMultiplier)}if(i){var x=t.havingStyle(t.style.sub());l=Te(i,x,t),g||(f=u.depth+x.fontMetrics().subDrop*x.sizeMultiplier/t.sizeMultiplier)}var S;t.style===oe.DISPLAY?S=c.sup1:t.style.cramped?S=c.sup3:S=c.sup2;var D=t.sizeMultiplier,_=V(.5/c.ptPerEm/D),N=null;if(l){var M=e.base&&e.base.type==="op"&&e.base.name&&(e.base.name==="\\oiint"||e.base.name==="\\oiiint");if(u instanceof ct||M){var W;N=V(-((W=u.italic)!=null?W:0))}}var j;if(s&&l){d=Math.max(d,S,s.depth+.25*c.xHeight),f=Math.max(f,c.sub2);var L=c.defaultRuleThickness,ee=4*L;if(d-s.depth-(l.height-f)0&&(d+=re,f-=re)}var K=[{type:"elem",elem:l,shift:f,marginRight:_,marginLeft:N},{type:"elem",elem:s,shift:-d,marginRight:_}];j=Ee({positionType:"individualShift",children:K})}else if(l){f=Math.max(f,c.sub1,l.height-.8*c.xHeight);var R=[{type:"elem",elem:l,marginLeft:N,marginRight:_}];j=Ee({positionType:"shift",positionData:f,children:R})}else if(s)d=Math.max(d,S,s.depth+.25*c.xHeight),j=Ee({positionType:"shift",positionData:-d,children:[{type:"elem",elem:s,marginRight:_}]});else throw new Error("supsub must have either sup or sub.");var J=za(u,"right")||"mord";return z([J],[u,z(["msupsub"],[j])],t)},mathmlBuilder(e,t){var r=!1,n,a;e.base&&e.base.type==="horizBrace"&&(a=!!e.sup,a===e.base.isOver&&(r=!0,n=e.base.isOver)),e.base&&(e.base.type==="op"||e.base.type==="operatorname")&&(e.base.parentIsSupSub=!0);var i=[Ae(e.base,t)];e.sub&&i.push(Ae(e.sub,t)),e.sup&&i.push(Ae(e.sup,t));var u;if(r)u=n?"mover":"munder";else if(e.sub)if(e.sup){var c=e.base;c&&c.type==="op"&&c.limits&&t.style===oe.DISPLAY||c&&c.type==="operatorname"&&c.alwaysHandleSupSub&&(t.style===oe.DISPLAY||c.limits)?u="munderover":u="msubsup"}else{var l=e.base;l&&l.type==="op"&&l.limits&&(t.style===oe.DISPLAY||l.alwaysHandleSupSub)||l&&l.type==="operatorname"&&l.alwaysHandleSupSub&&(l.limits||t.style===oe.DISPLAY)?u="munder":u="msub"}else{var s=e.base;s&&s.type==="op"&&s.limits&&(t.style===oe.DISPLAY||s.alwaysHandleSupSub)||s&&s.type==="operatorname"&&s.alwaysHandleSupSub&&(s.limits||t.style===oe.DISPLAY)?u="mover":u="msup"}return new G(u,i)}});br({type:"atom",htmlBuilder(e,t){return Ti(e.text,e.mode,t,["m"+e.family])},mathmlBuilder(e,t){var r=new G("mo",[bt(e.text,e.mode)]);if(e.family==="bin"){var n=vi(e,t);n==="bold-italic"&&r.setAttribute("mathvariant",n)}else e.family==="punct"?r.setAttribute("separator","true"):(e.family==="open"||e.family==="close")&&r.setAttribute("stretchy","false");return r}});var Ho={mi:"italic",mn:"normal",mtext:"normal"};br({type:"mathord",htmlBuilder(e,t){return x0(e,t,"mathord")},mathmlBuilder(e,t){var r=new G("mi",[bt(e.text,e.mode,t)]),n=vi(e,t)||"italic";return n!==Ho[r.type]&&r.setAttribute("mathvariant",n),r}});br({type:"textord",htmlBuilder(e,t){return x0(e,t,"textord")},mathmlBuilder(e,t){var r=bt(e.text,e.mode,t),n=vi(e,t)||"normal",a;return e.mode==="text"?a=new G("mtext",[r]):/[0-9]/.test(e.text)?a=new G("mn",[r]):e.text==="\\prime"?a=new G("mo",[r]):a=new G("mi",[r]),n!==Ho[a.type]&&a.setAttribute("mathvariant",n),a}});var fa={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},ma={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};br({type:"spacing",htmlBuilder(e,t){if(ma.hasOwnProperty(e.text)){var r=ma[e.text].className||"";if(e.mode==="text"){var n=x0(e,t,"textord");return n.classes.push(r),n}else return z(["mspace",r],[Ti(e.text,e.mode,t)],t)}else{if(fa.hasOwnProperty(e.text))return z(["mspace",fa[e.text]],[],t);throw new Y('Unknown type of space "'+e.text+'"')}},mathmlBuilder(e,t){var r;if(ma.hasOwnProperty(e.text))r=new G("mtext",[new Me(" ")]);else{if(fa.hasOwnProperty(e.text))return new G("mspace");throw new Y('Unknown type of space "'+e.text+'"')}return r}});var us=()=>{var e=new G("mtd",[]);return e.setAttribute("width","50%"),e};br({type:"tag",mathmlBuilder(e,t){var r=new G("mtable",[new G("mtr",[us(),new G("mtd",[tr(e.body,t)]),us(),new G("mtd",[tr(e.tag,t)])])]);return r.setAttribute("width","100%"),r}});var ss={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},ls={"\\textbf":"textbf","\\textmd":"textmd"},Z3={"\\textit":"textit","\\textup":"textup"},os=(e,t)=>{var r=e.font;if(r){if(ss[r])return t.withTextFontFamily(ss[r]);if(ls[r])return t.withTextFontWeight(ls[r]);if(r==="\\emph")return t.fontShape==="textit"?t.withTextFontShape("textup"):t.withTextFontShape("textit")}else return t;return t.withTextFontShape(Z3[r])};Z({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(e,t){var{parser:r,funcName:n}=e,a=t[0];return{type:"text",mode:r.mode,body:Re(a),font:n}},htmlBuilder(e,t){var r=os(e,t),n=He(e.body,r,!0);return z(["mord","text"],n,r)},mathmlBuilder(e,t){var r=os(e,t);return tr(e.body,r)}});Z({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"underline",mode:r.mode,body:t[0]}},htmlBuilder(e,t){var r=Te(e.body,t),n=Or("underline-line",t),a=t.fontMetrics().defaultRuleThickness,i=Ee({positionType:"top",positionData:r.height,children:[{type:"kern",size:a},{type:"elem",elem:n},{type:"kern",size:3*a},{type:"elem",elem:r}]});return z(["mord","underline"],[i],t)},mathmlBuilder(e,t){var r=new G("mo",[new Me("‾")]);r.setAttribute("stretchy","true");var n=new G("munder",[Ae(e.body,t),r]);return n.setAttribute("accentunder","true"),n}});Z({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(e,t){var{parser:r}=e;return{type:"vcenter",mode:r.mode,body:t[0]}},htmlBuilder(e,t){var r=Te(e.body,t),n=t.fontMetrics().axisHeight,a=.5*(r.height-n-(r.depth+n));return Ee({positionType:"shift",positionData:a,children:[{type:"elem",elem:r}]})},mathmlBuilder(e,t){var r=new G("mpadded",[Ae(e.body,t)],["vcenter"]);return new G("mrow",[r])}});Z({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(e,t,r){throw new Y("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(e,t){for(var r=cs(e),n=[],a=t.havingStyle(t.style.text()),i=0;ie.body.replace(/ /g,e.star?"␣":" "),Qt=io,zo=`[ \r - ]`,e6="\\\\[a-zA-Z@]+",t6="\\\\[^\uD800-\uDFFF]",r6="("+e6+")"+zo+"*",n6=`\\\\( -|[ \r ]+ -?)[ \r ]*`,ja="[̀-ͯ]",a6=new RegExp(ja+"+$"),i6="("+zo+"+)|"+(n6+"|")+"([!-\\[\\]-‧‪-퟿豈-￿]"+(ja+"*")+"|[\uD800-\uDBFF][\uDC00-\uDFFF]"+(ja+"*")+"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5"+("|"+r6)+("|"+t6+")");class hs{constructor(t,r){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=t,this.settings=r,this.tokenRegex=new RegExp(i6,"g"),this.catcodes={"%":14,"~":13}}setCatcode(t,r){this.catcodes[t]=r}lex(){var t=this.input,r=this.tokenRegex.lastIndex;if(r===t.length)return new ot("EOF",new rt(this,r,r));var n=this.tokenRegex.exec(t);if(n===null||n.index!==r)throw new Y("Unexpected character: '"+t[r]+"'",new ot(t[r],new rt(this,r,r+1)));var a=n[6]||n[3]||(n[2]?"\\ ":" ");if(this.catcodes[a]===14){var i=t.indexOf(` -`,this.tokenRegex.lastIndex);return i===-1?(this.tokenRegex.lastIndex=t.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=i+1,this.lex()}return new ot(a,new rt(this,r,this.tokenRegex.lastIndex))}}class u6{constructor(t,r){t===void 0&&(t={}),r===void 0&&(r={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=r,this.builtins=t,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(this.undefStack.length===0)throw new Y("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var t=this.undefStack.pop();for(var r in t)t.hasOwnProperty(r)&&(t[r]==null?delete this.current[r]:this.current[r]=t[r])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(t){return this.current.hasOwnProperty(t)||this.builtins.hasOwnProperty(t)}get(t){return this.current.hasOwnProperty(t)?this.current[t]:this.builtins[t]}set(t,r,n){if(n===void 0&&(n=!1),n){for(var a=0;a0&&(this.undefStack[this.undefStack.length-1][t]=r)}else{var i=this.undefStack[this.undefStack.length-1];i&&!i.hasOwnProperty(t)&&(i[t]=this.current[t])}r==null?delete this.current[t]:this.current[t]=r}}var s6=Io;E("\\noexpand",function(e){var t=e.popToken();return e.isExpandable(t.text)&&(t.noexpand=!0,t.treatAsRelax=!0),{tokens:[t],numArgs:0}});E("\\expandafter",function(e){var t=e.popToken();return e.expandOnce(!0),{tokens:[t],numArgs:0}});E("\\@firstoftwo",function(e){var t=e.consumeArgs(2);return{tokens:t[0],numArgs:0}});E("\\@secondoftwo",function(e){var t=e.consumeArgs(2);return{tokens:t[1],numArgs:0}});E("\\@ifnextchar",function(e){var t=e.consumeArgs(3);e.consumeSpaces();var r=e.future();return t[0].length===1&&t[0][0].text===r.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}});E("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");E("\\TextOrMath",function(e){var t=e.consumeArgs(2);return e.mode==="text"?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}});var ds={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};E("\\char",function(e){var t=e.popToken(),r,n=0;if(t.text==="'")r=8,t=e.popToken();else if(t.text==='"')r=16,t=e.popToken();else if(t.text==="`")if(t=e.popToken(),t.text[0]==="\\")n=t.text.charCodeAt(1);else{if(t.text==="EOF")throw new Y("\\char` missing argument");n=t.text.charCodeAt(0)}else r=10;if(r){if(n=ds[t.text],n==null||n>=r)throw new Y("Invalid base-"+r+" digit "+t.text);for(var a;(a=ds[e.future().text])!=null&&a{var a=e.consumeArg().tokens;if(a.length!==1)throw new Y("\\newcommand's first argument must be a macro name");var i=a[0].text,u=e.isDefined(i);if(u&&!t)throw new Y("\\newcommand{"+i+"} attempting to redefine "+(i+"; use \\renewcommand"));if(!u&&!r)throw new Y("\\renewcommand{"+i+"} when command "+i+" does not yet exist; use \\newcommand");var s=0;if(a=e.consumeArg().tokens,a.length===1&&a[0].text==="["){for(var l="",c=e.expandNextToken();c.text!=="]"&&c.text!=="EOF";)l+=c.text,c=e.expandNextToken();if(!l.match(/^\s*[0-9]+\s*$/))throw new Y("Invalid number of arguments: "+l);s=parseInt(l),a=e.consumeArg().tokens}return u&&n||e.macros.set(i,{tokens:a,numArgs:s}),""};E("\\newcommand",e=>Ci(e,!1,!0,!1));E("\\renewcommand",e=>Ci(e,!0,!1,!1));E("\\providecommand",e=>Ci(e,!0,!0,!0));E("\\message",e=>{var t=e.consumeArgs(1)[0];return console.log(t.reverse().map(r=>r.text).join("")),""});E("\\errmessage",e=>{var t=e.consumeArgs(1)[0];return console.error(t.reverse().map(r=>r.text).join("")),""});E("\\show",e=>{var t=e.popToken(),r=t.text;return console.log(t,e.macros.get(r),Qt[r],we.math[r],we.text[r]),""});E("\\bgroup","{");E("\\egroup","}");E("~","\\nobreakspace");E("\\lq","`");E("\\rq","'");E("\\aa","\\r a");E("\\AA","\\r A");E("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`©}");E("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");E("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}");E("ℬ","\\mathscr{B}");E("ℰ","\\mathscr{E}");E("ℱ","\\mathscr{F}");E("ℋ","\\mathscr{H}");E("ℐ","\\mathscr{I}");E("ℒ","\\mathscr{L}");E("ℳ","\\mathscr{M}");E("ℛ","\\mathscr{R}");E("ℭ","\\mathfrak{C}");E("ℌ","\\mathfrak{H}");E("ℨ","\\mathfrak{Z}");E("\\Bbbk","\\Bbb{k}");E("\\llap","\\mathllap{\\textrm{#1}}");E("\\rlap","\\mathrlap{\\textrm{#1}}");E("\\clap","\\mathclap{\\textrm{#1}}");E("\\mathstrut","\\vphantom{(}");E("\\underbar","\\underline{\\text{#1}}");E("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}\\nobreak}{\\char"338}');E("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`≠}}");E("\\ne","\\neq");E("≠","\\neq");E("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`∉}}");E("∉","\\notin");E("≘","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`≘}}");E("≙","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`≘}}");E("≚","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`≚}}");E("≛","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`≛}}");E("≝","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`≝}}");E("≞","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`≞}}");E("≟","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`≟}}");E("⟂","\\perp");E("‼","\\mathclose{!\\mkern-0.8mu!}");E("∌","\\notni");E("⌜","\\ulcorner");E("⌝","\\urcorner");E("⌞","\\llcorner");E("⌟","\\lrcorner");E("©","\\copyright");E("®","\\textregistered");E("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');E("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');E("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');E("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');E("\\vdots","{\\varvdots\\rule{0pt}{15pt}}");E("⋮","\\vdots");E("\\varGamma","\\mathit{\\Gamma}");E("\\varDelta","\\mathit{\\Delta}");E("\\varTheta","\\mathit{\\Theta}");E("\\varLambda","\\mathit{\\Lambda}");E("\\varXi","\\mathit{\\Xi}");E("\\varPi","\\mathit{\\Pi}");E("\\varSigma","\\mathit{\\Sigma}");E("\\varUpsilon","\\mathit{\\Upsilon}");E("\\varPhi","\\mathit{\\Phi}");E("\\varPsi","\\mathit{\\Psi}");E("\\varOmega","\\mathit{\\Omega}");E("\\substack","\\begin{subarray}{c}#1\\end{subarray}");E("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");E("\\boxed","\\fbox{$\\displaystyle{#1}$}");E("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");E("\\implies","\\DOTSB\\;\\Longrightarrow\\;");E("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");E("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}");E("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");var fs={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"},l6=new Set(["bin","rel"]);E("\\dots",function(e){var t="\\dotso",r=e.expandAfterFuture().text;return r in fs?t=fs[r]:(r.slice(0,4)==="\\not"||r in we.math&&l6.has(we.math[r].group))&&(t="\\dotsb"),t});var _i={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};E("\\dotso",function(e){var t=e.future().text;return t in _i?"\\ldots\\,":"\\ldots"});E("\\dotsc",function(e){var t=e.future().text;return t in _i&&t!==","?"\\ldots\\,":"\\ldots"});E("\\cdots",function(e){var t=e.future().text;return t in _i?"\\@cdots\\,":"\\@cdots"});E("\\dotsb","\\cdots");E("\\dotsm","\\cdots");E("\\dotsi","\\!\\cdots");E("\\dotsx","\\ldots\\,");E("\\DOTSI","\\relax");E("\\DOTSB","\\relax");E("\\DOTSX","\\relax");E("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");E("\\,","\\tmspace+{3mu}{.1667em}");E("\\thinspace","\\,");E("\\>","\\mskip{4mu}");E("\\:","\\tmspace+{4mu}{.2222em}");E("\\medspace","\\:");E("\\;","\\tmspace+{5mu}{.2777em}");E("\\thickspace","\\;");E("\\!","\\tmspace-{3mu}{.1667em}");E("\\negthinspace","\\!");E("\\negmedspace","\\tmspace-{4mu}{.2222em}");E("\\negthickspace","\\tmspace-{5mu}{.277em}");E("\\enspace","\\kern.5em ");E("\\enskip","\\hskip.5em\\relax");E("\\quad","\\hskip1em\\relax");E("\\qquad","\\hskip2em\\relax");E("\\tag","\\@ifstar\\tag@literal\\tag@paren");E("\\tag@paren","\\tag@literal{({#1})}");E("\\tag@literal",e=>{if(e.macros.get("\\df@tag"))throw new Y("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});E("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");E("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");E("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");E("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");E("\\newline","\\\\\\relax");E("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var Uo=V(wt["Main-Regular"][84][1]-.7*wt["Main-Regular"][65][1]);E("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+Uo+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");E("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+Uo+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");E("\\hspace","\\@ifstar\\@hspacer\\@hspace");E("\\@hspace","\\hskip #1\\relax");E("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");E("\\ordinarycolon",":");E("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");E("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');E("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');E("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');E("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');E("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');E("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');E("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');E("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');E("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');E("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');E("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');E("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');E("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');E("∷","\\dblcolon");E("∹","\\eqcolon");E("≔","\\coloneqq");E("≕","\\eqqcolon");E("⩴","\\Coloneqq");E("\\ratio","\\vcentcolon");E("\\coloncolon","\\dblcolon");E("\\colonequals","\\coloneqq");E("\\coloncolonequals","\\Coloneqq");E("\\equalscolon","\\eqqcolon");E("\\equalscoloncolon","\\Eqqcolon");E("\\colonminus","\\coloneq");E("\\coloncolonminus","\\Coloneq");E("\\minuscolon","\\eqcolon");E("\\minuscoloncolon","\\Eqcolon");E("\\coloncolonapprox","\\Colonapprox");E("\\coloncolonsim","\\Colonsim");E("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");E("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");E("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");E("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");E("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`∌}}");E("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");E("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");E("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");E("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");E("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");E("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");E("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");E("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");E("\\gvertneqq","\\html@mathml{\\@gvertneqq}{≩}");E("\\lvertneqq","\\html@mathml{\\@lvertneqq}{≨}");E("\\ngeqq","\\html@mathml{\\@ngeqq}{≱}");E("\\ngeqslant","\\html@mathml{\\@ngeqslant}{≱}");E("\\nleqq","\\html@mathml{\\@nleqq}{≰}");E("\\nleqslant","\\html@mathml{\\@nleqslant}{≰}");E("\\nshortmid","\\html@mathml{\\@nshortmid}{∤}");E("\\nshortparallel","\\html@mathml{\\@nshortparallel}{∦}");E("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{⊈}");E("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{⊉}");E("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{⊊}");E("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{⫋}");E("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{⊋}");E("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{⫌}");E("\\imath","\\html@mathml{\\@imath}{ı}");E("\\jmath","\\html@mathml{\\@jmath}{ȷ}");E("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`⟦}}");E("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`⟧}}");E("⟦","\\llbracket");E("⟧","\\rrbracket");E("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`⦃}}");E("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`⦄}}");E("⦃","\\lBrace");E("⦄","\\rBrace");E("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`⦵}}");E("⦵","\\minuso");E("\\darr","\\downarrow");E("\\dArr","\\Downarrow");E("\\Darr","\\Downarrow");E("\\lang","\\langle");E("\\rang","\\rangle");E("\\uarr","\\uparrow");E("\\uArr","\\Uparrow");E("\\Uarr","\\Uparrow");E("\\N","\\mathbb{N}");E("\\R","\\mathbb{R}");E("\\Z","\\mathbb{Z}");E("\\alef","\\aleph");E("\\alefsym","\\aleph");E("\\Alpha","\\mathrm{A}");E("\\Beta","\\mathrm{B}");E("\\bull","\\bullet");E("\\Chi","\\mathrm{X}");E("\\clubs","\\clubsuit");E("\\cnums","\\mathbb{C}");E("\\Complex","\\mathbb{C}");E("\\Dagger","\\ddagger");E("\\diamonds","\\diamondsuit");E("\\empty","\\emptyset");E("\\Epsilon","\\mathrm{E}");E("\\Eta","\\mathrm{H}");E("\\exist","\\exists");E("\\harr","\\leftrightarrow");E("\\hArr","\\Leftrightarrow");E("\\Harr","\\Leftrightarrow");E("\\hearts","\\heartsuit");E("\\image","\\Im");E("\\infin","\\infty");E("\\Iota","\\mathrm{I}");E("\\isin","\\in");E("\\Kappa","\\mathrm{K}");E("\\larr","\\leftarrow");E("\\lArr","\\Leftarrow");E("\\Larr","\\Leftarrow");E("\\lrarr","\\leftrightarrow");E("\\lrArr","\\Leftrightarrow");E("\\Lrarr","\\Leftrightarrow");E("\\Mu","\\mathrm{M}");E("\\natnums","\\mathbb{N}");E("\\Nu","\\mathrm{N}");E("\\Omicron","\\mathrm{O}");E("\\plusmn","\\pm");E("\\rarr","\\rightarrow");E("\\rArr","\\Rightarrow");E("\\Rarr","\\Rightarrow");E("\\real","\\Re");E("\\reals","\\mathbb{R}");E("\\Reals","\\mathbb{R}");E("\\Rho","\\mathrm{P}");E("\\sdot","\\cdot");E("\\sect","\\S");E("\\spades","\\spadesuit");E("\\sub","\\subset");E("\\sube","\\subseteq");E("\\supe","\\supseteq");E("\\Tau","\\mathrm{T}");E("\\thetasym","\\vartheta");E("\\weierp","\\wp");E("\\Zeta","\\mathrm{Z}");E("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");E("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");E("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");E("\\bra","\\mathinner{\\langle{#1}|}");E("\\ket","\\mathinner{|{#1}\\rangle}");E("\\braket","\\mathinner{\\langle{#1}\\rangle}");E("\\Bra","\\left\\langle#1\\right|");E("\\Ket","\\left|#1\\right\\rangle");var qo=e=>t=>{var r=t.consumeArg().tokens,n=t.consumeArg().tokens,a=t.consumeArg().tokens,i=t.consumeArg().tokens,u=t.macros.get("|"),s=t.macros.get("\\|");t.macros.beginGroup();var l=f=>g=>{e&&(g.macros.set("|",u),a.length&&g.macros.set("\\|",s));var p=f;if(!f&&a.length){var x=g.future();x.text==="|"&&(g.popToken(),p=!0)}return{tokens:p?a:n,numArgs:0}};t.macros.set("|",l(!1)),a.length&&t.macros.set("\\|",l(!0));var c=t.consumeArg().tokens,d=t.expandTokens([...i,...c,...r]);return t.macros.endGroup(),{tokens:d.reverse(),numArgs:0}};E("\\bra@ket",qo(!1));E("\\bra@set",qo(!0));E("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");E("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");E("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");E("\\angln","{\\angl n}");E("\\blue","\\textcolor{##6495ed}{#1}");E("\\orange","\\textcolor{##ffa500}{#1}");E("\\pink","\\textcolor{##ff00af}{#1}");E("\\red","\\textcolor{##df0030}{#1}");E("\\green","\\textcolor{##28ae7b}{#1}");E("\\gray","\\textcolor{gray}{#1}");E("\\purple","\\textcolor{##9d38bd}{#1}");E("\\blueA","\\textcolor{##ccfaff}{#1}");E("\\blueB","\\textcolor{##80f6ff}{#1}");E("\\blueC","\\textcolor{##63d9ea}{#1}");E("\\blueD","\\textcolor{##11accd}{#1}");E("\\blueE","\\textcolor{##0c7f99}{#1}");E("\\tealA","\\textcolor{##94fff5}{#1}");E("\\tealB","\\textcolor{##26edd5}{#1}");E("\\tealC","\\textcolor{##01d1c1}{#1}");E("\\tealD","\\textcolor{##01a995}{#1}");E("\\tealE","\\textcolor{##208170}{#1}");E("\\greenA","\\textcolor{##b6ffb0}{#1}");E("\\greenB","\\textcolor{##8af281}{#1}");E("\\greenC","\\textcolor{##74cf70}{#1}");E("\\greenD","\\textcolor{##1fab54}{#1}");E("\\greenE","\\textcolor{##0d923f}{#1}");E("\\goldA","\\textcolor{##ffd0a9}{#1}");E("\\goldB","\\textcolor{##ffbb71}{#1}");E("\\goldC","\\textcolor{##ff9c39}{#1}");E("\\goldD","\\textcolor{##e07d10}{#1}");E("\\goldE","\\textcolor{##a75a05}{#1}");E("\\redA","\\textcolor{##fca9a9}{#1}");E("\\redB","\\textcolor{##ff8482}{#1}");E("\\redC","\\textcolor{##f9685d}{#1}");E("\\redD","\\textcolor{##e84d39}{#1}");E("\\redE","\\textcolor{##bc2612}{#1}");E("\\maroonA","\\textcolor{##ffbde0}{#1}");E("\\maroonB","\\textcolor{##ff92c6}{#1}");E("\\maroonC","\\textcolor{##ed5fa6}{#1}");E("\\maroonD","\\textcolor{##ca337c}{#1}");E("\\maroonE","\\textcolor{##9e034e}{#1}");E("\\purpleA","\\textcolor{##ddd7ff}{#1}");E("\\purpleB","\\textcolor{##c6b9fc}{#1}");E("\\purpleC","\\textcolor{##aa87ff}{#1}");E("\\purpleD","\\textcolor{##7854ab}{#1}");E("\\purpleE","\\textcolor{##543b78}{#1}");E("\\mintA","\\textcolor{##f5f9e8}{#1}");E("\\mintB","\\textcolor{##edf2df}{#1}");E("\\mintC","\\textcolor{##e0e5cc}{#1}");E("\\grayA","\\textcolor{##f6f7f7}{#1}");E("\\grayB","\\textcolor{##f0f1f2}{#1}");E("\\grayC","\\textcolor{##e3e5e6}{#1}");E("\\grayD","\\textcolor{##d6d8da}{#1}");E("\\grayE","\\textcolor{##babec2}{#1}");E("\\grayF","\\textcolor{##888d93}{#1}");E("\\grayG","\\textcolor{##626569}{#1}");E("\\grayH","\\textcolor{##3b3e40}{#1}");E("\\grayI","\\textcolor{##21242c}{#1}");E("\\kaBlue","\\textcolor{##314453}{#1}");E("\\kaGreen","\\textcolor{##71B307}{#1}");var Yo={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0};class o6{constructor(t,r,n){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=r,this.expansionCount=0,this.feed(t),this.macros=new u6(s6,r.macros),this.mode=n,this.stack=[]}feed(t){this.lexer=new hs(t,this.settings)}switchMode(t){this.mode=t}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return this.stack.length===0&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(t){this.stack.push(t)}pushTokens(t){this.stack.push(...t)}scanArgument(t){var r,n,a;if(t){if(this.consumeSpaces(),this.future().text!=="[")return null;r=this.popToken(),{tokens:a,end:n}=this.consumeArg(["]"])}else({tokens:a,start:r,end:n}=this.consumeArg());return this.pushToken(new ot("EOF",n.loc)),this.pushTokens(a),new ot("",rt.range(r,n))}consumeSpaces(){for(;;){var t=this.future();if(t.text===" ")this.stack.pop();else break}}consumeArg(t){var r=[],n=t&&t.length>0;n||this.consumeSpaces();var a=this.future(),i,u=0,s=0;do{if(i=this.popToken(),r.push(i),i.text==="{")++u;else if(i.text==="}"){if(--u,u===-1)throw new Y("Extra }",i)}else if(i.text==="EOF")throw new Y("Unexpected end of input in a macro argument, expected '"+(t&&n?t[s]:"}")+"'",i);if(t&&n)if((u===0||u===1&&t[s]==="{")&&i.text===t[s]){if(++s,s===t.length){r.splice(-s,s);break}}else s=0}while(u!==0||n);return a.text==="{"&&r[r.length-1].text==="}"&&(r.pop(),r.shift()),r.reverse(),{tokens:r,start:a,end:i}}consumeArgs(t,r){if(r){if(r.length!==t+1)throw new Y("The length of delimiters doesn't match the number of args!");for(var n=r[0],a=0;athis.settings.maxExpand)throw new Y("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(t){var r=this.popToken(),n=r.text,a=r.noexpand?null:this._getExpansion(n);if(a==null||t&&a.unexpandable){if(t&&a==null&&n[0]==="\\"&&!this.isDefined(n))throw new Y("Undefined control sequence: "+n);return this.pushToken(r),!1}this.countExpansion(1);var i=a.tokens,u=this.consumeArgs(a.numArgs,a.delimiters);if(a.numArgs){i=i.slice();for(var s=i.length-1;s>=0;--s){var l=i[s];if(l.text==="#"){if(s===0)throw new Y("Incomplete placeholder at end of macro body",l);if(l=i[--s],l.text==="#")i.splice(s+1,1);else if(/^[1-9]$/.test(l.text))i.splice(s,2,...u[+l.text-1]);else throw new Y("Not a valid argument number",l)}}}return this.pushTokens(i),i.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(this.expandOnce()===!1){var t=this.stack.pop();return t.treatAsRelax&&(t.text="\\relax"),t}}expandMacro(t){return this.macros.has(t)?this.expandTokens([new ot(t)]):void 0}expandTokens(t){var r=[],n=this.stack.length;for(this.pushTokens(t);this.stack.length>n;)if(this.expandOnce(!0)===!1){var a=this.stack.pop();a.treatAsRelax&&(a.noexpand=!1,a.treatAsRelax=!1),r.push(a)}return this.countExpansion(r.length),r}expandMacroAsText(t){var r=this.expandMacro(t);return r&&r.map(n=>n.text).join("")}_getExpansion(t){var r=this.macros.get(t);if(r==null)return r;if(t.length===1){var n=this.lexer.catcodes[t];if(n!=null&&n!==13)return}var a=typeof r=="function"?r(this):r;if(typeof a=="string"){var i=0;if(a.includes("#"))for(var u=a.replace(/##/g,"");u.includes("#"+(i+1));)++i;for(var s=new hs(a,this.settings),l=[],c=s.lex();c.text!=="EOF";)l.push(c),c=s.lex();l.reverse();var d={tokens:l,numArgs:i};return d}return a}isDefined(t){return this.macros.has(t)||Qt.hasOwnProperty(t)||we.math.hasOwnProperty(t)||we.text.hasOwnProperty(t)||Yo.hasOwnProperty(t)}isExpandable(t){var r=this.macros.get(t);return r!=null?typeof r=="string"||typeof r=="function"||!r.unexpandable:Qt.hasOwnProperty(t)&&!Qt[t].primitive}}var ms=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,jn=Object.freeze({"₊":"+","₋":"-","₌":"=","₍":"(","₎":")","₀":"0","₁":"1","₂":"2","₃":"3","₄":"4","₅":"5","₆":"6","₇":"7","₈":"8","₉":"9","ₐ":"a","ₑ":"e","ₕ":"h","ᵢ":"i","ⱼ":"j","ₖ":"k","ₗ":"l","ₘ":"m","ₙ":"n","ₒ":"o","ₚ":"p","ᵣ":"r","ₛ":"s","ₜ":"t","ᵤ":"u","ᵥ":"v","ₓ":"x","ᵦ":"β","ᵧ":"γ","ᵨ":"ρ","ᵩ":"ϕ","ᵪ":"χ","⁺":"+","⁻":"-","⁼":"=","⁽":"(","⁾":")","⁰":"0","¹":"1","²":"2","³":"3","⁴":"4","⁵":"5","⁶":"6","⁷":"7","⁸":"8","⁹":"9","ᴬ":"A","ᴮ":"B","ᴰ":"D","ᴱ":"E","ᴳ":"G","ᴴ":"H","ᴵ":"I","ᴶ":"J","ᴷ":"K","ᴸ":"L","ᴹ":"M","ᴺ":"N","ᴼ":"O","ᴾ":"P","ᴿ":"R","ᵀ":"T","ᵁ":"U","ⱽ":"V","ᵂ":"W","ᵃ":"a","ᵇ":"b","ᶜ":"c","ᵈ":"d","ᵉ":"e","ᶠ":"f","ᵍ":"g",ʰ:"h","ⁱ":"i",ʲ:"j","ᵏ":"k",ˡ:"l","ᵐ":"m",ⁿ:"n","ᵒ":"o","ᵖ":"p",ʳ:"r",ˢ:"s","ᵗ":"t","ᵘ":"u","ᵛ":"v",ʷ:"w",ˣ:"x",ʸ:"y","ᶻ":"z","ᵝ":"β","ᵞ":"γ","ᵟ":"δ","ᵠ":"ϕ","ᵡ":"χ","ᶿ":"θ"}),pa={"́":{text:"\\'",math:"\\acute"},"̀":{text:"\\`",math:"\\grave"},"̈":{text:'\\"',math:"\\ddot"},"̃":{text:"\\~",math:"\\tilde"},"̄":{text:"\\=",math:"\\bar"},"̆":{text:"\\u",math:"\\breve"},"̌":{text:"\\v",math:"\\check"},"̂":{text:"\\^",math:"\\hat"},"̇":{text:"\\.",math:"\\dot"},"̊":{text:"\\r",math:"\\mathring"},"̋":{text:"\\H"},"̧":{text:"\\c"}},ps={á:"á",à:"à",ä:"ä",ǟ:"ǟ",ã:"ã",ā:"ā",ă:"ă",ắ:"ắ",ằ:"ằ",ẵ:"ẵ",ǎ:"ǎ",â:"â",ấ:"ấ",ầ:"ầ",ẫ:"ẫ",ȧ:"ȧ",ǡ:"ǡ",å:"å",ǻ:"ǻ",ḃ:"ḃ",ć:"ć",ḉ:"ḉ",č:"č",ĉ:"ĉ",ċ:"ċ",ç:"ç",ď:"ď",ḋ:"ḋ",ḑ:"ḑ",é:"é",è:"è",ë:"ë",ẽ:"ẽ",ē:"ē",ḗ:"ḗ",ḕ:"ḕ",ĕ:"ĕ",ḝ:"ḝ",ě:"ě",ê:"ê",ế:"ế",ề:"ề",ễ:"ễ",ė:"ė",ȩ:"ȩ",ḟ:"ḟ",ǵ:"ǵ",ḡ:"ḡ",ğ:"ğ",ǧ:"ǧ",ĝ:"ĝ",ġ:"ġ",ģ:"ģ",ḧ:"ḧ",ȟ:"ȟ",ĥ:"ĥ",ḣ:"ḣ",ḩ:"ḩ",í:"í",ì:"ì",ï:"ï",ḯ:"ḯ",ĩ:"ĩ",ī:"ī",ĭ:"ĭ",ǐ:"ǐ",î:"î",ǰ:"ǰ",ĵ:"ĵ",ḱ:"ḱ",ǩ:"ǩ",ķ:"ķ",ĺ:"ĺ",ľ:"ľ",ļ:"ļ",ḿ:"ḿ",ṁ:"ṁ",ń:"ń",ǹ:"ǹ",ñ:"ñ",ň:"ň",ṅ:"ṅ",ņ:"ņ",ó:"ó",ò:"ò",ö:"ö",ȫ:"ȫ",õ:"õ",ṍ:"ṍ",ṏ:"ṏ",ȭ:"ȭ",ō:"ō",ṓ:"ṓ",ṑ:"ṑ",ŏ:"ŏ",ǒ:"ǒ",ô:"ô",ố:"ố",ồ:"ồ",ỗ:"ỗ",ȯ:"ȯ",ȱ:"ȱ",ő:"ő",ṕ:"ṕ",ṗ:"ṗ",ŕ:"ŕ",ř:"ř",ṙ:"ṙ",ŗ:"ŗ",ś:"ś",ṥ:"ṥ",š:"š",ṧ:"ṧ",ŝ:"ŝ",ṡ:"ṡ",ş:"ş",ẗ:"ẗ",ť:"ť",ṫ:"ṫ",ţ:"ţ",ú:"ú",ù:"ù",ü:"ü",ǘ:"ǘ",ǜ:"ǜ",ǖ:"ǖ",ǚ:"ǚ",ũ:"ũ",ṹ:"ṹ",ū:"ū",ṻ:"ṻ",ŭ:"ŭ",ǔ:"ǔ",û:"û",ů:"ů",ű:"ű",ṽ:"ṽ",ẃ:"ẃ",ẁ:"ẁ",ẅ:"ẅ",ŵ:"ŵ",ẇ:"ẇ",ẘ:"ẘ",ẍ:"ẍ",ẋ:"ẋ",ý:"ý",ỳ:"ỳ",ÿ:"ÿ",ỹ:"ỹ",ȳ:"ȳ",ŷ:"ŷ",ẏ:"ẏ",ẙ:"ẙ",ź:"ź",ž:"ž",ẑ:"ẑ",ż:"ż",Á:"Á",À:"À",Ä:"Ä",Ǟ:"Ǟ",Ã:"Ã",Ā:"Ā",Ă:"Ă",Ắ:"Ắ",Ằ:"Ằ",Ẵ:"Ẵ",Ǎ:"Ǎ",Â:"Â",Ấ:"Ấ",Ầ:"Ầ",Ẫ:"Ẫ",Ȧ:"Ȧ",Ǡ:"Ǡ",Å:"Å",Ǻ:"Ǻ",Ḃ:"Ḃ",Ć:"Ć",Ḉ:"Ḉ",Č:"Č",Ĉ:"Ĉ",Ċ:"Ċ",Ç:"Ç",Ď:"Ď",Ḋ:"Ḋ",Ḑ:"Ḑ",É:"É",È:"È",Ë:"Ë",Ẽ:"Ẽ",Ē:"Ē",Ḗ:"Ḗ",Ḕ:"Ḕ",Ĕ:"Ĕ",Ḝ:"Ḝ",Ě:"Ě",Ê:"Ê",Ế:"Ế",Ề:"Ề",Ễ:"Ễ",Ė:"Ė",Ȩ:"Ȩ",Ḟ:"Ḟ",Ǵ:"Ǵ",Ḡ:"Ḡ",Ğ:"Ğ",Ǧ:"Ǧ",Ĝ:"Ĝ",Ġ:"Ġ",Ģ:"Ģ",Ḧ:"Ḧ",Ȟ:"Ȟ",Ĥ:"Ĥ",Ḣ:"Ḣ",Ḩ:"Ḩ",Í:"Í",Ì:"Ì",Ï:"Ï",Ḯ:"Ḯ",Ĩ:"Ĩ",Ī:"Ī",Ĭ:"Ĭ",Ǐ:"Ǐ",Î:"Î",İ:"İ",Ĵ:"Ĵ",Ḱ:"Ḱ",Ǩ:"Ǩ",Ķ:"Ķ",Ĺ:"Ĺ",Ľ:"Ľ",Ļ:"Ļ",Ḿ:"Ḿ",Ṁ:"Ṁ",Ń:"Ń",Ǹ:"Ǹ",Ñ:"Ñ",Ň:"Ň",Ṅ:"Ṅ",Ņ:"Ņ",Ó:"Ó",Ò:"Ò",Ö:"Ö",Ȫ:"Ȫ",Õ:"Õ",Ṍ:"Ṍ",Ṏ:"Ṏ",Ȭ:"Ȭ",Ō:"Ō",Ṓ:"Ṓ",Ṑ:"Ṑ",Ŏ:"Ŏ",Ǒ:"Ǒ",Ô:"Ô",Ố:"Ố",Ồ:"Ồ",Ỗ:"Ỗ",Ȯ:"Ȯ",Ȱ:"Ȱ",Ő:"Ő",Ṕ:"Ṕ",Ṗ:"Ṗ",Ŕ:"Ŕ",Ř:"Ř",Ṙ:"Ṙ",Ŗ:"Ŗ",Ś:"Ś",Ṥ:"Ṥ",Š:"Š",Ṧ:"Ṧ",Ŝ:"Ŝ",Ṡ:"Ṡ",Ş:"Ş",Ť:"Ť",Ṫ:"Ṫ",Ţ:"Ţ",Ú:"Ú",Ù:"Ù",Ü:"Ü",Ǘ:"Ǘ",Ǜ:"Ǜ",Ǖ:"Ǖ",Ǚ:"Ǚ",Ũ:"Ũ",Ṹ:"Ṹ",Ū:"Ū",Ṻ:"Ṻ",Ŭ:"Ŭ",Ǔ:"Ǔ",Û:"Û",Ů:"Ů",Ű:"Ű",Ṽ:"Ṽ",Ẃ:"Ẃ",Ẁ:"Ẁ",Ẅ:"Ẅ",Ŵ:"Ŵ",Ẇ:"Ẇ",Ẍ:"Ẍ",Ẋ:"Ẋ",Ý:"Ý",Ỳ:"Ỳ",Ÿ:"Ÿ",Ỹ:"Ỹ",Ȳ:"Ȳ",Ŷ:"Ŷ",Ẏ:"Ẏ",Ź:"Ź",Ž:"Ž",Ẑ:"Ẑ",Ż:"Ż",ά:"ά",ὰ:"ὰ",ᾱ:"ᾱ",ᾰ:"ᾰ",έ:"έ",ὲ:"ὲ",ή:"ή",ὴ:"ὴ",ί:"ί",ὶ:"ὶ",ϊ:"ϊ",ΐ:"ΐ",ῒ:"ῒ",ῑ:"ῑ",ῐ:"ῐ",ό:"ό",ὸ:"ὸ",ύ:"ύ",ὺ:"ὺ",ϋ:"ϋ",ΰ:"ΰ",ῢ:"ῢ",ῡ:"ῡ",ῠ:"ῠ",ώ:"ώ",ὼ:"ὼ",Ύ:"Ύ",Ὺ:"Ὺ",Ϋ:"Ϋ",Ῡ:"Ῡ",Ῠ:"Ῠ",Ώ:"Ώ",Ὼ:"Ὼ"};let Go=class Vo{constructor(t,r){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new o6(t,r,this.mode),this.settings=r,this.leftrightDepth=0,this.nextToken=null}expect(t,r){if(r===void 0&&(r=!0),this.fetch().text!==t)throw new Y("Expected '"+t+"', got '"+this.fetch().text+"'",this.fetch());r&&this.consume()}consume(){this.nextToken=null}fetch(){return this.nextToken==null&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(t){this.mode=t,this.gullet.switchMode(t)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var t=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),t}finally{this.gullet.endGroups()}}subparse(t){var r=this.nextToken;this.consume(),this.gullet.pushToken(new ot("}")),this.gullet.pushTokens(t);var n=this.parseExpression(!1);return this.expect("}"),this.nextToken=r,n}parseExpression(t,r){for(var n=[];;){this.mode==="math"&&this.consumeSpaces();var a=this.fetch();if(Vo.endOfExpression.has(a.text)||r&&a.text===r||t&&Qt[a.text]&&Qt[a.text].infix)break;var i=this.parseAtom(r);if(i){if(i.type==="internal")continue}else break;n.push(i)}return this.mode==="text"&&this.formLigatures(n),this.handleInfixNodes(n)}handleInfixNodes(t){for(var r=-1,n,a=0;a=128)this.settings.strict&&($l(r.charCodeAt(0))?this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+r[0]+'" used in math mode',t):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+r[0]+'"'+(" ("+r.charCodeAt(0)+")"),t)),u={type:"textord",mode:"text",loc:rt.range(t),text:r};else return null;if(this.consume(),i)for(var d=0;dc&&(c=d):d&&(c!==void 0&&c>-1&&l.push(` -`.repeat(c)||" "),c=-1,l.push(d))}return l.join("")}function ec(e,t,r){return e.type==="element"?F6(e,t,r):e.type==="text"?r.whitespace==="normal"?tc(e,r):H6(e):[]}function F6(e,t,r){const n=rc(e,r),a=e.children||[];let i=-1,u=[];if(P6(e))return u;let s,l;for(Xa(e)||ks(e)&&xs(t,e,ks)?l=` -`:M6(e)?(s=2,l=2):Zo(e)&&(s=1,l=1);++i-1&&i<=t.length){let u=0;for(;;){let s=r[u];if(s===void 0){const l=Ss(t,r[u-1]);s=l===-1?t.length+1:l+1,r[u]=s}if(s>i)return{line:u+1,column:i-(u>0?r[u-1]:0)+1,offset:i};u++}}}function a(i){if(i&&typeof i.line=="number"&&typeof i.column=="number"&&!Number.isNaN(i.line)&&!Number.isNaN(i.column)){for(;r.length1?r[i.line-2]:0)+i.column-1;if(u=55296&&e<=57343}function cp(e){return e>=56320&&e<=57343}function hp(e,t){return(e-55296)*1024+9216+t}function sc(e){return e!==32&&e!==10&&e!==13&&e!==9&&e!==12&&e>=1&&e<=31||e>=127&&e<=159}function lc(e){return e>=64976&&e<=65007||op.has(e)}var P;(function(e){e.controlCharacterInInputStream="control-character-in-input-stream",e.noncharacterInInputStream="noncharacter-in-input-stream",e.surrogateInInputStream="surrogate-in-input-stream",e.nonVoidHtmlElementStartTagWithTrailingSolidus="non-void-html-element-start-tag-with-trailing-solidus",e.endTagWithAttributes="end-tag-with-attributes",e.endTagWithTrailingSolidus="end-tag-with-trailing-solidus",e.unexpectedSolidusInTag="unexpected-solidus-in-tag",e.unexpectedNullCharacter="unexpected-null-character",e.unexpectedQuestionMarkInsteadOfTagName="unexpected-question-mark-instead-of-tag-name",e.invalidFirstCharacterOfTagName="invalid-first-character-of-tag-name",e.unexpectedEqualsSignBeforeAttributeName="unexpected-equals-sign-before-attribute-name",e.missingEndTagName="missing-end-tag-name",e.unexpectedCharacterInAttributeName="unexpected-character-in-attribute-name",e.unknownNamedCharacterReference="unknown-named-character-reference",e.missingSemicolonAfterCharacterReference="missing-semicolon-after-character-reference",e.unexpectedCharacterAfterDoctypeSystemIdentifier="unexpected-character-after-doctype-system-identifier",e.unexpectedCharacterInUnquotedAttributeValue="unexpected-character-in-unquoted-attribute-value",e.eofBeforeTagName="eof-before-tag-name",e.eofInTag="eof-in-tag",e.missingAttributeValue="missing-attribute-value",e.missingWhitespaceBetweenAttributes="missing-whitespace-between-attributes",e.missingWhitespaceAfterDoctypePublicKeyword="missing-whitespace-after-doctype-public-keyword",e.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers="missing-whitespace-between-doctype-public-and-system-identifiers",e.missingWhitespaceAfterDoctypeSystemKeyword="missing-whitespace-after-doctype-system-keyword",e.missingQuoteBeforeDoctypePublicIdentifier="missing-quote-before-doctype-public-identifier",e.missingQuoteBeforeDoctypeSystemIdentifier="missing-quote-before-doctype-system-identifier",e.missingDoctypePublicIdentifier="missing-doctype-public-identifier",e.missingDoctypeSystemIdentifier="missing-doctype-system-identifier",e.abruptDoctypePublicIdentifier="abrupt-doctype-public-identifier",e.abruptDoctypeSystemIdentifier="abrupt-doctype-system-identifier",e.cdataInHtmlContent="cdata-in-html-content",e.incorrectlyOpenedComment="incorrectly-opened-comment",e.eofInScriptHtmlCommentLikeText="eof-in-script-html-comment-like-text",e.eofInDoctype="eof-in-doctype",e.nestedComment="nested-comment",e.abruptClosingOfEmptyComment="abrupt-closing-of-empty-comment",e.eofInComment="eof-in-comment",e.incorrectlyClosedComment="incorrectly-closed-comment",e.eofInCdata="eof-in-cdata",e.absenceOfDigitsInNumericCharacterReference="absence-of-digits-in-numeric-character-reference",e.nullCharacterReference="null-character-reference",e.surrogateCharacterReference="surrogate-character-reference",e.characterReferenceOutsideUnicodeRange="character-reference-outside-unicode-range",e.controlCharacterReference="control-character-reference",e.noncharacterCharacterReference="noncharacter-character-reference",e.missingWhitespaceBeforeDoctypeName="missing-whitespace-before-doctype-name",e.missingDoctypeName="missing-doctype-name",e.invalidCharacterSequenceAfterDoctypeName="invalid-character-sequence-after-doctype-name",e.duplicateAttribute="duplicate-attribute",e.nonConformingDoctype="non-conforming-doctype",e.missingDoctype="missing-doctype",e.misplacedDoctype="misplaced-doctype",e.endTagWithoutMatchingOpenElement="end-tag-without-matching-open-element",e.closingOfElementWithOpenChildElements="closing-of-element-with-open-child-elements",e.disallowedContentInNoscriptInHead="disallowed-content-in-noscript-in-head",e.openElementsLeftAfterEof="open-elements-left-after-eof",e.abandonedHeadElementChild="abandoned-head-element-child",e.misplacedStartTagForHeadElement="misplaced-start-tag-for-head-element",e.nestedNoscriptInHead="nested-noscript-in-head",e.eofInElementThatCanContainOnlyText="eof-in-element-that-can-contain-only-text"})(P||(P={}));const dp=65536;class fp{constructor(t){this.handler=t,this.html="",this.pos=-1,this.lastGapPos=-2,this.gapStack=[],this.skipNextNewLine=!1,this.lastChunkWritten=!1,this.endOfChunkHit=!1,this.bufferWaterline=dp,this.isEol=!1,this.lineStartPos=0,this.droppedBufferSize=0,this.line=1,this.lastErrOffset=-1}get col(){return this.pos-this.lineStartPos+ +(this.lastGapPos!==this.pos)}get offset(){return this.droppedBufferSize+this.pos}getError(t,r){const{line:n,col:a,offset:i}=this,u=a+r,s=i+r;return{code:t,startLine:n,endLine:n,startCol:u,endCol:u,startOffset:s,endOffset:s}}_err(t){this.handler.onParseError&&this.lastErrOffset!==this.offset&&(this.lastErrOffset=this.offset,this.handler.onParseError(this.getError(t,0)))}_addGap(){this.gapStack.push(this.lastGapPos),this.lastGapPos=this.pos}_processSurrogate(t){if(this.pos!==this.html.length-1){const r=this.html.charCodeAt(this.pos+1);if(cp(r))return this.pos++,this._addGap(),hp(t,r)}else if(!this.lastChunkWritten)return this.endOfChunkHit=!0,T.EOF;return this._err(P.surrogateInInputStream),t}willDropParsedChunk(){return this.pos>this.bufferWaterline}dropParsedChunk(){this.willDropParsedChunk()&&(this.html=this.html.substring(this.pos),this.lineStartPos-=this.pos,this.droppedBufferSize+=this.pos,this.pos=0,this.lastGapPos=-2,this.gapStack.length=0)}write(t,r){this.html.length>0?this.html+=t:this.html=t,this.endOfChunkHit=!1,this.lastChunkWritten=r}insertHtmlAtCurrentPos(t){this.html=this.html.substring(0,this.pos+1)+t+this.html.substring(this.pos+1),this.endOfChunkHit=!1}startsWith(t,r){if(this.pos+t.length>this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,!1;if(r)return this.html.startsWith(t,this.pos);for(let n=0;n=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,T.EOF;const n=this.html.charCodeAt(r);return n===T.CARRIAGE_RETURN?T.LINE_FEED:n}advance(){if(this.pos++,this.isEol&&(this.isEol=!1,this.line++,this.lineStartPos=this.pos),this.pos>=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,T.EOF;let t=this.html.charCodeAt(this.pos);return t===T.CARRIAGE_RETURN?(this.isEol=!0,this.skipNextNewLine=!0,T.LINE_FEED):t===T.LINE_FEED&&(this.isEol=!0,this.skipNextNewLine)?(this.line--,this.skipNextNewLine=!1,this._addGap(),this.advance()):(this.skipNextNewLine=!1,uc(t)&&(t=this._processSurrogate(t)),this.handler.onParseError===null||t>31&&t<127||t===T.LINE_FEED||t===T.CARRIAGE_RETURN||t>159&&t<64976||this._checkForProblematicCharacters(t),t)}_checkForProblematicCharacters(t){sc(t)?this._err(P.controlCharacterInInputStream):lc(t)&&this._err(P.noncharacterInInputStream)}retreat(t){for(this.pos-=t;this.pos=0;r--)if(e.attrs[r].name===t)return e.attrs[r].value;return null}const mp=new Uint16Array('ᵁ<Õıʊҝջאٵ۞ޢߖࠏ੊ઑඡ๭༉༦჊ረዡᐕᒝᓃᓟᔥ\0\0\0\0\0\0ᕫᛍᦍᰒᷝ὾⁠↰⊍⏀⏻⑂⠤⤒ⴈ⹈⿎〖㊺㘹㞬㣾㨨㩱㫠㬮ࠀEMabcfglmnoprstu\\bfms„‹•˜¦³¹ÈÏlig耻Æ䃆P耻&䀦cute耻Á䃁reve;䄂Āiyx}rc耻Â䃂;䐐r;쀀𝔄rave耻À䃀pha;䎑acr;䄀d;橓Āgp¡on;䄄f;쀀𝔸plyFunction;恡ing耻Å䃅Ācs¾Ãr;쀀𝒜ign;扔ilde耻Ã䃃ml耻Ä䃄ЀaceforsuåûþėĜĢħĪĀcrêòkslash;或Ŷöø;櫧ed;挆y;䐑ƀcrtąċĔause;戵noullis;愬a;䎒r;쀀𝔅pf;쀀𝔹eve;䋘còēmpeq;扎܀HOacdefhilorsuōőŖƀƞƢƵƷƺǜȕɳɸɾcy;䐧PY耻©䂩ƀcpyŝŢźute;䄆Ā;iŧŨ拒talDifferentialD;慅leys;愭ȀaeioƉƎƔƘron;䄌dil耻Ç䃇rc;䄈nint;戰ot;䄊ĀdnƧƭilla;䂸terDot;䂷òſi;䎧rcleȀDMPTLJNjǑǖot;抙inus;抖lus;投imes;抗oĀcsǢǸkwiseContourIntegral;戲eCurlyĀDQȃȏoubleQuote;思uote;怙ȀlnpuȞȨɇɕonĀ;eȥȦ户;橴ƀgitȯȶȺruent;扡nt;戯ourIntegral;戮ĀfrɌɎ;愂oduct;成nterClockwiseContourIntegral;戳oss;樯cr;쀀𝒞pĀ;Cʄʅ拓ap;才րDJSZacefiosʠʬʰʴʸˋ˗ˡ˦̳ҍĀ;oŹʥtrahd;椑cy;䐂cy;䐅cy;䐏ƀgrsʿ˄ˇger;怡r;憡hv;櫤Āayː˕ron;䄎;䐔lĀ;t˝˞戇a;䎔r;쀀𝔇Āaf˫̧Ācm˰̢riticalȀADGT̖̜̀̆cute;䂴oŴ̋̍;䋙bleAcute;䋝rave;䁠ilde;䋜ond;拄ferentialD;慆Ѱ̽\0\0\0͔͂\0Ѕf;쀀𝔻ƀ;DE͈͉͍䂨ot;惜qual;扐blèCDLRUVͣͲ΂ϏϢϸontourIntegraìȹoɴ͹\0\0ͻ»͉nArrow;懓Āeo·ΤftƀARTΐΖΡrrow;懐ightArrow;懔eåˊngĀLRΫτeftĀARγιrrow;柸ightArrow;柺ightArrow;柹ightĀATϘϞrrow;懒ee;抨pɁϩ\0\0ϯrrow;懑ownArrow;懕erticalBar;戥ǹABLRTaВЪаўѿͼrrowƀ;BUНОТ憓ar;椓pArrow;懵reve;䌑eft˒к\0ц\0ѐightVector;楐eeVector;楞ectorĀ;Bљњ憽ar;楖ightǔѧ\0ѱeeVector;楟ectorĀ;BѺѻ懁ar;楗eeĀ;A҆҇护rrow;憧ĀctҒҗr;쀀𝒟rok;䄐ࠀNTacdfglmopqstuxҽӀӄӋӞӢӧӮӵԡԯԶՒ՝ՠեG;䅊H耻Ð䃐cute耻É䃉ƀaiyӒӗӜron;䄚rc耻Ê䃊;䐭ot;䄖r;쀀𝔈rave耻È䃈ement;戈ĀapӺӾcr;䄒tyɓԆ\0\0ԒmallSquare;旻erySmallSquare;斫ĀgpԦԪon;䄘f;쀀𝔼silon;䎕uĀaiԼՉlĀ;TՂՃ橵ilde;扂librium;懌Āci՗՚r;愰m;橳a;䎗ml耻Ë䃋Āipժկsts;戃onentialE;慇ʀcfiosօֈ֍ֲ׌y;䐤r;쀀𝔉lledɓ֗\0\0֣mallSquare;旼erySmallSquare;斪Ͱֺ\0ֿ\0\0ׄf;쀀𝔽All;戀riertrf;愱cò׋؀JTabcdfgorstר׬ׯ׺؀ؒؖ؛؝أ٬ٲcy;䐃耻>䀾mmaĀ;d׷׸䎓;䏜reve;䄞ƀeiy؇،ؐdil;䄢rc;䄜;䐓ot;䄠r;쀀𝔊;拙pf;쀀𝔾eater̀EFGLSTصلَٖٛ٦qualĀ;Lؾؿ扥ess;招ullEqual;执reater;檢ess;扷lantEqual;橾ilde;扳cr;쀀𝒢;扫ЀAacfiosuڅڋږڛڞڪھۊRDcy;䐪Āctڐڔek;䋇;䁞irc;䄤r;愌lbertSpace;愋ǰگ\0ڲf;愍izontalLine;攀Āctۃۅòکrok;䄦mpńېۘownHumðįqual;扏܀EJOacdfgmnostuۺ۾܃܇܎ܚܞܡܨ݄ݸދޏޕcy;䐕lig;䄲cy;䐁cute耻Í䃍Āiyܓܘrc耻Î䃎;䐘ot;䄰r;愑rave耻Ì䃌ƀ;apܠܯܿĀcgܴܷr;䄪inaryI;慈lieóϝǴ݉\0ݢĀ;eݍݎ戬Āgrݓݘral;戫section;拂isibleĀCTݬݲomma;恣imes;恢ƀgptݿރވon;䄮f;쀀𝕀a;䎙cr;愐ilde;䄨ǫޚ\0ޞcy;䐆l耻Ï䃏ʀcfosuެ޷޼߂ߐĀiyޱ޵rc;䄴;䐙r;쀀𝔍pf;쀀𝕁ǣ߇\0ߌr;쀀𝒥rcy;䐈kcy;䐄΀HJacfosߤߨ߽߬߱ࠂࠈcy;䐥cy;䐌ppa;䎚Āey߶߻dil;䄶;䐚r;쀀𝔎pf;쀀𝕂cr;쀀𝒦րJTaceflmostࠥࠩࠬࡐࡣ঳সে্਷ੇcy;䐉耻<䀼ʀcmnpr࠷࠼ࡁࡄࡍute;䄹bda;䎛g;柪lacetrf;愒r;憞ƀaeyࡗ࡜ࡡron;䄽dil;䄻;䐛Āfsࡨ॰tԀACDFRTUVarࡾࢩࢱࣦ࣠ࣼयज़ΐ४Ānrࢃ࢏gleBracket;柨rowƀ;BR࢙࢚࢞憐ar;懤ightArrow;懆eiling;挈oǵࢷ\0ࣃbleBracket;柦nǔࣈ\0࣒eeVector;楡ectorĀ;Bࣛࣜ懃ar;楙loor;挊ightĀAV࣯ࣵrrow;憔ector;楎Āerँगeƀ;AVउऊऐ抣rrow;憤ector;楚iangleƀ;BEतथऩ抲ar;槏qual;抴pƀDTVषूौownVector;楑eeVector;楠ectorĀ;Bॖॗ憿ar;楘ectorĀ;B॥०憼ar;楒ightáΜs̀EFGLSTॾঋকঝঢভqualGreater;拚ullEqual;扦reater;扶ess;檡lantEqual;橽ilde;扲r;쀀𝔏Ā;eঽা拘ftarrow;懚idot;䄿ƀnpw৔ਖਛgȀLRlr৞৷ਂਐeftĀAR০৬rrow;柵ightArrow;柷ightArrow;柶eftĀarγਊightáοightáϊf;쀀𝕃erĀLRਢਬeftArrow;憙ightArrow;憘ƀchtਾੀੂòࡌ;憰rok;䅁;扪Ѐacefiosuਗ਼੝੠੷੼અઋ઎p;椅y;䐜Ādl੥੯iumSpace;恟lintrf;愳r;쀀𝔐nusPlus;戓pf;쀀𝕄cò੶;䎜ҀJacefostuણધભીଔଙඑ඗ඞcy;䐊cute;䅃ƀaey઴હાron;䅇dil;䅅;䐝ƀgswે૰଎ativeƀMTV૓૟૨ediumSpace;怋hiĀcn૦૘ë૙eryThiî૙tedĀGL૸ଆreaterGreateòٳessLesóੈLine;䀊r;쀀𝔑ȀBnptଢନଷ଺reak;恠BreakingSpace;䂠f;愕ڀ;CDEGHLNPRSTV୕ୖ୪୼஡௫ఄ౞಄ದ೘ൡඅ櫬Āou୛୤ngruent;扢pCap;扭oubleVerticalBar;戦ƀlqxஃஊ஛ement;戉ualĀ;Tஒஓ扠ilde;쀀≂̸ists;戄reater΀;EFGLSTஶஷ஽௉௓௘௥扯qual;扱ullEqual;쀀≧̸reater;쀀≫̸ess;批lantEqual;쀀⩾̸ilde;扵umpń௲௽ownHump;쀀≎̸qual;쀀≏̸eĀfsఊధtTriangleƀ;BEచఛడ拪ar;쀀⧏̸qual;括s̀;EGLSTవశ఼ౄోౘ扮qual;扰reater;扸ess;쀀≪̸lantEqual;쀀⩽̸ilde;扴estedĀGL౨౹reaterGreater;쀀⪢̸essLess;쀀⪡̸recedesƀ;ESಒಓಛ技qual;쀀⪯̸lantEqual;拠ĀeiಫಹverseElement;戌ghtTriangleƀ;BEೋೌ೒拫ar;쀀⧐̸qual;拭ĀquೝഌuareSuĀbp೨೹setĀ;E೰ೳ쀀⊏̸qual;拢ersetĀ;Eഃആ쀀⊐̸qual;拣ƀbcpഓതൎsetĀ;Eഛഞ쀀⊂⃒qual;抈ceedsȀ;ESTലള഻െ抁qual;쀀⪰̸lantEqual;拡ilde;쀀≿̸ersetĀ;E൘൛쀀⊃⃒qual;抉ildeȀ;EFT൮൯൵ൿ扁qual;扄ullEqual;扇ilde;扉erticalBar;戤cr;쀀𝒩ilde耻Ñ䃑;䎝܀Eacdfgmoprstuvලෂ෉෕ෛ෠෧෼ขภยา฿ไlig;䅒cute耻Ó䃓Āiy෎ීrc耻Ô䃔;䐞blac;䅐r;쀀𝔒rave耻Ò䃒ƀaei෮ෲ෶cr;䅌ga;䎩cron;䎟pf;쀀𝕆enCurlyĀDQฎบoubleQuote;怜uote;怘;橔Āclวฬr;쀀𝒪ash耻Ø䃘iŬื฼de耻Õ䃕es;樷ml耻Ö䃖erĀBP๋๠Āar๐๓r;怾acĀek๚๜;揞et;掴arenthesis;揜Ҁacfhilors๿ງຊຏຒດຝະ໼rtialD;戂y;䐟r;쀀𝔓i;䎦;䎠usMinus;䂱Āipຢອncareplanåڝf;愙Ȁ;eio຺ູ໠໤檻cedesȀ;EST່້໏໚扺qual;檯lantEqual;扼ilde;找me;怳Ādp໩໮uct;戏ortionĀ;aȥ໹l;戝Āci༁༆r;쀀𝒫;䎨ȀUfos༑༖༛༟OT耻"䀢r;쀀𝔔pf;愚cr;쀀𝒬؀BEacefhiorsu༾གྷཇའཱིྦྷྪྭ႖ႩႴႾarr;椐G耻®䂮ƀcnrཎནབute;䅔g;柫rĀ;tཛྷཝ憠l;椖ƀaeyཧཬཱron;䅘dil;䅖;䐠Ā;vླྀཹ愜erseĀEUྂྙĀlq྇ྎement;戋uilibrium;懋pEquilibrium;楯r»ཹo;䎡ghtЀACDFTUVa࿁࿫࿳ဢဨၛႇϘĀnr࿆࿒gleBracket;柩rowƀ;BL࿜࿝࿡憒ar;懥eftArrow;懄eiling;按oǵ࿹\0စbleBracket;柧nǔည\0နeeVector;楝ectorĀ;Bဝသ懂ar;楕loor;挋Āerိ၃eƀ;AVဵံြ抢rrow;憦ector;楛iangleƀ;BEၐၑၕ抳ar;槐qual;抵pƀDTVၣၮၸownVector;楏eeVector;楜ectorĀ;Bႂႃ憾ar;楔ectorĀ;B႑႒懀ar;楓Āpuႛ႞f;愝ndImplies;楰ightarrow;懛ĀchႹႼr;愛;憱leDelayed;槴ڀHOacfhimoqstuფჱჷჽᄙᄞᅑᅖᅡᅧᆵᆻᆿĀCcჩხHcy;䐩y;䐨FTcy;䐬cute;䅚ʀ;aeiyᄈᄉᄎᄓᄗ檼ron;䅠dil;䅞rc;䅜;䐡r;쀀𝔖ortȀDLRUᄪᄴᄾᅉownArrow»ОeftArrow»࢚ightArrow»࿝pArrow;憑gma;䎣allCircle;战pf;쀀𝕊ɲᅭ\0\0ᅰt;戚areȀ;ISUᅻᅼᆉᆯ斡ntersection;抓uĀbpᆏᆞsetĀ;Eᆗᆘ抏qual;抑ersetĀ;Eᆨᆩ抐qual;抒nion;抔cr;쀀𝒮ar;拆ȀbcmpᇈᇛሉላĀ;sᇍᇎ拐etĀ;Eᇍᇕqual;抆ĀchᇠህeedsȀ;ESTᇭᇮᇴᇿ扻qual;檰lantEqual;扽ilde;承Tháྌ;我ƀ;esሒሓሣ拑rsetĀ;Eሜም抃qual;抇et»ሓրHRSacfhiorsሾቄ቉ቕ቞ቱቶኟዂወዑORN耻Þ䃞ADE;愢ĀHc቎ቒcy;䐋y;䐦Ābuቚቜ;䀉;䎤ƀaeyብቪቯron;䅤dil;䅢;䐢r;쀀𝔗Āeiቻ኉Dzኀ\0ኇefore;戴a;䎘Ācn኎ኘkSpace;쀀  Space;怉ldeȀ;EFTካኬኲኼ戼qual;扃ullEqual;扅ilde;扈pf;쀀𝕋ipleDot;惛Āctዖዛr;쀀𝒯rok;䅦ૡዷጎጚጦ\0ጬጱ\0\0\0\0\0ጸጽ፷ᎅ\0᏿ᐄᐊᐐĀcrዻጁute耻Ú䃚rĀ;oጇገ憟cir;楉rǣጓ\0጖y;䐎ve;䅬Āiyጞጣrc耻Û䃛;䐣blac;䅰r;쀀𝔘rave耻Ù䃙acr;䅪Ādiፁ፩erĀBPፈ፝Āarፍፐr;䁟acĀekፗፙ;揟et;掵arenthesis;揝onĀ;P፰፱拃lus;抎Āgp፻፿on;䅲f;쀀𝕌ЀADETadps᎕ᎮᎸᏄϨᏒᏗᏳrrowƀ;BDᅐᎠᎤar;椒ownArrow;懅ownArrow;憕quilibrium;楮eeĀ;AᏋᏌ报rrow;憥ownáϳerĀLRᏞᏨeftArrow;憖ightArrow;憗iĀ;lᏹᏺ䏒on;䎥ing;䅮cr;쀀𝒰ilde;䅨ml耻Ü䃜ҀDbcdefosvᐧᐬᐰᐳᐾᒅᒊᒐᒖash;披ar;櫫y;䐒ashĀ;lᐻᐼ抩;櫦Āerᑃᑅ;拁ƀbtyᑌᑐᑺar;怖Ā;iᑏᑕcalȀBLSTᑡᑥᑪᑴar;戣ine;䁼eparator;杘ilde;所ThinSpace;怊r;쀀𝔙pf;쀀𝕍cr;쀀𝒱dash;抪ʀcefosᒧᒬᒱᒶᒼirc;䅴dge;拀r;쀀𝔚pf;쀀𝕎cr;쀀𝒲Ȁfiosᓋᓐᓒᓘr;쀀𝔛;䎞pf;쀀𝕏cr;쀀𝒳ҀAIUacfosuᓱᓵᓹᓽᔄᔏᔔᔚᔠcy;䐯cy;䐇cy;䐮cute耻Ý䃝Āiyᔉᔍrc;䅶;䐫r;쀀𝔜pf;쀀𝕐cr;쀀𝒴ml;䅸ЀHacdefosᔵᔹᔿᕋᕏᕝᕠᕤcy;䐖cute;䅹Āayᕄᕉron;䅽;䐗ot;䅻Dzᕔ\0ᕛoWidtè૙a;䎖r;愨pf;愤cr;쀀𝒵௡ᖃᖊᖐ\0ᖰᖶᖿ\0\0\0\0ᗆᗛᗫᙟ᙭\0ᚕ᚛ᚲᚹ\0ᚾcute耻á䃡reve;䄃̀;Ediuyᖜᖝᖡᖣᖨᖭ戾;쀀∾̳;房rc耻â䃢te肻´̆;䐰lig耻æ䃦Ā;r²ᖺ;쀀𝔞rave耻à䃠ĀepᗊᗖĀfpᗏᗔsym;愵èᗓha;䎱ĀapᗟcĀclᗤᗧr;䄁g;樿ɤᗰ\0\0ᘊʀ;adsvᗺᗻᗿᘁᘇ戧nd;橕;橜lope;橘;橚΀;elmrszᘘᘙᘛᘞᘿᙏᙙ戠;榤e»ᘙsdĀ;aᘥᘦ戡ѡᘰᘲᘴᘶᘸᘺᘼᘾ;榨;榩;榪;榫;榬;榭;榮;榯tĀ;vᙅᙆ戟bĀ;dᙌᙍ抾;榝Āptᙔᙗh;戢»¹arr;捼Āgpᙣᙧon;䄅f;쀀𝕒΀;Eaeiop዁ᙻᙽᚂᚄᚇᚊ;橰cir;橯;扊d;手s;䀧roxĀ;e዁ᚒñᚃing耻å䃥ƀctyᚡᚦᚨr;쀀𝒶;䀪mpĀ;e዁ᚯñʈilde耻ã䃣ml耻ä䃤Āciᛂᛈoninôɲnt;樑ࠀNabcdefiklnoprsu᛭ᛱᜰ᜼ᝃᝈ᝸᝽០៦ᠹᡐᜍ᤽᥈ᥰot;櫭Ācrᛶ᜞kȀcepsᜀᜅᜍᜓong;扌psilon;䏶rime;怵imĀ;e᜚᜛戽q;拍Ŷᜢᜦee;抽edĀ;gᜬᜭ挅e»ᜭrkĀ;t፜᜷brk;掶Āoyᜁᝁ;䐱quo;怞ʀcmprtᝓ᝛ᝡᝤᝨausĀ;eĊĉptyv;榰séᜌnoõēƀahwᝯ᝱ᝳ;䎲;愶een;扬r;쀀𝔟g΀costuvwឍឝឳេ៕៛៞ƀaiuបពរðݠrc;旯p»፱ƀdptឤឨឭot;樀lus;樁imes;樂ɱឹ\0\0ើcup;樆ar;昅riangleĀdu៍្own;施p;斳plus;樄eåᑄåᒭarow;植ƀako៭ᠦᠵĀcn៲ᠣkƀlst៺֫᠂ozenge;槫riangleȀ;dlr᠒᠓᠘᠝斴own;斾eft;旂ight;斸k;搣Ʊᠫ\0ᠳƲᠯ\0ᠱ;斒;斑4;斓ck;斈ĀeoᠾᡍĀ;qᡃᡆ쀀=⃥uiv;쀀≡⃥t;挐Ȁptwxᡙᡞᡧᡬf;쀀𝕓Ā;tᏋᡣom»Ꮜtie;拈؀DHUVbdhmptuvᢅᢖᢪᢻᣗᣛᣬ᣿ᤅᤊᤐᤡȀLRlrᢎᢐᢒᢔ;敗;敔;敖;敓ʀ;DUduᢡᢢᢤᢦᢨ敐;敦;敩;敤;敧ȀLRlrᢳᢵᢷᢹ;敝;敚;敜;教΀;HLRhlrᣊᣋᣍᣏᣑᣓᣕ救;敬;散;敠;敫;敢;敟ox;槉ȀLRlrᣤᣦᣨᣪ;敕;敒;攐;攌ʀ;DUduڽ᣷᣹᣻᣽;敥;敨;攬;攴inus;抟lus;択imes;抠ȀLRlrᤙᤛᤝ᤟;敛;敘;攘;攔΀;HLRhlrᤰᤱᤳᤵᤷ᤻᤹攂;敪;敡;敞;攼;攤;攜Āevģ᥂bar耻¦䂦Ȁceioᥑᥖᥚᥠr;쀀𝒷mi;恏mĀ;e᜚᜜lƀ;bhᥨᥩᥫ䁜;槅sub;柈Ŭᥴ᥾lĀ;e᥹᥺怢t»᥺pƀ;Eeįᦅᦇ;檮Ā;qۜۛೡᦧ\0᧨ᨑᨕᨲ\0ᨷᩐ\0\0᪴\0\0᫁\0\0ᬡᬮ᭍᭒\0᯽\0ᰌƀcpr᦭ᦲ᧝ute;䄇̀;abcdsᦿᧀᧄ᧊᧕᧙戩nd;橄rcup;橉Āau᧏᧒p;橋p;橇ot;橀;쀀∩︀Āeo᧢᧥t;恁îړȀaeiu᧰᧻ᨁᨅǰ᧵\0᧸s;橍on;䄍dil耻ç䃧rc;䄉psĀ;sᨌᨍ橌m;橐ot;䄋ƀdmnᨛᨠᨦil肻¸ƭptyv;榲t脀¢;eᨭᨮ䂢räƲr;쀀𝔠ƀceiᨽᩀᩍy;䑇ckĀ;mᩇᩈ朓ark»ᩈ;䏇r΀;Ecefms᩟᩠ᩢᩫ᪤᪪᪮旋;槃ƀ;elᩩᩪᩭ䋆q;扗eɡᩴ\0\0᪈rrowĀlr᩼᪁eft;憺ight;憻ʀRSacd᪒᪔᪖᪚᪟»ཇ;擈st;抛irc;抚ash;抝nint;樐id;櫯cir;槂ubsĀ;u᪻᪼晣it»᪼ˬ᫇᫔᫺\0ᬊonĀ;eᫍᫎ䀺Ā;qÇÆɭ᫙\0\0᫢aĀ;t᫞᫟䀬;䁀ƀ;fl᫨᫩᫫戁îᅠeĀmx᫱᫶ent»᫩eóɍǧ᫾\0ᬇĀ;dኻᬂot;橭nôɆƀfryᬐᬔᬗ;쀀𝕔oäɔ脀©;sŕᬝr;愗Āaoᬥᬩrr;憵ss;朗Ācuᬲᬷr;쀀𝒸Ābpᬼ᭄Ā;eᭁᭂ櫏;櫑Ā;eᭉᭊ櫐;櫒dot;拯΀delprvw᭠᭬᭷ᮂᮬᯔ᯹arrĀlr᭨᭪;椸;椵ɰ᭲\0\0᭵r;拞c;拟arrĀ;p᭿ᮀ憶;椽̀;bcdosᮏᮐᮖᮡᮥᮨ截rcap;橈Āauᮛᮞp;橆p;橊ot;抍r;橅;쀀∪︀Ȁalrv᮵ᮿᯞᯣrrĀ;mᮼᮽ憷;椼yƀevwᯇᯔᯘqɰᯎ\0\0ᯒreã᭳uã᭵ee;拎edge;拏en耻¤䂤earrowĀlrᯮ᯳eft»ᮀight»ᮽeäᯝĀciᰁᰇoninôǷnt;戱lcty;挭ঀAHabcdefhijlorstuwz᰸᰻᰿ᱝᱩᱵᲊᲞᲬᲷ᳻᳿ᴍᵻᶑᶫᶻ᷆᷍rò΁ar;楥Ȁglrs᱈ᱍ᱒᱔ger;怠eth;愸òᄳhĀ;vᱚᱛ怐»ऊūᱡᱧarow;椏aã̕Āayᱮᱳron;䄏;䐴ƀ;ao̲ᱼᲄĀgrʿᲁr;懊tseq;橷ƀglmᲑᲔᲘ耻°䂰ta;䎴ptyv;榱ĀirᲣᲨsht;楿;쀀𝔡arĀlrᲳᲵ»ࣜ»သʀaegsv᳂͸᳖᳜᳠mƀ;oș᳊᳔ndĀ;ș᳑uit;晦amma;䏝in;拲ƀ;io᳧᳨᳸䃷de脀÷;o᳧ᳰntimes;拇nø᳷cy;䑒cɯᴆ\0\0ᴊrn;挞op;挍ʀlptuwᴘᴝᴢᵉᵕlar;䀤f;쀀𝕕ʀ;emps̋ᴭᴷᴽᵂqĀ;d͒ᴳot;扑inus;戸lus;戔quare;抡blebarwedgåúnƀadhᄮᵝᵧownarrowóᲃarpoonĀlrᵲᵶefôᲴighôᲶŢᵿᶅkaro÷གɯᶊ\0\0ᶎrn;挟op;挌ƀcotᶘᶣᶦĀryᶝᶡ;쀀𝒹;䑕l;槶rok;䄑Ādrᶰᶴot;拱iĀ;fᶺ᠖斿Āah᷀᷃ròЩaòྦangle;榦Āci᷒ᷕy;䑟grarr;柿ऀDacdefglmnopqrstuxḁḉḙḸոḼṉṡṾấắẽỡἪἷὄ὎὚ĀDoḆᴴoôᲉĀcsḎḔute耻é䃩ter;橮ȀaioyḢḧḱḶron;䄛rĀ;cḭḮ扖耻ê䃪lon;払;䑍ot;䄗ĀDrṁṅot;扒;쀀𝔢ƀ;rsṐṑṗ檚ave耻è䃨Ā;dṜṝ檖ot;檘Ȁ;ilsṪṫṲṴ檙nters;揧;愓Ā;dṹṺ檕ot;檗ƀapsẅẉẗcr;䄓tyƀ;svẒẓẕ戅et»ẓpĀ1;ẝẤijạả;怄;怅怃ĀgsẪẬ;䅋p;怂ĀgpẴẸon;䄙f;쀀𝕖ƀalsỄỎỒrĀ;sỊị拕l;槣us;橱iƀ;lvỚớở䎵on»ớ;䏵ȀcsuvỪỳἋἣĀioữḱrc»Ḯɩỹ\0\0ỻíՈantĀglἂἆtr»ṝess»Ṻƀaeiἒ἖Ἒls;䀽st;扟vĀ;DȵἠD;橸parsl;槥ĀDaἯἳot;打rr;楱ƀcdiἾὁỸr;愯oô͒ĀahὉὋ;䎷耻ð䃰Āmrὓὗl耻ë䃫o;悬ƀcipὡὤὧl;䀡sôծĀeoὬὴctatioîՙnentialåչৡᾒ\0ᾞ\0ᾡᾧ\0\0ῆῌ\0ΐ\0ῦῪ \0 ⁚llingdotseñṄy;䑄male;晀ƀilrᾭᾳ῁lig;耀ffiɩᾹ\0\0᾽g;耀ffig;耀ffl;쀀𝔣lig;耀filig;쀀fjƀaltῙ῜ῡt;晭ig;耀flns;斱of;䆒ǰ΅\0ῳf;쀀𝕗ĀakֿῷĀ;vῼ´拔;櫙artint;樍Āao‌⁕Ācs‑⁒ႉ‸⁅⁈\0⁐β•‥‧‪‬\0‮耻½䂽;慓耻¼䂼;慕;慙;慛Ƴ‴\0‶;慔;慖ʴ‾⁁\0\0⁃耻¾䂾;慗;慜5;慘ƶ⁌\0⁎;慚;慝8;慞l;恄wn;挢cr;쀀𝒻ࢀEabcdefgijlnorstv₂₉₟₥₰₴⃰⃵⃺⃿℃ℒℸ̗ℾ⅒↞Ā;lٍ₇;檌ƀcmpₐₕ₝ute;䇵maĀ;dₜ᳚䎳;檆reve;䄟Āiy₪₮rc;䄝;䐳ot;䄡Ȁ;lqsؾق₽⃉ƀ;qsؾٌ⃄lanô٥Ȁ;cdl٥⃒⃥⃕c;檩otĀ;o⃜⃝檀Ā;l⃢⃣檂;檄Ā;e⃪⃭쀀⋛︀s;檔r;쀀𝔤Ā;gٳ؛mel;愷cy;䑓Ȁ;Eajٚℌℎℐ;檒;檥;檤ȀEaesℛℝ℩ℴ;扩pĀ;p℣ℤ檊rox»ℤĀ;q℮ℯ檈Ā;q℮ℛim;拧pf;쀀𝕘Āci⅃ⅆr;愊mƀ;el٫ⅎ⅐;檎;檐茀>;cdlqr׮ⅠⅪⅮⅳⅹĀciⅥⅧ;檧r;橺ot;拗Par;榕uest;橼ʀadelsↄⅪ←ٖ↛ǰ↉\0↎proø₞r;楸qĀlqؿ↖lesó₈ií٫Āen↣↭rtneqq;쀀≩︀Å↪ԀAabcefkosy⇄⇇⇱⇵⇺∘∝∯≨≽ròΠȀilmr⇐⇔⇗⇛rsðᒄf»․ilôکĀdr⇠⇤cy;䑊ƀ;cwࣴ⇫⇯ir;楈;憭ar;意irc;䄥ƀalr∁∎∓rtsĀ;u∉∊晥it»∊lip;怦con;抹r;쀀𝔥sĀew∣∩arow;椥arow;椦ʀamopr∺∾≃≞≣rr;懿tht;戻kĀlr≉≓eftarrow;憩ightarrow;憪f;쀀𝕙bar;怕ƀclt≯≴≸r;쀀𝒽asè⇴rok;䄧Ābp⊂⊇ull;恃hen»ᱛૡ⊣\0⊪\0⊸⋅⋎\0⋕⋳\0\0⋸⌢⍧⍢⍿\0⎆⎪⎴cute耻í䃭ƀ;iyݱ⊰⊵rc耻î䃮;䐸Ācx⊼⊿y;䐵cl耻¡䂡ĀfrΟ⋉;쀀𝔦rave耻ì䃬Ȁ;inoܾ⋝⋩⋮Āin⋢⋦nt;樌t;戭fin;槜ta;愩lig;䄳ƀaop⋾⌚⌝ƀcgt⌅⌈⌗r;䄫ƀelpܟ⌏⌓inåގarôܠh;䄱f;抷ed;䆵ʀ;cfotӴ⌬⌱⌽⍁are;愅inĀ;t⌸⌹戞ie;槝doô⌙ʀ;celpݗ⍌⍐⍛⍡al;抺Āgr⍕⍙eróᕣã⍍arhk;樗rod;樼Ȁcgpt⍯⍲⍶⍻y;䑑on;䄯f;쀀𝕚a;䎹uest耻¿䂿Āci⎊⎏r;쀀𝒾nʀ;EdsvӴ⎛⎝⎡ӳ;拹ot;拵Ā;v⎦⎧拴;拳Ā;iݷ⎮lde;䄩ǫ⎸\0⎼cy;䑖l耻ï䃯̀cfmosu⏌⏗⏜⏡⏧⏵Āiy⏑⏕rc;䄵;䐹r;쀀𝔧ath;䈷pf;쀀𝕛ǣ⏬\0⏱r;쀀𝒿rcy;䑘kcy;䑔Ѐacfghjos␋␖␢␧␭␱␵␻ppaĀ;v␓␔䎺;䏰Āey␛␠dil;䄷;䐺r;쀀𝔨reen;䄸cy;䑅cy;䑜pf;쀀𝕜cr;쀀𝓀஀ABEHabcdefghjlmnoprstuv⑰⒁⒆⒍⒑┎┽╚▀♎♞♥♹♽⚚⚲⛘❝❨➋⟀⠁⠒ƀart⑷⑺⑼rò৆òΕail;椛arr;椎Ā;gঔ⒋;檋ar;楢ॣ⒥\0⒪\0⒱\0\0\0\0\0⒵Ⓔ\0ⓆⓈⓍ\0⓹ute;䄺mptyv;榴raîࡌbda;䎻gƀ;dlࢎⓁⓃ;榑åࢎ;檅uo耻«䂫rЀ;bfhlpst࢙ⓞⓦⓩ⓫⓮⓱⓵Ā;f࢝ⓣs;椟s;椝ë≒p;憫l;椹im;楳l;憢ƀ;ae⓿─┄檫il;椙Ā;s┉┊檭;쀀⪭︀ƀabr┕┙┝rr;椌rk;杲Āak┢┬cĀek┨┪;䁻;䁛Āes┱┳;榋lĀdu┹┻;榏;榍Ȁaeuy╆╋╖╘ron;䄾Ādi═╔il;䄼ìࢰâ┩;䐻Ȁcqrs╣╦╭╽a;椶uoĀ;rนᝆĀdu╲╷har;楧shar;楋h;憲ʀ;fgqs▋▌উ◳◿扤tʀahlrt▘▤▷◂◨rrowĀ;t࢙□aé⓶arpoonĀdu▯▴own»њp»०eftarrows;懇ightƀahs◍◖◞rrowĀ;sࣴࢧarpoonó྘quigarro÷⇰hreetimes;拋ƀ;qs▋ও◺lanôবʀ;cdgsব☊☍☝☨c;檨otĀ;o☔☕橿Ā;r☚☛檁;檃Ā;e☢☥쀀⋚︀s;檓ʀadegs☳☹☽♉♋pproøⓆot;拖qĀgq♃♅ôউgtò⒌ôছiíলƀilr♕࣡♚sht;楼;쀀𝔩Ā;Eজ♣;檑š♩♶rĀdu▲♮Ā;l॥♳;楪lk;斄cy;䑙ʀ;achtੈ⚈⚋⚑⚖rò◁orneòᴈard;楫ri;旺Āio⚟⚤dot;䅀ustĀ;a⚬⚭掰che»⚭ȀEaes⚻⚽⛉⛔;扨pĀ;p⛃⛄檉rox»⛄Ā;q⛎⛏檇Ā;q⛎⚻im;拦Ѐabnoptwz⛩⛴⛷✚✯❁❇❐Ānr⛮⛱g;柬r;懽rëࣁgƀlmr⛿✍✔eftĀar০✇ightá৲apsto;柼ightá৽parrowĀlr✥✩efô⓭ight;憬ƀafl✶✹✽r;榅;쀀𝕝us;樭imes;樴š❋❏st;戗áፎƀ;ef❗❘᠀旊nge»❘arĀ;l❤❥䀨t;榓ʀachmt❳❶❼➅➇ròࢨorneòᶌarĀ;d྘➃;業;怎ri;抿̀achiqt➘➝ੀ➢➮➻quo;怹r;쀀𝓁mƀ;egল➪➬;檍;檏Ābu┪➳oĀ;rฟ➹;怚rok;䅂萀<;cdhilqrࠫ⟒☹⟜⟠⟥⟪⟰Āci⟗⟙;檦r;橹reå◲mes;拉arr;楶uest;橻ĀPi⟵⟹ar;榖ƀ;ef⠀भ᠛旃rĀdu⠇⠍shar;楊har;楦Āen⠗⠡rtneqq;쀀≨︀Å⠞܀Dacdefhilnopsu⡀⡅⢂⢎⢓⢠⢥⢨⣚⣢⣤ઃ⣳⤂Dot;戺Ȁclpr⡎⡒⡣⡽r耻¯䂯Āet⡗⡙;時Ā;e⡞⡟朠se»⡟Ā;sျ⡨toȀ;dluျ⡳⡷⡻owîҌefôएðᏑker;斮Āoy⢇⢌mma;権;䐼ash;怔asuredangle»ᘦr;쀀𝔪o;愧ƀcdn⢯⢴⣉ro耻µ䂵Ȁ;acdᑤ⢽⣀⣄sôᚧir;櫰ot肻·Ƶusƀ;bd⣒ᤃ⣓戒Ā;uᴼ⣘;横ţ⣞⣡p;櫛ò−ðઁĀdp⣩⣮els;抧f;쀀𝕞Āct⣸⣽r;쀀𝓂pos»ᖝƀ;lm⤉⤊⤍䎼timap;抸ఀGLRVabcdefghijlmoprstuvw⥂⥓⥾⦉⦘⧚⧩⨕⨚⩘⩝⪃⪕⪤⪨⬄⬇⭄⭿⮮ⰴⱧⱼ⳩Āgt⥇⥋;쀀⋙̸Ā;v⥐௏쀀≫⃒ƀelt⥚⥲⥶ftĀar⥡⥧rrow;懍ightarrow;懎;쀀⋘̸Ā;v⥻ే쀀≪⃒ightarrow;懏ĀDd⦎⦓ash;抯ash;抮ʀbcnpt⦣⦧⦬⦱⧌la»˞ute;䅄g;쀀∠⃒ʀ;Eiop඄⦼⧀⧅⧈;쀀⩰̸d;쀀≋̸s;䅉roø඄urĀ;a⧓⧔普lĀ;s⧓ସdz⧟\0⧣p肻 ଷmpĀ;e௹ఀʀaeouy⧴⧾⨃⨐⨓ǰ⧹\0⧻;橃on;䅈dil;䅆ngĀ;dൾ⨊ot;쀀⩭̸p;橂;䐽ash;怓΀;Aadqsxஒ⨩⨭⨻⩁⩅⩐rr;懗rĀhr⨳⨶k;椤Ā;oᏲᏰot;쀀≐̸uiöୣĀei⩊⩎ar;椨í஘istĀ;s஠டr;쀀𝔫ȀEest௅⩦⩹⩼ƀ;qs஼⩭௡ƀ;qs஼௅⩴lanô௢ií௪Ā;rஶ⪁»ஷƀAap⪊⪍⪑rò⥱rr;憮ar;櫲ƀ;svྍ⪜ྌĀ;d⪡⪢拼;拺cy;䑚΀AEadest⪷⪺⪾⫂⫅⫶⫹rò⥦;쀀≦̸rr;憚r;急Ȁ;fqs఻⫎⫣⫯tĀar⫔⫙rro÷⫁ightarro÷⪐ƀ;qs఻⪺⫪lanôౕĀ;sౕ⫴»శiíౝĀ;rవ⫾iĀ;eచథiäඐĀpt⬌⬑f;쀀𝕟膀¬;in⬙⬚⬶䂬nȀ;Edvஉ⬤⬨⬮;쀀⋹̸ot;쀀⋵̸ǡஉ⬳⬵;拷;拶iĀ;vಸ⬼ǡಸ⭁⭃;拾;拽ƀaor⭋⭣⭩rȀ;ast୻⭕⭚⭟lleì୻l;쀀⫽⃥;쀀∂̸lint;樔ƀ;ceಒ⭰⭳uåಥĀ;cಘ⭸Ā;eಒ⭽ñಘȀAait⮈⮋⮝⮧rò⦈rrƀ;cw⮔⮕⮙憛;쀀⤳̸;쀀↝̸ghtarrow»⮕riĀ;eೋೖ΀chimpqu⮽⯍⯙⬄୸⯤⯯Ȁ;cerല⯆ഷ⯉uå൅;쀀𝓃ortɭ⬅\0\0⯖ará⭖mĀ;e൮⯟Ā;q൴൳suĀbp⯫⯭å೸åഋƀbcp⯶ⰑⰙȀ;Ees⯿ⰀഢⰄ抄;쀀⫅̸etĀ;eഛⰋqĀ;qണⰀcĀ;eലⰗñസȀ;EesⰢⰣൟⰧ抅;쀀⫆̸etĀ;e൘ⰮqĀ;qൠⰣȀgilrⰽⰿⱅⱇìௗlde耻ñ䃱çృiangleĀlrⱒⱜeftĀ;eచⱚñదightĀ;eೋⱥñ೗Ā;mⱬⱭ䎽ƀ;esⱴⱵⱹ䀣ro;愖p;怇ҀDHadgilrsⲏⲔⲙⲞⲣⲰⲶⳓⳣash;抭arr;椄p;쀀≍⃒ash;抬ĀetⲨⲬ;쀀≥⃒;쀀>⃒nfin;槞ƀAetⲽⳁⳅrr;椂;쀀≤⃒Ā;rⳊⳍ쀀<⃒ie;쀀⊴⃒ĀAtⳘⳜrr;椃rie;쀀⊵⃒im;쀀∼⃒ƀAan⳰⳴ⴂrr;懖rĀhr⳺⳽k;椣Ā;oᏧᏥear;椧ቓ᪕\0\0\0\0\0\0\0\0\0\0\0\0\0ⴭ\0ⴸⵈⵠⵥ⵲ⶄᬇ\0\0ⶍⶫ\0ⷈⷎ\0ⷜ⸙⸫⸾⹃Ācsⴱ᪗ute耻ó䃳ĀiyⴼⵅrĀ;c᪞ⵂ耻ô䃴;䐾ʀabios᪠ⵒⵗLjⵚlac;䅑v;樸old;榼lig;䅓Ācr⵩⵭ir;榿;쀀𝔬ͯ⵹\0\0⵼\0ⶂn;䋛ave耻ò䃲;槁Ābmⶈ෴ar;榵Ȁacitⶕ⶘ⶥⶨrò᪀Āir⶝ⶠr;榾oss;榻nå๒;槀ƀaeiⶱⶵⶹcr;䅍ga;䏉ƀcdnⷀⷅǍron;䎿;榶pf;쀀𝕠ƀaelⷔ⷗ǒr;榷rp;榹΀;adiosvⷪⷫⷮ⸈⸍⸐⸖戨rò᪆Ȁ;efmⷷⷸ⸂⸅橝rĀ;oⷾⷿ愴f»ⷿ耻ª䂪耻º䂺gof;抶r;橖lope;橗;橛ƀclo⸟⸡⸧ò⸁ash耻ø䃸l;折iŬⸯ⸴de耻õ䃵esĀ;aǛ⸺s;樶ml耻ö䃶bar;挽ૡ⹞\0⹽\0⺀⺝\0⺢⺹\0\0⻋ຜ\0⼓\0\0⼫⾼\0⿈rȀ;astЃ⹧⹲຅脀¶;l⹭⹮䂶leìЃɩ⹸\0\0⹻m;櫳;櫽y;䐿rʀcimpt⺋⺏⺓ᡥ⺗nt;䀥od;䀮il;怰enk;怱r;쀀𝔭ƀimo⺨⺰⺴Ā;v⺭⺮䏆;䏕maô੶ne;明ƀ;tv⺿⻀⻈䏀chfork»´;䏖Āau⻏⻟nĀck⻕⻝kĀ;h⇴⻛;愎ö⇴sҀ;abcdemst⻳⻴ᤈ⻹⻽⼄⼆⼊⼎䀫cir;樣ir;樢Āouᵀ⼂;樥;橲n肻±ຝim;樦wo;樧ƀipu⼙⼠⼥ntint;樕f;쀀𝕡nd耻£䂣Ԁ;Eaceinosu່⼿⽁⽄⽇⾁⾉⾒⽾⾶;檳p;檷uå໙Ā;c໎⽌̀;acens່⽙⽟⽦⽨⽾pproø⽃urlyeñ໙ñ໎ƀaes⽯⽶⽺pprox;檹qq;檵im;拨iíໟmeĀ;s⾈ຮ怲ƀEas⽸⾐⽺ð⽵ƀdfp໬⾙⾯ƀals⾠⾥⾪lar;挮ine;挒urf;挓Ā;t໻⾴ï໻rel;抰Āci⿀⿅r;쀀𝓅;䏈ncsp;怈̀fiopsu⿚⋢⿟⿥⿫⿱r;쀀𝔮pf;쀀𝕢rime;恗cr;쀀𝓆ƀaeo⿸〉〓tĀei⿾々rnionóڰnt;樖stĀ;e【】䀿ñἙô༔઀ABHabcdefhilmnoprstux぀けさすムㄎㄫㅇㅢㅲㆎ㈆㈕㈤㈩㉘㉮㉲㊐㊰㊷ƀartぇおがròႳòϝail;検aròᱥar;楤΀cdenqrtとふへみわゔヌĀeuねぱ;쀀∽̱te;䅕iãᅮmptyv;榳gȀ;del࿑らるろ;榒;榥å࿑uo耻»䂻rր;abcfhlpstw࿜ガクシスゼゾダッデナp;極Ā;f࿠ゴs;椠;椳s;椞ë≝ð✮l;楅im;楴l;憣;憝Āaiパフil;椚oĀ;nホボ戶aló༞ƀabrョリヮrò៥rk;杳ĀakンヽcĀekヹ・;䁽;䁝Āes㄂㄄;榌lĀduㄊㄌ;榎;榐Ȁaeuyㄗㄜㄧㄩron;䅙Ādiㄡㄥil;䅗ì࿲âヺ;䑀Ȁclqsㄴㄷㄽㅄa;椷dhar;楩uoĀ;rȎȍh;憳ƀacgㅎㅟངlȀ;ipsླྀㅘㅛႜnåႻarôྩt;断ƀilrㅩဣㅮsht;楽;쀀𝔯ĀaoㅷㆆrĀduㅽㅿ»ѻĀ;l႑ㆄ;楬Ā;vㆋㆌ䏁;䏱ƀgns㆕ㇹㇼht̀ahlrstㆤㆰ㇂㇘㇤㇮rrowĀ;t࿜ㆭaéトarpoonĀduㆻㆿowîㅾp»႒eftĀah㇊㇐rrowó࿪arpoonóՑightarrows;應quigarro÷ニhreetimes;拌g;䋚ingdotseñἲƀahm㈍㈐㈓rò࿪aòՑ;怏oustĀ;a㈞㈟掱che»㈟mid;櫮Ȁabpt㈲㈽㉀㉒Ānr㈷㈺g;柭r;懾rëဃƀafl㉇㉊㉎r;榆;쀀𝕣us;樮imes;樵Āap㉝㉧rĀ;g㉣㉤䀩t;榔olint;樒arò㇣Ȁachq㉻㊀Ⴜ㊅quo;怺r;쀀𝓇Ābu・㊊oĀ;rȔȓƀhir㊗㊛㊠reåㇸmes;拊iȀ;efl㊪ၙᠡ㊫方tri;槎luhar;楨;愞ൡ㋕㋛㋟㌬㌸㍱\0㍺㎤\0\0㏬㏰\0㐨㑈㑚㒭㒱㓊㓱\0㘖\0\0㘳cute;䅛quï➺Ԁ;Eaceinpsyᇭ㋳㋵㋿㌂㌋㌏㌟㌦㌩;檴ǰ㋺\0㋼;檸on;䅡uåᇾĀ;dᇳ㌇il;䅟rc;䅝ƀEas㌖㌘㌛;檶p;檺im;择olint;樓iíሄ;䑁otƀ;be㌴ᵇ㌵担;橦΀Aacmstx㍆㍊㍗㍛㍞㍣㍭rr;懘rĀhr㍐㍒ë∨Ā;oਸ਼਴t耻§䂧i;䀻war;椩mĀin㍩ðnuóñt;朶rĀ;o㍶⁕쀀𝔰Ȁacoy㎂㎆㎑㎠rp;景Āhy㎋㎏cy;䑉;䑈rtɭ㎙\0\0㎜iäᑤaraì⹯耻­䂭Āgm㎨㎴maƀ;fv㎱㎲㎲䏃;䏂Ѐ;deglnprካ㏅㏉㏎㏖㏞㏡㏦ot;橪Ā;q኱ኰĀ;E㏓㏔檞;檠Ā;E㏛㏜檝;檟e;扆lus;樤arr;楲aròᄽȀaeit㏸㐈㐏㐗Āls㏽㐄lsetmé㍪hp;樳parsl;槤Ādlᑣ㐔e;挣Ā;e㐜㐝檪Ā;s㐢㐣檬;쀀⪬︀ƀflp㐮㐳㑂tcy;䑌Ā;b㐸㐹䀯Ā;a㐾㐿槄r;挿f;쀀𝕤aĀdr㑍ЂesĀ;u㑔㑕晠it»㑕ƀcsu㑠㑹㒟Āau㑥㑯pĀ;sᆈ㑫;쀀⊓︀pĀ;sᆴ㑵;쀀⊔︀uĀbp㑿㒏ƀ;esᆗᆜ㒆etĀ;eᆗ㒍ñᆝƀ;esᆨᆭ㒖etĀ;eᆨ㒝ñᆮƀ;afᅻ㒦ְrť㒫ֱ»ᅼaròᅈȀcemt㒹㒾㓂㓅r;쀀𝓈tmîñiì㐕aræᆾĀar㓎㓕rĀ;f㓔ឿ昆Āan㓚㓭ightĀep㓣㓪psiloîỠhé⺯s»⡒ʀbcmnp㓻㕞ሉ㖋㖎Ҁ;Edemnprs㔎㔏㔑㔕㔞㔣㔬㔱㔶抂;櫅ot;檽Ā;dᇚ㔚ot;櫃ult;櫁ĀEe㔨㔪;櫋;把lus;檿arr;楹ƀeiu㔽㕒㕕tƀ;en㔎㕅㕋qĀ;qᇚ㔏eqĀ;q㔫㔨m;櫇Ābp㕚㕜;櫕;櫓c̀;acensᇭ㕬㕲㕹㕻㌦pproø㋺urlyeñᇾñᇳƀaes㖂㖈㌛pproø㌚qñ㌗g;晪ڀ123;Edehlmnps㖩㖬㖯ሜ㖲㖴㗀㗉㗕㗚㗟㗨㗭耻¹䂹耻²䂲耻³䂳;櫆Āos㖹㖼t;檾ub;櫘Ā;dሢ㗅ot;櫄sĀou㗏㗒l;柉b;櫗arr;楻ult;櫂ĀEe㗤㗦;櫌;抋lus;櫀ƀeiu㗴㘉㘌tƀ;enሜ㗼㘂qĀ;qሢ㖲eqĀ;q㗧㗤m;櫈Ābp㘑㘓;櫔;櫖ƀAan㘜㘠㘭rr;懙rĀhr㘦㘨ë∮Ā;oਫ਩war;椪lig耻ß䃟௡㙑㙝㙠ዎ㙳㙹\0㙾㛂\0\0\0\0\0㛛㜃\0㜉㝬\0\0\0㞇ɲ㙖\0\0㙛get;挖;䏄rë๟ƀaey㙦㙫㙰ron;䅥dil;䅣;䑂lrec;挕r;쀀𝔱Ȁeiko㚆㚝㚵㚼Dz㚋\0㚑eĀ4fኄኁaƀ;sv㚘㚙㚛䎸ym;䏑Ācn㚢㚲kĀas㚨㚮pproø዁im»ኬsðኞĀas㚺㚮ð዁rn耻þ䃾Ǭ̟㛆⋧es膀×;bd㛏㛐㛘䃗Ā;aᤏ㛕r;樱;樰ƀeps㛡㛣㜀á⩍Ȁ;bcf҆㛬㛰㛴ot;挶ir;櫱Ā;o㛹㛼쀀𝕥rk;櫚á㍢rime;怴ƀaip㜏㜒㝤dåቈ΀adempst㜡㝍㝀㝑㝗㝜㝟ngleʀ;dlqr㜰㜱㜶㝀㝂斵own»ᶻeftĀ;e⠀㜾ñम;扜ightĀ;e㊪㝋ñၚot;旬inus;樺lus;樹b;槍ime;樻ezium;揢ƀcht㝲㝽㞁Āry㝷㝻;쀀𝓉;䑆cy;䑛rok;䅧Āio㞋㞎xô᝷headĀlr㞗㞠eftarro÷ࡏightarrow»ཝऀAHabcdfghlmoprstuw㟐㟓㟗㟤㟰㟼㠎㠜㠣㠴㡑㡝㡫㢩㣌㣒㣪㣶ròϭar;楣Ācr㟜㟢ute耻ú䃺òᅐrǣ㟪\0㟭y;䑞ve;䅭Āiy㟵㟺rc耻û䃻;䑃ƀabh㠃㠆㠋ròᎭlac;䅱aòᏃĀir㠓㠘sht;楾;쀀𝔲rave耻ù䃹š㠧㠱rĀlr㠬㠮»ॗ»ႃlk;斀Āct㠹㡍ɯ㠿\0\0㡊rnĀ;e㡅㡆挜r»㡆op;挏ri;旸Āal㡖㡚cr;䅫肻¨͉Āgp㡢㡦on;䅳f;쀀𝕦̀adhlsuᅋ㡸㡽፲㢑㢠ownáᎳarpoonĀlr㢈㢌efô㠭ighô㠯iƀ;hl㢙㢚㢜䏅»ᏺon»㢚parrows;懈ƀcit㢰㣄㣈ɯ㢶\0\0㣁rnĀ;e㢼㢽挝r»㢽op;挎ng;䅯ri;旹cr;쀀𝓊ƀdir㣙㣝㣢ot;拰lde;䅩iĀ;f㜰㣨»᠓Āam㣯㣲rò㢨l耻ü䃼angle;榧ހABDacdeflnoprsz㤜㤟㤩㤭㦵㦸㦽㧟㧤㧨㧳㧹㧽㨁㨠ròϷarĀ;v㤦㤧櫨;櫩asèϡĀnr㤲㤷grt;榜΀eknprst㓣㥆㥋㥒㥝㥤㦖appá␕othinçẖƀhir㓫⻈㥙opô⾵Ā;hᎷ㥢ïㆍĀiu㥩㥭gmá㎳Ābp㥲㦄setneqĀ;q㥽㦀쀀⊊︀;쀀⫋︀setneqĀ;q㦏㦒쀀⊋︀;쀀⫌︀Āhr㦛㦟etá㚜iangleĀlr㦪㦯eft»थight»ၑy;䐲ash»ံƀelr㧄㧒㧗ƀ;beⷪ㧋㧏ar;抻q;扚lip;拮Ābt㧜ᑨaòᑩr;쀀𝔳tré㦮suĀbp㧯㧱»ജ»൙pf;쀀𝕧roð໻tré㦴Ācu㨆㨋r;쀀𝓋Ābp㨐㨘nĀEe㦀㨖»㥾nĀEe㦒㨞»㦐igzag;榚΀cefoprs㨶㨻㩖㩛㩔㩡㩪irc;䅵Ādi㩀㩑Ābg㩅㩉ar;機eĀ;qᗺ㩏;扙erp;愘r;쀀𝔴pf;쀀𝕨Ā;eᑹ㩦atèᑹcr;쀀𝓌ૣណ㪇\0㪋\0㪐㪛\0\0㪝㪨㪫㪯\0\0㫃㫎\0㫘ៜ៟tré៑r;쀀𝔵ĀAa㪔㪗ròσrò৶;䎾ĀAa㪡㪤ròθrò৫að✓is;拻ƀdptឤ㪵㪾Āfl㪺ឩ;쀀𝕩imåឲĀAa㫇㫊ròώròਁĀcq㫒ីr;쀀𝓍Āpt៖㫜ré។Ѐacefiosu㫰㫽㬈㬌㬑㬕㬛㬡cĀuy㫶㫻te耻ý䃽;䑏Āiy㬂㬆rc;䅷;䑋n耻¥䂥r;쀀𝔶cy;䑗pf;쀀𝕪cr;쀀𝓎Ācm㬦㬩y;䑎l耻ÿ䃿Ԁacdefhiosw㭂㭈㭔㭘㭤㭩㭭㭴㭺㮀cute;䅺Āay㭍㭒ron;䅾;䐷ot;䅼Āet㭝㭡træᕟa;䎶r;쀀𝔷cy;䐶grarr;懝pf;쀀𝕫cr;쀀𝓏Ājn㮅㮇;怍j;怌'.split("").map(e=>e.charCodeAt(0))),pp=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]);function gp(e){var t;return e>=55296&&e<=57343||e>1114111?65533:(t=pp.get(e))!==null&&t!==void 0?t:e}var qe;(function(e){e[e.NUM=35]="NUM",e[e.SEMI=59]="SEMI",e[e.EQUALS=61]="EQUALS",e[e.ZERO=48]="ZERO",e[e.NINE=57]="NINE",e[e.LOWER_A=97]="LOWER_A",e[e.LOWER_F=102]="LOWER_F",e[e.LOWER_X=120]="LOWER_X",e[e.LOWER_Z=122]="LOWER_Z",e[e.UPPER_A=65]="UPPER_A",e[e.UPPER_F=70]="UPPER_F",e[e.UPPER_Z=90]="UPPER_Z"})(qe||(qe={}));const bp=32;var Kt;(function(e){e[e.VALUE_LENGTH=49152]="VALUE_LENGTH",e[e.BRANCH_LENGTH=16256]="BRANCH_LENGTH",e[e.JUMP_TABLE=127]="JUMP_TABLE"})(Kt||(Kt={}));function $a(e){return e>=qe.ZERO&&e<=qe.NINE}function Ep(e){return e>=qe.UPPER_A&&e<=qe.UPPER_F||e>=qe.LOWER_A&&e<=qe.LOWER_F}function Tp(e){return e>=qe.UPPER_A&&e<=qe.UPPER_Z||e>=qe.LOWER_A&&e<=qe.LOWER_Z||$a(e)}function xp(e){return e===qe.EQUALS||Tp(e)}var Ue;(function(e){e[e.EntityStart=0]="EntityStart",e[e.NumericStart=1]="NumericStart",e[e.NumericDecimal=2]="NumericDecimal",e[e.NumericHex=3]="NumericHex",e[e.NamedEntity=4]="NamedEntity"})(Ue||(Ue={}));var Ft;(function(e){e[e.Legacy=0]="Legacy",e[e.Strict=1]="Strict",e[e.Attribute=2]="Attribute"})(Ft||(Ft={}));class yp{constructor(t,r,n){this.decodeTree=t,this.emitCodePoint=r,this.errors=n,this.state=Ue.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=Ft.Strict}startEntity(t){this.decodeMode=t,this.state=Ue.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1}write(t,r){switch(this.state){case Ue.EntityStart:return t.charCodeAt(r)===qe.NUM?(this.state=Ue.NumericStart,this.consumed+=1,this.stateNumericStart(t,r+1)):(this.state=Ue.NamedEntity,this.stateNamedEntity(t,r));case Ue.NumericStart:return this.stateNumericStart(t,r);case Ue.NumericDecimal:return this.stateNumericDecimal(t,r);case Ue.NumericHex:return this.stateNumericHex(t,r);case Ue.NamedEntity:return this.stateNamedEntity(t,r)}}stateNumericStart(t,r){return r>=t.length?-1:(t.charCodeAt(r)|bp)===qe.LOWER_X?(this.state=Ue.NumericHex,this.consumed+=1,this.stateNumericHex(t,r+1)):(this.state=Ue.NumericDecimal,this.stateNumericDecimal(t,r))}addToNumericResult(t,r,n,a){if(r!==n){const i=n-r;this.result=this.result*Math.pow(a,i)+Number.parseInt(t.substr(r,i),a),this.consumed+=i}}stateNumericHex(t,r){const n=r;for(;r>14;for(;r>14,i!==0){if(u===qe.SEMI)return this.emitNamedEntityData(this.treeIndex,i,this.consumed+this.excess);this.decodeMode!==Ft.Strict&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}}return-1}emitNotTerminatedNamedEntity(){var t;const{result:r,decodeTree:n}=this,a=(n[r]&Kt.VALUE_LENGTH)>>14;return this.emitNamedEntityData(r,a,this.consumed),(t=this.errors)===null||t===void 0||t.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(t,r,n){const{decodeTree:a}=this;return this.emitCodePoint(r===1?a[t]&~Kt.VALUE_LENGTH:a[t+1],n),r===3&&this.emitCodePoint(a[t+2],n),n}end(){var t;switch(this.state){case Ue.NamedEntity:return this.result!==0&&(this.decodeMode!==Ft.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case Ue.NumericDecimal:return this.emitNumericEntity(0,2);case Ue.NumericHex:return this.emitNumericEntity(0,3);case Ue.NumericStart:return(t=this.errors)===null||t===void 0||t.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case Ue.EntityStart:return 0}}}function vp(e,t,r,n){const a=(t&Kt.BRANCH_LENGTH)>>7,i=t&Kt.JUMP_TABLE;if(a===0)return i!==0&&n===i?r:-1;if(i){const l=n-i;return l<0||l>=a?-1:e[r+l]-1}let u=r,s=u+a-1;for(;u<=s;){const l=u+s>>>1,c=e[l];if(cn)s=l-1;else return e[l+a]}return-1}var H;(function(e){e.HTML="http://www.w3.org/1999/xhtml",e.MATHML="http://www.w3.org/1998/Math/MathML",e.SVG="http://www.w3.org/2000/svg",e.XLINK="http://www.w3.org/1999/xlink",e.XML="http://www.w3.org/XML/1998/namespace",e.XMLNS="http://www.w3.org/2000/xmlns/"})(H||(H={}));var mr;(function(e){e.TYPE="type",e.ACTION="action",e.ENCODING="encoding",e.PROMPT="prompt",e.NAME="name",e.COLOR="color",e.FACE="face",e.SIZE="size"})(mr||(mr={}));var pt;(function(e){e.NO_QUIRKS="no-quirks",e.QUIRKS="quirks",e.LIMITED_QUIRKS="limited-quirks"})(pt||(pt={}));var O;(function(e){e.A="a",e.ADDRESS="address",e.ANNOTATION_XML="annotation-xml",e.APPLET="applet",e.AREA="area",e.ARTICLE="article",e.ASIDE="aside",e.B="b",e.BASE="base",e.BASEFONT="basefont",e.BGSOUND="bgsound",e.BIG="big",e.BLOCKQUOTE="blockquote",e.BODY="body",e.BR="br",e.BUTTON="button",e.CAPTION="caption",e.CENTER="center",e.CODE="code",e.COL="col",e.COLGROUP="colgroup",e.DD="dd",e.DESC="desc",e.DETAILS="details",e.DIALOG="dialog",e.DIR="dir",e.DIV="div",e.DL="dl",e.DT="dt",e.EM="em",e.EMBED="embed",e.FIELDSET="fieldset",e.FIGCAPTION="figcaption",e.FIGURE="figure",e.FONT="font",e.FOOTER="footer",e.FOREIGN_OBJECT="foreignObject",e.FORM="form",e.FRAME="frame",e.FRAMESET="frameset",e.H1="h1",e.H2="h2",e.H3="h3",e.H4="h4",e.H5="h5",e.H6="h6",e.HEAD="head",e.HEADER="header",e.HGROUP="hgroup",e.HR="hr",e.HTML="html",e.I="i",e.IMG="img",e.IMAGE="image",e.INPUT="input",e.IFRAME="iframe",e.KEYGEN="keygen",e.LABEL="label",e.LI="li",e.LINK="link",e.LISTING="listing",e.MAIN="main",e.MALIGNMARK="malignmark",e.MARQUEE="marquee",e.MATH="math",e.MENU="menu",e.META="meta",e.MGLYPH="mglyph",e.MI="mi",e.MO="mo",e.MN="mn",e.MS="ms",e.MTEXT="mtext",e.NAV="nav",e.NOBR="nobr",e.NOFRAMES="noframes",e.NOEMBED="noembed",e.NOSCRIPT="noscript",e.OBJECT="object",e.OL="ol",e.OPTGROUP="optgroup",e.OPTION="option",e.P="p",e.PARAM="param",e.PLAINTEXT="plaintext",e.PRE="pre",e.RB="rb",e.RP="rp",e.RT="rt",e.RTC="rtc",e.RUBY="ruby",e.S="s",e.SCRIPT="script",e.SEARCH="search",e.SECTION="section",e.SELECT="select",e.SOURCE="source",e.SMALL="small",e.SPAN="span",e.STRIKE="strike",e.STRONG="strong",e.STYLE="style",e.SUB="sub",e.SUMMARY="summary",e.SUP="sup",e.TABLE="table",e.TBODY="tbody",e.TEMPLATE="template",e.TEXTAREA="textarea",e.TFOOT="tfoot",e.TD="td",e.TH="th",e.THEAD="thead",e.TITLE="title",e.TR="tr",e.TRACK="track",e.TT="tt",e.U="u",e.UL="ul",e.SVG="svg",e.VAR="var",e.WBR="wbr",e.XMP="xmp"})(O||(O={}));var o;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.A=1]="A",e[e.ADDRESS=2]="ADDRESS",e[e.ANNOTATION_XML=3]="ANNOTATION_XML",e[e.APPLET=4]="APPLET",e[e.AREA=5]="AREA",e[e.ARTICLE=6]="ARTICLE",e[e.ASIDE=7]="ASIDE",e[e.B=8]="B",e[e.BASE=9]="BASE",e[e.BASEFONT=10]="BASEFONT",e[e.BGSOUND=11]="BGSOUND",e[e.BIG=12]="BIG",e[e.BLOCKQUOTE=13]="BLOCKQUOTE",e[e.BODY=14]="BODY",e[e.BR=15]="BR",e[e.BUTTON=16]="BUTTON",e[e.CAPTION=17]="CAPTION",e[e.CENTER=18]="CENTER",e[e.CODE=19]="CODE",e[e.COL=20]="COL",e[e.COLGROUP=21]="COLGROUP",e[e.DD=22]="DD",e[e.DESC=23]="DESC",e[e.DETAILS=24]="DETAILS",e[e.DIALOG=25]="DIALOG",e[e.DIR=26]="DIR",e[e.DIV=27]="DIV",e[e.DL=28]="DL",e[e.DT=29]="DT",e[e.EM=30]="EM",e[e.EMBED=31]="EMBED",e[e.FIELDSET=32]="FIELDSET",e[e.FIGCAPTION=33]="FIGCAPTION",e[e.FIGURE=34]="FIGURE",e[e.FONT=35]="FONT",e[e.FOOTER=36]="FOOTER",e[e.FOREIGN_OBJECT=37]="FOREIGN_OBJECT",e[e.FORM=38]="FORM",e[e.FRAME=39]="FRAME",e[e.FRAMESET=40]="FRAMESET",e[e.H1=41]="H1",e[e.H2=42]="H2",e[e.H3=43]="H3",e[e.H4=44]="H4",e[e.H5=45]="H5",e[e.H6=46]="H6",e[e.HEAD=47]="HEAD",e[e.HEADER=48]="HEADER",e[e.HGROUP=49]="HGROUP",e[e.HR=50]="HR",e[e.HTML=51]="HTML",e[e.I=52]="I",e[e.IMG=53]="IMG",e[e.IMAGE=54]="IMAGE",e[e.INPUT=55]="INPUT",e[e.IFRAME=56]="IFRAME",e[e.KEYGEN=57]="KEYGEN",e[e.LABEL=58]="LABEL",e[e.LI=59]="LI",e[e.LINK=60]="LINK",e[e.LISTING=61]="LISTING",e[e.MAIN=62]="MAIN",e[e.MALIGNMARK=63]="MALIGNMARK",e[e.MARQUEE=64]="MARQUEE",e[e.MATH=65]="MATH",e[e.MENU=66]="MENU",e[e.META=67]="META",e[e.MGLYPH=68]="MGLYPH",e[e.MI=69]="MI",e[e.MO=70]="MO",e[e.MN=71]="MN",e[e.MS=72]="MS",e[e.MTEXT=73]="MTEXT",e[e.NAV=74]="NAV",e[e.NOBR=75]="NOBR",e[e.NOFRAMES=76]="NOFRAMES",e[e.NOEMBED=77]="NOEMBED",e[e.NOSCRIPT=78]="NOSCRIPT",e[e.OBJECT=79]="OBJECT",e[e.OL=80]="OL",e[e.OPTGROUP=81]="OPTGROUP",e[e.OPTION=82]="OPTION",e[e.P=83]="P",e[e.PARAM=84]="PARAM",e[e.PLAINTEXT=85]="PLAINTEXT",e[e.PRE=86]="PRE",e[e.RB=87]="RB",e[e.RP=88]="RP",e[e.RT=89]="RT",e[e.RTC=90]="RTC",e[e.RUBY=91]="RUBY",e[e.S=92]="S",e[e.SCRIPT=93]="SCRIPT",e[e.SEARCH=94]="SEARCH",e[e.SECTION=95]="SECTION",e[e.SELECT=96]="SELECT",e[e.SOURCE=97]="SOURCE",e[e.SMALL=98]="SMALL",e[e.SPAN=99]="SPAN",e[e.STRIKE=100]="STRIKE",e[e.STRONG=101]="STRONG",e[e.STYLE=102]="STYLE",e[e.SUB=103]="SUB",e[e.SUMMARY=104]="SUMMARY",e[e.SUP=105]="SUP",e[e.TABLE=106]="TABLE",e[e.TBODY=107]="TBODY",e[e.TEMPLATE=108]="TEMPLATE",e[e.TEXTAREA=109]="TEXTAREA",e[e.TFOOT=110]="TFOOT",e[e.TD=111]="TD",e[e.TH=112]="TH",e[e.THEAD=113]="THEAD",e[e.TITLE=114]="TITLE",e[e.TR=115]="TR",e[e.TRACK=116]="TRACK",e[e.TT=117]="TT",e[e.U=118]="U",e[e.UL=119]="UL",e[e.SVG=120]="SVG",e[e.VAR=121]="VAR",e[e.WBR=122]="WBR",e[e.XMP=123]="XMP"})(o||(o={}));const Ap=new Map([[O.A,o.A],[O.ADDRESS,o.ADDRESS],[O.ANNOTATION_XML,o.ANNOTATION_XML],[O.APPLET,o.APPLET],[O.AREA,o.AREA],[O.ARTICLE,o.ARTICLE],[O.ASIDE,o.ASIDE],[O.B,o.B],[O.BASE,o.BASE],[O.BASEFONT,o.BASEFONT],[O.BGSOUND,o.BGSOUND],[O.BIG,o.BIG],[O.BLOCKQUOTE,o.BLOCKQUOTE],[O.BODY,o.BODY],[O.BR,o.BR],[O.BUTTON,o.BUTTON],[O.CAPTION,o.CAPTION],[O.CENTER,o.CENTER],[O.CODE,o.CODE],[O.COL,o.COL],[O.COLGROUP,o.COLGROUP],[O.DD,o.DD],[O.DESC,o.DESC],[O.DETAILS,o.DETAILS],[O.DIALOG,o.DIALOG],[O.DIR,o.DIR],[O.DIV,o.DIV],[O.DL,o.DL],[O.DT,o.DT],[O.EM,o.EM],[O.EMBED,o.EMBED],[O.FIELDSET,o.FIELDSET],[O.FIGCAPTION,o.FIGCAPTION],[O.FIGURE,o.FIGURE],[O.FONT,o.FONT],[O.FOOTER,o.FOOTER],[O.FOREIGN_OBJECT,o.FOREIGN_OBJECT],[O.FORM,o.FORM],[O.FRAME,o.FRAME],[O.FRAMESET,o.FRAMESET],[O.H1,o.H1],[O.H2,o.H2],[O.H3,o.H3],[O.H4,o.H4],[O.H5,o.H5],[O.H6,o.H6],[O.HEAD,o.HEAD],[O.HEADER,o.HEADER],[O.HGROUP,o.HGROUP],[O.HR,o.HR],[O.HTML,o.HTML],[O.I,o.I],[O.IMG,o.IMG],[O.IMAGE,o.IMAGE],[O.INPUT,o.INPUT],[O.IFRAME,o.IFRAME],[O.KEYGEN,o.KEYGEN],[O.LABEL,o.LABEL],[O.LI,o.LI],[O.LINK,o.LINK],[O.LISTING,o.LISTING],[O.MAIN,o.MAIN],[O.MALIGNMARK,o.MALIGNMARK],[O.MARQUEE,o.MARQUEE],[O.MATH,o.MATH],[O.MENU,o.MENU],[O.META,o.META],[O.MGLYPH,o.MGLYPH],[O.MI,o.MI],[O.MO,o.MO],[O.MN,o.MN],[O.MS,o.MS],[O.MTEXT,o.MTEXT],[O.NAV,o.NAV],[O.NOBR,o.NOBR],[O.NOFRAMES,o.NOFRAMES],[O.NOEMBED,o.NOEMBED],[O.NOSCRIPT,o.NOSCRIPT],[O.OBJECT,o.OBJECT],[O.OL,o.OL],[O.OPTGROUP,o.OPTGROUP],[O.OPTION,o.OPTION],[O.P,o.P],[O.PARAM,o.PARAM],[O.PLAINTEXT,o.PLAINTEXT],[O.PRE,o.PRE],[O.RB,o.RB],[O.RP,o.RP],[O.RT,o.RT],[O.RTC,o.RTC],[O.RUBY,o.RUBY],[O.S,o.S],[O.SCRIPT,o.SCRIPT],[O.SEARCH,o.SEARCH],[O.SECTION,o.SECTION],[O.SELECT,o.SELECT],[O.SOURCE,o.SOURCE],[O.SMALL,o.SMALL],[O.SPAN,o.SPAN],[O.STRIKE,o.STRIKE],[O.STRONG,o.STRONG],[O.STYLE,o.STYLE],[O.SUB,o.SUB],[O.SUMMARY,o.SUMMARY],[O.SUP,o.SUP],[O.TABLE,o.TABLE],[O.TBODY,o.TBODY],[O.TEMPLATE,o.TEMPLATE],[O.TEXTAREA,o.TEXTAREA],[O.TFOOT,o.TFOOT],[O.TD,o.TD],[O.TH,o.TH],[O.THEAD,o.THEAD],[O.TITLE,o.TITLE],[O.TR,o.TR],[O.TRACK,o.TRACK],[O.TT,o.TT],[O.U,o.U],[O.UL,o.UL],[O.SVG,o.SVG],[O.VAR,o.VAR],[O.WBR,o.WBR],[O.XMP,o.XMP]]);function qr(e){var t;return(t=Ap.get(e))!==null&&t!==void 0?t:o.UNKNOWN}const U=o,kp={[H.HTML]:new Set([U.ADDRESS,U.APPLET,U.AREA,U.ARTICLE,U.ASIDE,U.BASE,U.BASEFONT,U.BGSOUND,U.BLOCKQUOTE,U.BODY,U.BR,U.BUTTON,U.CAPTION,U.CENTER,U.COL,U.COLGROUP,U.DD,U.DETAILS,U.DIR,U.DIV,U.DL,U.DT,U.EMBED,U.FIELDSET,U.FIGCAPTION,U.FIGURE,U.FOOTER,U.FORM,U.FRAME,U.FRAMESET,U.H1,U.H2,U.H3,U.H4,U.H5,U.H6,U.HEAD,U.HEADER,U.HGROUP,U.HR,U.HTML,U.IFRAME,U.IMG,U.INPUT,U.LI,U.LINK,U.LISTING,U.MAIN,U.MARQUEE,U.MENU,U.META,U.NAV,U.NOEMBED,U.NOFRAMES,U.NOSCRIPT,U.OBJECT,U.OL,U.P,U.PARAM,U.PLAINTEXT,U.PRE,U.SCRIPT,U.SECTION,U.SELECT,U.SOURCE,U.STYLE,U.SUMMARY,U.TABLE,U.TBODY,U.TD,U.TEMPLATE,U.TEXTAREA,U.TFOOT,U.TH,U.THEAD,U.TITLE,U.TR,U.TRACK,U.UL,U.WBR,U.XMP]),[H.MATHML]:new Set([U.MI,U.MO,U.MN,U.MS,U.MTEXT,U.ANNOTATION_XML]),[H.SVG]:new Set([U.TITLE,U.FOREIGN_OBJECT,U.DESC]),[H.XLINK]:new Set,[H.XML]:new Set,[H.XMLNS]:new Set},Qa=new Set([U.H1,U.H2,U.H3,U.H4,U.H5,U.H6]);O.STYLE,O.SCRIPT,O.XMP,O.IFRAME,O.NOEMBED,O.NOFRAMES,O.PLAINTEXT;var y;(function(e){e[e.DATA=0]="DATA",e[e.RCDATA=1]="RCDATA",e[e.RAWTEXT=2]="RAWTEXT",e[e.SCRIPT_DATA=3]="SCRIPT_DATA",e[e.PLAINTEXT=4]="PLAINTEXT",e[e.TAG_OPEN=5]="TAG_OPEN",e[e.END_TAG_OPEN=6]="END_TAG_OPEN",e[e.TAG_NAME=7]="TAG_NAME",e[e.RCDATA_LESS_THAN_SIGN=8]="RCDATA_LESS_THAN_SIGN",e[e.RCDATA_END_TAG_OPEN=9]="RCDATA_END_TAG_OPEN",e[e.RCDATA_END_TAG_NAME=10]="RCDATA_END_TAG_NAME",e[e.RAWTEXT_LESS_THAN_SIGN=11]="RAWTEXT_LESS_THAN_SIGN",e[e.RAWTEXT_END_TAG_OPEN=12]="RAWTEXT_END_TAG_OPEN",e[e.RAWTEXT_END_TAG_NAME=13]="RAWTEXT_END_TAG_NAME",e[e.SCRIPT_DATA_LESS_THAN_SIGN=14]="SCRIPT_DATA_LESS_THAN_SIGN",e[e.SCRIPT_DATA_END_TAG_OPEN=15]="SCRIPT_DATA_END_TAG_OPEN",e[e.SCRIPT_DATA_END_TAG_NAME=16]="SCRIPT_DATA_END_TAG_NAME",e[e.SCRIPT_DATA_ESCAPE_START=17]="SCRIPT_DATA_ESCAPE_START",e[e.SCRIPT_DATA_ESCAPE_START_DASH=18]="SCRIPT_DATA_ESCAPE_START_DASH",e[e.SCRIPT_DATA_ESCAPED=19]="SCRIPT_DATA_ESCAPED",e[e.SCRIPT_DATA_ESCAPED_DASH=20]="SCRIPT_DATA_ESCAPED_DASH",e[e.SCRIPT_DATA_ESCAPED_DASH_DASH=21]="SCRIPT_DATA_ESCAPED_DASH_DASH",e[e.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN=22]="SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN",e[e.SCRIPT_DATA_ESCAPED_END_TAG_OPEN=23]="SCRIPT_DATA_ESCAPED_END_TAG_OPEN",e[e.SCRIPT_DATA_ESCAPED_END_TAG_NAME=24]="SCRIPT_DATA_ESCAPED_END_TAG_NAME",e[e.SCRIPT_DATA_DOUBLE_ESCAPE_START=25]="SCRIPT_DATA_DOUBLE_ESCAPE_START",e[e.SCRIPT_DATA_DOUBLE_ESCAPED=26]="SCRIPT_DATA_DOUBLE_ESCAPED",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH=27]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH=28]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN=29]="SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN",e[e.SCRIPT_DATA_DOUBLE_ESCAPE_END=30]="SCRIPT_DATA_DOUBLE_ESCAPE_END",e[e.BEFORE_ATTRIBUTE_NAME=31]="BEFORE_ATTRIBUTE_NAME",e[e.ATTRIBUTE_NAME=32]="ATTRIBUTE_NAME",e[e.AFTER_ATTRIBUTE_NAME=33]="AFTER_ATTRIBUTE_NAME",e[e.BEFORE_ATTRIBUTE_VALUE=34]="BEFORE_ATTRIBUTE_VALUE",e[e.ATTRIBUTE_VALUE_DOUBLE_QUOTED=35]="ATTRIBUTE_VALUE_DOUBLE_QUOTED",e[e.ATTRIBUTE_VALUE_SINGLE_QUOTED=36]="ATTRIBUTE_VALUE_SINGLE_QUOTED",e[e.ATTRIBUTE_VALUE_UNQUOTED=37]="ATTRIBUTE_VALUE_UNQUOTED",e[e.AFTER_ATTRIBUTE_VALUE_QUOTED=38]="AFTER_ATTRIBUTE_VALUE_QUOTED",e[e.SELF_CLOSING_START_TAG=39]="SELF_CLOSING_START_TAG",e[e.BOGUS_COMMENT=40]="BOGUS_COMMENT",e[e.MARKUP_DECLARATION_OPEN=41]="MARKUP_DECLARATION_OPEN",e[e.COMMENT_START=42]="COMMENT_START",e[e.COMMENT_START_DASH=43]="COMMENT_START_DASH",e[e.COMMENT=44]="COMMENT",e[e.COMMENT_LESS_THAN_SIGN=45]="COMMENT_LESS_THAN_SIGN",e[e.COMMENT_LESS_THAN_SIGN_BANG=46]="COMMENT_LESS_THAN_SIGN_BANG",e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH=47]="COMMENT_LESS_THAN_SIGN_BANG_DASH",e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH=48]="COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH",e[e.COMMENT_END_DASH=49]="COMMENT_END_DASH",e[e.COMMENT_END=50]="COMMENT_END",e[e.COMMENT_END_BANG=51]="COMMENT_END_BANG",e[e.DOCTYPE=52]="DOCTYPE",e[e.BEFORE_DOCTYPE_NAME=53]="BEFORE_DOCTYPE_NAME",e[e.DOCTYPE_NAME=54]="DOCTYPE_NAME",e[e.AFTER_DOCTYPE_NAME=55]="AFTER_DOCTYPE_NAME",e[e.AFTER_DOCTYPE_PUBLIC_KEYWORD=56]="AFTER_DOCTYPE_PUBLIC_KEYWORD",e[e.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER=57]="BEFORE_DOCTYPE_PUBLIC_IDENTIFIER",e[e.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED=58]="DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED",e[e.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED=59]="DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED",e[e.AFTER_DOCTYPE_PUBLIC_IDENTIFIER=60]="AFTER_DOCTYPE_PUBLIC_IDENTIFIER",e[e.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS=61]="BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS",e[e.AFTER_DOCTYPE_SYSTEM_KEYWORD=62]="AFTER_DOCTYPE_SYSTEM_KEYWORD",e[e.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER=63]="BEFORE_DOCTYPE_SYSTEM_IDENTIFIER",e[e.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED=64]="DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED",e[e.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED=65]="DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED",e[e.AFTER_DOCTYPE_SYSTEM_IDENTIFIER=66]="AFTER_DOCTYPE_SYSTEM_IDENTIFIER",e[e.BOGUS_DOCTYPE=67]="BOGUS_DOCTYPE",e[e.CDATA_SECTION=68]="CDATA_SECTION",e[e.CDATA_SECTION_BRACKET=69]="CDATA_SECTION_BRACKET",e[e.CDATA_SECTION_END=70]="CDATA_SECTION_END",e[e.CHARACTER_REFERENCE=71]="CHARACTER_REFERENCE",e[e.AMBIGUOUS_AMPERSAND=72]="AMBIGUOUS_AMPERSAND"})(y||(y={}));const De={DATA:y.DATA,RCDATA:y.RCDATA,RAWTEXT:y.RAWTEXT,SCRIPT_DATA:y.SCRIPT_DATA,PLAINTEXT:y.PLAINTEXT,CDATA_SECTION:y.CDATA_SECTION};function Sp(e){return e>=T.DIGIT_0&&e<=T.DIGIT_9}function rn(e){return e>=T.LATIN_CAPITAL_A&&e<=T.LATIN_CAPITAL_Z}function wp(e){return e>=T.LATIN_SMALL_A&&e<=T.LATIN_SMALL_Z}function Xt(e){return wp(e)||rn(e)}function Cs(e){return Xt(e)||Sp(e)}function Wn(e){return e+32}function cc(e){return e===T.SPACE||e===T.LINE_FEED||e===T.TABULATION||e===T.FORM_FEED}function _s(e){return cc(e)||e===T.SOLIDUS||e===T.GREATER_THAN_SIGN}function Cp(e){return e===T.NULL?P.nullCharacterReference:e>1114111?P.characterReferenceOutsideUnicodeRange:uc(e)?P.surrogateCharacterReference:lc(e)?P.noncharacterCharacterReference:sc(e)||e===T.CARRIAGE_RETURN?P.controlCharacterReference:null}class _p{constructor(t,r){this.options=t,this.handler=r,this.paused=!1,this.inLoop=!1,this.inForeignNode=!1,this.lastStartTagName="",this.active=!1,this.state=y.DATA,this.returnState=y.DATA,this.entityStartPos=0,this.consumedAfterSnapshot=-1,this.currentCharacterToken=null,this.currentToken=null,this.currentAttr={name:"",value:""},this.preprocessor=new fp(r),this.currentLocation=this.getCurrentLocation(-1),this.entityDecoder=new yp(mp,(n,a)=>{this.preprocessor.pos=this.entityStartPos+a-1,this._flushCodePointConsumedAsCharacterReference(n)},r.onParseError?{missingSemicolonAfterCharacterReference:()=>{this._err(P.missingSemicolonAfterCharacterReference,1)},absenceOfDigitsInNumericCharacterReference:n=>{this._err(P.absenceOfDigitsInNumericCharacterReference,this.entityStartPos-this.preprocessor.pos+n)},validateNumericCharacterReference:n=>{const a=Cp(n);a&&this._err(a,1)}}:void 0)}_err(t,r=0){var n,a;(a=(n=this.handler).onParseError)===null||a===void 0||a.call(n,this.preprocessor.getError(t,r))}getCurrentLocation(t){return this.options.sourceCodeLocationInfo?{startLine:this.preprocessor.line,startCol:this.preprocessor.col-t,startOffset:this.preprocessor.offset-t,endLine:-1,endCol:-1,endOffset:-1}:null}_runParsingLoop(){if(!this.inLoop){for(this.inLoop=!0;this.active&&!this.paused;){this.consumedAfterSnapshot=0;const t=this._consume();this._ensureHibernation()||this._callState(t)}this.inLoop=!1}}pause(){this.paused=!0}resume(t){if(!this.paused)throw new Error("Parser was already resumed");this.paused=!1,!this.inLoop&&(this._runParsingLoop(),this.paused||t?.())}write(t,r,n){this.active=!0,this.preprocessor.write(t,r),this._runParsingLoop(),this.paused||n?.()}insertHtmlAtCurrentPos(t){this.active=!0,this.preprocessor.insertHtmlAtCurrentPos(t),this._runParsingLoop()}_ensureHibernation(){return this.preprocessor.endOfChunkHit?(this.preprocessor.retreat(this.consumedAfterSnapshot),this.consumedAfterSnapshot=0,this.active=!1,!0):!1}_consume(){return this.consumedAfterSnapshot++,this.preprocessor.advance()}_advanceBy(t){this.consumedAfterSnapshot+=t;for(let r=0;r0&&this._err(P.endTagWithAttributes),t.selfClosing&&this._err(P.endTagWithTrailingSolidus),this.handler.onEndTag(t)),this.preprocessor.dropParsedChunk()}emitCurrentComment(t){this.prepareToken(t),this.handler.onComment(t),this.preprocessor.dropParsedChunk()}emitCurrentDoctype(t){this.prepareToken(t),this.handler.onDoctype(t),this.preprocessor.dropParsedChunk()}_emitCurrentCharacterToken(t){if(this.currentCharacterToken){switch(t&&this.currentCharacterToken.location&&(this.currentCharacterToken.location.endLine=t.startLine,this.currentCharacterToken.location.endCol=t.startCol,this.currentCharacterToken.location.endOffset=t.startOffset),this.currentCharacterToken.type){case de.CHARACTER:{this.handler.onCharacter(this.currentCharacterToken);break}case de.NULL_CHARACTER:{this.handler.onNullCharacter(this.currentCharacterToken);break}case de.WHITESPACE_CHARACTER:{this.handler.onWhitespaceCharacter(this.currentCharacterToken);break}}this.currentCharacterToken=null}}_emitEOFToken(){const t=this.getCurrentLocation(0);t&&(t.endLine=t.startLine,t.endCol=t.startCol,t.endOffset=t.startOffset),this._emitCurrentCharacterToken(t),this.handler.onEof({type:de.EOF,location:t}),this.active=!1}_appendCharToCurrentCharacterToken(t,r){if(this.currentCharacterToken)if(this.currentCharacterToken.type===t){this.currentCharacterToken.chars+=r;return}else this.currentLocation=this.getCurrentLocation(0),this._emitCurrentCharacterToken(this.currentLocation),this.preprocessor.dropParsedChunk();this._createCharacterToken(t,r)}_emitCodePoint(t){const r=cc(t)?de.WHITESPACE_CHARACTER:t===T.NULL?de.NULL_CHARACTER:de.CHARACTER;this._appendCharToCurrentCharacterToken(r,String.fromCodePoint(t))}_emitChars(t){this._appendCharToCurrentCharacterToken(de.CHARACTER,t)}_startCharacterReference(){this.returnState=this.state,this.state=y.CHARACTER_REFERENCE,this.entityStartPos=this.preprocessor.pos,this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute()?Ft.Attribute:Ft.Legacy)}_isCharacterReferenceInAttribute(){return this.returnState===y.ATTRIBUTE_VALUE_DOUBLE_QUOTED||this.returnState===y.ATTRIBUTE_VALUE_SINGLE_QUOTED||this.returnState===y.ATTRIBUTE_VALUE_UNQUOTED}_flushCodePointConsumedAsCharacterReference(t){this._isCharacterReferenceInAttribute()?this.currentAttr.value+=String.fromCodePoint(t):this._emitCodePoint(t)}_callState(t){switch(this.state){case y.DATA:{this._stateData(t);break}case y.RCDATA:{this._stateRcdata(t);break}case y.RAWTEXT:{this._stateRawtext(t);break}case y.SCRIPT_DATA:{this._stateScriptData(t);break}case y.PLAINTEXT:{this._statePlaintext(t);break}case y.TAG_OPEN:{this._stateTagOpen(t);break}case y.END_TAG_OPEN:{this._stateEndTagOpen(t);break}case y.TAG_NAME:{this._stateTagName(t);break}case y.RCDATA_LESS_THAN_SIGN:{this._stateRcdataLessThanSign(t);break}case y.RCDATA_END_TAG_OPEN:{this._stateRcdataEndTagOpen(t);break}case y.RCDATA_END_TAG_NAME:{this._stateRcdataEndTagName(t);break}case y.RAWTEXT_LESS_THAN_SIGN:{this._stateRawtextLessThanSign(t);break}case y.RAWTEXT_END_TAG_OPEN:{this._stateRawtextEndTagOpen(t);break}case y.RAWTEXT_END_TAG_NAME:{this._stateRawtextEndTagName(t);break}case y.SCRIPT_DATA_LESS_THAN_SIGN:{this._stateScriptDataLessThanSign(t);break}case y.SCRIPT_DATA_END_TAG_OPEN:{this._stateScriptDataEndTagOpen(t);break}case y.SCRIPT_DATA_END_TAG_NAME:{this._stateScriptDataEndTagName(t);break}case y.SCRIPT_DATA_ESCAPE_START:{this._stateScriptDataEscapeStart(t);break}case y.SCRIPT_DATA_ESCAPE_START_DASH:{this._stateScriptDataEscapeStartDash(t);break}case y.SCRIPT_DATA_ESCAPED:{this._stateScriptDataEscaped(t);break}case y.SCRIPT_DATA_ESCAPED_DASH:{this._stateScriptDataEscapedDash(t);break}case y.SCRIPT_DATA_ESCAPED_DASH_DASH:{this._stateScriptDataEscapedDashDash(t);break}case y.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataEscapedLessThanSign(t);break}case y.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:{this._stateScriptDataEscapedEndTagOpen(t);break}case y.SCRIPT_DATA_ESCAPED_END_TAG_NAME:{this._stateScriptDataEscapedEndTagName(t);break}case y.SCRIPT_DATA_DOUBLE_ESCAPE_START:{this._stateScriptDataDoubleEscapeStart(t);break}case y.SCRIPT_DATA_DOUBLE_ESCAPED:{this._stateScriptDataDoubleEscaped(t);break}case y.SCRIPT_DATA_DOUBLE_ESCAPED_DASH:{this._stateScriptDataDoubleEscapedDash(t);break}case y.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH:{this._stateScriptDataDoubleEscapedDashDash(t);break}case y.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataDoubleEscapedLessThanSign(t);break}case y.SCRIPT_DATA_DOUBLE_ESCAPE_END:{this._stateScriptDataDoubleEscapeEnd(t);break}case y.BEFORE_ATTRIBUTE_NAME:{this._stateBeforeAttributeName(t);break}case y.ATTRIBUTE_NAME:{this._stateAttributeName(t);break}case y.AFTER_ATTRIBUTE_NAME:{this._stateAfterAttributeName(t);break}case y.BEFORE_ATTRIBUTE_VALUE:{this._stateBeforeAttributeValue(t);break}case y.ATTRIBUTE_VALUE_DOUBLE_QUOTED:{this._stateAttributeValueDoubleQuoted(t);break}case y.ATTRIBUTE_VALUE_SINGLE_QUOTED:{this._stateAttributeValueSingleQuoted(t);break}case y.ATTRIBUTE_VALUE_UNQUOTED:{this._stateAttributeValueUnquoted(t);break}case y.AFTER_ATTRIBUTE_VALUE_QUOTED:{this._stateAfterAttributeValueQuoted(t);break}case y.SELF_CLOSING_START_TAG:{this._stateSelfClosingStartTag(t);break}case y.BOGUS_COMMENT:{this._stateBogusComment(t);break}case y.MARKUP_DECLARATION_OPEN:{this._stateMarkupDeclarationOpen(t);break}case y.COMMENT_START:{this._stateCommentStart(t);break}case y.COMMENT_START_DASH:{this._stateCommentStartDash(t);break}case y.COMMENT:{this._stateComment(t);break}case y.COMMENT_LESS_THAN_SIGN:{this._stateCommentLessThanSign(t);break}case y.COMMENT_LESS_THAN_SIGN_BANG:{this._stateCommentLessThanSignBang(t);break}case y.COMMENT_LESS_THAN_SIGN_BANG_DASH:{this._stateCommentLessThanSignBangDash(t);break}case y.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH:{this._stateCommentLessThanSignBangDashDash(t);break}case y.COMMENT_END_DASH:{this._stateCommentEndDash(t);break}case y.COMMENT_END:{this._stateCommentEnd(t);break}case y.COMMENT_END_BANG:{this._stateCommentEndBang(t);break}case y.DOCTYPE:{this._stateDoctype(t);break}case y.BEFORE_DOCTYPE_NAME:{this._stateBeforeDoctypeName(t);break}case y.DOCTYPE_NAME:{this._stateDoctypeName(t);break}case y.AFTER_DOCTYPE_NAME:{this._stateAfterDoctypeName(t);break}case y.AFTER_DOCTYPE_PUBLIC_KEYWORD:{this._stateAfterDoctypePublicKeyword(t);break}case y.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateBeforeDoctypePublicIdentifier(t);break}case y.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypePublicIdentifierDoubleQuoted(t);break}case y.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypePublicIdentifierSingleQuoted(t);break}case y.AFTER_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateAfterDoctypePublicIdentifier(t);break}case y.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS:{this._stateBetweenDoctypePublicAndSystemIdentifiers(t);break}case y.AFTER_DOCTYPE_SYSTEM_KEYWORD:{this._stateAfterDoctypeSystemKeyword(t);break}case y.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateBeforeDoctypeSystemIdentifier(t);break}case y.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypeSystemIdentifierDoubleQuoted(t);break}case y.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypeSystemIdentifierSingleQuoted(t);break}case y.AFTER_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateAfterDoctypeSystemIdentifier(t);break}case y.BOGUS_DOCTYPE:{this._stateBogusDoctype(t);break}case y.CDATA_SECTION:{this._stateCdataSection(t);break}case y.CDATA_SECTION_BRACKET:{this._stateCdataSectionBracket(t);break}case y.CDATA_SECTION_END:{this._stateCdataSectionEnd(t);break}case y.CHARACTER_REFERENCE:{this._stateCharacterReference();break}case y.AMBIGUOUS_AMPERSAND:{this._stateAmbiguousAmpersand(t);break}default:throw new Error("Unknown state")}}_stateData(t){switch(t){case T.LESS_THAN_SIGN:{this.state=y.TAG_OPEN;break}case T.AMPERSAND:{this._startCharacterReference();break}case T.NULL:{this._err(P.unexpectedNullCharacter),this._emitCodePoint(t);break}case T.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t)}}_stateRcdata(t){switch(t){case T.AMPERSAND:{this._startCharacterReference();break}case T.LESS_THAN_SIGN:{this.state=y.RCDATA_LESS_THAN_SIGN;break}case T.NULL:{this._err(P.unexpectedNullCharacter),this._emitChars(Se);break}case T.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t)}}_stateRawtext(t){switch(t){case T.LESS_THAN_SIGN:{this.state=y.RAWTEXT_LESS_THAN_SIGN;break}case T.NULL:{this._err(P.unexpectedNullCharacter),this._emitChars(Se);break}case T.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t)}}_stateScriptData(t){switch(t){case T.LESS_THAN_SIGN:{this.state=y.SCRIPT_DATA_LESS_THAN_SIGN;break}case T.NULL:{this._err(P.unexpectedNullCharacter),this._emitChars(Se);break}case T.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t)}}_statePlaintext(t){switch(t){case T.NULL:{this._err(P.unexpectedNullCharacter),this._emitChars(Se);break}case T.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t)}}_stateTagOpen(t){if(Xt(t))this._createStartTagToken(),this.state=y.TAG_NAME,this._stateTagName(t);else switch(t){case T.EXCLAMATION_MARK:{this.state=y.MARKUP_DECLARATION_OPEN;break}case T.SOLIDUS:{this.state=y.END_TAG_OPEN;break}case T.QUESTION_MARK:{this._err(P.unexpectedQuestionMarkInsteadOfTagName),this._createCommentToken(1),this.state=y.BOGUS_COMMENT,this._stateBogusComment(t);break}case T.EOF:{this._err(P.eofBeforeTagName),this._emitChars("<"),this._emitEOFToken();break}default:this._err(P.invalidFirstCharacterOfTagName),this._emitChars("<"),this.state=y.DATA,this._stateData(t)}}_stateEndTagOpen(t){if(Xt(t))this._createEndTagToken(),this.state=y.TAG_NAME,this._stateTagName(t);else switch(t){case T.GREATER_THAN_SIGN:{this._err(P.missingEndTagName),this.state=y.DATA;break}case T.EOF:{this._err(P.eofBeforeTagName),this._emitChars("");break}case T.NULL:{this._err(P.unexpectedNullCharacter),this.state=y.SCRIPT_DATA_ESCAPED,this._emitChars(Se);break}case T.EOF:{this._err(P.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=y.SCRIPT_DATA_ESCAPED,this._emitCodePoint(t)}}_stateScriptDataEscapedLessThanSign(t){t===T.SOLIDUS?this.state=y.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:Xt(t)?(this._emitChars("<"),this.state=y.SCRIPT_DATA_DOUBLE_ESCAPE_START,this._stateScriptDataDoubleEscapeStart(t)):(this._emitChars("<"),this.state=y.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(t))}_stateScriptDataEscapedEndTagOpen(t){Xt(t)?(this.state=y.SCRIPT_DATA_ESCAPED_END_TAG_NAME,this._stateScriptDataEscapedEndTagName(t)):(this._emitChars("");break}case T.NULL:{this._err(P.unexpectedNullCharacter),this.state=y.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars(Se);break}case T.EOF:{this._err(P.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=y.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(t)}}_stateScriptDataDoubleEscapedLessThanSign(t){t===T.SOLIDUS?(this.state=y.SCRIPT_DATA_DOUBLE_ESCAPE_END,this._emitChars("/")):(this.state=y.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(t))}_stateScriptDataDoubleEscapeEnd(t){if(this.preprocessor.startsWith(et.SCRIPT,!1)&&_s(this.preprocessor.peek(et.SCRIPT.length))){this._emitCodePoint(t);for(let r=0;r0&&this._isInTemplate()&&this.tmplCount--,this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(t,!0)}replace(t,r){const n=this._indexOf(t);this.items[n]=r,n===this.stackTop&&(this.current=r)}insertAfter(t,r,n){const a=this._indexOf(t)+1;this.items.splice(a,0,r),this.tagIDs.splice(a,0,n),this.stackTop++,a===this.stackTop&&this._updateCurrentElement(),this.current&&this.currentTagId!==void 0&&this.handler.onItemPush(this.current,this.currentTagId,a===this.stackTop)}popUntilTagNamePopped(t){let r=this.stackTop+1;do r=this.tagIDs.lastIndexOf(t,r-1);while(r>0&&this.treeAdapter.getNamespaceURI(this.items[r])!==H.HTML);this.shortenToLength(Math.max(r,0))}shortenToLength(t){for(;this.stackTop>=t;){const r=this.current;this.tmplCount>0&&this._isInTemplate()&&(this.tmplCount-=1),this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(r,this.stackTop=0;n--)if(t.has(this.tagIDs[n])&&this.treeAdapter.getNamespaceURI(this.items[n])===r)return n;return-1}clearBackTo(t,r){const n=this._indexOfTagNames(t,r);this.shortenToLength(n+1)}clearBackToTableContext(){this.clearBackTo(Lp,H.HTML)}clearBackToTableBodyContext(){this.clearBackTo(Op,H.HTML)}clearBackToTableRowContext(){this.clearBackTo(Dp,H.HTML)}remove(t){const r=this._indexOf(t);r>=0&&(r===this.stackTop?this.pop():(this.items.splice(r,1),this.tagIDs.splice(r,1),this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(t,!1)))}tryPeekProperlyNestedBodyElement(){return this.stackTop>=1&&this.tagIDs[1]===o.BODY?this.items[1]:null}contains(t){return this._indexOf(t)>-1}getCommonAncestor(t){const r=this._indexOf(t)-1;return r>=0?this.items[r]:null}isRootHtmlElementCurrent(){return this.stackTop===0&&this.tagIDs[0]===o.HTML}hasInDynamicScope(t,r){for(let n=this.stackTop;n>=0;n--){const a=this.tagIDs[n];switch(this.treeAdapter.getNamespaceURI(this.items[n])){case H.HTML:{if(a===t)return!0;if(r.has(a))return!1;break}case H.SVG:{if(Ds.has(a))return!1;break}case H.MATHML:{if(Ns.has(a))return!1;break}}}return!0}hasInScope(t){return this.hasInDynamicScope(t,s0)}hasInListItemScope(t){return this.hasInDynamicScope(t,Ip)}hasInButtonScope(t){return this.hasInDynamicScope(t,Np)}hasNumberedHeaderInScope(){for(let t=this.stackTop;t>=0;t--){const r=this.tagIDs[t];switch(this.treeAdapter.getNamespaceURI(this.items[t])){case H.HTML:{if(Qa.has(r))return!0;if(s0.has(r))return!1;break}case H.SVG:{if(Ds.has(r))return!1;break}case H.MATHML:{if(Ns.has(r))return!1;break}}}return!0}hasInTableScope(t){for(let r=this.stackTop;r>=0;r--)if(this.treeAdapter.getNamespaceURI(this.items[r])===H.HTML)switch(this.tagIDs[r]){case t:return!0;case o.TABLE:case o.HTML:return!1}return!0}hasTableBodyContextInTableScope(){for(let t=this.stackTop;t>=0;t--)if(this.treeAdapter.getNamespaceURI(this.items[t])===H.HTML)switch(this.tagIDs[t]){case o.TBODY:case o.THEAD:case o.TFOOT:return!0;case o.TABLE:case o.HTML:return!1}return!0}hasInSelectScope(t){for(let r=this.stackTop;r>=0;r--)if(this.treeAdapter.getNamespaceURI(this.items[r])===H.HTML)switch(this.tagIDs[r]){case t:return!0;case o.OPTION:case o.OPTGROUP:break;default:return!1}return!0}generateImpliedEndTags(){for(;this.currentTagId!==void 0&&hc.has(this.currentTagId);)this.pop()}generateImpliedEndTagsThoroughly(){for(;this.currentTagId!==void 0&&Is.has(this.currentTagId);)this.pop()}generateImpliedEndTagsWithExclusion(t){for(;this.currentTagId!==void 0&&this.currentTagId!==t&&Is.has(this.currentTagId);)this.pop()}}const ga=3;var St;(function(e){e[e.Marker=0]="Marker",e[e.Element=1]="Element"})(St||(St={}));const Os={type:St.Marker};class Pp{constructor(t){this.treeAdapter=t,this.entries=[],this.bookmark=null}_getNoahArkConditionCandidates(t,r){const n=[],a=r.length,i=this.treeAdapter.getTagName(t),u=this.treeAdapter.getNamespaceURI(t);for(let s=0;s[u.name,u.value]));let i=0;for(let u=0;ua.get(l.name)===l.value)&&(i+=1,i>=ga&&this.entries.splice(s.idx,1))}}insertMarker(){this.entries.unshift(Os)}pushElement(t,r){this._ensureNoahArkCondition(t),this.entries.unshift({type:St.Element,element:t,token:r})}insertElementAfterBookmark(t,r){const n=this.entries.indexOf(this.bookmark);this.entries.splice(n,0,{type:St.Element,element:t,token:r})}removeEntry(t){const r=this.entries.indexOf(t);r!==-1&&this.entries.splice(r,1)}clearToLastMarker(){const t=this.entries.indexOf(Os);t===-1?this.entries.length=0:this.entries.splice(0,t+1)}getElementEntryInScopeWithTagName(t){const r=this.entries.find(n=>n.type===St.Marker||this.treeAdapter.getTagName(n.element)===t);return r&&r.type===St.Element?r:null}getElementEntry(t){return this.entries.find(r=>r.type===St.Element&&r.element===t)}}const $t={createDocument(){return{nodeName:"#document",mode:pt.NO_QUIRKS,childNodes:[]}},createDocumentFragment(){return{nodeName:"#document-fragment",childNodes:[]}},createElement(e,t,r){return{nodeName:e,tagName:e,attrs:r,namespaceURI:t,childNodes:[],parentNode:null}},createCommentNode(e){return{nodeName:"#comment",data:e,parentNode:null}},createTextNode(e){return{nodeName:"#text",value:e,parentNode:null}},appendChild(e,t){e.childNodes.push(t),t.parentNode=e},insertBefore(e,t,r){const n=e.childNodes.indexOf(r);e.childNodes.splice(n,0,t),t.parentNode=e},setTemplateContent(e,t){e.content=t},getTemplateContent(e){return e.content},setDocumentType(e,t,r,n){const a=e.childNodes.find(i=>i.nodeName==="#documentType");if(a)a.name=t,a.publicId=r,a.systemId=n;else{const i={nodeName:"#documentType",name:t,publicId:r,systemId:n,parentNode:null};$t.appendChild(e,i)}},setDocumentMode(e,t){e.mode=t},getDocumentMode(e){return e.mode},detachNode(e){if(e.parentNode){const t=e.parentNode.childNodes.indexOf(e);e.parentNode.childNodes.splice(t,1),e.parentNode=null}},insertText(e,t){if(e.childNodes.length>0){const r=e.childNodes[e.childNodes.length-1];if($t.isTextNode(r)){r.value+=t;return}}$t.appendChild(e,$t.createTextNode(t))},insertTextBefore(e,t,r){const n=e.childNodes[e.childNodes.indexOf(r)-1];n&&$t.isTextNode(n)?n.value+=t:$t.insertBefore(e,$t.createTextNode(t),r)},adoptAttributes(e,t){const r=new Set(e.attrs.map(n=>n.name));for(let n=0;ne.startsWith(r))}function qp(e){return e.name===dc&&e.publicId===null&&(e.systemId===null||e.systemId===Bp)}function Yp(e){if(e.name!==dc)return pt.QUIRKS;const{systemId:t}=e;if(t&&t.toLowerCase()===Fp)return pt.QUIRKS;let{publicId:r}=e;if(r!==null){if(r=r.toLowerCase(),zp.has(r))return pt.QUIRKS;let n=t===null?Hp:fc;if(Ls(r,n))return pt.QUIRKS;if(n=t===null?mc:Up,Ls(r,n))return pt.LIMITED_QUIRKS}return pt.NO_QUIRKS}const Rs={TEXT_HTML:"text/html",APPLICATION_XML:"application/xhtml+xml"},Gp="definitionurl",Vp="definitionURL",jp=new Map(["attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map(e=>[e.toLowerCase(),e])),Wp=new Map([["xlink:actuate",{prefix:"xlink",name:"actuate",namespace:H.XLINK}],["xlink:arcrole",{prefix:"xlink",name:"arcrole",namespace:H.XLINK}],["xlink:href",{prefix:"xlink",name:"href",namespace:H.XLINK}],["xlink:role",{prefix:"xlink",name:"role",namespace:H.XLINK}],["xlink:show",{prefix:"xlink",name:"show",namespace:H.XLINK}],["xlink:title",{prefix:"xlink",name:"title",namespace:H.XLINK}],["xlink:type",{prefix:"xlink",name:"type",namespace:H.XLINK}],["xml:lang",{prefix:"xml",name:"lang",namespace:H.XML}],["xml:space",{prefix:"xml",name:"space",namespace:H.XML}],["xmlns",{prefix:"",name:"xmlns",namespace:H.XMLNS}],["xmlns:xlink",{prefix:"xmlns",name:"xlink",namespace:H.XMLNS}]]),Xp=new Map(["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","textPath"].map(e=>[e.toLowerCase(),e])),$p=new Set([o.B,o.BIG,o.BLOCKQUOTE,o.BODY,o.BR,o.CENTER,o.CODE,o.DD,o.DIV,o.DL,o.DT,o.EM,o.EMBED,o.H1,o.H2,o.H3,o.H4,o.H5,o.H6,o.HEAD,o.HR,o.I,o.IMG,o.LI,o.LISTING,o.MENU,o.META,o.NOBR,o.OL,o.P,o.PRE,o.RUBY,o.S,o.SMALL,o.SPAN,o.STRONG,o.STRIKE,o.SUB,o.SUP,o.TABLE,o.TT,o.U,o.UL,o.VAR]);function Qp(e){const t=e.tagID;return t===o.FONT&&e.attrs.some(({name:n})=>n===mr.COLOR||n===mr.SIZE||n===mr.FACE)||$p.has(t)}function pc(e){for(let t=0;t0&&this._setContextModes(t,r)}onItemPop(t,r){var n,a;if(this.options.sourceCodeLocationInfo&&this._setEndLocation(t,this.currentToken),(a=(n=this.treeAdapter).onItemPop)===null||a===void 0||a.call(n,t,this.openElements.current),r){let i,u;this.openElements.stackTop===0&&this.fragmentContext?(i=this.fragmentContext,u=this.fragmentContextID):{current:i,currentTagId:u}=this.openElements,this._setContextModes(i,u)}}_setContextModes(t,r){const n=t===this.document||t&&this.treeAdapter.getNamespaceURI(t)===H.HTML;this.currentNotInHTML=!n,this.tokenizer.inForeignNode=!n&&t!==void 0&&r!==void 0&&!this._isIntegrationPoint(r,t)}_switchToTextParsing(t,r){this._insertElement(t,H.HTML),this.tokenizer.state=r,this.originalInsertionMode=this.insertionMode,this.insertionMode=k.TEXT}switchToPlaintextParsing(){this.insertionMode=k.TEXT,this.originalInsertionMode=k.IN_BODY,this.tokenizer.state=De.PLAINTEXT}_getAdjustedCurrentElement(){return this.openElements.stackTop===0&&this.fragmentContext?this.fragmentContext:this.openElements.current}_findFormInFragmentContext(){let t=this.fragmentContext;for(;t;){if(this.treeAdapter.getTagName(t)===O.FORM){this.formElement=t;break}t=this.treeAdapter.getParentNode(t)}}_initTokenizerForFragmentParsing(){if(!(!this.fragmentContext||this.treeAdapter.getNamespaceURI(this.fragmentContext)!==H.HTML))switch(this.fragmentContextID){case o.TITLE:case o.TEXTAREA:{this.tokenizer.state=De.RCDATA;break}case o.STYLE:case o.XMP:case o.IFRAME:case o.NOEMBED:case o.NOFRAMES:case o.NOSCRIPT:{this.tokenizer.state=De.RAWTEXT;break}case o.SCRIPT:{this.tokenizer.state=De.SCRIPT_DATA;break}case o.PLAINTEXT:{this.tokenizer.state=De.PLAINTEXT;break}}}_setDocumentType(t){const r=t.name||"",n=t.publicId||"",a=t.systemId||"";if(this.treeAdapter.setDocumentType(this.document,r,n,a),t.location){const u=this.treeAdapter.getChildNodes(this.document).find(s=>this.treeAdapter.isDocumentTypeNode(s));u&&this.treeAdapter.setNodeSourceCodeLocation(u,t.location)}}_attachElementToTree(t,r){if(this.options.sourceCodeLocationInfo){const n=r&&{...r,startTag:r};this.treeAdapter.setNodeSourceCodeLocation(t,n)}if(this._shouldFosterParentOnInsertion())this._fosterParentElement(t);else{const n=this.openElements.currentTmplContentOrNode;this.treeAdapter.appendChild(n??this.document,t)}}_appendElement(t,r){const n=this.treeAdapter.createElement(t.tagName,r,t.attrs);this._attachElementToTree(n,t.location)}_insertElement(t,r){const n=this.treeAdapter.createElement(t.tagName,r,t.attrs);this._attachElementToTree(n,t.location),this.openElements.push(n,t.tagID)}_insertFakeElement(t,r){const n=this.treeAdapter.createElement(t,H.HTML,[]);this._attachElementToTree(n,null),this.openElements.push(n,r)}_insertTemplate(t){const r=this.treeAdapter.createElement(t.tagName,H.HTML,t.attrs),n=this.treeAdapter.createDocumentFragment();this.treeAdapter.setTemplateContent(r,n),this._attachElementToTree(r,t.location),this.openElements.push(r,t.tagID),this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(n,null)}_insertFakeRootElement(){const t=this.treeAdapter.createElement(O.HTML,H.HTML,[]);this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(t,null),this.treeAdapter.appendChild(this.openElements.current,t),this.openElements.push(t,o.HTML)}_appendCommentNode(t,r){const n=this.treeAdapter.createCommentNode(t.data);this.treeAdapter.appendChild(r,n),this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(n,t.location)}_insertCharacters(t){let r,n;if(this._shouldFosterParentOnInsertion()?({parent:r,beforeElement:n}=this._findFosterParentingLocation(),n?this.treeAdapter.insertTextBefore(r,t.chars,n):this.treeAdapter.insertText(r,t.chars)):(r=this.openElements.currentTmplContentOrNode,this.treeAdapter.insertText(r,t.chars)),!t.location)return;const a=this.treeAdapter.getChildNodes(r),i=n?a.lastIndexOf(n):a.length,u=a[i-1];if(this.treeAdapter.getNodeSourceCodeLocation(u)){const{endLine:l,endCol:c,endOffset:d}=t.location;this.treeAdapter.updateNodeSourceCodeLocation(u,{endLine:l,endCol:c,endOffset:d})}else this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(u,t.location)}_adoptNodes(t,r){for(let n=this.treeAdapter.getFirstChild(t);n;n=this.treeAdapter.getFirstChild(t))this.treeAdapter.detachNode(n),this.treeAdapter.appendChild(r,n)}_setEndLocation(t,r){if(this.treeAdapter.getNodeSourceCodeLocation(t)&&r.location){const n=r.location,a=this.treeAdapter.getTagName(t),i=r.type===de.END_TAG&&a===r.tagName?{endTag:{...n},endLine:n.endLine,endCol:n.endCol,endOffset:n.endOffset}:{endLine:n.startLine,endCol:n.startCol,endOffset:n.startOffset};this.treeAdapter.updateNodeSourceCodeLocation(t,i)}}shouldProcessStartTagTokenInForeignContent(t){if(!this.currentNotInHTML)return!1;let r,n;return this.openElements.stackTop===0&&this.fragmentContext?(r=this.fragmentContext,n=this.fragmentContextID):{current:r,currentTagId:n}=this.openElements,t.tagID===o.SVG&&this.treeAdapter.getTagName(r)===O.ANNOTATION_XML&&this.treeAdapter.getNamespaceURI(r)===H.MATHML?!1:this.tokenizer.inForeignNode||(t.tagID===o.MGLYPH||t.tagID===o.MALIGNMARK)&&n!==void 0&&!this._isIntegrationPoint(n,r,H.HTML)}_processToken(t){switch(t.type){case de.CHARACTER:{this.onCharacter(t);break}case de.NULL_CHARACTER:{this.onNullCharacter(t);break}case de.COMMENT:{this.onComment(t);break}case de.DOCTYPE:{this.onDoctype(t);break}case de.START_TAG:{this._processStartTag(t);break}case de.END_TAG:{this.onEndTag(t);break}case de.EOF:{this.onEof(t);break}case de.WHITESPACE_CHARACTER:{this.onWhitespaceCharacter(t);break}}}_isIntegrationPoint(t,r,n){const a=this.treeAdapter.getNamespaceURI(r),i=this.treeAdapter.getAttrList(r);return e5(t,a,i,n)}_reconstructActiveFormattingElements(){const t=this.activeFormattingElements.entries.length;if(t){const r=this.activeFormattingElements.entries.findIndex(a=>a.type===St.Marker||this.openElements.contains(a.element)),n=r===-1?t-1:r-1;for(let a=n;a>=0;a--){const i=this.activeFormattingElements.entries[a];this._insertElement(i.token,this.treeAdapter.getNamespaceURI(i.element)),i.element=this.openElements.current}}}_closeTableCell(){this.openElements.generateImpliedEndTags(),this.openElements.popUntilTableCellPopped(),this.activeFormattingElements.clearToLastMarker(),this.insertionMode=k.IN_ROW}_closePElement(){this.openElements.generateImpliedEndTagsWithExclusion(o.P),this.openElements.popUntilTagNamePopped(o.P)}_resetInsertionMode(){for(let t=this.openElements.stackTop;t>=0;t--)switch(t===0&&this.fragmentContext?this.fragmentContextID:this.openElements.tagIDs[t]){case o.TR:{this.insertionMode=k.IN_ROW;return}case o.TBODY:case o.THEAD:case o.TFOOT:{this.insertionMode=k.IN_TABLE_BODY;return}case o.CAPTION:{this.insertionMode=k.IN_CAPTION;return}case o.COLGROUP:{this.insertionMode=k.IN_COLUMN_GROUP;return}case o.TABLE:{this.insertionMode=k.IN_TABLE;return}case o.BODY:{this.insertionMode=k.IN_BODY;return}case o.FRAMESET:{this.insertionMode=k.IN_FRAMESET;return}case o.SELECT:{this._resetInsertionModeForSelect(t);return}case o.TEMPLATE:{this.insertionMode=this.tmplInsertionModeStack[0];return}case o.HTML:{this.insertionMode=this.headElement?k.AFTER_HEAD:k.BEFORE_HEAD;return}case o.TD:case o.TH:{if(t>0){this.insertionMode=k.IN_CELL;return}break}case o.HEAD:{if(t>0){this.insertionMode=k.IN_HEAD;return}break}}this.insertionMode=k.IN_BODY}_resetInsertionModeForSelect(t){if(t>0)for(let r=t-1;r>0;r--){const n=this.openElements.tagIDs[r];if(n===o.TEMPLATE)break;if(n===o.TABLE){this.insertionMode=k.IN_SELECT_IN_TABLE;return}}this.insertionMode=k.IN_SELECT}_isElementCausesFosterParenting(t){return bc.has(t)}_shouldFosterParentOnInsertion(){return this.fosterParentingEnabled&&this.openElements.currentTagId!==void 0&&this._isElementCausesFosterParenting(this.openElements.currentTagId)}_findFosterParentingLocation(){for(let t=this.openElements.stackTop;t>=0;t--){const r=this.openElements.items[t];switch(this.openElements.tagIDs[t]){case o.TEMPLATE:{if(this.treeAdapter.getNamespaceURI(r)===H.HTML)return{parent:this.treeAdapter.getTemplateContent(r),beforeElement:null};break}case o.TABLE:{const n=this.treeAdapter.getParentNode(r);return n?{parent:n,beforeElement:r}:{parent:this.openElements.items[t-1],beforeElement:null}}}}return{parent:this.openElements.items[0],beforeElement:null}}_fosterParentElement(t){const r=this._findFosterParentingLocation();r.beforeElement?this.treeAdapter.insertBefore(r.parent,t,r.beforeElement):this.treeAdapter.appendChild(r.parent,t)}_isSpecialElement(t,r){const n=this.treeAdapter.getNamespaceURI(t);return kp[n].has(r)}onCharacter(t){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){R7(this,t);return}switch(this.insertionMode){case k.INITIAL:{Zr(this,t);break}case k.BEFORE_HTML:{ln(this,t);break}case k.BEFORE_HEAD:{on(this,t);break}case k.IN_HEAD:{cn(this,t);break}case k.IN_HEAD_NO_SCRIPT:{hn(this,t);break}case k.AFTER_HEAD:{dn(this,t);break}case k.IN_BODY:case k.IN_CAPTION:case k.IN_CELL:case k.IN_TEMPLATE:{Tc(this,t);break}case k.TEXT:case k.IN_SELECT:case k.IN_SELECT_IN_TABLE:{this._insertCharacters(t);break}case k.IN_TABLE:case k.IN_TABLE_BODY:case k.IN_ROW:{ba(this,t);break}case k.IN_TABLE_TEXT:{Sc(this,t);break}case k.IN_COLUMN_GROUP:{l0(this,t);break}case k.AFTER_BODY:{o0(this,t);break}case k.AFTER_AFTER_BODY:{Jn(this,t);break}}}onNullCharacter(t){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){L7(this,t);return}switch(this.insertionMode){case k.INITIAL:{Zr(this,t);break}case k.BEFORE_HTML:{ln(this,t);break}case k.BEFORE_HEAD:{on(this,t);break}case k.IN_HEAD:{cn(this,t);break}case k.IN_HEAD_NO_SCRIPT:{hn(this,t);break}case k.AFTER_HEAD:{dn(this,t);break}case k.TEXT:{this._insertCharacters(t);break}case k.IN_TABLE:case k.IN_TABLE_BODY:case k.IN_ROW:{ba(this,t);break}case k.IN_COLUMN_GROUP:{l0(this,t);break}case k.AFTER_BODY:{o0(this,t);break}case k.AFTER_AFTER_BODY:{Jn(this,t);break}}}onComment(t){if(this.skipNextNewLine=!1,this.currentNotInHTML){Ka(this,t);return}switch(this.insertionMode){case k.INITIAL:case k.BEFORE_HTML:case k.BEFORE_HEAD:case k.IN_HEAD:case k.IN_HEAD_NO_SCRIPT:case k.AFTER_HEAD:case k.IN_BODY:case k.IN_TABLE:case k.IN_CAPTION:case k.IN_COLUMN_GROUP:case k.IN_TABLE_BODY:case k.IN_ROW:case k.IN_CELL:case k.IN_SELECT:case k.IN_SELECT_IN_TABLE:case k.IN_TEMPLATE:case k.IN_FRAMESET:case k.AFTER_FRAMESET:{Ka(this,t);break}case k.IN_TABLE_TEXT:{en(this,t);break}case k.AFTER_BODY:{h5(this,t);break}case k.AFTER_AFTER_BODY:case k.AFTER_AFTER_FRAMESET:{d5(this,t);break}}}onDoctype(t){switch(this.skipNextNewLine=!1,this.insertionMode){case k.INITIAL:{f5(this,t);break}case k.BEFORE_HEAD:case k.IN_HEAD:case k.IN_HEAD_NO_SCRIPT:case k.AFTER_HEAD:{this._err(t,P.misplacedDoctype);break}case k.IN_TABLE_TEXT:{en(this,t);break}}}onStartTag(t){this.skipNextNewLine=!1,this.currentToken=t,this._processStartTag(t),t.selfClosing&&!t.ackSelfClosing&&this._err(t,P.nonVoidHtmlElementStartTagWithTrailingSolidus)}_processStartTag(t){this.shouldProcessStartTagTokenInForeignContent(t)?M7(this,t):this._startTagOutsideForeignContent(t)}_startTagOutsideForeignContent(t){switch(this.insertionMode){case k.INITIAL:{Zr(this,t);break}case k.BEFORE_HTML:{m5(this,t);break}case k.BEFORE_HEAD:{g5(this,t);break}case k.IN_HEAD:{yt(this,t);break}case k.IN_HEAD_NO_SCRIPT:{T5(this,t);break}case k.AFTER_HEAD:{y5(this,t);break}case k.IN_BODY:{We(this,t);break}case k.IN_TABLE:{Rr(this,t);break}case k.IN_TABLE_TEXT:{en(this,t);break}case k.IN_CAPTION:{b7(this,t);break}case k.IN_COLUMN_GROUP:{Bi(this,t);break}case k.IN_TABLE_BODY:{O0(this,t);break}case k.IN_ROW:{L0(this,t);break}case k.IN_CELL:{x7(this,t);break}case k.IN_SELECT:{_c(this,t);break}case k.IN_SELECT_IN_TABLE:{v7(this,t);break}case k.IN_TEMPLATE:{k7(this,t);break}case k.AFTER_BODY:{w7(this,t);break}case k.IN_FRAMESET:{C7(this,t);break}case k.AFTER_FRAMESET:{I7(this,t);break}case k.AFTER_AFTER_BODY:{D7(this,t);break}case k.AFTER_AFTER_FRAMESET:{O7(this,t);break}}}onEndTag(t){this.skipNextNewLine=!1,this.currentToken=t,this.currentNotInHTML?P7(this,t):this._endTagOutsideForeignContent(t)}_endTagOutsideForeignContent(t){switch(this.insertionMode){case k.INITIAL:{Zr(this,t);break}case k.BEFORE_HTML:{p5(this,t);break}case k.BEFORE_HEAD:{b5(this,t);break}case k.IN_HEAD:{E5(this,t);break}case k.IN_HEAD_NO_SCRIPT:{x5(this,t);break}case k.AFTER_HEAD:{v5(this,t);break}case k.IN_BODY:{D0(this,t);break}case k.TEXT:{s7(this,t);break}case k.IN_TABLE:{En(this,t);break}case k.IN_TABLE_TEXT:{en(this,t);break}case k.IN_CAPTION:{E7(this,t);break}case k.IN_COLUMN_GROUP:{T7(this,t);break}case k.IN_TABLE_BODY:{Ja(this,t);break}case k.IN_ROW:{Cc(this,t);break}case k.IN_CELL:{y7(this,t);break}case k.IN_SELECT:{Ic(this,t);break}case k.IN_SELECT_IN_TABLE:{A7(this,t);break}case k.IN_TEMPLATE:{S7(this,t);break}case k.AFTER_BODY:{Dc(this,t);break}case k.IN_FRAMESET:{_7(this,t);break}case k.AFTER_FRAMESET:{N7(this,t);break}case k.AFTER_AFTER_BODY:{Jn(this,t);break}}}onEof(t){switch(this.insertionMode){case k.INITIAL:{Zr(this,t);break}case k.BEFORE_HTML:{ln(this,t);break}case k.BEFORE_HEAD:{on(this,t);break}case k.IN_HEAD:{cn(this,t);break}case k.IN_HEAD_NO_SCRIPT:{hn(this,t);break}case k.AFTER_HEAD:{dn(this,t);break}case k.IN_BODY:case k.IN_TABLE:case k.IN_CAPTION:case k.IN_COLUMN_GROUP:case k.IN_TABLE_BODY:case k.IN_ROW:case k.IN_CELL:case k.IN_SELECT:case k.IN_SELECT_IN_TABLE:{Ac(this,t);break}case k.TEXT:{l7(this,t);break}case k.IN_TABLE_TEXT:{en(this,t);break}case k.IN_TEMPLATE:{Nc(this,t);break}case k.AFTER_BODY:case k.IN_FRAMESET:case k.AFTER_FRAMESET:case k.AFTER_AFTER_BODY:case k.AFTER_AFTER_FRAMESET:{Pi(this,t);break}}}onWhitespaceCharacter(t){if(this.skipNextNewLine&&(this.skipNextNewLine=!1,t.chars.charCodeAt(0)===T.LINE_FEED)){if(t.chars.length===1)return;t.chars=t.chars.substr(1)}if(this.tokenizer.inForeignNode){this._insertCharacters(t);return}switch(this.insertionMode){case k.IN_HEAD:case k.IN_HEAD_NO_SCRIPT:case k.AFTER_HEAD:case k.TEXT:case k.IN_COLUMN_GROUP:case k.IN_SELECT:case k.IN_SELECT_IN_TABLE:case k.IN_FRAMESET:case k.AFTER_FRAMESET:{this._insertCharacters(t);break}case k.IN_BODY:case k.IN_CAPTION:case k.IN_CELL:case k.IN_TEMPLATE:case k.AFTER_BODY:case k.AFTER_AFTER_BODY:case k.AFTER_AFTER_FRAMESET:{Ec(this,t);break}case k.IN_TABLE:case k.IN_TABLE_BODY:case k.IN_ROW:{ba(this,t);break}case k.IN_TABLE_TEXT:{kc(this,t);break}}}}function i5(e,t){let r=e.activeFormattingElements.getElementEntryInScopeWithTagName(t.tagName);return r?e.openElements.contains(r.element)?e.openElements.hasInScope(t.tagID)||(r=null):(e.activeFormattingElements.removeEntry(r),r=null):vc(e,t),r}function u5(e,t){let r=null,n=e.openElements.stackTop;for(;n>=0;n--){const a=e.openElements.items[n];if(a===t.element)break;e._isSpecialElement(a,e.openElements.tagIDs[n])&&(r=a)}return r||(e.openElements.shortenToLength(Math.max(n,0)),e.activeFormattingElements.removeEntry(t)),r}function s5(e,t,r){let n=t,a=e.openElements.getCommonAncestor(t);for(let i=0,u=a;u!==r;i++,u=a){a=e.openElements.getCommonAncestor(u);const s=e.activeFormattingElements.getElementEntry(u),l=s&&i>=n5;!s||l?(l&&e.activeFormattingElements.removeEntry(s),e.openElements.remove(u)):(u=l5(e,s),n===t&&(e.activeFormattingElements.bookmark=s),e.treeAdapter.detachNode(n),e.treeAdapter.appendChild(u,n),n=u)}return n}function l5(e,t){const r=e.treeAdapter.getNamespaceURI(t.element),n=e.treeAdapter.createElement(t.token.tagName,r,t.token.attrs);return e.openElements.replace(t.element,n),t.element=n,n}function o5(e,t,r){const n=e.treeAdapter.getTagName(t),a=qr(n);if(e._isElementCausesFosterParenting(a))e._fosterParentElement(r);else{const i=e.treeAdapter.getNamespaceURI(t);a===o.TEMPLATE&&i===H.HTML&&(t=e.treeAdapter.getTemplateContent(t)),e.treeAdapter.appendChild(t,r)}}function c5(e,t,r){const n=e.treeAdapter.getNamespaceURI(r.element),{token:a}=r,i=e.treeAdapter.createElement(a.tagName,n,a.attrs);e._adoptNodes(t,i),e.treeAdapter.appendChild(t,i),e.activeFormattingElements.insertElementAfterBookmark(i,a),e.activeFormattingElements.removeEntry(r),e.openElements.remove(r.element),e.openElements.insertAfter(t,i,a.tagID)}function Mi(e,t){for(let r=0;r=r;n--)e._setEndLocation(e.openElements.items[n],t);if(!e.fragmentContext&&e.openElements.stackTop>=0){const n=e.openElements.items[0],a=e.treeAdapter.getNodeSourceCodeLocation(n);if(a&&!a.endTag&&(e._setEndLocation(n,t),e.openElements.stackTop>=1)){const i=e.openElements.items[1],u=e.treeAdapter.getNodeSourceCodeLocation(i);u&&!u.endTag&&e._setEndLocation(i,t)}}}}function f5(e,t){e._setDocumentType(t);const r=t.forceQuirks?pt.QUIRKS:Yp(t);qp(t)||e._err(t,P.nonConformingDoctype),e.treeAdapter.setDocumentMode(e.document,r),e.insertionMode=k.BEFORE_HTML}function Zr(e,t){e._err(t,P.missingDoctype,!0),e.treeAdapter.setDocumentMode(e.document,pt.QUIRKS),e.insertionMode=k.BEFORE_HTML,e._processToken(t)}function m5(e,t){t.tagID===o.HTML?(e._insertElement(t,H.HTML),e.insertionMode=k.BEFORE_HEAD):ln(e,t)}function p5(e,t){const r=t.tagID;(r===o.HTML||r===o.HEAD||r===o.BODY||r===o.BR)&&ln(e,t)}function ln(e,t){e._insertFakeRootElement(),e.insertionMode=k.BEFORE_HEAD,e._processToken(t)}function g5(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.HEAD:{e._insertElement(t,H.HTML),e.headElement=e.openElements.current,e.insertionMode=k.IN_HEAD;break}default:on(e,t)}}function b5(e,t){const r=t.tagID;r===o.HEAD||r===o.BODY||r===o.HTML||r===o.BR?on(e,t):e._err(t,P.endTagWithoutMatchingOpenElement)}function on(e,t){e._insertFakeElement(O.HEAD,o.HEAD),e.headElement=e.openElements.current,e.insertionMode=k.IN_HEAD,e._processToken(t)}function yt(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.BASE:case o.BASEFONT:case o.BGSOUND:case o.LINK:case o.META:{e._appendElement(t,H.HTML),t.ackSelfClosing=!0;break}case o.TITLE:{e._switchToTextParsing(t,De.RCDATA);break}case o.NOSCRIPT:{e.options.scriptingEnabled?e._switchToTextParsing(t,De.RAWTEXT):(e._insertElement(t,H.HTML),e.insertionMode=k.IN_HEAD_NO_SCRIPT);break}case o.NOFRAMES:case o.STYLE:{e._switchToTextParsing(t,De.RAWTEXT);break}case o.SCRIPT:{e._switchToTextParsing(t,De.SCRIPT_DATA);break}case o.TEMPLATE:{e._insertTemplate(t),e.activeFormattingElements.insertMarker(),e.framesetOk=!1,e.insertionMode=k.IN_TEMPLATE,e.tmplInsertionModeStack.unshift(k.IN_TEMPLATE);break}case o.HEAD:{e._err(t,P.misplacedStartTagForHeadElement);break}default:cn(e,t)}}function E5(e,t){switch(t.tagID){case o.HEAD:{e.openElements.pop(),e.insertionMode=k.AFTER_HEAD;break}case o.BODY:case o.BR:case o.HTML:{cn(e,t);break}case o.TEMPLATE:{Tr(e,t);break}default:e._err(t,P.endTagWithoutMatchingOpenElement)}}function Tr(e,t){e.openElements.tmplCount>0?(e.openElements.generateImpliedEndTagsThoroughly(),e.openElements.currentTagId!==o.TEMPLATE&&e._err(t,P.closingOfElementWithOpenChildElements),e.openElements.popUntilTagNamePopped(o.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e.tmplInsertionModeStack.shift(),e._resetInsertionMode()):e._err(t,P.endTagWithoutMatchingOpenElement)}function cn(e,t){e.openElements.pop(),e.insertionMode=k.AFTER_HEAD,e._processToken(t)}function T5(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.BASEFONT:case o.BGSOUND:case o.HEAD:case o.LINK:case o.META:case o.NOFRAMES:case o.STYLE:{yt(e,t);break}case o.NOSCRIPT:{e._err(t,P.nestedNoscriptInHead);break}default:hn(e,t)}}function x5(e,t){switch(t.tagID){case o.NOSCRIPT:{e.openElements.pop(),e.insertionMode=k.IN_HEAD;break}case o.BR:{hn(e,t);break}default:e._err(t,P.endTagWithoutMatchingOpenElement)}}function hn(e,t){const r=t.type===de.EOF?P.openElementsLeftAfterEof:P.disallowedContentInNoscriptInHead;e._err(t,r),e.openElements.pop(),e.insertionMode=k.IN_HEAD,e._processToken(t)}function y5(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.BODY:{e._insertElement(t,H.HTML),e.framesetOk=!1,e.insertionMode=k.IN_BODY;break}case o.FRAMESET:{e._insertElement(t,H.HTML),e.insertionMode=k.IN_FRAMESET;break}case o.BASE:case o.BASEFONT:case o.BGSOUND:case o.LINK:case o.META:case o.NOFRAMES:case o.SCRIPT:case o.STYLE:case o.TEMPLATE:case o.TITLE:{e._err(t,P.abandonedHeadElementChild),e.openElements.push(e.headElement,o.HEAD),yt(e,t),e.openElements.remove(e.headElement);break}case o.HEAD:{e._err(t,P.misplacedStartTagForHeadElement);break}default:dn(e,t)}}function v5(e,t){switch(t.tagID){case o.BODY:case o.HTML:case o.BR:{dn(e,t);break}case o.TEMPLATE:{Tr(e,t);break}default:e._err(t,P.endTagWithoutMatchingOpenElement)}}function dn(e,t){e._insertFakeElement(O.BODY,o.BODY),e.insertionMode=k.IN_BODY,N0(e,t)}function N0(e,t){switch(t.type){case de.CHARACTER:{Tc(e,t);break}case de.WHITESPACE_CHARACTER:{Ec(e,t);break}case de.COMMENT:{Ka(e,t);break}case de.START_TAG:{We(e,t);break}case de.END_TAG:{D0(e,t);break}case de.EOF:{Ac(e,t);break}}}function Ec(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t)}function Tc(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t),e.framesetOk=!1}function A5(e,t){e.openElements.tmplCount===0&&e.treeAdapter.adoptAttributes(e.openElements.items[0],t.attrs)}function k5(e,t){const r=e.openElements.tryPeekProperlyNestedBodyElement();r&&e.openElements.tmplCount===0&&(e.framesetOk=!1,e.treeAdapter.adoptAttributes(r,t.attrs))}function S5(e,t){const r=e.openElements.tryPeekProperlyNestedBodyElement();e.framesetOk&&r&&(e.treeAdapter.detachNode(r),e.openElements.popAllUpToHtmlElement(),e._insertElement(t,H.HTML),e.insertionMode=k.IN_FRAMESET)}function w5(e,t){e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._insertElement(t,H.HTML)}function C5(e,t){e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e.openElements.currentTagId!==void 0&&Qa.has(e.openElements.currentTagId)&&e.openElements.pop(),e._insertElement(t,H.HTML)}function _5(e,t){e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._insertElement(t,H.HTML),e.skipNextNewLine=!0,e.framesetOk=!1}function I5(e,t){const r=e.openElements.tmplCount>0;(!e.formElement||r)&&(e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._insertElement(t,H.HTML),r||(e.formElement=e.openElements.current))}function N5(e,t){e.framesetOk=!1;const r=t.tagID;for(let n=e.openElements.stackTop;n>=0;n--){const a=e.openElements.tagIDs[n];if(r===o.LI&&a===o.LI||(r===o.DD||r===o.DT)&&(a===o.DD||a===o.DT)){e.openElements.generateImpliedEndTagsWithExclusion(a),e.openElements.popUntilTagNamePopped(a);break}if(a!==o.ADDRESS&&a!==o.DIV&&a!==o.P&&e._isSpecialElement(e.openElements.items[n],a))break}e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._insertElement(t,H.HTML)}function D5(e,t){e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._insertElement(t,H.HTML),e.tokenizer.state=De.PLAINTEXT}function O5(e,t){e.openElements.hasInScope(o.BUTTON)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(o.BUTTON)),e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML),e.framesetOk=!1}function L5(e,t){const r=e.activeFormattingElements.getElementEntryInScopeWithTagName(O.A);r&&(Mi(e,t),e.openElements.remove(r.element),e.activeFormattingElements.removeEntry(r)),e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}function R5(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}function M5(e,t){e._reconstructActiveFormattingElements(),e.openElements.hasInScope(o.NOBR)&&(Mi(e,t),e._reconstructActiveFormattingElements()),e._insertElement(t,H.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}function P5(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML),e.activeFormattingElements.insertMarker(),e.framesetOk=!1}function B5(e,t){e.treeAdapter.getDocumentMode(e.document)!==pt.QUIRKS&&e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._insertElement(t,H.HTML),e.framesetOk=!1,e.insertionMode=k.IN_TABLE}function xc(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,H.HTML),e.framesetOk=!1,t.ackSelfClosing=!0}function yc(e){const t=oc(e,mr.TYPE);return t!=null&&t.toLowerCase()===t5}function F5(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,H.HTML),yc(t)||(e.framesetOk=!1),t.ackSelfClosing=!0}function H5(e,t){e._appendElement(t,H.HTML),t.ackSelfClosing=!0}function z5(e,t){e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._appendElement(t,H.HTML),e.framesetOk=!1,t.ackSelfClosing=!0}function U5(e,t){t.tagName=O.IMG,t.tagID=o.IMG,xc(e,t)}function q5(e,t){e._insertElement(t,H.HTML),e.skipNextNewLine=!0,e.tokenizer.state=De.RCDATA,e.originalInsertionMode=e.insertionMode,e.framesetOk=!1,e.insertionMode=k.TEXT}function Y5(e,t){e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._reconstructActiveFormattingElements(),e.framesetOk=!1,e._switchToTextParsing(t,De.RAWTEXT)}function G5(e,t){e.framesetOk=!1,e._switchToTextParsing(t,De.RAWTEXT)}function Bs(e,t){e._switchToTextParsing(t,De.RAWTEXT)}function V5(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML),e.framesetOk=!1,e.insertionMode=e.insertionMode===k.IN_TABLE||e.insertionMode===k.IN_CAPTION||e.insertionMode===k.IN_TABLE_BODY||e.insertionMode===k.IN_ROW||e.insertionMode===k.IN_CELL?k.IN_SELECT_IN_TABLE:k.IN_SELECT}function j5(e,t){e.openElements.currentTagId===o.OPTION&&e.openElements.pop(),e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML)}function W5(e,t){e.openElements.hasInScope(o.RUBY)&&e.openElements.generateImpliedEndTags(),e._insertElement(t,H.HTML)}function X5(e,t){e.openElements.hasInScope(o.RUBY)&&e.openElements.generateImpliedEndTagsWithExclusion(o.RTC),e._insertElement(t,H.HTML)}function $5(e,t){e._reconstructActiveFormattingElements(),pc(t),Ri(t),t.selfClosing?e._appendElement(t,H.MATHML):e._insertElement(t,H.MATHML),t.ackSelfClosing=!0}function Q5(e,t){e._reconstructActiveFormattingElements(),gc(t),Ri(t),t.selfClosing?e._appendElement(t,H.SVG):e._insertElement(t,H.SVG),t.ackSelfClosing=!0}function Fs(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML)}function We(e,t){switch(t.tagID){case o.I:case o.S:case o.B:case o.U:case o.EM:case o.TT:case o.BIG:case o.CODE:case o.FONT:case o.SMALL:case o.STRIKE:case o.STRONG:{R5(e,t);break}case o.A:{L5(e,t);break}case o.H1:case o.H2:case o.H3:case o.H4:case o.H5:case o.H6:{C5(e,t);break}case o.P:case o.DL:case o.OL:case o.UL:case o.DIV:case o.DIR:case o.NAV:case o.MAIN:case o.MENU:case o.ASIDE:case o.CENTER:case o.FIGURE:case o.FOOTER:case o.HEADER:case o.HGROUP:case o.DIALOG:case o.DETAILS:case o.ADDRESS:case o.ARTICLE:case o.SEARCH:case o.SECTION:case o.SUMMARY:case o.FIELDSET:case o.BLOCKQUOTE:case o.FIGCAPTION:{w5(e,t);break}case o.LI:case o.DD:case o.DT:{N5(e,t);break}case o.BR:case o.IMG:case o.WBR:case o.AREA:case o.EMBED:case o.KEYGEN:{xc(e,t);break}case o.HR:{z5(e,t);break}case o.RB:case o.RTC:{W5(e,t);break}case o.RT:case o.RP:{X5(e,t);break}case o.PRE:case o.LISTING:{_5(e,t);break}case o.XMP:{Y5(e,t);break}case o.SVG:{Q5(e,t);break}case o.HTML:{A5(e,t);break}case o.BASE:case o.LINK:case o.META:case o.STYLE:case o.TITLE:case o.SCRIPT:case o.BGSOUND:case o.BASEFONT:case o.TEMPLATE:{yt(e,t);break}case o.BODY:{k5(e,t);break}case o.FORM:{I5(e,t);break}case o.NOBR:{M5(e,t);break}case o.MATH:{$5(e,t);break}case o.TABLE:{B5(e,t);break}case o.INPUT:{F5(e,t);break}case o.PARAM:case o.TRACK:case o.SOURCE:{H5(e,t);break}case o.IMAGE:{U5(e,t);break}case o.BUTTON:{O5(e,t);break}case o.APPLET:case o.OBJECT:case o.MARQUEE:{P5(e,t);break}case o.IFRAME:{G5(e,t);break}case o.SELECT:{V5(e,t);break}case o.OPTION:case o.OPTGROUP:{j5(e,t);break}case o.NOEMBED:case o.NOFRAMES:{Bs(e,t);break}case o.FRAMESET:{S5(e,t);break}case o.TEXTAREA:{q5(e,t);break}case o.NOSCRIPT:{e.options.scriptingEnabled?Bs(e,t):Fs(e,t);break}case o.PLAINTEXT:{D5(e,t);break}case o.COL:case o.TH:case o.TD:case o.TR:case o.HEAD:case o.FRAME:case o.TBODY:case o.TFOOT:case o.THEAD:case o.CAPTION:case o.COLGROUP:break;default:Fs(e,t)}}function K5(e,t){if(e.openElements.hasInScope(o.BODY)&&(e.insertionMode=k.AFTER_BODY,e.options.sourceCodeLocationInfo)){const r=e.openElements.tryPeekProperlyNestedBodyElement();r&&e._setEndLocation(r,t)}}function J5(e,t){e.openElements.hasInScope(o.BODY)&&(e.insertionMode=k.AFTER_BODY,Dc(e,t))}function Z5(e,t){const r=t.tagID;e.openElements.hasInScope(r)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(r))}function e7(e){const t=e.openElements.tmplCount>0,{formElement:r}=e;t||(e.formElement=null),(r||t)&&e.openElements.hasInScope(o.FORM)&&(e.openElements.generateImpliedEndTags(),t?e.openElements.popUntilTagNamePopped(o.FORM):r&&e.openElements.remove(r))}function t7(e){e.openElements.hasInButtonScope(o.P)||e._insertFakeElement(O.P,o.P),e._closePElement()}function r7(e){e.openElements.hasInListItemScope(o.LI)&&(e.openElements.generateImpliedEndTagsWithExclusion(o.LI),e.openElements.popUntilTagNamePopped(o.LI))}function n7(e,t){const r=t.tagID;e.openElements.hasInScope(r)&&(e.openElements.generateImpliedEndTagsWithExclusion(r),e.openElements.popUntilTagNamePopped(r))}function a7(e){e.openElements.hasNumberedHeaderInScope()&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilNumberedHeaderPopped())}function i7(e,t){const r=t.tagID;e.openElements.hasInScope(r)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(r),e.activeFormattingElements.clearToLastMarker())}function u7(e){e._reconstructActiveFormattingElements(),e._insertFakeElement(O.BR,o.BR),e.openElements.pop(),e.framesetOk=!1}function vc(e,t){const r=t.tagName,n=t.tagID;for(let a=e.openElements.stackTop;a>0;a--){const i=e.openElements.items[a],u=e.openElements.tagIDs[a];if(n===u&&(n!==o.UNKNOWN||e.treeAdapter.getTagName(i)===r)){e.openElements.generateImpliedEndTagsWithExclusion(n),e.openElements.stackTop>=a&&e.openElements.shortenToLength(a);break}if(e._isSpecialElement(i,u))break}}function D0(e,t){switch(t.tagID){case o.A:case o.B:case o.I:case o.S:case o.U:case o.EM:case o.TT:case o.BIG:case o.CODE:case o.FONT:case o.NOBR:case o.SMALL:case o.STRIKE:case o.STRONG:{Mi(e,t);break}case o.P:{t7(e);break}case o.DL:case o.UL:case o.OL:case o.DIR:case o.DIV:case o.NAV:case o.PRE:case o.MAIN:case o.MENU:case o.ASIDE:case o.BUTTON:case o.CENTER:case o.FIGURE:case o.FOOTER:case o.HEADER:case o.HGROUP:case o.DIALOG:case o.ADDRESS:case o.ARTICLE:case o.DETAILS:case o.SEARCH:case o.SECTION:case o.SUMMARY:case o.LISTING:case o.FIELDSET:case o.BLOCKQUOTE:case o.FIGCAPTION:{Z5(e,t);break}case o.LI:{r7(e);break}case o.DD:case o.DT:{n7(e,t);break}case o.H1:case o.H2:case o.H3:case o.H4:case o.H5:case o.H6:{a7(e);break}case o.BR:{u7(e);break}case o.BODY:{K5(e,t);break}case o.HTML:{J5(e,t);break}case o.FORM:{e7(e);break}case o.APPLET:case o.OBJECT:case o.MARQUEE:{i7(e,t);break}case o.TEMPLATE:{Tr(e,t);break}default:vc(e,t)}}function Ac(e,t){e.tmplInsertionModeStack.length>0?Nc(e,t):Pi(e,t)}function s7(e,t){var r;t.tagID===o.SCRIPT&&((r=e.scriptHandler)===null||r===void 0||r.call(e,e.openElements.current)),e.openElements.pop(),e.insertionMode=e.originalInsertionMode}function l7(e,t){e._err(t,P.eofInElementThatCanContainOnlyText),e.openElements.pop(),e.insertionMode=e.originalInsertionMode,e.onEof(t)}function ba(e,t){if(e.openElements.currentTagId!==void 0&&bc.has(e.openElements.currentTagId))switch(e.pendingCharacterTokens.length=0,e.hasNonWhitespacePendingCharacterToken=!1,e.originalInsertionMode=e.insertionMode,e.insertionMode=k.IN_TABLE_TEXT,t.type){case de.CHARACTER:{Sc(e,t);break}case de.WHITESPACE_CHARACTER:{kc(e,t);break}}else wn(e,t)}function o7(e,t){e.openElements.clearBackToTableContext(),e.activeFormattingElements.insertMarker(),e._insertElement(t,H.HTML),e.insertionMode=k.IN_CAPTION}function c7(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,H.HTML),e.insertionMode=k.IN_COLUMN_GROUP}function h7(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(O.COLGROUP,o.COLGROUP),e.insertionMode=k.IN_COLUMN_GROUP,Bi(e,t)}function d7(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,H.HTML),e.insertionMode=k.IN_TABLE_BODY}function f7(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(O.TBODY,o.TBODY),e.insertionMode=k.IN_TABLE_BODY,O0(e,t)}function m7(e,t){e.openElements.hasInTableScope(o.TABLE)&&(e.openElements.popUntilTagNamePopped(o.TABLE),e._resetInsertionMode(),e._processStartTag(t))}function p7(e,t){yc(t)?e._appendElement(t,H.HTML):wn(e,t),t.ackSelfClosing=!0}function g7(e,t){!e.formElement&&e.openElements.tmplCount===0&&(e._insertElement(t,H.HTML),e.formElement=e.openElements.current,e.openElements.pop())}function Rr(e,t){switch(t.tagID){case o.TD:case o.TH:case o.TR:{f7(e,t);break}case o.STYLE:case o.SCRIPT:case o.TEMPLATE:{yt(e,t);break}case o.COL:{h7(e,t);break}case o.FORM:{g7(e,t);break}case o.TABLE:{m7(e,t);break}case o.TBODY:case o.TFOOT:case o.THEAD:{d7(e,t);break}case o.INPUT:{p7(e,t);break}case o.CAPTION:{o7(e,t);break}case o.COLGROUP:{c7(e,t);break}default:wn(e,t)}}function En(e,t){switch(t.tagID){case o.TABLE:{e.openElements.hasInTableScope(o.TABLE)&&(e.openElements.popUntilTagNamePopped(o.TABLE),e._resetInsertionMode());break}case o.TEMPLATE:{Tr(e,t);break}case o.BODY:case o.CAPTION:case o.COL:case o.COLGROUP:case o.HTML:case o.TBODY:case o.TD:case o.TFOOT:case o.TH:case o.THEAD:case o.TR:break;default:wn(e,t)}}function wn(e,t){const r=e.fosterParentingEnabled;e.fosterParentingEnabled=!0,N0(e,t),e.fosterParentingEnabled=r}function kc(e,t){e.pendingCharacterTokens.push(t)}function Sc(e,t){e.pendingCharacterTokens.push(t),e.hasNonWhitespacePendingCharacterToken=!0}function en(e,t){let r=0;if(e.hasNonWhitespacePendingCharacterToken)for(;r0&&e.openElements.currentTagId===o.OPTION&&e.openElements.tagIDs[e.openElements.stackTop-1]===o.OPTGROUP&&e.openElements.pop(),e.openElements.currentTagId===o.OPTGROUP&&e.openElements.pop();break}case o.OPTION:{e.openElements.currentTagId===o.OPTION&&e.openElements.pop();break}case o.SELECT:{e.openElements.hasInSelectScope(o.SELECT)&&(e.openElements.popUntilTagNamePopped(o.SELECT),e._resetInsertionMode());break}case o.TEMPLATE:{Tr(e,t);break}}}function v7(e,t){const r=t.tagID;r===o.CAPTION||r===o.TABLE||r===o.TBODY||r===o.TFOOT||r===o.THEAD||r===o.TR||r===o.TD||r===o.TH?(e.openElements.popUntilTagNamePopped(o.SELECT),e._resetInsertionMode(),e._processStartTag(t)):_c(e,t)}function A7(e,t){const r=t.tagID;r===o.CAPTION||r===o.TABLE||r===o.TBODY||r===o.TFOOT||r===o.THEAD||r===o.TR||r===o.TD||r===o.TH?e.openElements.hasInTableScope(r)&&(e.openElements.popUntilTagNamePopped(o.SELECT),e._resetInsertionMode(),e.onEndTag(t)):Ic(e,t)}function k7(e,t){switch(t.tagID){case o.BASE:case o.BASEFONT:case o.BGSOUND:case o.LINK:case o.META:case o.NOFRAMES:case o.SCRIPT:case o.STYLE:case o.TEMPLATE:case o.TITLE:{yt(e,t);break}case o.CAPTION:case o.COLGROUP:case o.TBODY:case o.TFOOT:case o.THEAD:{e.tmplInsertionModeStack[0]=k.IN_TABLE,e.insertionMode=k.IN_TABLE,Rr(e,t);break}case o.COL:{e.tmplInsertionModeStack[0]=k.IN_COLUMN_GROUP,e.insertionMode=k.IN_COLUMN_GROUP,Bi(e,t);break}case o.TR:{e.tmplInsertionModeStack[0]=k.IN_TABLE_BODY,e.insertionMode=k.IN_TABLE_BODY,O0(e,t);break}case o.TD:case o.TH:{e.tmplInsertionModeStack[0]=k.IN_ROW,e.insertionMode=k.IN_ROW,L0(e,t);break}default:e.tmplInsertionModeStack[0]=k.IN_BODY,e.insertionMode=k.IN_BODY,We(e,t)}}function S7(e,t){t.tagID===o.TEMPLATE&&Tr(e,t)}function Nc(e,t){e.openElements.tmplCount>0?(e.openElements.popUntilTagNamePopped(o.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e.tmplInsertionModeStack.shift(),e._resetInsertionMode(),e.onEof(t)):Pi(e,t)}function w7(e,t){t.tagID===o.HTML?We(e,t):o0(e,t)}function Dc(e,t){var r;if(t.tagID===o.HTML){if(e.fragmentContext||(e.insertionMode=k.AFTER_AFTER_BODY),e.options.sourceCodeLocationInfo&&e.openElements.tagIDs[0]===o.HTML){e._setEndLocation(e.openElements.items[0],t);const n=e.openElements.items[1];n&&!(!((r=e.treeAdapter.getNodeSourceCodeLocation(n))===null||r===void 0)&&r.endTag)&&e._setEndLocation(n,t)}}else o0(e,t)}function o0(e,t){e.insertionMode=k.IN_BODY,N0(e,t)}function C7(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.FRAMESET:{e._insertElement(t,H.HTML);break}case o.FRAME:{e._appendElement(t,H.HTML),t.ackSelfClosing=!0;break}case o.NOFRAMES:{yt(e,t);break}}}function _7(e,t){t.tagID===o.FRAMESET&&!e.openElements.isRootHtmlElementCurrent()&&(e.openElements.pop(),!e.fragmentContext&&e.openElements.currentTagId!==o.FRAMESET&&(e.insertionMode=k.AFTER_FRAMESET))}function I7(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.NOFRAMES:{yt(e,t);break}}}function N7(e,t){t.tagID===o.HTML&&(e.insertionMode=k.AFTER_AFTER_FRAMESET)}function D7(e,t){t.tagID===o.HTML?We(e,t):Jn(e,t)}function Jn(e,t){e.insertionMode=k.IN_BODY,N0(e,t)}function O7(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.NOFRAMES:{yt(e,t);break}}}function L7(e,t){t.chars=Se,e._insertCharacters(t)}function R7(e,t){e._insertCharacters(t),e.framesetOk=!1}function Oc(e){for(;e.treeAdapter.getNamespaceURI(e.openElements.current)!==H.HTML&&e.openElements.currentTagId!==void 0&&!e._isIntegrationPoint(e.openElements.currentTagId,e.openElements.current);)e.openElements.pop()}function M7(e,t){if(Qp(t))Oc(e),e._startTagOutsideForeignContent(t);else{const r=e._getAdjustedCurrentElement(),n=e.treeAdapter.getNamespaceURI(r);n===H.MATHML?pc(t):n===H.SVG&&(Kp(t),gc(t)),Ri(t),t.selfClosing?e._appendElement(t,n):e._insertElement(t,n),t.ackSelfClosing=!0}}function P7(e,t){if(t.tagID===o.P||t.tagID===o.BR){Oc(e),e._endTagOutsideForeignContent(t);return}for(let r=e.openElements.stackTop;r>0;r--){const n=e.openElements.items[r];if(e.treeAdapter.getNamespaceURI(n)===H.HTML){e._endTagOutsideForeignContent(t);break}const a=e.treeAdapter.getTagName(n);if(a.toLowerCase()===t.tagName){t.tagName=a,e.openElements.shortenToLength(r);break}}}O.AREA,O.BASE,O.BASEFONT,O.BGSOUND,O.BR,O.COL,O.EMBED,O.FRAME,O.HR,O.IMG,O.INPUT,O.KEYGEN,O.LINK,O.META,O.PARAM,O.SOURCE,O.TRACK,O.WBR;const B7=/<(\/?)(iframe|noembed|noframes|plaintext|script|style|textarea|title|xmp)(?=[\t\n\f\r />])/gi,F7=new Set(["mdxFlowExpression","mdxJsxFlowElement","mdxJsxTextElement","mdxTextExpression","mdxjsEsm"]),Hs={sourceCodeLocationInfo:!0,scriptingEnabled:!1};function Lc(e,t){const r=X7(e),n=_l("type",{handlers:{root:H7,element:z7,text:U7,comment:Mc,doctype:q7,raw:G7},unknown:V7}),a={parser:r?new Ps(Hs):Ps.getFragmentParser(void 0,Hs),handle(s){n(s,a)},stitches:!1,options:t||{}};n(e,a),Yr(a,_t());const i=r?a.parser.document:a.parser.getFragment(),u=$6(i,{file:a.options.file});return a.stitches&&b0(u,"comment",function(s,l,c){const d=s;if(d.value.stitch&&c&&l!==void 0){const f=c.children;return f[l]=d.value.stitch,l}}),u.type==="root"&&u.children.length===1&&u.children[0].type===e.type?u.children[0]:u}function Rc(e,t){let r=-1;if(e)for(;++r4&&(t.parser.tokenizer.state=0);const r={type:de.CHARACTER,chars:e.value,location:Cn(e)};Yr(t,_t(e)),t.parser.currentToken=r,t.parser._processToken(t.parser.currentToken)}function q7(e,t){const r={type:de.DOCTYPE,name:"html",forceQuirks:!1,publicId:"",systemId:"",location:Cn(e)};Yr(t,_t(e)),t.parser.currentToken=r,t.parser._processToken(t.parser.currentToken)}function Y7(e,t){t.stitches=!0;const r=$7(e);if("children"in e&&"children"in r){const n=Lc({type:"root",children:e.children},t.options);r.children=n.children}Mc({type:"comment",value:{stitch:r}},t)}function Mc(e,t){const r=e.value,n={type:de.COMMENT,data:r,location:Cn(e)};Yr(t,_t(e)),t.parser.currentToken=n,t.parser._processToken(t.parser.currentToken)}function G7(e,t){if(t.parser.tokenizer.preprocessor.html="",t.parser.tokenizer.preprocessor.pos=-1,t.parser.tokenizer.preprocessor.lastGapPos=-2,t.parser.tokenizer.preprocessor.gapStack=[],t.parser.tokenizer.preprocessor.skipNextNewLine=!1,t.parser.tokenizer.preprocessor.lastChunkWritten=!1,t.parser.tokenizer.preprocessor.endOfChunkHit=!1,t.parser.tokenizer.preprocessor.isEol=!1,Pc(t,_t(e)),t.parser.tokenizer.write(t.options.tagfilter?e.value.replace(B7,"<$1$2"):e.value,!1),t.parser.tokenizer._runParsingLoop(),t.parser.tokenizer.state===72||t.parser.tokenizer.state===78){t.parser.tokenizer.preprocessor.lastChunkWritten=!0;const r=t.parser.tokenizer._consume();t.parser.tokenizer._callState(r)}}function V7(e,t){const r=e;if(t.options.passThrough&&t.options.passThrough.includes(r.type))Y7(r,t);else{let n="";throw F7.has(r.type)&&(n=". It looks like you are using MDX nodes with `hast-util-raw` (or `rehype-raw`). If you use this because you are using remark or rehype plugins that inject `'html'` nodes, then please raise an issue with that plugin, as its a bad and slow idea. If you use this because you are using markdown syntax, then you have to configure this utility (or plugin) to pass through these nodes (see `passThrough` in docs), but you can also migrate to use the MDX syntax"),new Error("Cannot compile `"+r.type+"` node"+n)}}function Yr(e,t){Pc(e,t);const r=e.parser.tokenizer.currentCharacterToken;r&&r.location&&(r.location.endLine=e.parser.tokenizer.preprocessor.line,r.location.endCol=e.parser.tokenizer.preprocessor.col+1,r.location.endOffset=e.parser.tokenizer.preprocessor.offset+1,e.parser.currentToken=r,e.parser._processToken(e.parser.currentToken)),e.parser.tokenizer.paused=!1,e.parser.tokenizer.inLoop=!1,e.parser.tokenizer.active=!1,e.parser.tokenizer.returnState=De.DATA,e.parser.tokenizer.charRefCode=-1,e.parser.tokenizer.consumedAfterSnapshot=-1,e.parser.tokenizer.currentLocation=null,e.parser.tokenizer.currentCharacterToken=null,e.parser.tokenizer.currentToken=null,e.parser.tokenizer.currentAttr={name:"",value:""}}function Pc(e,t){if(t&&t.offset!==void 0){const r={startLine:t.line,startCol:t.column,startOffset:t.offset,endLine:-1,endCol:-1,endOffset:-1};e.parser.tokenizer.preprocessor.lineStartPos=-t.column+1,e.parser.tokenizer.preprocessor.droppedBufferSize=t.offset,e.parser.tokenizer.preprocessor.line=t.line,e.parser.tokenizer.currentLocation=r}}function j7(e,t){const r=e.tagName.toLowerCase();if(t.parser.tokenizer.state===De.PLAINTEXT)return;Yr(t,_t(e));const n=t.parser.openElements.current;let a="namespaceURI"in n?n.namespaceURI:Ct.html;a===Ct.html&&r==="svg"&&(a=Ct.svg);const i=ep({...e,children:[]},{space:a===Ct.svg?"svg":"html"}),u={type:de.START_TAG,tagName:r,tagID:qr(r),selfClosing:!1,ackSelfClosing:!1,attrs:"attrs"in i?i.attrs:[],location:Cn(e)};t.parser.currentToken=u,t.parser._processToken(t.parser.currentToken),t.parser.tokenizer.lastStartTagName=r}function W7(e,t){const r=e.tagName.toLowerCase();if(!t.parser.tokenizer.inForeignNode&&lp.includes(r)||t.parser.tokenizer.state===De.PLAINTEXT)return;Yr(t,d0(e));const n={type:de.END_TAG,tagName:r,tagID:qr(r),selfClosing:!1,ackSelfClosing:!1,attrs:[],location:Cn(e)};t.parser.currentToken=n,t.parser._processToken(t.parser.currentToken),r===t.parser.tokenizer.lastStartTagName&&(t.parser.tokenizer.state===De.RCDATA||t.parser.tokenizer.state===De.RAWTEXT||t.parser.tokenizer.state===De.SCRIPT_DATA)&&(t.parser.tokenizer.state=De.DATA)}function X7(e){const t=e.type==="root"?e.children[0]:e;return!!(t&&(t.type==="doctype"||t.type==="element"&&t.tagName.toLowerCase()==="html"))}function Cn(e){const t=_t(e)||{line:void 0,column:void 0,offset:void 0},r=d0(e)||{line:void 0,column:void 0,offset:void 0};return{startLine:t.line,startCol:t.column,startOffset:t.offset,endLine:r.line,endCol:r.column,endOffset:r.offset}}function $7(e){return"children"in e?Nr({...e,children:[]}):Nr(e)}function Q7(e){return function(t,r){return Lc(t,{...e,file:r})}}function c0(e){return typeof e=="string"?e:typeof e=="number"?String(e):e?Array.isArray(e)?e.map(c0).join(""):typeof e=="object"&&"props"in e?c0(e.props.children):"":""}function K7(e){return e.replace(/\$[^$]*\$/g,"").replace(/\\[a-zA-Z]+\{[^}]*\}/g,"").replace(/[\\{}]/g,"").toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")}function Sr(e){return function({children:r,...n}){const a=c0(r),i=n.id||K7(a);return pe.jsx(e,{...n,id:i,children:r})}}const J7={h1:Sr("h1"),h2:Sr("h2"),h3:Sr("h3"),h4:Sr("h4"),h5:Sr("h5"),h6:Sr("h6")};function a8(){const{id:e}=Bc(),t=zc.find(d=>d.id===e),[r,n]=Xr.useState(""),[a,i]=Xr.useState(null),[u,s]=Xr.useState(null);Xr.useEffect(()=>{if(!t)return;const d=new AbortController,f=t.filename;return fetch(`/blog/${f}`,{signal:d.signal}).then(g=>{if(!g.ok)throw new Error("Failed to load post");return g.text()}).then(g=>{const p=g.replace(/^\s*#[^#\n]*\r?\n/,"");n(p),i(f),s(null)}).catch(g=>{g instanceof DOMException&&g.name==="AbortError"||(console.error(g),i(f),s(f))}),()=>d.abort()},[t]);const l=!!(t&&a!==t.filename),c=!!(t&&u===t.filename);return Xr.useEffect(()=>{function d(f){const p=f.target.closest("a");if(!p)return;const x=p.getAttribute("href");if(!x||!x.startsWith("#"))return;f.preventDefault();const S=document.getElementById(x.slice(1));S&&(S.scrollIntoView({behavior:"smooth",block:"start"}),window.history.pushState(null,"",x))}return document.addEventListener("click",d),()=>document.removeEventListener("click",d)},[]),t?pe.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[pe.jsx(Fc,{title:`${t.title} - QECTOR Blog`,description:t.description}),pe.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[pe.jsx("div",{className:"absolute top-0 right-0 w-[800px] h-[800px] bg-cyan-900/10 blur-[120px] rounded-full pointer-events-none -translate-y-1/2 translate-x-1/3"}),pe.jsx("div",{className:"absolute bottom-0 left-0 w-[600px] h-[600px] bg-slate-800/20 blur-[100px] rounded-full pointer-events-none translate-y-1/3 -translate-x-1/3"}),pe.jsxs("div",{className:"max-w-4xl mx-auto px-6 relative z-10",children:[pe.jsxs(P0,{to:"/blog",className:"inline-flex items-center min-h-[44px] text-slate-400 hover:text-cyan-300 mb-12 transition-colors duration-300 font-medium tracking-wide",children:[pe.jsx(Uc,{size:18,className:"mr-2"}),"Back to All Articles"]}),pe.jsxs("header",{className:"mb-16 border-b border-slate-800/60 pb-10",children:[pe.jsxs("div",{className:"flex flex-wrap items-center text-cyan-300 mb-6 gap-4",children:[pe.jsxs("span",{className:"flex items-center text-sm font-semibold tracking-widest uppercase",children:[pe.jsx(qc,{size:16,className:"mr-2"}),t.date]}),pe.jsx("span",{className:"rounded-full border border-slate-700 px-3 py-1 text-xs font-semibold tracking-wider text-slate-400",children:t.category}),pe.jsxs("span",{className:"text-sm text-slate-400",children:["By ",pe.jsx(P0,{to:"/guillaume-lessard",className:"hover:text-cyan-300",children:"Guillaume Lessard"}),r?` · ${Math.max(1,Math.round(r.split(/\s+/).length/220))} min read`:""]})]}),pe.jsx("h1",{className:"text-4xl md:text-5xl lg:text-6xl font-extrabold tracking-tight mb-8 leading-tight text-white",children:t.title}),pe.jsx("p",{className:"text-xl text-slate-300 leading-relaxed max-w-3xl",children:t.description})]}),pe.jsx("div",{className:"bg-slate-900/40 backdrop-blur-md border border-slate-800/80 rounded-3xl p-8 md:p-12 shadow-2xl",children:l?pe.jsxs("div",{className:"flex flex-col items-center justify-center py-20 text-slate-400",children:[pe.jsx(Yc,{size:48,className:"animate-spin text-cyan-400 mb-4"}),pe.jsx("p",{className:"animate-pulse",children:"Loading article..."})]}):c?pe.jsx("div",{className:"py-20 text-center text-red-400",children:pe.jsx("p",{children:"Failed to load the article. Please try again later."})}):pe.jsx("article",{className:"prose prose-invert prose-cyan max-w-none prose-headings:font-bold prose-headings:tracking-tight prose-a:text-cyan-300 prose-a:no-underline hover:prose-a:underline prose-code:text-cyan-200 prose-code:bg-cyan-950/30 prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded-md prose-pre:bg-slate-950/80 prose-pre:border prose-pre:border-slate-800 prose-img:rounded-xl prose-img:border prose-img:border-slate-800",children:pe.jsx(Qf,{remarkPlugins:[l4,g6],rehypePlugins:[j6,Q7],components:{...J7,table:d=>{const{node:f,...g}=d;return pe.jsx("div",{className:"overflow-x-auto",children:pe.jsx("table",{...g})})},pre:d=>{const{children:f}=d,g=Fi.Children.toArray(f)[0];let p="",x="text";if(Fi.isValidElement(g)){const S=g.props,D=/language-([\w-]+)/.exec(S.className||"");D&&(x=D[1]),p=c0(S.children).replace(/\n$/,"")}return pe.jsx(Hc,{code:p,language:x,className:"not-prose"})},img:d=>{const f=d.width!=null&&d.height!=null;return pe.jsx("img",{...d,className:f?"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto":"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto aspect-video object-cover",loading:"lazy"})}},children:r})})})]})]})]}):pe.jsx("div",{className:"min-h-screen bg-slate-950 text-slate-50 flex items-center justify-center",children:pe.jsxs("div",{className:"text-center",children:[pe.jsx("h1",{className:"text-4xl font-bold mb-4",children:"Post Not Found"}),pe.jsx(P0,{to:"/blog",className:"text-cyan-300 hover:text-cyan-200",children:"Return to Blog"})]})})}export{a8 as default}; diff --git a/assets/BlogPost-dRWncRqa.css b/assets/BlogPost-dRWncRqa.css deleted file mode 100644 index 7018f44a..00000000 --- a/assets/BlogPost-dRWncRqa.css +++ /dev/null @@ -1 +0,0 @@ -@font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2) format("woff2"),url(/assets/KaTeX_AMS-Regular-DMm9YOAa.woff) format("woff"),url(/assets/KaTeX_AMS-Regular-DRggAlZN.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff) format("woff"),url(/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff) format("woff"),url(/assets/KaTeX_Fraktur-Regular-CB_wures.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Main-Bold-Cx986IdX.woff2) format("woff2"),url(/assets/KaTeX_Main-Bold-Jm3AIy58.woff) format("woff"),url(/assets/KaTeX_Main-Bold-waoOVXN0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2) format("woff2"),url(/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff) format("woff"),url(/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2) format("woff2"),url(/assets/KaTeX_Main-Italic-BMLOBm91.woff) format("woff"),url(/assets/KaTeX_Main-Italic-3WenGoN9.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Main-Regular-B22Nviop.woff2) format("woff2"),url(/assets/KaTeX_Main-Regular-Dr94JaBh.woff) format("woff"),url(/assets/KaTeX_Main-Regular-ypZvNtVU.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2) format("woff2"),url(/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff) format("woff"),url(/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Math-Italic-t53AETM-.woff2) format("woff2"),url(/assets/KaTeX_Math-Italic-DA0__PXp.woff) format("woff"),url(/assets/KaTeX_Math-Italic-flOr_0UB.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff) format("woff"),url(/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff) format("woff"),url(/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff) format("woff"),url(/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Script-Regular-D3wIWfF6.woff2) format("woff2"),url(/assets/KaTeX_Script-Regular-D5yQViql.woff) format("woff"),url(/assets/KaTeX_Script-Regular-C5JkGWo-.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2) format("woff2"),url(/assets/KaTeX_Size1-Regular-C195tn64.woff) format("woff"),url(/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2) format("woff2"),url(/assets/KaTeX_Size2-Regular-oD1tc_U0.woff) format("woff"),url(/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(/assets/KaTeX_Size3-Regular-CTq5MqoE.woff) format("woff"),url(/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2) format("woff2"),url(/assets/KaTeX_Size4-Regular-BF-4gkZK.woff) format("woff"),url(/assets/KaTeX_Size4-Regular-DWFBv043.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2) format("woff2"),url(/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff) format("woff"),url(/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf) format("truetype")}.katex{font: 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;position:relative;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.47"}.katex .katex-mathml{border:0;clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .smash{display:inline;line-height:0}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex svg{fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo} diff --git a/assets/BlogPost-fQplgej1.js b/assets/BlogPost-fQplgej1.js deleted file mode 100644 index 5253a632..00000000 --- a/assets/BlogPost-fQplgej1.js +++ /dev/null @@ -1 +0,0 @@ -import{r as d,j as e,R as j}from"./vendor-react-BiHfrq0e.js";import{S as k,C as E}from"./index-_BpMZhV3.js";import{b as C}from"./blogData-OjR2ZtNr.js";import{M as A,r as L,a as B,b as P,c as z}from"./vendor-md-CLKxNZoa.js";import{C as F,L as y}from"./vendor-PiU4YGcH.js";import{m as S,k as $,n as R}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function u(t){return typeof t=="string"?t:typeof t=="number"?String(t):t?Array.isArray(t)?t.map(u).join(""):typeof t=="object"&&"props"in t?u(t.props.children):"":""}function M(t){return t.replace(/\$[^$]*\$/g,"").replace(/\\[a-zA-Z]+\{[^}]*\}/g,"").replace(/[\\{}]/g,"").toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")}function i(t){return function({children:x,...m}){const h=u(x),p=m.id||M(h);return e.jsx(t,{...m,id:p,children:x})}}const I={h1:i("h1"),h2:i("h2"),h3:i("h3"),h4:i("h4"),h5:i("h5"),h6:i("h6")};function G(){const{id:t}=F(),r=C.find(s=>s.id===t),[x,m]=d.useState(""),[h,p]=d.useState(null),[w,f]=d.useState(null);d.useEffect(()=>{if(!r)return;const s=new AbortController,n=r.filename;return fetch(`/blog/${n}`,{signal:s.signal}).then(a=>{if(!a.ok)throw new Error("Failed to load post");return a.text()}).then(a=>{const o=a.replace(/^\s*#[^#\n]*\r?\n/,"");m(o),p(n),f(null)}).catch(a=>{a instanceof DOMException&&a.name==="AbortError"||(console.error(a),p(n),f(n))}),()=>s.abort()},[r]);const v=!!(r&&h!==r.filename),N=!!(r&&w===r.filename);return d.useEffect(()=>{function s(n){const o=n.target.closest("a");if(!o)return;const l=o.getAttribute("href");if(!l||!l.startsWith("#"))return;n.preventDefault();const c=document.getElementById(l.slice(1));c&&(c.scrollIntoView({behavior:"smooth",block:"start"}),window.history.pushState(null,"",l))}return document.addEventListener("click",s),()=>document.removeEventListener("click",s)},[]),r?e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(k,{title:`${r.title} - QECTOR Blog`,description:r.description}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 right-0 w-[800px] h-[800px] bg-cyan-900/10 blur-[120px] rounded-full pointer-events-none -translate-y-1/2 translate-x-1/3"}),e.jsx("div",{className:"absolute bottom-0 left-0 w-[600px] h-[600px] bg-slate-800/20 blur-[100px] rounded-full pointer-events-none translate-y-1/3 -translate-x-1/3"}),e.jsxs("div",{className:"max-w-4xl mx-auto px-6 relative z-10",children:[e.jsxs(y,{to:"/blog",className:"inline-flex items-center min-h-[44px] text-slate-400 hover:text-cyan-300 mb-12 transition-colors duration-300 font-medium tracking-wide",children:[e.jsx(S,{size:18,className:"mr-2"}),"Back to All Articles"]}),e.jsxs("header",{className:"mb-16 border-b border-slate-800/60 pb-10",children:[e.jsxs("div",{className:"flex flex-wrap items-center text-cyan-300 mb-6 gap-4",children:[e.jsxs("span",{className:"flex items-center text-sm font-semibold tracking-widest uppercase",children:[e.jsx($,{size:16,className:"mr-2"}),r.date]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-3 py-1 text-xs font-semibold tracking-wider text-slate-400",children:r.category})]}),e.jsx("h1",{className:"text-4xl md:text-5xl lg:text-6xl font-extrabold tracking-tight mb-8 leading-tight text-white",children:r.title}),e.jsx("p",{className:"text-xl text-slate-300 leading-relaxed max-w-3xl",children:r.description})]}),e.jsx("div",{className:"bg-slate-900/40 backdrop-blur-md border border-slate-800/80 rounded-3xl p-8 md:p-12 shadow-2xl",children:v?e.jsxs("div",{className:"flex flex-col items-center justify-center py-20 text-slate-400",children:[e.jsx(R,{size:48,className:"animate-spin text-cyan-400 mb-4"}),e.jsx("p",{className:"animate-pulse",children:"Loading article..."})]}):N?e.jsx("div",{className:"py-20 text-center text-red-400",children:e.jsx("p",{children:"Failed to load the article. Please try again later."})}):e.jsx("article",{className:"prose prose-invert prose-cyan max-w-none prose-headings:font-bold prose-headings:tracking-tight prose-a:text-cyan-300 prose-a:no-underline hover:prose-a:underline prose-code:text-cyan-200 prose-code:bg-cyan-950/30 prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded-md prose-pre:bg-slate-950/80 prose-pre:border prose-pre:border-slate-800 prose-img:rounded-xl prose-img:border prose-img:border-slate-800",children:e.jsx(A,{remarkPlugins:[P,z],rehypePlugins:[L,B],components:{...I,table:s=>{const{node:n,...a}=s;return e.jsx("div",{className:"overflow-x-auto",children:e.jsx("table",{...a})})},pre:s=>{const{node:n,children:a}=s,o=j.Children.toArray(a)[0];let l="",c="text";if(j.isValidElement(o)){const g=o.props,b=/language-([\w-]+)/.exec(g.className||"");b&&(c=b[1]),l=u(g.children).replace(/\n$/,"")}return e.jsx(E,{code:l,language:c,className:"not-prose"})},img:s=>{const n=s.width!=null&&s.height!=null;return e.jsx("img",{...s,className:n?"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto":"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto aspect-video object-cover",loading:"lazy"})}},children:x})})})]})]})]}):e.jsx("div",{className:"min-h-screen bg-slate-950 text-slate-50 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx("h1",{className:"text-4xl font-bold mb-4",children:"Post Not Found"}),e.jsx(y,{to:"/blog",className:"text-cyan-300 hover:text-cyan-200",children:"Return to Blog"})]})})}export{G as default}; diff --git a/assets/BlogPost-jAaJWhIm.js b/assets/BlogPost-jAaJWhIm.js deleted file mode 100644 index fa52279d..00000000 --- a/assets/BlogPost-jAaJWhIm.js +++ /dev/null @@ -1 +0,0 @@ -import{r as d,j as e,R as b}from"./vendor-react-BiHfrq0e.js";import{S as N,C as k}from"./index-CpdATiEY.js";import{b as E}from"./blogData-OjR2ZtNr.js";import{M as C,r as A,a as L,b as B,c as P}from"./vendor-md-CLKxNZoa.js";import{C as z,L as j}from"./vendor-PiU4YGcH.js";import{m as F,k as S,n as $}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function u(t){return typeof t=="string"?t:typeof t=="number"?String(t):t?Array.isArray(t)?t.map(u).join(""):typeof t=="object"&&"props"in t?u(t.props.children):"":""}function R(t){return t.replace(/\$[^$]*\$/g,"").replace(/\\[a-zA-Z]+\{[^}]*\}/g,"").replace(/[\\{}]/g,"").toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")}function i(t){return function({children:x,...m}){const h=u(x),p=m.id||R(h);return e.jsx(t,{...m,id:p,children:x})}}const M={h1:i("h1"),h2:i("h2"),h3:i("h3"),h4:i("h4"),h5:i("h5"),h6:i("h6")};function G(){const{id:t}=z(),r=E.find(s=>s.id===t),[x,m]=d.useState(""),[h,p]=d.useState(null),[y,f]=d.useState(null);d.useEffect(()=>{if(!r)return;const s=new AbortController,n=r.filename;return fetch(`/blog/${n}`,{signal:s.signal}).then(a=>{if(!a.ok)throw new Error("Failed to load post");return a.text()}).then(a=>{const o=a.replace(/^\s*#[^#\n]*\r?\n/,"");m(o),p(n),f(null)}).catch(a=>{a instanceof DOMException&&a.name==="AbortError"||(console.error(a),p(n),f(n))}),()=>s.abort()},[r]);const w=!!(r&&h!==r.filename),v=!!(r&&y===r.filename);return d.useEffect(()=>{function s(n){const o=n.target.closest("a");if(!o)return;const l=o.getAttribute("href");if(!l||!l.startsWith("#"))return;n.preventDefault();const c=document.getElementById(l.slice(1));c&&(c.scrollIntoView({behavior:"smooth",block:"start"}),window.history.pushState(null,"",l))}return document.addEventListener("click",s),()=>document.removeEventListener("click",s)},[]),r?e.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[e.jsx(N,{title:`${r.title} - QECTOR Blog`,description:r.description}),e.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 right-0 w-[800px] h-[800px] bg-cyan-900/10 blur-[120px] rounded-full pointer-events-none -translate-y-1/2 translate-x-1/3"}),e.jsx("div",{className:"absolute bottom-0 left-0 w-[600px] h-[600px] bg-slate-800/20 blur-[100px] rounded-full pointer-events-none translate-y-1/3 -translate-x-1/3"}),e.jsxs("div",{className:"max-w-4xl mx-auto px-6 relative z-10",children:[e.jsxs(j,{to:"/blog",className:"inline-flex items-center min-h-[44px] text-slate-400 hover:text-cyan-300 mb-12 transition-colors duration-300 font-medium tracking-wide",children:[e.jsx(F,{size:18,className:"mr-2"}),"Back to All Articles"]}),e.jsxs("header",{className:"mb-16 border-b border-slate-800/60 pb-10",children:[e.jsxs("div",{className:"flex flex-wrap items-center text-cyan-300 mb-6 gap-4",children:[e.jsxs("span",{className:"flex items-center text-sm font-semibold tracking-widest uppercase",children:[e.jsx(S,{size:16,className:"mr-2"}),r.date]}),e.jsx("span",{className:"rounded-full border border-slate-700 px-3 py-1 text-xs font-semibold tracking-wider text-slate-400",children:r.category})]}),e.jsx("h1",{className:"text-4xl md:text-5xl lg:text-6xl font-extrabold tracking-tight mb-8 leading-tight text-white",children:r.title}),e.jsx("p",{className:"text-xl text-slate-300 leading-relaxed max-w-3xl",children:r.description})]}),e.jsx("div",{className:"bg-slate-900/40 backdrop-blur-md border border-slate-800/80 rounded-3xl p-8 md:p-12 shadow-2xl",children:w?e.jsxs("div",{className:"flex flex-col items-center justify-center py-20 text-slate-400",children:[e.jsx($,{size:48,className:"animate-spin text-cyan-400 mb-4"}),e.jsx("p",{className:"animate-pulse",children:"Loading article..."})]}):v?e.jsx("div",{className:"py-20 text-center text-red-400",children:e.jsx("p",{children:"Failed to load the article. Please try again later."})}):e.jsx("article",{className:"prose prose-invert prose-cyan max-w-none prose-headings:font-bold prose-headings:tracking-tight prose-a:text-cyan-300 prose-a:no-underline hover:prose-a:underline prose-code:text-cyan-200 prose-code:bg-cyan-950/30 prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded-md prose-pre:bg-slate-950/80 prose-pre:border prose-pre:border-slate-800 prose-img:rounded-xl prose-img:border prose-img:border-slate-800",children:e.jsx(C,{remarkPlugins:[B,P],rehypePlugins:[A,L],components:{...M,table:s=>{const{node:n,...a}=s;return e.jsx("div",{className:"overflow-x-auto",children:e.jsx("table",{...a})})},pre:s=>{const{children:n}=s,a=b.Children.toArray(n)[0];let o="",l="text";if(b.isValidElement(a)){const c=a.props,g=/language-([\w-]+)/.exec(c.className||"");g&&(l=g[1]),o=u(c.children).replace(/\n$/,"")}return e.jsx(k,{code:o,language:l,className:"not-prose"})},img:s=>{const n=s.width!=null&&s.height!=null;return e.jsx("img",{...s,className:n?"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto":"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto aspect-video object-cover",loading:"lazy"})}},children:x})})})]})]})]}):e.jsx("div",{className:"min-h-screen bg-slate-950 text-slate-50 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx("h1",{className:"text-4xl font-bold mb-4",children:"Post Not Found"}),e.jsx(j,{to:"/blog",className:"text-cyan-300 hover:text-cyan-200",children:"Return to Blog"})]})})}export{G as default}; diff --git a/assets/BlogPost-rTIQ9Y3E.js b/assets/BlogPost-rTIQ9Y3E.js deleted file mode 100644 index 86b0a5cd..00000000 --- a/assets/BlogPost-rTIQ9Y3E.js +++ /dev/null @@ -1,292 +0,0 @@ -import{g as zs,j as pe,r as Xr,R as Fi}from"./vendor-react-BiHfrq0e.js";import{b as Bc,L as P0,S as Fc,C as Hc}from"./index-c1PDYu0j.js";import{b as zc}from"./blogData-OjR2ZtNr.js";import{m as Uc,k as qc,n as Yc}from"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";function Hi(e){const t=[],r=String(e||"");let n=r.indexOf(","),a=0,i=!1;for(;!i;){n===-1&&(n=r.length,i=!0);const u=r.slice(a,n).trim();(u||!i)&&t.push(u),a=n+1,n=r.indexOf(",",a)}return t}function Us(e,t){const r={};return(e[e.length-1]===""?[...e,""]:e).join((r.padRight?" ":"")+","+(r.padLeft===!1?"":" ")).trim()}const Gc=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,Vc=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,jc={};function zi(e,t){return(jc.jsx?Vc:Gc).test(e)}const Wc=/[ \t\n\f\r]/g;function Xc(e){return typeof e=="object"?e.type==="text"?Ui(e.value):!1:Ui(e)}function Ui(e){return e.replace(Wc,"")===""}class Tn{constructor(t,r,n){this.normal=r,this.property=t,n&&(this.space=n)}}Tn.prototype.normal={};Tn.prototype.property={};Tn.prototype.space=void 0;function qs(e,t){const r={},n={};for(const a of e)Object.assign(r,a.property),Object.assign(n,a.normal);return new Tn(r,n,t)}function fn(e){return e.toLowerCase()}class nt{constructor(t,r){this.attribute=r,this.property=t}}nt.prototype.attribute="";nt.prototype.booleanish=!1;nt.prototype.boolean=!1;nt.prototype.commaOrSpaceSeparated=!1;nt.prototype.commaSeparated=!1;nt.prototype.defined=!1;nt.prototype.mustUseProperty=!1;nt.prototype.number=!1;nt.prototype.overloadedBoolean=!1;nt.prototype.property="";nt.prototype.spaceSeparated=!1;nt.prototype.space=void 0;let $c=0;const le=gr(),Le=gr(),Ea=gr(),q=gr(),ye=gr(),fr=gr(),st=gr();function gr(){return 2**++$c}const Ta=Object.freeze(Object.defineProperty({__proto__:null,boolean:le,booleanish:Le,commaOrSpaceSeparated:st,commaSeparated:fr,number:q,overloadedBoolean:Ea,spaceSeparated:ye},Symbol.toStringTag,{value:"Module"})),B0=Object.keys(Ta);class Za extends nt{constructor(t,r,n,a){let i=-1;if(super(t,r),qi(this,"space",a),typeof n=="number")for(;++i4&&r.slice(0,4)==="data"&&e1.test(t)){if(t.charAt(4)==="-"){const i=t.slice(5).replace(Yi,r1);n="data"+i.charAt(0).toUpperCase()+i.slice(1)}else{const i=t.slice(4);if(!Yi.test(i)){let u=i.replace(Zc,t1);u.charAt(0)!=="-"&&(u="-"+u),t="data"+u}}a=Za}return new a(n,t)}function t1(e){return"-"+e.toLowerCase()}function r1(e){return e.charAt(1).toUpperCase()}const xn=qs([Ys,Qc,js,Ws,Xs],"html"),rr=qs([Ys,Kc,js,Ws,Xs],"svg");function Gi(e){const t=String(e||"").trim();return t?t.split(/[ \t\n\r\f]+/g):[]}function $s(e){return e.join(" ").trim()}var Ar={},F0,Vi;function n1(){if(Vi)return F0;Vi=1;var e=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,t=/\n/g,r=/^\s*/,n=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,a=/^:\s*/,i=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,u=/^[;\s]*/,s=/^\s+|\s+$/g,l=` -`,c="/",d="*",f="",g="comment",p="declaration";function x(D,_){if(typeof D!="string")throw new TypeError("First argument must be a string");if(!D)return[];_=_||{};var N=1,M=1;function W(ne){var X=ne.match(t);X&&(N+=X.length);var me=ne.lastIndexOf(l);M=~me?ne.length-me:M+ne.length}function j(){var ne={line:N,column:M};return function(X){return X.position=new L(ne),K(),X}}function L(ne){this.start=ne,this.end={line:N,column:M},this.source=_.source}L.prototype.content=D;function ee(ne){var X=new Error(_.source+":"+N+":"+M+": "+ne);if(X.reason=ne,X.filename=_.source,X.line=N,X.column=M,X.source=D,!_.silent)throw X}function re(ne){var X=ne.exec(D);if(X){var me=X[0];return W(me),D=D.slice(me.length),X}}function K(){re(r)}function R(ne){var X;for(ne=ne||[];X=J();)X!==!1&&ne.push(X);return ne}function J(){var ne=j();if(!(c!=D.charAt(0)||d!=D.charAt(1))){for(var X=2;f!=D.charAt(X)&&(d!=D.charAt(X)||c!=D.charAt(X+1));)++X;if(X+=2,f===D.charAt(X-1))return ee("End of comment missing");var me=D.slice(2,X-2);return M+=2,W(me),D=D.slice(X),M+=2,ne({type:g,comment:me})}}function Q(){var ne=j(),X=re(n);if(X){if(J(),!re(a))return ee("property missing ':'");var me=re(i),ke=ne({type:p,property:S(X[0].replace(e,f)),value:me?S(me[0].replace(e,f)):f});return re(u),ke}}function be(){var ne=[];R(ne);for(var X;X=Q();)X!==!1&&(ne.push(X),R(ne));return ne}return K(),be()}function S(D){return D?D.replace(s,f):f}return F0=x,F0}var ji;function a1(){if(ji)return Ar;ji=1;var e=Ar&&Ar.__importDefault||function(n){return n&&n.__esModule?n:{default:n}};Object.defineProperty(Ar,"__esModule",{value:!0}),Ar.default=r;const t=e(n1());function r(n,a){let i=null;if(!n||typeof n!="string")return i;const u=(0,t.default)(n),s=typeof a=="function";return u.forEach(l=>{if(l.type!=="declaration")return;const{property:c,value:d}=l;s?a(c,d,l):d&&(i=i||{},i[c]=d)}),i}return Ar}var $r={},Wi;function i1(){if(Wi)return $r;Wi=1,Object.defineProperty($r,"__esModule",{value:!0}),$r.camelCase=void 0;var e=/^--[a-zA-Z0-9_-]+$/,t=/-([a-z])/g,r=/^[^-]+$/,n=/^-(webkit|moz|ms|o|khtml)-/,a=/^-(ms)-/,i=function(c){return!c||r.test(c)||e.test(c)},u=function(c,d){return d.toUpperCase()},s=function(c,d){return"".concat(d,"-")},l=function(c,d){return d===void 0&&(d={}),i(c)?c:(c=c.toLowerCase(),d.reactCompat?c=c.replace(a,s):c=c.replace(n,s),c.replace(t,u))};return $r.camelCase=l,$r}var Qr,Xi;function u1(){if(Xi)return Qr;Xi=1;var e=Qr&&Qr.__importDefault||function(a){return a&&a.__esModule?a:{default:a}},t=e(a1()),r=i1();function n(a,i){var u={};return!a||typeof a!="string"||(0,t.default)(a,function(s,l){s&&l&&(u[(0,r.camelCase)(s,i)]=l)}),u}return n.default=n,Qr=n,Qr}var s1=u1();const l1=zs(s1),d0=Qs("end"),_t=Qs("start");function Qs(e){return t;function t(r){const n=r&&r.position&&r.position[e]||{};if(typeof n.line=="number"&&n.line>0&&typeof n.column=="number"&&n.column>0)return{line:n.line,column:n.column,offset:typeof n.offset=="number"&&n.offset>-1?n.offset:void 0}}}function o1(e){const t=_t(e),r=d0(e);if(t&&r)return{start:t,end:r}}function nn(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?$i(e.position):"start"in e||"end"in e?$i(e):"line"in e||"column"in e?xa(e):""}function xa(e){return Qi(e&&e.line)+":"+Qi(e&&e.column)}function $i(e){return xa(e&&e.start)+"-"+xa(e&&e.end)}function Qi(e){return e&&typeof e=="number"?e:1}class je extends Error{constructor(t,r,n){super(),typeof r=="string"&&(n=r,r=void 0);let a="",i={},u=!1;if(r&&("line"in r&&"column"in r?i={place:r}:"start"in r&&"end"in r?i={place:r}:"type"in r?i={ancestors:[r],place:r.position}:i={...r}),typeof t=="string"?a=t:!i.cause&&t&&(u=!0,a=t.message,i.cause=t),!i.ruleId&&!i.source&&typeof n=="string"){const l=n.indexOf(":");l===-1?i.ruleId=n:(i.source=n.slice(0,l),i.ruleId=n.slice(l+1))}if(!i.place&&i.ancestors&&i.ancestors){const l=i.ancestors[i.ancestors.length-1];l&&(i.place=l.position)}const s=i.place&&"start"in i.place?i.place.start:i.place;this.ancestors=i.ancestors||void 0,this.cause=i.cause||void 0,this.column=s?s.column:void 0,this.fatal=void 0,this.file="",this.message=a,this.line=s?s.line:void 0,this.name=nn(i.place)||"1:1",this.place=i.place||void 0,this.reason=this.message,this.ruleId=i.ruleId||void 0,this.source=i.source||void 0,this.stack=u&&i.cause&&typeof i.cause.stack=="string"?i.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}}je.prototype.file="";je.prototype.name="";je.prototype.reason="";je.prototype.message="";je.prototype.stack="";je.prototype.column=void 0;je.prototype.line=void 0;je.prototype.ancestors=void 0;je.prototype.cause=void 0;je.prototype.fatal=void 0;je.prototype.place=void 0;je.prototype.ruleId=void 0;je.prototype.source=void 0;const ei={}.hasOwnProperty,c1=new Map,h1=/[A-Z]/g,d1=new Set(["table","tbody","thead","tfoot","tr"]),f1=new Set(["td","th"]),Ks="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function m1(e,t){if(!t||t.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const r=t.filePath||void 0;let n;if(t.development){if(typeof t.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");n=v1(r,t.jsxDEV)}else{if(typeof t.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof t.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");n=y1(r,t.jsx,t.jsxs)}const a={Fragment:t.Fragment,ancestors:[],components:t.components||{},create:n,elementAttributeNameCase:t.elementAttributeNameCase||"react",evaluater:t.createEvaluater?t.createEvaluater():void 0,filePath:r,ignoreInvalidStyle:t.ignoreInvalidStyle||!1,passKeys:t.passKeys!==!1,passNode:t.passNode||!1,schema:t.space==="svg"?rr:xn,stylePropertyNameCase:t.stylePropertyNameCase||"dom",tableCellAlignToStyle:t.tableCellAlignToStyle!==!1},i=Js(a,e,void 0);return i&&typeof i!="string"?i:a.create(e,a.Fragment,{children:i||void 0},void 0)}function Js(e,t,r){if(t.type==="element")return p1(e,t,r);if(t.type==="mdxFlowExpression"||t.type==="mdxTextExpression")return g1(e,t);if(t.type==="mdxJsxFlowElement"||t.type==="mdxJsxTextElement")return E1(e,t,r);if(t.type==="mdxjsEsm")return b1(e,t);if(t.type==="root")return T1(e,t,r);if(t.type==="text")return x1(e,t)}function p1(e,t,r){const n=e.schema;let a=n;t.tagName.toLowerCase()==="svg"&&n.space==="html"&&(a=rr,e.schema=a),e.ancestors.push(t);const i=el(e,t.tagName,!1),u=A1(e,t);let s=ri(e,t);return d1.has(t.tagName)&&(s=s.filter(function(l){return typeof l=="string"?!Xc(l):!0})),Zs(e,u,i,t),ti(u,s),e.ancestors.pop(),e.schema=n,e.create(t,i,u,r)}function g1(e,t){if(t.data&&t.data.estree&&e.evaluater){const n=t.data.estree.body[0];return n.type,e.evaluater.evaluateExpression(n.expression)}mn(e,t.position)}function b1(e,t){if(t.data&&t.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(t.data.estree);mn(e,t.position)}function E1(e,t,r){const n=e.schema;let a=n;t.name==="svg"&&n.space==="html"&&(a=rr,e.schema=a),e.ancestors.push(t);const i=t.name===null?e.Fragment:el(e,t.name,!0),u=k1(e,t),s=ri(e,t);return Zs(e,u,i,t),ti(u,s),e.ancestors.pop(),e.schema=n,e.create(t,i,u,r)}function T1(e,t,r){const n={};return ti(n,ri(e,t)),e.create(t,e.Fragment,n,r)}function x1(e,t){return t.value}function Zs(e,t,r,n){typeof r!="string"&&r!==e.Fragment&&e.passNode&&(t.node=n)}function ti(e,t){if(t.length>0){const r=t.length>1?t:t[0];r&&(e.children=r)}}function y1(e,t,r){return n;function n(a,i,u,s){const c=Array.isArray(u.children)?r:t;return s?c(i,u,s):c(i,u)}}function v1(e,t){return r;function r(n,a,i,u){const s=Array.isArray(i.children),l=_t(n);return t(a,i,u,s,{columnNumber:l?l.column-1:void 0,fileName:e,lineNumber:l?l.line:void 0},void 0)}}function A1(e,t){const r={};let n,a;for(a in t.properties)if(a!=="children"&&ei.call(t.properties,a)){const i=S1(e,a,t.properties[a]);if(i){const[u,s]=i;e.tableCellAlignToStyle&&u==="align"&&typeof s=="string"&&f1.has(t.tagName)?n=s:r[u]=s}}if(n){const i=r.style||(r.style={});i[e.stylePropertyNameCase==="css"?"text-align":"textAlign"]=n}return r}function k1(e,t){const r={};for(const n of t.attributes)if(n.type==="mdxJsxExpressionAttribute")if(n.data&&n.data.estree&&e.evaluater){const i=n.data.estree.body[0];i.type;const u=i.expression;u.type;const s=u.properties[0];s.type,Object.assign(r,e.evaluater.evaluateExpression(s.argument))}else mn(e,t.position);else{const a=n.name;let i;if(n.value&&typeof n.value=="object")if(n.value.data&&n.value.data.estree&&e.evaluater){const s=n.value.data.estree.body[0];s.type,i=e.evaluater.evaluateExpression(s.expression)}else mn(e,t.position);else i=n.value===null?!0:n.value;r[a]=i}return r}function ri(e,t){const r=[];let n=-1;const a=e.passKeys?new Map:c1;for(;++na?0:a+t:t=t>a?a:t,r=r>0?r:0,n.length<1e4)u=Array.from(n),u.unshift(t,r),e.splice(...u);else for(r&&e.splice(t,r);i0?(lt(e,e.length,0,t),e):t}const Zi={}.hasOwnProperty;function rl(e){const t={};let r=-1;for(;++r13&&r<32||r>126&&r<160||r>55295&&r<57344||r>64975&&r<65008||(r&65535)===65535||(r&65535)===65534||r>1114111?"�":String.fromCodePoint(r)}function xt(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const Ke=nr(/[A-Za-z]/),Ge=nr(/[\dA-Za-z]/),R1=nr(/[#-'*+\--9=?A-Z^-~]/);function Zn(e){return e!==null&&(e<32||e===127)}const ya=nr(/\d/),M1=nr(/[\dA-Fa-f]/),P1=nr(/[!-/:-@[-`{-~]/);function ae(e){return e!==null&&e<-2}function ve(e){return e!==null&&(e<0||e===32)}function ge(e){return e===-2||e===-1||e===32}const f0=nr(new RegExp("\\p{P}|\\p{S}","u")),pr=nr(/\s/);function nr(e){return t;function t(r){return r!==null&&r>-1&&e.test(String.fromCharCode(r))}}function Pr(e){const t=[];let r=-1,n=0,a=0;for(;++r55295&&i<57344){const s=e.charCodeAt(r+1);i<56320&&s>56319&&s<57344?(u=String.fromCharCode(i,s),a=1):u="�"}else u=String.fromCharCode(i);u&&(t.push(e.slice(n,r),encodeURIComponent(u)),n=r+a+1,u=""),a&&(r+=a,a=0)}return t.join("")+e.slice(n)}function fe(e,t,r,n){const a=n?n-1:Number.POSITIVE_INFINITY;let i=0;return u;function u(l){return ge(l)?(e.enter(r),s(l)):t(l)}function s(l){return ge(l)&&i++u))return;const ee=t.events.length;let re=ee,K,R;for(;re--;)if(t.events[re][0]==="exit"&&t.events[re][1].type==="chunkFlow"){if(K){R=t.events[re][1].end;break}K=!0}for(_(n),L=ee;LM;){const j=r[W];t.containerState=j[1],j[0].exit.call(t,e)}r.length=M}function N(){a.write([null]),i=void 0,a=void 0,t.containerState._closeFlow=void 0}}function U1(e,t,r){return fe(e,e.attempt(this.parser.constructs.document,t,r),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function Ir(e){if(e===null||ve(e)||pr(e))return 1;if(f0(e))return 2}function m0(e,t,r){const n=[];let a=-1;for(;++a1&&e[r][1].end.offset-e[r][1].start.offset>1?2:1;const f={...e[n][1].end},g={...e[r][1].start};tu(f,-l),tu(g,l),u={type:l>1?"strongSequence":"emphasisSequence",start:f,end:{...e[n][1].end}},s={type:l>1?"strongSequence":"emphasisSequence",start:{...e[r][1].start},end:g},i={type:l>1?"strongText":"emphasisText",start:{...e[n][1].end},end:{...e[r][1].start}},a={type:l>1?"strong":"emphasis",start:{...u.start},end:{...s.end}},e[n][1].end={...u.start},e[r][1].start={...s.end},c=[],e[n][1].end.offset-e[n][1].start.offset&&(c=mt(c,[["enter",e[n][1],t],["exit",e[n][1],t]])),c=mt(c,[["enter",a,t],["enter",u,t],["exit",u,t],["enter",i,t]]),c=mt(c,m0(t.parser.constructs.insideSpan.null,e.slice(n+1,r),t)),c=mt(c,[["exit",i,t],["enter",s,t],["exit",s,t],["exit",a,t]]),e[r][1].end.offset-e[r][1].start.offset?(d=2,c=mt(c,[["enter",e[r][1],t],["exit",e[r][1],t]])):d=0,lt(e,n-1,r-n+3,c),r=n+c.length-d-2;break}}for(r=-1;++r0&&ge(L)?fe(e,N,"linePrefix",i+1)(L):N(L)}function N(L){return L===null||ae(L)?e.check(ru,S,W)(L):(e.enter("codeFlowValue"),M(L))}function M(L){return L===null||ae(L)?(e.exit("codeFlowValue"),N(L)):(e.consume(L),M)}function W(L){return e.exit("codeFenced"),t(L)}function j(L,ee,re){let K=0;return R;function R(X){return L.enter("lineEnding"),L.consume(X),L.exit("lineEnding"),J}function J(X){return L.enter("codeFencedFence"),ge(X)?fe(L,Q,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(X):Q(X)}function Q(X){return X===s?(L.enter("codeFencedFenceSequence"),be(X)):re(X)}function be(X){return X===s?(K++,L.consume(X),be):K>=u?(L.exit("codeFencedFenceSequence"),ge(X)?fe(L,ne,"whitespace")(X):ne(X)):re(X)}function ne(X){return X===null||ae(X)?(L.exit("codeFencedFence"),ee(X)):re(X)}}}function Z1(e,t,r){const n=this;return a;function a(u){return u===null?r(u):(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),i)}function i(u){return n.parser.lazy[n.now().line]?r(u):t(u)}}const z0={name:"codeIndented",tokenize:th},eh={partial:!0,tokenize:rh};function th(e,t,r){const n=this;return a;function a(c){return e.enter("codeIndented"),fe(e,i,"linePrefix",5)(c)}function i(c){const d=n.events[n.events.length-1];return d&&d[1].type==="linePrefix"&&d[2].sliceSerialize(d[1],!0).length>=4?u(c):r(c)}function u(c){return c===null?l(c):ae(c)?e.attempt(eh,u,l)(c):(e.enter("codeFlowValue"),s(c))}function s(c){return c===null||ae(c)?(e.exit("codeFlowValue"),u(c)):(e.consume(c),s)}function l(c){return e.exit("codeIndented"),t(c)}}function rh(e,t,r){const n=this;return a;function a(u){return n.parser.lazy[n.now().line]?r(u):ae(u)?(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),a):fe(e,i,"linePrefix",5)(u)}function i(u){const s=n.events[n.events.length-1];return s&&s[1].type==="linePrefix"&&s[2].sliceSerialize(s[1],!0).length>=4?t(u):ae(u)?a(u):r(u)}}const nh={name:"codeText",previous:ih,resolve:ah,tokenize:uh};function ah(e){let t=e.length-4,r=3,n,a;if((e[r][1].type==="lineEnding"||e[r][1].type==="space")&&(e[t][1].type==="lineEnding"||e[t][1].type==="space")){for(n=r;++n=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+t+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return tthis.left.length?this.right.slice(this.right.length-n+this.left.length,this.right.length-t+this.left.length).reverse():this.left.slice(t).concat(this.right.slice(this.right.length-n+this.left.length).reverse())}splice(t,r,n){const a=r||0;this.setCursor(Math.trunc(t));const i=this.right.splice(this.right.length-a,Number.POSITIVE_INFINITY);return n&&Kr(this.left,n),i.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(t){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(t)}pushMany(t){this.setCursor(Number.POSITIVE_INFINITY),Kr(this.left,t)}unshift(t){this.setCursor(0),this.right.push(t)}unshiftMany(t){this.setCursor(0),Kr(this.right,t.reverse())}setCursor(t){if(!(t===this.left.length||t>this.left.length&&this.right.length===0||t<0&&this.left.length===0))if(t=4?t(u):e.interrupt(n.parser.constructs.flow,r,t)(u)}}function ll(e,t,r,n,a,i,u,s,l){const c=l||Number.POSITIVE_INFINITY;let d=0;return f;function f(_){return _===60?(e.enter(n),e.enter(a),e.enter(i),e.consume(_),e.exit(i),g):_===null||_===32||_===41||Zn(_)?r(_):(e.enter(n),e.enter(u),e.enter(s),e.enter("chunkString",{contentType:"string"}),S(_))}function g(_){return _===62?(e.enter(i),e.consume(_),e.exit(i),e.exit(a),e.exit(n),t):(e.enter(s),e.enter("chunkString",{contentType:"string"}),p(_))}function p(_){return _===62?(e.exit("chunkString"),e.exit(s),g(_)):_===null||_===60||ae(_)?r(_):(e.consume(_),_===92?x:p)}function x(_){return _===60||_===62||_===92?(e.consume(_),p):p(_)}function S(_){return!d&&(_===null||_===41||ve(_))?(e.exit("chunkString"),e.exit(s),e.exit(u),e.exit(n),t(_)):d999||p===null||p===91||p===93&&!l||p===94&&!s&&"_hiddenFootnoteSupport"in u.parser.constructs?r(p):p===93?(e.exit(i),e.enter(a),e.consume(p),e.exit(a),e.exit(n),t):ae(p)?(e.enter("lineEnding"),e.consume(p),e.exit("lineEnding"),d):(e.enter("chunkString",{contentType:"string"}),f(p))}function f(p){return p===null||p===91||p===93||ae(p)||s++>999?(e.exit("chunkString"),d(p)):(e.consume(p),l||(l=!ge(p)),p===92?g:f)}function g(p){return p===91||p===92||p===93?(e.consume(p),s++,f):f(p)}}function cl(e,t,r,n,a,i){let u;return s;function s(g){return g===34||g===39||g===40?(e.enter(n),e.enter(a),e.consume(g),e.exit(a),u=g===40?41:g,l):r(g)}function l(g){return g===u?(e.enter(a),e.consume(g),e.exit(a),e.exit(n),t):(e.enter(i),c(g))}function c(g){return g===u?(e.exit(i),l(u)):g===null?r(g):ae(g)?(e.enter("lineEnding"),e.consume(g),e.exit("lineEnding"),fe(e,c,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),d(g))}function d(g){return g===u||g===null||ae(g)?(e.exit("chunkString"),c(g)):(e.consume(g),g===92?f:d)}function f(g){return g===u||g===92?(e.consume(g),d):d(g)}}function an(e,t){let r;return n;function n(a){return ae(a)?(e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),r=!0,n):ge(a)?fe(e,n,r?"linePrefix":"lineSuffix")(a):t(a)}}const mh={name:"definition",tokenize:gh},ph={partial:!0,tokenize:bh};function gh(e,t,r){const n=this;let a;return i;function i(p){return e.enter("definition"),u(p)}function u(p){return ol.call(n,e,s,r,"definitionLabel","definitionLabelMarker","definitionLabelString")(p)}function s(p){return a=xt(n.sliceSerialize(n.events[n.events.length-1][1]).slice(1,-1)),p===58?(e.enter("definitionMarker"),e.consume(p),e.exit("definitionMarker"),l):r(p)}function l(p){return ve(p)?an(e,c)(p):c(p)}function c(p){return ll(e,d,r,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(p)}function d(p){return e.attempt(ph,f,f)(p)}function f(p){return ge(p)?fe(e,g,"whitespace")(p):g(p)}function g(p){return p===null||ae(p)?(e.exit("definition"),n.parser.defined.push(a),t(p)):r(p)}}function bh(e,t,r){return n;function n(s){return ve(s)?an(e,a)(s):r(s)}function a(s){return cl(e,i,r,"definitionTitle","definitionTitleMarker","definitionTitleString")(s)}function i(s){return ge(s)?fe(e,u,"whitespace")(s):u(s)}function u(s){return s===null||ae(s)?t(s):r(s)}}const Eh={name:"hardBreakEscape",tokenize:Th};function Th(e,t,r){return n;function n(i){return e.enter("hardBreakEscape"),e.consume(i),a}function a(i){return ae(i)?(e.exit("hardBreakEscape"),t(i)):r(i)}}const xh={name:"headingAtx",resolve:yh,tokenize:vh};function yh(e,t){let r=e.length-2,n=3,a,i;return e[n][1].type==="whitespace"&&(n+=2),r-2>n&&e[r][1].type==="whitespace"&&(r-=2),e[r][1].type==="atxHeadingSequence"&&(n===r-1||r-4>n&&e[r-2][1].type==="whitespace")&&(r-=n+1===r?2:4),r>n&&(a={type:"atxHeadingText",start:e[n][1].start,end:e[r][1].end},i={type:"chunkText",start:e[n][1].start,end:e[r][1].end,contentType:"text"},lt(e,n,r-n+1,[["enter",a,t],["enter",i,t],["exit",i,t],["exit",a,t]])),e}function vh(e,t,r){let n=0;return a;function a(d){return e.enter("atxHeading"),i(d)}function i(d){return e.enter("atxHeadingSequence"),u(d)}function u(d){return d===35&&n++<6?(e.consume(d),u):d===null||ve(d)?(e.exit("atxHeadingSequence"),s(d)):r(d)}function s(d){return d===35?(e.enter("atxHeadingSequence"),l(d)):d===null||ae(d)?(e.exit("atxHeading"),t(d)):ge(d)?fe(e,s,"whitespace")(d):(e.enter("atxHeadingText"),c(d))}function l(d){return d===35?(e.consume(d),l):(e.exit("atxHeadingSequence"),s(d))}function c(d){return d===null||d===35||ve(d)?(e.exit("atxHeadingText"),s(d)):(e.consume(d),c)}}const Ah=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],au=["pre","script","style","textarea"],kh={concrete:!0,name:"htmlFlow",resolveTo:Ch,tokenize:_h},Sh={partial:!0,tokenize:Nh},wh={partial:!0,tokenize:Ih};function Ch(e){let t=e.length;for(;t--&&!(e[t][0]==="enter"&&e[t][1].type==="htmlFlow"););return t>1&&e[t-2][1].type==="linePrefix"&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function _h(e,t,r){const n=this;let a,i,u,s,l;return c;function c(C){return d(C)}function d(C){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(C),f}function f(C){return C===33?(e.consume(C),g):C===47?(e.consume(C),i=!0,S):C===63?(e.consume(C),a=3,n.interrupt?t:w):Ke(C)?(e.consume(C),u=String.fromCharCode(C),D):r(C)}function g(C){return C===45?(e.consume(C),a=2,p):C===91?(e.consume(C),a=5,s=0,x):Ke(C)?(e.consume(C),a=4,n.interrupt?t:w):r(C)}function p(C){return C===45?(e.consume(C),n.interrupt?t:w):r(C)}function x(C){const Ye="CDATA[";return C===Ye.charCodeAt(s++)?(e.consume(C),s===Ye.length?n.interrupt?t:Q:x):r(C)}function S(C){return Ke(C)?(e.consume(C),u=String.fromCharCode(C),D):r(C)}function D(C){if(C===null||C===47||C===62||ve(C)){const Ye=C===47,vt=u.toLowerCase();return!Ye&&!i&&au.includes(vt)?(a=1,n.interrupt?t(C):Q(C)):Ah.includes(u.toLowerCase())?(a=6,Ye?(e.consume(C),_):n.interrupt?t(C):Q(C)):(a=7,n.interrupt&&!n.parser.lazy[n.now().line]?r(C):i?N(C):M(C))}return C===45||Ge(C)?(e.consume(C),u+=String.fromCharCode(C),D):r(C)}function _(C){return C===62?(e.consume(C),n.interrupt?t:Q):r(C)}function N(C){return ge(C)?(e.consume(C),N):R(C)}function M(C){return C===47?(e.consume(C),R):C===58||C===95||Ke(C)?(e.consume(C),W):ge(C)?(e.consume(C),M):R(C)}function W(C){return C===45||C===46||C===58||C===95||Ge(C)?(e.consume(C),W):j(C)}function j(C){return C===61?(e.consume(C),L):ge(C)?(e.consume(C),j):M(C)}function L(C){return C===null||C===60||C===61||C===62||C===96?r(C):C===34||C===39?(e.consume(C),l=C,ee):ge(C)?(e.consume(C),L):re(C)}function ee(C){return C===l?(e.consume(C),l=null,K):C===null||ae(C)?r(C):(e.consume(C),ee)}function re(C){return C===null||C===34||C===39||C===47||C===60||C===61||C===62||C===96||ve(C)?j(C):(e.consume(C),re)}function K(C){return C===47||C===62||ge(C)?M(C):r(C)}function R(C){return C===62?(e.consume(C),J):r(C)}function J(C){return C===null||ae(C)?Q(C):ge(C)?(e.consume(C),J):r(C)}function Q(C){return C===45&&a===2?(e.consume(C),me):C===60&&a===1?(e.consume(C),ke):C===62&&a===4?(e.consume(C),Oe):C===63&&a===3?(e.consume(C),w):C===93&&a===5?(e.consume(C),at):ae(C)&&(a===6||a===7)?(e.exit("htmlFlowData"),e.check(Sh,Xe,be)(C)):C===null||ae(C)?(e.exit("htmlFlowData"),be(C)):(e.consume(C),Q)}function be(C){return e.check(wh,ne,Xe)(C)}function ne(C){return e.enter("lineEnding"),e.consume(C),e.exit("lineEnding"),X}function X(C){return C===null||ae(C)?be(C):(e.enter("htmlFlowData"),Q(C))}function me(C){return C===45?(e.consume(C),w):Q(C)}function ke(C){return C===47?(e.consume(C),u="",ze):Q(C)}function ze(C){if(C===62){const Ye=u.toLowerCase();return au.includes(Ye)?(e.consume(C),Oe):Q(C)}return Ke(C)&&u.length<8?(e.consume(C),u+=String.fromCharCode(C),ze):Q(C)}function at(C){return C===93?(e.consume(C),w):Q(C)}function w(C){return C===62?(e.consume(C),Oe):C===45&&a===2?(e.consume(C),w):Q(C)}function Oe(C){return C===null||ae(C)?(e.exit("htmlFlowData"),Xe(C)):(e.consume(C),Oe)}function Xe(C){return e.exit("htmlFlow"),t(C)}}function Ih(e,t,r){const n=this;return a;function a(u){return ae(u)?(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),i):r(u)}function i(u){return n.parser.lazy[n.now().line]?r(u):t(u)}}function Nh(e,t,r){return n;function n(a){return e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),e.attempt(yn,t,r)}}const Dh={name:"htmlText",tokenize:Oh};function Oh(e,t,r){const n=this;let a,i,u;return s;function s(w){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(w),l}function l(w){return w===33?(e.consume(w),c):w===47?(e.consume(w),j):w===63?(e.consume(w),M):Ke(w)?(e.consume(w),re):r(w)}function c(w){return w===45?(e.consume(w),d):w===91?(e.consume(w),i=0,x):Ke(w)?(e.consume(w),N):r(w)}function d(w){return w===45?(e.consume(w),p):r(w)}function f(w){return w===null?r(w):w===45?(e.consume(w),g):ae(w)?(u=f,ke(w)):(e.consume(w),f)}function g(w){return w===45?(e.consume(w),p):f(w)}function p(w){return w===62?me(w):w===45?g(w):f(w)}function x(w){const Oe="CDATA[";return w===Oe.charCodeAt(i++)?(e.consume(w),i===Oe.length?S:x):r(w)}function S(w){return w===null?r(w):w===93?(e.consume(w),D):ae(w)?(u=S,ke(w)):(e.consume(w),S)}function D(w){return w===93?(e.consume(w),_):S(w)}function _(w){return w===62?me(w):w===93?(e.consume(w),_):S(w)}function N(w){return w===null||w===62?me(w):ae(w)?(u=N,ke(w)):(e.consume(w),N)}function M(w){return w===null?r(w):w===63?(e.consume(w),W):ae(w)?(u=M,ke(w)):(e.consume(w),M)}function W(w){return w===62?me(w):M(w)}function j(w){return Ke(w)?(e.consume(w),L):r(w)}function L(w){return w===45||Ge(w)?(e.consume(w),L):ee(w)}function ee(w){return ae(w)?(u=ee,ke(w)):ge(w)?(e.consume(w),ee):me(w)}function re(w){return w===45||Ge(w)?(e.consume(w),re):w===47||w===62||ve(w)?K(w):r(w)}function K(w){return w===47?(e.consume(w),me):w===58||w===95||Ke(w)?(e.consume(w),R):ae(w)?(u=K,ke(w)):ge(w)?(e.consume(w),K):me(w)}function R(w){return w===45||w===46||w===58||w===95||Ge(w)?(e.consume(w),R):J(w)}function J(w){return w===61?(e.consume(w),Q):ae(w)?(u=J,ke(w)):ge(w)?(e.consume(w),J):K(w)}function Q(w){return w===null||w===60||w===61||w===62||w===96?r(w):w===34||w===39?(e.consume(w),a=w,be):ae(w)?(u=Q,ke(w)):ge(w)?(e.consume(w),Q):(e.consume(w),ne)}function be(w){return w===a?(e.consume(w),a=void 0,X):w===null?r(w):ae(w)?(u=be,ke(w)):(e.consume(w),be)}function ne(w){return w===null||w===34||w===39||w===60||w===61||w===96?r(w):w===47||w===62||ve(w)?K(w):(e.consume(w),ne)}function X(w){return w===47||w===62||ve(w)?K(w):r(w)}function me(w){return w===62?(e.consume(w),e.exit("htmlTextData"),e.exit("htmlText"),t):r(w)}function ke(w){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(w),e.exit("lineEnding"),ze}function ze(w){return ge(w)?fe(e,at,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(w):at(w)}function at(w){return e.enter("htmlTextData"),u(w)}}const ii={name:"labelEnd",resolveAll:Ph,resolveTo:Bh,tokenize:Fh},Lh={tokenize:Hh},Rh={tokenize:zh},Mh={tokenize:Uh};function Ph(e){let t=-1;const r=[];for(;++t=3&&(c===null||ae(c))?(e.exit("thematicBreak"),t(c)):r(c)}function l(c){return c===a?(e.consume(c),n++,l):(e.exit("thematicBreakSequence"),ge(c)?fe(e,s,"whitespace")(c):s(c))}}const tt={continuation:{tokenize:Kh},exit:Zh,name:"list",tokenize:Qh},Xh={partial:!0,tokenize:ed},$h={partial:!0,tokenize:Jh};function Qh(e,t,r){const n=this,a=n.events[n.events.length-1];let i=a&&a[1].type==="linePrefix"?a[2].sliceSerialize(a[1],!0).length:0,u=0;return s;function s(p){const x=n.containerState.type||(p===42||p===43||p===45?"listUnordered":"listOrdered");if(x==="listUnordered"?!n.containerState.marker||p===n.containerState.marker:ya(p)){if(n.containerState.type||(n.containerState.type=x,e.enter(x,{_container:!0})),x==="listUnordered")return e.enter("listItemPrefix"),p===42||p===45?e.check(Xn,r,c)(p):c(p);if(!n.interrupt||p===49)return e.enter("listItemPrefix"),e.enter("listItemValue"),l(p)}return r(p)}function l(p){return ya(p)&&++u<10?(e.consume(p),l):(!n.interrupt||u<2)&&(n.containerState.marker?p===n.containerState.marker:p===41||p===46)?(e.exit("listItemValue"),c(p)):r(p)}function c(p){return e.enter("listItemMarker"),e.consume(p),e.exit("listItemMarker"),n.containerState.marker=n.containerState.marker||p,e.check(yn,n.interrupt?r:d,e.attempt(Xh,g,f))}function d(p){return n.containerState.initialBlankLine=!0,i++,g(p)}function f(p){return ge(p)?(e.enter("listItemPrefixWhitespace"),e.consume(p),e.exit("listItemPrefixWhitespace"),g):r(p)}function g(p){return n.containerState.size=i+n.sliceSerialize(e.exit("listItemPrefix"),!0).length,t(p)}}function Kh(e,t,r){const n=this;return n.containerState._closeFlow=void 0,e.check(yn,a,i);function a(s){return n.containerState.furtherBlankLines=n.containerState.furtherBlankLines||n.containerState.initialBlankLine,fe(e,t,"listItemIndent",n.containerState.size+1)(s)}function i(s){return n.containerState.furtherBlankLines||!ge(s)?(n.containerState.furtherBlankLines=void 0,n.containerState.initialBlankLine=void 0,u(s)):(n.containerState.furtherBlankLines=void 0,n.containerState.initialBlankLine=void 0,e.attempt($h,t,u)(s))}function u(s){return n.containerState._closeFlow=!0,n.interrupt=void 0,fe(e,e.attempt(tt,t,r),"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(s)}}function Jh(e,t,r){const n=this;return fe(e,a,"listItemIndent",n.containerState.size+1);function a(i){const u=n.events[n.events.length-1];return u&&u[1].type==="listItemIndent"&&u[2].sliceSerialize(u[1],!0).length===n.containerState.size?t(i):r(i)}}function Zh(e){e.exit(this.containerState.type)}function ed(e,t,r){const n=this;return fe(e,a,"listItemPrefixWhitespace",n.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function a(i){const u=n.events[n.events.length-1];return!ge(i)&&u&&u[1].type==="listItemPrefixWhitespace"?t(i):r(i)}}const iu={name:"setextUnderline",resolveTo:td,tokenize:rd};function td(e,t){let r=e.length,n,a,i;for(;r--;)if(e[r][0]==="enter"){if(e[r][1].type==="content"){n=r;break}e[r][1].type==="paragraph"&&(a=r)}else e[r][1].type==="content"&&e.splice(r,1),!i&&e[r][1].type==="definition"&&(i=r);const u={type:"setextHeading",start:{...e[n][1].start},end:{...e[e.length-1][1].end}};return e[a][1].type="setextHeadingText",i?(e.splice(a,0,["enter",u,t]),e.splice(i+1,0,["exit",e[n][1],t]),e[n][1].end={...e[i][1].end}):e[n][1]=u,e.push(["exit",u,t]),e}function rd(e,t,r){const n=this;let a;return i;function i(c){let d=n.events.length,f;for(;d--;)if(n.events[d][1].type!=="lineEnding"&&n.events[d][1].type!=="linePrefix"&&n.events[d][1].type!=="content"){f=n.events[d][1].type==="paragraph";break}return!n.parser.lazy[n.now().line]&&(n.interrupt||f)?(e.enter("setextHeadingLine"),a=c,u(c)):r(c)}function u(c){return e.enter("setextHeadingLineSequence"),s(c)}function s(c){return c===a?(e.consume(c),s):(e.exit("setextHeadingLineSequence"),ge(c)?fe(e,l,"lineSuffix")(c):l(c))}function l(c){return c===null||ae(c)?(e.exit("setextHeadingLine"),t(c)):r(c)}}const nd={tokenize:ad};function ad(e){const t=this,r=e.attempt(yn,n,e.attempt(this.parser.constructs.flowInitial,a,fe(e,e.attempt(this.parser.constructs.flow,a,e.attempt(oh,a)),"linePrefix")));return r;function n(i){if(i===null){e.consume(i);return}return e.enter("lineEndingBlank"),e.consume(i),e.exit("lineEndingBlank"),t.currentConstruct=void 0,r}function a(i){if(i===null){e.consume(i);return}return e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),t.currentConstruct=void 0,r}}const id={resolveAll:dl()},ud=hl("string"),sd=hl("text");function hl(e){return{resolveAll:dl(e==="text"?ld:void 0),tokenize:t};function t(r){const n=this,a=this.parser.constructs[e],i=r.attempt(a,u,s);return u;function u(d){return c(d)?i(d):s(d)}function s(d){if(d===null){r.consume(d);return}return r.enter("data"),r.consume(d),l}function l(d){return c(d)?(r.exit("data"),i(d)):(r.consume(d),l)}function c(d){if(d===null)return!0;const f=a[d];let g=-1;if(f)for(;++g-1){const s=u[0];typeof s=="string"?u[0]=s.slice(n):u.shift()}i>0&&u.push(e[a].slice(0,i))}return u}function yd(e,t){let r=-1;const n=[];let a;for(;++r0){const Tt=ue.tokenStack[ue.tokenStack.length-1];(Tt[1]||su).call(ue,void 0,Tt[0])}for($.position={start:Vt(B.length>0?B[0][1].start:{line:1,column:1,offset:0}),end:Vt(B.length>0?B[B.length-2][1].end:{line:1,column:1,offset:0})},xe=-1;++xe0&&(n.className=["language-"+a[0]]);let i={type:"element",tagName:"code",properties:n,children:[{type:"text",value:r}]};return t.meta&&(i.data={meta:t.meta}),e.patch(t,i),i=e.applyData(t,i),i={type:"element",tagName:"pre",properties:{},children:[i]},e.patch(t,i),i}function Md(e,t){const r={type:"element",tagName:"del",properties:{},children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function Pd(e,t){const r={type:"element",tagName:"em",properties:{},children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function Bd(e,t){const r=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",n=String(t.identifier).toUpperCase(),a=Pr(n.toLowerCase()),i=e.footnoteOrder.indexOf(n);let u,s=e.footnoteCounts.get(n);s===void 0?(s=0,e.footnoteOrder.push(n),u=e.footnoteOrder.length):u=i+1,s+=1,e.footnoteCounts.set(n,s);const l={type:"element",tagName:"a",properties:{href:"#"+r+"fn-"+a,id:r+"fnref-"+a+(s>1?"-"+s:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(u)}]};e.patch(t,l);const c={type:"element",tagName:"sup",properties:{},children:[l]};return e.patch(t,c),e.applyData(t,c)}function Fd(e,t){const r={type:"element",tagName:"h"+t.depth,properties:{},children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function Hd(e,t){if(e.options.allowDangerousHtml){const r={type:"raw",value:t.value};return e.patch(t,r),e.applyData(t,r)}}function pl(e,t){const r=t.referenceType;let n="]";if(r==="collapsed"?n+="[]":r==="full"&&(n+="["+(t.label||t.identifier)+"]"),t.type==="imageReference")return[{type:"text",value:"!["+t.alt+n}];const a=e.all(t),i=a[0];i&&i.type==="text"?i.value="["+i.value:a.unshift({type:"text",value:"["});const u=a[a.length-1];return u&&u.type==="text"?u.value+=n:a.push({type:"text",value:n}),a}function zd(e,t){const r=String(t.identifier).toUpperCase(),n=e.definitionById.get(r);if(!n)return pl(e,t);const a={src:Pr(n.url||""),alt:t.alt};n.title!==null&&n.title!==void 0&&(a.title=n.title);const i={type:"element",tagName:"img",properties:a,children:[]};return e.patch(t,i),e.applyData(t,i)}function Ud(e,t){const r={src:Pr(t.url)};t.alt!==null&&t.alt!==void 0&&(r.alt=t.alt),t.title!==null&&t.title!==void 0&&(r.title=t.title);const n={type:"element",tagName:"img",properties:r,children:[]};return e.patch(t,n),e.applyData(t,n)}function qd(e,t){const r={type:"text",value:t.value.replace(/\r?\n|\r/g," ")};e.patch(t,r);const n={type:"element",tagName:"code",properties:{},children:[r]};return e.patch(t,n),e.applyData(t,n)}function Yd(e,t){const r=String(t.identifier).toUpperCase(),n=e.definitionById.get(r);if(!n)return pl(e,t);const a={href:Pr(n.url||"")};n.title!==null&&n.title!==void 0&&(a.title=n.title);const i={type:"element",tagName:"a",properties:a,children:e.all(t)};return e.patch(t,i),e.applyData(t,i)}function Gd(e,t){const r={href:Pr(t.url)};t.title!==null&&t.title!==void 0&&(r.title=t.title);const n={type:"element",tagName:"a",properties:r,children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function Vd(e,t,r){const n=e.all(t),a=r?jd(r):gl(t),i={},u=[];if(typeof t.checked=="boolean"){const d=n[0];let f;d&&d.type==="element"&&d.tagName==="p"?f=d:(f={type:"element",tagName:"p",properties:{},children:[]},n.unshift(f)),f.children.length>0&&f.children.unshift({type:"text",value:" "}),f.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:t.checked,disabled:!0},children:[]}),i.className=["task-list-item"]}let s=-1;for(;++s1}function Wd(e,t){const r={},n=e.all(t);let a=-1;for(typeof t.start=="number"&&t.start!==1&&(r.start=t.start);++a0){const u={type:"element",tagName:"tbody",properties:{},children:e.wrap(r,!0)},s=_t(t.children[1]),l=d0(t.children[t.children.length-1]);s&&l&&(u.position={start:s,end:l}),a.push(u)}const i={type:"element",tagName:"table",properties:{},children:e.wrap(a,!0)};return e.patch(t,i),e.applyData(t,i)}function Jd(e,t,r){const n=r?r.children:void 0,i=(n?n.indexOf(t):1)===0?"th":"td",u=r&&r.type==="table"?r.align:void 0,s=u?u.length:t.children.length;let l=-1;const c=[];for(;++l0,!0),n[0]),a=n.index+n[0].length,n=r.exec(t);return i.push(cu(t.slice(a),a>0,!1)),i.join("")}function cu(e,t,r){let n=0,a=e.length;if(t){let i=e.codePointAt(n);for(;i===lu||i===ou;)n++,i=e.codePointAt(n)}if(r){let i=e.codePointAt(a-1);for(;i===lu||i===ou;)a--,i=e.codePointAt(a-1)}return a>n?e.slice(n,a):""}function tf(e,t){const r={type:"text",value:ef(String(t.value))};return e.patch(t,r),e.applyData(t,r)}function rf(e,t){const r={type:"element",tagName:"hr",properties:{},children:[]};return e.patch(t,r),e.applyData(t,r)}const nf={blockquote:Od,break:Ld,code:Rd,delete:Md,emphasis:Pd,footnoteReference:Bd,heading:Fd,html:Hd,imageReference:zd,image:Ud,inlineCode:qd,linkReference:Yd,link:Gd,listItem:Vd,list:Wd,paragraph:Xd,root:$d,strong:Qd,table:Kd,tableCell:Zd,tableRow:Jd,text:tf,thematicBreak:rf,toml:Mn,yaml:Mn,definition:Mn,footnoteDefinition:Mn};function Mn(){}const bl=-1,p0=0,un=1,e0=2,ui=3,si=4,li=5,oi=6,El=7,Tl=8,xl=typeof self=="object"?self:globalThis,hu=(e,t)=>{switch(e){case"Function":case"SharedWorker":case"Worker":case"eval":case"setInterval":case"setTimeout":throw new TypeError("unable to deserialize "+e)}return new xl[e](t)},af=(e,t)=>{const r=(a,i)=>(e.set(i,a),a),n=a=>{if(e.has(a))return e.get(a);const[i,u]=t[a];switch(i){case p0:case bl:return r(u,a);case un:{const s=r([],a);for(const l of u)s.push(n(l));return s}case e0:{const s=r({},a);for(const[l,c]of u)s[n(l)]=n(c);return s}case ui:return r(new Date(u),a);case si:{const{source:s,flags:l}=u;return r(new RegExp(s,l),a)}case li:{const s=r(new Map,a);for(const[l,c]of u)s.set(n(l),n(c));return s}case oi:{const s=r(new Set,a);for(const l of u)s.add(n(l));return s}case El:{const{name:s,message:l}=u;return r(typeof xl[s]=="function"?hu(s,l):new Error(l),a)}case Tl:return r(BigInt(u),a);case"BigInt":return r(Object(BigInt(u)),a);case"ArrayBuffer":return r(new Uint8Array(u).buffer,u);case"DataView":{const{buffer:s}=new Uint8Array(u);return r(new DataView(s),u)}}return r(hu(i,u),a)};return n},du=e=>af(new Map,e)(0),hr="",{toString:uf}={},{keys:sf}=Object,Jr=e=>{const t=typeof e;if(t!=="object"||!e)return[p0,t];const r=uf.call(e).slice(8,-1);switch(r){case"Array":return[un,hr];case"Object":return[e0,hr];case"Date":return[ui,hr];case"RegExp":return[si,hr];case"Map":return[li,hr];case"Set":return[oi,hr];case"DataView":return[un,r]}return r.includes("Array")?[un,r]:e instanceof Error?[El,e.name||"Error"]:[e0,r]},Pn=([e,t])=>e===p0&&(t==="function"||t==="symbol"),lf=(e,t,r,n)=>{const a=(u,s)=>{const l=n.push(u)-1;return r.set(s,l),l},i=u=>{if(r.has(u))return r.get(u);let[s,l]=Jr(u);switch(s){case p0:{let d=u;switch(l){case"bigint":s=Tl,d=u.toString();break;case"function":case"symbol":if(e)throw new TypeError("unable to serialize "+l);d=null;break;case"undefined":return a([bl],u)}return a([s,d],u)}case un:{if(l){let g=u;return l==="DataView"?g=new Uint8Array(u.buffer):l==="ArrayBuffer"&&(g=new Uint8Array(u)),a([l,[...g]],u)}const d=[],f=a([s,d],u);for(const g of u)d.push(i(g));return f}case e0:{if(l)switch(l){case"BigInt":return a([l,u.toString()],u);case"Boolean":case"Number":case"String":return a([l,u.valueOf()],u)}if(t&&"toJSON"in u)return i(u.toJSON());const d=[],f=a([s,d],u);for(const g of sf(u))(e||!Pn(Jr(u[g])))&&d.push([i(g),i(u[g])]);return f}case ui:return a([s,isNaN(u.getTime())?hr:u.toISOString()],u);case si:{const{source:d,flags:f}=u;return a([s,{source:d,flags:f}],u)}case li:{const d=[],f=a([s,d],u);for(const[g,p]of u)(e||!(Pn(Jr(g))||Pn(Jr(p))))&&d.push([i(g),i(p)]);return f}case oi:{const d=[],f=a([s,d],u);for(const g of u)(e||!Pn(Jr(g)))&&d.push(i(g));return f}}const{message:c}=u;return a([s,{name:l,message:c}],u)};return i},fu=(e,{json:t,lossy:r}={})=>{const n=[];return lf(!(t||r),!!t,new Map,n)(e),n},Nr=typeof structuredClone=="function"?(e,t)=>t&&("json"in t||"lossy"in t)?du(fu(e,t)):structuredClone(e):(e,t)=>du(fu(e,t));function of(e,t){const r=[{type:"text",value:"↩"}];return t>1&&r.push({type:"element",tagName:"sup",properties:{},children:[{type:"text",value:String(t)}]}),r}function cf(e,t){return"Back to reference "+(e+1)+(t>1?"-"+t:"")}function hf(e){const t=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",r=e.options.footnoteBackContent||of,n=e.options.footnoteBackLabel||cf,a=e.options.footnoteLabel||"Footnotes",i=e.options.footnoteLabelTagName||"h2",u=e.options.footnoteLabelProperties||{className:["sr-only"]},s=[];let l=-1;for(;++l0&&x.push({type:"text",value:" "});let N=typeof r=="string"?r:r(l,p);typeof N=="string"&&(N={type:"text",value:N}),x.push({type:"element",tagName:"a",properties:{href:"#"+t+"fnref-"+g+(p>1?"-"+p:""),dataFootnoteBackref:"",ariaLabel:typeof n=="string"?n:n(l,p),className:["data-footnote-backref"]},children:Array.isArray(N)?N:[N]})}const D=d[d.length-1];if(D&&D.type==="element"&&D.tagName==="p"){const N=D.children[D.children.length-1];N&&N.type==="text"?N.value+=" ":D.children.push({type:"text",value:" "}),D.children.push(...x)}else d.push(...x);const _={type:"element",tagName:"li",properties:{id:t+"fn-"+g},children:e.wrap(d,!0)};e.patch(c,_),s.push(_)}if(s.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:i,properties:{...Nr(u),id:"footnote-label"},children:[{type:"text",value:a}]},{type:"text",value:` -`},{type:"element",tagName:"ol",properties:{},children:e.wrap(s,!0)},{type:"text",value:` -`}]}}const vn=(function(e){if(e==null)return pf;if(typeof e=="function")return g0(e);if(typeof e=="object")return Array.isArray(e)?df(e):ff(e);if(typeof e=="string")return mf(e);throw new Error("Expected function, string, or object as test")});function df(e){const t=[];let r=-1;for(;++r":""))+")"})}return g;function g(){let p=yl,x,S,D;if((!t||i(l,c,d[d.length-1]||void 0))&&(p=Ef(r(l,d)),p[0]===Aa))return p;if("children"in l&&l.children){const _=l;if(_.children&&p[0]!==vl)for(S=(n?_.children.length:-1)+u,D=d.concat(_);S>-1&&S<_.children.length;){const N=_.children[S];if(x=s(N,S,D)(),x[0]===Aa)return x;S=typeof x[1]=="number"?x[1]:S+u}}return p}}}function Ef(e){return Array.isArray(e)?e:typeof e=="number"?[bf,e]:e==null?yl:[e]}function b0(e,t,r,n){let a,i,u;typeof t=="function"&&typeof r!="function"?(i=void 0,u=t,a=r):(i=t,u=r,a=n),ci(e,i,s,a);function s(l,c){const d=c[c.length-1],f=d?d.children.indexOf(l):void 0;return u(l,f,d)}}const ka={}.hasOwnProperty,Tf={};function xf(e,t){const r=t||Tf,n=new Map,a=new Map,i=new Map,u={...nf,...r.handlers},s={all:c,applyData:vf,definitionById:n,footnoteById:a,footnoteCounts:i,footnoteOrder:[],handlers:u,one:l,options:r,patch:yf,wrap:kf};return b0(e,function(d){if(d.type==="definition"||d.type==="footnoteDefinition"){const f=d.type==="definition"?n:a,g=String(d.identifier).toUpperCase();f.has(g)||f.set(g,d)}}),s;function l(d,f){const g=d.type,p=s.handlers[g];if(ka.call(s.handlers,g)&&p)return p(s,d,f);if(s.options.passThrough&&s.options.passThrough.includes(g)){if("children"in d){const{children:S,...D}=d,_=Nr(D);return _.children=s.all(d),_}return Nr(d)}return(s.options.unknownHandler||Af)(s,d,f)}function c(d){const f=[];if("children"in d){const g=d.children;let p=-1;for(;++p0&&r.push({type:"text",value:` -`}),r}function mu(e){let t=0,r=e.charCodeAt(t);for(;r===9||r===32;)t++,r=e.charCodeAt(t);return e.slice(t)}function pu(e,t){const r=xf(e,t),n=r.one(e,void 0),a=hf(r),i=Array.isArray(n)?{type:"root",children:n}:n||{type:"root",children:[]};return a&&i.children.push({type:"text",value:` -`},a),i}function Sf(e,t){return e&&"run"in e?async function(r,n){const a=pu(r,{file:n,...t});await e.run(a,n)}:function(r,n){return pu(r,{file:n,...e||t})}}function gu(e){if(e)throw e}var q0,bu;function wf(){if(bu)return q0;bu=1;var e=Object.prototype.hasOwnProperty,t=Object.prototype.toString,r=Object.defineProperty,n=Object.getOwnPropertyDescriptor,a=function(c){return typeof Array.isArray=="function"?Array.isArray(c):t.call(c)==="[object Array]"},i=function(c){if(!c||t.call(c)!=="[object Object]")return!1;var d=e.call(c,"constructor"),f=c.constructor&&c.constructor.prototype&&e.call(c.constructor.prototype,"isPrototypeOf");if(c.constructor&&!d&&!f)return!1;var g;for(g in c);return typeof g>"u"||e.call(c,g)},u=function(c,d){r&&d.name==="__proto__"?r(c,d.name,{enumerable:!0,configurable:!0,value:d.newValue,writable:!0}):c[d.name]=d.newValue},s=function(c,d){if(d==="__proto__")if(e.call(c,d)){if(n)return n(c,d).value}else return;return c[d]};return q0=function l(){var c,d,f,g,p,x,S=arguments[0],D=1,_=arguments.length,N=!1;for(typeof S=="boolean"&&(N=S,S=arguments[1]||{},D=2),(S==null||typeof S!="object"&&typeof S!="function")&&(S={});D<_;++D)if(c=arguments[D],c!=null)for(d in c)f=s(S,d),g=s(c,d),S!==g&&(N&&g&&(i(g)||(p=a(g)))?(p?(p=!1,x=f&&a(f)?f:[]):x=f&&i(f)?f:{},u(S,{name:d,newValue:l(N,x,g)})):typeof g<"u"&&u(S,{name:d,newValue:g}));return S},q0}var Cf=wf();const Y0=zs(Cf);function Sa(e){if(typeof e!="object"||e===null)return!1;const t=Object.getPrototypeOf(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)}function _f(){const e=[],t={run:r,use:n};return t;function r(...a){let i=-1;const u=a.pop();if(typeof u!="function")throw new TypeError("Expected function as last argument, not "+u);s(null,...a);function s(l,...c){const d=e[++i];let f=-1;if(l){u(l);return}for(;++fu.length;let l;s&&u.push(a);try{l=e.apply(this,u)}catch(c){const d=c;if(s&&r)throw d;return a(d)}s||(l&&l.then&&typeof l.then=="function"?l.then(i,a):l instanceof Error?a(l):i(l))}function a(u,...s){r||(r=!0,t(u,...s))}function i(u){a(null,u)}}const At={basename:Nf,dirname:Df,extname:Of,join:Lf,sep:"/"};function Nf(e,t){if(t!==void 0&&typeof t!="string")throw new TypeError('"ext" argument must be a string');An(e);let r=0,n=-1,a=e.length,i;if(t===void 0||t.length===0||t.length>e.length){for(;a--;)if(e.codePointAt(a)===47){if(i){r=a+1;break}}else n<0&&(i=!0,n=a+1);return n<0?"":e.slice(r,n)}if(t===e)return"";let u=-1,s=t.length-1;for(;a--;)if(e.codePointAt(a)===47){if(i){r=a+1;break}}else u<0&&(i=!0,u=a+1),s>-1&&(e.codePointAt(a)===t.codePointAt(s--)?s<0&&(n=a):(s=-1,n=u));return r===n?n=u:n<0&&(n=e.length),e.slice(r,n)}function Df(e){if(An(e),e.length===0)return".";let t=-1,r=e.length,n;for(;--r;)if(e.codePointAt(r)===47){if(n){t=r;break}}else n||(n=!0);return t<0?e.codePointAt(0)===47?"/":".":t===1&&e.codePointAt(0)===47?"//":e.slice(0,t)}function Of(e){An(e);let t=e.length,r=-1,n=0,a=-1,i=0,u;for(;t--;){const s=e.codePointAt(t);if(s===47){if(u){n=t+1;break}continue}r<0&&(u=!0,r=t+1),s===46?a<0?a=t:i!==1&&(i=1):a>-1&&(i=-1)}return a<0||r<0||i===0||i===1&&a===r-1&&a===n+1?"":e.slice(a,r)}function Lf(...e){let t=-1,r;for(;++t0&&e.codePointAt(e.length-1)===47&&(r+="/"),t?"/"+r:r}function Mf(e,t){let r="",n=0,a=-1,i=0,u=-1,s,l;for(;++u<=e.length;){if(u2){if(l=r.lastIndexOf("/"),l!==r.length-1){l<0?(r="",n=0):(r=r.slice(0,l),n=r.length-1-r.lastIndexOf("/")),a=u,i=0;continue}}else if(r.length>0){r="",n=0,a=u,i=0;continue}}t&&(r=r.length>0?r+"/..":"..",n=2)}else r.length>0?r+="/"+e.slice(a+1,u):r=e.slice(a+1,u),n=u-a-1;a=u,i=0}else s===46&&i>-1?i++:i=-1}return r}function An(e){if(typeof e!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}const Pf={cwd:Bf};function Bf(){return"/"}function wa(e){return!!(e!==null&&typeof e=="object"&&"href"in e&&e.href&&"protocol"in e&&e.protocol&&e.auth===void 0)}function Ff(e){if(typeof e=="string")e=new URL(e);else if(!wa(e)){const t=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw t.code="ERR_INVALID_ARG_TYPE",t}if(e.protocol!=="file:"){const t=new TypeError("The URL must be of scheme file");throw t.code="ERR_INVALID_URL_SCHEME",t}return Hf(e)}function Hf(e){if(e.hostname!==""){const n=new TypeError('File URL host must be "localhost" or empty on darwin');throw n.code="ERR_INVALID_FILE_URL_HOST",n}const t=e.pathname;let r=-1;for(;++r0){let[p,...x]=d;const S=n[g][1];Sa(S)&&Sa(p)&&(p=Y0(!0,S,p)),n[g]=[c,p,...x]}}}}const Yf=new hi().freeze();function W0(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `parser`")}function X0(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `compiler`")}function $0(e,t){if(t)throw new Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function Tu(e){if(!Sa(e)||typeof e.type!="string")throw new TypeError("Expected node, got `"+e+"`")}function xu(e,t,r){if(!r)throw new Error("`"+e+"` finished async. Use `"+t+"` instead")}function Bn(e){return Gf(e)?e:new Al(e)}function Gf(e){return!!(e&&typeof e=="object"&&"message"in e&&"messages"in e)}function Vf(e){return typeof e=="string"||jf(e)}function jf(e){return!!(e&&typeof e=="object"&&"byteLength"in e&&"byteOffset"in e)}const Wf="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",yu=[],vu={allowDangerousHtml:!0},Xf=/^(https?|ircs?|mailto|xmpp)$/i,$f=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"className",id:"remove-classname"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function Qf(e){const t=Kf(e),r=Jf(e);return Zf(t.runSync(t.parse(r),r),e)}function Kf(e){const t=e.rehypePlugins||yu,r=e.remarkPlugins||yu,n=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...vu}:vu;return Yf().use(Dd).use(r).use(Sf,n).use(t)}function Jf(e){const t=e.children||"",r=new Al;return typeof t=="string"&&(r.value=t),r}function Zf(e,t){const r=t.allowedElements,n=t.allowElement,a=t.components,i=t.disallowedElements,u=t.skipHtml,s=t.unwrapDisallowed,l=t.urlTransform||em;for(const d of $f)Object.hasOwn(t,d.from)&&(""+d.from+(d.to?"use `"+d.to+"` instead":"remove it")+Wf+d.id,void 0);return b0(e,c),m1(e,{Fragment:pe.Fragment,components:a,ignoreInvalidStyle:!0,jsx:pe.jsx,jsxs:pe.jsxs,passKeys:!0,passNode:!0});function c(d,f,g){if(d.type==="raw"&&g&&typeof f=="number")return u?g.children.splice(f,1):g.children[f]={type:"text",value:d.value},f;if(d.type==="element"){let p;for(p in H0)if(Object.hasOwn(H0,p)&&Object.hasOwn(d.properties,p)){const x=d.properties[p],S=H0[p];(S===null||S.includes(d.tagName))&&(d.properties[p]=l(String(x||""),p,d))}}if(d.type==="element"){let p=r?!r.includes(d.tagName):i?i.includes(d.tagName):!1;if(!p&&n&&typeof f=="number"&&(p=!n(d,f,g)),p&&g&&typeof f=="number")return s&&d.children?g.children.splice(f,1,...d.children):g.children.splice(f,1),f}}}function em(e){const t=e.indexOf(":"),r=e.indexOf("?"),n=e.indexOf("#"),a=e.indexOf("/");return t===-1||a!==-1&&t>a||r!==-1&&t>r||n!==-1&&t>n||Xf.test(e.slice(0,t))?e:""}function Au(e,t){const r=String(e);if(typeof t!="string")throw new TypeError("Expected character");let n=0,a=r.indexOf(t);for(;a!==-1;)n++,a=r.indexOf(t,a+t.length);return n}function tm(e){if(typeof e!="string")throw new TypeError("Expected a string");return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}function rm(e,t,r){const a=vn((r||{}).ignore||[]),i=nm(t);let u=-1;for(;++u0?{type:"text",value:L}:void 0),L===!1?g.lastIndex=W+1:(x!==W&&N.push({type:"text",value:c.value.slice(x,W)}),Array.isArray(L)?N.push(...L):L&&N.push(L),x=W+M[0].length,_=!0),!g.global)break;M=g.exec(c.value)}return _?(x?\]}]+$/.exec(e);if(!t)return[e,void 0];e=e.slice(0,t.index);let r=t[0],n=r.indexOf(")");const a=Au(e,"(");let i=Au(e,")");for(;n!==-1&&a>i;)e+=r.slice(0,n+1),r=r.slice(n+1),n=r.indexOf(")"),i++;return[e,r]}function kl(e,t){const r=e.input.charCodeAt(e.index-1);return(e.index===0||pr(r)||f0(r))&&(!t||r!==47)}Sl.peek=wm;function Em(){this.buffer()}function Tm(e){this.enter({type:"footnoteReference",identifier:"",label:""},e)}function xm(){this.buffer()}function ym(e){this.enter({type:"footnoteDefinition",identifier:"",label:"",children:[]},e)}function vm(e){const t=this.resume(),r=this.stack[this.stack.length-1];r.type,r.identifier=xt(this.sliceSerialize(e)).toLowerCase(),r.label=t}function Am(e){this.exit(e)}function km(e){const t=this.resume(),r=this.stack[this.stack.length-1];r.type,r.identifier=xt(this.sliceSerialize(e)).toLowerCase(),r.label=t}function Sm(e){this.exit(e)}function wm(){return"["}function Sl(e,t,r,n){const a=r.createTracker(n);let i=a.move("[^");const u=r.enter("footnoteReference"),s=r.enter("reference");return i+=a.move(r.safe(r.associationId(e),{after:"]",before:i})),s(),u(),i+=a.move("]"),i}function Cm(){return{enter:{gfmFootnoteCallString:Em,gfmFootnoteCall:Tm,gfmFootnoteDefinitionLabelString:xm,gfmFootnoteDefinition:ym},exit:{gfmFootnoteCallString:vm,gfmFootnoteCall:Am,gfmFootnoteDefinitionLabelString:km,gfmFootnoteDefinition:Sm}}}function _m(e){let t=!1;return e&&e.firstLineBlank&&(t=!0),{handlers:{footnoteDefinition:r,footnoteReference:Sl},unsafe:[{character:"[",inConstruct:["label","phrasing","reference"]}]};function r(n,a,i,u){const s=i.createTracker(u);let l=s.move("[^");const c=i.enter("footnoteDefinition"),d=i.enter("label");return l+=s.move(i.safe(i.associationId(n),{before:l,after:"]"})),d(),l+=s.move("]:"),n.children&&n.children.length>0&&(s.shift(4),l+=s.move((t?` -`:" ")+i.indentLines(i.containerFlow(n,s.current()),t?wl:Im))),c(),l}}function Im(e,t,r){return t===0?e:wl(e,t,r)}function wl(e,t,r){return(r?"":" ")+e}const Nm=["autolink","destinationLiteral","destinationRaw","reference","titleQuote","titleApostrophe"];Cl.peek=Mm;function Dm(){return{canContainEols:["delete"],enter:{strikethrough:Lm},exit:{strikethrough:Rm}}}function Om(){return{unsafe:[{character:"~",inConstruct:"phrasing",notInConstruct:Nm}],handlers:{delete:Cl}}}function Lm(e){this.enter({type:"delete",children:[]},e)}function Rm(e){this.exit(e)}function Cl(e,t,r,n){const a=r.createTracker(n),i=r.enter("strikethrough");let u=a.move("~~");return u+=r.containerPhrasing(e,{...a.current(),before:u,after:"~"}),u+=a.move("~~"),i(),u}function Mm(){return"~"}function Pm(e){return e.length}function Bm(e,t){const r=t||{},n=(r.align||[]).concat(),a=r.stringLength||Pm,i=[],u=[],s=[],l=[];let c=0,d=-1;for(;++dc&&(c=e[d].length);++_l[_])&&(l[_]=M)}S.push(N)}u[d]=S,s[d]=D}let f=-1;if(typeof n=="object"&&"length"in n)for(;++fl[f]&&(l[f]=N),p[f]=N),g[f]=M}u.splice(1,0,g),s.splice(1,0,p),d=-1;const x=[];for(;++d "),i.shift(2);const u=r.indentLines(r.containerFlow(e,i.current()),zm);return a(),u}function zm(e,t,r){return">"+(r?"":" ")+e}function Um(e,t){return wu(e,t.inConstruct,!0)&&!wu(e,t.notInConstruct,!1)}function wu(e,t,r){if(typeof t=="string"&&(t=[t]),!t||t.length===0)return r;let n=-1;for(;++nu&&(u=i):i=1,a=n+t.length,n=r.indexOf(t,a);return u}function qm(e,t){return!!(t.options.fences===!1&&e.value&&!e.lang&&/[^ \r\n]/.test(e.value)&&!/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(e.value))}function Ym(e){const t=e.options.fence||"`";if(t!=="`"&&t!=="~")throw new Error("Cannot serialize code with `"+t+"` for `options.fence`, expected `` ` `` or `~`");return t}function Gm(e,t,r,n){const a=Ym(r),i=e.value||"",u=a==="`"?"GraveAccent":"Tilde";if(qm(e,r)){const f=r.enter("codeIndented"),g=r.indentLines(i,Vm);return f(),g}const s=r.createTracker(n),l=a.repeat(Math.max(Il(i,a)+1,3)),c=r.enter("codeFenced");let d=s.move(l);if(e.lang){const f=r.enter(`codeFencedLang${u}`);d+=s.move(r.safe(e.lang,{before:d,after:" ",encode:["`"],...s.current()})),f()}if(e.lang&&e.meta){const f=r.enter(`codeFencedMeta${u}`);d+=s.move(" "),d+=s.move(r.safe(e.meta,{before:d,after:` -`,encode:["`"],...s.current()})),f()}return d+=s.move(` -`),i&&(d+=s.move(i+` -`)),d+=s.move(l),c(),d}function Vm(e,t,r){return(r?"":" ")+e}function di(e){const t=e.options.quote||'"';if(t!=='"'&&t!=="'")throw new Error("Cannot serialize title with `"+t+"` for `options.quote`, expected `\"`, or `'`");return t}function jm(e,t,r,n){const a=di(r),i=a==='"'?"Quote":"Apostrophe",u=r.enter("definition");let s=r.enter("label");const l=r.createTracker(n);let c=l.move("[");return c+=l.move(r.safe(r.associationId(e),{before:c,after:"]",...l.current()})),c+=l.move("]: "),s(),!e.url||/[\0- \u007F]/.test(e.url)?(s=r.enter("destinationLiteral"),c+=l.move("<"),c+=l.move(r.safe(e.url,{before:c,after:">",...l.current()})),c+=l.move(">")):(s=r.enter("destinationRaw"),c+=l.move(r.safe(e.url,{before:c,after:e.title?" ":` -`,...l.current()}))),s(),e.title&&(s=r.enter(`title${i}`),c+=l.move(" "+a),c+=l.move(r.safe(e.title,{before:c,after:a,...l.current()})),c+=l.move(a),s()),u(),c}function Wm(e){const t=e.options.emphasis||"*";if(t!=="*"&&t!=="_")throw new Error("Cannot serialize emphasis with `"+t+"` for `options.emphasis`, expected `*`, or `_`");return t}function pn(e){return"&#x"+e.toString(16).toUpperCase()+";"}function t0(e,t,r){const n=Ir(e),a=Ir(t);return n===void 0?a===void 0?r==="_"?{inside:!0,outside:!0}:{inside:!1,outside:!1}:a===1?{inside:!0,outside:!0}:{inside:!1,outside:!0}:n===1?a===void 0?{inside:!1,outside:!1}:a===1?{inside:!0,outside:!0}:{inside:!1,outside:!1}:a===void 0?{inside:!1,outside:!1}:a===1?{inside:!0,outside:!1}:{inside:!1,outside:!1}}Nl.peek=Xm;function Nl(e,t,r,n){const a=Wm(r),i=r.enter("emphasis"),u=r.createTracker(n),s=u.move(a);let l=u.move(r.containerPhrasing(e,{after:a,before:s,...u.current()}));const c=l.charCodeAt(0),d=t0(n.before.charCodeAt(n.before.length-1),c,a);d.inside&&(l=pn(c)+l.slice(1));const f=l.charCodeAt(l.length-1),g=t0(n.after.charCodeAt(0),f,a);g.inside&&(l=l.slice(0,-1)+pn(f));const p=u.move(a);return i(),r.attentionEncodeSurroundingInfo={after:g.outside,before:d.outside},s+l+p}function Xm(e,t,r){return r.options.emphasis||"*"}function $m(e,t){let r=!1;return b0(e,function(n){if("value"in n&&/\r?\n|\r/.test(n.value)||n.type==="break")return r=!0,Aa}),!!((!e.depth||e.depth<3)&&ni(e)&&(t.options.setext||r))}function Qm(e,t,r,n){const a=Math.max(Math.min(6,e.depth||1),1),i=r.createTracker(n);if($m(e,r)){const d=r.enter("headingSetext"),f=r.enter("phrasing"),g=r.containerPhrasing(e,{...i.current(),before:` -`,after:` -`});return f(),d(),g+` -`+(a===1?"=":"-").repeat(g.length-(Math.max(g.lastIndexOf("\r"),g.lastIndexOf(` -`))+1))}const u="#".repeat(a),s=r.enter("headingAtx"),l=r.enter("phrasing");i.move(u+" ");let c=r.containerPhrasing(e,{before:"# ",after:` -`,...i.current()});return/^[\t ]/.test(c)&&(c=pn(c.charCodeAt(0))+c.slice(1)),c=c?u+" "+c:u,r.options.closeAtx&&(c+=" "+u),l(),s(),c}Dl.peek=Km;function Dl(e){return e.value||""}function Km(){return"<"}Ol.peek=Jm;function Ol(e,t,r,n){const a=di(r),i=a==='"'?"Quote":"Apostrophe",u=r.enter("image");let s=r.enter("label");const l=r.createTracker(n);let c=l.move("![");return c+=l.move(r.safe(e.alt,{before:c,after:"]",...l.current()})),c+=l.move("]("),s(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(s=r.enter("destinationLiteral"),c+=l.move("<"),c+=l.move(r.safe(e.url,{before:c,after:">",...l.current()})),c+=l.move(">")):(s=r.enter("destinationRaw"),c+=l.move(r.safe(e.url,{before:c,after:e.title?" ":")",...l.current()}))),s(),e.title&&(s=r.enter(`title${i}`),c+=l.move(" "+a),c+=l.move(r.safe(e.title,{before:c,after:a,...l.current()})),c+=l.move(a),s()),c+=l.move(")"),u(),c}function Jm(){return"!"}Ll.peek=Zm;function Ll(e,t,r,n){const a=e.referenceType,i=r.enter("imageReference");let u=r.enter("label");const s=r.createTracker(n);let l=s.move("![");const c=r.safe(e.alt,{before:l,after:"]",...s.current()});l+=s.move(c+"]["),u();const d=r.stack;r.stack=[],u=r.enter("reference");const f=r.safe(r.associationId(e),{before:l,after:"]",...s.current()});return u(),r.stack=d,i(),a==="full"||!c||c!==f?l+=s.move(f+"]"):a==="shortcut"?l=l.slice(0,-1):l+=s.move("]"),l}function Zm(){return"!"}Rl.peek=e2;function Rl(e,t,r){let n=e.value||"",a="`",i=-1;for(;new RegExp("(^|[^`])"+a+"([^`]|$)").test(n);)a+="`";for(/[^ \r\n]/.test(n)&&(/^[ \r\n]/.test(n)&&/[ \r\n]$/.test(n)||/^`|`$/.test(n))&&(n=" "+n+" ");++i\u007F]/.test(e.url))}Pl.peek=t2;function Pl(e,t,r,n){const a=di(r),i=a==='"'?"Quote":"Apostrophe",u=r.createTracker(n);let s,l;if(Ml(e,r)){const d=r.stack;r.stack=[],s=r.enter("autolink");let f=u.move("<");return f+=u.move(r.containerPhrasing(e,{before:f,after:">",...u.current()})),f+=u.move(">"),s(),r.stack=d,f}s=r.enter("link"),l=r.enter("label");let c=u.move("[");return c+=u.move(r.containerPhrasing(e,{before:c,after:"](",...u.current()})),c+=u.move("]("),l(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(l=r.enter("destinationLiteral"),c+=u.move("<"),c+=u.move(r.safe(e.url,{before:c,after:">",...u.current()})),c+=u.move(">")):(l=r.enter("destinationRaw"),c+=u.move(r.safe(e.url,{before:c,after:e.title?" ":")",...u.current()}))),l(),e.title&&(l=r.enter(`title${i}`),c+=u.move(" "+a),c+=u.move(r.safe(e.title,{before:c,after:a,...u.current()})),c+=u.move(a),l()),c+=u.move(")"),s(),c}function t2(e,t,r){return Ml(e,r)?"<":"["}Bl.peek=r2;function Bl(e,t,r,n){const a=e.referenceType,i=r.enter("linkReference");let u=r.enter("label");const s=r.createTracker(n);let l=s.move("[");const c=r.containerPhrasing(e,{before:l,after:"]",...s.current()});l+=s.move(c+"]["),u();const d=r.stack;r.stack=[],u=r.enter("reference");const f=r.safe(r.associationId(e),{before:l,after:"]",...s.current()});return u(),r.stack=d,i(),a==="full"||!c||c!==f?l+=s.move(f+"]"):a==="shortcut"?l=l.slice(0,-1):l+=s.move("]"),l}function r2(){return"["}function fi(e){const t=e.options.bullet||"*";if(t!=="*"&&t!=="+"&&t!=="-")throw new Error("Cannot serialize items with `"+t+"` for `options.bullet`, expected `*`, `+`, or `-`");return t}function n2(e){const t=fi(e),r=e.options.bulletOther;if(!r)return t==="*"?"-":"*";if(r!=="*"&&r!=="+"&&r!=="-")throw new Error("Cannot serialize items with `"+r+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(r===t)throw new Error("Expected `bullet` (`"+t+"`) and `bulletOther` (`"+r+"`) to be different");return r}function a2(e){const t=e.options.bulletOrdered||".";if(t!=="."&&t!==")")throw new Error("Cannot serialize items with `"+t+"` for `options.bulletOrdered`, expected `.` or `)`");return t}function Fl(e){const t=e.options.rule||"*";if(t!=="*"&&t!=="-"&&t!=="_")throw new Error("Cannot serialize rules with `"+t+"` for `options.rule`, expected `*`, `-`, or `_`");return t}function i2(e,t,r,n){const a=r.enter("list"),i=r.bulletCurrent;let u=e.ordered?a2(r):fi(r);const s=e.ordered?u==="."?")":".":n2(r);let l=t&&r.bulletLastUsed?u===r.bulletLastUsed:!1;if(!e.ordered){const d=e.children?e.children[0]:void 0;if((u==="*"||u==="-")&&d&&(!d.children||!d.children[0])&&r.stack[r.stack.length-1]==="list"&&r.stack[r.stack.length-2]==="listItem"&&r.stack[r.stack.length-3]==="list"&&r.stack[r.stack.length-4]==="listItem"&&r.indexStack[r.indexStack.length-1]===0&&r.indexStack[r.indexStack.length-2]===0&&r.indexStack[r.indexStack.length-3]===0&&(l=!0),Fl(r)===u&&d){let f=-1;for(;++f-1?t.start:1)+(r.options.incrementListMarker===!1?0:t.children.indexOf(e))+i);let u=i.length+1;(a==="tab"||a==="mixed"&&(t&&t.type==="list"&&t.spread||e.spread))&&(u=Math.ceil(u/4)*4);const s=r.createTracker(n);s.move(i+" ".repeat(u-i.length)),s.shift(u);const l=r.enter("listItem"),c=r.indentLines(r.containerFlow(e,s.current()),d);return l(),c;function d(f,g,p){return g?(p?"":" ".repeat(u))+f:(p?i:i+" ".repeat(u-i.length))+f}}function l2(e,t,r,n){const a=r.enter("paragraph"),i=r.enter("phrasing"),u=r.containerPhrasing(e,n);return i(),a(),u}const o2=vn(["break","delete","emphasis","footnote","footnoteReference","image","imageReference","inlineCode","inlineMath","link","linkReference","mdxJsxTextElement","mdxTextExpression","strong","text","textDirective"]);function c2(e,t,r,n){return(e.children.some(function(u){return o2(u)})?r.containerPhrasing:r.containerFlow).call(r,e,n)}function h2(e){const t=e.options.strong||"*";if(t!=="*"&&t!=="_")throw new Error("Cannot serialize strong with `"+t+"` for `options.strong`, expected `*`, or `_`");return t}Hl.peek=d2;function Hl(e,t,r,n){const a=h2(r),i=r.enter("strong"),u=r.createTracker(n),s=u.move(a+a);let l=u.move(r.containerPhrasing(e,{after:a,before:s,...u.current()}));const c=l.charCodeAt(0),d=t0(n.before.charCodeAt(n.before.length-1),c,a);d.inside&&(l=pn(c)+l.slice(1));const f=l.charCodeAt(l.length-1),g=t0(n.after.charCodeAt(0),f,a);g.inside&&(l=l.slice(0,-1)+pn(f));const p=u.move(a+a);return i(),r.attentionEncodeSurroundingInfo={after:g.outside,before:d.outside},s+l+p}function d2(e,t,r){return r.options.strong||"*"}function f2(e,t,r,n){return r.safe(e.value,n)}function m2(e){const t=e.options.ruleRepetition||3;if(t<3)throw new Error("Cannot serialize rules with repetition `"+t+"` for `options.ruleRepetition`, expected `3` or more");return t}function p2(e,t,r){const n=(Fl(r)+(r.options.ruleSpaces?" ":"")).repeat(m2(r));return r.options.ruleSpaces?n.slice(0,-1):n}const zl={blockquote:Hm,break:Cu,code:Gm,definition:jm,emphasis:Nl,hardBreak:Cu,heading:Qm,html:Dl,image:Ol,imageReference:Ll,inlineCode:Rl,link:Pl,linkReference:Bl,list:i2,listItem:s2,paragraph:l2,root:c2,strong:Hl,text:f2,thematicBreak:p2};function g2(){return{enter:{table:b2,tableData:_u,tableHeader:_u,tableRow:T2},exit:{codeText:x2,table:E2,tableData:Z0,tableHeader:Z0,tableRow:Z0}}}function b2(e){const t=e._align;this.enter({type:"table",align:t.map(function(r){return r==="none"?null:r}),children:[]},e),this.data.inTable=!0}function E2(e){this.exit(e),this.data.inTable=void 0}function T2(e){this.enter({type:"tableRow",children:[]},e)}function Z0(e){this.exit(e)}function _u(e){this.enter({type:"tableCell",children:[]},e)}function x2(e){let t=this.resume();this.data.inTable&&(t=t.replace(/\\([\\|])/g,y2));const r=this.stack[this.stack.length-1];r.type,r.value=t,this.exit(e)}function y2(e,t){return t==="|"?t:e}function v2(e){const t=e||{},r=t.tableCellPadding,n=t.tablePipeAlign,a=t.stringLength,i=r?" ":"|";return{unsafe:[{character:"\r",inConstruct:"tableCell"},{character:` -`,inConstruct:"tableCell"},{atBreak:!0,character:"|",after:"[ :-]"},{character:"|",inConstruct:"tableCell"},{atBreak:!0,character:":",after:"-"},{atBreak:!0,character:"-",after:"[:|-]"}],handlers:{inlineCode:g,table:u,tableCell:l,tableRow:s}};function u(p,x,S,D){return c(d(p,S,D),p.align)}function s(p,x,S,D){const _=f(p,S,D),N=c([_]);return N.slice(0,N.indexOf(` -`))}function l(p,x,S,D){const _=S.enter("tableCell"),N=S.enter("phrasing"),M=S.containerPhrasing(p,{...D,before:i,after:i});return N(),_(),M}function c(p,x){return Bm(p,{align:x,alignDelimiters:n,padding:r,stringLength:a})}function d(p,x,S){const D=p.children;let _=-1;const N=[],M=x.enter("table");for(;++_0&&!r&&(e[e.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),r}const z2={tokenize:X2,partial:!0};function U2(){return{document:{91:{name:"gfmFootnoteDefinition",tokenize:V2,continuation:{tokenize:j2},exit:W2}},text:{91:{name:"gfmFootnoteCall",tokenize:G2},93:{name:"gfmPotentialFootnoteCall",add:"after",tokenize:q2,resolveTo:Y2}}}}function q2(e,t,r){const n=this;let a=n.events.length;const i=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]);let u;for(;a--;){const l=n.events[a][1];if(l.type==="labelImage"){u=l;break}if(l.type==="gfmFootnoteCall"||l.type==="labelLink"||l.type==="label"||l.type==="image"||l.type==="link")break}return s;function s(l){if(!u||!u._balanced)return r(l);const c=xt(n.sliceSerialize({start:u.end,end:n.now()}));return c.codePointAt(0)!==94||!i.includes(c.slice(1))?r(l):(e.enter("gfmFootnoteCallLabelMarker"),e.consume(l),e.exit("gfmFootnoteCallLabelMarker"),t(l))}}function Y2(e,t){let r=e.length;for(;r--;)if(e[r][1].type==="labelImage"&&e[r][0]==="enter"){e[r][1];break}e[r+1][1].type="data",e[r+3][1].type="gfmFootnoteCallLabelMarker";const n={type:"gfmFootnoteCall",start:Object.assign({},e[r+3][1].start),end:Object.assign({},e[e.length-1][1].end)},a={type:"gfmFootnoteCallMarker",start:Object.assign({},e[r+3][1].end),end:Object.assign({},e[r+3][1].end)};a.end.column++,a.end.offset++,a.end._bufferIndex++;const i={type:"gfmFootnoteCallString",start:Object.assign({},a.end),end:Object.assign({},e[e.length-1][1].start)},u={type:"chunkString",contentType:"string",start:Object.assign({},i.start),end:Object.assign({},i.end)},s=[e[r+1],e[r+2],["enter",n,t],e[r+3],e[r+4],["enter",a,t],["exit",a,t],["enter",i,t],["enter",u,t],["exit",u,t],["exit",i,t],e[e.length-2],e[e.length-1],["exit",n,t]];return e.splice(r,e.length-r+1,...s),e}function G2(e,t,r){const n=this,a=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]);let i=0,u;return s;function s(f){return e.enter("gfmFootnoteCall"),e.enter("gfmFootnoteCallLabelMarker"),e.consume(f),e.exit("gfmFootnoteCallLabelMarker"),l}function l(f){return f!==94?r(f):(e.enter("gfmFootnoteCallMarker"),e.consume(f),e.exit("gfmFootnoteCallMarker"),e.enter("gfmFootnoteCallString"),e.enter("chunkString").contentType="string",c)}function c(f){if(i>999||f===93&&!u||f===null||f===91||ve(f))return r(f);if(f===93){e.exit("chunkString");const g=e.exit("gfmFootnoteCallString");return a.includes(xt(n.sliceSerialize(g)))?(e.enter("gfmFootnoteCallLabelMarker"),e.consume(f),e.exit("gfmFootnoteCallLabelMarker"),e.exit("gfmFootnoteCall"),t):r(f)}return ve(f)||(u=!0),i++,e.consume(f),f===92?d:c}function d(f){return f===91||f===92||f===93?(e.consume(f),i++,c):c(f)}}function V2(e,t,r){const n=this,a=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]);let i,u=0,s;return l;function l(x){return e.enter("gfmFootnoteDefinition")._container=!0,e.enter("gfmFootnoteDefinitionLabel"),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(x),e.exit("gfmFootnoteDefinitionLabelMarker"),c}function c(x){return x===94?(e.enter("gfmFootnoteDefinitionMarker"),e.consume(x),e.exit("gfmFootnoteDefinitionMarker"),e.enter("gfmFootnoteDefinitionLabelString"),e.enter("chunkString").contentType="string",d):r(x)}function d(x){if(u>999||x===93&&!s||x===null||x===91||ve(x))return r(x);if(x===93){e.exit("chunkString");const S=e.exit("gfmFootnoteDefinitionLabelString");return i=xt(n.sliceSerialize(S)),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(x),e.exit("gfmFootnoteDefinitionLabelMarker"),e.exit("gfmFootnoteDefinitionLabel"),g}return ve(x)||(s=!0),u++,e.consume(x),x===92?f:d}function f(x){return x===91||x===92||x===93?(e.consume(x),u++,d):d(x)}function g(x){return x===58?(e.enter("definitionMarker"),e.consume(x),e.exit("definitionMarker"),a.includes(i)||a.push(i),fe(e,p,"gfmFootnoteDefinitionWhitespace")):r(x)}function p(x){return t(x)}}function j2(e,t,r){return e.check(yn,t,e.attempt(z2,t,r))}function W2(e){e.exit("gfmFootnoteDefinition")}function X2(e,t,r){const n=this;return fe(e,a,"gfmFootnoteDefinitionIndent",5);function a(i){const u=n.events[n.events.length-1];return u&&u[1].type==="gfmFootnoteDefinitionIndent"&&u[2].sliceSerialize(u[1],!0).length===4?t(i):r(i)}}function $2(e){let r=(e||{}).singleTilde;const n={name:"strikethrough",tokenize:i,resolveAll:a};return r==null&&(r=!0),{text:{126:n},insideSpan:{null:[n]},attentionMarkers:{null:[126]}};function a(u,s){let l=-1;for(;++l1?l(x):(u.consume(x),f++,p);if(f<2&&!r)return l(x);const D=u.exit("strikethroughSequenceTemporary"),_=Ir(x);return D._open=!_||_===2&&!!S,D._close=!S||S===2&&!!_,s(x)}}}class Q2{constructor(){this.map=[]}add(t,r,n){K2(this,t,r,n)}consume(t){if(this.map.sort(function(i,u){return i[0]-u[0]}),this.map.length===0)return;let r=this.map.length;const n=[];for(;r>0;)r-=1,n.push(t.slice(this.map[r][0]+this.map[r][1]),this.map[r][2]),t.length=this.map[r][0];n.push(t.slice()),t.length=0;let a=n.pop();for(;a;){for(const i of a)t.push(i);a=n.pop()}this.map.length=0}}function K2(e,t,r,n){let a=0;if(!(r===0&&n.length===0)){for(;a-1;){const ne=n.events[J][1].type;if(ne==="lineEnding"||ne==="linePrefix")J--;else break}const Q=J>-1?n.events[J][1].type:null,be=Q==="tableHead"||Q==="tableRow"?L:l;return be===L&&n.parser.lazy[n.now().line]?r(R):be(R)}function l(R){return e.enter("tableHead"),e.enter("tableRow"),c(R)}function c(R){return R===124||(u=!0,i+=1),d(R)}function d(R){return R===null?r(R):ae(R)?i>1?(i=0,n.interrupt=!0,e.exit("tableRow"),e.enter("lineEnding"),e.consume(R),e.exit("lineEnding"),p):r(R):ge(R)?fe(e,d,"whitespace")(R):(i+=1,u&&(u=!1,a+=1),R===124?(e.enter("tableCellDivider"),e.consume(R),e.exit("tableCellDivider"),u=!0,d):(e.enter("data"),f(R)))}function f(R){return R===null||R===124||ve(R)?(e.exit("data"),d(R)):(e.consume(R),R===92?g:f)}function g(R){return R===92||R===124?(e.consume(R),f):f(R)}function p(R){return n.interrupt=!1,n.parser.lazy[n.now().line]?r(R):(e.enter("tableDelimiterRow"),u=!1,ge(R)?fe(e,x,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(R):x(R))}function x(R){return R===45||R===58?D(R):R===124?(u=!0,e.enter("tableCellDivider"),e.consume(R),e.exit("tableCellDivider"),S):j(R)}function S(R){return ge(R)?fe(e,D,"whitespace")(R):D(R)}function D(R){return R===58?(i+=1,u=!0,e.enter("tableDelimiterMarker"),e.consume(R),e.exit("tableDelimiterMarker"),_):R===45?(i+=1,_(R)):R===null||ae(R)?W(R):j(R)}function _(R){return R===45?(e.enter("tableDelimiterFiller"),N(R)):j(R)}function N(R){return R===45?(e.consume(R),N):R===58?(u=!0,e.exit("tableDelimiterFiller"),e.enter("tableDelimiterMarker"),e.consume(R),e.exit("tableDelimiterMarker"),M):(e.exit("tableDelimiterFiller"),M(R))}function M(R){return ge(R)?fe(e,W,"whitespace")(R):W(R)}function W(R){return R===124?x(R):R===null||ae(R)?!u||a!==i?j(R):(e.exit("tableDelimiterRow"),e.exit("tableHead"),t(R)):j(R)}function j(R){return r(R)}function L(R){return e.enter("tableRow"),ee(R)}function ee(R){return R===124?(e.enter("tableCellDivider"),e.consume(R),e.exit("tableCellDivider"),ee):R===null||ae(R)?(e.exit("tableRow"),t(R)):ge(R)?fe(e,ee,"whitespace")(R):(e.enter("data"),re(R))}function re(R){return R===null||R===124||ve(R)?(e.exit("data"),ee(R)):(e.consume(R),R===92?K:re)}function K(R){return R===92||R===124?(e.consume(R),re):re(R)}}function t4(e,t){let r=-1,n=!0,a=0,i=[0,0,0,0],u=[0,0,0,0],s=!1,l=0,c,d,f;const g=new Q2;for(;++rr[2]+1){const x=r[2]+1,S=r[3]-r[2]-1;e.add(x,S,[])}}e.add(r[3]+1,0,[["exit",f,t]])}return a!==void 0&&(i.end=Object.assign({},wr(t.events,a)),e.add(a,0,[["exit",i,t]]),i=void 0),i}function Nu(e,t,r,n,a){const i=[],u=wr(t.events,r);a&&(a.end=Object.assign({},u),i.push(["exit",a,t])),n.end=Object.assign({},u),i.push(["exit",n,t]),e.add(r+1,0,i)}function wr(e,t){const r=e[t],n=r[0]==="enter"?"start":"end";return r[1][n]}const r4={name:"tasklistCheck",tokenize:a4};function n4(){return{text:{91:r4}}}function a4(e,t,r){const n=this;return a;function a(l){return n.previous!==null||!n._gfmTasklistFirstContentOfListItem?r(l):(e.enter("taskListCheck"),e.enter("taskListCheckMarker"),e.consume(l),e.exit("taskListCheckMarker"),i)}function i(l){return ve(l)?(e.enter("taskListCheckValueUnchecked"),e.consume(l),e.exit("taskListCheckValueUnchecked"),u):l===88||l===120?(e.enter("taskListCheckValueChecked"),e.consume(l),e.exit("taskListCheckValueChecked"),u):r(l)}function u(l){return l===93?(e.enter("taskListCheckMarker"),e.consume(l),e.exit("taskListCheckMarker"),e.exit("taskListCheck"),s):r(l)}function s(l){return ae(l)?t(l):ge(l)?e.check({tokenize:i4},t,r)(l):r(l)}}function i4(e,t,r){return fe(e,n,"whitespace");function n(a){return a===null?r(a):t(a)}}function u4(e){return rl([D2(),U2(),$2(e),Z2(),n4()])}const s4={};function l4(e){const t=this,r=e||s4,n=t.data(),a=n.micromarkExtensions||(n.micromarkExtensions=[]),i=n.fromMarkdownExtensions||(n.fromMarkdownExtensions=[]),u=n.toMarkdownExtensions||(n.toMarkdownExtensions=[]);a.push(u4(r)),i.push(C2()),u.push(_2(r))}function o4(){return{enter:{mathFlow:e,mathFlowFenceMeta:t,mathText:i},exit:{mathFlow:a,mathFlowFence:n,mathFlowFenceMeta:r,mathFlowValue:s,mathText:u,mathTextData:s}};function e(l){const c={type:"element",tagName:"code",properties:{className:["language-math","math-display"]},children:[]};this.enter({type:"math",meta:null,value:"",data:{hName:"pre",hChildren:[c]}},l)}function t(){this.buffer()}function r(){const l=this.resume(),c=this.stack[this.stack.length-1];c.type,c.meta=l}function n(){this.data.mathFlowInside||(this.buffer(),this.data.mathFlowInside=!0)}function a(l){const c=this.resume().replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,""),d=this.stack[this.stack.length-1];d.type,this.exit(l),d.value=c;const f=d.data.hChildren[0];f.type,f.tagName,f.children.push({type:"text",value:c}),this.data.mathFlowInside=void 0}function i(l){this.enter({type:"inlineMath",value:"",data:{hName:"code",hProperties:{className:["language-math","math-inline"]},hChildren:[]}},l),this.buffer()}function u(l){const c=this.resume(),d=this.stack[this.stack.length-1];d.type,this.exit(l),d.value=c,d.data.hChildren.push({type:"text",value:c})}function s(l){this.config.enter.data.call(this,l),this.config.exit.data.call(this,l)}}function c4(e){let t=(e||{}).singleDollarTextMath;return t==null&&(t=!0),n.peek=a,{unsafe:[{character:"\r",inConstruct:"mathFlowMeta"},{character:` -`,inConstruct:"mathFlowMeta"},{character:"$",after:t?void 0:"\\$",inConstruct:"phrasing"},{character:"$",inConstruct:"mathFlowMeta"},{atBreak:!0,character:"$",after:"\\$"}],handlers:{math:r,inlineMath:n}};function r(i,u,s,l){const c=i.value||"",d=s.createTracker(l),f="$".repeat(Math.max(Il(c,"$")+1,2)),g=s.enter("mathFlow");let p=d.move(f);if(i.meta){const x=s.enter("mathFlowMeta");p+=d.move(s.safe(i.meta,{after:` -`,before:p,encode:["$"],...d.current()})),x()}return p+=d.move(` -`),c&&(p+=d.move(c+` -`)),p+=d.move(f),g(),p}function n(i,u,s){let l=i.value||"",c=1;for(t||c++;new RegExp("(^|[^$])"+"\\$".repeat(c)+"([^$]|$)").test(l);)c++;const d="$".repeat(c);/[^ \r\n]/.test(l)&&(/^[ \r\n]/.test(l)&&/[ \r\n]$/.test(l)||/^\$|\$$/.test(l))&&(l=" "+l+" ");let f=-1;for(;++f15?c="…"+s.slice(a-15,a):c=s.slice(0,a);var d;i+15e.replace(E4,"-$1").toLowerCase(),x4={"&":"&",">":">","<":"<",'"':""","'":"'"},y4=/[&><"']/g,Ve=e=>String(e).replace(y4,t=>x4[t]),$n=e=>e.type==="ordgroup"||e.type==="color"?e.body.length===1?$n(e.body[0]):e:e.type==="font"?$n(e.body):e,v4=new Set(["mathord","textord","atom"]),qt=e=>v4.has($n(e).type),A4=e=>{var t=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return t?t[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(t[1])?null:t[1].toLowerCase():"_relative"},_a={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:e=>"#"+e},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(e,t)=>(t.push(e),t)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:e=>Math.max(0,e),cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:e=>Math.max(0,e),cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:e=>Math.max(0,e),cli:"-e, --max-expand ",cliProcessor:e=>e==="Infinity"?1/0:parseInt(e)},globalGroup:{type:"boolean",cli:!1}};function k4(e){if(typeof e!="string")return e.enum[0];switch(e){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{};default:throw new Error("Unexpected schema type; settings must declare an explicit default.")}}function S4(e){if(e.default!==void 0)return e.default;var t=Array.isArray(e.type)?e.type[0]:e.type;return k4(t)}function w4(e,t,r,n){var a=r[t];e[t]=a!==void 0?n.processor?n.processor(a):a:S4(n)}class pi{constructor(t){t===void 0&&(t={}),this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,t=t||{};for(var r of Object.keys(_a)){var n=_a[r];n&&w4(this,r,t,n)}}reportNonstrict(t,r,n){var a=this.strict;if(typeof a=="function"&&(a=a(t,r,n)),!(!a||a==="ignore")){if(a===!0||a==="error")throw new Y("LaTeX-incompatible input and strict mode is set to 'error': "+(r+" ["+t+"]"),n);a==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+t+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+a+"': "+r+" ["+t+"]"))}}useStrictBehavior(t,r,n){var a=this.strict;if(typeof a=="function")try{a=a(t,r,n)}catch{a="error"}return!a||a==="ignore"?!1:a===!0||a==="error"?!0:a==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+t+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+a+"': "+r+" ["+t+"]")),!1)}isTrusted(t){if("url"in t&&t.url&&!t.protocol){var r=A4(t.url);if(r==null)return!1;t.protocol=r}var n=typeof this.trust=="function"?this.trust(t):this.trust;return!!n}}class jt{constructor(t,r,n){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=t,this.size=r,this.cramped=n}sup(){return kt[C4[this.id]]}sub(){return kt[_4[this.id]]}fracNum(){return kt[I4[this.id]]}fracDen(){return kt[N4[this.id]]}cramp(){return kt[D4[this.id]]}text(){return kt[O4[this.id]]}isTight(){return this.size>=2}}var gi=0,r0=1,_r=2,Ht=3,gn=4,gt=5,Dr=6,Je=7,kt=[new jt(gi,0,!1),new jt(r0,0,!0),new jt(_r,1,!1),new jt(Ht,1,!0),new jt(gn,2,!1),new jt(gt,2,!0),new jt(Dr,3,!1),new jt(Je,3,!0)],C4=[gn,gt,gn,gt,Dr,Je,Dr,Je],_4=[gt,gt,gt,gt,Je,Je,Je,Je],I4=[_r,Ht,gn,gt,Dr,Je,Dr,Je],N4=[Ht,Ht,gt,gt,Je,Je,Je,Je],D4=[r0,r0,Ht,Ht,gt,gt,Je,Je],O4=[gi,r0,_r,Ht,_r,Ht,_r,Ht],oe={DISPLAY:kt[gi],TEXT:kt[_r],SCRIPT:kt[gn],SCRIPTSCRIPT:kt[Dr]},Ia=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];function L4(e){for(var t=0;t=a[0]&&e<=a[1])return r.name}return null}var Qn=[];Ia.forEach(e=>e.blocks.forEach(t=>Qn.push(...t)));function $l(e){for(var t=0;t=Qn[t]&&e<=Qn[t+1])return!0;return!1}var Fe=e=>e+" "+e,kr=80,R4=function(t,r){return"M95,"+(622+t+r)+` -c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14 -c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54 -c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10 -s173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429 -c69,-144,104.5,-217.7,106.5,-221 -l`+t/2.075+" -"+t+` -c5.3,-9.3,12,-14,20,-14 -H400000v`+(40+t)+`H845.2724 -s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7 -c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z -M`+(834+t)+" "+r+"h400000v"+(40+t)+"h-400000z"},M4=function(t,r){return"M263,"+(601+t+r)+`c0.7,0,18,39.7,52,119 -c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120 -c340,-704.7,510.7,-1060.3,512,-1067 -l`+t/2.084+" -"+t+` -c4.7,-7.3,11,-11,19,-11 -H40000v`+(40+t)+`H1012.3 -s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232 -c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1 -s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26 -c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z -M`+(1001+t)+" "+r+"h400000v"+(40+t)+"h-400000z"},P4=function(t,r){return"M983 "+(10+t+r)+` -l`+t/3.13+" -"+t+` -c4,-6.7,10,-10,18,-10 H400000v`+(40+t)+` -H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7 -s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744 -c-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30 -c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722 -c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5 -c53.7,-170.3,84.5,-266.8,92.5,-289.5z -M`+(1001+t)+" "+r+"h400000v"+(40+t)+"h-400000z"},B4=function(t,r){return"M424,"+(2398+t+r)+` -c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514 -c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20 -s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121 -s209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081 -l`+t/4.223+" -"+t+`c4,-6.7,10,-10,18,-10 H400000 -v`+(40+t)+`H1014.6 -s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185 -c-2,6,-10,9,-24,9 -c-8,0,-12,-0.7,-12,-2z M`+(1001+t)+" "+r+` -h400000v`+(40+t)+"h-400000z"},F4=function(t,r){return"M473,"+(2713+t+r)+` -c339.3,-1799.3,509.3,-2700,510,-2702 l`+t/5.298+" -"+t+` -c3.3,-7.3,9.3,-11,18,-11 H400000v`+(40+t)+`H1017.7 -s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9 -c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200 -c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26 -s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104, -606zM`+(1001+t)+" "+r+"h400000v"+(40+t)+"H1017.7z"},H4=function(t){var r=t/2;return"M400000 "+t+" H0 L"+r+" 0 l65 45 L145 "+(t-80)+" H400000z"},z4=function(t,r,n){var a=n-54-r-t;return"M702 "+(t+r)+"H400000"+(40+t)+` -H742v`+a+`l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1 -h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170 -c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667 -219 661 l218 661zM702 `+r+"H400000v"+(40+t)+"H742z"},U4=function(t,r,n){r=1e3*r;var a="";switch(t){case"sqrtMain":a=R4(r,kr);break;case"sqrtSize1":a=M4(r,kr);break;case"sqrtSize2":a=P4(r,kr);break;case"sqrtSize3":a=B4(r,kr);break;case"sqrtSize4":a=F4(r,kr);break;case"sqrtTall":a=z4(r,kr,n)}return a},q4=function(t,r){switch(t){case"⎜":return Fe("M291 0 H417 V"+r+" H291z");case"∣":return Fe("M145 0 H188 V"+r+" H145z");case"∥":return Fe("M145 0 H188 V"+r+" H145z")+Fe("M367 0 H410 V"+r+" H367z");case"⎟":return Fe("M457 0 H583 V"+r+" H457z");case"⎢":return Fe("M319 0 H403 V"+r+" H319z");case"⎥":return Fe("M263 0 H347 V"+r+" H263z");case"⎪":return Fe("M384 0 H504 V"+r+" H384z");case"⏐":return Fe("M312 0 H355 V"+r+" H312z");case"‖":return Fe("M257 0 H300 V"+r+" H257z")+Fe("M478 0 H521 V"+r+" H478z");default:return""}},Ou={doubleleftarrow:`M262 157 -l10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3 - 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28 - 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5 -c2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5 - 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87 --86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7 --2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z -m8 0v40h399730v-40zm0 194v40h399730v-40z`,doublerightarrow:`M399738 392l --10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5 - 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88 --33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68 --17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18 --13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782 -c-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3 --107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z`,leftarrow:`M400000 241H110l3-3c68.7-52.7 113.7-120 - 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8 --5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247 -c-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208 - 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3 - 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202 - l-3-3h399890zM100 241v40h399900v-40z`,leftbrace:`M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117 --45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7 - 5-6 9-10 13-.7 1-7.3 1-20 1H6z`,leftbraceunder:`M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13 - 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688 - 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7 --331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z`,leftgroup:`M400000 80 -H435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0 - 435 0h399565z`,leftgroupunder:`M400000 262 -H435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219 - 435 219h399565z`,leftharpoon:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3 --3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5 --18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7 --196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z`,leftharpoonplus:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5 - 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3 --4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7 --10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z -m0 0v40h400000v-40z`,leftharpoondown:`M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333 - 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5 - 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667 --152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z`,leftharpoondownplus:`M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12 - 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7 --2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0 -v40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z`,lefthook:`M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5 --83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3 --68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21 - 71.5 23h399859zM103 281v-40h399897v40z`,leftlinesegment:Fe("M40 281 V428 H0 V94 H40 V241 H400000 v40z"),leftbracketunder:Fe("M0 0 h120 V290 H399995 v120 H0z"),leftbracketover:Fe("M0 440 h120 V150 H399995 v-120 H0z"),leftmapsto:Fe("M40 281 V448H0V74H40V241H400000v40z"),leftToFrom:`M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23 --.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8 -c28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3 - 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z`,longequal:Fe("M0 50 h400000 v40H0z m0 194h40000v40H0z"),midbrace:`M200428 334 -c-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14 --53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7 - 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11 - 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z`,midbraceunder:`M199572 214 -c100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14 - 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3 - 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0 --5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z`,oiintSize1:`M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6 --320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z -m368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8 -60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z`,oiintSize2:`M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8 --451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z -m502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2 -c0 110 84 276 504 276s502.4-166 502.4-276z`,oiiintSize1:`M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6 --480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z -m525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0 -85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z`,oiiintSize2:`M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8 --707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z -m770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1 -c0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z`,rightarrow:`M0 241v40h399891c-47.3 35.3-84 78-110 128 --16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 - 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 - 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85 --40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 --12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 - 151.7 139 205zm0 0v40h399900v-40z`,rightbrace:`M400000 542l --6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5 -s-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1 -c124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z`,rightbraceunder:`M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3 - 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237 --174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z`,rightgroup:`M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0 - 3-1 3-3v-38c-76-158-257-219-435-219H0z`,rightgroupunder:`M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18 - 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z`,rightharpoon:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3 --3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2 --10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 - 69.2 92 94.5zm0 0v40h399900v-40z`,rightharpoonplus:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11 --18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7 - 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z -m0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z`,rightharpoondown:`M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8 - 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5 --7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95 --27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z`,rightharpoondownplus:`M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8 - 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 - 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3 --64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z -m0-194v40h400000v-40zm0 0v40h400000v-40z`,righthook:`M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3 - 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0 --13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21 - 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z`,rightlinesegment:Fe("M399960 241 V94 h40 V428 h-40 V281 H0 v-40z"),rightbracketunder:Fe("M399995 0 h-120 V290 H0 v120 H400000z"),rightbracketover:Fe("M399995 440 h-120 V150 H0 v-120 H399995z"),rightToFrom:`M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23 - 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32 --52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142 --167z M100 147v40h399900v-40zM0 341v40h399900v-40z`,twoheadleftarrow:`M0 167c68 40 - 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69 --70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3 --40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19 --37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101 - 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z`,twoheadrightarrow:`M400000 167 -c-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3 - 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42 - 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333 --19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70 - 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z`,tilde1:`M200 55.538c-77 0-168 73.953-177 73.953-3 0-7 --2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0 - 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0 - 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128 --68.267.847-113-73.952-191-73.952z`,tilde2:`M344 55.266c-142 0-300.638 81.316-311.5 86.418 --8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9 - 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114 -c1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751 - 181.476 676 181.476c-149 0-189-126.21-332-126.21z`,tilde3:`M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457 --11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0 - 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697 - 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696 - -338 0-409-156.573-744-156.573z`,tilde4:`M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345 --11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409 - 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9 - 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409 - -175.236-744-175.236z`,vec:`M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5 -3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11 -10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63 --1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1 --7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59 -H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359 -c-16-25.333-24-45-24-59z`,widehat1:`M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22 -c-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z`,widehat2:`M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10 --11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat3:`M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10 --11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat4:`M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10 --11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widecheck1:`M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1, --5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z`,widecheck2:`M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, --11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck3:`M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, --11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck4:`M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, --11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,baraboveleftarrow:`M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202 -c4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5 -c-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130 -s-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47 -121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6 -s2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11 -c0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z -M100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z`,rightarrowabovebar:`M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32 --27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0 -13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39 --84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5 --119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 --12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 -151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z`,baraboveshortleftharpoon:`M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 -c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17 -c2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21 -c-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40 -c-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z -M0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z`,rightharpoonaboveshortbar:`M0,241 l0,40c399126,0,399993,0,399993,0 -c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, --231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 -c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z -M0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z`,shortbaraboveleftharpoon:`M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 -c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9, -1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7, --152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z -M93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z`,shortrightharpoonabovebar:`M53,241l0,40c398570,0,399437,0,399437,0 -c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, --231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 -c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z -M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`},Y4=function(t,r){switch(t){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v1759 v84 h347 v-84 -H403z M403 1759 V0 H319 V1759 v`+r+" v1759 v84 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+r+` v1759 H0 v84 H347z -M347 1759 V0 H263 V1759 v`+r+" v1759 h84z";case"vert":return"M145 15 v585 v"+r+` v585 c2.667,10,9.667,15,21,15 -c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 -c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+r+" v585 h43z";case"doublevert":return"M145 15 v585 v"+r+` v585 c2.667,10,9.667,15,21,15 -c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 -c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+r+` v585 h43z -M367 15 v585 v`+r+` v585 c2.667,10,9.667,15,21,15 -c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 -c-10,0,-16.667,5,-20,15z M410 15 H367 v585 v`+r+" v585 h43z";case"lfloor":return"M319 602 V0 H403 V602 v"+r+` v1715 h263 v84 H319z -MM319 602 V0 H403 V602 v`+r+" v1715 H319z";case"rfloor":return"M319 602 V0 H403 V602 v"+r+` v1799 H0 v-84 H319z -MM319 602 V0 H403 V602 v`+r+" v1715 H319z";case"lceil":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v602 h84z -M403 1759 V0 H319 V1759 v`+r+" v602 h84z";case"rceil":return"M347 1759 V0 H0 V84 H263 V1759 v"+r+` v602 h84z -M347 1759 V0 h-84 V1759 v`+r+" v602 h84z";case"lparen":return`M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1 -c-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349, --36,557 l0,`+(r+84)+`c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210, -949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9 -c0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5, --544.7,-112.5,-882c-2,-104,-3,-167,-3,-189 -l0,-`+(r+92)+`c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3, --210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z`;case"rparen":return`M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3, -63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5 -c11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,`+(r+9)+` -c-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664 -c-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11 -c0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17 -c242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558 -l0,-`+(r+144)+`c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7, --470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`;default:throw new Error("Unknown stretchy delimiter.")}};function G4(e){return"toText"in e}class Br{constructor(t){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=t,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(t){return this.classes.includes(t)}toNode(){for(var t=document.createDocumentFragment(),r=0;r{if(G4(t))return t.toText();throw new Error("Expected MathDomNode with toText, got "+t.constructor.name)}).join("")}}var Na={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800},V4={ex:!0,em:!0,mu:!0},Ql=function(t){return typeof t!="string"&&(t=t.unit),t in Na||t in V4||t==="ex"},Ie=function(t,r){var n;if(t.unit in Na)n=Na[t.unit]/r.fontMetrics().ptPerEm/r.sizeMultiplier;else if(t.unit==="mu")n=r.fontMetrics().cssEmPerMu;else{var a;if(r.style.isTight()?a=r.havingStyle(r.style.text()):a=r,t.unit==="ex")n=a.fontMetrics().xHeight;else if(t.unit==="em")n=a.fontMetrics().quad;else throw new Y("Invalid unit: '"+t.unit+"'");a!==r&&(n*=a.sizeMultiplier/r.sizeMultiplier)}return Math.min(t.number*n,r.maxSize)},V=function(t){return+t.toFixed(4)+"em"},Jt=function(t){return t.filter(r=>r).join(" ")},bi=function(t){var r="";for(var n of Object.keys(t)){var a=t[n];a!==void 0&&(r+=T4(n)+":"+a+";")}return r},Kl=function(t,r,n){if(this.classes=t||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=n||{},r){r.style.isTight()&&this.classes.push("mtight");var a=r.getColor();a&&(this.style.color=a)}},Jl=function(t){var r=document.createElement(t);r.className=Jt(this.classes),Object.assign(r.style,this.style);for(var n of Object.keys(this.attributes))r.setAttribute(n,this.attributes[n]);for(var a=0;a/=\x00-\x1f]/,Zl=function(t){var r="<"+t;this.classes.length&&(r+=' class="'+Ve(Jt(this.classes))+'"');var n=bi(this.style);n&&(r+=' style="'+Ve(n)+'"');for(var a of Object.keys(this.attributes)){if(j4.test(a))throw new Y("Invalid attribute name '"+a+"'");r+=" "+a+'="'+Ve(this.attributes[a])+'"'}r+=">";for(var i=0;i",r};class Fr{constructor(t,r,n,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,this.italic=void 0,Kl.call(this,t,n,a),this.children=r||[]}setAttribute(t,r){this.attributes[t]=r}hasClass(t){return this.classes.includes(t)}toNode(){return Jl.call(this,"span")}toMarkup(){return Zl.call(this,"span")}}class E0{constructor(t,r,n,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,Kl.call(this,r,a),this.children=n||[],this.setAttribute("href",t)}setAttribute(t,r){this.attributes[t]=r}hasClass(t){return this.classes.includes(t)}toNode(){return Jl.call(this,"a")}toMarkup(){return Zl.call(this,"a")}}class W4{constructor(t,r,n){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=r,this.src=t,this.classes=["mord"],this.height=0,this.depth=0,this.maxFontSize=0,this.style=n}hasClass(t){return this.classes.includes(t)}toNode(){var t=document.createElement("img");return t.src=this.src,t.alt=this.alt,t.className="mord",Object.assign(t.style,this.style),t}toMarkup(){var t=''+Ve(this.alt)+'0&&(r=document.createElement("span"),r.style.marginRight=V(this.italic)),this.classes.length>0&&(r=r||document.createElement("span"),r.className=Jt(this.classes)),Object.keys(this.style).length>0&&(r=r||document.createElement("span"),Object.assign(r.style,this.style)),r?(r.appendChild(t),r):t}toMarkup(){var t=!1,r="0&&(n+="margin-right:"+V(this.italic)+";"),n+=bi(this.style),n&&(t=!0,r+=' style="'+Ve(n)+'"');var a=Ve(this.text);return t?(r+=">",r+=a,r+="",r):a}}class zt{constructor(t,r){this.children=void 0,this.attributes=void 0,this.children=t||[],this.attributes=r||{}}toNode(){var t="http://www.w3.org/2000/svg",r=document.createElementNS(t,"svg");for(var n of Object.keys(this.attributes))r.setAttribute(n,this.attributes[n]);for(var a=0;a':''}}class Da{constructor(t){this.attributes=void 0,this.attributes=t||{}}toNode(){var t="http://www.w3.org/2000/svg",r=document.createElementNS(t,"line");for(var n of Object.keys(this.attributes))r.setAttribute(n,this.attributes[n]);return r}toMarkup(){var t=" but got "+String(e)+".")}var K4=e=>e instanceof Fr||e instanceof E0||e instanceof Br,wt={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},Hn={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},Lu={Å:"A",Ð:"D",Þ:"o",å:"a",ð:"d",þ:"o",А:"A",Б:"B",В:"B",Г:"F",Д:"A",Е:"E",Ж:"K",З:"3",И:"N",Й:"N",К:"K",Л:"N",М:"M",Н:"H",О:"O",П:"N",Р:"P",С:"C",Т:"T",У:"y",Ф:"O",Х:"X",Ц:"U",Ч:"h",Ш:"W",Щ:"W",Ъ:"B",Ы:"X",Ь:"B",Э:"3",Ю:"X",Я:"R",а:"a",б:"b",в:"a",г:"r",д:"y",е:"e",ж:"m",з:"e",и:"n",й:"n",к:"n",л:"n",м:"m",н:"n",о:"o",п:"n",р:"p",с:"c",т:"o",у:"y",ф:"b",х:"x",ц:"n",ч:"n",ш:"w",щ:"w",ъ:"a",ы:"m",ь:"a",э:"e",ю:"m",я:"r"};function J4(e,t){wt[e]=t}function Ei(e,t,r){if(!wt[t])throw new Error("Font metrics not found for font: "+t+".");var n=e.charCodeAt(0),a=wt[t][n];if(!a&&e[0]in Lu&&(n=Lu[e[0]].charCodeAt(0),a=wt[t][n]),!a&&r==="text"&&$l(n)&&(a=wt[t][77]),a)return{depth:a[0],height:a[1],italic:a[2],skew:a[3],width:a[4]}}var ea={};function Z4(e){var t;if(e>=5?t=0:e>=3?t=1:t=2,!ea[t]){var r=ea[t]={cssEmPerMu:Hn.quad[t]/18};for(var n in Hn)Hn.hasOwnProperty(n)&&(r[n]=Hn[n][t])}return ea[t]}var we={math:{},text:{}};function h(e,t,r,n,a,i){we[e][a]={font:t,group:r,replace:n},i&&n&&(we[e][n]=we[e][a])}var m="math",F="text",b="main",v="ams",Ce="accent-token",te="bin",Ze="close",Hr="inner",ie="mathord",Pe="op-token",ht="open",kn="punct",A="rel",Yt="spacing",I="textord";h(m,b,A,"≡","\\equiv",!0);h(m,b,A,"≺","\\prec",!0);h(m,b,A,"≻","\\succ",!0);h(m,b,A,"∼","\\sim",!0);h(m,b,A,"⊥","\\perp");h(m,b,A,"⪯","\\preceq",!0);h(m,b,A,"⪰","\\succeq",!0);h(m,b,A,"≃","\\simeq",!0);h(m,b,A,"∣","\\mid",!0);h(m,b,A,"≪","\\ll",!0);h(m,b,A,"≫","\\gg",!0);h(m,b,A,"≍","\\asymp",!0);h(m,b,A,"∥","\\parallel");h(m,b,A,"⋈","\\bowtie",!0);h(m,b,A,"⌣","\\smile",!0);h(m,b,A,"⊑","\\sqsubseteq",!0);h(m,b,A,"⊒","\\sqsupseteq",!0);h(m,b,A,"≐","\\doteq",!0);h(m,b,A,"⌢","\\frown",!0);h(m,b,A,"∋","\\ni",!0);h(m,b,A,"∝","\\propto",!0);h(m,b,A,"⊢","\\vdash",!0);h(m,b,A,"⊣","\\dashv",!0);h(m,b,A,"∋","\\owns");h(m,b,kn,".","\\ldotp");h(m,b,kn,"⋅","\\cdotp");h(m,b,kn,"⋅","·");h(F,b,I,"⋅","·");h(m,b,I,"#","\\#");h(F,b,I,"#","\\#");h(m,b,I,"&","\\&");h(F,b,I,"&","\\&");h(m,b,I,"ℵ","\\aleph",!0);h(m,b,I,"∀","\\forall",!0);h(m,b,I,"ℏ","\\hbar",!0);h(m,b,I,"∃","\\exists",!0);h(m,b,I,"∇","\\nabla",!0);h(m,b,I,"♭","\\flat",!0);h(m,b,I,"ℓ","\\ell",!0);h(m,b,I,"♮","\\natural",!0);h(m,b,I,"♣","\\clubsuit",!0);h(m,b,I,"℘","\\wp",!0);h(m,b,I,"♯","\\sharp",!0);h(m,b,I,"♢","\\diamondsuit",!0);h(m,b,I,"ℜ","\\Re",!0);h(m,b,I,"♡","\\heartsuit",!0);h(m,b,I,"ℑ","\\Im",!0);h(m,b,I,"♠","\\spadesuit",!0);h(m,b,I,"§","\\S",!0);h(F,b,I,"§","\\S");h(m,b,I,"¶","\\P",!0);h(F,b,I,"¶","\\P");h(m,b,I,"†","\\dag");h(F,b,I,"†","\\dag");h(F,b,I,"†","\\textdagger");h(m,b,I,"‡","\\ddag");h(F,b,I,"‡","\\ddag");h(F,b,I,"‡","\\textdaggerdbl");h(m,b,Ze,"⎱","\\rmoustache",!0);h(m,b,ht,"⎰","\\lmoustache",!0);h(m,b,Ze,"⟯","\\rgroup",!0);h(m,b,ht,"⟮","\\lgroup",!0);h(m,b,te,"∓","\\mp",!0);h(m,b,te,"⊖","\\ominus",!0);h(m,b,te,"⊎","\\uplus",!0);h(m,b,te,"⊓","\\sqcap",!0);h(m,b,te,"∗","\\ast");h(m,b,te,"⊔","\\sqcup",!0);h(m,b,te,"◯","\\bigcirc",!0);h(m,b,te,"∙","\\bullet",!0);h(m,b,te,"‡","\\ddagger");h(m,b,te,"≀","\\wr",!0);h(m,b,te,"⨿","\\amalg");h(m,b,te,"&","\\And");h(m,b,A,"⟵","\\longleftarrow",!0);h(m,b,A,"⇐","\\Leftarrow",!0);h(m,b,A,"⟸","\\Longleftarrow",!0);h(m,b,A,"⟶","\\longrightarrow",!0);h(m,b,A,"⇒","\\Rightarrow",!0);h(m,b,A,"⟹","\\Longrightarrow",!0);h(m,b,A,"↔","\\leftrightarrow",!0);h(m,b,A,"⟷","\\longleftrightarrow",!0);h(m,b,A,"⇔","\\Leftrightarrow",!0);h(m,b,A,"⟺","\\Longleftrightarrow",!0);h(m,b,A,"↦","\\mapsto",!0);h(m,b,A,"⟼","\\longmapsto",!0);h(m,b,A,"↗","\\nearrow",!0);h(m,b,A,"↩","\\hookleftarrow",!0);h(m,b,A,"↪","\\hookrightarrow",!0);h(m,b,A,"↘","\\searrow",!0);h(m,b,A,"↼","\\leftharpoonup",!0);h(m,b,A,"⇀","\\rightharpoonup",!0);h(m,b,A,"↙","\\swarrow",!0);h(m,b,A,"↽","\\leftharpoondown",!0);h(m,b,A,"⇁","\\rightharpoondown",!0);h(m,b,A,"↖","\\nwarrow",!0);h(m,b,A,"⇌","\\rightleftharpoons",!0);h(m,v,A,"≮","\\nless",!0);h(m,v,A,"","\\@nleqslant");h(m,v,A,"","\\@nleqq");h(m,v,A,"⪇","\\lneq",!0);h(m,v,A,"≨","\\lneqq",!0);h(m,v,A,"","\\@lvertneqq");h(m,v,A,"⋦","\\lnsim",!0);h(m,v,A,"⪉","\\lnapprox",!0);h(m,v,A,"⊀","\\nprec",!0);h(m,v,A,"⋠","\\npreceq",!0);h(m,v,A,"⋨","\\precnsim",!0);h(m,v,A,"⪹","\\precnapprox",!0);h(m,v,A,"≁","\\nsim",!0);h(m,v,A,"","\\@nshortmid");h(m,v,A,"∤","\\nmid",!0);h(m,v,A,"⊬","\\nvdash",!0);h(m,v,A,"⊭","\\nvDash",!0);h(m,v,A,"⋪","\\ntriangleleft");h(m,v,A,"⋬","\\ntrianglelefteq",!0);h(m,v,A,"⊊","\\subsetneq",!0);h(m,v,A,"","\\@varsubsetneq");h(m,v,A,"⫋","\\subsetneqq",!0);h(m,v,A,"","\\@varsubsetneqq");h(m,v,A,"≯","\\ngtr",!0);h(m,v,A,"","\\@ngeqslant");h(m,v,A,"","\\@ngeqq");h(m,v,A,"⪈","\\gneq",!0);h(m,v,A,"≩","\\gneqq",!0);h(m,v,A,"","\\@gvertneqq");h(m,v,A,"⋧","\\gnsim",!0);h(m,v,A,"⪊","\\gnapprox",!0);h(m,v,A,"⊁","\\nsucc",!0);h(m,v,A,"⋡","\\nsucceq",!0);h(m,v,A,"⋩","\\succnsim",!0);h(m,v,A,"⪺","\\succnapprox",!0);h(m,v,A,"≆","\\ncong",!0);h(m,v,A,"","\\@nshortparallel");h(m,v,A,"∦","\\nparallel",!0);h(m,v,A,"⊯","\\nVDash",!0);h(m,v,A,"⋫","\\ntriangleright");h(m,v,A,"⋭","\\ntrianglerighteq",!0);h(m,v,A,"","\\@nsupseteqq");h(m,v,A,"⊋","\\supsetneq",!0);h(m,v,A,"","\\@varsupsetneq");h(m,v,A,"⫌","\\supsetneqq",!0);h(m,v,A,"","\\@varsupsetneqq");h(m,v,A,"⊮","\\nVdash",!0);h(m,v,A,"⪵","\\precneqq",!0);h(m,v,A,"⪶","\\succneqq",!0);h(m,v,A,"","\\@nsubseteqq");h(m,v,te,"⊴","\\unlhd");h(m,v,te,"⊵","\\unrhd");h(m,v,A,"↚","\\nleftarrow",!0);h(m,v,A,"↛","\\nrightarrow",!0);h(m,v,A,"⇍","\\nLeftarrow",!0);h(m,v,A,"⇏","\\nRightarrow",!0);h(m,v,A,"↮","\\nleftrightarrow",!0);h(m,v,A,"⇎","\\nLeftrightarrow",!0);h(m,v,A,"△","\\vartriangle");h(m,v,I,"ℏ","\\hslash");h(m,v,I,"▽","\\triangledown");h(m,v,I,"◊","\\lozenge");h(m,v,I,"Ⓢ","\\circledS");h(m,v,I,"®","\\circledR");h(F,v,I,"®","\\circledR");h(m,v,I,"∡","\\measuredangle",!0);h(m,v,I,"∄","\\nexists");h(m,v,I,"℧","\\mho");h(m,v,I,"Ⅎ","\\Finv",!0);h(m,v,I,"⅁","\\Game",!0);h(m,v,I,"‵","\\backprime");h(m,v,I,"▲","\\blacktriangle");h(m,v,I,"▼","\\blacktriangledown");h(m,v,I,"■","\\blacksquare");h(m,v,I,"⧫","\\blacklozenge");h(m,v,I,"★","\\bigstar");h(m,v,I,"∢","\\sphericalangle",!0);h(m,v,I,"∁","\\complement",!0);h(m,v,I,"ð","\\eth",!0);h(F,b,I,"ð","ð");h(m,v,I,"╱","\\diagup");h(m,v,I,"╲","\\diagdown");h(m,v,I,"□","\\square");h(m,v,I,"□","\\Box");h(m,v,I,"◊","\\Diamond");h(m,v,I,"¥","\\yen",!0);h(F,v,I,"¥","\\yen",!0);h(m,v,I,"✓","\\checkmark",!0);h(F,v,I,"✓","\\checkmark");h(m,v,I,"ℶ","\\beth",!0);h(m,v,I,"ℸ","\\daleth",!0);h(m,v,I,"ℷ","\\gimel",!0);h(m,v,I,"ϝ","\\digamma",!0);h(m,v,I,"ϰ","\\varkappa");h(m,v,ht,"┌","\\@ulcorner",!0);h(m,v,Ze,"┐","\\@urcorner",!0);h(m,v,ht,"└","\\@llcorner",!0);h(m,v,Ze,"┘","\\@lrcorner",!0);h(m,v,A,"≦","\\leqq",!0);h(m,v,A,"⩽","\\leqslant",!0);h(m,v,A,"⪕","\\eqslantless",!0);h(m,v,A,"≲","\\lesssim",!0);h(m,v,A,"⪅","\\lessapprox",!0);h(m,v,A,"≊","\\approxeq",!0);h(m,v,te,"⋖","\\lessdot");h(m,v,A,"⋘","\\lll",!0);h(m,v,A,"≶","\\lessgtr",!0);h(m,v,A,"⋚","\\lesseqgtr",!0);h(m,v,A,"⪋","\\lesseqqgtr",!0);h(m,v,A,"≑","\\doteqdot");h(m,v,A,"≓","\\risingdotseq",!0);h(m,v,A,"≒","\\fallingdotseq",!0);h(m,v,A,"∽","\\backsim",!0);h(m,v,A,"⋍","\\backsimeq",!0);h(m,v,A,"⫅","\\subseteqq",!0);h(m,v,A,"⋐","\\Subset",!0);h(m,v,A,"⊏","\\sqsubset",!0);h(m,v,A,"≼","\\preccurlyeq",!0);h(m,v,A,"⋞","\\curlyeqprec",!0);h(m,v,A,"≾","\\precsim",!0);h(m,v,A,"⪷","\\precapprox",!0);h(m,v,A,"⊲","\\vartriangleleft");h(m,v,A,"⊴","\\trianglelefteq");h(m,v,A,"⊨","\\vDash",!0);h(m,v,A,"⊪","\\Vvdash",!0);h(m,v,A,"⌣","\\smallsmile");h(m,v,A,"⌢","\\smallfrown");h(m,v,A,"≏","\\bumpeq",!0);h(m,v,A,"≎","\\Bumpeq",!0);h(m,v,A,"≧","\\geqq",!0);h(m,v,A,"⩾","\\geqslant",!0);h(m,v,A,"⪖","\\eqslantgtr",!0);h(m,v,A,"≳","\\gtrsim",!0);h(m,v,A,"⪆","\\gtrapprox",!0);h(m,v,te,"⋗","\\gtrdot");h(m,v,A,"⋙","\\ggg",!0);h(m,v,A,"≷","\\gtrless",!0);h(m,v,A,"⋛","\\gtreqless",!0);h(m,v,A,"⪌","\\gtreqqless",!0);h(m,v,A,"≖","\\eqcirc",!0);h(m,v,A,"≗","\\circeq",!0);h(m,v,A,"≜","\\triangleq",!0);h(m,v,A,"∼","\\thicksim");h(m,v,A,"≈","\\thickapprox");h(m,v,A,"⫆","\\supseteqq",!0);h(m,v,A,"⋑","\\Supset",!0);h(m,v,A,"⊐","\\sqsupset",!0);h(m,v,A,"≽","\\succcurlyeq",!0);h(m,v,A,"⋟","\\curlyeqsucc",!0);h(m,v,A,"≿","\\succsim",!0);h(m,v,A,"⪸","\\succapprox",!0);h(m,v,A,"⊳","\\vartriangleright");h(m,v,A,"⊵","\\trianglerighteq");h(m,v,A,"⊩","\\Vdash",!0);h(m,v,A,"∣","\\shortmid");h(m,v,A,"∥","\\shortparallel");h(m,v,A,"≬","\\between",!0);h(m,v,A,"⋔","\\pitchfork",!0);h(m,v,A,"∝","\\varpropto");h(m,v,A,"◀","\\blacktriangleleft");h(m,v,A,"∴","\\therefore",!0);h(m,v,A,"∍","\\backepsilon");h(m,v,A,"▶","\\blacktriangleright");h(m,v,A,"∵","\\because",!0);h(m,v,A,"⋘","\\llless");h(m,v,A,"⋙","\\gggtr");h(m,v,te,"⊲","\\lhd");h(m,v,te,"⊳","\\rhd");h(m,v,A,"≂","\\eqsim",!0);h(m,b,A,"⋈","\\Join");h(m,v,A,"≑","\\Doteq",!0);h(m,v,te,"∔","\\dotplus",!0);h(m,v,te,"∖","\\smallsetminus");h(m,v,te,"⋒","\\Cap",!0);h(m,v,te,"⋓","\\Cup",!0);h(m,v,te,"⩞","\\doublebarwedge",!0);h(m,v,te,"⊟","\\boxminus",!0);h(m,v,te,"⊞","\\boxplus",!0);h(m,v,te,"⋇","\\divideontimes",!0);h(m,v,te,"⋉","\\ltimes",!0);h(m,v,te,"⋊","\\rtimes",!0);h(m,v,te,"⋋","\\leftthreetimes",!0);h(m,v,te,"⋌","\\rightthreetimes",!0);h(m,v,te,"⋏","\\curlywedge",!0);h(m,v,te,"⋎","\\curlyvee",!0);h(m,v,te,"⊝","\\circleddash",!0);h(m,v,te,"⊛","\\circledast",!0);h(m,v,te,"⋅","\\centerdot");h(m,v,te,"⊺","\\intercal",!0);h(m,v,te,"⋒","\\doublecap");h(m,v,te,"⋓","\\doublecup");h(m,v,te,"⊠","\\boxtimes",!0);h(m,v,A,"⇢","\\dashrightarrow",!0);h(m,v,A,"⇠","\\dashleftarrow",!0);h(m,v,A,"⇇","\\leftleftarrows",!0);h(m,v,A,"⇆","\\leftrightarrows",!0);h(m,v,A,"⇚","\\Lleftarrow",!0);h(m,v,A,"↞","\\twoheadleftarrow",!0);h(m,v,A,"↢","\\leftarrowtail",!0);h(m,v,A,"↫","\\looparrowleft",!0);h(m,v,A,"⇋","\\leftrightharpoons",!0);h(m,v,A,"↶","\\curvearrowleft",!0);h(m,v,A,"↺","\\circlearrowleft",!0);h(m,v,A,"↰","\\Lsh",!0);h(m,v,A,"⇈","\\upuparrows",!0);h(m,v,A,"↿","\\upharpoonleft",!0);h(m,v,A,"⇃","\\downharpoonleft",!0);h(m,b,A,"⊶","\\origof",!0);h(m,b,A,"⊷","\\imageof",!0);h(m,v,A,"⊸","\\multimap",!0);h(m,v,A,"↭","\\leftrightsquigarrow",!0);h(m,v,A,"⇉","\\rightrightarrows",!0);h(m,v,A,"⇄","\\rightleftarrows",!0);h(m,v,A,"↠","\\twoheadrightarrow",!0);h(m,v,A,"↣","\\rightarrowtail",!0);h(m,v,A,"↬","\\looparrowright",!0);h(m,v,A,"↷","\\curvearrowright",!0);h(m,v,A,"↻","\\circlearrowright",!0);h(m,v,A,"↱","\\Rsh",!0);h(m,v,A,"⇊","\\downdownarrows",!0);h(m,v,A,"↾","\\upharpoonright",!0);h(m,v,A,"⇂","\\downharpoonright",!0);h(m,v,A,"⇝","\\rightsquigarrow",!0);h(m,v,A,"⇝","\\leadsto");h(m,v,A,"⇛","\\Rrightarrow",!0);h(m,v,A,"↾","\\restriction");h(m,b,I,"‘","`");h(m,b,I,"$","\\$");h(F,b,I,"$","\\$");h(F,b,I,"$","\\textdollar");h(m,b,I,"%","\\%");h(F,b,I,"%","\\%");h(m,b,I,"_","\\_");h(F,b,I,"_","\\_");h(F,b,I,"_","\\textunderscore");h(m,b,I,"∠","\\angle",!0);h(m,b,I,"∞","\\infty",!0);h(m,b,I,"′","\\prime");h(m,b,I,"△","\\triangle");h(m,b,I,"Γ","\\Gamma",!0);h(m,b,I,"Δ","\\Delta",!0);h(m,b,I,"Θ","\\Theta",!0);h(m,b,I,"Λ","\\Lambda",!0);h(m,b,I,"Ξ","\\Xi",!0);h(m,b,I,"Π","\\Pi",!0);h(m,b,I,"Σ","\\Sigma",!0);h(m,b,I,"Υ","\\Upsilon",!0);h(m,b,I,"Φ","\\Phi",!0);h(m,b,I,"Ψ","\\Psi",!0);h(m,b,I,"Ω","\\Omega",!0);h(m,b,I,"A","Α");h(m,b,I,"B","Β");h(m,b,I,"E","Ε");h(m,b,I,"Z","Ζ");h(m,b,I,"H","Η");h(m,b,I,"I","Ι");h(m,b,I,"K","Κ");h(m,b,I,"M","Μ");h(m,b,I,"N","Ν");h(m,b,I,"O","Ο");h(m,b,I,"P","Ρ");h(m,b,I,"T","Τ");h(m,b,I,"X","Χ");h(m,b,I,"¬","\\neg",!0);h(m,b,I,"¬","\\lnot");h(m,b,I,"⊤","\\top");h(m,b,I,"⊥","\\bot");h(m,b,I,"∅","\\emptyset");h(m,v,I,"∅","\\varnothing");h(m,b,ie,"α","\\alpha",!0);h(m,b,ie,"β","\\beta",!0);h(m,b,ie,"γ","\\gamma",!0);h(m,b,ie,"δ","\\delta",!0);h(m,b,ie,"ϵ","\\epsilon",!0);h(m,b,ie,"ζ","\\zeta",!0);h(m,b,ie,"η","\\eta",!0);h(m,b,ie,"θ","\\theta",!0);h(m,b,ie,"ι","\\iota",!0);h(m,b,ie,"κ","\\kappa",!0);h(m,b,ie,"λ","\\lambda",!0);h(m,b,ie,"μ","\\mu",!0);h(m,b,ie,"ν","\\nu",!0);h(m,b,ie,"ξ","\\xi",!0);h(m,b,ie,"ο","\\omicron",!0);h(m,b,ie,"π","\\pi",!0);h(m,b,ie,"ρ","\\rho",!0);h(m,b,ie,"σ","\\sigma",!0);h(m,b,ie,"τ","\\tau",!0);h(m,b,ie,"υ","\\upsilon",!0);h(m,b,ie,"ϕ","\\phi",!0);h(m,b,ie,"χ","\\chi",!0);h(m,b,ie,"ψ","\\psi",!0);h(m,b,ie,"ω","\\omega",!0);h(m,b,ie,"ε","\\varepsilon",!0);h(m,b,ie,"ϑ","\\vartheta",!0);h(m,b,ie,"ϖ","\\varpi",!0);h(m,b,ie,"ϱ","\\varrho",!0);h(m,b,ie,"ς","\\varsigma",!0);h(m,b,ie,"φ","\\varphi",!0);h(m,b,te,"∗","*",!0);h(m,b,te,"+","+");h(m,b,te,"−","-",!0);h(m,b,te,"⋅","\\cdot",!0);h(m,b,te,"∘","\\circ",!0);h(m,b,te,"÷","\\div",!0);h(m,b,te,"±","\\pm",!0);h(m,b,te,"×","\\times",!0);h(m,b,te,"∩","\\cap",!0);h(m,b,te,"∪","\\cup",!0);h(m,b,te,"∖","\\setminus",!0);h(m,b,te,"∧","\\land");h(m,b,te,"∨","\\lor");h(m,b,te,"∧","\\wedge",!0);h(m,b,te,"∨","\\vee",!0);h(m,b,I,"√","\\surd");h(m,b,ht,"⟨","\\langle",!0);h(m,b,ht,"∣","\\lvert");h(m,b,ht,"∥","\\lVert");h(m,b,Ze,"?","?");h(m,b,Ze,"!","!");h(m,b,Ze,"⟩","\\rangle",!0);h(m,b,Ze,"∣","\\rvert");h(m,b,Ze,"∥","\\rVert");h(m,b,A,"=","=");h(m,b,A,":",":");h(m,b,A,"≈","\\approx",!0);h(m,b,A,"≅","\\cong",!0);h(m,b,A,"≥","\\ge");h(m,b,A,"≥","\\geq",!0);h(m,b,A,"←","\\gets");h(m,b,A,">","\\gt",!0);h(m,b,A,"∈","\\in",!0);h(m,b,A,"","\\@not");h(m,b,A,"⊂","\\subset",!0);h(m,b,A,"⊃","\\supset",!0);h(m,b,A,"⊆","\\subseteq",!0);h(m,b,A,"⊇","\\supseteq",!0);h(m,v,A,"⊈","\\nsubseteq",!0);h(m,v,A,"⊉","\\nsupseteq",!0);h(m,b,A,"⊨","\\models");h(m,b,A,"←","\\leftarrow",!0);h(m,b,A,"≤","\\le");h(m,b,A,"≤","\\leq",!0);h(m,b,A,"<","\\lt",!0);h(m,b,A,"→","\\rightarrow",!0);h(m,b,A,"→","\\to");h(m,v,A,"≱","\\ngeq",!0);h(m,v,A,"≰","\\nleq",!0);h(m,b,Yt," ","\\ ");h(m,b,Yt," ","\\space");h(m,b,Yt," ","\\nobreakspace");h(F,b,Yt," ","\\ ");h(F,b,Yt," "," ");h(F,b,Yt," ","\\space");h(F,b,Yt," ","\\nobreakspace");h(m,b,Yt,"","\\nobreak");h(m,b,Yt,"","\\allowbreak");h(m,b,kn,",",",");h(m,b,kn,";",";");h(m,v,te,"⊼","\\barwedge",!0);h(m,v,te,"⊻","\\veebar",!0);h(m,b,te,"⊙","\\odot",!0);h(m,b,te,"⊕","\\oplus",!0);h(m,b,te,"⊗","\\otimes",!0);h(m,b,I,"∂","\\partial",!0);h(m,b,te,"⊘","\\oslash",!0);h(m,v,te,"⊚","\\circledcirc",!0);h(m,v,te,"⊡","\\boxdot",!0);h(m,b,te,"△","\\bigtriangleup");h(m,b,te,"▽","\\bigtriangledown");h(m,b,te,"†","\\dagger");h(m,b,te,"⋄","\\diamond");h(m,b,te,"⋆","\\star");h(m,b,te,"◃","\\triangleleft");h(m,b,te,"▹","\\triangleright");h(m,b,ht,"{","\\{");h(F,b,I,"{","\\{");h(F,b,I,"{","\\textbraceleft");h(m,b,Ze,"}","\\}");h(F,b,I,"}","\\}");h(F,b,I,"}","\\textbraceright");h(m,b,ht,"{","\\lbrace");h(m,b,Ze,"}","\\rbrace");h(m,b,ht,"[","\\lbrack",!0);h(F,b,I,"[","\\lbrack",!0);h(m,b,Ze,"]","\\rbrack",!0);h(F,b,I,"]","\\rbrack",!0);h(m,b,ht,"(","\\lparen",!0);h(m,b,Ze,")","\\rparen",!0);h(F,b,I,"<","\\textless",!0);h(F,b,I,">","\\textgreater",!0);h(m,b,ht,"⌊","\\lfloor",!0);h(m,b,Ze,"⌋","\\rfloor",!0);h(m,b,ht,"⌈","\\lceil",!0);h(m,b,Ze,"⌉","\\rceil",!0);h(m,b,I,"\\","\\backslash");h(m,b,I,"∣","|");h(m,b,I,"∣","\\vert");h(F,b,I,"|","\\textbar",!0);h(m,b,I,"∥","\\|");h(m,b,I,"∥","\\Vert");h(F,b,I,"∥","\\textbardbl");h(F,b,I,"~","\\textasciitilde");h(F,b,I,"\\","\\textbackslash");h(F,b,I,"^","\\textasciicircum");h(m,b,A,"↑","\\uparrow",!0);h(m,b,A,"⇑","\\Uparrow",!0);h(m,b,A,"↓","\\downarrow",!0);h(m,b,A,"⇓","\\Downarrow",!0);h(m,b,A,"↕","\\updownarrow",!0);h(m,b,A,"⇕","\\Updownarrow",!0);h(m,b,Pe,"∐","\\coprod");h(m,b,Pe,"⋁","\\bigvee");h(m,b,Pe,"⋀","\\bigwedge");h(m,b,Pe,"⨄","\\biguplus");h(m,b,Pe,"⋂","\\bigcap");h(m,b,Pe,"⋃","\\bigcup");h(m,b,Pe,"∫","\\int");h(m,b,Pe,"∫","\\intop");h(m,b,Pe,"∬","\\iint");h(m,b,Pe,"∭","\\iiint");h(m,b,Pe,"∏","\\prod");h(m,b,Pe,"∑","\\sum");h(m,b,Pe,"⨂","\\bigotimes");h(m,b,Pe,"⨁","\\bigoplus");h(m,b,Pe,"⨀","\\bigodot");h(m,b,Pe,"∮","\\oint");h(m,b,Pe,"∯","\\oiint");h(m,b,Pe,"∰","\\oiiint");h(m,b,Pe,"⨆","\\bigsqcup");h(m,b,Pe,"∫","\\smallint");h(F,b,Hr,"…","\\textellipsis");h(m,b,Hr,"…","\\mathellipsis");h(F,b,Hr,"…","\\ldots",!0);h(m,b,Hr,"…","\\ldots",!0);h(m,b,Hr,"⋯","\\@cdots",!0);h(m,b,Hr,"⋱","\\ddots",!0);h(m,b,I,"⋮","\\varvdots");h(F,b,I,"⋮","\\varvdots");h(m,b,Ce,"ˊ","\\acute");h(m,b,Ce,"ˋ","\\grave");h(m,b,Ce,"¨","\\ddot");h(m,b,Ce,"~","\\tilde");h(m,b,Ce,"ˉ","\\bar");h(m,b,Ce,"˘","\\breve");h(m,b,Ce,"ˇ","\\check");h(m,b,Ce,"^","\\hat");h(m,b,Ce,"⃗","\\vec");h(m,b,Ce,"˙","\\dot");h(m,b,Ce,"˚","\\mathring");h(m,b,ie,"","\\@imath");h(m,b,ie,"","\\@jmath");h(m,b,I,"ı","ı");h(m,b,I,"ȷ","ȷ");h(F,b,I,"ı","\\i",!0);h(F,b,I,"ȷ","\\j",!0);h(F,b,I,"ß","\\ss",!0);h(F,b,I,"æ","\\ae",!0);h(F,b,I,"œ","\\oe",!0);h(F,b,I,"ø","\\o",!0);h(F,b,I,"Æ","\\AE",!0);h(F,b,I,"Œ","\\OE",!0);h(F,b,I,"Ø","\\O",!0);h(F,b,Ce,"ˊ","\\'");h(F,b,Ce,"ˋ","\\`");h(F,b,Ce,"ˆ","\\^");h(F,b,Ce,"˜","\\~");h(F,b,Ce,"ˉ","\\=");h(F,b,Ce,"˘","\\u");h(F,b,Ce,"˙","\\.");h(F,b,Ce,"¸","\\c");h(F,b,Ce,"˚","\\r");h(F,b,Ce,"ˇ","\\v");h(F,b,Ce,"¨",'\\"');h(F,b,Ce,"˝","\\H");h(F,b,Ce,"◯","\\textcircled");var eo={"--":!0,"---":!0,"``":!0,"''":!0};h(F,b,I,"–","--",!0);h(F,b,I,"–","\\textendash");h(F,b,I,"—","---",!0);h(F,b,I,"—","\\textemdash");h(F,b,I,"‘","`",!0);h(F,b,I,"‘","\\textquoteleft");h(F,b,I,"’","'",!0);h(F,b,I,"’","\\textquoteright");h(F,b,I,"“","``",!0);h(F,b,I,"“","\\textquotedblleft");h(F,b,I,"”","''",!0);h(F,b,I,"”","\\textquotedblright");h(m,b,I,"°","\\degree",!0);h(F,b,I,"°","\\degree");h(F,b,I,"°","\\textdegree",!0);h(m,b,I,"£","\\pounds");h(m,b,I,"£","\\mathsterling",!0);h(F,b,I,"£","\\pounds");h(F,b,I,"£","\\textsterling",!0);h(m,v,I,"✠","\\maltese");h(F,v,I,"✠","\\maltese");var Ru='0123456789/@."';for(var ta=0;ta{var t=e.charCodeAt(0),r=e.charCodeAt(1),n=(t-55296)*1024+(r-56320)+65536;if(119808<=n&&n<120484){var a=Math.floor((n-119808)/26);return Gu[a]}else if(120782<=n&&n<=120831){var i=Math.floor((n-120782)/10);return t3[i]}else{if(n===120485||n===120486)return Gu[0];if(120486{if(Jt(e.classes)!==Jt(t.classes)||e.skew!==t.skew||e.maxFontSize!==t.maxFontSize||e.italic!==0&&e.hasClass("mathnormal"))return!1;if(e.classes.length===1){var r=e.classes[0];if(r==="mbin"||r==="mord")return!1}for(var n of Object.keys(e.style))if(e.style[n]!==t.style[n])return!1;for(var a of Object.keys(t.style))if(e.style[a]!==t.style[a])return!1;return!0},to=e=>{for(var t=0;tr&&(r=u.height),u.depth>n&&(n=u.depth),u.maxFontSize>a&&(a=u.maxFontSize)}t.height=r,t.depth=n,t.maxFontSize=a},z=function(t,r,n,a){var i=new Fr(t,r,n,a);return xi(i),i},er=(e,t,r,n)=>new Fr(e,t,r,n),Or=function(t,r,n){var a=z([t],[],r);return a.height=Math.max(n||r.fontMetrics().defaultRuleThickness,r.minRuleThickness),a.style.borderBottomWidth=V(a.height),a.maxFontSize=1,a},i3=function(t,r,n,a){var i=new E0(t,r,n,a);return xi(i),i},Gt=function(t){var r=new Br(t);return xi(r),r},Lr=function(t,r){return t instanceof Br?z([],[t],r):t},u3=function(t){if(t.positionType==="individualShift"){for(var r=t.children,n=[r[0]],a=-r[0].shift-r[0].elem.depth,i=a,u=1;u{var r=z(["mspace"],[],t),n=Ie(e,t);return r.style.marginRight=V(n),r},qn=(e,t,r)=>{var n,a;switch(e){case"amsrm":n="AMS";break;case"textrm":n="Main";break;case"textsf":n="SansSerif";break;case"texttt":n="Typewriter";break;default:n=e}return t==="textbf"&&r==="textit"?a="BoldItalic":t==="textbf"?a="Bold":r==="textit"?a="Italic":a="Regular",n+"-"+a},Ba={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathsfit:{variant:"sans-serif-italic",fontName:"SansSerif-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},no={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},ao=function(t,r){var[n,a,i]=no[t],u=new Zt(n),s=new zt([u],{width:V(a),height:V(i),style:"width:"+V(a),viewBox:"0 0 "+1e3*a+" "+1e3*i,preserveAspectRatio:"xMinYMin"}),l=er(["overlay"],[s],r);return l.height=i,l.style.height=V(i),l.style.width=V(a),l},_e={number:3,unit:"mu"},cr={number:4,unit:"mu"},Pt={number:5,unit:"mu"},s3={mord:{mop:_e,mbin:cr,mrel:Pt,minner:_e},mop:{mord:_e,mop:_e,mrel:Pt,minner:_e},mbin:{mord:cr,mop:cr,mopen:cr,minner:cr},mrel:{mord:Pt,mop:Pt,mopen:Pt,minner:Pt},mopen:{},mclose:{mop:_e,mbin:cr,mrel:Pt,minner:_e},mpunct:{mord:_e,mop:_e,mrel:Pt,mopen:_e,mclose:_e,mpunct:_e,minner:_e},minner:{mord:_e,mop:_e,mbin:cr,mrel:Pt,mopen:_e,mpunct:_e,minner:_e}},l3={mord:{mop:_e},mop:{mord:_e,mop:_e},mbin:{},mrel:{},mopen:{},mclose:{mop:_e},mpunct:{},minner:{mop:_e}},io={},a0={},i0={};function Z(e){for(var{type:t,names:r,props:n,handler:a,htmlBuilder:i,mathmlBuilder:u}=e,s={type:t,numArgs:n.numArgs,argTypes:n.argTypes,allowedInArgument:!!n.allowedInArgument,allowedInText:!!n.allowedInText,allowedInMath:n.allowedInMath===void 0?!0:n.allowedInMath,numOptionalArgs:n.numOptionalArgs||0,infix:!!n.infix,primitive:!!n.primitive,handler:a},l=0;l{var D=S.classes[0],_=x.classes[0];D==="mbin"&&c3.has(_)?S.classes[0]="mord":_==="mbin"&&o3.has(D)&&(x.classes[0]="mord")},{node:f},g,p),Fa(i,(x,S)=>{var D,_,N=za(S),M=za(x),W=N&&M?x.hasClass("mtight")?(D=l3[N])==null?void 0:D[M]:(_=s3[N])==null?void 0:_[M]:null;if(W)return ro(W,c)},{node:f},g,p),i},Fa=function(t,r,n,a,i){a&&t.push(a);for(var u=0;ug=>{t.splice(f+1,0,g),u++})(u)}a&&t.pop()},uo=function(t){return t instanceof Br||t instanceof E0||t instanceof Fr&&t.hasClass("enclosing")?t:null},Ha=function(t,r){var n=uo(t);if(n){var a=n.children;if(a.length){if(r==="right")return Ha(a[a.length-1],"right");if(r==="left")return Ha(a[0],"left")}}return t},za=function(t,r){if(!t)return null;r&&(t=Ha(t,r));var n=t.classes[0];return d3[n]||null},bn=function(t,r){var n=["nulldelimiter"].concat(t.baseSizingClasses());return z(r.concat(n))},Te=function(t,r,n){if(!t)return z();if(a0[t.type]){var a=a0[t.type](t,r);if(n&&r.size!==n.size){a=z(r.sizingClasses(n),[a],r);var i=r.sizeMultiplier/n.sizeMultiplier;a.height*=i,a.depth*=i}return a}else throw new Y("Got group of unknown type: '"+t.type+"'")};function Yn(e,t){var r=z(["base"],e,t),n=z(["strut"]);return n.style.height=V(r.height+r.depth),r.depth&&(n.style.verticalAlign=V(-r.depth)),r.children.unshift(n),r}function Ua(e,t){var r=null;e.length===1&&e[0].type==="tag"&&(r=e[0].tag,e=e[0].body);var n=He(e,t,"root"),a;n.length===2&&n[1].hasClass("tag")&&(a=n.pop());for(var i=[],u=[],s=0;s0&&(i.push(Yn(u,t)),u=[]),i.push(n[s]));u.length>0&&i.push(Yn(u,t));var c;r?(c=Yn(He(r,t,!0),t),c.classes=["tag"],i.push(c)):a&&i.push(a);var d=z(["katex-html"],i);if(d.setAttribute("aria-hidden","true"),c){var f=c.children[0];f.style.height=V(d.height+d.depth),d.depth&&(f.style.verticalAlign=V(-d.depth))}return d}function so(e){return new Br(e)}class G{constructor(t,r,n){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=t,this.attributes={},this.children=r||[],this.classes=n||[]}setAttribute(t,r){this.attributes[t]=r}getAttribute(t){return this.attributes[t]}toNode(){var t=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&t.setAttribute(r,this.attributes[r]);this.classes.length>0&&(t.className=Jt(this.classes));for(var n=0;n0&&(t+=' class ="'+Ve(Jt(this.classes))+'"'),t+=">";for(var n=0;n",t}toText(){return this.children.map(t=>t.toText()).join("")}}class Me{constructor(t){this.text=void 0,this.text=t}toNode(){return document.createTextNode(this.text)}toMarkup(){return Ve(this.toText())}toText(){return this.text}}class lo{constructor(t){this.width=void 0,this.character=void 0,this.width=t,t>=.05555&&t<=.05556?this.character=" ":t>=.1666&&t<=.1667?this.character=" ":t>=.2222&&t<=.2223?this.character=" ":t>=.2777&&t<=.2778?this.character="  ":t>=-.05556&&t<=-.05555?this.character=" ⁣":t>=-.1667&&t<=-.1666?this.character=" ⁣":t>=-.2223&&t<=-.2222?this.character=" ⁣":t>=-.2778&&t<=-.2777?this.character=" ⁣":this.character=null}toNode(){if(this.character)return document.createTextNode(this.character);var t=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return t.setAttribute("width",V(this.width)),t}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}}var f3=new Set(["\\imath","\\jmath"]),m3=new Set(["mrow","mtable"]),bt=function(t,r,n){return we[r][t]&&we[r][t].replace&&t.charCodeAt(0)!==55349&&!(eo.hasOwnProperty(t)&&n&&(n.fontFamily&&n.fontFamily.slice(4,6)==="tt"||n.font&&n.font.slice(4,6)==="tt"))&&(t=we[r][t].replace),new Me(t)},yi=function(t){return t.length===1?t[0]:new G("mrow",t)},p3={mathit:"italic",boldsymbol:e=>e.type==="textord"?"bold":"bold-italic",mathbf:"bold",mathbb:"double-struck",mathsfit:"sans-serif-italic",mathfrak:"fraktur",mathscr:"script",mathcal:"script",mathsf:"sans-serif",mathtt:"monospace"},vi=(e,t)=>{if(e.mode==="text"){if(t.fontFamily==="texttt")return"monospace";if(t.fontFamily==="textsf")return t.fontShape==="textit"&&t.fontWeight==="textbf"?"sans-serif-bold-italic":t.fontShape==="textit"?"sans-serif-italic":t.fontWeight==="textbf"?"bold-sans-serif":"sans-serif";if(t.fontShape==="textit"&&t.fontWeight==="textbf")return"bold-italic";if(t.fontShape==="textit")return"italic";if(t.fontWeight==="textbf")return"bold"}var r=t.font;if(!r||r==="mathnormal")return null;var n=e.mode,a=p3[r];if(a)return typeof a=="function"?a(e):a;var i=e.text;if(f3.has(i))return null;if(we[n][i]){var u=we[n][i].replace;u&&(i=u)}var s=Ba[r].fontName;return Ei(i,s,n)?Ba[r].variant:null};function ia(e){if(!e)return!1;if(e.type==="mi"&&e.children.length===1){var t=e.children[0];return t instanceof Me&&t.text==="."}else if(e.type==="mo"&&e.children.length===1&&e.getAttribute("separator")==="true"&&e.getAttribute("lspace")==="0em"&&e.getAttribute("rspace")==="0em"){var r=e.children[0];return r instanceof Me&&r.text===","}else return!1}var dt=function(t,r,n){if(t.length===1){var a=Ae(t[0],r);return n&&a instanceof G&&a.type==="mo"&&(a.setAttribute("lspace","0em"),a.setAttribute("rspace","0em")),[a]}for(var i=[],u,s=0;s=1&&(u.type==="mn"||ia(u))){var c=l.children[0];c instanceof G&&c.type==="mn"&&(c.children=[...u.children,...c.children],i.pop())}else if(u.type==="mi"&&u.children.length===1){var d=u.children[0];if(d instanceof Me&&d.text==="̸"&&(l.type==="mo"||l.type==="mi"||l.type==="mn")){var f=l.children[0];f instanceof Me&&f.text.length>0&&(f.text=f.text.slice(0,1)+"̸"+f.text.slice(1),i.pop())}}}i.push(l),u=l}return i},tr=function(t,r,n){return yi(dt(t,r,n))},Ae=function(t,r){if(!t)return new G("mrow");if(i0[t.type])return i0[t.type](t,r);throw new Y("Got group of unknown type: '"+t.type+"'")};function Vu(e,t,r,n,a){var i=dt(e,r),u;i.length===1&&i[0]instanceof G&&m3.has(i[0].type)?u=i[0]:u=new G("mrow",i);var s=new G("annotation",[new Me(t)]);s.setAttribute("encoding","application/x-tex");var l=new G("semantics",[u,s]),c=new G("math",[l]);c.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),n&&c.setAttribute("display","block");var d=a?"katex":"katex-mathml";return z([d],[c])}var g3=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],ju=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],Wu=function(t,r){return r.size<2?t:g3[t-1][r.size-1]};class Bt{constructor(t){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=t.style,this.color=t.color,this.size=t.size||Bt.BASESIZE,this.textSize=t.textSize||this.size,this.phantom=!!t.phantom,this.font=t.font||"",this.fontFamily=t.fontFamily||"",this.fontWeight=t.fontWeight||"",this.fontShape=t.fontShape||"",this.sizeMultiplier=ju[this.size-1],this.maxSize=t.maxSize,this.minRuleThickness=t.minRuleThickness,this._fontMetrics=void 0}extend(t){var r={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};return Object.assign(r,t),new Bt(r)}havingStyle(t){return this.style===t?this:this.extend({style:t,size:Wu(this.textSize,t)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(t){return this.size===t&&this.textSize===t?this:this.extend({style:this.style.text(),size:t,textSize:t,sizeMultiplier:ju[t-1]})}havingBaseStyle(t){t=t||this.style.text();var r=Wu(Bt.BASESIZE,t);return this.size===r&&this.textSize===Bt.BASESIZE&&this.style===t?this:this.extend({style:t,size:r})}havingBaseSizing(){var t;switch(this.style.id){case 4:case 5:t=3;break;case 6:case 7:t=1;break;default:t=6}return this.extend({style:this.style.text(),size:t})}withColor(t){return this.extend({color:t})}withPhantom(){return this.extend({phantom:!0})}withFont(t){return this.extend({font:t})}withTextFontFamily(t){return this.extend({fontFamily:t,font:""})}withTextFontWeight(t){return this.extend({fontWeight:t,font:""})}withTextFontShape(t){return this.extend({fontShape:t,font:""})}sizingClasses(t){return t.size!==this.size?["sizing","reset-size"+t.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==Bt.BASESIZE?["sizing","reset-size"+this.size,"size"+Bt.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=Z4(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}}Bt.BASESIZE=6;var oo=function(t){return new Bt({style:t.displayMode?oe.DISPLAY:oe.TEXT,maxSize:t.maxSize,minRuleThickness:t.minRuleThickness})},co=function(t,r){if(r.displayMode){var n=["katex-display"];r.leqno&&n.push("leqno"),r.fleqn&&n.push("fleqn"),t=z(n,[t])}return t},b3=function(t,r,n){var a=oo(n),i;if(n.output==="mathml")return Vu(t,r,a,n.displayMode,!0);if(n.output==="html"){var u=Ua(t,a);i=z(["katex"],[u])}else{var s=Vu(t,r,a,n.displayMode,!1),l=Ua(t,a);i=z(["katex"],[s,l])}return co(i,n)},E3=function(t,r,n){var a=oo(n),i=Ua(t,a),u=z(["katex"],[i]);return co(u,n)},T3={widehat:"^",widecheck:"ˇ",widetilde:"~",utilde:"~",overleftarrow:"←",underleftarrow:"←",xleftarrow:"←",overrightarrow:"→",underrightarrow:"→",xrightarrow:"→",underbrace:"⏟",overbrace:"⏞",underbracket:"⎵",overbracket:"⎴",overgroup:"⏠",undergroup:"⏡",overleftrightarrow:"↔",underleftrightarrow:"↔",xleftrightarrow:"↔",Overrightarrow:"⇒",xRightarrow:"⇒",overleftharpoon:"↼",xleftharpoonup:"↼",overrightharpoon:"⇀",xrightharpoonup:"⇀",xLeftarrow:"⇐",xLeftrightarrow:"⇔",xhookleftarrow:"↩",xhookrightarrow:"↪",xmapsto:"↦",xrightharpoondown:"⇁",xleftharpoondown:"↽",xrightleftharpoons:"⇌",xleftrightharpoons:"⇋",xtwoheadleftarrow:"↞",xtwoheadrightarrow:"↠",xlongequal:"=",xtofrom:"⇄",xrightleftarrows:"⇄",xrightequilibrium:"⇌",xleftequilibrium:"⇋","\\cdrightarrow":"→","\\cdleftarrow":"←","\\cdlongequal":"="},y0=function(t){var r=new G("mo",[new Me(T3[t.replace(/^\\/,"")])]);return r.setAttribute("stretchy","true"),r},x3={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overbracket:[["leftbracketover","rightbracketover"],1.6,440],underbracket:[["leftbracketunder","rightbracketunder"],1.6,410],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},y3=new Set(["widehat","widecheck","widetilde","utilde"]),v0=function(t,r){function n(){var s=4e5,l=t.label.slice(1);if(y3.has(l)&&"base"in t){var c=t.base.type==="ordgroup"?t.base.body.length:1,d,f,g;if(c>5)l==="widehat"||l==="widecheck"?(d=420,s=2364,g=.42,f=l+"4"):(d=312,s=2340,g=.34,f="tilde4");else{var p=[1,1,2,2,3,3][c];l==="widehat"||l==="widecheck"?(s=[0,1062,2364,2364,2364][p],d=[0,239,300,360,420][p],g=[0,.24,.3,.3,.36,.42][p],f=l+p):(s=[0,600,1033,2339,2340][p],d=[0,260,286,306,312][p],g=[0,.26,.286,.3,.306,.34][p],f="tilde"+p)}var x=new Zt(f),S=new zt([x],{width:"100%",height:V(g),viewBox:"0 0 "+s+" "+d,preserveAspectRatio:"none"});return{span:er([],[S],r),minWidth:0,height:g}}else{var D=[],_=x3[l];if(!_)throw new Error('No SVG data for "'+l+'".');var[N,M,W]=_,j=W/1e3,L=N.length,ee,re;if(L===1){if(_.length!==4)throw new Error('Expected 4-tuple for single-path SVG data "'+l+'".');ee=["hide-tail"],re=[_[3]]}else if(L===2)ee=["halfarrow-left","halfarrow-right"],re=["xMinYMin","xMaxYMin"];else if(L===3)ee=["brace-left","brace-center","brace-right"],re=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support - `+L+" children.");for(var K=0;K0&&(a.style.minWidth=V(i)),a},v3=function(t,r,n,a,i){var u,s=t.height+t.depth+n+a;if(/fbox|color|angl/.test(r)){if(u=z(["stretchy",r],[],i),r==="fbox"){var l=i.color&&i.getColor();l&&(u.style.borderColor=l)}}else{var c=[];/^[bx]cancel$/.test(r)&&c.push(new Da({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(r)&&c.push(new Da({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var d=new zt(c,{width:"100%",height:V(s)});u=er([],[d],i)}return u.height=s,u.style.height=V(s),u},A3={bin:1,close:1,inner:1,open:1,punct:1,rel:1},k3={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1};function S3(e){return e in A3}function ce(e,t){if(!e||e.type!==t)throw new Error("Expected node of type "+t+", but got "+(e?"node of type "+e.type:String(e)));return e}function A0(e){var t=k0(e);if(!t)throw new Error("Expected node of symbol group type, but got "+(e?"node of type "+e.type:String(e)));return t}function k0(e){return e&&(e.type==="atom"||k3.hasOwnProperty(e.type))?e:null}var ho=e=>{if(e instanceof ct)return e;if(K4(e)&&e.children.length===1)return ho(e.children[0])},Ai=(e,t)=>{var r,n,a;e&&e.type==="supsub"?(n=ce(e.base,"accent"),r=n.base,e.base=r,a=Q4(Te(e,t)),e.base=n):(n=ce(e,"accent"),r=n.base);var i=Te(r,t.havingCrampedStyle()),u=n.isShifty&&qt(r),s=0;if(u){var l,c;s=(l=(c=ho(i))==null?void 0:c.skew)!=null?l:0}var d=n.label==="\\c",f=d?i.height+i.depth:Math.min(i.height,t.fontMetrics().xHeight),g;if(n.isStretchy)g=v0(n,t),g=Ee({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"elem",elem:g,wrapperClasses:["svg-align"],wrapperStyle:s>0?{width:"calc(100% - "+V(2*s)+")",marginLeft:V(2*s)}:void 0}]});else{var p,x;n.label==="\\vec"?(p=ao("vec",t),x=no.vec[1]):(p=x0({mode:n.mode,text:n.label},t,"textord"),p=$4(p),p.italic=0,x=p.width,d&&(f+=p.depth)),g=z(["accent-body"],[p]);var S=n.label==="\\textcircled";S&&(g.classes.push("accent-full"),f=i.height);var D=s;S||(D-=x/2),g.style.left=V(D),n.label==="\\textcircled"&&(g.style.top=".2em"),g=Ee({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:-f},{type:"elem",elem:g}]})}var _=z(["mord","accent"],[g],t);return a?(a.children[0]=_,a.height=Math.max(_.height,a.height),a.classes[0]="mord",a):_},fo=(e,t)=>{var r=e.isStretchy?y0(e.label):new G("mo",[bt(e.label,e.mode)]),n=new G("mover",[Ae(e.base,t),r]);return n.setAttribute("accent","true"),n},w3=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(e=>"\\"+e).join("|"));Z({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:(e,t)=>{var r=u0(t[0]),n=!w3.test(e.funcName),a=!n||e.funcName==="\\widehat"||e.funcName==="\\widetilde"||e.funcName==="\\widecheck";return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:n,isShifty:a,base:r}},htmlBuilder:Ai,mathmlBuilder:fo});Z({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(e,t)=>{var r=t[0],n=e.parser.mode;return n==="math"&&(e.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+e.funcName+" works only in text mode"),n="text"),{type:"accent",mode:n,label:e.funcName,isStretchy:!1,isShifty:!0,base:r}},htmlBuilder:Ai,mathmlBuilder:fo});Z({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=t[0];return{type:"accentUnder",mode:r.mode,label:n,base:a}},htmlBuilder:(e,t)=>{var r=Te(e.base,t),n=v0(e,t),a=e.label==="\\utilde"?.12:0,i=Ee({positionType:"top",positionData:r.height,children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:a},{type:"elem",elem:r}]});return z(["mord","accentunder"],[i],t)},mathmlBuilder:(e,t)=>{var r=y0(e.label),n=new G("munder",[Ae(e.base,t),r]);return n.setAttribute("accentunder","true"),n}});var Gn=e=>{var t=new G("mpadded",e?[e]:[]);return t.setAttribute("width","+0.6em"),t.setAttribute("lspace","0.3em"),t};Z({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){var{parser:n,funcName:a}=e;return{type:"xArrow",mode:n.mode,label:a,body:t[0],below:r[0]}},htmlBuilder(e,t){var r=t.style,n=t.havingStyle(r.sup()),a=Lr(Te(e.body,n,t),t),i=e.label.slice(0,2)==="\\x"?"x":"cd";a.classes.push(i+"-arrow-pad");var u;e.below&&(n=t.havingStyle(r.sub()),u=Lr(Te(e.below,n,t),t),u.classes.push(i+"-arrow-pad"));var s=v0(e,t),l=-t.fontMetrics().axisHeight+.5*s.height,c=-t.fontMetrics().axisHeight-.5*s.height-.111;(a.depth>.25||e.label==="\\xleftequilibrium")&&(c-=a.depth);var d;if(u){var f=-t.fontMetrics().axisHeight+u.height+.5*s.height+.111;d=Ee({positionType:"individualShift",children:[{type:"elem",elem:a,shift:c},{type:"elem",elem:s,shift:l,wrapperClasses:["svg-align"]},{type:"elem",elem:u,shift:f}]})}else d=Ee({positionType:"individualShift",children:[{type:"elem",elem:a,shift:c},{type:"elem",elem:s,shift:l,wrapperClasses:["svg-align"]}]});return z(["mrel","x-arrow"],[d],t)},mathmlBuilder(e,t){var r=y0(e.label);r.setAttribute("minsize",e.label.charAt(0)==="x"?"1.75em":"3.0em");var n;if(e.body){var a=Gn(Ae(e.body,t));if(e.below){var i=Gn(Ae(e.below,t));n=new G("munderover",[r,i,a])}else n=new G("mover",[r,a])}else if(e.below){var u=Gn(Ae(e.below,t));n=new G("munder",[r,u])}else n=Gn(),n=new G("mover",[r,n]);return n}});function mo(e,t){var r=He(e.body,t,!0);return z([e.mclass],r,t)}function po(e,t){var r,n=dt(e.body,t);return e.mclass==="minner"?r=new G("mpadded",n):e.mclass==="mord"?e.isCharacterBox?(r=n[0],r.type="mi"):r=new G("mi",n):(e.isCharacterBox?(r=n[0],r.type="mo"):r=new G("mo",n),e.mclass==="mbin"?(r.attributes.lspace="0.22em",r.attributes.rspace="0.22em"):e.mclass==="mpunct"?(r.attributes.lspace="0em",r.attributes.rspace="0.17em"):e.mclass==="mopen"||e.mclass==="mclose"?(r.attributes.lspace="0em",r.attributes.rspace="0em"):e.mclass==="minner"&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em")),r}Z({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(e,t){var{parser:r,funcName:n}=e,a=t[0];return{type:"mclass",mode:r.mode,mclass:"m"+n.slice(5),body:Re(a),isCharacterBox:qt(a)}},htmlBuilder:mo,mathmlBuilder:po});var S0=e=>{var t=e.type==="ordgroup"&&e.body.length?e.body[0]:e;return t.type==="atom"&&(t.family==="bin"||t.family==="rel")?"m"+t.family:"mord"};Z({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(e,t){var{parser:r}=e;return{type:"mclass",mode:r.mode,mclass:S0(t[0]),body:Re(t[1]),isCharacterBox:qt(t[1])}}});Z({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(e,t){var{parser:r,funcName:n}=e,a=t[1],i=t[0],u;n!=="\\stackrel"?u=S0(a):u="mrel";var s={type:"op",mode:a.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:n!=="\\stackrel",body:Re(a)},l={type:"supsub",mode:i.mode,base:s,sup:n==="\\underset"?null:i,sub:n==="\\underset"?i:null};return{type:"mclass",mode:r.mode,mclass:u,body:[l],isCharacterBox:qt(l)}},htmlBuilder:mo,mathmlBuilder:po});Z({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"pmb",mode:r.mode,mclass:S0(t[0]),body:Re(t[0])}},htmlBuilder(e,t){var r=He(e.body,t,!0),n=z([e.mclass],r,t);return n.style.textShadow="0.02em 0.01em 0.04px",n},mathmlBuilder(e,t){var r=dt(e.body,t),n=new G("mstyle",r);return n.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),n}});var C3={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},Xu=()=>({type:"styling",body:[],mode:"math",style:"display",resetFont:!0}),$u=e=>e.type==="textord"&&e.text==="@",_3=(e,t)=>(e.type==="mathord"||e.type==="atom")&&e.text===t;function I3(e,t,r){var n=C3[e];switch(n){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(n,[t[0]],[t[1]]);case"\\uparrow":case"\\downarrow":{var a=r.callFunction("\\\\cdleft",[t[0]],[]),i={type:"atom",text:n,mode:"math",family:"rel"},u=r.callFunction("\\Big",[i],[]),s=r.callFunction("\\\\cdright",[t[1]],[]),l={type:"ordgroup",mode:"math",body:[a,u,s]};return r.callFunction("\\\\cdparent",[l],[])}case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var c={type:"textord",text:"\\Vert",mode:"math"};return r.callFunction("\\Big",[c],[])}default:return{type:"textord",text:" ",mode:"math"}}}function N3(e){var t=[];for(e.gullet.beginGroup(),e.gullet.macros.set("\\cr","\\\\\\relax"),e.gullet.beginGroup();;){t.push(e.parseExpression(!1,"\\\\")),e.gullet.endGroup(),e.gullet.beginGroup();var r=e.fetch().text;if(r==="&"||r==="\\\\")e.consume();else if(r==="\\end"){t[t.length-1].length===0&&t.pop();break}else throw new Y("Expected \\\\ or \\cr or \\end",e.nextToken)}for(var n=[],a=[n],i=0;iAV".includes(c))for(var f=0;f<2;f++){for(var g=!0,p=l+1;pAV=|." after @',u[l]);var x=I3(c,d,e),S={type:"styling",body:[x],mode:"math",style:"display",resetFont:!0};n.push(S),s=Xu()}i%2===0?n.push(s):n.shift(),n=[],a.push(n)}e.gullet.endGroup(),e.gullet.endGroup();var D=new Array(a[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25});return{type:"array",mode:"math",body:a,arraystretch:1,addJot:!0,rowGaps:[null],cols:D,colSeparationType:"CD",hLinesBeforeRow:new Array(a.length+1).fill([])}}Z({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:n}=e;return{type:"cdlabel",mode:r.mode,side:n.slice(4),label:t[0]}},htmlBuilder(e,t){var r=t.havingStyle(t.style.sup()),n=Lr(Te(e.label,r,t),t);return n.classes.push("cd-label-"+e.side),n.style.bottom=V(.8-n.depth),n.height=0,n.depth=0,n},mathmlBuilder(e,t){var r=new G("mrow",[Ae(e.label,t)]);return r=new G("mpadded",[r]),r.setAttribute("width","0"),e.side==="left"&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),r=new G("mstyle",[r]),r.setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}});Z({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(e,t){var{parser:r}=e;return{type:"cdlabelparent",mode:r.mode,fragment:t[0]}},htmlBuilder(e,t){var r=Lr(Te(e.fragment,t),t);return r.classes.push("cd-vert-arrow"),r},mathmlBuilder(e,t){return new G("mrow",[Ae(e.fragment,t)])}});Z({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(e,t){for(var{parser:r}=e,n=ce(t[0],"ordgroup"),a=n.body,i="",u=0;u=1114111)throw new Y("\\@char with invalid code point "+i);return l<=65535?c=String.fromCharCode(l):(l-=65536,c=String.fromCharCode((l>>10)+55296,(l&1023)+56320)),{type:"textord",mode:r.mode,text:c}}});var go=(e,t)=>{var r=He(e.body,t.withColor(e.color),!1);return Gt(r)},bo=(e,t)=>{var r=dt(e.body,t.withColor(e.color)),n=new G("mstyle",r);return n.setAttribute("mathcolor",e.color),n};Z({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(e,t){var{parser:r}=e,n=ce(t[0],"color-token").color,a=t[1];return{type:"color",mode:r.mode,color:n,body:Re(a)}},htmlBuilder:go,mathmlBuilder:bo});Z({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(e,t){var{parser:r,breakOnTokenText:n}=e,a=ce(t[0],"color-token").color;r.gullet.macros.set("\\current@color",a);var i=r.parseExpression(!0,n);return{type:"color",mode:r.mode,color:a,body:i}},htmlBuilder:go,mathmlBuilder:bo});Z({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(e,t,r){var{parser:n}=e,a=n.gullet.future().text==="["?n.parseSizeGroup(!0):null,i=!n.settings.displayMode||!n.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:n.mode,newLine:i,size:a&&ce(a,"size").value}},htmlBuilder(e,t){var r=z(["mspace"],[],t);return e.newLine&&(r.classes.push("newline"),e.size&&(r.style.marginTop=V(Ie(e.size,t)))),r},mathmlBuilder(e,t){var r=new G("mspace");return e.newLine&&(r.setAttribute("linebreak","newline"),e.size&&r.setAttribute("height",V(Ie(e.size,t)))),r}});var qa={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},Eo=e=>{var t=e.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(t))throw new Y("Expected a control sequence",e);return t},D3=e=>{var t=e.gullet.popToken();return t.text==="="&&(t=e.gullet.popToken(),t.text===" "&&(t=e.gullet.popToken())),t},To=(e,t,r,n)=>{var a=e.gullet.macros.get(r.text);a==null&&(r.noexpand=!0,a={tokens:[r],numArgs:0,unexpandable:!e.gullet.isExpandable(r.text)}),e.gullet.macros.set(t,a,n)};Z({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(e){var{parser:t,funcName:r}=e;t.consumeSpaces();var n=t.fetch();if(qa[n.text])return(r==="\\global"||r==="\\\\globallong")&&(n.text=qa[n.text]),ce(t.parseFunction(),"internal");throw new Y("Invalid token after macro prefix",n)}});Z({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,n=t.gullet.popToken(),a=n.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(a))throw new Y("Expected a control sequence",n);for(var i=0,u,s=[[]];t.gullet.future().text!=="{";)if(n=t.gullet.popToken(),n.text==="#"){if(t.gullet.future().text==="{"){u=t.gullet.future(),s[i].push("{");break}if(n=t.gullet.popToken(),!/^[1-9]$/.test(n.text))throw new Y('Invalid argument number "'+n.text+'"');if(parseInt(n.text)!==i+1)throw new Y('Argument number "'+n.text+'" out of order');i++,s.push([])}else{if(n.text==="EOF")throw new Y("Expected a macro definition");s[i].push(n.text)}var{tokens:l}=t.gullet.consumeArg();return u&&l.unshift(u),(r==="\\edef"||r==="\\xdef")&&(l=t.gullet.expandTokens(l),l.reverse()),t.gullet.macros.set(a,{tokens:l,numArgs:i,delimiters:s},r===qa[r]),{type:"internal",mode:t.mode}}});Z({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,n=Eo(t.gullet.popToken());t.gullet.consumeSpaces();var a=D3(t);return To(t,n,a,r==="\\\\globallet"),{type:"internal",mode:t.mode}}});Z({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,n=Eo(t.gullet.popToken()),a=t.gullet.popToken(),i=t.gullet.popToken();return To(t,n,i,r==="\\\\globalfuture"),t.gullet.pushToken(i),t.gullet.pushToken(a),{type:"internal",mode:t.mode}}});var tn=function(t,r,n){var a=we.math[t]&&we.math[t].replace,i=Ei(a||t,r,n);if(!i)throw new Error("Unsupported symbol "+t+" and font size "+r+".");return i},ki=function(t,r,n,a){var i=n.havingBaseStyle(r),u=z(a.concat(i.sizingClasses(n)),[t],n),s=i.sizeMultiplier/n.sizeMultiplier;return u.height*=s,u.depth*=s,u.maxFontSize=i.sizeMultiplier,u},xo=function(t,r,n){var a=r.havingBaseStyle(n),i=(1-r.sizeMultiplier/a.sizeMultiplier)*r.fontMetrics().axisHeight;t.classes.push("delimcenter"),t.style.top=V(i),t.height-=i,t.depth+=i},O3=function(t,r,n,a,i,u){var s=Qe(t,"Main-Regular",i,a),l=ki(s,r,a,u);return xo(l,a,r),l},L3=function(t,r,n,a){return Qe(t,"Size"+r+"-Regular",n,a)},yo=function(t,r,n,a,i,u){var s=L3(t,r,i,a),l=ki(z(["delimsizing","size"+r],[s],a),oe.TEXT,a,u);return n&&xo(l,a,oe.TEXT),l},ua=function(t,r,n){var a;r==="Size1-Regular"?a="delim-size1":a="delim-size4";var i=z(["delimsizinginner",a],[z([],[Qe(t,r,n)])]);return{type:"elem",elem:i}},sa=function(t,r,n){var a=wt["Size4-Regular"][t.charCodeAt(0)]?wt["Size4-Regular"][t.charCodeAt(0)][4]:wt["Size1-Regular"][t.charCodeAt(0)][4],i=new Zt("inner",q4(t,Math.round(1e3*r))),u=new zt([i],{width:V(a),height:V(r),style:"width:"+V(a),viewBox:"0 0 "+1e3*a+" "+Math.round(1e3*r),preserveAspectRatio:"xMinYMin"}),s=er([],[u],n);return s.height=r,s.style.height=V(r),s.style.width=V(a),{type:"elem",elem:s}},Ya=.008,Vn={type:"kern",size:-1*Ya},R3=new Set(["|","\\lvert","\\rvert","\\vert"]),M3=new Set(["\\|","\\lVert","\\rVert","\\Vert"]),vo=function(t,r,n,a,i,u){var s,l,c,d,f="",g=0;s=c=d=t,l=null;var p="Size1-Regular";t==="\\uparrow"?c=d="⏐":t==="\\Uparrow"?c=d="‖":t==="\\downarrow"?s=c="⏐":t==="\\Downarrow"?s=c="‖":t==="\\updownarrow"?(s="\\uparrow",c="⏐",d="\\downarrow"):t==="\\Updownarrow"?(s="\\Uparrow",c="‖",d="\\Downarrow"):R3.has(t)?(c="∣",f="vert",g=333):M3.has(t)?(c="∥",f="doublevert",g=556):t==="["||t==="\\lbrack"?(s="⎡",c="⎢",d="⎣",p="Size4-Regular",f="lbrack",g=667):t==="]"||t==="\\rbrack"?(s="⎤",c="⎥",d="⎦",p="Size4-Regular",f="rbrack",g=667):t==="\\lfloor"||t==="⌊"?(c=s="⎢",d="⎣",p="Size4-Regular",f="lfloor",g=667):t==="\\lceil"||t==="⌈"?(s="⎡",c=d="⎢",p="Size4-Regular",f="lceil",g=667):t==="\\rfloor"||t==="⌋"?(c=s="⎥",d="⎦",p="Size4-Regular",f="rfloor",g=667):t==="\\rceil"||t==="⌉"?(s="⎤",c=d="⎥",p="Size4-Regular",f="rceil",g=667):t==="("||t==="\\lparen"?(s="⎛",c="⎜",d="⎝",p="Size4-Regular",f="lparen",g=875):t===")"||t==="\\rparen"?(s="⎞",c="⎟",d="⎠",p="Size4-Regular",f="rparen",g=875):t==="\\{"||t==="\\lbrace"?(s="⎧",l="⎨",d="⎩",c="⎪",p="Size4-Regular"):t==="\\}"||t==="\\rbrace"?(s="⎫",l="⎬",d="⎭",c="⎪",p="Size4-Regular"):t==="\\lgroup"||t==="⟮"?(s="⎧",d="⎩",c="⎪",p="Size4-Regular"):t==="\\rgroup"||t==="⟯"?(s="⎫",d="⎭",c="⎪",p="Size4-Regular"):t==="\\lmoustache"||t==="⎰"?(s="⎧",d="⎭",c="⎪",p="Size4-Regular"):(t==="\\rmoustache"||t==="⎱")&&(s="⎫",d="⎩",c="⎪",p="Size4-Regular");var x=tn(s,p,i),S=x.height+x.depth,D=tn(c,p,i),_=D.height+D.depth,N=tn(d,p,i),M=N.height+N.depth,W=0,j=1;if(l!==null){var L=tn(l,p,i);W=L.height+L.depth,j=2}var ee=S+M+W,re=Math.max(0,Math.ceil((r-ee)/(j*_))),K=ee+re*j*_,R=a.fontMetrics().axisHeight;n&&(R*=a.sizeMultiplier);var J=K/2-R,Q=[];if(f.length>0){var be=K-S-M,ne=Math.round(K*1e3),X=Y4(f,Math.round(be*1e3)),me=new Zt(f,X),ke=V(g/1e3),ze=V(ne/1e3),at=new zt([me],{width:ke,height:ze,viewBox:"0 0 "+g+" "+ne}),w=er([],[at],a);w.height=ne/1e3,w.style.width=ke,w.style.height=ze,Q.push({type:"elem",elem:w})}else{if(Q.push(ua(d,p,i)),Q.push(Vn),l===null){var Oe=K-S-M+2*Ya;Q.push(sa(c,Oe,a))}else{var Xe=(K-S-M-W)/2+2*Ya;Q.push(sa(c,Xe,a)),Q.push(Vn),Q.push(ua(l,p,i)),Q.push(Vn),Q.push(sa(c,Xe,a))}Q.push(Vn),Q.push(ua(s,p,i))}var C=a.havingBaseStyle(oe.TEXT),Ye=Ee({positionType:"bottom",positionData:J,children:Q});return ki(z(["delimsizing","mult"],[Ye],C),oe.TEXT,a,u)},la=80,oa=.08,ca=function(t,r,n,a,i){var u=U4(t,a,n),s=new Zt(t,u),l=new zt([s],{width:"400em",height:V(r),viewBox:"0 0 400000 "+n,preserveAspectRatio:"xMinYMin slice"});return er(["hide-tail"],[l],i)},P3=function(t,r){var n=r.havingBaseSizing(),a=Co("\\surd",t*n.sizeMultiplier,wo,n),i=n.sizeMultiplier,u=Math.max(0,r.minRuleThickness-r.fontMetrics().sqrtRuleThickness),s,l,c,d,f;return a.type==="small"?(d=1e3+1e3*u+la,t<1?i=1:t<1.4&&(i=.7),l=(1+u+oa)/i,c=(1+u)/i,s=ca("sqrtMain",l,d,u,r),s.style.minWidth="0.853em",f=.833/i):a.type==="large"?(d=(1e3+la)*sn[a.size],c=(sn[a.size]+u)/i,l=(sn[a.size]+u+oa)/i,s=ca("sqrtSize"+a.size,l,d,u,r),s.style.minWidth="1.02em",f=1/i):(l=t+u+oa,c=t+u,d=Math.floor(1e3*t+u)+la,s=ca("sqrtTall",l,d,u,r),s.style.minWidth="0.742em",f=1.056),s.height=c,s.style.height=V(l),{span:s,advanceWidth:f,ruleWidth:(r.fontMetrics().sqrtRuleThickness+u)*i}},Ao=new Set(["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","\\surd"]),B3=new Set(["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱"]),ko=new Set(["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"]),sn=[0,1.2,1.8,2.4,3],So=function(t,r,n,a,i){if(t==="<"||t==="\\lt"||t==="⟨"?t="\\langle":(t===">"||t==="\\gt"||t==="⟩")&&(t="\\rangle"),Ao.has(t)||ko.has(t))return yo(t,r,!1,n,a,i);if(B3.has(t))return vo(t,sn[r],!1,n,a,i);throw new Y("Illegal delimiter: '"+t+"'")},F3=[{type:"small",style:oe.SCRIPTSCRIPT},{type:"small",style:oe.SCRIPT},{type:"small",style:oe.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],H3=[{type:"small",style:oe.SCRIPTSCRIPT},{type:"small",style:oe.SCRIPT},{type:"small",style:oe.TEXT},{type:"stack"}],wo=[{type:"small",style:oe.SCRIPTSCRIPT},{type:"small",style:oe.SCRIPT},{type:"small",style:oe.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],z3=function(t){if(t.type==="small")return"Main-Regular";if(t.type==="large")return"Size"+t.size+"-Regular";if(t.type==="stack")return"Size4-Regular";var r=t.type;throw new Error("Add support for delim type '"+r+"' here.")},Co=function(t,r,n,a){for(var i=Math.min(2,3-a.style.size),u=i;ur)return s}return n[n.length-1]},Ga=function(t,r,n,a,i,u){t==="<"||t==="\\lt"||t==="⟨"?t="\\langle":(t===">"||t==="\\gt"||t==="⟩")&&(t="\\rangle");var s;ko.has(t)?s=F3:Ao.has(t)?s=wo:s=H3;var l=Co(t,r,s,a);return l.type==="small"?O3(t,l.style,n,a,i,u):l.type==="large"?yo(t,l.size,n,a,i,u):vo(t,r,n,a,i,u)},ha=function(t,r,n,a,i,u){var s=a.fontMetrics().axisHeight*a.sizeMultiplier,l=901,c=5/a.fontMetrics().ptPerEm,d=Math.max(r-s,n+s),f=Math.max(d/500*l,2*d-c);return Ga(t,f,!0,a,i,u)},Qu={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},U3=new Set(["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","<",">","\\langle","⟨","\\rangle","⟩","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."]);function Ku(e){return"isMiddle"in e}function w0(e,t){var r=k0(e);if(r&&U3.has(r.text))return r;throw r?new Y("Invalid delimiter '"+r.text+"' after '"+t.funcName+"'",e):new Y("Invalid delimiter type '"+e.type+"'",e)}Z({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:(e,t)=>{var r=w0(t[0],e);return{type:"delimsizing",mode:e.parser.mode,size:Qu[e.funcName].size,mclass:Qu[e.funcName].mclass,delim:r.text}},htmlBuilder:(e,t)=>e.delim==="."?z([e.mclass]):So(e.delim,e.size,t,e.mode,[e.mclass]),mathmlBuilder:e=>{var t=[];e.delim!=="."&&t.push(bt(e.delim,e.mode));var r=new G("mo",t);e.mclass==="mopen"||e.mclass==="mclose"?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r.setAttribute("stretchy","true");var n=V(sn[e.size]);return r.setAttribute("minsize",n),r.setAttribute("maxsize",n),r}});function Ju(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}Z({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=e.parser.gullet.macros.get("\\current@color");if(r&&typeof r!="string")throw new Y("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:e.parser.mode,delim:w0(t[0],e).text,color:r}}});Z({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=w0(t[0],e),n=e.parser;++n.leftrightDepth;var a=n.parseExpression(!1);--n.leftrightDepth,n.expect("\\right",!1);var i=ce(n.parseFunction(),"leftright-right");return{type:"leftright",mode:n.mode,body:a,left:r.text,right:i.delim,rightColor:i.color}},htmlBuilder:(e,t)=>{Ju(e);for(var r=He(e.body,t,!0,["mopen","mclose"]),n=0,a=0,i=!1,u=0;u{Ju(e);var r=dt(e.body,t);if(e.left!=="."){var n=new G("mo",[bt(e.left,e.mode)]);n.setAttribute("fence","true"),r.unshift(n)}if(e.right!=="."){var a=new G("mo",[bt(e.right,e.mode)]);a.setAttribute("fence","true"),e.rightColor&&a.setAttribute("mathcolor",e.rightColor),r.push(a)}return yi(r)}});Z({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=w0(t[0],e);if(!e.parser.leftrightDepth)throw new Y("\\middle without preceding \\left",r);return{type:"middle",mode:e.parser.mode,delim:r.text}},htmlBuilder:(e,t)=>{var r;return e.delim==="."?r=bn(t,[]):(r=So(e.delim,1,t,e.mode,[]),r.isMiddle={delim:e.delim,options:t}),r},mathmlBuilder:(e,t)=>{var r=e.delim==="\\vert"||e.delim==="|"?bt("|","text"):bt(e.delim,e.mode),n=new G("mo",[r]);return n.setAttribute("fence","true"),n.setAttribute("lspace","0.05em"),n.setAttribute("rspace","0.05em"),n}});var C0=(e,t)=>{var r=Lr(Te(e.body,t),t),n=e.label.slice(1),a=t.sizeMultiplier,i,u,s=qt(e.body);if(n==="sout")i=z(["stretchy","sout"]),i.height=t.fontMetrics().defaultRuleThickness/a,u=-.5*t.fontMetrics().xHeight;else if(n==="phase"){var l=Ie({number:.6,unit:"pt"},t),c=Ie({number:.35,unit:"ex"},t),d=t.havingBaseSizing();a=a/d.sizeMultiplier;var f=r.height+r.depth+l+c;r.style.paddingLeft=V(f/2+l);var g=Math.floor(1e3*f*a),p=H4(g),x=new zt([new Zt("phase",p)],{width:"400em",height:V(g/1e3),viewBox:"0 0 400000 "+g,preserveAspectRatio:"xMinYMin slice"});i=er(["hide-tail"],[x],t),i.style.height=V(f),u=r.depth+l+c}else{/cancel/.test(n)?s||r.classes.push("cancel-pad"):n==="angl"?r.classes.push("anglpad"):r.classes.push("boxpad");var S,D,_=0;/box/.test(n)?(_=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness),S=t.fontMetrics().fboxsep+(n==="colorbox"?0:_),D=S):n==="angl"?(_=Math.max(t.fontMetrics().defaultRuleThickness,t.minRuleThickness),S=4*_,D=Math.max(0,.25-r.depth)):(S=s?.2:0,D=S),i=v3(r,n,S,D,t),/fbox|boxed|fcolorbox/.test(n)?(i.style.borderStyle="solid",i.style.borderWidth=V(_)):n==="angl"&&_!==.049&&(i.style.borderTopWidth=V(_),i.style.borderRightWidth=V(_)),u=r.depth+D,e.backgroundColor&&(i.style.backgroundColor=e.backgroundColor,e.borderColor&&(i.style.borderColor=e.borderColor))}var N;if(e.backgroundColor)N=Ee({positionType:"individualShift",children:[{type:"elem",elem:i,shift:u},{type:"elem",elem:r,shift:0}]});else{var M=/cancel|phase/.test(n)?["svg-align"]:[];N=Ee({positionType:"individualShift",children:[{type:"elem",elem:r,shift:0},{type:"elem",elem:i,shift:u,wrapperClasses:M}]})}return/cancel/.test(n)&&(N.height=r.height,N.depth=r.depth),/cancel/.test(n)&&!s?z(["mord","cancel-lap"],[N],t):z(["mord"],[N],t)},_0=(e,t)=>{var r,n=new G(e.label.includes("colorbox")?"mpadded":"menclose",[Ae(e.body,t)]);switch(e.label){case"\\cancel":n.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":n.setAttribute("notation","downdiagonalstrike");break;case"\\phase":n.setAttribute("notation","phasorangle");break;case"\\sout":n.setAttribute("notation","horizontalstrike");break;case"\\fbox":n.setAttribute("notation","box");break;case"\\angl":n.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(r=t.fontMetrics().fboxsep*t.fontMetrics().ptPerEm,n.setAttribute("width","+"+2*r+"pt"),n.setAttribute("height","+"+2*r+"pt"),n.setAttribute("lspace",r+"pt"),n.setAttribute("voffset",r+"pt"),e.label==="\\fcolorbox"){var a=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness);n.setAttribute("style","border: "+V(a)+" solid "+e.borderColor)}break;case"\\xcancel":n.setAttribute("notation","updiagonalstrike downdiagonalstrike");break}return e.backgroundColor&&n.setAttribute("mathbackground",e.backgroundColor),n};Z({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","hbox"]},handler(e,t,r){var{parser:n,funcName:a}=e,i=ce(t[0],"color-token").color,u=t[1];return{type:"enclose",mode:n.mode,label:a,backgroundColor:i,body:u}},htmlBuilder:C0,mathmlBuilder:_0});Z({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","hbox"]},handler(e,t,r){var{parser:n,funcName:a}=e,i=ce(t[0],"color-token").color,u=ce(t[1],"color-token").color,s=t[2];return{type:"enclose",mode:n.mode,label:a,backgroundColor:u,borderColor:i,body:s}},htmlBuilder:C0,mathmlBuilder:_0});Z({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\fbox",body:t[0]}}});Z({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\phase"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:n}=e,a=t[0];return{type:"enclose",mode:r.mode,label:n,body:a}},htmlBuilder:C0,mathmlBuilder:_0});Z({type:"enclose",names:["\\sout"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r,funcName:n}=e;r.mode==="math"&&r.settings.reportNonstrict("mathVsSout","LaTeX's \\sout works only in text mode");var a=t[0];return{type:"enclose",mode:r.mode,label:n,body:a}},htmlBuilder:C0,mathmlBuilder:_0});Z({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(e,t){var{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\angl",body:t[0]}}});var _o={};function Nt(e){for(var{type:t,names:r,props:n,handler:a,htmlBuilder:i,mathmlBuilder:u}=e,s={type:t,numArgs:n.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:a},l=0;l{var t=e.parser.settings;if(!t.displayMode)throw new Y("{"+e.envName+"} can be used only in display mode.")},q3=new Set(["gather","gather*"]);function Si(e){if(!e.includes("ed"))return!e.includes("*")}function ar(e,t,r){var{hskipBeforeAndAfter:n,addJot:a,cols:i,arraystretch:u,colSeparationType:s,autoTag:l,singleRow:c,emptySingleRow:d,maxNumCols:f,leqno:g}=t;if(e.gullet.beginGroup(),c||e.gullet.macros.set("\\cr","\\\\\\relax"),!u){var p=e.gullet.expandMacroAsText("\\arraystretch");if(p==null)u=1;else if(u=parseFloat(p),!u||u<0)throw new Y("Invalid \\arraystretch: "+p)}e.gullet.beginGroup();var x=[],S=[x],D=[],_=[],N=l!=null?[]:void 0;function M(){l&&e.gullet.macros.set("\\@eqnsw","1",!0)}function W(){N&&(e.gullet.macros.get("\\df@tag")?(N.push(e.subparse([new ot("\\df@tag")])),e.gullet.macros.set("\\df@tag",void 0,!0)):N.push(!!l&&e.gullet.macros.get("\\@eqnsw")==="1"))}for(M(),_.push(Zu(e));;){var j=e.parseExpression(!1,c?"\\end":"\\\\");e.gullet.endGroup(),e.gullet.beginGroup();var L={type:"ordgroup",mode:e.mode,body:j};r&&(L={type:"styling",mode:e.mode,style:r,resetFont:!0,body:[L]}),x.push(L);var ee=e.fetch().text;if(ee==="&"){if(f&&x.length===f){if(c||s)throw new Y("Too many tab characters: &",e.nextToken);e.settings.reportNonstrict("textEnv","Too few columns specified in the {array} column argument.")}e.consume()}else if(ee==="\\end"){W(),x.length===1&&L.type==="styling"&&L.body.length===1&&L.body[0].type==="ordgroup"&&L.body[0].body.length===0&&(S.length>1||!d)&&S.pop(),_.length0&&(M+=.25),c.push({pos:M,isDashed:ue[he]})}for(W(u[0]),n=0;n0&&(J+=N,eeue))for(n=0;n=s)){var it=void 0;if(a>0||t.hskipBeforeAndAfter){var Lt,ir;it=(Lt=(ir=C)==null?void 0:ir.pregap)!=null?Lt:g,it!==0&&(X=z(["arraycolsep"],[]),X.style.width=V(it),ne.push(X))}var _n=[];for(n=0;n0){for(var R0=Or("hline",r,d),M0=Or("hdashline",r,d),Vr=[{type:"elem",elem:ur,shift:0}];c.length>0;){var Ln=c.pop(),Rn=Ln.pos-Q;Ln.isDashed?Vr.push({type:"elem",elem:M0,shift:Rn}):Vr.push({type:"elem",elem:R0,shift:Rn})}ur=Ee({positionType:"individualShift",children:Vr})}if(ke.length===0)return z(["mord"],[ur],r);var B=Ee({positionType:"individualShift",children:ke}),$=z(["tag"],[B],r);return Gt([ur,$])},Y3={c:"center ",l:"left ",r:"right "},Ot=function(t,r){for(var n=[],a=new G("mtd",[],["mtr-glue"]),i=new G("mtd",[],["mml-eqn-num"]),u=0;u0){var x=t.cols,S="",D=!1,_=0,N=x.length;x[0].type==="separator"&&(g+="top ",_=1),x[x.length-1].type==="separator"&&(g+="bottom ",N-=1);for(var M=_;M0?"left ":"",g+=K[K.length-1].length>0?"right ":"";for(var R=1;R0&&p&&(D=1),n[x]={type:"align",align:S,pregap:D,postgap:0}}return u.colSeparationType=p?"align":"alignat",u};Nt({type:"array",names:["array","darray"],props:{numArgs:1},handler(e,t){var r=k0(t[0]),n=r?[t[0]]:ce(t[0],"ordgroup").body,a=n.map(function(u){var s=A0(u),l=s.text;if("lcr".includes(l))return{type:"align",align:l};if(l==="|")return{type:"separator",separator:"|"};if(l===":")return{type:"separator",separator:":"};throw new Y("Unknown column alignment: "+l,u)}),i={cols:a,hskipBeforeAndAfter:!0,maxNumCols:a.length};return ar(e.parser,i,wi(e.envName))},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(e){var t={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[e.envName.replace("*","")],r="c",n={hskipBeforeAndAfter:!1,cols:[{type:"align",align:r}]};if(e.envName.charAt(e.envName.length-1)==="*"){var a=e.parser;if(a.consumeSpaces(),a.fetch().text==="["){if(a.consume(),a.consumeSpaces(),r=a.fetch().text,!"lcr".includes(r))throw new Y("Expected l or c or r",a.nextToken);a.consume(),a.consumeSpaces(),a.expect("]"),a.consume(),n.cols=[{type:"align",align:r}]}}var i=ar(e.parser,n,wi(e.envName)),u=Math.max(0,...i.body.map(s=>s.length));return i.cols=new Array(u).fill({type:"align",align:r}),t?{type:"leftright",mode:e.mode,body:[i],left:t[0],right:t[1],rightColor:void 0}:i},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(e){var t={arraystretch:.5},r=ar(e.parser,t,"script");return r.colSeparationType="small",r},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["subarray"],props:{numArgs:1},handler(e,t){var r=k0(t[0]),n=r?[t[0]]:ce(t[0],"ordgroup").body,a=n.map(function(s){var l=A0(s),c=l.text;if("lc".includes(c))return{type:"align",align:c};throw new Y("Unknown column alignment: "+c,s)});if(a.length>1)throw new Y("{subarray} can contain only one column");var i={cols:a,hskipBeforeAndAfter:!1,arraystretch:.5},u=ar(e.parser,i,"script");if(u.body.length>0&&u.body[0].length>1)throw new Y("{subarray} can contain only one column");return u},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(e){var t={arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},r=ar(e.parser,t,wi(e.envName));return{type:"leftright",mode:e.mode,body:[r],left:e.envName.includes("r")?".":"\\{",right:e.envName.includes("r")?"\\}":".",rightColor:void 0}},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:No,htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(e){q3.has(e.envName)&&I0(e);var t={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:Si(e.envName),emptySingleRow:!0,leqno:e.parser.settings.leqno};return ar(e.parser,t,"display")},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:No,htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(e){I0(e);var t={autoTag:Si(e.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:e.parser.settings.leqno};return ar(e.parser,t,"display")},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["CD"],props:{numArgs:0},handler(e){return I0(e),N3(e.parser)},htmlBuilder:Dt,mathmlBuilder:Ot});E("\\nonumber","\\gdef\\@eqnsw{0}");E("\\notag","\\nonumber");Z({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(e,t){throw new Y(e.funcName+" valid only within array environment")}});var es=_o;Z({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(e,t){var{parser:r,funcName:n}=e,a=t[0];if(a.type!=="ordgroup")throw new Y("Invalid environment name",a);for(var i="",u=0;u{var r=e.font,n=t.withFont(r);return Te(e.body,n)},Oo=(e,t)=>{var r=e.font,n=t.withFont(r);return Ae(e.body,n)},ts={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak"};Z({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=u0(t[0]),i=n;return i in ts&&(i=ts[i]),{type:"font",mode:r.mode,font:i.slice(1),body:a}},htmlBuilder:Do,mathmlBuilder:Oo});Z({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:(e,t)=>{var{parser:r}=e,n=t[0];return{type:"mclass",mode:r.mode,mclass:S0(n),body:[{type:"font",mode:r.mode,font:"boldsymbol",body:n}],isCharacterBox:qt(n)}}});Z({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:(e,t)=>{var{parser:r,funcName:n,breakOnTokenText:a}=e,{mode:i}=r,u=r.parseExpression(!0,a);return{type:"font",mode:i,font:"math"+n.slice(1),body:{type:"ordgroup",mode:r.mode,body:u}}},htmlBuilder:Do,mathmlBuilder:Oo});var G3=(e,t)=>{var r=t.style,n=r.fracNum(),a=r.fracDen(),i;i=t.havingStyle(n);var u=Te(e.numer,i,t);if(e.continued){var s=8.5/t.fontMetrics().ptPerEm,l=3.5/t.fontMetrics().ptPerEm;u.height=u.height0?x=3*g:x=7*g,S=t.fontMetrics().denom1):(f>0?(p=t.fontMetrics().num2,x=g):(p=t.fontMetrics().num3,x=3*g),S=t.fontMetrics().denom2);var D;if(d){var N=t.fontMetrics().axisHeight;p-u.depth-(N+.5*f){var r=new G("mfrac",[Ae(e.numer,t),Ae(e.denom,t)]);if(!e.hasBarLine)r.setAttribute("linethickness","0px");else if(e.barSize){var n=Ie(e.barSize,t);r.setAttribute("linethickness",V(n))}if(e.leftDelim!=null||e.rightDelim!=null){var a=[];if(e.leftDelim!=null){var i=new G("mo",[new Me(e.leftDelim.replace("\\",""))]);i.setAttribute("fence","true"),a.push(i)}if(a.push(r),e.rightDelim!=null){var u=new G("mo",[new Me(e.rightDelim.replace("\\",""))]);u.setAttribute("fence","true"),a.push(u)}return yi(a)}return r},Lo=(e,t)=>{if(!t)return e;var r={type:"styling",mode:e.mode,style:t,body:[e]};return r};Z({type:"genfrac",names:["\\cfrac","\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=t[0],i=t[1],u,s=null,l=null;switch(n){case"\\cfrac":case"\\dfrac":case"\\frac":case"\\tfrac":u=!0;break;case"\\\\atopfrac":u=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":u=!1,s="(",l=")";break;case"\\\\bracefrac":u=!1,s="\\{",l="\\}";break;case"\\\\brackfrac":u=!1,s="[",l="]";break;default:throw new Error("Unrecognized genfrac command")}var c=n==="\\cfrac",d=null;return c||n.startsWith("\\d")?d="display":n.startsWith("\\t")&&(d="text"),Lo({type:"genfrac",mode:r.mode,numer:a,denom:i,continued:c,hasBarLine:u,leftDelim:s,rightDelim:l,barSize:null},d)},htmlBuilder:G3,mathmlBuilder:V3});Z({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(e){var{parser:t,funcName:r,token:n}=e,a;switch(r){case"\\over":a="\\frac";break;case"\\choose":a="\\binom";break;case"\\atop":a="\\\\atopfrac";break;case"\\brace":a="\\\\bracefrac";break;case"\\brack":a="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:t.mode,replaceWith:a,token:n}}});var rs=["display","text","script","scriptscript"],ns=function(t){var r=null;return t.length>0&&(r=t,r=r==="."?null:r),r};Z({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(e,t){var{parser:r}=e,n=t[4],a=t[5],i=u0(t[0]),u=i.type==="atom"&&i.family==="open"?ns(i.text):null,s=u0(t[1]),l=s.type==="atom"&&s.family==="close"?ns(s.text):null,c=ce(t[2],"size"),d,f=null;c.isBlank?d=!0:(f=c.value,d=f.number>0);var g=null,p=t[3];if(p.type==="ordgroup"){if(p.body.length>0){var x=ce(p.body[0],"textord");g=rs[Number(x.text)]}}else p=ce(p,"textord"),g=rs[Number(p.text)];return Lo({type:"genfrac",mode:r.mode,numer:n,denom:a,continued:!1,hasBarLine:d,barSize:f,leftDelim:u,rightDelim:l},g)}});Z({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(e,t){var{parser:r,funcName:n,token:a}=e;return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:ce(t[0],"size").value,token:a}}});Z({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=t[0],i=ce(t[1],"infix").size;if(!i)throw new Error("\\\\abovefrac expected size, but got "+String(i));var u=t[2],s=i.number>0;return{type:"genfrac",mode:r.mode,numer:a,denom:u,continued:!1,hasBarLine:s,barSize:i,leftDelim:null,rightDelim:null}}});var Ro=(e,t)=>{var r=t.style,n,a;e.type==="supsub"?(n=e.sup?Te(e.sup,t.havingStyle(r.sup()),t):Te(e.sub,t.havingStyle(r.sub()),t),a=ce(e.base,"horizBrace")):a=ce(e,"horizBrace");var i=Te(a.base,t.havingBaseStyle(oe.DISPLAY)),u=v0(a,t),s;if(a.isOver?s=Ee({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:.1},{type:"elem",elem:u,wrapperClasses:["svg-align"]}]}):s=Ee({positionType:"bottom",positionData:i.depth+.1+u.height,children:[{type:"elem",elem:u,wrapperClasses:["svg-align"]},{type:"kern",size:.1},{type:"elem",elem:i}]}),n){var l=z(["minner",a.isOver?"mover":"munder"],[s],t);a.isOver?s=Ee({positionType:"firstBaseline",children:[{type:"elem",elem:l},{type:"kern",size:.2},{type:"elem",elem:n}]}):s=Ee({positionType:"bottom",positionData:l.depth+.2+n.height+n.depth,children:[{type:"elem",elem:n},{type:"kern",size:.2},{type:"elem",elem:l}]})}return z(["minner",a.isOver?"mover":"munder"],[s],t)},j3=(e,t)=>{var r=y0(e.label);return new G(e.isOver?"mover":"munder",[Ae(e.base,t),r])};Z({type:"horizBrace",names:["\\overbrace","\\underbrace","\\overbracket","\\underbracket"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:n}=e;return{type:"horizBrace",mode:r.mode,label:n,isOver:n.includes("\\over"),base:t[0]}},htmlBuilder:Ro,mathmlBuilder:j3});Z({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,n=t[1],a=ce(t[0],"url").url;return r.settings.isTrusted({command:"\\href",url:a})?{type:"href",mode:r.mode,href:a,body:Re(n)}:r.formatUnsupportedCmd("\\href")},htmlBuilder:(e,t)=>{var r=He(e.body,t,!1);return i3(e.href,[],r,t)},mathmlBuilder:(e,t)=>{var r=tr(e.body,t);return r instanceof G||(r=new G("mrow",[r])),r.setAttribute("href",e.href),r}});Z({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,n=ce(t[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:n}))return r.formatUnsupportedCmd("\\url");for(var a=[],i=0;i{var{parser:r,funcName:n,token:a}=e,i=ce(t[0],"raw").string,u=t[1];r.settings.strict&&r.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var s,l={};switch(n){case"\\htmlClass":l.class=i,s={command:"\\htmlClass",class:i};break;case"\\htmlId":l.id=i,s={command:"\\htmlId",id:i};break;case"\\htmlStyle":l.style=i,s={command:"\\htmlStyle",style:i};break;case"\\htmlData":{for(var c=i.split(","),d=0;d{var r=He(e.body,t,!1),n=["enclosing"];e.attributes.class&&n.push(...e.attributes.class.trim().split(/\s+/));var a=z(n,r,t);for(var i in e.attributes)i!=="class"&&e.attributes.hasOwnProperty(i)&&a.setAttribute(i,e.attributes[i]);return a},mathmlBuilder:(e,t)=>tr(e.body,t)});Z({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInArgument:!0,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e;return{type:"htmlmathml",mode:r.mode,html:Re(t[0]),mathml:Re(t[1])}},htmlBuilder:(e,t)=>{var r=He(e.html,t,!1);return Gt(r)},mathmlBuilder:(e,t)=>tr(e.mathml,t)});var da=function(t){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(t))return{number:+t,unit:"bp"};var r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t);if(!r)throw new Y("Invalid size: '"+t+"' in \\includegraphics");var n={number:+(r[1]+r[2]),unit:r[3]};if(!Ql(n))throw new Y("Invalid unit: '"+n.unit+"' in \\includegraphics.");return n};Z({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:(e,t,r)=>{var{parser:n}=e,a={number:0,unit:"em"},i={number:.9,unit:"em"},u={number:0,unit:"em"},s="";if(r[0])for(var l=ce(r[0],"raw").string,c=l.split(","),d=0;d{var r=Ie(e.height,t),n=0;e.totalheight.number>0&&(n=Ie(e.totalheight,t)-r);var a=0;e.width.number>0&&(a=Ie(e.width,t));var i={height:V(r+n)};a>0&&(i.width=V(a)),n>0&&(i.verticalAlign=V(-n));var u=new W4(e.src,e.alt,i);return u.height=r,u.depth=n,u},mathmlBuilder:(e,t)=>{var r=new G("mglyph",[]);r.setAttribute("alt",e.alt);var n=Ie(e.height,t),a=0;if(e.totalheight.number>0&&(a=Ie(e.totalheight,t)-n,r.setAttribute("valign",V(-a))),r.setAttribute("height",V(n+a)),e.width.number>0){var i=Ie(e.width,t);r.setAttribute("width",V(i))}return r.setAttribute("src",e.src),r}});Z({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(e,t){var{parser:r,funcName:n}=e,a=ce(t[0],"size");if(r.settings.strict){var i=n[1]==="m",u=a.value.unit==="mu";i?(u||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" supports only mu units, "+("not "+a.value.unit+" units")),r.mode!=="math"&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" works only in math mode")):u&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:a.value}},htmlBuilder(e,t){return ro(e.dimension,t)},mathmlBuilder(e,t){var r=Ie(e.dimension,t);return new lo(r)}});Z({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=t[0];return{type:"lap",mode:r.mode,alignment:n.slice(5),body:a}},htmlBuilder:(e,t)=>{var r;e.alignment==="clap"?(r=z([],[Te(e.body,t)]),r=z(["inner"],[r],t)):r=z(["inner"],[Te(e.body,t)]);var n=z(["fix"],[]),a=z([e.alignment],[r,n],t),i=z(["strut"]);return i.style.height=V(a.height+a.depth),a.depth&&(i.style.verticalAlign=V(-a.depth)),a.children.unshift(i),a=z(["thinbox"],[a],t),z(["mord","vbox"],[a],t)},mathmlBuilder:(e,t)=>{var r=new G("mpadded",[Ae(e.body,t)]);if(e.alignment!=="rlap"){var n=e.alignment==="llap"?"-1":"-0.5";r.setAttribute("lspace",n+"width")}return r.setAttribute("width","0px"),r}});Z({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){var{funcName:r,parser:n}=e,a=n.mode;n.switchMode("math");var i=r==="\\("?"\\)":"$",u=n.parseExpression(!1,i);return n.expect(i),n.switchMode(a),{type:"styling",mode:n.mode,style:"text",resetFont:!0,body:u}}});Z({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){throw new Y("Mismatched "+e.funcName)}});var as=(e,t)=>{switch(t.style.size){case oe.DISPLAY.size:return e.display;case oe.TEXT.size:return e.text;case oe.SCRIPT.size:return e.script;case oe.SCRIPTSCRIPT.size:return e.scriptscript;default:return e.text}};Z({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:(e,t)=>{var{parser:r}=e;return{type:"mathchoice",mode:r.mode,display:Re(t[0]),text:Re(t[1]),script:Re(t[2]),scriptscript:Re(t[3])}},htmlBuilder:(e,t)=>{var r=as(e,t),n=He(r,t,!1);return Gt(n)},mathmlBuilder:(e,t)=>{var r=as(e,t);return tr(r,t)}});var Mo=(e,t,r,n,a,i,u)=>{e=z([],[e]);var s=r&&qt(r),l,c;if(t){var d=Te(t,n.havingStyle(a.sup()),n);c={elem:d,kern:Math.max(n.fontMetrics().bigOpSpacing1,n.fontMetrics().bigOpSpacing3-d.depth)}}if(r){var f=Te(r,n.havingStyle(a.sub()),n);l={elem:f,kern:Math.max(n.fontMetrics().bigOpSpacing2,n.fontMetrics().bigOpSpacing4-f.height)}}var g;if(c&&l){var p=n.fontMetrics().bigOpSpacing5+l.elem.height+l.elem.depth+l.kern+e.depth+u;g=Ee({positionType:"bottom",positionData:p,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:l.elem,marginLeft:V(-i)},{type:"kern",size:l.kern},{type:"elem",elem:e},{type:"kern",size:c.kern},{type:"elem",elem:c.elem,marginLeft:V(i)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]})}else if(l){var x=e.height-u;g=Ee({positionType:"top",positionData:x,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:l.elem,marginLeft:V(-i)},{type:"kern",size:l.kern},{type:"elem",elem:e}]})}else if(c){var S=e.depth+u;g=Ee({positionType:"bottom",positionData:S,children:[{type:"elem",elem:e},{type:"kern",size:c.kern},{type:"elem",elem:c.elem,marginLeft:V(i)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]})}else return e;var D=[g];if(l&&i!==0&&!s){var _=z(["mspace"],[],n);_.style.marginRight=V(i),D.unshift(_)}return z(["mop","op-limits"],D,n)},Po=new Set(["\\smallint"]),zr=(e,t)=>{var r,n,a=!1,i;e.type==="supsub"?(r=e.sup,n=e.sub,i=ce(e.base,"op"),a=!0):i=ce(e,"op");var u=t.style,s=!1;u.size===oe.DISPLAY.size&&i.symbol&&!Po.has(i.name)&&(s=!0);var l,c;if(i.symbol){var d=s?"Size2-Regular":"Size1-Regular",f="";if((i.name==="\\oiint"||i.name==="\\oiiint")&&(f=i.name.slice(1),i.name=f==="oiint"?"\\iint":"\\iiint"),l=Qe(i.name,d,"math",t,["mop","op-symbol",s?"large-op":"small-op"]),c=l.italic,f.length>0){var g=ao(f+"Size"+(s?"2":"1"),t);l=Ee({positionType:"individualShift",children:[{type:"elem",elem:l,shift:0},{type:"elem",elem:g,shift:s?.08:0}]}),i.name="\\"+f,l.classes.unshift("mop"),l.italic=c}}else if(i.body){var p=He(i.body,t,!0);p.length===1&&p[0]instanceof ct?(l=p[0],l.classes[0]="mop"):l=z(["mop"],p,t)}else{for(var x=[],S=1;S{var r;if(e.symbol)r=new G("mo",[bt(e.name,e.mode)]),Po.has(e.name)&&r.setAttribute("largeop","false");else if(e.body)r=new G("mo",dt(e.body,t));else{r=new G("mi",[new Me(e.name.slice(1))]);var n=new G("mo",[bt("⁡","text")]);e.parentIsSupSub?r=new G("mrow",[r,n]):r=so([r,n])}return r},W3={"∏":"\\prod","∐":"\\coprod","∑":"\\sum","⋀":"\\bigwedge","⋁":"\\bigvee","⋂":"\\bigcap","⋃":"\\bigcup","⨀":"\\bigodot","⨁":"\\bigoplus","⨂":"\\bigotimes","⨄":"\\biguplus","⨆":"\\bigsqcup"};Z({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","∏","∐","∑","⋀","⋁","⋂","⋃","⨀","⨁","⨂","⨄","⨆"],props:{numArgs:0},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=n;return a.length===1&&(a=W3[a]),{type:"op",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:a}},htmlBuilder:zr,mathmlBuilder:Sn});Z({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var{parser:r}=e,n=t[0];return{type:"op",mode:r.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:Re(n)}},htmlBuilder:zr,mathmlBuilder:Sn});var X3={"∫":"\\int","∬":"\\iint","∭":"\\iiint","∮":"\\oint","∯":"\\oiint","∰":"\\oiiint"};Z({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:zr,mathmlBuilder:Sn});Z({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:zr,mathmlBuilder:Sn});Z({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","∫","∬","∭","∮","∯","∰"],props:{numArgs:0,allowedInArgument:!0},handler(e){var{parser:t,funcName:r}=e,n=r;return n.length===1&&(n=X3[n]),{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:zr,mathmlBuilder:Sn});var Bo=(e,t)=>{var r,n,a=!1,i;e.type==="supsub"?(r=e.sup,n=e.sub,i=ce(e.base,"operatorname"),a=!0):i=ce(e,"operatorname");var u;if(i.body.length>0){for(var s=i.body.map(f=>{var g="text"in f?f.text:void 0;return typeof g=="string"?{type:"textord",mode:f.mode,text:g}:f}),l=He(s,t.withFont("mathrm"),!0),c=0;c{for(var r=dt(e.body,t.withFont("mathrm")),n=!0,a=0;ad.toText()).join("");r=[new Me(s)]}var l=new G("mi",r);l.setAttribute("mathvariant","normal");var c=new G("mo",[bt("⁡","text")]);return e.parentIsSupSub?new G("mrow",[l,c]):so([l,c])};Z({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=t[0];return{type:"operatorname",mode:r.mode,body:Re(a),alwaysHandleSupSub:n==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},htmlBuilder:Bo,mathmlBuilder:$3});E("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");br({type:"ordgroup",htmlBuilder(e,t){return e.semisimple?Gt(He(e.body,t,!1)):z(["mord"],He(e.body,t,!0),t)},mathmlBuilder(e,t){return tr(e.body,t,!0)}});Z({type:"overline",names:["\\overline"],props:{numArgs:1},handler(e,t){var{parser:r}=e,n=t[0];return{type:"overline",mode:r.mode,body:n}},htmlBuilder(e,t){var r=Te(e.body,t.havingCrampedStyle()),n=Or("overline-line",t),a=t.fontMetrics().defaultRuleThickness,i=Ee({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*a},{type:"elem",elem:n},{type:"kern",size:a}]});return z(["mord","overline"],[i],t)},mathmlBuilder(e,t){var r=new G("mo",[new Me("‾")]);r.setAttribute("stretchy","true");var n=new G("mover",[Ae(e.body,t),r]);return n.setAttribute("accent","true"),n}});Z({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,n=t[0];return{type:"phantom",mode:r.mode,body:Re(n)}},htmlBuilder:(e,t)=>{var r=He(e.body,t.withPhantom(),!1);return Gt(r)},mathmlBuilder:(e,t)=>{var r=dt(e.body,t);return new G("mphantom",r)}});E("\\hphantom","\\smash{\\phantom{#1}}");Z({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,n=t[0];return{type:"vphantom",mode:r.mode,body:n}},htmlBuilder:(e,t)=>{var r=z(["inner"],[Te(e.body,t.withPhantom())]),n=z(["fix"],[]);return z(["mord","rlap"],[r,n],t)},mathmlBuilder:(e,t)=>{var r=dt(Re(e.body),t),n=new G("mphantom",r),a=new G("mpadded",[n]);return a.setAttribute("width","0px"),a}});Z({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(e,t){var{parser:r}=e,n=ce(t[0],"size").value,a=t[1];return{type:"raisebox",mode:r.mode,dy:n,body:a}},htmlBuilder(e,t){var r=Te(e.body,t),n=Ie(e.dy,t);return Ee({positionType:"shift",positionData:-n,children:[{type:"elem",elem:r}]})},mathmlBuilder(e,t){var r=new G("mpadded",[Ae(e.body,t)]),n=e.dy.number+e.dy.unit;return r.setAttribute("voffset",n),r}});Z({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(e){var{parser:t}=e;return{type:"internal",mode:t.mode}}});Z({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(e,t,r){var{parser:n}=e,a=r[0],i=ce(t[0],"size"),u=ce(t[1],"size");return{type:"rule",mode:n.mode,shift:a&&ce(a,"size").value,width:i.value,height:u.value}},htmlBuilder(e,t){var r=z(["mord","rule"],[],t),n=Ie(e.width,t),a=Ie(e.height,t),i=e.shift?Ie(e.shift,t):0;return r.style.borderRightWidth=V(n),r.style.borderTopWidth=V(a),r.style.bottom=V(i),r.width=n,r.height=a+i,r.depth=-i,r.maxFontSize=a*1.125*t.sizeMultiplier,r},mathmlBuilder(e,t){var r=Ie(e.width,t),n=Ie(e.height,t),a=e.shift?Ie(e.shift,t):0,i=t.color&&t.getColor()||"black",u=new G("mspace");u.setAttribute("mathbackground",i),u.setAttribute("width",V(r)),u.setAttribute("height",V(n));var s=new G("mpadded",[u]);return a>=0?s.setAttribute("height",V(a)):(s.setAttribute("height",V(a)),s.setAttribute("depth",V(-a))),s.setAttribute("voffset",V(a)),s}});function Fo(e,t,r){for(var n=He(e,t,!1),a=t.sizeMultiplier/r.sizeMultiplier,i=0;i{var r=t.havingSize(e.size);return Fo(e.body,r,t)};Z({type:"sizing",names:is,props:{numArgs:0,allowedInText:!0},handler:(e,t)=>{var{breakOnTokenText:r,funcName:n,parser:a}=e,i=a.parseExpression(!1,r);return{type:"sizing",mode:a.mode,size:is.indexOf(n)+1,body:i}},htmlBuilder:Q3,mathmlBuilder:(e,t)=>{var r=t.havingSize(e.size),n=dt(e.body,r),a=new G("mstyle",n);return a.setAttribute("mathsize",V(r.sizeMultiplier)),a}});Z({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:(e,t,r)=>{var{parser:n}=e,a=!1,i=!1,u=r[0]&&ce(r[0],"ordgroup");if(u)for(var s,l=0;l{var r=z([],[Te(e.body,t)]);if(!e.smashHeight&&!e.smashDepth)return r;if(e.smashHeight&&(r.height=0),e.smashDepth&&(r.depth=0),e.smashHeight&&e.smashDepth)return z(["mord","smash"],[r],t);if(r.children)for(var n=0;n{var r=new G("mpadded",[Ae(e.body,t)]);return e.smashHeight&&r.setAttribute("height","0px"),e.smashDepth&&r.setAttribute("depth","0px"),r}});Z({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){var{parser:n}=e,a=r[0],i=t[0];return{type:"sqrt",mode:n.mode,body:i,index:a}},htmlBuilder(e,t){var r=Te(e.body,t.havingCrampedStyle());r.height===0&&(r.height=t.fontMetrics().xHeight),r=Lr(r,t);var n=t.fontMetrics(),a=n.defaultRuleThickness,i=a;t.style.idr.height+r.depth+u&&(u=(u+f-r.height-r.depth)/2);var g=l.height-r.height-u-c;r.style.paddingLeft=V(d);var p=Ee({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+g)},{type:"elem",elem:l},{type:"kern",size:c}]});if(e.index){var x=t.havingStyle(oe.SCRIPTSCRIPT),S=Te(e.index,x,t),D=.6*(p.height-p.depth),_=Ee({positionType:"shift",positionData:-D,children:[{type:"elem",elem:S}]}),N=z(["root"],[_]);return z(["mord","sqrt"],[N,p],t)}else return z(["mord","sqrt"],[p],t)},mathmlBuilder(e,t){var{body:r,index:n}=e;return n?new G("mroot",[Ae(r,t),Ae(n,t)]):new G("msqrt",[Ae(r,t)])}});var Va={display:oe.DISPLAY,text:oe.TEXT,script:oe.SCRIPT,scriptscript:oe.SCRIPTSCRIPT};function K3(e){return e in Va}Z({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e,t){var{breakOnTokenText:r,funcName:n,parser:a}=e,i=a.parseExpression(!0,r),u=n.slice(1,n.length-5);if(!K3(u))throw new Error("Unknown style: "+u);return{type:"styling",mode:a.mode,style:u,body:i}},htmlBuilder(e,t){var r=Va[e.style],n=t.havingStyle(r);return e.resetFont&&(n=n.withFont("")),Fo(e.body,n,t)},mathmlBuilder(e,t){var r=Va[e.style],n=t.havingStyle(r);e.resetFont&&(n=n.withFont(""));var a=dt(e.body,n),i=new G("mstyle",a),u={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},s=u[e.style];return i.setAttribute("scriptlevel",s[0]),i.setAttribute("displaystyle",s[1]),i}});var J3=function(t,r){var n=t.base;if(n)if(n.type==="op"){var a=n.limits&&(r.style.size===oe.DISPLAY.size||n.alwaysHandleSupSub);return a?zr:null}else if(n.type==="operatorname"){var i=n.alwaysHandleSupSub&&(r.style.size===oe.DISPLAY.size||n.limits);return i?Bo:null}else{if(n.type==="accent")return qt(n.base)?Ai:null;if(n.type==="horizBrace"){var u=!t.sub;return u===n.isOver?Ro:null}else return null}else return null};br({type:"supsub",htmlBuilder(e,t){var r=J3(e,t);if(r)return r(e,t);var{base:n,sup:a,sub:i}=e,u=Te(n,t),s,l,c=t.fontMetrics(),d=0,f=0,g=n&&qt(n);if(a){var p=t.havingStyle(t.style.sup());s=Te(a,p,t),g||(d=u.height-p.fontMetrics().supDrop*p.sizeMultiplier/t.sizeMultiplier)}if(i){var x=t.havingStyle(t.style.sub());l=Te(i,x,t),g||(f=u.depth+x.fontMetrics().subDrop*x.sizeMultiplier/t.sizeMultiplier)}var S;t.style===oe.DISPLAY?S=c.sup1:t.style.cramped?S=c.sup3:S=c.sup2;var D=t.sizeMultiplier,_=V(.5/c.ptPerEm/D),N=null;if(l){var M=e.base&&e.base.type==="op"&&e.base.name&&(e.base.name==="\\oiint"||e.base.name==="\\oiiint");if(u instanceof ct||M){var W;N=V(-((W=u.italic)!=null?W:0))}}var j;if(s&&l){d=Math.max(d,S,s.depth+.25*c.xHeight),f=Math.max(f,c.sub2);var L=c.defaultRuleThickness,ee=4*L;if(d-s.depth-(l.height-f)0&&(d+=re,f-=re)}var K=[{type:"elem",elem:l,shift:f,marginRight:_,marginLeft:N},{type:"elem",elem:s,shift:-d,marginRight:_}];j=Ee({positionType:"individualShift",children:K})}else if(l){f=Math.max(f,c.sub1,l.height-.8*c.xHeight);var R=[{type:"elem",elem:l,marginLeft:N,marginRight:_}];j=Ee({positionType:"shift",positionData:f,children:R})}else if(s)d=Math.max(d,S,s.depth+.25*c.xHeight),j=Ee({positionType:"shift",positionData:-d,children:[{type:"elem",elem:s,marginRight:_}]});else throw new Error("supsub must have either sup or sub.");var J=za(u,"right")||"mord";return z([J],[u,z(["msupsub"],[j])],t)},mathmlBuilder(e,t){var r=!1,n,a;e.base&&e.base.type==="horizBrace"&&(a=!!e.sup,a===e.base.isOver&&(r=!0,n=e.base.isOver)),e.base&&(e.base.type==="op"||e.base.type==="operatorname")&&(e.base.parentIsSupSub=!0);var i=[Ae(e.base,t)];e.sub&&i.push(Ae(e.sub,t)),e.sup&&i.push(Ae(e.sup,t));var u;if(r)u=n?"mover":"munder";else if(e.sub)if(e.sup){var c=e.base;c&&c.type==="op"&&c.limits&&t.style===oe.DISPLAY||c&&c.type==="operatorname"&&c.alwaysHandleSupSub&&(t.style===oe.DISPLAY||c.limits)?u="munderover":u="msubsup"}else{var l=e.base;l&&l.type==="op"&&l.limits&&(t.style===oe.DISPLAY||l.alwaysHandleSupSub)||l&&l.type==="operatorname"&&l.alwaysHandleSupSub&&(l.limits||t.style===oe.DISPLAY)?u="munder":u="msub"}else{var s=e.base;s&&s.type==="op"&&s.limits&&(t.style===oe.DISPLAY||s.alwaysHandleSupSub)||s&&s.type==="operatorname"&&s.alwaysHandleSupSub&&(s.limits||t.style===oe.DISPLAY)?u="mover":u="msup"}return new G(u,i)}});br({type:"atom",htmlBuilder(e,t){return Ti(e.text,e.mode,t,["m"+e.family])},mathmlBuilder(e,t){var r=new G("mo",[bt(e.text,e.mode)]);if(e.family==="bin"){var n=vi(e,t);n==="bold-italic"&&r.setAttribute("mathvariant",n)}else e.family==="punct"?r.setAttribute("separator","true"):(e.family==="open"||e.family==="close")&&r.setAttribute("stretchy","false");return r}});var Ho={mi:"italic",mn:"normal",mtext:"normal"};br({type:"mathord",htmlBuilder(e,t){return x0(e,t,"mathord")},mathmlBuilder(e,t){var r=new G("mi",[bt(e.text,e.mode,t)]),n=vi(e,t)||"italic";return n!==Ho[r.type]&&r.setAttribute("mathvariant",n),r}});br({type:"textord",htmlBuilder(e,t){return x0(e,t,"textord")},mathmlBuilder(e,t){var r=bt(e.text,e.mode,t),n=vi(e,t)||"normal",a;return e.mode==="text"?a=new G("mtext",[r]):/[0-9]/.test(e.text)?a=new G("mn",[r]):e.text==="\\prime"?a=new G("mo",[r]):a=new G("mi",[r]),n!==Ho[a.type]&&a.setAttribute("mathvariant",n),a}});var fa={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},ma={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};br({type:"spacing",htmlBuilder(e,t){if(ma.hasOwnProperty(e.text)){var r=ma[e.text].className||"";if(e.mode==="text"){var n=x0(e,t,"textord");return n.classes.push(r),n}else return z(["mspace",r],[Ti(e.text,e.mode,t)],t)}else{if(fa.hasOwnProperty(e.text))return z(["mspace",fa[e.text]],[],t);throw new Y('Unknown type of space "'+e.text+'"')}},mathmlBuilder(e,t){var r;if(ma.hasOwnProperty(e.text))r=new G("mtext",[new Me(" ")]);else{if(fa.hasOwnProperty(e.text))return new G("mspace");throw new Y('Unknown type of space "'+e.text+'"')}return r}});var us=()=>{var e=new G("mtd",[]);return e.setAttribute("width","50%"),e};br({type:"tag",mathmlBuilder(e,t){var r=new G("mtable",[new G("mtr",[us(),new G("mtd",[tr(e.body,t)]),us(),new G("mtd",[tr(e.tag,t)])])]);return r.setAttribute("width","100%"),r}});var ss={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},ls={"\\textbf":"textbf","\\textmd":"textmd"},Z3={"\\textit":"textit","\\textup":"textup"},os=(e,t)=>{var r=e.font;if(r){if(ss[r])return t.withTextFontFamily(ss[r]);if(ls[r])return t.withTextFontWeight(ls[r]);if(r==="\\emph")return t.fontShape==="textit"?t.withTextFontShape("textup"):t.withTextFontShape("textit")}else return t;return t.withTextFontShape(Z3[r])};Z({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(e,t){var{parser:r,funcName:n}=e,a=t[0];return{type:"text",mode:r.mode,body:Re(a),font:n}},htmlBuilder(e,t){var r=os(e,t),n=He(e.body,r,!0);return z(["mord","text"],n,r)},mathmlBuilder(e,t){var r=os(e,t);return tr(e.body,r)}});Z({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"underline",mode:r.mode,body:t[0]}},htmlBuilder(e,t){var r=Te(e.body,t),n=Or("underline-line",t),a=t.fontMetrics().defaultRuleThickness,i=Ee({positionType:"top",positionData:r.height,children:[{type:"kern",size:a},{type:"elem",elem:n},{type:"kern",size:3*a},{type:"elem",elem:r}]});return z(["mord","underline"],[i],t)},mathmlBuilder(e,t){var r=new G("mo",[new Me("‾")]);r.setAttribute("stretchy","true");var n=new G("munder",[Ae(e.body,t),r]);return n.setAttribute("accentunder","true"),n}});Z({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(e,t){var{parser:r}=e;return{type:"vcenter",mode:r.mode,body:t[0]}},htmlBuilder(e,t){var r=Te(e.body,t),n=t.fontMetrics().axisHeight,a=.5*(r.height-n-(r.depth+n));return Ee({positionType:"shift",positionData:a,children:[{type:"elem",elem:r}]})},mathmlBuilder(e,t){var r=new G("mpadded",[Ae(e.body,t)],["vcenter"]);return new G("mrow",[r])}});Z({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(e,t,r){throw new Y("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(e,t){for(var r=cs(e),n=[],a=t.havingStyle(t.style.text()),i=0;ie.body.replace(/ /g,e.star?"␣":" "),Qt=io,zo=`[ \r - ]`,e6="\\\\[a-zA-Z@]+",t6="\\\\[^\uD800-\uDFFF]",r6="("+e6+")"+zo+"*",n6=`\\\\( -|[ \r ]+ -?)[ \r ]*`,ja="[̀-ͯ]",a6=new RegExp(ja+"+$"),i6="("+zo+"+)|"+(n6+"|")+"([!-\\[\\]-‧‪-퟿豈-￿]"+(ja+"*")+"|[\uD800-\uDBFF][\uDC00-\uDFFF]"+(ja+"*")+"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5"+("|"+r6)+("|"+t6+")");class hs{constructor(t,r){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=t,this.settings=r,this.tokenRegex=new RegExp(i6,"g"),this.catcodes={"%":14,"~":13}}setCatcode(t,r){this.catcodes[t]=r}lex(){var t=this.input,r=this.tokenRegex.lastIndex;if(r===t.length)return new ot("EOF",new rt(this,r,r));var n=this.tokenRegex.exec(t);if(n===null||n.index!==r)throw new Y("Unexpected character: '"+t[r]+"'",new ot(t[r],new rt(this,r,r+1)));var a=n[6]||n[3]||(n[2]?"\\ ":" ");if(this.catcodes[a]===14){var i=t.indexOf(` -`,this.tokenRegex.lastIndex);return i===-1?(this.tokenRegex.lastIndex=t.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=i+1,this.lex()}return new ot(a,new rt(this,r,this.tokenRegex.lastIndex))}}class u6{constructor(t,r){t===void 0&&(t={}),r===void 0&&(r={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=r,this.builtins=t,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(this.undefStack.length===0)throw new Y("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var t=this.undefStack.pop();for(var r in t)t.hasOwnProperty(r)&&(t[r]==null?delete this.current[r]:this.current[r]=t[r])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(t){return this.current.hasOwnProperty(t)||this.builtins.hasOwnProperty(t)}get(t){return this.current.hasOwnProperty(t)?this.current[t]:this.builtins[t]}set(t,r,n){if(n===void 0&&(n=!1),n){for(var a=0;a0&&(this.undefStack[this.undefStack.length-1][t]=r)}else{var i=this.undefStack[this.undefStack.length-1];i&&!i.hasOwnProperty(t)&&(i[t]=this.current[t])}r==null?delete this.current[t]:this.current[t]=r}}var s6=Io;E("\\noexpand",function(e){var t=e.popToken();return e.isExpandable(t.text)&&(t.noexpand=!0,t.treatAsRelax=!0),{tokens:[t],numArgs:0}});E("\\expandafter",function(e){var t=e.popToken();return e.expandOnce(!0),{tokens:[t],numArgs:0}});E("\\@firstoftwo",function(e){var t=e.consumeArgs(2);return{tokens:t[0],numArgs:0}});E("\\@secondoftwo",function(e){var t=e.consumeArgs(2);return{tokens:t[1],numArgs:0}});E("\\@ifnextchar",function(e){var t=e.consumeArgs(3);e.consumeSpaces();var r=e.future();return t[0].length===1&&t[0][0].text===r.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}});E("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");E("\\TextOrMath",function(e){var t=e.consumeArgs(2);return e.mode==="text"?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}});var ds={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};E("\\char",function(e){var t=e.popToken(),r,n=0;if(t.text==="'")r=8,t=e.popToken();else if(t.text==='"')r=16,t=e.popToken();else if(t.text==="`")if(t=e.popToken(),t.text[0]==="\\")n=t.text.charCodeAt(1);else{if(t.text==="EOF")throw new Y("\\char` missing argument");n=t.text.charCodeAt(0)}else r=10;if(r){if(n=ds[t.text],n==null||n>=r)throw new Y("Invalid base-"+r+" digit "+t.text);for(var a;(a=ds[e.future().text])!=null&&a{var a=e.consumeArg().tokens;if(a.length!==1)throw new Y("\\newcommand's first argument must be a macro name");var i=a[0].text,u=e.isDefined(i);if(u&&!t)throw new Y("\\newcommand{"+i+"} attempting to redefine "+(i+"; use \\renewcommand"));if(!u&&!r)throw new Y("\\renewcommand{"+i+"} when command "+i+" does not yet exist; use \\newcommand");var s=0;if(a=e.consumeArg().tokens,a.length===1&&a[0].text==="["){for(var l="",c=e.expandNextToken();c.text!=="]"&&c.text!=="EOF";)l+=c.text,c=e.expandNextToken();if(!l.match(/^\s*[0-9]+\s*$/))throw new Y("Invalid number of arguments: "+l);s=parseInt(l),a=e.consumeArg().tokens}return u&&n||e.macros.set(i,{tokens:a,numArgs:s}),""};E("\\newcommand",e=>Ci(e,!1,!0,!1));E("\\renewcommand",e=>Ci(e,!0,!1,!1));E("\\providecommand",e=>Ci(e,!0,!0,!0));E("\\message",e=>{var t=e.consumeArgs(1)[0];return console.log(t.reverse().map(r=>r.text).join("")),""});E("\\errmessage",e=>{var t=e.consumeArgs(1)[0];return console.error(t.reverse().map(r=>r.text).join("")),""});E("\\show",e=>{var t=e.popToken(),r=t.text;return console.log(t,e.macros.get(r),Qt[r],we.math[r],we.text[r]),""});E("\\bgroup","{");E("\\egroup","}");E("~","\\nobreakspace");E("\\lq","`");E("\\rq","'");E("\\aa","\\r a");E("\\AA","\\r A");E("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`©}");E("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");E("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}");E("ℬ","\\mathscr{B}");E("ℰ","\\mathscr{E}");E("ℱ","\\mathscr{F}");E("ℋ","\\mathscr{H}");E("ℐ","\\mathscr{I}");E("ℒ","\\mathscr{L}");E("ℳ","\\mathscr{M}");E("ℛ","\\mathscr{R}");E("ℭ","\\mathfrak{C}");E("ℌ","\\mathfrak{H}");E("ℨ","\\mathfrak{Z}");E("\\Bbbk","\\Bbb{k}");E("\\llap","\\mathllap{\\textrm{#1}}");E("\\rlap","\\mathrlap{\\textrm{#1}}");E("\\clap","\\mathclap{\\textrm{#1}}");E("\\mathstrut","\\vphantom{(}");E("\\underbar","\\underline{\\text{#1}}");E("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}\\nobreak}{\\char"338}');E("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`≠}}");E("\\ne","\\neq");E("≠","\\neq");E("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`∉}}");E("∉","\\notin");E("≘","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`≘}}");E("≙","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`≘}}");E("≚","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`≚}}");E("≛","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`≛}}");E("≝","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`≝}}");E("≞","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`≞}}");E("≟","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`≟}}");E("⟂","\\perp");E("‼","\\mathclose{!\\mkern-0.8mu!}");E("∌","\\notni");E("⌜","\\ulcorner");E("⌝","\\urcorner");E("⌞","\\llcorner");E("⌟","\\lrcorner");E("©","\\copyright");E("®","\\textregistered");E("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');E("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');E("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');E("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');E("\\vdots","{\\varvdots\\rule{0pt}{15pt}}");E("⋮","\\vdots");E("\\varGamma","\\mathit{\\Gamma}");E("\\varDelta","\\mathit{\\Delta}");E("\\varTheta","\\mathit{\\Theta}");E("\\varLambda","\\mathit{\\Lambda}");E("\\varXi","\\mathit{\\Xi}");E("\\varPi","\\mathit{\\Pi}");E("\\varSigma","\\mathit{\\Sigma}");E("\\varUpsilon","\\mathit{\\Upsilon}");E("\\varPhi","\\mathit{\\Phi}");E("\\varPsi","\\mathit{\\Psi}");E("\\varOmega","\\mathit{\\Omega}");E("\\substack","\\begin{subarray}{c}#1\\end{subarray}");E("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");E("\\boxed","\\fbox{$\\displaystyle{#1}$}");E("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");E("\\implies","\\DOTSB\\;\\Longrightarrow\\;");E("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");E("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}");E("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");var fs={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"},l6=new Set(["bin","rel"]);E("\\dots",function(e){var t="\\dotso",r=e.expandAfterFuture().text;return r in fs?t=fs[r]:(r.slice(0,4)==="\\not"||r in we.math&&l6.has(we.math[r].group))&&(t="\\dotsb"),t});var _i={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};E("\\dotso",function(e){var t=e.future().text;return t in _i?"\\ldots\\,":"\\ldots"});E("\\dotsc",function(e){var t=e.future().text;return t in _i&&t!==","?"\\ldots\\,":"\\ldots"});E("\\cdots",function(e){var t=e.future().text;return t in _i?"\\@cdots\\,":"\\@cdots"});E("\\dotsb","\\cdots");E("\\dotsm","\\cdots");E("\\dotsi","\\!\\cdots");E("\\dotsx","\\ldots\\,");E("\\DOTSI","\\relax");E("\\DOTSB","\\relax");E("\\DOTSX","\\relax");E("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");E("\\,","\\tmspace+{3mu}{.1667em}");E("\\thinspace","\\,");E("\\>","\\mskip{4mu}");E("\\:","\\tmspace+{4mu}{.2222em}");E("\\medspace","\\:");E("\\;","\\tmspace+{5mu}{.2777em}");E("\\thickspace","\\;");E("\\!","\\tmspace-{3mu}{.1667em}");E("\\negthinspace","\\!");E("\\negmedspace","\\tmspace-{4mu}{.2222em}");E("\\negthickspace","\\tmspace-{5mu}{.277em}");E("\\enspace","\\kern.5em ");E("\\enskip","\\hskip.5em\\relax");E("\\quad","\\hskip1em\\relax");E("\\qquad","\\hskip2em\\relax");E("\\tag","\\@ifstar\\tag@literal\\tag@paren");E("\\tag@paren","\\tag@literal{({#1})}");E("\\tag@literal",e=>{if(e.macros.get("\\df@tag"))throw new Y("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});E("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");E("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");E("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");E("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");E("\\newline","\\\\\\relax");E("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var Uo=V(wt["Main-Regular"][84][1]-.7*wt["Main-Regular"][65][1]);E("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+Uo+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");E("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+Uo+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");E("\\hspace","\\@ifstar\\@hspacer\\@hspace");E("\\@hspace","\\hskip #1\\relax");E("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");E("\\ordinarycolon",":");E("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");E("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');E("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');E("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');E("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');E("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');E("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');E("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');E("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');E("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');E("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');E("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');E("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');E("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');E("∷","\\dblcolon");E("∹","\\eqcolon");E("≔","\\coloneqq");E("≕","\\eqqcolon");E("⩴","\\Coloneqq");E("\\ratio","\\vcentcolon");E("\\coloncolon","\\dblcolon");E("\\colonequals","\\coloneqq");E("\\coloncolonequals","\\Coloneqq");E("\\equalscolon","\\eqqcolon");E("\\equalscoloncolon","\\Eqqcolon");E("\\colonminus","\\coloneq");E("\\coloncolonminus","\\Coloneq");E("\\minuscolon","\\eqcolon");E("\\minuscoloncolon","\\Eqcolon");E("\\coloncolonapprox","\\Colonapprox");E("\\coloncolonsim","\\Colonsim");E("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");E("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");E("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");E("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");E("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`∌}}");E("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");E("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");E("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");E("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");E("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");E("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");E("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");E("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");E("\\gvertneqq","\\html@mathml{\\@gvertneqq}{≩}");E("\\lvertneqq","\\html@mathml{\\@lvertneqq}{≨}");E("\\ngeqq","\\html@mathml{\\@ngeqq}{≱}");E("\\ngeqslant","\\html@mathml{\\@ngeqslant}{≱}");E("\\nleqq","\\html@mathml{\\@nleqq}{≰}");E("\\nleqslant","\\html@mathml{\\@nleqslant}{≰}");E("\\nshortmid","\\html@mathml{\\@nshortmid}{∤}");E("\\nshortparallel","\\html@mathml{\\@nshortparallel}{∦}");E("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{⊈}");E("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{⊉}");E("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{⊊}");E("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{⫋}");E("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{⊋}");E("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{⫌}");E("\\imath","\\html@mathml{\\@imath}{ı}");E("\\jmath","\\html@mathml{\\@jmath}{ȷ}");E("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`⟦}}");E("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`⟧}}");E("⟦","\\llbracket");E("⟧","\\rrbracket");E("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`⦃}}");E("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`⦄}}");E("⦃","\\lBrace");E("⦄","\\rBrace");E("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`⦵}}");E("⦵","\\minuso");E("\\darr","\\downarrow");E("\\dArr","\\Downarrow");E("\\Darr","\\Downarrow");E("\\lang","\\langle");E("\\rang","\\rangle");E("\\uarr","\\uparrow");E("\\uArr","\\Uparrow");E("\\Uarr","\\Uparrow");E("\\N","\\mathbb{N}");E("\\R","\\mathbb{R}");E("\\Z","\\mathbb{Z}");E("\\alef","\\aleph");E("\\alefsym","\\aleph");E("\\Alpha","\\mathrm{A}");E("\\Beta","\\mathrm{B}");E("\\bull","\\bullet");E("\\Chi","\\mathrm{X}");E("\\clubs","\\clubsuit");E("\\cnums","\\mathbb{C}");E("\\Complex","\\mathbb{C}");E("\\Dagger","\\ddagger");E("\\diamonds","\\diamondsuit");E("\\empty","\\emptyset");E("\\Epsilon","\\mathrm{E}");E("\\Eta","\\mathrm{H}");E("\\exist","\\exists");E("\\harr","\\leftrightarrow");E("\\hArr","\\Leftrightarrow");E("\\Harr","\\Leftrightarrow");E("\\hearts","\\heartsuit");E("\\image","\\Im");E("\\infin","\\infty");E("\\Iota","\\mathrm{I}");E("\\isin","\\in");E("\\Kappa","\\mathrm{K}");E("\\larr","\\leftarrow");E("\\lArr","\\Leftarrow");E("\\Larr","\\Leftarrow");E("\\lrarr","\\leftrightarrow");E("\\lrArr","\\Leftrightarrow");E("\\Lrarr","\\Leftrightarrow");E("\\Mu","\\mathrm{M}");E("\\natnums","\\mathbb{N}");E("\\Nu","\\mathrm{N}");E("\\Omicron","\\mathrm{O}");E("\\plusmn","\\pm");E("\\rarr","\\rightarrow");E("\\rArr","\\Rightarrow");E("\\Rarr","\\Rightarrow");E("\\real","\\Re");E("\\reals","\\mathbb{R}");E("\\Reals","\\mathbb{R}");E("\\Rho","\\mathrm{P}");E("\\sdot","\\cdot");E("\\sect","\\S");E("\\spades","\\spadesuit");E("\\sub","\\subset");E("\\sube","\\subseteq");E("\\supe","\\supseteq");E("\\Tau","\\mathrm{T}");E("\\thetasym","\\vartheta");E("\\weierp","\\wp");E("\\Zeta","\\mathrm{Z}");E("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");E("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");E("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");E("\\bra","\\mathinner{\\langle{#1}|}");E("\\ket","\\mathinner{|{#1}\\rangle}");E("\\braket","\\mathinner{\\langle{#1}\\rangle}");E("\\Bra","\\left\\langle#1\\right|");E("\\Ket","\\left|#1\\right\\rangle");var qo=e=>t=>{var r=t.consumeArg().tokens,n=t.consumeArg().tokens,a=t.consumeArg().tokens,i=t.consumeArg().tokens,u=t.macros.get("|"),s=t.macros.get("\\|");t.macros.beginGroup();var l=f=>g=>{e&&(g.macros.set("|",u),a.length&&g.macros.set("\\|",s));var p=f;if(!f&&a.length){var x=g.future();x.text==="|"&&(g.popToken(),p=!0)}return{tokens:p?a:n,numArgs:0}};t.macros.set("|",l(!1)),a.length&&t.macros.set("\\|",l(!0));var c=t.consumeArg().tokens,d=t.expandTokens([...i,...c,...r]);return t.macros.endGroup(),{tokens:d.reverse(),numArgs:0}};E("\\bra@ket",qo(!1));E("\\bra@set",qo(!0));E("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");E("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");E("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");E("\\angln","{\\angl n}");E("\\blue","\\textcolor{##6495ed}{#1}");E("\\orange","\\textcolor{##ffa500}{#1}");E("\\pink","\\textcolor{##ff00af}{#1}");E("\\red","\\textcolor{##df0030}{#1}");E("\\green","\\textcolor{##28ae7b}{#1}");E("\\gray","\\textcolor{gray}{#1}");E("\\purple","\\textcolor{##9d38bd}{#1}");E("\\blueA","\\textcolor{##ccfaff}{#1}");E("\\blueB","\\textcolor{##80f6ff}{#1}");E("\\blueC","\\textcolor{##63d9ea}{#1}");E("\\blueD","\\textcolor{##11accd}{#1}");E("\\blueE","\\textcolor{##0c7f99}{#1}");E("\\tealA","\\textcolor{##94fff5}{#1}");E("\\tealB","\\textcolor{##26edd5}{#1}");E("\\tealC","\\textcolor{##01d1c1}{#1}");E("\\tealD","\\textcolor{##01a995}{#1}");E("\\tealE","\\textcolor{##208170}{#1}");E("\\greenA","\\textcolor{##b6ffb0}{#1}");E("\\greenB","\\textcolor{##8af281}{#1}");E("\\greenC","\\textcolor{##74cf70}{#1}");E("\\greenD","\\textcolor{##1fab54}{#1}");E("\\greenE","\\textcolor{##0d923f}{#1}");E("\\goldA","\\textcolor{##ffd0a9}{#1}");E("\\goldB","\\textcolor{##ffbb71}{#1}");E("\\goldC","\\textcolor{##ff9c39}{#1}");E("\\goldD","\\textcolor{##e07d10}{#1}");E("\\goldE","\\textcolor{##a75a05}{#1}");E("\\redA","\\textcolor{##fca9a9}{#1}");E("\\redB","\\textcolor{##ff8482}{#1}");E("\\redC","\\textcolor{##f9685d}{#1}");E("\\redD","\\textcolor{##e84d39}{#1}");E("\\redE","\\textcolor{##bc2612}{#1}");E("\\maroonA","\\textcolor{##ffbde0}{#1}");E("\\maroonB","\\textcolor{##ff92c6}{#1}");E("\\maroonC","\\textcolor{##ed5fa6}{#1}");E("\\maroonD","\\textcolor{##ca337c}{#1}");E("\\maroonE","\\textcolor{##9e034e}{#1}");E("\\purpleA","\\textcolor{##ddd7ff}{#1}");E("\\purpleB","\\textcolor{##c6b9fc}{#1}");E("\\purpleC","\\textcolor{##aa87ff}{#1}");E("\\purpleD","\\textcolor{##7854ab}{#1}");E("\\purpleE","\\textcolor{##543b78}{#1}");E("\\mintA","\\textcolor{##f5f9e8}{#1}");E("\\mintB","\\textcolor{##edf2df}{#1}");E("\\mintC","\\textcolor{##e0e5cc}{#1}");E("\\grayA","\\textcolor{##f6f7f7}{#1}");E("\\grayB","\\textcolor{##f0f1f2}{#1}");E("\\grayC","\\textcolor{##e3e5e6}{#1}");E("\\grayD","\\textcolor{##d6d8da}{#1}");E("\\grayE","\\textcolor{##babec2}{#1}");E("\\grayF","\\textcolor{##888d93}{#1}");E("\\grayG","\\textcolor{##626569}{#1}");E("\\grayH","\\textcolor{##3b3e40}{#1}");E("\\grayI","\\textcolor{##21242c}{#1}");E("\\kaBlue","\\textcolor{##314453}{#1}");E("\\kaGreen","\\textcolor{##71B307}{#1}");var Yo={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0};class o6{constructor(t,r,n){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=r,this.expansionCount=0,this.feed(t),this.macros=new u6(s6,r.macros),this.mode=n,this.stack=[]}feed(t){this.lexer=new hs(t,this.settings)}switchMode(t){this.mode=t}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return this.stack.length===0&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(t){this.stack.push(t)}pushTokens(t){this.stack.push(...t)}scanArgument(t){var r,n,a;if(t){if(this.consumeSpaces(),this.future().text!=="[")return null;r=this.popToken(),{tokens:a,end:n}=this.consumeArg(["]"])}else({tokens:a,start:r,end:n}=this.consumeArg());return this.pushToken(new ot("EOF",n.loc)),this.pushTokens(a),new ot("",rt.range(r,n))}consumeSpaces(){for(;;){var t=this.future();if(t.text===" ")this.stack.pop();else break}}consumeArg(t){var r=[],n=t&&t.length>0;n||this.consumeSpaces();var a=this.future(),i,u=0,s=0;do{if(i=this.popToken(),r.push(i),i.text==="{")++u;else if(i.text==="}"){if(--u,u===-1)throw new Y("Extra }",i)}else if(i.text==="EOF")throw new Y("Unexpected end of input in a macro argument, expected '"+(t&&n?t[s]:"}")+"'",i);if(t&&n)if((u===0||u===1&&t[s]==="{")&&i.text===t[s]){if(++s,s===t.length){r.splice(-s,s);break}}else s=0}while(u!==0||n);return a.text==="{"&&r[r.length-1].text==="}"&&(r.pop(),r.shift()),r.reverse(),{tokens:r,start:a,end:i}}consumeArgs(t,r){if(r){if(r.length!==t+1)throw new Y("The length of delimiters doesn't match the number of args!");for(var n=r[0],a=0;athis.settings.maxExpand)throw new Y("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(t){var r=this.popToken(),n=r.text,a=r.noexpand?null:this._getExpansion(n);if(a==null||t&&a.unexpandable){if(t&&a==null&&n[0]==="\\"&&!this.isDefined(n))throw new Y("Undefined control sequence: "+n);return this.pushToken(r),!1}this.countExpansion(1);var i=a.tokens,u=this.consumeArgs(a.numArgs,a.delimiters);if(a.numArgs){i=i.slice();for(var s=i.length-1;s>=0;--s){var l=i[s];if(l.text==="#"){if(s===0)throw new Y("Incomplete placeholder at end of macro body",l);if(l=i[--s],l.text==="#")i.splice(s+1,1);else if(/^[1-9]$/.test(l.text))i.splice(s,2,...u[+l.text-1]);else throw new Y("Not a valid argument number",l)}}}return this.pushTokens(i),i.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(this.expandOnce()===!1){var t=this.stack.pop();return t.treatAsRelax&&(t.text="\\relax"),t}}expandMacro(t){return this.macros.has(t)?this.expandTokens([new ot(t)]):void 0}expandTokens(t){var r=[],n=this.stack.length;for(this.pushTokens(t);this.stack.length>n;)if(this.expandOnce(!0)===!1){var a=this.stack.pop();a.treatAsRelax&&(a.noexpand=!1,a.treatAsRelax=!1),r.push(a)}return this.countExpansion(r.length),r}expandMacroAsText(t){var r=this.expandMacro(t);return r&&r.map(n=>n.text).join("")}_getExpansion(t){var r=this.macros.get(t);if(r==null)return r;if(t.length===1){var n=this.lexer.catcodes[t];if(n!=null&&n!==13)return}var a=typeof r=="function"?r(this):r;if(typeof a=="string"){var i=0;if(a.includes("#"))for(var u=a.replace(/##/g,"");u.includes("#"+(i+1));)++i;for(var s=new hs(a,this.settings),l=[],c=s.lex();c.text!=="EOF";)l.push(c),c=s.lex();l.reverse();var d={tokens:l,numArgs:i};return d}return a}isDefined(t){return this.macros.has(t)||Qt.hasOwnProperty(t)||we.math.hasOwnProperty(t)||we.text.hasOwnProperty(t)||Yo.hasOwnProperty(t)}isExpandable(t){var r=this.macros.get(t);return r!=null?typeof r=="string"||typeof r=="function"||!r.unexpandable:Qt.hasOwnProperty(t)&&!Qt[t].primitive}}var ms=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,jn=Object.freeze({"₊":"+","₋":"-","₌":"=","₍":"(","₎":")","₀":"0","₁":"1","₂":"2","₃":"3","₄":"4","₅":"5","₆":"6","₇":"7","₈":"8","₉":"9","ₐ":"a","ₑ":"e","ₕ":"h","ᵢ":"i","ⱼ":"j","ₖ":"k","ₗ":"l","ₘ":"m","ₙ":"n","ₒ":"o","ₚ":"p","ᵣ":"r","ₛ":"s","ₜ":"t","ᵤ":"u","ᵥ":"v","ₓ":"x","ᵦ":"β","ᵧ":"γ","ᵨ":"ρ","ᵩ":"ϕ","ᵪ":"χ","⁺":"+","⁻":"-","⁼":"=","⁽":"(","⁾":")","⁰":"0","¹":"1","²":"2","³":"3","⁴":"4","⁵":"5","⁶":"6","⁷":"7","⁸":"8","⁹":"9","ᴬ":"A","ᴮ":"B","ᴰ":"D","ᴱ":"E","ᴳ":"G","ᴴ":"H","ᴵ":"I","ᴶ":"J","ᴷ":"K","ᴸ":"L","ᴹ":"M","ᴺ":"N","ᴼ":"O","ᴾ":"P","ᴿ":"R","ᵀ":"T","ᵁ":"U","ⱽ":"V","ᵂ":"W","ᵃ":"a","ᵇ":"b","ᶜ":"c","ᵈ":"d","ᵉ":"e","ᶠ":"f","ᵍ":"g",ʰ:"h","ⁱ":"i",ʲ:"j","ᵏ":"k",ˡ:"l","ᵐ":"m",ⁿ:"n","ᵒ":"o","ᵖ":"p",ʳ:"r",ˢ:"s","ᵗ":"t","ᵘ":"u","ᵛ":"v",ʷ:"w",ˣ:"x",ʸ:"y","ᶻ":"z","ᵝ":"β","ᵞ":"γ","ᵟ":"δ","ᵠ":"ϕ","ᵡ":"χ","ᶿ":"θ"}),pa={"́":{text:"\\'",math:"\\acute"},"̀":{text:"\\`",math:"\\grave"},"̈":{text:'\\"',math:"\\ddot"},"̃":{text:"\\~",math:"\\tilde"},"̄":{text:"\\=",math:"\\bar"},"̆":{text:"\\u",math:"\\breve"},"̌":{text:"\\v",math:"\\check"},"̂":{text:"\\^",math:"\\hat"},"̇":{text:"\\.",math:"\\dot"},"̊":{text:"\\r",math:"\\mathring"},"̋":{text:"\\H"},"̧":{text:"\\c"}},ps={á:"á",à:"à",ä:"ä",ǟ:"ǟ",ã:"ã",ā:"ā",ă:"ă",ắ:"ắ",ằ:"ằ",ẵ:"ẵ",ǎ:"ǎ",â:"â",ấ:"ấ",ầ:"ầ",ẫ:"ẫ",ȧ:"ȧ",ǡ:"ǡ",å:"å",ǻ:"ǻ",ḃ:"ḃ",ć:"ć",ḉ:"ḉ",č:"č",ĉ:"ĉ",ċ:"ċ",ç:"ç",ď:"ď",ḋ:"ḋ",ḑ:"ḑ",é:"é",è:"è",ë:"ë",ẽ:"ẽ",ē:"ē",ḗ:"ḗ",ḕ:"ḕ",ĕ:"ĕ",ḝ:"ḝ",ě:"ě",ê:"ê",ế:"ế",ề:"ề",ễ:"ễ",ė:"ė",ȩ:"ȩ",ḟ:"ḟ",ǵ:"ǵ",ḡ:"ḡ",ğ:"ğ",ǧ:"ǧ",ĝ:"ĝ",ġ:"ġ",ģ:"ģ",ḧ:"ḧ",ȟ:"ȟ",ĥ:"ĥ",ḣ:"ḣ",ḩ:"ḩ",í:"í",ì:"ì",ï:"ï",ḯ:"ḯ",ĩ:"ĩ",ī:"ī",ĭ:"ĭ",ǐ:"ǐ",î:"î",ǰ:"ǰ",ĵ:"ĵ",ḱ:"ḱ",ǩ:"ǩ",ķ:"ķ",ĺ:"ĺ",ľ:"ľ",ļ:"ļ",ḿ:"ḿ",ṁ:"ṁ",ń:"ń",ǹ:"ǹ",ñ:"ñ",ň:"ň",ṅ:"ṅ",ņ:"ņ",ó:"ó",ò:"ò",ö:"ö",ȫ:"ȫ",õ:"õ",ṍ:"ṍ",ṏ:"ṏ",ȭ:"ȭ",ō:"ō",ṓ:"ṓ",ṑ:"ṑ",ŏ:"ŏ",ǒ:"ǒ",ô:"ô",ố:"ố",ồ:"ồ",ỗ:"ỗ",ȯ:"ȯ",ȱ:"ȱ",ő:"ő",ṕ:"ṕ",ṗ:"ṗ",ŕ:"ŕ",ř:"ř",ṙ:"ṙ",ŗ:"ŗ",ś:"ś",ṥ:"ṥ",š:"š",ṧ:"ṧ",ŝ:"ŝ",ṡ:"ṡ",ş:"ş",ẗ:"ẗ",ť:"ť",ṫ:"ṫ",ţ:"ţ",ú:"ú",ù:"ù",ü:"ü",ǘ:"ǘ",ǜ:"ǜ",ǖ:"ǖ",ǚ:"ǚ",ũ:"ũ",ṹ:"ṹ",ū:"ū",ṻ:"ṻ",ŭ:"ŭ",ǔ:"ǔ",û:"û",ů:"ů",ű:"ű",ṽ:"ṽ",ẃ:"ẃ",ẁ:"ẁ",ẅ:"ẅ",ŵ:"ŵ",ẇ:"ẇ",ẘ:"ẘ",ẍ:"ẍ",ẋ:"ẋ",ý:"ý",ỳ:"ỳ",ÿ:"ÿ",ỹ:"ỹ",ȳ:"ȳ",ŷ:"ŷ",ẏ:"ẏ",ẙ:"ẙ",ź:"ź",ž:"ž",ẑ:"ẑ",ż:"ż",Á:"Á",À:"À",Ä:"Ä",Ǟ:"Ǟ",Ã:"Ã",Ā:"Ā",Ă:"Ă",Ắ:"Ắ",Ằ:"Ằ",Ẵ:"Ẵ",Ǎ:"Ǎ",Â:"Â",Ấ:"Ấ",Ầ:"Ầ",Ẫ:"Ẫ",Ȧ:"Ȧ",Ǡ:"Ǡ",Å:"Å",Ǻ:"Ǻ",Ḃ:"Ḃ",Ć:"Ć",Ḉ:"Ḉ",Č:"Č",Ĉ:"Ĉ",Ċ:"Ċ",Ç:"Ç",Ď:"Ď",Ḋ:"Ḋ",Ḑ:"Ḑ",É:"É",È:"È",Ë:"Ë",Ẽ:"Ẽ",Ē:"Ē",Ḗ:"Ḗ",Ḕ:"Ḕ",Ĕ:"Ĕ",Ḝ:"Ḝ",Ě:"Ě",Ê:"Ê",Ế:"Ế",Ề:"Ề",Ễ:"Ễ",Ė:"Ė",Ȩ:"Ȩ",Ḟ:"Ḟ",Ǵ:"Ǵ",Ḡ:"Ḡ",Ğ:"Ğ",Ǧ:"Ǧ",Ĝ:"Ĝ",Ġ:"Ġ",Ģ:"Ģ",Ḧ:"Ḧ",Ȟ:"Ȟ",Ĥ:"Ĥ",Ḣ:"Ḣ",Ḩ:"Ḩ",Í:"Í",Ì:"Ì",Ï:"Ï",Ḯ:"Ḯ",Ĩ:"Ĩ",Ī:"Ī",Ĭ:"Ĭ",Ǐ:"Ǐ",Î:"Î",İ:"İ",Ĵ:"Ĵ",Ḱ:"Ḱ",Ǩ:"Ǩ",Ķ:"Ķ",Ĺ:"Ĺ",Ľ:"Ľ",Ļ:"Ļ",Ḿ:"Ḿ",Ṁ:"Ṁ",Ń:"Ń",Ǹ:"Ǹ",Ñ:"Ñ",Ň:"Ň",Ṅ:"Ṅ",Ņ:"Ņ",Ó:"Ó",Ò:"Ò",Ö:"Ö",Ȫ:"Ȫ",Õ:"Õ",Ṍ:"Ṍ",Ṏ:"Ṏ",Ȭ:"Ȭ",Ō:"Ō",Ṓ:"Ṓ",Ṑ:"Ṑ",Ŏ:"Ŏ",Ǒ:"Ǒ",Ô:"Ô",Ố:"Ố",Ồ:"Ồ",Ỗ:"Ỗ",Ȯ:"Ȯ",Ȱ:"Ȱ",Ő:"Ő",Ṕ:"Ṕ",Ṗ:"Ṗ",Ŕ:"Ŕ",Ř:"Ř",Ṙ:"Ṙ",Ŗ:"Ŗ",Ś:"Ś",Ṥ:"Ṥ",Š:"Š",Ṧ:"Ṧ",Ŝ:"Ŝ",Ṡ:"Ṡ",Ş:"Ş",Ť:"Ť",Ṫ:"Ṫ",Ţ:"Ţ",Ú:"Ú",Ù:"Ù",Ü:"Ü",Ǘ:"Ǘ",Ǜ:"Ǜ",Ǖ:"Ǖ",Ǚ:"Ǚ",Ũ:"Ũ",Ṹ:"Ṹ",Ū:"Ū",Ṻ:"Ṻ",Ŭ:"Ŭ",Ǔ:"Ǔ",Û:"Û",Ů:"Ů",Ű:"Ű",Ṽ:"Ṽ",Ẃ:"Ẃ",Ẁ:"Ẁ",Ẅ:"Ẅ",Ŵ:"Ŵ",Ẇ:"Ẇ",Ẍ:"Ẍ",Ẋ:"Ẋ",Ý:"Ý",Ỳ:"Ỳ",Ÿ:"Ÿ",Ỹ:"Ỹ",Ȳ:"Ȳ",Ŷ:"Ŷ",Ẏ:"Ẏ",Ź:"Ź",Ž:"Ž",Ẑ:"Ẑ",Ż:"Ż",ά:"ά",ὰ:"ὰ",ᾱ:"ᾱ",ᾰ:"ᾰ",έ:"έ",ὲ:"ὲ",ή:"ή",ὴ:"ὴ",ί:"ί",ὶ:"ὶ",ϊ:"ϊ",ΐ:"ΐ",ῒ:"ῒ",ῑ:"ῑ",ῐ:"ῐ",ό:"ό",ὸ:"ὸ",ύ:"ύ",ὺ:"ὺ",ϋ:"ϋ",ΰ:"ΰ",ῢ:"ῢ",ῡ:"ῡ",ῠ:"ῠ",ώ:"ώ",ὼ:"ὼ",Ύ:"Ύ",Ὺ:"Ὺ",Ϋ:"Ϋ",Ῡ:"Ῡ",Ῠ:"Ῠ",Ώ:"Ώ",Ὼ:"Ὼ"};let Go=class Vo{constructor(t,r){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new o6(t,r,this.mode),this.settings=r,this.leftrightDepth=0,this.nextToken=null}expect(t,r){if(r===void 0&&(r=!0),this.fetch().text!==t)throw new Y("Expected '"+t+"', got '"+this.fetch().text+"'",this.fetch());r&&this.consume()}consume(){this.nextToken=null}fetch(){return this.nextToken==null&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(t){this.mode=t,this.gullet.switchMode(t)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var t=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),t}finally{this.gullet.endGroups()}}subparse(t){var r=this.nextToken;this.consume(),this.gullet.pushToken(new ot("}")),this.gullet.pushTokens(t);var n=this.parseExpression(!1);return this.expect("}"),this.nextToken=r,n}parseExpression(t,r){for(var n=[];;){this.mode==="math"&&this.consumeSpaces();var a=this.fetch();if(Vo.endOfExpression.has(a.text)||r&&a.text===r||t&&Qt[a.text]&&Qt[a.text].infix)break;var i=this.parseAtom(r);if(i){if(i.type==="internal")continue}else break;n.push(i)}return this.mode==="text"&&this.formLigatures(n),this.handleInfixNodes(n)}handleInfixNodes(t){for(var r=-1,n,a=0;a=128)this.settings.strict&&($l(r.charCodeAt(0))?this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+r[0]+'" used in math mode',t):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+r[0]+'"'+(" ("+r.charCodeAt(0)+")"),t)),u={type:"textord",mode:"text",loc:rt.range(t),text:r};else return null;if(this.consume(),i)for(var d=0;dc&&(c=d):d&&(c!==void 0&&c>-1&&l.push(` -`.repeat(c)||" "),c=-1,l.push(d))}return l.join("")}function ec(e,t,r){return e.type==="element"?F6(e,t,r):e.type==="text"?r.whitespace==="normal"?tc(e,r):H6(e):[]}function F6(e,t,r){const n=rc(e,r),a=e.children||[];let i=-1,u=[];if(P6(e))return u;let s,l;for(Xa(e)||ks(e)&&xs(t,e,ks)?l=` -`:M6(e)?(s=2,l=2):Zo(e)&&(s=1,l=1);++i-1&&i<=t.length){let u=0;for(;;){let s=r[u];if(s===void 0){const l=Ss(t,r[u-1]);s=l===-1?t.length+1:l+1,r[u]=s}if(s>i)return{line:u+1,column:i-(u>0?r[u-1]:0)+1,offset:i};u++}}}function a(i){if(i&&typeof i.line=="number"&&typeof i.column=="number"&&!Number.isNaN(i.line)&&!Number.isNaN(i.column)){for(;r.length1?r[i.line-2]:0)+i.column-1;if(u=55296&&e<=57343}function cp(e){return e>=56320&&e<=57343}function hp(e,t){return(e-55296)*1024+9216+t}function sc(e){return e!==32&&e!==10&&e!==13&&e!==9&&e!==12&&e>=1&&e<=31||e>=127&&e<=159}function lc(e){return e>=64976&&e<=65007||op.has(e)}var P;(function(e){e.controlCharacterInInputStream="control-character-in-input-stream",e.noncharacterInInputStream="noncharacter-in-input-stream",e.surrogateInInputStream="surrogate-in-input-stream",e.nonVoidHtmlElementStartTagWithTrailingSolidus="non-void-html-element-start-tag-with-trailing-solidus",e.endTagWithAttributes="end-tag-with-attributes",e.endTagWithTrailingSolidus="end-tag-with-trailing-solidus",e.unexpectedSolidusInTag="unexpected-solidus-in-tag",e.unexpectedNullCharacter="unexpected-null-character",e.unexpectedQuestionMarkInsteadOfTagName="unexpected-question-mark-instead-of-tag-name",e.invalidFirstCharacterOfTagName="invalid-first-character-of-tag-name",e.unexpectedEqualsSignBeforeAttributeName="unexpected-equals-sign-before-attribute-name",e.missingEndTagName="missing-end-tag-name",e.unexpectedCharacterInAttributeName="unexpected-character-in-attribute-name",e.unknownNamedCharacterReference="unknown-named-character-reference",e.missingSemicolonAfterCharacterReference="missing-semicolon-after-character-reference",e.unexpectedCharacterAfterDoctypeSystemIdentifier="unexpected-character-after-doctype-system-identifier",e.unexpectedCharacterInUnquotedAttributeValue="unexpected-character-in-unquoted-attribute-value",e.eofBeforeTagName="eof-before-tag-name",e.eofInTag="eof-in-tag",e.missingAttributeValue="missing-attribute-value",e.missingWhitespaceBetweenAttributes="missing-whitespace-between-attributes",e.missingWhitespaceAfterDoctypePublicKeyword="missing-whitespace-after-doctype-public-keyword",e.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers="missing-whitespace-between-doctype-public-and-system-identifiers",e.missingWhitespaceAfterDoctypeSystemKeyword="missing-whitespace-after-doctype-system-keyword",e.missingQuoteBeforeDoctypePublicIdentifier="missing-quote-before-doctype-public-identifier",e.missingQuoteBeforeDoctypeSystemIdentifier="missing-quote-before-doctype-system-identifier",e.missingDoctypePublicIdentifier="missing-doctype-public-identifier",e.missingDoctypeSystemIdentifier="missing-doctype-system-identifier",e.abruptDoctypePublicIdentifier="abrupt-doctype-public-identifier",e.abruptDoctypeSystemIdentifier="abrupt-doctype-system-identifier",e.cdataInHtmlContent="cdata-in-html-content",e.incorrectlyOpenedComment="incorrectly-opened-comment",e.eofInScriptHtmlCommentLikeText="eof-in-script-html-comment-like-text",e.eofInDoctype="eof-in-doctype",e.nestedComment="nested-comment",e.abruptClosingOfEmptyComment="abrupt-closing-of-empty-comment",e.eofInComment="eof-in-comment",e.incorrectlyClosedComment="incorrectly-closed-comment",e.eofInCdata="eof-in-cdata",e.absenceOfDigitsInNumericCharacterReference="absence-of-digits-in-numeric-character-reference",e.nullCharacterReference="null-character-reference",e.surrogateCharacterReference="surrogate-character-reference",e.characterReferenceOutsideUnicodeRange="character-reference-outside-unicode-range",e.controlCharacterReference="control-character-reference",e.noncharacterCharacterReference="noncharacter-character-reference",e.missingWhitespaceBeforeDoctypeName="missing-whitespace-before-doctype-name",e.missingDoctypeName="missing-doctype-name",e.invalidCharacterSequenceAfterDoctypeName="invalid-character-sequence-after-doctype-name",e.duplicateAttribute="duplicate-attribute",e.nonConformingDoctype="non-conforming-doctype",e.missingDoctype="missing-doctype",e.misplacedDoctype="misplaced-doctype",e.endTagWithoutMatchingOpenElement="end-tag-without-matching-open-element",e.closingOfElementWithOpenChildElements="closing-of-element-with-open-child-elements",e.disallowedContentInNoscriptInHead="disallowed-content-in-noscript-in-head",e.openElementsLeftAfterEof="open-elements-left-after-eof",e.abandonedHeadElementChild="abandoned-head-element-child",e.misplacedStartTagForHeadElement="misplaced-start-tag-for-head-element",e.nestedNoscriptInHead="nested-noscript-in-head",e.eofInElementThatCanContainOnlyText="eof-in-element-that-can-contain-only-text"})(P||(P={}));const dp=65536;class fp{constructor(t){this.handler=t,this.html="",this.pos=-1,this.lastGapPos=-2,this.gapStack=[],this.skipNextNewLine=!1,this.lastChunkWritten=!1,this.endOfChunkHit=!1,this.bufferWaterline=dp,this.isEol=!1,this.lineStartPos=0,this.droppedBufferSize=0,this.line=1,this.lastErrOffset=-1}get col(){return this.pos-this.lineStartPos+ +(this.lastGapPos!==this.pos)}get offset(){return this.droppedBufferSize+this.pos}getError(t,r){const{line:n,col:a,offset:i}=this,u=a+r,s=i+r;return{code:t,startLine:n,endLine:n,startCol:u,endCol:u,startOffset:s,endOffset:s}}_err(t){this.handler.onParseError&&this.lastErrOffset!==this.offset&&(this.lastErrOffset=this.offset,this.handler.onParseError(this.getError(t,0)))}_addGap(){this.gapStack.push(this.lastGapPos),this.lastGapPos=this.pos}_processSurrogate(t){if(this.pos!==this.html.length-1){const r=this.html.charCodeAt(this.pos+1);if(cp(r))return this.pos++,this._addGap(),hp(t,r)}else if(!this.lastChunkWritten)return this.endOfChunkHit=!0,T.EOF;return this._err(P.surrogateInInputStream),t}willDropParsedChunk(){return this.pos>this.bufferWaterline}dropParsedChunk(){this.willDropParsedChunk()&&(this.html=this.html.substring(this.pos),this.lineStartPos-=this.pos,this.droppedBufferSize+=this.pos,this.pos=0,this.lastGapPos=-2,this.gapStack.length=0)}write(t,r){this.html.length>0?this.html+=t:this.html=t,this.endOfChunkHit=!1,this.lastChunkWritten=r}insertHtmlAtCurrentPos(t){this.html=this.html.substring(0,this.pos+1)+t+this.html.substring(this.pos+1),this.endOfChunkHit=!1}startsWith(t,r){if(this.pos+t.length>this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,!1;if(r)return this.html.startsWith(t,this.pos);for(let n=0;n=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,T.EOF;const n=this.html.charCodeAt(r);return n===T.CARRIAGE_RETURN?T.LINE_FEED:n}advance(){if(this.pos++,this.isEol&&(this.isEol=!1,this.line++,this.lineStartPos=this.pos),this.pos>=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,T.EOF;let t=this.html.charCodeAt(this.pos);return t===T.CARRIAGE_RETURN?(this.isEol=!0,this.skipNextNewLine=!0,T.LINE_FEED):t===T.LINE_FEED&&(this.isEol=!0,this.skipNextNewLine)?(this.line--,this.skipNextNewLine=!1,this._addGap(),this.advance()):(this.skipNextNewLine=!1,uc(t)&&(t=this._processSurrogate(t)),this.handler.onParseError===null||t>31&&t<127||t===T.LINE_FEED||t===T.CARRIAGE_RETURN||t>159&&t<64976||this._checkForProblematicCharacters(t),t)}_checkForProblematicCharacters(t){sc(t)?this._err(P.controlCharacterInInputStream):lc(t)&&this._err(P.noncharacterInInputStream)}retreat(t){for(this.pos-=t;this.pos=0;r--)if(e.attrs[r].name===t)return e.attrs[r].value;return null}const mp=new Uint16Array('ᵁ<Õıʊҝջאٵ۞ޢߖࠏ੊ઑඡ๭༉༦჊ረዡᐕᒝᓃᓟᔥ\0\0\0\0\0\0ᕫᛍᦍᰒᷝ὾⁠↰⊍⏀⏻⑂⠤⤒ⴈ⹈⿎〖㊺㘹㞬㣾㨨㩱㫠㬮ࠀEMabcfglmnoprstu\\bfms„‹•˜¦³¹ÈÏlig耻Æ䃆P耻&䀦cute耻Á䃁reve;䄂Āiyx}rc耻Â䃂;䐐r;쀀𝔄rave耻À䃀pha;䎑acr;䄀d;橓Āgp¡on;䄄f;쀀𝔸plyFunction;恡ing耻Å䃅Ācs¾Ãr;쀀𝒜ign;扔ilde耻Ã䃃ml耻Ä䃄ЀaceforsuåûþėĜĢħĪĀcrêòkslash;或Ŷöø;櫧ed;挆y;䐑ƀcrtąċĔause;戵noullis;愬a;䎒r;쀀𝔅pf;쀀𝔹eve;䋘còēmpeq;扎܀HOacdefhilorsuōőŖƀƞƢƵƷƺǜȕɳɸɾcy;䐧PY耻©䂩ƀcpyŝŢźute;䄆Ā;iŧŨ拒talDifferentialD;慅leys;愭ȀaeioƉƎƔƘron;䄌dil耻Ç䃇rc;䄈nint;戰ot;䄊ĀdnƧƭilla;䂸terDot;䂷òſi;䎧rcleȀDMPTLJNjǑǖot;抙inus;抖lus;投imes;抗oĀcsǢǸkwiseContourIntegral;戲eCurlyĀDQȃȏoubleQuote;思uote;怙ȀlnpuȞȨɇɕonĀ;eȥȦ户;橴ƀgitȯȶȺruent;扡nt;戯ourIntegral;戮ĀfrɌɎ;愂oduct;成nterClockwiseContourIntegral;戳oss;樯cr;쀀𝒞pĀ;Cʄʅ拓ap;才րDJSZacefiosʠʬʰʴʸˋ˗ˡ˦̳ҍĀ;oŹʥtrahd;椑cy;䐂cy;䐅cy;䐏ƀgrsʿ˄ˇger;怡r;憡hv;櫤Āayː˕ron;䄎;䐔lĀ;t˝˞戇a;䎔r;쀀𝔇Āaf˫̧Ācm˰̢riticalȀADGT̖̜̀̆cute;䂴oŴ̋̍;䋙bleAcute;䋝rave;䁠ilde;䋜ond;拄ferentialD;慆Ѱ̽\0\0\0͔͂\0Ѕf;쀀𝔻ƀ;DE͈͉͍䂨ot;惜qual;扐blèCDLRUVͣͲ΂ϏϢϸontourIntegraìȹoɴ͹\0\0ͻ»͉nArrow;懓Āeo·ΤftƀARTΐΖΡrrow;懐ightArrow;懔eåˊngĀLRΫτeftĀARγιrrow;柸ightArrow;柺ightArrow;柹ightĀATϘϞrrow;懒ee;抨pɁϩ\0\0ϯrrow;懑ownArrow;懕erticalBar;戥ǹABLRTaВЪаўѿͼrrowƀ;BUНОТ憓ar;椓pArrow;懵reve;䌑eft˒к\0ц\0ѐightVector;楐eeVector;楞ectorĀ;Bљњ憽ar;楖ightǔѧ\0ѱeeVector;楟ectorĀ;BѺѻ懁ar;楗eeĀ;A҆҇护rrow;憧ĀctҒҗr;쀀𝒟rok;䄐ࠀNTacdfglmopqstuxҽӀӄӋӞӢӧӮӵԡԯԶՒ՝ՠեG;䅊H耻Ð䃐cute耻É䃉ƀaiyӒӗӜron;䄚rc耻Ê䃊;䐭ot;䄖r;쀀𝔈rave耻È䃈ement;戈ĀapӺӾcr;䄒tyɓԆ\0\0ԒmallSquare;旻erySmallSquare;斫ĀgpԦԪon;䄘f;쀀𝔼silon;䎕uĀaiԼՉlĀ;TՂՃ橵ilde;扂librium;懌Āci՗՚r;愰m;橳a;䎗ml耻Ë䃋Āipժկsts;戃onentialE;慇ʀcfiosօֈ֍ֲ׌y;䐤r;쀀𝔉lledɓ֗\0\0֣mallSquare;旼erySmallSquare;斪Ͱֺ\0ֿ\0\0ׄf;쀀𝔽All;戀riertrf;愱cò׋؀JTabcdfgorstר׬ׯ׺؀ؒؖ؛؝أ٬ٲcy;䐃耻>䀾mmaĀ;d׷׸䎓;䏜reve;䄞ƀeiy؇،ؐdil;䄢rc;䄜;䐓ot;䄠r;쀀𝔊;拙pf;쀀𝔾eater̀EFGLSTصلَٖٛ٦qualĀ;Lؾؿ扥ess;招ullEqual;执reater;檢ess;扷lantEqual;橾ilde;扳cr;쀀𝒢;扫ЀAacfiosuڅڋږڛڞڪھۊRDcy;䐪Āctڐڔek;䋇;䁞irc;䄤r;愌lbertSpace;愋ǰگ\0ڲf;愍izontalLine;攀Āctۃۅòکrok;䄦mpńېۘownHumðįqual;扏܀EJOacdfgmnostuۺ۾܃܇܎ܚܞܡܨ݄ݸދޏޕcy;䐕lig;䄲cy;䐁cute耻Í䃍Āiyܓܘrc耻Î䃎;䐘ot;䄰r;愑rave耻Ì䃌ƀ;apܠܯܿĀcgܴܷr;䄪inaryI;慈lieóϝǴ݉\0ݢĀ;eݍݎ戬Āgrݓݘral;戫section;拂isibleĀCTݬݲomma;恣imes;恢ƀgptݿރވon;䄮f;쀀𝕀a;䎙cr;愐ilde;䄨ǫޚ\0ޞcy;䐆l耻Ï䃏ʀcfosuެ޷޼߂ߐĀiyޱ޵rc;䄴;䐙r;쀀𝔍pf;쀀𝕁ǣ߇\0ߌr;쀀𝒥rcy;䐈kcy;䐄΀HJacfosߤߨ߽߬߱ࠂࠈcy;䐥cy;䐌ppa;䎚Āey߶߻dil;䄶;䐚r;쀀𝔎pf;쀀𝕂cr;쀀𝒦րJTaceflmostࠥࠩࠬࡐࡣ঳সে্਷ੇcy;䐉耻<䀼ʀcmnpr࠷࠼ࡁࡄࡍute;䄹bda;䎛g;柪lacetrf;愒r;憞ƀaeyࡗ࡜ࡡron;䄽dil;䄻;䐛Āfsࡨ॰tԀACDFRTUVarࡾࢩࢱࣦ࣠ࣼयज़ΐ४Ānrࢃ࢏gleBracket;柨rowƀ;BR࢙࢚࢞憐ar;懤ightArrow;懆eiling;挈oǵࢷ\0ࣃbleBracket;柦nǔࣈ\0࣒eeVector;楡ectorĀ;Bࣛࣜ懃ar;楙loor;挊ightĀAV࣯ࣵrrow;憔ector;楎Āerँगeƀ;AVउऊऐ抣rrow;憤ector;楚iangleƀ;BEतथऩ抲ar;槏qual;抴pƀDTVषूौownVector;楑eeVector;楠ectorĀ;Bॖॗ憿ar;楘ectorĀ;B॥०憼ar;楒ightáΜs̀EFGLSTॾঋকঝঢভqualGreater;拚ullEqual;扦reater;扶ess;檡lantEqual;橽ilde;扲r;쀀𝔏Ā;eঽা拘ftarrow;懚idot;䄿ƀnpw৔ਖਛgȀLRlr৞৷ਂਐeftĀAR০৬rrow;柵ightArrow;柷ightArrow;柶eftĀarγਊightáοightáϊf;쀀𝕃erĀLRਢਬeftArrow;憙ightArrow;憘ƀchtਾੀੂòࡌ;憰rok;䅁;扪Ѐacefiosuਗ਼੝੠੷੼અઋ઎p;椅y;䐜Ādl੥੯iumSpace;恟lintrf;愳r;쀀𝔐nusPlus;戓pf;쀀𝕄cò੶;䎜ҀJacefostuણધભીଔଙඑ඗ඞcy;䐊cute;䅃ƀaey઴હાron;䅇dil;䅅;䐝ƀgswે૰଎ativeƀMTV૓૟૨ediumSpace;怋hiĀcn૦૘ë૙eryThiî૙tedĀGL૸ଆreaterGreateòٳessLesóੈLine;䀊r;쀀𝔑ȀBnptଢନଷ଺reak;恠BreakingSpace;䂠f;愕ڀ;CDEGHLNPRSTV୕ୖ୪୼஡௫ఄ౞಄ದ೘ൡඅ櫬Āou୛୤ngruent;扢pCap;扭oubleVerticalBar;戦ƀlqxஃஊ஛ement;戉ualĀ;Tஒஓ扠ilde;쀀≂̸ists;戄reater΀;EFGLSTஶஷ஽௉௓௘௥扯qual;扱ullEqual;쀀≧̸reater;쀀≫̸ess;批lantEqual;쀀⩾̸ilde;扵umpń௲௽ownHump;쀀≎̸qual;쀀≏̸eĀfsఊధtTriangleƀ;BEచఛడ拪ar;쀀⧏̸qual;括s̀;EGLSTవశ఼ౄోౘ扮qual;扰reater;扸ess;쀀≪̸lantEqual;쀀⩽̸ilde;扴estedĀGL౨౹reaterGreater;쀀⪢̸essLess;쀀⪡̸recedesƀ;ESಒಓಛ技qual;쀀⪯̸lantEqual;拠ĀeiಫಹverseElement;戌ghtTriangleƀ;BEೋೌ೒拫ar;쀀⧐̸qual;拭ĀquೝഌuareSuĀbp೨೹setĀ;E೰ೳ쀀⊏̸qual;拢ersetĀ;Eഃആ쀀⊐̸qual;拣ƀbcpഓതൎsetĀ;Eഛഞ쀀⊂⃒qual;抈ceedsȀ;ESTലള഻െ抁qual;쀀⪰̸lantEqual;拡ilde;쀀≿̸ersetĀ;E൘൛쀀⊃⃒qual;抉ildeȀ;EFT൮൯൵ൿ扁qual;扄ullEqual;扇ilde;扉erticalBar;戤cr;쀀𝒩ilde耻Ñ䃑;䎝܀Eacdfgmoprstuvලෂ෉෕ෛ෠෧෼ขภยา฿ไlig;䅒cute耻Ó䃓Āiy෎ීrc耻Ô䃔;䐞blac;䅐r;쀀𝔒rave耻Ò䃒ƀaei෮ෲ෶cr;䅌ga;䎩cron;䎟pf;쀀𝕆enCurlyĀDQฎบoubleQuote;怜uote;怘;橔Āclวฬr;쀀𝒪ash耻Ø䃘iŬื฼de耻Õ䃕es;樷ml耻Ö䃖erĀBP๋๠Āar๐๓r;怾acĀek๚๜;揞et;掴arenthesis;揜Ҁacfhilors๿ງຊຏຒດຝະ໼rtialD;戂y;䐟r;쀀𝔓i;䎦;䎠usMinus;䂱Āipຢອncareplanåڝf;愙Ȁ;eio຺ູ໠໤檻cedesȀ;EST່້໏໚扺qual;檯lantEqual;扼ilde;找me;怳Ādp໩໮uct;戏ortionĀ;aȥ໹l;戝Āci༁༆r;쀀𝒫;䎨ȀUfos༑༖༛༟OT耻"䀢r;쀀𝔔pf;愚cr;쀀𝒬؀BEacefhiorsu༾གྷཇའཱིྦྷྪྭ႖ႩႴႾarr;椐G耻®䂮ƀcnrཎནབute;䅔g;柫rĀ;tཛྷཝ憠l;椖ƀaeyཧཬཱron;䅘dil;䅖;䐠Ā;vླྀཹ愜erseĀEUྂྙĀlq྇ྎement;戋uilibrium;懋pEquilibrium;楯r»ཹo;䎡ghtЀACDFTUVa࿁࿫࿳ဢဨၛႇϘĀnr࿆࿒gleBracket;柩rowƀ;BL࿜࿝࿡憒ar;懥eftArrow;懄eiling;按oǵ࿹\0စbleBracket;柧nǔည\0နeeVector;楝ectorĀ;Bဝသ懂ar;楕loor;挋Āerိ၃eƀ;AVဵံြ抢rrow;憦ector;楛iangleƀ;BEၐၑၕ抳ar;槐qual;抵pƀDTVၣၮၸownVector;楏eeVector;楜ectorĀ;Bႂႃ憾ar;楔ectorĀ;B႑႒懀ar;楓Āpuႛ႞f;愝ndImplies;楰ightarrow;懛ĀchႹႼr;愛;憱leDelayed;槴ڀHOacfhimoqstuფჱჷჽᄙᄞᅑᅖᅡᅧᆵᆻᆿĀCcჩხHcy;䐩y;䐨FTcy;䐬cute;䅚ʀ;aeiyᄈᄉᄎᄓᄗ檼ron;䅠dil;䅞rc;䅜;䐡r;쀀𝔖ortȀDLRUᄪᄴᄾᅉownArrow»ОeftArrow»࢚ightArrow»࿝pArrow;憑gma;䎣allCircle;战pf;쀀𝕊ɲᅭ\0\0ᅰt;戚areȀ;ISUᅻᅼᆉᆯ斡ntersection;抓uĀbpᆏᆞsetĀ;Eᆗᆘ抏qual;抑ersetĀ;Eᆨᆩ抐qual;抒nion;抔cr;쀀𝒮ar;拆ȀbcmpᇈᇛሉላĀ;sᇍᇎ拐etĀ;Eᇍᇕqual;抆ĀchᇠህeedsȀ;ESTᇭᇮᇴᇿ扻qual;檰lantEqual;扽ilde;承Tháྌ;我ƀ;esሒሓሣ拑rsetĀ;Eሜም抃qual;抇et»ሓրHRSacfhiorsሾቄ቉ቕ቞ቱቶኟዂወዑORN耻Þ䃞ADE;愢ĀHc቎ቒcy;䐋y;䐦Ābuቚቜ;䀉;䎤ƀaeyብቪቯron;䅤dil;䅢;䐢r;쀀𝔗Āeiቻ኉Dzኀ\0ኇefore;戴a;䎘Ācn኎ኘkSpace;쀀  Space;怉ldeȀ;EFTካኬኲኼ戼qual;扃ullEqual;扅ilde;扈pf;쀀𝕋ipleDot;惛Āctዖዛr;쀀𝒯rok;䅦ૡዷጎጚጦ\0ጬጱ\0\0\0\0\0ጸጽ፷ᎅ\0᏿ᐄᐊᐐĀcrዻጁute耻Ú䃚rĀ;oጇገ憟cir;楉rǣጓ\0጖y;䐎ve;䅬Āiyጞጣrc耻Û䃛;䐣blac;䅰r;쀀𝔘rave耻Ù䃙acr;䅪Ādiፁ፩erĀBPፈ፝Āarፍፐr;䁟acĀekፗፙ;揟et;掵arenthesis;揝onĀ;P፰፱拃lus;抎Āgp፻፿on;䅲f;쀀𝕌ЀADETadps᎕ᎮᎸᏄϨᏒᏗᏳrrowƀ;BDᅐᎠᎤar;椒ownArrow;懅ownArrow;憕quilibrium;楮eeĀ;AᏋᏌ报rrow;憥ownáϳerĀLRᏞᏨeftArrow;憖ightArrow;憗iĀ;lᏹᏺ䏒on;䎥ing;䅮cr;쀀𝒰ilde;䅨ml耻Ü䃜ҀDbcdefosvᐧᐬᐰᐳᐾᒅᒊᒐᒖash;披ar;櫫y;䐒ashĀ;lᐻᐼ抩;櫦Āerᑃᑅ;拁ƀbtyᑌᑐᑺar;怖Ā;iᑏᑕcalȀBLSTᑡᑥᑪᑴar;戣ine;䁼eparator;杘ilde;所ThinSpace;怊r;쀀𝔙pf;쀀𝕍cr;쀀𝒱dash;抪ʀcefosᒧᒬᒱᒶᒼirc;䅴dge;拀r;쀀𝔚pf;쀀𝕎cr;쀀𝒲Ȁfiosᓋᓐᓒᓘr;쀀𝔛;䎞pf;쀀𝕏cr;쀀𝒳ҀAIUacfosuᓱᓵᓹᓽᔄᔏᔔᔚᔠcy;䐯cy;䐇cy;䐮cute耻Ý䃝Āiyᔉᔍrc;䅶;䐫r;쀀𝔜pf;쀀𝕐cr;쀀𝒴ml;䅸ЀHacdefosᔵᔹᔿᕋᕏᕝᕠᕤcy;䐖cute;䅹Āayᕄᕉron;䅽;䐗ot;䅻Dzᕔ\0ᕛoWidtè૙a;䎖r;愨pf;愤cr;쀀𝒵௡ᖃᖊᖐ\0ᖰᖶᖿ\0\0\0\0ᗆᗛᗫᙟ᙭\0ᚕ᚛ᚲᚹ\0ᚾcute耻á䃡reve;䄃̀;Ediuyᖜᖝᖡᖣᖨᖭ戾;쀀∾̳;房rc耻â䃢te肻´̆;䐰lig耻æ䃦Ā;r²ᖺ;쀀𝔞rave耻à䃠ĀepᗊᗖĀfpᗏᗔsym;愵èᗓha;䎱ĀapᗟcĀclᗤᗧr;䄁g;樿ɤᗰ\0\0ᘊʀ;adsvᗺᗻᗿᘁᘇ戧nd;橕;橜lope;橘;橚΀;elmrszᘘᘙᘛᘞᘿᙏᙙ戠;榤e»ᘙsdĀ;aᘥᘦ戡ѡᘰᘲᘴᘶᘸᘺᘼᘾ;榨;榩;榪;榫;榬;榭;榮;榯tĀ;vᙅᙆ戟bĀ;dᙌᙍ抾;榝Āptᙔᙗh;戢»¹arr;捼Āgpᙣᙧon;䄅f;쀀𝕒΀;Eaeiop዁ᙻᙽᚂᚄᚇᚊ;橰cir;橯;扊d;手s;䀧roxĀ;e዁ᚒñᚃing耻å䃥ƀctyᚡᚦᚨr;쀀𝒶;䀪mpĀ;e዁ᚯñʈilde耻ã䃣ml耻ä䃤Āciᛂᛈoninôɲnt;樑ࠀNabcdefiklnoprsu᛭ᛱᜰ᜼ᝃᝈ᝸᝽០៦ᠹᡐᜍ᤽᥈ᥰot;櫭Ācrᛶ᜞kȀcepsᜀᜅᜍᜓong;扌psilon;䏶rime;怵imĀ;e᜚᜛戽q;拍Ŷᜢᜦee;抽edĀ;gᜬᜭ挅e»ᜭrkĀ;t፜᜷brk;掶Āoyᜁᝁ;䐱quo;怞ʀcmprtᝓ᝛ᝡᝤᝨausĀ;eĊĉptyv;榰séᜌnoõēƀahwᝯ᝱ᝳ;䎲;愶een;扬r;쀀𝔟g΀costuvwឍឝឳេ៕៛៞ƀaiuបពរðݠrc;旯p»፱ƀdptឤឨឭot;樀lus;樁imes;樂ɱឹ\0\0ើcup;樆ar;昅riangleĀdu៍្own;施p;斳plus;樄eåᑄåᒭarow;植ƀako៭ᠦᠵĀcn៲ᠣkƀlst៺֫᠂ozenge;槫riangleȀ;dlr᠒᠓᠘᠝斴own;斾eft;旂ight;斸k;搣Ʊᠫ\0ᠳƲᠯ\0ᠱ;斒;斑4;斓ck;斈ĀeoᠾᡍĀ;qᡃᡆ쀀=⃥uiv;쀀≡⃥t;挐Ȁptwxᡙᡞᡧᡬf;쀀𝕓Ā;tᏋᡣom»Ꮜtie;拈؀DHUVbdhmptuvᢅᢖᢪᢻᣗᣛᣬ᣿ᤅᤊᤐᤡȀLRlrᢎᢐᢒᢔ;敗;敔;敖;敓ʀ;DUduᢡᢢᢤᢦᢨ敐;敦;敩;敤;敧ȀLRlrᢳᢵᢷᢹ;敝;敚;敜;教΀;HLRhlrᣊᣋᣍᣏᣑᣓᣕ救;敬;散;敠;敫;敢;敟ox;槉ȀLRlrᣤᣦᣨᣪ;敕;敒;攐;攌ʀ;DUduڽ᣷᣹᣻᣽;敥;敨;攬;攴inus;抟lus;択imes;抠ȀLRlrᤙᤛᤝ᤟;敛;敘;攘;攔΀;HLRhlrᤰᤱᤳᤵᤷ᤻᤹攂;敪;敡;敞;攼;攤;攜Āevģ᥂bar耻¦䂦Ȁceioᥑᥖᥚᥠr;쀀𝒷mi;恏mĀ;e᜚᜜lƀ;bhᥨᥩᥫ䁜;槅sub;柈Ŭᥴ᥾lĀ;e᥹᥺怢t»᥺pƀ;Eeįᦅᦇ;檮Ā;qۜۛೡᦧ\0᧨ᨑᨕᨲ\0ᨷᩐ\0\0᪴\0\0᫁\0\0ᬡᬮ᭍᭒\0᯽\0ᰌƀcpr᦭ᦲ᧝ute;䄇̀;abcdsᦿᧀᧄ᧊᧕᧙戩nd;橄rcup;橉Āau᧏᧒p;橋p;橇ot;橀;쀀∩︀Āeo᧢᧥t;恁îړȀaeiu᧰᧻ᨁᨅǰ᧵\0᧸s;橍on;䄍dil耻ç䃧rc;䄉psĀ;sᨌᨍ橌m;橐ot;䄋ƀdmnᨛᨠᨦil肻¸ƭptyv;榲t脀¢;eᨭᨮ䂢räƲr;쀀𝔠ƀceiᨽᩀᩍy;䑇ckĀ;mᩇᩈ朓ark»ᩈ;䏇r΀;Ecefms᩟᩠ᩢᩫ᪤᪪᪮旋;槃ƀ;elᩩᩪᩭ䋆q;扗eɡᩴ\0\0᪈rrowĀlr᩼᪁eft;憺ight;憻ʀRSacd᪒᪔᪖᪚᪟»ཇ;擈st;抛irc;抚ash;抝nint;樐id;櫯cir;槂ubsĀ;u᪻᪼晣it»᪼ˬ᫇᫔᫺\0ᬊonĀ;eᫍᫎ䀺Ā;qÇÆɭ᫙\0\0᫢aĀ;t᫞᫟䀬;䁀ƀ;fl᫨᫩᫫戁îᅠeĀmx᫱᫶ent»᫩eóɍǧ᫾\0ᬇĀ;dኻᬂot;橭nôɆƀfryᬐᬔᬗ;쀀𝕔oäɔ脀©;sŕᬝr;愗Āaoᬥᬩrr;憵ss;朗Ācuᬲᬷr;쀀𝒸Ābpᬼ᭄Ā;eᭁᭂ櫏;櫑Ā;eᭉᭊ櫐;櫒dot;拯΀delprvw᭠᭬᭷ᮂᮬᯔ᯹arrĀlr᭨᭪;椸;椵ɰ᭲\0\0᭵r;拞c;拟arrĀ;p᭿ᮀ憶;椽̀;bcdosᮏᮐᮖᮡᮥᮨ截rcap;橈Āauᮛᮞp;橆p;橊ot;抍r;橅;쀀∪︀Ȁalrv᮵ᮿᯞᯣrrĀ;mᮼᮽ憷;椼yƀevwᯇᯔᯘqɰᯎ\0\0ᯒreã᭳uã᭵ee;拎edge;拏en耻¤䂤earrowĀlrᯮ᯳eft»ᮀight»ᮽeäᯝĀciᰁᰇoninôǷnt;戱lcty;挭ঀAHabcdefhijlorstuwz᰸᰻᰿ᱝᱩᱵᲊᲞᲬᲷ᳻᳿ᴍᵻᶑᶫᶻ᷆᷍rò΁ar;楥Ȁglrs᱈ᱍ᱒᱔ger;怠eth;愸òᄳhĀ;vᱚᱛ怐»ऊūᱡᱧarow;椏aã̕Āayᱮᱳron;䄏;䐴ƀ;ao̲ᱼᲄĀgrʿᲁr;懊tseq;橷ƀglmᲑᲔᲘ耻°䂰ta;䎴ptyv;榱ĀirᲣᲨsht;楿;쀀𝔡arĀlrᲳᲵ»ࣜ»သʀaegsv᳂͸᳖᳜᳠mƀ;oș᳊᳔ndĀ;ș᳑uit;晦amma;䏝in;拲ƀ;io᳧᳨᳸䃷de脀÷;o᳧ᳰntimes;拇nø᳷cy;䑒cɯᴆ\0\0ᴊrn;挞op;挍ʀlptuwᴘᴝᴢᵉᵕlar;䀤f;쀀𝕕ʀ;emps̋ᴭᴷᴽᵂqĀ;d͒ᴳot;扑inus;戸lus;戔quare;抡blebarwedgåúnƀadhᄮᵝᵧownarrowóᲃarpoonĀlrᵲᵶefôᲴighôᲶŢᵿᶅkaro÷གɯᶊ\0\0ᶎrn;挟op;挌ƀcotᶘᶣᶦĀryᶝᶡ;쀀𝒹;䑕l;槶rok;䄑Ādrᶰᶴot;拱iĀ;fᶺ᠖斿Āah᷀᷃ròЩaòྦangle;榦Āci᷒ᷕy;䑟grarr;柿ऀDacdefglmnopqrstuxḁḉḙḸոḼṉṡṾấắẽỡἪἷὄ὎὚ĀDoḆᴴoôᲉĀcsḎḔute耻é䃩ter;橮ȀaioyḢḧḱḶron;䄛rĀ;cḭḮ扖耻ê䃪lon;払;䑍ot;䄗ĀDrṁṅot;扒;쀀𝔢ƀ;rsṐṑṗ檚ave耻è䃨Ā;dṜṝ檖ot;檘Ȁ;ilsṪṫṲṴ檙nters;揧;愓Ā;dṹṺ檕ot;檗ƀapsẅẉẗcr;䄓tyƀ;svẒẓẕ戅et»ẓpĀ1;ẝẤijạả;怄;怅怃ĀgsẪẬ;䅋p;怂ĀgpẴẸon;䄙f;쀀𝕖ƀalsỄỎỒrĀ;sỊị拕l;槣us;橱iƀ;lvỚớở䎵on»ớ;䏵ȀcsuvỪỳἋἣĀioữḱrc»Ḯɩỹ\0\0ỻíՈantĀglἂἆtr»ṝess»Ṻƀaeiἒ἖Ἒls;䀽st;扟vĀ;DȵἠD;橸parsl;槥ĀDaἯἳot;打rr;楱ƀcdiἾὁỸr;愯oô͒ĀahὉὋ;䎷耻ð䃰Āmrὓὗl耻ë䃫o;悬ƀcipὡὤὧl;䀡sôծĀeoὬὴctatioîՙnentialåչৡᾒ\0ᾞ\0ᾡᾧ\0\0ῆῌ\0ΐ\0ῦῪ \0 ⁚llingdotseñṄy;䑄male;晀ƀilrᾭᾳ῁lig;耀ffiɩᾹ\0\0᾽g;耀ffig;耀ffl;쀀𝔣lig;耀filig;쀀fjƀaltῙ῜ῡt;晭ig;耀flns;斱of;䆒ǰ΅\0ῳf;쀀𝕗ĀakֿῷĀ;vῼ´拔;櫙artint;樍Āao‌⁕Ācs‑⁒ႉ‸⁅⁈\0⁐β•‥‧‪‬\0‮耻½䂽;慓耻¼䂼;慕;慙;慛Ƴ‴\0‶;慔;慖ʴ‾⁁\0\0⁃耻¾䂾;慗;慜5;慘ƶ⁌\0⁎;慚;慝8;慞l;恄wn;挢cr;쀀𝒻ࢀEabcdefgijlnorstv₂₉₟₥₰₴⃰⃵⃺⃿℃ℒℸ̗ℾ⅒↞Ā;lٍ₇;檌ƀcmpₐₕ₝ute;䇵maĀ;dₜ᳚䎳;檆reve;䄟Āiy₪₮rc;䄝;䐳ot;䄡Ȁ;lqsؾق₽⃉ƀ;qsؾٌ⃄lanô٥Ȁ;cdl٥⃒⃥⃕c;檩otĀ;o⃜⃝檀Ā;l⃢⃣檂;檄Ā;e⃪⃭쀀⋛︀s;檔r;쀀𝔤Ā;gٳ؛mel;愷cy;䑓Ȁ;Eajٚℌℎℐ;檒;檥;檤ȀEaesℛℝ℩ℴ;扩pĀ;p℣ℤ檊rox»ℤĀ;q℮ℯ檈Ā;q℮ℛim;拧pf;쀀𝕘Āci⅃ⅆr;愊mƀ;el٫ⅎ⅐;檎;檐茀>;cdlqr׮ⅠⅪⅮⅳⅹĀciⅥⅧ;檧r;橺ot;拗Par;榕uest;橼ʀadelsↄⅪ←ٖ↛ǰ↉\0↎proø₞r;楸qĀlqؿ↖lesó₈ií٫Āen↣↭rtneqq;쀀≩︀Å↪ԀAabcefkosy⇄⇇⇱⇵⇺∘∝∯≨≽ròΠȀilmr⇐⇔⇗⇛rsðᒄf»․ilôکĀdr⇠⇤cy;䑊ƀ;cwࣴ⇫⇯ir;楈;憭ar;意irc;䄥ƀalr∁∎∓rtsĀ;u∉∊晥it»∊lip;怦con;抹r;쀀𝔥sĀew∣∩arow;椥arow;椦ʀamopr∺∾≃≞≣rr;懿tht;戻kĀlr≉≓eftarrow;憩ightarrow;憪f;쀀𝕙bar;怕ƀclt≯≴≸r;쀀𝒽asè⇴rok;䄧Ābp⊂⊇ull;恃hen»ᱛૡ⊣\0⊪\0⊸⋅⋎\0⋕⋳\0\0⋸⌢⍧⍢⍿\0⎆⎪⎴cute耻í䃭ƀ;iyݱ⊰⊵rc耻î䃮;䐸Ācx⊼⊿y;䐵cl耻¡䂡ĀfrΟ⋉;쀀𝔦rave耻ì䃬Ȁ;inoܾ⋝⋩⋮Āin⋢⋦nt;樌t;戭fin;槜ta;愩lig;䄳ƀaop⋾⌚⌝ƀcgt⌅⌈⌗r;䄫ƀelpܟ⌏⌓inåގarôܠh;䄱f;抷ed;䆵ʀ;cfotӴ⌬⌱⌽⍁are;愅inĀ;t⌸⌹戞ie;槝doô⌙ʀ;celpݗ⍌⍐⍛⍡al;抺Āgr⍕⍙eróᕣã⍍arhk;樗rod;樼Ȁcgpt⍯⍲⍶⍻y;䑑on;䄯f;쀀𝕚a;䎹uest耻¿䂿Āci⎊⎏r;쀀𝒾nʀ;EdsvӴ⎛⎝⎡ӳ;拹ot;拵Ā;v⎦⎧拴;拳Ā;iݷ⎮lde;䄩ǫ⎸\0⎼cy;䑖l耻ï䃯̀cfmosu⏌⏗⏜⏡⏧⏵Āiy⏑⏕rc;䄵;䐹r;쀀𝔧ath;䈷pf;쀀𝕛ǣ⏬\0⏱r;쀀𝒿rcy;䑘kcy;䑔Ѐacfghjos␋␖␢␧␭␱␵␻ppaĀ;v␓␔䎺;䏰Āey␛␠dil;䄷;䐺r;쀀𝔨reen;䄸cy;䑅cy;䑜pf;쀀𝕜cr;쀀𝓀஀ABEHabcdefghjlmnoprstuv⑰⒁⒆⒍⒑┎┽╚▀♎♞♥♹♽⚚⚲⛘❝❨➋⟀⠁⠒ƀart⑷⑺⑼rò৆òΕail;椛arr;椎Ā;gঔ⒋;檋ar;楢ॣ⒥\0⒪\0⒱\0\0\0\0\0⒵Ⓔ\0ⓆⓈⓍ\0⓹ute;䄺mptyv;榴raîࡌbda;䎻gƀ;dlࢎⓁⓃ;榑åࢎ;檅uo耻«䂫rЀ;bfhlpst࢙ⓞⓦⓩ⓫⓮⓱⓵Ā;f࢝ⓣs;椟s;椝ë≒p;憫l;椹im;楳l;憢ƀ;ae⓿─┄檫il;椙Ā;s┉┊檭;쀀⪭︀ƀabr┕┙┝rr;椌rk;杲Āak┢┬cĀek┨┪;䁻;䁛Āes┱┳;榋lĀdu┹┻;榏;榍Ȁaeuy╆╋╖╘ron;䄾Ādi═╔il;䄼ìࢰâ┩;䐻Ȁcqrs╣╦╭╽a;椶uoĀ;rนᝆĀdu╲╷har;楧shar;楋h;憲ʀ;fgqs▋▌উ◳◿扤tʀahlrt▘▤▷◂◨rrowĀ;t࢙□aé⓶arpoonĀdu▯▴own»њp»०eftarrows;懇ightƀahs◍◖◞rrowĀ;sࣴࢧarpoonó྘quigarro÷⇰hreetimes;拋ƀ;qs▋ও◺lanôবʀ;cdgsব☊☍☝☨c;檨otĀ;o☔☕橿Ā;r☚☛檁;檃Ā;e☢☥쀀⋚︀s;檓ʀadegs☳☹☽♉♋pproøⓆot;拖qĀgq♃♅ôউgtò⒌ôছiíলƀilr♕࣡♚sht;楼;쀀𝔩Ā;Eজ♣;檑š♩♶rĀdu▲♮Ā;l॥♳;楪lk;斄cy;䑙ʀ;achtੈ⚈⚋⚑⚖rò◁orneòᴈard;楫ri;旺Āio⚟⚤dot;䅀ustĀ;a⚬⚭掰che»⚭ȀEaes⚻⚽⛉⛔;扨pĀ;p⛃⛄檉rox»⛄Ā;q⛎⛏檇Ā;q⛎⚻im;拦Ѐabnoptwz⛩⛴⛷✚✯❁❇❐Ānr⛮⛱g;柬r;懽rëࣁgƀlmr⛿✍✔eftĀar০✇ightá৲apsto;柼ightá৽parrowĀlr✥✩efô⓭ight;憬ƀafl✶✹✽r;榅;쀀𝕝us;樭imes;樴š❋❏st;戗áፎƀ;ef❗❘᠀旊nge»❘arĀ;l❤❥䀨t;榓ʀachmt❳❶❼➅➇ròࢨorneòᶌarĀ;d྘➃;業;怎ri;抿̀achiqt➘➝ੀ➢➮➻quo;怹r;쀀𝓁mƀ;egল➪➬;檍;檏Ābu┪➳oĀ;rฟ➹;怚rok;䅂萀<;cdhilqrࠫ⟒☹⟜⟠⟥⟪⟰Āci⟗⟙;檦r;橹reå◲mes;拉arr;楶uest;橻ĀPi⟵⟹ar;榖ƀ;ef⠀भ᠛旃rĀdu⠇⠍shar;楊har;楦Āen⠗⠡rtneqq;쀀≨︀Å⠞܀Dacdefhilnopsu⡀⡅⢂⢎⢓⢠⢥⢨⣚⣢⣤ઃ⣳⤂Dot;戺Ȁclpr⡎⡒⡣⡽r耻¯䂯Āet⡗⡙;時Ā;e⡞⡟朠se»⡟Ā;sျ⡨toȀ;dluျ⡳⡷⡻owîҌefôएðᏑker;斮Āoy⢇⢌mma;権;䐼ash;怔asuredangle»ᘦr;쀀𝔪o;愧ƀcdn⢯⢴⣉ro耻µ䂵Ȁ;acdᑤ⢽⣀⣄sôᚧir;櫰ot肻·Ƶusƀ;bd⣒ᤃ⣓戒Ā;uᴼ⣘;横ţ⣞⣡p;櫛ò−ðઁĀdp⣩⣮els;抧f;쀀𝕞Āct⣸⣽r;쀀𝓂pos»ᖝƀ;lm⤉⤊⤍䎼timap;抸ఀGLRVabcdefghijlmoprstuvw⥂⥓⥾⦉⦘⧚⧩⨕⨚⩘⩝⪃⪕⪤⪨⬄⬇⭄⭿⮮ⰴⱧⱼ⳩Āgt⥇⥋;쀀⋙̸Ā;v⥐௏쀀≫⃒ƀelt⥚⥲⥶ftĀar⥡⥧rrow;懍ightarrow;懎;쀀⋘̸Ā;v⥻ే쀀≪⃒ightarrow;懏ĀDd⦎⦓ash;抯ash;抮ʀbcnpt⦣⦧⦬⦱⧌la»˞ute;䅄g;쀀∠⃒ʀ;Eiop඄⦼⧀⧅⧈;쀀⩰̸d;쀀≋̸s;䅉roø඄urĀ;a⧓⧔普lĀ;s⧓ସdz⧟\0⧣p肻 ଷmpĀ;e௹ఀʀaeouy⧴⧾⨃⨐⨓ǰ⧹\0⧻;橃on;䅈dil;䅆ngĀ;dൾ⨊ot;쀀⩭̸p;橂;䐽ash;怓΀;Aadqsxஒ⨩⨭⨻⩁⩅⩐rr;懗rĀhr⨳⨶k;椤Ā;oᏲᏰot;쀀≐̸uiöୣĀei⩊⩎ar;椨í஘istĀ;s஠டr;쀀𝔫ȀEest௅⩦⩹⩼ƀ;qs஼⩭௡ƀ;qs஼௅⩴lanô௢ií௪Ā;rஶ⪁»ஷƀAap⪊⪍⪑rò⥱rr;憮ar;櫲ƀ;svྍ⪜ྌĀ;d⪡⪢拼;拺cy;䑚΀AEadest⪷⪺⪾⫂⫅⫶⫹rò⥦;쀀≦̸rr;憚r;急Ȁ;fqs఻⫎⫣⫯tĀar⫔⫙rro÷⫁ightarro÷⪐ƀ;qs఻⪺⫪lanôౕĀ;sౕ⫴»శiíౝĀ;rవ⫾iĀ;eచథiäඐĀpt⬌⬑f;쀀𝕟膀¬;in⬙⬚⬶䂬nȀ;Edvஉ⬤⬨⬮;쀀⋹̸ot;쀀⋵̸ǡஉ⬳⬵;拷;拶iĀ;vಸ⬼ǡಸ⭁⭃;拾;拽ƀaor⭋⭣⭩rȀ;ast୻⭕⭚⭟lleì୻l;쀀⫽⃥;쀀∂̸lint;樔ƀ;ceಒ⭰⭳uåಥĀ;cಘ⭸Ā;eಒ⭽ñಘȀAait⮈⮋⮝⮧rò⦈rrƀ;cw⮔⮕⮙憛;쀀⤳̸;쀀↝̸ghtarrow»⮕riĀ;eೋೖ΀chimpqu⮽⯍⯙⬄୸⯤⯯Ȁ;cerല⯆ഷ⯉uå൅;쀀𝓃ortɭ⬅\0\0⯖ará⭖mĀ;e൮⯟Ā;q൴൳suĀbp⯫⯭å೸åഋƀbcp⯶ⰑⰙȀ;Ees⯿ⰀഢⰄ抄;쀀⫅̸etĀ;eഛⰋqĀ;qണⰀcĀ;eലⰗñസȀ;EesⰢⰣൟⰧ抅;쀀⫆̸etĀ;e൘ⰮqĀ;qൠⰣȀgilrⰽⰿⱅⱇìௗlde耻ñ䃱çృiangleĀlrⱒⱜeftĀ;eచⱚñదightĀ;eೋⱥñ೗Ā;mⱬⱭ䎽ƀ;esⱴⱵⱹ䀣ro;愖p;怇ҀDHadgilrsⲏⲔⲙⲞⲣⲰⲶⳓⳣash;抭arr;椄p;쀀≍⃒ash;抬ĀetⲨⲬ;쀀≥⃒;쀀>⃒nfin;槞ƀAetⲽⳁⳅrr;椂;쀀≤⃒Ā;rⳊⳍ쀀<⃒ie;쀀⊴⃒ĀAtⳘⳜrr;椃rie;쀀⊵⃒im;쀀∼⃒ƀAan⳰⳴ⴂrr;懖rĀhr⳺⳽k;椣Ā;oᏧᏥear;椧ቓ᪕\0\0\0\0\0\0\0\0\0\0\0\0\0ⴭ\0ⴸⵈⵠⵥ⵲ⶄᬇ\0\0ⶍⶫ\0ⷈⷎ\0ⷜ⸙⸫⸾⹃Ācsⴱ᪗ute耻ó䃳ĀiyⴼⵅrĀ;c᪞ⵂ耻ô䃴;䐾ʀabios᪠ⵒⵗLjⵚlac;䅑v;樸old;榼lig;䅓Ācr⵩⵭ir;榿;쀀𝔬ͯ⵹\0\0⵼\0ⶂn;䋛ave耻ò䃲;槁Ābmⶈ෴ar;榵Ȁacitⶕ⶘ⶥⶨrò᪀Āir⶝ⶠr;榾oss;榻nå๒;槀ƀaeiⶱⶵⶹcr;䅍ga;䏉ƀcdnⷀⷅǍron;䎿;榶pf;쀀𝕠ƀaelⷔ⷗ǒr;榷rp;榹΀;adiosvⷪⷫⷮ⸈⸍⸐⸖戨rò᪆Ȁ;efmⷷⷸ⸂⸅橝rĀ;oⷾⷿ愴f»ⷿ耻ª䂪耻º䂺gof;抶r;橖lope;橗;橛ƀclo⸟⸡⸧ò⸁ash耻ø䃸l;折iŬⸯ⸴de耻õ䃵esĀ;aǛ⸺s;樶ml耻ö䃶bar;挽ૡ⹞\0⹽\0⺀⺝\0⺢⺹\0\0⻋ຜ\0⼓\0\0⼫⾼\0⿈rȀ;astЃ⹧⹲຅脀¶;l⹭⹮䂶leìЃɩ⹸\0\0⹻m;櫳;櫽y;䐿rʀcimpt⺋⺏⺓ᡥ⺗nt;䀥od;䀮il;怰enk;怱r;쀀𝔭ƀimo⺨⺰⺴Ā;v⺭⺮䏆;䏕maô੶ne;明ƀ;tv⺿⻀⻈䏀chfork»´;䏖Āau⻏⻟nĀck⻕⻝kĀ;h⇴⻛;愎ö⇴sҀ;abcdemst⻳⻴ᤈ⻹⻽⼄⼆⼊⼎䀫cir;樣ir;樢Āouᵀ⼂;樥;橲n肻±ຝim;樦wo;樧ƀipu⼙⼠⼥ntint;樕f;쀀𝕡nd耻£䂣Ԁ;Eaceinosu່⼿⽁⽄⽇⾁⾉⾒⽾⾶;檳p;檷uå໙Ā;c໎⽌̀;acens່⽙⽟⽦⽨⽾pproø⽃urlyeñ໙ñ໎ƀaes⽯⽶⽺pprox;檹qq;檵im;拨iíໟmeĀ;s⾈ຮ怲ƀEas⽸⾐⽺ð⽵ƀdfp໬⾙⾯ƀals⾠⾥⾪lar;挮ine;挒urf;挓Ā;t໻⾴ï໻rel;抰Āci⿀⿅r;쀀𝓅;䏈ncsp;怈̀fiopsu⿚⋢⿟⿥⿫⿱r;쀀𝔮pf;쀀𝕢rime;恗cr;쀀𝓆ƀaeo⿸〉〓tĀei⿾々rnionóڰnt;樖stĀ;e【】䀿ñἙô༔઀ABHabcdefhilmnoprstux぀けさすムㄎㄫㅇㅢㅲㆎ㈆㈕㈤㈩㉘㉮㉲㊐㊰㊷ƀartぇおがròႳòϝail;検aròᱥar;楤΀cdenqrtとふへみわゔヌĀeuねぱ;쀀∽̱te;䅕iãᅮmptyv;榳gȀ;del࿑らるろ;榒;榥å࿑uo耻»䂻rր;abcfhlpstw࿜ガクシスゼゾダッデナp;極Ā;f࿠ゴs;椠;椳s;椞ë≝ð✮l;楅im;楴l;憣;憝Āaiパフil;椚oĀ;nホボ戶aló༞ƀabrョリヮrò៥rk;杳ĀakンヽcĀekヹ・;䁽;䁝Āes㄂㄄;榌lĀduㄊㄌ;榎;榐Ȁaeuyㄗㄜㄧㄩron;䅙Ādiㄡㄥil;䅗ì࿲âヺ;䑀Ȁclqsㄴㄷㄽㅄa;椷dhar;楩uoĀ;rȎȍh;憳ƀacgㅎㅟངlȀ;ipsླྀㅘㅛႜnåႻarôྩt;断ƀilrㅩဣㅮsht;楽;쀀𝔯ĀaoㅷㆆrĀduㅽㅿ»ѻĀ;l႑ㆄ;楬Ā;vㆋㆌ䏁;䏱ƀgns㆕ㇹㇼht̀ahlrstㆤㆰ㇂㇘㇤㇮rrowĀ;t࿜ㆭaéトarpoonĀduㆻㆿowîㅾp»႒eftĀah㇊㇐rrowó࿪arpoonóՑightarrows;應quigarro÷ニhreetimes;拌g;䋚ingdotseñἲƀahm㈍㈐㈓rò࿪aòՑ;怏oustĀ;a㈞㈟掱che»㈟mid;櫮Ȁabpt㈲㈽㉀㉒Ānr㈷㈺g;柭r;懾rëဃƀafl㉇㉊㉎r;榆;쀀𝕣us;樮imes;樵Āap㉝㉧rĀ;g㉣㉤䀩t;榔olint;樒arò㇣Ȁachq㉻㊀Ⴜ㊅quo;怺r;쀀𝓇Ābu・㊊oĀ;rȔȓƀhir㊗㊛㊠reåㇸmes;拊iȀ;efl㊪ၙᠡ㊫方tri;槎luhar;楨;愞ൡ㋕㋛㋟㌬㌸㍱\0㍺㎤\0\0㏬㏰\0㐨㑈㑚㒭㒱㓊㓱\0㘖\0\0㘳cute;䅛quï➺Ԁ;Eaceinpsyᇭ㋳㋵㋿㌂㌋㌏㌟㌦㌩;檴ǰ㋺\0㋼;檸on;䅡uåᇾĀ;dᇳ㌇il;䅟rc;䅝ƀEas㌖㌘㌛;檶p;檺im;择olint;樓iíሄ;䑁otƀ;be㌴ᵇ㌵担;橦΀Aacmstx㍆㍊㍗㍛㍞㍣㍭rr;懘rĀhr㍐㍒ë∨Ā;oਸ਼਴t耻§䂧i;䀻war;椩mĀin㍩ðnuóñt;朶rĀ;o㍶⁕쀀𝔰Ȁacoy㎂㎆㎑㎠rp;景Āhy㎋㎏cy;䑉;䑈rtɭ㎙\0\0㎜iäᑤaraì⹯耻­䂭Āgm㎨㎴maƀ;fv㎱㎲㎲䏃;䏂Ѐ;deglnprካ㏅㏉㏎㏖㏞㏡㏦ot;橪Ā;q኱ኰĀ;E㏓㏔檞;檠Ā;E㏛㏜檝;檟e;扆lus;樤arr;楲aròᄽȀaeit㏸㐈㐏㐗Āls㏽㐄lsetmé㍪hp;樳parsl;槤Ādlᑣ㐔e;挣Ā;e㐜㐝檪Ā;s㐢㐣檬;쀀⪬︀ƀflp㐮㐳㑂tcy;䑌Ā;b㐸㐹䀯Ā;a㐾㐿槄r;挿f;쀀𝕤aĀdr㑍ЂesĀ;u㑔㑕晠it»㑕ƀcsu㑠㑹㒟Āau㑥㑯pĀ;sᆈ㑫;쀀⊓︀pĀ;sᆴ㑵;쀀⊔︀uĀbp㑿㒏ƀ;esᆗᆜ㒆etĀ;eᆗ㒍ñᆝƀ;esᆨᆭ㒖etĀ;eᆨ㒝ñᆮƀ;afᅻ㒦ְrť㒫ֱ»ᅼaròᅈȀcemt㒹㒾㓂㓅r;쀀𝓈tmîñiì㐕aræᆾĀar㓎㓕rĀ;f㓔ឿ昆Āan㓚㓭ightĀep㓣㓪psiloîỠhé⺯s»⡒ʀbcmnp㓻㕞ሉ㖋㖎Ҁ;Edemnprs㔎㔏㔑㔕㔞㔣㔬㔱㔶抂;櫅ot;檽Ā;dᇚ㔚ot;櫃ult;櫁ĀEe㔨㔪;櫋;把lus;檿arr;楹ƀeiu㔽㕒㕕tƀ;en㔎㕅㕋qĀ;qᇚ㔏eqĀ;q㔫㔨m;櫇Ābp㕚㕜;櫕;櫓c̀;acensᇭ㕬㕲㕹㕻㌦pproø㋺urlyeñᇾñᇳƀaes㖂㖈㌛pproø㌚qñ㌗g;晪ڀ123;Edehlmnps㖩㖬㖯ሜ㖲㖴㗀㗉㗕㗚㗟㗨㗭耻¹䂹耻²䂲耻³䂳;櫆Āos㖹㖼t;檾ub;櫘Ā;dሢ㗅ot;櫄sĀou㗏㗒l;柉b;櫗arr;楻ult;櫂ĀEe㗤㗦;櫌;抋lus;櫀ƀeiu㗴㘉㘌tƀ;enሜ㗼㘂qĀ;qሢ㖲eqĀ;q㗧㗤m;櫈Ābp㘑㘓;櫔;櫖ƀAan㘜㘠㘭rr;懙rĀhr㘦㘨ë∮Ā;oਫ਩war;椪lig耻ß䃟௡㙑㙝㙠ዎ㙳㙹\0㙾㛂\0\0\0\0\0㛛㜃\0㜉㝬\0\0\0㞇ɲ㙖\0\0㙛get;挖;䏄rë๟ƀaey㙦㙫㙰ron;䅥dil;䅣;䑂lrec;挕r;쀀𝔱Ȁeiko㚆㚝㚵㚼Dz㚋\0㚑eĀ4fኄኁaƀ;sv㚘㚙㚛䎸ym;䏑Ācn㚢㚲kĀas㚨㚮pproø዁im»ኬsðኞĀas㚺㚮ð዁rn耻þ䃾Ǭ̟㛆⋧es膀×;bd㛏㛐㛘䃗Ā;aᤏ㛕r;樱;樰ƀeps㛡㛣㜀á⩍Ȁ;bcf҆㛬㛰㛴ot;挶ir;櫱Ā;o㛹㛼쀀𝕥rk;櫚á㍢rime;怴ƀaip㜏㜒㝤dåቈ΀adempst㜡㝍㝀㝑㝗㝜㝟ngleʀ;dlqr㜰㜱㜶㝀㝂斵own»ᶻeftĀ;e⠀㜾ñम;扜ightĀ;e㊪㝋ñၚot;旬inus;樺lus;樹b;槍ime;樻ezium;揢ƀcht㝲㝽㞁Āry㝷㝻;쀀𝓉;䑆cy;䑛rok;䅧Āio㞋㞎xô᝷headĀlr㞗㞠eftarro÷ࡏightarrow»ཝऀAHabcdfghlmoprstuw㟐㟓㟗㟤㟰㟼㠎㠜㠣㠴㡑㡝㡫㢩㣌㣒㣪㣶ròϭar;楣Ācr㟜㟢ute耻ú䃺òᅐrǣ㟪\0㟭y;䑞ve;䅭Āiy㟵㟺rc耻û䃻;䑃ƀabh㠃㠆㠋ròᎭlac;䅱aòᏃĀir㠓㠘sht;楾;쀀𝔲rave耻ù䃹š㠧㠱rĀlr㠬㠮»ॗ»ႃlk;斀Āct㠹㡍ɯ㠿\0\0㡊rnĀ;e㡅㡆挜r»㡆op;挏ri;旸Āal㡖㡚cr;䅫肻¨͉Āgp㡢㡦on;䅳f;쀀𝕦̀adhlsuᅋ㡸㡽፲㢑㢠ownáᎳarpoonĀlr㢈㢌efô㠭ighô㠯iƀ;hl㢙㢚㢜䏅»ᏺon»㢚parrows;懈ƀcit㢰㣄㣈ɯ㢶\0\0㣁rnĀ;e㢼㢽挝r»㢽op;挎ng;䅯ri;旹cr;쀀𝓊ƀdir㣙㣝㣢ot;拰lde;䅩iĀ;f㜰㣨»᠓Āam㣯㣲rò㢨l耻ü䃼angle;榧ހABDacdeflnoprsz㤜㤟㤩㤭㦵㦸㦽㧟㧤㧨㧳㧹㧽㨁㨠ròϷarĀ;v㤦㤧櫨;櫩asèϡĀnr㤲㤷grt;榜΀eknprst㓣㥆㥋㥒㥝㥤㦖appá␕othinçẖƀhir㓫⻈㥙opô⾵Ā;hᎷ㥢ïㆍĀiu㥩㥭gmá㎳Ābp㥲㦄setneqĀ;q㥽㦀쀀⊊︀;쀀⫋︀setneqĀ;q㦏㦒쀀⊋︀;쀀⫌︀Āhr㦛㦟etá㚜iangleĀlr㦪㦯eft»थight»ၑy;䐲ash»ံƀelr㧄㧒㧗ƀ;beⷪ㧋㧏ar;抻q;扚lip;拮Ābt㧜ᑨaòᑩr;쀀𝔳tré㦮suĀbp㧯㧱»ജ»൙pf;쀀𝕧roð໻tré㦴Ācu㨆㨋r;쀀𝓋Ābp㨐㨘nĀEe㦀㨖»㥾nĀEe㦒㨞»㦐igzag;榚΀cefoprs㨶㨻㩖㩛㩔㩡㩪irc;䅵Ādi㩀㩑Ābg㩅㩉ar;機eĀ;qᗺ㩏;扙erp;愘r;쀀𝔴pf;쀀𝕨Ā;eᑹ㩦atèᑹcr;쀀𝓌ૣណ㪇\0㪋\0㪐㪛\0\0㪝㪨㪫㪯\0\0㫃㫎\0㫘ៜ៟tré៑r;쀀𝔵ĀAa㪔㪗ròσrò৶;䎾ĀAa㪡㪤ròθrò৫að✓is;拻ƀdptឤ㪵㪾Āfl㪺ឩ;쀀𝕩imåឲĀAa㫇㫊ròώròਁĀcq㫒ីr;쀀𝓍Āpt៖㫜ré។Ѐacefiosu㫰㫽㬈㬌㬑㬕㬛㬡cĀuy㫶㫻te耻ý䃽;䑏Āiy㬂㬆rc;䅷;䑋n耻¥䂥r;쀀𝔶cy;䑗pf;쀀𝕪cr;쀀𝓎Ācm㬦㬩y;䑎l耻ÿ䃿Ԁacdefhiosw㭂㭈㭔㭘㭤㭩㭭㭴㭺㮀cute;䅺Āay㭍㭒ron;䅾;䐷ot;䅼Āet㭝㭡træᕟa;䎶r;쀀𝔷cy;䐶grarr;懝pf;쀀𝕫cr;쀀𝓏Ājn㮅㮇;怍j;怌'.split("").map(e=>e.charCodeAt(0))),pp=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]);function gp(e){var t;return e>=55296&&e<=57343||e>1114111?65533:(t=pp.get(e))!==null&&t!==void 0?t:e}var qe;(function(e){e[e.NUM=35]="NUM",e[e.SEMI=59]="SEMI",e[e.EQUALS=61]="EQUALS",e[e.ZERO=48]="ZERO",e[e.NINE=57]="NINE",e[e.LOWER_A=97]="LOWER_A",e[e.LOWER_F=102]="LOWER_F",e[e.LOWER_X=120]="LOWER_X",e[e.LOWER_Z=122]="LOWER_Z",e[e.UPPER_A=65]="UPPER_A",e[e.UPPER_F=70]="UPPER_F",e[e.UPPER_Z=90]="UPPER_Z"})(qe||(qe={}));const bp=32;var Kt;(function(e){e[e.VALUE_LENGTH=49152]="VALUE_LENGTH",e[e.BRANCH_LENGTH=16256]="BRANCH_LENGTH",e[e.JUMP_TABLE=127]="JUMP_TABLE"})(Kt||(Kt={}));function $a(e){return e>=qe.ZERO&&e<=qe.NINE}function Ep(e){return e>=qe.UPPER_A&&e<=qe.UPPER_F||e>=qe.LOWER_A&&e<=qe.LOWER_F}function Tp(e){return e>=qe.UPPER_A&&e<=qe.UPPER_Z||e>=qe.LOWER_A&&e<=qe.LOWER_Z||$a(e)}function xp(e){return e===qe.EQUALS||Tp(e)}var Ue;(function(e){e[e.EntityStart=0]="EntityStart",e[e.NumericStart=1]="NumericStart",e[e.NumericDecimal=2]="NumericDecimal",e[e.NumericHex=3]="NumericHex",e[e.NamedEntity=4]="NamedEntity"})(Ue||(Ue={}));var Ft;(function(e){e[e.Legacy=0]="Legacy",e[e.Strict=1]="Strict",e[e.Attribute=2]="Attribute"})(Ft||(Ft={}));class yp{constructor(t,r,n){this.decodeTree=t,this.emitCodePoint=r,this.errors=n,this.state=Ue.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=Ft.Strict}startEntity(t){this.decodeMode=t,this.state=Ue.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1}write(t,r){switch(this.state){case Ue.EntityStart:return t.charCodeAt(r)===qe.NUM?(this.state=Ue.NumericStart,this.consumed+=1,this.stateNumericStart(t,r+1)):(this.state=Ue.NamedEntity,this.stateNamedEntity(t,r));case Ue.NumericStart:return this.stateNumericStart(t,r);case Ue.NumericDecimal:return this.stateNumericDecimal(t,r);case Ue.NumericHex:return this.stateNumericHex(t,r);case Ue.NamedEntity:return this.stateNamedEntity(t,r)}}stateNumericStart(t,r){return r>=t.length?-1:(t.charCodeAt(r)|bp)===qe.LOWER_X?(this.state=Ue.NumericHex,this.consumed+=1,this.stateNumericHex(t,r+1)):(this.state=Ue.NumericDecimal,this.stateNumericDecimal(t,r))}addToNumericResult(t,r,n,a){if(r!==n){const i=n-r;this.result=this.result*Math.pow(a,i)+Number.parseInt(t.substr(r,i),a),this.consumed+=i}}stateNumericHex(t,r){const n=r;for(;r>14;for(;r>14,i!==0){if(u===qe.SEMI)return this.emitNamedEntityData(this.treeIndex,i,this.consumed+this.excess);this.decodeMode!==Ft.Strict&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}}return-1}emitNotTerminatedNamedEntity(){var t;const{result:r,decodeTree:n}=this,a=(n[r]&Kt.VALUE_LENGTH)>>14;return this.emitNamedEntityData(r,a,this.consumed),(t=this.errors)===null||t===void 0||t.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(t,r,n){const{decodeTree:a}=this;return this.emitCodePoint(r===1?a[t]&~Kt.VALUE_LENGTH:a[t+1],n),r===3&&this.emitCodePoint(a[t+2],n),n}end(){var t;switch(this.state){case Ue.NamedEntity:return this.result!==0&&(this.decodeMode!==Ft.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case Ue.NumericDecimal:return this.emitNumericEntity(0,2);case Ue.NumericHex:return this.emitNumericEntity(0,3);case Ue.NumericStart:return(t=this.errors)===null||t===void 0||t.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case Ue.EntityStart:return 0}}}function vp(e,t,r,n){const a=(t&Kt.BRANCH_LENGTH)>>7,i=t&Kt.JUMP_TABLE;if(a===0)return i!==0&&n===i?r:-1;if(i){const l=n-i;return l<0||l>=a?-1:e[r+l]-1}let u=r,s=u+a-1;for(;u<=s;){const l=u+s>>>1,c=e[l];if(cn)s=l-1;else return e[l+a]}return-1}var H;(function(e){e.HTML="http://www.w3.org/1999/xhtml",e.MATHML="http://www.w3.org/1998/Math/MathML",e.SVG="http://www.w3.org/2000/svg",e.XLINK="http://www.w3.org/1999/xlink",e.XML="http://www.w3.org/XML/1998/namespace",e.XMLNS="http://www.w3.org/2000/xmlns/"})(H||(H={}));var mr;(function(e){e.TYPE="type",e.ACTION="action",e.ENCODING="encoding",e.PROMPT="prompt",e.NAME="name",e.COLOR="color",e.FACE="face",e.SIZE="size"})(mr||(mr={}));var pt;(function(e){e.NO_QUIRKS="no-quirks",e.QUIRKS="quirks",e.LIMITED_QUIRKS="limited-quirks"})(pt||(pt={}));var O;(function(e){e.A="a",e.ADDRESS="address",e.ANNOTATION_XML="annotation-xml",e.APPLET="applet",e.AREA="area",e.ARTICLE="article",e.ASIDE="aside",e.B="b",e.BASE="base",e.BASEFONT="basefont",e.BGSOUND="bgsound",e.BIG="big",e.BLOCKQUOTE="blockquote",e.BODY="body",e.BR="br",e.BUTTON="button",e.CAPTION="caption",e.CENTER="center",e.CODE="code",e.COL="col",e.COLGROUP="colgroup",e.DD="dd",e.DESC="desc",e.DETAILS="details",e.DIALOG="dialog",e.DIR="dir",e.DIV="div",e.DL="dl",e.DT="dt",e.EM="em",e.EMBED="embed",e.FIELDSET="fieldset",e.FIGCAPTION="figcaption",e.FIGURE="figure",e.FONT="font",e.FOOTER="footer",e.FOREIGN_OBJECT="foreignObject",e.FORM="form",e.FRAME="frame",e.FRAMESET="frameset",e.H1="h1",e.H2="h2",e.H3="h3",e.H4="h4",e.H5="h5",e.H6="h6",e.HEAD="head",e.HEADER="header",e.HGROUP="hgroup",e.HR="hr",e.HTML="html",e.I="i",e.IMG="img",e.IMAGE="image",e.INPUT="input",e.IFRAME="iframe",e.KEYGEN="keygen",e.LABEL="label",e.LI="li",e.LINK="link",e.LISTING="listing",e.MAIN="main",e.MALIGNMARK="malignmark",e.MARQUEE="marquee",e.MATH="math",e.MENU="menu",e.META="meta",e.MGLYPH="mglyph",e.MI="mi",e.MO="mo",e.MN="mn",e.MS="ms",e.MTEXT="mtext",e.NAV="nav",e.NOBR="nobr",e.NOFRAMES="noframes",e.NOEMBED="noembed",e.NOSCRIPT="noscript",e.OBJECT="object",e.OL="ol",e.OPTGROUP="optgroup",e.OPTION="option",e.P="p",e.PARAM="param",e.PLAINTEXT="plaintext",e.PRE="pre",e.RB="rb",e.RP="rp",e.RT="rt",e.RTC="rtc",e.RUBY="ruby",e.S="s",e.SCRIPT="script",e.SEARCH="search",e.SECTION="section",e.SELECT="select",e.SOURCE="source",e.SMALL="small",e.SPAN="span",e.STRIKE="strike",e.STRONG="strong",e.STYLE="style",e.SUB="sub",e.SUMMARY="summary",e.SUP="sup",e.TABLE="table",e.TBODY="tbody",e.TEMPLATE="template",e.TEXTAREA="textarea",e.TFOOT="tfoot",e.TD="td",e.TH="th",e.THEAD="thead",e.TITLE="title",e.TR="tr",e.TRACK="track",e.TT="tt",e.U="u",e.UL="ul",e.SVG="svg",e.VAR="var",e.WBR="wbr",e.XMP="xmp"})(O||(O={}));var o;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.A=1]="A",e[e.ADDRESS=2]="ADDRESS",e[e.ANNOTATION_XML=3]="ANNOTATION_XML",e[e.APPLET=4]="APPLET",e[e.AREA=5]="AREA",e[e.ARTICLE=6]="ARTICLE",e[e.ASIDE=7]="ASIDE",e[e.B=8]="B",e[e.BASE=9]="BASE",e[e.BASEFONT=10]="BASEFONT",e[e.BGSOUND=11]="BGSOUND",e[e.BIG=12]="BIG",e[e.BLOCKQUOTE=13]="BLOCKQUOTE",e[e.BODY=14]="BODY",e[e.BR=15]="BR",e[e.BUTTON=16]="BUTTON",e[e.CAPTION=17]="CAPTION",e[e.CENTER=18]="CENTER",e[e.CODE=19]="CODE",e[e.COL=20]="COL",e[e.COLGROUP=21]="COLGROUP",e[e.DD=22]="DD",e[e.DESC=23]="DESC",e[e.DETAILS=24]="DETAILS",e[e.DIALOG=25]="DIALOG",e[e.DIR=26]="DIR",e[e.DIV=27]="DIV",e[e.DL=28]="DL",e[e.DT=29]="DT",e[e.EM=30]="EM",e[e.EMBED=31]="EMBED",e[e.FIELDSET=32]="FIELDSET",e[e.FIGCAPTION=33]="FIGCAPTION",e[e.FIGURE=34]="FIGURE",e[e.FONT=35]="FONT",e[e.FOOTER=36]="FOOTER",e[e.FOREIGN_OBJECT=37]="FOREIGN_OBJECT",e[e.FORM=38]="FORM",e[e.FRAME=39]="FRAME",e[e.FRAMESET=40]="FRAMESET",e[e.H1=41]="H1",e[e.H2=42]="H2",e[e.H3=43]="H3",e[e.H4=44]="H4",e[e.H5=45]="H5",e[e.H6=46]="H6",e[e.HEAD=47]="HEAD",e[e.HEADER=48]="HEADER",e[e.HGROUP=49]="HGROUP",e[e.HR=50]="HR",e[e.HTML=51]="HTML",e[e.I=52]="I",e[e.IMG=53]="IMG",e[e.IMAGE=54]="IMAGE",e[e.INPUT=55]="INPUT",e[e.IFRAME=56]="IFRAME",e[e.KEYGEN=57]="KEYGEN",e[e.LABEL=58]="LABEL",e[e.LI=59]="LI",e[e.LINK=60]="LINK",e[e.LISTING=61]="LISTING",e[e.MAIN=62]="MAIN",e[e.MALIGNMARK=63]="MALIGNMARK",e[e.MARQUEE=64]="MARQUEE",e[e.MATH=65]="MATH",e[e.MENU=66]="MENU",e[e.META=67]="META",e[e.MGLYPH=68]="MGLYPH",e[e.MI=69]="MI",e[e.MO=70]="MO",e[e.MN=71]="MN",e[e.MS=72]="MS",e[e.MTEXT=73]="MTEXT",e[e.NAV=74]="NAV",e[e.NOBR=75]="NOBR",e[e.NOFRAMES=76]="NOFRAMES",e[e.NOEMBED=77]="NOEMBED",e[e.NOSCRIPT=78]="NOSCRIPT",e[e.OBJECT=79]="OBJECT",e[e.OL=80]="OL",e[e.OPTGROUP=81]="OPTGROUP",e[e.OPTION=82]="OPTION",e[e.P=83]="P",e[e.PARAM=84]="PARAM",e[e.PLAINTEXT=85]="PLAINTEXT",e[e.PRE=86]="PRE",e[e.RB=87]="RB",e[e.RP=88]="RP",e[e.RT=89]="RT",e[e.RTC=90]="RTC",e[e.RUBY=91]="RUBY",e[e.S=92]="S",e[e.SCRIPT=93]="SCRIPT",e[e.SEARCH=94]="SEARCH",e[e.SECTION=95]="SECTION",e[e.SELECT=96]="SELECT",e[e.SOURCE=97]="SOURCE",e[e.SMALL=98]="SMALL",e[e.SPAN=99]="SPAN",e[e.STRIKE=100]="STRIKE",e[e.STRONG=101]="STRONG",e[e.STYLE=102]="STYLE",e[e.SUB=103]="SUB",e[e.SUMMARY=104]="SUMMARY",e[e.SUP=105]="SUP",e[e.TABLE=106]="TABLE",e[e.TBODY=107]="TBODY",e[e.TEMPLATE=108]="TEMPLATE",e[e.TEXTAREA=109]="TEXTAREA",e[e.TFOOT=110]="TFOOT",e[e.TD=111]="TD",e[e.TH=112]="TH",e[e.THEAD=113]="THEAD",e[e.TITLE=114]="TITLE",e[e.TR=115]="TR",e[e.TRACK=116]="TRACK",e[e.TT=117]="TT",e[e.U=118]="U",e[e.UL=119]="UL",e[e.SVG=120]="SVG",e[e.VAR=121]="VAR",e[e.WBR=122]="WBR",e[e.XMP=123]="XMP"})(o||(o={}));const Ap=new Map([[O.A,o.A],[O.ADDRESS,o.ADDRESS],[O.ANNOTATION_XML,o.ANNOTATION_XML],[O.APPLET,o.APPLET],[O.AREA,o.AREA],[O.ARTICLE,o.ARTICLE],[O.ASIDE,o.ASIDE],[O.B,o.B],[O.BASE,o.BASE],[O.BASEFONT,o.BASEFONT],[O.BGSOUND,o.BGSOUND],[O.BIG,o.BIG],[O.BLOCKQUOTE,o.BLOCKQUOTE],[O.BODY,o.BODY],[O.BR,o.BR],[O.BUTTON,o.BUTTON],[O.CAPTION,o.CAPTION],[O.CENTER,o.CENTER],[O.CODE,o.CODE],[O.COL,o.COL],[O.COLGROUP,o.COLGROUP],[O.DD,o.DD],[O.DESC,o.DESC],[O.DETAILS,o.DETAILS],[O.DIALOG,o.DIALOG],[O.DIR,o.DIR],[O.DIV,o.DIV],[O.DL,o.DL],[O.DT,o.DT],[O.EM,o.EM],[O.EMBED,o.EMBED],[O.FIELDSET,o.FIELDSET],[O.FIGCAPTION,o.FIGCAPTION],[O.FIGURE,o.FIGURE],[O.FONT,o.FONT],[O.FOOTER,o.FOOTER],[O.FOREIGN_OBJECT,o.FOREIGN_OBJECT],[O.FORM,o.FORM],[O.FRAME,o.FRAME],[O.FRAMESET,o.FRAMESET],[O.H1,o.H1],[O.H2,o.H2],[O.H3,o.H3],[O.H4,o.H4],[O.H5,o.H5],[O.H6,o.H6],[O.HEAD,o.HEAD],[O.HEADER,o.HEADER],[O.HGROUP,o.HGROUP],[O.HR,o.HR],[O.HTML,o.HTML],[O.I,o.I],[O.IMG,o.IMG],[O.IMAGE,o.IMAGE],[O.INPUT,o.INPUT],[O.IFRAME,o.IFRAME],[O.KEYGEN,o.KEYGEN],[O.LABEL,o.LABEL],[O.LI,o.LI],[O.LINK,o.LINK],[O.LISTING,o.LISTING],[O.MAIN,o.MAIN],[O.MALIGNMARK,o.MALIGNMARK],[O.MARQUEE,o.MARQUEE],[O.MATH,o.MATH],[O.MENU,o.MENU],[O.META,o.META],[O.MGLYPH,o.MGLYPH],[O.MI,o.MI],[O.MO,o.MO],[O.MN,o.MN],[O.MS,o.MS],[O.MTEXT,o.MTEXT],[O.NAV,o.NAV],[O.NOBR,o.NOBR],[O.NOFRAMES,o.NOFRAMES],[O.NOEMBED,o.NOEMBED],[O.NOSCRIPT,o.NOSCRIPT],[O.OBJECT,o.OBJECT],[O.OL,o.OL],[O.OPTGROUP,o.OPTGROUP],[O.OPTION,o.OPTION],[O.P,o.P],[O.PARAM,o.PARAM],[O.PLAINTEXT,o.PLAINTEXT],[O.PRE,o.PRE],[O.RB,o.RB],[O.RP,o.RP],[O.RT,o.RT],[O.RTC,o.RTC],[O.RUBY,o.RUBY],[O.S,o.S],[O.SCRIPT,o.SCRIPT],[O.SEARCH,o.SEARCH],[O.SECTION,o.SECTION],[O.SELECT,o.SELECT],[O.SOURCE,o.SOURCE],[O.SMALL,o.SMALL],[O.SPAN,o.SPAN],[O.STRIKE,o.STRIKE],[O.STRONG,o.STRONG],[O.STYLE,o.STYLE],[O.SUB,o.SUB],[O.SUMMARY,o.SUMMARY],[O.SUP,o.SUP],[O.TABLE,o.TABLE],[O.TBODY,o.TBODY],[O.TEMPLATE,o.TEMPLATE],[O.TEXTAREA,o.TEXTAREA],[O.TFOOT,o.TFOOT],[O.TD,o.TD],[O.TH,o.TH],[O.THEAD,o.THEAD],[O.TITLE,o.TITLE],[O.TR,o.TR],[O.TRACK,o.TRACK],[O.TT,o.TT],[O.U,o.U],[O.UL,o.UL],[O.SVG,o.SVG],[O.VAR,o.VAR],[O.WBR,o.WBR],[O.XMP,o.XMP]]);function qr(e){var t;return(t=Ap.get(e))!==null&&t!==void 0?t:o.UNKNOWN}const U=o,kp={[H.HTML]:new Set([U.ADDRESS,U.APPLET,U.AREA,U.ARTICLE,U.ASIDE,U.BASE,U.BASEFONT,U.BGSOUND,U.BLOCKQUOTE,U.BODY,U.BR,U.BUTTON,U.CAPTION,U.CENTER,U.COL,U.COLGROUP,U.DD,U.DETAILS,U.DIR,U.DIV,U.DL,U.DT,U.EMBED,U.FIELDSET,U.FIGCAPTION,U.FIGURE,U.FOOTER,U.FORM,U.FRAME,U.FRAMESET,U.H1,U.H2,U.H3,U.H4,U.H5,U.H6,U.HEAD,U.HEADER,U.HGROUP,U.HR,U.HTML,U.IFRAME,U.IMG,U.INPUT,U.LI,U.LINK,U.LISTING,U.MAIN,U.MARQUEE,U.MENU,U.META,U.NAV,U.NOEMBED,U.NOFRAMES,U.NOSCRIPT,U.OBJECT,U.OL,U.P,U.PARAM,U.PLAINTEXT,U.PRE,U.SCRIPT,U.SECTION,U.SELECT,U.SOURCE,U.STYLE,U.SUMMARY,U.TABLE,U.TBODY,U.TD,U.TEMPLATE,U.TEXTAREA,U.TFOOT,U.TH,U.THEAD,U.TITLE,U.TR,U.TRACK,U.UL,U.WBR,U.XMP]),[H.MATHML]:new Set([U.MI,U.MO,U.MN,U.MS,U.MTEXT,U.ANNOTATION_XML]),[H.SVG]:new Set([U.TITLE,U.FOREIGN_OBJECT,U.DESC]),[H.XLINK]:new Set,[H.XML]:new Set,[H.XMLNS]:new Set},Qa=new Set([U.H1,U.H2,U.H3,U.H4,U.H5,U.H6]);O.STYLE,O.SCRIPT,O.XMP,O.IFRAME,O.NOEMBED,O.NOFRAMES,O.PLAINTEXT;var y;(function(e){e[e.DATA=0]="DATA",e[e.RCDATA=1]="RCDATA",e[e.RAWTEXT=2]="RAWTEXT",e[e.SCRIPT_DATA=3]="SCRIPT_DATA",e[e.PLAINTEXT=4]="PLAINTEXT",e[e.TAG_OPEN=5]="TAG_OPEN",e[e.END_TAG_OPEN=6]="END_TAG_OPEN",e[e.TAG_NAME=7]="TAG_NAME",e[e.RCDATA_LESS_THAN_SIGN=8]="RCDATA_LESS_THAN_SIGN",e[e.RCDATA_END_TAG_OPEN=9]="RCDATA_END_TAG_OPEN",e[e.RCDATA_END_TAG_NAME=10]="RCDATA_END_TAG_NAME",e[e.RAWTEXT_LESS_THAN_SIGN=11]="RAWTEXT_LESS_THAN_SIGN",e[e.RAWTEXT_END_TAG_OPEN=12]="RAWTEXT_END_TAG_OPEN",e[e.RAWTEXT_END_TAG_NAME=13]="RAWTEXT_END_TAG_NAME",e[e.SCRIPT_DATA_LESS_THAN_SIGN=14]="SCRIPT_DATA_LESS_THAN_SIGN",e[e.SCRIPT_DATA_END_TAG_OPEN=15]="SCRIPT_DATA_END_TAG_OPEN",e[e.SCRIPT_DATA_END_TAG_NAME=16]="SCRIPT_DATA_END_TAG_NAME",e[e.SCRIPT_DATA_ESCAPE_START=17]="SCRIPT_DATA_ESCAPE_START",e[e.SCRIPT_DATA_ESCAPE_START_DASH=18]="SCRIPT_DATA_ESCAPE_START_DASH",e[e.SCRIPT_DATA_ESCAPED=19]="SCRIPT_DATA_ESCAPED",e[e.SCRIPT_DATA_ESCAPED_DASH=20]="SCRIPT_DATA_ESCAPED_DASH",e[e.SCRIPT_DATA_ESCAPED_DASH_DASH=21]="SCRIPT_DATA_ESCAPED_DASH_DASH",e[e.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN=22]="SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN",e[e.SCRIPT_DATA_ESCAPED_END_TAG_OPEN=23]="SCRIPT_DATA_ESCAPED_END_TAG_OPEN",e[e.SCRIPT_DATA_ESCAPED_END_TAG_NAME=24]="SCRIPT_DATA_ESCAPED_END_TAG_NAME",e[e.SCRIPT_DATA_DOUBLE_ESCAPE_START=25]="SCRIPT_DATA_DOUBLE_ESCAPE_START",e[e.SCRIPT_DATA_DOUBLE_ESCAPED=26]="SCRIPT_DATA_DOUBLE_ESCAPED",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH=27]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH=28]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN=29]="SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN",e[e.SCRIPT_DATA_DOUBLE_ESCAPE_END=30]="SCRIPT_DATA_DOUBLE_ESCAPE_END",e[e.BEFORE_ATTRIBUTE_NAME=31]="BEFORE_ATTRIBUTE_NAME",e[e.ATTRIBUTE_NAME=32]="ATTRIBUTE_NAME",e[e.AFTER_ATTRIBUTE_NAME=33]="AFTER_ATTRIBUTE_NAME",e[e.BEFORE_ATTRIBUTE_VALUE=34]="BEFORE_ATTRIBUTE_VALUE",e[e.ATTRIBUTE_VALUE_DOUBLE_QUOTED=35]="ATTRIBUTE_VALUE_DOUBLE_QUOTED",e[e.ATTRIBUTE_VALUE_SINGLE_QUOTED=36]="ATTRIBUTE_VALUE_SINGLE_QUOTED",e[e.ATTRIBUTE_VALUE_UNQUOTED=37]="ATTRIBUTE_VALUE_UNQUOTED",e[e.AFTER_ATTRIBUTE_VALUE_QUOTED=38]="AFTER_ATTRIBUTE_VALUE_QUOTED",e[e.SELF_CLOSING_START_TAG=39]="SELF_CLOSING_START_TAG",e[e.BOGUS_COMMENT=40]="BOGUS_COMMENT",e[e.MARKUP_DECLARATION_OPEN=41]="MARKUP_DECLARATION_OPEN",e[e.COMMENT_START=42]="COMMENT_START",e[e.COMMENT_START_DASH=43]="COMMENT_START_DASH",e[e.COMMENT=44]="COMMENT",e[e.COMMENT_LESS_THAN_SIGN=45]="COMMENT_LESS_THAN_SIGN",e[e.COMMENT_LESS_THAN_SIGN_BANG=46]="COMMENT_LESS_THAN_SIGN_BANG",e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH=47]="COMMENT_LESS_THAN_SIGN_BANG_DASH",e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH=48]="COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH",e[e.COMMENT_END_DASH=49]="COMMENT_END_DASH",e[e.COMMENT_END=50]="COMMENT_END",e[e.COMMENT_END_BANG=51]="COMMENT_END_BANG",e[e.DOCTYPE=52]="DOCTYPE",e[e.BEFORE_DOCTYPE_NAME=53]="BEFORE_DOCTYPE_NAME",e[e.DOCTYPE_NAME=54]="DOCTYPE_NAME",e[e.AFTER_DOCTYPE_NAME=55]="AFTER_DOCTYPE_NAME",e[e.AFTER_DOCTYPE_PUBLIC_KEYWORD=56]="AFTER_DOCTYPE_PUBLIC_KEYWORD",e[e.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER=57]="BEFORE_DOCTYPE_PUBLIC_IDENTIFIER",e[e.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED=58]="DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED",e[e.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED=59]="DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED",e[e.AFTER_DOCTYPE_PUBLIC_IDENTIFIER=60]="AFTER_DOCTYPE_PUBLIC_IDENTIFIER",e[e.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS=61]="BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS",e[e.AFTER_DOCTYPE_SYSTEM_KEYWORD=62]="AFTER_DOCTYPE_SYSTEM_KEYWORD",e[e.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER=63]="BEFORE_DOCTYPE_SYSTEM_IDENTIFIER",e[e.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED=64]="DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED",e[e.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED=65]="DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED",e[e.AFTER_DOCTYPE_SYSTEM_IDENTIFIER=66]="AFTER_DOCTYPE_SYSTEM_IDENTIFIER",e[e.BOGUS_DOCTYPE=67]="BOGUS_DOCTYPE",e[e.CDATA_SECTION=68]="CDATA_SECTION",e[e.CDATA_SECTION_BRACKET=69]="CDATA_SECTION_BRACKET",e[e.CDATA_SECTION_END=70]="CDATA_SECTION_END",e[e.CHARACTER_REFERENCE=71]="CHARACTER_REFERENCE",e[e.AMBIGUOUS_AMPERSAND=72]="AMBIGUOUS_AMPERSAND"})(y||(y={}));const De={DATA:y.DATA,RCDATA:y.RCDATA,RAWTEXT:y.RAWTEXT,SCRIPT_DATA:y.SCRIPT_DATA,PLAINTEXT:y.PLAINTEXT,CDATA_SECTION:y.CDATA_SECTION};function Sp(e){return e>=T.DIGIT_0&&e<=T.DIGIT_9}function rn(e){return e>=T.LATIN_CAPITAL_A&&e<=T.LATIN_CAPITAL_Z}function wp(e){return e>=T.LATIN_SMALL_A&&e<=T.LATIN_SMALL_Z}function Xt(e){return wp(e)||rn(e)}function Cs(e){return Xt(e)||Sp(e)}function Wn(e){return e+32}function cc(e){return e===T.SPACE||e===T.LINE_FEED||e===T.TABULATION||e===T.FORM_FEED}function _s(e){return cc(e)||e===T.SOLIDUS||e===T.GREATER_THAN_SIGN}function Cp(e){return e===T.NULL?P.nullCharacterReference:e>1114111?P.characterReferenceOutsideUnicodeRange:uc(e)?P.surrogateCharacterReference:lc(e)?P.noncharacterCharacterReference:sc(e)||e===T.CARRIAGE_RETURN?P.controlCharacterReference:null}class _p{constructor(t,r){this.options=t,this.handler=r,this.paused=!1,this.inLoop=!1,this.inForeignNode=!1,this.lastStartTagName="",this.active=!1,this.state=y.DATA,this.returnState=y.DATA,this.entityStartPos=0,this.consumedAfterSnapshot=-1,this.currentCharacterToken=null,this.currentToken=null,this.currentAttr={name:"",value:""},this.preprocessor=new fp(r),this.currentLocation=this.getCurrentLocation(-1),this.entityDecoder=new yp(mp,(n,a)=>{this.preprocessor.pos=this.entityStartPos+a-1,this._flushCodePointConsumedAsCharacterReference(n)},r.onParseError?{missingSemicolonAfterCharacterReference:()=>{this._err(P.missingSemicolonAfterCharacterReference,1)},absenceOfDigitsInNumericCharacterReference:n=>{this._err(P.absenceOfDigitsInNumericCharacterReference,this.entityStartPos-this.preprocessor.pos+n)},validateNumericCharacterReference:n=>{const a=Cp(n);a&&this._err(a,1)}}:void 0)}_err(t,r=0){var n,a;(a=(n=this.handler).onParseError)===null||a===void 0||a.call(n,this.preprocessor.getError(t,r))}getCurrentLocation(t){return this.options.sourceCodeLocationInfo?{startLine:this.preprocessor.line,startCol:this.preprocessor.col-t,startOffset:this.preprocessor.offset-t,endLine:-1,endCol:-1,endOffset:-1}:null}_runParsingLoop(){if(!this.inLoop){for(this.inLoop=!0;this.active&&!this.paused;){this.consumedAfterSnapshot=0;const t=this._consume();this._ensureHibernation()||this._callState(t)}this.inLoop=!1}}pause(){this.paused=!0}resume(t){if(!this.paused)throw new Error("Parser was already resumed");this.paused=!1,!this.inLoop&&(this._runParsingLoop(),this.paused||t?.())}write(t,r,n){this.active=!0,this.preprocessor.write(t,r),this._runParsingLoop(),this.paused||n?.()}insertHtmlAtCurrentPos(t){this.active=!0,this.preprocessor.insertHtmlAtCurrentPos(t),this._runParsingLoop()}_ensureHibernation(){return this.preprocessor.endOfChunkHit?(this.preprocessor.retreat(this.consumedAfterSnapshot),this.consumedAfterSnapshot=0,this.active=!1,!0):!1}_consume(){return this.consumedAfterSnapshot++,this.preprocessor.advance()}_advanceBy(t){this.consumedAfterSnapshot+=t;for(let r=0;r0&&this._err(P.endTagWithAttributes),t.selfClosing&&this._err(P.endTagWithTrailingSolidus),this.handler.onEndTag(t)),this.preprocessor.dropParsedChunk()}emitCurrentComment(t){this.prepareToken(t),this.handler.onComment(t),this.preprocessor.dropParsedChunk()}emitCurrentDoctype(t){this.prepareToken(t),this.handler.onDoctype(t),this.preprocessor.dropParsedChunk()}_emitCurrentCharacterToken(t){if(this.currentCharacterToken){switch(t&&this.currentCharacterToken.location&&(this.currentCharacterToken.location.endLine=t.startLine,this.currentCharacterToken.location.endCol=t.startCol,this.currentCharacterToken.location.endOffset=t.startOffset),this.currentCharacterToken.type){case de.CHARACTER:{this.handler.onCharacter(this.currentCharacterToken);break}case de.NULL_CHARACTER:{this.handler.onNullCharacter(this.currentCharacterToken);break}case de.WHITESPACE_CHARACTER:{this.handler.onWhitespaceCharacter(this.currentCharacterToken);break}}this.currentCharacterToken=null}}_emitEOFToken(){const t=this.getCurrentLocation(0);t&&(t.endLine=t.startLine,t.endCol=t.startCol,t.endOffset=t.startOffset),this._emitCurrentCharacterToken(t),this.handler.onEof({type:de.EOF,location:t}),this.active=!1}_appendCharToCurrentCharacterToken(t,r){if(this.currentCharacterToken)if(this.currentCharacterToken.type===t){this.currentCharacterToken.chars+=r;return}else this.currentLocation=this.getCurrentLocation(0),this._emitCurrentCharacterToken(this.currentLocation),this.preprocessor.dropParsedChunk();this._createCharacterToken(t,r)}_emitCodePoint(t){const r=cc(t)?de.WHITESPACE_CHARACTER:t===T.NULL?de.NULL_CHARACTER:de.CHARACTER;this._appendCharToCurrentCharacterToken(r,String.fromCodePoint(t))}_emitChars(t){this._appendCharToCurrentCharacterToken(de.CHARACTER,t)}_startCharacterReference(){this.returnState=this.state,this.state=y.CHARACTER_REFERENCE,this.entityStartPos=this.preprocessor.pos,this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute()?Ft.Attribute:Ft.Legacy)}_isCharacterReferenceInAttribute(){return this.returnState===y.ATTRIBUTE_VALUE_DOUBLE_QUOTED||this.returnState===y.ATTRIBUTE_VALUE_SINGLE_QUOTED||this.returnState===y.ATTRIBUTE_VALUE_UNQUOTED}_flushCodePointConsumedAsCharacterReference(t){this._isCharacterReferenceInAttribute()?this.currentAttr.value+=String.fromCodePoint(t):this._emitCodePoint(t)}_callState(t){switch(this.state){case y.DATA:{this._stateData(t);break}case y.RCDATA:{this._stateRcdata(t);break}case y.RAWTEXT:{this._stateRawtext(t);break}case y.SCRIPT_DATA:{this._stateScriptData(t);break}case y.PLAINTEXT:{this._statePlaintext(t);break}case y.TAG_OPEN:{this._stateTagOpen(t);break}case y.END_TAG_OPEN:{this._stateEndTagOpen(t);break}case y.TAG_NAME:{this._stateTagName(t);break}case y.RCDATA_LESS_THAN_SIGN:{this._stateRcdataLessThanSign(t);break}case y.RCDATA_END_TAG_OPEN:{this._stateRcdataEndTagOpen(t);break}case y.RCDATA_END_TAG_NAME:{this._stateRcdataEndTagName(t);break}case y.RAWTEXT_LESS_THAN_SIGN:{this._stateRawtextLessThanSign(t);break}case y.RAWTEXT_END_TAG_OPEN:{this._stateRawtextEndTagOpen(t);break}case y.RAWTEXT_END_TAG_NAME:{this._stateRawtextEndTagName(t);break}case y.SCRIPT_DATA_LESS_THAN_SIGN:{this._stateScriptDataLessThanSign(t);break}case y.SCRIPT_DATA_END_TAG_OPEN:{this._stateScriptDataEndTagOpen(t);break}case y.SCRIPT_DATA_END_TAG_NAME:{this._stateScriptDataEndTagName(t);break}case y.SCRIPT_DATA_ESCAPE_START:{this._stateScriptDataEscapeStart(t);break}case y.SCRIPT_DATA_ESCAPE_START_DASH:{this._stateScriptDataEscapeStartDash(t);break}case y.SCRIPT_DATA_ESCAPED:{this._stateScriptDataEscaped(t);break}case y.SCRIPT_DATA_ESCAPED_DASH:{this._stateScriptDataEscapedDash(t);break}case y.SCRIPT_DATA_ESCAPED_DASH_DASH:{this._stateScriptDataEscapedDashDash(t);break}case y.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataEscapedLessThanSign(t);break}case y.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:{this._stateScriptDataEscapedEndTagOpen(t);break}case y.SCRIPT_DATA_ESCAPED_END_TAG_NAME:{this._stateScriptDataEscapedEndTagName(t);break}case y.SCRIPT_DATA_DOUBLE_ESCAPE_START:{this._stateScriptDataDoubleEscapeStart(t);break}case y.SCRIPT_DATA_DOUBLE_ESCAPED:{this._stateScriptDataDoubleEscaped(t);break}case y.SCRIPT_DATA_DOUBLE_ESCAPED_DASH:{this._stateScriptDataDoubleEscapedDash(t);break}case y.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH:{this._stateScriptDataDoubleEscapedDashDash(t);break}case y.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataDoubleEscapedLessThanSign(t);break}case y.SCRIPT_DATA_DOUBLE_ESCAPE_END:{this._stateScriptDataDoubleEscapeEnd(t);break}case y.BEFORE_ATTRIBUTE_NAME:{this._stateBeforeAttributeName(t);break}case y.ATTRIBUTE_NAME:{this._stateAttributeName(t);break}case y.AFTER_ATTRIBUTE_NAME:{this._stateAfterAttributeName(t);break}case y.BEFORE_ATTRIBUTE_VALUE:{this._stateBeforeAttributeValue(t);break}case y.ATTRIBUTE_VALUE_DOUBLE_QUOTED:{this._stateAttributeValueDoubleQuoted(t);break}case y.ATTRIBUTE_VALUE_SINGLE_QUOTED:{this._stateAttributeValueSingleQuoted(t);break}case y.ATTRIBUTE_VALUE_UNQUOTED:{this._stateAttributeValueUnquoted(t);break}case y.AFTER_ATTRIBUTE_VALUE_QUOTED:{this._stateAfterAttributeValueQuoted(t);break}case y.SELF_CLOSING_START_TAG:{this._stateSelfClosingStartTag(t);break}case y.BOGUS_COMMENT:{this._stateBogusComment(t);break}case y.MARKUP_DECLARATION_OPEN:{this._stateMarkupDeclarationOpen(t);break}case y.COMMENT_START:{this._stateCommentStart(t);break}case y.COMMENT_START_DASH:{this._stateCommentStartDash(t);break}case y.COMMENT:{this._stateComment(t);break}case y.COMMENT_LESS_THAN_SIGN:{this._stateCommentLessThanSign(t);break}case y.COMMENT_LESS_THAN_SIGN_BANG:{this._stateCommentLessThanSignBang(t);break}case y.COMMENT_LESS_THAN_SIGN_BANG_DASH:{this._stateCommentLessThanSignBangDash(t);break}case y.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH:{this._stateCommentLessThanSignBangDashDash(t);break}case y.COMMENT_END_DASH:{this._stateCommentEndDash(t);break}case y.COMMENT_END:{this._stateCommentEnd(t);break}case y.COMMENT_END_BANG:{this._stateCommentEndBang(t);break}case y.DOCTYPE:{this._stateDoctype(t);break}case y.BEFORE_DOCTYPE_NAME:{this._stateBeforeDoctypeName(t);break}case y.DOCTYPE_NAME:{this._stateDoctypeName(t);break}case y.AFTER_DOCTYPE_NAME:{this._stateAfterDoctypeName(t);break}case y.AFTER_DOCTYPE_PUBLIC_KEYWORD:{this._stateAfterDoctypePublicKeyword(t);break}case y.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateBeforeDoctypePublicIdentifier(t);break}case y.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypePublicIdentifierDoubleQuoted(t);break}case y.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypePublicIdentifierSingleQuoted(t);break}case y.AFTER_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateAfterDoctypePublicIdentifier(t);break}case y.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS:{this._stateBetweenDoctypePublicAndSystemIdentifiers(t);break}case y.AFTER_DOCTYPE_SYSTEM_KEYWORD:{this._stateAfterDoctypeSystemKeyword(t);break}case y.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateBeforeDoctypeSystemIdentifier(t);break}case y.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypeSystemIdentifierDoubleQuoted(t);break}case y.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypeSystemIdentifierSingleQuoted(t);break}case y.AFTER_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateAfterDoctypeSystemIdentifier(t);break}case y.BOGUS_DOCTYPE:{this._stateBogusDoctype(t);break}case y.CDATA_SECTION:{this._stateCdataSection(t);break}case y.CDATA_SECTION_BRACKET:{this._stateCdataSectionBracket(t);break}case y.CDATA_SECTION_END:{this._stateCdataSectionEnd(t);break}case y.CHARACTER_REFERENCE:{this._stateCharacterReference();break}case y.AMBIGUOUS_AMPERSAND:{this._stateAmbiguousAmpersand(t);break}default:throw new Error("Unknown state")}}_stateData(t){switch(t){case T.LESS_THAN_SIGN:{this.state=y.TAG_OPEN;break}case T.AMPERSAND:{this._startCharacterReference();break}case T.NULL:{this._err(P.unexpectedNullCharacter),this._emitCodePoint(t);break}case T.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t)}}_stateRcdata(t){switch(t){case T.AMPERSAND:{this._startCharacterReference();break}case T.LESS_THAN_SIGN:{this.state=y.RCDATA_LESS_THAN_SIGN;break}case T.NULL:{this._err(P.unexpectedNullCharacter),this._emitChars(Se);break}case T.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t)}}_stateRawtext(t){switch(t){case T.LESS_THAN_SIGN:{this.state=y.RAWTEXT_LESS_THAN_SIGN;break}case T.NULL:{this._err(P.unexpectedNullCharacter),this._emitChars(Se);break}case T.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t)}}_stateScriptData(t){switch(t){case T.LESS_THAN_SIGN:{this.state=y.SCRIPT_DATA_LESS_THAN_SIGN;break}case T.NULL:{this._err(P.unexpectedNullCharacter),this._emitChars(Se);break}case T.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t)}}_statePlaintext(t){switch(t){case T.NULL:{this._err(P.unexpectedNullCharacter),this._emitChars(Se);break}case T.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t)}}_stateTagOpen(t){if(Xt(t))this._createStartTagToken(),this.state=y.TAG_NAME,this._stateTagName(t);else switch(t){case T.EXCLAMATION_MARK:{this.state=y.MARKUP_DECLARATION_OPEN;break}case T.SOLIDUS:{this.state=y.END_TAG_OPEN;break}case T.QUESTION_MARK:{this._err(P.unexpectedQuestionMarkInsteadOfTagName),this._createCommentToken(1),this.state=y.BOGUS_COMMENT,this._stateBogusComment(t);break}case T.EOF:{this._err(P.eofBeforeTagName),this._emitChars("<"),this._emitEOFToken();break}default:this._err(P.invalidFirstCharacterOfTagName),this._emitChars("<"),this.state=y.DATA,this._stateData(t)}}_stateEndTagOpen(t){if(Xt(t))this._createEndTagToken(),this.state=y.TAG_NAME,this._stateTagName(t);else switch(t){case T.GREATER_THAN_SIGN:{this._err(P.missingEndTagName),this.state=y.DATA;break}case T.EOF:{this._err(P.eofBeforeTagName),this._emitChars("");break}case T.NULL:{this._err(P.unexpectedNullCharacter),this.state=y.SCRIPT_DATA_ESCAPED,this._emitChars(Se);break}case T.EOF:{this._err(P.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=y.SCRIPT_DATA_ESCAPED,this._emitCodePoint(t)}}_stateScriptDataEscapedLessThanSign(t){t===T.SOLIDUS?this.state=y.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:Xt(t)?(this._emitChars("<"),this.state=y.SCRIPT_DATA_DOUBLE_ESCAPE_START,this._stateScriptDataDoubleEscapeStart(t)):(this._emitChars("<"),this.state=y.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(t))}_stateScriptDataEscapedEndTagOpen(t){Xt(t)?(this.state=y.SCRIPT_DATA_ESCAPED_END_TAG_NAME,this._stateScriptDataEscapedEndTagName(t)):(this._emitChars("");break}case T.NULL:{this._err(P.unexpectedNullCharacter),this.state=y.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars(Se);break}case T.EOF:{this._err(P.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=y.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(t)}}_stateScriptDataDoubleEscapedLessThanSign(t){t===T.SOLIDUS?(this.state=y.SCRIPT_DATA_DOUBLE_ESCAPE_END,this._emitChars("/")):(this.state=y.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(t))}_stateScriptDataDoubleEscapeEnd(t){if(this.preprocessor.startsWith(et.SCRIPT,!1)&&_s(this.preprocessor.peek(et.SCRIPT.length))){this._emitCodePoint(t);for(let r=0;r0&&this._isInTemplate()&&this.tmplCount--,this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(t,!0)}replace(t,r){const n=this._indexOf(t);this.items[n]=r,n===this.stackTop&&(this.current=r)}insertAfter(t,r,n){const a=this._indexOf(t)+1;this.items.splice(a,0,r),this.tagIDs.splice(a,0,n),this.stackTop++,a===this.stackTop&&this._updateCurrentElement(),this.current&&this.currentTagId!==void 0&&this.handler.onItemPush(this.current,this.currentTagId,a===this.stackTop)}popUntilTagNamePopped(t){let r=this.stackTop+1;do r=this.tagIDs.lastIndexOf(t,r-1);while(r>0&&this.treeAdapter.getNamespaceURI(this.items[r])!==H.HTML);this.shortenToLength(Math.max(r,0))}shortenToLength(t){for(;this.stackTop>=t;){const r=this.current;this.tmplCount>0&&this._isInTemplate()&&(this.tmplCount-=1),this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(r,this.stackTop=0;n--)if(t.has(this.tagIDs[n])&&this.treeAdapter.getNamespaceURI(this.items[n])===r)return n;return-1}clearBackTo(t,r){const n=this._indexOfTagNames(t,r);this.shortenToLength(n+1)}clearBackToTableContext(){this.clearBackTo(Lp,H.HTML)}clearBackToTableBodyContext(){this.clearBackTo(Op,H.HTML)}clearBackToTableRowContext(){this.clearBackTo(Dp,H.HTML)}remove(t){const r=this._indexOf(t);r>=0&&(r===this.stackTop?this.pop():(this.items.splice(r,1),this.tagIDs.splice(r,1),this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(t,!1)))}tryPeekProperlyNestedBodyElement(){return this.stackTop>=1&&this.tagIDs[1]===o.BODY?this.items[1]:null}contains(t){return this._indexOf(t)>-1}getCommonAncestor(t){const r=this._indexOf(t)-1;return r>=0?this.items[r]:null}isRootHtmlElementCurrent(){return this.stackTop===0&&this.tagIDs[0]===o.HTML}hasInDynamicScope(t,r){for(let n=this.stackTop;n>=0;n--){const a=this.tagIDs[n];switch(this.treeAdapter.getNamespaceURI(this.items[n])){case H.HTML:{if(a===t)return!0;if(r.has(a))return!1;break}case H.SVG:{if(Ds.has(a))return!1;break}case H.MATHML:{if(Ns.has(a))return!1;break}}}return!0}hasInScope(t){return this.hasInDynamicScope(t,s0)}hasInListItemScope(t){return this.hasInDynamicScope(t,Ip)}hasInButtonScope(t){return this.hasInDynamicScope(t,Np)}hasNumberedHeaderInScope(){for(let t=this.stackTop;t>=0;t--){const r=this.tagIDs[t];switch(this.treeAdapter.getNamespaceURI(this.items[t])){case H.HTML:{if(Qa.has(r))return!0;if(s0.has(r))return!1;break}case H.SVG:{if(Ds.has(r))return!1;break}case H.MATHML:{if(Ns.has(r))return!1;break}}}return!0}hasInTableScope(t){for(let r=this.stackTop;r>=0;r--)if(this.treeAdapter.getNamespaceURI(this.items[r])===H.HTML)switch(this.tagIDs[r]){case t:return!0;case o.TABLE:case o.HTML:return!1}return!0}hasTableBodyContextInTableScope(){for(let t=this.stackTop;t>=0;t--)if(this.treeAdapter.getNamespaceURI(this.items[t])===H.HTML)switch(this.tagIDs[t]){case o.TBODY:case o.THEAD:case o.TFOOT:return!0;case o.TABLE:case o.HTML:return!1}return!0}hasInSelectScope(t){for(let r=this.stackTop;r>=0;r--)if(this.treeAdapter.getNamespaceURI(this.items[r])===H.HTML)switch(this.tagIDs[r]){case t:return!0;case o.OPTION:case o.OPTGROUP:break;default:return!1}return!0}generateImpliedEndTags(){for(;this.currentTagId!==void 0&&hc.has(this.currentTagId);)this.pop()}generateImpliedEndTagsThoroughly(){for(;this.currentTagId!==void 0&&Is.has(this.currentTagId);)this.pop()}generateImpliedEndTagsWithExclusion(t){for(;this.currentTagId!==void 0&&this.currentTagId!==t&&Is.has(this.currentTagId);)this.pop()}}const ga=3;var St;(function(e){e[e.Marker=0]="Marker",e[e.Element=1]="Element"})(St||(St={}));const Os={type:St.Marker};class Pp{constructor(t){this.treeAdapter=t,this.entries=[],this.bookmark=null}_getNoahArkConditionCandidates(t,r){const n=[],a=r.length,i=this.treeAdapter.getTagName(t),u=this.treeAdapter.getNamespaceURI(t);for(let s=0;s[u.name,u.value]));let i=0;for(let u=0;ua.get(l.name)===l.value)&&(i+=1,i>=ga&&this.entries.splice(s.idx,1))}}insertMarker(){this.entries.unshift(Os)}pushElement(t,r){this._ensureNoahArkCondition(t),this.entries.unshift({type:St.Element,element:t,token:r})}insertElementAfterBookmark(t,r){const n=this.entries.indexOf(this.bookmark);this.entries.splice(n,0,{type:St.Element,element:t,token:r})}removeEntry(t){const r=this.entries.indexOf(t);r!==-1&&this.entries.splice(r,1)}clearToLastMarker(){const t=this.entries.indexOf(Os);t===-1?this.entries.length=0:this.entries.splice(0,t+1)}getElementEntryInScopeWithTagName(t){const r=this.entries.find(n=>n.type===St.Marker||this.treeAdapter.getTagName(n.element)===t);return r&&r.type===St.Element?r:null}getElementEntry(t){return this.entries.find(r=>r.type===St.Element&&r.element===t)}}const $t={createDocument(){return{nodeName:"#document",mode:pt.NO_QUIRKS,childNodes:[]}},createDocumentFragment(){return{nodeName:"#document-fragment",childNodes:[]}},createElement(e,t,r){return{nodeName:e,tagName:e,attrs:r,namespaceURI:t,childNodes:[],parentNode:null}},createCommentNode(e){return{nodeName:"#comment",data:e,parentNode:null}},createTextNode(e){return{nodeName:"#text",value:e,parentNode:null}},appendChild(e,t){e.childNodes.push(t),t.parentNode=e},insertBefore(e,t,r){const n=e.childNodes.indexOf(r);e.childNodes.splice(n,0,t),t.parentNode=e},setTemplateContent(e,t){e.content=t},getTemplateContent(e){return e.content},setDocumentType(e,t,r,n){const a=e.childNodes.find(i=>i.nodeName==="#documentType");if(a)a.name=t,a.publicId=r,a.systemId=n;else{const i={nodeName:"#documentType",name:t,publicId:r,systemId:n,parentNode:null};$t.appendChild(e,i)}},setDocumentMode(e,t){e.mode=t},getDocumentMode(e){return e.mode},detachNode(e){if(e.parentNode){const t=e.parentNode.childNodes.indexOf(e);e.parentNode.childNodes.splice(t,1),e.parentNode=null}},insertText(e,t){if(e.childNodes.length>0){const r=e.childNodes[e.childNodes.length-1];if($t.isTextNode(r)){r.value+=t;return}}$t.appendChild(e,$t.createTextNode(t))},insertTextBefore(e,t,r){const n=e.childNodes[e.childNodes.indexOf(r)-1];n&&$t.isTextNode(n)?n.value+=t:$t.insertBefore(e,$t.createTextNode(t),r)},adoptAttributes(e,t){const r=new Set(e.attrs.map(n=>n.name));for(let n=0;ne.startsWith(r))}function qp(e){return e.name===dc&&e.publicId===null&&(e.systemId===null||e.systemId===Bp)}function Yp(e){if(e.name!==dc)return pt.QUIRKS;const{systemId:t}=e;if(t&&t.toLowerCase()===Fp)return pt.QUIRKS;let{publicId:r}=e;if(r!==null){if(r=r.toLowerCase(),zp.has(r))return pt.QUIRKS;let n=t===null?Hp:fc;if(Ls(r,n))return pt.QUIRKS;if(n=t===null?mc:Up,Ls(r,n))return pt.LIMITED_QUIRKS}return pt.NO_QUIRKS}const Rs={TEXT_HTML:"text/html",APPLICATION_XML:"application/xhtml+xml"},Gp="definitionurl",Vp="definitionURL",jp=new Map(["attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map(e=>[e.toLowerCase(),e])),Wp=new Map([["xlink:actuate",{prefix:"xlink",name:"actuate",namespace:H.XLINK}],["xlink:arcrole",{prefix:"xlink",name:"arcrole",namespace:H.XLINK}],["xlink:href",{prefix:"xlink",name:"href",namespace:H.XLINK}],["xlink:role",{prefix:"xlink",name:"role",namespace:H.XLINK}],["xlink:show",{prefix:"xlink",name:"show",namespace:H.XLINK}],["xlink:title",{prefix:"xlink",name:"title",namespace:H.XLINK}],["xlink:type",{prefix:"xlink",name:"type",namespace:H.XLINK}],["xml:lang",{prefix:"xml",name:"lang",namespace:H.XML}],["xml:space",{prefix:"xml",name:"space",namespace:H.XML}],["xmlns",{prefix:"",name:"xmlns",namespace:H.XMLNS}],["xmlns:xlink",{prefix:"xmlns",name:"xlink",namespace:H.XMLNS}]]),Xp=new Map(["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","textPath"].map(e=>[e.toLowerCase(),e])),$p=new Set([o.B,o.BIG,o.BLOCKQUOTE,o.BODY,o.BR,o.CENTER,o.CODE,o.DD,o.DIV,o.DL,o.DT,o.EM,o.EMBED,o.H1,o.H2,o.H3,o.H4,o.H5,o.H6,o.HEAD,o.HR,o.I,o.IMG,o.LI,o.LISTING,o.MENU,o.META,o.NOBR,o.OL,o.P,o.PRE,o.RUBY,o.S,o.SMALL,o.SPAN,o.STRONG,o.STRIKE,o.SUB,o.SUP,o.TABLE,o.TT,o.U,o.UL,o.VAR]);function Qp(e){const t=e.tagID;return t===o.FONT&&e.attrs.some(({name:n})=>n===mr.COLOR||n===mr.SIZE||n===mr.FACE)||$p.has(t)}function pc(e){for(let t=0;t0&&this._setContextModes(t,r)}onItemPop(t,r){var n,a;if(this.options.sourceCodeLocationInfo&&this._setEndLocation(t,this.currentToken),(a=(n=this.treeAdapter).onItemPop)===null||a===void 0||a.call(n,t,this.openElements.current),r){let i,u;this.openElements.stackTop===0&&this.fragmentContext?(i=this.fragmentContext,u=this.fragmentContextID):{current:i,currentTagId:u}=this.openElements,this._setContextModes(i,u)}}_setContextModes(t,r){const n=t===this.document||t&&this.treeAdapter.getNamespaceURI(t)===H.HTML;this.currentNotInHTML=!n,this.tokenizer.inForeignNode=!n&&t!==void 0&&r!==void 0&&!this._isIntegrationPoint(r,t)}_switchToTextParsing(t,r){this._insertElement(t,H.HTML),this.tokenizer.state=r,this.originalInsertionMode=this.insertionMode,this.insertionMode=k.TEXT}switchToPlaintextParsing(){this.insertionMode=k.TEXT,this.originalInsertionMode=k.IN_BODY,this.tokenizer.state=De.PLAINTEXT}_getAdjustedCurrentElement(){return this.openElements.stackTop===0&&this.fragmentContext?this.fragmentContext:this.openElements.current}_findFormInFragmentContext(){let t=this.fragmentContext;for(;t;){if(this.treeAdapter.getTagName(t)===O.FORM){this.formElement=t;break}t=this.treeAdapter.getParentNode(t)}}_initTokenizerForFragmentParsing(){if(!(!this.fragmentContext||this.treeAdapter.getNamespaceURI(this.fragmentContext)!==H.HTML))switch(this.fragmentContextID){case o.TITLE:case o.TEXTAREA:{this.tokenizer.state=De.RCDATA;break}case o.STYLE:case o.XMP:case o.IFRAME:case o.NOEMBED:case o.NOFRAMES:case o.NOSCRIPT:{this.tokenizer.state=De.RAWTEXT;break}case o.SCRIPT:{this.tokenizer.state=De.SCRIPT_DATA;break}case o.PLAINTEXT:{this.tokenizer.state=De.PLAINTEXT;break}}}_setDocumentType(t){const r=t.name||"",n=t.publicId||"",a=t.systemId||"";if(this.treeAdapter.setDocumentType(this.document,r,n,a),t.location){const u=this.treeAdapter.getChildNodes(this.document).find(s=>this.treeAdapter.isDocumentTypeNode(s));u&&this.treeAdapter.setNodeSourceCodeLocation(u,t.location)}}_attachElementToTree(t,r){if(this.options.sourceCodeLocationInfo){const n=r&&{...r,startTag:r};this.treeAdapter.setNodeSourceCodeLocation(t,n)}if(this._shouldFosterParentOnInsertion())this._fosterParentElement(t);else{const n=this.openElements.currentTmplContentOrNode;this.treeAdapter.appendChild(n??this.document,t)}}_appendElement(t,r){const n=this.treeAdapter.createElement(t.tagName,r,t.attrs);this._attachElementToTree(n,t.location)}_insertElement(t,r){const n=this.treeAdapter.createElement(t.tagName,r,t.attrs);this._attachElementToTree(n,t.location),this.openElements.push(n,t.tagID)}_insertFakeElement(t,r){const n=this.treeAdapter.createElement(t,H.HTML,[]);this._attachElementToTree(n,null),this.openElements.push(n,r)}_insertTemplate(t){const r=this.treeAdapter.createElement(t.tagName,H.HTML,t.attrs),n=this.treeAdapter.createDocumentFragment();this.treeAdapter.setTemplateContent(r,n),this._attachElementToTree(r,t.location),this.openElements.push(r,t.tagID),this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(n,null)}_insertFakeRootElement(){const t=this.treeAdapter.createElement(O.HTML,H.HTML,[]);this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(t,null),this.treeAdapter.appendChild(this.openElements.current,t),this.openElements.push(t,o.HTML)}_appendCommentNode(t,r){const n=this.treeAdapter.createCommentNode(t.data);this.treeAdapter.appendChild(r,n),this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(n,t.location)}_insertCharacters(t){let r,n;if(this._shouldFosterParentOnInsertion()?({parent:r,beforeElement:n}=this._findFosterParentingLocation(),n?this.treeAdapter.insertTextBefore(r,t.chars,n):this.treeAdapter.insertText(r,t.chars)):(r=this.openElements.currentTmplContentOrNode,this.treeAdapter.insertText(r,t.chars)),!t.location)return;const a=this.treeAdapter.getChildNodes(r),i=n?a.lastIndexOf(n):a.length,u=a[i-1];if(this.treeAdapter.getNodeSourceCodeLocation(u)){const{endLine:l,endCol:c,endOffset:d}=t.location;this.treeAdapter.updateNodeSourceCodeLocation(u,{endLine:l,endCol:c,endOffset:d})}else this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(u,t.location)}_adoptNodes(t,r){for(let n=this.treeAdapter.getFirstChild(t);n;n=this.treeAdapter.getFirstChild(t))this.treeAdapter.detachNode(n),this.treeAdapter.appendChild(r,n)}_setEndLocation(t,r){if(this.treeAdapter.getNodeSourceCodeLocation(t)&&r.location){const n=r.location,a=this.treeAdapter.getTagName(t),i=r.type===de.END_TAG&&a===r.tagName?{endTag:{...n},endLine:n.endLine,endCol:n.endCol,endOffset:n.endOffset}:{endLine:n.startLine,endCol:n.startCol,endOffset:n.startOffset};this.treeAdapter.updateNodeSourceCodeLocation(t,i)}}shouldProcessStartTagTokenInForeignContent(t){if(!this.currentNotInHTML)return!1;let r,n;return this.openElements.stackTop===0&&this.fragmentContext?(r=this.fragmentContext,n=this.fragmentContextID):{current:r,currentTagId:n}=this.openElements,t.tagID===o.SVG&&this.treeAdapter.getTagName(r)===O.ANNOTATION_XML&&this.treeAdapter.getNamespaceURI(r)===H.MATHML?!1:this.tokenizer.inForeignNode||(t.tagID===o.MGLYPH||t.tagID===o.MALIGNMARK)&&n!==void 0&&!this._isIntegrationPoint(n,r,H.HTML)}_processToken(t){switch(t.type){case de.CHARACTER:{this.onCharacter(t);break}case de.NULL_CHARACTER:{this.onNullCharacter(t);break}case de.COMMENT:{this.onComment(t);break}case de.DOCTYPE:{this.onDoctype(t);break}case de.START_TAG:{this._processStartTag(t);break}case de.END_TAG:{this.onEndTag(t);break}case de.EOF:{this.onEof(t);break}case de.WHITESPACE_CHARACTER:{this.onWhitespaceCharacter(t);break}}}_isIntegrationPoint(t,r,n){const a=this.treeAdapter.getNamespaceURI(r),i=this.treeAdapter.getAttrList(r);return e5(t,a,i,n)}_reconstructActiveFormattingElements(){const t=this.activeFormattingElements.entries.length;if(t){const r=this.activeFormattingElements.entries.findIndex(a=>a.type===St.Marker||this.openElements.contains(a.element)),n=r===-1?t-1:r-1;for(let a=n;a>=0;a--){const i=this.activeFormattingElements.entries[a];this._insertElement(i.token,this.treeAdapter.getNamespaceURI(i.element)),i.element=this.openElements.current}}}_closeTableCell(){this.openElements.generateImpliedEndTags(),this.openElements.popUntilTableCellPopped(),this.activeFormattingElements.clearToLastMarker(),this.insertionMode=k.IN_ROW}_closePElement(){this.openElements.generateImpliedEndTagsWithExclusion(o.P),this.openElements.popUntilTagNamePopped(o.P)}_resetInsertionMode(){for(let t=this.openElements.stackTop;t>=0;t--)switch(t===0&&this.fragmentContext?this.fragmentContextID:this.openElements.tagIDs[t]){case o.TR:{this.insertionMode=k.IN_ROW;return}case o.TBODY:case o.THEAD:case o.TFOOT:{this.insertionMode=k.IN_TABLE_BODY;return}case o.CAPTION:{this.insertionMode=k.IN_CAPTION;return}case o.COLGROUP:{this.insertionMode=k.IN_COLUMN_GROUP;return}case o.TABLE:{this.insertionMode=k.IN_TABLE;return}case o.BODY:{this.insertionMode=k.IN_BODY;return}case o.FRAMESET:{this.insertionMode=k.IN_FRAMESET;return}case o.SELECT:{this._resetInsertionModeForSelect(t);return}case o.TEMPLATE:{this.insertionMode=this.tmplInsertionModeStack[0];return}case o.HTML:{this.insertionMode=this.headElement?k.AFTER_HEAD:k.BEFORE_HEAD;return}case o.TD:case o.TH:{if(t>0){this.insertionMode=k.IN_CELL;return}break}case o.HEAD:{if(t>0){this.insertionMode=k.IN_HEAD;return}break}}this.insertionMode=k.IN_BODY}_resetInsertionModeForSelect(t){if(t>0)for(let r=t-1;r>0;r--){const n=this.openElements.tagIDs[r];if(n===o.TEMPLATE)break;if(n===o.TABLE){this.insertionMode=k.IN_SELECT_IN_TABLE;return}}this.insertionMode=k.IN_SELECT}_isElementCausesFosterParenting(t){return bc.has(t)}_shouldFosterParentOnInsertion(){return this.fosterParentingEnabled&&this.openElements.currentTagId!==void 0&&this._isElementCausesFosterParenting(this.openElements.currentTagId)}_findFosterParentingLocation(){for(let t=this.openElements.stackTop;t>=0;t--){const r=this.openElements.items[t];switch(this.openElements.tagIDs[t]){case o.TEMPLATE:{if(this.treeAdapter.getNamespaceURI(r)===H.HTML)return{parent:this.treeAdapter.getTemplateContent(r),beforeElement:null};break}case o.TABLE:{const n=this.treeAdapter.getParentNode(r);return n?{parent:n,beforeElement:r}:{parent:this.openElements.items[t-1],beforeElement:null}}}}return{parent:this.openElements.items[0],beforeElement:null}}_fosterParentElement(t){const r=this._findFosterParentingLocation();r.beforeElement?this.treeAdapter.insertBefore(r.parent,t,r.beforeElement):this.treeAdapter.appendChild(r.parent,t)}_isSpecialElement(t,r){const n=this.treeAdapter.getNamespaceURI(t);return kp[n].has(r)}onCharacter(t){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){R7(this,t);return}switch(this.insertionMode){case k.INITIAL:{Zr(this,t);break}case k.BEFORE_HTML:{ln(this,t);break}case k.BEFORE_HEAD:{on(this,t);break}case k.IN_HEAD:{cn(this,t);break}case k.IN_HEAD_NO_SCRIPT:{hn(this,t);break}case k.AFTER_HEAD:{dn(this,t);break}case k.IN_BODY:case k.IN_CAPTION:case k.IN_CELL:case k.IN_TEMPLATE:{Tc(this,t);break}case k.TEXT:case k.IN_SELECT:case k.IN_SELECT_IN_TABLE:{this._insertCharacters(t);break}case k.IN_TABLE:case k.IN_TABLE_BODY:case k.IN_ROW:{ba(this,t);break}case k.IN_TABLE_TEXT:{Sc(this,t);break}case k.IN_COLUMN_GROUP:{l0(this,t);break}case k.AFTER_BODY:{o0(this,t);break}case k.AFTER_AFTER_BODY:{Jn(this,t);break}}}onNullCharacter(t){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){L7(this,t);return}switch(this.insertionMode){case k.INITIAL:{Zr(this,t);break}case k.BEFORE_HTML:{ln(this,t);break}case k.BEFORE_HEAD:{on(this,t);break}case k.IN_HEAD:{cn(this,t);break}case k.IN_HEAD_NO_SCRIPT:{hn(this,t);break}case k.AFTER_HEAD:{dn(this,t);break}case k.TEXT:{this._insertCharacters(t);break}case k.IN_TABLE:case k.IN_TABLE_BODY:case k.IN_ROW:{ba(this,t);break}case k.IN_COLUMN_GROUP:{l0(this,t);break}case k.AFTER_BODY:{o0(this,t);break}case k.AFTER_AFTER_BODY:{Jn(this,t);break}}}onComment(t){if(this.skipNextNewLine=!1,this.currentNotInHTML){Ka(this,t);return}switch(this.insertionMode){case k.INITIAL:case k.BEFORE_HTML:case k.BEFORE_HEAD:case k.IN_HEAD:case k.IN_HEAD_NO_SCRIPT:case k.AFTER_HEAD:case k.IN_BODY:case k.IN_TABLE:case k.IN_CAPTION:case k.IN_COLUMN_GROUP:case k.IN_TABLE_BODY:case k.IN_ROW:case k.IN_CELL:case k.IN_SELECT:case k.IN_SELECT_IN_TABLE:case k.IN_TEMPLATE:case k.IN_FRAMESET:case k.AFTER_FRAMESET:{Ka(this,t);break}case k.IN_TABLE_TEXT:{en(this,t);break}case k.AFTER_BODY:{h5(this,t);break}case k.AFTER_AFTER_BODY:case k.AFTER_AFTER_FRAMESET:{d5(this,t);break}}}onDoctype(t){switch(this.skipNextNewLine=!1,this.insertionMode){case k.INITIAL:{f5(this,t);break}case k.BEFORE_HEAD:case k.IN_HEAD:case k.IN_HEAD_NO_SCRIPT:case k.AFTER_HEAD:{this._err(t,P.misplacedDoctype);break}case k.IN_TABLE_TEXT:{en(this,t);break}}}onStartTag(t){this.skipNextNewLine=!1,this.currentToken=t,this._processStartTag(t),t.selfClosing&&!t.ackSelfClosing&&this._err(t,P.nonVoidHtmlElementStartTagWithTrailingSolidus)}_processStartTag(t){this.shouldProcessStartTagTokenInForeignContent(t)?M7(this,t):this._startTagOutsideForeignContent(t)}_startTagOutsideForeignContent(t){switch(this.insertionMode){case k.INITIAL:{Zr(this,t);break}case k.BEFORE_HTML:{m5(this,t);break}case k.BEFORE_HEAD:{g5(this,t);break}case k.IN_HEAD:{yt(this,t);break}case k.IN_HEAD_NO_SCRIPT:{T5(this,t);break}case k.AFTER_HEAD:{y5(this,t);break}case k.IN_BODY:{We(this,t);break}case k.IN_TABLE:{Rr(this,t);break}case k.IN_TABLE_TEXT:{en(this,t);break}case k.IN_CAPTION:{b7(this,t);break}case k.IN_COLUMN_GROUP:{Bi(this,t);break}case k.IN_TABLE_BODY:{O0(this,t);break}case k.IN_ROW:{L0(this,t);break}case k.IN_CELL:{x7(this,t);break}case k.IN_SELECT:{_c(this,t);break}case k.IN_SELECT_IN_TABLE:{v7(this,t);break}case k.IN_TEMPLATE:{k7(this,t);break}case k.AFTER_BODY:{w7(this,t);break}case k.IN_FRAMESET:{C7(this,t);break}case k.AFTER_FRAMESET:{I7(this,t);break}case k.AFTER_AFTER_BODY:{D7(this,t);break}case k.AFTER_AFTER_FRAMESET:{O7(this,t);break}}}onEndTag(t){this.skipNextNewLine=!1,this.currentToken=t,this.currentNotInHTML?P7(this,t):this._endTagOutsideForeignContent(t)}_endTagOutsideForeignContent(t){switch(this.insertionMode){case k.INITIAL:{Zr(this,t);break}case k.BEFORE_HTML:{p5(this,t);break}case k.BEFORE_HEAD:{b5(this,t);break}case k.IN_HEAD:{E5(this,t);break}case k.IN_HEAD_NO_SCRIPT:{x5(this,t);break}case k.AFTER_HEAD:{v5(this,t);break}case k.IN_BODY:{D0(this,t);break}case k.TEXT:{s7(this,t);break}case k.IN_TABLE:{En(this,t);break}case k.IN_TABLE_TEXT:{en(this,t);break}case k.IN_CAPTION:{E7(this,t);break}case k.IN_COLUMN_GROUP:{T7(this,t);break}case k.IN_TABLE_BODY:{Ja(this,t);break}case k.IN_ROW:{Cc(this,t);break}case k.IN_CELL:{y7(this,t);break}case k.IN_SELECT:{Ic(this,t);break}case k.IN_SELECT_IN_TABLE:{A7(this,t);break}case k.IN_TEMPLATE:{S7(this,t);break}case k.AFTER_BODY:{Dc(this,t);break}case k.IN_FRAMESET:{_7(this,t);break}case k.AFTER_FRAMESET:{N7(this,t);break}case k.AFTER_AFTER_BODY:{Jn(this,t);break}}}onEof(t){switch(this.insertionMode){case k.INITIAL:{Zr(this,t);break}case k.BEFORE_HTML:{ln(this,t);break}case k.BEFORE_HEAD:{on(this,t);break}case k.IN_HEAD:{cn(this,t);break}case k.IN_HEAD_NO_SCRIPT:{hn(this,t);break}case k.AFTER_HEAD:{dn(this,t);break}case k.IN_BODY:case k.IN_TABLE:case k.IN_CAPTION:case k.IN_COLUMN_GROUP:case k.IN_TABLE_BODY:case k.IN_ROW:case k.IN_CELL:case k.IN_SELECT:case k.IN_SELECT_IN_TABLE:{Ac(this,t);break}case k.TEXT:{l7(this,t);break}case k.IN_TABLE_TEXT:{en(this,t);break}case k.IN_TEMPLATE:{Nc(this,t);break}case k.AFTER_BODY:case k.IN_FRAMESET:case k.AFTER_FRAMESET:case k.AFTER_AFTER_BODY:case k.AFTER_AFTER_FRAMESET:{Pi(this,t);break}}}onWhitespaceCharacter(t){if(this.skipNextNewLine&&(this.skipNextNewLine=!1,t.chars.charCodeAt(0)===T.LINE_FEED)){if(t.chars.length===1)return;t.chars=t.chars.substr(1)}if(this.tokenizer.inForeignNode){this._insertCharacters(t);return}switch(this.insertionMode){case k.IN_HEAD:case k.IN_HEAD_NO_SCRIPT:case k.AFTER_HEAD:case k.TEXT:case k.IN_COLUMN_GROUP:case k.IN_SELECT:case k.IN_SELECT_IN_TABLE:case k.IN_FRAMESET:case k.AFTER_FRAMESET:{this._insertCharacters(t);break}case k.IN_BODY:case k.IN_CAPTION:case k.IN_CELL:case k.IN_TEMPLATE:case k.AFTER_BODY:case k.AFTER_AFTER_BODY:case k.AFTER_AFTER_FRAMESET:{Ec(this,t);break}case k.IN_TABLE:case k.IN_TABLE_BODY:case k.IN_ROW:{ba(this,t);break}case k.IN_TABLE_TEXT:{kc(this,t);break}}}}function i5(e,t){let r=e.activeFormattingElements.getElementEntryInScopeWithTagName(t.tagName);return r?e.openElements.contains(r.element)?e.openElements.hasInScope(t.tagID)||(r=null):(e.activeFormattingElements.removeEntry(r),r=null):vc(e,t),r}function u5(e,t){let r=null,n=e.openElements.stackTop;for(;n>=0;n--){const a=e.openElements.items[n];if(a===t.element)break;e._isSpecialElement(a,e.openElements.tagIDs[n])&&(r=a)}return r||(e.openElements.shortenToLength(Math.max(n,0)),e.activeFormattingElements.removeEntry(t)),r}function s5(e,t,r){let n=t,a=e.openElements.getCommonAncestor(t);for(let i=0,u=a;u!==r;i++,u=a){a=e.openElements.getCommonAncestor(u);const s=e.activeFormattingElements.getElementEntry(u),l=s&&i>=n5;!s||l?(l&&e.activeFormattingElements.removeEntry(s),e.openElements.remove(u)):(u=l5(e,s),n===t&&(e.activeFormattingElements.bookmark=s),e.treeAdapter.detachNode(n),e.treeAdapter.appendChild(u,n),n=u)}return n}function l5(e,t){const r=e.treeAdapter.getNamespaceURI(t.element),n=e.treeAdapter.createElement(t.token.tagName,r,t.token.attrs);return e.openElements.replace(t.element,n),t.element=n,n}function o5(e,t,r){const n=e.treeAdapter.getTagName(t),a=qr(n);if(e._isElementCausesFosterParenting(a))e._fosterParentElement(r);else{const i=e.treeAdapter.getNamespaceURI(t);a===o.TEMPLATE&&i===H.HTML&&(t=e.treeAdapter.getTemplateContent(t)),e.treeAdapter.appendChild(t,r)}}function c5(e,t,r){const n=e.treeAdapter.getNamespaceURI(r.element),{token:a}=r,i=e.treeAdapter.createElement(a.tagName,n,a.attrs);e._adoptNodes(t,i),e.treeAdapter.appendChild(t,i),e.activeFormattingElements.insertElementAfterBookmark(i,a),e.activeFormattingElements.removeEntry(r),e.openElements.remove(r.element),e.openElements.insertAfter(t,i,a.tagID)}function Mi(e,t){for(let r=0;r=r;n--)e._setEndLocation(e.openElements.items[n],t);if(!e.fragmentContext&&e.openElements.stackTop>=0){const n=e.openElements.items[0],a=e.treeAdapter.getNodeSourceCodeLocation(n);if(a&&!a.endTag&&(e._setEndLocation(n,t),e.openElements.stackTop>=1)){const i=e.openElements.items[1],u=e.treeAdapter.getNodeSourceCodeLocation(i);u&&!u.endTag&&e._setEndLocation(i,t)}}}}function f5(e,t){e._setDocumentType(t);const r=t.forceQuirks?pt.QUIRKS:Yp(t);qp(t)||e._err(t,P.nonConformingDoctype),e.treeAdapter.setDocumentMode(e.document,r),e.insertionMode=k.BEFORE_HTML}function Zr(e,t){e._err(t,P.missingDoctype,!0),e.treeAdapter.setDocumentMode(e.document,pt.QUIRKS),e.insertionMode=k.BEFORE_HTML,e._processToken(t)}function m5(e,t){t.tagID===o.HTML?(e._insertElement(t,H.HTML),e.insertionMode=k.BEFORE_HEAD):ln(e,t)}function p5(e,t){const r=t.tagID;(r===o.HTML||r===o.HEAD||r===o.BODY||r===o.BR)&&ln(e,t)}function ln(e,t){e._insertFakeRootElement(),e.insertionMode=k.BEFORE_HEAD,e._processToken(t)}function g5(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.HEAD:{e._insertElement(t,H.HTML),e.headElement=e.openElements.current,e.insertionMode=k.IN_HEAD;break}default:on(e,t)}}function b5(e,t){const r=t.tagID;r===o.HEAD||r===o.BODY||r===o.HTML||r===o.BR?on(e,t):e._err(t,P.endTagWithoutMatchingOpenElement)}function on(e,t){e._insertFakeElement(O.HEAD,o.HEAD),e.headElement=e.openElements.current,e.insertionMode=k.IN_HEAD,e._processToken(t)}function yt(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.BASE:case o.BASEFONT:case o.BGSOUND:case o.LINK:case o.META:{e._appendElement(t,H.HTML),t.ackSelfClosing=!0;break}case o.TITLE:{e._switchToTextParsing(t,De.RCDATA);break}case o.NOSCRIPT:{e.options.scriptingEnabled?e._switchToTextParsing(t,De.RAWTEXT):(e._insertElement(t,H.HTML),e.insertionMode=k.IN_HEAD_NO_SCRIPT);break}case o.NOFRAMES:case o.STYLE:{e._switchToTextParsing(t,De.RAWTEXT);break}case o.SCRIPT:{e._switchToTextParsing(t,De.SCRIPT_DATA);break}case o.TEMPLATE:{e._insertTemplate(t),e.activeFormattingElements.insertMarker(),e.framesetOk=!1,e.insertionMode=k.IN_TEMPLATE,e.tmplInsertionModeStack.unshift(k.IN_TEMPLATE);break}case o.HEAD:{e._err(t,P.misplacedStartTagForHeadElement);break}default:cn(e,t)}}function E5(e,t){switch(t.tagID){case o.HEAD:{e.openElements.pop(),e.insertionMode=k.AFTER_HEAD;break}case o.BODY:case o.BR:case o.HTML:{cn(e,t);break}case o.TEMPLATE:{Tr(e,t);break}default:e._err(t,P.endTagWithoutMatchingOpenElement)}}function Tr(e,t){e.openElements.tmplCount>0?(e.openElements.generateImpliedEndTagsThoroughly(),e.openElements.currentTagId!==o.TEMPLATE&&e._err(t,P.closingOfElementWithOpenChildElements),e.openElements.popUntilTagNamePopped(o.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e.tmplInsertionModeStack.shift(),e._resetInsertionMode()):e._err(t,P.endTagWithoutMatchingOpenElement)}function cn(e,t){e.openElements.pop(),e.insertionMode=k.AFTER_HEAD,e._processToken(t)}function T5(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.BASEFONT:case o.BGSOUND:case o.HEAD:case o.LINK:case o.META:case o.NOFRAMES:case o.STYLE:{yt(e,t);break}case o.NOSCRIPT:{e._err(t,P.nestedNoscriptInHead);break}default:hn(e,t)}}function x5(e,t){switch(t.tagID){case o.NOSCRIPT:{e.openElements.pop(),e.insertionMode=k.IN_HEAD;break}case o.BR:{hn(e,t);break}default:e._err(t,P.endTagWithoutMatchingOpenElement)}}function hn(e,t){const r=t.type===de.EOF?P.openElementsLeftAfterEof:P.disallowedContentInNoscriptInHead;e._err(t,r),e.openElements.pop(),e.insertionMode=k.IN_HEAD,e._processToken(t)}function y5(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.BODY:{e._insertElement(t,H.HTML),e.framesetOk=!1,e.insertionMode=k.IN_BODY;break}case o.FRAMESET:{e._insertElement(t,H.HTML),e.insertionMode=k.IN_FRAMESET;break}case o.BASE:case o.BASEFONT:case o.BGSOUND:case o.LINK:case o.META:case o.NOFRAMES:case o.SCRIPT:case o.STYLE:case o.TEMPLATE:case o.TITLE:{e._err(t,P.abandonedHeadElementChild),e.openElements.push(e.headElement,o.HEAD),yt(e,t),e.openElements.remove(e.headElement);break}case o.HEAD:{e._err(t,P.misplacedStartTagForHeadElement);break}default:dn(e,t)}}function v5(e,t){switch(t.tagID){case o.BODY:case o.HTML:case o.BR:{dn(e,t);break}case o.TEMPLATE:{Tr(e,t);break}default:e._err(t,P.endTagWithoutMatchingOpenElement)}}function dn(e,t){e._insertFakeElement(O.BODY,o.BODY),e.insertionMode=k.IN_BODY,N0(e,t)}function N0(e,t){switch(t.type){case de.CHARACTER:{Tc(e,t);break}case de.WHITESPACE_CHARACTER:{Ec(e,t);break}case de.COMMENT:{Ka(e,t);break}case de.START_TAG:{We(e,t);break}case de.END_TAG:{D0(e,t);break}case de.EOF:{Ac(e,t);break}}}function Ec(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t)}function Tc(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t),e.framesetOk=!1}function A5(e,t){e.openElements.tmplCount===0&&e.treeAdapter.adoptAttributes(e.openElements.items[0],t.attrs)}function k5(e,t){const r=e.openElements.tryPeekProperlyNestedBodyElement();r&&e.openElements.tmplCount===0&&(e.framesetOk=!1,e.treeAdapter.adoptAttributes(r,t.attrs))}function S5(e,t){const r=e.openElements.tryPeekProperlyNestedBodyElement();e.framesetOk&&r&&(e.treeAdapter.detachNode(r),e.openElements.popAllUpToHtmlElement(),e._insertElement(t,H.HTML),e.insertionMode=k.IN_FRAMESET)}function w5(e,t){e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._insertElement(t,H.HTML)}function C5(e,t){e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e.openElements.currentTagId!==void 0&&Qa.has(e.openElements.currentTagId)&&e.openElements.pop(),e._insertElement(t,H.HTML)}function _5(e,t){e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._insertElement(t,H.HTML),e.skipNextNewLine=!0,e.framesetOk=!1}function I5(e,t){const r=e.openElements.tmplCount>0;(!e.formElement||r)&&(e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._insertElement(t,H.HTML),r||(e.formElement=e.openElements.current))}function N5(e,t){e.framesetOk=!1;const r=t.tagID;for(let n=e.openElements.stackTop;n>=0;n--){const a=e.openElements.tagIDs[n];if(r===o.LI&&a===o.LI||(r===o.DD||r===o.DT)&&(a===o.DD||a===o.DT)){e.openElements.generateImpliedEndTagsWithExclusion(a),e.openElements.popUntilTagNamePopped(a);break}if(a!==o.ADDRESS&&a!==o.DIV&&a!==o.P&&e._isSpecialElement(e.openElements.items[n],a))break}e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._insertElement(t,H.HTML)}function D5(e,t){e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._insertElement(t,H.HTML),e.tokenizer.state=De.PLAINTEXT}function O5(e,t){e.openElements.hasInScope(o.BUTTON)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(o.BUTTON)),e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML),e.framesetOk=!1}function L5(e,t){const r=e.activeFormattingElements.getElementEntryInScopeWithTagName(O.A);r&&(Mi(e,t),e.openElements.remove(r.element),e.activeFormattingElements.removeEntry(r)),e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}function R5(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}function M5(e,t){e._reconstructActiveFormattingElements(),e.openElements.hasInScope(o.NOBR)&&(Mi(e,t),e._reconstructActiveFormattingElements()),e._insertElement(t,H.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}function P5(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML),e.activeFormattingElements.insertMarker(),e.framesetOk=!1}function B5(e,t){e.treeAdapter.getDocumentMode(e.document)!==pt.QUIRKS&&e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._insertElement(t,H.HTML),e.framesetOk=!1,e.insertionMode=k.IN_TABLE}function xc(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,H.HTML),e.framesetOk=!1,t.ackSelfClosing=!0}function yc(e){const t=oc(e,mr.TYPE);return t!=null&&t.toLowerCase()===t5}function F5(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,H.HTML),yc(t)||(e.framesetOk=!1),t.ackSelfClosing=!0}function H5(e,t){e._appendElement(t,H.HTML),t.ackSelfClosing=!0}function z5(e,t){e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._appendElement(t,H.HTML),e.framesetOk=!1,t.ackSelfClosing=!0}function U5(e,t){t.tagName=O.IMG,t.tagID=o.IMG,xc(e,t)}function q5(e,t){e._insertElement(t,H.HTML),e.skipNextNewLine=!0,e.tokenizer.state=De.RCDATA,e.originalInsertionMode=e.insertionMode,e.framesetOk=!1,e.insertionMode=k.TEXT}function Y5(e,t){e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._reconstructActiveFormattingElements(),e.framesetOk=!1,e._switchToTextParsing(t,De.RAWTEXT)}function G5(e,t){e.framesetOk=!1,e._switchToTextParsing(t,De.RAWTEXT)}function Bs(e,t){e._switchToTextParsing(t,De.RAWTEXT)}function V5(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML),e.framesetOk=!1,e.insertionMode=e.insertionMode===k.IN_TABLE||e.insertionMode===k.IN_CAPTION||e.insertionMode===k.IN_TABLE_BODY||e.insertionMode===k.IN_ROW||e.insertionMode===k.IN_CELL?k.IN_SELECT_IN_TABLE:k.IN_SELECT}function j5(e,t){e.openElements.currentTagId===o.OPTION&&e.openElements.pop(),e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML)}function W5(e,t){e.openElements.hasInScope(o.RUBY)&&e.openElements.generateImpliedEndTags(),e._insertElement(t,H.HTML)}function X5(e,t){e.openElements.hasInScope(o.RUBY)&&e.openElements.generateImpliedEndTagsWithExclusion(o.RTC),e._insertElement(t,H.HTML)}function $5(e,t){e._reconstructActiveFormattingElements(),pc(t),Ri(t),t.selfClosing?e._appendElement(t,H.MATHML):e._insertElement(t,H.MATHML),t.ackSelfClosing=!0}function Q5(e,t){e._reconstructActiveFormattingElements(),gc(t),Ri(t),t.selfClosing?e._appendElement(t,H.SVG):e._insertElement(t,H.SVG),t.ackSelfClosing=!0}function Fs(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML)}function We(e,t){switch(t.tagID){case o.I:case o.S:case o.B:case o.U:case o.EM:case o.TT:case o.BIG:case o.CODE:case o.FONT:case o.SMALL:case o.STRIKE:case o.STRONG:{R5(e,t);break}case o.A:{L5(e,t);break}case o.H1:case o.H2:case o.H3:case o.H4:case o.H5:case o.H6:{C5(e,t);break}case o.P:case o.DL:case o.OL:case o.UL:case o.DIV:case o.DIR:case o.NAV:case o.MAIN:case o.MENU:case o.ASIDE:case o.CENTER:case o.FIGURE:case o.FOOTER:case o.HEADER:case o.HGROUP:case o.DIALOG:case o.DETAILS:case o.ADDRESS:case o.ARTICLE:case o.SEARCH:case o.SECTION:case o.SUMMARY:case o.FIELDSET:case o.BLOCKQUOTE:case o.FIGCAPTION:{w5(e,t);break}case o.LI:case o.DD:case o.DT:{N5(e,t);break}case o.BR:case o.IMG:case o.WBR:case o.AREA:case o.EMBED:case o.KEYGEN:{xc(e,t);break}case o.HR:{z5(e,t);break}case o.RB:case o.RTC:{W5(e,t);break}case o.RT:case o.RP:{X5(e,t);break}case o.PRE:case o.LISTING:{_5(e,t);break}case o.XMP:{Y5(e,t);break}case o.SVG:{Q5(e,t);break}case o.HTML:{A5(e,t);break}case o.BASE:case o.LINK:case o.META:case o.STYLE:case o.TITLE:case o.SCRIPT:case o.BGSOUND:case o.BASEFONT:case o.TEMPLATE:{yt(e,t);break}case o.BODY:{k5(e,t);break}case o.FORM:{I5(e,t);break}case o.NOBR:{M5(e,t);break}case o.MATH:{$5(e,t);break}case o.TABLE:{B5(e,t);break}case o.INPUT:{F5(e,t);break}case o.PARAM:case o.TRACK:case o.SOURCE:{H5(e,t);break}case o.IMAGE:{U5(e,t);break}case o.BUTTON:{O5(e,t);break}case o.APPLET:case o.OBJECT:case o.MARQUEE:{P5(e,t);break}case o.IFRAME:{G5(e,t);break}case o.SELECT:{V5(e,t);break}case o.OPTION:case o.OPTGROUP:{j5(e,t);break}case o.NOEMBED:case o.NOFRAMES:{Bs(e,t);break}case o.FRAMESET:{S5(e,t);break}case o.TEXTAREA:{q5(e,t);break}case o.NOSCRIPT:{e.options.scriptingEnabled?Bs(e,t):Fs(e,t);break}case o.PLAINTEXT:{D5(e,t);break}case o.COL:case o.TH:case o.TD:case o.TR:case o.HEAD:case o.FRAME:case o.TBODY:case o.TFOOT:case o.THEAD:case o.CAPTION:case o.COLGROUP:break;default:Fs(e,t)}}function K5(e,t){if(e.openElements.hasInScope(o.BODY)&&(e.insertionMode=k.AFTER_BODY,e.options.sourceCodeLocationInfo)){const r=e.openElements.tryPeekProperlyNestedBodyElement();r&&e._setEndLocation(r,t)}}function J5(e,t){e.openElements.hasInScope(o.BODY)&&(e.insertionMode=k.AFTER_BODY,Dc(e,t))}function Z5(e,t){const r=t.tagID;e.openElements.hasInScope(r)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(r))}function e7(e){const t=e.openElements.tmplCount>0,{formElement:r}=e;t||(e.formElement=null),(r||t)&&e.openElements.hasInScope(o.FORM)&&(e.openElements.generateImpliedEndTags(),t?e.openElements.popUntilTagNamePopped(o.FORM):r&&e.openElements.remove(r))}function t7(e){e.openElements.hasInButtonScope(o.P)||e._insertFakeElement(O.P,o.P),e._closePElement()}function r7(e){e.openElements.hasInListItemScope(o.LI)&&(e.openElements.generateImpliedEndTagsWithExclusion(o.LI),e.openElements.popUntilTagNamePopped(o.LI))}function n7(e,t){const r=t.tagID;e.openElements.hasInScope(r)&&(e.openElements.generateImpliedEndTagsWithExclusion(r),e.openElements.popUntilTagNamePopped(r))}function a7(e){e.openElements.hasNumberedHeaderInScope()&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilNumberedHeaderPopped())}function i7(e,t){const r=t.tagID;e.openElements.hasInScope(r)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(r),e.activeFormattingElements.clearToLastMarker())}function u7(e){e._reconstructActiveFormattingElements(),e._insertFakeElement(O.BR,o.BR),e.openElements.pop(),e.framesetOk=!1}function vc(e,t){const r=t.tagName,n=t.tagID;for(let a=e.openElements.stackTop;a>0;a--){const i=e.openElements.items[a],u=e.openElements.tagIDs[a];if(n===u&&(n!==o.UNKNOWN||e.treeAdapter.getTagName(i)===r)){e.openElements.generateImpliedEndTagsWithExclusion(n),e.openElements.stackTop>=a&&e.openElements.shortenToLength(a);break}if(e._isSpecialElement(i,u))break}}function D0(e,t){switch(t.tagID){case o.A:case o.B:case o.I:case o.S:case o.U:case o.EM:case o.TT:case o.BIG:case o.CODE:case o.FONT:case o.NOBR:case o.SMALL:case o.STRIKE:case o.STRONG:{Mi(e,t);break}case o.P:{t7(e);break}case o.DL:case o.UL:case o.OL:case o.DIR:case o.DIV:case o.NAV:case o.PRE:case o.MAIN:case o.MENU:case o.ASIDE:case o.BUTTON:case o.CENTER:case o.FIGURE:case o.FOOTER:case o.HEADER:case o.HGROUP:case o.DIALOG:case o.ADDRESS:case o.ARTICLE:case o.DETAILS:case o.SEARCH:case o.SECTION:case o.SUMMARY:case o.LISTING:case o.FIELDSET:case o.BLOCKQUOTE:case o.FIGCAPTION:{Z5(e,t);break}case o.LI:{r7(e);break}case o.DD:case o.DT:{n7(e,t);break}case o.H1:case o.H2:case o.H3:case o.H4:case o.H5:case o.H6:{a7(e);break}case o.BR:{u7(e);break}case o.BODY:{K5(e,t);break}case o.HTML:{J5(e,t);break}case o.FORM:{e7(e);break}case o.APPLET:case o.OBJECT:case o.MARQUEE:{i7(e,t);break}case o.TEMPLATE:{Tr(e,t);break}default:vc(e,t)}}function Ac(e,t){e.tmplInsertionModeStack.length>0?Nc(e,t):Pi(e,t)}function s7(e,t){var r;t.tagID===o.SCRIPT&&((r=e.scriptHandler)===null||r===void 0||r.call(e,e.openElements.current)),e.openElements.pop(),e.insertionMode=e.originalInsertionMode}function l7(e,t){e._err(t,P.eofInElementThatCanContainOnlyText),e.openElements.pop(),e.insertionMode=e.originalInsertionMode,e.onEof(t)}function ba(e,t){if(e.openElements.currentTagId!==void 0&&bc.has(e.openElements.currentTagId))switch(e.pendingCharacterTokens.length=0,e.hasNonWhitespacePendingCharacterToken=!1,e.originalInsertionMode=e.insertionMode,e.insertionMode=k.IN_TABLE_TEXT,t.type){case de.CHARACTER:{Sc(e,t);break}case de.WHITESPACE_CHARACTER:{kc(e,t);break}}else wn(e,t)}function o7(e,t){e.openElements.clearBackToTableContext(),e.activeFormattingElements.insertMarker(),e._insertElement(t,H.HTML),e.insertionMode=k.IN_CAPTION}function c7(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,H.HTML),e.insertionMode=k.IN_COLUMN_GROUP}function h7(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(O.COLGROUP,o.COLGROUP),e.insertionMode=k.IN_COLUMN_GROUP,Bi(e,t)}function d7(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,H.HTML),e.insertionMode=k.IN_TABLE_BODY}function f7(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(O.TBODY,o.TBODY),e.insertionMode=k.IN_TABLE_BODY,O0(e,t)}function m7(e,t){e.openElements.hasInTableScope(o.TABLE)&&(e.openElements.popUntilTagNamePopped(o.TABLE),e._resetInsertionMode(),e._processStartTag(t))}function p7(e,t){yc(t)?e._appendElement(t,H.HTML):wn(e,t),t.ackSelfClosing=!0}function g7(e,t){!e.formElement&&e.openElements.tmplCount===0&&(e._insertElement(t,H.HTML),e.formElement=e.openElements.current,e.openElements.pop())}function Rr(e,t){switch(t.tagID){case o.TD:case o.TH:case o.TR:{f7(e,t);break}case o.STYLE:case o.SCRIPT:case o.TEMPLATE:{yt(e,t);break}case o.COL:{h7(e,t);break}case o.FORM:{g7(e,t);break}case o.TABLE:{m7(e,t);break}case o.TBODY:case o.TFOOT:case o.THEAD:{d7(e,t);break}case o.INPUT:{p7(e,t);break}case o.CAPTION:{o7(e,t);break}case o.COLGROUP:{c7(e,t);break}default:wn(e,t)}}function En(e,t){switch(t.tagID){case o.TABLE:{e.openElements.hasInTableScope(o.TABLE)&&(e.openElements.popUntilTagNamePopped(o.TABLE),e._resetInsertionMode());break}case o.TEMPLATE:{Tr(e,t);break}case o.BODY:case o.CAPTION:case o.COL:case o.COLGROUP:case o.HTML:case o.TBODY:case o.TD:case o.TFOOT:case o.TH:case o.THEAD:case o.TR:break;default:wn(e,t)}}function wn(e,t){const r=e.fosterParentingEnabled;e.fosterParentingEnabled=!0,N0(e,t),e.fosterParentingEnabled=r}function kc(e,t){e.pendingCharacterTokens.push(t)}function Sc(e,t){e.pendingCharacterTokens.push(t),e.hasNonWhitespacePendingCharacterToken=!0}function en(e,t){let r=0;if(e.hasNonWhitespacePendingCharacterToken)for(;r0&&e.openElements.currentTagId===o.OPTION&&e.openElements.tagIDs[e.openElements.stackTop-1]===o.OPTGROUP&&e.openElements.pop(),e.openElements.currentTagId===o.OPTGROUP&&e.openElements.pop();break}case o.OPTION:{e.openElements.currentTagId===o.OPTION&&e.openElements.pop();break}case o.SELECT:{e.openElements.hasInSelectScope(o.SELECT)&&(e.openElements.popUntilTagNamePopped(o.SELECT),e._resetInsertionMode());break}case o.TEMPLATE:{Tr(e,t);break}}}function v7(e,t){const r=t.tagID;r===o.CAPTION||r===o.TABLE||r===o.TBODY||r===o.TFOOT||r===o.THEAD||r===o.TR||r===o.TD||r===o.TH?(e.openElements.popUntilTagNamePopped(o.SELECT),e._resetInsertionMode(),e._processStartTag(t)):_c(e,t)}function A7(e,t){const r=t.tagID;r===o.CAPTION||r===o.TABLE||r===o.TBODY||r===o.TFOOT||r===o.THEAD||r===o.TR||r===o.TD||r===o.TH?e.openElements.hasInTableScope(r)&&(e.openElements.popUntilTagNamePopped(o.SELECT),e._resetInsertionMode(),e.onEndTag(t)):Ic(e,t)}function k7(e,t){switch(t.tagID){case o.BASE:case o.BASEFONT:case o.BGSOUND:case o.LINK:case o.META:case o.NOFRAMES:case o.SCRIPT:case o.STYLE:case o.TEMPLATE:case o.TITLE:{yt(e,t);break}case o.CAPTION:case o.COLGROUP:case o.TBODY:case o.TFOOT:case o.THEAD:{e.tmplInsertionModeStack[0]=k.IN_TABLE,e.insertionMode=k.IN_TABLE,Rr(e,t);break}case o.COL:{e.tmplInsertionModeStack[0]=k.IN_COLUMN_GROUP,e.insertionMode=k.IN_COLUMN_GROUP,Bi(e,t);break}case o.TR:{e.tmplInsertionModeStack[0]=k.IN_TABLE_BODY,e.insertionMode=k.IN_TABLE_BODY,O0(e,t);break}case o.TD:case o.TH:{e.tmplInsertionModeStack[0]=k.IN_ROW,e.insertionMode=k.IN_ROW,L0(e,t);break}default:e.tmplInsertionModeStack[0]=k.IN_BODY,e.insertionMode=k.IN_BODY,We(e,t)}}function S7(e,t){t.tagID===o.TEMPLATE&&Tr(e,t)}function Nc(e,t){e.openElements.tmplCount>0?(e.openElements.popUntilTagNamePopped(o.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e.tmplInsertionModeStack.shift(),e._resetInsertionMode(),e.onEof(t)):Pi(e,t)}function w7(e,t){t.tagID===o.HTML?We(e,t):o0(e,t)}function Dc(e,t){var r;if(t.tagID===o.HTML){if(e.fragmentContext||(e.insertionMode=k.AFTER_AFTER_BODY),e.options.sourceCodeLocationInfo&&e.openElements.tagIDs[0]===o.HTML){e._setEndLocation(e.openElements.items[0],t);const n=e.openElements.items[1];n&&!(!((r=e.treeAdapter.getNodeSourceCodeLocation(n))===null||r===void 0)&&r.endTag)&&e._setEndLocation(n,t)}}else o0(e,t)}function o0(e,t){e.insertionMode=k.IN_BODY,N0(e,t)}function C7(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.FRAMESET:{e._insertElement(t,H.HTML);break}case o.FRAME:{e._appendElement(t,H.HTML),t.ackSelfClosing=!0;break}case o.NOFRAMES:{yt(e,t);break}}}function _7(e,t){t.tagID===o.FRAMESET&&!e.openElements.isRootHtmlElementCurrent()&&(e.openElements.pop(),!e.fragmentContext&&e.openElements.currentTagId!==o.FRAMESET&&(e.insertionMode=k.AFTER_FRAMESET))}function I7(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.NOFRAMES:{yt(e,t);break}}}function N7(e,t){t.tagID===o.HTML&&(e.insertionMode=k.AFTER_AFTER_FRAMESET)}function D7(e,t){t.tagID===o.HTML?We(e,t):Jn(e,t)}function Jn(e,t){e.insertionMode=k.IN_BODY,N0(e,t)}function O7(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.NOFRAMES:{yt(e,t);break}}}function L7(e,t){t.chars=Se,e._insertCharacters(t)}function R7(e,t){e._insertCharacters(t),e.framesetOk=!1}function Oc(e){for(;e.treeAdapter.getNamespaceURI(e.openElements.current)!==H.HTML&&e.openElements.currentTagId!==void 0&&!e._isIntegrationPoint(e.openElements.currentTagId,e.openElements.current);)e.openElements.pop()}function M7(e,t){if(Qp(t))Oc(e),e._startTagOutsideForeignContent(t);else{const r=e._getAdjustedCurrentElement(),n=e.treeAdapter.getNamespaceURI(r);n===H.MATHML?pc(t):n===H.SVG&&(Kp(t),gc(t)),Ri(t),t.selfClosing?e._appendElement(t,n):e._insertElement(t,n),t.ackSelfClosing=!0}}function P7(e,t){if(t.tagID===o.P||t.tagID===o.BR){Oc(e),e._endTagOutsideForeignContent(t);return}for(let r=e.openElements.stackTop;r>0;r--){const n=e.openElements.items[r];if(e.treeAdapter.getNamespaceURI(n)===H.HTML){e._endTagOutsideForeignContent(t);break}const a=e.treeAdapter.getTagName(n);if(a.toLowerCase()===t.tagName){t.tagName=a,e.openElements.shortenToLength(r);break}}}O.AREA,O.BASE,O.BASEFONT,O.BGSOUND,O.BR,O.COL,O.EMBED,O.FRAME,O.HR,O.IMG,O.INPUT,O.KEYGEN,O.LINK,O.META,O.PARAM,O.SOURCE,O.TRACK,O.WBR;const B7=/<(\/?)(iframe|noembed|noframes|plaintext|script|style|textarea|title|xmp)(?=[\t\n\f\r />])/gi,F7=new Set(["mdxFlowExpression","mdxJsxFlowElement","mdxJsxTextElement","mdxTextExpression","mdxjsEsm"]),Hs={sourceCodeLocationInfo:!0,scriptingEnabled:!1};function Lc(e,t){const r=X7(e),n=_l("type",{handlers:{root:H7,element:z7,text:U7,comment:Mc,doctype:q7,raw:G7},unknown:V7}),a={parser:r?new Ps(Hs):Ps.getFragmentParser(void 0,Hs),handle(s){n(s,a)},stitches:!1,options:t||{}};n(e,a),Yr(a,_t());const i=r?a.parser.document:a.parser.getFragment(),u=$6(i,{file:a.options.file});return a.stitches&&b0(u,"comment",function(s,l,c){const d=s;if(d.value.stitch&&c&&l!==void 0){const f=c.children;return f[l]=d.value.stitch,l}}),u.type==="root"&&u.children.length===1&&u.children[0].type===e.type?u.children[0]:u}function Rc(e,t){let r=-1;if(e)for(;++r4&&(t.parser.tokenizer.state=0);const r={type:de.CHARACTER,chars:e.value,location:Cn(e)};Yr(t,_t(e)),t.parser.currentToken=r,t.parser._processToken(t.parser.currentToken)}function q7(e,t){const r={type:de.DOCTYPE,name:"html",forceQuirks:!1,publicId:"",systemId:"",location:Cn(e)};Yr(t,_t(e)),t.parser.currentToken=r,t.parser._processToken(t.parser.currentToken)}function Y7(e,t){t.stitches=!0;const r=$7(e);if("children"in e&&"children"in r){const n=Lc({type:"root",children:e.children},t.options);r.children=n.children}Mc({type:"comment",value:{stitch:r}},t)}function Mc(e,t){const r=e.value,n={type:de.COMMENT,data:r,location:Cn(e)};Yr(t,_t(e)),t.parser.currentToken=n,t.parser._processToken(t.parser.currentToken)}function G7(e,t){if(t.parser.tokenizer.preprocessor.html="",t.parser.tokenizer.preprocessor.pos=-1,t.parser.tokenizer.preprocessor.lastGapPos=-2,t.parser.tokenizer.preprocessor.gapStack=[],t.parser.tokenizer.preprocessor.skipNextNewLine=!1,t.parser.tokenizer.preprocessor.lastChunkWritten=!1,t.parser.tokenizer.preprocessor.endOfChunkHit=!1,t.parser.tokenizer.preprocessor.isEol=!1,Pc(t,_t(e)),t.parser.tokenizer.write(t.options.tagfilter?e.value.replace(B7,"<$1$2"):e.value,!1),t.parser.tokenizer._runParsingLoop(),t.parser.tokenizer.state===72||t.parser.tokenizer.state===78){t.parser.tokenizer.preprocessor.lastChunkWritten=!0;const r=t.parser.tokenizer._consume();t.parser.tokenizer._callState(r)}}function V7(e,t){const r=e;if(t.options.passThrough&&t.options.passThrough.includes(r.type))Y7(r,t);else{let n="";throw F7.has(r.type)&&(n=". It looks like you are using MDX nodes with `hast-util-raw` (or `rehype-raw`). If you use this because you are using remark or rehype plugins that inject `'html'` nodes, then please raise an issue with that plugin, as its a bad and slow idea. If you use this because you are using markdown syntax, then you have to configure this utility (or plugin) to pass through these nodes (see `passThrough` in docs), but you can also migrate to use the MDX syntax"),new Error("Cannot compile `"+r.type+"` node"+n)}}function Yr(e,t){Pc(e,t);const r=e.parser.tokenizer.currentCharacterToken;r&&r.location&&(r.location.endLine=e.parser.tokenizer.preprocessor.line,r.location.endCol=e.parser.tokenizer.preprocessor.col+1,r.location.endOffset=e.parser.tokenizer.preprocessor.offset+1,e.parser.currentToken=r,e.parser._processToken(e.parser.currentToken)),e.parser.tokenizer.paused=!1,e.parser.tokenizer.inLoop=!1,e.parser.tokenizer.active=!1,e.parser.tokenizer.returnState=De.DATA,e.parser.tokenizer.charRefCode=-1,e.parser.tokenizer.consumedAfterSnapshot=-1,e.parser.tokenizer.currentLocation=null,e.parser.tokenizer.currentCharacterToken=null,e.parser.tokenizer.currentToken=null,e.parser.tokenizer.currentAttr={name:"",value:""}}function Pc(e,t){if(t&&t.offset!==void 0){const r={startLine:t.line,startCol:t.column,startOffset:t.offset,endLine:-1,endCol:-1,endOffset:-1};e.parser.tokenizer.preprocessor.lineStartPos=-t.column+1,e.parser.tokenizer.preprocessor.droppedBufferSize=t.offset,e.parser.tokenizer.preprocessor.line=t.line,e.parser.tokenizer.currentLocation=r}}function j7(e,t){const r=e.tagName.toLowerCase();if(t.parser.tokenizer.state===De.PLAINTEXT)return;Yr(t,_t(e));const n=t.parser.openElements.current;let a="namespaceURI"in n?n.namespaceURI:Ct.html;a===Ct.html&&r==="svg"&&(a=Ct.svg);const i=ep({...e,children:[]},{space:a===Ct.svg?"svg":"html"}),u={type:de.START_TAG,tagName:r,tagID:qr(r),selfClosing:!1,ackSelfClosing:!1,attrs:"attrs"in i?i.attrs:[],location:Cn(e)};t.parser.currentToken=u,t.parser._processToken(t.parser.currentToken),t.parser.tokenizer.lastStartTagName=r}function W7(e,t){const r=e.tagName.toLowerCase();if(!t.parser.tokenizer.inForeignNode&&lp.includes(r)||t.parser.tokenizer.state===De.PLAINTEXT)return;Yr(t,d0(e));const n={type:de.END_TAG,tagName:r,tagID:qr(r),selfClosing:!1,ackSelfClosing:!1,attrs:[],location:Cn(e)};t.parser.currentToken=n,t.parser._processToken(t.parser.currentToken),r===t.parser.tokenizer.lastStartTagName&&(t.parser.tokenizer.state===De.RCDATA||t.parser.tokenizer.state===De.RAWTEXT||t.parser.tokenizer.state===De.SCRIPT_DATA)&&(t.parser.tokenizer.state=De.DATA)}function X7(e){const t=e.type==="root"?e.children[0]:e;return!!(t&&(t.type==="doctype"||t.type==="element"&&t.tagName.toLowerCase()==="html"))}function Cn(e){const t=_t(e)||{line:void 0,column:void 0,offset:void 0},r=d0(e)||{line:void 0,column:void 0,offset:void 0};return{startLine:t.line,startCol:t.column,startOffset:t.offset,endLine:r.line,endCol:r.column,endOffset:r.offset}}function $7(e){return"children"in e?Nr({...e,children:[]}):Nr(e)}function Q7(e){return function(t,r){return Lc(t,{...e,file:r})}}function c0(e){return typeof e=="string"?e:typeof e=="number"?String(e):e?Array.isArray(e)?e.map(c0).join(""):typeof e=="object"&&"props"in e?c0(e.props.children):"":""}function K7(e){return e.replace(/\$[^$]*\$/g,"").replace(/\\[a-zA-Z]+\{[^}]*\}/g,"").replace(/[\\{}]/g,"").toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")}function Sr(e){return function({children:r,...n}){const a=c0(r),i=n.id||K7(a);return pe.jsx(e,{...n,id:i,children:r})}}const J7={h1:Sr("h1"),h2:Sr("h2"),h3:Sr("h3"),h4:Sr("h4"),h5:Sr("h5"),h6:Sr("h6")};function a8(){const{id:e}=Bc(),t=zc.find(d=>d.id===e),[r,n]=Xr.useState(""),[a,i]=Xr.useState(null),[u,s]=Xr.useState(null);Xr.useEffect(()=>{if(!t)return;const d=new AbortController,f=t.filename;return fetch(`/blog/${f}`,{signal:d.signal}).then(g=>{if(!g.ok)throw new Error("Failed to load post");return g.text()}).then(g=>{const p=g.replace(/^\s*#[^#\n]*\r?\n/,"");n(p),i(f),s(null)}).catch(g=>{g instanceof DOMException&&g.name==="AbortError"||(console.error(g),i(f),s(f))}),()=>d.abort()},[t]);const l=!!(t&&a!==t.filename),c=!!(t&&u===t.filename);return Xr.useEffect(()=>{function d(f){const p=f.target.closest("a");if(!p)return;const x=p.getAttribute("href");if(!x||!x.startsWith("#"))return;f.preventDefault();const S=document.getElementById(x.slice(1));S&&(S.scrollIntoView({behavior:"smooth",block:"start"}),window.history.pushState(null,"",x))}return document.addEventListener("click",d),()=>document.removeEventListener("click",d)},[]),t?pe.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[pe.jsx(Fc,{title:`${t.title} - QECTOR Blog`,description:t.description}),pe.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[pe.jsx("div",{className:"absolute top-0 right-0 w-[800px] h-[800px] bg-cyan-900/10 blur-[120px] rounded-full pointer-events-none -translate-y-1/2 translate-x-1/3"}),pe.jsx("div",{className:"absolute bottom-0 left-0 w-[600px] h-[600px] bg-slate-800/20 blur-[100px] rounded-full pointer-events-none translate-y-1/3 -translate-x-1/3"}),pe.jsxs("div",{className:"max-w-4xl mx-auto px-6 relative z-10",children:[pe.jsxs(P0,{to:"/blog",className:"inline-flex items-center min-h-[44px] text-slate-400 hover:text-cyan-300 mb-12 transition-colors duration-300 font-medium tracking-wide",children:[pe.jsx(Uc,{size:18,className:"mr-2"}),"Back to All Articles"]}),pe.jsxs("header",{className:"mb-16 border-b border-slate-800/60 pb-10",children:[pe.jsxs("div",{className:"flex flex-wrap items-center text-cyan-300 mb-6 gap-4",children:[pe.jsxs("span",{className:"flex items-center text-sm font-semibold tracking-widest uppercase",children:[pe.jsx(qc,{size:16,className:"mr-2"}),t.date]}),pe.jsx("span",{className:"rounded-full border border-slate-700 px-3 py-1 text-xs font-semibold tracking-wider text-slate-400",children:t.category}),pe.jsxs("span",{className:"text-sm text-slate-400",children:["By ",pe.jsx(P0,{to:"/guillaume-lessard",className:"hover:text-cyan-300",children:"Guillaume Lessard"}),r?` · ${Math.max(1,Math.round(r.split(/\s+/).length/220))} min read`:""]})]}),pe.jsx("h1",{className:"text-4xl md:text-5xl lg:text-6xl font-extrabold tracking-tight mb-8 leading-tight text-white",children:t.title}),pe.jsx("p",{className:"text-xl text-slate-300 leading-relaxed max-w-3xl",children:t.description})]}),pe.jsx("div",{className:"bg-slate-900/40 backdrop-blur-md border border-slate-800/80 rounded-3xl p-8 md:p-12 shadow-2xl",children:l?pe.jsxs("div",{className:"flex flex-col items-center justify-center py-20 text-slate-400",children:[pe.jsx(Yc,{size:48,className:"animate-spin text-cyan-400 mb-4"}),pe.jsx("p",{className:"animate-pulse",children:"Loading article..."})]}):c?pe.jsx("div",{className:"py-20 text-center text-red-400",children:pe.jsx("p",{children:"Failed to load the article. Please try again later."})}):pe.jsx("article",{className:"prose prose-invert prose-cyan max-w-none prose-headings:font-bold prose-headings:tracking-tight prose-a:text-cyan-300 prose-a:no-underline hover:prose-a:underline prose-code:text-cyan-200 prose-code:bg-cyan-950/30 prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded-md prose-pre:bg-slate-950/80 prose-pre:border prose-pre:border-slate-800 prose-img:rounded-xl prose-img:border prose-img:border-slate-800",children:pe.jsx(Qf,{remarkPlugins:[l4,g6],rehypePlugins:[j6,Q7],components:{...J7,table:d=>{const{node:f,...g}=d;return pe.jsx("div",{className:"overflow-x-auto",children:pe.jsx("table",{...g})})},pre:d=>{const{children:f}=d,g=Fi.Children.toArray(f)[0];let p="",x="text";if(Fi.isValidElement(g)){const S=g.props,D=/language-([\w-]+)/.exec(S.className||"");D&&(x=D[1]),p=c0(S.children).replace(/\n$/,"")}return pe.jsx(Hc,{code:p,language:x,className:"not-prose"})},img:d=>{const f=d.width!=null&&d.height!=null;return pe.jsx("img",{...d,className:f?"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto":"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto aspect-video object-cover",loading:"lazy"})}},children:r})})})]})]})]}):pe.jsx("div",{className:"min-h-screen bg-slate-950 text-slate-50 flex items-center justify-center",children:pe.jsxs("div",{className:"text-center",children:[pe.jsx("h1",{className:"text-4xl font-bold mb-4",children:"Post Not Found"}),pe.jsx(P0,{to:"/blog",className:"text-cyan-300 hover:text-cyan-200",children:"Return to Blog"})]})})}export{a8 as default}; diff --git a/assets/BlogPost-ySdCElmM.js b/assets/BlogPost-ySdCElmM.js deleted file mode 100644 index fc5d91da..00000000 --- a/assets/BlogPost-ySdCElmM.js +++ /dev/null @@ -1,292 +0,0 @@ -import{g as zs,j as pe,r as Xr,R as Fi}from"./vendor-react-BiHfrq0e.js";import{b as Bc,L as P0,S as Fc,C as Hc}from"./index-PdoH5kLF.js";import{b as zc}from"./blogData-OjR2ZtNr.js";import{m as Uc,k as qc,n as Yc}from"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";function Hi(e){const t=[],r=String(e||"");let n=r.indexOf(","),a=0,i=!1;for(;!i;){n===-1&&(n=r.length,i=!0);const u=r.slice(a,n).trim();(u||!i)&&t.push(u),a=n+1,n=r.indexOf(",",a)}return t}function Us(e,t){const r={};return(e[e.length-1]===""?[...e,""]:e).join((r.padRight?" ":"")+","+(r.padLeft===!1?"":" ")).trim()}const Gc=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,Vc=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,jc={};function zi(e,t){return(jc.jsx?Vc:Gc).test(e)}const Wc=/[ \t\n\f\r]/g;function Xc(e){return typeof e=="object"?e.type==="text"?Ui(e.value):!1:Ui(e)}function Ui(e){return e.replace(Wc,"")===""}class Tn{constructor(t,r,n){this.normal=r,this.property=t,n&&(this.space=n)}}Tn.prototype.normal={};Tn.prototype.property={};Tn.prototype.space=void 0;function qs(e,t){const r={},n={};for(const a of e)Object.assign(r,a.property),Object.assign(n,a.normal);return new Tn(r,n,t)}function fn(e){return e.toLowerCase()}class nt{constructor(t,r){this.attribute=r,this.property=t}}nt.prototype.attribute="";nt.prototype.booleanish=!1;nt.prototype.boolean=!1;nt.prototype.commaOrSpaceSeparated=!1;nt.prototype.commaSeparated=!1;nt.prototype.defined=!1;nt.prototype.mustUseProperty=!1;nt.prototype.number=!1;nt.prototype.overloadedBoolean=!1;nt.prototype.property="";nt.prototype.spaceSeparated=!1;nt.prototype.space=void 0;let $c=0;const le=gr(),Le=gr(),Ea=gr(),q=gr(),ye=gr(),fr=gr(),st=gr();function gr(){return 2**++$c}const Ta=Object.freeze(Object.defineProperty({__proto__:null,boolean:le,booleanish:Le,commaOrSpaceSeparated:st,commaSeparated:fr,number:q,overloadedBoolean:Ea,spaceSeparated:ye},Symbol.toStringTag,{value:"Module"})),B0=Object.keys(Ta);class Za extends nt{constructor(t,r,n,a){let i=-1;if(super(t,r),qi(this,"space",a),typeof n=="number")for(;++i4&&r.slice(0,4)==="data"&&e1.test(t)){if(t.charAt(4)==="-"){const i=t.slice(5).replace(Yi,r1);n="data"+i.charAt(0).toUpperCase()+i.slice(1)}else{const i=t.slice(4);if(!Yi.test(i)){let u=i.replace(Zc,t1);u.charAt(0)!=="-"&&(u="-"+u),t="data"+u}}a=Za}return new a(n,t)}function t1(e){return"-"+e.toLowerCase()}function r1(e){return e.charAt(1).toUpperCase()}const xn=qs([Ys,Qc,js,Ws,Xs],"html"),rr=qs([Ys,Kc,js,Ws,Xs],"svg");function Gi(e){const t=String(e||"").trim();return t?t.split(/[ \t\n\r\f]+/g):[]}function $s(e){return e.join(" ").trim()}var Ar={},F0,Vi;function n1(){if(Vi)return F0;Vi=1;var e=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,t=/\n/g,r=/^\s*/,n=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,a=/^:\s*/,i=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,u=/^[;\s]*/,s=/^\s+|\s+$/g,l=` -`,c="/",d="*",f="",g="comment",p="declaration";function x(D,_){if(typeof D!="string")throw new TypeError("First argument must be a string");if(!D)return[];_=_||{};var N=1,M=1;function W(ne){var X=ne.match(t);X&&(N+=X.length);var me=ne.lastIndexOf(l);M=~me?ne.length-me:M+ne.length}function j(){var ne={line:N,column:M};return function(X){return X.position=new L(ne),K(),X}}function L(ne){this.start=ne,this.end={line:N,column:M},this.source=_.source}L.prototype.content=D;function ee(ne){var X=new Error(_.source+":"+N+":"+M+": "+ne);if(X.reason=ne,X.filename=_.source,X.line=N,X.column=M,X.source=D,!_.silent)throw X}function re(ne){var X=ne.exec(D);if(X){var me=X[0];return W(me),D=D.slice(me.length),X}}function K(){re(r)}function R(ne){var X;for(ne=ne||[];X=J();)X!==!1&&ne.push(X);return ne}function J(){var ne=j();if(!(c!=D.charAt(0)||d!=D.charAt(1))){for(var X=2;f!=D.charAt(X)&&(d!=D.charAt(X)||c!=D.charAt(X+1));)++X;if(X+=2,f===D.charAt(X-1))return ee("End of comment missing");var me=D.slice(2,X-2);return M+=2,W(me),D=D.slice(X),M+=2,ne({type:g,comment:me})}}function Q(){var ne=j(),X=re(n);if(X){if(J(),!re(a))return ee("property missing ':'");var me=re(i),ke=ne({type:p,property:S(X[0].replace(e,f)),value:me?S(me[0].replace(e,f)):f});return re(u),ke}}function be(){var ne=[];R(ne);for(var X;X=Q();)X!==!1&&(ne.push(X),R(ne));return ne}return K(),be()}function S(D){return D?D.replace(s,f):f}return F0=x,F0}var ji;function a1(){if(ji)return Ar;ji=1;var e=Ar&&Ar.__importDefault||function(n){return n&&n.__esModule?n:{default:n}};Object.defineProperty(Ar,"__esModule",{value:!0}),Ar.default=r;const t=e(n1());function r(n,a){let i=null;if(!n||typeof n!="string")return i;const u=(0,t.default)(n),s=typeof a=="function";return u.forEach(l=>{if(l.type!=="declaration")return;const{property:c,value:d}=l;s?a(c,d,l):d&&(i=i||{},i[c]=d)}),i}return Ar}var $r={},Wi;function i1(){if(Wi)return $r;Wi=1,Object.defineProperty($r,"__esModule",{value:!0}),$r.camelCase=void 0;var e=/^--[a-zA-Z0-9_-]+$/,t=/-([a-z])/g,r=/^[^-]+$/,n=/^-(webkit|moz|ms|o|khtml)-/,a=/^-(ms)-/,i=function(c){return!c||r.test(c)||e.test(c)},u=function(c,d){return d.toUpperCase()},s=function(c,d){return"".concat(d,"-")},l=function(c,d){return d===void 0&&(d={}),i(c)?c:(c=c.toLowerCase(),d.reactCompat?c=c.replace(a,s):c=c.replace(n,s),c.replace(t,u))};return $r.camelCase=l,$r}var Qr,Xi;function u1(){if(Xi)return Qr;Xi=1;var e=Qr&&Qr.__importDefault||function(a){return a&&a.__esModule?a:{default:a}},t=e(a1()),r=i1();function n(a,i){var u={};return!a||typeof a!="string"||(0,t.default)(a,function(s,l){s&&l&&(u[(0,r.camelCase)(s,i)]=l)}),u}return n.default=n,Qr=n,Qr}var s1=u1();const l1=zs(s1),d0=Qs("end"),_t=Qs("start");function Qs(e){return t;function t(r){const n=r&&r.position&&r.position[e]||{};if(typeof n.line=="number"&&n.line>0&&typeof n.column=="number"&&n.column>0)return{line:n.line,column:n.column,offset:typeof n.offset=="number"&&n.offset>-1?n.offset:void 0}}}function o1(e){const t=_t(e),r=d0(e);if(t&&r)return{start:t,end:r}}function nn(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?$i(e.position):"start"in e||"end"in e?$i(e):"line"in e||"column"in e?xa(e):""}function xa(e){return Qi(e&&e.line)+":"+Qi(e&&e.column)}function $i(e){return xa(e&&e.start)+"-"+xa(e&&e.end)}function Qi(e){return e&&typeof e=="number"?e:1}class je extends Error{constructor(t,r,n){super(),typeof r=="string"&&(n=r,r=void 0);let a="",i={},u=!1;if(r&&("line"in r&&"column"in r?i={place:r}:"start"in r&&"end"in r?i={place:r}:"type"in r?i={ancestors:[r],place:r.position}:i={...r}),typeof t=="string"?a=t:!i.cause&&t&&(u=!0,a=t.message,i.cause=t),!i.ruleId&&!i.source&&typeof n=="string"){const l=n.indexOf(":");l===-1?i.ruleId=n:(i.source=n.slice(0,l),i.ruleId=n.slice(l+1))}if(!i.place&&i.ancestors&&i.ancestors){const l=i.ancestors[i.ancestors.length-1];l&&(i.place=l.position)}const s=i.place&&"start"in i.place?i.place.start:i.place;this.ancestors=i.ancestors||void 0,this.cause=i.cause||void 0,this.column=s?s.column:void 0,this.fatal=void 0,this.file="",this.message=a,this.line=s?s.line:void 0,this.name=nn(i.place)||"1:1",this.place=i.place||void 0,this.reason=this.message,this.ruleId=i.ruleId||void 0,this.source=i.source||void 0,this.stack=u&&i.cause&&typeof i.cause.stack=="string"?i.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}}je.prototype.file="";je.prototype.name="";je.prototype.reason="";je.prototype.message="";je.prototype.stack="";je.prototype.column=void 0;je.prototype.line=void 0;je.prototype.ancestors=void 0;je.prototype.cause=void 0;je.prototype.fatal=void 0;je.prototype.place=void 0;je.prototype.ruleId=void 0;je.prototype.source=void 0;const ei={}.hasOwnProperty,c1=new Map,h1=/[A-Z]/g,d1=new Set(["table","tbody","thead","tfoot","tr"]),f1=new Set(["td","th"]),Ks="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function m1(e,t){if(!t||t.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const r=t.filePath||void 0;let n;if(t.development){if(typeof t.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");n=v1(r,t.jsxDEV)}else{if(typeof t.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof t.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");n=y1(r,t.jsx,t.jsxs)}const a={Fragment:t.Fragment,ancestors:[],components:t.components||{},create:n,elementAttributeNameCase:t.elementAttributeNameCase||"react",evaluater:t.createEvaluater?t.createEvaluater():void 0,filePath:r,ignoreInvalidStyle:t.ignoreInvalidStyle||!1,passKeys:t.passKeys!==!1,passNode:t.passNode||!1,schema:t.space==="svg"?rr:xn,stylePropertyNameCase:t.stylePropertyNameCase||"dom",tableCellAlignToStyle:t.tableCellAlignToStyle!==!1},i=Js(a,e,void 0);return i&&typeof i!="string"?i:a.create(e,a.Fragment,{children:i||void 0},void 0)}function Js(e,t,r){if(t.type==="element")return p1(e,t,r);if(t.type==="mdxFlowExpression"||t.type==="mdxTextExpression")return g1(e,t);if(t.type==="mdxJsxFlowElement"||t.type==="mdxJsxTextElement")return E1(e,t,r);if(t.type==="mdxjsEsm")return b1(e,t);if(t.type==="root")return T1(e,t,r);if(t.type==="text")return x1(e,t)}function p1(e,t,r){const n=e.schema;let a=n;t.tagName.toLowerCase()==="svg"&&n.space==="html"&&(a=rr,e.schema=a),e.ancestors.push(t);const i=el(e,t.tagName,!1),u=A1(e,t);let s=ri(e,t);return d1.has(t.tagName)&&(s=s.filter(function(l){return typeof l=="string"?!Xc(l):!0})),Zs(e,u,i,t),ti(u,s),e.ancestors.pop(),e.schema=n,e.create(t,i,u,r)}function g1(e,t){if(t.data&&t.data.estree&&e.evaluater){const n=t.data.estree.body[0];return n.type,e.evaluater.evaluateExpression(n.expression)}mn(e,t.position)}function b1(e,t){if(t.data&&t.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(t.data.estree);mn(e,t.position)}function E1(e,t,r){const n=e.schema;let a=n;t.name==="svg"&&n.space==="html"&&(a=rr,e.schema=a),e.ancestors.push(t);const i=t.name===null?e.Fragment:el(e,t.name,!0),u=k1(e,t),s=ri(e,t);return Zs(e,u,i,t),ti(u,s),e.ancestors.pop(),e.schema=n,e.create(t,i,u,r)}function T1(e,t,r){const n={};return ti(n,ri(e,t)),e.create(t,e.Fragment,n,r)}function x1(e,t){return t.value}function Zs(e,t,r,n){typeof r!="string"&&r!==e.Fragment&&e.passNode&&(t.node=n)}function ti(e,t){if(t.length>0){const r=t.length>1?t:t[0];r&&(e.children=r)}}function y1(e,t,r){return n;function n(a,i,u,s){const c=Array.isArray(u.children)?r:t;return s?c(i,u,s):c(i,u)}}function v1(e,t){return r;function r(n,a,i,u){const s=Array.isArray(i.children),l=_t(n);return t(a,i,u,s,{columnNumber:l?l.column-1:void 0,fileName:e,lineNumber:l?l.line:void 0},void 0)}}function A1(e,t){const r={};let n,a;for(a in t.properties)if(a!=="children"&&ei.call(t.properties,a)){const i=S1(e,a,t.properties[a]);if(i){const[u,s]=i;e.tableCellAlignToStyle&&u==="align"&&typeof s=="string"&&f1.has(t.tagName)?n=s:r[u]=s}}if(n){const i=r.style||(r.style={});i[e.stylePropertyNameCase==="css"?"text-align":"textAlign"]=n}return r}function k1(e,t){const r={};for(const n of t.attributes)if(n.type==="mdxJsxExpressionAttribute")if(n.data&&n.data.estree&&e.evaluater){const i=n.data.estree.body[0];i.type;const u=i.expression;u.type;const s=u.properties[0];s.type,Object.assign(r,e.evaluater.evaluateExpression(s.argument))}else mn(e,t.position);else{const a=n.name;let i;if(n.value&&typeof n.value=="object")if(n.value.data&&n.value.data.estree&&e.evaluater){const s=n.value.data.estree.body[0];s.type,i=e.evaluater.evaluateExpression(s.expression)}else mn(e,t.position);else i=n.value===null?!0:n.value;r[a]=i}return r}function ri(e,t){const r=[];let n=-1;const a=e.passKeys?new Map:c1;for(;++na?0:a+t:t=t>a?a:t,r=r>0?r:0,n.length<1e4)u=Array.from(n),u.unshift(t,r),e.splice(...u);else for(r&&e.splice(t,r);i0?(lt(e,e.length,0,t),e):t}const Zi={}.hasOwnProperty;function rl(e){const t={};let r=-1;for(;++r13&&r<32||r>126&&r<160||r>55295&&r<57344||r>64975&&r<65008||(r&65535)===65535||(r&65535)===65534||r>1114111?"�":String.fromCodePoint(r)}function xt(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const Ke=nr(/[A-Za-z]/),Ge=nr(/[\dA-Za-z]/),R1=nr(/[#-'*+\--9=?A-Z^-~]/);function Zn(e){return e!==null&&(e<32||e===127)}const ya=nr(/\d/),M1=nr(/[\dA-Fa-f]/),P1=nr(/[!-/:-@[-`{-~]/);function ae(e){return e!==null&&e<-2}function ve(e){return e!==null&&(e<0||e===32)}function ge(e){return e===-2||e===-1||e===32}const f0=nr(new RegExp("\\p{P}|\\p{S}","u")),pr=nr(/\s/);function nr(e){return t;function t(r){return r!==null&&r>-1&&e.test(String.fromCharCode(r))}}function Pr(e){const t=[];let r=-1,n=0,a=0;for(;++r55295&&i<57344){const s=e.charCodeAt(r+1);i<56320&&s>56319&&s<57344?(u=String.fromCharCode(i,s),a=1):u="�"}else u=String.fromCharCode(i);u&&(t.push(e.slice(n,r),encodeURIComponent(u)),n=r+a+1,u=""),a&&(r+=a,a=0)}return t.join("")+e.slice(n)}function fe(e,t,r,n){const a=n?n-1:Number.POSITIVE_INFINITY;let i=0;return u;function u(l){return ge(l)?(e.enter(r),s(l)):t(l)}function s(l){return ge(l)&&i++u))return;const ee=t.events.length;let re=ee,K,R;for(;re--;)if(t.events[re][0]==="exit"&&t.events[re][1].type==="chunkFlow"){if(K){R=t.events[re][1].end;break}K=!0}for(_(n),L=ee;LM;){const j=r[W];t.containerState=j[1],j[0].exit.call(t,e)}r.length=M}function N(){a.write([null]),i=void 0,a=void 0,t.containerState._closeFlow=void 0}}function U1(e,t,r){return fe(e,e.attempt(this.parser.constructs.document,t,r),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function Ir(e){if(e===null||ve(e)||pr(e))return 1;if(f0(e))return 2}function m0(e,t,r){const n=[];let a=-1;for(;++a1&&e[r][1].end.offset-e[r][1].start.offset>1?2:1;const f={...e[n][1].end},g={...e[r][1].start};tu(f,-l),tu(g,l),u={type:l>1?"strongSequence":"emphasisSequence",start:f,end:{...e[n][1].end}},s={type:l>1?"strongSequence":"emphasisSequence",start:{...e[r][1].start},end:g},i={type:l>1?"strongText":"emphasisText",start:{...e[n][1].end},end:{...e[r][1].start}},a={type:l>1?"strong":"emphasis",start:{...u.start},end:{...s.end}},e[n][1].end={...u.start},e[r][1].start={...s.end},c=[],e[n][1].end.offset-e[n][1].start.offset&&(c=mt(c,[["enter",e[n][1],t],["exit",e[n][1],t]])),c=mt(c,[["enter",a,t],["enter",u,t],["exit",u,t],["enter",i,t]]),c=mt(c,m0(t.parser.constructs.insideSpan.null,e.slice(n+1,r),t)),c=mt(c,[["exit",i,t],["enter",s,t],["exit",s,t],["exit",a,t]]),e[r][1].end.offset-e[r][1].start.offset?(d=2,c=mt(c,[["enter",e[r][1],t],["exit",e[r][1],t]])):d=0,lt(e,n-1,r-n+3,c),r=n+c.length-d-2;break}}for(r=-1;++r0&&ge(L)?fe(e,N,"linePrefix",i+1)(L):N(L)}function N(L){return L===null||ae(L)?e.check(ru,S,W)(L):(e.enter("codeFlowValue"),M(L))}function M(L){return L===null||ae(L)?(e.exit("codeFlowValue"),N(L)):(e.consume(L),M)}function W(L){return e.exit("codeFenced"),t(L)}function j(L,ee,re){let K=0;return R;function R(X){return L.enter("lineEnding"),L.consume(X),L.exit("lineEnding"),J}function J(X){return L.enter("codeFencedFence"),ge(X)?fe(L,Q,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(X):Q(X)}function Q(X){return X===s?(L.enter("codeFencedFenceSequence"),be(X)):re(X)}function be(X){return X===s?(K++,L.consume(X),be):K>=u?(L.exit("codeFencedFenceSequence"),ge(X)?fe(L,ne,"whitespace")(X):ne(X)):re(X)}function ne(X){return X===null||ae(X)?(L.exit("codeFencedFence"),ee(X)):re(X)}}}function Z1(e,t,r){const n=this;return a;function a(u){return u===null?r(u):(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),i)}function i(u){return n.parser.lazy[n.now().line]?r(u):t(u)}}const z0={name:"codeIndented",tokenize:th},eh={partial:!0,tokenize:rh};function th(e,t,r){const n=this;return a;function a(c){return e.enter("codeIndented"),fe(e,i,"linePrefix",5)(c)}function i(c){const d=n.events[n.events.length-1];return d&&d[1].type==="linePrefix"&&d[2].sliceSerialize(d[1],!0).length>=4?u(c):r(c)}function u(c){return c===null?l(c):ae(c)?e.attempt(eh,u,l)(c):(e.enter("codeFlowValue"),s(c))}function s(c){return c===null||ae(c)?(e.exit("codeFlowValue"),u(c)):(e.consume(c),s)}function l(c){return e.exit("codeIndented"),t(c)}}function rh(e,t,r){const n=this;return a;function a(u){return n.parser.lazy[n.now().line]?r(u):ae(u)?(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),a):fe(e,i,"linePrefix",5)(u)}function i(u){const s=n.events[n.events.length-1];return s&&s[1].type==="linePrefix"&&s[2].sliceSerialize(s[1],!0).length>=4?t(u):ae(u)?a(u):r(u)}}const nh={name:"codeText",previous:ih,resolve:ah,tokenize:uh};function ah(e){let t=e.length-4,r=3,n,a;if((e[r][1].type==="lineEnding"||e[r][1].type==="space")&&(e[t][1].type==="lineEnding"||e[t][1].type==="space")){for(n=r;++n=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+t+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return tthis.left.length?this.right.slice(this.right.length-n+this.left.length,this.right.length-t+this.left.length).reverse():this.left.slice(t).concat(this.right.slice(this.right.length-n+this.left.length).reverse())}splice(t,r,n){const a=r||0;this.setCursor(Math.trunc(t));const i=this.right.splice(this.right.length-a,Number.POSITIVE_INFINITY);return n&&Kr(this.left,n),i.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(t){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(t)}pushMany(t){this.setCursor(Number.POSITIVE_INFINITY),Kr(this.left,t)}unshift(t){this.setCursor(0),this.right.push(t)}unshiftMany(t){this.setCursor(0),Kr(this.right,t.reverse())}setCursor(t){if(!(t===this.left.length||t>this.left.length&&this.right.length===0||t<0&&this.left.length===0))if(t=4?t(u):e.interrupt(n.parser.constructs.flow,r,t)(u)}}function ll(e,t,r,n,a,i,u,s,l){const c=l||Number.POSITIVE_INFINITY;let d=0;return f;function f(_){return _===60?(e.enter(n),e.enter(a),e.enter(i),e.consume(_),e.exit(i),g):_===null||_===32||_===41||Zn(_)?r(_):(e.enter(n),e.enter(u),e.enter(s),e.enter("chunkString",{contentType:"string"}),S(_))}function g(_){return _===62?(e.enter(i),e.consume(_),e.exit(i),e.exit(a),e.exit(n),t):(e.enter(s),e.enter("chunkString",{contentType:"string"}),p(_))}function p(_){return _===62?(e.exit("chunkString"),e.exit(s),g(_)):_===null||_===60||ae(_)?r(_):(e.consume(_),_===92?x:p)}function x(_){return _===60||_===62||_===92?(e.consume(_),p):p(_)}function S(_){return!d&&(_===null||_===41||ve(_))?(e.exit("chunkString"),e.exit(s),e.exit(u),e.exit(n),t(_)):d999||p===null||p===91||p===93&&!l||p===94&&!s&&"_hiddenFootnoteSupport"in u.parser.constructs?r(p):p===93?(e.exit(i),e.enter(a),e.consume(p),e.exit(a),e.exit(n),t):ae(p)?(e.enter("lineEnding"),e.consume(p),e.exit("lineEnding"),d):(e.enter("chunkString",{contentType:"string"}),f(p))}function f(p){return p===null||p===91||p===93||ae(p)||s++>999?(e.exit("chunkString"),d(p)):(e.consume(p),l||(l=!ge(p)),p===92?g:f)}function g(p){return p===91||p===92||p===93?(e.consume(p),s++,f):f(p)}}function cl(e,t,r,n,a,i){let u;return s;function s(g){return g===34||g===39||g===40?(e.enter(n),e.enter(a),e.consume(g),e.exit(a),u=g===40?41:g,l):r(g)}function l(g){return g===u?(e.enter(a),e.consume(g),e.exit(a),e.exit(n),t):(e.enter(i),c(g))}function c(g){return g===u?(e.exit(i),l(u)):g===null?r(g):ae(g)?(e.enter("lineEnding"),e.consume(g),e.exit("lineEnding"),fe(e,c,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),d(g))}function d(g){return g===u||g===null||ae(g)?(e.exit("chunkString"),c(g)):(e.consume(g),g===92?f:d)}function f(g){return g===u||g===92?(e.consume(g),d):d(g)}}function an(e,t){let r;return n;function n(a){return ae(a)?(e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),r=!0,n):ge(a)?fe(e,n,r?"linePrefix":"lineSuffix")(a):t(a)}}const mh={name:"definition",tokenize:gh},ph={partial:!0,tokenize:bh};function gh(e,t,r){const n=this;let a;return i;function i(p){return e.enter("definition"),u(p)}function u(p){return ol.call(n,e,s,r,"definitionLabel","definitionLabelMarker","definitionLabelString")(p)}function s(p){return a=xt(n.sliceSerialize(n.events[n.events.length-1][1]).slice(1,-1)),p===58?(e.enter("definitionMarker"),e.consume(p),e.exit("definitionMarker"),l):r(p)}function l(p){return ve(p)?an(e,c)(p):c(p)}function c(p){return ll(e,d,r,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(p)}function d(p){return e.attempt(ph,f,f)(p)}function f(p){return ge(p)?fe(e,g,"whitespace")(p):g(p)}function g(p){return p===null||ae(p)?(e.exit("definition"),n.parser.defined.push(a),t(p)):r(p)}}function bh(e,t,r){return n;function n(s){return ve(s)?an(e,a)(s):r(s)}function a(s){return cl(e,i,r,"definitionTitle","definitionTitleMarker","definitionTitleString")(s)}function i(s){return ge(s)?fe(e,u,"whitespace")(s):u(s)}function u(s){return s===null||ae(s)?t(s):r(s)}}const Eh={name:"hardBreakEscape",tokenize:Th};function Th(e,t,r){return n;function n(i){return e.enter("hardBreakEscape"),e.consume(i),a}function a(i){return ae(i)?(e.exit("hardBreakEscape"),t(i)):r(i)}}const xh={name:"headingAtx",resolve:yh,tokenize:vh};function yh(e,t){let r=e.length-2,n=3,a,i;return e[n][1].type==="whitespace"&&(n+=2),r-2>n&&e[r][1].type==="whitespace"&&(r-=2),e[r][1].type==="atxHeadingSequence"&&(n===r-1||r-4>n&&e[r-2][1].type==="whitespace")&&(r-=n+1===r?2:4),r>n&&(a={type:"atxHeadingText",start:e[n][1].start,end:e[r][1].end},i={type:"chunkText",start:e[n][1].start,end:e[r][1].end,contentType:"text"},lt(e,n,r-n+1,[["enter",a,t],["enter",i,t],["exit",i,t],["exit",a,t]])),e}function vh(e,t,r){let n=0;return a;function a(d){return e.enter("atxHeading"),i(d)}function i(d){return e.enter("atxHeadingSequence"),u(d)}function u(d){return d===35&&n++<6?(e.consume(d),u):d===null||ve(d)?(e.exit("atxHeadingSequence"),s(d)):r(d)}function s(d){return d===35?(e.enter("atxHeadingSequence"),l(d)):d===null||ae(d)?(e.exit("atxHeading"),t(d)):ge(d)?fe(e,s,"whitespace")(d):(e.enter("atxHeadingText"),c(d))}function l(d){return d===35?(e.consume(d),l):(e.exit("atxHeadingSequence"),s(d))}function c(d){return d===null||d===35||ve(d)?(e.exit("atxHeadingText"),s(d)):(e.consume(d),c)}}const Ah=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],au=["pre","script","style","textarea"],kh={concrete:!0,name:"htmlFlow",resolveTo:Ch,tokenize:_h},Sh={partial:!0,tokenize:Nh},wh={partial:!0,tokenize:Ih};function Ch(e){let t=e.length;for(;t--&&!(e[t][0]==="enter"&&e[t][1].type==="htmlFlow"););return t>1&&e[t-2][1].type==="linePrefix"&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function _h(e,t,r){const n=this;let a,i,u,s,l;return c;function c(C){return d(C)}function d(C){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(C),f}function f(C){return C===33?(e.consume(C),g):C===47?(e.consume(C),i=!0,S):C===63?(e.consume(C),a=3,n.interrupt?t:w):Ke(C)?(e.consume(C),u=String.fromCharCode(C),D):r(C)}function g(C){return C===45?(e.consume(C),a=2,p):C===91?(e.consume(C),a=5,s=0,x):Ke(C)?(e.consume(C),a=4,n.interrupt?t:w):r(C)}function p(C){return C===45?(e.consume(C),n.interrupt?t:w):r(C)}function x(C){const Ye="CDATA[";return C===Ye.charCodeAt(s++)?(e.consume(C),s===Ye.length?n.interrupt?t:Q:x):r(C)}function S(C){return Ke(C)?(e.consume(C),u=String.fromCharCode(C),D):r(C)}function D(C){if(C===null||C===47||C===62||ve(C)){const Ye=C===47,vt=u.toLowerCase();return!Ye&&!i&&au.includes(vt)?(a=1,n.interrupt?t(C):Q(C)):Ah.includes(u.toLowerCase())?(a=6,Ye?(e.consume(C),_):n.interrupt?t(C):Q(C)):(a=7,n.interrupt&&!n.parser.lazy[n.now().line]?r(C):i?N(C):M(C))}return C===45||Ge(C)?(e.consume(C),u+=String.fromCharCode(C),D):r(C)}function _(C){return C===62?(e.consume(C),n.interrupt?t:Q):r(C)}function N(C){return ge(C)?(e.consume(C),N):R(C)}function M(C){return C===47?(e.consume(C),R):C===58||C===95||Ke(C)?(e.consume(C),W):ge(C)?(e.consume(C),M):R(C)}function W(C){return C===45||C===46||C===58||C===95||Ge(C)?(e.consume(C),W):j(C)}function j(C){return C===61?(e.consume(C),L):ge(C)?(e.consume(C),j):M(C)}function L(C){return C===null||C===60||C===61||C===62||C===96?r(C):C===34||C===39?(e.consume(C),l=C,ee):ge(C)?(e.consume(C),L):re(C)}function ee(C){return C===l?(e.consume(C),l=null,K):C===null||ae(C)?r(C):(e.consume(C),ee)}function re(C){return C===null||C===34||C===39||C===47||C===60||C===61||C===62||C===96||ve(C)?j(C):(e.consume(C),re)}function K(C){return C===47||C===62||ge(C)?M(C):r(C)}function R(C){return C===62?(e.consume(C),J):r(C)}function J(C){return C===null||ae(C)?Q(C):ge(C)?(e.consume(C),J):r(C)}function Q(C){return C===45&&a===2?(e.consume(C),me):C===60&&a===1?(e.consume(C),ke):C===62&&a===4?(e.consume(C),Oe):C===63&&a===3?(e.consume(C),w):C===93&&a===5?(e.consume(C),at):ae(C)&&(a===6||a===7)?(e.exit("htmlFlowData"),e.check(Sh,Xe,be)(C)):C===null||ae(C)?(e.exit("htmlFlowData"),be(C)):(e.consume(C),Q)}function be(C){return e.check(wh,ne,Xe)(C)}function ne(C){return e.enter("lineEnding"),e.consume(C),e.exit("lineEnding"),X}function X(C){return C===null||ae(C)?be(C):(e.enter("htmlFlowData"),Q(C))}function me(C){return C===45?(e.consume(C),w):Q(C)}function ke(C){return C===47?(e.consume(C),u="",ze):Q(C)}function ze(C){if(C===62){const Ye=u.toLowerCase();return au.includes(Ye)?(e.consume(C),Oe):Q(C)}return Ke(C)&&u.length<8?(e.consume(C),u+=String.fromCharCode(C),ze):Q(C)}function at(C){return C===93?(e.consume(C),w):Q(C)}function w(C){return C===62?(e.consume(C),Oe):C===45&&a===2?(e.consume(C),w):Q(C)}function Oe(C){return C===null||ae(C)?(e.exit("htmlFlowData"),Xe(C)):(e.consume(C),Oe)}function Xe(C){return e.exit("htmlFlow"),t(C)}}function Ih(e,t,r){const n=this;return a;function a(u){return ae(u)?(e.enter("lineEnding"),e.consume(u),e.exit("lineEnding"),i):r(u)}function i(u){return n.parser.lazy[n.now().line]?r(u):t(u)}}function Nh(e,t,r){return n;function n(a){return e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),e.attempt(yn,t,r)}}const Dh={name:"htmlText",tokenize:Oh};function Oh(e,t,r){const n=this;let a,i,u;return s;function s(w){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(w),l}function l(w){return w===33?(e.consume(w),c):w===47?(e.consume(w),j):w===63?(e.consume(w),M):Ke(w)?(e.consume(w),re):r(w)}function c(w){return w===45?(e.consume(w),d):w===91?(e.consume(w),i=0,x):Ke(w)?(e.consume(w),N):r(w)}function d(w){return w===45?(e.consume(w),p):r(w)}function f(w){return w===null?r(w):w===45?(e.consume(w),g):ae(w)?(u=f,ke(w)):(e.consume(w),f)}function g(w){return w===45?(e.consume(w),p):f(w)}function p(w){return w===62?me(w):w===45?g(w):f(w)}function x(w){const Oe="CDATA[";return w===Oe.charCodeAt(i++)?(e.consume(w),i===Oe.length?S:x):r(w)}function S(w){return w===null?r(w):w===93?(e.consume(w),D):ae(w)?(u=S,ke(w)):(e.consume(w),S)}function D(w){return w===93?(e.consume(w),_):S(w)}function _(w){return w===62?me(w):w===93?(e.consume(w),_):S(w)}function N(w){return w===null||w===62?me(w):ae(w)?(u=N,ke(w)):(e.consume(w),N)}function M(w){return w===null?r(w):w===63?(e.consume(w),W):ae(w)?(u=M,ke(w)):(e.consume(w),M)}function W(w){return w===62?me(w):M(w)}function j(w){return Ke(w)?(e.consume(w),L):r(w)}function L(w){return w===45||Ge(w)?(e.consume(w),L):ee(w)}function ee(w){return ae(w)?(u=ee,ke(w)):ge(w)?(e.consume(w),ee):me(w)}function re(w){return w===45||Ge(w)?(e.consume(w),re):w===47||w===62||ve(w)?K(w):r(w)}function K(w){return w===47?(e.consume(w),me):w===58||w===95||Ke(w)?(e.consume(w),R):ae(w)?(u=K,ke(w)):ge(w)?(e.consume(w),K):me(w)}function R(w){return w===45||w===46||w===58||w===95||Ge(w)?(e.consume(w),R):J(w)}function J(w){return w===61?(e.consume(w),Q):ae(w)?(u=J,ke(w)):ge(w)?(e.consume(w),J):K(w)}function Q(w){return w===null||w===60||w===61||w===62||w===96?r(w):w===34||w===39?(e.consume(w),a=w,be):ae(w)?(u=Q,ke(w)):ge(w)?(e.consume(w),Q):(e.consume(w),ne)}function be(w){return w===a?(e.consume(w),a=void 0,X):w===null?r(w):ae(w)?(u=be,ke(w)):(e.consume(w),be)}function ne(w){return w===null||w===34||w===39||w===60||w===61||w===96?r(w):w===47||w===62||ve(w)?K(w):(e.consume(w),ne)}function X(w){return w===47||w===62||ve(w)?K(w):r(w)}function me(w){return w===62?(e.consume(w),e.exit("htmlTextData"),e.exit("htmlText"),t):r(w)}function ke(w){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(w),e.exit("lineEnding"),ze}function ze(w){return ge(w)?fe(e,at,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(w):at(w)}function at(w){return e.enter("htmlTextData"),u(w)}}const ii={name:"labelEnd",resolveAll:Ph,resolveTo:Bh,tokenize:Fh},Lh={tokenize:Hh},Rh={tokenize:zh},Mh={tokenize:Uh};function Ph(e){let t=-1;const r=[];for(;++t=3&&(c===null||ae(c))?(e.exit("thematicBreak"),t(c)):r(c)}function l(c){return c===a?(e.consume(c),n++,l):(e.exit("thematicBreakSequence"),ge(c)?fe(e,s,"whitespace")(c):s(c))}}const tt={continuation:{tokenize:Kh},exit:Zh,name:"list",tokenize:Qh},Xh={partial:!0,tokenize:ed},$h={partial:!0,tokenize:Jh};function Qh(e,t,r){const n=this,a=n.events[n.events.length-1];let i=a&&a[1].type==="linePrefix"?a[2].sliceSerialize(a[1],!0).length:0,u=0;return s;function s(p){const x=n.containerState.type||(p===42||p===43||p===45?"listUnordered":"listOrdered");if(x==="listUnordered"?!n.containerState.marker||p===n.containerState.marker:ya(p)){if(n.containerState.type||(n.containerState.type=x,e.enter(x,{_container:!0})),x==="listUnordered")return e.enter("listItemPrefix"),p===42||p===45?e.check(Xn,r,c)(p):c(p);if(!n.interrupt||p===49)return e.enter("listItemPrefix"),e.enter("listItemValue"),l(p)}return r(p)}function l(p){return ya(p)&&++u<10?(e.consume(p),l):(!n.interrupt||u<2)&&(n.containerState.marker?p===n.containerState.marker:p===41||p===46)?(e.exit("listItemValue"),c(p)):r(p)}function c(p){return e.enter("listItemMarker"),e.consume(p),e.exit("listItemMarker"),n.containerState.marker=n.containerState.marker||p,e.check(yn,n.interrupt?r:d,e.attempt(Xh,g,f))}function d(p){return n.containerState.initialBlankLine=!0,i++,g(p)}function f(p){return ge(p)?(e.enter("listItemPrefixWhitespace"),e.consume(p),e.exit("listItemPrefixWhitespace"),g):r(p)}function g(p){return n.containerState.size=i+n.sliceSerialize(e.exit("listItemPrefix"),!0).length,t(p)}}function Kh(e,t,r){const n=this;return n.containerState._closeFlow=void 0,e.check(yn,a,i);function a(s){return n.containerState.furtherBlankLines=n.containerState.furtherBlankLines||n.containerState.initialBlankLine,fe(e,t,"listItemIndent",n.containerState.size+1)(s)}function i(s){return n.containerState.furtherBlankLines||!ge(s)?(n.containerState.furtherBlankLines=void 0,n.containerState.initialBlankLine=void 0,u(s)):(n.containerState.furtherBlankLines=void 0,n.containerState.initialBlankLine=void 0,e.attempt($h,t,u)(s))}function u(s){return n.containerState._closeFlow=!0,n.interrupt=void 0,fe(e,e.attempt(tt,t,r),"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(s)}}function Jh(e,t,r){const n=this;return fe(e,a,"listItemIndent",n.containerState.size+1);function a(i){const u=n.events[n.events.length-1];return u&&u[1].type==="listItemIndent"&&u[2].sliceSerialize(u[1],!0).length===n.containerState.size?t(i):r(i)}}function Zh(e){e.exit(this.containerState.type)}function ed(e,t,r){const n=this;return fe(e,a,"listItemPrefixWhitespace",n.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function a(i){const u=n.events[n.events.length-1];return!ge(i)&&u&&u[1].type==="listItemPrefixWhitespace"?t(i):r(i)}}const iu={name:"setextUnderline",resolveTo:td,tokenize:rd};function td(e,t){let r=e.length,n,a,i;for(;r--;)if(e[r][0]==="enter"){if(e[r][1].type==="content"){n=r;break}e[r][1].type==="paragraph"&&(a=r)}else e[r][1].type==="content"&&e.splice(r,1),!i&&e[r][1].type==="definition"&&(i=r);const u={type:"setextHeading",start:{...e[n][1].start},end:{...e[e.length-1][1].end}};return e[a][1].type="setextHeadingText",i?(e.splice(a,0,["enter",u,t]),e.splice(i+1,0,["exit",e[n][1],t]),e[n][1].end={...e[i][1].end}):e[n][1]=u,e.push(["exit",u,t]),e}function rd(e,t,r){const n=this;let a;return i;function i(c){let d=n.events.length,f;for(;d--;)if(n.events[d][1].type!=="lineEnding"&&n.events[d][1].type!=="linePrefix"&&n.events[d][1].type!=="content"){f=n.events[d][1].type==="paragraph";break}return!n.parser.lazy[n.now().line]&&(n.interrupt||f)?(e.enter("setextHeadingLine"),a=c,u(c)):r(c)}function u(c){return e.enter("setextHeadingLineSequence"),s(c)}function s(c){return c===a?(e.consume(c),s):(e.exit("setextHeadingLineSequence"),ge(c)?fe(e,l,"lineSuffix")(c):l(c))}function l(c){return c===null||ae(c)?(e.exit("setextHeadingLine"),t(c)):r(c)}}const nd={tokenize:ad};function ad(e){const t=this,r=e.attempt(yn,n,e.attempt(this.parser.constructs.flowInitial,a,fe(e,e.attempt(this.parser.constructs.flow,a,e.attempt(oh,a)),"linePrefix")));return r;function n(i){if(i===null){e.consume(i);return}return e.enter("lineEndingBlank"),e.consume(i),e.exit("lineEndingBlank"),t.currentConstruct=void 0,r}function a(i){if(i===null){e.consume(i);return}return e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),t.currentConstruct=void 0,r}}const id={resolveAll:dl()},ud=hl("string"),sd=hl("text");function hl(e){return{resolveAll:dl(e==="text"?ld:void 0),tokenize:t};function t(r){const n=this,a=this.parser.constructs[e],i=r.attempt(a,u,s);return u;function u(d){return c(d)?i(d):s(d)}function s(d){if(d===null){r.consume(d);return}return r.enter("data"),r.consume(d),l}function l(d){return c(d)?(r.exit("data"),i(d)):(r.consume(d),l)}function c(d){if(d===null)return!0;const f=a[d];let g=-1;if(f)for(;++g-1){const s=u[0];typeof s=="string"?u[0]=s.slice(n):u.shift()}i>0&&u.push(e[a].slice(0,i))}return u}function yd(e,t){let r=-1;const n=[];let a;for(;++r0){const Tt=ue.tokenStack[ue.tokenStack.length-1];(Tt[1]||su).call(ue,void 0,Tt[0])}for($.position={start:Vt(B.length>0?B[0][1].start:{line:1,column:1,offset:0}),end:Vt(B.length>0?B[B.length-2][1].end:{line:1,column:1,offset:0})},xe=-1;++xe0&&(n.className=["language-"+a[0]]);let i={type:"element",tagName:"code",properties:n,children:[{type:"text",value:r}]};return t.meta&&(i.data={meta:t.meta}),e.patch(t,i),i=e.applyData(t,i),i={type:"element",tagName:"pre",properties:{},children:[i]},e.patch(t,i),i}function Md(e,t){const r={type:"element",tagName:"del",properties:{},children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function Pd(e,t){const r={type:"element",tagName:"em",properties:{},children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function Bd(e,t){const r=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",n=String(t.identifier).toUpperCase(),a=Pr(n.toLowerCase()),i=e.footnoteOrder.indexOf(n);let u,s=e.footnoteCounts.get(n);s===void 0?(s=0,e.footnoteOrder.push(n),u=e.footnoteOrder.length):u=i+1,s+=1,e.footnoteCounts.set(n,s);const l={type:"element",tagName:"a",properties:{href:"#"+r+"fn-"+a,id:r+"fnref-"+a+(s>1?"-"+s:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(u)}]};e.patch(t,l);const c={type:"element",tagName:"sup",properties:{},children:[l]};return e.patch(t,c),e.applyData(t,c)}function Fd(e,t){const r={type:"element",tagName:"h"+t.depth,properties:{},children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function Hd(e,t){if(e.options.allowDangerousHtml){const r={type:"raw",value:t.value};return e.patch(t,r),e.applyData(t,r)}}function pl(e,t){const r=t.referenceType;let n="]";if(r==="collapsed"?n+="[]":r==="full"&&(n+="["+(t.label||t.identifier)+"]"),t.type==="imageReference")return[{type:"text",value:"!["+t.alt+n}];const a=e.all(t),i=a[0];i&&i.type==="text"?i.value="["+i.value:a.unshift({type:"text",value:"["});const u=a[a.length-1];return u&&u.type==="text"?u.value+=n:a.push({type:"text",value:n}),a}function zd(e,t){const r=String(t.identifier).toUpperCase(),n=e.definitionById.get(r);if(!n)return pl(e,t);const a={src:Pr(n.url||""),alt:t.alt};n.title!==null&&n.title!==void 0&&(a.title=n.title);const i={type:"element",tagName:"img",properties:a,children:[]};return e.patch(t,i),e.applyData(t,i)}function Ud(e,t){const r={src:Pr(t.url)};t.alt!==null&&t.alt!==void 0&&(r.alt=t.alt),t.title!==null&&t.title!==void 0&&(r.title=t.title);const n={type:"element",tagName:"img",properties:r,children:[]};return e.patch(t,n),e.applyData(t,n)}function qd(e,t){const r={type:"text",value:t.value.replace(/\r?\n|\r/g," ")};e.patch(t,r);const n={type:"element",tagName:"code",properties:{},children:[r]};return e.patch(t,n),e.applyData(t,n)}function Yd(e,t){const r=String(t.identifier).toUpperCase(),n=e.definitionById.get(r);if(!n)return pl(e,t);const a={href:Pr(n.url||"")};n.title!==null&&n.title!==void 0&&(a.title=n.title);const i={type:"element",tagName:"a",properties:a,children:e.all(t)};return e.patch(t,i),e.applyData(t,i)}function Gd(e,t){const r={href:Pr(t.url)};t.title!==null&&t.title!==void 0&&(r.title=t.title);const n={type:"element",tagName:"a",properties:r,children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function Vd(e,t,r){const n=e.all(t),a=r?jd(r):gl(t),i={},u=[];if(typeof t.checked=="boolean"){const d=n[0];let f;d&&d.type==="element"&&d.tagName==="p"?f=d:(f={type:"element",tagName:"p",properties:{},children:[]},n.unshift(f)),f.children.length>0&&f.children.unshift({type:"text",value:" "}),f.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:t.checked,disabled:!0},children:[]}),i.className=["task-list-item"]}let s=-1;for(;++s1}function Wd(e,t){const r={},n=e.all(t);let a=-1;for(typeof t.start=="number"&&t.start!==1&&(r.start=t.start);++a0){const u={type:"element",tagName:"tbody",properties:{},children:e.wrap(r,!0)},s=_t(t.children[1]),l=d0(t.children[t.children.length-1]);s&&l&&(u.position={start:s,end:l}),a.push(u)}const i={type:"element",tagName:"table",properties:{},children:e.wrap(a,!0)};return e.patch(t,i),e.applyData(t,i)}function Jd(e,t,r){const n=r?r.children:void 0,i=(n?n.indexOf(t):1)===0?"th":"td",u=r&&r.type==="table"?r.align:void 0,s=u?u.length:t.children.length;let l=-1;const c=[];for(;++l0,!0),n[0]),a=n.index+n[0].length,n=r.exec(t);return i.push(cu(t.slice(a),a>0,!1)),i.join("")}function cu(e,t,r){let n=0,a=e.length;if(t){let i=e.codePointAt(n);for(;i===lu||i===ou;)n++,i=e.codePointAt(n)}if(r){let i=e.codePointAt(a-1);for(;i===lu||i===ou;)a--,i=e.codePointAt(a-1)}return a>n?e.slice(n,a):""}function tf(e,t){const r={type:"text",value:ef(String(t.value))};return e.patch(t,r),e.applyData(t,r)}function rf(e,t){const r={type:"element",tagName:"hr",properties:{},children:[]};return e.patch(t,r),e.applyData(t,r)}const nf={blockquote:Od,break:Ld,code:Rd,delete:Md,emphasis:Pd,footnoteReference:Bd,heading:Fd,html:Hd,imageReference:zd,image:Ud,inlineCode:qd,linkReference:Yd,link:Gd,listItem:Vd,list:Wd,paragraph:Xd,root:$d,strong:Qd,table:Kd,tableCell:Zd,tableRow:Jd,text:tf,thematicBreak:rf,toml:Mn,yaml:Mn,definition:Mn,footnoteDefinition:Mn};function Mn(){}const bl=-1,p0=0,un=1,e0=2,ui=3,si=4,li=5,oi=6,El=7,Tl=8,xl=typeof self=="object"?self:globalThis,hu=(e,t)=>{switch(e){case"Function":case"SharedWorker":case"Worker":case"eval":case"setInterval":case"setTimeout":throw new TypeError("unable to deserialize "+e)}return new xl[e](t)},af=(e,t)=>{const r=(a,i)=>(e.set(i,a),a),n=a=>{if(e.has(a))return e.get(a);const[i,u]=t[a];switch(i){case p0:case bl:return r(u,a);case un:{const s=r([],a);for(const l of u)s.push(n(l));return s}case e0:{const s=r({},a);for(const[l,c]of u)s[n(l)]=n(c);return s}case ui:return r(new Date(u),a);case si:{const{source:s,flags:l}=u;return r(new RegExp(s,l),a)}case li:{const s=r(new Map,a);for(const[l,c]of u)s.set(n(l),n(c));return s}case oi:{const s=r(new Set,a);for(const l of u)s.add(n(l));return s}case El:{const{name:s,message:l}=u;return r(typeof xl[s]=="function"?hu(s,l):new Error(l),a)}case Tl:return r(BigInt(u),a);case"BigInt":return r(Object(BigInt(u)),a);case"ArrayBuffer":return r(new Uint8Array(u).buffer,u);case"DataView":{const{buffer:s}=new Uint8Array(u);return r(new DataView(s),u)}}return r(hu(i,u),a)};return n},du=e=>af(new Map,e)(0),hr="",{toString:uf}={},{keys:sf}=Object,Jr=e=>{const t=typeof e;if(t!=="object"||!e)return[p0,t];const r=uf.call(e).slice(8,-1);switch(r){case"Array":return[un,hr];case"Object":return[e0,hr];case"Date":return[ui,hr];case"RegExp":return[si,hr];case"Map":return[li,hr];case"Set":return[oi,hr];case"DataView":return[un,r]}return r.includes("Array")?[un,r]:e instanceof Error?[El,e.name||"Error"]:[e0,r]},Pn=([e,t])=>e===p0&&(t==="function"||t==="symbol"),lf=(e,t,r,n)=>{const a=(u,s)=>{const l=n.push(u)-1;return r.set(s,l),l},i=u=>{if(r.has(u))return r.get(u);let[s,l]=Jr(u);switch(s){case p0:{let d=u;switch(l){case"bigint":s=Tl,d=u.toString();break;case"function":case"symbol":if(e)throw new TypeError("unable to serialize "+l);d=null;break;case"undefined":return a([bl],u)}return a([s,d],u)}case un:{if(l){let g=u;return l==="DataView"?g=new Uint8Array(u.buffer):l==="ArrayBuffer"&&(g=new Uint8Array(u)),a([l,[...g]],u)}const d=[],f=a([s,d],u);for(const g of u)d.push(i(g));return f}case e0:{if(l)switch(l){case"BigInt":return a([l,u.toString()],u);case"Boolean":case"Number":case"String":return a([l,u.valueOf()],u)}if(t&&"toJSON"in u)return i(u.toJSON());const d=[],f=a([s,d],u);for(const g of sf(u))(e||!Pn(Jr(u[g])))&&d.push([i(g),i(u[g])]);return f}case ui:return a([s,isNaN(u.getTime())?hr:u.toISOString()],u);case si:{const{source:d,flags:f}=u;return a([s,{source:d,flags:f}],u)}case li:{const d=[],f=a([s,d],u);for(const[g,p]of u)(e||!(Pn(Jr(g))||Pn(Jr(p))))&&d.push([i(g),i(p)]);return f}case oi:{const d=[],f=a([s,d],u);for(const g of u)(e||!Pn(Jr(g)))&&d.push(i(g));return f}}const{message:c}=u;return a([s,{name:l,message:c}],u)};return i},fu=(e,{json:t,lossy:r}={})=>{const n=[];return lf(!(t||r),!!t,new Map,n)(e),n},Nr=typeof structuredClone=="function"?(e,t)=>t&&("json"in t||"lossy"in t)?du(fu(e,t)):structuredClone(e):(e,t)=>du(fu(e,t));function of(e,t){const r=[{type:"text",value:"↩"}];return t>1&&r.push({type:"element",tagName:"sup",properties:{},children:[{type:"text",value:String(t)}]}),r}function cf(e,t){return"Back to reference "+(e+1)+(t>1?"-"+t:"")}function hf(e){const t=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",r=e.options.footnoteBackContent||of,n=e.options.footnoteBackLabel||cf,a=e.options.footnoteLabel||"Footnotes",i=e.options.footnoteLabelTagName||"h2",u=e.options.footnoteLabelProperties||{className:["sr-only"]},s=[];let l=-1;for(;++l0&&x.push({type:"text",value:" "});let N=typeof r=="string"?r:r(l,p);typeof N=="string"&&(N={type:"text",value:N}),x.push({type:"element",tagName:"a",properties:{href:"#"+t+"fnref-"+g+(p>1?"-"+p:""),dataFootnoteBackref:"",ariaLabel:typeof n=="string"?n:n(l,p),className:["data-footnote-backref"]},children:Array.isArray(N)?N:[N]})}const D=d[d.length-1];if(D&&D.type==="element"&&D.tagName==="p"){const N=D.children[D.children.length-1];N&&N.type==="text"?N.value+=" ":D.children.push({type:"text",value:" "}),D.children.push(...x)}else d.push(...x);const _={type:"element",tagName:"li",properties:{id:t+"fn-"+g},children:e.wrap(d,!0)};e.patch(c,_),s.push(_)}if(s.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:i,properties:{...Nr(u),id:"footnote-label"},children:[{type:"text",value:a}]},{type:"text",value:` -`},{type:"element",tagName:"ol",properties:{},children:e.wrap(s,!0)},{type:"text",value:` -`}]}}const vn=(function(e){if(e==null)return pf;if(typeof e=="function")return g0(e);if(typeof e=="object")return Array.isArray(e)?df(e):ff(e);if(typeof e=="string")return mf(e);throw new Error("Expected function, string, or object as test")});function df(e){const t=[];let r=-1;for(;++r":""))+")"})}return g;function g(){let p=yl,x,S,D;if((!t||i(l,c,d[d.length-1]||void 0))&&(p=Ef(r(l,d)),p[0]===Aa))return p;if("children"in l&&l.children){const _=l;if(_.children&&p[0]!==vl)for(S=(n?_.children.length:-1)+u,D=d.concat(_);S>-1&&S<_.children.length;){const N=_.children[S];if(x=s(N,S,D)(),x[0]===Aa)return x;S=typeof x[1]=="number"?x[1]:S+u}}return p}}}function Ef(e){return Array.isArray(e)?e:typeof e=="number"?[bf,e]:e==null?yl:[e]}function b0(e,t,r,n){let a,i,u;typeof t=="function"&&typeof r!="function"?(i=void 0,u=t,a=r):(i=t,u=r,a=n),ci(e,i,s,a);function s(l,c){const d=c[c.length-1],f=d?d.children.indexOf(l):void 0;return u(l,f,d)}}const ka={}.hasOwnProperty,Tf={};function xf(e,t){const r=t||Tf,n=new Map,a=new Map,i=new Map,u={...nf,...r.handlers},s={all:c,applyData:vf,definitionById:n,footnoteById:a,footnoteCounts:i,footnoteOrder:[],handlers:u,one:l,options:r,patch:yf,wrap:kf};return b0(e,function(d){if(d.type==="definition"||d.type==="footnoteDefinition"){const f=d.type==="definition"?n:a,g=String(d.identifier).toUpperCase();f.has(g)||f.set(g,d)}}),s;function l(d,f){const g=d.type,p=s.handlers[g];if(ka.call(s.handlers,g)&&p)return p(s,d,f);if(s.options.passThrough&&s.options.passThrough.includes(g)){if("children"in d){const{children:S,...D}=d,_=Nr(D);return _.children=s.all(d),_}return Nr(d)}return(s.options.unknownHandler||Af)(s,d,f)}function c(d){const f=[];if("children"in d){const g=d.children;let p=-1;for(;++p0&&r.push({type:"text",value:` -`}),r}function mu(e){let t=0,r=e.charCodeAt(t);for(;r===9||r===32;)t++,r=e.charCodeAt(t);return e.slice(t)}function pu(e,t){const r=xf(e,t),n=r.one(e,void 0),a=hf(r),i=Array.isArray(n)?{type:"root",children:n}:n||{type:"root",children:[]};return a&&i.children.push({type:"text",value:` -`},a),i}function Sf(e,t){return e&&"run"in e?async function(r,n){const a=pu(r,{file:n,...t});await e.run(a,n)}:function(r,n){return pu(r,{file:n,...e||t})}}function gu(e){if(e)throw e}var q0,bu;function wf(){if(bu)return q0;bu=1;var e=Object.prototype.hasOwnProperty,t=Object.prototype.toString,r=Object.defineProperty,n=Object.getOwnPropertyDescriptor,a=function(c){return typeof Array.isArray=="function"?Array.isArray(c):t.call(c)==="[object Array]"},i=function(c){if(!c||t.call(c)!=="[object Object]")return!1;var d=e.call(c,"constructor"),f=c.constructor&&c.constructor.prototype&&e.call(c.constructor.prototype,"isPrototypeOf");if(c.constructor&&!d&&!f)return!1;var g;for(g in c);return typeof g>"u"||e.call(c,g)},u=function(c,d){r&&d.name==="__proto__"?r(c,d.name,{enumerable:!0,configurable:!0,value:d.newValue,writable:!0}):c[d.name]=d.newValue},s=function(c,d){if(d==="__proto__")if(e.call(c,d)){if(n)return n(c,d).value}else return;return c[d]};return q0=function l(){var c,d,f,g,p,x,S=arguments[0],D=1,_=arguments.length,N=!1;for(typeof S=="boolean"&&(N=S,S=arguments[1]||{},D=2),(S==null||typeof S!="object"&&typeof S!="function")&&(S={});D<_;++D)if(c=arguments[D],c!=null)for(d in c)f=s(S,d),g=s(c,d),S!==g&&(N&&g&&(i(g)||(p=a(g)))?(p?(p=!1,x=f&&a(f)?f:[]):x=f&&i(f)?f:{},u(S,{name:d,newValue:l(N,x,g)})):typeof g<"u"&&u(S,{name:d,newValue:g}));return S},q0}var Cf=wf();const Y0=zs(Cf);function Sa(e){if(typeof e!="object"||e===null)return!1;const t=Object.getPrototypeOf(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)}function _f(){const e=[],t={run:r,use:n};return t;function r(...a){let i=-1;const u=a.pop();if(typeof u!="function")throw new TypeError("Expected function as last argument, not "+u);s(null,...a);function s(l,...c){const d=e[++i];let f=-1;if(l){u(l);return}for(;++fu.length;let l;s&&u.push(a);try{l=e.apply(this,u)}catch(c){const d=c;if(s&&r)throw d;return a(d)}s||(l&&l.then&&typeof l.then=="function"?l.then(i,a):l instanceof Error?a(l):i(l))}function a(u,...s){r||(r=!0,t(u,...s))}function i(u){a(null,u)}}const At={basename:Nf,dirname:Df,extname:Of,join:Lf,sep:"/"};function Nf(e,t){if(t!==void 0&&typeof t!="string")throw new TypeError('"ext" argument must be a string');An(e);let r=0,n=-1,a=e.length,i;if(t===void 0||t.length===0||t.length>e.length){for(;a--;)if(e.codePointAt(a)===47){if(i){r=a+1;break}}else n<0&&(i=!0,n=a+1);return n<0?"":e.slice(r,n)}if(t===e)return"";let u=-1,s=t.length-1;for(;a--;)if(e.codePointAt(a)===47){if(i){r=a+1;break}}else u<0&&(i=!0,u=a+1),s>-1&&(e.codePointAt(a)===t.codePointAt(s--)?s<0&&(n=a):(s=-1,n=u));return r===n?n=u:n<0&&(n=e.length),e.slice(r,n)}function Df(e){if(An(e),e.length===0)return".";let t=-1,r=e.length,n;for(;--r;)if(e.codePointAt(r)===47){if(n){t=r;break}}else n||(n=!0);return t<0?e.codePointAt(0)===47?"/":".":t===1&&e.codePointAt(0)===47?"//":e.slice(0,t)}function Of(e){An(e);let t=e.length,r=-1,n=0,a=-1,i=0,u;for(;t--;){const s=e.codePointAt(t);if(s===47){if(u){n=t+1;break}continue}r<0&&(u=!0,r=t+1),s===46?a<0?a=t:i!==1&&(i=1):a>-1&&(i=-1)}return a<0||r<0||i===0||i===1&&a===r-1&&a===n+1?"":e.slice(a,r)}function Lf(...e){let t=-1,r;for(;++t0&&e.codePointAt(e.length-1)===47&&(r+="/"),t?"/"+r:r}function Mf(e,t){let r="",n=0,a=-1,i=0,u=-1,s,l;for(;++u<=e.length;){if(u2){if(l=r.lastIndexOf("/"),l!==r.length-1){l<0?(r="",n=0):(r=r.slice(0,l),n=r.length-1-r.lastIndexOf("/")),a=u,i=0;continue}}else if(r.length>0){r="",n=0,a=u,i=0;continue}}t&&(r=r.length>0?r+"/..":"..",n=2)}else r.length>0?r+="/"+e.slice(a+1,u):r=e.slice(a+1,u),n=u-a-1;a=u,i=0}else s===46&&i>-1?i++:i=-1}return r}function An(e){if(typeof e!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}const Pf={cwd:Bf};function Bf(){return"/"}function wa(e){return!!(e!==null&&typeof e=="object"&&"href"in e&&e.href&&"protocol"in e&&e.protocol&&e.auth===void 0)}function Ff(e){if(typeof e=="string")e=new URL(e);else if(!wa(e)){const t=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw t.code="ERR_INVALID_ARG_TYPE",t}if(e.protocol!=="file:"){const t=new TypeError("The URL must be of scheme file");throw t.code="ERR_INVALID_URL_SCHEME",t}return Hf(e)}function Hf(e){if(e.hostname!==""){const n=new TypeError('File URL host must be "localhost" or empty on darwin');throw n.code="ERR_INVALID_FILE_URL_HOST",n}const t=e.pathname;let r=-1;for(;++r0){let[p,...x]=d;const S=n[g][1];Sa(S)&&Sa(p)&&(p=Y0(!0,S,p)),n[g]=[c,p,...x]}}}}const Yf=new hi().freeze();function W0(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `parser`")}function X0(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `compiler`")}function $0(e,t){if(t)throw new Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function Tu(e){if(!Sa(e)||typeof e.type!="string")throw new TypeError("Expected node, got `"+e+"`")}function xu(e,t,r){if(!r)throw new Error("`"+e+"` finished async. Use `"+t+"` instead")}function Bn(e){return Gf(e)?e:new Al(e)}function Gf(e){return!!(e&&typeof e=="object"&&"message"in e&&"messages"in e)}function Vf(e){return typeof e=="string"||jf(e)}function jf(e){return!!(e&&typeof e=="object"&&"byteLength"in e&&"byteOffset"in e)}const Wf="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",yu=[],vu={allowDangerousHtml:!0},Xf=/^(https?|ircs?|mailto|xmpp)$/i,$f=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"className",id:"remove-classname"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function Qf(e){const t=Kf(e),r=Jf(e);return Zf(t.runSync(t.parse(r),r),e)}function Kf(e){const t=e.rehypePlugins||yu,r=e.remarkPlugins||yu,n=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...vu}:vu;return Yf().use(Dd).use(r).use(Sf,n).use(t)}function Jf(e){const t=e.children||"",r=new Al;return typeof t=="string"&&(r.value=t),r}function Zf(e,t){const r=t.allowedElements,n=t.allowElement,a=t.components,i=t.disallowedElements,u=t.skipHtml,s=t.unwrapDisallowed,l=t.urlTransform||em;for(const d of $f)Object.hasOwn(t,d.from)&&(""+d.from+(d.to?"use `"+d.to+"` instead":"remove it")+Wf+d.id,void 0);return b0(e,c),m1(e,{Fragment:pe.Fragment,components:a,ignoreInvalidStyle:!0,jsx:pe.jsx,jsxs:pe.jsxs,passKeys:!0,passNode:!0});function c(d,f,g){if(d.type==="raw"&&g&&typeof f=="number")return u?g.children.splice(f,1):g.children[f]={type:"text",value:d.value},f;if(d.type==="element"){let p;for(p in H0)if(Object.hasOwn(H0,p)&&Object.hasOwn(d.properties,p)){const x=d.properties[p],S=H0[p];(S===null||S.includes(d.tagName))&&(d.properties[p]=l(String(x||""),p,d))}}if(d.type==="element"){let p=r?!r.includes(d.tagName):i?i.includes(d.tagName):!1;if(!p&&n&&typeof f=="number"&&(p=!n(d,f,g)),p&&g&&typeof f=="number")return s&&d.children?g.children.splice(f,1,...d.children):g.children.splice(f,1),f}}}function em(e){const t=e.indexOf(":"),r=e.indexOf("?"),n=e.indexOf("#"),a=e.indexOf("/");return t===-1||a!==-1&&t>a||r!==-1&&t>r||n!==-1&&t>n||Xf.test(e.slice(0,t))?e:""}function Au(e,t){const r=String(e);if(typeof t!="string")throw new TypeError("Expected character");let n=0,a=r.indexOf(t);for(;a!==-1;)n++,a=r.indexOf(t,a+t.length);return n}function tm(e){if(typeof e!="string")throw new TypeError("Expected a string");return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}function rm(e,t,r){const a=vn((r||{}).ignore||[]),i=nm(t);let u=-1;for(;++u0?{type:"text",value:L}:void 0),L===!1?g.lastIndex=W+1:(x!==W&&N.push({type:"text",value:c.value.slice(x,W)}),Array.isArray(L)?N.push(...L):L&&N.push(L),x=W+M[0].length,_=!0),!g.global)break;M=g.exec(c.value)}return _?(x?\]}]+$/.exec(e);if(!t)return[e,void 0];e=e.slice(0,t.index);let r=t[0],n=r.indexOf(")");const a=Au(e,"(");let i=Au(e,")");for(;n!==-1&&a>i;)e+=r.slice(0,n+1),r=r.slice(n+1),n=r.indexOf(")"),i++;return[e,r]}function kl(e,t){const r=e.input.charCodeAt(e.index-1);return(e.index===0||pr(r)||f0(r))&&(!t||r!==47)}Sl.peek=wm;function Em(){this.buffer()}function Tm(e){this.enter({type:"footnoteReference",identifier:"",label:""},e)}function xm(){this.buffer()}function ym(e){this.enter({type:"footnoteDefinition",identifier:"",label:"",children:[]},e)}function vm(e){const t=this.resume(),r=this.stack[this.stack.length-1];r.type,r.identifier=xt(this.sliceSerialize(e)).toLowerCase(),r.label=t}function Am(e){this.exit(e)}function km(e){const t=this.resume(),r=this.stack[this.stack.length-1];r.type,r.identifier=xt(this.sliceSerialize(e)).toLowerCase(),r.label=t}function Sm(e){this.exit(e)}function wm(){return"["}function Sl(e,t,r,n){const a=r.createTracker(n);let i=a.move("[^");const u=r.enter("footnoteReference"),s=r.enter("reference");return i+=a.move(r.safe(r.associationId(e),{after:"]",before:i})),s(),u(),i+=a.move("]"),i}function Cm(){return{enter:{gfmFootnoteCallString:Em,gfmFootnoteCall:Tm,gfmFootnoteDefinitionLabelString:xm,gfmFootnoteDefinition:ym},exit:{gfmFootnoteCallString:vm,gfmFootnoteCall:Am,gfmFootnoteDefinitionLabelString:km,gfmFootnoteDefinition:Sm}}}function _m(e){let t=!1;return e&&e.firstLineBlank&&(t=!0),{handlers:{footnoteDefinition:r,footnoteReference:Sl},unsafe:[{character:"[",inConstruct:["label","phrasing","reference"]}]};function r(n,a,i,u){const s=i.createTracker(u);let l=s.move("[^");const c=i.enter("footnoteDefinition"),d=i.enter("label");return l+=s.move(i.safe(i.associationId(n),{before:l,after:"]"})),d(),l+=s.move("]:"),n.children&&n.children.length>0&&(s.shift(4),l+=s.move((t?` -`:" ")+i.indentLines(i.containerFlow(n,s.current()),t?wl:Im))),c(),l}}function Im(e,t,r){return t===0?e:wl(e,t,r)}function wl(e,t,r){return(r?"":" ")+e}const Nm=["autolink","destinationLiteral","destinationRaw","reference","titleQuote","titleApostrophe"];Cl.peek=Mm;function Dm(){return{canContainEols:["delete"],enter:{strikethrough:Lm},exit:{strikethrough:Rm}}}function Om(){return{unsafe:[{character:"~",inConstruct:"phrasing",notInConstruct:Nm}],handlers:{delete:Cl}}}function Lm(e){this.enter({type:"delete",children:[]},e)}function Rm(e){this.exit(e)}function Cl(e,t,r,n){const a=r.createTracker(n),i=r.enter("strikethrough");let u=a.move("~~");return u+=r.containerPhrasing(e,{...a.current(),before:u,after:"~"}),u+=a.move("~~"),i(),u}function Mm(){return"~"}function Pm(e){return e.length}function Bm(e,t){const r=t||{},n=(r.align||[]).concat(),a=r.stringLength||Pm,i=[],u=[],s=[],l=[];let c=0,d=-1;for(;++dc&&(c=e[d].length);++_l[_])&&(l[_]=M)}S.push(N)}u[d]=S,s[d]=D}let f=-1;if(typeof n=="object"&&"length"in n)for(;++fl[f]&&(l[f]=N),p[f]=N),g[f]=M}u.splice(1,0,g),s.splice(1,0,p),d=-1;const x=[];for(;++d "),i.shift(2);const u=r.indentLines(r.containerFlow(e,i.current()),zm);return a(),u}function zm(e,t,r){return">"+(r?"":" ")+e}function Um(e,t){return wu(e,t.inConstruct,!0)&&!wu(e,t.notInConstruct,!1)}function wu(e,t,r){if(typeof t=="string"&&(t=[t]),!t||t.length===0)return r;let n=-1;for(;++nu&&(u=i):i=1,a=n+t.length,n=r.indexOf(t,a);return u}function qm(e,t){return!!(t.options.fences===!1&&e.value&&!e.lang&&/[^ \r\n]/.test(e.value)&&!/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(e.value))}function Ym(e){const t=e.options.fence||"`";if(t!=="`"&&t!=="~")throw new Error("Cannot serialize code with `"+t+"` for `options.fence`, expected `` ` `` or `~`");return t}function Gm(e,t,r,n){const a=Ym(r),i=e.value||"",u=a==="`"?"GraveAccent":"Tilde";if(qm(e,r)){const f=r.enter("codeIndented"),g=r.indentLines(i,Vm);return f(),g}const s=r.createTracker(n),l=a.repeat(Math.max(Il(i,a)+1,3)),c=r.enter("codeFenced");let d=s.move(l);if(e.lang){const f=r.enter(`codeFencedLang${u}`);d+=s.move(r.safe(e.lang,{before:d,after:" ",encode:["`"],...s.current()})),f()}if(e.lang&&e.meta){const f=r.enter(`codeFencedMeta${u}`);d+=s.move(" "),d+=s.move(r.safe(e.meta,{before:d,after:` -`,encode:["`"],...s.current()})),f()}return d+=s.move(` -`),i&&(d+=s.move(i+` -`)),d+=s.move(l),c(),d}function Vm(e,t,r){return(r?"":" ")+e}function di(e){const t=e.options.quote||'"';if(t!=='"'&&t!=="'")throw new Error("Cannot serialize title with `"+t+"` for `options.quote`, expected `\"`, or `'`");return t}function jm(e,t,r,n){const a=di(r),i=a==='"'?"Quote":"Apostrophe",u=r.enter("definition");let s=r.enter("label");const l=r.createTracker(n);let c=l.move("[");return c+=l.move(r.safe(r.associationId(e),{before:c,after:"]",...l.current()})),c+=l.move("]: "),s(),!e.url||/[\0- \u007F]/.test(e.url)?(s=r.enter("destinationLiteral"),c+=l.move("<"),c+=l.move(r.safe(e.url,{before:c,after:">",...l.current()})),c+=l.move(">")):(s=r.enter("destinationRaw"),c+=l.move(r.safe(e.url,{before:c,after:e.title?" ":` -`,...l.current()}))),s(),e.title&&(s=r.enter(`title${i}`),c+=l.move(" "+a),c+=l.move(r.safe(e.title,{before:c,after:a,...l.current()})),c+=l.move(a),s()),u(),c}function Wm(e){const t=e.options.emphasis||"*";if(t!=="*"&&t!=="_")throw new Error("Cannot serialize emphasis with `"+t+"` for `options.emphasis`, expected `*`, or `_`");return t}function pn(e){return"&#x"+e.toString(16).toUpperCase()+";"}function t0(e,t,r){const n=Ir(e),a=Ir(t);return n===void 0?a===void 0?r==="_"?{inside:!0,outside:!0}:{inside:!1,outside:!1}:a===1?{inside:!0,outside:!0}:{inside:!1,outside:!0}:n===1?a===void 0?{inside:!1,outside:!1}:a===1?{inside:!0,outside:!0}:{inside:!1,outside:!1}:a===void 0?{inside:!1,outside:!1}:a===1?{inside:!0,outside:!1}:{inside:!1,outside:!1}}Nl.peek=Xm;function Nl(e,t,r,n){const a=Wm(r),i=r.enter("emphasis"),u=r.createTracker(n),s=u.move(a);let l=u.move(r.containerPhrasing(e,{after:a,before:s,...u.current()}));const c=l.charCodeAt(0),d=t0(n.before.charCodeAt(n.before.length-1),c,a);d.inside&&(l=pn(c)+l.slice(1));const f=l.charCodeAt(l.length-1),g=t0(n.after.charCodeAt(0),f,a);g.inside&&(l=l.slice(0,-1)+pn(f));const p=u.move(a);return i(),r.attentionEncodeSurroundingInfo={after:g.outside,before:d.outside},s+l+p}function Xm(e,t,r){return r.options.emphasis||"*"}function $m(e,t){let r=!1;return b0(e,function(n){if("value"in n&&/\r?\n|\r/.test(n.value)||n.type==="break")return r=!0,Aa}),!!((!e.depth||e.depth<3)&&ni(e)&&(t.options.setext||r))}function Qm(e,t,r,n){const a=Math.max(Math.min(6,e.depth||1),1),i=r.createTracker(n);if($m(e,r)){const d=r.enter("headingSetext"),f=r.enter("phrasing"),g=r.containerPhrasing(e,{...i.current(),before:` -`,after:` -`});return f(),d(),g+` -`+(a===1?"=":"-").repeat(g.length-(Math.max(g.lastIndexOf("\r"),g.lastIndexOf(` -`))+1))}const u="#".repeat(a),s=r.enter("headingAtx"),l=r.enter("phrasing");i.move(u+" ");let c=r.containerPhrasing(e,{before:"# ",after:` -`,...i.current()});return/^[\t ]/.test(c)&&(c=pn(c.charCodeAt(0))+c.slice(1)),c=c?u+" "+c:u,r.options.closeAtx&&(c+=" "+u),l(),s(),c}Dl.peek=Km;function Dl(e){return e.value||""}function Km(){return"<"}Ol.peek=Jm;function Ol(e,t,r,n){const a=di(r),i=a==='"'?"Quote":"Apostrophe",u=r.enter("image");let s=r.enter("label");const l=r.createTracker(n);let c=l.move("![");return c+=l.move(r.safe(e.alt,{before:c,after:"]",...l.current()})),c+=l.move("]("),s(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(s=r.enter("destinationLiteral"),c+=l.move("<"),c+=l.move(r.safe(e.url,{before:c,after:">",...l.current()})),c+=l.move(">")):(s=r.enter("destinationRaw"),c+=l.move(r.safe(e.url,{before:c,after:e.title?" ":")",...l.current()}))),s(),e.title&&(s=r.enter(`title${i}`),c+=l.move(" "+a),c+=l.move(r.safe(e.title,{before:c,after:a,...l.current()})),c+=l.move(a),s()),c+=l.move(")"),u(),c}function Jm(){return"!"}Ll.peek=Zm;function Ll(e,t,r,n){const a=e.referenceType,i=r.enter("imageReference");let u=r.enter("label");const s=r.createTracker(n);let l=s.move("![");const c=r.safe(e.alt,{before:l,after:"]",...s.current()});l+=s.move(c+"]["),u();const d=r.stack;r.stack=[],u=r.enter("reference");const f=r.safe(r.associationId(e),{before:l,after:"]",...s.current()});return u(),r.stack=d,i(),a==="full"||!c||c!==f?l+=s.move(f+"]"):a==="shortcut"?l=l.slice(0,-1):l+=s.move("]"),l}function Zm(){return"!"}Rl.peek=e2;function Rl(e,t,r){let n=e.value||"",a="`",i=-1;for(;new RegExp("(^|[^`])"+a+"([^`]|$)").test(n);)a+="`";for(/[^ \r\n]/.test(n)&&(/^[ \r\n]/.test(n)&&/[ \r\n]$/.test(n)||/^`|`$/.test(n))&&(n=" "+n+" ");++i\u007F]/.test(e.url))}Pl.peek=t2;function Pl(e,t,r,n){const a=di(r),i=a==='"'?"Quote":"Apostrophe",u=r.createTracker(n);let s,l;if(Ml(e,r)){const d=r.stack;r.stack=[],s=r.enter("autolink");let f=u.move("<");return f+=u.move(r.containerPhrasing(e,{before:f,after:">",...u.current()})),f+=u.move(">"),s(),r.stack=d,f}s=r.enter("link"),l=r.enter("label");let c=u.move("[");return c+=u.move(r.containerPhrasing(e,{before:c,after:"](",...u.current()})),c+=u.move("]("),l(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(l=r.enter("destinationLiteral"),c+=u.move("<"),c+=u.move(r.safe(e.url,{before:c,after:">",...u.current()})),c+=u.move(">")):(l=r.enter("destinationRaw"),c+=u.move(r.safe(e.url,{before:c,after:e.title?" ":")",...u.current()}))),l(),e.title&&(l=r.enter(`title${i}`),c+=u.move(" "+a),c+=u.move(r.safe(e.title,{before:c,after:a,...u.current()})),c+=u.move(a),l()),c+=u.move(")"),s(),c}function t2(e,t,r){return Ml(e,r)?"<":"["}Bl.peek=r2;function Bl(e,t,r,n){const a=e.referenceType,i=r.enter("linkReference");let u=r.enter("label");const s=r.createTracker(n);let l=s.move("[");const c=r.containerPhrasing(e,{before:l,after:"]",...s.current()});l+=s.move(c+"]["),u();const d=r.stack;r.stack=[],u=r.enter("reference");const f=r.safe(r.associationId(e),{before:l,after:"]",...s.current()});return u(),r.stack=d,i(),a==="full"||!c||c!==f?l+=s.move(f+"]"):a==="shortcut"?l=l.slice(0,-1):l+=s.move("]"),l}function r2(){return"["}function fi(e){const t=e.options.bullet||"*";if(t!=="*"&&t!=="+"&&t!=="-")throw new Error("Cannot serialize items with `"+t+"` for `options.bullet`, expected `*`, `+`, or `-`");return t}function n2(e){const t=fi(e),r=e.options.bulletOther;if(!r)return t==="*"?"-":"*";if(r!=="*"&&r!=="+"&&r!=="-")throw new Error("Cannot serialize items with `"+r+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(r===t)throw new Error("Expected `bullet` (`"+t+"`) and `bulletOther` (`"+r+"`) to be different");return r}function a2(e){const t=e.options.bulletOrdered||".";if(t!=="."&&t!==")")throw new Error("Cannot serialize items with `"+t+"` for `options.bulletOrdered`, expected `.` or `)`");return t}function Fl(e){const t=e.options.rule||"*";if(t!=="*"&&t!=="-"&&t!=="_")throw new Error("Cannot serialize rules with `"+t+"` for `options.rule`, expected `*`, `-`, or `_`");return t}function i2(e,t,r,n){const a=r.enter("list"),i=r.bulletCurrent;let u=e.ordered?a2(r):fi(r);const s=e.ordered?u==="."?")":".":n2(r);let l=t&&r.bulletLastUsed?u===r.bulletLastUsed:!1;if(!e.ordered){const d=e.children?e.children[0]:void 0;if((u==="*"||u==="-")&&d&&(!d.children||!d.children[0])&&r.stack[r.stack.length-1]==="list"&&r.stack[r.stack.length-2]==="listItem"&&r.stack[r.stack.length-3]==="list"&&r.stack[r.stack.length-4]==="listItem"&&r.indexStack[r.indexStack.length-1]===0&&r.indexStack[r.indexStack.length-2]===0&&r.indexStack[r.indexStack.length-3]===0&&(l=!0),Fl(r)===u&&d){let f=-1;for(;++f-1?t.start:1)+(r.options.incrementListMarker===!1?0:t.children.indexOf(e))+i);let u=i.length+1;(a==="tab"||a==="mixed"&&(t&&t.type==="list"&&t.spread||e.spread))&&(u=Math.ceil(u/4)*4);const s=r.createTracker(n);s.move(i+" ".repeat(u-i.length)),s.shift(u);const l=r.enter("listItem"),c=r.indentLines(r.containerFlow(e,s.current()),d);return l(),c;function d(f,g,p){return g?(p?"":" ".repeat(u))+f:(p?i:i+" ".repeat(u-i.length))+f}}function l2(e,t,r,n){const a=r.enter("paragraph"),i=r.enter("phrasing"),u=r.containerPhrasing(e,n);return i(),a(),u}const o2=vn(["break","delete","emphasis","footnote","footnoteReference","image","imageReference","inlineCode","inlineMath","link","linkReference","mdxJsxTextElement","mdxTextExpression","strong","text","textDirective"]);function c2(e,t,r,n){return(e.children.some(function(u){return o2(u)})?r.containerPhrasing:r.containerFlow).call(r,e,n)}function h2(e){const t=e.options.strong||"*";if(t!=="*"&&t!=="_")throw new Error("Cannot serialize strong with `"+t+"` for `options.strong`, expected `*`, or `_`");return t}Hl.peek=d2;function Hl(e,t,r,n){const a=h2(r),i=r.enter("strong"),u=r.createTracker(n),s=u.move(a+a);let l=u.move(r.containerPhrasing(e,{after:a,before:s,...u.current()}));const c=l.charCodeAt(0),d=t0(n.before.charCodeAt(n.before.length-1),c,a);d.inside&&(l=pn(c)+l.slice(1));const f=l.charCodeAt(l.length-1),g=t0(n.after.charCodeAt(0),f,a);g.inside&&(l=l.slice(0,-1)+pn(f));const p=u.move(a+a);return i(),r.attentionEncodeSurroundingInfo={after:g.outside,before:d.outside},s+l+p}function d2(e,t,r){return r.options.strong||"*"}function f2(e,t,r,n){return r.safe(e.value,n)}function m2(e){const t=e.options.ruleRepetition||3;if(t<3)throw new Error("Cannot serialize rules with repetition `"+t+"` for `options.ruleRepetition`, expected `3` or more");return t}function p2(e,t,r){const n=(Fl(r)+(r.options.ruleSpaces?" ":"")).repeat(m2(r));return r.options.ruleSpaces?n.slice(0,-1):n}const zl={blockquote:Hm,break:Cu,code:Gm,definition:jm,emphasis:Nl,hardBreak:Cu,heading:Qm,html:Dl,image:Ol,imageReference:Ll,inlineCode:Rl,link:Pl,linkReference:Bl,list:i2,listItem:s2,paragraph:l2,root:c2,strong:Hl,text:f2,thematicBreak:p2};function g2(){return{enter:{table:b2,tableData:_u,tableHeader:_u,tableRow:T2},exit:{codeText:x2,table:E2,tableData:Z0,tableHeader:Z0,tableRow:Z0}}}function b2(e){const t=e._align;this.enter({type:"table",align:t.map(function(r){return r==="none"?null:r}),children:[]},e),this.data.inTable=!0}function E2(e){this.exit(e),this.data.inTable=void 0}function T2(e){this.enter({type:"tableRow",children:[]},e)}function Z0(e){this.exit(e)}function _u(e){this.enter({type:"tableCell",children:[]},e)}function x2(e){let t=this.resume();this.data.inTable&&(t=t.replace(/\\([\\|])/g,y2));const r=this.stack[this.stack.length-1];r.type,r.value=t,this.exit(e)}function y2(e,t){return t==="|"?t:e}function v2(e){const t=e||{},r=t.tableCellPadding,n=t.tablePipeAlign,a=t.stringLength,i=r?" ":"|";return{unsafe:[{character:"\r",inConstruct:"tableCell"},{character:` -`,inConstruct:"tableCell"},{atBreak:!0,character:"|",after:"[ :-]"},{character:"|",inConstruct:"tableCell"},{atBreak:!0,character:":",after:"-"},{atBreak:!0,character:"-",after:"[:|-]"}],handlers:{inlineCode:g,table:u,tableCell:l,tableRow:s}};function u(p,x,S,D){return c(d(p,S,D),p.align)}function s(p,x,S,D){const _=f(p,S,D),N=c([_]);return N.slice(0,N.indexOf(` -`))}function l(p,x,S,D){const _=S.enter("tableCell"),N=S.enter("phrasing"),M=S.containerPhrasing(p,{...D,before:i,after:i});return N(),_(),M}function c(p,x){return Bm(p,{align:x,alignDelimiters:n,padding:r,stringLength:a})}function d(p,x,S){const D=p.children;let _=-1;const N=[],M=x.enter("table");for(;++_0&&!r&&(e[e.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),r}const z2={tokenize:X2,partial:!0};function U2(){return{document:{91:{name:"gfmFootnoteDefinition",tokenize:V2,continuation:{tokenize:j2},exit:W2}},text:{91:{name:"gfmFootnoteCall",tokenize:G2},93:{name:"gfmPotentialFootnoteCall",add:"after",tokenize:q2,resolveTo:Y2}}}}function q2(e,t,r){const n=this;let a=n.events.length;const i=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]);let u;for(;a--;){const l=n.events[a][1];if(l.type==="labelImage"){u=l;break}if(l.type==="gfmFootnoteCall"||l.type==="labelLink"||l.type==="label"||l.type==="image"||l.type==="link")break}return s;function s(l){if(!u||!u._balanced)return r(l);const c=xt(n.sliceSerialize({start:u.end,end:n.now()}));return c.codePointAt(0)!==94||!i.includes(c.slice(1))?r(l):(e.enter("gfmFootnoteCallLabelMarker"),e.consume(l),e.exit("gfmFootnoteCallLabelMarker"),t(l))}}function Y2(e,t){let r=e.length;for(;r--;)if(e[r][1].type==="labelImage"&&e[r][0]==="enter"){e[r][1];break}e[r+1][1].type="data",e[r+3][1].type="gfmFootnoteCallLabelMarker";const n={type:"gfmFootnoteCall",start:Object.assign({},e[r+3][1].start),end:Object.assign({},e[e.length-1][1].end)},a={type:"gfmFootnoteCallMarker",start:Object.assign({},e[r+3][1].end),end:Object.assign({},e[r+3][1].end)};a.end.column++,a.end.offset++,a.end._bufferIndex++;const i={type:"gfmFootnoteCallString",start:Object.assign({},a.end),end:Object.assign({},e[e.length-1][1].start)},u={type:"chunkString",contentType:"string",start:Object.assign({},i.start),end:Object.assign({},i.end)},s=[e[r+1],e[r+2],["enter",n,t],e[r+3],e[r+4],["enter",a,t],["exit",a,t],["enter",i,t],["enter",u,t],["exit",u,t],["exit",i,t],e[e.length-2],e[e.length-1],["exit",n,t]];return e.splice(r,e.length-r+1,...s),e}function G2(e,t,r){const n=this,a=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]);let i=0,u;return s;function s(f){return e.enter("gfmFootnoteCall"),e.enter("gfmFootnoteCallLabelMarker"),e.consume(f),e.exit("gfmFootnoteCallLabelMarker"),l}function l(f){return f!==94?r(f):(e.enter("gfmFootnoteCallMarker"),e.consume(f),e.exit("gfmFootnoteCallMarker"),e.enter("gfmFootnoteCallString"),e.enter("chunkString").contentType="string",c)}function c(f){if(i>999||f===93&&!u||f===null||f===91||ve(f))return r(f);if(f===93){e.exit("chunkString");const g=e.exit("gfmFootnoteCallString");return a.includes(xt(n.sliceSerialize(g)))?(e.enter("gfmFootnoteCallLabelMarker"),e.consume(f),e.exit("gfmFootnoteCallLabelMarker"),e.exit("gfmFootnoteCall"),t):r(f)}return ve(f)||(u=!0),i++,e.consume(f),f===92?d:c}function d(f){return f===91||f===92||f===93?(e.consume(f),i++,c):c(f)}}function V2(e,t,r){const n=this,a=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]);let i,u=0,s;return l;function l(x){return e.enter("gfmFootnoteDefinition")._container=!0,e.enter("gfmFootnoteDefinitionLabel"),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(x),e.exit("gfmFootnoteDefinitionLabelMarker"),c}function c(x){return x===94?(e.enter("gfmFootnoteDefinitionMarker"),e.consume(x),e.exit("gfmFootnoteDefinitionMarker"),e.enter("gfmFootnoteDefinitionLabelString"),e.enter("chunkString").contentType="string",d):r(x)}function d(x){if(u>999||x===93&&!s||x===null||x===91||ve(x))return r(x);if(x===93){e.exit("chunkString");const S=e.exit("gfmFootnoteDefinitionLabelString");return i=xt(n.sliceSerialize(S)),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(x),e.exit("gfmFootnoteDefinitionLabelMarker"),e.exit("gfmFootnoteDefinitionLabel"),g}return ve(x)||(s=!0),u++,e.consume(x),x===92?f:d}function f(x){return x===91||x===92||x===93?(e.consume(x),u++,d):d(x)}function g(x){return x===58?(e.enter("definitionMarker"),e.consume(x),e.exit("definitionMarker"),a.includes(i)||a.push(i),fe(e,p,"gfmFootnoteDefinitionWhitespace")):r(x)}function p(x){return t(x)}}function j2(e,t,r){return e.check(yn,t,e.attempt(z2,t,r))}function W2(e){e.exit("gfmFootnoteDefinition")}function X2(e,t,r){const n=this;return fe(e,a,"gfmFootnoteDefinitionIndent",5);function a(i){const u=n.events[n.events.length-1];return u&&u[1].type==="gfmFootnoteDefinitionIndent"&&u[2].sliceSerialize(u[1],!0).length===4?t(i):r(i)}}function $2(e){let r=(e||{}).singleTilde;const n={name:"strikethrough",tokenize:i,resolveAll:a};return r==null&&(r=!0),{text:{126:n},insideSpan:{null:[n]},attentionMarkers:{null:[126]}};function a(u,s){let l=-1;for(;++l1?l(x):(u.consume(x),f++,p);if(f<2&&!r)return l(x);const D=u.exit("strikethroughSequenceTemporary"),_=Ir(x);return D._open=!_||_===2&&!!S,D._close=!S||S===2&&!!_,s(x)}}}class Q2{constructor(){this.map=[]}add(t,r,n){K2(this,t,r,n)}consume(t){if(this.map.sort(function(i,u){return i[0]-u[0]}),this.map.length===0)return;let r=this.map.length;const n=[];for(;r>0;)r-=1,n.push(t.slice(this.map[r][0]+this.map[r][1]),this.map[r][2]),t.length=this.map[r][0];n.push(t.slice()),t.length=0;let a=n.pop();for(;a;){for(const i of a)t.push(i);a=n.pop()}this.map.length=0}}function K2(e,t,r,n){let a=0;if(!(r===0&&n.length===0)){for(;a-1;){const ne=n.events[J][1].type;if(ne==="lineEnding"||ne==="linePrefix")J--;else break}const Q=J>-1?n.events[J][1].type:null,be=Q==="tableHead"||Q==="tableRow"?L:l;return be===L&&n.parser.lazy[n.now().line]?r(R):be(R)}function l(R){return e.enter("tableHead"),e.enter("tableRow"),c(R)}function c(R){return R===124||(u=!0,i+=1),d(R)}function d(R){return R===null?r(R):ae(R)?i>1?(i=0,n.interrupt=!0,e.exit("tableRow"),e.enter("lineEnding"),e.consume(R),e.exit("lineEnding"),p):r(R):ge(R)?fe(e,d,"whitespace")(R):(i+=1,u&&(u=!1,a+=1),R===124?(e.enter("tableCellDivider"),e.consume(R),e.exit("tableCellDivider"),u=!0,d):(e.enter("data"),f(R)))}function f(R){return R===null||R===124||ve(R)?(e.exit("data"),d(R)):(e.consume(R),R===92?g:f)}function g(R){return R===92||R===124?(e.consume(R),f):f(R)}function p(R){return n.interrupt=!1,n.parser.lazy[n.now().line]?r(R):(e.enter("tableDelimiterRow"),u=!1,ge(R)?fe(e,x,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(R):x(R))}function x(R){return R===45||R===58?D(R):R===124?(u=!0,e.enter("tableCellDivider"),e.consume(R),e.exit("tableCellDivider"),S):j(R)}function S(R){return ge(R)?fe(e,D,"whitespace")(R):D(R)}function D(R){return R===58?(i+=1,u=!0,e.enter("tableDelimiterMarker"),e.consume(R),e.exit("tableDelimiterMarker"),_):R===45?(i+=1,_(R)):R===null||ae(R)?W(R):j(R)}function _(R){return R===45?(e.enter("tableDelimiterFiller"),N(R)):j(R)}function N(R){return R===45?(e.consume(R),N):R===58?(u=!0,e.exit("tableDelimiterFiller"),e.enter("tableDelimiterMarker"),e.consume(R),e.exit("tableDelimiterMarker"),M):(e.exit("tableDelimiterFiller"),M(R))}function M(R){return ge(R)?fe(e,W,"whitespace")(R):W(R)}function W(R){return R===124?x(R):R===null||ae(R)?!u||a!==i?j(R):(e.exit("tableDelimiterRow"),e.exit("tableHead"),t(R)):j(R)}function j(R){return r(R)}function L(R){return e.enter("tableRow"),ee(R)}function ee(R){return R===124?(e.enter("tableCellDivider"),e.consume(R),e.exit("tableCellDivider"),ee):R===null||ae(R)?(e.exit("tableRow"),t(R)):ge(R)?fe(e,ee,"whitespace")(R):(e.enter("data"),re(R))}function re(R){return R===null||R===124||ve(R)?(e.exit("data"),ee(R)):(e.consume(R),R===92?K:re)}function K(R){return R===92||R===124?(e.consume(R),re):re(R)}}function t4(e,t){let r=-1,n=!0,a=0,i=[0,0,0,0],u=[0,0,0,0],s=!1,l=0,c,d,f;const g=new Q2;for(;++rr[2]+1){const x=r[2]+1,S=r[3]-r[2]-1;e.add(x,S,[])}}e.add(r[3]+1,0,[["exit",f,t]])}return a!==void 0&&(i.end=Object.assign({},wr(t.events,a)),e.add(a,0,[["exit",i,t]]),i=void 0),i}function Nu(e,t,r,n,a){const i=[],u=wr(t.events,r);a&&(a.end=Object.assign({},u),i.push(["exit",a,t])),n.end=Object.assign({},u),i.push(["exit",n,t]),e.add(r+1,0,i)}function wr(e,t){const r=e[t],n=r[0]==="enter"?"start":"end";return r[1][n]}const r4={name:"tasklistCheck",tokenize:a4};function n4(){return{text:{91:r4}}}function a4(e,t,r){const n=this;return a;function a(l){return n.previous!==null||!n._gfmTasklistFirstContentOfListItem?r(l):(e.enter("taskListCheck"),e.enter("taskListCheckMarker"),e.consume(l),e.exit("taskListCheckMarker"),i)}function i(l){return ve(l)?(e.enter("taskListCheckValueUnchecked"),e.consume(l),e.exit("taskListCheckValueUnchecked"),u):l===88||l===120?(e.enter("taskListCheckValueChecked"),e.consume(l),e.exit("taskListCheckValueChecked"),u):r(l)}function u(l){return l===93?(e.enter("taskListCheckMarker"),e.consume(l),e.exit("taskListCheckMarker"),e.exit("taskListCheck"),s):r(l)}function s(l){return ae(l)?t(l):ge(l)?e.check({tokenize:i4},t,r)(l):r(l)}}function i4(e,t,r){return fe(e,n,"whitespace");function n(a){return a===null?r(a):t(a)}}function u4(e){return rl([D2(),U2(),$2(e),Z2(),n4()])}const s4={};function l4(e){const t=this,r=e||s4,n=t.data(),a=n.micromarkExtensions||(n.micromarkExtensions=[]),i=n.fromMarkdownExtensions||(n.fromMarkdownExtensions=[]),u=n.toMarkdownExtensions||(n.toMarkdownExtensions=[]);a.push(u4(r)),i.push(C2()),u.push(_2(r))}function o4(){return{enter:{mathFlow:e,mathFlowFenceMeta:t,mathText:i},exit:{mathFlow:a,mathFlowFence:n,mathFlowFenceMeta:r,mathFlowValue:s,mathText:u,mathTextData:s}};function e(l){const c={type:"element",tagName:"code",properties:{className:["language-math","math-display"]},children:[]};this.enter({type:"math",meta:null,value:"",data:{hName:"pre",hChildren:[c]}},l)}function t(){this.buffer()}function r(){const l=this.resume(),c=this.stack[this.stack.length-1];c.type,c.meta=l}function n(){this.data.mathFlowInside||(this.buffer(),this.data.mathFlowInside=!0)}function a(l){const c=this.resume().replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,""),d=this.stack[this.stack.length-1];d.type,this.exit(l),d.value=c;const f=d.data.hChildren[0];f.type,f.tagName,f.children.push({type:"text",value:c}),this.data.mathFlowInside=void 0}function i(l){this.enter({type:"inlineMath",value:"",data:{hName:"code",hProperties:{className:["language-math","math-inline"]},hChildren:[]}},l),this.buffer()}function u(l){const c=this.resume(),d=this.stack[this.stack.length-1];d.type,this.exit(l),d.value=c,d.data.hChildren.push({type:"text",value:c})}function s(l){this.config.enter.data.call(this,l),this.config.exit.data.call(this,l)}}function c4(e){let t=(e||{}).singleDollarTextMath;return t==null&&(t=!0),n.peek=a,{unsafe:[{character:"\r",inConstruct:"mathFlowMeta"},{character:` -`,inConstruct:"mathFlowMeta"},{character:"$",after:t?void 0:"\\$",inConstruct:"phrasing"},{character:"$",inConstruct:"mathFlowMeta"},{atBreak:!0,character:"$",after:"\\$"}],handlers:{math:r,inlineMath:n}};function r(i,u,s,l){const c=i.value||"",d=s.createTracker(l),f="$".repeat(Math.max(Il(c,"$")+1,2)),g=s.enter("mathFlow");let p=d.move(f);if(i.meta){const x=s.enter("mathFlowMeta");p+=d.move(s.safe(i.meta,{after:` -`,before:p,encode:["$"],...d.current()})),x()}return p+=d.move(` -`),c&&(p+=d.move(c+` -`)),p+=d.move(f),g(),p}function n(i,u,s){let l=i.value||"",c=1;for(t||c++;new RegExp("(^|[^$])"+"\\$".repeat(c)+"([^$]|$)").test(l);)c++;const d="$".repeat(c);/[^ \r\n]/.test(l)&&(/^[ \r\n]/.test(l)&&/[ \r\n]$/.test(l)||/^\$|\$$/.test(l))&&(l=" "+l+" ");let f=-1;for(;++f15?c="…"+s.slice(a-15,a):c=s.slice(0,a);var d;i+15e.replace(E4,"-$1").toLowerCase(),x4={"&":"&",">":">","<":"<",'"':""","'":"'"},y4=/[&><"']/g,Ve=e=>String(e).replace(y4,t=>x4[t]),$n=e=>e.type==="ordgroup"||e.type==="color"?e.body.length===1?$n(e.body[0]):e:e.type==="font"?$n(e.body):e,v4=new Set(["mathord","textord","atom"]),qt=e=>v4.has($n(e).type),A4=e=>{var t=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return t?t[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(t[1])?null:t[1].toLowerCase():"_relative"},_a={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:e=>"#"+e},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(e,t)=>(t.push(e),t)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:e=>Math.max(0,e),cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:e=>Math.max(0,e),cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:e=>Math.max(0,e),cli:"-e, --max-expand ",cliProcessor:e=>e==="Infinity"?1/0:parseInt(e)},globalGroup:{type:"boolean",cli:!1}};function k4(e){if(typeof e!="string")return e.enum[0];switch(e){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{};default:throw new Error("Unexpected schema type; settings must declare an explicit default.")}}function S4(e){if(e.default!==void 0)return e.default;var t=Array.isArray(e.type)?e.type[0]:e.type;return k4(t)}function w4(e,t,r,n){var a=r[t];e[t]=a!==void 0?n.processor?n.processor(a):a:S4(n)}class pi{constructor(t){t===void 0&&(t={}),this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,t=t||{};for(var r of Object.keys(_a)){var n=_a[r];n&&w4(this,r,t,n)}}reportNonstrict(t,r,n){var a=this.strict;if(typeof a=="function"&&(a=a(t,r,n)),!(!a||a==="ignore")){if(a===!0||a==="error")throw new Y("LaTeX-incompatible input and strict mode is set to 'error': "+(r+" ["+t+"]"),n);a==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+t+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+a+"': "+r+" ["+t+"]"))}}useStrictBehavior(t,r,n){var a=this.strict;if(typeof a=="function")try{a=a(t,r,n)}catch{a="error"}return!a||a==="ignore"?!1:a===!0||a==="error"?!0:a==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+t+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+a+"': "+r+" ["+t+"]")),!1)}isTrusted(t){if("url"in t&&t.url&&!t.protocol){var r=A4(t.url);if(r==null)return!1;t.protocol=r}var n=typeof this.trust=="function"?this.trust(t):this.trust;return!!n}}class jt{constructor(t,r,n){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=t,this.size=r,this.cramped=n}sup(){return kt[C4[this.id]]}sub(){return kt[_4[this.id]]}fracNum(){return kt[I4[this.id]]}fracDen(){return kt[N4[this.id]]}cramp(){return kt[D4[this.id]]}text(){return kt[O4[this.id]]}isTight(){return this.size>=2}}var gi=0,r0=1,_r=2,Ht=3,gn=4,gt=5,Dr=6,Je=7,kt=[new jt(gi,0,!1),new jt(r0,0,!0),new jt(_r,1,!1),new jt(Ht,1,!0),new jt(gn,2,!1),new jt(gt,2,!0),new jt(Dr,3,!1),new jt(Je,3,!0)],C4=[gn,gt,gn,gt,Dr,Je,Dr,Je],_4=[gt,gt,gt,gt,Je,Je,Je,Je],I4=[_r,Ht,gn,gt,Dr,Je,Dr,Je],N4=[Ht,Ht,gt,gt,Je,Je,Je,Je],D4=[r0,r0,Ht,Ht,gt,gt,Je,Je],O4=[gi,r0,_r,Ht,_r,Ht,_r,Ht],oe={DISPLAY:kt[gi],TEXT:kt[_r],SCRIPT:kt[gn],SCRIPTSCRIPT:kt[Dr]},Ia=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];function L4(e){for(var t=0;t=a[0]&&e<=a[1])return r.name}return null}var Qn=[];Ia.forEach(e=>e.blocks.forEach(t=>Qn.push(...t)));function $l(e){for(var t=0;t=Qn[t]&&e<=Qn[t+1])return!0;return!1}var Fe=e=>e+" "+e,kr=80,R4=function(t,r){return"M95,"+(622+t+r)+` -c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14 -c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54 -c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10 -s173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429 -c69,-144,104.5,-217.7,106.5,-221 -l`+t/2.075+" -"+t+` -c5.3,-9.3,12,-14,20,-14 -H400000v`+(40+t)+`H845.2724 -s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7 -c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z -M`+(834+t)+" "+r+"h400000v"+(40+t)+"h-400000z"},M4=function(t,r){return"M263,"+(601+t+r)+`c0.7,0,18,39.7,52,119 -c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120 -c340,-704.7,510.7,-1060.3,512,-1067 -l`+t/2.084+" -"+t+` -c4.7,-7.3,11,-11,19,-11 -H40000v`+(40+t)+`H1012.3 -s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232 -c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1 -s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26 -c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z -M`+(1001+t)+" "+r+"h400000v"+(40+t)+"h-400000z"},P4=function(t,r){return"M983 "+(10+t+r)+` -l`+t/3.13+" -"+t+` -c4,-6.7,10,-10,18,-10 H400000v`+(40+t)+` -H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7 -s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744 -c-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30 -c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722 -c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5 -c53.7,-170.3,84.5,-266.8,92.5,-289.5z -M`+(1001+t)+" "+r+"h400000v"+(40+t)+"h-400000z"},B4=function(t,r){return"M424,"+(2398+t+r)+` -c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514 -c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20 -s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121 -s209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081 -l`+t/4.223+" -"+t+`c4,-6.7,10,-10,18,-10 H400000 -v`+(40+t)+`H1014.6 -s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185 -c-2,6,-10,9,-24,9 -c-8,0,-12,-0.7,-12,-2z M`+(1001+t)+" "+r+` -h400000v`+(40+t)+"h-400000z"},F4=function(t,r){return"M473,"+(2713+t+r)+` -c339.3,-1799.3,509.3,-2700,510,-2702 l`+t/5.298+" -"+t+` -c3.3,-7.3,9.3,-11,18,-11 H400000v`+(40+t)+`H1017.7 -s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9 -c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200 -c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26 -s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104, -606zM`+(1001+t)+" "+r+"h400000v"+(40+t)+"H1017.7z"},H4=function(t){var r=t/2;return"M400000 "+t+" H0 L"+r+" 0 l65 45 L145 "+(t-80)+" H400000z"},z4=function(t,r,n){var a=n-54-r-t;return"M702 "+(t+r)+"H400000"+(40+t)+` -H742v`+a+`l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1 -h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170 -c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667 -219 661 l218 661zM702 `+r+"H400000v"+(40+t)+"H742z"},U4=function(t,r,n){r=1e3*r;var a="";switch(t){case"sqrtMain":a=R4(r,kr);break;case"sqrtSize1":a=M4(r,kr);break;case"sqrtSize2":a=P4(r,kr);break;case"sqrtSize3":a=B4(r,kr);break;case"sqrtSize4":a=F4(r,kr);break;case"sqrtTall":a=z4(r,kr,n)}return a},q4=function(t,r){switch(t){case"⎜":return Fe("M291 0 H417 V"+r+" H291z");case"∣":return Fe("M145 0 H188 V"+r+" H145z");case"∥":return Fe("M145 0 H188 V"+r+" H145z")+Fe("M367 0 H410 V"+r+" H367z");case"⎟":return Fe("M457 0 H583 V"+r+" H457z");case"⎢":return Fe("M319 0 H403 V"+r+" H319z");case"⎥":return Fe("M263 0 H347 V"+r+" H263z");case"⎪":return Fe("M384 0 H504 V"+r+" H384z");case"⏐":return Fe("M312 0 H355 V"+r+" H312z");case"‖":return Fe("M257 0 H300 V"+r+" H257z")+Fe("M478 0 H521 V"+r+" H478z");default:return""}},Ou={doubleleftarrow:`M262 157 -l10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3 - 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28 - 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5 -c2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5 - 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87 --86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7 --2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z -m8 0v40h399730v-40zm0 194v40h399730v-40z`,doublerightarrow:`M399738 392l --10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5 - 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88 --33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68 --17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18 --13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782 -c-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3 --107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z`,leftarrow:`M400000 241H110l3-3c68.7-52.7 113.7-120 - 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8 --5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247 -c-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208 - 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3 - 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202 - l-3-3h399890zM100 241v40h399900v-40z`,leftbrace:`M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117 --45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7 - 5-6 9-10 13-.7 1-7.3 1-20 1H6z`,leftbraceunder:`M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13 - 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688 - 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7 --331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z`,leftgroup:`M400000 80 -H435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0 - 435 0h399565z`,leftgroupunder:`M400000 262 -H435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219 - 435 219h399565z`,leftharpoon:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3 --3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5 --18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7 --196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z`,leftharpoonplus:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5 - 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3 --4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7 --10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z -m0 0v40h400000v-40z`,leftharpoondown:`M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333 - 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5 - 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667 --152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z`,leftharpoondownplus:`M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12 - 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7 --2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0 -v40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z`,lefthook:`M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5 --83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3 --68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21 - 71.5 23h399859zM103 281v-40h399897v40z`,leftlinesegment:Fe("M40 281 V428 H0 V94 H40 V241 H400000 v40z"),leftbracketunder:Fe("M0 0 h120 V290 H399995 v120 H0z"),leftbracketover:Fe("M0 440 h120 V150 H399995 v-120 H0z"),leftmapsto:Fe("M40 281 V448H0V74H40V241H400000v40z"),leftToFrom:`M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23 --.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8 -c28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3 - 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z`,longequal:Fe("M0 50 h400000 v40H0z m0 194h40000v40H0z"),midbrace:`M200428 334 -c-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14 --53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7 - 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11 - 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z`,midbraceunder:`M199572 214 -c100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14 - 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3 - 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0 --5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z`,oiintSize1:`M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6 --320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z -m368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8 -60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z`,oiintSize2:`M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8 --451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z -m502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2 -c0 110 84 276 504 276s502.4-166 502.4-276z`,oiiintSize1:`M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6 --480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z -m525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0 -85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z`,oiiintSize2:`M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8 --707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z -m770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1 -c0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z`,rightarrow:`M0 241v40h399891c-47.3 35.3-84 78-110 128 --16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 - 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 - 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85 --40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 --12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 - 151.7 139 205zm0 0v40h399900v-40z`,rightbrace:`M400000 542l --6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5 -s-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1 -c124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z`,rightbraceunder:`M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3 - 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237 --174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z`,rightgroup:`M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0 - 3-1 3-3v-38c-76-158-257-219-435-219H0z`,rightgroupunder:`M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18 - 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z`,rightharpoon:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3 --3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2 --10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 - 69.2 92 94.5zm0 0v40h399900v-40z`,rightharpoonplus:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11 --18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7 - 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z -m0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z`,rightharpoondown:`M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8 - 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5 --7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95 --27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z`,rightharpoondownplus:`M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8 - 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 - 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3 --64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z -m0-194v40h400000v-40zm0 0v40h400000v-40z`,righthook:`M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3 - 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0 --13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21 - 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z`,rightlinesegment:Fe("M399960 241 V94 h40 V428 h-40 V281 H0 v-40z"),rightbracketunder:Fe("M399995 0 h-120 V290 H0 v120 H400000z"),rightbracketover:Fe("M399995 440 h-120 V150 H0 v-120 H399995z"),rightToFrom:`M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23 - 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32 --52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142 --167z M100 147v40h399900v-40zM0 341v40h399900v-40z`,twoheadleftarrow:`M0 167c68 40 - 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69 --70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3 --40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19 --37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101 - 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z`,twoheadrightarrow:`M400000 167 -c-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3 - 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42 - 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333 --19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70 - 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z`,tilde1:`M200 55.538c-77 0-168 73.953-177 73.953-3 0-7 --2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0 - 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0 - 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128 --68.267.847-113-73.952-191-73.952z`,tilde2:`M344 55.266c-142 0-300.638 81.316-311.5 86.418 --8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9 - 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114 -c1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751 - 181.476 676 181.476c-149 0-189-126.21-332-126.21z`,tilde3:`M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457 --11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0 - 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697 - 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696 - -338 0-409-156.573-744-156.573z`,tilde4:`M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345 --11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409 - 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9 - 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409 - -175.236-744-175.236z`,vec:`M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5 -3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11 -10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63 --1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1 --7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59 -H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359 -c-16-25.333-24-45-24-59z`,widehat1:`M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22 -c-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z`,widehat2:`M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10 --11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat3:`M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10 --11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat4:`M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10 --11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widecheck1:`M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1, --5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z`,widecheck2:`M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, --11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck3:`M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, --11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck4:`M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, --11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,baraboveleftarrow:`M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202 -c4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5 -c-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130 -s-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47 -121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6 -s2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11 -c0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z -M100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z`,rightarrowabovebar:`M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32 --27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0 -13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39 --84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5 --119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 --12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 -151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z`,baraboveshortleftharpoon:`M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 -c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17 -c2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21 -c-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40 -c-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z -M0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z`,rightharpoonaboveshortbar:`M0,241 l0,40c399126,0,399993,0,399993,0 -c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, --231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 -c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z -M0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z`,shortbaraboveleftharpoon:`M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 -c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9, -1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7, --152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z -M93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z`,shortrightharpoonabovebar:`M53,241l0,40c398570,0,399437,0,399437,0 -c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, --231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 -c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z -M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`},Y4=function(t,r){switch(t){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v1759 v84 h347 v-84 -H403z M403 1759 V0 H319 V1759 v`+r+" v1759 v84 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+r+` v1759 H0 v84 H347z -M347 1759 V0 H263 V1759 v`+r+" v1759 h84z";case"vert":return"M145 15 v585 v"+r+` v585 c2.667,10,9.667,15,21,15 -c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 -c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+r+" v585 h43z";case"doublevert":return"M145 15 v585 v"+r+` v585 c2.667,10,9.667,15,21,15 -c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 -c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+r+` v585 h43z -M367 15 v585 v`+r+` v585 c2.667,10,9.667,15,21,15 -c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 -c-10,0,-16.667,5,-20,15z M410 15 H367 v585 v`+r+" v585 h43z";case"lfloor":return"M319 602 V0 H403 V602 v"+r+` v1715 h263 v84 H319z -MM319 602 V0 H403 V602 v`+r+" v1715 H319z";case"rfloor":return"M319 602 V0 H403 V602 v"+r+` v1799 H0 v-84 H319z -MM319 602 V0 H403 V602 v`+r+" v1715 H319z";case"lceil":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v602 h84z -M403 1759 V0 H319 V1759 v`+r+" v602 h84z";case"rceil":return"M347 1759 V0 H0 V84 H263 V1759 v"+r+` v602 h84z -M347 1759 V0 h-84 V1759 v`+r+" v602 h84z";case"lparen":return`M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1 -c-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349, --36,557 l0,`+(r+84)+`c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210, -949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9 -c0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5, --544.7,-112.5,-882c-2,-104,-3,-167,-3,-189 -l0,-`+(r+92)+`c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3, --210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z`;case"rparen":return`M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3, -63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5 -c11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,`+(r+9)+` -c-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664 -c-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11 -c0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17 -c242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558 -l0,-`+(r+144)+`c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7, --470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`;default:throw new Error("Unknown stretchy delimiter.")}};function G4(e){return"toText"in e}class Br{constructor(t){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=t,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(t){return this.classes.includes(t)}toNode(){for(var t=document.createDocumentFragment(),r=0;r{if(G4(t))return t.toText();throw new Error("Expected MathDomNode with toText, got "+t.constructor.name)}).join("")}}var Na={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800},V4={ex:!0,em:!0,mu:!0},Ql=function(t){return typeof t!="string"&&(t=t.unit),t in Na||t in V4||t==="ex"},Ie=function(t,r){var n;if(t.unit in Na)n=Na[t.unit]/r.fontMetrics().ptPerEm/r.sizeMultiplier;else if(t.unit==="mu")n=r.fontMetrics().cssEmPerMu;else{var a;if(r.style.isTight()?a=r.havingStyle(r.style.text()):a=r,t.unit==="ex")n=a.fontMetrics().xHeight;else if(t.unit==="em")n=a.fontMetrics().quad;else throw new Y("Invalid unit: '"+t.unit+"'");a!==r&&(n*=a.sizeMultiplier/r.sizeMultiplier)}return Math.min(t.number*n,r.maxSize)},V=function(t){return+t.toFixed(4)+"em"},Jt=function(t){return t.filter(r=>r).join(" ")},bi=function(t){var r="";for(var n of Object.keys(t)){var a=t[n];a!==void 0&&(r+=T4(n)+":"+a+";")}return r},Kl=function(t,r,n){if(this.classes=t||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=n||{},r){r.style.isTight()&&this.classes.push("mtight");var a=r.getColor();a&&(this.style.color=a)}},Jl=function(t){var r=document.createElement(t);r.className=Jt(this.classes),Object.assign(r.style,this.style);for(var n of Object.keys(this.attributes))r.setAttribute(n,this.attributes[n]);for(var a=0;a/=\x00-\x1f]/,Zl=function(t){var r="<"+t;this.classes.length&&(r+=' class="'+Ve(Jt(this.classes))+'"');var n=bi(this.style);n&&(r+=' style="'+Ve(n)+'"');for(var a of Object.keys(this.attributes)){if(j4.test(a))throw new Y("Invalid attribute name '"+a+"'");r+=" "+a+'="'+Ve(this.attributes[a])+'"'}r+=">";for(var i=0;i",r};class Fr{constructor(t,r,n,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,this.italic=void 0,Kl.call(this,t,n,a),this.children=r||[]}setAttribute(t,r){this.attributes[t]=r}hasClass(t){return this.classes.includes(t)}toNode(){return Jl.call(this,"span")}toMarkup(){return Zl.call(this,"span")}}class E0{constructor(t,r,n,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,Kl.call(this,r,a),this.children=n||[],this.setAttribute("href",t)}setAttribute(t,r){this.attributes[t]=r}hasClass(t){return this.classes.includes(t)}toNode(){return Jl.call(this,"a")}toMarkup(){return Zl.call(this,"a")}}class W4{constructor(t,r,n){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=r,this.src=t,this.classes=["mord"],this.height=0,this.depth=0,this.maxFontSize=0,this.style=n}hasClass(t){return this.classes.includes(t)}toNode(){var t=document.createElement("img");return t.src=this.src,t.alt=this.alt,t.className="mord",Object.assign(t.style,this.style),t}toMarkup(){var t=''+Ve(this.alt)+'0&&(r=document.createElement("span"),r.style.marginRight=V(this.italic)),this.classes.length>0&&(r=r||document.createElement("span"),r.className=Jt(this.classes)),Object.keys(this.style).length>0&&(r=r||document.createElement("span"),Object.assign(r.style,this.style)),r?(r.appendChild(t),r):t}toMarkup(){var t=!1,r="0&&(n+="margin-right:"+V(this.italic)+";"),n+=bi(this.style),n&&(t=!0,r+=' style="'+Ve(n)+'"');var a=Ve(this.text);return t?(r+=">",r+=a,r+="",r):a}}class zt{constructor(t,r){this.children=void 0,this.attributes=void 0,this.children=t||[],this.attributes=r||{}}toNode(){var t="http://www.w3.org/2000/svg",r=document.createElementNS(t,"svg");for(var n of Object.keys(this.attributes))r.setAttribute(n,this.attributes[n]);for(var a=0;a':''}}class Da{constructor(t){this.attributes=void 0,this.attributes=t||{}}toNode(){var t="http://www.w3.org/2000/svg",r=document.createElementNS(t,"line");for(var n of Object.keys(this.attributes))r.setAttribute(n,this.attributes[n]);return r}toMarkup(){var t=" but got "+String(e)+".")}var K4=e=>e instanceof Fr||e instanceof E0||e instanceof Br,wt={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},Hn={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},Lu={Å:"A",Ð:"D",Þ:"o",å:"a",ð:"d",þ:"o",А:"A",Б:"B",В:"B",Г:"F",Д:"A",Е:"E",Ж:"K",З:"3",И:"N",Й:"N",К:"K",Л:"N",М:"M",Н:"H",О:"O",П:"N",Р:"P",С:"C",Т:"T",У:"y",Ф:"O",Х:"X",Ц:"U",Ч:"h",Ш:"W",Щ:"W",Ъ:"B",Ы:"X",Ь:"B",Э:"3",Ю:"X",Я:"R",а:"a",б:"b",в:"a",г:"r",д:"y",е:"e",ж:"m",з:"e",и:"n",й:"n",к:"n",л:"n",м:"m",н:"n",о:"o",п:"n",р:"p",с:"c",т:"o",у:"y",ф:"b",х:"x",ц:"n",ч:"n",ш:"w",щ:"w",ъ:"a",ы:"m",ь:"a",э:"e",ю:"m",я:"r"};function J4(e,t){wt[e]=t}function Ei(e,t,r){if(!wt[t])throw new Error("Font metrics not found for font: "+t+".");var n=e.charCodeAt(0),a=wt[t][n];if(!a&&e[0]in Lu&&(n=Lu[e[0]].charCodeAt(0),a=wt[t][n]),!a&&r==="text"&&$l(n)&&(a=wt[t][77]),a)return{depth:a[0],height:a[1],italic:a[2],skew:a[3],width:a[4]}}var ea={};function Z4(e){var t;if(e>=5?t=0:e>=3?t=1:t=2,!ea[t]){var r=ea[t]={cssEmPerMu:Hn.quad[t]/18};for(var n in Hn)Hn.hasOwnProperty(n)&&(r[n]=Hn[n][t])}return ea[t]}var we={math:{},text:{}};function h(e,t,r,n,a,i){we[e][a]={font:t,group:r,replace:n},i&&n&&(we[e][n]=we[e][a])}var m="math",F="text",b="main",v="ams",Ce="accent-token",te="bin",Ze="close",Hr="inner",ie="mathord",Pe="op-token",ht="open",kn="punct",A="rel",Yt="spacing",I="textord";h(m,b,A,"≡","\\equiv",!0);h(m,b,A,"≺","\\prec",!0);h(m,b,A,"≻","\\succ",!0);h(m,b,A,"∼","\\sim",!0);h(m,b,A,"⊥","\\perp");h(m,b,A,"⪯","\\preceq",!0);h(m,b,A,"⪰","\\succeq",!0);h(m,b,A,"≃","\\simeq",!0);h(m,b,A,"∣","\\mid",!0);h(m,b,A,"≪","\\ll",!0);h(m,b,A,"≫","\\gg",!0);h(m,b,A,"≍","\\asymp",!0);h(m,b,A,"∥","\\parallel");h(m,b,A,"⋈","\\bowtie",!0);h(m,b,A,"⌣","\\smile",!0);h(m,b,A,"⊑","\\sqsubseteq",!0);h(m,b,A,"⊒","\\sqsupseteq",!0);h(m,b,A,"≐","\\doteq",!0);h(m,b,A,"⌢","\\frown",!0);h(m,b,A,"∋","\\ni",!0);h(m,b,A,"∝","\\propto",!0);h(m,b,A,"⊢","\\vdash",!0);h(m,b,A,"⊣","\\dashv",!0);h(m,b,A,"∋","\\owns");h(m,b,kn,".","\\ldotp");h(m,b,kn,"⋅","\\cdotp");h(m,b,kn,"⋅","·");h(F,b,I,"⋅","·");h(m,b,I,"#","\\#");h(F,b,I,"#","\\#");h(m,b,I,"&","\\&");h(F,b,I,"&","\\&");h(m,b,I,"ℵ","\\aleph",!0);h(m,b,I,"∀","\\forall",!0);h(m,b,I,"ℏ","\\hbar",!0);h(m,b,I,"∃","\\exists",!0);h(m,b,I,"∇","\\nabla",!0);h(m,b,I,"♭","\\flat",!0);h(m,b,I,"ℓ","\\ell",!0);h(m,b,I,"♮","\\natural",!0);h(m,b,I,"♣","\\clubsuit",!0);h(m,b,I,"℘","\\wp",!0);h(m,b,I,"♯","\\sharp",!0);h(m,b,I,"♢","\\diamondsuit",!0);h(m,b,I,"ℜ","\\Re",!0);h(m,b,I,"♡","\\heartsuit",!0);h(m,b,I,"ℑ","\\Im",!0);h(m,b,I,"♠","\\spadesuit",!0);h(m,b,I,"§","\\S",!0);h(F,b,I,"§","\\S");h(m,b,I,"¶","\\P",!0);h(F,b,I,"¶","\\P");h(m,b,I,"†","\\dag");h(F,b,I,"†","\\dag");h(F,b,I,"†","\\textdagger");h(m,b,I,"‡","\\ddag");h(F,b,I,"‡","\\ddag");h(F,b,I,"‡","\\textdaggerdbl");h(m,b,Ze,"⎱","\\rmoustache",!0);h(m,b,ht,"⎰","\\lmoustache",!0);h(m,b,Ze,"⟯","\\rgroup",!0);h(m,b,ht,"⟮","\\lgroup",!0);h(m,b,te,"∓","\\mp",!0);h(m,b,te,"⊖","\\ominus",!0);h(m,b,te,"⊎","\\uplus",!0);h(m,b,te,"⊓","\\sqcap",!0);h(m,b,te,"∗","\\ast");h(m,b,te,"⊔","\\sqcup",!0);h(m,b,te,"◯","\\bigcirc",!0);h(m,b,te,"∙","\\bullet",!0);h(m,b,te,"‡","\\ddagger");h(m,b,te,"≀","\\wr",!0);h(m,b,te,"⨿","\\amalg");h(m,b,te,"&","\\And");h(m,b,A,"⟵","\\longleftarrow",!0);h(m,b,A,"⇐","\\Leftarrow",!0);h(m,b,A,"⟸","\\Longleftarrow",!0);h(m,b,A,"⟶","\\longrightarrow",!0);h(m,b,A,"⇒","\\Rightarrow",!0);h(m,b,A,"⟹","\\Longrightarrow",!0);h(m,b,A,"↔","\\leftrightarrow",!0);h(m,b,A,"⟷","\\longleftrightarrow",!0);h(m,b,A,"⇔","\\Leftrightarrow",!0);h(m,b,A,"⟺","\\Longleftrightarrow",!0);h(m,b,A,"↦","\\mapsto",!0);h(m,b,A,"⟼","\\longmapsto",!0);h(m,b,A,"↗","\\nearrow",!0);h(m,b,A,"↩","\\hookleftarrow",!0);h(m,b,A,"↪","\\hookrightarrow",!0);h(m,b,A,"↘","\\searrow",!0);h(m,b,A,"↼","\\leftharpoonup",!0);h(m,b,A,"⇀","\\rightharpoonup",!0);h(m,b,A,"↙","\\swarrow",!0);h(m,b,A,"↽","\\leftharpoondown",!0);h(m,b,A,"⇁","\\rightharpoondown",!0);h(m,b,A,"↖","\\nwarrow",!0);h(m,b,A,"⇌","\\rightleftharpoons",!0);h(m,v,A,"≮","\\nless",!0);h(m,v,A,"","\\@nleqslant");h(m,v,A,"","\\@nleqq");h(m,v,A,"⪇","\\lneq",!0);h(m,v,A,"≨","\\lneqq",!0);h(m,v,A,"","\\@lvertneqq");h(m,v,A,"⋦","\\lnsim",!0);h(m,v,A,"⪉","\\lnapprox",!0);h(m,v,A,"⊀","\\nprec",!0);h(m,v,A,"⋠","\\npreceq",!0);h(m,v,A,"⋨","\\precnsim",!0);h(m,v,A,"⪹","\\precnapprox",!0);h(m,v,A,"≁","\\nsim",!0);h(m,v,A,"","\\@nshortmid");h(m,v,A,"∤","\\nmid",!0);h(m,v,A,"⊬","\\nvdash",!0);h(m,v,A,"⊭","\\nvDash",!0);h(m,v,A,"⋪","\\ntriangleleft");h(m,v,A,"⋬","\\ntrianglelefteq",!0);h(m,v,A,"⊊","\\subsetneq",!0);h(m,v,A,"","\\@varsubsetneq");h(m,v,A,"⫋","\\subsetneqq",!0);h(m,v,A,"","\\@varsubsetneqq");h(m,v,A,"≯","\\ngtr",!0);h(m,v,A,"","\\@ngeqslant");h(m,v,A,"","\\@ngeqq");h(m,v,A,"⪈","\\gneq",!0);h(m,v,A,"≩","\\gneqq",!0);h(m,v,A,"","\\@gvertneqq");h(m,v,A,"⋧","\\gnsim",!0);h(m,v,A,"⪊","\\gnapprox",!0);h(m,v,A,"⊁","\\nsucc",!0);h(m,v,A,"⋡","\\nsucceq",!0);h(m,v,A,"⋩","\\succnsim",!0);h(m,v,A,"⪺","\\succnapprox",!0);h(m,v,A,"≆","\\ncong",!0);h(m,v,A,"","\\@nshortparallel");h(m,v,A,"∦","\\nparallel",!0);h(m,v,A,"⊯","\\nVDash",!0);h(m,v,A,"⋫","\\ntriangleright");h(m,v,A,"⋭","\\ntrianglerighteq",!0);h(m,v,A,"","\\@nsupseteqq");h(m,v,A,"⊋","\\supsetneq",!0);h(m,v,A,"","\\@varsupsetneq");h(m,v,A,"⫌","\\supsetneqq",!0);h(m,v,A,"","\\@varsupsetneqq");h(m,v,A,"⊮","\\nVdash",!0);h(m,v,A,"⪵","\\precneqq",!0);h(m,v,A,"⪶","\\succneqq",!0);h(m,v,A,"","\\@nsubseteqq");h(m,v,te,"⊴","\\unlhd");h(m,v,te,"⊵","\\unrhd");h(m,v,A,"↚","\\nleftarrow",!0);h(m,v,A,"↛","\\nrightarrow",!0);h(m,v,A,"⇍","\\nLeftarrow",!0);h(m,v,A,"⇏","\\nRightarrow",!0);h(m,v,A,"↮","\\nleftrightarrow",!0);h(m,v,A,"⇎","\\nLeftrightarrow",!0);h(m,v,A,"△","\\vartriangle");h(m,v,I,"ℏ","\\hslash");h(m,v,I,"▽","\\triangledown");h(m,v,I,"◊","\\lozenge");h(m,v,I,"Ⓢ","\\circledS");h(m,v,I,"®","\\circledR");h(F,v,I,"®","\\circledR");h(m,v,I,"∡","\\measuredangle",!0);h(m,v,I,"∄","\\nexists");h(m,v,I,"℧","\\mho");h(m,v,I,"Ⅎ","\\Finv",!0);h(m,v,I,"⅁","\\Game",!0);h(m,v,I,"‵","\\backprime");h(m,v,I,"▲","\\blacktriangle");h(m,v,I,"▼","\\blacktriangledown");h(m,v,I,"■","\\blacksquare");h(m,v,I,"⧫","\\blacklozenge");h(m,v,I,"★","\\bigstar");h(m,v,I,"∢","\\sphericalangle",!0);h(m,v,I,"∁","\\complement",!0);h(m,v,I,"ð","\\eth",!0);h(F,b,I,"ð","ð");h(m,v,I,"╱","\\diagup");h(m,v,I,"╲","\\diagdown");h(m,v,I,"□","\\square");h(m,v,I,"□","\\Box");h(m,v,I,"◊","\\Diamond");h(m,v,I,"¥","\\yen",!0);h(F,v,I,"¥","\\yen",!0);h(m,v,I,"✓","\\checkmark",!0);h(F,v,I,"✓","\\checkmark");h(m,v,I,"ℶ","\\beth",!0);h(m,v,I,"ℸ","\\daleth",!0);h(m,v,I,"ℷ","\\gimel",!0);h(m,v,I,"ϝ","\\digamma",!0);h(m,v,I,"ϰ","\\varkappa");h(m,v,ht,"┌","\\@ulcorner",!0);h(m,v,Ze,"┐","\\@urcorner",!0);h(m,v,ht,"└","\\@llcorner",!0);h(m,v,Ze,"┘","\\@lrcorner",!0);h(m,v,A,"≦","\\leqq",!0);h(m,v,A,"⩽","\\leqslant",!0);h(m,v,A,"⪕","\\eqslantless",!0);h(m,v,A,"≲","\\lesssim",!0);h(m,v,A,"⪅","\\lessapprox",!0);h(m,v,A,"≊","\\approxeq",!0);h(m,v,te,"⋖","\\lessdot");h(m,v,A,"⋘","\\lll",!0);h(m,v,A,"≶","\\lessgtr",!0);h(m,v,A,"⋚","\\lesseqgtr",!0);h(m,v,A,"⪋","\\lesseqqgtr",!0);h(m,v,A,"≑","\\doteqdot");h(m,v,A,"≓","\\risingdotseq",!0);h(m,v,A,"≒","\\fallingdotseq",!0);h(m,v,A,"∽","\\backsim",!0);h(m,v,A,"⋍","\\backsimeq",!0);h(m,v,A,"⫅","\\subseteqq",!0);h(m,v,A,"⋐","\\Subset",!0);h(m,v,A,"⊏","\\sqsubset",!0);h(m,v,A,"≼","\\preccurlyeq",!0);h(m,v,A,"⋞","\\curlyeqprec",!0);h(m,v,A,"≾","\\precsim",!0);h(m,v,A,"⪷","\\precapprox",!0);h(m,v,A,"⊲","\\vartriangleleft");h(m,v,A,"⊴","\\trianglelefteq");h(m,v,A,"⊨","\\vDash",!0);h(m,v,A,"⊪","\\Vvdash",!0);h(m,v,A,"⌣","\\smallsmile");h(m,v,A,"⌢","\\smallfrown");h(m,v,A,"≏","\\bumpeq",!0);h(m,v,A,"≎","\\Bumpeq",!0);h(m,v,A,"≧","\\geqq",!0);h(m,v,A,"⩾","\\geqslant",!0);h(m,v,A,"⪖","\\eqslantgtr",!0);h(m,v,A,"≳","\\gtrsim",!0);h(m,v,A,"⪆","\\gtrapprox",!0);h(m,v,te,"⋗","\\gtrdot");h(m,v,A,"⋙","\\ggg",!0);h(m,v,A,"≷","\\gtrless",!0);h(m,v,A,"⋛","\\gtreqless",!0);h(m,v,A,"⪌","\\gtreqqless",!0);h(m,v,A,"≖","\\eqcirc",!0);h(m,v,A,"≗","\\circeq",!0);h(m,v,A,"≜","\\triangleq",!0);h(m,v,A,"∼","\\thicksim");h(m,v,A,"≈","\\thickapprox");h(m,v,A,"⫆","\\supseteqq",!0);h(m,v,A,"⋑","\\Supset",!0);h(m,v,A,"⊐","\\sqsupset",!0);h(m,v,A,"≽","\\succcurlyeq",!0);h(m,v,A,"⋟","\\curlyeqsucc",!0);h(m,v,A,"≿","\\succsim",!0);h(m,v,A,"⪸","\\succapprox",!0);h(m,v,A,"⊳","\\vartriangleright");h(m,v,A,"⊵","\\trianglerighteq");h(m,v,A,"⊩","\\Vdash",!0);h(m,v,A,"∣","\\shortmid");h(m,v,A,"∥","\\shortparallel");h(m,v,A,"≬","\\between",!0);h(m,v,A,"⋔","\\pitchfork",!0);h(m,v,A,"∝","\\varpropto");h(m,v,A,"◀","\\blacktriangleleft");h(m,v,A,"∴","\\therefore",!0);h(m,v,A,"∍","\\backepsilon");h(m,v,A,"▶","\\blacktriangleright");h(m,v,A,"∵","\\because",!0);h(m,v,A,"⋘","\\llless");h(m,v,A,"⋙","\\gggtr");h(m,v,te,"⊲","\\lhd");h(m,v,te,"⊳","\\rhd");h(m,v,A,"≂","\\eqsim",!0);h(m,b,A,"⋈","\\Join");h(m,v,A,"≑","\\Doteq",!0);h(m,v,te,"∔","\\dotplus",!0);h(m,v,te,"∖","\\smallsetminus");h(m,v,te,"⋒","\\Cap",!0);h(m,v,te,"⋓","\\Cup",!0);h(m,v,te,"⩞","\\doublebarwedge",!0);h(m,v,te,"⊟","\\boxminus",!0);h(m,v,te,"⊞","\\boxplus",!0);h(m,v,te,"⋇","\\divideontimes",!0);h(m,v,te,"⋉","\\ltimes",!0);h(m,v,te,"⋊","\\rtimes",!0);h(m,v,te,"⋋","\\leftthreetimes",!0);h(m,v,te,"⋌","\\rightthreetimes",!0);h(m,v,te,"⋏","\\curlywedge",!0);h(m,v,te,"⋎","\\curlyvee",!0);h(m,v,te,"⊝","\\circleddash",!0);h(m,v,te,"⊛","\\circledast",!0);h(m,v,te,"⋅","\\centerdot");h(m,v,te,"⊺","\\intercal",!0);h(m,v,te,"⋒","\\doublecap");h(m,v,te,"⋓","\\doublecup");h(m,v,te,"⊠","\\boxtimes",!0);h(m,v,A,"⇢","\\dashrightarrow",!0);h(m,v,A,"⇠","\\dashleftarrow",!0);h(m,v,A,"⇇","\\leftleftarrows",!0);h(m,v,A,"⇆","\\leftrightarrows",!0);h(m,v,A,"⇚","\\Lleftarrow",!0);h(m,v,A,"↞","\\twoheadleftarrow",!0);h(m,v,A,"↢","\\leftarrowtail",!0);h(m,v,A,"↫","\\looparrowleft",!0);h(m,v,A,"⇋","\\leftrightharpoons",!0);h(m,v,A,"↶","\\curvearrowleft",!0);h(m,v,A,"↺","\\circlearrowleft",!0);h(m,v,A,"↰","\\Lsh",!0);h(m,v,A,"⇈","\\upuparrows",!0);h(m,v,A,"↿","\\upharpoonleft",!0);h(m,v,A,"⇃","\\downharpoonleft",!0);h(m,b,A,"⊶","\\origof",!0);h(m,b,A,"⊷","\\imageof",!0);h(m,v,A,"⊸","\\multimap",!0);h(m,v,A,"↭","\\leftrightsquigarrow",!0);h(m,v,A,"⇉","\\rightrightarrows",!0);h(m,v,A,"⇄","\\rightleftarrows",!0);h(m,v,A,"↠","\\twoheadrightarrow",!0);h(m,v,A,"↣","\\rightarrowtail",!0);h(m,v,A,"↬","\\looparrowright",!0);h(m,v,A,"↷","\\curvearrowright",!0);h(m,v,A,"↻","\\circlearrowright",!0);h(m,v,A,"↱","\\Rsh",!0);h(m,v,A,"⇊","\\downdownarrows",!0);h(m,v,A,"↾","\\upharpoonright",!0);h(m,v,A,"⇂","\\downharpoonright",!0);h(m,v,A,"⇝","\\rightsquigarrow",!0);h(m,v,A,"⇝","\\leadsto");h(m,v,A,"⇛","\\Rrightarrow",!0);h(m,v,A,"↾","\\restriction");h(m,b,I,"‘","`");h(m,b,I,"$","\\$");h(F,b,I,"$","\\$");h(F,b,I,"$","\\textdollar");h(m,b,I,"%","\\%");h(F,b,I,"%","\\%");h(m,b,I,"_","\\_");h(F,b,I,"_","\\_");h(F,b,I,"_","\\textunderscore");h(m,b,I,"∠","\\angle",!0);h(m,b,I,"∞","\\infty",!0);h(m,b,I,"′","\\prime");h(m,b,I,"△","\\triangle");h(m,b,I,"Γ","\\Gamma",!0);h(m,b,I,"Δ","\\Delta",!0);h(m,b,I,"Θ","\\Theta",!0);h(m,b,I,"Λ","\\Lambda",!0);h(m,b,I,"Ξ","\\Xi",!0);h(m,b,I,"Π","\\Pi",!0);h(m,b,I,"Σ","\\Sigma",!0);h(m,b,I,"Υ","\\Upsilon",!0);h(m,b,I,"Φ","\\Phi",!0);h(m,b,I,"Ψ","\\Psi",!0);h(m,b,I,"Ω","\\Omega",!0);h(m,b,I,"A","Α");h(m,b,I,"B","Β");h(m,b,I,"E","Ε");h(m,b,I,"Z","Ζ");h(m,b,I,"H","Η");h(m,b,I,"I","Ι");h(m,b,I,"K","Κ");h(m,b,I,"M","Μ");h(m,b,I,"N","Ν");h(m,b,I,"O","Ο");h(m,b,I,"P","Ρ");h(m,b,I,"T","Τ");h(m,b,I,"X","Χ");h(m,b,I,"¬","\\neg",!0);h(m,b,I,"¬","\\lnot");h(m,b,I,"⊤","\\top");h(m,b,I,"⊥","\\bot");h(m,b,I,"∅","\\emptyset");h(m,v,I,"∅","\\varnothing");h(m,b,ie,"α","\\alpha",!0);h(m,b,ie,"β","\\beta",!0);h(m,b,ie,"γ","\\gamma",!0);h(m,b,ie,"δ","\\delta",!0);h(m,b,ie,"ϵ","\\epsilon",!0);h(m,b,ie,"ζ","\\zeta",!0);h(m,b,ie,"η","\\eta",!0);h(m,b,ie,"θ","\\theta",!0);h(m,b,ie,"ι","\\iota",!0);h(m,b,ie,"κ","\\kappa",!0);h(m,b,ie,"λ","\\lambda",!0);h(m,b,ie,"μ","\\mu",!0);h(m,b,ie,"ν","\\nu",!0);h(m,b,ie,"ξ","\\xi",!0);h(m,b,ie,"ο","\\omicron",!0);h(m,b,ie,"π","\\pi",!0);h(m,b,ie,"ρ","\\rho",!0);h(m,b,ie,"σ","\\sigma",!0);h(m,b,ie,"τ","\\tau",!0);h(m,b,ie,"υ","\\upsilon",!0);h(m,b,ie,"ϕ","\\phi",!0);h(m,b,ie,"χ","\\chi",!0);h(m,b,ie,"ψ","\\psi",!0);h(m,b,ie,"ω","\\omega",!0);h(m,b,ie,"ε","\\varepsilon",!0);h(m,b,ie,"ϑ","\\vartheta",!0);h(m,b,ie,"ϖ","\\varpi",!0);h(m,b,ie,"ϱ","\\varrho",!0);h(m,b,ie,"ς","\\varsigma",!0);h(m,b,ie,"φ","\\varphi",!0);h(m,b,te,"∗","*",!0);h(m,b,te,"+","+");h(m,b,te,"−","-",!0);h(m,b,te,"⋅","\\cdot",!0);h(m,b,te,"∘","\\circ",!0);h(m,b,te,"÷","\\div",!0);h(m,b,te,"±","\\pm",!0);h(m,b,te,"×","\\times",!0);h(m,b,te,"∩","\\cap",!0);h(m,b,te,"∪","\\cup",!0);h(m,b,te,"∖","\\setminus",!0);h(m,b,te,"∧","\\land");h(m,b,te,"∨","\\lor");h(m,b,te,"∧","\\wedge",!0);h(m,b,te,"∨","\\vee",!0);h(m,b,I,"√","\\surd");h(m,b,ht,"⟨","\\langle",!0);h(m,b,ht,"∣","\\lvert");h(m,b,ht,"∥","\\lVert");h(m,b,Ze,"?","?");h(m,b,Ze,"!","!");h(m,b,Ze,"⟩","\\rangle",!0);h(m,b,Ze,"∣","\\rvert");h(m,b,Ze,"∥","\\rVert");h(m,b,A,"=","=");h(m,b,A,":",":");h(m,b,A,"≈","\\approx",!0);h(m,b,A,"≅","\\cong",!0);h(m,b,A,"≥","\\ge");h(m,b,A,"≥","\\geq",!0);h(m,b,A,"←","\\gets");h(m,b,A,">","\\gt",!0);h(m,b,A,"∈","\\in",!0);h(m,b,A,"","\\@not");h(m,b,A,"⊂","\\subset",!0);h(m,b,A,"⊃","\\supset",!0);h(m,b,A,"⊆","\\subseteq",!0);h(m,b,A,"⊇","\\supseteq",!0);h(m,v,A,"⊈","\\nsubseteq",!0);h(m,v,A,"⊉","\\nsupseteq",!0);h(m,b,A,"⊨","\\models");h(m,b,A,"←","\\leftarrow",!0);h(m,b,A,"≤","\\le");h(m,b,A,"≤","\\leq",!0);h(m,b,A,"<","\\lt",!0);h(m,b,A,"→","\\rightarrow",!0);h(m,b,A,"→","\\to");h(m,v,A,"≱","\\ngeq",!0);h(m,v,A,"≰","\\nleq",!0);h(m,b,Yt," ","\\ ");h(m,b,Yt," ","\\space");h(m,b,Yt," ","\\nobreakspace");h(F,b,Yt," ","\\ ");h(F,b,Yt," "," ");h(F,b,Yt," ","\\space");h(F,b,Yt," ","\\nobreakspace");h(m,b,Yt,"","\\nobreak");h(m,b,Yt,"","\\allowbreak");h(m,b,kn,",",",");h(m,b,kn,";",";");h(m,v,te,"⊼","\\barwedge",!0);h(m,v,te,"⊻","\\veebar",!0);h(m,b,te,"⊙","\\odot",!0);h(m,b,te,"⊕","\\oplus",!0);h(m,b,te,"⊗","\\otimes",!0);h(m,b,I,"∂","\\partial",!0);h(m,b,te,"⊘","\\oslash",!0);h(m,v,te,"⊚","\\circledcirc",!0);h(m,v,te,"⊡","\\boxdot",!0);h(m,b,te,"△","\\bigtriangleup");h(m,b,te,"▽","\\bigtriangledown");h(m,b,te,"†","\\dagger");h(m,b,te,"⋄","\\diamond");h(m,b,te,"⋆","\\star");h(m,b,te,"◃","\\triangleleft");h(m,b,te,"▹","\\triangleright");h(m,b,ht,"{","\\{");h(F,b,I,"{","\\{");h(F,b,I,"{","\\textbraceleft");h(m,b,Ze,"}","\\}");h(F,b,I,"}","\\}");h(F,b,I,"}","\\textbraceright");h(m,b,ht,"{","\\lbrace");h(m,b,Ze,"}","\\rbrace");h(m,b,ht,"[","\\lbrack",!0);h(F,b,I,"[","\\lbrack",!0);h(m,b,Ze,"]","\\rbrack",!0);h(F,b,I,"]","\\rbrack",!0);h(m,b,ht,"(","\\lparen",!0);h(m,b,Ze,")","\\rparen",!0);h(F,b,I,"<","\\textless",!0);h(F,b,I,">","\\textgreater",!0);h(m,b,ht,"⌊","\\lfloor",!0);h(m,b,Ze,"⌋","\\rfloor",!0);h(m,b,ht,"⌈","\\lceil",!0);h(m,b,Ze,"⌉","\\rceil",!0);h(m,b,I,"\\","\\backslash");h(m,b,I,"∣","|");h(m,b,I,"∣","\\vert");h(F,b,I,"|","\\textbar",!0);h(m,b,I,"∥","\\|");h(m,b,I,"∥","\\Vert");h(F,b,I,"∥","\\textbardbl");h(F,b,I,"~","\\textasciitilde");h(F,b,I,"\\","\\textbackslash");h(F,b,I,"^","\\textasciicircum");h(m,b,A,"↑","\\uparrow",!0);h(m,b,A,"⇑","\\Uparrow",!0);h(m,b,A,"↓","\\downarrow",!0);h(m,b,A,"⇓","\\Downarrow",!0);h(m,b,A,"↕","\\updownarrow",!0);h(m,b,A,"⇕","\\Updownarrow",!0);h(m,b,Pe,"∐","\\coprod");h(m,b,Pe,"⋁","\\bigvee");h(m,b,Pe,"⋀","\\bigwedge");h(m,b,Pe,"⨄","\\biguplus");h(m,b,Pe,"⋂","\\bigcap");h(m,b,Pe,"⋃","\\bigcup");h(m,b,Pe,"∫","\\int");h(m,b,Pe,"∫","\\intop");h(m,b,Pe,"∬","\\iint");h(m,b,Pe,"∭","\\iiint");h(m,b,Pe,"∏","\\prod");h(m,b,Pe,"∑","\\sum");h(m,b,Pe,"⨂","\\bigotimes");h(m,b,Pe,"⨁","\\bigoplus");h(m,b,Pe,"⨀","\\bigodot");h(m,b,Pe,"∮","\\oint");h(m,b,Pe,"∯","\\oiint");h(m,b,Pe,"∰","\\oiiint");h(m,b,Pe,"⨆","\\bigsqcup");h(m,b,Pe,"∫","\\smallint");h(F,b,Hr,"…","\\textellipsis");h(m,b,Hr,"…","\\mathellipsis");h(F,b,Hr,"…","\\ldots",!0);h(m,b,Hr,"…","\\ldots",!0);h(m,b,Hr,"⋯","\\@cdots",!0);h(m,b,Hr,"⋱","\\ddots",!0);h(m,b,I,"⋮","\\varvdots");h(F,b,I,"⋮","\\varvdots");h(m,b,Ce,"ˊ","\\acute");h(m,b,Ce,"ˋ","\\grave");h(m,b,Ce,"¨","\\ddot");h(m,b,Ce,"~","\\tilde");h(m,b,Ce,"ˉ","\\bar");h(m,b,Ce,"˘","\\breve");h(m,b,Ce,"ˇ","\\check");h(m,b,Ce,"^","\\hat");h(m,b,Ce,"⃗","\\vec");h(m,b,Ce,"˙","\\dot");h(m,b,Ce,"˚","\\mathring");h(m,b,ie,"","\\@imath");h(m,b,ie,"","\\@jmath");h(m,b,I,"ı","ı");h(m,b,I,"ȷ","ȷ");h(F,b,I,"ı","\\i",!0);h(F,b,I,"ȷ","\\j",!0);h(F,b,I,"ß","\\ss",!0);h(F,b,I,"æ","\\ae",!0);h(F,b,I,"œ","\\oe",!0);h(F,b,I,"ø","\\o",!0);h(F,b,I,"Æ","\\AE",!0);h(F,b,I,"Œ","\\OE",!0);h(F,b,I,"Ø","\\O",!0);h(F,b,Ce,"ˊ","\\'");h(F,b,Ce,"ˋ","\\`");h(F,b,Ce,"ˆ","\\^");h(F,b,Ce,"˜","\\~");h(F,b,Ce,"ˉ","\\=");h(F,b,Ce,"˘","\\u");h(F,b,Ce,"˙","\\.");h(F,b,Ce,"¸","\\c");h(F,b,Ce,"˚","\\r");h(F,b,Ce,"ˇ","\\v");h(F,b,Ce,"¨",'\\"');h(F,b,Ce,"˝","\\H");h(F,b,Ce,"◯","\\textcircled");var eo={"--":!0,"---":!0,"``":!0,"''":!0};h(F,b,I,"–","--",!0);h(F,b,I,"–","\\textendash");h(F,b,I,"—","---",!0);h(F,b,I,"—","\\textemdash");h(F,b,I,"‘","`",!0);h(F,b,I,"‘","\\textquoteleft");h(F,b,I,"’","'",!0);h(F,b,I,"’","\\textquoteright");h(F,b,I,"“","``",!0);h(F,b,I,"“","\\textquotedblleft");h(F,b,I,"”","''",!0);h(F,b,I,"”","\\textquotedblright");h(m,b,I,"°","\\degree",!0);h(F,b,I,"°","\\degree");h(F,b,I,"°","\\textdegree",!0);h(m,b,I,"£","\\pounds");h(m,b,I,"£","\\mathsterling",!0);h(F,b,I,"£","\\pounds");h(F,b,I,"£","\\textsterling",!0);h(m,v,I,"✠","\\maltese");h(F,v,I,"✠","\\maltese");var Ru='0123456789/@."';for(var ta=0;ta{var t=e.charCodeAt(0),r=e.charCodeAt(1),n=(t-55296)*1024+(r-56320)+65536;if(119808<=n&&n<120484){var a=Math.floor((n-119808)/26);return Gu[a]}else if(120782<=n&&n<=120831){var i=Math.floor((n-120782)/10);return t3[i]}else{if(n===120485||n===120486)return Gu[0];if(120486{if(Jt(e.classes)!==Jt(t.classes)||e.skew!==t.skew||e.maxFontSize!==t.maxFontSize||e.italic!==0&&e.hasClass("mathnormal"))return!1;if(e.classes.length===1){var r=e.classes[0];if(r==="mbin"||r==="mord")return!1}for(var n of Object.keys(e.style))if(e.style[n]!==t.style[n])return!1;for(var a of Object.keys(t.style))if(e.style[a]!==t.style[a])return!1;return!0},to=e=>{for(var t=0;tr&&(r=u.height),u.depth>n&&(n=u.depth),u.maxFontSize>a&&(a=u.maxFontSize)}t.height=r,t.depth=n,t.maxFontSize=a},z=function(t,r,n,a){var i=new Fr(t,r,n,a);return xi(i),i},er=(e,t,r,n)=>new Fr(e,t,r,n),Or=function(t,r,n){var a=z([t],[],r);return a.height=Math.max(n||r.fontMetrics().defaultRuleThickness,r.minRuleThickness),a.style.borderBottomWidth=V(a.height),a.maxFontSize=1,a},i3=function(t,r,n,a){var i=new E0(t,r,n,a);return xi(i),i},Gt=function(t){var r=new Br(t);return xi(r),r},Lr=function(t,r){return t instanceof Br?z([],[t],r):t},u3=function(t){if(t.positionType==="individualShift"){for(var r=t.children,n=[r[0]],a=-r[0].shift-r[0].elem.depth,i=a,u=1;u{var r=z(["mspace"],[],t),n=Ie(e,t);return r.style.marginRight=V(n),r},qn=(e,t,r)=>{var n,a;switch(e){case"amsrm":n="AMS";break;case"textrm":n="Main";break;case"textsf":n="SansSerif";break;case"texttt":n="Typewriter";break;default:n=e}return t==="textbf"&&r==="textit"?a="BoldItalic":t==="textbf"?a="Bold":r==="textit"?a="Italic":a="Regular",n+"-"+a},Ba={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathsfit:{variant:"sans-serif-italic",fontName:"SansSerif-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},no={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},ao=function(t,r){var[n,a,i]=no[t],u=new Zt(n),s=new zt([u],{width:V(a),height:V(i),style:"width:"+V(a),viewBox:"0 0 "+1e3*a+" "+1e3*i,preserveAspectRatio:"xMinYMin"}),l=er(["overlay"],[s],r);return l.height=i,l.style.height=V(i),l.style.width=V(a),l},_e={number:3,unit:"mu"},cr={number:4,unit:"mu"},Pt={number:5,unit:"mu"},s3={mord:{mop:_e,mbin:cr,mrel:Pt,minner:_e},mop:{mord:_e,mop:_e,mrel:Pt,minner:_e},mbin:{mord:cr,mop:cr,mopen:cr,minner:cr},mrel:{mord:Pt,mop:Pt,mopen:Pt,minner:Pt},mopen:{},mclose:{mop:_e,mbin:cr,mrel:Pt,minner:_e},mpunct:{mord:_e,mop:_e,mrel:Pt,mopen:_e,mclose:_e,mpunct:_e,minner:_e},minner:{mord:_e,mop:_e,mbin:cr,mrel:Pt,mopen:_e,mpunct:_e,minner:_e}},l3={mord:{mop:_e},mop:{mord:_e,mop:_e},mbin:{},mrel:{},mopen:{},mclose:{mop:_e},mpunct:{},minner:{mop:_e}},io={},a0={},i0={};function Z(e){for(var{type:t,names:r,props:n,handler:a,htmlBuilder:i,mathmlBuilder:u}=e,s={type:t,numArgs:n.numArgs,argTypes:n.argTypes,allowedInArgument:!!n.allowedInArgument,allowedInText:!!n.allowedInText,allowedInMath:n.allowedInMath===void 0?!0:n.allowedInMath,numOptionalArgs:n.numOptionalArgs||0,infix:!!n.infix,primitive:!!n.primitive,handler:a},l=0;l{var D=S.classes[0],_=x.classes[0];D==="mbin"&&c3.has(_)?S.classes[0]="mord":_==="mbin"&&o3.has(D)&&(x.classes[0]="mord")},{node:f},g,p),Fa(i,(x,S)=>{var D,_,N=za(S),M=za(x),W=N&&M?x.hasClass("mtight")?(D=l3[N])==null?void 0:D[M]:(_=s3[N])==null?void 0:_[M]:null;if(W)return ro(W,c)},{node:f},g,p),i},Fa=function(t,r,n,a,i){a&&t.push(a);for(var u=0;ug=>{t.splice(f+1,0,g),u++})(u)}a&&t.pop()},uo=function(t){return t instanceof Br||t instanceof E0||t instanceof Fr&&t.hasClass("enclosing")?t:null},Ha=function(t,r){var n=uo(t);if(n){var a=n.children;if(a.length){if(r==="right")return Ha(a[a.length-1],"right");if(r==="left")return Ha(a[0],"left")}}return t},za=function(t,r){if(!t)return null;r&&(t=Ha(t,r));var n=t.classes[0];return d3[n]||null},bn=function(t,r){var n=["nulldelimiter"].concat(t.baseSizingClasses());return z(r.concat(n))},Te=function(t,r,n){if(!t)return z();if(a0[t.type]){var a=a0[t.type](t,r);if(n&&r.size!==n.size){a=z(r.sizingClasses(n),[a],r);var i=r.sizeMultiplier/n.sizeMultiplier;a.height*=i,a.depth*=i}return a}else throw new Y("Got group of unknown type: '"+t.type+"'")};function Yn(e,t){var r=z(["base"],e,t),n=z(["strut"]);return n.style.height=V(r.height+r.depth),r.depth&&(n.style.verticalAlign=V(-r.depth)),r.children.unshift(n),r}function Ua(e,t){var r=null;e.length===1&&e[0].type==="tag"&&(r=e[0].tag,e=e[0].body);var n=He(e,t,"root"),a;n.length===2&&n[1].hasClass("tag")&&(a=n.pop());for(var i=[],u=[],s=0;s0&&(i.push(Yn(u,t)),u=[]),i.push(n[s]));u.length>0&&i.push(Yn(u,t));var c;r?(c=Yn(He(r,t,!0),t),c.classes=["tag"],i.push(c)):a&&i.push(a);var d=z(["katex-html"],i);if(d.setAttribute("aria-hidden","true"),c){var f=c.children[0];f.style.height=V(d.height+d.depth),d.depth&&(f.style.verticalAlign=V(-d.depth))}return d}function so(e){return new Br(e)}class G{constructor(t,r,n){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=t,this.attributes={},this.children=r||[],this.classes=n||[]}setAttribute(t,r){this.attributes[t]=r}getAttribute(t){return this.attributes[t]}toNode(){var t=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&t.setAttribute(r,this.attributes[r]);this.classes.length>0&&(t.className=Jt(this.classes));for(var n=0;n0&&(t+=' class ="'+Ve(Jt(this.classes))+'"'),t+=">";for(var n=0;n",t}toText(){return this.children.map(t=>t.toText()).join("")}}class Me{constructor(t){this.text=void 0,this.text=t}toNode(){return document.createTextNode(this.text)}toMarkup(){return Ve(this.toText())}toText(){return this.text}}class lo{constructor(t){this.width=void 0,this.character=void 0,this.width=t,t>=.05555&&t<=.05556?this.character=" ":t>=.1666&&t<=.1667?this.character=" ":t>=.2222&&t<=.2223?this.character=" ":t>=.2777&&t<=.2778?this.character="  ":t>=-.05556&&t<=-.05555?this.character=" ⁣":t>=-.1667&&t<=-.1666?this.character=" ⁣":t>=-.2223&&t<=-.2222?this.character=" ⁣":t>=-.2778&&t<=-.2777?this.character=" ⁣":this.character=null}toNode(){if(this.character)return document.createTextNode(this.character);var t=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return t.setAttribute("width",V(this.width)),t}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}}var f3=new Set(["\\imath","\\jmath"]),m3=new Set(["mrow","mtable"]),bt=function(t,r,n){return we[r][t]&&we[r][t].replace&&t.charCodeAt(0)!==55349&&!(eo.hasOwnProperty(t)&&n&&(n.fontFamily&&n.fontFamily.slice(4,6)==="tt"||n.font&&n.font.slice(4,6)==="tt"))&&(t=we[r][t].replace),new Me(t)},yi=function(t){return t.length===1?t[0]:new G("mrow",t)},p3={mathit:"italic",boldsymbol:e=>e.type==="textord"?"bold":"bold-italic",mathbf:"bold",mathbb:"double-struck",mathsfit:"sans-serif-italic",mathfrak:"fraktur",mathscr:"script",mathcal:"script",mathsf:"sans-serif",mathtt:"monospace"},vi=(e,t)=>{if(e.mode==="text"){if(t.fontFamily==="texttt")return"monospace";if(t.fontFamily==="textsf")return t.fontShape==="textit"&&t.fontWeight==="textbf"?"sans-serif-bold-italic":t.fontShape==="textit"?"sans-serif-italic":t.fontWeight==="textbf"?"bold-sans-serif":"sans-serif";if(t.fontShape==="textit"&&t.fontWeight==="textbf")return"bold-italic";if(t.fontShape==="textit")return"italic";if(t.fontWeight==="textbf")return"bold"}var r=t.font;if(!r||r==="mathnormal")return null;var n=e.mode,a=p3[r];if(a)return typeof a=="function"?a(e):a;var i=e.text;if(f3.has(i))return null;if(we[n][i]){var u=we[n][i].replace;u&&(i=u)}var s=Ba[r].fontName;return Ei(i,s,n)?Ba[r].variant:null};function ia(e){if(!e)return!1;if(e.type==="mi"&&e.children.length===1){var t=e.children[0];return t instanceof Me&&t.text==="."}else if(e.type==="mo"&&e.children.length===1&&e.getAttribute("separator")==="true"&&e.getAttribute("lspace")==="0em"&&e.getAttribute("rspace")==="0em"){var r=e.children[0];return r instanceof Me&&r.text===","}else return!1}var dt=function(t,r,n){if(t.length===1){var a=Ae(t[0],r);return n&&a instanceof G&&a.type==="mo"&&(a.setAttribute("lspace","0em"),a.setAttribute("rspace","0em")),[a]}for(var i=[],u,s=0;s=1&&(u.type==="mn"||ia(u))){var c=l.children[0];c instanceof G&&c.type==="mn"&&(c.children=[...u.children,...c.children],i.pop())}else if(u.type==="mi"&&u.children.length===1){var d=u.children[0];if(d instanceof Me&&d.text==="̸"&&(l.type==="mo"||l.type==="mi"||l.type==="mn")){var f=l.children[0];f instanceof Me&&f.text.length>0&&(f.text=f.text.slice(0,1)+"̸"+f.text.slice(1),i.pop())}}}i.push(l),u=l}return i},tr=function(t,r,n){return yi(dt(t,r,n))},Ae=function(t,r){if(!t)return new G("mrow");if(i0[t.type])return i0[t.type](t,r);throw new Y("Got group of unknown type: '"+t.type+"'")};function Vu(e,t,r,n,a){var i=dt(e,r),u;i.length===1&&i[0]instanceof G&&m3.has(i[0].type)?u=i[0]:u=new G("mrow",i);var s=new G("annotation",[new Me(t)]);s.setAttribute("encoding","application/x-tex");var l=new G("semantics",[u,s]),c=new G("math",[l]);c.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),n&&c.setAttribute("display","block");var d=a?"katex":"katex-mathml";return z([d],[c])}var g3=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],ju=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],Wu=function(t,r){return r.size<2?t:g3[t-1][r.size-1]};class Bt{constructor(t){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=t.style,this.color=t.color,this.size=t.size||Bt.BASESIZE,this.textSize=t.textSize||this.size,this.phantom=!!t.phantom,this.font=t.font||"",this.fontFamily=t.fontFamily||"",this.fontWeight=t.fontWeight||"",this.fontShape=t.fontShape||"",this.sizeMultiplier=ju[this.size-1],this.maxSize=t.maxSize,this.minRuleThickness=t.minRuleThickness,this._fontMetrics=void 0}extend(t){var r={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};return Object.assign(r,t),new Bt(r)}havingStyle(t){return this.style===t?this:this.extend({style:t,size:Wu(this.textSize,t)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(t){return this.size===t&&this.textSize===t?this:this.extend({style:this.style.text(),size:t,textSize:t,sizeMultiplier:ju[t-1]})}havingBaseStyle(t){t=t||this.style.text();var r=Wu(Bt.BASESIZE,t);return this.size===r&&this.textSize===Bt.BASESIZE&&this.style===t?this:this.extend({style:t,size:r})}havingBaseSizing(){var t;switch(this.style.id){case 4:case 5:t=3;break;case 6:case 7:t=1;break;default:t=6}return this.extend({style:this.style.text(),size:t})}withColor(t){return this.extend({color:t})}withPhantom(){return this.extend({phantom:!0})}withFont(t){return this.extend({font:t})}withTextFontFamily(t){return this.extend({fontFamily:t,font:""})}withTextFontWeight(t){return this.extend({fontWeight:t,font:""})}withTextFontShape(t){return this.extend({fontShape:t,font:""})}sizingClasses(t){return t.size!==this.size?["sizing","reset-size"+t.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==Bt.BASESIZE?["sizing","reset-size"+this.size,"size"+Bt.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=Z4(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}}Bt.BASESIZE=6;var oo=function(t){return new Bt({style:t.displayMode?oe.DISPLAY:oe.TEXT,maxSize:t.maxSize,minRuleThickness:t.minRuleThickness})},co=function(t,r){if(r.displayMode){var n=["katex-display"];r.leqno&&n.push("leqno"),r.fleqn&&n.push("fleqn"),t=z(n,[t])}return t},b3=function(t,r,n){var a=oo(n),i;if(n.output==="mathml")return Vu(t,r,a,n.displayMode,!0);if(n.output==="html"){var u=Ua(t,a);i=z(["katex"],[u])}else{var s=Vu(t,r,a,n.displayMode,!1),l=Ua(t,a);i=z(["katex"],[s,l])}return co(i,n)},E3=function(t,r,n){var a=oo(n),i=Ua(t,a),u=z(["katex"],[i]);return co(u,n)},T3={widehat:"^",widecheck:"ˇ",widetilde:"~",utilde:"~",overleftarrow:"←",underleftarrow:"←",xleftarrow:"←",overrightarrow:"→",underrightarrow:"→",xrightarrow:"→",underbrace:"⏟",overbrace:"⏞",underbracket:"⎵",overbracket:"⎴",overgroup:"⏠",undergroup:"⏡",overleftrightarrow:"↔",underleftrightarrow:"↔",xleftrightarrow:"↔",Overrightarrow:"⇒",xRightarrow:"⇒",overleftharpoon:"↼",xleftharpoonup:"↼",overrightharpoon:"⇀",xrightharpoonup:"⇀",xLeftarrow:"⇐",xLeftrightarrow:"⇔",xhookleftarrow:"↩",xhookrightarrow:"↪",xmapsto:"↦",xrightharpoondown:"⇁",xleftharpoondown:"↽",xrightleftharpoons:"⇌",xleftrightharpoons:"⇋",xtwoheadleftarrow:"↞",xtwoheadrightarrow:"↠",xlongequal:"=",xtofrom:"⇄",xrightleftarrows:"⇄",xrightequilibrium:"⇌",xleftequilibrium:"⇋","\\cdrightarrow":"→","\\cdleftarrow":"←","\\cdlongequal":"="},y0=function(t){var r=new G("mo",[new Me(T3[t.replace(/^\\/,"")])]);return r.setAttribute("stretchy","true"),r},x3={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overbracket:[["leftbracketover","rightbracketover"],1.6,440],underbracket:[["leftbracketunder","rightbracketunder"],1.6,410],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},y3=new Set(["widehat","widecheck","widetilde","utilde"]),v0=function(t,r){function n(){var s=4e5,l=t.label.slice(1);if(y3.has(l)&&"base"in t){var c=t.base.type==="ordgroup"?t.base.body.length:1,d,f,g;if(c>5)l==="widehat"||l==="widecheck"?(d=420,s=2364,g=.42,f=l+"4"):(d=312,s=2340,g=.34,f="tilde4");else{var p=[1,1,2,2,3,3][c];l==="widehat"||l==="widecheck"?(s=[0,1062,2364,2364,2364][p],d=[0,239,300,360,420][p],g=[0,.24,.3,.3,.36,.42][p],f=l+p):(s=[0,600,1033,2339,2340][p],d=[0,260,286,306,312][p],g=[0,.26,.286,.3,.306,.34][p],f="tilde"+p)}var x=new Zt(f),S=new zt([x],{width:"100%",height:V(g),viewBox:"0 0 "+s+" "+d,preserveAspectRatio:"none"});return{span:er([],[S],r),minWidth:0,height:g}}else{var D=[],_=x3[l];if(!_)throw new Error('No SVG data for "'+l+'".');var[N,M,W]=_,j=W/1e3,L=N.length,ee,re;if(L===1){if(_.length!==4)throw new Error('Expected 4-tuple for single-path SVG data "'+l+'".');ee=["hide-tail"],re=[_[3]]}else if(L===2)ee=["halfarrow-left","halfarrow-right"],re=["xMinYMin","xMaxYMin"];else if(L===3)ee=["brace-left","brace-center","brace-right"],re=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support - `+L+" children.");for(var K=0;K0&&(a.style.minWidth=V(i)),a},v3=function(t,r,n,a,i){var u,s=t.height+t.depth+n+a;if(/fbox|color|angl/.test(r)){if(u=z(["stretchy",r],[],i),r==="fbox"){var l=i.color&&i.getColor();l&&(u.style.borderColor=l)}}else{var c=[];/^[bx]cancel$/.test(r)&&c.push(new Da({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(r)&&c.push(new Da({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var d=new zt(c,{width:"100%",height:V(s)});u=er([],[d],i)}return u.height=s,u.style.height=V(s),u},A3={bin:1,close:1,inner:1,open:1,punct:1,rel:1},k3={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1};function S3(e){return e in A3}function ce(e,t){if(!e||e.type!==t)throw new Error("Expected node of type "+t+", but got "+(e?"node of type "+e.type:String(e)));return e}function A0(e){var t=k0(e);if(!t)throw new Error("Expected node of symbol group type, but got "+(e?"node of type "+e.type:String(e)));return t}function k0(e){return e&&(e.type==="atom"||k3.hasOwnProperty(e.type))?e:null}var ho=e=>{if(e instanceof ct)return e;if(K4(e)&&e.children.length===1)return ho(e.children[0])},Ai=(e,t)=>{var r,n,a;e&&e.type==="supsub"?(n=ce(e.base,"accent"),r=n.base,e.base=r,a=Q4(Te(e,t)),e.base=n):(n=ce(e,"accent"),r=n.base);var i=Te(r,t.havingCrampedStyle()),u=n.isShifty&&qt(r),s=0;if(u){var l,c;s=(l=(c=ho(i))==null?void 0:c.skew)!=null?l:0}var d=n.label==="\\c",f=d?i.height+i.depth:Math.min(i.height,t.fontMetrics().xHeight),g;if(n.isStretchy)g=v0(n,t),g=Ee({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"elem",elem:g,wrapperClasses:["svg-align"],wrapperStyle:s>0?{width:"calc(100% - "+V(2*s)+")",marginLeft:V(2*s)}:void 0}]});else{var p,x;n.label==="\\vec"?(p=ao("vec",t),x=no.vec[1]):(p=x0({mode:n.mode,text:n.label},t,"textord"),p=$4(p),p.italic=0,x=p.width,d&&(f+=p.depth)),g=z(["accent-body"],[p]);var S=n.label==="\\textcircled";S&&(g.classes.push("accent-full"),f=i.height);var D=s;S||(D-=x/2),g.style.left=V(D),n.label==="\\textcircled"&&(g.style.top=".2em"),g=Ee({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:-f},{type:"elem",elem:g}]})}var _=z(["mord","accent"],[g],t);return a?(a.children[0]=_,a.height=Math.max(_.height,a.height),a.classes[0]="mord",a):_},fo=(e,t)=>{var r=e.isStretchy?y0(e.label):new G("mo",[bt(e.label,e.mode)]),n=new G("mover",[Ae(e.base,t),r]);return n.setAttribute("accent","true"),n},w3=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(e=>"\\"+e).join("|"));Z({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:(e,t)=>{var r=u0(t[0]),n=!w3.test(e.funcName),a=!n||e.funcName==="\\widehat"||e.funcName==="\\widetilde"||e.funcName==="\\widecheck";return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:n,isShifty:a,base:r}},htmlBuilder:Ai,mathmlBuilder:fo});Z({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(e,t)=>{var r=t[0],n=e.parser.mode;return n==="math"&&(e.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+e.funcName+" works only in text mode"),n="text"),{type:"accent",mode:n,label:e.funcName,isStretchy:!1,isShifty:!0,base:r}},htmlBuilder:Ai,mathmlBuilder:fo});Z({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=t[0];return{type:"accentUnder",mode:r.mode,label:n,base:a}},htmlBuilder:(e,t)=>{var r=Te(e.base,t),n=v0(e,t),a=e.label==="\\utilde"?.12:0,i=Ee({positionType:"top",positionData:r.height,children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:a},{type:"elem",elem:r}]});return z(["mord","accentunder"],[i],t)},mathmlBuilder:(e,t)=>{var r=y0(e.label),n=new G("munder",[Ae(e.base,t),r]);return n.setAttribute("accentunder","true"),n}});var Gn=e=>{var t=new G("mpadded",e?[e]:[]);return t.setAttribute("width","+0.6em"),t.setAttribute("lspace","0.3em"),t};Z({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){var{parser:n,funcName:a}=e;return{type:"xArrow",mode:n.mode,label:a,body:t[0],below:r[0]}},htmlBuilder(e,t){var r=t.style,n=t.havingStyle(r.sup()),a=Lr(Te(e.body,n,t),t),i=e.label.slice(0,2)==="\\x"?"x":"cd";a.classes.push(i+"-arrow-pad");var u;e.below&&(n=t.havingStyle(r.sub()),u=Lr(Te(e.below,n,t),t),u.classes.push(i+"-arrow-pad"));var s=v0(e,t),l=-t.fontMetrics().axisHeight+.5*s.height,c=-t.fontMetrics().axisHeight-.5*s.height-.111;(a.depth>.25||e.label==="\\xleftequilibrium")&&(c-=a.depth);var d;if(u){var f=-t.fontMetrics().axisHeight+u.height+.5*s.height+.111;d=Ee({positionType:"individualShift",children:[{type:"elem",elem:a,shift:c},{type:"elem",elem:s,shift:l,wrapperClasses:["svg-align"]},{type:"elem",elem:u,shift:f}]})}else d=Ee({positionType:"individualShift",children:[{type:"elem",elem:a,shift:c},{type:"elem",elem:s,shift:l,wrapperClasses:["svg-align"]}]});return z(["mrel","x-arrow"],[d],t)},mathmlBuilder(e,t){var r=y0(e.label);r.setAttribute("minsize",e.label.charAt(0)==="x"?"1.75em":"3.0em");var n;if(e.body){var a=Gn(Ae(e.body,t));if(e.below){var i=Gn(Ae(e.below,t));n=new G("munderover",[r,i,a])}else n=new G("mover",[r,a])}else if(e.below){var u=Gn(Ae(e.below,t));n=new G("munder",[r,u])}else n=Gn(),n=new G("mover",[r,n]);return n}});function mo(e,t){var r=He(e.body,t,!0);return z([e.mclass],r,t)}function po(e,t){var r,n=dt(e.body,t);return e.mclass==="minner"?r=new G("mpadded",n):e.mclass==="mord"?e.isCharacterBox?(r=n[0],r.type="mi"):r=new G("mi",n):(e.isCharacterBox?(r=n[0],r.type="mo"):r=new G("mo",n),e.mclass==="mbin"?(r.attributes.lspace="0.22em",r.attributes.rspace="0.22em"):e.mclass==="mpunct"?(r.attributes.lspace="0em",r.attributes.rspace="0.17em"):e.mclass==="mopen"||e.mclass==="mclose"?(r.attributes.lspace="0em",r.attributes.rspace="0em"):e.mclass==="minner"&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em")),r}Z({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(e,t){var{parser:r,funcName:n}=e,a=t[0];return{type:"mclass",mode:r.mode,mclass:"m"+n.slice(5),body:Re(a),isCharacterBox:qt(a)}},htmlBuilder:mo,mathmlBuilder:po});var S0=e=>{var t=e.type==="ordgroup"&&e.body.length?e.body[0]:e;return t.type==="atom"&&(t.family==="bin"||t.family==="rel")?"m"+t.family:"mord"};Z({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(e,t){var{parser:r}=e;return{type:"mclass",mode:r.mode,mclass:S0(t[0]),body:Re(t[1]),isCharacterBox:qt(t[1])}}});Z({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(e,t){var{parser:r,funcName:n}=e,a=t[1],i=t[0],u;n!=="\\stackrel"?u=S0(a):u="mrel";var s={type:"op",mode:a.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:n!=="\\stackrel",body:Re(a)},l={type:"supsub",mode:i.mode,base:s,sup:n==="\\underset"?null:i,sub:n==="\\underset"?i:null};return{type:"mclass",mode:r.mode,mclass:u,body:[l],isCharacterBox:qt(l)}},htmlBuilder:mo,mathmlBuilder:po});Z({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"pmb",mode:r.mode,mclass:S0(t[0]),body:Re(t[0])}},htmlBuilder(e,t){var r=He(e.body,t,!0),n=z([e.mclass],r,t);return n.style.textShadow="0.02em 0.01em 0.04px",n},mathmlBuilder(e,t){var r=dt(e.body,t),n=new G("mstyle",r);return n.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),n}});var C3={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},Xu=()=>({type:"styling",body:[],mode:"math",style:"display",resetFont:!0}),$u=e=>e.type==="textord"&&e.text==="@",_3=(e,t)=>(e.type==="mathord"||e.type==="atom")&&e.text===t;function I3(e,t,r){var n=C3[e];switch(n){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(n,[t[0]],[t[1]]);case"\\uparrow":case"\\downarrow":{var a=r.callFunction("\\\\cdleft",[t[0]],[]),i={type:"atom",text:n,mode:"math",family:"rel"},u=r.callFunction("\\Big",[i],[]),s=r.callFunction("\\\\cdright",[t[1]],[]),l={type:"ordgroup",mode:"math",body:[a,u,s]};return r.callFunction("\\\\cdparent",[l],[])}case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var c={type:"textord",text:"\\Vert",mode:"math"};return r.callFunction("\\Big",[c],[])}default:return{type:"textord",text:" ",mode:"math"}}}function N3(e){var t=[];for(e.gullet.beginGroup(),e.gullet.macros.set("\\cr","\\\\\\relax"),e.gullet.beginGroup();;){t.push(e.parseExpression(!1,"\\\\")),e.gullet.endGroup(),e.gullet.beginGroup();var r=e.fetch().text;if(r==="&"||r==="\\\\")e.consume();else if(r==="\\end"){t[t.length-1].length===0&&t.pop();break}else throw new Y("Expected \\\\ or \\cr or \\end",e.nextToken)}for(var n=[],a=[n],i=0;iAV".includes(c))for(var f=0;f<2;f++){for(var g=!0,p=l+1;pAV=|." after @',u[l]);var x=I3(c,d,e),S={type:"styling",body:[x],mode:"math",style:"display",resetFont:!0};n.push(S),s=Xu()}i%2===0?n.push(s):n.shift(),n=[],a.push(n)}e.gullet.endGroup(),e.gullet.endGroup();var D=new Array(a[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25});return{type:"array",mode:"math",body:a,arraystretch:1,addJot:!0,rowGaps:[null],cols:D,colSeparationType:"CD",hLinesBeforeRow:new Array(a.length+1).fill([])}}Z({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:n}=e;return{type:"cdlabel",mode:r.mode,side:n.slice(4),label:t[0]}},htmlBuilder(e,t){var r=t.havingStyle(t.style.sup()),n=Lr(Te(e.label,r,t),t);return n.classes.push("cd-label-"+e.side),n.style.bottom=V(.8-n.depth),n.height=0,n.depth=0,n},mathmlBuilder(e,t){var r=new G("mrow",[Ae(e.label,t)]);return r=new G("mpadded",[r]),r.setAttribute("width","0"),e.side==="left"&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),r=new G("mstyle",[r]),r.setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}});Z({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(e,t){var{parser:r}=e;return{type:"cdlabelparent",mode:r.mode,fragment:t[0]}},htmlBuilder(e,t){var r=Lr(Te(e.fragment,t),t);return r.classes.push("cd-vert-arrow"),r},mathmlBuilder(e,t){return new G("mrow",[Ae(e.fragment,t)])}});Z({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(e,t){for(var{parser:r}=e,n=ce(t[0],"ordgroup"),a=n.body,i="",u=0;u=1114111)throw new Y("\\@char with invalid code point "+i);return l<=65535?c=String.fromCharCode(l):(l-=65536,c=String.fromCharCode((l>>10)+55296,(l&1023)+56320)),{type:"textord",mode:r.mode,text:c}}});var go=(e,t)=>{var r=He(e.body,t.withColor(e.color),!1);return Gt(r)},bo=(e,t)=>{var r=dt(e.body,t.withColor(e.color)),n=new G("mstyle",r);return n.setAttribute("mathcolor",e.color),n};Z({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(e,t){var{parser:r}=e,n=ce(t[0],"color-token").color,a=t[1];return{type:"color",mode:r.mode,color:n,body:Re(a)}},htmlBuilder:go,mathmlBuilder:bo});Z({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(e,t){var{parser:r,breakOnTokenText:n}=e,a=ce(t[0],"color-token").color;r.gullet.macros.set("\\current@color",a);var i=r.parseExpression(!0,n);return{type:"color",mode:r.mode,color:a,body:i}},htmlBuilder:go,mathmlBuilder:bo});Z({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(e,t,r){var{parser:n}=e,a=n.gullet.future().text==="["?n.parseSizeGroup(!0):null,i=!n.settings.displayMode||!n.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:n.mode,newLine:i,size:a&&ce(a,"size").value}},htmlBuilder(e,t){var r=z(["mspace"],[],t);return e.newLine&&(r.classes.push("newline"),e.size&&(r.style.marginTop=V(Ie(e.size,t)))),r},mathmlBuilder(e,t){var r=new G("mspace");return e.newLine&&(r.setAttribute("linebreak","newline"),e.size&&r.setAttribute("height",V(Ie(e.size,t)))),r}});var qa={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},Eo=e=>{var t=e.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(t))throw new Y("Expected a control sequence",e);return t},D3=e=>{var t=e.gullet.popToken();return t.text==="="&&(t=e.gullet.popToken(),t.text===" "&&(t=e.gullet.popToken())),t},To=(e,t,r,n)=>{var a=e.gullet.macros.get(r.text);a==null&&(r.noexpand=!0,a={tokens:[r],numArgs:0,unexpandable:!e.gullet.isExpandable(r.text)}),e.gullet.macros.set(t,a,n)};Z({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(e){var{parser:t,funcName:r}=e;t.consumeSpaces();var n=t.fetch();if(qa[n.text])return(r==="\\global"||r==="\\\\globallong")&&(n.text=qa[n.text]),ce(t.parseFunction(),"internal");throw new Y("Invalid token after macro prefix",n)}});Z({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,n=t.gullet.popToken(),a=n.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(a))throw new Y("Expected a control sequence",n);for(var i=0,u,s=[[]];t.gullet.future().text!=="{";)if(n=t.gullet.popToken(),n.text==="#"){if(t.gullet.future().text==="{"){u=t.gullet.future(),s[i].push("{");break}if(n=t.gullet.popToken(),!/^[1-9]$/.test(n.text))throw new Y('Invalid argument number "'+n.text+'"');if(parseInt(n.text)!==i+1)throw new Y('Argument number "'+n.text+'" out of order');i++,s.push([])}else{if(n.text==="EOF")throw new Y("Expected a macro definition");s[i].push(n.text)}var{tokens:l}=t.gullet.consumeArg();return u&&l.unshift(u),(r==="\\edef"||r==="\\xdef")&&(l=t.gullet.expandTokens(l),l.reverse()),t.gullet.macros.set(a,{tokens:l,numArgs:i,delimiters:s},r===qa[r]),{type:"internal",mode:t.mode}}});Z({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,n=Eo(t.gullet.popToken());t.gullet.consumeSpaces();var a=D3(t);return To(t,n,a,r==="\\\\globallet"),{type:"internal",mode:t.mode}}});Z({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,n=Eo(t.gullet.popToken()),a=t.gullet.popToken(),i=t.gullet.popToken();return To(t,n,i,r==="\\\\globalfuture"),t.gullet.pushToken(i),t.gullet.pushToken(a),{type:"internal",mode:t.mode}}});var tn=function(t,r,n){var a=we.math[t]&&we.math[t].replace,i=Ei(a||t,r,n);if(!i)throw new Error("Unsupported symbol "+t+" and font size "+r+".");return i},ki=function(t,r,n,a){var i=n.havingBaseStyle(r),u=z(a.concat(i.sizingClasses(n)),[t],n),s=i.sizeMultiplier/n.sizeMultiplier;return u.height*=s,u.depth*=s,u.maxFontSize=i.sizeMultiplier,u},xo=function(t,r,n){var a=r.havingBaseStyle(n),i=(1-r.sizeMultiplier/a.sizeMultiplier)*r.fontMetrics().axisHeight;t.classes.push("delimcenter"),t.style.top=V(i),t.height-=i,t.depth+=i},O3=function(t,r,n,a,i,u){var s=Qe(t,"Main-Regular",i,a),l=ki(s,r,a,u);return xo(l,a,r),l},L3=function(t,r,n,a){return Qe(t,"Size"+r+"-Regular",n,a)},yo=function(t,r,n,a,i,u){var s=L3(t,r,i,a),l=ki(z(["delimsizing","size"+r],[s],a),oe.TEXT,a,u);return n&&xo(l,a,oe.TEXT),l},ua=function(t,r,n){var a;r==="Size1-Regular"?a="delim-size1":a="delim-size4";var i=z(["delimsizinginner",a],[z([],[Qe(t,r,n)])]);return{type:"elem",elem:i}},sa=function(t,r,n){var a=wt["Size4-Regular"][t.charCodeAt(0)]?wt["Size4-Regular"][t.charCodeAt(0)][4]:wt["Size1-Regular"][t.charCodeAt(0)][4],i=new Zt("inner",q4(t,Math.round(1e3*r))),u=new zt([i],{width:V(a),height:V(r),style:"width:"+V(a),viewBox:"0 0 "+1e3*a+" "+Math.round(1e3*r),preserveAspectRatio:"xMinYMin"}),s=er([],[u],n);return s.height=r,s.style.height=V(r),s.style.width=V(a),{type:"elem",elem:s}},Ya=.008,Vn={type:"kern",size:-1*Ya},R3=new Set(["|","\\lvert","\\rvert","\\vert"]),M3=new Set(["\\|","\\lVert","\\rVert","\\Vert"]),vo=function(t,r,n,a,i,u){var s,l,c,d,f="",g=0;s=c=d=t,l=null;var p="Size1-Regular";t==="\\uparrow"?c=d="⏐":t==="\\Uparrow"?c=d="‖":t==="\\downarrow"?s=c="⏐":t==="\\Downarrow"?s=c="‖":t==="\\updownarrow"?(s="\\uparrow",c="⏐",d="\\downarrow"):t==="\\Updownarrow"?(s="\\Uparrow",c="‖",d="\\Downarrow"):R3.has(t)?(c="∣",f="vert",g=333):M3.has(t)?(c="∥",f="doublevert",g=556):t==="["||t==="\\lbrack"?(s="⎡",c="⎢",d="⎣",p="Size4-Regular",f="lbrack",g=667):t==="]"||t==="\\rbrack"?(s="⎤",c="⎥",d="⎦",p="Size4-Regular",f="rbrack",g=667):t==="\\lfloor"||t==="⌊"?(c=s="⎢",d="⎣",p="Size4-Regular",f="lfloor",g=667):t==="\\lceil"||t==="⌈"?(s="⎡",c=d="⎢",p="Size4-Regular",f="lceil",g=667):t==="\\rfloor"||t==="⌋"?(c=s="⎥",d="⎦",p="Size4-Regular",f="rfloor",g=667):t==="\\rceil"||t==="⌉"?(s="⎤",c=d="⎥",p="Size4-Regular",f="rceil",g=667):t==="("||t==="\\lparen"?(s="⎛",c="⎜",d="⎝",p="Size4-Regular",f="lparen",g=875):t===")"||t==="\\rparen"?(s="⎞",c="⎟",d="⎠",p="Size4-Regular",f="rparen",g=875):t==="\\{"||t==="\\lbrace"?(s="⎧",l="⎨",d="⎩",c="⎪",p="Size4-Regular"):t==="\\}"||t==="\\rbrace"?(s="⎫",l="⎬",d="⎭",c="⎪",p="Size4-Regular"):t==="\\lgroup"||t==="⟮"?(s="⎧",d="⎩",c="⎪",p="Size4-Regular"):t==="\\rgroup"||t==="⟯"?(s="⎫",d="⎭",c="⎪",p="Size4-Regular"):t==="\\lmoustache"||t==="⎰"?(s="⎧",d="⎭",c="⎪",p="Size4-Regular"):(t==="\\rmoustache"||t==="⎱")&&(s="⎫",d="⎩",c="⎪",p="Size4-Regular");var x=tn(s,p,i),S=x.height+x.depth,D=tn(c,p,i),_=D.height+D.depth,N=tn(d,p,i),M=N.height+N.depth,W=0,j=1;if(l!==null){var L=tn(l,p,i);W=L.height+L.depth,j=2}var ee=S+M+W,re=Math.max(0,Math.ceil((r-ee)/(j*_))),K=ee+re*j*_,R=a.fontMetrics().axisHeight;n&&(R*=a.sizeMultiplier);var J=K/2-R,Q=[];if(f.length>0){var be=K-S-M,ne=Math.round(K*1e3),X=Y4(f,Math.round(be*1e3)),me=new Zt(f,X),ke=V(g/1e3),ze=V(ne/1e3),at=new zt([me],{width:ke,height:ze,viewBox:"0 0 "+g+" "+ne}),w=er([],[at],a);w.height=ne/1e3,w.style.width=ke,w.style.height=ze,Q.push({type:"elem",elem:w})}else{if(Q.push(ua(d,p,i)),Q.push(Vn),l===null){var Oe=K-S-M+2*Ya;Q.push(sa(c,Oe,a))}else{var Xe=(K-S-M-W)/2+2*Ya;Q.push(sa(c,Xe,a)),Q.push(Vn),Q.push(ua(l,p,i)),Q.push(Vn),Q.push(sa(c,Xe,a))}Q.push(Vn),Q.push(ua(s,p,i))}var C=a.havingBaseStyle(oe.TEXT),Ye=Ee({positionType:"bottom",positionData:J,children:Q});return ki(z(["delimsizing","mult"],[Ye],C),oe.TEXT,a,u)},la=80,oa=.08,ca=function(t,r,n,a,i){var u=U4(t,a,n),s=new Zt(t,u),l=new zt([s],{width:"400em",height:V(r),viewBox:"0 0 400000 "+n,preserveAspectRatio:"xMinYMin slice"});return er(["hide-tail"],[l],i)},P3=function(t,r){var n=r.havingBaseSizing(),a=Co("\\surd",t*n.sizeMultiplier,wo,n),i=n.sizeMultiplier,u=Math.max(0,r.minRuleThickness-r.fontMetrics().sqrtRuleThickness),s,l,c,d,f;return a.type==="small"?(d=1e3+1e3*u+la,t<1?i=1:t<1.4&&(i=.7),l=(1+u+oa)/i,c=(1+u)/i,s=ca("sqrtMain",l,d,u,r),s.style.minWidth="0.853em",f=.833/i):a.type==="large"?(d=(1e3+la)*sn[a.size],c=(sn[a.size]+u)/i,l=(sn[a.size]+u+oa)/i,s=ca("sqrtSize"+a.size,l,d,u,r),s.style.minWidth="1.02em",f=1/i):(l=t+u+oa,c=t+u,d=Math.floor(1e3*t+u)+la,s=ca("sqrtTall",l,d,u,r),s.style.minWidth="0.742em",f=1.056),s.height=c,s.style.height=V(l),{span:s,advanceWidth:f,ruleWidth:(r.fontMetrics().sqrtRuleThickness+u)*i}},Ao=new Set(["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","\\surd"]),B3=new Set(["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱"]),ko=new Set(["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"]),sn=[0,1.2,1.8,2.4,3],So=function(t,r,n,a,i){if(t==="<"||t==="\\lt"||t==="⟨"?t="\\langle":(t===">"||t==="\\gt"||t==="⟩")&&(t="\\rangle"),Ao.has(t)||ko.has(t))return yo(t,r,!1,n,a,i);if(B3.has(t))return vo(t,sn[r],!1,n,a,i);throw new Y("Illegal delimiter: '"+t+"'")},F3=[{type:"small",style:oe.SCRIPTSCRIPT},{type:"small",style:oe.SCRIPT},{type:"small",style:oe.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],H3=[{type:"small",style:oe.SCRIPTSCRIPT},{type:"small",style:oe.SCRIPT},{type:"small",style:oe.TEXT},{type:"stack"}],wo=[{type:"small",style:oe.SCRIPTSCRIPT},{type:"small",style:oe.SCRIPT},{type:"small",style:oe.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],z3=function(t){if(t.type==="small")return"Main-Regular";if(t.type==="large")return"Size"+t.size+"-Regular";if(t.type==="stack")return"Size4-Regular";var r=t.type;throw new Error("Add support for delim type '"+r+"' here.")},Co=function(t,r,n,a){for(var i=Math.min(2,3-a.style.size),u=i;ur)return s}return n[n.length-1]},Ga=function(t,r,n,a,i,u){t==="<"||t==="\\lt"||t==="⟨"?t="\\langle":(t===">"||t==="\\gt"||t==="⟩")&&(t="\\rangle");var s;ko.has(t)?s=F3:Ao.has(t)?s=wo:s=H3;var l=Co(t,r,s,a);return l.type==="small"?O3(t,l.style,n,a,i,u):l.type==="large"?yo(t,l.size,n,a,i,u):vo(t,r,n,a,i,u)},ha=function(t,r,n,a,i,u){var s=a.fontMetrics().axisHeight*a.sizeMultiplier,l=901,c=5/a.fontMetrics().ptPerEm,d=Math.max(r-s,n+s),f=Math.max(d/500*l,2*d-c);return Ga(t,f,!0,a,i,u)},Qu={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},U3=new Set(["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","<",">","\\langle","⟨","\\rangle","⟩","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."]);function Ku(e){return"isMiddle"in e}function w0(e,t){var r=k0(e);if(r&&U3.has(r.text))return r;throw r?new Y("Invalid delimiter '"+r.text+"' after '"+t.funcName+"'",e):new Y("Invalid delimiter type '"+e.type+"'",e)}Z({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:(e,t)=>{var r=w0(t[0],e);return{type:"delimsizing",mode:e.parser.mode,size:Qu[e.funcName].size,mclass:Qu[e.funcName].mclass,delim:r.text}},htmlBuilder:(e,t)=>e.delim==="."?z([e.mclass]):So(e.delim,e.size,t,e.mode,[e.mclass]),mathmlBuilder:e=>{var t=[];e.delim!=="."&&t.push(bt(e.delim,e.mode));var r=new G("mo",t);e.mclass==="mopen"||e.mclass==="mclose"?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r.setAttribute("stretchy","true");var n=V(sn[e.size]);return r.setAttribute("minsize",n),r.setAttribute("maxsize",n),r}});function Ju(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}Z({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=e.parser.gullet.macros.get("\\current@color");if(r&&typeof r!="string")throw new Y("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:e.parser.mode,delim:w0(t[0],e).text,color:r}}});Z({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=w0(t[0],e),n=e.parser;++n.leftrightDepth;var a=n.parseExpression(!1);--n.leftrightDepth,n.expect("\\right",!1);var i=ce(n.parseFunction(),"leftright-right");return{type:"leftright",mode:n.mode,body:a,left:r.text,right:i.delim,rightColor:i.color}},htmlBuilder:(e,t)=>{Ju(e);for(var r=He(e.body,t,!0,["mopen","mclose"]),n=0,a=0,i=!1,u=0;u{Ju(e);var r=dt(e.body,t);if(e.left!=="."){var n=new G("mo",[bt(e.left,e.mode)]);n.setAttribute("fence","true"),r.unshift(n)}if(e.right!=="."){var a=new G("mo",[bt(e.right,e.mode)]);a.setAttribute("fence","true"),e.rightColor&&a.setAttribute("mathcolor",e.rightColor),r.push(a)}return yi(r)}});Z({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=w0(t[0],e);if(!e.parser.leftrightDepth)throw new Y("\\middle without preceding \\left",r);return{type:"middle",mode:e.parser.mode,delim:r.text}},htmlBuilder:(e,t)=>{var r;return e.delim==="."?r=bn(t,[]):(r=So(e.delim,1,t,e.mode,[]),r.isMiddle={delim:e.delim,options:t}),r},mathmlBuilder:(e,t)=>{var r=e.delim==="\\vert"||e.delim==="|"?bt("|","text"):bt(e.delim,e.mode),n=new G("mo",[r]);return n.setAttribute("fence","true"),n.setAttribute("lspace","0.05em"),n.setAttribute("rspace","0.05em"),n}});var C0=(e,t)=>{var r=Lr(Te(e.body,t),t),n=e.label.slice(1),a=t.sizeMultiplier,i,u,s=qt(e.body);if(n==="sout")i=z(["stretchy","sout"]),i.height=t.fontMetrics().defaultRuleThickness/a,u=-.5*t.fontMetrics().xHeight;else if(n==="phase"){var l=Ie({number:.6,unit:"pt"},t),c=Ie({number:.35,unit:"ex"},t),d=t.havingBaseSizing();a=a/d.sizeMultiplier;var f=r.height+r.depth+l+c;r.style.paddingLeft=V(f/2+l);var g=Math.floor(1e3*f*a),p=H4(g),x=new zt([new Zt("phase",p)],{width:"400em",height:V(g/1e3),viewBox:"0 0 400000 "+g,preserveAspectRatio:"xMinYMin slice"});i=er(["hide-tail"],[x],t),i.style.height=V(f),u=r.depth+l+c}else{/cancel/.test(n)?s||r.classes.push("cancel-pad"):n==="angl"?r.classes.push("anglpad"):r.classes.push("boxpad");var S,D,_=0;/box/.test(n)?(_=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness),S=t.fontMetrics().fboxsep+(n==="colorbox"?0:_),D=S):n==="angl"?(_=Math.max(t.fontMetrics().defaultRuleThickness,t.minRuleThickness),S=4*_,D=Math.max(0,.25-r.depth)):(S=s?.2:0,D=S),i=v3(r,n,S,D,t),/fbox|boxed|fcolorbox/.test(n)?(i.style.borderStyle="solid",i.style.borderWidth=V(_)):n==="angl"&&_!==.049&&(i.style.borderTopWidth=V(_),i.style.borderRightWidth=V(_)),u=r.depth+D,e.backgroundColor&&(i.style.backgroundColor=e.backgroundColor,e.borderColor&&(i.style.borderColor=e.borderColor))}var N;if(e.backgroundColor)N=Ee({positionType:"individualShift",children:[{type:"elem",elem:i,shift:u},{type:"elem",elem:r,shift:0}]});else{var M=/cancel|phase/.test(n)?["svg-align"]:[];N=Ee({positionType:"individualShift",children:[{type:"elem",elem:r,shift:0},{type:"elem",elem:i,shift:u,wrapperClasses:M}]})}return/cancel/.test(n)&&(N.height=r.height,N.depth=r.depth),/cancel/.test(n)&&!s?z(["mord","cancel-lap"],[N],t):z(["mord"],[N],t)},_0=(e,t)=>{var r,n=new G(e.label.includes("colorbox")?"mpadded":"menclose",[Ae(e.body,t)]);switch(e.label){case"\\cancel":n.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":n.setAttribute("notation","downdiagonalstrike");break;case"\\phase":n.setAttribute("notation","phasorangle");break;case"\\sout":n.setAttribute("notation","horizontalstrike");break;case"\\fbox":n.setAttribute("notation","box");break;case"\\angl":n.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(r=t.fontMetrics().fboxsep*t.fontMetrics().ptPerEm,n.setAttribute("width","+"+2*r+"pt"),n.setAttribute("height","+"+2*r+"pt"),n.setAttribute("lspace",r+"pt"),n.setAttribute("voffset",r+"pt"),e.label==="\\fcolorbox"){var a=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness);n.setAttribute("style","border: "+V(a)+" solid "+e.borderColor)}break;case"\\xcancel":n.setAttribute("notation","updiagonalstrike downdiagonalstrike");break}return e.backgroundColor&&n.setAttribute("mathbackground",e.backgroundColor),n};Z({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","hbox"]},handler(e,t,r){var{parser:n,funcName:a}=e,i=ce(t[0],"color-token").color,u=t[1];return{type:"enclose",mode:n.mode,label:a,backgroundColor:i,body:u}},htmlBuilder:C0,mathmlBuilder:_0});Z({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","hbox"]},handler(e,t,r){var{parser:n,funcName:a}=e,i=ce(t[0],"color-token").color,u=ce(t[1],"color-token").color,s=t[2];return{type:"enclose",mode:n.mode,label:a,backgroundColor:u,borderColor:i,body:s}},htmlBuilder:C0,mathmlBuilder:_0});Z({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\fbox",body:t[0]}}});Z({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\phase"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:n}=e,a=t[0];return{type:"enclose",mode:r.mode,label:n,body:a}},htmlBuilder:C0,mathmlBuilder:_0});Z({type:"enclose",names:["\\sout"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r,funcName:n}=e;r.mode==="math"&&r.settings.reportNonstrict("mathVsSout","LaTeX's \\sout works only in text mode");var a=t[0];return{type:"enclose",mode:r.mode,label:n,body:a}},htmlBuilder:C0,mathmlBuilder:_0});Z({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(e,t){var{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\angl",body:t[0]}}});var _o={};function Nt(e){for(var{type:t,names:r,props:n,handler:a,htmlBuilder:i,mathmlBuilder:u}=e,s={type:t,numArgs:n.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:a},l=0;l{var t=e.parser.settings;if(!t.displayMode)throw new Y("{"+e.envName+"} can be used only in display mode.")},q3=new Set(["gather","gather*"]);function Si(e){if(!e.includes("ed"))return!e.includes("*")}function ar(e,t,r){var{hskipBeforeAndAfter:n,addJot:a,cols:i,arraystretch:u,colSeparationType:s,autoTag:l,singleRow:c,emptySingleRow:d,maxNumCols:f,leqno:g}=t;if(e.gullet.beginGroup(),c||e.gullet.macros.set("\\cr","\\\\\\relax"),!u){var p=e.gullet.expandMacroAsText("\\arraystretch");if(p==null)u=1;else if(u=parseFloat(p),!u||u<0)throw new Y("Invalid \\arraystretch: "+p)}e.gullet.beginGroup();var x=[],S=[x],D=[],_=[],N=l!=null?[]:void 0;function M(){l&&e.gullet.macros.set("\\@eqnsw","1",!0)}function W(){N&&(e.gullet.macros.get("\\df@tag")?(N.push(e.subparse([new ot("\\df@tag")])),e.gullet.macros.set("\\df@tag",void 0,!0)):N.push(!!l&&e.gullet.macros.get("\\@eqnsw")==="1"))}for(M(),_.push(Zu(e));;){var j=e.parseExpression(!1,c?"\\end":"\\\\");e.gullet.endGroup(),e.gullet.beginGroup();var L={type:"ordgroup",mode:e.mode,body:j};r&&(L={type:"styling",mode:e.mode,style:r,resetFont:!0,body:[L]}),x.push(L);var ee=e.fetch().text;if(ee==="&"){if(f&&x.length===f){if(c||s)throw new Y("Too many tab characters: &",e.nextToken);e.settings.reportNonstrict("textEnv","Too few columns specified in the {array} column argument.")}e.consume()}else if(ee==="\\end"){W(),x.length===1&&L.type==="styling"&&L.body.length===1&&L.body[0].type==="ordgroup"&&L.body[0].body.length===0&&(S.length>1||!d)&&S.pop(),_.length0&&(M+=.25),c.push({pos:M,isDashed:ue[he]})}for(W(u[0]),n=0;n0&&(J+=N,eeue))for(n=0;n=s)){var it=void 0;if(a>0||t.hskipBeforeAndAfter){var Lt,ir;it=(Lt=(ir=C)==null?void 0:ir.pregap)!=null?Lt:g,it!==0&&(X=z(["arraycolsep"],[]),X.style.width=V(it),ne.push(X))}var _n=[];for(n=0;n0){for(var R0=Or("hline",r,d),M0=Or("hdashline",r,d),Vr=[{type:"elem",elem:ur,shift:0}];c.length>0;){var Ln=c.pop(),Rn=Ln.pos-Q;Ln.isDashed?Vr.push({type:"elem",elem:M0,shift:Rn}):Vr.push({type:"elem",elem:R0,shift:Rn})}ur=Ee({positionType:"individualShift",children:Vr})}if(ke.length===0)return z(["mord"],[ur],r);var B=Ee({positionType:"individualShift",children:ke}),$=z(["tag"],[B],r);return Gt([ur,$])},Y3={c:"center ",l:"left ",r:"right "},Ot=function(t,r){for(var n=[],a=new G("mtd",[],["mtr-glue"]),i=new G("mtd",[],["mml-eqn-num"]),u=0;u0){var x=t.cols,S="",D=!1,_=0,N=x.length;x[0].type==="separator"&&(g+="top ",_=1),x[x.length-1].type==="separator"&&(g+="bottom ",N-=1);for(var M=_;M0?"left ":"",g+=K[K.length-1].length>0?"right ":"";for(var R=1;R0&&p&&(D=1),n[x]={type:"align",align:S,pregap:D,postgap:0}}return u.colSeparationType=p?"align":"alignat",u};Nt({type:"array",names:["array","darray"],props:{numArgs:1},handler(e,t){var r=k0(t[0]),n=r?[t[0]]:ce(t[0],"ordgroup").body,a=n.map(function(u){var s=A0(u),l=s.text;if("lcr".includes(l))return{type:"align",align:l};if(l==="|")return{type:"separator",separator:"|"};if(l===":")return{type:"separator",separator:":"};throw new Y("Unknown column alignment: "+l,u)}),i={cols:a,hskipBeforeAndAfter:!0,maxNumCols:a.length};return ar(e.parser,i,wi(e.envName))},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(e){var t={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[e.envName.replace("*","")],r="c",n={hskipBeforeAndAfter:!1,cols:[{type:"align",align:r}]};if(e.envName.charAt(e.envName.length-1)==="*"){var a=e.parser;if(a.consumeSpaces(),a.fetch().text==="["){if(a.consume(),a.consumeSpaces(),r=a.fetch().text,!"lcr".includes(r))throw new Y("Expected l or c or r",a.nextToken);a.consume(),a.consumeSpaces(),a.expect("]"),a.consume(),n.cols=[{type:"align",align:r}]}}var i=ar(e.parser,n,wi(e.envName)),u=Math.max(0,...i.body.map(s=>s.length));return i.cols=new Array(u).fill({type:"align",align:r}),t?{type:"leftright",mode:e.mode,body:[i],left:t[0],right:t[1],rightColor:void 0}:i},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(e){var t={arraystretch:.5},r=ar(e.parser,t,"script");return r.colSeparationType="small",r},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["subarray"],props:{numArgs:1},handler(e,t){var r=k0(t[0]),n=r?[t[0]]:ce(t[0],"ordgroup").body,a=n.map(function(s){var l=A0(s),c=l.text;if("lc".includes(c))return{type:"align",align:c};throw new Y("Unknown column alignment: "+c,s)});if(a.length>1)throw new Y("{subarray} can contain only one column");var i={cols:a,hskipBeforeAndAfter:!1,arraystretch:.5},u=ar(e.parser,i,"script");if(u.body.length>0&&u.body[0].length>1)throw new Y("{subarray} can contain only one column");return u},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(e){var t={arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},r=ar(e.parser,t,wi(e.envName));return{type:"leftright",mode:e.mode,body:[r],left:e.envName.includes("r")?".":"\\{",right:e.envName.includes("r")?"\\}":".",rightColor:void 0}},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:No,htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(e){q3.has(e.envName)&&I0(e);var t={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:Si(e.envName),emptySingleRow:!0,leqno:e.parser.settings.leqno};return ar(e.parser,t,"display")},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:No,htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(e){I0(e);var t={autoTag:Si(e.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:e.parser.settings.leqno};return ar(e.parser,t,"display")},htmlBuilder:Dt,mathmlBuilder:Ot});Nt({type:"array",names:["CD"],props:{numArgs:0},handler(e){return I0(e),N3(e.parser)},htmlBuilder:Dt,mathmlBuilder:Ot});E("\\nonumber","\\gdef\\@eqnsw{0}");E("\\notag","\\nonumber");Z({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(e,t){throw new Y(e.funcName+" valid only within array environment")}});var es=_o;Z({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(e,t){var{parser:r,funcName:n}=e,a=t[0];if(a.type!=="ordgroup")throw new Y("Invalid environment name",a);for(var i="",u=0;u{var r=e.font,n=t.withFont(r);return Te(e.body,n)},Oo=(e,t)=>{var r=e.font,n=t.withFont(r);return Ae(e.body,n)},ts={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak"};Z({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=u0(t[0]),i=n;return i in ts&&(i=ts[i]),{type:"font",mode:r.mode,font:i.slice(1),body:a}},htmlBuilder:Do,mathmlBuilder:Oo});Z({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:(e,t)=>{var{parser:r}=e,n=t[0];return{type:"mclass",mode:r.mode,mclass:S0(n),body:[{type:"font",mode:r.mode,font:"boldsymbol",body:n}],isCharacterBox:qt(n)}}});Z({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:(e,t)=>{var{parser:r,funcName:n,breakOnTokenText:a}=e,{mode:i}=r,u=r.parseExpression(!0,a);return{type:"font",mode:i,font:"math"+n.slice(1),body:{type:"ordgroup",mode:r.mode,body:u}}},htmlBuilder:Do,mathmlBuilder:Oo});var G3=(e,t)=>{var r=t.style,n=r.fracNum(),a=r.fracDen(),i;i=t.havingStyle(n);var u=Te(e.numer,i,t);if(e.continued){var s=8.5/t.fontMetrics().ptPerEm,l=3.5/t.fontMetrics().ptPerEm;u.height=u.height0?x=3*g:x=7*g,S=t.fontMetrics().denom1):(f>0?(p=t.fontMetrics().num2,x=g):(p=t.fontMetrics().num3,x=3*g),S=t.fontMetrics().denom2);var D;if(d){var N=t.fontMetrics().axisHeight;p-u.depth-(N+.5*f){var r=new G("mfrac",[Ae(e.numer,t),Ae(e.denom,t)]);if(!e.hasBarLine)r.setAttribute("linethickness","0px");else if(e.barSize){var n=Ie(e.barSize,t);r.setAttribute("linethickness",V(n))}if(e.leftDelim!=null||e.rightDelim!=null){var a=[];if(e.leftDelim!=null){var i=new G("mo",[new Me(e.leftDelim.replace("\\",""))]);i.setAttribute("fence","true"),a.push(i)}if(a.push(r),e.rightDelim!=null){var u=new G("mo",[new Me(e.rightDelim.replace("\\",""))]);u.setAttribute("fence","true"),a.push(u)}return yi(a)}return r},Lo=(e,t)=>{if(!t)return e;var r={type:"styling",mode:e.mode,style:t,body:[e]};return r};Z({type:"genfrac",names:["\\cfrac","\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=t[0],i=t[1],u,s=null,l=null;switch(n){case"\\cfrac":case"\\dfrac":case"\\frac":case"\\tfrac":u=!0;break;case"\\\\atopfrac":u=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":u=!1,s="(",l=")";break;case"\\\\bracefrac":u=!1,s="\\{",l="\\}";break;case"\\\\brackfrac":u=!1,s="[",l="]";break;default:throw new Error("Unrecognized genfrac command")}var c=n==="\\cfrac",d=null;return c||n.startsWith("\\d")?d="display":n.startsWith("\\t")&&(d="text"),Lo({type:"genfrac",mode:r.mode,numer:a,denom:i,continued:c,hasBarLine:u,leftDelim:s,rightDelim:l,barSize:null},d)},htmlBuilder:G3,mathmlBuilder:V3});Z({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(e){var{parser:t,funcName:r,token:n}=e,a;switch(r){case"\\over":a="\\frac";break;case"\\choose":a="\\binom";break;case"\\atop":a="\\\\atopfrac";break;case"\\brace":a="\\\\bracefrac";break;case"\\brack":a="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:t.mode,replaceWith:a,token:n}}});var rs=["display","text","script","scriptscript"],ns=function(t){var r=null;return t.length>0&&(r=t,r=r==="."?null:r),r};Z({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(e,t){var{parser:r}=e,n=t[4],a=t[5],i=u0(t[0]),u=i.type==="atom"&&i.family==="open"?ns(i.text):null,s=u0(t[1]),l=s.type==="atom"&&s.family==="close"?ns(s.text):null,c=ce(t[2],"size"),d,f=null;c.isBlank?d=!0:(f=c.value,d=f.number>0);var g=null,p=t[3];if(p.type==="ordgroup"){if(p.body.length>0){var x=ce(p.body[0],"textord");g=rs[Number(x.text)]}}else p=ce(p,"textord"),g=rs[Number(p.text)];return Lo({type:"genfrac",mode:r.mode,numer:n,denom:a,continued:!1,hasBarLine:d,barSize:f,leftDelim:u,rightDelim:l},g)}});Z({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(e,t){var{parser:r,funcName:n,token:a}=e;return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:ce(t[0],"size").value,token:a}}});Z({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=t[0],i=ce(t[1],"infix").size;if(!i)throw new Error("\\\\abovefrac expected size, but got "+String(i));var u=t[2],s=i.number>0;return{type:"genfrac",mode:r.mode,numer:a,denom:u,continued:!1,hasBarLine:s,barSize:i,leftDelim:null,rightDelim:null}}});var Ro=(e,t)=>{var r=t.style,n,a;e.type==="supsub"?(n=e.sup?Te(e.sup,t.havingStyle(r.sup()),t):Te(e.sub,t.havingStyle(r.sub()),t),a=ce(e.base,"horizBrace")):a=ce(e,"horizBrace");var i=Te(a.base,t.havingBaseStyle(oe.DISPLAY)),u=v0(a,t),s;if(a.isOver?s=Ee({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:.1},{type:"elem",elem:u,wrapperClasses:["svg-align"]}]}):s=Ee({positionType:"bottom",positionData:i.depth+.1+u.height,children:[{type:"elem",elem:u,wrapperClasses:["svg-align"]},{type:"kern",size:.1},{type:"elem",elem:i}]}),n){var l=z(["minner",a.isOver?"mover":"munder"],[s],t);a.isOver?s=Ee({positionType:"firstBaseline",children:[{type:"elem",elem:l},{type:"kern",size:.2},{type:"elem",elem:n}]}):s=Ee({positionType:"bottom",positionData:l.depth+.2+n.height+n.depth,children:[{type:"elem",elem:n},{type:"kern",size:.2},{type:"elem",elem:l}]})}return z(["minner",a.isOver?"mover":"munder"],[s],t)},j3=(e,t)=>{var r=y0(e.label);return new G(e.isOver?"mover":"munder",[Ae(e.base,t),r])};Z({type:"horizBrace",names:["\\overbrace","\\underbrace","\\overbracket","\\underbracket"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:n}=e;return{type:"horizBrace",mode:r.mode,label:n,isOver:n.includes("\\over"),base:t[0]}},htmlBuilder:Ro,mathmlBuilder:j3});Z({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,n=t[1],a=ce(t[0],"url").url;return r.settings.isTrusted({command:"\\href",url:a})?{type:"href",mode:r.mode,href:a,body:Re(n)}:r.formatUnsupportedCmd("\\href")},htmlBuilder:(e,t)=>{var r=He(e.body,t,!1);return i3(e.href,[],r,t)},mathmlBuilder:(e,t)=>{var r=tr(e.body,t);return r instanceof G||(r=new G("mrow",[r])),r.setAttribute("href",e.href),r}});Z({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,n=ce(t[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:n}))return r.formatUnsupportedCmd("\\url");for(var a=[],i=0;i{var{parser:r,funcName:n,token:a}=e,i=ce(t[0],"raw").string,u=t[1];r.settings.strict&&r.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var s,l={};switch(n){case"\\htmlClass":l.class=i,s={command:"\\htmlClass",class:i};break;case"\\htmlId":l.id=i,s={command:"\\htmlId",id:i};break;case"\\htmlStyle":l.style=i,s={command:"\\htmlStyle",style:i};break;case"\\htmlData":{for(var c=i.split(","),d=0;d{var r=He(e.body,t,!1),n=["enclosing"];e.attributes.class&&n.push(...e.attributes.class.trim().split(/\s+/));var a=z(n,r,t);for(var i in e.attributes)i!=="class"&&e.attributes.hasOwnProperty(i)&&a.setAttribute(i,e.attributes[i]);return a},mathmlBuilder:(e,t)=>tr(e.body,t)});Z({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInArgument:!0,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e;return{type:"htmlmathml",mode:r.mode,html:Re(t[0]),mathml:Re(t[1])}},htmlBuilder:(e,t)=>{var r=He(e.html,t,!1);return Gt(r)},mathmlBuilder:(e,t)=>tr(e.mathml,t)});var da=function(t){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(t))return{number:+t,unit:"bp"};var r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t);if(!r)throw new Y("Invalid size: '"+t+"' in \\includegraphics");var n={number:+(r[1]+r[2]),unit:r[3]};if(!Ql(n))throw new Y("Invalid unit: '"+n.unit+"' in \\includegraphics.");return n};Z({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:(e,t,r)=>{var{parser:n}=e,a={number:0,unit:"em"},i={number:.9,unit:"em"},u={number:0,unit:"em"},s="";if(r[0])for(var l=ce(r[0],"raw").string,c=l.split(","),d=0;d{var r=Ie(e.height,t),n=0;e.totalheight.number>0&&(n=Ie(e.totalheight,t)-r);var a=0;e.width.number>0&&(a=Ie(e.width,t));var i={height:V(r+n)};a>0&&(i.width=V(a)),n>0&&(i.verticalAlign=V(-n));var u=new W4(e.src,e.alt,i);return u.height=r,u.depth=n,u},mathmlBuilder:(e,t)=>{var r=new G("mglyph",[]);r.setAttribute("alt",e.alt);var n=Ie(e.height,t),a=0;if(e.totalheight.number>0&&(a=Ie(e.totalheight,t)-n,r.setAttribute("valign",V(-a))),r.setAttribute("height",V(n+a)),e.width.number>0){var i=Ie(e.width,t);r.setAttribute("width",V(i))}return r.setAttribute("src",e.src),r}});Z({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(e,t){var{parser:r,funcName:n}=e,a=ce(t[0],"size");if(r.settings.strict){var i=n[1]==="m",u=a.value.unit==="mu";i?(u||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" supports only mu units, "+("not "+a.value.unit+" units")),r.mode!=="math"&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" works only in math mode")):u&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:a.value}},htmlBuilder(e,t){return ro(e.dimension,t)},mathmlBuilder(e,t){var r=Ie(e.dimension,t);return new lo(r)}});Z({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=t[0];return{type:"lap",mode:r.mode,alignment:n.slice(5),body:a}},htmlBuilder:(e,t)=>{var r;e.alignment==="clap"?(r=z([],[Te(e.body,t)]),r=z(["inner"],[r],t)):r=z(["inner"],[Te(e.body,t)]);var n=z(["fix"],[]),a=z([e.alignment],[r,n],t),i=z(["strut"]);return i.style.height=V(a.height+a.depth),a.depth&&(i.style.verticalAlign=V(-a.depth)),a.children.unshift(i),a=z(["thinbox"],[a],t),z(["mord","vbox"],[a],t)},mathmlBuilder:(e,t)=>{var r=new G("mpadded",[Ae(e.body,t)]);if(e.alignment!=="rlap"){var n=e.alignment==="llap"?"-1":"-0.5";r.setAttribute("lspace",n+"width")}return r.setAttribute("width","0px"),r}});Z({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){var{funcName:r,parser:n}=e,a=n.mode;n.switchMode("math");var i=r==="\\("?"\\)":"$",u=n.parseExpression(!1,i);return n.expect(i),n.switchMode(a),{type:"styling",mode:n.mode,style:"text",resetFont:!0,body:u}}});Z({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){throw new Y("Mismatched "+e.funcName)}});var as=(e,t)=>{switch(t.style.size){case oe.DISPLAY.size:return e.display;case oe.TEXT.size:return e.text;case oe.SCRIPT.size:return e.script;case oe.SCRIPTSCRIPT.size:return e.scriptscript;default:return e.text}};Z({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:(e,t)=>{var{parser:r}=e;return{type:"mathchoice",mode:r.mode,display:Re(t[0]),text:Re(t[1]),script:Re(t[2]),scriptscript:Re(t[3])}},htmlBuilder:(e,t)=>{var r=as(e,t),n=He(r,t,!1);return Gt(n)},mathmlBuilder:(e,t)=>{var r=as(e,t);return tr(r,t)}});var Mo=(e,t,r,n,a,i,u)=>{e=z([],[e]);var s=r&&qt(r),l,c;if(t){var d=Te(t,n.havingStyle(a.sup()),n);c={elem:d,kern:Math.max(n.fontMetrics().bigOpSpacing1,n.fontMetrics().bigOpSpacing3-d.depth)}}if(r){var f=Te(r,n.havingStyle(a.sub()),n);l={elem:f,kern:Math.max(n.fontMetrics().bigOpSpacing2,n.fontMetrics().bigOpSpacing4-f.height)}}var g;if(c&&l){var p=n.fontMetrics().bigOpSpacing5+l.elem.height+l.elem.depth+l.kern+e.depth+u;g=Ee({positionType:"bottom",positionData:p,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:l.elem,marginLeft:V(-i)},{type:"kern",size:l.kern},{type:"elem",elem:e},{type:"kern",size:c.kern},{type:"elem",elem:c.elem,marginLeft:V(i)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]})}else if(l){var x=e.height-u;g=Ee({positionType:"top",positionData:x,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:l.elem,marginLeft:V(-i)},{type:"kern",size:l.kern},{type:"elem",elem:e}]})}else if(c){var S=e.depth+u;g=Ee({positionType:"bottom",positionData:S,children:[{type:"elem",elem:e},{type:"kern",size:c.kern},{type:"elem",elem:c.elem,marginLeft:V(i)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]})}else return e;var D=[g];if(l&&i!==0&&!s){var _=z(["mspace"],[],n);_.style.marginRight=V(i),D.unshift(_)}return z(["mop","op-limits"],D,n)},Po=new Set(["\\smallint"]),zr=(e,t)=>{var r,n,a=!1,i;e.type==="supsub"?(r=e.sup,n=e.sub,i=ce(e.base,"op"),a=!0):i=ce(e,"op");var u=t.style,s=!1;u.size===oe.DISPLAY.size&&i.symbol&&!Po.has(i.name)&&(s=!0);var l,c;if(i.symbol){var d=s?"Size2-Regular":"Size1-Regular",f="";if((i.name==="\\oiint"||i.name==="\\oiiint")&&(f=i.name.slice(1),i.name=f==="oiint"?"\\iint":"\\iiint"),l=Qe(i.name,d,"math",t,["mop","op-symbol",s?"large-op":"small-op"]),c=l.italic,f.length>0){var g=ao(f+"Size"+(s?"2":"1"),t);l=Ee({positionType:"individualShift",children:[{type:"elem",elem:l,shift:0},{type:"elem",elem:g,shift:s?.08:0}]}),i.name="\\"+f,l.classes.unshift("mop"),l.italic=c}}else if(i.body){var p=He(i.body,t,!0);p.length===1&&p[0]instanceof ct?(l=p[0],l.classes[0]="mop"):l=z(["mop"],p,t)}else{for(var x=[],S=1;S{var r;if(e.symbol)r=new G("mo",[bt(e.name,e.mode)]),Po.has(e.name)&&r.setAttribute("largeop","false");else if(e.body)r=new G("mo",dt(e.body,t));else{r=new G("mi",[new Me(e.name.slice(1))]);var n=new G("mo",[bt("⁡","text")]);e.parentIsSupSub?r=new G("mrow",[r,n]):r=so([r,n])}return r},W3={"∏":"\\prod","∐":"\\coprod","∑":"\\sum","⋀":"\\bigwedge","⋁":"\\bigvee","⋂":"\\bigcap","⋃":"\\bigcup","⨀":"\\bigodot","⨁":"\\bigoplus","⨂":"\\bigotimes","⨄":"\\biguplus","⨆":"\\bigsqcup"};Z({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","∏","∐","∑","⋀","⋁","⋂","⋃","⨀","⨁","⨂","⨄","⨆"],props:{numArgs:0},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=n;return a.length===1&&(a=W3[a]),{type:"op",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:a}},htmlBuilder:zr,mathmlBuilder:Sn});Z({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var{parser:r}=e,n=t[0];return{type:"op",mode:r.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:Re(n)}},htmlBuilder:zr,mathmlBuilder:Sn});var X3={"∫":"\\int","∬":"\\iint","∭":"\\iiint","∮":"\\oint","∯":"\\oiint","∰":"\\oiiint"};Z({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:zr,mathmlBuilder:Sn});Z({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:zr,mathmlBuilder:Sn});Z({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","∫","∬","∭","∮","∯","∰"],props:{numArgs:0,allowedInArgument:!0},handler(e){var{parser:t,funcName:r}=e,n=r;return n.length===1&&(n=X3[n]),{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:zr,mathmlBuilder:Sn});var Bo=(e,t)=>{var r,n,a=!1,i;e.type==="supsub"?(r=e.sup,n=e.sub,i=ce(e.base,"operatorname"),a=!0):i=ce(e,"operatorname");var u;if(i.body.length>0){for(var s=i.body.map(f=>{var g="text"in f?f.text:void 0;return typeof g=="string"?{type:"textord",mode:f.mode,text:g}:f}),l=He(s,t.withFont("mathrm"),!0),c=0;c{for(var r=dt(e.body,t.withFont("mathrm")),n=!0,a=0;ad.toText()).join("");r=[new Me(s)]}var l=new G("mi",r);l.setAttribute("mathvariant","normal");var c=new G("mo",[bt("⁡","text")]);return e.parentIsSupSub?new G("mrow",[l,c]):so([l,c])};Z({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:(e,t)=>{var{parser:r,funcName:n}=e,a=t[0];return{type:"operatorname",mode:r.mode,body:Re(a),alwaysHandleSupSub:n==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},htmlBuilder:Bo,mathmlBuilder:$3});E("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");br({type:"ordgroup",htmlBuilder(e,t){return e.semisimple?Gt(He(e.body,t,!1)):z(["mord"],He(e.body,t,!0),t)},mathmlBuilder(e,t){return tr(e.body,t,!0)}});Z({type:"overline",names:["\\overline"],props:{numArgs:1},handler(e,t){var{parser:r}=e,n=t[0];return{type:"overline",mode:r.mode,body:n}},htmlBuilder(e,t){var r=Te(e.body,t.havingCrampedStyle()),n=Or("overline-line",t),a=t.fontMetrics().defaultRuleThickness,i=Ee({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*a},{type:"elem",elem:n},{type:"kern",size:a}]});return z(["mord","overline"],[i],t)},mathmlBuilder(e,t){var r=new G("mo",[new Me("‾")]);r.setAttribute("stretchy","true");var n=new G("mover",[Ae(e.body,t),r]);return n.setAttribute("accent","true"),n}});Z({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,n=t[0];return{type:"phantom",mode:r.mode,body:Re(n)}},htmlBuilder:(e,t)=>{var r=He(e.body,t.withPhantom(),!1);return Gt(r)},mathmlBuilder:(e,t)=>{var r=dt(e.body,t);return new G("mphantom",r)}});E("\\hphantom","\\smash{\\phantom{#1}}");Z({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,n=t[0];return{type:"vphantom",mode:r.mode,body:n}},htmlBuilder:(e,t)=>{var r=z(["inner"],[Te(e.body,t.withPhantom())]),n=z(["fix"],[]);return z(["mord","rlap"],[r,n],t)},mathmlBuilder:(e,t)=>{var r=dt(Re(e.body),t),n=new G("mphantom",r),a=new G("mpadded",[n]);return a.setAttribute("width","0px"),a}});Z({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(e,t){var{parser:r}=e,n=ce(t[0],"size").value,a=t[1];return{type:"raisebox",mode:r.mode,dy:n,body:a}},htmlBuilder(e,t){var r=Te(e.body,t),n=Ie(e.dy,t);return Ee({positionType:"shift",positionData:-n,children:[{type:"elem",elem:r}]})},mathmlBuilder(e,t){var r=new G("mpadded",[Ae(e.body,t)]),n=e.dy.number+e.dy.unit;return r.setAttribute("voffset",n),r}});Z({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(e){var{parser:t}=e;return{type:"internal",mode:t.mode}}});Z({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(e,t,r){var{parser:n}=e,a=r[0],i=ce(t[0],"size"),u=ce(t[1],"size");return{type:"rule",mode:n.mode,shift:a&&ce(a,"size").value,width:i.value,height:u.value}},htmlBuilder(e,t){var r=z(["mord","rule"],[],t),n=Ie(e.width,t),a=Ie(e.height,t),i=e.shift?Ie(e.shift,t):0;return r.style.borderRightWidth=V(n),r.style.borderTopWidth=V(a),r.style.bottom=V(i),r.width=n,r.height=a+i,r.depth=-i,r.maxFontSize=a*1.125*t.sizeMultiplier,r},mathmlBuilder(e,t){var r=Ie(e.width,t),n=Ie(e.height,t),a=e.shift?Ie(e.shift,t):0,i=t.color&&t.getColor()||"black",u=new G("mspace");u.setAttribute("mathbackground",i),u.setAttribute("width",V(r)),u.setAttribute("height",V(n));var s=new G("mpadded",[u]);return a>=0?s.setAttribute("height",V(a)):(s.setAttribute("height",V(a)),s.setAttribute("depth",V(-a))),s.setAttribute("voffset",V(a)),s}});function Fo(e,t,r){for(var n=He(e,t,!1),a=t.sizeMultiplier/r.sizeMultiplier,i=0;i{var r=t.havingSize(e.size);return Fo(e.body,r,t)};Z({type:"sizing",names:is,props:{numArgs:0,allowedInText:!0},handler:(e,t)=>{var{breakOnTokenText:r,funcName:n,parser:a}=e,i=a.parseExpression(!1,r);return{type:"sizing",mode:a.mode,size:is.indexOf(n)+1,body:i}},htmlBuilder:Q3,mathmlBuilder:(e,t)=>{var r=t.havingSize(e.size),n=dt(e.body,r),a=new G("mstyle",n);return a.setAttribute("mathsize",V(r.sizeMultiplier)),a}});Z({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:(e,t,r)=>{var{parser:n}=e,a=!1,i=!1,u=r[0]&&ce(r[0],"ordgroup");if(u)for(var s,l=0;l{var r=z([],[Te(e.body,t)]);if(!e.smashHeight&&!e.smashDepth)return r;if(e.smashHeight&&(r.height=0),e.smashDepth&&(r.depth=0),e.smashHeight&&e.smashDepth)return z(["mord","smash"],[r],t);if(r.children)for(var n=0;n{var r=new G("mpadded",[Ae(e.body,t)]);return e.smashHeight&&r.setAttribute("height","0px"),e.smashDepth&&r.setAttribute("depth","0px"),r}});Z({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){var{parser:n}=e,a=r[0],i=t[0];return{type:"sqrt",mode:n.mode,body:i,index:a}},htmlBuilder(e,t){var r=Te(e.body,t.havingCrampedStyle());r.height===0&&(r.height=t.fontMetrics().xHeight),r=Lr(r,t);var n=t.fontMetrics(),a=n.defaultRuleThickness,i=a;t.style.idr.height+r.depth+u&&(u=(u+f-r.height-r.depth)/2);var g=l.height-r.height-u-c;r.style.paddingLeft=V(d);var p=Ee({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+g)},{type:"elem",elem:l},{type:"kern",size:c}]});if(e.index){var x=t.havingStyle(oe.SCRIPTSCRIPT),S=Te(e.index,x,t),D=.6*(p.height-p.depth),_=Ee({positionType:"shift",positionData:-D,children:[{type:"elem",elem:S}]}),N=z(["root"],[_]);return z(["mord","sqrt"],[N,p],t)}else return z(["mord","sqrt"],[p],t)},mathmlBuilder(e,t){var{body:r,index:n}=e;return n?new G("mroot",[Ae(r,t),Ae(n,t)]):new G("msqrt",[Ae(r,t)])}});var Va={display:oe.DISPLAY,text:oe.TEXT,script:oe.SCRIPT,scriptscript:oe.SCRIPTSCRIPT};function K3(e){return e in Va}Z({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e,t){var{breakOnTokenText:r,funcName:n,parser:a}=e,i=a.parseExpression(!0,r),u=n.slice(1,n.length-5);if(!K3(u))throw new Error("Unknown style: "+u);return{type:"styling",mode:a.mode,style:u,body:i}},htmlBuilder(e,t){var r=Va[e.style],n=t.havingStyle(r);return e.resetFont&&(n=n.withFont("")),Fo(e.body,n,t)},mathmlBuilder(e,t){var r=Va[e.style],n=t.havingStyle(r);e.resetFont&&(n=n.withFont(""));var a=dt(e.body,n),i=new G("mstyle",a),u={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},s=u[e.style];return i.setAttribute("scriptlevel",s[0]),i.setAttribute("displaystyle",s[1]),i}});var J3=function(t,r){var n=t.base;if(n)if(n.type==="op"){var a=n.limits&&(r.style.size===oe.DISPLAY.size||n.alwaysHandleSupSub);return a?zr:null}else if(n.type==="operatorname"){var i=n.alwaysHandleSupSub&&(r.style.size===oe.DISPLAY.size||n.limits);return i?Bo:null}else{if(n.type==="accent")return qt(n.base)?Ai:null;if(n.type==="horizBrace"){var u=!t.sub;return u===n.isOver?Ro:null}else return null}else return null};br({type:"supsub",htmlBuilder(e,t){var r=J3(e,t);if(r)return r(e,t);var{base:n,sup:a,sub:i}=e,u=Te(n,t),s,l,c=t.fontMetrics(),d=0,f=0,g=n&&qt(n);if(a){var p=t.havingStyle(t.style.sup());s=Te(a,p,t),g||(d=u.height-p.fontMetrics().supDrop*p.sizeMultiplier/t.sizeMultiplier)}if(i){var x=t.havingStyle(t.style.sub());l=Te(i,x,t),g||(f=u.depth+x.fontMetrics().subDrop*x.sizeMultiplier/t.sizeMultiplier)}var S;t.style===oe.DISPLAY?S=c.sup1:t.style.cramped?S=c.sup3:S=c.sup2;var D=t.sizeMultiplier,_=V(.5/c.ptPerEm/D),N=null;if(l){var M=e.base&&e.base.type==="op"&&e.base.name&&(e.base.name==="\\oiint"||e.base.name==="\\oiiint");if(u instanceof ct||M){var W;N=V(-((W=u.italic)!=null?W:0))}}var j;if(s&&l){d=Math.max(d,S,s.depth+.25*c.xHeight),f=Math.max(f,c.sub2);var L=c.defaultRuleThickness,ee=4*L;if(d-s.depth-(l.height-f)0&&(d+=re,f-=re)}var K=[{type:"elem",elem:l,shift:f,marginRight:_,marginLeft:N},{type:"elem",elem:s,shift:-d,marginRight:_}];j=Ee({positionType:"individualShift",children:K})}else if(l){f=Math.max(f,c.sub1,l.height-.8*c.xHeight);var R=[{type:"elem",elem:l,marginLeft:N,marginRight:_}];j=Ee({positionType:"shift",positionData:f,children:R})}else if(s)d=Math.max(d,S,s.depth+.25*c.xHeight),j=Ee({positionType:"shift",positionData:-d,children:[{type:"elem",elem:s,marginRight:_}]});else throw new Error("supsub must have either sup or sub.");var J=za(u,"right")||"mord";return z([J],[u,z(["msupsub"],[j])],t)},mathmlBuilder(e,t){var r=!1,n,a;e.base&&e.base.type==="horizBrace"&&(a=!!e.sup,a===e.base.isOver&&(r=!0,n=e.base.isOver)),e.base&&(e.base.type==="op"||e.base.type==="operatorname")&&(e.base.parentIsSupSub=!0);var i=[Ae(e.base,t)];e.sub&&i.push(Ae(e.sub,t)),e.sup&&i.push(Ae(e.sup,t));var u;if(r)u=n?"mover":"munder";else if(e.sub)if(e.sup){var c=e.base;c&&c.type==="op"&&c.limits&&t.style===oe.DISPLAY||c&&c.type==="operatorname"&&c.alwaysHandleSupSub&&(t.style===oe.DISPLAY||c.limits)?u="munderover":u="msubsup"}else{var l=e.base;l&&l.type==="op"&&l.limits&&(t.style===oe.DISPLAY||l.alwaysHandleSupSub)||l&&l.type==="operatorname"&&l.alwaysHandleSupSub&&(l.limits||t.style===oe.DISPLAY)?u="munder":u="msub"}else{var s=e.base;s&&s.type==="op"&&s.limits&&(t.style===oe.DISPLAY||s.alwaysHandleSupSub)||s&&s.type==="operatorname"&&s.alwaysHandleSupSub&&(s.limits||t.style===oe.DISPLAY)?u="mover":u="msup"}return new G(u,i)}});br({type:"atom",htmlBuilder(e,t){return Ti(e.text,e.mode,t,["m"+e.family])},mathmlBuilder(e,t){var r=new G("mo",[bt(e.text,e.mode)]);if(e.family==="bin"){var n=vi(e,t);n==="bold-italic"&&r.setAttribute("mathvariant",n)}else e.family==="punct"?r.setAttribute("separator","true"):(e.family==="open"||e.family==="close")&&r.setAttribute("stretchy","false");return r}});var Ho={mi:"italic",mn:"normal",mtext:"normal"};br({type:"mathord",htmlBuilder(e,t){return x0(e,t,"mathord")},mathmlBuilder(e,t){var r=new G("mi",[bt(e.text,e.mode,t)]),n=vi(e,t)||"italic";return n!==Ho[r.type]&&r.setAttribute("mathvariant",n),r}});br({type:"textord",htmlBuilder(e,t){return x0(e,t,"textord")},mathmlBuilder(e,t){var r=bt(e.text,e.mode,t),n=vi(e,t)||"normal",a;return e.mode==="text"?a=new G("mtext",[r]):/[0-9]/.test(e.text)?a=new G("mn",[r]):e.text==="\\prime"?a=new G("mo",[r]):a=new G("mi",[r]),n!==Ho[a.type]&&a.setAttribute("mathvariant",n),a}});var fa={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},ma={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};br({type:"spacing",htmlBuilder(e,t){if(ma.hasOwnProperty(e.text)){var r=ma[e.text].className||"";if(e.mode==="text"){var n=x0(e,t,"textord");return n.classes.push(r),n}else return z(["mspace",r],[Ti(e.text,e.mode,t)],t)}else{if(fa.hasOwnProperty(e.text))return z(["mspace",fa[e.text]],[],t);throw new Y('Unknown type of space "'+e.text+'"')}},mathmlBuilder(e,t){var r;if(ma.hasOwnProperty(e.text))r=new G("mtext",[new Me(" ")]);else{if(fa.hasOwnProperty(e.text))return new G("mspace");throw new Y('Unknown type of space "'+e.text+'"')}return r}});var us=()=>{var e=new G("mtd",[]);return e.setAttribute("width","50%"),e};br({type:"tag",mathmlBuilder(e,t){var r=new G("mtable",[new G("mtr",[us(),new G("mtd",[tr(e.body,t)]),us(),new G("mtd",[tr(e.tag,t)])])]);return r.setAttribute("width","100%"),r}});var ss={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},ls={"\\textbf":"textbf","\\textmd":"textmd"},Z3={"\\textit":"textit","\\textup":"textup"},os=(e,t)=>{var r=e.font;if(r){if(ss[r])return t.withTextFontFamily(ss[r]);if(ls[r])return t.withTextFontWeight(ls[r]);if(r==="\\emph")return t.fontShape==="textit"?t.withTextFontShape("textup"):t.withTextFontShape("textit")}else return t;return t.withTextFontShape(Z3[r])};Z({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(e,t){var{parser:r,funcName:n}=e,a=t[0];return{type:"text",mode:r.mode,body:Re(a),font:n}},htmlBuilder(e,t){var r=os(e,t),n=He(e.body,r,!0);return z(["mord","text"],n,r)},mathmlBuilder(e,t){var r=os(e,t);return tr(e.body,r)}});Z({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"underline",mode:r.mode,body:t[0]}},htmlBuilder(e,t){var r=Te(e.body,t),n=Or("underline-line",t),a=t.fontMetrics().defaultRuleThickness,i=Ee({positionType:"top",positionData:r.height,children:[{type:"kern",size:a},{type:"elem",elem:n},{type:"kern",size:3*a},{type:"elem",elem:r}]});return z(["mord","underline"],[i],t)},mathmlBuilder(e,t){var r=new G("mo",[new Me("‾")]);r.setAttribute("stretchy","true");var n=new G("munder",[Ae(e.body,t),r]);return n.setAttribute("accentunder","true"),n}});Z({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(e,t){var{parser:r}=e;return{type:"vcenter",mode:r.mode,body:t[0]}},htmlBuilder(e,t){var r=Te(e.body,t),n=t.fontMetrics().axisHeight,a=.5*(r.height-n-(r.depth+n));return Ee({positionType:"shift",positionData:a,children:[{type:"elem",elem:r}]})},mathmlBuilder(e,t){var r=new G("mpadded",[Ae(e.body,t)],["vcenter"]);return new G("mrow",[r])}});Z({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(e,t,r){throw new Y("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(e,t){for(var r=cs(e),n=[],a=t.havingStyle(t.style.text()),i=0;ie.body.replace(/ /g,e.star?"␣":" "),Qt=io,zo=`[ \r - ]`,e6="\\\\[a-zA-Z@]+",t6="\\\\[^\uD800-\uDFFF]",r6="("+e6+")"+zo+"*",n6=`\\\\( -|[ \r ]+ -?)[ \r ]*`,ja="[̀-ͯ]",a6=new RegExp(ja+"+$"),i6="("+zo+"+)|"+(n6+"|")+"([!-\\[\\]-‧‪-퟿豈-￿]"+(ja+"*")+"|[\uD800-\uDBFF][\uDC00-\uDFFF]"+(ja+"*")+"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5"+("|"+r6)+("|"+t6+")");class hs{constructor(t,r){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=t,this.settings=r,this.tokenRegex=new RegExp(i6,"g"),this.catcodes={"%":14,"~":13}}setCatcode(t,r){this.catcodes[t]=r}lex(){var t=this.input,r=this.tokenRegex.lastIndex;if(r===t.length)return new ot("EOF",new rt(this,r,r));var n=this.tokenRegex.exec(t);if(n===null||n.index!==r)throw new Y("Unexpected character: '"+t[r]+"'",new ot(t[r],new rt(this,r,r+1)));var a=n[6]||n[3]||(n[2]?"\\ ":" ");if(this.catcodes[a]===14){var i=t.indexOf(` -`,this.tokenRegex.lastIndex);return i===-1?(this.tokenRegex.lastIndex=t.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=i+1,this.lex()}return new ot(a,new rt(this,r,this.tokenRegex.lastIndex))}}class u6{constructor(t,r){t===void 0&&(t={}),r===void 0&&(r={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=r,this.builtins=t,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(this.undefStack.length===0)throw new Y("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var t=this.undefStack.pop();for(var r in t)t.hasOwnProperty(r)&&(t[r]==null?delete this.current[r]:this.current[r]=t[r])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(t){return this.current.hasOwnProperty(t)||this.builtins.hasOwnProperty(t)}get(t){return this.current.hasOwnProperty(t)?this.current[t]:this.builtins[t]}set(t,r,n){if(n===void 0&&(n=!1),n){for(var a=0;a0&&(this.undefStack[this.undefStack.length-1][t]=r)}else{var i=this.undefStack[this.undefStack.length-1];i&&!i.hasOwnProperty(t)&&(i[t]=this.current[t])}r==null?delete this.current[t]:this.current[t]=r}}var s6=Io;E("\\noexpand",function(e){var t=e.popToken();return e.isExpandable(t.text)&&(t.noexpand=!0,t.treatAsRelax=!0),{tokens:[t],numArgs:0}});E("\\expandafter",function(e){var t=e.popToken();return e.expandOnce(!0),{tokens:[t],numArgs:0}});E("\\@firstoftwo",function(e){var t=e.consumeArgs(2);return{tokens:t[0],numArgs:0}});E("\\@secondoftwo",function(e){var t=e.consumeArgs(2);return{tokens:t[1],numArgs:0}});E("\\@ifnextchar",function(e){var t=e.consumeArgs(3);e.consumeSpaces();var r=e.future();return t[0].length===1&&t[0][0].text===r.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}});E("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");E("\\TextOrMath",function(e){var t=e.consumeArgs(2);return e.mode==="text"?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}});var ds={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};E("\\char",function(e){var t=e.popToken(),r,n=0;if(t.text==="'")r=8,t=e.popToken();else if(t.text==='"')r=16,t=e.popToken();else if(t.text==="`")if(t=e.popToken(),t.text[0]==="\\")n=t.text.charCodeAt(1);else{if(t.text==="EOF")throw new Y("\\char` missing argument");n=t.text.charCodeAt(0)}else r=10;if(r){if(n=ds[t.text],n==null||n>=r)throw new Y("Invalid base-"+r+" digit "+t.text);for(var a;(a=ds[e.future().text])!=null&&a{var a=e.consumeArg().tokens;if(a.length!==1)throw new Y("\\newcommand's first argument must be a macro name");var i=a[0].text,u=e.isDefined(i);if(u&&!t)throw new Y("\\newcommand{"+i+"} attempting to redefine "+(i+"; use \\renewcommand"));if(!u&&!r)throw new Y("\\renewcommand{"+i+"} when command "+i+" does not yet exist; use \\newcommand");var s=0;if(a=e.consumeArg().tokens,a.length===1&&a[0].text==="["){for(var l="",c=e.expandNextToken();c.text!=="]"&&c.text!=="EOF";)l+=c.text,c=e.expandNextToken();if(!l.match(/^\s*[0-9]+\s*$/))throw new Y("Invalid number of arguments: "+l);s=parseInt(l),a=e.consumeArg().tokens}return u&&n||e.macros.set(i,{tokens:a,numArgs:s}),""};E("\\newcommand",e=>Ci(e,!1,!0,!1));E("\\renewcommand",e=>Ci(e,!0,!1,!1));E("\\providecommand",e=>Ci(e,!0,!0,!0));E("\\message",e=>{var t=e.consumeArgs(1)[0];return console.log(t.reverse().map(r=>r.text).join("")),""});E("\\errmessage",e=>{var t=e.consumeArgs(1)[0];return console.error(t.reverse().map(r=>r.text).join("")),""});E("\\show",e=>{var t=e.popToken(),r=t.text;return console.log(t,e.macros.get(r),Qt[r],we.math[r],we.text[r]),""});E("\\bgroup","{");E("\\egroup","}");E("~","\\nobreakspace");E("\\lq","`");E("\\rq","'");E("\\aa","\\r a");E("\\AA","\\r A");E("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`©}");E("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");E("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}");E("ℬ","\\mathscr{B}");E("ℰ","\\mathscr{E}");E("ℱ","\\mathscr{F}");E("ℋ","\\mathscr{H}");E("ℐ","\\mathscr{I}");E("ℒ","\\mathscr{L}");E("ℳ","\\mathscr{M}");E("ℛ","\\mathscr{R}");E("ℭ","\\mathfrak{C}");E("ℌ","\\mathfrak{H}");E("ℨ","\\mathfrak{Z}");E("\\Bbbk","\\Bbb{k}");E("\\llap","\\mathllap{\\textrm{#1}}");E("\\rlap","\\mathrlap{\\textrm{#1}}");E("\\clap","\\mathclap{\\textrm{#1}}");E("\\mathstrut","\\vphantom{(}");E("\\underbar","\\underline{\\text{#1}}");E("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}\\nobreak}{\\char"338}');E("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`≠}}");E("\\ne","\\neq");E("≠","\\neq");E("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`∉}}");E("∉","\\notin");E("≘","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`≘}}");E("≙","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`≘}}");E("≚","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`≚}}");E("≛","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`≛}}");E("≝","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`≝}}");E("≞","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`≞}}");E("≟","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`≟}}");E("⟂","\\perp");E("‼","\\mathclose{!\\mkern-0.8mu!}");E("∌","\\notni");E("⌜","\\ulcorner");E("⌝","\\urcorner");E("⌞","\\llcorner");E("⌟","\\lrcorner");E("©","\\copyright");E("®","\\textregistered");E("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');E("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');E("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');E("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');E("\\vdots","{\\varvdots\\rule{0pt}{15pt}}");E("⋮","\\vdots");E("\\varGamma","\\mathit{\\Gamma}");E("\\varDelta","\\mathit{\\Delta}");E("\\varTheta","\\mathit{\\Theta}");E("\\varLambda","\\mathit{\\Lambda}");E("\\varXi","\\mathit{\\Xi}");E("\\varPi","\\mathit{\\Pi}");E("\\varSigma","\\mathit{\\Sigma}");E("\\varUpsilon","\\mathit{\\Upsilon}");E("\\varPhi","\\mathit{\\Phi}");E("\\varPsi","\\mathit{\\Psi}");E("\\varOmega","\\mathit{\\Omega}");E("\\substack","\\begin{subarray}{c}#1\\end{subarray}");E("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");E("\\boxed","\\fbox{$\\displaystyle{#1}$}");E("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");E("\\implies","\\DOTSB\\;\\Longrightarrow\\;");E("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");E("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}");E("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");var fs={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"},l6=new Set(["bin","rel"]);E("\\dots",function(e){var t="\\dotso",r=e.expandAfterFuture().text;return r in fs?t=fs[r]:(r.slice(0,4)==="\\not"||r in we.math&&l6.has(we.math[r].group))&&(t="\\dotsb"),t});var _i={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};E("\\dotso",function(e){var t=e.future().text;return t in _i?"\\ldots\\,":"\\ldots"});E("\\dotsc",function(e){var t=e.future().text;return t in _i&&t!==","?"\\ldots\\,":"\\ldots"});E("\\cdots",function(e){var t=e.future().text;return t in _i?"\\@cdots\\,":"\\@cdots"});E("\\dotsb","\\cdots");E("\\dotsm","\\cdots");E("\\dotsi","\\!\\cdots");E("\\dotsx","\\ldots\\,");E("\\DOTSI","\\relax");E("\\DOTSB","\\relax");E("\\DOTSX","\\relax");E("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");E("\\,","\\tmspace+{3mu}{.1667em}");E("\\thinspace","\\,");E("\\>","\\mskip{4mu}");E("\\:","\\tmspace+{4mu}{.2222em}");E("\\medspace","\\:");E("\\;","\\tmspace+{5mu}{.2777em}");E("\\thickspace","\\;");E("\\!","\\tmspace-{3mu}{.1667em}");E("\\negthinspace","\\!");E("\\negmedspace","\\tmspace-{4mu}{.2222em}");E("\\negthickspace","\\tmspace-{5mu}{.277em}");E("\\enspace","\\kern.5em ");E("\\enskip","\\hskip.5em\\relax");E("\\quad","\\hskip1em\\relax");E("\\qquad","\\hskip2em\\relax");E("\\tag","\\@ifstar\\tag@literal\\tag@paren");E("\\tag@paren","\\tag@literal{({#1})}");E("\\tag@literal",e=>{if(e.macros.get("\\df@tag"))throw new Y("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});E("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");E("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");E("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");E("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");E("\\newline","\\\\\\relax");E("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var Uo=V(wt["Main-Regular"][84][1]-.7*wt["Main-Regular"][65][1]);E("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+Uo+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");E("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+Uo+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");E("\\hspace","\\@ifstar\\@hspacer\\@hspace");E("\\@hspace","\\hskip #1\\relax");E("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");E("\\ordinarycolon",":");E("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");E("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');E("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');E("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');E("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');E("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');E("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');E("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');E("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');E("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');E("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');E("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');E("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');E("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');E("∷","\\dblcolon");E("∹","\\eqcolon");E("≔","\\coloneqq");E("≕","\\eqqcolon");E("⩴","\\Coloneqq");E("\\ratio","\\vcentcolon");E("\\coloncolon","\\dblcolon");E("\\colonequals","\\coloneqq");E("\\coloncolonequals","\\Coloneqq");E("\\equalscolon","\\eqqcolon");E("\\equalscoloncolon","\\Eqqcolon");E("\\colonminus","\\coloneq");E("\\coloncolonminus","\\Coloneq");E("\\minuscolon","\\eqcolon");E("\\minuscoloncolon","\\Eqcolon");E("\\coloncolonapprox","\\Colonapprox");E("\\coloncolonsim","\\Colonsim");E("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");E("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");E("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");E("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");E("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`∌}}");E("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");E("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");E("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");E("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");E("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");E("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");E("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");E("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");E("\\gvertneqq","\\html@mathml{\\@gvertneqq}{≩}");E("\\lvertneqq","\\html@mathml{\\@lvertneqq}{≨}");E("\\ngeqq","\\html@mathml{\\@ngeqq}{≱}");E("\\ngeqslant","\\html@mathml{\\@ngeqslant}{≱}");E("\\nleqq","\\html@mathml{\\@nleqq}{≰}");E("\\nleqslant","\\html@mathml{\\@nleqslant}{≰}");E("\\nshortmid","\\html@mathml{\\@nshortmid}{∤}");E("\\nshortparallel","\\html@mathml{\\@nshortparallel}{∦}");E("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{⊈}");E("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{⊉}");E("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{⊊}");E("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{⫋}");E("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{⊋}");E("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{⫌}");E("\\imath","\\html@mathml{\\@imath}{ı}");E("\\jmath","\\html@mathml{\\@jmath}{ȷ}");E("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`⟦}}");E("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`⟧}}");E("⟦","\\llbracket");E("⟧","\\rrbracket");E("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`⦃}}");E("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`⦄}}");E("⦃","\\lBrace");E("⦄","\\rBrace");E("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`⦵}}");E("⦵","\\minuso");E("\\darr","\\downarrow");E("\\dArr","\\Downarrow");E("\\Darr","\\Downarrow");E("\\lang","\\langle");E("\\rang","\\rangle");E("\\uarr","\\uparrow");E("\\uArr","\\Uparrow");E("\\Uarr","\\Uparrow");E("\\N","\\mathbb{N}");E("\\R","\\mathbb{R}");E("\\Z","\\mathbb{Z}");E("\\alef","\\aleph");E("\\alefsym","\\aleph");E("\\Alpha","\\mathrm{A}");E("\\Beta","\\mathrm{B}");E("\\bull","\\bullet");E("\\Chi","\\mathrm{X}");E("\\clubs","\\clubsuit");E("\\cnums","\\mathbb{C}");E("\\Complex","\\mathbb{C}");E("\\Dagger","\\ddagger");E("\\diamonds","\\diamondsuit");E("\\empty","\\emptyset");E("\\Epsilon","\\mathrm{E}");E("\\Eta","\\mathrm{H}");E("\\exist","\\exists");E("\\harr","\\leftrightarrow");E("\\hArr","\\Leftrightarrow");E("\\Harr","\\Leftrightarrow");E("\\hearts","\\heartsuit");E("\\image","\\Im");E("\\infin","\\infty");E("\\Iota","\\mathrm{I}");E("\\isin","\\in");E("\\Kappa","\\mathrm{K}");E("\\larr","\\leftarrow");E("\\lArr","\\Leftarrow");E("\\Larr","\\Leftarrow");E("\\lrarr","\\leftrightarrow");E("\\lrArr","\\Leftrightarrow");E("\\Lrarr","\\Leftrightarrow");E("\\Mu","\\mathrm{M}");E("\\natnums","\\mathbb{N}");E("\\Nu","\\mathrm{N}");E("\\Omicron","\\mathrm{O}");E("\\plusmn","\\pm");E("\\rarr","\\rightarrow");E("\\rArr","\\Rightarrow");E("\\Rarr","\\Rightarrow");E("\\real","\\Re");E("\\reals","\\mathbb{R}");E("\\Reals","\\mathbb{R}");E("\\Rho","\\mathrm{P}");E("\\sdot","\\cdot");E("\\sect","\\S");E("\\spades","\\spadesuit");E("\\sub","\\subset");E("\\sube","\\subseteq");E("\\supe","\\supseteq");E("\\Tau","\\mathrm{T}");E("\\thetasym","\\vartheta");E("\\weierp","\\wp");E("\\Zeta","\\mathrm{Z}");E("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");E("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");E("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");E("\\bra","\\mathinner{\\langle{#1}|}");E("\\ket","\\mathinner{|{#1}\\rangle}");E("\\braket","\\mathinner{\\langle{#1}\\rangle}");E("\\Bra","\\left\\langle#1\\right|");E("\\Ket","\\left|#1\\right\\rangle");var qo=e=>t=>{var r=t.consumeArg().tokens,n=t.consumeArg().tokens,a=t.consumeArg().tokens,i=t.consumeArg().tokens,u=t.macros.get("|"),s=t.macros.get("\\|");t.macros.beginGroup();var l=f=>g=>{e&&(g.macros.set("|",u),a.length&&g.macros.set("\\|",s));var p=f;if(!f&&a.length){var x=g.future();x.text==="|"&&(g.popToken(),p=!0)}return{tokens:p?a:n,numArgs:0}};t.macros.set("|",l(!1)),a.length&&t.macros.set("\\|",l(!0));var c=t.consumeArg().tokens,d=t.expandTokens([...i,...c,...r]);return t.macros.endGroup(),{tokens:d.reverse(),numArgs:0}};E("\\bra@ket",qo(!1));E("\\bra@set",qo(!0));E("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");E("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");E("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");E("\\angln","{\\angl n}");E("\\blue","\\textcolor{##6495ed}{#1}");E("\\orange","\\textcolor{##ffa500}{#1}");E("\\pink","\\textcolor{##ff00af}{#1}");E("\\red","\\textcolor{##df0030}{#1}");E("\\green","\\textcolor{##28ae7b}{#1}");E("\\gray","\\textcolor{gray}{#1}");E("\\purple","\\textcolor{##9d38bd}{#1}");E("\\blueA","\\textcolor{##ccfaff}{#1}");E("\\blueB","\\textcolor{##80f6ff}{#1}");E("\\blueC","\\textcolor{##63d9ea}{#1}");E("\\blueD","\\textcolor{##11accd}{#1}");E("\\blueE","\\textcolor{##0c7f99}{#1}");E("\\tealA","\\textcolor{##94fff5}{#1}");E("\\tealB","\\textcolor{##26edd5}{#1}");E("\\tealC","\\textcolor{##01d1c1}{#1}");E("\\tealD","\\textcolor{##01a995}{#1}");E("\\tealE","\\textcolor{##208170}{#1}");E("\\greenA","\\textcolor{##b6ffb0}{#1}");E("\\greenB","\\textcolor{##8af281}{#1}");E("\\greenC","\\textcolor{##74cf70}{#1}");E("\\greenD","\\textcolor{##1fab54}{#1}");E("\\greenE","\\textcolor{##0d923f}{#1}");E("\\goldA","\\textcolor{##ffd0a9}{#1}");E("\\goldB","\\textcolor{##ffbb71}{#1}");E("\\goldC","\\textcolor{##ff9c39}{#1}");E("\\goldD","\\textcolor{##e07d10}{#1}");E("\\goldE","\\textcolor{##a75a05}{#1}");E("\\redA","\\textcolor{##fca9a9}{#1}");E("\\redB","\\textcolor{##ff8482}{#1}");E("\\redC","\\textcolor{##f9685d}{#1}");E("\\redD","\\textcolor{##e84d39}{#1}");E("\\redE","\\textcolor{##bc2612}{#1}");E("\\maroonA","\\textcolor{##ffbde0}{#1}");E("\\maroonB","\\textcolor{##ff92c6}{#1}");E("\\maroonC","\\textcolor{##ed5fa6}{#1}");E("\\maroonD","\\textcolor{##ca337c}{#1}");E("\\maroonE","\\textcolor{##9e034e}{#1}");E("\\purpleA","\\textcolor{##ddd7ff}{#1}");E("\\purpleB","\\textcolor{##c6b9fc}{#1}");E("\\purpleC","\\textcolor{##aa87ff}{#1}");E("\\purpleD","\\textcolor{##7854ab}{#1}");E("\\purpleE","\\textcolor{##543b78}{#1}");E("\\mintA","\\textcolor{##f5f9e8}{#1}");E("\\mintB","\\textcolor{##edf2df}{#1}");E("\\mintC","\\textcolor{##e0e5cc}{#1}");E("\\grayA","\\textcolor{##f6f7f7}{#1}");E("\\grayB","\\textcolor{##f0f1f2}{#1}");E("\\grayC","\\textcolor{##e3e5e6}{#1}");E("\\grayD","\\textcolor{##d6d8da}{#1}");E("\\grayE","\\textcolor{##babec2}{#1}");E("\\grayF","\\textcolor{##888d93}{#1}");E("\\grayG","\\textcolor{##626569}{#1}");E("\\grayH","\\textcolor{##3b3e40}{#1}");E("\\grayI","\\textcolor{##21242c}{#1}");E("\\kaBlue","\\textcolor{##314453}{#1}");E("\\kaGreen","\\textcolor{##71B307}{#1}");var Yo={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0};class o6{constructor(t,r,n){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=r,this.expansionCount=0,this.feed(t),this.macros=new u6(s6,r.macros),this.mode=n,this.stack=[]}feed(t){this.lexer=new hs(t,this.settings)}switchMode(t){this.mode=t}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return this.stack.length===0&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(t){this.stack.push(t)}pushTokens(t){this.stack.push(...t)}scanArgument(t){var r,n,a;if(t){if(this.consumeSpaces(),this.future().text!=="[")return null;r=this.popToken(),{tokens:a,end:n}=this.consumeArg(["]"])}else({tokens:a,start:r,end:n}=this.consumeArg());return this.pushToken(new ot("EOF",n.loc)),this.pushTokens(a),new ot("",rt.range(r,n))}consumeSpaces(){for(;;){var t=this.future();if(t.text===" ")this.stack.pop();else break}}consumeArg(t){var r=[],n=t&&t.length>0;n||this.consumeSpaces();var a=this.future(),i,u=0,s=0;do{if(i=this.popToken(),r.push(i),i.text==="{")++u;else if(i.text==="}"){if(--u,u===-1)throw new Y("Extra }",i)}else if(i.text==="EOF")throw new Y("Unexpected end of input in a macro argument, expected '"+(t&&n?t[s]:"}")+"'",i);if(t&&n)if((u===0||u===1&&t[s]==="{")&&i.text===t[s]){if(++s,s===t.length){r.splice(-s,s);break}}else s=0}while(u!==0||n);return a.text==="{"&&r[r.length-1].text==="}"&&(r.pop(),r.shift()),r.reverse(),{tokens:r,start:a,end:i}}consumeArgs(t,r){if(r){if(r.length!==t+1)throw new Y("The length of delimiters doesn't match the number of args!");for(var n=r[0],a=0;athis.settings.maxExpand)throw new Y("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(t){var r=this.popToken(),n=r.text,a=r.noexpand?null:this._getExpansion(n);if(a==null||t&&a.unexpandable){if(t&&a==null&&n[0]==="\\"&&!this.isDefined(n))throw new Y("Undefined control sequence: "+n);return this.pushToken(r),!1}this.countExpansion(1);var i=a.tokens,u=this.consumeArgs(a.numArgs,a.delimiters);if(a.numArgs){i=i.slice();for(var s=i.length-1;s>=0;--s){var l=i[s];if(l.text==="#"){if(s===0)throw new Y("Incomplete placeholder at end of macro body",l);if(l=i[--s],l.text==="#")i.splice(s+1,1);else if(/^[1-9]$/.test(l.text))i.splice(s,2,...u[+l.text-1]);else throw new Y("Not a valid argument number",l)}}}return this.pushTokens(i),i.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(this.expandOnce()===!1){var t=this.stack.pop();return t.treatAsRelax&&(t.text="\\relax"),t}}expandMacro(t){return this.macros.has(t)?this.expandTokens([new ot(t)]):void 0}expandTokens(t){var r=[],n=this.stack.length;for(this.pushTokens(t);this.stack.length>n;)if(this.expandOnce(!0)===!1){var a=this.stack.pop();a.treatAsRelax&&(a.noexpand=!1,a.treatAsRelax=!1),r.push(a)}return this.countExpansion(r.length),r}expandMacroAsText(t){var r=this.expandMacro(t);return r&&r.map(n=>n.text).join("")}_getExpansion(t){var r=this.macros.get(t);if(r==null)return r;if(t.length===1){var n=this.lexer.catcodes[t];if(n!=null&&n!==13)return}var a=typeof r=="function"?r(this):r;if(typeof a=="string"){var i=0;if(a.includes("#"))for(var u=a.replace(/##/g,"");u.includes("#"+(i+1));)++i;for(var s=new hs(a,this.settings),l=[],c=s.lex();c.text!=="EOF";)l.push(c),c=s.lex();l.reverse();var d={tokens:l,numArgs:i};return d}return a}isDefined(t){return this.macros.has(t)||Qt.hasOwnProperty(t)||we.math.hasOwnProperty(t)||we.text.hasOwnProperty(t)||Yo.hasOwnProperty(t)}isExpandable(t){var r=this.macros.get(t);return r!=null?typeof r=="string"||typeof r=="function"||!r.unexpandable:Qt.hasOwnProperty(t)&&!Qt[t].primitive}}var ms=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,jn=Object.freeze({"₊":"+","₋":"-","₌":"=","₍":"(","₎":")","₀":"0","₁":"1","₂":"2","₃":"3","₄":"4","₅":"5","₆":"6","₇":"7","₈":"8","₉":"9","ₐ":"a","ₑ":"e","ₕ":"h","ᵢ":"i","ⱼ":"j","ₖ":"k","ₗ":"l","ₘ":"m","ₙ":"n","ₒ":"o","ₚ":"p","ᵣ":"r","ₛ":"s","ₜ":"t","ᵤ":"u","ᵥ":"v","ₓ":"x","ᵦ":"β","ᵧ":"γ","ᵨ":"ρ","ᵩ":"ϕ","ᵪ":"χ","⁺":"+","⁻":"-","⁼":"=","⁽":"(","⁾":")","⁰":"0","¹":"1","²":"2","³":"3","⁴":"4","⁵":"5","⁶":"6","⁷":"7","⁸":"8","⁹":"9","ᴬ":"A","ᴮ":"B","ᴰ":"D","ᴱ":"E","ᴳ":"G","ᴴ":"H","ᴵ":"I","ᴶ":"J","ᴷ":"K","ᴸ":"L","ᴹ":"M","ᴺ":"N","ᴼ":"O","ᴾ":"P","ᴿ":"R","ᵀ":"T","ᵁ":"U","ⱽ":"V","ᵂ":"W","ᵃ":"a","ᵇ":"b","ᶜ":"c","ᵈ":"d","ᵉ":"e","ᶠ":"f","ᵍ":"g",ʰ:"h","ⁱ":"i",ʲ:"j","ᵏ":"k",ˡ:"l","ᵐ":"m",ⁿ:"n","ᵒ":"o","ᵖ":"p",ʳ:"r",ˢ:"s","ᵗ":"t","ᵘ":"u","ᵛ":"v",ʷ:"w",ˣ:"x",ʸ:"y","ᶻ":"z","ᵝ":"β","ᵞ":"γ","ᵟ":"δ","ᵠ":"ϕ","ᵡ":"χ","ᶿ":"θ"}),pa={"́":{text:"\\'",math:"\\acute"},"̀":{text:"\\`",math:"\\grave"},"̈":{text:'\\"',math:"\\ddot"},"̃":{text:"\\~",math:"\\tilde"},"̄":{text:"\\=",math:"\\bar"},"̆":{text:"\\u",math:"\\breve"},"̌":{text:"\\v",math:"\\check"},"̂":{text:"\\^",math:"\\hat"},"̇":{text:"\\.",math:"\\dot"},"̊":{text:"\\r",math:"\\mathring"},"̋":{text:"\\H"},"̧":{text:"\\c"}},ps={á:"á",à:"à",ä:"ä",ǟ:"ǟ",ã:"ã",ā:"ā",ă:"ă",ắ:"ắ",ằ:"ằ",ẵ:"ẵ",ǎ:"ǎ",â:"â",ấ:"ấ",ầ:"ầ",ẫ:"ẫ",ȧ:"ȧ",ǡ:"ǡ",å:"å",ǻ:"ǻ",ḃ:"ḃ",ć:"ć",ḉ:"ḉ",č:"č",ĉ:"ĉ",ċ:"ċ",ç:"ç",ď:"ď",ḋ:"ḋ",ḑ:"ḑ",é:"é",è:"è",ë:"ë",ẽ:"ẽ",ē:"ē",ḗ:"ḗ",ḕ:"ḕ",ĕ:"ĕ",ḝ:"ḝ",ě:"ě",ê:"ê",ế:"ế",ề:"ề",ễ:"ễ",ė:"ė",ȩ:"ȩ",ḟ:"ḟ",ǵ:"ǵ",ḡ:"ḡ",ğ:"ğ",ǧ:"ǧ",ĝ:"ĝ",ġ:"ġ",ģ:"ģ",ḧ:"ḧ",ȟ:"ȟ",ĥ:"ĥ",ḣ:"ḣ",ḩ:"ḩ",í:"í",ì:"ì",ï:"ï",ḯ:"ḯ",ĩ:"ĩ",ī:"ī",ĭ:"ĭ",ǐ:"ǐ",î:"î",ǰ:"ǰ",ĵ:"ĵ",ḱ:"ḱ",ǩ:"ǩ",ķ:"ķ",ĺ:"ĺ",ľ:"ľ",ļ:"ļ",ḿ:"ḿ",ṁ:"ṁ",ń:"ń",ǹ:"ǹ",ñ:"ñ",ň:"ň",ṅ:"ṅ",ņ:"ņ",ó:"ó",ò:"ò",ö:"ö",ȫ:"ȫ",õ:"õ",ṍ:"ṍ",ṏ:"ṏ",ȭ:"ȭ",ō:"ō",ṓ:"ṓ",ṑ:"ṑ",ŏ:"ŏ",ǒ:"ǒ",ô:"ô",ố:"ố",ồ:"ồ",ỗ:"ỗ",ȯ:"ȯ",ȱ:"ȱ",ő:"ő",ṕ:"ṕ",ṗ:"ṗ",ŕ:"ŕ",ř:"ř",ṙ:"ṙ",ŗ:"ŗ",ś:"ś",ṥ:"ṥ",š:"š",ṧ:"ṧ",ŝ:"ŝ",ṡ:"ṡ",ş:"ş",ẗ:"ẗ",ť:"ť",ṫ:"ṫ",ţ:"ţ",ú:"ú",ù:"ù",ü:"ü",ǘ:"ǘ",ǜ:"ǜ",ǖ:"ǖ",ǚ:"ǚ",ũ:"ũ",ṹ:"ṹ",ū:"ū",ṻ:"ṻ",ŭ:"ŭ",ǔ:"ǔ",û:"û",ů:"ů",ű:"ű",ṽ:"ṽ",ẃ:"ẃ",ẁ:"ẁ",ẅ:"ẅ",ŵ:"ŵ",ẇ:"ẇ",ẘ:"ẘ",ẍ:"ẍ",ẋ:"ẋ",ý:"ý",ỳ:"ỳ",ÿ:"ÿ",ỹ:"ỹ",ȳ:"ȳ",ŷ:"ŷ",ẏ:"ẏ",ẙ:"ẙ",ź:"ź",ž:"ž",ẑ:"ẑ",ż:"ż",Á:"Á",À:"À",Ä:"Ä",Ǟ:"Ǟ",Ã:"Ã",Ā:"Ā",Ă:"Ă",Ắ:"Ắ",Ằ:"Ằ",Ẵ:"Ẵ",Ǎ:"Ǎ",Â:"Â",Ấ:"Ấ",Ầ:"Ầ",Ẫ:"Ẫ",Ȧ:"Ȧ",Ǡ:"Ǡ",Å:"Å",Ǻ:"Ǻ",Ḃ:"Ḃ",Ć:"Ć",Ḉ:"Ḉ",Č:"Č",Ĉ:"Ĉ",Ċ:"Ċ",Ç:"Ç",Ď:"Ď",Ḋ:"Ḋ",Ḑ:"Ḑ",É:"É",È:"È",Ë:"Ë",Ẽ:"Ẽ",Ē:"Ē",Ḗ:"Ḗ",Ḕ:"Ḕ",Ĕ:"Ĕ",Ḝ:"Ḝ",Ě:"Ě",Ê:"Ê",Ế:"Ế",Ề:"Ề",Ễ:"Ễ",Ė:"Ė",Ȩ:"Ȩ",Ḟ:"Ḟ",Ǵ:"Ǵ",Ḡ:"Ḡ",Ğ:"Ğ",Ǧ:"Ǧ",Ĝ:"Ĝ",Ġ:"Ġ",Ģ:"Ģ",Ḧ:"Ḧ",Ȟ:"Ȟ",Ĥ:"Ĥ",Ḣ:"Ḣ",Ḩ:"Ḩ",Í:"Í",Ì:"Ì",Ï:"Ï",Ḯ:"Ḯ",Ĩ:"Ĩ",Ī:"Ī",Ĭ:"Ĭ",Ǐ:"Ǐ",Î:"Î",İ:"İ",Ĵ:"Ĵ",Ḱ:"Ḱ",Ǩ:"Ǩ",Ķ:"Ķ",Ĺ:"Ĺ",Ľ:"Ľ",Ļ:"Ļ",Ḿ:"Ḿ",Ṁ:"Ṁ",Ń:"Ń",Ǹ:"Ǹ",Ñ:"Ñ",Ň:"Ň",Ṅ:"Ṅ",Ņ:"Ņ",Ó:"Ó",Ò:"Ò",Ö:"Ö",Ȫ:"Ȫ",Õ:"Õ",Ṍ:"Ṍ",Ṏ:"Ṏ",Ȭ:"Ȭ",Ō:"Ō",Ṓ:"Ṓ",Ṑ:"Ṑ",Ŏ:"Ŏ",Ǒ:"Ǒ",Ô:"Ô",Ố:"Ố",Ồ:"Ồ",Ỗ:"Ỗ",Ȯ:"Ȯ",Ȱ:"Ȱ",Ő:"Ő",Ṕ:"Ṕ",Ṗ:"Ṗ",Ŕ:"Ŕ",Ř:"Ř",Ṙ:"Ṙ",Ŗ:"Ŗ",Ś:"Ś",Ṥ:"Ṥ",Š:"Š",Ṧ:"Ṧ",Ŝ:"Ŝ",Ṡ:"Ṡ",Ş:"Ş",Ť:"Ť",Ṫ:"Ṫ",Ţ:"Ţ",Ú:"Ú",Ù:"Ù",Ü:"Ü",Ǘ:"Ǘ",Ǜ:"Ǜ",Ǖ:"Ǖ",Ǚ:"Ǚ",Ũ:"Ũ",Ṹ:"Ṹ",Ū:"Ū",Ṻ:"Ṻ",Ŭ:"Ŭ",Ǔ:"Ǔ",Û:"Û",Ů:"Ů",Ű:"Ű",Ṽ:"Ṽ",Ẃ:"Ẃ",Ẁ:"Ẁ",Ẅ:"Ẅ",Ŵ:"Ŵ",Ẇ:"Ẇ",Ẍ:"Ẍ",Ẋ:"Ẋ",Ý:"Ý",Ỳ:"Ỳ",Ÿ:"Ÿ",Ỹ:"Ỹ",Ȳ:"Ȳ",Ŷ:"Ŷ",Ẏ:"Ẏ",Ź:"Ź",Ž:"Ž",Ẑ:"Ẑ",Ż:"Ż",ά:"ά",ὰ:"ὰ",ᾱ:"ᾱ",ᾰ:"ᾰ",έ:"έ",ὲ:"ὲ",ή:"ή",ὴ:"ὴ",ί:"ί",ὶ:"ὶ",ϊ:"ϊ",ΐ:"ΐ",ῒ:"ῒ",ῑ:"ῑ",ῐ:"ῐ",ό:"ό",ὸ:"ὸ",ύ:"ύ",ὺ:"ὺ",ϋ:"ϋ",ΰ:"ΰ",ῢ:"ῢ",ῡ:"ῡ",ῠ:"ῠ",ώ:"ώ",ὼ:"ὼ",Ύ:"Ύ",Ὺ:"Ὺ",Ϋ:"Ϋ",Ῡ:"Ῡ",Ῠ:"Ῠ",Ώ:"Ώ",Ὼ:"Ὼ"};let Go=class Vo{constructor(t,r){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new o6(t,r,this.mode),this.settings=r,this.leftrightDepth=0,this.nextToken=null}expect(t,r){if(r===void 0&&(r=!0),this.fetch().text!==t)throw new Y("Expected '"+t+"', got '"+this.fetch().text+"'",this.fetch());r&&this.consume()}consume(){this.nextToken=null}fetch(){return this.nextToken==null&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(t){this.mode=t,this.gullet.switchMode(t)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var t=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),t}finally{this.gullet.endGroups()}}subparse(t){var r=this.nextToken;this.consume(),this.gullet.pushToken(new ot("}")),this.gullet.pushTokens(t);var n=this.parseExpression(!1);return this.expect("}"),this.nextToken=r,n}parseExpression(t,r){for(var n=[];;){this.mode==="math"&&this.consumeSpaces();var a=this.fetch();if(Vo.endOfExpression.has(a.text)||r&&a.text===r||t&&Qt[a.text]&&Qt[a.text].infix)break;var i=this.parseAtom(r);if(i){if(i.type==="internal")continue}else break;n.push(i)}return this.mode==="text"&&this.formLigatures(n),this.handleInfixNodes(n)}handleInfixNodes(t){for(var r=-1,n,a=0;a=128)this.settings.strict&&($l(r.charCodeAt(0))?this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+r[0]+'" used in math mode',t):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+r[0]+'"'+(" ("+r.charCodeAt(0)+")"),t)),u={type:"textord",mode:"text",loc:rt.range(t),text:r};else return null;if(this.consume(),i)for(var d=0;dc&&(c=d):d&&(c!==void 0&&c>-1&&l.push(` -`.repeat(c)||" "),c=-1,l.push(d))}return l.join("")}function ec(e,t,r){return e.type==="element"?F6(e,t,r):e.type==="text"?r.whitespace==="normal"?tc(e,r):H6(e):[]}function F6(e,t,r){const n=rc(e,r),a=e.children||[];let i=-1,u=[];if(P6(e))return u;let s,l;for(Xa(e)||ks(e)&&xs(t,e,ks)?l=` -`:M6(e)?(s=2,l=2):Zo(e)&&(s=1,l=1);++i-1&&i<=t.length){let u=0;for(;;){let s=r[u];if(s===void 0){const l=Ss(t,r[u-1]);s=l===-1?t.length+1:l+1,r[u]=s}if(s>i)return{line:u+1,column:i-(u>0?r[u-1]:0)+1,offset:i};u++}}}function a(i){if(i&&typeof i.line=="number"&&typeof i.column=="number"&&!Number.isNaN(i.line)&&!Number.isNaN(i.column)){for(;r.length1?r[i.line-2]:0)+i.column-1;if(u=55296&&e<=57343}function cp(e){return e>=56320&&e<=57343}function hp(e,t){return(e-55296)*1024+9216+t}function sc(e){return e!==32&&e!==10&&e!==13&&e!==9&&e!==12&&e>=1&&e<=31||e>=127&&e<=159}function lc(e){return e>=64976&&e<=65007||op.has(e)}var P;(function(e){e.controlCharacterInInputStream="control-character-in-input-stream",e.noncharacterInInputStream="noncharacter-in-input-stream",e.surrogateInInputStream="surrogate-in-input-stream",e.nonVoidHtmlElementStartTagWithTrailingSolidus="non-void-html-element-start-tag-with-trailing-solidus",e.endTagWithAttributes="end-tag-with-attributes",e.endTagWithTrailingSolidus="end-tag-with-trailing-solidus",e.unexpectedSolidusInTag="unexpected-solidus-in-tag",e.unexpectedNullCharacter="unexpected-null-character",e.unexpectedQuestionMarkInsteadOfTagName="unexpected-question-mark-instead-of-tag-name",e.invalidFirstCharacterOfTagName="invalid-first-character-of-tag-name",e.unexpectedEqualsSignBeforeAttributeName="unexpected-equals-sign-before-attribute-name",e.missingEndTagName="missing-end-tag-name",e.unexpectedCharacterInAttributeName="unexpected-character-in-attribute-name",e.unknownNamedCharacterReference="unknown-named-character-reference",e.missingSemicolonAfterCharacterReference="missing-semicolon-after-character-reference",e.unexpectedCharacterAfterDoctypeSystemIdentifier="unexpected-character-after-doctype-system-identifier",e.unexpectedCharacterInUnquotedAttributeValue="unexpected-character-in-unquoted-attribute-value",e.eofBeforeTagName="eof-before-tag-name",e.eofInTag="eof-in-tag",e.missingAttributeValue="missing-attribute-value",e.missingWhitespaceBetweenAttributes="missing-whitespace-between-attributes",e.missingWhitespaceAfterDoctypePublicKeyword="missing-whitespace-after-doctype-public-keyword",e.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers="missing-whitespace-between-doctype-public-and-system-identifiers",e.missingWhitespaceAfterDoctypeSystemKeyword="missing-whitespace-after-doctype-system-keyword",e.missingQuoteBeforeDoctypePublicIdentifier="missing-quote-before-doctype-public-identifier",e.missingQuoteBeforeDoctypeSystemIdentifier="missing-quote-before-doctype-system-identifier",e.missingDoctypePublicIdentifier="missing-doctype-public-identifier",e.missingDoctypeSystemIdentifier="missing-doctype-system-identifier",e.abruptDoctypePublicIdentifier="abrupt-doctype-public-identifier",e.abruptDoctypeSystemIdentifier="abrupt-doctype-system-identifier",e.cdataInHtmlContent="cdata-in-html-content",e.incorrectlyOpenedComment="incorrectly-opened-comment",e.eofInScriptHtmlCommentLikeText="eof-in-script-html-comment-like-text",e.eofInDoctype="eof-in-doctype",e.nestedComment="nested-comment",e.abruptClosingOfEmptyComment="abrupt-closing-of-empty-comment",e.eofInComment="eof-in-comment",e.incorrectlyClosedComment="incorrectly-closed-comment",e.eofInCdata="eof-in-cdata",e.absenceOfDigitsInNumericCharacterReference="absence-of-digits-in-numeric-character-reference",e.nullCharacterReference="null-character-reference",e.surrogateCharacterReference="surrogate-character-reference",e.characterReferenceOutsideUnicodeRange="character-reference-outside-unicode-range",e.controlCharacterReference="control-character-reference",e.noncharacterCharacterReference="noncharacter-character-reference",e.missingWhitespaceBeforeDoctypeName="missing-whitespace-before-doctype-name",e.missingDoctypeName="missing-doctype-name",e.invalidCharacterSequenceAfterDoctypeName="invalid-character-sequence-after-doctype-name",e.duplicateAttribute="duplicate-attribute",e.nonConformingDoctype="non-conforming-doctype",e.missingDoctype="missing-doctype",e.misplacedDoctype="misplaced-doctype",e.endTagWithoutMatchingOpenElement="end-tag-without-matching-open-element",e.closingOfElementWithOpenChildElements="closing-of-element-with-open-child-elements",e.disallowedContentInNoscriptInHead="disallowed-content-in-noscript-in-head",e.openElementsLeftAfterEof="open-elements-left-after-eof",e.abandonedHeadElementChild="abandoned-head-element-child",e.misplacedStartTagForHeadElement="misplaced-start-tag-for-head-element",e.nestedNoscriptInHead="nested-noscript-in-head",e.eofInElementThatCanContainOnlyText="eof-in-element-that-can-contain-only-text"})(P||(P={}));const dp=65536;class fp{constructor(t){this.handler=t,this.html="",this.pos=-1,this.lastGapPos=-2,this.gapStack=[],this.skipNextNewLine=!1,this.lastChunkWritten=!1,this.endOfChunkHit=!1,this.bufferWaterline=dp,this.isEol=!1,this.lineStartPos=0,this.droppedBufferSize=0,this.line=1,this.lastErrOffset=-1}get col(){return this.pos-this.lineStartPos+ +(this.lastGapPos!==this.pos)}get offset(){return this.droppedBufferSize+this.pos}getError(t,r){const{line:n,col:a,offset:i}=this,u=a+r,s=i+r;return{code:t,startLine:n,endLine:n,startCol:u,endCol:u,startOffset:s,endOffset:s}}_err(t){this.handler.onParseError&&this.lastErrOffset!==this.offset&&(this.lastErrOffset=this.offset,this.handler.onParseError(this.getError(t,0)))}_addGap(){this.gapStack.push(this.lastGapPos),this.lastGapPos=this.pos}_processSurrogate(t){if(this.pos!==this.html.length-1){const r=this.html.charCodeAt(this.pos+1);if(cp(r))return this.pos++,this._addGap(),hp(t,r)}else if(!this.lastChunkWritten)return this.endOfChunkHit=!0,T.EOF;return this._err(P.surrogateInInputStream),t}willDropParsedChunk(){return this.pos>this.bufferWaterline}dropParsedChunk(){this.willDropParsedChunk()&&(this.html=this.html.substring(this.pos),this.lineStartPos-=this.pos,this.droppedBufferSize+=this.pos,this.pos=0,this.lastGapPos=-2,this.gapStack.length=0)}write(t,r){this.html.length>0?this.html+=t:this.html=t,this.endOfChunkHit=!1,this.lastChunkWritten=r}insertHtmlAtCurrentPos(t){this.html=this.html.substring(0,this.pos+1)+t+this.html.substring(this.pos+1),this.endOfChunkHit=!1}startsWith(t,r){if(this.pos+t.length>this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,!1;if(r)return this.html.startsWith(t,this.pos);for(let n=0;n=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,T.EOF;const n=this.html.charCodeAt(r);return n===T.CARRIAGE_RETURN?T.LINE_FEED:n}advance(){if(this.pos++,this.isEol&&(this.isEol=!1,this.line++,this.lineStartPos=this.pos),this.pos>=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,T.EOF;let t=this.html.charCodeAt(this.pos);return t===T.CARRIAGE_RETURN?(this.isEol=!0,this.skipNextNewLine=!0,T.LINE_FEED):t===T.LINE_FEED&&(this.isEol=!0,this.skipNextNewLine)?(this.line--,this.skipNextNewLine=!1,this._addGap(),this.advance()):(this.skipNextNewLine=!1,uc(t)&&(t=this._processSurrogate(t)),this.handler.onParseError===null||t>31&&t<127||t===T.LINE_FEED||t===T.CARRIAGE_RETURN||t>159&&t<64976||this._checkForProblematicCharacters(t),t)}_checkForProblematicCharacters(t){sc(t)?this._err(P.controlCharacterInInputStream):lc(t)&&this._err(P.noncharacterInInputStream)}retreat(t){for(this.pos-=t;this.pos=0;r--)if(e.attrs[r].name===t)return e.attrs[r].value;return null}const mp=new Uint16Array('ᵁ<Õıʊҝջאٵ۞ޢߖࠏ੊ઑඡ๭༉༦჊ረዡᐕᒝᓃᓟᔥ\0\0\0\0\0\0ᕫᛍᦍᰒᷝ὾⁠↰⊍⏀⏻⑂⠤⤒ⴈ⹈⿎〖㊺㘹㞬㣾㨨㩱㫠㬮ࠀEMabcfglmnoprstu\\bfms„‹•˜¦³¹ÈÏlig耻Æ䃆P耻&䀦cute耻Á䃁reve;䄂Āiyx}rc耻Â䃂;䐐r;쀀𝔄rave耻À䃀pha;䎑acr;䄀d;橓Āgp¡on;䄄f;쀀𝔸plyFunction;恡ing耻Å䃅Ācs¾Ãr;쀀𝒜ign;扔ilde耻Ã䃃ml耻Ä䃄ЀaceforsuåûþėĜĢħĪĀcrêòkslash;或Ŷöø;櫧ed;挆y;䐑ƀcrtąċĔause;戵noullis;愬a;䎒r;쀀𝔅pf;쀀𝔹eve;䋘còēmpeq;扎܀HOacdefhilorsuōőŖƀƞƢƵƷƺǜȕɳɸɾcy;䐧PY耻©䂩ƀcpyŝŢźute;䄆Ā;iŧŨ拒talDifferentialD;慅leys;愭ȀaeioƉƎƔƘron;䄌dil耻Ç䃇rc;䄈nint;戰ot;䄊ĀdnƧƭilla;䂸terDot;䂷òſi;䎧rcleȀDMPTLJNjǑǖot;抙inus;抖lus;投imes;抗oĀcsǢǸkwiseContourIntegral;戲eCurlyĀDQȃȏoubleQuote;思uote;怙ȀlnpuȞȨɇɕonĀ;eȥȦ户;橴ƀgitȯȶȺruent;扡nt;戯ourIntegral;戮ĀfrɌɎ;愂oduct;成nterClockwiseContourIntegral;戳oss;樯cr;쀀𝒞pĀ;Cʄʅ拓ap;才րDJSZacefiosʠʬʰʴʸˋ˗ˡ˦̳ҍĀ;oŹʥtrahd;椑cy;䐂cy;䐅cy;䐏ƀgrsʿ˄ˇger;怡r;憡hv;櫤Āayː˕ron;䄎;䐔lĀ;t˝˞戇a;䎔r;쀀𝔇Āaf˫̧Ācm˰̢riticalȀADGT̖̜̀̆cute;䂴oŴ̋̍;䋙bleAcute;䋝rave;䁠ilde;䋜ond;拄ferentialD;慆Ѱ̽\0\0\0͔͂\0Ѕf;쀀𝔻ƀ;DE͈͉͍䂨ot;惜qual;扐blèCDLRUVͣͲ΂ϏϢϸontourIntegraìȹoɴ͹\0\0ͻ»͉nArrow;懓Āeo·ΤftƀARTΐΖΡrrow;懐ightArrow;懔eåˊngĀLRΫτeftĀARγιrrow;柸ightArrow;柺ightArrow;柹ightĀATϘϞrrow;懒ee;抨pɁϩ\0\0ϯrrow;懑ownArrow;懕erticalBar;戥ǹABLRTaВЪаўѿͼrrowƀ;BUНОТ憓ar;椓pArrow;懵reve;䌑eft˒к\0ц\0ѐightVector;楐eeVector;楞ectorĀ;Bљњ憽ar;楖ightǔѧ\0ѱeeVector;楟ectorĀ;BѺѻ懁ar;楗eeĀ;A҆҇护rrow;憧ĀctҒҗr;쀀𝒟rok;䄐ࠀNTacdfglmopqstuxҽӀӄӋӞӢӧӮӵԡԯԶՒ՝ՠեG;䅊H耻Ð䃐cute耻É䃉ƀaiyӒӗӜron;䄚rc耻Ê䃊;䐭ot;䄖r;쀀𝔈rave耻È䃈ement;戈ĀapӺӾcr;䄒tyɓԆ\0\0ԒmallSquare;旻erySmallSquare;斫ĀgpԦԪon;䄘f;쀀𝔼silon;䎕uĀaiԼՉlĀ;TՂՃ橵ilde;扂librium;懌Āci՗՚r;愰m;橳a;䎗ml耻Ë䃋Āipժկsts;戃onentialE;慇ʀcfiosօֈ֍ֲ׌y;䐤r;쀀𝔉lledɓ֗\0\0֣mallSquare;旼erySmallSquare;斪Ͱֺ\0ֿ\0\0ׄf;쀀𝔽All;戀riertrf;愱cò׋؀JTabcdfgorstר׬ׯ׺؀ؒؖ؛؝أ٬ٲcy;䐃耻>䀾mmaĀ;d׷׸䎓;䏜reve;䄞ƀeiy؇،ؐdil;䄢rc;䄜;䐓ot;䄠r;쀀𝔊;拙pf;쀀𝔾eater̀EFGLSTصلَٖٛ٦qualĀ;Lؾؿ扥ess;招ullEqual;执reater;檢ess;扷lantEqual;橾ilde;扳cr;쀀𝒢;扫ЀAacfiosuڅڋږڛڞڪھۊRDcy;䐪Āctڐڔek;䋇;䁞irc;䄤r;愌lbertSpace;愋ǰگ\0ڲf;愍izontalLine;攀Āctۃۅòکrok;䄦mpńېۘownHumðįqual;扏܀EJOacdfgmnostuۺ۾܃܇܎ܚܞܡܨ݄ݸދޏޕcy;䐕lig;䄲cy;䐁cute耻Í䃍Āiyܓܘrc耻Î䃎;䐘ot;䄰r;愑rave耻Ì䃌ƀ;apܠܯܿĀcgܴܷr;䄪inaryI;慈lieóϝǴ݉\0ݢĀ;eݍݎ戬Āgrݓݘral;戫section;拂isibleĀCTݬݲomma;恣imes;恢ƀgptݿރވon;䄮f;쀀𝕀a;䎙cr;愐ilde;䄨ǫޚ\0ޞcy;䐆l耻Ï䃏ʀcfosuެ޷޼߂ߐĀiyޱ޵rc;䄴;䐙r;쀀𝔍pf;쀀𝕁ǣ߇\0ߌr;쀀𝒥rcy;䐈kcy;䐄΀HJacfosߤߨ߽߬߱ࠂࠈcy;䐥cy;䐌ppa;䎚Āey߶߻dil;䄶;䐚r;쀀𝔎pf;쀀𝕂cr;쀀𝒦րJTaceflmostࠥࠩࠬࡐࡣ঳সে্਷ੇcy;䐉耻<䀼ʀcmnpr࠷࠼ࡁࡄࡍute;䄹bda;䎛g;柪lacetrf;愒r;憞ƀaeyࡗ࡜ࡡron;䄽dil;䄻;䐛Āfsࡨ॰tԀACDFRTUVarࡾࢩࢱࣦ࣠ࣼयज़ΐ४Ānrࢃ࢏gleBracket;柨rowƀ;BR࢙࢚࢞憐ar;懤ightArrow;懆eiling;挈oǵࢷ\0ࣃbleBracket;柦nǔࣈ\0࣒eeVector;楡ectorĀ;Bࣛࣜ懃ar;楙loor;挊ightĀAV࣯ࣵrrow;憔ector;楎Āerँगeƀ;AVउऊऐ抣rrow;憤ector;楚iangleƀ;BEतथऩ抲ar;槏qual;抴pƀDTVषूौownVector;楑eeVector;楠ectorĀ;Bॖॗ憿ar;楘ectorĀ;B॥०憼ar;楒ightáΜs̀EFGLSTॾঋকঝঢভqualGreater;拚ullEqual;扦reater;扶ess;檡lantEqual;橽ilde;扲r;쀀𝔏Ā;eঽা拘ftarrow;懚idot;䄿ƀnpw৔ਖਛgȀLRlr৞৷ਂਐeftĀAR০৬rrow;柵ightArrow;柷ightArrow;柶eftĀarγਊightáοightáϊf;쀀𝕃erĀLRਢਬeftArrow;憙ightArrow;憘ƀchtਾੀੂòࡌ;憰rok;䅁;扪Ѐacefiosuਗ਼੝੠੷੼અઋ઎p;椅y;䐜Ādl੥੯iumSpace;恟lintrf;愳r;쀀𝔐nusPlus;戓pf;쀀𝕄cò੶;䎜ҀJacefostuણધભીଔଙඑ඗ඞcy;䐊cute;䅃ƀaey઴હાron;䅇dil;䅅;䐝ƀgswે૰଎ativeƀMTV૓૟૨ediumSpace;怋hiĀcn૦૘ë૙eryThiî૙tedĀGL૸ଆreaterGreateòٳessLesóੈLine;䀊r;쀀𝔑ȀBnptଢନଷ଺reak;恠BreakingSpace;䂠f;愕ڀ;CDEGHLNPRSTV୕ୖ୪୼஡௫ఄ౞಄ದ೘ൡඅ櫬Āou୛୤ngruent;扢pCap;扭oubleVerticalBar;戦ƀlqxஃஊ஛ement;戉ualĀ;Tஒஓ扠ilde;쀀≂̸ists;戄reater΀;EFGLSTஶஷ஽௉௓௘௥扯qual;扱ullEqual;쀀≧̸reater;쀀≫̸ess;批lantEqual;쀀⩾̸ilde;扵umpń௲௽ownHump;쀀≎̸qual;쀀≏̸eĀfsఊధtTriangleƀ;BEచఛడ拪ar;쀀⧏̸qual;括s̀;EGLSTవశ఼ౄోౘ扮qual;扰reater;扸ess;쀀≪̸lantEqual;쀀⩽̸ilde;扴estedĀGL౨౹reaterGreater;쀀⪢̸essLess;쀀⪡̸recedesƀ;ESಒಓಛ技qual;쀀⪯̸lantEqual;拠ĀeiಫಹverseElement;戌ghtTriangleƀ;BEೋೌ೒拫ar;쀀⧐̸qual;拭ĀquೝഌuareSuĀbp೨೹setĀ;E೰ೳ쀀⊏̸qual;拢ersetĀ;Eഃആ쀀⊐̸qual;拣ƀbcpഓതൎsetĀ;Eഛഞ쀀⊂⃒qual;抈ceedsȀ;ESTലള഻െ抁qual;쀀⪰̸lantEqual;拡ilde;쀀≿̸ersetĀ;E൘൛쀀⊃⃒qual;抉ildeȀ;EFT൮൯൵ൿ扁qual;扄ullEqual;扇ilde;扉erticalBar;戤cr;쀀𝒩ilde耻Ñ䃑;䎝܀Eacdfgmoprstuvලෂ෉෕ෛ෠෧෼ขภยา฿ไlig;䅒cute耻Ó䃓Āiy෎ීrc耻Ô䃔;䐞blac;䅐r;쀀𝔒rave耻Ò䃒ƀaei෮ෲ෶cr;䅌ga;䎩cron;䎟pf;쀀𝕆enCurlyĀDQฎบoubleQuote;怜uote;怘;橔Āclวฬr;쀀𝒪ash耻Ø䃘iŬื฼de耻Õ䃕es;樷ml耻Ö䃖erĀBP๋๠Āar๐๓r;怾acĀek๚๜;揞et;掴arenthesis;揜Ҁacfhilors๿ງຊຏຒດຝະ໼rtialD;戂y;䐟r;쀀𝔓i;䎦;䎠usMinus;䂱Āipຢອncareplanåڝf;愙Ȁ;eio຺ູ໠໤檻cedesȀ;EST່້໏໚扺qual;檯lantEqual;扼ilde;找me;怳Ādp໩໮uct;戏ortionĀ;aȥ໹l;戝Āci༁༆r;쀀𝒫;䎨ȀUfos༑༖༛༟OT耻"䀢r;쀀𝔔pf;愚cr;쀀𝒬؀BEacefhiorsu༾གྷཇའཱིྦྷྪྭ႖ႩႴႾarr;椐G耻®䂮ƀcnrཎནབute;䅔g;柫rĀ;tཛྷཝ憠l;椖ƀaeyཧཬཱron;䅘dil;䅖;䐠Ā;vླྀཹ愜erseĀEUྂྙĀlq྇ྎement;戋uilibrium;懋pEquilibrium;楯r»ཹo;䎡ghtЀACDFTUVa࿁࿫࿳ဢဨၛႇϘĀnr࿆࿒gleBracket;柩rowƀ;BL࿜࿝࿡憒ar;懥eftArrow;懄eiling;按oǵ࿹\0စbleBracket;柧nǔည\0နeeVector;楝ectorĀ;Bဝသ懂ar;楕loor;挋Āerိ၃eƀ;AVဵံြ抢rrow;憦ector;楛iangleƀ;BEၐၑၕ抳ar;槐qual;抵pƀDTVၣၮၸownVector;楏eeVector;楜ectorĀ;Bႂႃ憾ar;楔ectorĀ;B႑႒懀ar;楓Āpuႛ႞f;愝ndImplies;楰ightarrow;懛ĀchႹႼr;愛;憱leDelayed;槴ڀHOacfhimoqstuფჱჷჽᄙᄞᅑᅖᅡᅧᆵᆻᆿĀCcჩხHcy;䐩y;䐨FTcy;䐬cute;䅚ʀ;aeiyᄈᄉᄎᄓᄗ檼ron;䅠dil;䅞rc;䅜;䐡r;쀀𝔖ortȀDLRUᄪᄴᄾᅉownArrow»ОeftArrow»࢚ightArrow»࿝pArrow;憑gma;䎣allCircle;战pf;쀀𝕊ɲᅭ\0\0ᅰt;戚areȀ;ISUᅻᅼᆉᆯ斡ntersection;抓uĀbpᆏᆞsetĀ;Eᆗᆘ抏qual;抑ersetĀ;Eᆨᆩ抐qual;抒nion;抔cr;쀀𝒮ar;拆ȀbcmpᇈᇛሉላĀ;sᇍᇎ拐etĀ;Eᇍᇕqual;抆ĀchᇠህeedsȀ;ESTᇭᇮᇴᇿ扻qual;檰lantEqual;扽ilde;承Tháྌ;我ƀ;esሒሓሣ拑rsetĀ;Eሜም抃qual;抇et»ሓրHRSacfhiorsሾቄ቉ቕ቞ቱቶኟዂወዑORN耻Þ䃞ADE;愢ĀHc቎ቒcy;䐋y;䐦Ābuቚቜ;䀉;䎤ƀaeyብቪቯron;䅤dil;䅢;䐢r;쀀𝔗Āeiቻ኉Dzኀ\0ኇefore;戴a;䎘Ācn኎ኘkSpace;쀀  Space;怉ldeȀ;EFTካኬኲኼ戼qual;扃ullEqual;扅ilde;扈pf;쀀𝕋ipleDot;惛Āctዖዛr;쀀𝒯rok;䅦ૡዷጎጚጦ\0ጬጱ\0\0\0\0\0ጸጽ፷ᎅ\0᏿ᐄᐊᐐĀcrዻጁute耻Ú䃚rĀ;oጇገ憟cir;楉rǣጓ\0጖y;䐎ve;䅬Āiyጞጣrc耻Û䃛;䐣blac;䅰r;쀀𝔘rave耻Ù䃙acr;䅪Ādiፁ፩erĀBPፈ፝Āarፍፐr;䁟acĀekፗፙ;揟et;掵arenthesis;揝onĀ;P፰፱拃lus;抎Āgp፻፿on;䅲f;쀀𝕌ЀADETadps᎕ᎮᎸᏄϨᏒᏗᏳrrowƀ;BDᅐᎠᎤar;椒ownArrow;懅ownArrow;憕quilibrium;楮eeĀ;AᏋᏌ报rrow;憥ownáϳerĀLRᏞᏨeftArrow;憖ightArrow;憗iĀ;lᏹᏺ䏒on;䎥ing;䅮cr;쀀𝒰ilde;䅨ml耻Ü䃜ҀDbcdefosvᐧᐬᐰᐳᐾᒅᒊᒐᒖash;披ar;櫫y;䐒ashĀ;lᐻᐼ抩;櫦Āerᑃᑅ;拁ƀbtyᑌᑐᑺar;怖Ā;iᑏᑕcalȀBLSTᑡᑥᑪᑴar;戣ine;䁼eparator;杘ilde;所ThinSpace;怊r;쀀𝔙pf;쀀𝕍cr;쀀𝒱dash;抪ʀcefosᒧᒬᒱᒶᒼirc;䅴dge;拀r;쀀𝔚pf;쀀𝕎cr;쀀𝒲Ȁfiosᓋᓐᓒᓘr;쀀𝔛;䎞pf;쀀𝕏cr;쀀𝒳ҀAIUacfosuᓱᓵᓹᓽᔄᔏᔔᔚᔠcy;䐯cy;䐇cy;䐮cute耻Ý䃝Āiyᔉᔍrc;䅶;䐫r;쀀𝔜pf;쀀𝕐cr;쀀𝒴ml;䅸ЀHacdefosᔵᔹᔿᕋᕏᕝᕠᕤcy;䐖cute;䅹Āayᕄᕉron;䅽;䐗ot;䅻Dzᕔ\0ᕛoWidtè૙a;䎖r;愨pf;愤cr;쀀𝒵௡ᖃᖊᖐ\0ᖰᖶᖿ\0\0\0\0ᗆᗛᗫᙟ᙭\0ᚕ᚛ᚲᚹ\0ᚾcute耻á䃡reve;䄃̀;Ediuyᖜᖝᖡᖣᖨᖭ戾;쀀∾̳;房rc耻â䃢te肻´̆;䐰lig耻æ䃦Ā;r²ᖺ;쀀𝔞rave耻à䃠ĀepᗊᗖĀfpᗏᗔsym;愵èᗓha;䎱ĀapᗟcĀclᗤᗧr;䄁g;樿ɤᗰ\0\0ᘊʀ;adsvᗺᗻᗿᘁᘇ戧nd;橕;橜lope;橘;橚΀;elmrszᘘᘙᘛᘞᘿᙏᙙ戠;榤e»ᘙsdĀ;aᘥᘦ戡ѡᘰᘲᘴᘶᘸᘺᘼᘾ;榨;榩;榪;榫;榬;榭;榮;榯tĀ;vᙅᙆ戟bĀ;dᙌᙍ抾;榝Āptᙔᙗh;戢»¹arr;捼Āgpᙣᙧon;䄅f;쀀𝕒΀;Eaeiop዁ᙻᙽᚂᚄᚇᚊ;橰cir;橯;扊d;手s;䀧roxĀ;e዁ᚒñᚃing耻å䃥ƀctyᚡᚦᚨr;쀀𝒶;䀪mpĀ;e዁ᚯñʈilde耻ã䃣ml耻ä䃤Āciᛂᛈoninôɲnt;樑ࠀNabcdefiklnoprsu᛭ᛱᜰ᜼ᝃᝈ᝸᝽០៦ᠹᡐᜍ᤽᥈ᥰot;櫭Ācrᛶ᜞kȀcepsᜀᜅᜍᜓong;扌psilon;䏶rime;怵imĀ;e᜚᜛戽q;拍Ŷᜢᜦee;抽edĀ;gᜬᜭ挅e»ᜭrkĀ;t፜᜷brk;掶Āoyᜁᝁ;䐱quo;怞ʀcmprtᝓ᝛ᝡᝤᝨausĀ;eĊĉptyv;榰séᜌnoõēƀahwᝯ᝱ᝳ;䎲;愶een;扬r;쀀𝔟g΀costuvwឍឝឳេ៕៛៞ƀaiuបពរðݠrc;旯p»፱ƀdptឤឨឭot;樀lus;樁imes;樂ɱឹ\0\0ើcup;樆ar;昅riangleĀdu៍្own;施p;斳plus;樄eåᑄåᒭarow;植ƀako៭ᠦᠵĀcn៲ᠣkƀlst៺֫᠂ozenge;槫riangleȀ;dlr᠒᠓᠘᠝斴own;斾eft;旂ight;斸k;搣Ʊᠫ\0ᠳƲᠯ\0ᠱ;斒;斑4;斓ck;斈ĀeoᠾᡍĀ;qᡃᡆ쀀=⃥uiv;쀀≡⃥t;挐Ȁptwxᡙᡞᡧᡬf;쀀𝕓Ā;tᏋᡣom»Ꮜtie;拈؀DHUVbdhmptuvᢅᢖᢪᢻᣗᣛᣬ᣿ᤅᤊᤐᤡȀLRlrᢎᢐᢒᢔ;敗;敔;敖;敓ʀ;DUduᢡᢢᢤᢦᢨ敐;敦;敩;敤;敧ȀLRlrᢳᢵᢷᢹ;敝;敚;敜;教΀;HLRhlrᣊᣋᣍᣏᣑᣓᣕ救;敬;散;敠;敫;敢;敟ox;槉ȀLRlrᣤᣦᣨᣪ;敕;敒;攐;攌ʀ;DUduڽ᣷᣹᣻᣽;敥;敨;攬;攴inus;抟lus;択imes;抠ȀLRlrᤙᤛᤝ᤟;敛;敘;攘;攔΀;HLRhlrᤰᤱᤳᤵᤷ᤻᤹攂;敪;敡;敞;攼;攤;攜Āevģ᥂bar耻¦䂦Ȁceioᥑᥖᥚᥠr;쀀𝒷mi;恏mĀ;e᜚᜜lƀ;bhᥨᥩᥫ䁜;槅sub;柈Ŭᥴ᥾lĀ;e᥹᥺怢t»᥺pƀ;Eeįᦅᦇ;檮Ā;qۜۛೡᦧ\0᧨ᨑᨕᨲ\0ᨷᩐ\0\0᪴\0\0᫁\0\0ᬡᬮ᭍᭒\0᯽\0ᰌƀcpr᦭ᦲ᧝ute;䄇̀;abcdsᦿᧀᧄ᧊᧕᧙戩nd;橄rcup;橉Āau᧏᧒p;橋p;橇ot;橀;쀀∩︀Āeo᧢᧥t;恁îړȀaeiu᧰᧻ᨁᨅǰ᧵\0᧸s;橍on;䄍dil耻ç䃧rc;䄉psĀ;sᨌᨍ橌m;橐ot;䄋ƀdmnᨛᨠᨦil肻¸ƭptyv;榲t脀¢;eᨭᨮ䂢räƲr;쀀𝔠ƀceiᨽᩀᩍy;䑇ckĀ;mᩇᩈ朓ark»ᩈ;䏇r΀;Ecefms᩟᩠ᩢᩫ᪤᪪᪮旋;槃ƀ;elᩩᩪᩭ䋆q;扗eɡᩴ\0\0᪈rrowĀlr᩼᪁eft;憺ight;憻ʀRSacd᪒᪔᪖᪚᪟»ཇ;擈st;抛irc;抚ash;抝nint;樐id;櫯cir;槂ubsĀ;u᪻᪼晣it»᪼ˬ᫇᫔᫺\0ᬊonĀ;eᫍᫎ䀺Ā;qÇÆɭ᫙\0\0᫢aĀ;t᫞᫟䀬;䁀ƀ;fl᫨᫩᫫戁îᅠeĀmx᫱᫶ent»᫩eóɍǧ᫾\0ᬇĀ;dኻᬂot;橭nôɆƀfryᬐᬔᬗ;쀀𝕔oäɔ脀©;sŕᬝr;愗Āaoᬥᬩrr;憵ss;朗Ācuᬲᬷr;쀀𝒸Ābpᬼ᭄Ā;eᭁᭂ櫏;櫑Ā;eᭉᭊ櫐;櫒dot;拯΀delprvw᭠᭬᭷ᮂᮬᯔ᯹arrĀlr᭨᭪;椸;椵ɰ᭲\0\0᭵r;拞c;拟arrĀ;p᭿ᮀ憶;椽̀;bcdosᮏᮐᮖᮡᮥᮨ截rcap;橈Āauᮛᮞp;橆p;橊ot;抍r;橅;쀀∪︀Ȁalrv᮵ᮿᯞᯣrrĀ;mᮼᮽ憷;椼yƀevwᯇᯔᯘqɰᯎ\0\0ᯒreã᭳uã᭵ee;拎edge;拏en耻¤䂤earrowĀlrᯮ᯳eft»ᮀight»ᮽeäᯝĀciᰁᰇoninôǷnt;戱lcty;挭ঀAHabcdefhijlorstuwz᰸᰻᰿ᱝᱩᱵᲊᲞᲬᲷ᳻᳿ᴍᵻᶑᶫᶻ᷆᷍rò΁ar;楥Ȁglrs᱈ᱍ᱒᱔ger;怠eth;愸òᄳhĀ;vᱚᱛ怐»ऊūᱡᱧarow;椏aã̕Āayᱮᱳron;䄏;䐴ƀ;ao̲ᱼᲄĀgrʿᲁr;懊tseq;橷ƀglmᲑᲔᲘ耻°䂰ta;䎴ptyv;榱ĀirᲣᲨsht;楿;쀀𝔡arĀlrᲳᲵ»ࣜ»သʀaegsv᳂͸᳖᳜᳠mƀ;oș᳊᳔ndĀ;ș᳑uit;晦amma;䏝in;拲ƀ;io᳧᳨᳸䃷de脀÷;o᳧ᳰntimes;拇nø᳷cy;䑒cɯᴆ\0\0ᴊrn;挞op;挍ʀlptuwᴘᴝᴢᵉᵕlar;䀤f;쀀𝕕ʀ;emps̋ᴭᴷᴽᵂqĀ;d͒ᴳot;扑inus;戸lus;戔quare;抡blebarwedgåúnƀadhᄮᵝᵧownarrowóᲃarpoonĀlrᵲᵶefôᲴighôᲶŢᵿᶅkaro÷གɯᶊ\0\0ᶎrn;挟op;挌ƀcotᶘᶣᶦĀryᶝᶡ;쀀𝒹;䑕l;槶rok;䄑Ādrᶰᶴot;拱iĀ;fᶺ᠖斿Āah᷀᷃ròЩaòྦangle;榦Āci᷒ᷕy;䑟grarr;柿ऀDacdefglmnopqrstuxḁḉḙḸոḼṉṡṾấắẽỡἪἷὄ὎὚ĀDoḆᴴoôᲉĀcsḎḔute耻é䃩ter;橮ȀaioyḢḧḱḶron;䄛rĀ;cḭḮ扖耻ê䃪lon;払;䑍ot;䄗ĀDrṁṅot;扒;쀀𝔢ƀ;rsṐṑṗ檚ave耻è䃨Ā;dṜṝ檖ot;檘Ȁ;ilsṪṫṲṴ檙nters;揧;愓Ā;dṹṺ檕ot;檗ƀapsẅẉẗcr;䄓tyƀ;svẒẓẕ戅et»ẓpĀ1;ẝẤijạả;怄;怅怃ĀgsẪẬ;䅋p;怂ĀgpẴẸon;䄙f;쀀𝕖ƀalsỄỎỒrĀ;sỊị拕l;槣us;橱iƀ;lvỚớở䎵on»ớ;䏵ȀcsuvỪỳἋἣĀioữḱrc»Ḯɩỹ\0\0ỻíՈantĀglἂἆtr»ṝess»Ṻƀaeiἒ἖Ἒls;䀽st;扟vĀ;DȵἠD;橸parsl;槥ĀDaἯἳot;打rr;楱ƀcdiἾὁỸr;愯oô͒ĀahὉὋ;䎷耻ð䃰Āmrὓὗl耻ë䃫o;悬ƀcipὡὤὧl;䀡sôծĀeoὬὴctatioîՙnentialåչৡᾒ\0ᾞ\0ᾡᾧ\0\0ῆῌ\0ΐ\0ῦῪ \0 ⁚llingdotseñṄy;䑄male;晀ƀilrᾭᾳ῁lig;耀ffiɩᾹ\0\0᾽g;耀ffig;耀ffl;쀀𝔣lig;耀filig;쀀fjƀaltῙ῜ῡt;晭ig;耀flns;斱of;䆒ǰ΅\0ῳf;쀀𝕗ĀakֿῷĀ;vῼ´拔;櫙artint;樍Āao‌⁕Ācs‑⁒ႉ‸⁅⁈\0⁐β•‥‧‪‬\0‮耻½䂽;慓耻¼䂼;慕;慙;慛Ƴ‴\0‶;慔;慖ʴ‾⁁\0\0⁃耻¾䂾;慗;慜5;慘ƶ⁌\0⁎;慚;慝8;慞l;恄wn;挢cr;쀀𝒻ࢀEabcdefgijlnorstv₂₉₟₥₰₴⃰⃵⃺⃿℃ℒℸ̗ℾ⅒↞Ā;lٍ₇;檌ƀcmpₐₕ₝ute;䇵maĀ;dₜ᳚䎳;檆reve;䄟Āiy₪₮rc;䄝;䐳ot;䄡Ȁ;lqsؾق₽⃉ƀ;qsؾٌ⃄lanô٥Ȁ;cdl٥⃒⃥⃕c;檩otĀ;o⃜⃝檀Ā;l⃢⃣檂;檄Ā;e⃪⃭쀀⋛︀s;檔r;쀀𝔤Ā;gٳ؛mel;愷cy;䑓Ȁ;Eajٚℌℎℐ;檒;檥;檤ȀEaesℛℝ℩ℴ;扩pĀ;p℣ℤ檊rox»ℤĀ;q℮ℯ檈Ā;q℮ℛim;拧pf;쀀𝕘Āci⅃ⅆr;愊mƀ;el٫ⅎ⅐;檎;檐茀>;cdlqr׮ⅠⅪⅮⅳⅹĀciⅥⅧ;檧r;橺ot;拗Par;榕uest;橼ʀadelsↄⅪ←ٖ↛ǰ↉\0↎proø₞r;楸qĀlqؿ↖lesó₈ií٫Āen↣↭rtneqq;쀀≩︀Å↪ԀAabcefkosy⇄⇇⇱⇵⇺∘∝∯≨≽ròΠȀilmr⇐⇔⇗⇛rsðᒄf»․ilôکĀdr⇠⇤cy;䑊ƀ;cwࣴ⇫⇯ir;楈;憭ar;意irc;䄥ƀalr∁∎∓rtsĀ;u∉∊晥it»∊lip;怦con;抹r;쀀𝔥sĀew∣∩arow;椥arow;椦ʀamopr∺∾≃≞≣rr;懿tht;戻kĀlr≉≓eftarrow;憩ightarrow;憪f;쀀𝕙bar;怕ƀclt≯≴≸r;쀀𝒽asè⇴rok;䄧Ābp⊂⊇ull;恃hen»ᱛૡ⊣\0⊪\0⊸⋅⋎\0⋕⋳\0\0⋸⌢⍧⍢⍿\0⎆⎪⎴cute耻í䃭ƀ;iyݱ⊰⊵rc耻î䃮;䐸Ācx⊼⊿y;䐵cl耻¡䂡ĀfrΟ⋉;쀀𝔦rave耻ì䃬Ȁ;inoܾ⋝⋩⋮Āin⋢⋦nt;樌t;戭fin;槜ta;愩lig;䄳ƀaop⋾⌚⌝ƀcgt⌅⌈⌗r;䄫ƀelpܟ⌏⌓inåގarôܠh;䄱f;抷ed;䆵ʀ;cfotӴ⌬⌱⌽⍁are;愅inĀ;t⌸⌹戞ie;槝doô⌙ʀ;celpݗ⍌⍐⍛⍡al;抺Āgr⍕⍙eróᕣã⍍arhk;樗rod;樼Ȁcgpt⍯⍲⍶⍻y;䑑on;䄯f;쀀𝕚a;䎹uest耻¿䂿Āci⎊⎏r;쀀𝒾nʀ;EdsvӴ⎛⎝⎡ӳ;拹ot;拵Ā;v⎦⎧拴;拳Ā;iݷ⎮lde;䄩ǫ⎸\0⎼cy;䑖l耻ï䃯̀cfmosu⏌⏗⏜⏡⏧⏵Āiy⏑⏕rc;䄵;䐹r;쀀𝔧ath;䈷pf;쀀𝕛ǣ⏬\0⏱r;쀀𝒿rcy;䑘kcy;䑔Ѐacfghjos␋␖␢␧␭␱␵␻ppaĀ;v␓␔䎺;䏰Āey␛␠dil;䄷;䐺r;쀀𝔨reen;䄸cy;䑅cy;䑜pf;쀀𝕜cr;쀀𝓀஀ABEHabcdefghjlmnoprstuv⑰⒁⒆⒍⒑┎┽╚▀♎♞♥♹♽⚚⚲⛘❝❨➋⟀⠁⠒ƀart⑷⑺⑼rò৆òΕail;椛arr;椎Ā;gঔ⒋;檋ar;楢ॣ⒥\0⒪\0⒱\0\0\0\0\0⒵Ⓔ\0ⓆⓈⓍ\0⓹ute;䄺mptyv;榴raîࡌbda;䎻gƀ;dlࢎⓁⓃ;榑åࢎ;檅uo耻«䂫rЀ;bfhlpst࢙ⓞⓦⓩ⓫⓮⓱⓵Ā;f࢝ⓣs;椟s;椝ë≒p;憫l;椹im;楳l;憢ƀ;ae⓿─┄檫il;椙Ā;s┉┊檭;쀀⪭︀ƀabr┕┙┝rr;椌rk;杲Āak┢┬cĀek┨┪;䁻;䁛Āes┱┳;榋lĀdu┹┻;榏;榍Ȁaeuy╆╋╖╘ron;䄾Ādi═╔il;䄼ìࢰâ┩;䐻Ȁcqrs╣╦╭╽a;椶uoĀ;rนᝆĀdu╲╷har;楧shar;楋h;憲ʀ;fgqs▋▌উ◳◿扤tʀahlrt▘▤▷◂◨rrowĀ;t࢙□aé⓶arpoonĀdu▯▴own»њp»०eftarrows;懇ightƀahs◍◖◞rrowĀ;sࣴࢧarpoonó྘quigarro÷⇰hreetimes;拋ƀ;qs▋ও◺lanôবʀ;cdgsব☊☍☝☨c;檨otĀ;o☔☕橿Ā;r☚☛檁;檃Ā;e☢☥쀀⋚︀s;檓ʀadegs☳☹☽♉♋pproøⓆot;拖qĀgq♃♅ôউgtò⒌ôছiíলƀilr♕࣡♚sht;楼;쀀𝔩Ā;Eজ♣;檑š♩♶rĀdu▲♮Ā;l॥♳;楪lk;斄cy;䑙ʀ;achtੈ⚈⚋⚑⚖rò◁orneòᴈard;楫ri;旺Āio⚟⚤dot;䅀ustĀ;a⚬⚭掰che»⚭ȀEaes⚻⚽⛉⛔;扨pĀ;p⛃⛄檉rox»⛄Ā;q⛎⛏檇Ā;q⛎⚻im;拦Ѐabnoptwz⛩⛴⛷✚✯❁❇❐Ānr⛮⛱g;柬r;懽rëࣁgƀlmr⛿✍✔eftĀar০✇ightá৲apsto;柼ightá৽parrowĀlr✥✩efô⓭ight;憬ƀafl✶✹✽r;榅;쀀𝕝us;樭imes;樴š❋❏st;戗áፎƀ;ef❗❘᠀旊nge»❘arĀ;l❤❥䀨t;榓ʀachmt❳❶❼➅➇ròࢨorneòᶌarĀ;d྘➃;業;怎ri;抿̀achiqt➘➝ੀ➢➮➻quo;怹r;쀀𝓁mƀ;egল➪➬;檍;檏Ābu┪➳oĀ;rฟ➹;怚rok;䅂萀<;cdhilqrࠫ⟒☹⟜⟠⟥⟪⟰Āci⟗⟙;檦r;橹reå◲mes;拉arr;楶uest;橻ĀPi⟵⟹ar;榖ƀ;ef⠀भ᠛旃rĀdu⠇⠍shar;楊har;楦Āen⠗⠡rtneqq;쀀≨︀Å⠞܀Dacdefhilnopsu⡀⡅⢂⢎⢓⢠⢥⢨⣚⣢⣤ઃ⣳⤂Dot;戺Ȁclpr⡎⡒⡣⡽r耻¯䂯Āet⡗⡙;時Ā;e⡞⡟朠se»⡟Ā;sျ⡨toȀ;dluျ⡳⡷⡻owîҌefôएðᏑker;斮Āoy⢇⢌mma;権;䐼ash;怔asuredangle»ᘦr;쀀𝔪o;愧ƀcdn⢯⢴⣉ro耻µ䂵Ȁ;acdᑤ⢽⣀⣄sôᚧir;櫰ot肻·Ƶusƀ;bd⣒ᤃ⣓戒Ā;uᴼ⣘;横ţ⣞⣡p;櫛ò−ðઁĀdp⣩⣮els;抧f;쀀𝕞Āct⣸⣽r;쀀𝓂pos»ᖝƀ;lm⤉⤊⤍䎼timap;抸ఀGLRVabcdefghijlmoprstuvw⥂⥓⥾⦉⦘⧚⧩⨕⨚⩘⩝⪃⪕⪤⪨⬄⬇⭄⭿⮮ⰴⱧⱼ⳩Āgt⥇⥋;쀀⋙̸Ā;v⥐௏쀀≫⃒ƀelt⥚⥲⥶ftĀar⥡⥧rrow;懍ightarrow;懎;쀀⋘̸Ā;v⥻ే쀀≪⃒ightarrow;懏ĀDd⦎⦓ash;抯ash;抮ʀbcnpt⦣⦧⦬⦱⧌la»˞ute;䅄g;쀀∠⃒ʀ;Eiop඄⦼⧀⧅⧈;쀀⩰̸d;쀀≋̸s;䅉roø඄urĀ;a⧓⧔普lĀ;s⧓ସdz⧟\0⧣p肻 ଷmpĀ;e௹ఀʀaeouy⧴⧾⨃⨐⨓ǰ⧹\0⧻;橃on;䅈dil;䅆ngĀ;dൾ⨊ot;쀀⩭̸p;橂;䐽ash;怓΀;Aadqsxஒ⨩⨭⨻⩁⩅⩐rr;懗rĀhr⨳⨶k;椤Ā;oᏲᏰot;쀀≐̸uiöୣĀei⩊⩎ar;椨í஘istĀ;s஠டr;쀀𝔫ȀEest௅⩦⩹⩼ƀ;qs஼⩭௡ƀ;qs஼௅⩴lanô௢ií௪Ā;rஶ⪁»ஷƀAap⪊⪍⪑rò⥱rr;憮ar;櫲ƀ;svྍ⪜ྌĀ;d⪡⪢拼;拺cy;䑚΀AEadest⪷⪺⪾⫂⫅⫶⫹rò⥦;쀀≦̸rr;憚r;急Ȁ;fqs఻⫎⫣⫯tĀar⫔⫙rro÷⫁ightarro÷⪐ƀ;qs఻⪺⫪lanôౕĀ;sౕ⫴»శiíౝĀ;rవ⫾iĀ;eచథiäඐĀpt⬌⬑f;쀀𝕟膀¬;in⬙⬚⬶䂬nȀ;Edvஉ⬤⬨⬮;쀀⋹̸ot;쀀⋵̸ǡஉ⬳⬵;拷;拶iĀ;vಸ⬼ǡಸ⭁⭃;拾;拽ƀaor⭋⭣⭩rȀ;ast୻⭕⭚⭟lleì୻l;쀀⫽⃥;쀀∂̸lint;樔ƀ;ceಒ⭰⭳uåಥĀ;cಘ⭸Ā;eಒ⭽ñಘȀAait⮈⮋⮝⮧rò⦈rrƀ;cw⮔⮕⮙憛;쀀⤳̸;쀀↝̸ghtarrow»⮕riĀ;eೋೖ΀chimpqu⮽⯍⯙⬄୸⯤⯯Ȁ;cerല⯆ഷ⯉uå൅;쀀𝓃ortɭ⬅\0\0⯖ará⭖mĀ;e൮⯟Ā;q൴൳suĀbp⯫⯭å೸åഋƀbcp⯶ⰑⰙȀ;Ees⯿ⰀഢⰄ抄;쀀⫅̸etĀ;eഛⰋqĀ;qണⰀcĀ;eലⰗñസȀ;EesⰢⰣൟⰧ抅;쀀⫆̸etĀ;e൘ⰮqĀ;qൠⰣȀgilrⰽⰿⱅⱇìௗlde耻ñ䃱çృiangleĀlrⱒⱜeftĀ;eచⱚñదightĀ;eೋⱥñ೗Ā;mⱬⱭ䎽ƀ;esⱴⱵⱹ䀣ro;愖p;怇ҀDHadgilrsⲏⲔⲙⲞⲣⲰⲶⳓⳣash;抭arr;椄p;쀀≍⃒ash;抬ĀetⲨⲬ;쀀≥⃒;쀀>⃒nfin;槞ƀAetⲽⳁⳅrr;椂;쀀≤⃒Ā;rⳊⳍ쀀<⃒ie;쀀⊴⃒ĀAtⳘⳜrr;椃rie;쀀⊵⃒im;쀀∼⃒ƀAan⳰⳴ⴂrr;懖rĀhr⳺⳽k;椣Ā;oᏧᏥear;椧ቓ᪕\0\0\0\0\0\0\0\0\0\0\0\0\0ⴭ\0ⴸⵈⵠⵥ⵲ⶄᬇ\0\0ⶍⶫ\0ⷈⷎ\0ⷜ⸙⸫⸾⹃Ācsⴱ᪗ute耻ó䃳ĀiyⴼⵅrĀ;c᪞ⵂ耻ô䃴;䐾ʀabios᪠ⵒⵗLjⵚlac;䅑v;樸old;榼lig;䅓Ācr⵩⵭ir;榿;쀀𝔬ͯ⵹\0\0⵼\0ⶂn;䋛ave耻ò䃲;槁Ābmⶈ෴ar;榵Ȁacitⶕ⶘ⶥⶨrò᪀Āir⶝ⶠr;榾oss;榻nå๒;槀ƀaeiⶱⶵⶹcr;䅍ga;䏉ƀcdnⷀⷅǍron;䎿;榶pf;쀀𝕠ƀaelⷔ⷗ǒr;榷rp;榹΀;adiosvⷪⷫⷮ⸈⸍⸐⸖戨rò᪆Ȁ;efmⷷⷸ⸂⸅橝rĀ;oⷾⷿ愴f»ⷿ耻ª䂪耻º䂺gof;抶r;橖lope;橗;橛ƀclo⸟⸡⸧ò⸁ash耻ø䃸l;折iŬⸯ⸴de耻õ䃵esĀ;aǛ⸺s;樶ml耻ö䃶bar;挽ૡ⹞\0⹽\0⺀⺝\0⺢⺹\0\0⻋ຜ\0⼓\0\0⼫⾼\0⿈rȀ;astЃ⹧⹲຅脀¶;l⹭⹮䂶leìЃɩ⹸\0\0⹻m;櫳;櫽y;䐿rʀcimpt⺋⺏⺓ᡥ⺗nt;䀥od;䀮il;怰enk;怱r;쀀𝔭ƀimo⺨⺰⺴Ā;v⺭⺮䏆;䏕maô੶ne;明ƀ;tv⺿⻀⻈䏀chfork»´;䏖Āau⻏⻟nĀck⻕⻝kĀ;h⇴⻛;愎ö⇴sҀ;abcdemst⻳⻴ᤈ⻹⻽⼄⼆⼊⼎䀫cir;樣ir;樢Āouᵀ⼂;樥;橲n肻±ຝim;樦wo;樧ƀipu⼙⼠⼥ntint;樕f;쀀𝕡nd耻£䂣Ԁ;Eaceinosu່⼿⽁⽄⽇⾁⾉⾒⽾⾶;檳p;檷uå໙Ā;c໎⽌̀;acens່⽙⽟⽦⽨⽾pproø⽃urlyeñ໙ñ໎ƀaes⽯⽶⽺pprox;檹qq;檵im;拨iíໟmeĀ;s⾈ຮ怲ƀEas⽸⾐⽺ð⽵ƀdfp໬⾙⾯ƀals⾠⾥⾪lar;挮ine;挒urf;挓Ā;t໻⾴ï໻rel;抰Āci⿀⿅r;쀀𝓅;䏈ncsp;怈̀fiopsu⿚⋢⿟⿥⿫⿱r;쀀𝔮pf;쀀𝕢rime;恗cr;쀀𝓆ƀaeo⿸〉〓tĀei⿾々rnionóڰnt;樖stĀ;e【】䀿ñἙô༔઀ABHabcdefhilmnoprstux぀けさすムㄎㄫㅇㅢㅲㆎ㈆㈕㈤㈩㉘㉮㉲㊐㊰㊷ƀartぇおがròႳòϝail;検aròᱥar;楤΀cdenqrtとふへみわゔヌĀeuねぱ;쀀∽̱te;䅕iãᅮmptyv;榳gȀ;del࿑らるろ;榒;榥å࿑uo耻»䂻rր;abcfhlpstw࿜ガクシスゼゾダッデナp;極Ā;f࿠ゴs;椠;椳s;椞ë≝ð✮l;楅im;楴l;憣;憝Āaiパフil;椚oĀ;nホボ戶aló༞ƀabrョリヮrò៥rk;杳ĀakンヽcĀekヹ・;䁽;䁝Āes㄂㄄;榌lĀduㄊㄌ;榎;榐Ȁaeuyㄗㄜㄧㄩron;䅙Ādiㄡㄥil;䅗ì࿲âヺ;䑀Ȁclqsㄴㄷㄽㅄa;椷dhar;楩uoĀ;rȎȍh;憳ƀacgㅎㅟངlȀ;ipsླྀㅘㅛႜnåႻarôྩt;断ƀilrㅩဣㅮsht;楽;쀀𝔯ĀaoㅷㆆrĀduㅽㅿ»ѻĀ;l႑ㆄ;楬Ā;vㆋㆌ䏁;䏱ƀgns㆕ㇹㇼht̀ahlrstㆤㆰ㇂㇘㇤㇮rrowĀ;t࿜ㆭaéトarpoonĀduㆻㆿowîㅾp»႒eftĀah㇊㇐rrowó࿪arpoonóՑightarrows;應quigarro÷ニhreetimes;拌g;䋚ingdotseñἲƀahm㈍㈐㈓rò࿪aòՑ;怏oustĀ;a㈞㈟掱che»㈟mid;櫮Ȁabpt㈲㈽㉀㉒Ānr㈷㈺g;柭r;懾rëဃƀafl㉇㉊㉎r;榆;쀀𝕣us;樮imes;樵Āap㉝㉧rĀ;g㉣㉤䀩t;榔olint;樒arò㇣Ȁachq㉻㊀Ⴜ㊅quo;怺r;쀀𝓇Ābu・㊊oĀ;rȔȓƀhir㊗㊛㊠reåㇸmes;拊iȀ;efl㊪ၙᠡ㊫方tri;槎luhar;楨;愞ൡ㋕㋛㋟㌬㌸㍱\0㍺㎤\0\0㏬㏰\0㐨㑈㑚㒭㒱㓊㓱\0㘖\0\0㘳cute;䅛quï➺Ԁ;Eaceinpsyᇭ㋳㋵㋿㌂㌋㌏㌟㌦㌩;檴ǰ㋺\0㋼;檸on;䅡uåᇾĀ;dᇳ㌇il;䅟rc;䅝ƀEas㌖㌘㌛;檶p;檺im;择olint;樓iíሄ;䑁otƀ;be㌴ᵇ㌵担;橦΀Aacmstx㍆㍊㍗㍛㍞㍣㍭rr;懘rĀhr㍐㍒ë∨Ā;oਸ਼਴t耻§䂧i;䀻war;椩mĀin㍩ðnuóñt;朶rĀ;o㍶⁕쀀𝔰Ȁacoy㎂㎆㎑㎠rp;景Āhy㎋㎏cy;䑉;䑈rtɭ㎙\0\0㎜iäᑤaraì⹯耻­䂭Āgm㎨㎴maƀ;fv㎱㎲㎲䏃;䏂Ѐ;deglnprካ㏅㏉㏎㏖㏞㏡㏦ot;橪Ā;q኱ኰĀ;E㏓㏔檞;檠Ā;E㏛㏜檝;檟e;扆lus;樤arr;楲aròᄽȀaeit㏸㐈㐏㐗Āls㏽㐄lsetmé㍪hp;樳parsl;槤Ādlᑣ㐔e;挣Ā;e㐜㐝檪Ā;s㐢㐣檬;쀀⪬︀ƀflp㐮㐳㑂tcy;䑌Ā;b㐸㐹䀯Ā;a㐾㐿槄r;挿f;쀀𝕤aĀdr㑍ЂesĀ;u㑔㑕晠it»㑕ƀcsu㑠㑹㒟Āau㑥㑯pĀ;sᆈ㑫;쀀⊓︀pĀ;sᆴ㑵;쀀⊔︀uĀbp㑿㒏ƀ;esᆗᆜ㒆etĀ;eᆗ㒍ñᆝƀ;esᆨᆭ㒖etĀ;eᆨ㒝ñᆮƀ;afᅻ㒦ְrť㒫ֱ»ᅼaròᅈȀcemt㒹㒾㓂㓅r;쀀𝓈tmîñiì㐕aræᆾĀar㓎㓕rĀ;f㓔ឿ昆Āan㓚㓭ightĀep㓣㓪psiloîỠhé⺯s»⡒ʀbcmnp㓻㕞ሉ㖋㖎Ҁ;Edemnprs㔎㔏㔑㔕㔞㔣㔬㔱㔶抂;櫅ot;檽Ā;dᇚ㔚ot;櫃ult;櫁ĀEe㔨㔪;櫋;把lus;檿arr;楹ƀeiu㔽㕒㕕tƀ;en㔎㕅㕋qĀ;qᇚ㔏eqĀ;q㔫㔨m;櫇Ābp㕚㕜;櫕;櫓c̀;acensᇭ㕬㕲㕹㕻㌦pproø㋺urlyeñᇾñᇳƀaes㖂㖈㌛pproø㌚qñ㌗g;晪ڀ123;Edehlmnps㖩㖬㖯ሜ㖲㖴㗀㗉㗕㗚㗟㗨㗭耻¹䂹耻²䂲耻³䂳;櫆Āos㖹㖼t;檾ub;櫘Ā;dሢ㗅ot;櫄sĀou㗏㗒l;柉b;櫗arr;楻ult;櫂ĀEe㗤㗦;櫌;抋lus;櫀ƀeiu㗴㘉㘌tƀ;enሜ㗼㘂qĀ;qሢ㖲eqĀ;q㗧㗤m;櫈Ābp㘑㘓;櫔;櫖ƀAan㘜㘠㘭rr;懙rĀhr㘦㘨ë∮Ā;oਫ਩war;椪lig耻ß䃟௡㙑㙝㙠ዎ㙳㙹\0㙾㛂\0\0\0\0\0㛛㜃\0㜉㝬\0\0\0㞇ɲ㙖\0\0㙛get;挖;䏄rë๟ƀaey㙦㙫㙰ron;䅥dil;䅣;䑂lrec;挕r;쀀𝔱Ȁeiko㚆㚝㚵㚼Dz㚋\0㚑eĀ4fኄኁaƀ;sv㚘㚙㚛䎸ym;䏑Ācn㚢㚲kĀas㚨㚮pproø዁im»ኬsðኞĀas㚺㚮ð዁rn耻þ䃾Ǭ̟㛆⋧es膀×;bd㛏㛐㛘䃗Ā;aᤏ㛕r;樱;樰ƀeps㛡㛣㜀á⩍Ȁ;bcf҆㛬㛰㛴ot;挶ir;櫱Ā;o㛹㛼쀀𝕥rk;櫚á㍢rime;怴ƀaip㜏㜒㝤dåቈ΀adempst㜡㝍㝀㝑㝗㝜㝟ngleʀ;dlqr㜰㜱㜶㝀㝂斵own»ᶻeftĀ;e⠀㜾ñम;扜ightĀ;e㊪㝋ñၚot;旬inus;樺lus;樹b;槍ime;樻ezium;揢ƀcht㝲㝽㞁Āry㝷㝻;쀀𝓉;䑆cy;䑛rok;䅧Āio㞋㞎xô᝷headĀlr㞗㞠eftarro÷ࡏightarrow»ཝऀAHabcdfghlmoprstuw㟐㟓㟗㟤㟰㟼㠎㠜㠣㠴㡑㡝㡫㢩㣌㣒㣪㣶ròϭar;楣Ācr㟜㟢ute耻ú䃺òᅐrǣ㟪\0㟭y;䑞ve;䅭Āiy㟵㟺rc耻û䃻;䑃ƀabh㠃㠆㠋ròᎭlac;䅱aòᏃĀir㠓㠘sht;楾;쀀𝔲rave耻ù䃹š㠧㠱rĀlr㠬㠮»ॗ»ႃlk;斀Āct㠹㡍ɯ㠿\0\0㡊rnĀ;e㡅㡆挜r»㡆op;挏ri;旸Āal㡖㡚cr;䅫肻¨͉Āgp㡢㡦on;䅳f;쀀𝕦̀adhlsuᅋ㡸㡽፲㢑㢠ownáᎳarpoonĀlr㢈㢌efô㠭ighô㠯iƀ;hl㢙㢚㢜䏅»ᏺon»㢚parrows;懈ƀcit㢰㣄㣈ɯ㢶\0\0㣁rnĀ;e㢼㢽挝r»㢽op;挎ng;䅯ri;旹cr;쀀𝓊ƀdir㣙㣝㣢ot;拰lde;䅩iĀ;f㜰㣨»᠓Āam㣯㣲rò㢨l耻ü䃼angle;榧ހABDacdeflnoprsz㤜㤟㤩㤭㦵㦸㦽㧟㧤㧨㧳㧹㧽㨁㨠ròϷarĀ;v㤦㤧櫨;櫩asèϡĀnr㤲㤷grt;榜΀eknprst㓣㥆㥋㥒㥝㥤㦖appá␕othinçẖƀhir㓫⻈㥙opô⾵Ā;hᎷ㥢ïㆍĀiu㥩㥭gmá㎳Ābp㥲㦄setneqĀ;q㥽㦀쀀⊊︀;쀀⫋︀setneqĀ;q㦏㦒쀀⊋︀;쀀⫌︀Āhr㦛㦟etá㚜iangleĀlr㦪㦯eft»थight»ၑy;䐲ash»ံƀelr㧄㧒㧗ƀ;beⷪ㧋㧏ar;抻q;扚lip;拮Ābt㧜ᑨaòᑩr;쀀𝔳tré㦮suĀbp㧯㧱»ജ»൙pf;쀀𝕧roð໻tré㦴Ācu㨆㨋r;쀀𝓋Ābp㨐㨘nĀEe㦀㨖»㥾nĀEe㦒㨞»㦐igzag;榚΀cefoprs㨶㨻㩖㩛㩔㩡㩪irc;䅵Ādi㩀㩑Ābg㩅㩉ar;機eĀ;qᗺ㩏;扙erp;愘r;쀀𝔴pf;쀀𝕨Ā;eᑹ㩦atèᑹcr;쀀𝓌ૣណ㪇\0㪋\0㪐㪛\0\0㪝㪨㪫㪯\0\0㫃㫎\0㫘ៜ៟tré៑r;쀀𝔵ĀAa㪔㪗ròσrò৶;䎾ĀAa㪡㪤ròθrò৫að✓is;拻ƀdptឤ㪵㪾Āfl㪺ឩ;쀀𝕩imåឲĀAa㫇㫊ròώròਁĀcq㫒ីr;쀀𝓍Āpt៖㫜ré។Ѐacefiosu㫰㫽㬈㬌㬑㬕㬛㬡cĀuy㫶㫻te耻ý䃽;䑏Āiy㬂㬆rc;䅷;䑋n耻¥䂥r;쀀𝔶cy;䑗pf;쀀𝕪cr;쀀𝓎Ācm㬦㬩y;䑎l耻ÿ䃿Ԁacdefhiosw㭂㭈㭔㭘㭤㭩㭭㭴㭺㮀cute;䅺Āay㭍㭒ron;䅾;䐷ot;䅼Āet㭝㭡træᕟa;䎶r;쀀𝔷cy;䐶grarr;懝pf;쀀𝕫cr;쀀𝓏Ājn㮅㮇;怍j;怌'.split("").map(e=>e.charCodeAt(0))),pp=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]);function gp(e){var t;return e>=55296&&e<=57343||e>1114111?65533:(t=pp.get(e))!==null&&t!==void 0?t:e}var qe;(function(e){e[e.NUM=35]="NUM",e[e.SEMI=59]="SEMI",e[e.EQUALS=61]="EQUALS",e[e.ZERO=48]="ZERO",e[e.NINE=57]="NINE",e[e.LOWER_A=97]="LOWER_A",e[e.LOWER_F=102]="LOWER_F",e[e.LOWER_X=120]="LOWER_X",e[e.LOWER_Z=122]="LOWER_Z",e[e.UPPER_A=65]="UPPER_A",e[e.UPPER_F=70]="UPPER_F",e[e.UPPER_Z=90]="UPPER_Z"})(qe||(qe={}));const bp=32;var Kt;(function(e){e[e.VALUE_LENGTH=49152]="VALUE_LENGTH",e[e.BRANCH_LENGTH=16256]="BRANCH_LENGTH",e[e.JUMP_TABLE=127]="JUMP_TABLE"})(Kt||(Kt={}));function $a(e){return e>=qe.ZERO&&e<=qe.NINE}function Ep(e){return e>=qe.UPPER_A&&e<=qe.UPPER_F||e>=qe.LOWER_A&&e<=qe.LOWER_F}function Tp(e){return e>=qe.UPPER_A&&e<=qe.UPPER_Z||e>=qe.LOWER_A&&e<=qe.LOWER_Z||$a(e)}function xp(e){return e===qe.EQUALS||Tp(e)}var Ue;(function(e){e[e.EntityStart=0]="EntityStart",e[e.NumericStart=1]="NumericStart",e[e.NumericDecimal=2]="NumericDecimal",e[e.NumericHex=3]="NumericHex",e[e.NamedEntity=4]="NamedEntity"})(Ue||(Ue={}));var Ft;(function(e){e[e.Legacy=0]="Legacy",e[e.Strict=1]="Strict",e[e.Attribute=2]="Attribute"})(Ft||(Ft={}));class yp{constructor(t,r,n){this.decodeTree=t,this.emitCodePoint=r,this.errors=n,this.state=Ue.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=Ft.Strict}startEntity(t){this.decodeMode=t,this.state=Ue.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1}write(t,r){switch(this.state){case Ue.EntityStart:return t.charCodeAt(r)===qe.NUM?(this.state=Ue.NumericStart,this.consumed+=1,this.stateNumericStart(t,r+1)):(this.state=Ue.NamedEntity,this.stateNamedEntity(t,r));case Ue.NumericStart:return this.stateNumericStart(t,r);case Ue.NumericDecimal:return this.stateNumericDecimal(t,r);case Ue.NumericHex:return this.stateNumericHex(t,r);case Ue.NamedEntity:return this.stateNamedEntity(t,r)}}stateNumericStart(t,r){return r>=t.length?-1:(t.charCodeAt(r)|bp)===qe.LOWER_X?(this.state=Ue.NumericHex,this.consumed+=1,this.stateNumericHex(t,r+1)):(this.state=Ue.NumericDecimal,this.stateNumericDecimal(t,r))}addToNumericResult(t,r,n,a){if(r!==n){const i=n-r;this.result=this.result*Math.pow(a,i)+Number.parseInt(t.substr(r,i),a),this.consumed+=i}}stateNumericHex(t,r){const n=r;for(;r>14;for(;r>14,i!==0){if(u===qe.SEMI)return this.emitNamedEntityData(this.treeIndex,i,this.consumed+this.excess);this.decodeMode!==Ft.Strict&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}}return-1}emitNotTerminatedNamedEntity(){var t;const{result:r,decodeTree:n}=this,a=(n[r]&Kt.VALUE_LENGTH)>>14;return this.emitNamedEntityData(r,a,this.consumed),(t=this.errors)===null||t===void 0||t.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(t,r,n){const{decodeTree:a}=this;return this.emitCodePoint(r===1?a[t]&~Kt.VALUE_LENGTH:a[t+1],n),r===3&&this.emitCodePoint(a[t+2],n),n}end(){var t;switch(this.state){case Ue.NamedEntity:return this.result!==0&&(this.decodeMode!==Ft.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case Ue.NumericDecimal:return this.emitNumericEntity(0,2);case Ue.NumericHex:return this.emitNumericEntity(0,3);case Ue.NumericStart:return(t=this.errors)===null||t===void 0||t.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case Ue.EntityStart:return 0}}}function vp(e,t,r,n){const a=(t&Kt.BRANCH_LENGTH)>>7,i=t&Kt.JUMP_TABLE;if(a===0)return i!==0&&n===i?r:-1;if(i){const l=n-i;return l<0||l>=a?-1:e[r+l]-1}let u=r,s=u+a-1;for(;u<=s;){const l=u+s>>>1,c=e[l];if(cn)s=l-1;else return e[l+a]}return-1}var H;(function(e){e.HTML="http://www.w3.org/1999/xhtml",e.MATHML="http://www.w3.org/1998/Math/MathML",e.SVG="http://www.w3.org/2000/svg",e.XLINK="http://www.w3.org/1999/xlink",e.XML="http://www.w3.org/XML/1998/namespace",e.XMLNS="http://www.w3.org/2000/xmlns/"})(H||(H={}));var mr;(function(e){e.TYPE="type",e.ACTION="action",e.ENCODING="encoding",e.PROMPT="prompt",e.NAME="name",e.COLOR="color",e.FACE="face",e.SIZE="size"})(mr||(mr={}));var pt;(function(e){e.NO_QUIRKS="no-quirks",e.QUIRKS="quirks",e.LIMITED_QUIRKS="limited-quirks"})(pt||(pt={}));var O;(function(e){e.A="a",e.ADDRESS="address",e.ANNOTATION_XML="annotation-xml",e.APPLET="applet",e.AREA="area",e.ARTICLE="article",e.ASIDE="aside",e.B="b",e.BASE="base",e.BASEFONT="basefont",e.BGSOUND="bgsound",e.BIG="big",e.BLOCKQUOTE="blockquote",e.BODY="body",e.BR="br",e.BUTTON="button",e.CAPTION="caption",e.CENTER="center",e.CODE="code",e.COL="col",e.COLGROUP="colgroup",e.DD="dd",e.DESC="desc",e.DETAILS="details",e.DIALOG="dialog",e.DIR="dir",e.DIV="div",e.DL="dl",e.DT="dt",e.EM="em",e.EMBED="embed",e.FIELDSET="fieldset",e.FIGCAPTION="figcaption",e.FIGURE="figure",e.FONT="font",e.FOOTER="footer",e.FOREIGN_OBJECT="foreignObject",e.FORM="form",e.FRAME="frame",e.FRAMESET="frameset",e.H1="h1",e.H2="h2",e.H3="h3",e.H4="h4",e.H5="h5",e.H6="h6",e.HEAD="head",e.HEADER="header",e.HGROUP="hgroup",e.HR="hr",e.HTML="html",e.I="i",e.IMG="img",e.IMAGE="image",e.INPUT="input",e.IFRAME="iframe",e.KEYGEN="keygen",e.LABEL="label",e.LI="li",e.LINK="link",e.LISTING="listing",e.MAIN="main",e.MALIGNMARK="malignmark",e.MARQUEE="marquee",e.MATH="math",e.MENU="menu",e.META="meta",e.MGLYPH="mglyph",e.MI="mi",e.MO="mo",e.MN="mn",e.MS="ms",e.MTEXT="mtext",e.NAV="nav",e.NOBR="nobr",e.NOFRAMES="noframes",e.NOEMBED="noembed",e.NOSCRIPT="noscript",e.OBJECT="object",e.OL="ol",e.OPTGROUP="optgroup",e.OPTION="option",e.P="p",e.PARAM="param",e.PLAINTEXT="plaintext",e.PRE="pre",e.RB="rb",e.RP="rp",e.RT="rt",e.RTC="rtc",e.RUBY="ruby",e.S="s",e.SCRIPT="script",e.SEARCH="search",e.SECTION="section",e.SELECT="select",e.SOURCE="source",e.SMALL="small",e.SPAN="span",e.STRIKE="strike",e.STRONG="strong",e.STYLE="style",e.SUB="sub",e.SUMMARY="summary",e.SUP="sup",e.TABLE="table",e.TBODY="tbody",e.TEMPLATE="template",e.TEXTAREA="textarea",e.TFOOT="tfoot",e.TD="td",e.TH="th",e.THEAD="thead",e.TITLE="title",e.TR="tr",e.TRACK="track",e.TT="tt",e.U="u",e.UL="ul",e.SVG="svg",e.VAR="var",e.WBR="wbr",e.XMP="xmp"})(O||(O={}));var o;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.A=1]="A",e[e.ADDRESS=2]="ADDRESS",e[e.ANNOTATION_XML=3]="ANNOTATION_XML",e[e.APPLET=4]="APPLET",e[e.AREA=5]="AREA",e[e.ARTICLE=6]="ARTICLE",e[e.ASIDE=7]="ASIDE",e[e.B=8]="B",e[e.BASE=9]="BASE",e[e.BASEFONT=10]="BASEFONT",e[e.BGSOUND=11]="BGSOUND",e[e.BIG=12]="BIG",e[e.BLOCKQUOTE=13]="BLOCKQUOTE",e[e.BODY=14]="BODY",e[e.BR=15]="BR",e[e.BUTTON=16]="BUTTON",e[e.CAPTION=17]="CAPTION",e[e.CENTER=18]="CENTER",e[e.CODE=19]="CODE",e[e.COL=20]="COL",e[e.COLGROUP=21]="COLGROUP",e[e.DD=22]="DD",e[e.DESC=23]="DESC",e[e.DETAILS=24]="DETAILS",e[e.DIALOG=25]="DIALOG",e[e.DIR=26]="DIR",e[e.DIV=27]="DIV",e[e.DL=28]="DL",e[e.DT=29]="DT",e[e.EM=30]="EM",e[e.EMBED=31]="EMBED",e[e.FIELDSET=32]="FIELDSET",e[e.FIGCAPTION=33]="FIGCAPTION",e[e.FIGURE=34]="FIGURE",e[e.FONT=35]="FONT",e[e.FOOTER=36]="FOOTER",e[e.FOREIGN_OBJECT=37]="FOREIGN_OBJECT",e[e.FORM=38]="FORM",e[e.FRAME=39]="FRAME",e[e.FRAMESET=40]="FRAMESET",e[e.H1=41]="H1",e[e.H2=42]="H2",e[e.H3=43]="H3",e[e.H4=44]="H4",e[e.H5=45]="H5",e[e.H6=46]="H6",e[e.HEAD=47]="HEAD",e[e.HEADER=48]="HEADER",e[e.HGROUP=49]="HGROUP",e[e.HR=50]="HR",e[e.HTML=51]="HTML",e[e.I=52]="I",e[e.IMG=53]="IMG",e[e.IMAGE=54]="IMAGE",e[e.INPUT=55]="INPUT",e[e.IFRAME=56]="IFRAME",e[e.KEYGEN=57]="KEYGEN",e[e.LABEL=58]="LABEL",e[e.LI=59]="LI",e[e.LINK=60]="LINK",e[e.LISTING=61]="LISTING",e[e.MAIN=62]="MAIN",e[e.MALIGNMARK=63]="MALIGNMARK",e[e.MARQUEE=64]="MARQUEE",e[e.MATH=65]="MATH",e[e.MENU=66]="MENU",e[e.META=67]="META",e[e.MGLYPH=68]="MGLYPH",e[e.MI=69]="MI",e[e.MO=70]="MO",e[e.MN=71]="MN",e[e.MS=72]="MS",e[e.MTEXT=73]="MTEXT",e[e.NAV=74]="NAV",e[e.NOBR=75]="NOBR",e[e.NOFRAMES=76]="NOFRAMES",e[e.NOEMBED=77]="NOEMBED",e[e.NOSCRIPT=78]="NOSCRIPT",e[e.OBJECT=79]="OBJECT",e[e.OL=80]="OL",e[e.OPTGROUP=81]="OPTGROUP",e[e.OPTION=82]="OPTION",e[e.P=83]="P",e[e.PARAM=84]="PARAM",e[e.PLAINTEXT=85]="PLAINTEXT",e[e.PRE=86]="PRE",e[e.RB=87]="RB",e[e.RP=88]="RP",e[e.RT=89]="RT",e[e.RTC=90]="RTC",e[e.RUBY=91]="RUBY",e[e.S=92]="S",e[e.SCRIPT=93]="SCRIPT",e[e.SEARCH=94]="SEARCH",e[e.SECTION=95]="SECTION",e[e.SELECT=96]="SELECT",e[e.SOURCE=97]="SOURCE",e[e.SMALL=98]="SMALL",e[e.SPAN=99]="SPAN",e[e.STRIKE=100]="STRIKE",e[e.STRONG=101]="STRONG",e[e.STYLE=102]="STYLE",e[e.SUB=103]="SUB",e[e.SUMMARY=104]="SUMMARY",e[e.SUP=105]="SUP",e[e.TABLE=106]="TABLE",e[e.TBODY=107]="TBODY",e[e.TEMPLATE=108]="TEMPLATE",e[e.TEXTAREA=109]="TEXTAREA",e[e.TFOOT=110]="TFOOT",e[e.TD=111]="TD",e[e.TH=112]="TH",e[e.THEAD=113]="THEAD",e[e.TITLE=114]="TITLE",e[e.TR=115]="TR",e[e.TRACK=116]="TRACK",e[e.TT=117]="TT",e[e.U=118]="U",e[e.UL=119]="UL",e[e.SVG=120]="SVG",e[e.VAR=121]="VAR",e[e.WBR=122]="WBR",e[e.XMP=123]="XMP"})(o||(o={}));const Ap=new Map([[O.A,o.A],[O.ADDRESS,o.ADDRESS],[O.ANNOTATION_XML,o.ANNOTATION_XML],[O.APPLET,o.APPLET],[O.AREA,o.AREA],[O.ARTICLE,o.ARTICLE],[O.ASIDE,o.ASIDE],[O.B,o.B],[O.BASE,o.BASE],[O.BASEFONT,o.BASEFONT],[O.BGSOUND,o.BGSOUND],[O.BIG,o.BIG],[O.BLOCKQUOTE,o.BLOCKQUOTE],[O.BODY,o.BODY],[O.BR,o.BR],[O.BUTTON,o.BUTTON],[O.CAPTION,o.CAPTION],[O.CENTER,o.CENTER],[O.CODE,o.CODE],[O.COL,o.COL],[O.COLGROUP,o.COLGROUP],[O.DD,o.DD],[O.DESC,o.DESC],[O.DETAILS,o.DETAILS],[O.DIALOG,o.DIALOG],[O.DIR,o.DIR],[O.DIV,o.DIV],[O.DL,o.DL],[O.DT,o.DT],[O.EM,o.EM],[O.EMBED,o.EMBED],[O.FIELDSET,o.FIELDSET],[O.FIGCAPTION,o.FIGCAPTION],[O.FIGURE,o.FIGURE],[O.FONT,o.FONT],[O.FOOTER,o.FOOTER],[O.FOREIGN_OBJECT,o.FOREIGN_OBJECT],[O.FORM,o.FORM],[O.FRAME,o.FRAME],[O.FRAMESET,o.FRAMESET],[O.H1,o.H1],[O.H2,o.H2],[O.H3,o.H3],[O.H4,o.H4],[O.H5,o.H5],[O.H6,o.H6],[O.HEAD,o.HEAD],[O.HEADER,o.HEADER],[O.HGROUP,o.HGROUP],[O.HR,o.HR],[O.HTML,o.HTML],[O.I,o.I],[O.IMG,o.IMG],[O.IMAGE,o.IMAGE],[O.INPUT,o.INPUT],[O.IFRAME,o.IFRAME],[O.KEYGEN,o.KEYGEN],[O.LABEL,o.LABEL],[O.LI,o.LI],[O.LINK,o.LINK],[O.LISTING,o.LISTING],[O.MAIN,o.MAIN],[O.MALIGNMARK,o.MALIGNMARK],[O.MARQUEE,o.MARQUEE],[O.MATH,o.MATH],[O.MENU,o.MENU],[O.META,o.META],[O.MGLYPH,o.MGLYPH],[O.MI,o.MI],[O.MO,o.MO],[O.MN,o.MN],[O.MS,o.MS],[O.MTEXT,o.MTEXT],[O.NAV,o.NAV],[O.NOBR,o.NOBR],[O.NOFRAMES,o.NOFRAMES],[O.NOEMBED,o.NOEMBED],[O.NOSCRIPT,o.NOSCRIPT],[O.OBJECT,o.OBJECT],[O.OL,o.OL],[O.OPTGROUP,o.OPTGROUP],[O.OPTION,o.OPTION],[O.P,o.P],[O.PARAM,o.PARAM],[O.PLAINTEXT,o.PLAINTEXT],[O.PRE,o.PRE],[O.RB,o.RB],[O.RP,o.RP],[O.RT,o.RT],[O.RTC,o.RTC],[O.RUBY,o.RUBY],[O.S,o.S],[O.SCRIPT,o.SCRIPT],[O.SEARCH,o.SEARCH],[O.SECTION,o.SECTION],[O.SELECT,o.SELECT],[O.SOURCE,o.SOURCE],[O.SMALL,o.SMALL],[O.SPAN,o.SPAN],[O.STRIKE,o.STRIKE],[O.STRONG,o.STRONG],[O.STYLE,o.STYLE],[O.SUB,o.SUB],[O.SUMMARY,o.SUMMARY],[O.SUP,o.SUP],[O.TABLE,o.TABLE],[O.TBODY,o.TBODY],[O.TEMPLATE,o.TEMPLATE],[O.TEXTAREA,o.TEXTAREA],[O.TFOOT,o.TFOOT],[O.TD,o.TD],[O.TH,o.TH],[O.THEAD,o.THEAD],[O.TITLE,o.TITLE],[O.TR,o.TR],[O.TRACK,o.TRACK],[O.TT,o.TT],[O.U,o.U],[O.UL,o.UL],[O.SVG,o.SVG],[O.VAR,o.VAR],[O.WBR,o.WBR],[O.XMP,o.XMP]]);function qr(e){var t;return(t=Ap.get(e))!==null&&t!==void 0?t:o.UNKNOWN}const U=o,kp={[H.HTML]:new Set([U.ADDRESS,U.APPLET,U.AREA,U.ARTICLE,U.ASIDE,U.BASE,U.BASEFONT,U.BGSOUND,U.BLOCKQUOTE,U.BODY,U.BR,U.BUTTON,U.CAPTION,U.CENTER,U.COL,U.COLGROUP,U.DD,U.DETAILS,U.DIR,U.DIV,U.DL,U.DT,U.EMBED,U.FIELDSET,U.FIGCAPTION,U.FIGURE,U.FOOTER,U.FORM,U.FRAME,U.FRAMESET,U.H1,U.H2,U.H3,U.H4,U.H5,U.H6,U.HEAD,U.HEADER,U.HGROUP,U.HR,U.HTML,U.IFRAME,U.IMG,U.INPUT,U.LI,U.LINK,U.LISTING,U.MAIN,U.MARQUEE,U.MENU,U.META,U.NAV,U.NOEMBED,U.NOFRAMES,U.NOSCRIPT,U.OBJECT,U.OL,U.P,U.PARAM,U.PLAINTEXT,U.PRE,U.SCRIPT,U.SECTION,U.SELECT,U.SOURCE,U.STYLE,U.SUMMARY,U.TABLE,U.TBODY,U.TD,U.TEMPLATE,U.TEXTAREA,U.TFOOT,U.TH,U.THEAD,U.TITLE,U.TR,U.TRACK,U.UL,U.WBR,U.XMP]),[H.MATHML]:new Set([U.MI,U.MO,U.MN,U.MS,U.MTEXT,U.ANNOTATION_XML]),[H.SVG]:new Set([U.TITLE,U.FOREIGN_OBJECT,U.DESC]),[H.XLINK]:new Set,[H.XML]:new Set,[H.XMLNS]:new Set},Qa=new Set([U.H1,U.H2,U.H3,U.H4,U.H5,U.H6]);O.STYLE,O.SCRIPT,O.XMP,O.IFRAME,O.NOEMBED,O.NOFRAMES,O.PLAINTEXT;var y;(function(e){e[e.DATA=0]="DATA",e[e.RCDATA=1]="RCDATA",e[e.RAWTEXT=2]="RAWTEXT",e[e.SCRIPT_DATA=3]="SCRIPT_DATA",e[e.PLAINTEXT=4]="PLAINTEXT",e[e.TAG_OPEN=5]="TAG_OPEN",e[e.END_TAG_OPEN=6]="END_TAG_OPEN",e[e.TAG_NAME=7]="TAG_NAME",e[e.RCDATA_LESS_THAN_SIGN=8]="RCDATA_LESS_THAN_SIGN",e[e.RCDATA_END_TAG_OPEN=9]="RCDATA_END_TAG_OPEN",e[e.RCDATA_END_TAG_NAME=10]="RCDATA_END_TAG_NAME",e[e.RAWTEXT_LESS_THAN_SIGN=11]="RAWTEXT_LESS_THAN_SIGN",e[e.RAWTEXT_END_TAG_OPEN=12]="RAWTEXT_END_TAG_OPEN",e[e.RAWTEXT_END_TAG_NAME=13]="RAWTEXT_END_TAG_NAME",e[e.SCRIPT_DATA_LESS_THAN_SIGN=14]="SCRIPT_DATA_LESS_THAN_SIGN",e[e.SCRIPT_DATA_END_TAG_OPEN=15]="SCRIPT_DATA_END_TAG_OPEN",e[e.SCRIPT_DATA_END_TAG_NAME=16]="SCRIPT_DATA_END_TAG_NAME",e[e.SCRIPT_DATA_ESCAPE_START=17]="SCRIPT_DATA_ESCAPE_START",e[e.SCRIPT_DATA_ESCAPE_START_DASH=18]="SCRIPT_DATA_ESCAPE_START_DASH",e[e.SCRIPT_DATA_ESCAPED=19]="SCRIPT_DATA_ESCAPED",e[e.SCRIPT_DATA_ESCAPED_DASH=20]="SCRIPT_DATA_ESCAPED_DASH",e[e.SCRIPT_DATA_ESCAPED_DASH_DASH=21]="SCRIPT_DATA_ESCAPED_DASH_DASH",e[e.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN=22]="SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN",e[e.SCRIPT_DATA_ESCAPED_END_TAG_OPEN=23]="SCRIPT_DATA_ESCAPED_END_TAG_OPEN",e[e.SCRIPT_DATA_ESCAPED_END_TAG_NAME=24]="SCRIPT_DATA_ESCAPED_END_TAG_NAME",e[e.SCRIPT_DATA_DOUBLE_ESCAPE_START=25]="SCRIPT_DATA_DOUBLE_ESCAPE_START",e[e.SCRIPT_DATA_DOUBLE_ESCAPED=26]="SCRIPT_DATA_DOUBLE_ESCAPED",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH=27]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH=28]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN=29]="SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN",e[e.SCRIPT_DATA_DOUBLE_ESCAPE_END=30]="SCRIPT_DATA_DOUBLE_ESCAPE_END",e[e.BEFORE_ATTRIBUTE_NAME=31]="BEFORE_ATTRIBUTE_NAME",e[e.ATTRIBUTE_NAME=32]="ATTRIBUTE_NAME",e[e.AFTER_ATTRIBUTE_NAME=33]="AFTER_ATTRIBUTE_NAME",e[e.BEFORE_ATTRIBUTE_VALUE=34]="BEFORE_ATTRIBUTE_VALUE",e[e.ATTRIBUTE_VALUE_DOUBLE_QUOTED=35]="ATTRIBUTE_VALUE_DOUBLE_QUOTED",e[e.ATTRIBUTE_VALUE_SINGLE_QUOTED=36]="ATTRIBUTE_VALUE_SINGLE_QUOTED",e[e.ATTRIBUTE_VALUE_UNQUOTED=37]="ATTRIBUTE_VALUE_UNQUOTED",e[e.AFTER_ATTRIBUTE_VALUE_QUOTED=38]="AFTER_ATTRIBUTE_VALUE_QUOTED",e[e.SELF_CLOSING_START_TAG=39]="SELF_CLOSING_START_TAG",e[e.BOGUS_COMMENT=40]="BOGUS_COMMENT",e[e.MARKUP_DECLARATION_OPEN=41]="MARKUP_DECLARATION_OPEN",e[e.COMMENT_START=42]="COMMENT_START",e[e.COMMENT_START_DASH=43]="COMMENT_START_DASH",e[e.COMMENT=44]="COMMENT",e[e.COMMENT_LESS_THAN_SIGN=45]="COMMENT_LESS_THAN_SIGN",e[e.COMMENT_LESS_THAN_SIGN_BANG=46]="COMMENT_LESS_THAN_SIGN_BANG",e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH=47]="COMMENT_LESS_THAN_SIGN_BANG_DASH",e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH=48]="COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH",e[e.COMMENT_END_DASH=49]="COMMENT_END_DASH",e[e.COMMENT_END=50]="COMMENT_END",e[e.COMMENT_END_BANG=51]="COMMENT_END_BANG",e[e.DOCTYPE=52]="DOCTYPE",e[e.BEFORE_DOCTYPE_NAME=53]="BEFORE_DOCTYPE_NAME",e[e.DOCTYPE_NAME=54]="DOCTYPE_NAME",e[e.AFTER_DOCTYPE_NAME=55]="AFTER_DOCTYPE_NAME",e[e.AFTER_DOCTYPE_PUBLIC_KEYWORD=56]="AFTER_DOCTYPE_PUBLIC_KEYWORD",e[e.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER=57]="BEFORE_DOCTYPE_PUBLIC_IDENTIFIER",e[e.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED=58]="DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED",e[e.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED=59]="DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED",e[e.AFTER_DOCTYPE_PUBLIC_IDENTIFIER=60]="AFTER_DOCTYPE_PUBLIC_IDENTIFIER",e[e.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS=61]="BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS",e[e.AFTER_DOCTYPE_SYSTEM_KEYWORD=62]="AFTER_DOCTYPE_SYSTEM_KEYWORD",e[e.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER=63]="BEFORE_DOCTYPE_SYSTEM_IDENTIFIER",e[e.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED=64]="DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED",e[e.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED=65]="DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED",e[e.AFTER_DOCTYPE_SYSTEM_IDENTIFIER=66]="AFTER_DOCTYPE_SYSTEM_IDENTIFIER",e[e.BOGUS_DOCTYPE=67]="BOGUS_DOCTYPE",e[e.CDATA_SECTION=68]="CDATA_SECTION",e[e.CDATA_SECTION_BRACKET=69]="CDATA_SECTION_BRACKET",e[e.CDATA_SECTION_END=70]="CDATA_SECTION_END",e[e.CHARACTER_REFERENCE=71]="CHARACTER_REFERENCE",e[e.AMBIGUOUS_AMPERSAND=72]="AMBIGUOUS_AMPERSAND"})(y||(y={}));const De={DATA:y.DATA,RCDATA:y.RCDATA,RAWTEXT:y.RAWTEXT,SCRIPT_DATA:y.SCRIPT_DATA,PLAINTEXT:y.PLAINTEXT,CDATA_SECTION:y.CDATA_SECTION};function Sp(e){return e>=T.DIGIT_0&&e<=T.DIGIT_9}function rn(e){return e>=T.LATIN_CAPITAL_A&&e<=T.LATIN_CAPITAL_Z}function wp(e){return e>=T.LATIN_SMALL_A&&e<=T.LATIN_SMALL_Z}function Xt(e){return wp(e)||rn(e)}function Cs(e){return Xt(e)||Sp(e)}function Wn(e){return e+32}function cc(e){return e===T.SPACE||e===T.LINE_FEED||e===T.TABULATION||e===T.FORM_FEED}function _s(e){return cc(e)||e===T.SOLIDUS||e===T.GREATER_THAN_SIGN}function Cp(e){return e===T.NULL?P.nullCharacterReference:e>1114111?P.characterReferenceOutsideUnicodeRange:uc(e)?P.surrogateCharacterReference:lc(e)?P.noncharacterCharacterReference:sc(e)||e===T.CARRIAGE_RETURN?P.controlCharacterReference:null}class _p{constructor(t,r){this.options=t,this.handler=r,this.paused=!1,this.inLoop=!1,this.inForeignNode=!1,this.lastStartTagName="",this.active=!1,this.state=y.DATA,this.returnState=y.DATA,this.entityStartPos=0,this.consumedAfterSnapshot=-1,this.currentCharacterToken=null,this.currentToken=null,this.currentAttr={name:"",value:""},this.preprocessor=new fp(r),this.currentLocation=this.getCurrentLocation(-1),this.entityDecoder=new yp(mp,(n,a)=>{this.preprocessor.pos=this.entityStartPos+a-1,this._flushCodePointConsumedAsCharacterReference(n)},r.onParseError?{missingSemicolonAfterCharacterReference:()=>{this._err(P.missingSemicolonAfterCharacterReference,1)},absenceOfDigitsInNumericCharacterReference:n=>{this._err(P.absenceOfDigitsInNumericCharacterReference,this.entityStartPos-this.preprocessor.pos+n)},validateNumericCharacterReference:n=>{const a=Cp(n);a&&this._err(a,1)}}:void 0)}_err(t,r=0){var n,a;(a=(n=this.handler).onParseError)===null||a===void 0||a.call(n,this.preprocessor.getError(t,r))}getCurrentLocation(t){return this.options.sourceCodeLocationInfo?{startLine:this.preprocessor.line,startCol:this.preprocessor.col-t,startOffset:this.preprocessor.offset-t,endLine:-1,endCol:-1,endOffset:-1}:null}_runParsingLoop(){if(!this.inLoop){for(this.inLoop=!0;this.active&&!this.paused;){this.consumedAfterSnapshot=0;const t=this._consume();this._ensureHibernation()||this._callState(t)}this.inLoop=!1}}pause(){this.paused=!0}resume(t){if(!this.paused)throw new Error("Parser was already resumed");this.paused=!1,!this.inLoop&&(this._runParsingLoop(),this.paused||t?.())}write(t,r,n){this.active=!0,this.preprocessor.write(t,r),this._runParsingLoop(),this.paused||n?.()}insertHtmlAtCurrentPos(t){this.active=!0,this.preprocessor.insertHtmlAtCurrentPos(t),this._runParsingLoop()}_ensureHibernation(){return this.preprocessor.endOfChunkHit?(this.preprocessor.retreat(this.consumedAfterSnapshot),this.consumedAfterSnapshot=0,this.active=!1,!0):!1}_consume(){return this.consumedAfterSnapshot++,this.preprocessor.advance()}_advanceBy(t){this.consumedAfterSnapshot+=t;for(let r=0;r0&&this._err(P.endTagWithAttributes),t.selfClosing&&this._err(P.endTagWithTrailingSolidus),this.handler.onEndTag(t)),this.preprocessor.dropParsedChunk()}emitCurrentComment(t){this.prepareToken(t),this.handler.onComment(t),this.preprocessor.dropParsedChunk()}emitCurrentDoctype(t){this.prepareToken(t),this.handler.onDoctype(t),this.preprocessor.dropParsedChunk()}_emitCurrentCharacterToken(t){if(this.currentCharacterToken){switch(t&&this.currentCharacterToken.location&&(this.currentCharacterToken.location.endLine=t.startLine,this.currentCharacterToken.location.endCol=t.startCol,this.currentCharacterToken.location.endOffset=t.startOffset),this.currentCharacterToken.type){case de.CHARACTER:{this.handler.onCharacter(this.currentCharacterToken);break}case de.NULL_CHARACTER:{this.handler.onNullCharacter(this.currentCharacterToken);break}case de.WHITESPACE_CHARACTER:{this.handler.onWhitespaceCharacter(this.currentCharacterToken);break}}this.currentCharacterToken=null}}_emitEOFToken(){const t=this.getCurrentLocation(0);t&&(t.endLine=t.startLine,t.endCol=t.startCol,t.endOffset=t.startOffset),this._emitCurrentCharacterToken(t),this.handler.onEof({type:de.EOF,location:t}),this.active=!1}_appendCharToCurrentCharacterToken(t,r){if(this.currentCharacterToken)if(this.currentCharacterToken.type===t){this.currentCharacterToken.chars+=r;return}else this.currentLocation=this.getCurrentLocation(0),this._emitCurrentCharacterToken(this.currentLocation),this.preprocessor.dropParsedChunk();this._createCharacterToken(t,r)}_emitCodePoint(t){const r=cc(t)?de.WHITESPACE_CHARACTER:t===T.NULL?de.NULL_CHARACTER:de.CHARACTER;this._appendCharToCurrentCharacterToken(r,String.fromCodePoint(t))}_emitChars(t){this._appendCharToCurrentCharacterToken(de.CHARACTER,t)}_startCharacterReference(){this.returnState=this.state,this.state=y.CHARACTER_REFERENCE,this.entityStartPos=this.preprocessor.pos,this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute()?Ft.Attribute:Ft.Legacy)}_isCharacterReferenceInAttribute(){return this.returnState===y.ATTRIBUTE_VALUE_DOUBLE_QUOTED||this.returnState===y.ATTRIBUTE_VALUE_SINGLE_QUOTED||this.returnState===y.ATTRIBUTE_VALUE_UNQUOTED}_flushCodePointConsumedAsCharacterReference(t){this._isCharacterReferenceInAttribute()?this.currentAttr.value+=String.fromCodePoint(t):this._emitCodePoint(t)}_callState(t){switch(this.state){case y.DATA:{this._stateData(t);break}case y.RCDATA:{this._stateRcdata(t);break}case y.RAWTEXT:{this._stateRawtext(t);break}case y.SCRIPT_DATA:{this._stateScriptData(t);break}case y.PLAINTEXT:{this._statePlaintext(t);break}case y.TAG_OPEN:{this._stateTagOpen(t);break}case y.END_TAG_OPEN:{this._stateEndTagOpen(t);break}case y.TAG_NAME:{this._stateTagName(t);break}case y.RCDATA_LESS_THAN_SIGN:{this._stateRcdataLessThanSign(t);break}case y.RCDATA_END_TAG_OPEN:{this._stateRcdataEndTagOpen(t);break}case y.RCDATA_END_TAG_NAME:{this._stateRcdataEndTagName(t);break}case y.RAWTEXT_LESS_THAN_SIGN:{this._stateRawtextLessThanSign(t);break}case y.RAWTEXT_END_TAG_OPEN:{this._stateRawtextEndTagOpen(t);break}case y.RAWTEXT_END_TAG_NAME:{this._stateRawtextEndTagName(t);break}case y.SCRIPT_DATA_LESS_THAN_SIGN:{this._stateScriptDataLessThanSign(t);break}case y.SCRIPT_DATA_END_TAG_OPEN:{this._stateScriptDataEndTagOpen(t);break}case y.SCRIPT_DATA_END_TAG_NAME:{this._stateScriptDataEndTagName(t);break}case y.SCRIPT_DATA_ESCAPE_START:{this._stateScriptDataEscapeStart(t);break}case y.SCRIPT_DATA_ESCAPE_START_DASH:{this._stateScriptDataEscapeStartDash(t);break}case y.SCRIPT_DATA_ESCAPED:{this._stateScriptDataEscaped(t);break}case y.SCRIPT_DATA_ESCAPED_DASH:{this._stateScriptDataEscapedDash(t);break}case y.SCRIPT_DATA_ESCAPED_DASH_DASH:{this._stateScriptDataEscapedDashDash(t);break}case y.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataEscapedLessThanSign(t);break}case y.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:{this._stateScriptDataEscapedEndTagOpen(t);break}case y.SCRIPT_DATA_ESCAPED_END_TAG_NAME:{this._stateScriptDataEscapedEndTagName(t);break}case y.SCRIPT_DATA_DOUBLE_ESCAPE_START:{this._stateScriptDataDoubleEscapeStart(t);break}case y.SCRIPT_DATA_DOUBLE_ESCAPED:{this._stateScriptDataDoubleEscaped(t);break}case y.SCRIPT_DATA_DOUBLE_ESCAPED_DASH:{this._stateScriptDataDoubleEscapedDash(t);break}case y.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH:{this._stateScriptDataDoubleEscapedDashDash(t);break}case y.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataDoubleEscapedLessThanSign(t);break}case y.SCRIPT_DATA_DOUBLE_ESCAPE_END:{this._stateScriptDataDoubleEscapeEnd(t);break}case y.BEFORE_ATTRIBUTE_NAME:{this._stateBeforeAttributeName(t);break}case y.ATTRIBUTE_NAME:{this._stateAttributeName(t);break}case y.AFTER_ATTRIBUTE_NAME:{this._stateAfterAttributeName(t);break}case y.BEFORE_ATTRIBUTE_VALUE:{this._stateBeforeAttributeValue(t);break}case y.ATTRIBUTE_VALUE_DOUBLE_QUOTED:{this._stateAttributeValueDoubleQuoted(t);break}case y.ATTRIBUTE_VALUE_SINGLE_QUOTED:{this._stateAttributeValueSingleQuoted(t);break}case y.ATTRIBUTE_VALUE_UNQUOTED:{this._stateAttributeValueUnquoted(t);break}case y.AFTER_ATTRIBUTE_VALUE_QUOTED:{this._stateAfterAttributeValueQuoted(t);break}case y.SELF_CLOSING_START_TAG:{this._stateSelfClosingStartTag(t);break}case y.BOGUS_COMMENT:{this._stateBogusComment(t);break}case y.MARKUP_DECLARATION_OPEN:{this._stateMarkupDeclarationOpen(t);break}case y.COMMENT_START:{this._stateCommentStart(t);break}case y.COMMENT_START_DASH:{this._stateCommentStartDash(t);break}case y.COMMENT:{this._stateComment(t);break}case y.COMMENT_LESS_THAN_SIGN:{this._stateCommentLessThanSign(t);break}case y.COMMENT_LESS_THAN_SIGN_BANG:{this._stateCommentLessThanSignBang(t);break}case y.COMMENT_LESS_THAN_SIGN_BANG_DASH:{this._stateCommentLessThanSignBangDash(t);break}case y.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH:{this._stateCommentLessThanSignBangDashDash(t);break}case y.COMMENT_END_DASH:{this._stateCommentEndDash(t);break}case y.COMMENT_END:{this._stateCommentEnd(t);break}case y.COMMENT_END_BANG:{this._stateCommentEndBang(t);break}case y.DOCTYPE:{this._stateDoctype(t);break}case y.BEFORE_DOCTYPE_NAME:{this._stateBeforeDoctypeName(t);break}case y.DOCTYPE_NAME:{this._stateDoctypeName(t);break}case y.AFTER_DOCTYPE_NAME:{this._stateAfterDoctypeName(t);break}case y.AFTER_DOCTYPE_PUBLIC_KEYWORD:{this._stateAfterDoctypePublicKeyword(t);break}case y.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateBeforeDoctypePublicIdentifier(t);break}case y.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypePublicIdentifierDoubleQuoted(t);break}case y.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypePublicIdentifierSingleQuoted(t);break}case y.AFTER_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateAfterDoctypePublicIdentifier(t);break}case y.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS:{this._stateBetweenDoctypePublicAndSystemIdentifiers(t);break}case y.AFTER_DOCTYPE_SYSTEM_KEYWORD:{this._stateAfterDoctypeSystemKeyword(t);break}case y.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateBeforeDoctypeSystemIdentifier(t);break}case y.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypeSystemIdentifierDoubleQuoted(t);break}case y.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypeSystemIdentifierSingleQuoted(t);break}case y.AFTER_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateAfterDoctypeSystemIdentifier(t);break}case y.BOGUS_DOCTYPE:{this._stateBogusDoctype(t);break}case y.CDATA_SECTION:{this._stateCdataSection(t);break}case y.CDATA_SECTION_BRACKET:{this._stateCdataSectionBracket(t);break}case y.CDATA_SECTION_END:{this._stateCdataSectionEnd(t);break}case y.CHARACTER_REFERENCE:{this._stateCharacterReference();break}case y.AMBIGUOUS_AMPERSAND:{this._stateAmbiguousAmpersand(t);break}default:throw new Error("Unknown state")}}_stateData(t){switch(t){case T.LESS_THAN_SIGN:{this.state=y.TAG_OPEN;break}case T.AMPERSAND:{this._startCharacterReference();break}case T.NULL:{this._err(P.unexpectedNullCharacter),this._emitCodePoint(t);break}case T.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t)}}_stateRcdata(t){switch(t){case T.AMPERSAND:{this._startCharacterReference();break}case T.LESS_THAN_SIGN:{this.state=y.RCDATA_LESS_THAN_SIGN;break}case T.NULL:{this._err(P.unexpectedNullCharacter),this._emitChars(Se);break}case T.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t)}}_stateRawtext(t){switch(t){case T.LESS_THAN_SIGN:{this.state=y.RAWTEXT_LESS_THAN_SIGN;break}case T.NULL:{this._err(P.unexpectedNullCharacter),this._emitChars(Se);break}case T.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t)}}_stateScriptData(t){switch(t){case T.LESS_THAN_SIGN:{this.state=y.SCRIPT_DATA_LESS_THAN_SIGN;break}case T.NULL:{this._err(P.unexpectedNullCharacter),this._emitChars(Se);break}case T.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t)}}_statePlaintext(t){switch(t){case T.NULL:{this._err(P.unexpectedNullCharacter),this._emitChars(Se);break}case T.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t)}}_stateTagOpen(t){if(Xt(t))this._createStartTagToken(),this.state=y.TAG_NAME,this._stateTagName(t);else switch(t){case T.EXCLAMATION_MARK:{this.state=y.MARKUP_DECLARATION_OPEN;break}case T.SOLIDUS:{this.state=y.END_TAG_OPEN;break}case T.QUESTION_MARK:{this._err(P.unexpectedQuestionMarkInsteadOfTagName),this._createCommentToken(1),this.state=y.BOGUS_COMMENT,this._stateBogusComment(t);break}case T.EOF:{this._err(P.eofBeforeTagName),this._emitChars("<"),this._emitEOFToken();break}default:this._err(P.invalidFirstCharacterOfTagName),this._emitChars("<"),this.state=y.DATA,this._stateData(t)}}_stateEndTagOpen(t){if(Xt(t))this._createEndTagToken(),this.state=y.TAG_NAME,this._stateTagName(t);else switch(t){case T.GREATER_THAN_SIGN:{this._err(P.missingEndTagName),this.state=y.DATA;break}case T.EOF:{this._err(P.eofBeforeTagName),this._emitChars("");break}case T.NULL:{this._err(P.unexpectedNullCharacter),this.state=y.SCRIPT_DATA_ESCAPED,this._emitChars(Se);break}case T.EOF:{this._err(P.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=y.SCRIPT_DATA_ESCAPED,this._emitCodePoint(t)}}_stateScriptDataEscapedLessThanSign(t){t===T.SOLIDUS?this.state=y.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:Xt(t)?(this._emitChars("<"),this.state=y.SCRIPT_DATA_DOUBLE_ESCAPE_START,this._stateScriptDataDoubleEscapeStart(t)):(this._emitChars("<"),this.state=y.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(t))}_stateScriptDataEscapedEndTagOpen(t){Xt(t)?(this.state=y.SCRIPT_DATA_ESCAPED_END_TAG_NAME,this._stateScriptDataEscapedEndTagName(t)):(this._emitChars("");break}case T.NULL:{this._err(P.unexpectedNullCharacter),this.state=y.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars(Se);break}case T.EOF:{this._err(P.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=y.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(t)}}_stateScriptDataDoubleEscapedLessThanSign(t){t===T.SOLIDUS?(this.state=y.SCRIPT_DATA_DOUBLE_ESCAPE_END,this._emitChars("/")):(this.state=y.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(t))}_stateScriptDataDoubleEscapeEnd(t){if(this.preprocessor.startsWith(et.SCRIPT,!1)&&_s(this.preprocessor.peek(et.SCRIPT.length))){this._emitCodePoint(t);for(let r=0;r0&&this._isInTemplate()&&this.tmplCount--,this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(t,!0)}replace(t,r){const n=this._indexOf(t);this.items[n]=r,n===this.stackTop&&(this.current=r)}insertAfter(t,r,n){const a=this._indexOf(t)+1;this.items.splice(a,0,r),this.tagIDs.splice(a,0,n),this.stackTop++,a===this.stackTop&&this._updateCurrentElement(),this.current&&this.currentTagId!==void 0&&this.handler.onItemPush(this.current,this.currentTagId,a===this.stackTop)}popUntilTagNamePopped(t){let r=this.stackTop+1;do r=this.tagIDs.lastIndexOf(t,r-1);while(r>0&&this.treeAdapter.getNamespaceURI(this.items[r])!==H.HTML);this.shortenToLength(Math.max(r,0))}shortenToLength(t){for(;this.stackTop>=t;){const r=this.current;this.tmplCount>0&&this._isInTemplate()&&(this.tmplCount-=1),this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(r,this.stackTop=0;n--)if(t.has(this.tagIDs[n])&&this.treeAdapter.getNamespaceURI(this.items[n])===r)return n;return-1}clearBackTo(t,r){const n=this._indexOfTagNames(t,r);this.shortenToLength(n+1)}clearBackToTableContext(){this.clearBackTo(Lp,H.HTML)}clearBackToTableBodyContext(){this.clearBackTo(Op,H.HTML)}clearBackToTableRowContext(){this.clearBackTo(Dp,H.HTML)}remove(t){const r=this._indexOf(t);r>=0&&(r===this.stackTop?this.pop():(this.items.splice(r,1),this.tagIDs.splice(r,1),this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(t,!1)))}tryPeekProperlyNestedBodyElement(){return this.stackTop>=1&&this.tagIDs[1]===o.BODY?this.items[1]:null}contains(t){return this._indexOf(t)>-1}getCommonAncestor(t){const r=this._indexOf(t)-1;return r>=0?this.items[r]:null}isRootHtmlElementCurrent(){return this.stackTop===0&&this.tagIDs[0]===o.HTML}hasInDynamicScope(t,r){for(let n=this.stackTop;n>=0;n--){const a=this.tagIDs[n];switch(this.treeAdapter.getNamespaceURI(this.items[n])){case H.HTML:{if(a===t)return!0;if(r.has(a))return!1;break}case H.SVG:{if(Ds.has(a))return!1;break}case H.MATHML:{if(Ns.has(a))return!1;break}}}return!0}hasInScope(t){return this.hasInDynamicScope(t,s0)}hasInListItemScope(t){return this.hasInDynamicScope(t,Ip)}hasInButtonScope(t){return this.hasInDynamicScope(t,Np)}hasNumberedHeaderInScope(){for(let t=this.stackTop;t>=0;t--){const r=this.tagIDs[t];switch(this.treeAdapter.getNamespaceURI(this.items[t])){case H.HTML:{if(Qa.has(r))return!0;if(s0.has(r))return!1;break}case H.SVG:{if(Ds.has(r))return!1;break}case H.MATHML:{if(Ns.has(r))return!1;break}}}return!0}hasInTableScope(t){for(let r=this.stackTop;r>=0;r--)if(this.treeAdapter.getNamespaceURI(this.items[r])===H.HTML)switch(this.tagIDs[r]){case t:return!0;case o.TABLE:case o.HTML:return!1}return!0}hasTableBodyContextInTableScope(){for(let t=this.stackTop;t>=0;t--)if(this.treeAdapter.getNamespaceURI(this.items[t])===H.HTML)switch(this.tagIDs[t]){case o.TBODY:case o.THEAD:case o.TFOOT:return!0;case o.TABLE:case o.HTML:return!1}return!0}hasInSelectScope(t){for(let r=this.stackTop;r>=0;r--)if(this.treeAdapter.getNamespaceURI(this.items[r])===H.HTML)switch(this.tagIDs[r]){case t:return!0;case o.OPTION:case o.OPTGROUP:break;default:return!1}return!0}generateImpliedEndTags(){for(;this.currentTagId!==void 0&&hc.has(this.currentTagId);)this.pop()}generateImpliedEndTagsThoroughly(){for(;this.currentTagId!==void 0&&Is.has(this.currentTagId);)this.pop()}generateImpliedEndTagsWithExclusion(t){for(;this.currentTagId!==void 0&&this.currentTagId!==t&&Is.has(this.currentTagId);)this.pop()}}const ga=3;var St;(function(e){e[e.Marker=0]="Marker",e[e.Element=1]="Element"})(St||(St={}));const Os={type:St.Marker};class Pp{constructor(t){this.treeAdapter=t,this.entries=[],this.bookmark=null}_getNoahArkConditionCandidates(t,r){const n=[],a=r.length,i=this.treeAdapter.getTagName(t),u=this.treeAdapter.getNamespaceURI(t);for(let s=0;s[u.name,u.value]));let i=0;for(let u=0;ua.get(l.name)===l.value)&&(i+=1,i>=ga&&this.entries.splice(s.idx,1))}}insertMarker(){this.entries.unshift(Os)}pushElement(t,r){this._ensureNoahArkCondition(t),this.entries.unshift({type:St.Element,element:t,token:r})}insertElementAfterBookmark(t,r){const n=this.entries.indexOf(this.bookmark);this.entries.splice(n,0,{type:St.Element,element:t,token:r})}removeEntry(t){const r=this.entries.indexOf(t);r!==-1&&this.entries.splice(r,1)}clearToLastMarker(){const t=this.entries.indexOf(Os);t===-1?this.entries.length=0:this.entries.splice(0,t+1)}getElementEntryInScopeWithTagName(t){const r=this.entries.find(n=>n.type===St.Marker||this.treeAdapter.getTagName(n.element)===t);return r&&r.type===St.Element?r:null}getElementEntry(t){return this.entries.find(r=>r.type===St.Element&&r.element===t)}}const $t={createDocument(){return{nodeName:"#document",mode:pt.NO_QUIRKS,childNodes:[]}},createDocumentFragment(){return{nodeName:"#document-fragment",childNodes:[]}},createElement(e,t,r){return{nodeName:e,tagName:e,attrs:r,namespaceURI:t,childNodes:[],parentNode:null}},createCommentNode(e){return{nodeName:"#comment",data:e,parentNode:null}},createTextNode(e){return{nodeName:"#text",value:e,parentNode:null}},appendChild(e,t){e.childNodes.push(t),t.parentNode=e},insertBefore(e,t,r){const n=e.childNodes.indexOf(r);e.childNodes.splice(n,0,t),t.parentNode=e},setTemplateContent(e,t){e.content=t},getTemplateContent(e){return e.content},setDocumentType(e,t,r,n){const a=e.childNodes.find(i=>i.nodeName==="#documentType");if(a)a.name=t,a.publicId=r,a.systemId=n;else{const i={nodeName:"#documentType",name:t,publicId:r,systemId:n,parentNode:null};$t.appendChild(e,i)}},setDocumentMode(e,t){e.mode=t},getDocumentMode(e){return e.mode},detachNode(e){if(e.parentNode){const t=e.parentNode.childNodes.indexOf(e);e.parentNode.childNodes.splice(t,1),e.parentNode=null}},insertText(e,t){if(e.childNodes.length>0){const r=e.childNodes[e.childNodes.length-1];if($t.isTextNode(r)){r.value+=t;return}}$t.appendChild(e,$t.createTextNode(t))},insertTextBefore(e,t,r){const n=e.childNodes[e.childNodes.indexOf(r)-1];n&&$t.isTextNode(n)?n.value+=t:$t.insertBefore(e,$t.createTextNode(t),r)},adoptAttributes(e,t){const r=new Set(e.attrs.map(n=>n.name));for(let n=0;ne.startsWith(r))}function qp(e){return e.name===dc&&e.publicId===null&&(e.systemId===null||e.systemId===Bp)}function Yp(e){if(e.name!==dc)return pt.QUIRKS;const{systemId:t}=e;if(t&&t.toLowerCase()===Fp)return pt.QUIRKS;let{publicId:r}=e;if(r!==null){if(r=r.toLowerCase(),zp.has(r))return pt.QUIRKS;let n=t===null?Hp:fc;if(Ls(r,n))return pt.QUIRKS;if(n=t===null?mc:Up,Ls(r,n))return pt.LIMITED_QUIRKS}return pt.NO_QUIRKS}const Rs={TEXT_HTML:"text/html",APPLICATION_XML:"application/xhtml+xml"},Gp="definitionurl",Vp="definitionURL",jp=new Map(["attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map(e=>[e.toLowerCase(),e])),Wp=new Map([["xlink:actuate",{prefix:"xlink",name:"actuate",namespace:H.XLINK}],["xlink:arcrole",{prefix:"xlink",name:"arcrole",namespace:H.XLINK}],["xlink:href",{prefix:"xlink",name:"href",namespace:H.XLINK}],["xlink:role",{prefix:"xlink",name:"role",namespace:H.XLINK}],["xlink:show",{prefix:"xlink",name:"show",namespace:H.XLINK}],["xlink:title",{prefix:"xlink",name:"title",namespace:H.XLINK}],["xlink:type",{prefix:"xlink",name:"type",namespace:H.XLINK}],["xml:lang",{prefix:"xml",name:"lang",namespace:H.XML}],["xml:space",{prefix:"xml",name:"space",namespace:H.XML}],["xmlns",{prefix:"",name:"xmlns",namespace:H.XMLNS}],["xmlns:xlink",{prefix:"xmlns",name:"xlink",namespace:H.XMLNS}]]),Xp=new Map(["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","textPath"].map(e=>[e.toLowerCase(),e])),$p=new Set([o.B,o.BIG,o.BLOCKQUOTE,o.BODY,o.BR,o.CENTER,o.CODE,o.DD,o.DIV,o.DL,o.DT,o.EM,o.EMBED,o.H1,o.H2,o.H3,o.H4,o.H5,o.H6,o.HEAD,o.HR,o.I,o.IMG,o.LI,o.LISTING,o.MENU,o.META,o.NOBR,o.OL,o.P,o.PRE,o.RUBY,o.S,o.SMALL,o.SPAN,o.STRONG,o.STRIKE,o.SUB,o.SUP,o.TABLE,o.TT,o.U,o.UL,o.VAR]);function Qp(e){const t=e.tagID;return t===o.FONT&&e.attrs.some(({name:n})=>n===mr.COLOR||n===mr.SIZE||n===mr.FACE)||$p.has(t)}function pc(e){for(let t=0;t0&&this._setContextModes(t,r)}onItemPop(t,r){var n,a;if(this.options.sourceCodeLocationInfo&&this._setEndLocation(t,this.currentToken),(a=(n=this.treeAdapter).onItemPop)===null||a===void 0||a.call(n,t,this.openElements.current),r){let i,u;this.openElements.stackTop===0&&this.fragmentContext?(i=this.fragmentContext,u=this.fragmentContextID):{current:i,currentTagId:u}=this.openElements,this._setContextModes(i,u)}}_setContextModes(t,r){const n=t===this.document||t&&this.treeAdapter.getNamespaceURI(t)===H.HTML;this.currentNotInHTML=!n,this.tokenizer.inForeignNode=!n&&t!==void 0&&r!==void 0&&!this._isIntegrationPoint(r,t)}_switchToTextParsing(t,r){this._insertElement(t,H.HTML),this.tokenizer.state=r,this.originalInsertionMode=this.insertionMode,this.insertionMode=k.TEXT}switchToPlaintextParsing(){this.insertionMode=k.TEXT,this.originalInsertionMode=k.IN_BODY,this.tokenizer.state=De.PLAINTEXT}_getAdjustedCurrentElement(){return this.openElements.stackTop===0&&this.fragmentContext?this.fragmentContext:this.openElements.current}_findFormInFragmentContext(){let t=this.fragmentContext;for(;t;){if(this.treeAdapter.getTagName(t)===O.FORM){this.formElement=t;break}t=this.treeAdapter.getParentNode(t)}}_initTokenizerForFragmentParsing(){if(!(!this.fragmentContext||this.treeAdapter.getNamespaceURI(this.fragmentContext)!==H.HTML))switch(this.fragmentContextID){case o.TITLE:case o.TEXTAREA:{this.tokenizer.state=De.RCDATA;break}case o.STYLE:case o.XMP:case o.IFRAME:case o.NOEMBED:case o.NOFRAMES:case o.NOSCRIPT:{this.tokenizer.state=De.RAWTEXT;break}case o.SCRIPT:{this.tokenizer.state=De.SCRIPT_DATA;break}case o.PLAINTEXT:{this.tokenizer.state=De.PLAINTEXT;break}}}_setDocumentType(t){const r=t.name||"",n=t.publicId||"",a=t.systemId||"";if(this.treeAdapter.setDocumentType(this.document,r,n,a),t.location){const u=this.treeAdapter.getChildNodes(this.document).find(s=>this.treeAdapter.isDocumentTypeNode(s));u&&this.treeAdapter.setNodeSourceCodeLocation(u,t.location)}}_attachElementToTree(t,r){if(this.options.sourceCodeLocationInfo){const n=r&&{...r,startTag:r};this.treeAdapter.setNodeSourceCodeLocation(t,n)}if(this._shouldFosterParentOnInsertion())this._fosterParentElement(t);else{const n=this.openElements.currentTmplContentOrNode;this.treeAdapter.appendChild(n??this.document,t)}}_appendElement(t,r){const n=this.treeAdapter.createElement(t.tagName,r,t.attrs);this._attachElementToTree(n,t.location)}_insertElement(t,r){const n=this.treeAdapter.createElement(t.tagName,r,t.attrs);this._attachElementToTree(n,t.location),this.openElements.push(n,t.tagID)}_insertFakeElement(t,r){const n=this.treeAdapter.createElement(t,H.HTML,[]);this._attachElementToTree(n,null),this.openElements.push(n,r)}_insertTemplate(t){const r=this.treeAdapter.createElement(t.tagName,H.HTML,t.attrs),n=this.treeAdapter.createDocumentFragment();this.treeAdapter.setTemplateContent(r,n),this._attachElementToTree(r,t.location),this.openElements.push(r,t.tagID),this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(n,null)}_insertFakeRootElement(){const t=this.treeAdapter.createElement(O.HTML,H.HTML,[]);this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(t,null),this.treeAdapter.appendChild(this.openElements.current,t),this.openElements.push(t,o.HTML)}_appendCommentNode(t,r){const n=this.treeAdapter.createCommentNode(t.data);this.treeAdapter.appendChild(r,n),this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(n,t.location)}_insertCharacters(t){let r,n;if(this._shouldFosterParentOnInsertion()?({parent:r,beforeElement:n}=this._findFosterParentingLocation(),n?this.treeAdapter.insertTextBefore(r,t.chars,n):this.treeAdapter.insertText(r,t.chars)):(r=this.openElements.currentTmplContentOrNode,this.treeAdapter.insertText(r,t.chars)),!t.location)return;const a=this.treeAdapter.getChildNodes(r),i=n?a.lastIndexOf(n):a.length,u=a[i-1];if(this.treeAdapter.getNodeSourceCodeLocation(u)){const{endLine:l,endCol:c,endOffset:d}=t.location;this.treeAdapter.updateNodeSourceCodeLocation(u,{endLine:l,endCol:c,endOffset:d})}else this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(u,t.location)}_adoptNodes(t,r){for(let n=this.treeAdapter.getFirstChild(t);n;n=this.treeAdapter.getFirstChild(t))this.treeAdapter.detachNode(n),this.treeAdapter.appendChild(r,n)}_setEndLocation(t,r){if(this.treeAdapter.getNodeSourceCodeLocation(t)&&r.location){const n=r.location,a=this.treeAdapter.getTagName(t),i=r.type===de.END_TAG&&a===r.tagName?{endTag:{...n},endLine:n.endLine,endCol:n.endCol,endOffset:n.endOffset}:{endLine:n.startLine,endCol:n.startCol,endOffset:n.startOffset};this.treeAdapter.updateNodeSourceCodeLocation(t,i)}}shouldProcessStartTagTokenInForeignContent(t){if(!this.currentNotInHTML)return!1;let r,n;return this.openElements.stackTop===0&&this.fragmentContext?(r=this.fragmentContext,n=this.fragmentContextID):{current:r,currentTagId:n}=this.openElements,t.tagID===o.SVG&&this.treeAdapter.getTagName(r)===O.ANNOTATION_XML&&this.treeAdapter.getNamespaceURI(r)===H.MATHML?!1:this.tokenizer.inForeignNode||(t.tagID===o.MGLYPH||t.tagID===o.MALIGNMARK)&&n!==void 0&&!this._isIntegrationPoint(n,r,H.HTML)}_processToken(t){switch(t.type){case de.CHARACTER:{this.onCharacter(t);break}case de.NULL_CHARACTER:{this.onNullCharacter(t);break}case de.COMMENT:{this.onComment(t);break}case de.DOCTYPE:{this.onDoctype(t);break}case de.START_TAG:{this._processStartTag(t);break}case de.END_TAG:{this.onEndTag(t);break}case de.EOF:{this.onEof(t);break}case de.WHITESPACE_CHARACTER:{this.onWhitespaceCharacter(t);break}}}_isIntegrationPoint(t,r,n){const a=this.treeAdapter.getNamespaceURI(r),i=this.treeAdapter.getAttrList(r);return e5(t,a,i,n)}_reconstructActiveFormattingElements(){const t=this.activeFormattingElements.entries.length;if(t){const r=this.activeFormattingElements.entries.findIndex(a=>a.type===St.Marker||this.openElements.contains(a.element)),n=r===-1?t-1:r-1;for(let a=n;a>=0;a--){const i=this.activeFormattingElements.entries[a];this._insertElement(i.token,this.treeAdapter.getNamespaceURI(i.element)),i.element=this.openElements.current}}}_closeTableCell(){this.openElements.generateImpliedEndTags(),this.openElements.popUntilTableCellPopped(),this.activeFormattingElements.clearToLastMarker(),this.insertionMode=k.IN_ROW}_closePElement(){this.openElements.generateImpliedEndTagsWithExclusion(o.P),this.openElements.popUntilTagNamePopped(o.P)}_resetInsertionMode(){for(let t=this.openElements.stackTop;t>=0;t--)switch(t===0&&this.fragmentContext?this.fragmentContextID:this.openElements.tagIDs[t]){case o.TR:{this.insertionMode=k.IN_ROW;return}case o.TBODY:case o.THEAD:case o.TFOOT:{this.insertionMode=k.IN_TABLE_BODY;return}case o.CAPTION:{this.insertionMode=k.IN_CAPTION;return}case o.COLGROUP:{this.insertionMode=k.IN_COLUMN_GROUP;return}case o.TABLE:{this.insertionMode=k.IN_TABLE;return}case o.BODY:{this.insertionMode=k.IN_BODY;return}case o.FRAMESET:{this.insertionMode=k.IN_FRAMESET;return}case o.SELECT:{this._resetInsertionModeForSelect(t);return}case o.TEMPLATE:{this.insertionMode=this.tmplInsertionModeStack[0];return}case o.HTML:{this.insertionMode=this.headElement?k.AFTER_HEAD:k.BEFORE_HEAD;return}case o.TD:case o.TH:{if(t>0){this.insertionMode=k.IN_CELL;return}break}case o.HEAD:{if(t>0){this.insertionMode=k.IN_HEAD;return}break}}this.insertionMode=k.IN_BODY}_resetInsertionModeForSelect(t){if(t>0)for(let r=t-1;r>0;r--){const n=this.openElements.tagIDs[r];if(n===o.TEMPLATE)break;if(n===o.TABLE){this.insertionMode=k.IN_SELECT_IN_TABLE;return}}this.insertionMode=k.IN_SELECT}_isElementCausesFosterParenting(t){return bc.has(t)}_shouldFosterParentOnInsertion(){return this.fosterParentingEnabled&&this.openElements.currentTagId!==void 0&&this._isElementCausesFosterParenting(this.openElements.currentTagId)}_findFosterParentingLocation(){for(let t=this.openElements.stackTop;t>=0;t--){const r=this.openElements.items[t];switch(this.openElements.tagIDs[t]){case o.TEMPLATE:{if(this.treeAdapter.getNamespaceURI(r)===H.HTML)return{parent:this.treeAdapter.getTemplateContent(r),beforeElement:null};break}case o.TABLE:{const n=this.treeAdapter.getParentNode(r);return n?{parent:n,beforeElement:r}:{parent:this.openElements.items[t-1],beforeElement:null}}}}return{parent:this.openElements.items[0],beforeElement:null}}_fosterParentElement(t){const r=this._findFosterParentingLocation();r.beforeElement?this.treeAdapter.insertBefore(r.parent,t,r.beforeElement):this.treeAdapter.appendChild(r.parent,t)}_isSpecialElement(t,r){const n=this.treeAdapter.getNamespaceURI(t);return kp[n].has(r)}onCharacter(t){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){R7(this,t);return}switch(this.insertionMode){case k.INITIAL:{Zr(this,t);break}case k.BEFORE_HTML:{ln(this,t);break}case k.BEFORE_HEAD:{on(this,t);break}case k.IN_HEAD:{cn(this,t);break}case k.IN_HEAD_NO_SCRIPT:{hn(this,t);break}case k.AFTER_HEAD:{dn(this,t);break}case k.IN_BODY:case k.IN_CAPTION:case k.IN_CELL:case k.IN_TEMPLATE:{Tc(this,t);break}case k.TEXT:case k.IN_SELECT:case k.IN_SELECT_IN_TABLE:{this._insertCharacters(t);break}case k.IN_TABLE:case k.IN_TABLE_BODY:case k.IN_ROW:{ba(this,t);break}case k.IN_TABLE_TEXT:{Sc(this,t);break}case k.IN_COLUMN_GROUP:{l0(this,t);break}case k.AFTER_BODY:{o0(this,t);break}case k.AFTER_AFTER_BODY:{Jn(this,t);break}}}onNullCharacter(t){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){L7(this,t);return}switch(this.insertionMode){case k.INITIAL:{Zr(this,t);break}case k.BEFORE_HTML:{ln(this,t);break}case k.BEFORE_HEAD:{on(this,t);break}case k.IN_HEAD:{cn(this,t);break}case k.IN_HEAD_NO_SCRIPT:{hn(this,t);break}case k.AFTER_HEAD:{dn(this,t);break}case k.TEXT:{this._insertCharacters(t);break}case k.IN_TABLE:case k.IN_TABLE_BODY:case k.IN_ROW:{ba(this,t);break}case k.IN_COLUMN_GROUP:{l0(this,t);break}case k.AFTER_BODY:{o0(this,t);break}case k.AFTER_AFTER_BODY:{Jn(this,t);break}}}onComment(t){if(this.skipNextNewLine=!1,this.currentNotInHTML){Ka(this,t);return}switch(this.insertionMode){case k.INITIAL:case k.BEFORE_HTML:case k.BEFORE_HEAD:case k.IN_HEAD:case k.IN_HEAD_NO_SCRIPT:case k.AFTER_HEAD:case k.IN_BODY:case k.IN_TABLE:case k.IN_CAPTION:case k.IN_COLUMN_GROUP:case k.IN_TABLE_BODY:case k.IN_ROW:case k.IN_CELL:case k.IN_SELECT:case k.IN_SELECT_IN_TABLE:case k.IN_TEMPLATE:case k.IN_FRAMESET:case k.AFTER_FRAMESET:{Ka(this,t);break}case k.IN_TABLE_TEXT:{en(this,t);break}case k.AFTER_BODY:{h5(this,t);break}case k.AFTER_AFTER_BODY:case k.AFTER_AFTER_FRAMESET:{d5(this,t);break}}}onDoctype(t){switch(this.skipNextNewLine=!1,this.insertionMode){case k.INITIAL:{f5(this,t);break}case k.BEFORE_HEAD:case k.IN_HEAD:case k.IN_HEAD_NO_SCRIPT:case k.AFTER_HEAD:{this._err(t,P.misplacedDoctype);break}case k.IN_TABLE_TEXT:{en(this,t);break}}}onStartTag(t){this.skipNextNewLine=!1,this.currentToken=t,this._processStartTag(t),t.selfClosing&&!t.ackSelfClosing&&this._err(t,P.nonVoidHtmlElementStartTagWithTrailingSolidus)}_processStartTag(t){this.shouldProcessStartTagTokenInForeignContent(t)?M7(this,t):this._startTagOutsideForeignContent(t)}_startTagOutsideForeignContent(t){switch(this.insertionMode){case k.INITIAL:{Zr(this,t);break}case k.BEFORE_HTML:{m5(this,t);break}case k.BEFORE_HEAD:{g5(this,t);break}case k.IN_HEAD:{yt(this,t);break}case k.IN_HEAD_NO_SCRIPT:{T5(this,t);break}case k.AFTER_HEAD:{y5(this,t);break}case k.IN_BODY:{We(this,t);break}case k.IN_TABLE:{Rr(this,t);break}case k.IN_TABLE_TEXT:{en(this,t);break}case k.IN_CAPTION:{b7(this,t);break}case k.IN_COLUMN_GROUP:{Bi(this,t);break}case k.IN_TABLE_BODY:{O0(this,t);break}case k.IN_ROW:{L0(this,t);break}case k.IN_CELL:{x7(this,t);break}case k.IN_SELECT:{_c(this,t);break}case k.IN_SELECT_IN_TABLE:{v7(this,t);break}case k.IN_TEMPLATE:{k7(this,t);break}case k.AFTER_BODY:{w7(this,t);break}case k.IN_FRAMESET:{C7(this,t);break}case k.AFTER_FRAMESET:{I7(this,t);break}case k.AFTER_AFTER_BODY:{D7(this,t);break}case k.AFTER_AFTER_FRAMESET:{O7(this,t);break}}}onEndTag(t){this.skipNextNewLine=!1,this.currentToken=t,this.currentNotInHTML?P7(this,t):this._endTagOutsideForeignContent(t)}_endTagOutsideForeignContent(t){switch(this.insertionMode){case k.INITIAL:{Zr(this,t);break}case k.BEFORE_HTML:{p5(this,t);break}case k.BEFORE_HEAD:{b5(this,t);break}case k.IN_HEAD:{E5(this,t);break}case k.IN_HEAD_NO_SCRIPT:{x5(this,t);break}case k.AFTER_HEAD:{v5(this,t);break}case k.IN_BODY:{D0(this,t);break}case k.TEXT:{s7(this,t);break}case k.IN_TABLE:{En(this,t);break}case k.IN_TABLE_TEXT:{en(this,t);break}case k.IN_CAPTION:{E7(this,t);break}case k.IN_COLUMN_GROUP:{T7(this,t);break}case k.IN_TABLE_BODY:{Ja(this,t);break}case k.IN_ROW:{Cc(this,t);break}case k.IN_CELL:{y7(this,t);break}case k.IN_SELECT:{Ic(this,t);break}case k.IN_SELECT_IN_TABLE:{A7(this,t);break}case k.IN_TEMPLATE:{S7(this,t);break}case k.AFTER_BODY:{Dc(this,t);break}case k.IN_FRAMESET:{_7(this,t);break}case k.AFTER_FRAMESET:{N7(this,t);break}case k.AFTER_AFTER_BODY:{Jn(this,t);break}}}onEof(t){switch(this.insertionMode){case k.INITIAL:{Zr(this,t);break}case k.BEFORE_HTML:{ln(this,t);break}case k.BEFORE_HEAD:{on(this,t);break}case k.IN_HEAD:{cn(this,t);break}case k.IN_HEAD_NO_SCRIPT:{hn(this,t);break}case k.AFTER_HEAD:{dn(this,t);break}case k.IN_BODY:case k.IN_TABLE:case k.IN_CAPTION:case k.IN_COLUMN_GROUP:case k.IN_TABLE_BODY:case k.IN_ROW:case k.IN_CELL:case k.IN_SELECT:case k.IN_SELECT_IN_TABLE:{Ac(this,t);break}case k.TEXT:{l7(this,t);break}case k.IN_TABLE_TEXT:{en(this,t);break}case k.IN_TEMPLATE:{Nc(this,t);break}case k.AFTER_BODY:case k.IN_FRAMESET:case k.AFTER_FRAMESET:case k.AFTER_AFTER_BODY:case k.AFTER_AFTER_FRAMESET:{Pi(this,t);break}}}onWhitespaceCharacter(t){if(this.skipNextNewLine&&(this.skipNextNewLine=!1,t.chars.charCodeAt(0)===T.LINE_FEED)){if(t.chars.length===1)return;t.chars=t.chars.substr(1)}if(this.tokenizer.inForeignNode){this._insertCharacters(t);return}switch(this.insertionMode){case k.IN_HEAD:case k.IN_HEAD_NO_SCRIPT:case k.AFTER_HEAD:case k.TEXT:case k.IN_COLUMN_GROUP:case k.IN_SELECT:case k.IN_SELECT_IN_TABLE:case k.IN_FRAMESET:case k.AFTER_FRAMESET:{this._insertCharacters(t);break}case k.IN_BODY:case k.IN_CAPTION:case k.IN_CELL:case k.IN_TEMPLATE:case k.AFTER_BODY:case k.AFTER_AFTER_BODY:case k.AFTER_AFTER_FRAMESET:{Ec(this,t);break}case k.IN_TABLE:case k.IN_TABLE_BODY:case k.IN_ROW:{ba(this,t);break}case k.IN_TABLE_TEXT:{kc(this,t);break}}}}function i5(e,t){let r=e.activeFormattingElements.getElementEntryInScopeWithTagName(t.tagName);return r?e.openElements.contains(r.element)?e.openElements.hasInScope(t.tagID)||(r=null):(e.activeFormattingElements.removeEntry(r),r=null):vc(e,t),r}function u5(e,t){let r=null,n=e.openElements.stackTop;for(;n>=0;n--){const a=e.openElements.items[n];if(a===t.element)break;e._isSpecialElement(a,e.openElements.tagIDs[n])&&(r=a)}return r||(e.openElements.shortenToLength(Math.max(n,0)),e.activeFormattingElements.removeEntry(t)),r}function s5(e,t,r){let n=t,a=e.openElements.getCommonAncestor(t);for(let i=0,u=a;u!==r;i++,u=a){a=e.openElements.getCommonAncestor(u);const s=e.activeFormattingElements.getElementEntry(u),l=s&&i>=n5;!s||l?(l&&e.activeFormattingElements.removeEntry(s),e.openElements.remove(u)):(u=l5(e,s),n===t&&(e.activeFormattingElements.bookmark=s),e.treeAdapter.detachNode(n),e.treeAdapter.appendChild(u,n),n=u)}return n}function l5(e,t){const r=e.treeAdapter.getNamespaceURI(t.element),n=e.treeAdapter.createElement(t.token.tagName,r,t.token.attrs);return e.openElements.replace(t.element,n),t.element=n,n}function o5(e,t,r){const n=e.treeAdapter.getTagName(t),a=qr(n);if(e._isElementCausesFosterParenting(a))e._fosterParentElement(r);else{const i=e.treeAdapter.getNamespaceURI(t);a===o.TEMPLATE&&i===H.HTML&&(t=e.treeAdapter.getTemplateContent(t)),e.treeAdapter.appendChild(t,r)}}function c5(e,t,r){const n=e.treeAdapter.getNamespaceURI(r.element),{token:a}=r,i=e.treeAdapter.createElement(a.tagName,n,a.attrs);e._adoptNodes(t,i),e.treeAdapter.appendChild(t,i),e.activeFormattingElements.insertElementAfterBookmark(i,a),e.activeFormattingElements.removeEntry(r),e.openElements.remove(r.element),e.openElements.insertAfter(t,i,a.tagID)}function Mi(e,t){for(let r=0;r=r;n--)e._setEndLocation(e.openElements.items[n],t);if(!e.fragmentContext&&e.openElements.stackTop>=0){const n=e.openElements.items[0],a=e.treeAdapter.getNodeSourceCodeLocation(n);if(a&&!a.endTag&&(e._setEndLocation(n,t),e.openElements.stackTop>=1)){const i=e.openElements.items[1],u=e.treeAdapter.getNodeSourceCodeLocation(i);u&&!u.endTag&&e._setEndLocation(i,t)}}}}function f5(e,t){e._setDocumentType(t);const r=t.forceQuirks?pt.QUIRKS:Yp(t);qp(t)||e._err(t,P.nonConformingDoctype),e.treeAdapter.setDocumentMode(e.document,r),e.insertionMode=k.BEFORE_HTML}function Zr(e,t){e._err(t,P.missingDoctype,!0),e.treeAdapter.setDocumentMode(e.document,pt.QUIRKS),e.insertionMode=k.BEFORE_HTML,e._processToken(t)}function m5(e,t){t.tagID===o.HTML?(e._insertElement(t,H.HTML),e.insertionMode=k.BEFORE_HEAD):ln(e,t)}function p5(e,t){const r=t.tagID;(r===o.HTML||r===o.HEAD||r===o.BODY||r===o.BR)&&ln(e,t)}function ln(e,t){e._insertFakeRootElement(),e.insertionMode=k.BEFORE_HEAD,e._processToken(t)}function g5(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.HEAD:{e._insertElement(t,H.HTML),e.headElement=e.openElements.current,e.insertionMode=k.IN_HEAD;break}default:on(e,t)}}function b5(e,t){const r=t.tagID;r===o.HEAD||r===o.BODY||r===o.HTML||r===o.BR?on(e,t):e._err(t,P.endTagWithoutMatchingOpenElement)}function on(e,t){e._insertFakeElement(O.HEAD,o.HEAD),e.headElement=e.openElements.current,e.insertionMode=k.IN_HEAD,e._processToken(t)}function yt(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.BASE:case o.BASEFONT:case o.BGSOUND:case o.LINK:case o.META:{e._appendElement(t,H.HTML),t.ackSelfClosing=!0;break}case o.TITLE:{e._switchToTextParsing(t,De.RCDATA);break}case o.NOSCRIPT:{e.options.scriptingEnabled?e._switchToTextParsing(t,De.RAWTEXT):(e._insertElement(t,H.HTML),e.insertionMode=k.IN_HEAD_NO_SCRIPT);break}case o.NOFRAMES:case o.STYLE:{e._switchToTextParsing(t,De.RAWTEXT);break}case o.SCRIPT:{e._switchToTextParsing(t,De.SCRIPT_DATA);break}case o.TEMPLATE:{e._insertTemplate(t),e.activeFormattingElements.insertMarker(),e.framesetOk=!1,e.insertionMode=k.IN_TEMPLATE,e.tmplInsertionModeStack.unshift(k.IN_TEMPLATE);break}case o.HEAD:{e._err(t,P.misplacedStartTagForHeadElement);break}default:cn(e,t)}}function E5(e,t){switch(t.tagID){case o.HEAD:{e.openElements.pop(),e.insertionMode=k.AFTER_HEAD;break}case o.BODY:case o.BR:case o.HTML:{cn(e,t);break}case o.TEMPLATE:{Tr(e,t);break}default:e._err(t,P.endTagWithoutMatchingOpenElement)}}function Tr(e,t){e.openElements.tmplCount>0?(e.openElements.generateImpliedEndTagsThoroughly(),e.openElements.currentTagId!==o.TEMPLATE&&e._err(t,P.closingOfElementWithOpenChildElements),e.openElements.popUntilTagNamePopped(o.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e.tmplInsertionModeStack.shift(),e._resetInsertionMode()):e._err(t,P.endTagWithoutMatchingOpenElement)}function cn(e,t){e.openElements.pop(),e.insertionMode=k.AFTER_HEAD,e._processToken(t)}function T5(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.BASEFONT:case o.BGSOUND:case o.HEAD:case o.LINK:case o.META:case o.NOFRAMES:case o.STYLE:{yt(e,t);break}case o.NOSCRIPT:{e._err(t,P.nestedNoscriptInHead);break}default:hn(e,t)}}function x5(e,t){switch(t.tagID){case o.NOSCRIPT:{e.openElements.pop(),e.insertionMode=k.IN_HEAD;break}case o.BR:{hn(e,t);break}default:e._err(t,P.endTagWithoutMatchingOpenElement)}}function hn(e,t){const r=t.type===de.EOF?P.openElementsLeftAfterEof:P.disallowedContentInNoscriptInHead;e._err(t,r),e.openElements.pop(),e.insertionMode=k.IN_HEAD,e._processToken(t)}function y5(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.BODY:{e._insertElement(t,H.HTML),e.framesetOk=!1,e.insertionMode=k.IN_BODY;break}case o.FRAMESET:{e._insertElement(t,H.HTML),e.insertionMode=k.IN_FRAMESET;break}case o.BASE:case o.BASEFONT:case o.BGSOUND:case o.LINK:case o.META:case o.NOFRAMES:case o.SCRIPT:case o.STYLE:case o.TEMPLATE:case o.TITLE:{e._err(t,P.abandonedHeadElementChild),e.openElements.push(e.headElement,o.HEAD),yt(e,t),e.openElements.remove(e.headElement);break}case o.HEAD:{e._err(t,P.misplacedStartTagForHeadElement);break}default:dn(e,t)}}function v5(e,t){switch(t.tagID){case o.BODY:case o.HTML:case o.BR:{dn(e,t);break}case o.TEMPLATE:{Tr(e,t);break}default:e._err(t,P.endTagWithoutMatchingOpenElement)}}function dn(e,t){e._insertFakeElement(O.BODY,o.BODY),e.insertionMode=k.IN_BODY,N0(e,t)}function N0(e,t){switch(t.type){case de.CHARACTER:{Tc(e,t);break}case de.WHITESPACE_CHARACTER:{Ec(e,t);break}case de.COMMENT:{Ka(e,t);break}case de.START_TAG:{We(e,t);break}case de.END_TAG:{D0(e,t);break}case de.EOF:{Ac(e,t);break}}}function Ec(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t)}function Tc(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t),e.framesetOk=!1}function A5(e,t){e.openElements.tmplCount===0&&e.treeAdapter.adoptAttributes(e.openElements.items[0],t.attrs)}function k5(e,t){const r=e.openElements.tryPeekProperlyNestedBodyElement();r&&e.openElements.tmplCount===0&&(e.framesetOk=!1,e.treeAdapter.adoptAttributes(r,t.attrs))}function S5(e,t){const r=e.openElements.tryPeekProperlyNestedBodyElement();e.framesetOk&&r&&(e.treeAdapter.detachNode(r),e.openElements.popAllUpToHtmlElement(),e._insertElement(t,H.HTML),e.insertionMode=k.IN_FRAMESET)}function w5(e,t){e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._insertElement(t,H.HTML)}function C5(e,t){e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e.openElements.currentTagId!==void 0&&Qa.has(e.openElements.currentTagId)&&e.openElements.pop(),e._insertElement(t,H.HTML)}function _5(e,t){e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._insertElement(t,H.HTML),e.skipNextNewLine=!0,e.framesetOk=!1}function I5(e,t){const r=e.openElements.tmplCount>0;(!e.formElement||r)&&(e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._insertElement(t,H.HTML),r||(e.formElement=e.openElements.current))}function N5(e,t){e.framesetOk=!1;const r=t.tagID;for(let n=e.openElements.stackTop;n>=0;n--){const a=e.openElements.tagIDs[n];if(r===o.LI&&a===o.LI||(r===o.DD||r===o.DT)&&(a===o.DD||a===o.DT)){e.openElements.generateImpliedEndTagsWithExclusion(a),e.openElements.popUntilTagNamePopped(a);break}if(a!==o.ADDRESS&&a!==o.DIV&&a!==o.P&&e._isSpecialElement(e.openElements.items[n],a))break}e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._insertElement(t,H.HTML)}function D5(e,t){e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._insertElement(t,H.HTML),e.tokenizer.state=De.PLAINTEXT}function O5(e,t){e.openElements.hasInScope(o.BUTTON)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(o.BUTTON)),e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML),e.framesetOk=!1}function L5(e,t){const r=e.activeFormattingElements.getElementEntryInScopeWithTagName(O.A);r&&(Mi(e,t),e.openElements.remove(r.element),e.activeFormattingElements.removeEntry(r)),e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}function R5(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}function M5(e,t){e._reconstructActiveFormattingElements(),e.openElements.hasInScope(o.NOBR)&&(Mi(e,t),e._reconstructActiveFormattingElements()),e._insertElement(t,H.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}function P5(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML),e.activeFormattingElements.insertMarker(),e.framesetOk=!1}function B5(e,t){e.treeAdapter.getDocumentMode(e.document)!==pt.QUIRKS&&e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._insertElement(t,H.HTML),e.framesetOk=!1,e.insertionMode=k.IN_TABLE}function xc(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,H.HTML),e.framesetOk=!1,t.ackSelfClosing=!0}function yc(e){const t=oc(e,mr.TYPE);return t!=null&&t.toLowerCase()===t5}function F5(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,H.HTML),yc(t)||(e.framesetOk=!1),t.ackSelfClosing=!0}function H5(e,t){e._appendElement(t,H.HTML),t.ackSelfClosing=!0}function z5(e,t){e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._appendElement(t,H.HTML),e.framesetOk=!1,t.ackSelfClosing=!0}function U5(e,t){t.tagName=O.IMG,t.tagID=o.IMG,xc(e,t)}function q5(e,t){e._insertElement(t,H.HTML),e.skipNextNewLine=!0,e.tokenizer.state=De.RCDATA,e.originalInsertionMode=e.insertionMode,e.framesetOk=!1,e.insertionMode=k.TEXT}function Y5(e,t){e.openElements.hasInButtonScope(o.P)&&e._closePElement(),e._reconstructActiveFormattingElements(),e.framesetOk=!1,e._switchToTextParsing(t,De.RAWTEXT)}function G5(e,t){e.framesetOk=!1,e._switchToTextParsing(t,De.RAWTEXT)}function Bs(e,t){e._switchToTextParsing(t,De.RAWTEXT)}function V5(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML),e.framesetOk=!1,e.insertionMode=e.insertionMode===k.IN_TABLE||e.insertionMode===k.IN_CAPTION||e.insertionMode===k.IN_TABLE_BODY||e.insertionMode===k.IN_ROW||e.insertionMode===k.IN_CELL?k.IN_SELECT_IN_TABLE:k.IN_SELECT}function j5(e,t){e.openElements.currentTagId===o.OPTION&&e.openElements.pop(),e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML)}function W5(e,t){e.openElements.hasInScope(o.RUBY)&&e.openElements.generateImpliedEndTags(),e._insertElement(t,H.HTML)}function X5(e,t){e.openElements.hasInScope(o.RUBY)&&e.openElements.generateImpliedEndTagsWithExclusion(o.RTC),e._insertElement(t,H.HTML)}function $5(e,t){e._reconstructActiveFormattingElements(),pc(t),Ri(t),t.selfClosing?e._appendElement(t,H.MATHML):e._insertElement(t,H.MATHML),t.ackSelfClosing=!0}function Q5(e,t){e._reconstructActiveFormattingElements(),gc(t),Ri(t),t.selfClosing?e._appendElement(t,H.SVG):e._insertElement(t,H.SVG),t.ackSelfClosing=!0}function Fs(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,H.HTML)}function We(e,t){switch(t.tagID){case o.I:case o.S:case o.B:case o.U:case o.EM:case o.TT:case o.BIG:case o.CODE:case o.FONT:case o.SMALL:case o.STRIKE:case o.STRONG:{R5(e,t);break}case o.A:{L5(e,t);break}case o.H1:case o.H2:case o.H3:case o.H4:case o.H5:case o.H6:{C5(e,t);break}case o.P:case o.DL:case o.OL:case o.UL:case o.DIV:case o.DIR:case o.NAV:case o.MAIN:case o.MENU:case o.ASIDE:case o.CENTER:case o.FIGURE:case o.FOOTER:case o.HEADER:case o.HGROUP:case o.DIALOG:case o.DETAILS:case o.ADDRESS:case o.ARTICLE:case o.SEARCH:case o.SECTION:case o.SUMMARY:case o.FIELDSET:case o.BLOCKQUOTE:case o.FIGCAPTION:{w5(e,t);break}case o.LI:case o.DD:case o.DT:{N5(e,t);break}case o.BR:case o.IMG:case o.WBR:case o.AREA:case o.EMBED:case o.KEYGEN:{xc(e,t);break}case o.HR:{z5(e,t);break}case o.RB:case o.RTC:{W5(e,t);break}case o.RT:case o.RP:{X5(e,t);break}case o.PRE:case o.LISTING:{_5(e,t);break}case o.XMP:{Y5(e,t);break}case o.SVG:{Q5(e,t);break}case o.HTML:{A5(e,t);break}case o.BASE:case o.LINK:case o.META:case o.STYLE:case o.TITLE:case o.SCRIPT:case o.BGSOUND:case o.BASEFONT:case o.TEMPLATE:{yt(e,t);break}case o.BODY:{k5(e,t);break}case o.FORM:{I5(e,t);break}case o.NOBR:{M5(e,t);break}case o.MATH:{$5(e,t);break}case o.TABLE:{B5(e,t);break}case o.INPUT:{F5(e,t);break}case o.PARAM:case o.TRACK:case o.SOURCE:{H5(e,t);break}case o.IMAGE:{U5(e,t);break}case o.BUTTON:{O5(e,t);break}case o.APPLET:case o.OBJECT:case o.MARQUEE:{P5(e,t);break}case o.IFRAME:{G5(e,t);break}case o.SELECT:{V5(e,t);break}case o.OPTION:case o.OPTGROUP:{j5(e,t);break}case o.NOEMBED:case o.NOFRAMES:{Bs(e,t);break}case o.FRAMESET:{S5(e,t);break}case o.TEXTAREA:{q5(e,t);break}case o.NOSCRIPT:{e.options.scriptingEnabled?Bs(e,t):Fs(e,t);break}case o.PLAINTEXT:{D5(e,t);break}case o.COL:case o.TH:case o.TD:case o.TR:case o.HEAD:case o.FRAME:case o.TBODY:case o.TFOOT:case o.THEAD:case o.CAPTION:case o.COLGROUP:break;default:Fs(e,t)}}function K5(e,t){if(e.openElements.hasInScope(o.BODY)&&(e.insertionMode=k.AFTER_BODY,e.options.sourceCodeLocationInfo)){const r=e.openElements.tryPeekProperlyNestedBodyElement();r&&e._setEndLocation(r,t)}}function J5(e,t){e.openElements.hasInScope(o.BODY)&&(e.insertionMode=k.AFTER_BODY,Dc(e,t))}function Z5(e,t){const r=t.tagID;e.openElements.hasInScope(r)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(r))}function e7(e){const t=e.openElements.tmplCount>0,{formElement:r}=e;t||(e.formElement=null),(r||t)&&e.openElements.hasInScope(o.FORM)&&(e.openElements.generateImpliedEndTags(),t?e.openElements.popUntilTagNamePopped(o.FORM):r&&e.openElements.remove(r))}function t7(e){e.openElements.hasInButtonScope(o.P)||e._insertFakeElement(O.P,o.P),e._closePElement()}function r7(e){e.openElements.hasInListItemScope(o.LI)&&(e.openElements.generateImpliedEndTagsWithExclusion(o.LI),e.openElements.popUntilTagNamePopped(o.LI))}function n7(e,t){const r=t.tagID;e.openElements.hasInScope(r)&&(e.openElements.generateImpliedEndTagsWithExclusion(r),e.openElements.popUntilTagNamePopped(r))}function a7(e){e.openElements.hasNumberedHeaderInScope()&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilNumberedHeaderPopped())}function i7(e,t){const r=t.tagID;e.openElements.hasInScope(r)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(r),e.activeFormattingElements.clearToLastMarker())}function u7(e){e._reconstructActiveFormattingElements(),e._insertFakeElement(O.BR,o.BR),e.openElements.pop(),e.framesetOk=!1}function vc(e,t){const r=t.tagName,n=t.tagID;for(let a=e.openElements.stackTop;a>0;a--){const i=e.openElements.items[a],u=e.openElements.tagIDs[a];if(n===u&&(n!==o.UNKNOWN||e.treeAdapter.getTagName(i)===r)){e.openElements.generateImpliedEndTagsWithExclusion(n),e.openElements.stackTop>=a&&e.openElements.shortenToLength(a);break}if(e._isSpecialElement(i,u))break}}function D0(e,t){switch(t.tagID){case o.A:case o.B:case o.I:case o.S:case o.U:case o.EM:case o.TT:case o.BIG:case o.CODE:case o.FONT:case o.NOBR:case o.SMALL:case o.STRIKE:case o.STRONG:{Mi(e,t);break}case o.P:{t7(e);break}case o.DL:case o.UL:case o.OL:case o.DIR:case o.DIV:case o.NAV:case o.PRE:case o.MAIN:case o.MENU:case o.ASIDE:case o.BUTTON:case o.CENTER:case o.FIGURE:case o.FOOTER:case o.HEADER:case o.HGROUP:case o.DIALOG:case o.ADDRESS:case o.ARTICLE:case o.DETAILS:case o.SEARCH:case o.SECTION:case o.SUMMARY:case o.LISTING:case o.FIELDSET:case o.BLOCKQUOTE:case o.FIGCAPTION:{Z5(e,t);break}case o.LI:{r7(e);break}case o.DD:case o.DT:{n7(e,t);break}case o.H1:case o.H2:case o.H3:case o.H4:case o.H5:case o.H6:{a7(e);break}case o.BR:{u7(e);break}case o.BODY:{K5(e,t);break}case o.HTML:{J5(e,t);break}case o.FORM:{e7(e);break}case o.APPLET:case o.OBJECT:case o.MARQUEE:{i7(e,t);break}case o.TEMPLATE:{Tr(e,t);break}default:vc(e,t)}}function Ac(e,t){e.tmplInsertionModeStack.length>0?Nc(e,t):Pi(e,t)}function s7(e,t){var r;t.tagID===o.SCRIPT&&((r=e.scriptHandler)===null||r===void 0||r.call(e,e.openElements.current)),e.openElements.pop(),e.insertionMode=e.originalInsertionMode}function l7(e,t){e._err(t,P.eofInElementThatCanContainOnlyText),e.openElements.pop(),e.insertionMode=e.originalInsertionMode,e.onEof(t)}function ba(e,t){if(e.openElements.currentTagId!==void 0&&bc.has(e.openElements.currentTagId))switch(e.pendingCharacterTokens.length=0,e.hasNonWhitespacePendingCharacterToken=!1,e.originalInsertionMode=e.insertionMode,e.insertionMode=k.IN_TABLE_TEXT,t.type){case de.CHARACTER:{Sc(e,t);break}case de.WHITESPACE_CHARACTER:{kc(e,t);break}}else wn(e,t)}function o7(e,t){e.openElements.clearBackToTableContext(),e.activeFormattingElements.insertMarker(),e._insertElement(t,H.HTML),e.insertionMode=k.IN_CAPTION}function c7(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,H.HTML),e.insertionMode=k.IN_COLUMN_GROUP}function h7(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(O.COLGROUP,o.COLGROUP),e.insertionMode=k.IN_COLUMN_GROUP,Bi(e,t)}function d7(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,H.HTML),e.insertionMode=k.IN_TABLE_BODY}function f7(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(O.TBODY,o.TBODY),e.insertionMode=k.IN_TABLE_BODY,O0(e,t)}function m7(e,t){e.openElements.hasInTableScope(o.TABLE)&&(e.openElements.popUntilTagNamePopped(o.TABLE),e._resetInsertionMode(),e._processStartTag(t))}function p7(e,t){yc(t)?e._appendElement(t,H.HTML):wn(e,t),t.ackSelfClosing=!0}function g7(e,t){!e.formElement&&e.openElements.tmplCount===0&&(e._insertElement(t,H.HTML),e.formElement=e.openElements.current,e.openElements.pop())}function Rr(e,t){switch(t.tagID){case o.TD:case o.TH:case o.TR:{f7(e,t);break}case o.STYLE:case o.SCRIPT:case o.TEMPLATE:{yt(e,t);break}case o.COL:{h7(e,t);break}case o.FORM:{g7(e,t);break}case o.TABLE:{m7(e,t);break}case o.TBODY:case o.TFOOT:case o.THEAD:{d7(e,t);break}case o.INPUT:{p7(e,t);break}case o.CAPTION:{o7(e,t);break}case o.COLGROUP:{c7(e,t);break}default:wn(e,t)}}function En(e,t){switch(t.tagID){case o.TABLE:{e.openElements.hasInTableScope(o.TABLE)&&(e.openElements.popUntilTagNamePopped(o.TABLE),e._resetInsertionMode());break}case o.TEMPLATE:{Tr(e,t);break}case o.BODY:case o.CAPTION:case o.COL:case o.COLGROUP:case o.HTML:case o.TBODY:case o.TD:case o.TFOOT:case o.TH:case o.THEAD:case o.TR:break;default:wn(e,t)}}function wn(e,t){const r=e.fosterParentingEnabled;e.fosterParentingEnabled=!0,N0(e,t),e.fosterParentingEnabled=r}function kc(e,t){e.pendingCharacterTokens.push(t)}function Sc(e,t){e.pendingCharacterTokens.push(t),e.hasNonWhitespacePendingCharacterToken=!0}function en(e,t){let r=0;if(e.hasNonWhitespacePendingCharacterToken)for(;r0&&e.openElements.currentTagId===o.OPTION&&e.openElements.tagIDs[e.openElements.stackTop-1]===o.OPTGROUP&&e.openElements.pop(),e.openElements.currentTagId===o.OPTGROUP&&e.openElements.pop();break}case o.OPTION:{e.openElements.currentTagId===o.OPTION&&e.openElements.pop();break}case o.SELECT:{e.openElements.hasInSelectScope(o.SELECT)&&(e.openElements.popUntilTagNamePopped(o.SELECT),e._resetInsertionMode());break}case o.TEMPLATE:{Tr(e,t);break}}}function v7(e,t){const r=t.tagID;r===o.CAPTION||r===o.TABLE||r===o.TBODY||r===o.TFOOT||r===o.THEAD||r===o.TR||r===o.TD||r===o.TH?(e.openElements.popUntilTagNamePopped(o.SELECT),e._resetInsertionMode(),e._processStartTag(t)):_c(e,t)}function A7(e,t){const r=t.tagID;r===o.CAPTION||r===o.TABLE||r===o.TBODY||r===o.TFOOT||r===o.THEAD||r===o.TR||r===o.TD||r===o.TH?e.openElements.hasInTableScope(r)&&(e.openElements.popUntilTagNamePopped(o.SELECT),e._resetInsertionMode(),e.onEndTag(t)):Ic(e,t)}function k7(e,t){switch(t.tagID){case o.BASE:case o.BASEFONT:case o.BGSOUND:case o.LINK:case o.META:case o.NOFRAMES:case o.SCRIPT:case o.STYLE:case o.TEMPLATE:case o.TITLE:{yt(e,t);break}case o.CAPTION:case o.COLGROUP:case o.TBODY:case o.TFOOT:case o.THEAD:{e.tmplInsertionModeStack[0]=k.IN_TABLE,e.insertionMode=k.IN_TABLE,Rr(e,t);break}case o.COL:{e.tmplInsertionModeStack[0]=k.IN_COLUMN_GROUP,e.insertionMode=k.IN_COLUMN_GROUP,Bi(e,t);break}case o.TR:{e.tmplInsertionModeStack[0]=k.IN_TABLE_BODY,e.insertionMode=k.IN_TABLE_BODY,O0(e,t);break}case o.TD:case o.TH:{e.tmplInsertionModeStack[0]=k.IN_ROW,e.insertionMode=k.IN_ROW,L0(e,t);break}default:e.tmplInsertionModeStack[0]=k.IN_BODY,e.insertionMode=k.IN_BODY,We(e,t)}}function S7(e,t){t.tagID===o.TEMPLATE&&Tr(e,t)}function Nc(e,t){e.openElements.tmplCount>0?(e.openElements.popUntilTagNamePopped(o.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e.tmplInsertionModeStack.shift(),e._resetInsertionMode(),e.onEof(t)):Pi(e,t)}function w7(e,t){t.tagID===o.HTML?We(e,t):o0(e,t)}function Dc(e,t){var r;if(t.tagID===o.HTML){if(e.fragmentContext||(e.insertionMode=k.AFTER_AFTER_BODY),e.options.sourceCodeLocationInfo&&e.openElements.tagIDs[0]===o.HTML){e._setEndLocation(e.openElements.items[0],t);const n=e.openElements.items[1];n&&!(!((r=e.treeAdapter.getNodeSourceCodeLocation(n))===null||r===void 0)&&r.endTag)&&e._setEndLocation(n,t)}}else o0(e,t)}function o0(e,t){e.insertionMode=k.IN_BODY,N0(e,t)}function C7(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.FRAMESET:{e._insertElement(t,H.HTML);break}case o.FRAME:{e._appendElement(t,H.HTML),t.ackSelfClosing=!0;break}case o.NOFRAMES:{yt(e,t);break}}}function _7(e,t){t.tagID===o.FRAMESET&&!e.openElements.isRootHtmlElementCurrent()&&(e.openElements.pop(),!e.fragmentContext&&e.openElements.currentTagId!==o.FRAMESET&&(e.insertionMode=k.AFTER_FRAMESET))}function I7(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.NOFRAMES:{yt(e,t);break}}}function N7(e,t){t.tagID===o.HTML&&(e.insertionMode=k.AFTER_AFTER_FRAMESET)}function D7(e,t){t.tagID===o.HTML?We(e,t):Jn(e,t)}function Jn(e,t){e.insertionMode=k.IN_BODY,N0(e,t)}function O7(e,t){switch(t.tagID){case o.HTML:{We(e,t);break}case o.NOFRAMES:{yt(e,t);break}}}function L7(e,t){t.chars=Se,e._insertCharacters(t)}function R7(e,t){e._insertCharacters(t),e.framesetOk=!1}function Oc(e){for(;e.treeAdapter.getNamespaceURI(e.openElements.current)!==H.HTML&&e.openElements.currentTagId!==void 0&&!e._isIntegrationPoint(e.openElements.currentTagId,e.openElements.current);)e.openElements.pop()}function M7(e,t){if(Qp(t))Oc(e),e._startTagOutsideForeignContent(t);else{const r=e._getAdjustedCurrentElement(),n=e.treeAdapter.getNamespaceURI(r);n===H.MATHML?pc(t):n===H.SVG&&(Kp(t),gc(t)),Ri(t),t.selfClosing?e._appendElement(t,n):e._insertElement(t,n),t.ackSelfClosing=!0}}function P7(e,t){if(t.tagID===o.P||t.tagID===o.BR){Oc(e),e._endTagOutsideForeignContent(t);return}for(let r=e.openElements.stackTop;r>0;r--){const n=e.openElements.items[r];if(e.treeAdapter.getNamespaceURI(n)===H.HTML){e._endTagOutsideForeignContent(t);break}const a=e.treeAdapter.getTagName(n);if(a.toLowerCase()===t.tagName){t.tagName=a,e.openElements.shortenToLength(r);break}}}O.AREA,O.BASE,O.BASEFONT,O.BGSOUND,O.BR,O.COL,O.EMBED,O.FRAME,O.HR,O.IMG,O.INPUT,O.KEYGEN,O.LINK,O.META,O.PARAM,O.SOURCE,O.TRACK,O.WBR;const B7=/<(\/?)(iframe|noembed|noframes|plaintext|script|style|textarea|title|xmp)(?=[\t\n\f\r />])/gi,F7=new Set(["mdxFlowExpression","mdxJsxFlowElement","mdxJsxTextElement","mdxTextExpression","mdxjsEsm"]),Hs={sourceCodeLocationInfo:!0,scriptingEnabled:!1};function Lc(e,t){const r=X7(e),n=_l("type",{handlers:{root:H7,element:z7,text:U7,comment:Mc,doctype:q7,raw:G7},unknown:V7}),a={parser:r?new Ps(Hs):Ps.getFragmentParser(void 0,Hs),handle(s){n(s,a)},stitches:!1,options:t||{}};n(e,a),Yr(a,_t());const i=r?a.parser.document:a.parser.getFragment(),u=$6(i,{file:a.options.file});return a.stitches&&b0(u,"comment",function(s,l,c){const d=s;if(d.value.stitch&&c&&l!==void 0){const f=c.children;return f[l]=d.value.stitch,l}}),u.type==="root"&&u.children.length===1&&u.children[0].type===e.type?u.children[0]:u}function Rc(e,t){let r=-1;if(e)for(;++r4&&(t.parser.tokenizer.state=0);const r={type:de.CHARACTER,chars:e.value,location:Cn(e)};Yr(t,_t(e)),t.parser.currentToken=r,t.parser._processToken(t.parser.currentToken)}function q7(e,t){const r={type:de.DOCTYPE,name:"html",forceQuirks:!1,publicId:"",systemId:"",location:Cn(e)};Yr(t,_t(e)),t.parser.currentToken=r,t.parser._processToken(t.parser.currentToken)}function Y7(e,t){t.stitches=!0;const r=$7(e);if("children"in e&&"children"in r){const n=Lc({type:"root",children:e.children},t.options);r.children=n.children}Mc({type:"comment",value:{stitch:r}},t)}function Mc(e,t){const r=e.value,n={type:de.COMMENT,data:r,location:Cn(e)};Yr(t,_t(e)),t.parser.currentToken=n,t.parser._processToken(t.parser.currentToken)}function G7(e,t){if(t.parser.tokenizer.preprocessor.html="",t.parser.tokenizer.preprocessor.pos=-1,t.parser.tokenizer.preprocessor.lastGapPos=-2,t.parser.tokenizer.preprocessor.gapStack=[],t.parser.tokenizer.preprocessor.skipNextNewLine=!1,t.parser.tokenizer.preprocessor.lastChunkWritten=!1,t.parser.tokenizer.preprocessor.endOfChunkHit=!1,t.parser.tokenizer.preprocessor.isEol=!1,Pc(t,_t(e)),t.parser.tokenizer.write(t.options.tagfilter?e.value.replace(B7,"<$1$2"):e.value,!1),t.parser.tokenizer._runParsingLoop(),t.parser.tokenizer.state===72||t.parser.tokenizer.state===78){t.parser.tokenizer.preprocessor.lastChunkWritten=!0;const r=t.parser.tokenizer._consume();t.parser.tokenizer._callState(r)}}function V7(e,t){const r=e;if(t.options.passThrough&&t.options.passThrough.includes(r.type))Y7(r,t);else{let n="";throw F7.has(r.type)&&(n=". It looks like you are using MDX nodes with `hast-util-raw` (or `rehype-raw`). If you use this because you are using remark or rehype plugins that inject `'html'` nodes, then please raise an issue with that plugin, as its a bad and slow idea. If you use this because you are using markdown syntax, then you have to configure this utility (or plugin) to pass through these nodes (see `passThrough` in docs), but you can also migrate to use the MDX syntax"),new Error("Cannot compile `"+r.type+"` node"+n)}}function Yr(e,t){Pc(e,t);const r=e.parser.tokenizer.currentCharacterToken;r&&r.location&&(r.location.endLine=e.parser.tokenizer.preprocessor.line,r.location.endCol=e.parser.tokenizer.preprocessor.col+1,r.location.endOffset=e.parser.tokenizer.preprocessor.offset+1,e.parser.currentToken=r,e.parser._processToken(e.parser.currentToken)),e.parser.tokenizer.paused=!1,e.parser.tokenizer.inLoop=!1,e.parser.tokenizer.active=!1,e.parser.tokenizer.returnState=De.DATA,e.parser.tokenizer.charRefCode=-1,e.parser.tokenizer.consumedAfterSnapshot=-1,e.parser.tokenizer.currentLocation=null,e.parser.tokenizer.currentCharacterToken=null,e.parser.tokenizer.currentToken=null,e.parser.tokenizer.currentAttr={name:"",value:""}}function Pc(e,t){if(t&&t.offset!==void 0){const r={startLine:t.line,startCol:t.column,startOffset:t.offset,endLine:-1,endCol:-1,endOffset:-1};e.parser.tokenizer.preprocessor.lineStartPos=-t.column+1,e.parser.tokenizer.preprocessor.droppedBufferSize=t.offset,e.parser.tokenizer.preprocessor.line=t.line,e.parser.tokenizer.currentLocation=r}}function j7(e,t){const r=e.tagName.toLowerCase();if(t.parser.tokenizer.state===De.PLAINTEXT)return;Yr(t,_t(e));const n=t.parser.openElements.current;let a="namespaceURI"in n?n.namespaceURI:Ct.html;a===Ct.html&&r==="svg"&&(a=Ct.svg);const i=ep({...e,children:[]},{space:a===Ct.svg?"svg":"html"}),u={type:de.START_TAG,tagName:r,tagID:qr(r),selfClosing:!1,ackSelfClosing:!1,attrs:"attrs"in i?i.attrs:[],location:Cn(e)};t.parser.currentToken=u,t.parser._processToken(t.parser.currentToken),t.parser.tokenizer.lastStartTagName=r}function W7(e,t){const r=e.tagName.toLowerCase();if(!t.parser.tokenizer.inForeignNode&&lp.includes(r)||t.parser.tokenizer.state===De.PLAINTEXT)return;Yr(t,d0(e));const n={type:de.END_TAG,tagName:r,tagID:qr(r),selfClosing:!1,ackSelfClosing:!1,attrs:[],location:Cn(e)};t.parser.currentToken=n,t.parser._processToken(t.parser.currentToken),r===t.parser.tokenizer.lastStartTagName&&(t.parser.tokenizer.state===De.RCDATA||t.parser.tokenizer.state===De.RAWTEXT||t.parser.tokenizer.state===De.SCRIPT_DATA)&&(t.parser.tokenizer.state=De.DATA)}function X7(e){const t=e.type==="root"?e.children[0]:e;return!!(t&&(t.type==="doctype"||t.type==="element"&&t.tagName.toLowerCase()==="html"))}function Cn(e){const t=_t(e)||{line:void 0,column:void 0,offset:void 0},r=d0(e)||{line:void 0,column:void 0,offset:void 0};return{startLine:t.line,startCol:t.column,startOffset:t.offset,endLine:r.line,endCol:r.column,endOffset:r.offset}}function $7(e){return"children"in e?Nr({...e,children:[]}):Nr(e)}function Q7(e){return function(t,r){return Lc(t,{...e,file:r})}}function c0(e){return typeof e=="string"?e:typeof e=="number"?String(e):e?Array.isArray(e)?e.map(c0).join(""):typeof e=="object"&&"props"in e?c0(e.props.children):"":""}function K7(e){return e.replace(/\$[^$]*\$/g,"").replace(/\\[a-zA-Z]+\{[^}]*\}/g,"").replace(/[\\{}]/g,"").toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")}function Sr(e){return function({children:r,...n}){const a=c0(r),i=n.id||K7(a);return pe.jsx(e,{...n,id:i,children:r})}}const J7={h1:Sr("h1"),h2:Sr("h2"),h3:Sr("h3"),h4:Sr("h4"),h5:Sr("h5"),h6:Sr("h6")};function a8(){const{id:e}=Bc(),t=zc.find(d=>d.id===e),[r,n]=Xr.useState(""),[a,i]=Xr.useState(null),[u,s]=Xr.useState(null);Xr.useEffect(()=>{if(!t)return;const d=new AbortController,f=t.filename;return fetch(`/blog/${f}`,{signal:d.signal}).then(g=>{if(!g.ok)throw new Error("Failed to load post");return g.text()}).then(g=>{const p=g.replace(/^\s*#[^#\n]*\r?\n/,"");n(p),i(f),s(null)}).catch(g=>{g instanceof DOMException&&g.name==="AbortError"||(console.error(g),i(f),s(f))}),()=>d.abort()},[t]);const l=!!(t&&a!==t.filename),c=!!(t&&u===t.filename);return Xr.useEffect(()=>{function d(f){const p=f.target.closest("a");if(!p)return;const x=p.getAttribute("href");if(!x||!x.startsWith("#"))return;f.preventDefault();const S=document.getElementById(x.slice(1));S&&(S.scrollIntoView({behavior:"smooth",block:"start"}),window.history.pushState(null,"",x))}return document.addEventListener("click",d),()=>document.removeEventListener("click",d)},[]),t?pe.jsxs("div",{className:"min-h-screen bg-slate-950 text-slate-50 font-sans selection:bg-cyan-400/30",children:[pe.jsx(Fc,{title:`${t.title} - QECTOR Blog`,description:t.description}),pe.jsxs("div",{className:"pt-32 pb-24 relative overflow-hidden",children:[pe.jsx("div",{className:"absolute top-0 right-0 w-[800px] h-[800px] bg-cyan-900/10 blur-[120px] rounded-full pointer-events-none -translate-y-1/2 translate-x-1/3"}),pe.jsx("div",{className:"absolute bottom-0 left-0 w-[600px] h-[600px] bg-slate-800/20 blur-[100px] rounded-full pointer-events-none translate-y-1/3 -translate-x-1/3"}),pe.jsxs("div",{className:"max-w-4xl mx-auto px-6 relative z-10",children:[pe.jsxs(P0,{to:"/blog",className:"inline-flex items-center min-h-[44px] text-slate-400 hover:text-cyan-300 mb-12 transition-colors duration-300 font-medium tracking-wide",children:[pe.jsx(Uc,{size:18,className:"mr-2"}),"Back to All Articles"]}),pe.jsxs("header",{className:"mb-16 border-b border-slate-800/60 pb-10",children:[pe.jsxs("div",{className:"flex flex-wrap items-center text-cyan-300 mb-6 gap-4",children:[pe.jsxs("span",{className:"flex items-center text-sm font-semibold tracking-widest uppercase",children:[pe.jsx(qc,{size:16,className:"mr-2"}),t.date]}),pe.jsx("span",{className:"rounded-full border border-slate-700 px-3 py-1 text-xs font-semibold tracking-wider text-slate-400",children:t.category}),pe.jsxs("span",{className:"text-sm text-slate-400",children:["By ",pe.jsx(P0,{to:"/guillaume-lessard",className:"hover:text-cyan-300",children:"Guillaume Lessard"}),r?` · ${Math.max(1,Math.round(r.split(/\s+/).length/220))} min read`:""]})]}),pe.jsx("h1",{className:"text-4xl md:text-5xl lg:text-6xl font-extrabold tracking-tight mb-8 leading-tight text-white",children:t.title}),pe.jsx("p",{className:"text-xl text-slate-300 leading-relaxed max-w-3xl",children:t.description})]}),pe.jsx("div",{className:"bg-slate-900/40 backdrop-blur-md border border-slate-800/80 rounded-3xl p-8 md:p-12 shadow-2xl",children:l?pe.jsxs("div",{className:"flex flex-col items-center justify-center py-20 text-slate-400",children:[pe.jsx(Yc,{size:48,className:"animate-spin text-cyan-400 mb-4"}),pe.jsx("p",{className:"animate-pulse",children:"Loading article..."})]}):c?pe.jsx("div",{className:"py-20 text-center text-red-400",children:pe.jsx("p",{children:"Failed to load the article. Please try again later."})}):pe.jsx("article",{className:"prose prose-invert prose-cyan max-w-none prose-headings:font-bold prose-headings:tracking-tight prose-a:text-cyan-300 prose-a:no-underline hover:prose-a:underline prose-code:text-cyan-200 prose-code:bg-cyan-950/30 prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded-md prose-pre:bg-slate-950/80 prose-pre:border prose-pre:border-slate-800 prose-img:rounded-xl prose-img:border prose-img:border-slate-800",children:pe.jsx(Qf,{remarkPlugins:[l4,g6],rehypePlugins:[j6,Q7],components:{...J7,table:d=>{const{node:f,...g}=d;return pe.jsx("div",{className:"overflow-x-auto",children:pe.jsx("table",{...g})})},pre:d=>{const{children:f}=d,g=Fi.Children.toArray(f)[0];let p="",x="text";if(Fi.isValidElement(g)){const S=g.props,D=/language-([\w-]+)/.exec(S.className||"");D&&(x=D[1]),p=c0(S.children).replace(/\n$/,"")}return pe.jsx(Hc,{code:p,language:x,className:"not-prose"})},img:d=>{const f=d.width!=null&&d.height!=null;return pe.jsx("img",{...d,className:f?"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto":"rounded-xl border border-slate-800 shadow-xl max-w-full h-auto aspect-video object-cover",loading:"lazy"})}},children:r})})})]})]})]}):pe.jsx("div",{className:"min-h-screen bg-slate-950 text-slate-50 flex items-center justify-center",children:pe.jsxs("div",{className:"text-center",children:[pe.jsx("h1",{className:"text-4xl font-bold mb-4",children:"Post Not Found"}),pe.jsx(P0,{to:"/blog",className:"text-cyan-300 hover:text-cyan-200",children:"Return to Blog"})]})})}export{a8 as default}; diff --git a/assets/CalendlyWidget-BuhQfp2_.js b/assets/CalendlyWidget-BuhQfp2_.js deleted file mode 100644 index 777fe27e..00000000 --- a/assets/CalendlyWidget-BuhQfp2_.js +++ /dev/null @@ -1 +0,0 @@ -import{r as d,j as c}from"./vendor-react-BiHfrq0e.js";const l="https://assets.calendly.com/assets/external/widget.js";function f({url:r,minWidth:o="320px",height:a="700px"}){const e=d.useRef(null);return d.useEffect(()=>{const i=e.current;if(!i)return;const n=()=>{!e.current||!window.Calendly||e.current.childElementCount>0||window.Calendly.initInlineWidget({url:r,parentElement:e.current})},s=document.querySelector(`script[src="${l}"]`);if(window.Calendly)n();else if(s)s.addEventListener("load",n);else{const t=document.createElement("script");t.src=l,t.async=!0,t.addEventListener("load",n),document.body.appendChild(t)}return()=>{s?.removeEventListener("load",n),i&&(i.innerHTML="")}},[r]),c.jsx("div",{ref:e,className:"calendly-inline-widget rounded-xl overflow-hidden border border-gridline",style:{minWidth:o,height:a},"data-url":r,role:"region","aria-label":"Schedule a meeting"})}export{f as C}; diff --git a/assets/Changelog-BA1YtsYp.js b/assets/Changelog-BA1YtsYp.js deleted file mode 100644 index 59024a04..00000000 --- a/assets/Changelog-BA1YtsYp.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as l}from"./index-CxWP17m6.js";import{N as d}from"./NeuralReveal-BflyZYSb.js";import{P as c}from"./releases-1-HBloZv.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function s({version:t,items:o,latest:r=!1,note:a,className:n=""}){return e.jsxs("div",{className:`card-surface ${r?"border-cyan-300/20":""} ${n}`,children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[r&&e.jsx("span",{className:"px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300",children:"LATEST"}),e.jsx("h2",{className:"text-xl font-bold",children:t})]}),a&&e.jsx("p",{className:"text-muted-foreground text-xs mb-3",children:a}),e.jsx("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5 [overflow-wrap:anywhere]",children:o.map(i=>e.jsx("li",{children:i},i))})]})}function f(){return e.jsxs(e.Fragment,{children:[e.jsx(l,{title:"Changelog · QECTOR",description:"Version history for QECTOR Decoder v3. PyPI release train, feature additions, and validation milestones."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Latest: v1.0.1 Decoder (2026-11-06) · Claude Plugin v2.0.1 · Workbench v1.0.7"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Changelog",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["Version history for QECTOR Decoder v3. Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),". All artifacts and validation on GitHub."]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto pl-8 ml-2 sm:ml-6 md:ml-8 relative space-y-12 border-l border-gridline/60",children:[e.jsx("div",{className:"absolute left-[-1px] top-0 bottom-0 w-[1px] bg-gradient-to-b from-cyan-300 via-gold-400/30 to-transparent shadow-[0_0_8px_rgba(103,232,249,0.5)]"}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-cyan-300 border-4 border-void shadow-[0_0_8px_rgba(103,232,249,0.8)]"}),e.jsx(s,{latest:!0,version:"v1.0.1 · 2026-11-06 (current)",note:e.jsxs(e.Fragment,{children:["Full notes in"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder/releases/tag/v1.0.1",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"the GitHub release"}),"."]}),items:["Code families corrected: rotated and unrotated surface, heavy-hex and colour codes now build at their labelled distance; Union-Find peeling and GPU kernel parity fixed","18 binary wheels: CPython 3.9-3.14 on Windows x64, Linux x86_64 (manylinux_2_17) and macOS 11+ arm64","Every wheel is installed and decoded on its own OS (H·c = s checks) before publishing; per-platform receipts ship as platform-proof.json in the release","Signed build provenance (Sigstore) for every wheel, plus PyPI attestations; published through Trusted Publishing with no API token","Licensing: every paid token (Pro or Enterprise) unlocks GPU batch decoding; licence metadata is now a standard SPDX expression (PolyForm Noncommercial 1.0.0)","QECTOR_OFFLINE=1 keeps the native core fully offline; nine security advisories in optional network dependencies fixed (rustls, webpki, h2)","Sinter: pass custom_decoders=qector_sinter_decoders() to sinter.collect()"]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-gridline border-4 border-void"}),e.jsx(s,{version:"v1.0.0 · 2026-08-06 (first stable release)",note:e.jsxs(e.Fragment,{children:["Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),"."]}),items:["First stable (v1) release: semantic-versioning frozen; the public API is governed by documented stability tiers (Stable / Workload-sensitive / Experimental / Internal detail)","Ecosystem entry points: five Sinter decoders (qector_blossom, qector_belief, qector_unionfind, and more) and a qiskit-qec plugin",'New decoder families: AmbiguityClusterDecoder, TwoStageDecoder, ColourCodeDecoder (opt-in method="cluster_bposd")','Relay-BP layered serial BP schedule (bp_method="relay"), CS-OSD(lambda, w) with configurable osd_lambda, and LLR message damping in BP-OSD','Weighted Union-Find on GPU: CUDABatchDecoder / OpenCLBatchDecoder accept edge_weights, plus precision="f64" double-precision growth',"qector decode / qector bench / qector serve CLI and qector-doctor (environment diagnostic)","pymatching submodule shim (from qector_decoder_v3.pymatching import Matching); DemModel.make_decoder covers all native families","SparseBlossomDecoder hot path zero-allocation (thread-local SbScratch); six Rust panic-to-abort paths removed; license hardening (v2 tokens with tier + expiry)","Binary wheels (cp39-cp313, Windows amd64 / Linux x86_64 / macOS 11.0+ arm64); no sdist","Official QECTOR Decoder v3 reference manual v1.0.0 (DOI 10.5281/zenodo.21941046)","Free QECTOR Workbench (current): Comprehensive MCP tools, 19 named kinds (17 concrete decoder configurations plus AutoDecoder and Auto Router), 10 code families including qLDPC and colour codes, visual circuit builder, and a self/auto-debug layer verifying H·c = s on every decode","No universal benchmark figures are published on the site; qector bench ships with the package for measuring on your own hardware"]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-gridline border-4 border-void"}),e.jsx(s,{version:"Verified PyPI release dates · UTC",items:["No v0.7.1 release appears in the public PyPI history; it is intentionally omitted.","Dates below are PyPI upload dates, not inferred development or local file dates.",...c.slice(2).map(({version:t,releaseDate:o,label:r})=>`v${t} · ${o} · ${r}`)]})]})]})})]})}export{f as default}; diff --git a/assets/Changelog-BSmWk3a0.js b/assets/Changelog-BSmWk3a0.js deleted file mode 100644 index dbec0523..00000000 --- a/assets/Changelog-BSmWk3a0.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as l}from"./index-abfjMTlQ.js";import{N as d}from"./NeuralReveal-D-EQoOl2.js";import{P as c}from"./releases-1-HBloZv.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function s({version:t,items:o,latest:r=!1,note:a,className:n=""}){return e.jsxs("div",{className:`card-surface ${r?"border-cyan-300/20":""} ${n}`,children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[r&&e.jsx("span",{className:"px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300",children:"LATEST"}),e.jsx("h2",{className:"text-xl font-bold",children:t})]}),a&&e.jsx("p",{className:"text-muted-foreground text-xs mb-3",children:a}),e.jsx("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5 [overflow-wrap:anywhere]",children:o.map(i=>e.jsx("li",{children:i},i))})]})}function f(){return e.jsxs(e.Fragment,{children:[e.jsx(l,{title:"Changelog · QECTOR",description:"Version history for QECTOR Decoder v3. PyPI release train, feature additions, and validation milestones."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Latest: v1.0.1 Decoder (2026-11-06) · Claude Plugin v2.0.1 · Workbench v1.0.7"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Changelog",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["Version history for QECTOR Decoder v3. Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),". All artifacts and validation on GitHub."]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto pl-8 ml-2 sm:ml-6 md:ml-8 relative space-y-12 border-l border-gridline/60",children:[e.jsx("div",{className:"absolute left-[-1px] top-0 bottom-0 w-[1px] bg-gradient-to-b from-cyan-300 via-gold-400/30 to-transparent shadow-[0_0_8px_rgba(103,232,249,0.5)]"}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-cyan-300 border-4 border-void shadow-[0_0_8px_rgba(103,232,249,0.8)]"}),e.jsx(s,{latest:!0,version:"v1.0.1 · 2026-11-06 (current)",note:e.jsxs(e.Fragment,{children:["Full notes in"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder/releases/tag/v1.0.1",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"the GitHub release"}),"."]}),items:["Code families corrected: rotated and unrotated surface, heavy-hex and colour codes now build at their labelled distance; Union-Find peeling and GPU kernel parity fixed","18 binary wheels: CPython 3.9-3.14 on Windows x64, Linux x86_64 (manylinux_2_17) and macOS 11+ arm64","Every wheel is installed and decoded on its own OS (H·c = s checks) before publishing; per-platform receipts ship as platform-proof.json in the release","Signed build provenance (Sigstore) for every wheel, plus PyPI attestations; published through Trusted Publishing with no API token","Licensing: every paid token (Pro or Enterprise) unlocks GPU batch decoding; licence metadata is now a standard SPDX expression (PolyForm Noncommercial 1.0.0)","QECTOR_OFFLINE=1 keeps the native core fully offline; nine security advisories in optional network dependencies fixed (rustls, webpki, h2)","Sinter: pass custom_decoders=qector_sinter_decoders() to sinter.collect()"]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-gridline border-4 border-void"}),e.jsx(s,{version:"v1.0.0 · 2026-08-06 (first stable release)",note:e.jsxs(e.Fragment,{children:["Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),"."]}),items:["First stable (v1) release: semantic-versioning frozen; the public API is governed by documented stability tiers (Stable / Workload-sensitive / Experimental / Internal detail)","Ecosystem entry points: five Sinter decoders (qector_blossom, qector_belief, qector_unionfind, and more) and a qiskit-qec plugin",'New decoder families: AmbiguityClusterDecoder, TwoStageDecoder, ColourCodeDecoder (opt-in method="cluster_bposd")','Relay-BP layered serial BP schedule (bp_method="relay"), CS-OSD(lambda, w) with configurable osd_lambda, and LLR message damping in BP-OSD','Weighted Union-Find on GPU: CUDABatchDecoder / OpenCLBatchDecoder accept edge_weights, plus precision="f64" double-precision growth',"qector decode / qector bench / qector serve CLI and qector-doctor (environment diagnostic)","pymatching submodule shim (from qector_decoder_v3.pymatching import Matching); DemModel.make_decoder covers all native families","SparseBlossomDecoder hot path zero-allocation (thread-local SbScratch); six Rust panic-to-abort paths removed; license hardening (v2 tokens with tier + expiry)","Binary wheels (cp39-cp313, Windows amd64 / Linux x86_64 / macOS 11.0+ arm64); no sdist","Official QECTOR Decoder v3 reference manual v1.0.0 (DOI 10.5281/zenodo.21941046)","Free QECTOR Workbench (current): Comprehensive MCP tools, 19 named kinds (17 concrete decoder configurations plus AutoDecoder and Auto Router), 10 code families including qLDPC and colour codes, visual circuit builder, and a self/auto-debug layer verifying H·c = s on every decode","No universal benchmark figures are published on the site; qector bench ships with the package for measuring on your own hardware"]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-gridline border-4 border-void"}),e.jsx(s,{version:"Verified PyPI release dates · UTC",items:["No v0.7.1 release appears in the public PyPI history; it is intentionally omitted.","Dates below are PyPI upload dates, not inferred development or local file dates.",...c.slice(2).map(({version:t,releaseDate:o,label:r})=>`v${t} · ${o} · ${r}`)]})]})]})})]})}export{f as default}; diff --git a/assets/Changelog-Ba4YptBq.js b/assets/Changelog-Ba4YptBq.js deleted file mode 100644 index 796a7e52..00000000 --- a/assets/Changelog-Ba4YptBq.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as l}from"./index-PdoH5kLF.js";import{N as d}from"./NeuralReveal-Bsl9IGCr.js";import{P as c}from"./releases-1-HBloZv.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";function a({version:s,items:t,latest:r=!1,note:o,className:n=""}){return e.jsxs("div",{className:`card-surface ${r?"border-cyan-300/20":""} ${n}`,children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[r&&e.jsx("span",{className:"px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300",children:"LATEST"}),e.jsx("h2",{className:"text-xl font-bold",children:s})]}),o&&e.jsx("p",{className:"text-muted-foreground text-xs mb-3",children:o}),e.jsx("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5 [overflow-wrap:anywhere]",children:t.map(i=>e.jsx("li",{children:i},i))})]})}function g(){return e.jsxs(e.Fragment,{children:[e.jsx(l,{title:"Changelog · QECTOR",description:"Version history for QECTOR Decoder v3. PyPI release train, feature additions, and validation milestones."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Latest: v1.0.1 Decoder (2026-11-06) · Claude Plugin v2.0.1 · Workbench v1.0.7"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Changelog",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["Version history for QECTOR Decoder v3. Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),". All artifacts and validation on GitHub."]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto pl-8 ml-2 sm:ml-6 md:ml-8 relative space-y-12 border-l border-gridline/60",children:[e.jsx("div",{className:"absolute left-[-1px] top-0 bottom-0 w-[1px] bg-gradient-to-b from-cyan-300 via-gold-400/30 to-transparent shadow-[0_0_8px_rgba(103,232,249,0.5)]"}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-cyan-300 border-4 border-void shadow-[0_0_8px_rgba(103,232,249,0.8)]"}),e.jsx(a,{latest:!0,version:"v1.0.1 · 2026-11-06 (current)",note:e.jsxs(e.Fragment,{children:["Full notes in"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder/releases/tag/v1.0.1",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"the GitHub release"}),"."]}),items:["Code families corrected: rotated and unrotated surface, heavy-hex and colour codes now build at their labelled distance; Union-Find peeling and GPU kernel parity fixed","18 binary wheels: CPython 3.9-3.14 on Windows x64, Linux x86_64 (manylinux_2_17) and macOS 11+ arm64","Every wheel is installed and decoded on its own OS (H·c = s checks) before publishing; per-platform receipts ship as platform-proof.json in the release","Signed build provenance (Sigstore) for every wheel, plus PyPI attestations; published through Trusted Publishing with no API token","Licensing: every paid token (Pro or Enterprise) unlocks GPU batch decoding; licence metadata is now a standard SPDX expression (PolyForm Noncommercial 1.0.0)","QECTOR_OFFLINE=1 keeps the native core fully offline; nine security advisories in optional network dependencies fixed (rustls, webpki, h2)","Sinter: pass custom_decoders=qector_sinter_decoders() to sinter.collect()"]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-gridline border-4 border-void"}),e.jsx(a,{version:"v1.0.0 · 2026-08-06 (first stable release)",note:e.jsxs(e.Fragment,{children:["Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),"."]}),items:["First stable (v1) release: semantic-versioning frozen; the public API is governed by documented stability tiers (Stable / Workload-sensitive / Experimental / Internal detail)","Ecosystem entry points: five Sinter decoders (qector_blossom, qector_belief, qector_unionfind, and more) and a qiskit-qec plugin",'New decoder families: AmbiguityClusterDecoder, TwoStageDecoder, ColourCodeDecoder (opt-in method="cluster_bposd")','Relay-BP layered serial BP schedule (bp_method="relay"), CS-OSD(lambda, w) with configurable osd_lambda, and LLR message damping in BP-OSD','Weighted Union-Find on GPU: CUDABatchDecoder / OpenCLBatchDecoder accept edge_weights, plus precision="f64" double-precision growth',"qector decode / qector bench / qector serve CLI and qector-doctor (environment diagnostic)","pymatching submodule shim (from qector_decoder_v3.pymatching import Matching); DemModel.make_decoder covers all native families","SparseBlossomDecoder hot path zero-allocation (thread-local SbScratch); six Rust panic-to-abort paths removed; license hardening (v2 tokens with tier + expiry)","Binary wheels (cp39-cp313, Windows amd64 / Linux x86_64 / macOS 11.0+ arm64); no sdist","Official QECTOR Decoder v3 reference manual v1.0.0 (DOI 10.5281/zenodo.21941046)","Free QECTOR Workbench (current): Comprehensive MCP tools, 19 named kinds (17 concrete decoder configurations plus AutoDecoder and Auto Router), 10 code families including qLDPC and colour codes, visual circuit builder, and a self/auto-debug layer verifying H·c = s on every decode","No universal benchmark figures are published on the site; qector bench ships with the package for measuring on your own hardware"]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-gridline border-4 border-void"}),e.jsx(a,{version:"Verified PyPI release dates · UTC",items:["No v0.7.1 release appears in the public PyPI history; it is intentionally omitted.","Dates below are PyPI upload dates, not inferred development or local file dates.",...c.slice(2).map(({version:s,releaseDate:t,label:r})=>`v${s} · ${t} · ${r}`)]})]})]})})]})}export{g as default}; diff --git a/assets/Changelog-BkfmouBY.js b/assets/Changelog-BkfmouBY.js deleted file mode 100644 index d1510c06..00000000 --- a/assets/Changelog-BkfmouBY.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as l}from"./index-Bh9DBCb3.js";import{N as d}from"./NeuralReveal-D-EQoOl2.js";import{P as c}from"./releases-1-HBloZv.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function s({version:t,items:o,latest:r=!1,note:a,className:n=""}){return e.jsxs("div",{className:`card-surface ${r?"border-cyan-300/20":""} ${n}`,children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[r&&e.jsx("span",{className:"px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300",children:"LATEST"}),e.jsx("h2",{className:"text-xl font-bold",children:t})]}),a&&e.jsx("p",{className:"text-muted-foreground text-xs mb-3",children:a}),e.jsx("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5 [overflow-wrap:anywhere]",children:o.map(i=>e.jsx("li",{children:i},i))})]})}function f(){return e.jsxs(e.Fragment,{children:[e.jsx(l,{title:"Changelog · QECTOR",description:"Version history for QECTOR Decoder v3. PyPI release train, feature additions, and validation milestones."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Latest: v1.0.1 Decoder (2026-11-06) · Claude Plugin v2.0.1 · Workbench v1.0.7"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Changelog",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["Version history for QECTOR Decoder v3. Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),". All artifacts and validation on GitHub."]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto pl-8 ml-2 sm:ml-6 md:ml-8 relative space-y-12 border-l border-gridline/60",children:[e.jsx("div",{className:"absolute left-[-1px] top-0 bottom-0 w-[1px] bg-gradient-to-b from-cyan-300 via-gold-400/30 to-transparent shadow-[0_0_8px_rgba(103,232,249,0.5)]"}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-cyan-300 border-4 border-void shadow-[0_0_8px_rgba(103,232,249,0.8)]"}),e.jsx(s,{latest:!0,version:"v1.0.1 · 2026-11-06 (current)",note:e.jsxs(e.Fragment,{children:["Full notes in"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder/releases/tag/v1.0.1",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"the GitHub release"}),"."]}),items:["Code families corrected: rotated and unrotated surface, heavy-hex and colour codes now build at their labelled distance; Union-Find peeling and GPU kernel parity fixed","18 binary wheels: CPython 3.9-3.14 on Windows x64, Linux x86_64 (manylinux_2_17) and macOS 11+ arm64","Every wheel is installed and decoded on its own OS (H·c = s checks) before publishing; per-platform receipts ship as platform-proof.json in the release","Signed build provenance (Sigstore) for every wheel, plus PyPI attestations; published through Trusted Publishing with no API token","Licensing: every paid token (Pro or Enterprise) unlocks GPU batch decoding; licence metadata is now a standard SPDX expression (PolyForm Noncommercial 1.0.0)","QECTOR_OFFLINE=1 keeps the native core fully offline; nine security advisories in optional network dependencies fixed (rustls, webpki, h2)","Sinter: pass custom_decoders=qector_sinter_decoders() to sinter.collect()"]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-gridline border-4 border-void"}),e.jsx(s,{version:"v1.0.0 · 2026-08-06 (first stable release)",note:e.jsxs(e.Fragment,{children:["Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),"."]}),items:["First stable (v1) release: semantic-versioning frozen; the public API is governed by documented stability tiers (Stable / Workload-sensitive / Experimental / Internal detail)","Ecosystem entry points: five Sinter decoders (qector_blossom, qector_belief, qector_unionfind, and more) and a qiskit-qec plugin",'New decoder families: AmbiguityClusterDecoder, TwoStageDecoder, ColourCodeDecoder (opt-in method="cluster_bposd")','Relay-BP layered serial BP schedule (bp_method="relay"), CS-OSD(lambda, w) with configurable osd_lambda, and LLR message damping in BP-OSD','Weighted Union-Find on GPU: CUDABatchDecoder / OpenCLBatchDecoder accept edge_weights, plus precision="f64" double-precision growth',"qector decode / qector bench / qector serve CLI and qector-doctor (environment diagnostic)","pymatching submodule shim (from qector_decoder_v3.pymatching import Matching); DemModel.make_decoder covers all native families","SparseBlossomDecoder hot path zero-allocation (thread-local SbScratch); six Rust panic-to-abort paths removed; license hardening (v2 tokens with tier + expiry)","Binary wheels (cp39-cp313, Windows amd64 / Linux x86_64 / macOS 11.0+ arm64); no sdist","Official QECTOR Decoder v3 reference manual v1.0.0 (DOI 10.5281/zenodo.21941046)","Free QECTOR Workbench (current): Comprehensive MCP tools, 19 named kinds (17 concrete decoder configurations plus AutoDecoder and Auto Router), 10 code families including qLDPC and colour codes, visual circuit builder, and a self/auto-debug layer verifying H·c = s on every decode","No universal benchmark figures are published on the site; qector bench ships with the package for measuring on your own hardware"]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-gridline border-4 border-void"}),e.jsx(s,{version:"Verified PyPI release dates · UTC",items:["No v0.7.1 release appears in the public PyPI history; it is intentionally omitted.","Dates below are PyPI upload dates, not inferred development or local file dates.",...c.slice(2).map(({version:t,releaseDate:o,label:r})=>`v${t} · ${o} · ${r}`)]})]})]})})]})}export{f as default}; diff --git a/assets/Changelog-BytfgdnJ.js b/assets/Changelog-BytfgdnJ.js deleted file mode 100644 index 31e46cad..00000000 --- a/assets/Changelog-BytfgdnJ.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as l}from"./index-BUYYSLdX.js";import{N as d}from"./NeuralReveal-BflyZYSb.js";import{P as c}from"./releases-1-HBloZv.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function o({version:t,items:s,latest:r=!1,note:a,className:n=""}){return e.jsxs("div",{className:`card-surface ${r?"border-cyan-300/20":""} ${n}`,children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[r&&e.jsx("span",{className:"px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300",children:"LATEST"}),e.jsx("h2",{className:"text-xl font-bold",children:t})]}),a&&e.jsx("p",{className:"text-muted-foreground text-xs mb-3",children:a}),e.jsx("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:s.map(i=>e.jsx("li",{children:i},i))})]})}function f(){return e.jsxs(e.Fragment,{children:[e.jsx(l,{title:"Changelog · QECTOR",description:"Version history for QECTOR Decoder v3. PyPI release train, feature additions, and validation milestones."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Latest: v1.0.1 Decoder (2026-11-06) · Claude Plugin v2.0.1 · Workbench v1.0.7"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Changelog",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["Version history for QECTOR Decoder v3. Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),". All artifacts and validation on GitHub."]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto pl-8 ml-2 sm:ml-6 md:ml-8 relative space-y-12 border-l border-gridline/60",children:[e.jsx("div",{className:"absolute left-[-1px] top-0 bottom-0 w-[1px] bg-gradient-to-b from-cyan-300 via-gold-400/30 to-transparent shadow-[0_0_8px_rgba(103,232,249,0.5)]"}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-cyan-300 border-4 border-void shadow-[0_0_8px_rgba(103,232,249,0.8)]"}),e.jsx(o,{latest:!0,version:"v1.0.1 · 2026-11-06 (current)",note:e.jsxs(e.Fragment,{children:["Full notes in"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder/releases/tag/v1.0.1",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"the GitHub release"}),"."]}),items:["Code families corrected: rotated and unrotated surface, heavy-hex and colour codes now build at their labelled distance; Union-Find peeling and GPU kernel parity fixed","18 binary wheels: CPython 3.9-3.14 on Windows x64, Linux x86_64 (manylinux_2_17) and macOS 11+ arm64","Every wheel is installed and decoded on its own OS (H·c = s checks) before publishing; per-platform receipts ship as platform-proof.json in the release","Signed build provenance (Sigstore) for every wheel, plus PyPI attestations; published through Trusted Publishing with no API token","Licensing: every paid token (Pro or Enterprise) unlocks GPU batch decoding; licence metadata is now the SPDX expression PolyForm-Noncommercial-1.0.0","QECTOR_OFFLINE=1 keeps the native core fully offline; nine security advisories in optional network dependencies fixed (rustls, webpki, h2)","Sinter: pass custom_decoders=qector_sinter_decoders() to sinter.collect()"]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-gridline border-4 border-void"}),e.jsx(o,{version:"v1.0.0 · 2026-08-06 (first stable release)",note:e.jsxs(e.Fragment,{children:["Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),"."]}),items:["First stable (v1) release: semantic-versioning frozen; the public API is governed by documented stability tiers (Stable / Workload-sensitive / Experimental / Internal detail)","Ecosystem entry points: five Sinter decoders (qector_blossom, qector_belief, qector_unionfind, and more) and a qiskit-qec plugin",'New decoder families: AmbiguityClusterDecoder, TwoStageDecoder, ColourCodeDecoder (opt-in method="cluster_bposd")','Relay-BP layered serial BP schedule (bp_method="relay"), CS-OSD(lambda, w) with configurable osd_lambda, and LLR message damping in BP-OSD','Weighted Union-Find on GPU: CUDABatchDecoder / OpenCLBatchDecoder accept edge_weights, plus precision="f64" double-precision growth',"qector decode / qector bench / qector serve CLI and qector-doctor (environment diagnostic)","pymatching submodule shim (from qector_decoder_v3.pymatching import Matching); DemModel.make_decoder covers all native families","SparseBlossomDecoder hot path zero-allocation (thread-local SbScratch); six Rust panic-to-abort paths removed; license hardening (v2 tokens with tier + expiry)","Binary wheels (cp39-cp313, Windows amd64 / Linux x86_64 / macOS 11.0+ arm64); no sdist","Official QECTOR Decoder v3 reference manual v1.0.0 (DOI 10.5281/zenodo.21941046)","Free QECTOR Workbench (current): Comprehensive MCP tools, 19 named kinds (17 concrete decoder configurations plus AutoDecoder and Auto Router), 10 code families including qLDPC and colour codes, visual circuit builder, and a self/auto-debug layer verifying H·c = s on every decode","No universal benchmark figures are published on the site; qector bench ships with the package for measuring on your own hardware"]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-gridline border-4 border-void"}),e.jsx(o,{version:"Verified PyPI release dates · UTC",items:["No v0.7.1 release appears in the public PyPI history; it is intentionally omitted.","Dates below are PyPI upload dates, not inferred development or local file dates.",...c.slice(2).map(({version:t,releaseDate:s,label:r})=>`v${t} · ${s} · ${r}`)]})]})]})})]})}export{f as default}; diff --git a/assets/Changelog-CgHVHcJg.js b/assets/Changelog-CgHVHcJg.js deleted file mode 100644 index b0b4b8cc..00000000 --- a/assets/Changelog-CgHVHcJg.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as n}from"./index-DlmjLVYe.js";import{N as d}from"./NeuralReveal-BflyZYSb.js";import{P as c}from"./releases-DiQz_IDu.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function i({version:t,items:a,latest:r=!1,note:s,className:l=""}){return e.jsxs("div",{className:`card-surface ${r?"border-cyan-300/20":""} ${l}`,children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[r&&e.jsx("span",{className:"px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300",children:"LATEST"}),e.jsx("h2",{className:"text-xl font-bold",children:t})]}),s&&e.jsx("p",{className:"text-muted-foreground text-xs mb-3",children:s}),e.jsx("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:a.map(o=>e.jsx("li",{children:o},o))})]})}function v(){return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Changelog · QECTOR",description:"Version history for QECTOR Decoder v3. PyPI release train, feature additions, and validation milestones."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Latest: v1.0.0 Decoder (first stable release, live from PyPI RSS) · Workbench GUI (current)"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Changelog",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["Version history for QECTOR Decoder v3. Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),". All artifacts and validation on GitHub."]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto pl-8 ml-2 sm:ml-6 md:ml-8 relative space-y-12 border-l border-gridline/60",children:[e.jsx("div",{className:"absolute left-[-1px] top-0 bottom-0 w-[1px] bg-gradient-to-b from-cyan-300 via-gold-400/30 to-transparent shadow-[0_0_8px_rgba(103,232,249,0.5)]"}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-cyan-300 border-4 border-void shadow-[0_0_8px_rgba(103,232,249,0.8)]"}),e.jsx(i,{latest:!0,version:"v1.0.0 · 2026-08-06 (first stable release)",note:e.jsxs(e.Fragment,{children:["Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),"."]}),items:["First stable (v1) release: semantic-versioning frozen; the public API is governed by documented stability tiers (Stable / Workload-sensitive / Experimental / Internal detail)","Ecosystem entry points: five Sinter decoders (qector_blossom, qector_belief, qector_unionfind, and more) and a qiskit-qec plugin registered; sinter.collect() works without custom_decoders=",'New decoder families: AmbiguityClusterDecoder, TwoStageDecoder, ColourCodeDecoder (opt-in method="cluster_bposd")','Relay-BP layered serial BP schedule (bp_method="relay"), CS-OSD(lambda, w) with configurable osd_lambda, and LLR message damping in BP-OSD','Weighted Union-Find on GPU: CUDABatchDecoder / OpenCLBatchDecoder accept edge_weights, plus precision="f64" double-precision growth',"qector decode / qector bench / qector serve CLI and qector-doctor (environment diagnostic)","pymatching submodule shim (from qector_decoder_v3.pymatching import Matching); DemModel.make_decoder covers all native families","SparseBlossomDecoder hot path zero-allocation (thread-local SbScratch); six Rust panic-to-abort paths removed; license hardening (v2 tokens with tier + expiry)","Binary wheels (cp39-cp313, Windows amd64 / Linux x86_64 / macOS 11.0+ arm64); no sdist","Official QECTOR Decoder v3 reference manual v1.0.0 (DOI 10.5281/zenodo.21941046)","Free QECTOR Workbench (current): Comprehensive MCP tools, 19 named kinds (17 concrete decoder configurations plus AutoDecoder and Auto Router), 10 code families including qLDPC and colour codes, visual circuit builder, and a self/auto-debug layer verifying H·c = s on every decode","No universal benchmark figures are published on the site; qector bench ships with the package for measuring on your own hardware"]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-gridline border-4 border-void"}),e.jsx(i,{version:"Verified PyPI release dates · UTC",items:["No v0.7.1 release appears in the public PyPI history; it is intentionally omitted.","Dates below are PyPI upload dates, not inferred development or local file dates.",...c.slice(1).map(({version:t,releaseDate:a,label:r})=>`v${t} · ${a} · ${r}`)]})]})]})})]})}export{v as default}; diff --git a/assets/Changelog-ChPZLgGp.js b/assets/Changelog-ChPZLgGp.js deleted file mode 100644 index 96aa8969..00000000 --- a/assets/Changelog-ChPZLgGp.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as n}from"./index-c1PDYu0j.js";import{N as d}from"./NeuralReveal-uYarhiMA.js";import{a as c}from"./releases--9GgxpSb.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";function t({version:s,items:a,latest:r=!1,note:o,className:l=""}){return e.jsxs("div",{className:`card-surface ${r?"border-cyan-300/20":""} ${l}`,children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[r&&e.jsx("span",{className:"px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300",children:"LATEST"}),e.jsx("h2",{className:"text-xl font-bold",children:s})]}),o&&e.jsx("p",{className:"text-muted-foreground text-xs mb-3",children:o}),e.jsx("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5 [overflow-wrap:anywhere]",children:a.map(i=>e.jsx("li",{children:i},i))})]})}function g(){return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Changelog · QECTOR",description:"Version history for QECTOR Decoder v3. PyPI release train, feature additions, and validation milestones."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Latest: v1.0.1 Decoder (2026-11-06) · Claude Plugin v2.0.1 · Workbench v1.0.7"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Changelog",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["Version history for QECTOR Decoder v3. Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),". All artifacts and validation on GitHub."]}),e.jsxs("div",{className:"max-w-2xl mx-auto mt-8 p-5 rounded-2xl border border-cyan-300/20 bg-surface/60 text-left",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Get release alerts"}),e.jsx("p",{className:"text-secondary text-sm mb-3",children:"No mailing list to join: subscribe with the tools you already use."}),e.jsxs("ul",{className:"text-sm space-y-1.5",children:[e.jsxs("li",{children:[e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder/releases.atom",className:"text-cyan-300 hover:underline",children:"Decoder releases (Atom feed)"})," ",e.jsx("span",{className:"text-muted-foreground",children:"or GitHub: Watch → Custom → Releases"})]}),e.jsx("li",{children:e.jsx("a",{href:"https://pypi.org/rss/project/qector-decoder-v3/releases.xml",className:"text-cyan-300 hover:underline",children:"PyPI releases (RSS)"})}),e.jsx("li",{children:e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin/releases.atom",className:"text-cyan-300 hover:underline",children:"Claude plugin releases (Atom feed)"})}),e.jsx("li",{children:e.jsx("a",{href:"/feed.xml",className:"text-cyan-300 hover:underline",children:"Blog (Atom feed)"})})]})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto pl-8 ml-2 sm:ml-6 md:ml-8 relative space-y-12 border-l border-gridline/60",children:[e.jsx("div",{className:"absolute left-[-1px] top-0 bottom-0 w-[1px] bg-gradient-to-b from-cyan-300 via-gold-400/30 to-transparent shadow-[0_0_8px_rgba(103,232,249,0.5)]"}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-cyan-300 border-4 border-void shadow-[0_0_8px_rgba(103,232,249,0.8)]"}),e.jsx(t,{latest:!0,version:"v1.0.1 · 2026-11-06 (current)",note:e.jsxs(e.Fragment,{children:["Full notes in"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder/releases/tag/v1.0.1",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"the GitHub release"}),"."]}),items:["Code families corrected: rotated and unrotated surface, heavy-hex and colour codes now build at their labelled distance; Union-Find peeling and GPU kernel parity fixed","18 binary wheels: CPython 3.9-3.14 on Windows x64, Linux x86_64 (manylinux_2_17) and macOS 11+ arm64","Every wheel is installed and decoded on its own OS (H·c = s checks) before publishing; per-platform receipts ship as platform-proof.json in the release","Signed build provenance (Sigstore) for every wheel, plus PyPI attestations; published through Trusted Publishing with no API token","Licensing: every paid token (Pro or Enterprise) unlocks GPU batch decoding; licence metadata is now a standard SPDX expression (PolyForm Noncommercial 1.0.0)","QECTOR_OFFLINE=1 keeps the native core fully offline; nine security advisories in optional network dependencies fixed (rustls, webpki, h2)","Sinter: pass custom_decoders=qector_sinter_decoders() to sinter.collect()"]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-gridline border-4 border-void"}),e.jsx(t,{version:"v1.0.0 · 2026-08-06 (first stable release)",note:e.jsxs(e.Fragment,{children:["Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),"."]}),items:["First stable (v1) release: semantic-versioning frozen; the public API is governed by documented stability tiers (Stable / Workload-sensitive / Experimental / Internal detail)","Ecosystem entry points: five Sinter decoders (qector_blossom, qector_belief, qector_unionfind, and more) and a qiskit-qec plugin",'New decoder families: AmbiguityClusterDecoder, TwoStageDecoder, ColourCodeDecoder (opt-in method="cluster_bposd")','Relay-BP layered serial BP schedule (bp_method="relay"), CS-OSD(lambda, w) with configurable osd_lambda, and LLR message damping in BP-OSD','Weighted Union-Find on GPU: CUDABatchDecoder / OpenCLBatchDecoder accept edge_weights, plus precision="f64" double-precision growth',"qector decode / qector bench / qector serve CLI and qector-doctor (environment diagnostic)","pymatching submodule shim (from qector_decoder_v3.pymatching import Matching); DemModel.make_decoder covers all native families","SparseBlossomDecoder hot path zero-allocation (thread-local SbScratch); six Rust panic-to-abort paths removed; license hardening (v2 tokens with tier + expiry)","Binary wheels (cp39-cp313, Windows amd64 / Linux x86_64 / macOS 11.0+ arm64); no sdist","Official QECTOR Decoder v3 reference manual v1.0.0 (DOI 10.5281/zenodo.21941046)","Free QECTOR Workbench (current): Comprehensive MCP tools, 19 named kinds (17 concrete decoder configurations plus AutoDecoder and Auto Router), 10 code families including qLDPC and colour codes, visual circuit builder, and a self/auto-debug layer verifying H·c = s on every decode","No universal benchmark figures are published on the site; qector bench ships with the package for measuring on your own hardware"]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-gridline border-4 border-void"}),e.jsx(t,{version:"Verified PyPI release dates · UTC",items:["No v0.7.1 release appears in the public PyPI history; it is intentionally omitted.","Dates below are PyPI upload dates, not inferred development or local file dates.",...c.slice(2).map(({version:s,releaseDate:a,label:r})=>`v${s} · ${a} · ${r}`)]})]})]})})]})}export{g as default}; diff --git a/assets/Changelog-Coh13L0q.js b/assets/Changelog-Coh13L0q.js deleted file mode 100644 index b3835f59..00000000 --- a/assets/Changelog-Coh13L0q.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as n}from"./index-CCmwjNGU.js";import{N as d}from"./NeuralReveal-uYarhiMA.js";import{a as c}from"./releases--9GgxpSb.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";function t({version:s,items:a,latest:r=!1,note:o,className:l=""}){return e.jsxs("div",{className:`card-surface ${r?"border-cyan-300/20":""} ${l}`,children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[r&&e.jsx("span",{className:"px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300",children:"LATEST"}),e.jsx("h2",{className:"text-xl font-bold",children:s})]}),o&&e.jsx("p",{className:"text-muted-foreground text-xs mb-3",children:o}),e.jsx("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5 [overflow-wrap:anywhere]",children:a.map(i=>e.jsx("li",{children:i},i))})]})}function g(){return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Changelog · QECTOR",description:"Version history for QECTOR Decoder v3. PyPI release train, feature additions, and validation milestones."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Latest: v1.0.1 Decoder (2026-11-06) · Claude Plugin v2.0.1 · Workbench v1.0.7"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Changelog",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["Version history for QECTOR Decoder v3. Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),". All artifacts and validation on GitHub."]}),e.jsxs("div",{className:"max-w-2xl mx-auto mt-8 p-5 rounded-2xl border border-cyan-300/20 bg-surface/60 text-left",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Get release alerts"}),e.jsx("p",{className:"text-secondary text-sm mb-3",children:"No mailing list to join: subscribe with the tools you already use."}),e.jsxs("ul",{className:"text-sm space-y-1.5",children:[e.jsxs("li",{children:[e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder/releases.atom",className:"text-cyan-300 hover:underline",children:"Decoder releases (Atom feed)"})," ",e.jsx("span",{className:"text-muted-foreground",children:"or GitHub: Watch → Custom → Releases"})]}),e.jsx("li",{children:e.jsx("a",{href:"https://pypi.org/rss/project/qector-decoder-v3/releases.xml",className:"text-cyan-300 hover:underline",children:"PyPI releases (RSS)"})}),e.jsx("li",{children:e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin/releases.atom",className:"text-cyan-300 hover:underline",children:"Claude plugin releases (Atom feed)"})}),e.jsx("li",{children:e.jsx("a",{href:"/feed.xml",className:"text-cyan-300 hover:underline",children:"Blog (Atom feed)"})})]})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto pl-8 ml-2 sm:ml-6 md:ml-8 relative space-y-12 border-l border-gridline/60",children:[e.jsx("div",{className:"absolute left-[-1px] top-0 bottom-0 w-[1px] bg-gradient-to-b from-cyan-300 via-gold-400/30 to-transparent shadow-[0_0_8px_rgba(103,232,249,0.5)]"}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-cyan-300 border-4 border-void shadow-[0_0_8px_rgba(103,232,249,0.8)]"}),e.jsx(t,{latest:!0,version:"v1.0.1 · 2026-11-06 (current)",note:e.jsxs(e.Fragment,{children:["Full notes in"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder/releases/tag/v1.0.1",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"the GitHub release"}),"."]}),items:["Code families corrected: rotated and unrotated surface, heavy-hex and colour codes now build at their labelled distance; Union-Find peeling and GPU kernel parity fixed","18 binary wheels: CPython 3.9-3.14 on Windows x64, Linux x86_64 (manylinux_2_17) and macOS 11+ arm64","Every wheel is installed and decoded on its own OS (H·c = s checks) before publishing; per-platform receipts ship as platform-proof.json in the release","Signed build provenance (Sigstore) for every wheel, plus PyPI attestations; published through Trusted Publishing with no API token","Licensing: every paid token (Pro or Enterprise) unlocks GPU batch decoding; licence metadata is now a standard SPDX expression (PolyForm Noncommercial 1.0.0)","QECTOR_OFFLINE=1 keeps the native core fully offline; nine security advisories in optional network dependencies fixed (rustls, webpki, h2)","Sinter: pass custom_decoders=qector_sinter_decoders() to sinter.collect()"]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-gridline border-4 border-void"}),e.jsx(t,{version:"v1.0.0 · 2026-08-06 (first stable release)",note:e.jsxs(e.Fragment,{children:["Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),"."]}),items:["First stable (v1) release: semantic-versioning frozen; the public API is governed by documented stability tiers (Stable / Workload-sensitive / Experimental / Internal detail)","Ecosystem entry points: five Sinter decoders (qector_blossom, qector_belief, qector_unionfind, and more) and a qiskit-qec plugin",'New decoder families: AmbiguityClusterDecoder, TwoStageDecoder, ColourCodeDecoder (opt-in method="cluster_bposd")','Relay-BP layered serial BP schedule (bp_method="relay"), CS-OSD(lambda, w) with configurable osd_lambda, and LLR message damping in BP-OSD','Weighted Union-Find on GPU: CUDABatchDecoder / OpenCLBatchDecoder accept edge_weights, plus precision="f64" double-precision growth',"qector decode / qector bench / qector serve CLI and qector-doctor (environment diagnostic)","pymatching submodule shim (from qector_decoder_v3.pymatching import Matching); DemModel.make_decoder covers all native families","SparseBlossomDecoder hot path zero-allocation (thread-local SbScratch); six Rust panic-to-abort paths removed; license hardening (v2 tokens with tier + expiry)","Binary wheels (cp39-cp313, Windows amd64 / Linux x86_64 / macOS 11.0+ arm64); no sdist","Official QECTOR Decoder v3 reference manual v1.0.0 (DOI 10.5281/zenodo.21941046)","Free QECTOR Workbench (current): Comprehensive MCP tools, 19 named kinds (17 concrete decoder configurations plus AutoDecoder and Auto Router), 10 code families including qLDPC and colour codes, visual circuit builder, and a self/auto-debug layer verifying H·c = s on every decode","No universal benchmark figures are published on the site; qector bench ships with the package for measuring on your own hardware"]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-gridline border-4 border-void"}),e.jsx(t,{version:"Verified PyPI release dates · UTC",items:["No v0.7.1 release appears in the public PyPI history; it is intentionally omitted.","Dates below are PyPI upload dates, not inferred development or local file dates.",...c.slice(2).map(({version:s,releaseDate:a,label:r})=>`v${s} · ${a} · ${r}`)]})]})]})})]})}export{g as default}; diff --git a/assets/Changelog-D-ebSC0G.js b/assets/Changelog-D-ebSC0G.js deleted file mode 100644 index 29d7ac8c..00000000 --- a/assets/Changelog-D-ebSC0G.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as n}from"./index-WV1aysjN.js";import{N as d}from"./NeuralReveal-BflyZYSb.js";import{P as c}from"./releases-DiQz_IDu.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function i({version:t,items:a,latest:r=!1,note:s,className:l=""}){return e.jsxs("div",{className:`card-surface ${r?"border-cyan-300/20":""} ${l}`,children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[r&&e.jsx("span",{className:"px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300",children:"LATEST"}),e.jsx("h2",{className:"text-xl font-bold",children:t})]}),s&&e.jsx("p",{className:"text-muted-foreground text-xs mb-3",children:s}),e.jsx("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:a.map(o=>e.jsx("li",{children:o},o))})]})}function v(){return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Changelog · QECTOR",description:"Version history for QECTOR Decoder v3. PyPI release train, feature additions, and validation milestones."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Latest: v1.0.0 Decoder (first stable release, live from PyPI RSS) · Workbench GUI (current)"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Changelog",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["Version history for QECTOR Decoder v3. Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),". All artifacts and validation on GitHub."]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto pl-8 ml-2 sm:ml-6 md:ml-8 relative space-y-12 border-l border-gridline/60",children:[e.jsx("div",{className:"absolute left-[-1px] top-0 bottom-0 w-[1px] bg-gradient-to-b from-cyan-300 via-gold-400/30 to-transparent shadow-[0_0_8px_rgba(103,232,249,0.5)]"}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-cyan-300 border-4 border-void shadow-[0_0_8px_rgba(103,232,249,0.8)]"}),e.jsx(i,{latest:!0,version:"v1.0.0 · 2026-08-06 (first stable release)",note:e.jsxs(e.Fragment,{children:["Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),"."]}),items:["First stable (v1) release: semantic-versioning frozen; the public API is governed by documented stability tiers (Stable / Workload-sensitive / Experimental / Internal detail)","Ecosystem entry points: five Sinter decoders (qector_blossom, qector_belief, qector_unionfind, and more) and a qiskit-qec plugin registered; sinter.collect() works without custom_decoders=",'New decoder families: AmbiguityClusterDecoder, TwoStageDecoder, ColourCodeDecoder (opt-in method="cluster_bposd")','Relay-BP layered serial BP schedule (bp_method="relay"), CS-OSD(lambda, w) with configurable osd_lambda, and LLR message damping in BP-OSD','Weighted Union-Find on GPU: CUDABatchDecoder / OpenCLBatchDecoder accept edge_weights, plus precision="f64" double-precision growth',"qector decode / qector bench / qector serve CLI and qector-doctor (environment diagnostic)","pymatching submodule shim (from qector_decoder_v3.pymatching import Matching); DemModel.make_decoder covers all native families","SparseBlossomDecoder hot path zero-allocation (thread-local SbScratch); six Rust panic-to-abort paths removed; license hardening (v2 tokens with tier + expiry)","Binary wheels (cp39-cp313, Windows amd64 / Linux x86_64 / macOS 11.0+ arm64); no sdist","Official QECTOR Decoder v3 reference manual v1.0.0 (DOI 10.5281/zenodo.21941046)","Free QECTOR Workbench (current): Comprehensive MCP tools, 19 named kinds (17 concrete decoder configurations plus AutoDecoder and Auto Router), 10 code families including qLDPC and colour codes, visual circuit builder, and a self/auto-debug layer verifying H·c = s on every decode","No universal benchmark figures are published on the site; qector bench ships with the package for measuring on your own hardware"]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-gridline border-4 border-void"}),e.jsx(i,{version:"Verified PyPI release dates · UTC",items:["No v0.7.1 release appears in the public PyPI history; it is intentionally omitted.","Dates below are PyPI upload dates, not inferred development or local file dates.",...c.slice(1).map(({version:t,releaseDate:a,label:r})=>`v${t} · ${a} · ${r}`)]})]})]})})]})}export{v as default}; diff --git a/assets/Changelog-DKAmnRzh.js b/assets/Changelog-DKAmnRzh.js deleted file mode 100644 index 2d2ebf52..00000000 --- a/assets/Changelog-DKAmnRzh.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as n}from"./index-B9kEGiWi.js";import{N as d}from"./NeuralReveal-BflyZYSb.js";import{P as c}from"./releases-DiQz_IDu.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function i({version:t,items:a,latest:r=!1,note:s,className:l=""}){return e.jsxs("div",{className:`card-surface ${r?"border-cyan-300/20":""} ${l}`,children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[r&&e.jsx("span",{className:"px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300",children:"LATEST"}),e.jsx("h2",{className:"text-xl font-bold",children:t})]}),s&&e.jsx("p",{className:"text-muted-foreground text-xs mb-3",children:s}),e.jsx("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:a.map(o=>e.jsx("li",{children:o},o))})]})}function v(){return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Changelog · QECTOR",description:"Version history for QECTOR Decoder v3. PyPI release train, feature additions, and validation milestones."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Latest: v1.0.0 Decoder (first stable release, live from PyPI RSS) · Workbench GUI (current)"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Changelog",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["Version history for QECTOR Decoder v3. Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),". All artifacts and validation on GitHub."]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto pl-8 ml-2 sm:ml-6 md:ml-8 relative space-y-12 border-l border-gridline/60",children:[e.jsx("div",{className:"absolute left-[-1px] top-0 bottom-0 w-[1px] bg-gradient-to-b from-cyan-300 via-gold-400/30 to-transparent shadow-[0_0_8px_rgba(103,232,249,0.5)]"}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-cyan-300 border-4 border-void shadow-[0_0_8px_rgba(103,232,249,0.8)]"}),e.jsx(i,{latest:!0,version:"v1.0.0 · 2026-08-06 (first stable release)",note:e.jsxs(e.Fragment,{children:["Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),"."]}),items:["First stable (v1) release: semantic-versioning frozen; the public API is governed by documented stability tiers (Stable / Workload-sensitive / Experimental / Internal detail)","Ecosystem entry points: five Sinter decoders (qector_blossom, qector_belief, qector_unionfind, and more) and a qiskit-qec plugin registered; sinter.collect() works without custom_decoders=",'New decoder families: AmbiguityClusterDecoder, TwoStageDecoder, ColourCodeDecoder (opt-in method="cluster_bposd")','Relay-BP layered serial BP schedule (bp_method="relay"), CS-OSD(lambda, w) with configurable osd_lambda, and LLR message damping in BP-OSD','Weighted Union-Find on GPU: CUDABatchDecoder / OpenCLBatchDecoder accept edge_weights, plus precision="f64" double-precision growth',"qector decode / qector bench / qector serve CLI and qector-doctor (environment diagnostic)","pymatching submodule shim (from qector_decoder_v3.pymatching import Matching); DemModel.make_decoder covers all native families","SparseBlossomDecoder hot path zero-allocation (thread-local SbScratch); six Rust panic-to-abort paths removed; license hardening (v2 tokens with tier + expiry)","Binary wheels (cp39-cp313, Windows amd64 / Linux x86_64 / macOS 11.0+ arm64); no sdist","Official QECTOR Decoder v3 reference manual v1.0.0 (DOI 10.5281/zenodo.21941046)","Free QECTOR Workbench (current): Comprehensive MCP tools, 19 named kinds (17 concrete decoder configurations plus AutoDecoder and Auto Router), 10 code families including qLDPC and colour codes, visual circuit builder, and a self/auto-debug layer verifying H·c = s on every decode","No universal benchmark figures are published on the site; qector bench ships with the package for measuring on your own hardware"]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-gridline border-4 border-void"}),e.jsx(i,{version:"Verified PyPI release dates · UTC",items:["No v0.7.1 release appears in the public PyPI history; it is intentionally omitted.","Dates below are PyPI upload dates, not inferred development or local file dates.",...c.slice(1).map(({version:t,releaseDate:a,label:r})=>`v${t} · ${a} · ${r}`)]})]})]})})]})}export{v as default}; diff --git a/assets/Changelog-DNm5nvLJ.js b/assets/Changelog-DNm5nvLJ.js deleted file mode 100644 index a7dcf9da..00000000 --- a/assets/Changelog-DNm5nvLJ.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as n}from"./index-CqAA-ZXu.js";import{N as d}from"./NeuralReveal-BflyZYSb.js";import{P as c}from"./releases-DiQz_IDu.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function i({version:t,items:a,latest:r=!1,note:s,className:l=""}){return e.jsxs("div",{className:`card-surface ${r?"border-cyan-300/20":""} ${l}`,children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[r&&e.jsx("span",{className:"px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300",children:"LATEST"}),e.jsx("h2",{className:"text-xl font-bold",children:t})]}),s&&e.jsx("p",{className:"text-muted-foreground text-xs mb-3",children:s}),e.jsx("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:a.map(o=>e.jsx("li",{children:o},o))})]})}function v(){return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Changelog · QECTOR",description:"Version history for QECTOR Decoder v3. PyPI release train, feature additions, and validation milestones."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Latest: v1.0.0 Decoder (first stable release, live from PyPI RSS) · Workbench GUI (current)"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Changelog",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["Version history for QECTOR Decoder v3. Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),". All artifacts and validation on GitHub."]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto pl-8 ml-2 sm:ml-6 md:ml-8 relative space-y-12 border-l border-gridline/60",children:[e.jsx("div",{className:"absolute left-[-1px] top-0 bottom-0 w-[1px] bg-gradient-to-b from-cyan-300 via-gold-400/30 to-transparent shadow-[0_0_8px_rgba(103,232,249,0.5)]"}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-cyan-300 border-4 border-void shadow-[0_0_8px_rgba(103,232,249,0.8)]"}),e.jsx(i,{latest:!0,version:"v1.0.0 · 2026-08-06 (first stable release)",note:e.jsxs(e.Fragment,{children:["Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),"."]}),items:["First stable (v1) release: semantic-versioning frozen; the public API is governed by documented stability tiers (Stable / Workload-sensitive / Experimental / Internal detail)","Ecosystem entry points: five Sinter decoders (qector_blossom, qector_belief, qector_unionfind, and more) and a qiskit-qec plugin registered; sinter.collect() works without custom_decoders=",'New decoder families: AmbiguityClusterDecoder, TwoStageDecoder, ColourCodeDecoder (opt-in method="cluster_bposd")','Relay-BP layered serial BP schedule (bp_method="relay"), CS-OSD(lambda, w) with configurable osd_lambda, and LLR message damping in BP-OSD','Weighted Union-Find on GPU: CUDABatchDecoder / OpenCLBatchDecoder accept edge_weights, plus precision="f64" double-precision growth',"qector decode / qector bench / qector serve CLI and qector-doctor (environment diagnostic)","pymatching submodule shim (from qector_decoder_v3.pymatching import Matching); DemModel.make_decoder covers all native families","SparseBlossomDecoder hot path zero-allocation (thread-local SbScratch); six Rust panic-to-abort paths removed; license hardening (v2 tokens with tier + expiry)","Binary wheels (cp39-cp313, Windows amd64 / Linux x86_64 / macOS 11.0+ arm64); no sdist","Official QECTOR Decoder v3 reference manual v1.0.0 (DOI 10.5281/zenodo.21941046)","Free QECTOR Workbench (current): Comprehensive MCP tools, 19 named kinds (17 concrete decoder configurations plus AutoDecoder and Auto Router), 10 code families including qLDPC and colour codes, visual circuit builder, and a self/auto-debug layer verifying H·c = s on every decode","No universal benchmark figures are published on the site; qector bench ships with the package for measuring on your own hardware"]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-gridline border-4 border-void"}),e.jsx(i,{version:"Verified PyPI release dates · UTC",items:["No v0.7.1 release appears in the public PyPI history; it is intentionally omitted.","Dates below are PyPI upload dates, not inferred development or local file dates.",...c.slice(1).map(({version:t,releaseDate:a,label:r})=>`v${t} · ${a} · ${r}`)]})]})]})})]})}export{v as default}; diff --git a/assets/Changelog-DY0j-PRO.js b/assets/Changelog-DY0j-PRO.js deleted file mode 100644 index 63aad789..00000000 --- a/assets/Changelog-DY0j-PRO.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as n}from"./index-_BpMZhV3.js";import{N as d}from"./NeuralReveal-BflyZYSb.js";import{P as c}from"./releases-DiQz_IDu.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function i({version:t,items:a,latest:r=!1,note:s,className:l=""}){return e.jsxs("div",{className:`card-surface ${r?"border-cyan-300/20":""} ${l}`,children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[r&&e.jsx("span",{className:"px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300",children:"LATEST"}),e.jsx("h2",{className:"text-xl font-bold",children:t})]}),s&&e.jsx("p",{className:"text-muted-foreground text-xs mb-3",children:s}),e.jsx("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:a.map(o=>e.jsx("li",{children:o},o))})]})}function v(){return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Changelog · QECTOR",description:"Version history for QECTOR Decoder v3. PyPI release train, feature additions, and validation milestones."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Latest: v1.0.0 Decoder (first stable release, live from PyPI RSS) · Workbench GUI (current)"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Changelog",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["Version history for QECTOR Decoder v3. Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),". All artifacts and validation on GitHub."]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto pl-8 ml-2 sm:ml-6 md:ml-8 relative space-y-12 border-l border-gridline/60",children:[e.jsx("div",{className:"absolute left-[-1px] top-0 bottom-0 w-[1px] bg-gradient-to-b from-cyan-300 via-gold-400/30 to-transparent shadow-[0_0_8px_rgba(103,232,249,0.5)]"}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-cyan-300 border-4 border-void shadow-[0_0_8px_rgba(103,232,249,0.8)]"}),e.jsx(i,{latest:!0,version:"v1.0.0 · 2026-08-06 (first stable release)",note:e.jsxs(e.Fragment,{children:["Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),"."]}),items:["First stable (v1) release: semantic-versioning frozen; the public API is governed by documented stability tiers (Stable / Workload-sensitive / Experimental / Internal detail)","Ecosystem entry points: five Sinter decoders (qector_blossom, qector_belief, qector_unionfind, and more) and a qiskit-qec plugin registered; sinter.collect() works without custom_decoders=",'New decoder families: AmbiguityClusterDecoder, TwoStageDecoder, ColourCodeDecoder (opt-in method="cluster_bposd")','Relay-BP layered serial BP schedule (bp_method="relay"), CS-OSD(lambda, w) with configurable osd_lambda, and LLR message damping in BP-OSD','Weighted Union-Find on GPU: CUDABatchDecoder / OpenCLBatchDecoder accept edge_weights, plus precision="f64" double-precision growth',"qector decode / qector bench / qector serve CLI and qector-doctor (environment diagnostic)","pymatching submodule shim (from qector_decoder_v3.pymatching import Matching); DemModel.make_decoder covers all native families","SparseBlossomDecoder hot path zero-allocation (thread-local SbScratch); six Rust panic-to-abort paths removed; license hardening (v2 tokens with tier + expiry)","Binary wheels (cp39-cp313, Windows amd64 / Linux x86_64 / macOS 11.0+ arm64); no sdist","Official QECTOR Decoder v3 reference manual v1.0.0 (DOI 10.5281/zenodo.21941046)","Free QECTOR Workbench (current): Comprehensive MCP tools, 19 named kinds (17 concrete decoder configurations plus AutoDecoder and Auto Router), 10 code families including qLDPC and colour codes, visual circuit builder, and a self/auto-debug layer verifying H·c = s on every decode","No universal benchmark figures are published on the site; qector bench ships with the package for measuring on your own hardware"]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-gridline border-4 border-void"}),e.jsx(i,{version:"Verified PyPI release dates · UTC",items:["No v0.7.1 release appears in the public PyPI history; it is intentionally omitted.","Dates below are PyPI upload dates, not inferred development or local file dates.",...c.slice(1).map(({version:t,releaseDate:a,label:r})=>`v${t} · ${a} · ${r}`)]})]})]})})]})}export{v as default}; diff --git a/assets/Changelog-LaCmY9AZ.js b/assets/Changelog-LaCmY9AZ.js deleted file mode 100644 index 2e2591e7..00000000 --- a/assets/Changelog-LaCmY9AZ.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as n}from"./index-CpdATiEY.js";import{N as d}from"./NeuralReveal-BflyZYSb.js";import{P as c}from"./releases-DiQz_IDu.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function i({version:t,items:a,latest:r=!1,note:s,className:l=""}){return e.jsxs("div",{className:`card-surface ${r?"border-cyan-300/20":""} ${l}`,children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[r&&e.jsx("span",{className:"px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300",children:"LATEST"}),e.jsx("h2",{className:"text-xl font-bold",children:t})]}),s&&e.jsx("p",{className:"text-muted-foreground text-xs mb-3",children:s}),e.jsx("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:a.map(o=>e.jsx("li",{children:o},o))})]})}function v(){return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Changelog · QECTOR",description:"Version history for QECTOR Decoder v3. PyPI release train, feature additions, and validation milestones."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Latest: v1.0.0 Decoder (first stable release, live from PyPI RSS) · Workbench GUI (current)"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Changelog",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["Version history for QECTOR Decoder v3. Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),". All artifacts and validation on GitHub."]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto pl-8 ml-2 sm:ml-6 md:ml-8 relative space-y-12 border-l border-gridline/60",children:[e.jsx("div",{className:"absolute left-[-1px] top-0 bottom-0 w-[1px] bg-gradient-to-b from-cyan-300 via-gold-400/30 to-transparent shadow-[0_0_8px_rgba(103,232,249,0.5)]"}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-cyan-300 border-4 border-void shadow-[0_0_8px_rgba(103,232,249,0.8)]"}),e.jsx(i,{latest:!0,version:"v1.0.0 · 2026-08-06 (first stable release)",note:e.jsxs(e.Fragment,{children:["Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),"."]}),items:["First stable (v1) release: semantic-versioning frozen; the public API is governed by documented stability tiers (Stable / Workload-sensitive / Experimental / Internal detail)","Ecosystem entry points: five Sinter decoders (qector_blossom, qector_belief, qector_unionfind, and more) and a qiskit-qec plugin registered; sinter.collect() works without custom_decoders=",'New decoder families: AmbiguityClusterDecoder, TwoStageDecoder, ColourCodeDecoder (opt-in method="cluster_bposd")','Relay-BP layered serial BP schedule (bp_method="relay"), CS-OSD(lambda, w) with configurable osd_lambda, and LLR message damping in BP-OSD','Weighted Union-Find on GPU: CUDABatchDecoder / OpenCLBatchDecoder accept edge_weights, plus precision="f64" double-precision growth',"qector decode / qector bench / qector serve CLI and qector-doctor (environment diagnostic)","pymatching submodule shim (from qector_decoder_v3.pymatching import Matching); DemModel.make_decoder covers all native families","SparseBlossomDecoder hot path zero-allocation (thread-local SbScratch); six Rust panic-to-abort paths removed; license hardening (v2 tokens with tier + expiry)","Binary wheels (cp39-cp313, Windows amd64 / Linux x86_64 / macOS 11.0+ arm64); no sdist","Official QECTOR Decoder v3 reference manual v1.0.0 (DOI 10.5281/zenodo.21941046)","Free QECTOR Workbench (current): Comprehensive MCP tools, 19 named kinds (17 concrete decoder configurations plus AutoDecoder and Auto Router), 10 code families including qLDPC and colour codes, visual circuit builder, and a self/auto-debug layer verifying H·c = s on every decode","No universal benchmark figures are published on the site; qector bench ships with the package for measuring on your own hardware"]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-gridline border-4 border-void"}),e.jsx(i,{version:"Verified PyPI release dates · UTC",items:["No v0.7.1 release appears in the public PyPI history; it is intentionally omitted.","Dates below are PyPI upload dates, not inferred development or local file dates.",...c.slice(1).map(({version:t,releaseDate:a,label:r})=>`v${t} · ${a} · ${r}`)]})]})]})})]})}export{v as default}; diff --git a/assets/Changelog-_zFwkt5K.js b/assets/Changelog-_zFwkt5K.js deleted file mode 100644 index f1ead2c1..00000000 --- a/assets/Changelog-_zFwkt5K.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as n}from"./index-iVST85F-.js";import{N as d}from"./NeuralReveal-BflyZYSb.js";import{P as c}from"./releases-DiQz_IDu.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function i({version:t,items:a,latest:r=!1,note:s,className:l=""}){return e.jsxs("div",{className:`card-surface ${r?"border-cyan-300/20":""} ${l}`,children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[r&&e.jsx("span",{className:"px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300",children:"LATEST"}),e.jsx("h2",{className:"text-xl font-bold",children:t})]}),s&&e.jsx("p",{className:"text-muted-foreground text-xs mb-3",children:s}),e.jsx("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:a.map(o=>e.jsx("li",{children:o},o))})]})}function v(){return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Changelog · QECTOR",description:"Version history for QECTOR Decoder v3. PyPI release train, feature additions, and validation milestones."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Latest: v1.0.0 Decoder (first stable release, live from PyPI RSS) · Workbench GUI (current)"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Changelog",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["Version history for QECTOR Decoder v3. Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),". All artifacts and validation on GitHub."]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto pl-8 ml-2 sm:ml-6 md:ml-8 relative space-y-12 border-l border-gridline/60",children:[e.jsx("div",{className:"absolute left-[-1px] top-0 bottom-0 w-[1px] bg-gradient-to-b from-cyan-300 via-gold-400/30 to-transparent shadow-[0_0_8px_rgba(103,232,249,0.5)]"}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-cyan-300 border-4 border-void shadow-[0_0_8px_rgba(103,232,249,0.8)]"}),e.jsx(i,{latest:!0,version:"v1.0.0 · 2026-08-06 (first stable release)",note:e.jsxs(e.Fragment,{children:["Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),"."]}),items:["First stable (v1) release: semantic-versioning frozen; the public API is governed by documented stability tiers (Stable / Workload-sensitive / Experimental / Internal detail)","Ecosystem entry points: five Sinter decoders (qector_blossom, qector_belief, qector_unionfind, and more) and a qiskit-qec plugin registered; sinter.collect() works without custom_decoders=",'New decoder families: AmbiguityClusterDecoder, TwoStageDecoder, ColourCodeDecoder (opt-in method="cluster_bposd")','Relay-BP layered serial BP schedule (bp_method="relay"), CS-OSD(lambda, w) with configurable osd_lambda, and LLR message damping in BP-OSD','Weighted Union-Find on GPU: CUDABatchDecoder / OpenCLBatchDecoder accept edge_weights, plus precision="f64" double-precision growth',"qector decode / qector bench / qector serve CLI and qector-doctor (environment diagnostic)","pymatching submodule shim (from qector_decoder_v3.pymatching import Matching); DemModel.make_decoder covers all native families","SparseBlossomDecoder hot path zero-allocation (thread-local SbScratch); six Rust panic-to-abort paths removed; license hardening (v2 tokens with tier + expiry)","Binary wheels (cp39-cp313, Windows amd64 / Linux x86_64 / macOS 11.0+ arm64); no sdist","Official QECTOR Decoder v3 reference manual v1.0.0 (DOI 10.5281/zenodo.21941046)","Free QECTOR Workbench (current): Comprehensive MCP tools, 19 named kinds (17 concrete decoder configurations plus AutoDecoder and Auto Router), 10 code families including qLDPC and colour codes, visual circuit builder, and a self/auto-debug layer verifying H·c = s on every decode","No universal benchmark figures are published on the site; qector bench ships with the package for measuring on your own hardware"]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-gridline border-4 border-void"}),e.jsx(i,{version:"Verified PyPI release dates · UTC",items:["No v0.7.1 release appears in the public PyPI history; it is intentionally omitted.","Dates below are PyPI upload dates, not inferred development or local file dates.",...c.slice(1).map(({version:t,releaseDate:a,label:r})=>`v${t} · ${a} · ${r}`)]})]})]})})]})}export{v as default}; diff --git a/assets/Changelog-dTKijDWa.js b/assets/Changelog-dTKijDWa.js deleted file mode 100644 index f3e30ab2..00000000 --- a/assets/Changelog-dTKijDWa.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as n}from"./index-BcbVjARk.js";import{N as d}from"./NeuralReveal-BflyZYSb.js";import{P as c}from"./releases-DiQz_IDu.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function i({version:t,items:a,latest:r=!1,note:s,className:l=""}){return e.jsxs("div",{className:`card-surface ${r?"border-cyan-300/20":""} ${l}`,children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[r&&e.jsx("span",{className:"px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300",children:"LATEST"}),e.jsx("h2",{className:"text-xl font-bold",children:t})]}),s&&e.jsx("p",{className:"text-muted-foreground text-xs mb-3",children:s}),e.jsx("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:a.map(o=>e.jsx("li",{children:o},o))})]})}function v(){return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Changelog · QECTOR",description:"Version history for QECTOR Decoder v3. PyPI release train, feature additions, and validation milestones."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Latest: v1.0.0 Decoder (first stable release, live from PyPI RSS) · Workbench GUI (current)"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Changelog",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["Version history for QECTOR Decoder v3. Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),". All artifacts and validation on GitHub."]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto pl-8 ml-2 sm:ml-6 md:ml-8 relative space-y-12 border-l border-gridline/60",children:[e.jsx("div",{className:"absolute left-[-1px] top-0 bottom-0 w-[1px] bg-gradient-to-b from-cyan-300 via-gold-400/30 to-transparent shadow-[0_0_8px_rgba(103,232,249,0.5)]"}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-cyan-300 border-4 border-void shadow-[0_0_8px_rgba(103,232,249,0.8)]"}),e.jsx(i,{latest:!0,version:"v1.0.0 · 2026-08-06 (first stable release)",note:e.jsxs(e.Fragment,{children:["Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),"."]}),items:["First stable (v1) release: semantic-versioning frozen; the public API is governed by documented stability tiers (Stable / Workload-sensitive / Experimental / Internal detail)","Ecosystem entry points: five Sinter decoders (qector_blossom, qector_belief, qector_unionfind, and more) and a qiskit-qec plugin registered; sinter.collect() works without custom_decoders=",'New decoder families: AmbiguityClusterDecoder, TwoStageDecoder, ColourCodeDecoder (opt-in method="cluster_bposd")','Relay-BP layered serial BP schedule (bp_method="relay"), CS-OSD(lambda, w) with configurable osd_lambda, and LLR message damping in BP-OSD','Weighted Union-Find on GPU: CUDABatchDecoder / OpenCLBatchDecoder accept edge_weights, plus precision="f64" double-precision growth',"qector decode / qector bench / qector serve CLI and qector-doctor (environment diagnostic)","pymatching submodule shim (from qector_decoder_v3.pymatching import Matching); DemModel.make_decoder covers all native families","SparseBlossomDecoder hot path zero-allocation (thread-local SbScratch); six Rust panic-to-abort paths removed; license hardening (v2 tokens with tier + expiry)","Binary wheels (cp39-cp313, Windows amd64 / Linux x86_64 / macOS 11.0+ arm64); no sdist","Official QECTOR Decoder v3 reference manual v1.0.0 (DOI 10.5281/zenodo.21941046)","Free QECTOR Workbench (current): Comprehensive MCP tools, 19 named kinds (17 concrete decoder configurations plus AutoDecoder and Auto Router), 10 code families including qLDPC and colour codes, visual circuit builder, and a self/auto-debug layer verifying H·c = s on every decode","No universal benchmark figures are published on the site; qector bench ships with the package for measuring on your own hardware"]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-gridline border-4 border-void"}),e.jsx(i,{version:"Verified PyPI release dates · UTC",items:["No v0.7.1 release appears in the public PyPI history; it is intentionally omitted.","Dates below are PyPI upload dates, not inferred development or local file dates.",...c.slice(1).map(({version:t,releaseDate:a,label:r})=>`v${t} · ${a} · ${r}`)]})]})]})})]})}export{v as default}; diff --git a/assets/Changelog-gIx07919.js b/assets/Changelog-gIx07919.js deleted file mode 100644 index 10277b24..00000000 --- a/assets/Changelog-gIx07919.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as n}from"./index-BN-vOeL2.js";import{N as d}from"./NeuralReveal-BflyZYSb.js";import{P as c}from"./releases-DiQz_IDu.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function i({version:t,items:a,latest:r=!1,note:s,className:l=""}){return e.jsxs("div",{className:`card-surface ${r?"border-cyan-300/20":""} ${l}`,children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[r&&e.jsx("span",{className:"px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300",children:"LATEST"}),e.jsx("h2",{className:"text-xl font-bold",children:t})]}),s&&e.jsx("p",{className:"text-muted-foreground text-xs mb-3",children:s}),e.jsx("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:a.map(o=>e.jsx("li",{children:o},o))})]})}function v(){return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Changelog · QECTOR",description:"Version history for QECTOR Decoder v3. PyPI release train, feature additions, and validation milestones."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Latest: v1.0.0 Decoder (first stable release, live from PyPI RSS) · Workbench GUI (current)"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Changelog",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["Version history for QECTOR Decoder v3. Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),". All artifacts and validation on GitHub."]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto pl-8 ml-2 sm:ml-6 md:ml-8 relative space-y-12 border-l border-gridline/60",children:[e.jsx("div",{className:"absolute left-[-1px] top-0 bottom-0 w-[1px] bg-gradient-to-b from-cyan-300 via-gold-400/30 to-transparent shadow-[0_0_8px_rgba(103,232,249,0.5)]"}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-cyan-300 border-4 border-void shadow-[0_0_8px_rgba(103,232,249,0.8)]"}),e.jsx(i,{latest:!0,version:"v1.0.0 · 2026-08-06 (first stable release)",note:e.jsxs(e.Fragment,{children:["Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),"."]}),items:["First stable (v1) release: semantic-versioning frozen; the public API is governed by documented stability tiers (Stable / Workload-sensitive / Experimental / Internal detail)","Ecosystem entry points: five Sinter decoders (qector_blossom, qector_belief, qector_unionfind, and more) and a qiskit-qec plugin registered; sinter.collect() works without custom_decoders=",'New decoder families: AmbiguityClusterDecoder, TwoStageDecoder, ColourCodeDecoder (opt-in method="cluster_bposd")','Relay-BP layered serial BP schedule (bp_method="relay"), CS-OSD(lambda, w) with configurable osd_lambda, and LLR message damping in BP-OSD','Weighted Union-Find on GPU: CUDABatchDecoder / OpenCLBatchDecoder accept edge_weights, plus precision="f64" double-precision growth',"qector decode / qector bench / qector serve CLI and qector-doctor (environment diagnostic)","pymatching submodule shim (from qector_decoder_v3.pymatching import Matching); DemModel.make_decoder covers all native families","SparseBlossomDecoder hot path zero-allocation (thread-local SbScratch); six Rust panic-to-abort paths removed; license hardening (v2 tokens with tier + expiry)","Binary wheels (cp39-cp313, Windows amd64 / Linux x86_64 / macOS 11.0+ arm64); no sdist","Official QECTOR Decoder v3 reference manual v1.0.0 (DOI 10.5281/zenodo.21941046)","Free QECTOR Workbench (current): Comprehensive MCP tools, 19 named kinds (17 concrete decoder configurations plus AutoDecoder and Auto Router), 10 code families including qLDPC and colour codes, visual circuit builder, and a self/auto-debug layer verifying H·c = s on every decode","No universal benchmark figures are published on the site; qector bench ships with the package for measuring on your own hardware"]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-gridline border-4 border-void"}),e.jsx(i,{version:"Verified PyPI release dates · UTC",items:["No v0.7.1 release appears in the public PyPI history; it is intentionally omitted.","Dates below are PyPI upload dates, not inferred development or local file dates.",...c.slice(1).map(({version:t,releaseDate:a,label:r})=>`v${t} · ${a} · ${r}`)]})]})]})})]})}export{v as default}; diff --git a/assets/Changelog-mI7mdncX.js b/assets/Changelog-mI7mdncX.js deleted file mode 100644 index ebe8ac91..00000000 --- a/assets/Changelog-mI7mdncX.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as l}from"./index-CcwlvHYJ.js";import{N as d}from"./NeuralReveal-Bsl9IGCr.js";import{P as c}from"./releases-1-HBloZv.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function a({version:s,items:t,latest:r=!1,note:o,className:n=""}){return e.jsxs("div",{className:`card-surface ${r?"border-cyan-300/20":""} ${n}`,children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[r&&e.jsx("span",{className:"px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300",children:"LATEST"}),e.jsx("h2",{className:"text-xl font-bold",children:s})]}),o&&e.jsx("p",{className:"text-muted-foreground text-xs mb-3",children:o}),e.jsx("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5 [overflow-wrap:anywhere]",children:t.map(i=>e.jsx("li",{children:i},i))})]})}function g(){return e.jsxs(e.Fragment,{children:[e.jsx(l,{title:"Changelog · QECTOR",description:"Version history for QECTOR Decoder v3. PyPI release train, feature additions, and validation milestones."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Latest: v1.0.1 Decoder (2026-11-06) · Claude Plugin v2.0.1 · Workbench v1.0.7"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Changelog",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["Version history for QECTOR Decoder v3. Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),". All artifacts and validation on GitHub."]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto pl-8 ml-2 sm:ml-6 md:ml-8 relative space-y-12 border-l border-gridline/60",children:[e.jsx("div",{className:"absolute left-[-1px] top-0 bottom-0 w-[1px] bg-gradient-to-b from-cyan-300 via-gold-400/30 to-transparent shadow-[0_0_8px_rgba(103,232,249,0.5)]"}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-cyan-300 border-4 border-void shadow-[0_0_8px_rgba(103,232,249,0.8)]"}),e.jsx(a,{latest:!0,version:"v1.0.1 · 2026-11-06 (current)",note:e.jsxs(e.Fragment,{children:["Full notes in"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder/releases/tag/v1.0.1",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"the GitHub release"}),"."]}),items:["Code families corrected: rotated and unrotated surface, heavy-hex and colour codes now build at their labelled distance; Union-Find peeling and GPU kernel parity fixed","18 binary wheels: CPython 3.9-3.14 on Windows x64, Linux x86_64 (manylinux_2_17) and macOS 11+ arm64","Every wheel is installed and decoded on its own OS (H·c = s checks) before publishing; per-platform receipts ship as platform-proof.json in the release","Signed build provenance (Sigstore) for every wheel, plus PyPI attestations; published through Trusted Publishing with no API token","Licensing: every paid token (Pro or Enterprise) unlocks GPU batch decoding; licence metadata is now a standard SPDX expression (PolyForm Noncommercial 1.0.0)","QECTOR_OFFLINE=1 keeps the native core fully offline; nine security advisories in optional network dependencies fixed (rustls, webpki, h2)","Sinter: pass custom_decoders=qector_sinter_decoders() to sinter.collect()"]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-gridline border-4 border-void"}),e.jsx(a,{version:"v1.0.0 · 2026-08-06 (first stable release)",note:e.jsxs(e.Fragment,{children:["Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),"."]}),items:["First stable (v1) release: semantic-versioning frozen; the public API is governed by documented stability tiers (Stable / Workload-sensitive / Experimental / Internal detail)","Ecosystem entry points: five Sinter decoders (qector_blossom, qector_belief, qector_unionfind, and more) and a qiskit-qec plugin",'New decoder families: AmbiguityClusterDecoder, TwoStageDecoder, ColourCodeDecoder (opt-in method="cluster_bposd")','Relay-BP layered serial BP schedule (bp_method="relay"), CS-OSD(lambda, w) with configurable osd_lambda, and LLR message damping in BP-OSD','Weighted Union-Find on GPU: CUDABatchDecoder / OpenCLBatchDecoder accept edge_weights, plus precision="f64" double-precision growth',"qector decode / qector bench / qector serve CLI and qector-doctor (environment diagnostic)","pymatching submodule shim (from qector_decoder_v3.pymatching import Matching); DemModel.make_decoder covers all native families","SparseBlossomDecoder hot path zero-allocation (thread-local SbScratch); six Rust panic-to-abort paths removed; license hardening (v2 tokens with tier + expiry)","Binary wheels (cp39-cp313, Windows amd64 / Linux x86_64 / macOS 11.0+ arm64); no sdist","Official QECTOR Decoder v3 reference manual v1.0.0 (DOI 10.5281/zenodo.21941046)","Free QECTOR Workbench (current): Comprehensive MCP tools, 19 named kinds (17 concrete decoder configurations plus AutoDecoder and Auto Router), 10 code families including qLDPC and colour codes, visual circuit builder, and a self/auto-debug layer verifying H·c = s on every decode","No universal benchmark figures are published on the site; qector bench ships with the package for measuring on your own hardware"]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-gridline border-4 border-void"}),e.jsx(a,{version:"Verified PyPI release dates · UTC",items:["No v0.7.1 release appears in the public PyPI history; it is intentionally omitted.","Dates below are PyPI upload dates, not inferred development or local file dates.",...c.slice(2).map(({version:s,releaseDate:t,label:r})=>`v${s} · ${t} · ${r}`)]})]})]})})]})}export{g as default}; diff --git a/assets/Changelog-rqydXTBu.js b/assets/Changelog-rqydXTBu.js deleted file mode 100644 index d3859e1f..00000000 --- a/assets/Changelog-rqydXTBu.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as l}from"./index-DkYdPRY7.js";import{N as d}from"./NeuralReveal-BflyZYSb.js";import{P as c}from"./releases-1-HBloZv.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function o({version:t,items:s,latest:r=!1,note:a,className:n=""}){return e.jsxs("div",{className:`card-surface ${r?"border-cyan-300/20":""} ${n}`,children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[r&&e.jsx("span",{className:"px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300",children:"LATEST"}),e.jsx("h2",{className:"text-xl font-bold",children:t})]}),a&&e.jsx("p",{className:"text-muted-foreground text-xs mb-3",children:a}),e.jsx("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:s.map(i=>e.jsx("li",{children:i},i))})]})}function f(){return e.jsxs(e.Fragment,{children:[e.jsx(l,{title:"Changelog · QECTOR",description:"Version history for QECTOR Decoder v3. PyPI release train, feature additions, and validation milestones."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Latest: v1.0.1 Decoder (2026-11-06) · Claude Plugin v2.0.1 · Workbench v1.0.7"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Changelog",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["Version history for QECTOR Decoder v3. Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),". All artifacts and validation on GitHub."]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto pl-8 ml-2 sm:ml-6 md:ml-8 relative space-y-12 border-l border-gridline/60",children:[e.jsx("div",{className:"absolute left-[-1px] top-0 bottom-0 w-[1px] bg-gradient-to-b from-cyan-300 via-gold-400/30 to-transparent shadow-[0_0_8px_rgba(103,232,249,0.5)]"}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-cyan-300 border-4 border-void shadow-[0_0_8px_rgba(103,232,249,0.8)]"}),e.jsx(o,{latest:!0,version:"v1.0.1 · 2026-11-06 (current)",note:e.jsxs(e.Fragment,{children:["Full notes in"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder/releases/tag/v1.0.1",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"the GitHub release"}),"."]}),items:["Code families corrected: rotated and unrotated surface, heavy-hex and colour codes now build at their labelled distance; Union-Find peeling and GPU kernel parity fixed","18 binary wheels: CPython 3.9-3.14 on Windows x64, Linux x86_64 (manylinux_2_17) and macOS 11+ arm64","Every wheel is installed and decoded on its own OS (H·c = s checks) before publishing; per-platform receipts ship as platform-proof.json in the release","Signed build provenance (Sigstore) for every wheel, plus PyPI attestations; published through Trusted Publishing with no API token","Licensing: every paid token (Pro or Enterprise) unlocks GPU batch decoding; licence metadata is now a standard SPDX expression (PolyForm Noncommercial 1.0.0)","QECTOR_OFFLINE=1 keeps the native core fully offline; nine security advisories in optional network dependencies fixed (rustls, webpki, h2)","Sinter: pass custom_decoders=qector_sinter_decoders() to sinter.collect()"]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-gridline border-4 border-void"}),e.jsx(o,{version:"v1.0.0 · 2026-08-06 (first stable release)",note:e.jsxs(e.Fragment,{children:["Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),"."]}),items:["First stable (v1) release: semantic-versioning frozen; the public API is governed by documented stability tiers (Stable / Workload-sensitive / Experimental / Internal detail)","Ecosystem entry points: five Sinter decoders (qector_blossom, qector_belief, qector_unionfind, and more) and a qiskit-qec plugin",'New decoder families: AmbiguityClusterDecoder, TwoStageDecoder, ColourCodeDecoder (opt-in method="cluster_bposd")','Relay-BP layered serial BP schedule (bp_method="relay"), CS-OSD(lambda, w) with configurable osd_lambda, and LLR message damping in BP-OSD','Weighted Union-Find on GPU: CUDABatchDecoder / OpenCLBatchDecoder accept edge_weights, plus precision="f64" double-precision growth',"qector decode / qector bench / qector serve CLI and qector-doctor (environment diagnostic)","pymatching submodule shim (from qector_decoder_v3.pymatching import Matching); DemModel.make_decoder covers all native families","SparseBlossomDecoder hot path zero-allocation (thread-local SbScratch); six Rust panic-to-abort paths removed; license hardening (v2 tokens with tier + expiry)","Binary wheels (cp39-cp313, Windows amd64 / Linux x86_64 / macOS 11.0+ arm64); no sdist","Official QECTOR Decoder v3 reference manual v1.0.0 (DOI 10.5281/zenodo.21941046)","Free QECTOR Workbench (current): Comprehensive MCP tools, 19 named kinds (17 concrete decoder configurations plus AutoDecoder and Auto Router), 10 code families including qLDPC and colour codes, visual circuit builder, and a self/auto-debug layer verifying H·c = s on every decode","No universal benchmark figures are published on the site; qector bench ships with the package for measuring on your own hardware"]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-gridline border-4 border-void"}),e.jsx(o,{version:"Verified PyPI release dates · UTC",items:["No v0.7.1 release appears in the public PyPI history; it is intentionally omitted.","Dates below are PyPI upload dates, not inferred development or local file dates.",...c.slice(2).map(({version:t,releaseDate:s,label:r})=>`v${t} · ${s} · ${r}`)]})]})]})})]})}export{f as default}; diff --git a/assets/Changelog-s4ZdEfl3.js b/assets/Changelog-s4ZdEfl3.js deleted file mode 100644 index 34a949e6..00000000 --- a/assets/Changelog-s4ZdEfl3.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as n}from"./index-DRAXObZB.js";import{N as d}from"./NeuralReveal-BflyZYSb.js";import{P as c}from"./releases-DiQz_IDu.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function i({version:t,items:a,latest:r=!1,note:s,className:l=""}){return e.jsxs("div",{className:`card-surface ${r?"border-cyan-300/20":""} ${l}`,children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[r&&e.jsx("span",{className:"px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300",children:"LATEST"}),e.jsx("h2",{className:"text-xl font-bold",children:t})]}),s&&e.jsx("p",{className:"text-muted-foreground text-xs mb-3",children:s}),e.jsx("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:a.map(o=>e.jsx("li",{children:o},o))})]})}function v(){return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Changelog · QECTOR",description:"Version history for QECTOR Decoder v3. PyPI release train, feature additions, and validation milestones."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Latest: v1.0.0 Decoder (first stable release, live from PyPI RSS) · Workbench GUI (current)"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Changelog",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["Version history for QECTOR Decoder v3. Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),". All artifacts and validation on GitHub."]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto pl-8 ml-2 sm:ml-6 md:ml-8 relative space-y-12 border-l border-gridline/60",children:[e.jsx("div",{className:"absolute left-[-1px] top-0 bottom-0 w-[1px] bg-gradient-to-b from-cyan-300 via-gold-400/30 to-transparent shadow-[0_0_8px_rgba(103,232,249,0.5)]"}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-cyan-300 border-4 border-void shadow-[0_0_8px_rgba(103,232,249,0.8)]"}),e.jsx(i,{latest:!0,version:"v1.0.0 · 2026-08-06 (first stable release)",note:e.jsxs(e.Fragment,{children:["Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),"."]}),items:["First stable (v1) release: semantic-versioning frozen; the public API is governed by documented stability tiers (Stable / Workload-sensitive / Experimental / Internal detail)","Ecosystem entry points: five Sinter decoders (qector_blossom, qector_belief, qector_unionfind, and more) and a qiskit-qec plugin registered; sinter.collect() works without custom_decoders=",'New decoder families: AmbiguityClusterDecoder, TwoStageDecoder, ColourCodeDecoder (opt-in method="cluster_bposd")','Relay-BP layered serial BP schedule (bp_method="relay"), CS-OSD(lambda, w) with configurable osd_lambda, and LLR message damping in BP-OSD','Weighted Union-Find on GPU: CUDABatchDecoder / OpenCLBatchDecoder accept edge_weights, plus precision="f64" double-precision growth',"qector decode / qector bench / qector serve CLI and qector-doctor (environment diagnostic)","pymatching submodule shim (from qector_decoder_v3.pymatching import Matching); DemModel.make_decoder covers all native families","SparseBlossomDecoder hot path zero-allocation (thread-local SbScratch); six Rust panic-to-abort paths removed; license hardening (v2 tokens with tier + expiry)","Binary wheels (cp39-cp313, Windows amd64 / Linux x86_64 / macOS 11.0+ arm64); no sdist","Official QECTOR Decoder v3 reference manual v1.0.0 (DOI 10.5281/zenodo.21941046)","Free QECTOR Workbench (current): Comprehensive MCP tools, 19 named kinds (17 concrete decoder configurations plus AutoDecoder and Auto Router), 10 code families including qLDPC and colour codes, visual circuit builder, and a self/auto-debug layer verifying H·c = s on every decode","No universal benchmark figures are published on the site; qector bench ships with the package for measuring on your own hardware"]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-gridline border-4 border-void"}),e.jsx(i,{version:"Verified PyPI release dates · UTC",items:["No v0.7.1 release appears in the public PyPI history; it is intentionally omitted.","Dates below are PyPI upload dates, not inferred development or local file dates.",...c.slice(1).map(({version:t,releaseDate:a,label:r})=>`v${t} · ${a} · ${r}`)]})]})]})})]})}export{v as default}; diff --git a/assets/Changelog-tzpHr6ui.js b/assets/Changelog-tzpHr6ui.js deleted file mode 100644 index 4c6188c2..00000000 --- a/assets/Changelog-tzpHr6ui.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as n}from"./index-DayaklK-.js";import{N as d}from"./NeuralReveal-uYarhiMA.js";import{a as c}from"./releases--9GgxpSb.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";function t({version:s,items:a,latest:r=!1,note:o,className:l=""}){return e.jsxs("div",{className:`card-surface ${r?"border-cyan-300/20":""} ${l}`,children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[r&&e.jsx("span",{className:"px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300",children:"LATEST"}),e.jsx("h2",{className:"text-xl font-bold",children:s})]}),o&&e.jsx("p",{className:"text-muted-foreground text-xs mb-3",children:o}),e.jsx("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5 [overflow-wrap:anywhere]",children:a.map(i=>e.jsx("li",{children:i},i))})]})}function g(){return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Changelog · QECTOR",description:"Version history for QECTOR Decoder v3. PyPI release train, feature additions, and validation milestones."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Latest: v1.0.1 Decoder (2026-11-06) · Claude Plugin v2.0.1 · Workbench v1.0.7"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Changelog",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["Version history for QECTOR Decoder v3. Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),". All artifacts and validation on GitHub."]}),e.jsxs("div",{className:"max-w-2xl mx-auto mt-8 p-5 rounded-2xl border border-cyan-300/20 bg-surface/60 text-left",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Get release alerts"}),e.jsx("p",{className:"text-secondary text-sm mb-3",children:"No mailing list to join: subscribe with the tools you already use."}),e.jsxs("ul",{className:"text-sm space-y-1.5",children:[e.jsxs("li",{children:[e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder/releases.atom",className:"text-cyan-300 hover:underline",children:"Decoder releases (Atom feed)"})," ",e.jsx("span",{className:"text-muted-foreground",children:"or GitHub: Watch → Custom → Releases"})]}),e.jsx("li",{children:e.jsx("a",{href:"https://pypi.org/rss/project/qector-decoder-v3/releases.xml",className:"text-cyan-300 hover:underline",children:"PyPI releases (RSS)"})}),e.jsx("li",{children:e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin/releases.atom",className:"text-cyan-300 hover:underline",children:"Claude plugin releases (Atom feed)"})}),e.jsx("li",{children:e.jsx("a",{href:"/feed.xml",className:"text-cyan-300 hover:underline",children:"Blog (Atom feed)"})})]})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto pl-8 ml-2 sm:ml-6 md:ml-8 relative space-y-12 border-l border-gridline/60",children:[e.jsx("div",{className:"absolute left-[-1px] top-0 bottom-0 w-[1px] bg-gradient-to-b from-cyan-300 via-gold-400/30 to-transparent shadow-[0_0_8px_rgba(103,232,249,0.5)]"}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-cyan-300 border-4 border-void shadow-[0_0_8px_rgba(103,232,249,0.8)]"}),e.jsx(t,{latest:!0,version:"v1.0.1 · 2026-11-06 (current)",note:e.jsxs(e.Fragment,{children:["Full notes in"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder/releases/tag/v1.0.1",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"the GitHub release"}),"."]}),items:["Code families corrected: rotated and unrotated surface, heavy-hex and colour codes now build at their labelled distance; Union-Find peeling and GPU kernel parity fixed","18 binary wheels: CPython 3.9-3.14 on Windows x64, Linux x86_64 (manylinux_2_17) and macOS 11+ arm64","Every wheel is installed and decoded on its own OS (H·c = s checks) before publishing; per-platform receipts ship as platform-proof.json in the release","Signed build provenance (Sigstore) for every wheel, plus PyPI attestations; published through Trusted Publishing with no API token","Licensing: every paid token (Pro or Enterprise) unlocks GPU batch decoding; licence metadata is now a standard SPDX expression (PolyForm Noncommercial 1.0.0)","QECTOR_OFFLINE=1 keeps the native core fully offline; nine security advisories in optional network dependencies fixed (rustls, webpki, h2)","Sinter: pass custom_decoders=qector_sinter_decoders() to sinter.collect()"]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-gridline border-4 border-void"}),e.jsx(t,{version:"v1.0.0 · 2026-08-06 (first stable release)",note:e.jsxs(e.Fragment,{children:["Exact release dates on"," ",e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/#history",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"PyPI"}),"."]}),items:["First stable (v1) release: semantic-versioning frozen; the public API is governed by documented stability tiers (Stable / Workload-sensitive / Experimental / Internal detail)","Ecosystem entry points: five Sinter decoders (qector_blossom, qector_belief, qector_unionfind, and more) and a qiskit-qec plugin",'New decoder families: AmbiguityClusterDecoder, TwoStageDecoder, ColourCodeDecoder (opt-in method="cluster_bposd")','Relay-BP layered serial BP schedule (bp_method="relay"), CS-OSD(lambda, w) with configurable osd_lambda, and LLR message damping in BP-OSD','Weighted Union-Find on GPU: CUDABatchDecoder / OpenCLBatchDecoder accept edge_weights, plus precision="f64" double-precision growth',"qector decode / qector bench / qector serve CLI and qector-doctor (environment diagnostic)","pymatching submodule shim (from qector_decoder_v3.pymatching import Matching); DemModel.make_decoder covers all native families","SparseBlossomDecoder hot path zero-allocation (thread-local SbScratch); six Rust panic-to-abort paths removed; license hardening (v2 tokens with tier + expiry)","Binary wheels (cp39-cp313, Windows amd64 / Linux x86_64 / macOS 11.0+ arm64); no sdist","Official QECTOR Decoder v3 reference manual v1.0.0 (DOI 10.5281/zenodo.21941046)","Free QECTOR Workbench (current): Comprehensive MCP tools, 19 named kinds (17 concrete decoder configurations plus AutoDecoder and Auto Router), 10 code families including qLDPC and colour codes, visual circuit builder, and a self/auto-debug layer verifying H·c = s on every decode","No universal benchmark figures are published on the site; qector bench ships with the package for measuring on your own hardware"]})]}),e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute -left-[40px] top-6 w-4 h-4 rounded-full bg-gridline border-4 border-void"}),e.jsx(t,{version:"Verified PyPI release dates · UTC",items:["No v0.7.1 release appears in the public PyPI history; it is intentionally omitted.","Dates below are PyPI upload dates, not inferred development or local file dates.",...c.slice(2).map(({version:s,releaseDate:a,label:r})=>`v${s} · ${a} · ${r}`)]})]})]})})]})}export{g as default}; diff --git a/assets/ClaudePlugin-BeNgMSb2.js b/assets/ClaudePlugin-BeNgMSb2.js deleted file mode 100644 index ad20dbeb..00000000 --- a/assets/ClaudePlugin-BeNgMSb2.js +++ /dev/null @@ -1,13 +0,0 @@ -import{r as h,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,J as f,C as t}from"./index-B9kEGiWi.js";import{N as g}from"./NeuralReveal-BflyZYSb.js";import{C as n}from"./releases-DiQz_IDu.js";import{S as b,T as o,c as y,d as j,E as v,f as N,L as w,a as i,g as k,W as C,h as _,i as q,A as S,j as E,D as L,B as P}from"./vendor-ui-B0ssGG4c.js";import{L as c}from"./vendor-PiU4YGcH.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const O=[{name:"qector-core",role:"Core Ground Truth",desc:"Verified platform facts, 8 library MCP tools, 5 stable decoders, and strict API grounding to prevent hallucination.",keyFeatures:["Grounds tool names & signatures","Enforces strict math boundary","Local verification"]},{name:"qector-math-foundations",role:"Mathematical Axioms",desc:"Theorems 1-16 executable obligations over GF(2), syndrome equivalence H c = s (mod 2), Wilson 95% CIs, and coset scoring.",keyFeatures:["Theorem 1 fail-closed verification","Theorem 2 logical coset scoring","Wilson score intervals"]},{name:"qector-developer",role:"SDK & Engineering",desc:"Integration guidance for qector-decoder-v3 Python SDK, parity-check matrix generation, Sinter/Stim adapters, and CI/CD testing.",keyFeatures:["Python SDK best practices","Matrix construction helpers","Local test automation"]},{name:"qector-researcher",role:"Quantum Information Science",desc:"Threshold discovery workflows, noise modeling, Monte Carlo error simulations, and academic paper reproduction.",keyFeatures:["Code-capacity sweeps","Noise model parameterization","Reproducible artifact export"]},{name:"qector-hardware-engineer",role:"Experimental & Cryogenic",desc:"Hardware constraint modeling, heavy-hex/surface graph mapping, physical error rate profiling, and latency budgets.",keyFeatures:["Physical qubit layout mapping","Hardware latency analysis","Cryogenic error budgets"]},{name:"qector-educator",role:"Pedagogy & Concepts",desc:"Interactive tutorial creation, mathematical explanations of syndrome decoding, MWPM matching, and BP-OSD.",keyFeatures:["Step-by-step decoding explanations","Interactive code walkthroughs","Visual homology concepts"]},{name:"qector-sysadmin",role:"Operations & Hygiene",desc:"Environment diagnostics, resource limits (MAX_CHECKS, MAX_QUBITS), safe file I/O, and deployment validation.",keyFeatures:["15-point runtime health check","DoS & memory limit guards","Platform compatibility audit"]}],T=["qector-architecture","qector-batch-decoding","qector-bp-osd","qector-codes-builder","qector-core","qector-decoders-deep-dive","qector-dem-pipeline","qector-deployment","qector-developer","qector-educator","qector-glossary","qector-hardware-engineer","qector-ler-methodology","qector-licensing","qector-math-foundations","qector-orchestration","qector-pymatching-compat","qector-release-engineering","qector-reproducibility","qector-researcher","qector-roadmap","qector-services","qector-sinter","qector-space-time","qector-sysadmin","qector-testing-strategy","qector-two-stage-css","qector-workbench"],R=[{file:"qec-developer.md",title:"QEC Software Engineer",desc:"Specialized in Python SDK integration, decoder benchmarking, matrix generation, and production deployment."},{file:"qec-researcher.md",title:"QEC Research Scientist",desc:"Specialized in academic literature review, threshold sweeps, Wilson confidence intervals, and Monte Carlo studies."},{file:"qec-validator.md",title:"Mathematical Proof Validator",desc:"Specialized in formal theorem checking, finite matrix verification, syndrome faithfulness, and local-only enforcement."},{file:"qec-sysadmin.md",title:"Systems & Runtime Engineer",desc:"Specialized in Python environment health, MCP server stdio management, resource bounds, and packaging."},{file:"qec-hardware-engineer.md",title:"Quantum Hardware Architect",desc:"Specialized in superconducting qubit topologies, heavy-hex grids, cryogenic latency constraints, and noise budgets."}],D=[{name:"list_code_families",desc:"Lists available code families (Rotated Surface, Toric, Ring, Repetition, Color, Heavy-Hex, Hypergraph Product)."},{name:"list_decoders",desc:"Lists the five stable decoder classes: UnionFind, FastUnionFind, Blossom (MWPM), SparseBlossom, NativeAuto."},{name:"get_license_info",desc:"Reads live offline licensing tier and feature flags from the installed qector-decoder-v3 package."},{name:"decode_syndrome",desc:"Decodes a binary syndrome with mandatory Theorem 1 fail-closed verification: H c = s (mod 2)."},{name:"decode_single",desc:"Executes a single-shot decode with logical-coset scoring (Theorem 2) against logical observables."},{name:"threshold_sweep",desc:"Runs device-local code-capacity sweeps with Wilson 95% confidence intervals and SHA-256 sealed artifacts."},{name:"build_code_from_matrix",desc:"Validates and compiles an arbitrary binary parity-check matrix with rank and observable analysis."},{name:"compat_report",desc:"Audits runtime health, wheel version, NumPy compatibility, and provisional feature boundaries."}],d=["artifacts_sha256","artifact_metadata_check","code_distance_check","code_export_matrices","code_family_info","code_logicals_inspect","compat_report","decode_faithfulness_check","dem_collapse_parallel","dem_inspect","env_block","glossary_lookup","hardware_probe","hot_path_microbench","license_active_check","logical_coset_score","pymatching_compat_check","qiskit_plugin_check","reproduction_command_lookup","sinter_decoder_list","sinter_task_template","stim_circuit_probe","theorem_lookup","wilson_ci","wilson_table","workload_hash","get_capability_matrix","get_evidence_policy","get_runtime_provenance"],m=["system_setup","configure_claude_desktop","workbench_probe"];function B(){const[r,x]=h.useState(!1),p=(s,a)=>{navigator.clipboard.writeText(s),a(!0),setTimeout(()=>a(!1),2e3)},l=`claude plugin marketplace add GuillaumeLessard/qector-claude-plugin -claude plugin install qector@qector-tools`;return e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"QECTOR Claude Plugin · Quantum Error Correction for Claude Code",description:"Official QECTOR Claude Code and Claude Desktop plugin v1.0.6. 28 skills, 5 agents, four MCP servers, and qector-decoder-v3 1.0.0 with local stdio-based decoding."}),e.jsx(f,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Claude Plugin",description:"Official QECTOR plugin v1.0.6 for Claude Code and Claude Desktop. 28 skills, 5 agents, four MCP servers, 8 stable library tools, 29 opt-in research tools, and 3 opt-in admin tools.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",softwareVersion:"1.0.6",author:{"@type":"Person",name:"Guillaume Lessard",url:"https://orcid.org/0009-0000-3465-3753"},offers:{"@type":"Offer",price:"0",priceCurrency:"USD"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-400/5 via-surface/40 to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/4 left-1/2 -translate-x-1/2 -translate-y-1/2 w-96 h-96 bg-cyan-400/10 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-4 sm:px-6 relative z-10 text-center",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3.5 py-1.5 rounded-full bg-cyan-950/60 border border-cyan-800/60 text-cyan-300 text-xs font-mono font-medium mb-6 backdrop-blur-sm",children:[e.jsx(b,{className:"w-3.5 h-3.5 text-cyan-400"}),e.jsxs("span",{children:["ANTHROPIC CLAUDE CODE & DESKTOP PLUGIN · v",n.version," · published ",n.releaseDate]})]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-extrabold tracking-tight text-slate-100 mb-6 max-w-4xl mx-auto leading-[1.1]",children:e.jsx(g,{text:"QECTOR Claude Plugin"})}),e.jsxs("p",{className:"text-lg md:text-xl text-slate-300 max-w-3xl mx-auto leading-relaxed mb-8",children:["Empower Claude with local Quantum Error Correction engineering. Release v1.0.6 adds marketplace compliance hardening and environment-agnostic setup. It includes"," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"28 domain skills"}),","," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"5 specialized agents"}),","," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"8 stable library tools"}),", 29 opt-in research tools, and 3 opt-in admin tools across four MCP servers. The default configuration uses local stdio transport."]}),e.jsxs("div",{className:"max-w-2xl mx-auto bg-slate-950/90 border border-cyan-900/60 rounded-2xl p-5 mb-10 shadow-2xl backdrop-blur-md text-left",children:[e.jsxs("div",{className:"flex items-center justify-between pb-3 mb-3 border-b border-slate-800/80",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(o,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{className:"text-xs font-mono font-semibold uppercase tracking-wider text-slate-400",children:"Instant Marketplace Install"})]}),e.jsxs("button",{onClick:()=>p(l,x),className:"flex items-center gap-1.5 text-xs font-mono text-cyan-400 hover:text-cyan-300 transition-colors px-2.5 py-1 rounded bg-cyan-950/50 border border-cyan-800/40",children:[r?e.jsx(y,{className:"w-3.5 h-3.5 text-green-400"}):e.jsx(j,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:r?"Copied":"Copy"})]})]}),e.jsx("pre",{className:"font-mono text-sm text-cyan-300 overflow-x-auto whitespace-pre leading-relaxed",children:l})]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin",target:"_blank",rel:"noopener noreferrer",className:"px-6 py-3 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-sm transition-all shadow-lg shadow-cyan-400/20 inline-flex items-center gap-2",children:[e.jsx("span",{children:"GitHub Repository"}),e.jsx(v,{className:"w-4 h-4"})]}),e.jsxs(c,{to:"/mcp-server",className:"px-6 py-3 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-sm transition-all inline-flex items-center gap-2",children:[e.jsx("span",{children:"MCP Server Reference"}),e.jsx(N,{className:"w-4 h-4 text-cyan-400"})]})]}),e.jsx("p",{className:"text-xs text-slate-400 mt-6",children:"Independent plugin by iD01t Productions. Not affiliated with or endorsed by Anthropic."})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(w,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Local-First Security"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"Local stdio transport by default. Parity matrices, syndromes, quantum circuits, and simulation artifacts are processed on the host machine; verify your host environment if confidentiality matters."})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(i,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Strict Mathematics"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Decodes are checked against ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"H c = s (mod 2)"}),". Scored with logical cosets and Wilson 95% CIs."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(k,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"App-Free Library"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Built on the official ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"qector-decoder-v3==1.0.0"})," Rust/PyO3 wheel. No desktop GUI required."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(C,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Multi-Agent System"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"28 domain skills and 5 tailored agent personas designed for research, hardware design, verification, and engineering."})]})]})}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"DOMAIN SKILLS ECOSYSTEM"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"28 Grounded QEC Skills"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Each skill encodes verified domain rules and strict-math obligations to reduce hallucination risk and ground interactions in reproducible physics. The seven flagship skills below are a subset of the 28 skills shipped in v1.0.6."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:O.map(s=>e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800/90 flex flex-col justify-between hover:border-cyan-500/30 transition-all",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsx("span",{className:"font-mono text-sm font-bold text-cyan-400",children:s.name}),e.jsx("span",{className:"text-[11px] font-mono px-2 py-0.5 rounded bg-slate-800 text-slate-300 border border-slate-700",children:s.role})]}),e.jsx("p",{className:"text-sm text-slate-300 leading-relaxed mb-4",children:s.desc})]}),e.jsx("div",{className:"pt-3 border-t border-slate-800/80 space-y-1.5",children:s.keyFeatures.map(a=>e.jsxs("div",{className:"flex items-center gap-2 text-xs text-slate-400",children:[e.jsx(q,{className:"w-3.5 h-3.5 text-cyan-400 shrink-0"}),e.jsx("span",{children:a})]},a))})]},s.name))}),e.jsxs("div",{className:"mt-10",children:[e.jsx("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:"All 28 skills shipped in the plugin"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:T.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-cyan-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(S,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"AGENT ROLES & PERSONAS"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"5 Specialized QEC Agents"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Custom agent definitions for Claude Code configured with tailored instructions, prompt templates, and tool access boundaries."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:R.map(s=>e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2 font-mono text-xs text-cyan-400",children:[e.jsx(o,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:s.file})]}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-2",children:s.title}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:s.desc})]})},s.file))})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(E,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"MCP SERVER TOOL SURFACE"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Four Local MCP Servers"}),e.jsxs("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:["The v1.0.6 release separates local JSON-RPC 2.0 stdio capabilities by risk and purpose:",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-library "})," (8 stable tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-research "})," (29 provisional tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-admin "})," (3 explicitly enabled tools), and",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-desktop-mcp "})," (the safe Desktop profile)."]})]}),e.jsx("div",{className:"card-surface rounded-2xl border border-slate-800 overflow-hidden shadow-xl",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm",children:[e.jsx("thead",{className:"bg-slate-900/90 text-xs font-mono text-cyan-400 uppercase tracking-wider border-b border-slate-800",children:e.jsxs("tr",{children:[e.jsx("th",{className:"px-6 py-4",children:"Tool Name"}),e.jsx("th",{className:"px-6 py-4",children:"Functionality & Mathematical Invariant"})]})}),e.jsx("tbody",{className:"divide-y divide-slate-800/60 font-mono text-xs text-slate-300",children:D.map(s=>e.jsxs("tr",{className:"hover:bg-slate-900/40 transition-colors",children:[e.jsx("td",{className:"px-6 py-4 font-semibold text-cyan-300 whitespace-nowrap",children:s.name}),e.jsx("td",{className:"px-6 py-4 font-sans text-sm text-slate-400",children:s.desc})]},s.name))})]})})}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-research server · ",d.length," provisional tools"]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:d.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-slate-300",children:s},s))})]}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-admin server · ",m.length," privileged tools"]}),e.jsxs("p",{className:"text-xs text-slate-400 mb-3",children:["Disabled by default. Requires ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"QECTOR_ADMIN_ENABLED=1"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"confirm=true"})," for every administrative call."]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:m.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-gold-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Installation & Setup"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2",children:"Configure QECTOR Claude Plugin v1.0.6 for Claude Code or Claude Desktop in seconds."})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"1"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Claude Code Marketplace"})]}),e.jsx("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:"Install directly via Claude Code marketplace registration:"}),e.jsx(t,{code:`# 1. Add marketplace repository -claude plugin marketplace add GuillaumeLessard/qector-claude-plugin - -# 2. Install plugin -claude plugin install qector@qector-tools`,language:"bash"})]})}),e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"2"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Local Plugin Directory"})]}),e.jsxs("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:["Clone the source repository and launch with the ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"--plugin-dir"})," flag:"]}),e.jsx(t,{code:`git clone https://github.com/GuillaumeLessard/qector-claude-plugin.git -cd qector-claude-plugin -pip install -r requirements.txt -claude --plugin-dir .`,language:"bash"})]})})]}),e.jsxs("div",{className:"mt-8 card-surface p-6 rounded-2xl border border-slate-800",children:[e.jsxs("h3",{className:"text-lg font-bold text-slate-100 mb-2 flex items-center gap-2",children:[e.jsx(i,{className:"w-5 h-5 text-cyan-400"}),e.jsx("span",{children:"Mathematical Validation Gate"})]}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed mb-4",children:"Verify all 16 Reference Manual theorems and 29 executable proof obligations locally on your machine:"}),e.jsx(t,{code:`# Run the complete public reference manual mathematical gate -python scripts/run_manual_math_validation.py - -# Or run full pytest integration suite -python -m pytest tests/test_reference_manual_math.py -v`,language:"bash"})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6 mb-12",children:e.jsx("div",{className:"card-surface p-8 border border-cyan-900/50 relative overflow-hidden bg-gradient-to-br from-slate-950 via-surface/60 to-slate-950",children:e.jsxs("div",{className:"relative z-10 flex flex-col md:flex-row items-center justify-between gap-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-2xl font-extrabold text-slate-100 mb-2",children:"Download Distribution Packages"}),e.jsx("p",{className:"text-sm text-slate-400 max-w-xl leading-relaxed",children:"Pre-packaged standalone ZIP archives formatted specifically for the Claude.ai custom-skill uploader (forward-slash path normalized) and Claude Code multi-skill plugin distributions."})]}),e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin/releases/tag/v1.0.6",target:"_blank",rel:"noopener noreferrer",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2 shadow-lg shadow-cyan-400/20",children:[e.jsx(L,{className:"w-4 h-4"}),e.jsx("span",{children:"v1.0.6 Release & Checksums"})]}),e.jsxs(c,{to:"/docs",className:"px-5 py-2.5 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2",children:[e.jsx(P,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{children:"Docs Hub"})]})]})]})})})]})}export{B as default}; diff --git a/assets/ClaudePlugin-BiXDoOQI.js b/assets/ClaudePlugin-BiXDoOQI.js deleted file mode 100644 index 6ac11f5f..00000000 --- a/assets/ClaudePlugin-BiXDoOQI.js +++ /dev/null @@ -1,13 +0,0 @@ -import{r as h,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,J as f,C as t}from"./index-WV1aysjN.js";import{N as g}from"./NeuralReveal-BflyZYSb.js";import{C as n}from"./releases-DiQz_IDu.js";import{S as b,T as o,c as y,d as j,E as v,f as N,L as w,a as i,g as k,W as C,h as _,i as q,A as S,j as E,D as L,B as P}from"./vendor-ui-B0ssGG4c.js";import{L as c}from"./vendor-PiU4YGcH.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const O=[{name:"qector-core",role:"Core Ground Truth",desc:"Verified platform facts, 8 library MCP tools, 5 stable decoders, and strict API grounding to prevent hallucination.",keyFeatures:["Grounds tool names & signatures","Enforces strict math boundary","Local verification"]},{name:"qector-math-foundations",role:"Mathematical Axioms",desc:"Theorems 1-16 executable obligations over GF(2), syndrome equivalence H c = s (mod 2), Wilson 95% CIs, and coset scoring.",keyFeatures:["Theorem 1 fail-closed verification","Theorem 2 logical coset scoring","Wilson score intervals"]},{name:"qector-developer",role:"SDK & Engineering",desc:"Integration guidance for qector-decoder-v3 Python SDK, parity-check matrix generation, Sinter/Stim adapters, and CI/CD testing.",keyFeatures:["Python SDK best practices","Matrix construction helpers","Local test automation"]},{name:"qector-researcher",role:"Quantum Information Science",desc:"Threshold discovery workflows, noise modeling, Monte Carlo error simulations, and academic paper reproduction.",keyFeatures:["Code-capacity sweeps","Noise model parameterization","Reproducible artifact export"]},{name:"qector-hardware-engineer",role:"Experimental & Cryogenic",desc:"Hardware constraint modeling, heavy-hex/surface graph mapping, physical error rate profiling, and latency budgets.",keyFeatures:["Physical qubit layout mapping","Hardware latency analysis","Cryogenic error budgets"]},{name:"qector-educator",role:"Pedagogy & Concepts",desc:"Interactive tutorial creation, mathematical explanations of syndrome decoding, MWPM matching, and BP-OSD.",keyFeatures:["Step-by-step decoding explanations","Interactive code walkthroughs","Visual homology concepts"]},{name:"qector-sysadmin",role:"Operations & Hygiene",desc:"Environment diagnostics, resource limits (MAX_CHECKS, MAX_QUBITS), safe file I/O, and deployment validation.",keyFeatures:["15-point runtime health check","DoS & memory limit guards","Platform compatibility audit"]}],T=["qector-architecture","qector-batch-decoding","qector-bp-osd","qector-codes-builder","qector-core","qector-decoders-deep-dive","qector-dem-pipeline","qector-deployment","qector-developer","qector-educator","qector-glossary","qector-hardware-engineer","qector-ler-methodology","qector-licensing","qector-math-foundations","qector-orchestration","qector-pymatching-compat","qector-release-engineering","qector-reproducibility","qector-researcher","qector-roadmap","qector-services","qector-sinter","qector-space-time","qector-sysadmin","qector-testing-strategy","qector-two-stage-css","qector-workbench"],R=[{file:"qec-developer.md",title:"QEC Software Engineer",desc:"Specialized in Python SDK integration, decoder benchmarking, matrix generation, and production deployment."},{file:"qec-researcher.md",title:"QEC Research Scientist",desc:"Specialized in academic literature review, threshold sweeps, Wilson confidence intervals, and Monte Carlo studies."},{file:"qec-validator.md",title:"Mathematical Proof Validator",desc:"Specialized in formal theorem checking, finite matrix verification, syndrome faithfulness, and local-only enforcement."},{file:"qec-sysadmin.md",title:"Systems & Runtime Engineer",desc:"Specialized in Python environment health, MCP server stdio management, resource bounds, and packaging."},{file:"qec-hardware-engineer.md",title:"Quantum Hardware Architect",desc:"Specialized in superconducting qubit topologies, heavy-hex grids, cryogenic latency constraints, and noise budgets."}],D=[{name:"list_code_families",desc:"Lists available code families (Rotated Surface, Toric, Ring, Repetition, Color, Heavy-Hex, Hypergraph Product)."},{name:"list_decoders",desc:"Lists the five stable decoder classes: UnionFind, FastUnionFind, Blossom (MWPM), SparseBlossom, NativeAuto."},{name:"get_license_info",desc:"Reads live offline licensing tier and feature flags from the installed qector-decoder-v3 package."},{name:"decode_syndrome",desc:"Decodes a binary syndrome with mandatory Theorem 1 fail-closed verification: H c = s (mod 2)."},{name:"decode_single",desc:"Executes a single-shot decode with logical-coset scoring (Theorem 2) against logical observables."},{name:"threshold_sweep",desc:"Runs device-local code-capacity sweeps with Wilson 95% confidence intervals and SHA-256 sealed artifacts."},{name:"build_code_from_matrix",desc:"Validates and compiles an arbitrary binary parity-check matrix with rank and observable analysis."},{name:"compat_report",desc:"Audits runtime health, wheel version, NumPy compatibility, and provisional feature boundaries."}],d=["artifacts_sha256","artifact_metadata_check","code_distance_check","code_export_matrices","code_family_info","code_logicals_inspect","compat_report","decode_faithfulness_check","dem_collapse_parallel","dem_inspect","env_block","glossary_lookup","hardware_probe","hot_path_microbench","license_active_check","logical_coset_score","pymatching_compat_check","qiskit_plugin_check","reproduction_command_lookup","sinter_decoder_list","sinter_task_template","stim_circuit_probe","theorem_lookup","wilson_ci","wilson_table","workload_hash","get_capability_matrix","get_evidence_policy","get_runtime_provenance"],m=["system_setup","configure_claude_desktop","workbench_probe"];function B(){const[r,x]=h.useState(!1),p=(s,a)=>{navigator.clipboard.writeText(s),a(!0),setTimeout(()=>a(!1),2e3)},l=`claude plugin marketplace add GuillaumeLessard/qector-claude-plugin -claude plugin install qector@qector-tools`;return e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"QECTOR Claude Plugin · Quantum Error Correction for Claude Code",description:"Official QECTOR Claude Code and Claude Desktop plugin v1.0.6. 28 skills, 5 agents, four MCP servers, and qector-decoder-v3 1.0.0 with local stdio-based decoding."}),e.jsx(f,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Claude Plugin",description:"Official QECTOR plugin v1.0.6 for Claude Code and Claude Desktop. 28 skills, 5 agents, four MCP servers, 8 stable library tools, 29 opt-in research tools, and 3 opt-in admin tools.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",softwareVersion:"1.0.6",author:{"@type":"Person",name:"Guillaume Lessard",url:"https://orcid.org/0009-0000-3465-3753"},offers:{"@type":"Offer",price:"0",priceCurrency:"USD"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-400/5 via-surface/40 to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/4 left-1/2 -translate-x-1/2 -translate-y-1/2 w-96 h-96 bg-cyan-400/10 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-4 sm:px-6 relative z-10 text-center",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3.5 py-1.5 rounded-full bg-cyan-950/60 border border-cyan-800/60 text-cyan-300 text-xs font-mono font-medium mb-6 backdrop-blur-sm",children:[e.jsx(b,{className:"w-3.5 h-3.5 text-cyan-400"}),e.jsxs("span",{children:["ANTHROPIC CLAUDE CODE & DESKTOP PLUGIN · v",n.version," · published ",n.releaseDate]})]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-extrabold tracking-tight text-slate-100 mb-6 max-w-4xl mx-auto leading-[1.1]",children:e.jsx(g,{text:"QECTOR Claude Plugin"})}),e.jsxs("p",{className:"text-lg md:text-xl text-slate-300 max-w-3xl mx-auto leading-relaxed mb-8",children:["Empower Claude with local Quantum Error Correction engineering. Release v1.0.6 adds marketplace compliance hardening and environment-agnostic setup. It includes"," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"28 domain skills"}),","," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"5 specialized agents"}),","," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"8 stable library tools"}),", 29 opt-in research tools, and 3 opt-in admin tools across four MCP servers. The default configuration uses local stdio transport."]}),e.jsxs("div",{className:"max-w-2xl mx-auto bg-slate-950/90 border border-cyan-900/60 rounded-2xl p-5 mb-10 shadow-2xl backdrop-blur-md text-left",children:[e.jsxs("div",{className:"flex items-center justify-between pb-3 mb-3 border-b border-slate-800/80",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(o,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{className:"text-xs font-mono font-semibold uppercase tracking-wider text-slate-400",children:"Instant Marketplace Install"})]}),e.jsxs("button",{onClick:()=>p(l,x),className:"flex items-center gap-1.5 text-xs font-mono text-cyan-400 hover:text-cyan-300 transition-colors px-2.5 py-1 rounded bg-cyan-950/50 border border-cyan-800/40",children:[r?e.jsx(y,{className:"w-3.5 h-3.5 text-green-400"}):e.jsx(j,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:r?"Copied":"Copy"})]})]}),e.jsx("pre",{className:"font-mono text-sm text-cyan-300 overflow-x-auto whitespace-pre leading-relaxed",children:l})]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin",target:"_blank",rel:"noopener noreferrer",className:"px-6 py-3 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-sm transition-all shadow-lg shadow-cyan-400/20 inline-flex items-center gap-2",children:[e.jsx("span",{children:"GitHub Repository"}),e.jsx(v,{className:"w-4 h-4"})]}),e.jsxs(c,{to:"/mcp-server",className:"px-6 py-3 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-sm transition-all inline-flex items-center gap-2",children:[e.jsx("span",{children:"MCP Server Reference"}),e.jsx(N,{className:"w-4 h-4 text-cyan-400"})]})]}),e.jsx("p",{className:"text-xs text-slate-400 mt-6",children:"Independent plugin by iD01t Productions. Not affiliated with or endorsed by Anthropic."})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(w,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Local-First Security"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"Local stdio transport by default. Parity matrices, syndromes, quantum circuits, and simulation artifacts are processed on the host machine; verify your host environment if confidentiality matters."})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(i,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Strict Mathematics"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Decodes are checked against ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"H c = s (mod 2)"}),". Scored with logical cosets and Wilson 95% CIs."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(k,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"App-Free Library"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Built on the official ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"qector-decoder-v3 1.0.x"})," Rust/PyO3 wheel. No desktop GUI required."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(C,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Multi-Agent System"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"28 domain skills and 5 tailored agent personas designed for research, hardware design, verification, and engineering."})]})]})}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"DOMAIN SKILLS ECOSYSTEM"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"28 Grounded QEC Skills"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Each skill encodes verified domain rules and strict-math obligations to reduce hallucination risk and ground interactions in reproducible physics. The seven flagship skills below are a subset of the 28 skills shipped in v1.0.6."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:O.map(s=>e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800/90 flex flex-col justify-between hover:border-cyan-500/30 transition-all",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsx("span",{className:"font-mono text-sm font-bold text-cyan-400",children:s.name}),e.jsx("span",{className:"text-[11px] font-mono px-2 py-0.5 rounded bg-slate-800 text-slate-300 border border-slate-700",children:s.role})]}),e.jsx("p",{className:"text-sm text-slate-300 leading-relaxed mb-4",children:s.desc})]}),e.jsx("div",{className:"pt-3 border-t border-slate-800/80 space-y-1.5",children:s.keyFeatures.map(a=>e.jsxs("div",{className:"flex items-center gap-2 text-xs text-slate-400",children:[e.jsx(q,{className:"w-3.5 h-3.5 text-cyan-400 shrink-0"}),e.jsx("span",{children:a})]},a))})]},s.name))}),e.jsxs("div",{className:"mt-10",children:[e.jsx("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:"All 28 skills shipped in the plugin"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:T.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-cyan-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(S,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"AGENT ROLES & PERSONAS"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"5 Specialized QEC Agents"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Custom agent definitions for Claude Code configured with tailored instructions, prompt templates, and tool access boundaries."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:R.map(s=>e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2 font-mono text-xs text-cyan-400",children:[e.jsx(o,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:s.file})]}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-2",children:s.title}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:s.desc})]})},s.file))})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(E,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"MCP SERVER TOOL SURFACE"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Four Local MCP Servers"}),e.jsxs("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:["The v1.0.6 release separates local JSON-RPC 2.0 stdio capabilities by risk and purpose:",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-library "})," (8 stable tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-research "})," (29 provisional tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-admin "})," (3 explicitly enabled tools), and",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-desktop-mcp "})," (the safe Desktop profile)."]})]}),e.jsx("div",{className:"card-surface rounded-2xl border border-slate-800 overflow-hidden shadow-xl",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm",children:[e.jsx("thead",{className:"bg-slate-900/90 text-xs font-mono text-cyan-400 uppercase tracking-wider border-b border-slate-800",children:e.jsxs("tr",{children:[e.jsx("th",{className:"px-6 py-4",children:"Tool Name"}),e.jsx("th",{className:"px-6 py-4",children:"Functionality & Mathematical Invariant"})]})}),e.jsx("tbody",{className:"divide-y divide-slate-800/60 font-mono text-xs text-slate-300",children:D.map(s=>e.jsxs("tr",{className:"hover:bg-slate-900/40 transition-colors",children:[e.jsx("td",{className:"px-6 py-4 font-semibold text-cyan-300 whitespace-nowrap",children:s.name}),e.jsx("td",{className:"px-6 py-4 font-sans text-sm text-slate-400",children:s.desc})]},s.name))})]})})}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-research server · ",d.length," provisional tools"]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:d.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-slate-300",children:s},s))})]}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-admin server · ",m.length," privileged tools"]}),e.jsxs("p",{className:"text-xs text-slate-400 mb-3",children:["Disabled by default. Requires ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"QECTOR_ADMIN_ENABLED=1"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"confirm=true"})," for every administrative call."]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:m.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-gold-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Installation & Setup"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2",children:"Configure QECTOR Claude Plugin v1.0.6 for Claude Code or Claude Desktop in seconds."})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"1"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Claude Code Marketplace"})]}),e.jsx("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:"Install directly via Claude Code marketplace registration:"}),e.jsx(t,{code:`# 1. Add marketplace repository -claude plugin marketplace add GuillaumeLessard/qector-claude-plugin - -# 2. Install plugin -claude plugin install qector@qector-tools`,language:"bash"})]})}),e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"2"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Local Plugin Directory"})]}),e.jsxs("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:["Clone the source repository and launch with the ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"--plugin-dir"})," flag:"]}),e.jsx(t,{code:`git clone https://github.com/GuillaumeLessard/qector-claude-plugin.git -cd qector-claude-plugin -pip install -r requirements.txt -claude --plugin-dir .`,language:"bash"})]})})]}),e.jsxs("div",{className:"mt-8 card-surface p-6 rounded-2xl border border-slate-800",children:[e.jsxs("h3",{className:"text-lg font-bold text-slate-100 mb-2 flex items-center gap-2",children:[e.jsx(i,{className:"w-5 h-5 text-cyan-400"}),e.jsx("span",{children:"Mathematical Validation Gate"})]}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed mb-4",children:"Verify all 16 Reference Manual theorems and 29 executable proof obligations locally on your machine:"}),e.jsx(t,{code:`# Run the complete public reference manual mathematical gate -python scripts/run_manual_math_validation.py - -# Or run full pytest integration suite -python -m pytest tests/test_reference_manual_math.py -v`,language:"bash"})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6 mb-12",children:e.jsx("div",{className:"card-surface p-8 border border-cyan-900/50 relative overflow-hidden bg-gradient-to-br from-slate-950 via-surface/60 to-slate-950",children:e.jsxs("div",{className:"relative z-10 flex flex-col md:flex-row items-center justify-between gap-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-2xl font-extrabold text-slate-100 mb-2",children:"Download Distribution Packages"}),e.jsx("p",{className:"text-sm text-slate-400 max-w-xl leading-relaxed",children:"Pre-packaged standalone ZIP archives formatted specifically for the Claude.ai custom-skill uploader (forward-slash path normalized) and Claude Code multi-skill plugin distributions."})]}),e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin/releases/tag/v1.0.6",target:"_blank",rel:"noopener noreferrer",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2 shadow-lg shadow-cyan-400/20",children:[e.jsx(L,{className:"w-4 h-4"}),e.jsx("span",{children:"v1.0.6 Release & Checksums"})]}),e.jsxs(c,{to:"/docs",className:"px-5 py-2.5 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2",children:[e.jsx(P,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{children:"Docs Hub"})]})]})]})})})]})}export{B as default}; diff --git a/assets/ClaudePlugin-C3NqTK6h.js b/assets/ClaudePlugin-C3NqTK6h.js deleted file mode 100644 index a27449a1..00000000 --- a/assets/ClaudePlugin-C3NqTK6h.js +++ /dev/null @@ -1,13 +0,0 @@ -import{r as h,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,J as g,L as i,C as r}from"./index-CcwlvHYJ.js";import{N as f}from"./NeuralReveal-Bsl9IGCr.js";import{C as t}from"./releases-1-HBloZv.js";import{S as b,T as o,c as y,d as j,E as v,f as N,L as w,a as c,g as k,W as C,h as _,i as q,A as S,j as E,D as L,B as P}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";const O=[{name:"qector-core",role:"Core Ground Truth",desc:"Verified platform facts, 8 library MCP tools, 5 stable decoders, and strict API grounding to prevent hallucination.",keyFeatures:["Grounds tool names & signatures","Enforces strict math boundary","Local verification"]},{name:"qector-math-foundations",role:"Mathematical Axioms",desc:"Theorems 1-16 executable obligations over GF(2), syndrome equivalence H c = s (mod 2), Wilson 95% CIs, and coset scoring.",keyFeatures:["Theorem 1 fail-closed verification","Theorem 2 logical coset scoring","Wilson score intervals"]},{name:"qector-developer",role:"SDK & Engineering",desc:"Integration guidance for qector-decoder-v3 Python SDK, parity-check matrix generation, Sinter/Stim adapters, and CI/CD testing.",keyFeatures:["Python SDK best practices","Matrix construction helpers","Local test automation"]},{name:"qector-researcher",role:"Quantum Information Science",desc:"Threshold discovery workflows, noise modeling, Monte Carlo error simulations, and academic paper reproduction.",keyFeatures:["Code-capacity sweeps","Noise model parameterization","Reproducible artifact export"]},{name:"qector-hardware-engineer",role:"Experimental & Cryogenic",desc:"Hardware constraint modeling, heavy-hex/surface graph mapping, physical error rate profiling, and latency budgets.",keyFeatures:["Physical qubit layout mapping","Hardware latency analysis","Cryogenic error budgets"]},{name:"qector-educator",role:"Pedagogy & Concepts",desc:"Interactive tutorial creation, mathematical explanations of syndrome decoding, MWPM matching, and BP-OSD.",keyFeatures:["Step-by-step decoding explanations","Interactive code walkthroughs","Visual homology concepts"]},{name:"qector-sysadmin",role:"Operations & Hygiene",desc:"Environment diagnostics, resource limits (MAX_CHECKS, MAX_QUBITS), safe file I/O, and deployment validation.",keyFeatures:["15-point runtime health check","DoS & memory limit guards","Platform compatibility audit"]}],T=["qector-architecture","qector-batch-decoding","qector-bp-osd","qector-codes-builder","qector-core","qector-decoders-deep-dive","qector-dem-pipeline","qector-deployment","qector-developer","qector-educator","qector-glossary","qector-hardware-engineer","qector-ler-methodology","qector-licensing","qector-math-foundations","qector-orchestration","qector-pymatching-compat","qector-release-engineering","qector-reproducibility","qector-researcher","qector-roadmap","qector-services","qector-sinter","qector-space-time","qector-sysadmin","qector-testing-strategy","qector-two-stage-css","qector-workbench"],A=[{file:"qec-developer.md",title:"QEC Software Engineer",desc:"Specialized in Python SDK integration, decoder benchmarking, matrix generation, and production deployment."},{file:"qec-researcher.md",title:"QEC Research Scientist",desc:"Specialized in academic literature review, threshold sweeps, Wilson confidence intervals, and Monte Carlo studies."},{file:"qec-validator.md",title:"Mathematical Proof Validator",desc:"Specialized in formal theorem checking, finite matrix verification, syndrome faithfulness, and local-only enforcement."},{file:"qec-sysadmin.md",title:"Systems & Runtime Engineer",desc:"Specialized in Python environment health, MCP server stdio management, resource bounds, and packaging."},{file:"qec-hardware-engineer.md",title:"Quantum Hardware Architect",desc:"Specialized in superconducting qubit topologies, heavy-hex grids, cryogenic latency constraints, and noise budgets."}],D=[{name:"list_code_families",desc:"Lists available code families (Rotated Surface, Toric, Ring, Repetition, Color, Heavy-Hex, Hypergraph Product)."},{name:"list_decoders",desc:"Lists the five stable decoder classes: UnionFind, FastUnionFind, Blossom (MWPM), SparseBlossom, NativeAuto."},{name:"get_license_info",desc:"Reads live offline licensing tier and feature flags from the installed qector-decoder-v3 package."},{name:"decode_syndrome",desc:"Decodes a binary syndrome with mandatory Theorem 1 fail-closed verification: H c = s (mod 2)."},{name:"decode_single",desc:"Executes a single-shot decode with logical-coset scoring (Theorem 2) against logical observables."},{name:"threshold_sweep",desc:"Runs device-local code-capacity sweeps with Wilson 95% confidence intervals and SHA-256 sealed artifacts."},{name:"build_code_from_matrix",desc:"Validates and compiles an arbitrary binary parity-check matrix with rank and observable analysis."},{name:"compat_report",desc:"Audits runtime health, wheel version, NumPy compatibility, and provisional feature boundaries."}],d=["artifacts_sha256","artifact_metadata_check","code_distance_check","code_export_matrices","code_family_info","code_logicals_inspect","compat_report","decode_faithfulness_check","dem_collapse_parallel","dem_inspect","env_block","glossary_lookup","hardware_probe","hot_path_microbench","license_active_check","logical_coset_score","pymatching_compat_check","qiskit_plugin_check","reproduction_command_lookup","sinter_decoder_list","sinter_task_template","stim_circuit_probe","theorem_lookup","wilson_ci","wilson_table","workload_hash","get_capability_matrix","get_evidence_policy","get_runtime_provenance"],m=["system_setup","configure_claude_desktop","workbench_probe"];function Q(){const[l,x]=h.useState(!1),p=(s,a)=>{navigator.clipboard.writeText(s),a(!0),setTimeout(()=>a(!1),2e3)},n=`claude plugin marketplace add GuillaumeLessard/qector-claude-plugin -claude plugin install qector@qector-tools`;return e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"QECTOR Claude Plugin · Quantum Error Correction for Claude Code",description:"Official QECTOR Claude Code and Claude Desktop plugin v2.0.1: air-gapped qector-secure MCP server (12 schema-validated tools), 28 skills and 5 agents on qector-decoder-v3 1.0.1."}),e.jsx(g,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Claude Plugin",description:"Official QECTOR plugin v2.0.1 for Claude Code and Claude Desktop: air-gapped qector-secure MCP server with 12 schema-validated tools, 28 skills, 5 agents, 11 commands; 29 research and 3 admin tools are opt-in.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",softwareVersion:t.version,author:{"@type":"Person",name:"Guillaume Lessard",url:"https://orcid.org/0009-0000-3465-3753"},offers:{"@type":"Offer",price:"0",priceCurrency:"USD"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-400/5 via-surface/40 to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/4 left-1/2 -translate-x-1/2 -translate-y-1/2 w-96 h-96 bg-cyan-400/10 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-4 sm:px-6 relative z-10 text-center",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3.5 py-1.5 rounded-full bg-cyan-950/60 border border-cyan-800/60 text-cyan-300 text-xs font-mono font-medium mb-6 backdrop-blur-sm",children:[e.jsx(b,{className:"w-3.5 h-3.5 text-cyan-400"}),e.jsxs("span",{children:["ANTHROPIC CLAUDE CODE & DESKTOP PLUGIN · v",t.version," · published ",t.releaseDate]})]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-extrabold tracking-tight text-slate-100 mb-6 max-w-4xl mx-auto leading-[1.1]",children:e.jsx(f,{text:"QECTOR Claude Plugin"})}),e.jsxs("p",{className:"text-lg md:text-xl text-slate-300 max-w-3xl mx-auto leading-relaxed mb-8",children:["Empower Claude with local Quantum Error Correction engineering. Release v2.0.1 runs on qector-decoder-v3 1.0.1. The default"," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"qector-secure"})," server is air-gapped, integrity-checked and validates every request and response against JSON Schema (12 tools). It ships with"," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"28 domain skills"}),","," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"5 specialized agents"})," and 11 slash commands; 29 research tools and 3 admin tools are opt-in. Every dependency is pinned by SHA-256, and releases are signed."]}),e.jsxs("div",{className:"max-w-2xl mx-auto bg-slate-950/90 border border-cyan-900/60 rounded-2xl p-5 mb-10 shadow-2xl backdrop-blur-md text-left",children:[e.jsxs("div",{className:"flex items-center justify-between pb-3 mb-3 border-b border-slate-800/80",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(o,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{className:"text-xs font-mono font-semibold uppercase tracking-wider text-slate-400",children:"Instant Marketplace Install"})]}),e.jsxs("button",{onClick:()=>p(n,x),className:"flex items-center gap-1.5 text-xs font-mono text-cyan-400 hover:text-cyan-300 transition-colors px-2.5 py-1 rounded bg-cyan-950/50 border border-cyan-800/40",children:[l?e.jsx(y,{className:"w-3.5 h-3.5 text-green-400"}):e.jsx(j,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:l?"Copied":"Copy"})]})]}),e.jsx("pre",{className:"font-mono text-sm text-cyan-300 overflow-x-auto whitespace-pre leading-relaxed",children:n})]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin",target:"_blank",rel:"noopener noreferrer",className:"px-6 py-3 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-sm transition-all shadow-lg shadow-cyan-400/20 inline-flex items-center gap-2",children:[e.jsx("span",{children:"GitHub Repository"}),e.jsx(v,{className:"w-4 h-4"})]}),e.jsxs(i,{to:"/mcp-server",className:"px-6 py-3 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-sm transition-all inline-flex items-center gap-2",children:[e.jsx("span",{children:"MCP Server Reference"}),e.jsx(N,{className:"w-4 h-4 text-cyan-400"})]})]}),e.jsx("p",{className:"text-xs text-slate-400 mt-6",children:"Independent plugin by iD01t Productions. Not affiliated with or endorsed by Anthropic."})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(w,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Local-First Security"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"Local stdio transport by default. Parity matrices, syndromes, quantum circuits, and simulation artifacts are processed on the host machine; verify your host environment if confidentiality matters."})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(c,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Strict Mathematics"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Decodes are checked against ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"H c = s (mod 2)"}),". Scored with logical cosets and Wilson 95% CIs."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(k,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"App-Free Library"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Built on the official ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"qector-decoder-v3 1.0.x"})," Rust/PyO3 wheel. No desktop GUI required."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(C,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Multi-Agent System"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"28 domain skills and 5 tailored agent personas designed for research, hardware design, verification, and engineering."})]})]})}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"DOMAIN SKILLS ECOSYSTEM"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"28 Grounded QEC Skills"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Each skill encodes verified domain rules and strict-math obligations to reduce hallucination risk and ground interactions in reproducible physics. The seven flagship skills below are a subset of the 28 skills shipped in the plugin."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:O.map(s=>e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800/90 flex flex-col justify-between hover:border-cyan-500/30 transition-all",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsx("span",{className:"font-mono text-sm font-bold text-cyan-400",children:s.name}),e.jsx("span",{className:"text-[11px] font-mono px-2 py-0.5 rounded bg-slate-800 text-slate-300 border border-slate-700",children:s.role})]}),e.jsx("p",{className:"text-sm text-slate-300 leading-relaxed mb-4",children:s.desc})]}),e.jsx("div",{className:"pt-3 border-t border-slate-800/80 space-y-1.5",children:s.keyFeatures.map(a=>e.jsxs("div",{className:"flex items-center gap-2 text-xs text-slate-400",children:[e.jsx(q,{className:"w-3.5 h-3.5 text-cyan-400 shrink-0"}),e.jsx("span",{children:a})]},a))})]},s.name))}),e.jsxs("div",{className:"mt-10",children:[e.jsx("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:"All 28 skills shipped in the plugin"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:T.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-cyan-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(S,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"AGENT ROLES & PERSONAS"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"5 Specialized QEC Agents"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Custom agent definitions for Claude Code configured with tailored instructions, prompt templates, and tool access boundaries."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:A.map(s=>e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2 font-mono text-xs text-cyan-400",children:[e.jsx(o,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:s.file})]}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-2",children:s.title}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:s.desc})]})},s.file))})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(E,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"MCP SERVER TOOL SURFACE"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Local MCP Servers, Air-Gapped by Default"}),e.jsxs("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:["The v2.0.1 release separates local JSON-RPC 2.0 stdio capabilities by risk and purpose. The default",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-secure "})," server (12 tools: the 8 stable tools below plus airgap_status, integrity_check, schema_catalog and audit_log_status) refuses network access and verifies its own files;",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-library "})," (8 stable tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-research "})," (29 provisional tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-admin "})," (3 explicitly enabled tools), and",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-desktop-mcp "})," (the safe Desktop profile)."]})]}),e.jsx("div",{className:"card-surface rounded-2xl border border-slate-800 overflow-hidden shadow-xl",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm",children:[e.jsx("thead",{className:"bg-slate-900/90 text-xs font-mono text-cyan-400 uppercase tracking-wider border-b border-slate-800",children:e.jsxs("tr",{children:[e.jsx("th",{className:"px-6 py-4",children:"Tool Name"}),e.jsx("th",{className:"px-6 py-4",children:"Functionality & Mathematical Invariant"})]})}),e.jsx("tbody",{className:"divide-y divide-slate-800/60 font-mono text-xs text-slate-300",children:D.map(s=>e.jsxs("tr",{className:"hover:bg-slate-900/40 transition-colors",children:[e.jsx("td",{className:"px-6 py-4 font-semibold text-cyan-300 whitespace-nowrap",children:s.name}),e.jsx("td",{className:"px-6 py-4 font-sans text-sm text-slate-400",children:s.desc})]},s.name))})]})})}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-research server · ",d.length," provisional tools"]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:d.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-slate-300",children:s},s))})]}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-admin server · ",m.length," privileged tools"]}),e.jsxs("p",{className:"text-xs text-slate-400 mb-3",children:["Disabled by default. Requires ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"QECTOR_ADMIN_ENABLED=1"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"confirm=true"})," for every administrative call."]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:m.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-gold-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Installation & Setup"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2",children:"Configure QECTOR Claude Plugin v2.0.1 for Claude Code or Claude Desktop in seconds."})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"1"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Claude Code Marketplace"})]}),e.jsx("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:"Install directly via Claude Code marketplace registration:"}),e.jsx(r,{code:`# 1. Add marketplace repository -claude plugin marketplace add GuillaumeLessard/qector-claude-plugin - -# 2. Install plugin -claude plugin install qector@qector-tools`,language:"bash"})]})}),e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"2"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Local Plugin Directory"})]}),e.jsxs("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:["Clone the source repository and launch with the ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"--plugin-dir"})," flag:"]}),e.jsx(r,{code:`git clone https://github.com/GuillaumeLessard/qector-claude-plugin.git -cd qector-claude-plugin -pip install --require-hashes -r requirements.lock -claude --plugin-dir .`,language:"bash"})]})})]}),e.jsxs("div",{className:"mt-8 card-surface p-6 rounded-2xl border border-slate-800",children:[e.jsxs("h3",{className:"text-lg font-bold text-slate-100 mb-2 flex items-center gap-2",children:[e.jsx(c,{className:"w-5 h-5 text-cyan-400"}),e.jsx("span",{children:"Mathematical Validation Gate"})]}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed mb-4",children:"Verify all 16 Reference Manual theorems and 29 executable proof obligations locally on your machine:"}),e.jsx(r,{code:`# Run the complete public reference manual mathematical gate -python scripts/run_manual_math_validation.py - -# Or run full pytest integration suite -python -m pytest tests/test_reference_manual_math.py -v`,language:"bash"})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6 mb-12",children:e.jsx("div",{className:"card-surface p-8 border border-cyan-900/50 relative overflow-hidden bg-gradient-to-br from-slate-950 via-surface/60 to-slate-950",children:e.jsxs("div",{className:"relative z-10 flex flex-col md:flex-row items-center justify-between gap-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-2xl font-extrabold text-slate-100 mb-2",children:"Download Distribution Packages"}),e.jsx("p",{className:"text-sm text-slate-400 max-w-xl leading-relaxed",children:"Signed release archives: the Claude Code plugin, Claude Desktop extensions (.mcpb, including an offline bundle with a pinned wheelhouse), SHA256SUMS with its signature, an SBOM and provenance."})]}),e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsxs("a",{href:t.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2 shadow-lg shadow-cyan-400/20",children:[e.jsx(L,{className:"w-4 h-4"}),e.jsxs("span",{children:["v",t.version," Release, Checksums & Signatures"]})]}),e.jsxs(i,{to:"/docs",className:"px-5 py-2.5 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2",children:[e.jsx(P,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{children:"Docs Hub"})]})]})]})})})]})}export{Q as default}; diff --git a/assets/ClaudePlugin-C5p2CNaj.js b/assets/ClaudePlugin-C5p2CNaj.js deleted file mode 100644 index 3ab42dc4..00000000 --- a/assets/ClaudePlugin-C5p2CNaj.js +++ /dev/null @@ -1,13 +0,0 @@ -import{r as h,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,J as f,C as t}from"./index-DlmjLVYe.js";import{N as g}from"./NeuralReveal-BflyZYSb.js";import{C as n}from"./releases-DiQz_IDu.js";import{S as b,T as o,c as y,d as j,E as v,f as N,L as w,a as i,g as k,W as C,h as _,i as q,A as S,j as E,D as L,B as P}from"./vendor-ui-B0ssGG4c.js";import{L as c}from"./vendor-PiU4YGcH.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const O=[{name:"qector-core",role:"Core Ground Truth",desc:"Verified platform facts, 8 library MCP tools, 5 stable decoders, and strict API grounding to prevent hallucination.",keyFeatures:["Grounds tool names & signatures","Enforces strict math boundary","Local verification"]},{name:"qector-math-foundations",role:"Mathematical Axioms",desc:"Theorems 1-16 executable obligations over GF(2), syndrome equivalence H c = s (mod 2), Wilson 95% CIs, and coset scoring.",keyFeatures:["Theorem 1 fail-closed verification","Theorem 2 logical coset scoring","Wilson score intervals"]},{name:"qector-developer",role:"SDK & Engineering",desc:"Integration guidance for qector-decoder-v3 Python SDK, parity-check matrix generation, Sinter/Stim adapters, and CI/CD testing.",keyFeatures:["Python SDK best practices","Matrix construction helpers","Local test automation"]},{name:"qector-researcher",role:"Quantum Information Science",desc:"Threshold discovery workflows, noise modeling, Monte Carlo error simulations, and academic paper reproduction.",keyFeatures:["Code-capacity sweeps","Noise model parameterization","Reproducible artifact export"]},{name:"qector-hardware-engineer",role:"Experimental & Cryogenic",desc:"Hardware constraint modeling, heavy-hex/surface graph mapping, physical error rate profiling, and latency budgets.",keyFeatures:["Physical qubit layout mapping","Hardware latency analysis","Cryogenic error budgets"]},{name:"qector-educator",role:"Pedagogy & Concepts",desc:"Interactive tutorial creation, mathematical explanations of syndrome decoding, MWPM matching, and BP-OSD.",keyFeatures:["Step-by-step decoding explanations","Interactive code walkthroughs","Visual homology concepts"]},{name:"qector-sysadmin",role:"Operations & Hygiene",desc:"Environment diagnostics, resource limits (MAX_CHECKS, MAX_QUBITS), safe file I/O, and deployment validation.",keyFeatures:["15-point runtime health check","DoS & memory limit guards","Platform compatibility audit"]}],T=["qector-architecture","qector-batch-decoding","qector-bp-osd","qector-codes-builder","qector-core","qector-decoders-deep-dive","qector-dem-pipeline","qector-deployment","qector-developer","qector-educator","qector-glossary","qector-hardware-engineer","qector-ler-methodology","qector-licensing","qector-math-foundations","qector-orchestration","qector-pymatching-compat","qector-release-engineering","qector-reproducibility","qector-researcher","qector-roadmap","qector-services","qector-sinter","qector-space-time","qector-sysadmin","qector-testing-strategy","qector-two-stage-css","qector-workbench"],R=[{file:"qec-developer.md",title:"QEC Software Engineer",desc:"Specialized in Python SDK integration, decoder benchmarking, matrix generation, and production deployment."},{file:"qec-researcher.md",title:"QEC Research Scientist",desc:"Specialized in academic literature review, threshold sweeps, Wilson confidence intervals, and Monte Carlo studies."},{file:"qec-validator.md",title:"Mathematical Proof Validator",desc:"Specialized in formal theorem checking, finite matrix verification, syndrome faithfulness, and local-only enforcement."},{file:"qec-sysadmin.md",title:"Systems & Runtime Engineer",desc:"Specialized in Python environment health, MCP server stdio management, resource bounds, and packaging."},{file:"qec-hardware-engineer.md",title:"Quantum Hardware Architect",desc:"Specialized in superconducting qubit topologies, heavy-hex grids, cryogenic latency constraints, and noise budgets."}],D=[{name:"list_code_families",desc:"Lists available code families (Rotated Surface, Toric, Ring, Repetition, Color, Heavy-Hex, Hypergraph Product)."},{name:"list_decoders",desc:"Lists the five stable decoder classes: UnionFind, FastUnionFind, Blossom (MWPM), SparseBlossom, NativeAuto."},{name:"get_license_info",desc:"Reads live offline licensing tier and feature flags from the installed qector-decoder-v3 package."},{name:"decode_syndrome",desc:"Decodes a binary syndrome with mandatory Theorem 1 fail-closed verification: H c = s (mod 2)."},{name:"decode_single",desc:"Executes a single-shot decode with logical-coset scoring (Theorem 2) against logical observables."},{name:"threshold_sweep",desc:"Runs device-local code-capacity sweeps with Wilson 95% confidence intervals and SHA-256 sealed artifacts."},{name:"build_code_from_matrix",desc:"Validates and compiles an arbitrary binary parity-check matrix with rank and observable analysis."},{name:"compat_report",desc:"Audits runtime health, wheel version, NumPy compatibility, and provisional feature boundaries."}],d=["artifacts_sha256","artifact_metadata_check","code_distance_check","code_export_matrices","code_family_info","code_logicals_inspect","compat_report","decode_faithfulness_check","dem_collapse_parallel","dem_inspect","env_block","glossary_lookup","hardware_probe","hot_path_microbench","license_active_check","logical_coset_score","pymatching_compat_check","qiskit_plugin_check","reproduction_command_lookup","sinter_decoder_list","sinter_task_template","stim_circuit_probe","theorem_lookup","wilson_ci","wilson_table","workload_hash","get_capability_matrix","get_evidence_policy","get_runtime_provenance"],m=["system_setup","configure_claude_desktop","workbench_probe"];function B(){const[r,x]=h.useState(!1),p=(s,a)=>{navigator.clipboard.writeText(s),a(!0),setTimeout(()=>a(!1),2e3)},l=`claude plugin marketplace add GuillaumeLessard/qector-claude-plugin -claude plugin install qector@qector-tools`;return e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"QECTOR Claude Plugin · Quantum Error Correction for Claude Code",description:"Official QECTOR Claude Code and Claude Desktop plugin v1.0.6. 28 skills, 5 agents, four MCP servers, and qector-decoder-v3 1.0.0 with local stdio-based decoding."}),e.jsx(f,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Claude Plugin",description:"Official QECTOR plugin v1.0.6 for Claude Code and Claude Desktop. 28 skills, 5 agents, four MCP servers, 8 stable library tools, 29 opt-in research tools, and 3 opt-in admin tools.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",softwareVersion:"1.0.6",author:{"@type":"Person",name:"Guillaume Lessard",url:"https://orcid.org/0009-0000-3465-3753"},offers:{"@type":"Offer",price:"0",priceCurrency:"USD"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-400/5 via-surface/40 to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/4 left-1/2 -translate-x-1/2 -translate-y-1/2 w-96 h-96 bg-cyan-400/10 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-4 sm:px-6 relative z-10 text-center",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3.5 py-1.5 rounded-full bg-cyan-950/60 border border-cyan-800/60 text-cyan-300 text-xs font-mono font-medium mb-6 backdrop-blur-sm",children:[e.jsx(b,{className:"w-3.5 h-3.5 text-cyan-400"}),e.jsxs("span",{children:["ANTHROPIC CLAUDE CODE & DESKTOP PLUGIN · v",n.version," · published ",n.releaseDate]})]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-extrabold tracking-tight text-slate-100 mb-6 max-w-4xl mx-auto leading-[1.1]",children:e.jsx(g,{text:"QECTOR Claude Plugin"})}),e.jsxs("p",{className:"text-lg md:text-xl text-slate-300 max-w-3xl mx-auto leading-relaxed mb-8",children:["Empower Claude with local Quantum Error Correction engineering. Release v1.0.6 adds marketplace compliance hardening and environment-agnostic setup. It includes"," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"28 domain skills"}),","," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"5 specialized agents"}),","," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"8 stable library tools"}),", 29 opt-in research tools, and 3 opt-in admin tools across four MCP servers. The default configuration uses local stdio transport."]}),e.jsxs("div",{className:"max-w-2xl mx-auto bg-slate-950/90 border border-cyan-900/60 rounded-2xl p-5 mb-10 shadow-2xl backdrop-blur-md text-left",children:[e.jsxs("div",{className:"flex items-center justify-between pb-3 mb-3 border-b border-slate-800/80",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(o,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{className:"text-xs font-mono font-semibold uppercase tracking-wider text-slate-400",children:"Instant Marketplace Install"})]}),e.jsxs("button",{onClick:()=>p(l,x),className:"flex items-center gap-1.5 text-xs font-mono text-cyan-400 hover:text-cyan-300 transition-colors px-2.5 py-1 rounded bg-cyan-950/50 border border-cyan-800/40",children:[r?e.jsx(y,{className:"w-3.5 h-3.5 text-green-400"}):e.jsx(j,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:r?"Copied":"Copy"})]})]}),e.jsx("pre",{className:"font-mono text-sm text-cyan-300 overflow-x-auto whitespace-pre leading-relaxed",children:l})]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin",target:"_blank",rel:"noopener noreferrer",className:"px-6 py-3 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-sm transition-all shadow-lg shadow-cyan-400/20 inline-flex items-center gap-2",children:[e.jsx("span",{children:"GitHub Repository"}),e.jsx(v,{className:"w-4 h-4"})]}),e.jsxs(c,{to:"/mcp-server",className:"px-6 py-3 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-sm transition-all inline-flex items-center gap-2",children:[e.jsx("span",{children:"MCP Server Reference"}),e.jsx(N,{className:"w-4 h-4 text-cyan-400"})]})]}),e.jsx("p",{className:"text-xs text-slate-400 mt-6",children:"Independent plugin by iD01t Productions. Not affiliated with or endorsed by Anthropic."})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(w,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Local-First Security"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"Local stdio transport by default. Parity matrices, syndromes, quantum circuits, and simulation artifacts are processed on the host machine; verify your host environment if confidentiality matters."})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(i,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Strict Mathematics"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Decodes are checked against ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"H c = s (mod 2)"}),". Scored with logical cosets and Wilson 95% CIs."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(k,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"App-Free Library"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Built on the official ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"qector-decoder-v3 1.0.x"})," Rust/PyO3 wheel. No desktop GUI required."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(C,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Multi-Agent System"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"28 domain skills and 5 tailored agent personas designed for research, hardware design, verification, and engineering."})]})]})}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"DOMAIN SKILLS ECOSYSTEM"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"28 Grounded QEC Skills"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Each skill encodes verified domain rules and strict-math obligations to reduce hallucination risk and ground interactions in reproducible physics. The seven flagship skills below are a subset of the 28 skills shipped in v1.0.6."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:O.map(s=>e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800/90 flex flex-col justify-between hover:border-cyan-500/30 transition-all",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsx("span",{className:"font-mono text-sm font-bold text-cyan-400",children:s.name}),e.jsx("span",{className:"text-[11px] font-mono px-2 py-0.5 rounded bg-slate-800 text-slate-300 border border-slate-700",children:s.role})]}),e.jsx("p",{className:"text-sm text-slate-300 leading-relaxed mb-4",children:s.desc})]}),e.jsx("div",{className:"pt-3 border-t border-slate-800/80 space-y-1.5",children:s.keyFeatures.map(a=>e.jsxs("div",{className:"flex items-center gap-2 text-xs text-slate-400",children:[e.jsx(q,{className:"w-3.5 h-3.5 text-cyan-400 shrink-0"}),e.jsx("span",{children:a})]},a))})]},s.name))}),e.jsxs("div",{className:"mt-10",children:[e.jsx("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:"All 28 skills shipped in the plugin"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:T.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-cyan-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(S,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"AGENT ROLES & PERSONAS"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"5 Specialized QEC Agents"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Custom agent definitions for Claude Code configured with tailored instructions, prompt templates, and tool access boundaries."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:R.map(s=>e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2 font-mono text-xs text-cyan-400",children:[e.jsx(o,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:s.file})]}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-2",children:s.title}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:s.desc})]})},s.file))})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(E,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"MCP SERVER TOOL SURFACE"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Four Local MCP Servers"}),e.jsxs("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:["The v1.0.6 release separates local JSON-RPC 2.0 stdio capabilities by risk and purpose:",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-library "})," (8 stable tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-research "})," (29 provisional tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-admin "})," (3 explicitly enabled tools), and",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-desktop-mcp "})," (the safe Desktop profile)."]})]}),e.jsx("div",{className:"card-surface rounded-2xl border border-slate-800 overflow-hidden shadow-xl",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm",children:[e.jsx("thead",{className:"bg-slate-900/90 text-xs font-mono text-cyan-400 uppercase tracking-wider border-b border-slate-800",children:e.jsxs("tr",{children:[e.jsx("th",{className:"px-6 py-4",children:"Tool Name"}),e.jsx("th",{className:"px-6 py-4",children:"Functionality & Mathematical Invariant"})]})}),e.jsx("tbody",{className:"divide-y divide-slate-800/60 font-mono text-xs text-slate-300",children:D.map(s=>e.jsxs("tr",{className:"hover:bg-slate-900/40 transition-colors",children:[e.jsx("td",{className:"px-6 py-4 font-semibold text-cyan-300 whitespace-nowrap",children:s.name}),e.jsx("td",{className:"px-6 py-4 font-sans text-sm text-slate-400",children:s.desc})]},s.name))})]})})}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-research server · ",d.length," provisional tools"]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:d.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-slate-300",children:s},s))})]}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-admin server · ",m.length," privileged tools"]}),e.jsxs("p",{className:"text-xs text-slate-400 mb-3",children:["Disabled by default. Requires ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"QECTOR_ADMIN_ENABLED=1"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"confirm=true"})," for every administrative call."]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:m.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-gold-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Installation & Setup"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2",children:"Configure QECTOR Claude Plugin v1.0.6 for Claude Code or Claude Desktop in seconds."})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"1"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Claude Code Marketplace"})]}),e.jsx("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:"Install directly via Claude Code marketplace registration:"}),e.jsx(t,{code:`# 1. Add marketplace repository -claude plugin marketplace add GuillaumeLessard/qector-claude-plugin - -# 2. Install plugin -claude plugin install qector@qector-tools`,language:"bash"})]})}),e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"2"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Local Plugin Directory"})]}),e.jsxs("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:["Clone the source repository and launch with the ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"--plugin-dir"})," flag:"]}),e.jsx(t,{code:`git clone https://github.com/GuillaumeLessard/qector-claude-plugin.git -cd qector-claude-plugin -pip install -r requirements.txt -claude --plugin-dir .`,language:"bash"})]})})]}),e.jsxs("div",{className:"mt-8 card-surface p-6 rounded-2xl border border-slate-800",children:[e.jsxs("h3",{className:"text-lg font-bold text-slate-100 mb-2 flex items-center gap-2",children:[e.jsx(i,{className:"w-5 h-5 text-cyan-400"}),e.jsx("span",{children:"Mathematical Validation Gate"})]}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed mb-4",children:"Verify all 16 Reference Manual theorems and 29 executable proof obligations locally on your machine:"}),e.jsx(t,{code:`# Run the complete public reference manual mathematical gate -python scripts/run_manual_math_validation.py - -# Or run full pytest integration suite -python -m pytest tests/test_reference_manual_math.py -v`,language:"bash"})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6 mb-12",children:e.jsx("div",{className:"card-surface p-8 border border-cyan-900/50 relative overflow-hidden bg-gradient-to-br from-slate-950 via-surface/60 to-slate-950",children:e.jsxs("div",{className:"relative z-10 flex flex-col md:flex-row items-center justify-between gap-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-2xl font-extrabold text-slate-100 mb-2",children:"Download Distribution Packages"}),e.jsx("p",{className:"text-sm text-slate-400 max-w-xl leading-relaxed",children:"Pre-packaged standalone ZIP archives formatted specifically for the Claude.ai custom-skill uploader (forward-slash path normalized) and Claude Code multi-skill plugin distributions."})]}),e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin/releases/tag/v1.0.6",target:"_blank",rel:"noopener noreferrer",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2 shadow-lg shadow-cyan-400/20",children:[e.jsx(L,{className:"w-4 h-4"}),e.jsx("span",{children:"v1.0.6 Release & Checksums"})]}),e.jsxs(c,{to:"/docs",className:"px-5 py-2.5 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2",children:[e.jsx(P,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{children:"Docs Hub"})]})]})]})})})]})}export{B as default}; diff --git a/assets/ClaudePlugin-C8eza7n_.js b/assets/ClaudePlugin-C8eza7n_.js deleted file mode 100644 index 59b9181b..00000000 --- a/assets/ClaudePlugin-C8eza7n_.js +++ /dev/null @@ -1,13 +0,0 @@ -import{r as h,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,J as f,C as r}from"./index-BUYYSLdX.js";import{N as g}from"./NeuralReveal-BflyZYSb.js";import{C as t}from"./releases-1-HBloZv.js";import{S as b,T as i,c as y,d as j,E as v,f as N,L as w,a as o,g as k,W as C,h as _,i as q,A as S,j as E,D as L,B as P}from"./vendor-ui-B0ssGG4c.js";import{L as c}from"./vendor-PiU4YGcH.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const O=[{name:"qector-core",role:"Core Ground Truth",desc:"Verified platform facts, 8 library MCP tools, 5 stable decoders, and strict API grounding to prevent hallucination.",keyFeatures:["Grounds tool names & signatures","Enforces strict math boundary","Local verification"]},{name:"qector-math-foundations",role:"Mathematical Axioms",desc:"Theorems 1-16 executable obligations over GF(2), syndrome equivalence H c = s (mod 2), Wilson 95% CIs, and coset scoring.",keyFeatures:["Theorem 1 fail-closed verification","Theorem 2 logical coset scoring","Wilson score intervals"]},{name:"qector-developer",role:"SDK & Engineering",desc:"Integration guidance for qector-decoder-v3 Python SDK, parity-check matrix generation, Sinter/Stim adapters, and CI/CD testing.",keyFeatures:["Python SDK best practices","Matrix construction helpers","Local test automation"]},{name:"qector-researcher",role:"Quantum Information Science",desc:"Threshold discovery workflows, noise modeling, Monte Carlo error simulations, and academic paper reproduction.",keyFeatures:["Code-capacity sweeps","Noise model parameterization","Reproducible artifact export"]},{name:"qector-hardware-engineer",role:"Experimental & Cryogenic",desc:"Hardware constraint modeling, heavy-hex/surface graph mapping, physical error rate profiling, and latency budgets.",keyFeatures:["Physical qubit layout mapping","Hardware latency analysis","Cryogenic error budgets"]},{name:"qector-educator",role:"Pedagogy & Concepts",desc:"Interactive tutorial creation, mathematical explanations of syndrome decoding, MWPM matching, and BP-OSD.",keyFeatures:["Step-by-step decoding explanations","Interactive code walkthroughs","Visual homology concepts"]},{name:"qector-sysadmin",role:"Operations & Hygiene",desc:"Environment diagnostics, resource limits (MAX_CHECKS, MAX_QUBITS), safe file I/O, and deployment validation.",keyFeatures:["15-point runtime health check","DoS & memory limit guards","Platform compatibility audit"]}],T=["qector-architecture","qector-batch-decoding","qector-bp-osd","qector-codes-builder","qector-core","qector-decoders-deep-dive","qector-dem-pipeline","qector-deployment","qector-developer","qector-educator","qector-glossary","qector-hardware-engineer","qector-ler-methodology","qector-licensing","qector-math-foundations","qector-orchestration","qector-pymatching-compat","qector-release-engineering","qector-reproducibility","qector-researcher","qector-roadmap","qector-services","qector-sinter","qector-space-time","qector-sysadmin","qector-testing-strategy","qector-two-stage-css","qector-workbench"],A=[{file:"qec-developer.md",title:"QEC Software Engineer",desc:"Specialized in Python SDK integration, decoder benchmarking, matrix generation, and production deployment."},{file:"qec-researcher.md",title:"QEC Research Scientist",desc:"Specialized in academic literature review, threshold sweeps, Wilson confidence intervals, and Monte Carlo studies."},{file:"qec-validator.md",title:"Mathematical Proof Validator",desc:"Specialized in formal theorem checking, finite matrix verification, syndrome faithfulness, and local-only enforcement."},{file:"qec-sysadmin.md",title:"Systems & Runtime Engineer",desc:"Specialized in Python environment health, MCP server stdio management, resource bounds, and packaging."},{file:"qec-hardware-engineer.md",title:"Quantum Hardware Architect",desc:"Specialized in superconducting qubit topologies, heavy-hex grids, cryogenic latency constraints, and noise budgets."}],D=[{name:"list_code_families",desc:"Lists available code families (Rotated Surface, Toric, Ring, Repetition, Color, Heavy-Hex, Hypergraph Product)."},{name:"list_decoders",desc:"Lists the five stable decoder classes: UnionFind, FastUnionFind, Blossom (MWPM), SparseBlossom, NativeAuto."},{name:"get_license_info",desc:"Reads live offline licensing tier and feature flags from the installed qector-decoder-v3 package."},{name:"decode_syndrome",desc:"Decodes a binary syndrome with mandatory Theorem 1 fail-closed verification: H c = s (mod 2)."},{name:"decode_single",desc:"Executes a single-shot decode with logical-coset scoring (Theorem 2) against logical observables."},{name:"threshold_sweep",desc:"Runs device-local code-capacity sweeps with Wilson 95% confidence intervals and SHA-256 sealed artifacts."},{name:"build_code_from_matrix",desc:"Validates and compiles an arbitrary binary parity-check matrix with rank and observable analysis."},{name:"compat_report",desc:"Audits runtime health, wheel version, NumPy compatibility, and provisional feature boundaries."}],d=["artifacts_sha256","artifact_metadata_check","code_distance_check","code_export_matrices","code_family_info","code_logicals_inspect","compat_report","decode_faithfulness_check","dem_collapse_parallel","dem_inspect","env_block","glossary_lookup","hardware_probe","hot_path_microbench","license_active_check","logical_coset_score","pymatching_compat_check","qiskit_plugin_check","reproduction_command_lookup","sinter_decoder_list","sinter_task_template","stim_circuit_probe","theorem_lookup","wilson_ci","wilson_table","workload_hash","get_capability_matrix","get_evidence_policy","get_runtime_provenance"],m=["system_setup","configure_claude_desktop","workbench_probe"];function U(){const[l,x]=h.useState(!1),p=(s,a)=>{navigator.clipboard.writeText(s),a(!0),setTimeout(()=>a(!1),2e3)},n=`claude plugin marketplace add GuillaumeLessard/qector-claude-plugin -claude plugin install qector@qector-tools`;return e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"QECTOR Claude Plugin · Quantum Error Correction for Claude Code",description:"Official QECTOR Claude Code and Claude Desktop plugin v2.0.1: air-gapped qector-secure MCP server (12 schema-validated tools), 28 skills and 5 agents on qector-decoder-v3 1.0.1."}),e.jsx(f,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Claude Plugin",description:"Official QECTOR plugin v2.0.1 for Claude Code and Claude Desktop: air-gapped qector-secure MCP server with 12 schema-validated tools, 28 skills, 5 agents, 11 commands; 29 research and 3 admin tools are opt-in.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",softwareVersion:t.version,author:{"@type":"Person",name:"Guillaume Lessard",url:"https://orcid.org/0009-0000-3465-3753"},offers:{"@type":"Offer",price:"0",priceCurrency:"USD"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-400/5 via-surface/40 to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/4 left-1/2 -translate-x-1/2 -translate-y-1/2 w-96 h-96 bg-cyan-400/10 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-4 sm:px-6 relative z-10 text-center",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3.5 py-1.5 rounded-full bg-cyan-950/60 border border-cyan-800/60 text-cyan-300 text-xs font-mono font-medium mb-6 backdrop-blur-sm",children:[e.jsx(b,{className:"w-3.5 h-3.5 text-cyan-400"}),e.jsxs("span",{children:["ANTHROPIC CLAUDE CODE & DESKTOP PLUGIN · v",t.version," · published ",t.releaseDate]})]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-extrabold tracking-tight text-slate-100 mb-6 max-w-4xl mx-auto leading-[1.1]",children:e.jsx(g,{text:"QECTOR Claude Plugin"})}),e.jsxs("p",{className:"text-lg md:text-xl text-slate-300 max-w-3xl mx-auto leading-relaxed mb-8",children:["Empower Claude with local Quantum Error Correction engineering. Release v2.0.1 runs on qector-decoder-v3 1.0.1. The default"," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"qector-secure"})," server is air-gapped, integrity-checked and validates every request and response against JSON Schema (12 tools). It ships with"," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"28 domain skills"}),","," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"5 specialized agents"})," and 11 slash commands; 29 research tools and 3 admin tools are opt-in. Every dependency is pinned by SHA-256, and releases are signed."]}),e.jsxs("div",{className:"max-w-2xl mx-auto bg-slate-950/90 border border-cyan-900/60 rounded-2xl p-5 mb-10 shadow-2xl backdrop-blur-md text-left",children:[e.jsxs("div",{className:"flex items-center justify-between pb-3 mb-3 border-b border-slate-800/80",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(i,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{className:"text-xs font-mono font-semibold uppercase tracking-wider text-slate-400",children:"Instant Marketplace Install"})]}),e.jsxs("button",{onClick:()=>p(n,x),className:"flex items-center gap-1.5 text-xs font-mono text-cyan-400 hover:text-cyan-300 transition-colors px-2.5 py-1 rounded bg-cyan-950/50 border border-cyan-800/40",children:[l?e.jsx(y,{className:"w-3.5 h-3.5 text-green-400"}):e.jsx(j,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:l?"Copied":"Copy"})]})]}),e.jsx("pre",{className:"font-mono text-sm text-cyan-300 overflow-x-auto whitespace-pre leading-relaxed",children:n})]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin",target:"_blank",rel:"noopener noreferrer",className:"px-6 py-3 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-sm transition-all shadow-lg shadow-cyan-400/20 inline-flex items-center gap-2",children:[e.jsx("span",{children:"GitHub Repository"}),e.jsx(v,{className:"w-4 h-4"})]}),e.jsxs(c,{to:"/mcp-server",className:"px-6 py-3 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-sm transition-all inline-flex items-center gap-2",children:[e.jsx("span",{children:"MCP Server Reference"}),e.jsx(N,{className:"w-4 h-4 text-cyan-400"})]})]}),e.jsx("p",{className:"text-xs text-slate-400 mt-6",children:"Independent plugin by iD01t Productions. Not affiliated with or endorsed by Anthropic."})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(w,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Local-First Security"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"Local stdio transport by default. Parity matrices, syndromes, quantum circuits, and simulation artifacts are processed on the host machine; verify your host environment if confidentiality matters."})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(o,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Strict Mathematics"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Decodes are checked against ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"H c = s (mod 2)"}),". Scored with logical cosets and Wilson 95% CIs."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(k,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"App-Free Library"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Built on the official ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"qector-decoder-v3 1.0.x"})," Rust/PyO3 wheel. No desktop GUI required."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(C,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Multi-Agent System"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"28 domain skills and 5 tailored agent personas designed for research, hardware design, verification, and engineering."})]})]})}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"DOMAIN SKILLS ECOSYSTEM"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"28 Grounded QEC Skills"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Each skill encodes verified domain rules and strict-math obligations to reduce hallucination risk and ground interactions in reproducible physics. The seven flagship skills below are a subset of the 28 skills shipped in v1.0.6."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:O.map(s=>e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800/90 flex flex-col justify-between hover:border-cyan-500/30 transition-all",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsx("span",{className:"font-mono text-sm font-bold text-cyan-400",children:s.name}),e.jsx("span",{className:"text-[11px] font-mono px-2 py-0.5 rounded bg-slate-800 text-slate-300 border border-slate-700",children:s.role})]}),e.jsx("p",{className:"text-sm text-slate-300 leading-relaxed mb-4",children:s.desc})]}),e.jsx("div",{className:"pt-3 border-t border-slate-800/80 space-y-1.5",children:s.keyFeatures.map(a=>e.jsxs("div",{className:"flex items-center gap-2 text-xs text-slate-400",children:[e.jsx(q,{className:"w-3.5 h-3.5 text-cyan-400 shrink-0"}),e.jsx("span",{children:a})]},a))})]},s.name))}),e.jsxs("div",{className:"mt-10",children:[e.jsx("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:"All 28 skills shipped in the plugin"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:T.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-cyan-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(S,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"AGENT ROLES & PERSONAS"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"5 Specialized QEC Agents"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Custom agent definitions for Claude Code configured with tailored instructions, prompt templates, and tool access boundaries."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:A.map(s=>e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2 font-mono text-xs text-cyan-400",children:[e.jsx(i,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:s.file})]}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-2",children:s.title}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:s.desc})]})},s.file))})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(E,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"MCP SERVER TOOL SURFACE"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Local MCP Servers, Air-Gapped by Default"}),e.jsxs("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:["The v2.0.1 release separates local JSON-RPC 2.0 stdio capabilities by risk and purpose. The default",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-secure "})," server (12 tools: the 8 stable tools below plus airgap_status, integrity_check, schema_catalog and audit_log_status) refuses network access and verifies its own files;",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-library "})," (8 stable tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-research "})," (29 provisional tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-admin "})," (3 explicitly enabled tools), and",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-desktop-mcp "})," (the safe Desktop profile)."]})]}),e.jsx("div",{className:"card-surface rounded-2xl border border-slate-800 overflow-hidden shadow-xl",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm",children:[e.jsx("thead",{className:"bg-slate-900/90 text-xs font-mono text-cyan-400 uppercase tracking-wider border-b border-slate-800",children:e.jsxs("tr",{children:[e.jsx("th",{className:"px-6 py-4",children:"Tool Name"}),e.jsx("th",{className:"px-6 py-4",children:"Functionality & Mathematical Invariant"})]})}),e.jsx("tbody",{className:"divide-y divide-slate-800/60 font-mono text-xs text-slate-300",children:D.map(s=>e.jsxs("tr",{className:"hover:bg-slate-900/40 transition-colors",children:[e.jsx("td",{className:"px-6 py-4 font-semibold text-cyan-300 whitespace-nowrap",children:s.name}),e.jsx("td",{className:"px-6 py-4 font-sans text-sm text-slate-400",children:s.desc})]},s.name))})]})})}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-research server · ",d.length," provisional tools"]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:d.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-slate-300",children:s},s))})]}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-admin server · ",m.length," privileged tools"]}),e.jsxs("p",{className:"text-xs text-slate-400 mb-3",children:["Disabled by default. Requires ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"QECTOR_ADMIN_ENABLED=1"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"confirm=true"})," for every administrative call."]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:m.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-gold-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Installation & Setup"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2",children:"Configure QECTOR Claude Plugin v2.0.1 for Claude Code or Claude Desktop in seconds."})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"1"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Claude Code Marketplace"})]}),e.jsx("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:"Install directly via Claude Code marketplace registration:"}),e.jsx(r,{code:`# 1. Add marketplace repository -claude plugin marketplace add GuillaumeLessard/qector-claude-plugin - -# 2. Install plugin -claude plugin install qector@qector-tools`,language:"bash"})]})}),e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"2"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Local Plugin Directory"})]}),e.jsxs("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:["Clone the source repository and launch with the ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"--plugin-dir"})," flag:"]}),e.jsx(r,{code:`git clone https://github.com/GuillaumeLessard/qector-claude-plugin.git -cd qector-claude-plugin -pip install --require-hashes -r requirements.lock -claude --plugin-dir .`,language:"bash"})]})})]}),e.jsxs("div",{className:"mt-8 card-surface p-6 rounded-2xl border border-slate-800",children:[e.jsxs("h3",{className:"text-lg font-bold text-slate-100 mb-2 flex items-center gap-2",children:[e.jsx(o,{className:"w-5 h-5 text-cyan-400"}),e.jsx("span",{children:"Mathematical Validation Gate"})]}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed mb-4",children:"Verify all 16 Reference Manual theorems and 29 executable proof obligations locally on your machine:"}),e.jsx(r,{code:`# Run the complete public reference manual mathematical gate -python scripts/run_manual_math_validation.py - -# Or run full pytest integration suite -python -m pytest tests/test_reference_manual_math.py -v`,language:"bash"})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6 mb-12",children:e.jsx("div",{className:"card-surface p-8 border border-cyan-900/50 relative overflow-hidden bg-gradient-to-br from-slate-950 via-surface/60 to-slate-950",children:e.jsxs("div",{className:"relative z-10 flex flex-col md:flex-row items-center justify-between gap-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-2xl font-extrabold text-slate-100 mb-2",children:"Download Distribution Packages"}),e.jsx("p",{className:"text-sm text-slate-400 max-w-xl leading-relaxed",children:"Signed release archives: the Claude Code plugin, Claude Desktop extensions (.mcpb, including an offline bundle with a pinned wheelhouse), SHA256SUMS with its signature, an SBOM and provenance."})]}),e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsxs("a",{href:t.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2 shadow-lg shadow-cyan-400/20",children:[e.jsx(L,{className:"w-4 h-4"}),e.jsxs("span",{children:["v",t.version," Release, Checksums & Signatures"]})]}),e.jsxs(c,{to:"/docs",className:"px-5 py-2.5 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2",children:[e.jsx(P,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{children:"Docs Hub"})]})]})]})})})]})}export{U as default}; diff --git a/assets/ClaudePlugin-CE-0Xttn.js b/assets/ClaudePlugin-CE-0Xttn.js deleted file mode 100644 index a3d6d794..00000000 --- a/assets/ClaudePlugin-CE-0Xttn.js +++ /dev/null @@ -1,13 +0,0 @@ -import{r as h,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,J as g,C as r}from"./index-DkYdPRY7.js";import{N as f}from"./NeuralReveal-BflyZYSb.js";import{C as t}from"./releases-1-HBloZv.js";import{S as b,T as i,c as y,d as j,E as v,f as N,L as w,a as o,g as k,W as C,h as _,i as q,A as S,j as E,D as L,B as P}from"./vendor-ui-B0ssGG4c.js";import{L as c}from"./vendor-PiU4YGcH.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const O=[{name:"qector-core",role:"Core Ground Truth",desc:"Verified platform facts, 8 library MCP tools, 5 stable decoders, and strict API grounding to prevent hallucination.",keyFeatures:["Grounds tool names & signatures","Enforces strict math boundary","Local verification"]},{name:"qector-math-foundations",role:"Mathematical Axioms",desc:"Theorems 1-16 executable obligations over GF(2), syndrome equivalence H c = s (mod 2), Wilson 95% CIs, and coset scoring.",keyFeatures:["Theorem 1 fail-closed verification","Theorem 2 logical coset scoring","Wilson score intervals"]},{name:"qector-developer",role:"SDK & Engineering",desc:"Integration guidance for qector-decoder-v3 Python SDK, parity-check matrix generation, Sinter/Stim adapters, and CI/CD testing.",keyFeatures:["Python SDK best practices","Matrix construction helpers","Local test automation"]},{name:"qector-researcher",role:"Quantum Information Science",desc:"Threshold discovery workflows, noise modeling, Monte Carlo error simulations, and academic paper reproduction.",keyFeatures:["Code-capacity sweeps","Noise model parameterization","Reproducible artifact export"]},{name:"qector-hardware-engineer",role:"Experimental & Cryogenic",desc:"Hardware constraint modeling, heavy-hex/surface graph mapping, physical error rate profiling, and latency budgets.",keyFeatures:["Physical qubit layout mapping","Hardware latency analysis","Cryogenic error budgets"]},{name:"qector-educator",role:"Pedagogy & Concepts",desc:"Interactive tutorial creation, mathematical explanations of syndrome decoding, MWPM matching, and BP-OSD.",keyFeatures:["Step-by-step decoding explanations","Interactive code walkthroughs","Visual homology concepts"]},{name:"qector-sysadmin",role:"Operations & Hygiene",desc:"Environment diagnostics, resource limits (MAX_CHECKS, MAX_QUBITS), safe file I/O, and deployment validation.",keyFeatures:["15-point runtime health check","DoS & memory limit guards","Platform compatibility audit"]}],T=["qector-architecture","qector-batch-decoding","qector-bp-osd","qector-codes-builder","qector-core","qector-decoders-deep-dive","qector-dem-pipeline","qector-deployment","qector-developer","qector-educator","qector-glossary","qector-hardware-engineer","qector-ler-methodology","qector-licensing","qector-math-foundations","qector-orchestration","qector-pymatching-compat","qector-release-engineering","qector-reproducibility","qector-researcher","qector-roadmap","qector-services","qector-sinter","qector-space-time","qector-sysadmin","qector-testing-strategy","qector-two-stage-css","qector-workbench"],A=[{file:"qec-developer.md",title:"QEC Software Engineer",desc:"Specialized in Python SDK integration, decoder benchmarking, matrix generation, and production deployment."},{file:"qec-researcher.md",title:"QEC Research Scientist",desc:"Specialized in academic literature review, threshold sweeps, Wilson confidence intervals, and Monte Carlo studies."},{file:"qec-validator.md",title:"Mathematical Proof Validator",desc:"Specialized in formal theorem checking, finite matrix verification, syndrome faithfulness, and local-only enforcement."},{file:"qec-sysadmin.md",title:"Systems & Runtime Engineer",desc:"Specialized in Python environment health, MCP server stdio management, resource bounds, and packaging."},{file:"qec-hardware-engineer.md",title:"Quantum Hardware Architect",desc:"Specialized in superconducting qubit topologies, heavy-hex grids, cryogenic latency constraints, and noise budgets."}],D=[{name:"list_code_families",desc:"Lists available code families (Rotated Surface, Toric, Ring, Repetition, Color, Heavy-Hex, Hypergraph Product)."},{name:"list_decoders",desc:"Lists the five stable decoder classes: UnionFind, FastUnionFind, Blossom (MWPM), SparseBlossom, NativeAuto."},{name:"get_license_info",desc:"Reads live offline licensing tier and feature flags from the installed qector-decoder-v3 package."},{name:"decode_syndrome",desc:"Decodes a binary syndrome with mandatory Theorem 1 fail-closed verification: H c = s (mod 2)."},{name:"decode_single",desc:"Executes a single-shot decode with logical-coset scoring (Theorem 2) against logical observables."},{name:"threshold_sweep",desc:"Runs device-local code-capacity sweeps with Wilson 95% confidence intervals and SHA-256 sealed artifacts."},{name:"build_code_from_matrix",desc:"Validates and compiles an arbitrary binary parity-check matrix with rank and observable analysis."},{name:"compat_report",desc:"Audits runtime health, wheel version, NumPy compatibility, and provisional feature boundaries."}],d=["artifacts_sha256","artifact_metadata_check","code_distance_check","code_export_matrices","code_family_info","code_logicals_inspect","compat_report","decode_faithfulness_check","dem_collapse_parallel","dem_inspect","env_block","glossary_lookup","hardware_probe","hot_path_microbench","license_active_check","logical_coset_score","pymatching_compat_check","qiskit_plugin_check","reproduction_command_lookup","sinter_decoder_list","sinter_task_template","stim_circuit_probe","theorem_lookup","wilson_ci","wilson_table","workload_hash","get_capability_matrix","get_evidence_policy","get_runtime_provenance"],m=["system_setup","configure_claude_desktop","workbench_probe"];function U(){const[l,x]=h.useState(!1),p=(s,a)=>{navigator.clipboard.writeText(s),a(!0),setTimeout(()=>a(!1),2e3)},n=`claude plugin marketplace add GuillaumeLessard/qector-claude-plugin -claude plugin install qector@qector-tools`;return e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"QECTOR Claude Plugin · Quantum Error Correction for Claude Code",description:"Official QECTOR Claude Code and Claude Desktop plugin v2.0.1: air-gapped qector-secure MCP server (12 schema-validated tools), 28 skills and 5 agents on qector-decoder-v3 1.0.1."}),e.jsx(g,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Claude Plugin",description:"Official QECTOR plugin v2.0.1 for Claude Code and Claude Desktop: air-gapped qector-secure MCP server with 12 schema-validated tools, 28 skills, 5 agents, 11 commands; 29 research and 3 admin tools are opt-in.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",softwareVersion:t.version,author:{"@type":"Person",name:"Guillaume Lessard",url:"https://orcid.org/0009-0000-3465-3753"},offers:{"@type":"Offer",price:"0",priceCurrency:"USD"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-400/5 via-surface/40 to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/4 left-1/2 -translate-x-1/2 -translate-y-1/2 w-96 h-96 bg-cyan-400/10 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-4 sm:px-6 relative z-10 text-center",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3.5 py-1.5 rounded-full bg-cyan-950/60 border border-cyan-800/60 text-cyan-300 text-xs font-mono font-medium mb-6 backdrop-blur-sm",children:[e.jsx(b,{className:"w-3.5 h-3.5 text-cyan-400"}),e.jsxs("span",{children:["ANTHROPIC CLAUDE CODE & DESKTOP PLUGIN · v",t.version," · published ",t.releaseDate]})]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-extrabold tracking-tight text-slate-100 mb-6 max-w-4xl mx-auto leading-[1.1]",children:e.jsx(f,{text:"QECTOR Claude Plugin"})}),e.jsxs("p",{className:"text-lg md:text-xl text-slate-300 max-w-3xl mx-auto leading-relaxed mb-8",children:["Empower Claude with local Quantum Error Correction engineering. Release v2.0.1 runs on qector-decoder-v3 1.0.1. The default"," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"qector-secure"})," server is air-gapped, integrity-checked and validates every request and response against JSON Schema (12 tools). It ships with"," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"28 domain skills"}),","," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"5 specialized agents"})," and 11 slash commands; 29 research tools and 3 admin tools are opt-in. Every dependency is pinned by SHA-256, and releases are signed."]}),e.jsxs("div",{className:"max-w-2xl mx-auto bg-slate-950/90 border border-cyan-900/60 rounded-2xl p-5 mb-10 shadow-2xl backdrop-blur-md text-left",children:[e.jsxs("div",{className:"flex items-center justify-between pb-3 mb-3 border-b border-slate-800/80",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(i,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{className:"text-xs font-mono font-semibold uppercase tracking-wider text-slate-400",children:"Instant Marketplace Install"})]}),e.jsxs("button",{onClick:()=>p(n,x),className:"flex items-center gap-1.5 text-xs font-mono text-cyan-400 hover:text-cyan-300 transition-colors px-2.5 py-1 rounded bg-cyan-950/50 border border-cyan-800/40",children:[l?e.jsx(y,{className:"w-3.5 h-3.5 text-green-400"}):e.jsx(j,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:l?"Copied":"Copy"})]})]}),e.jsx("pre",{className:"font-mono text-sm text-cyan-300 overflow-x-auto whitespace-pre leading-relaxed",children:n})]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin",target:"_blank",rel:"noopener noreferrer",className:"px-6 py-3 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-sm transition-all shadow-lg shadow-cyan-400/20 inline-flex items-center gap-2",children:[e.jsx("span",{children:"GitHub Repository"}),e.jsx(v,{className:"w-4 h-4"})]}),e.jsxs(c,{to:"/mcp-server",className:"px-6 py-3 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-sm transition-all inline-flex items-center gap-2",children:[e.jsx("span",{children:"MCP Server Reference"}),e.jsx(N,{className:"w-4 h-4 text-cyan-400"})]})]}),e.jsx("p",{className:"text-xs text-slate-400 mt-6",children:"Independent plugin by iD01t Productions. Not affiliated with or endorsed by Anthropic."})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(w,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Local-First Security"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"Local stdio transport by default. Parity matrices, syndromes, quantum circuits, and simulation artifacts are processed on the host machine; verify your host environment if confidentiality matters."})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(o,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Strict Mathematics"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Decodes are checked against ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"H c = s (mod 2)"}),". Scored with logical cosets and Wilson 95% CIs."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(k,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"App-Free Library"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Built on the official ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"qector-decoder-v3 1.0.x"})," Rust/PyO3 wheel. No desktop GUI required."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(C,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Multi-Agent System"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"28 domain skills and 5 tailored agent personas designed for research, hardware design, verification, and engineering."})]})]})}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"DOMAIN SKILLS ECOSYSTEM"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"28 Grounded QEC Skills"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Each skill encodes verified domain rules and strict-math obligations to reduce hallucination risk and ground interactions in reproducible physics. The seven flagship skills below are a subset of the 28 skills shipped in the plugin."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:O.map(s=>e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800/90 flex flex-col justify-between hover:border-cyan-500/30 transition-all",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsx("span",{className:"font-mono text-sm font-bold text-cyan-400",children:s.name}),e.jsx("span",{className:"text-[11px] font-mono px-2 py-0.5 rounded bg-slate-800 text-slate-300 border border-slate-700",children:s.role})]}),e.jsx("p",{className:"text-sm text-slate-300 leading-relaxed mb-4",children:s.desc})]}),e.jsx("div",{className:"pt-3 border-t border-slate-800/80 space-y-1.5",children:s.keyFeatures.map(a=>e.jsxs("div",{className:"flex items-center gap-2 text-xs text-slate-400",children:[e.jsx(q,{className:"w-3.5 h-3.5 text-cyan-400 shrink-0"}),e.jsx("span",{children:a})]},a))})]},s.name))}),e.jsxs("div",{className:"mt-10",children:[e.jsx("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:"All 28 skills shipped in the plugin"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:T.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-cyan-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(S,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"AGENT ROLES & PERSONAS"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"5 Specialized QEC Agents"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Custom agent definitions for Claude Code configured with tailored instructions, prompt templates, and tool access boundaries."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:A.map(s=>e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2 font-mono text-xs text-cyan-400",children:[e.jsx(i,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:s.file})]}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-2",children:s.title}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:s.desc})]})},s.file))})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(E,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"MCP SERVER TOOL SURFACE"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Local MCP Servers, Air-Gapped by Default"}),e.jsxs("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:["The v2.0.1 release separates local JSON-RPC 2.0 stdio capabilities by risk and purpose. The default",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-secure "})," server (12 tools: the 8 stable tools below plus airgap_status, integrity_check, schema_catalog and audit_log_status) refuses network access and verifies its own files;",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-library "})," (8 stable tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-research "})," (29 provisional tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-admin "})," (3 explicitly enabled tools), and",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-desktop-mcp "})," (the safe Desktop profile)."]})]}),e.jsx("div",{className:"card-surface rounded-2xl border border-slate-800 overflow-hidden shadow-xl",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm",children:[e.jsx("thead",{className:"bg-slate-900/90 text-xs font-mono text-cyan-400 uppercase tracking-wider border-b border-slate-800",children:e.jsxs("tr",{children:[e.jsx("th",{className:"px-6 py-4",children:"Tool Name"}),e.jsx("th",{className:"px-6 py-4",children:"Functionality & Mathematical Invariant"})]})}),e.jsx("tbody",{className:"divide-y divide-slate-800/60 font-mono text-xs text-slate-300",children:D.map(s=>e.jsxs("tr",{className:"hover:bg-slate-900/40 transition-colors",children:[e.jsx("td",{className:"px-6 py-4 font-semibold text-cyan-300 whitespace-nowrap",children:s.name}),e.jsx("td",{className:"px-6 py-4 font-sans text-sm text-slate-400",children:s.desc})]},s.name))})]})})}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-research server · ",d.length," provisional tools"]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:d.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-slate-300",children:s},s))})]}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-admin server · ",m.length," privileged tools"]}),e.jsxs("p",{className:"text-xs text-slate-400 mb-3",children:["Disabled by default. Requires ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"QECTOR_ADMIN_ENABLED=1"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"confirm=true"})," for every administrative call."]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:m.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-gold-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Installation & Setup"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2",children:"Configure QECTOR Claude Plugin v2.0.1 for Claude Code or Claude Desktop in seconds."})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"1"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Claude Code Marketplace"})]}),e.jsx("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:"Install directly via Claude Code marketplace registration:"}),e.jsx(r,{code:`# 1. Add marketplace repository -claude plugin marketplace add GuillaumeLessard/qector-claude-plugin - -# 2. Install plugin -claude plugin install qector@qector-tools`,language:"bash"})]})}),e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"2"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Local Plugin Directory"})]}),e.jsxs("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:["Clone the source repository and launch with the ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"--plugin-dir"})," flag:"]}),e.jsx(r,{code:`git clone https://github.com/GuillaumeLessard/qector-claude-plugin.git -cd qector-claude-plugin -pip install --require-hashes -r requirements.lock -claude --plugin-dir .`,language:"bash"})]})})]}),e.jsxs("div",{className:"mt-8 card-surface p-6 rounded-2xl border border-slate-800",children:[e.jsxs("h3",{className:"text-lg font-bold text-slate-100 mb-2 flex items-center gap-2",children:[e.jsx(o,{className:"w-5 h-5 text-cyan-400"}),e.jsx("span",{children:"Mathematical Validation Gate"})]}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed mb-4",children:"Verify all 16 Reference Manual theorems and 29 executable proof obligations locally on your machine:"}),e.jsx(r,{code:`# Run the complete public reference manual mathematical gate -python scripts/run_manual_math_validation.py - -# Or run full pytest integration suite -python -m pytest tests/test_reference_manual_math.py -v`,language:"bash"})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6 mb-12",children:e.jsx("div",{className:"card-surface p-8 border border-cyan-900/50 relative overflow-hidden bg-gradient-to-br from-slate-950 via-surface/60 to-slate-950",children:e.jsxs("div",{className:"relative z-10 flex flex-col md:flex-row items-center justify-between gap-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-2xl font-extrabold text-slate-100 mb-2",children:"Download Distribution Packages"}),e.jsx("p",{className:"text-sm text-slate-400 max-w-xl leading-relaxed",children:"Signed release archives: the Claude Code plugin, Claude Desktop extensions (.mcpb, including an offline bundle with a pinned wheelhouse), SHA256SUMS with its signature, an SBOM and provenance."})]}),e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsxs("a",{href:t.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2 shadow-lg shadow-cyan-400/20",children:[e.jsx(L,{className:"w-4 h-4"}),e.jsxs("span",{children:["v",t.version," Release, Checksums & Signatures"]})]}),e.jsxs(c,{to:"/docs",className:"px-5 py-2.5 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2",children:[e.jsx(P,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{children:"Docs Hub"})]})]})]})})})]})}export{U as default}; diff --git a/assets/ClaudePlugin-CHEQddAt.js b/assets/ClaudePlugin-CHEQddAt.js deleted file mode 100644 index c61893d7..00000000 --- a/assets/ClaudePlugin-CHEQddAt.js +++ /dev/null @@ -1,13 +0,0 @@ -import{r as h,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,J as g,L as i,C as r}from"./index-PdoH5kLF.js";import{N as f}from"./NeuralReveal-Bsl9IGCr.js";import{C as t}from"./releases-1-HBloZv.js";import{S as b,T as o,c as y,d as j,E as v,f as N,L as w,a as c,g as k,W as C,h as _,i as q,A as S,j as E,D as L,B as P}from"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const O=[{name:"qector-core",role:"Core Ground Truth",desc:"Verified platform facts, 8 library MCP tools, 5 stable decoders, and strict API grounding to prevent hallucination.",keyFeatures:["Grounds tool names & signatures","Enforces strict math boundary","Local verification"]},{name:"qector-math-foundations",role:"Mathematical Axioms",desc:"Theorems 1-16 executable obligations over GF(2), syndrome equivalence H c = s (mod 2), Wilson 95% CIs, and coset scoring.",keyFeatures:["Theorem 1 fail-closed verification","Theorem 2 logical coset scoring","Wilson score intervals"]},{name:"qector-developer",role:"SDK & Engineering",desc:"Integration guidance for qector-decoder-v3 Python SDK, parity-check matrix generation, Sinter/Stim adapters, and CI/CD testing.",keyFeatures:["Python SDK best practices","Matrix construction helpers","Local test automation"]},{name:"qector-researcher",role:"Quantum Information Science",desc:"Threshold discovery workflows, noise modeling, Monte Carlo error simulations, and academic paper reproduction.",keyFeatures:["Code-capacity sweeps","Noise model parameterization","Reproducible artifact export"]},{name:"qector-hardware-engineer",role:"Experimental & Cryogenic",desc:"Hardware constraint modeling, heavy-hex/surface graph mapping, physical error rate profiling, and latency budgets.",keyFeatures:["Physical qubit layout mapping","Hardware latency analysis","Cryogenic error budgets"]},{name:"qector-educator",role:"Pedagogy & Concepts",desc:"Interactive tutorial creation, mathematical explanations of syndrome decoding, MWPM matching, and BP-OSD.",keyFeatures:["Step-by-step decoding explanations","Interactive code walkthroughs","Visual homology concepts"]},{name:"qector-sysadmin",role:"Operations & Hygiene",desc:"Environment diagnostics, resource limits (MAX_CHECKS, MAX_QUBITS), safe file I/O, and deployment validation.",keyFeatures:["15-point runtime health check","DoS & memory limit guards","Platform compatibility audit"]}],T=["qector-architecture","qector-batch-decoding","qector-bp-osd","qector-codes-builder","qector-core","qector-decoders-deep-dive","qector-dem-pipeline","qector-deployment","qector-developer","qector-educator","qector-glossary","qector-hardware-engineer","qector-ler-methodology","qector-licensing","qector-math-foundations","qector-orchestration","qector-pymatching-compat","qector-release-engineering","qector-reproducibility","qector-researcher","qector-roadmap","qector-services","qector-sinter","qector-space-time","qector-sysadmin","qector-testing-strategy","qector-two-stage-css","qector-workbench"],A=[{file:"qec-developer.md",title:"QEC Software Engineer",desc:"Specialized in Python SDK integration, decoder benchmarking, matrix generation, and production deployment."},{file:"qec-researcher.md",title:"QEC Research Scientist",desc:"Specialized in academic literature review, threshold sweeps, Wilson confidence intervals, and Monte Carlo studies."},{file:"qec-validator.md",title:"Mathematical Proof Validator",desc:"Specialized in formal theorem checking, finite matrix verification, syndrome faithfulness, and local-only enforcement."},{file:"qec-sysadmin.md",title:"Systems & Runtime Engineer",desc:"Specialized in Python environment health, MCP server stdio management, resource bounds, and packaging."},{file:"qec-hardware-engineer.md",title:"Quantum Hardware Architect",desc:"Specialized in superconducting qubit topologies, heavy-hex grids, cryogenic latency constraints, and noise budgets."}],D=[{name:"list_code_families",desc:"Lists available code families (Rotated Surface, Toric, Ring, Repetition, Color, Heavy-Hex, Hypergraph Product)."},{name:"list_decoders",desc:"Lists the five stable decoder classes: UnionFind, FastUnionFind, Blossom (MWPM), SparseBlossom, NativeAuto."},{name:"get_license_info",desc:"Reads live offline licensing tier and feature flags from the installed qector-decoder-v3 package."},{name:"decode_syndrome",desc:"Decodes a binary syndrome with mandatory Theorem 1 fail-closed verification: H c = s (mod 2)."},{name:"decode_single",desc:"Executes a single-shot decode with logical-coset scoring (Theorem 2) against logical observables."},{name:"threshold_sweep",desc:"Runs device-local code-capacity sweeps with Wilson 95% confidence intervals and SHA-256 sealed artifacts."},{name:"build_code_from_matrix",desc:"Validates and compiles an arbitrary binary parity-check matrix with rank and observable analysis."},{name:"compat_report",desc:"Audits runtime health, wheel version, NumPy compatibility, and provisional feature boundaries."}],d=["artifacts_sha256","artifact_metadata_check","code_distance_check","code_export_matrices","code_family_info","code_logicals_inspect","compat_report","decode_faithfulness_check","dem_collapse_parallel","dem_inspect","env_block","glossary_lookup","hardware_probe","hot_path_microbench","license_active_check","logical_coset_score","pymatching_compat_check","qiskit_plugin_check","reproduction_command_lookup","sinter_decoder_list","sinter_task_template","stim_circuit_probe","theorem_lookup","wilson_ci","wilson_table","workload_hash","get_capability_matrix","get_evidence_policy","get_runtime_provenance"],m=["system_setup","configure_claude_desktop","workbench_probe"];function Q(){const[l,x]=h.useState(!1),p=(s,a)=>{navigator.clipboard.writeText(s),a(!0),setTimeout(()=>a(!1),2e3)},n=`claude plugin marketplace add GuillaumeLessard/qector-claude-plugin -claude plugin install qector@qector-tools`;return e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"QECTOR Claude Plugin · Quantum Error Correction for Claude Code",description:"Official QECTOR Claude Code and Claude Desktop plugin v2.0.1: air-gapped qector-secure MCP server (12 schema-validated tools), 28 skills and 5 agents on qector-decoder-v3 1.0.1."}),e.jsx(g,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Claude Plugin",description:"Official QECTOR plugin v2.0.1 for Claude Code and Claude Desktop: air-gapped qector-secure MCP server with 12 schema-validated tools, 28 skills, 5 agents, 11 commands; 29 research and 3 admin tools are opt-in.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",softwareVersion:t.version,author:{"@type":"Person",name:"Guillaume Lessard",url:"https://orcid.org/0009-0000-3465-3753"},offers:{"@type":"Offer",price:"0",priceCurrency:"USD"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-400/5 via-surface/40 to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/4 left-1/2 -translate-x-1/2 -translate-y-1/2 w-96 h-96 bg-cyan-400/10 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-4 sm:px-6 relative z-10 text-center",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3.5 py-1.5 rounded-full bg-cyan-950/60 border border-cyan-800/60 text-cyan-300 text-xs font-mono font-medium mb-6 backdrop-blur-sm",children:[e.jsx(b,{className:"w-3.5 h-3.5 text-cyan-400"}),e.jsxs("span",{children:["ANTHROPIC CLAUDE CODE & DESKTOP PLUGIN · v",t.version," · published ",t.releaseDate]})]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-extrabold tracking-tight text-slate-100 mb-6 max-w-4xl mx-auto leading-[1.1]",children:e.jsx(f,{text:"QECTOR Claude Plugin"})}),e.jsxs("p",{className:"text-lg md:text-xl text-slate-300 max-w-3xl mx-auto leading-relaxed mb-8",children:["Empower Claude with local Quantum Error Correction engineering. Release v2.0.1 runs on qector-decoder-v3 1.0.1. The default"," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"qector-secure"})," server is air-gapped, integrity-checked and validates every request and response against JSON Schema (12 tools). It ships with"," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"28 domain skills"}),","," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"5 specialized agents"})," and 11 slash commands; 29 research tools and 3 admin tools are opt-in. Every dependency is pinned by SHA-256, and releases are signed."]}),e.jsxs("div",{className:"max-w-2xl mx-auto bg-slate-950/90 border border-cyan-900/60 rounded-2xl p-5 mb-10 shadow-2xl backdrop-blur-md text-left",children:[e.jsxs("div",{className:"flex items-center justify-between pb-3 mb-3 border-b border-slate-800/80",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(o,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{className:"text-xs font-mono font-semibold uppercase tracking-wider text-slate-400",children:"Instant Marketplace Install"})]}),e.jsxs("button",{onClick:()=>p(n,x),className:"flex items-center gap-1.5 text-xs font-mono text-cyan-400 hover:text-cyan-300 transition-colors px-2.5 py-1 rounded bg-cyan-950/50 border border-cyan-800/40",children:[l?e.jsx(y,{className:"w-3.5 h-3.5 text-green-400"}):e.jsx(j,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:l?"Copied":"Copy"})]})]}),e.jsx("pre",{className:"font-mono text-sm text-cyan-300 overflow-x-auto whitespace-pre leading-relaxed",children:n})]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin",target:"_blank",rel:"noopener noreferrer",className:"px-6 py-3 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-sm transition-all shadow-lg shadow-cyan-400/20 inline-flex items-center gap-2",children:[e.jsx("span",{children:"GitHub Repository"}),e.jsx(v,{className:"w-4 h-4"})]}),e.jsxs(i,{to:"/mcp-server",className:"px-6 py-3 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-sm transition-all inline-flex items-center gap-2",children:[e.jsx("span",{children:"MCP Server Reference"}),e.jsx(N,{className:"w-4 h-4 text-cyan-400"})]})]}),e.jsx("p",{className:"text-xs text-slate-400 mt-6",children:"Independent plugin by iD01t Productions. Not affiliated with or endorsed by Anthropic."})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(w,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Local-First Security"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"Local stdio transport by default. Parity matrices, syndromes, quantum circuits, and simulation artifacts are processed on the host machine; verify your host environment if confidentiality matters."})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(c,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Strict Mathematics"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Decodes are checked against ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"H c = s (mod 2)"}),". Scored with logical cosets and Wilson 95% CIs."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(k,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"App-Free Library"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Built on the official ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"qector-decoder-v3 1.0.x"})," Rust/PyO3 wheel. No desktop GUI required."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(C,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Multi-Agent System"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"28 domain skills and 5 tailored agent personas designed for research, hardware design, verification, and engineering."})]})]})}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"DOMAIN SKILLS ECOSYSTEM"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"28 Grounded QEC Skills"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Each skill encodes verified domain rules and strict-math obligations to reduce hallucination risk and ground interactions in reproducible physics. The seven flagship skills below are a subset of the 28 skills shipped in the plugin."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:O.map(s=>e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800/90 flex flex-col justify-between hover:border-cyan-500/30 transition-all",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsx("span",{className:"font-mono text-sm font-bold text-cyan-400",children:s.name}),e.jsx("span",{className:"text-[11px] font-mono px-2 py-0.5 rounded bg-slate-800 text-slate-300 border border-slate-700",children:s.role})]}),e.jsx("p",{className:"text-sm text-slate-300 leading-relaxed mb-4",children:s.desc})]}),e.jsx("div",{className:"pt-3 border-t border-slate-800/80 space-y-1.5",children:s.keyFeatures.map(a=>e.jsxs("div",{className:"flex items-center gap-2 text-xs text-slate-400",children:[e.jsx(q,{className:"w-3.5 h-3.5 text-cyan-400 shrink-0"}),e.jsx("span",{children:a})]},a))})]},s.name))}),e.jsxs("div",{className:"mt-10",children:[e.jsx("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:"All 28 skills shipped in the plugin"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:T.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-cyan-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(S,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"AGENT ROLES & PERSONAS"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"5 Specialized QEC Agents"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Custom agent definitions for Claude Code configured with tailored instructions, prompt templates, and tool access boundaries."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:A.map(s=>e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2 font-mono text-xs text-cyan-400",children:[e.jsx(o,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:s.file})]}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-2",children:s.title}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:s.desc})]})},s.file))})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(E,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"MCP SERVER TOOL SURFACE"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Local MCP Servers, Air-Gapped by Default"}),e.jsxs("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:["The v2.0.1 release separates local JSON-RPC 2.0 stdio capabilities by risk and purpose. The default",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-secure "})," server (12 tools: the 8 stable tools below plus airgap_status, integrity_check, schema_catalog and audit_log_status) refuses network access and verifies its own files;",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-library "})," (8 stable tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-research "})," (29 provisional tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-admin "})," (3 explicitly enabled tools), and",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-desktop-mcp "})," (the safe Desktop profile)."]})]}),e.jsx("div",{className:"card-surface rounded-2xl border border-slate-800 overflow-hidden shadow-xl",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm",children:[e.jsx("thead",{className:"bg-slate-900/90 text-xs font-mono text-cyan-400 uppercase tracking-wider border-b border-slate-800",children:e.jsxs("tr",{children:[e.jsx("th",{className:"px-6 py-4",children:"Tool Name"}),e.jsx("th",{className:"px-6 py-4",children:"Functionality & Mathematical Invariant"})]})}),e.jsx("tbody",{className:"divide-y divide-slate-800/60 font-mono text-xs text-slate-300",children:D.map(s=>e.jsxs("tr",{className:"hover:bg-slate-900/40 transition-colors",children:[e.jsx("td",{className:"px-6 py-4 font-semibold text-cyan-300 whitespace-nowrap",children:s.name}),e.jsx("td",{className:"px-6 py-4 font-sans text-sm text-slate-400",children:s.desc})]},s.name))})]})})}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-research server · ",d.length," provisional tools"]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:d.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-slate-300",children:s},s))})]}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-admin server · ",m.length," privileged tools"]}),e.jsxs("p",{className:"text-xs text-slate-400 mb-3",children:["Disabled by default. Requires ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"QECTOR_ADMIN_ENABLED=1"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"confirm=true"})," for every administrative call."]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:m.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-gold-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Installation & Setup"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2",children:"Configure QECTOR Claude Plugin v2.0.1 for Claude Code or Claude Desktop in seconds."})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"1"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Claude Code Marketplace"})]}),e.jsx("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:"Install directly via Claude Code marketplace registration:"}),e.jsx(r,{code:`# 1. Add marketplace repository -claude plugin marketplace add GuillaumeLessard/qector-claude-plugin - -# 2. Install plugin -claude plugin install qector@qector-tools`,language:"bash"})]})}),e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"2"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Local Plugin Directory"})]}),e.jsxs("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:["Clone the source repository and launch with the ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"--plugin-dir"})," flag:"]}),e.jsx(r,{code:`git clone https://github.com/GuillaumeLessard/qector-claude-plugin.git -cd qector-claude-plugin -pip install --require-hashes -r requirements.lock -claude --plugin-dir .`,language:"bash"})]})})]}),e.jsxs("div",{className:"mt-8 card-surface p-6 rounded-2xl border border-slate-800",children:[e.jsxs("h3",{className:"text-lg font-bold text-slate-100 mb-2 flex items-center gap-2",children:[e.jsx(c,{className:"w-5 h-5 text-cyan-400"}),e.jsx("span",{children:"Mathematical Validation Gate"})]}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed mb-4",children:"Verify all 16 Reference Manual theorems and 29 executable proof obligations locally on your machine:"}),e.jsx(r,{code:`# Run the complete public reference manual mathematical gate -python scripts/run_manual_math_validation.py - -# Or run full pytest integration suite -python -m pytest tests/test_reference_manual_math.py -v`,language:"bash"})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6 mb-12",children:e.jsx("div",{className:"card-surface p-8 border border-cyan-900/50 relative overflow-hidden bg-gradient-to-br from-slate-950 via-surface/60 to-slate-950",children:e.jsxs("div",{className:"relative z-10 flex flex-col md:flex-row items-center justify-between gap-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-2xl font-extrabold text-slate-100 mb-2",children:"Download Distribution Packages"}),e.jsx("p",{className:"text-sm text-slate-400 max-w-xl leading-relaxed",children:"Signed release archives: the Claude Code plugin, Claude Desktop extensions (.mcpb, including an offline bundle with a pinned wheelhouse), SHA256SUMS with its signature, an SBOM and provenance."})]}),e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsxs("a",{href:t.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2 shadow-lg shadow-cyan-400/20",children:[e.jsx(L,{className:"w-4 h-4"}),e.jsxs("span",{children:["v",t.version," Release, Checksums & Signatures"]})]}),e.jsxs(i,{to:"/docs",className:"px-5 py-2.5 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2",children:[e.jsx(P,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{children:"Docs Hub"})]})]})]})})})]})}export{Q as default}; diff --git a/assets/ClaudePlugin-ClObfYRc.js b/assets/ClaudePlugin-ClObfYRc.js deleted file mode 100644 index e09bb8ca..00000000 --- a/assets/ClaudePlugin-ClObfYRc.js +++ /dev/null @@ -1,13 +0,0 @@ -import{r as h,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,J as f,C as t}from"./index-BN-vOeL2.js";import{N as g}from"./NeuralReveal-BflyZYSb.js";import{C as n}from"./releases-DiQz_IDu.js";import{S as b,T as o,c as y,d as j,E as v,f as N,L as w,a as i,g as k,W as C,h as _,i as q,A as S,j as E,D as L,B as P}from"./vendor-ui-B0ssGG4c.js";import{L as c}from"./vendor-PiU4YGcH.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const O=[{name:"qector-core",role:"Core Ground Truth",desc:"Verified platform facts, 8 library MCP tools, 5 stable decoders, and strict API grounding to prevent hallucination.",keyFeatures:["Grounds tool names & signatures","Enforces strict math boundary","Local verification"]},{name:"qector-math-foundations",role:"Mathematical Axioms",desc:"Theorems 1-16 executable obligations over GF(2), syndrome equivalence H c = s (mod 2), Wilson 95% CIs, and coset scoring.",keyFeatures:["Theorem 1 fail-closed verification","Theorem 2 logical coset scoring","Wilson score intervals"]},{name:"qector-developer",role:"SDK & Engineering",desc:"Integration guidance for qector-decoder-v3 Python SDK, parity-check matrix generation, Sinter/Stim adapters, and CI/CD testing.",keyFeatures:["Python SDK best practices","Matrix construction helpers","Local test automation"]},{name:"qector-researcher",role:"Quantum Information Science",desc:"Threshold discovery workflows, noise modeling, Monte Carlo error simulations, and academic paper reproduction.",keyFeatures:["Code-capacity sweeps","Noise model parameterization","Reproducible artifact export"]},{name:"qector-hardware-engineer",role:"Experimental & Cryogenic",desc:"Hardware constraint modeling, heavy-hex/surface graph mapping, physical error rate profiling, and latency budgets.",keyFeatures:["Physical qubit layout mapping","Hardware latency analysis","Cryogenic error budgets"]},{name:"qector-educator",role:"Pedagogy & Concepts",desc:"Interactive tutorial creation, mathematical explanations of syndrome decoding, MWPM matching, and BP-OSD.",keyFeatures:["Step-by-step decoding explanations","Interactive code walkthroughs","Visual homology concepts"]},{name:"qector-sysadmin",role:"Operations & Hygiene",desc:"Environment diagnostics, resource limits (MAX_CHECKS, MAX_QUBITS), safe file I/O, and deployment validation.",keyFeatures:["15-point runtime health check","DoS & memory limit guards","Platform compatibility audit"]}],T=["qector-architecture","qector-batch-decoding","qector-bp-osd","qector-codes-builder","qector-core","qector-decoders-deep-dive","qector-dem-pipeline","qector-deployment","qector-developer","qector-educator","qector-glossary","qector-hardware-engineer","qector-ler-methodology","qector-licensing","qector-math-foundations","qector-orchestration","qector-pymatching-compat","qector-release-engineering","qector-reproducibility","qector-researcher","qector-roadmap","qector-services","qector-sinter","qector-space-time","qector-sysadmin","qector-testing-strategy","qector-two-stage-css","qector-workbench"],R=[{file:"qec-developer.md",title:"QEC Software Engineer",desc:"Specialized in Python SDK integration, decoder benchmarking, matrix generation, and production deployment."},{file:"qec-researcher.md",title:"QEC Research Scientist",desc:"Specialized in academic literature review, threshold sweeps, Wilson confidence intervals, and Monte Carlo studies."},{file:"qec-validator.md",title:"Mathematical Proof Validator",desc:"Specialized in formal theorem checking, finite matrix verification, syndrome faithfulness, and local-only enforcement."},{file:"qec-sysadmin.md",title:"Systems & Runtime Engineer",desc:"Specialized in Python environment health, MCP server stdio management, resource bounds, and packaging."},{file:"qec-hardware-engineer.md",title:"Quantum Hardware Architect",desc:"Specialized in superconducting qubit topologies, heavy-hex grids, cryogenic latency constraints, and noise budgets."}],D=[{name:"list_code_families",desc:"Lists available code families (Rotated Surface, Toric, Ring, Repetition, Color, Heavy-Hex, Hypergraph Product)."},{name:"list_decoders",desc:"Lists the five stable decoder classes: UnionFind, FastUnionFind, Blossom (MWPM), SparseBlossom, NativeAuto."},{name:"get_license_info",desc:"Reads live offline licensing tier and feature flags from the installed qector-decoder-v3 package."},{name:"decode_syndrome",desc:"Decodes a binary syndrome with mandatory Theorem 1 fail-closed verification: H c = s (mod 2)."},{name:"decode_single",desc:"Executes a single-shot decode with logical-coset scoring (Theorem 2) against logical observables."},{name:"threshold_sweep",desc:"Runs device-local code-capacity sweeps with Wilson 95% confidence intervals and SHA-256 sealed artifacts."},{name:"build_code_from_matrix",desc:"Validates and compiles an arbitrary binary parity-check matrix with rank and observable analysis."},{name:"compat_report",desc:"Audits runtime health, wheel version, NumPy compatibility, and provisional feature boundaries."}],d=["artifacts_sha256","artifact_metadata_check","code_distance_check","code_export_matrices","code_family_info","code_logicals_inspect","compat_report","decode_faithfulness_check","dem_collapse_parallel","dem_inspect","env_block","glossary_lookup","hardware_probe","hot_path_microbench","license_active_check","logical_coset_score","pymatching_compat_check","qiskit_plugin_check","reproduction_command_lookup","sinter_decoder_list","sinter_task_template","stim_circuit_probe","theorem_lookup","wilson_ci","wilson_table","workload_hash","get_capability_matrix","get_evidence_policy","get_runtime_provenance"],m=["system_setup","configure_claude_desktop","workbench_probe"];function B(){const[r,x]=h.useState(!1),p=(s,a)=>{navigator.clipboard.writeText(s),a(!0),setTimeout(()=>a(!1),2e3)},l=`claude plugin marketplace add GuillaumeLessard/qector-claude-plugin -claude plugin install qector@qector-tools`;return e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"QECTOR Claude Plugin · Quantum Error Correction for Claude Code",description:"Official QECTOR Claude Code and Claude Desktop plugin v1.0.6. 28 skills, 5 agents, four MCP servers, and qector-decoder-v3 1.0.0 with local stdio-based decoding."}),e.jsx(f,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Claude Plugin",description:"Official QECTOR plugin v1.0.6 for Claude Code and Claude Desktop. 28 skills, 5 agents, four MCP servers, 8 stable library tools, 29 opt-in research tools, and 3 opt-in admin tools.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",softwareVersion:"1.0.6",author:{"@type":"Person",name:"Guillaume Lessard",url:"https://orcid.org/0009-0000-3465-3753"},offers:{"@type":"Offer",price:"0",priceCurrency:"USD"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-400/5 via-surface/40 to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/4 left-1/2 -translate-x-1/2 -translate-y-1/2 w-96 h-96 bg-cyan-400/10 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-4 sm:px-6 relative z-10 text-center",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3.5 py-1.5 rounded-full bg-cyan-950/60 border border-cyan-800/60 text-cyan-300 text-xs font-mono font-medium mb-6 backdrop-blur-sm",children:[e.jsx(b,{className:"w-3.5 h-3.5 text-cyan-400"}),e.jsxs("span",{children:["ANTHROPIC CLAUDE CODE & DESKTOP PLUGIN · v",n.version," · published ",n.releaseDate]})]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-extrabold tracking-tight text-slate-100 mb-6 max-w-4xl mx-auto leading-[1.1]",children:e.jsx(g,{text:"QECTOR Claude Plugin"})}),e.jsxs("p",{className:"text-lg md:text-xl text-slate-300 max-w-3xl mx-auto leading-relaxed mb-8",children:["Empower Claude with local Quantum Error Correction engineering. Release v1.0.6 adds marketplace compliance hardening and environment-agnostic setup. It includes"," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"28 domain skills"}),","," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"5 specialized agents"}),","," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"8 stable library tools"}),", 29 opt-in research tools, and 3 opt-in admin tools across four MCP servers. The default configuration uses local stdio transport."]}),e.jsxs("div",{className:"max-w-2xl mx-auto bg-slate-950/90 border border-cyan-900/60 rounded-2xl p-5 mb-10 shadow-2xl backdrop-blur-md text-left",children:[e.jsxs("div",{className:"flex items-center justify-between pb-3 mb-3 border-b border-slate-800/80",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(o,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{className:"text-xs font-mono font-semibold uppercase tracking-wider text-slate-400",children:"Instant Marketplace Install"})]}),e.jsxs("button",{onClick:()=>p(l,x),className:"flex items-center gap-1.5 text-xs font-mono text-cyan-400 hover:text-cyan-300 transition-colors px-2.5 py-1 rounded bg-cyan-950/50 border border-cyan-800/40",children:[r?e.jsx(y,{className:"w-3.5 h-3.5 text-green-400"}):e.jsx(j,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:r?"Copied":"Copy"})]})]}),e.jsx("pre",{className:"font-mono text-sm text-cyan-300 overflow-x-auto whitespace-pre leading-relaxed",children:l})]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin",target:"_blank",rel:"noopener noreferrer",className:"px-6 py-3 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-sm transition-all shadow-lg shadow-cyan-400/20 inline-flex items-center gap-2",children:[e.jsx("span",{children:"GitHub Repository"}),e.jsx(v,{className:"w-4 h-4"})]}),e.jsxs(c,{to:"/mcp-server",className:"px-6 py-3 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-sm transition-all inline-flex items-center gap-2",children:[e.jsx("span",{children:"MCP Server Reference"}),e.jsx(N,{className:"w-4 h-4 text-cyan-400"})]})]}),e.jsx("p",{className:"text-xs text-slate-400 mt-6",children:"Independent plugin by iD01t Productions. Not affiliated with or endorsed by Anthropic."})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(w,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Local-First Security"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"Local stdio transport by default. Parity matrices, syndromes, quantum circuits, and simulation artifacts are processed on the host machine; verify your host environment if confidentiality matters."})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(i,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Strict Mathematics"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Decodes are checked against ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"H c = s (mod 2)"}),". Scored with logical cosets and Wilson 95% CIs."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(k,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"App-Free Library"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Built on the official ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"qector-decoder-v3 1.0.x"})," Rust/PyO3 wheel. No desktop GUI required."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(C,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Multi-Agent System"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"28 domain skills and 5 tailored agent personas designed for research, hardware design, verification, and engineering."})]})]})}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"DOMAIN SKILLS ECOSYSTEM"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"28 Grounded QEC Skills"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Each skill encodes verified domain rules and strict-math obligations to reduce hallucination risk and ground interactions in reproducible physics. The seven flagship skills below are a subset of the 28 skills shipped in v1.0.6."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:O.map(s=>e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800/90 flex flex-col justify-between hover:border-cyan-500/30 transition-all",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsx("span",{className:"font-mono text-sm font-bold text-cyan-400",children:s.name}),e.jsx("span",{className:"text-[11px] font-mono px-2 py-0.5 rounded bg-slate-800 text-slate-300 border border-slate-700",children:s.role})]}),e.jsx("p",{className:"text-sm text-slate-300 leading-relaxed mb-4",children:s.desc})]}),e.jsx("div",{className:"pt-3 border-t border-slate-800/80 space-y-1.5",children:s.keyFeatures.map(a=>e.jsxs("div",{className:"flex items-center gap-2 text-xs text-slate-400",children:[e.jsx(q,{className:"w-3.5 h-3.5 text-cyan-400 shrink-0"}),e.jsx("span",{children:a})]},a))})]},s.name))}),e.jsxs("div",{className:"mt-10",children:[e.jsx("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:"All 28 skills shipped in the plugin"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:T.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-cyan-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(S,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"AGENT ROLES & PERSONAS"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"5 Specialized QEC Agents"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Custom agent definitions for Claude Code configured with tailored instructions, prompt templates, and tool access boundaries."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:R.map(s=>e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2 font-mono text-xs text-cyan-400",children:[e.jsx(o,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:s.file})]}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-2",children:s.title}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:s.desc})]})},s.file))})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(E,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"MCP SERVER TOOL SURFACE"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Four Local MCP Servers"}),e.jsxs("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:["The v1.0.6 release separates local JSON-RPC 2.0 stdio capabilities by risk and purpose:",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-library "})," (8 stable tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-research "})," (29 provisional tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-admin "})," (3 explicitly enabled tools), and",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-desktop-mcp "})," (the safe Desktop profile)."]})]}),e.jsx("div",{className:"card-surface rounded-2xl border border-slate-800 overflow-hidden shadow-xl",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm",children:[e.jsx("thead",{className:"bg-slate-900/90 text-xs font-mono text-cyan-400 uppercase tracking-wider border-b border-slate-800",children:e.jsxs("tr",{children:[e.jsx("th",{className:"px-6 py-4",children:"Tool Name"}),e.jsx("th",{className:"px-6 py-4",children:"Functionality & Mathematical Invariant"})]})}),e.jsx("tbody",{className:"divide-y divide-slate-800/60 font-mono text-xs text-slate-300",children:D.map(s=>e.jsxs("tr",{className:"hover:bg-slate-900/40 transition-colors",children:[e.jsx("td",{className:"px-6 py-4 font-semibold text-cyan-300 whitespace-nowrap",children:s.name}),e.jsx("td",{className:"px-6 py-4 font-sans text-sm text-slate-400",children:s.desc})]},s.name))})]})})}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-research server · ",d.length," provisional tools"]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:d.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-slate-300",children:s},s))})]}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-admin server · ",m.length," privileged tools"]}),e.jsxs("p",{className:"text-xs text-slate-400 mb-3",children:["Disabled by default. Requires ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"QECTOR_ADMIN_ENABLED=1"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"confirm=true"})," for every administrative call."]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:m.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-gold-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Installation & Setup"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2",children:"Configure QECTOR Claude Plugin v1.0.6 for Claude Code or Claude Desktop in seconds."})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"1"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Claude Code Marketplace"})]}),e.jsx("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:"Install directly via Claude Code marketplace registration:"}),e.jsx(t,{code:`# 1. Add marketplace repository -claude plugin marketplace add GuillaumeLessard/qector-claude-plugin - -# 2. Install plugin -claude plugin install qector@qector-tools`,language:"bash"})]})}),e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"2"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Local Plugin Directory"})]}),e.jsxs("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:["Clone the source repository and launch with the ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"--plugin-dir"})," flag:"]}),e.jsx(t,{code:`git clone https://github.com/GuillaumeLessard/qector-claude-plugin.git -cd qector-claude-plugin -pip install -r requirements.txt -claude --plugin-dir .`,language:"bash"})]})})]}),e.jsxs("div",{className:"mt-8 card-surface p-6 rounded-2xl border border-slate-800",children:[e.jsxs("h3",{className:"text-lg font-bold text-slate-100 mb-2 flex items-center gap-2",children:[e.jsx(i,{className:"w-5 h-5 text-cyan-400"}),e.jsx("span",{children:"Mathematical Validation Gate"})]}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed mb-4",children:"Verify all 16 Reference Manual theorems and 29 executable proof obligations locally on your machine:"}),e.jsx(t,{code:`# Run the complete public reference manual mathematical gate -python scripts/run_manual_math_validation.py - -# Or run full pytest integration suite -python -m pytest tests/test_reference_manual_math.py -v`,language:"bash"})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6 mb-12",children:e.jsx("div",{className:"card-surface p-8 border border-cyan-900/50 relative overflow-hidden bg-gradient-to-br from-slate-950 via-surface/60 to-slate-950",children:e.jsxs("div",{className:"relative z-10 flex flex-col md:flex-row items-center justify-between gap-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-2xl font-extrabold text-slate-100 mb-2",children:"Download Distribution Packages"}),e.jsx("p",{className:"text-sm text-slate-400 max-w-xl leading-relaxed",children:"Pre-packaged standalone ZIP archives formatted specifically for the Claude.ai custom-skill uploader (forward-slash path normalized) and Claude Code multi-skill plugin distributions."})]}),e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin/releases/tag/v1.0.6",target:"_blank",rel:"noopener noreferrer",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2 shadow-lg shadow-cyan-400/20",children:[e.jsx(L,{className:"w-4 h-4"}),e.jsx("span",{children:"v1.0.6 Release & Checksums"})]}),e.jsxs(c,{to:"/docs",className:"px-5 py-2.5 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2",children:[e.jsx(P,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{children:"Docs Hub"})]})]})]})})})]})}export{B as default}; diff --git a/assets/ClaudePlugin-CrITqdfl.js b/assets/ClaudePlugin-CrITqdfl.js deleted file mode 100644 index f0c41545..00000000 --- a/assets/ClaudePlugin-CrITqdfl.js +++ /dev/null @@ -1,13 +0,0 @@ -import{r as h,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,J as f,C as t}from"./index-CqAA-ZXu.js";import{N as g}from"./NeuralReveal-BflyZYSb.js";import{C as n}from"./releases-DiQz_IDu.js";import{S as b,T as o,c as y,d as j,E as v,f as N,L as w,a as i,g as k,W as C,h as _,i as q,A as S,j as E,D as L,B as P}from"./vendor-ui-B0ssGG4c.js";import{L as c}from"./vendor-PiU4YGcH.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const O=[{name:"qector-core",role:"Core Ground Truth",desc:"Verified platform facts, 8 library MCP tools, 5 stable decoders, and strict API grounding to prevent hallucination.",keyFeatures:["Grounds tool names & signatures","Enforces strict math boundary","Local verification"]},{name:"qector-math-foundations",role:"Mathematical Axioms",desc:"Theorems 1-16 executable obligations over GF(2), syndrome equivalence H c = s (mod 2), Wilson 95% CIs, and coset scoring.",keyFeatures:["Theorem 1 fail-closed verification","Theorem 2 logical coset scoring","Wilson score intervals"]},{name:"qector-developer",role:"SDK & Engineering",desc:"Integration guidance for qector-decoder-v3 Python SDK, parity-check matrix generation, Sinter/Stim adapters, and CI/CD testing.",keyFeatures:["Python SDK best practices","Matrix construction helpers","Local test automation"]},{name:"qector-researcher",role:"Quantum Information Science",desc:"Threshold discovery workflows, noise modeling, Monte Carlo error simulations, and academic paper reproduction.",keyFeatures:["Code-capacity sweeps","Noise model parameterization","Reproducible artifact export"]},{name:"qector-hardware-engineer",role:"Experimental & Cryogenic",desc:"Hardware constraint modeling, heavy-hex/surface graph mapping, physical error rate profiling, and latency budgets.",keyFeatures:["Physical qubit layout mapping","Hardware latency analysis","Cryogenic error budgets"]},{name:"qector-educator",role:"Pedagogy & Concepts",desc:"Interactive tutorial creation, mathematical explanations of syndrome decoding, MWPM matching, and BP-OSD.",keyFeatures:["Step-by-step decoding explanations","Interactive code walkthroughs","Visual homology concepts"]},{name:"qector-sysadmin",role:"Operations & Hygiene",desc:"Environment diagnostics, resource limits (MAX_CHECKS, MAX_QUBITS), safe file I/O, and deployment validation.",keyFeatures:["15-point runtime health check","DoS & memory limit guards","Platform compatibility audit"]}],T=["qector-architecture","qector-batch-decoding","qector-bp-osd","qector-codes-builder","qector-core","qector-decoders-deep-dive","qector-dem-pipeline","qector-deployment","qector-developer","qector-educator","qector-glossary","qector-hardware-engineer","qector-ler-methodology","qector-licensing","qector-math-foundations","qector-orchestration","qector-pymatching-compat","qector-release-engineering","qector-reproducibility","qector-researcher","qector-roadmap","qector-services","qector-sinter","qector-space-time","qector-sysadmin","qector-testing-strategy","qector-two-stage-css","qector-workbench"],R=[{file:"qec-developer.md",title:"QEC Software Engineer",desc:"Specialized in Python SDK integration, decoder benchmarking, matrix generation, and production deployment."},{file:"qec-researcher.md",title:"QEC Research Scientist",desc:"Specialized in academic literature review, threshold sweeps, Wilson confidence intervals, and Monte Carlo studies."},{file:"qec-validator.md",title:"Mathematical Proof Validator",desc:"Specialized in formal theorem checking, finite matrix verification, syndrome faithfulness, and local-only enforcement."},{file:"qec-sysadmin.md",title:"Systems & Runtime Engineer",desc:"Specialized in Python environment health, MCP server stdio management, resource bounds, and packaging."},{file:"qec-hardware-engineer.md",title:"Quantum Hardware Architect",desc:"Specialized in superconducting qubit topologies, heavy-hex grids, cryogenic latency constraints, and noise budgets."}],D=[{name:"list_code_families",desc:"Lists available code families (Rotated Surface, Toric, Ring, Repetition, Color, Heavy-Hex, Hypergraph Product)."},{name:"list_decoders",desc:"Lists the five stable decoder classes: UnionFind, FastUnionFind, Blossom (MWPM), SparseBlossom, NativeAuto."},{name:"get_license_info",desc:"Reads live offline licensing tier and feature flags from the installed qector-decoder-v3 package."},{name:"decode_syndrome",desc:"Decodes a binary syndrome with mandatory Theorem 1 fail-closed verification: H c = s (mod 2)."},{name:"decode_single",desc:"Executes a single-shot decode with logical-coset scoring (Theorem 2) against logical observables."},{name:"threshold_sweep",desc:"Runs device-local code-capacity sweeps with Wilson 95% confidence intervals and SHA-256 sealed artifacts."},{name:"build_code_from_matrix",desc:"Validates and compiles an arbitrary binary parity-check matrix with rank and observable analysis."},{name:"compat_report",desc:"Audits runtime health, wheel version, NumPy compatibility, and provisional feature boundaries."}],d=["artifacts_sha256","artifact_metadata_check","code_distance_check","code_export_matrices","code_family_info","code_logicals_inspect","compat_report","decode_faithfulness_check","dem_collapse_parallel","dem_inspect","env_block","glossary_lookup","hardware_probe","hot_path_microbench","license_active_check","logical_coset_score","pymatching_compat_check","qiskit_plugin_check","reproduction_command_lookup","sinter_decoder_list","sinter_task_template","stim_circuit_probe","theorem_lookup","wilson_ci","wilson_table","workload_hash","get_capability_matrix","get_evidence_policy","get_runtime_provenance"],m=["system_setup","configure_claude_desktop","workbench_probe"];function B(){const[r,x]=h.useState(!1),p=(s,a)=>{navigator.clipboard.writeText(s),a(!0),setTimeout(()=>a(!1),2e3)},l=`claude plugin marketplace add GuillaumeLessard/qector-claude-plugin -claude plugin install qector@qector-tools`;return e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"QECTOR Claude Plugin · Quantum Error Correction for Claude Code",description:"Official QECTOR Claude Code and Claude Desktop plugin v1.0.6. 28 skills, 5 agents, four MCP servers, and qector-decoder-v3 1.0.0 with local stdio-based decoding."}),e.jsx(f,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Claude Plugin",description:"Official QECTOR plugin v1.0.6 for Claude Code and Claude Desktop. 28 skills, 5 agents, four MCP servers, 8 stable library tools, 29 opt-in research tools, and 3 opt-in admin tools.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",softwareVersion:"1.0.6",author:{"@type":"Person",name:"Guillaume Lessard",url:"https://orcid.org/0009-0000-3465-3753"},offers:{"@type":"Offer",price:"0",priceCurrency:"USD"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-400/5 via-surface/40 to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/4 left-1/2 -translate-x-1/2 -translate-y-1/2 w-96 h-96 bg-cyan-400/10 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-4 sm:px-6 relative z-10 text-center",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3.5 py-1.5 rounded-full bg-cyan-950/60 border border-cyan-800/60 text-cyan-300 text-xs font-mono font-medium mb-6 backdrop-blur-sm",children:[e.jsx(b,{className:"w-3.5 h-3.5 text-cyan-400"}),e.jsxs("span",{children:["ANTHROPIC CLAUDE CODE & DESKTOP PLUGIN · v",n.version," · published ",n.releaseDate]})]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-extrabold tracking-tight text-slate-100 mb-6 max-w-4xl mx-auto leading-[1.1]",children:e.jsx(g,{text:"QECTOR Claude Plugin"})}),e.jsxs("p",{className:"text-lg md:text-xl text-slate-300 max-w-3xl mx-auto leading-relaxed mb-8",children:["Empower Claude with local Quantum Error Correction engineering. Release v1.0.6 adds marketplace compliance hardening and environment-agnostic setup. It includes"," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"28 domain skills"}),","," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"5 specialized agents"}),","," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"8 stable library tools"}),", 29 opt-in research tools, and 3 opt-in admin tools across four MCP servers. The default configuration uses local stdio transport."]}),e.jsxs("div",{className:"max-w-2xl mx-auto bg-slate-950/90 border border-cyan-900/60 rounded-2xl p-5 mb-10 shadow-2xl backdrop-blur-md text-left",children:[e.jsxs("div",{className:"flex items-center justify-between pb-3 mb-3 border-b border-slate-800/80",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(o,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{className:"text-xs font-mono font-semibold uppercase tracking-wider text-slate-400",children:"Instant Marketplace Install"})]}),e.jsxs("button",{onClick:()=>p(l,x),className:"flex items-center gap-1.5 text-xs font-mono text-cyan-400 hover:text-cyan-300 transition-colors px-2.5 py-1 rounded bg-cyan-950/50 border border-cyan-800/40",children:[r?e.jsx(y,{className:"w-3.5 h-3.5 text-green-400"}):e.jsx(j,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:r?"Copied":"Copy"})]})]}),e.jsx("pre",{className:"font-mono text-sm text-cyan-300 overflow-x-auto whitespace-pre leading-relaxed",children:l})]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin",target:"_blank",rel:"noopener noreferrer",className:"px-6 py-3 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-sm transition-all shadow-lg shadow-cyan-400/20 inline-flex items-center gap-2",children:[e.jsx("span",{children:"GitHub Repository"}),e.jsx(v,{className:"w-4 h-4"})]}),e.jsxs(c,{to:"/mcp-server",className:"px-6 py-3 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-sm transition-all inline-flex items-center gap-2",children:[e.jsx("span",{children:"MCP Server Reference"}),e.jsx(N,{className:"w-4 h-4 text-cyan-400"})]})]}),e.jsx("p",{className:"text-xs text-slate-400 mt-6",children:"Independent plugin by iD01t Productions. Not affiliated with or endorsed by Anthropic."})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(w,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Local-First Security"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"Local stdio transport by default. Parity matrices, syndromes, quantum circuits, and simulation artifacts are processed on the host machine; verify your host environment if confidentiality matters."})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(i,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Strict Mathematics"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Decodes are checked against ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"H c = s (mod 2)"}),". Scored with logical cosets and Wilson 95% CIs."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(k,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"App-Free Library"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Built on the official ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"qector-decoder-v3 1.0.x"})," Rust/PyO3 wheel. No desktop GUI required."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(C,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Multi-Agent System"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"28 domain skills and 5 tailored agent personas designed for research, hardware design, verification, and engineering."})]})]})}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"DOMAIN SKILLS ECOSYSTEM"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"28 Grounded QEC Skills"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Each skill encodes verified domain rules and strict-math obligations to reduce hallucination risk and ground interactions in reproducible physics. The seven flagship skills below are a subset of the 28 skills shipped in v1.0.6."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:O.map(s=>e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800/90 flex flex-col justify-between hover:border-cyan-500/30 transition-all",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsx("span",{className:"font-mono text-sm font-bold text-cyan-400",children:s.name}),e.jsx("span",{className:"text-[11px] font-mono px-2 py-0.5 rounded bg-slate-800 text-slate-300 border border-slate-700",children:s.role})]}),e.jsx("p",{className:"text-sm text-slate-300 leading-relaxed mb-4",children:s.desc})]}),e.jsx("div",{className:"pt-3 border-t border-slate-800/80 space-y-1.5",children:s.keyFeatures.map(a=>e.jsxs("div",{className:"flex items-center gap-2 text-xs text-slate-400",children:[e.jsx(q,{className:"w-3.5 h-3.5 text-cyan-400 shrink-0"}),e.jsx("span",{children:a})]},a))})]},s.name))}),e.jsxs("div",{className:"mt-10",children:[e.jsx("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:"All 28 skills shipped in the plugin"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:T.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-cyan-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(S,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"AGENT ROLES & PERSONAS"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"5 Specialized QEC Agents"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Custom agent definitions for Claude Code configured with tailored instructions, prompt templates, and tool access boundaries."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:R.map(s=>e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2 font-mono text-xs text-cyan-400",children:[e.jsx(o,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:s.file})]}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-2",children:s.title}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:s.desc})]})},s.file))})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(E,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"MCP SERVER TOOL SURFACE"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Four Local MCP Servers"}),e.jsxs("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:["The v1.0.6 release separates local JSON-RPC 2.0 stdio capabilities by risk and purpose:",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-library "})," (8 stable tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-research "})," (29 provisional tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-admin "})," (3 explicitly enabled tools), and",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-desktop-mcp "})," (the safe Desktop profile)."]})]}),e.jsx("div",{className:"card-surface rounded-2xl border border-slate-800 overflow-hidden shadow-xl",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm",children:[e.jsx("thead",{className:"bg-slate-900/90 text-xs font-mono text-cyan-400 uppercase tracking-wider border-b border-slate-800",children:e.jsxs("tr",{children:[e.jsx("th",{className:"px-6 py-4",children:"Tool Name"}),e.jsx("th",{className:"px-6 py-4",children:"Functionality & Mathematical Invariant"})]})}),e.jsx("tbody",{className:"divide-y divide-slate-800/60 font-mono text-xs text-slate-300",children:D.map(s=>e.jsxs("tr",{className:"hover:bg-slate-900/40 transition-colors",children:[e.jsx("td",{className:"px-6 py-4 font-semibold text-cyan-300 whitespace-nowrap",children:s.name}),e.jsx("td",{className:"px-6 py-4 font-sans text-sm text-slate-400",children:s.desc})]},s.name))})]})})}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-research server · ",d.length," provisional tools"]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:d.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-slate-300",children:s},s))})]}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-admin server · ",m.length," privileged tools"]}),e.jsxs("p",{className:"text-xs text-slate-400 mb-3",children:["Disabled by default. Requires ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"QECTOR_ADMIN_ENABLED=1"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"confirm=true"})," for every administrative call."]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:m.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-gold-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Installation & Setup"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2",children:"Configure QECTOR Claude Plugin v1.0.6 for Claude Code or Claude Desktop in seconds."})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"1"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Claude Code Marketplace"})]}),e.jsx("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:"Install directly via Claude Code marketplace registration:"}),e.jsx(t,{code:`# 1. Add marketplace repository -claude plugin marketplace add GuillaumeLessard/qector-claude-plugin - -# 2. Install plugin -claude plugin install qector@qector-tools`,language:"bash"})]})}),e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"2"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Local Plugin Directory"})]}),e.jsxs("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:["Clone the source repository and launch with the ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"--plugin-dir"})," flag:"]}),e.jsx(t,{code:`git clone https://github.com/GuillaumeLessard/qector-claude-plugin.git -cd qector-claude-plugin -pip install -r requirements.txt -claude --plugin-dir .`,language:"bash"})]})})]}),e.jsxs("div",{className:"mt-8 card-surface p-6 rounded-2xl border border-slate-800",children:[e.jsxs("h3",{className:"text-lg font-bold text-slate-100 mb-2 flex items-center gap-2",children:[e.jsx(i,{className:"w-5 h-5 text-cyan-400"}),e.jsx("span",{children:"Mathematical Validation Gate"})]}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed mb-4",children:"Verify all 16 Reference Manual theorems and 29 executable proof obligations locally on your machine:"}),e.jsx(t,{code:`# Run the complete public reference manual mathematical gate -python scripts/run_manual_math_validation.py - -# Or run full pytest integration suite -python -m pytest tests/test_reference_manual_math.py -v`,language:"bash"})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6 mb-12",children:e.jsx("div",{className:"card-surface p-8 border border-cyan-900/50 relative overflow-hidden bg-gradient-to-br from-slate-950 via-surface/60 to-slate-950",children:e.jsxs("div",{className:"relative z-10 flex flex-col md:flex-row items-center justify-between gap-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-2xl font-extrabold text-slate-100 mb-2",children:"Download Distribution Packages"}),e.jsx("p",{className:"text-sm text-slate-400 max-w-xl leading-relaxed",children:"Pre-packaged standalone ZIP archives formatted specifically for the Claude.ai custom-skill uploader (forward-slash path normalized) and Claude Code multi-skill plugin distributions."})]}),e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin/releases/tag/v1.0.6",target:"_blank",rel:"noopener noreferrer",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2 shadow-lg shadow-cyan-400/20",children:[e.jsx(L,{className:"w-4 h-4"}),e.jsx("span",{children:"v1.0.6 Release & Checksums"})]}),e.jsxs(c,{to:"/docs",className:"px-5 py-2.5 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2",children:[e.jsx(P,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{children:"Docs Hub"})]})]})]})})})]})}export{B as default}; diff --git a/assets/ClaudePlugin-D2YUaHWD.js b/assets/ClaudePlugin-D2YUaHWD.js deleted file mode 100644 index dc8654e2..00000000 --- a/assets/ClaudePlugin-D2YUaHWD.js +++ /dev/null @@ -1,13 +0,0 @@ -import{r as h,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,J as f,C as t}from"./index-DRAXObZB.js";import{N as g}from"./NeuralReveal-BflyZYSb.js";import{C as n}from"./releases-DiQz_IDu.js";import{S as b,T as o,c as y,d as j,E as v,f as N,L as w,a as i,g as k,W as C,h as _,i as q,A as S,j as E,D as L,B as P}from"./vendor-ui-B0ssGG4c.js";import{L as c}from"./vendor-PiU4YGcH.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const O=[{name:"qector-core",role:"Core Ground Truth",desc:"Verified platform facts, 8 library MCP tools, 5 stable decoders, and strict API grounding to prevent hallucination.",keyFeatures:["Grounds tool names & signatures","Enforces strict math boundary","Local verification"]},{name:"qector-math-foundations",role:"Mathematical Axioms",desc:"Theorems 1-16 executable obligations over GF(2), syndrome equivalence H c = s (mod 2), Wilson 95% CIs, and coset scoring.",keyFeatures:["Theorem 1 fail-closed verification","Theorem 2 logical coset scoring","Wilson score intervals"]},{name:"qector-developer",role:"SDK & Engineering",desc:"Integration guidance for qector-decoder-v3 Python SDK, parity-check matrix generation, Sinter/Stim adapters, and CI/CD testing.",keyFeatures:["Python SDK best practices","Matrix construction helpers","Local test automation"]},{name:"qector-researcher",role:"Quantum Information Science",desc:"Threshold discovery workflows, noise modeling, Monte Carlo error simulations, and academic paper reproduction.",keyFeatures:["Code-capacity sweeps","Noise model parameterization","Reproducible artifact export"]},{name:"qector-hardware-engineer",role:"Experimental & Cryogenic",desc:"Hardware constraint modeling, heavy-hex/surface graph mapping, physical error rate profiling, and latency budgets.",keyFeatures:["Physical qubit layout mapping","Hardware latency analysis","Cryogenic error budgets"]},{name:"qector-educator",role:"Pedagogy & Concepts",desc:"Interactive tutorial creation, mathematical explanations of syndrome decoding, MWPM matching, and BP-OSD.",keyFeatures:["Step-by-step decoding explanations","Interactive code walkthroughs","Visual homology concepts"]},{name:"qector-sysadmin",role:"Operations & Hygiene",desc:"Environment diagnostics, resource limits (MAX_CHECKS, MAX_QUBITS), safe file I/O, and deployment validation.",keyFeatures:["15-point runtime health check","DoS & memory limit guards","Platform compatibility audit"]}],T=["qector-architecture","qector-batch-decoding","qector-bp-osd","qector-codes-builder","qector-core","qector-decoders-deep-dive","qector-dem-pipeline","qector-deployment","qector-developer","qector-educator","qector-glossary","qector-hardware-engineer","qector-ler-methodology","qector-licensing","qector-math-foundations","qector-orchestration","qector-pymatching-compat","qector-release-engineering","qector-reproducibility","qector-researcher","qector-roadmap","qector-services","qector-sinter","qector-space-time","qector-sysadmin","qector-testing-strategy","qector-two-stage-css","qector-workbench"],R=[{file:"qec-developer.md",title:"QEC Software Engineer",desc:"Specialized in Python SDK integration, decoder benchmarking, matrix generation, and production deployment."},{file:"qec-researcher.md",title:"QEC Research Scientist",desc:"Specialized in academic literature review, threshold sweeps, Wilson confidence intervals, and Monte Carlo studies."},{file:"qec-validator.md",title:"Mathematical Proof Validator",desc:"Specialized in formal theorem checking, finite matrix verification, syndrome faithfulness, and local-only enforcement."},{file:"qec-sysadmin.md",title:"Systems & Runtime Engineer",desc:"Specialized in Python environment health, MCP server stdio management, resource bounds, and packaging."},{file:"qec-hardware-engineer.md",title:"Quantum Hardware Architect",desc:"Specialized in superconducting qubit topologies, heavy-hex grids, cryogenic latency constraints, and noise budgets."}],D=[{name:"list_code_families",desc:"Lists available code families (Rotated Surface, Toric, Ring, Repetition, Color, Heavy-Hex, Hypergraph Product)."},{name:"list_decoders",desc:"Lists the five stable decoder classes: UnionFind, FastUnionFind, Blossom (MWPM), SparseBlossom, NativeAuto."},{name:"get_license_info",desc:"Reads live offline licensing tier and feature flags from the installed qector-decoder-v3 package."},{name:"decode_syndrome",desc:"Decodes a binary syndrome with mandatory Theorem 1 fail-closed verification: H c = s (mod 2)."},{name:"decode_single",desc:"Executes a single-shot decode with logical-coset scoring (Theorem 2) against logical observables."},{name:"threshold_sweep",desc:"Runs device-local code-capacity sweeps with Wilson 95% confidence intervals and SHA-256 sealed artifacts."},{name:"build_code_from_matrix",desc:"Validates and compiles an arbitrary binary parity-check matrix with rank and observable analysis."},{name:"compat_report",desc:"Audits runtime health, wheel version, NumPy compatibility, and provisional feature boundaries."}],d=["artifacts_sha256","artifact_metadata_check","code_distance_check","code_export_matrices","code_family_info","code_logicals_inspect","compat_report","decode_faithfulness_check","dem_collapse_parallel","dem_inspect","env_block","glossary_lookup","hardware_probe","hot_path_microbench","license_active_check","logical_coset_score","pymatching_compat_check","qiskit_plugin_check","reproduction_command_lookup","sinter_decoder_list","sinter_task_template","stim_circuit_probe","theorem_lookup","wilson_ci","wilson_table","workload_hash","get_capability_matrix","get_evidence_policy","get_runtime_provenance"],m=["system_setup","configure_claude_desktop","workbench_probe"];function B(){const[r,x]=h.useState(!1),p=(s,a)=>{navigator.clipboard.writeText(s),a(!0),setTimeout(()=>a(!1),2e3)},l=`claude plugin marketplace add GuillaumeLessard/qector-claude-plugin -claude plugin install qector@qector-tools`;return e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"QECTOR Claude Plugin · Quantum Error Correction for Claude Code",description:"Official QECTOR Claude Code and Claude Desktop plugin v1.0.6. 28 skills, 5 agents, four MCP servers, and qector-decoder-v3 1.0.0 with local stdio-based decoding."}),e.jsx(f,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Claude Plugin",description:"Official QECTOR plugin v1.0.6 for Claude Code and Claude Desktop. 28 skills, 5 agents, four MCP servers, 8 stable library tools, 29 opt-in research tools, and 3 opt-in admin tools.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",softwareVersion:"1.0.6",author:{"@type":"Person",name:"Guillaume Lessard",url:"https://orcid.org/0009-0000-3465-3753"},offers:{"@type":"Offer",price:"0",priceCurrency:"USD"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-400/5 via-surface/40 to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/4 left-1/2 -translate-x-1/2 -translate-y-1/2 w-96 h-96 bg-cyan-400/10 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-4 sm:px-6 relative z-10 text-center",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3.5 py-1.5 rounded-full bg-cyan-950/60 border border-cyan-800/60 text-cyan-300 text-xs font-mono font-medium mb-6 backdrop-blur-sm",children:[e.jsx(b,{className:"w-3.5 h-3.5 text-cyan-400"}),e.jsxs("span",{children:["ANTHROPIC CLAUDE CODE & DESKTOP PLUGIN · v",n.version," · published ",n.releaseDate]})]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-extrabold tracking-tight text-slate-100 mb-6 max-w-4xl mx-auto leading-[1.1]",children:e.jsx(g,{text:"QECTOR Claude Plugin"})}),e.jsxs("p",{className:"text-lg md:text-xl text-slate-300 max-w-3xl mx-auto leading-relaxed mb-8",children:["Empower Claude with local Quantum Error Correction engineering. Release v1.0.6 adds marketplace compliance hardening and environment-agnostic setup. It includes"," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"28 domain skills"}),","," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"5 specialized agents"}),","," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"8 stable library tools"}),", 29 opt-in research tools, and 3 opt-in admin tools across four MCP servers. The default configuration uses local stdio transport."]}),e.jsxs("div",{className:"max-w-2xl mx-auto bg-slate-950/90 border border-cyan-900/60 rounded-2xl p-5 mb-10 shadow-2xl backdrop-blur-md text-left",children:[e.jsxs("div",{className:"flex items-center justify-between pb-3 mb-3 border-b border-slate-800/80",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(o,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{className:"text-xs font-mono font-semibold uppercase tracking-wider text-slate-400",children:"Instant Marketplace Install"})]}),e.jsxs("button",{onClick:()=>p(l,x),className:"flex items-center gap-1.5 text-xs font-mono text-cyan-400 hover:text-cyan-300 transition-colors px-2.5 py-1 rounded bg-cyan-950/50 border border-cyan-800/40",children:[r?e.jsx(y,{className:"w-3.5 h-3.5 text-green-400"}):e.jsx(j,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:r?"Copied":"Copy"})]})]}),e.jsx("pre",{className:"font-mono text-sm text-cyan-300 overflow-x-auto whitespace-pre leading-relaxed",children:l})]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin",target:"_blank",rel:"noopener noreferrer",className:"px-6 py-3 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-sm transition-all shadow-lg shadow-cyan-400/20 inline-flex items-center gap-2",children:[e.jsx("span",{children:"GitHub Repository"}),e.jsx(v,{className:"w-4 h-4"})]}),e.jsxs(c,{to:"/mcp-server",className:"px-6 py-3 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-sm transition-all inline-flex items-center gap-2",children:[e.jsx("span",{children:"MCP Server Reference"}),e.jsx(N,{className:"w-4 h-4 text-cyan-400"})]})]}),e.jsx("p",{className:"text-xs text-slate-400 mt-6",children:"Independent plugin by iD01t Productions. Not affiliated with or endorsed by Anthropic."})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(w,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Local-First Security"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"Local stdio transport by default. Parity matrices, syndromes, quantum circuits, and simulation artifacts are processed on the host machine; verify your host environment if confidentiality matters."})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(i,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Strict Mathematics"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Decodes are checked against ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"H c = s (mod 2)"}),". Scored with logical cosets and Wilson 95% CIs."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(k,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"App-Free Library"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Built on the official ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"qector-decoder-v3 1.0.x"})," Rust/PyO3 wheel. No desktop GUI required."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(C,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Multi-Agent System"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"28 domain skills and 5 tailored agent personas designed for research, hardware design, verification, and engineering."})]})]})}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"DOMAIN SKILLS ECOSYSTEM"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"28 Grounded QEC Skills"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Each skill encodes verified domain rules and strict-math obligations to reduce hallucination risk and ground interactions in reproducible physics. The seven flagship skills below are a subset of the 28 skills shipped in v1.0.6."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:O.map(s=>e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800/90 flex flex-col justify-between hover:border-cyan-500/30 transition-all",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsx("span",{className:"font-mono text-sm font-bold text-cyan-400",children:s.name}),e.jsx("span",{className:"text-[11px] font-mono px-2 py-0.5 rounded bg-slate-800 text-slate-300 border border-slate-700",children:s.role})]}),e.jsx("p",{className:"text-sm text-slate-300 leading-relaxed mb-4",children:s.desc})]}),e.jsx("div",{className:"pt-3 border-t border-slate-800/80 space-y-1.5",children:s.keyFeatures.map(a=>e.jsxs("div",{className:"flex items-center gap-2 text-xs text-slate-400",children:[e.jsx(q,{className:"w-3.5 h-3.5 text-cyan-400 shrink-0"}),e.jsx("span",{children:a})]},a))})]},s.name))}),e.jsxs("div",{className:"mt-10",children:[e.jsx("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:"All 28 skills shipped in the plugin"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:T.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-cyan-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(S,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"AGENT ROLES & PERSONAS"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"5 Specialized QEC Agents"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Custom agent definitions for Claude Code configured with tailored instructions, prompt templates, and tool access boundaries."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:R.map(s=>e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2 font-mono text-xs text-cyan-400",children:[e.jsx(o,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:s.file})]}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-2",children:s.title}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:s.desc})]})},s.file))})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(E,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"MCP SERVER TOOL SURFACE"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Four Local MCP Servers"}),e.jsxs("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:["The v1.0.6 release separates local JSON-RPC 2.0 stdio capabilities by risk and purpose:",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-library "})," (8 stable tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-research "})," (29 provisional tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-admin "})," (3 explicitly enabled tools), and",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-desktop-mcp "})," (the safe Desktop profile)."]})]}),e.jsx("div",{className:"card-surface rounded-2xl border border-slate-800 overflow-hidden shadow-xl",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm",children:[e.jsx("thead",{className:"bg-slate-900/90 text-xs font-mono text-cyan-400 uppercase tracking-wider border-b border-slate-800",children:e.jsxs("tr",{children:[e.jsx("th",{className:"px-6 py-4",children:"Tool Name"}),e.jsx("th",{className:"px-6 py-4",children:"Functionality & Mathematical Invariant"})]})}),e.jsx("tbody",{className:"divide-y divide-slate-800/60 font-mono text-xs text-slate-300",children:D.map(s=>e.jsxs("tr",{className:"hover:bg-slate-900/40 transition-colors",children:[e.jsx("td",{className:"px-6 py-4 font-semibold text-cyan-300 whitespace-nowrap",children:s.name}),e.jsx("td",{className:"px-6 py-4 font-sans text-sm text-slate-400",children:s.desc})]},s.name))})]})})}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-research server · ",d.length," provisional tools"]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:d.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-slate-300",children:s},s))})]}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-admin server · ",m.length," privileged tools"]}),e.jsxs("p",{className:"text-xs text-slate-400 mb-3",children:["Disabled by default. Requires ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"QECTOR_ADMIN_ENABLED=1"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"confirm=true"})," for every administrative call."]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:m.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-gold-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Installation & Setup"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2",children:"Configure QECTOR Claude Plugin v1.0.6 for Claude Code or Claude Desktop in seconds."})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"1"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Claude Code Marketplace"})]}),e.jsx("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:"Install directly via Claude Code marketplace registration:"}),e.jsx(t,{code:`# 1. Add marketplace repository -claude plugin marketplace add GuillaumeLessard/qector-claude-plugin - -# 2. Install plugin -claude plugin install qector@qector-tools`,language:"bash"})]})}),e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"2"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Local Plugin Directory"})]}),e.jsxs("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:["Clone the source repository and launch with the ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"--plugin-dir"})," flag:"]}),e.jsx(t,{code:`git clone https://github.com/GuillaumeLessard/qector-claude-plugin.git -cd qector-claude-plugin -pip install -r requirements.txt -claude --plugin-dir .`,language:"bash"})]})})]}),e.jsxs("div",{className:"mt-8 card-surface p-6 rounded-2xl border border-slate-800",children:[e.jsxs("h3",{className:"text-lg font-bold text-slate-100 mb-2 flex items-center gap-2",children:[e.jsx(i,{className:"w-5 h-5 text-cyan-400"}),e.jsx("span",{children:"Mathematical Validation Gate"})]}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed mb-4",children:"Verify all 16 Reference Manual theorems and 29 executable proof obligations locally on your machine:"}),e.jsx(t,{code:`# Run the complete public reference manual mathematical gate -python scripts/run_manual_math_validation.py - -# Or run full pytest integration suite -python -m pytest tests/test_reference_manual_math.py -v`,language:"bash"})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6 mb-12",children:e.jsx("div",{className:"card-surface p-8 border border-cyan-900/50 relative overflow-hidden bg-gradient-to-br from-slate-950 via-surface/60 to-slate-950",children:e.jsxs("div",{className:"relative z-10 flex flex-col md:flex-row items-center justify-between gap-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-2xl font-extrabold text-slate-100 mb-2",children:"Download Distribution Packages"}),e.jsx("p",{className:"text-sm text-slate-400 max-w-xl leading-relaxed",children:"Pre-packaged standalone ZIP archives formatted specifically for the Claude.ai custom-skill uploader (forward-slash path normalized) and Claude Code multi-skill plugin distributions."})]}),e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin/releases/tag/v1.0.6",target:"_blank",rel:"noopener noreferrer",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2 shadow-lg shadow-cyan-400/20",children:[e.jsx(L,{className:"w-4 h-4"}),e.jsx("span",{children:"v1.0.6 Release & Checksums"})]}),e.jsxs(c,{to:"/docs",className:"px-5 py-2.5 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2",children:[e.jsx(P,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{children:"Docs Hub"})]})]})]})})})]})}export{B as default}; diff --git a/assets/ClaudePlugin-D4c0dp2L.js b/assets/ClaudePlugin-D4c0dp2L.js deleted file mode 100644 index bbfe66ca..00000000 --- a/assets/ClaudePlugin-D4c0dp2L.js +++ /dev/null @@ -1,13 +0,0 @@ -import{r as h,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,J as g,C as r}from"./index-Bh9DBCb3.js";import{N as f}from"./NeuralReveal-D-EQoOl2.js";import{C as t}from"./releases-1-HBloZv.js";import{S as b,T as i,c as y,d as j,E as v,f as N,L as w,a as o,g as k,W as C,h as _,i as q,A as S,j as E,D as L,B as P}from"./vendor-ui-B0ssGG4c.js";import{L as c}from"./vendor-PiU4YGcH.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const O=[{name:"qector-core",role:"Core Ground Truth",desc:"Verified platform facts, 8 library MCP tools, 5 stable decoders, and strict API grounding to prevent hallucination.",keyFeatures:["Grounds tool names & signatures","Enforces strict math boundary","Local verification"]},{name:"qector-math-foundations",role:"Mathematical Axioms",desc:"Theorems 1-16 executable obligations over GF(2), syndrome equivalence H c = s (mod 2), Wilson 95% CIs, and coset scoring.",keyFeatures:["Theorem 1 fail-closed verification","Theorem 2 logical coset scoring","Wilson score intervals"]},{name:"qector-developer",role:"SDK & Engineering",desc:"Integration guidance for qector-decoder-v3 Python SDK, parity-check matrix generation, Sinter/Stim adapters, and CI/CD testing.",keyFeatures:["Python SDK best practices","Matrix construction helpers","Local test automation"]},{name:"qector-researcher",role:"Quantum Information Science",desc:"Threshold discovery workflows, noise modeling, Monte Carlo error simulations, and academic paper reproduction.",keyFeatures:["Code-capacity sweeps","Noise model parameterization","Reproducible artifact export"]},{name:"qector-hardware-engineer",role:"Experimental & Cryogenic",desc:"Hardware constraint modeling, heavy-hex/surface graph mapping, physical error rate profiling, and latency budgets.",keyFeatures:["Physical qubit layout mapping","Hardware latency analysis","Cryogenic error budgets"]},{name:"qector-educator",role:"Pedagogy & Concepts",desc:"Interactive tutorial creation, mathematical explanations of syndrome decoding, MWPM matching, and BP-OSD.",keyFeatures:["Step-by-step decoding explanations","Interactive code walkthroughs","Visual homology concepts"]},{name:"qector-sysadmin",role:"Operations & Hygiene",desc:"Environment diagnostics, resource limits (MAX_CHECKS, MAX_QUBITS), safe file I/O, and deployment validation.",keyFeatures:["15-point runtime health check","DoS & memory limit guards","Platform compatibility audit"]}],T=["qector-architecture","qector-batch-decoding","qector-bp-osd","qector-codes-builder","qector-core","qector-decoders-deep-dive","qector-dem-pipeline","qector-deployment","qector-developer","qector-educator","qector-glossary","qector-hardware-engineer","qector-ler-methodology","qector-licensing","qector-math-foundations","qector-orchestration","qector-pymatching-compat","qector-release-engineering","qector-reproducibility","qector-researcher","qector-roadmap","qector-services","qector-sinter","qector-space-time","qector-sysadmin","qector-testing-strategy","qector-two-stage-css","qector-workbench"],A=[{file:"qec-developer.md",title:"QEC Software Engineer",desc:"Specialized in Python SDK integration, decoder benchmarking, matrix generation, and production deployment."},{file:"qec-researcher.md",title:"QEC Research Scientist",desc:"Specialized in academic literature review, threshold sweeps, Wilson confidence intervals, and Monte Carlo studies."},{file:"qec-validator.md",title:"Mathematical Proof Validator",desc:"Specialized in formal theorem checking, finite matrix verification, syndrome faithfulness, and local-only enforcement."},{file:"qec-sysadmin.md",title:"Systems & Runtime Engineer",desc:"Specialized in Python environment health, MCP server stdio management, resource bounds, and packaging."},{file:"qec-hardware-engineer.md",title:"Quantum Hardware Architect",desc:"Specialized in superconducting qubit topologies, heavy-hex grids, cryogenic latency constraints, and noise budgets."}],D=[{name:"list_code_families",desc:"Lists available code families (Rotated Surface, Toric, Ring, Repetition, Color, Heavy-Hex, Hypergraph Product)."},{name:"list_decoders",desc:"Lists the five stable decoder classes: UnionFind, FastUnionFind, Blossom (MWPM), SparseBlossom, NativeAuto."},{name:"get_license_info",desc:"Reads live offline licensing tier and feature flags from the installed qector-decoder-v3 package."},{name:"decode_syndrome",desc:"Decodes a binary syndrome with mandatory Theorem 1 fail-closed verification: H c = s (mod 2)."},{name:"decode_single",desc:"Executes a single-shot decode with logical-coset scoring (Theorem 2) against logical observables."},{name:"threshold_sweep",desc:"Runs device-local code-capacity sweeps with Wilson 95% confidence intervals and SHA-256 sealed artifacts."},{name:"build_code_from_matrix",desc:"Validates and compiles an arbitrary binary parity-check matrix with rank and observable analysis."},{name:"compat_report",desc:"Audits runtime health, wheel version, NumPy compatibility, and provisional feature boundaries."}],d=["artifacts_sha256","artifact_metadata_check","code_distance_check","code_export_matrices","code_family_info","code_logicals_inspect","compat_report","decode_faithfulness_check","dem_collapse_parallel","dem_inspect","env_block","glossary_lookup","hardware_probe","hot_path_microbench","license_active_check","logical_coset_score","pymatching_compat_check","qiskit_plugin_check","reproduction_command_lookup","sinter_decoder_list","sinter_task_template","stim_circuit_probe","theorem_lookup","wilson_ci","wilson_table","workload_hash","get_capability_matrix","get_evidence_policy","get_runtime_provenance"],m=["system_setup","configure_claude_desktop","workbench_probe"];function U(){const[l,x]=h.useState(!1),p=(s,a)=>{navigator.clipboard.writeText(s),a(!0),setTimeout(()=>a(!1),2e3)},n=`claude plugin marketplace add GuillaumeLessard/qector-claude-plugin -claude plugin install qector@qector-tools`;return e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"QECTOR Claude Plugin · Quantum Error Correction for Claude Code",description:"Official QECTOR Claude Code and Claude Desktop plugin v2.0.1: air-gapped qector-secure MCP server (12 schema-validated tools), 28 skills and 5 agents on qector-decoder-v3 1.0.1."}),e.jsx(g,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Claude Plugin",description:"Official QECTOR plugin v2.0.1 for Claude Code and Claude Desktop: air-gapped qector-secure MCP server with 12 schema-validated tools, 28 skills, 5 agents, 11 commands; 29 research and 3 admin tools are opt-in.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",softwareVersion:t.version,author:{"@type":"Person",name:"Guillaume Lessard",url:"https://orcid.org/0009-0000-3465-3753"},offers:{"@type":"Offer",price:"0",priceCurrency:"USD"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-400/5 via-surface/40 to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/4 left-1/2 -translate-x-1/2 -translate-y-1/2 w-96 h-96 bg-cyan-400/10 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-4 sm:px-6 relative z-10 text-center",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3.5 py-1.5 rounded-full bg-cyan-950/60 border border-cyan-800/60 text-cyan-300 text-xs font-mono font-medium mb-6 backdrop-blur-sm",children:[e.jsx(b,{className:"w-3.5 h-3.5 text-cyan-400"}),e.jsxs("span",{children:["ANTHROPIC CLAUDE CODE & DESKTOP PLUGIN · v",t.version," · published ",t.releaseDate]})]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-extrabold tracking-tight text-slate-100 mb-6 max-w-4xl mx-auto leading-[1.1]",children:e.jsx(f,{text:"QECTOR Claude Plugin"})}),e.jsxs("p",{className:"text-lg md:text-xl text-slate-300 max-w-3xl mx-auto leading-relaxed mb-8",children:["Empower Claude with local Quantum Error Correction engineering. Release v2.0.1 runs on qector-decoder-v3 1.0.1. The default"," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"qector-secure"})," server is air-gapped, integrity-checked and validates every request and response against JSON Schema (12 tools). It ships with"," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"28 domain skills"}),","," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"5 specialized agents"})," and 11 slash commands; 29 research tools and 3 admin tools are opt-in. Every dependency is pinned by SHA-256, and releases are signed."]}),e.jsxs("div",{className:"max-w-2xl mx-auto bg-slate-950/90 border border-cyan-900/60 rounded-2xl p-5 mb-10 shadow-2xl backdrop-blur-md text-left",children:[e.jsxs("div",{className:"flex items-center justify-between pb-3 mb-3 border-b border-slate-800/80",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(i,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{className:"text-xs font-mono font-semibold uppercase tracking-wider text-slate-400",children:"Instant Marketplace Install"})]}),e.jsxs("button",{onClick:()=>p(n,x),className:"flex items-center gap-1.5 text-xs font-mono text-cyan-400 hover:text-cyan-300 transition-colors px-2.5 py-1 rounded bg-cyan-950/50 border border-cyan-800/40",children:[l?e.jsx(y,{className:"w-3.5 h-3.5 text-green-400"}):e.jsx(j,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:l?"Copied":"Copy"})]})]}),e.jsx("pre",{className:"font-mono text-sm text-cyan-300 overflow-x-auto whitespace-pre leading-relaxed",children:n})]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin",target:"_blank",rel:"noopener noreferrer",className:"px-6 py-3 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-sm transition-all shadow-lg shadow-cyan-400/20 inline-flex items-center gap-2",children:[e.jsx("span",{children:"GitHub Repository"}),e.jsx(v,{className:"w-4 h-4"})]}),e.jsxs(c,{to:"/mcp-server",className:"px-6 py-3 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-sm transition-all inline-flex items-center gap-2",children:[e.jsx("span",{children:"MCP Server Reference"}),e.jsx(N,{className:"w-4 h-4 text-cyan-400"})]})]}),e.jsx("p",{className:"text-xs text-slate-400 mt-6",children:"Independent plugin by iD01t Productions. Not affiliated with or endorsed by Anthropic."})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(w,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Local-First Security"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"Local stdio transport by default. Parity matrices, syndromes, quantum circuits, and simulation artifacts are processed on the host machine; verify your host environment if confidentiality matters."})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(o,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Strict Mathematics"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Decodes are checked against ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"H c = s (mod 2)"}),". Scored with logical cosets and Wilson 95% CIs."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(k,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"App-Free Library"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Built on the official ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"qector-decoder-v3 1.0.x"})," Rust/PyO3 wheel. No desktop GUI required."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(C,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Multi-Agent System"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"28 domain skills and 5 tailored agent personas designed for research, hardware design, verification, and engineering."})]})]})}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"DOMAIN SKILLS ECOSYSTEM"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"28 Grounded QEC Skills"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Each skill encodes verified domain rules and strict-math obligations to reduce hallucination risk and ground interactions in reproducible physics. The seven flagship skills below are a subset of the 28 skills shipped in the plugin."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:O.map(s=>e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800/90 flex flex-col justify-between hover:border-cyan-500/30 transition-all",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsx("span",{className:"font-mono text-sm font-bold text-cyan-400",children:s.name}),e.jsx("span",{className:"text-[11px] font-mono px-2 py-0.5 rounded bg-slate-800 text-slate-300 border border-slate-700",children:s.role})]}),e.jsx("p",{className:"text-sm text-slate-300 leading-relaxed mb-4",children:s.desc})]}),e.jsx("div",{className:"pt-3 border-t border-slate-800/80 space-y-1.5",children:s.keyFeatures.map(a=>e.jsxs("div",{className:"flex items-center gap-2 text-xs text-slate-400",children:[e.jsx(q,{className:"w-3.5 h-3.5 text-cyan-400 shrink-0"}),e.jsx("span",{children:a})]},a))})]},s.name))}),e.jsxs("div",{className:"mt-10",children:[e.jsx("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:"All 28 skills shipped in the plugin"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:T.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-cyan-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(S,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"AGENT ROLES & PERSONAS"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"5 Specialized QEC Agents"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Custom agent definitions for Claude Code configured with tailored instructions, prompt templates, and tool access boundaries."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:A.map(s=>e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2 font-mono text-xs text-cyan-400",children:[e.jsx(i,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:s.file})]}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-2",children:s.title}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:s.desc})]})},s.file))})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(E,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"MCP SERVER TOOL SURFACE"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Local MCP Servers, Air-Gapped by Default"}),e.jsxs("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:["The v2.0.1 release separates local JSON-RPC 2.0 stdio capabilities by risk and purpose. The default",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-secure "})," server (12 tools: the 8 stable tools below plus airgap_status, integrity_check, schema_catalog and audit_log_status) refuses network access and verifies its own files;",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-library "})," (8 stable tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-research "})," (29 provisional tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-admin "})," (3 explicitly enabled tools), and",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-desktop-mcp "})," (the safe Desktop profile)."]})]}),e.jsx("div",{className:"card-surface rounded-2xl border border-slate-800 overflow-hidden shadow-xl",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm",children:[e.jsx("thead",{className:"bg-slate-900/90 text-xs font-mono text-cyan-400 uppercase tracking-wider border-b border-slate-800",children:e.jsxs("tr",{children:[e.jsx("th",{className:"px-6 py-4",children:"Tool Name"}),e.jsx("th",{className:"px-6 py-4",children:"Functionality & Mathematical Invariant"})]})}),e.jsx("tbody",{className:"divide-y divide-slate-800/60 font-mono text-xs text-slate-300",children:D.map(s=>e.jsxs("tr",{className:"hover:bg-slate-900/40 transition-colors",children:[e.jsx("td",{className:"px-6 py-4 font-semibold text-cyan-300 whitespace-nowrap",children:s.name}),e.jsx("td",{className:"px-6 py-4 font-sans text-sm text-slate-400",children:s.desc})]},s.name))})]})})}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-research server · ",d.length," provisional tools"]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:d.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-slate-300",children:s},s))})]}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-admin server · ",m.length," privileged tools"]}),e.jsxs("p",{className:"text-xs text-slate-400 mb-3",children:["Disabled by default. Requires ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"QECTOR_ADMIN_ENABLED=1"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"confirm=true"})," for every administrative call."]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:m.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-gold-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Installation & Setup"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2",children:"Configure QECTOR Claude Plugin v2.0.1 for Claude Code or Claude Desktop in seconds."})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"1"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Claude Code Marketplace"})]}),e.jsx("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:"Install directly via Claude Code marketplace registration:"}),e.jsx(r,{code:`# 1. Add marketplace repository -claude plugin marketplace add GuillaumeLessard/qector-claude-plugin - -# 2. Install plugin -claude plugin install qector@qector-tools`,language:"bash"})]})}),e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"2"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Local Plugin Directory"})]}),e.jsxs("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:["Clone the source repository and launch with the ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"--plugin-dir"})," flag:"]}),e.jsx(r,{code:`git clone https://github.com/GuillaumeLessard/qector-claude-plugin.git -cd qector-claude-plugin -pip install --require-hashes -r requirements.lock -claude --plugin-dir .`,language:"bash"})]})})]}),e.jsxs("div",{className:"mt-8 card-surface p-6 rounded-2xl border border-slate-800",children:[e.jsxs("h3",{className:"text-lg font-bold text-slate-100 mb-2 flex items-center gap-2",children:[e.jsx(o,{className:"w-5 h-5 text-cyan-400"}),e.jsx("span",{children:"Mathematical Validation Gate"})]}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed mb-4",children:"Verify all 16 Reference Manual theorems and 29 executable proof obligations locally on your machine:"}),e.jsx(r,{code:`# Run the complete public reference manual mathematical gate -python scripts/run_manual_math_validation.py - -# Or run full pytest integration suite -python -m pytest tests/test_reference_manual_math.py -v`,language:"bash"})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6 mb-12",children:e.jsx("div",{className:"card-surface p-8 border border-cyan-900/50 relative overflow-hidden bg-gradient-to-br from-slate-950 via-surface/60 to-slate-950",children:e.jsxs("div",{className:"relative z-10 flex flex-col md:flex-row items-center justify-between gap-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-2xl font-extrabold text-slate-100 mb-2",children:"Download Distribution Packages"}),e.jsx("p",{className:"text-sm text-slate-400 max-w-xl leading-relaxed",children:"Signed release archives: the Claude Code plugin, Claude Desktop extensions (.mcpb, including an offline bundle with a pinned wheelhouse), SHA256SUMS with its signature, an SBOM and provenance."})]}),e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsxs("a",{href:t.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2 shadow-lg shadow-cyan-400/20",children:[e.jsx(L,{className:"w-4 h-4"}),e.jsxs("span",{children:["v",t.version," Release, Checksums & Signatures"]})]}),e.jsxs(c,{to:"/docs",className:"px-5 py-2.5 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2",children:[e.jsx(P,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{children:"Docs Hub"})]})]})]})})})]})}export{U as default}; diff --git a/assets/ClaudePlugin-D87KUJYw.js b/assets/ClaudePlugin-D87KUJYw.js deleted file mode 100644 index 4e551f61..00000000 --- a/assets/ClaudePlugin-D87KUJYw.js +++ /dev/null @@ -1,13 +0,0 @@ -import{r as h,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,J as g,L as i,C as r}from"./index-c1PDYu0j.js";import{N as f}from"./NeuralReveal-uYarhiMA.js";import{C as t}from"./releases--9GgxpSb.js";import{S as b,T as o,c as y,d as j,E as v,f as N,L as w,a as c,g as k,W as C,h as _,i as q,A as S,j as E,D as L,B as P}from"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const O=[{name:"qector-core",role:"Core Ground Truth",desc:"Verified platform facts, 8 library MCP tools, 5 stable decoders, and strict API grounding to prevent hallucination.",keyFeatures:["Grounds tool names & signatures","Enforces strict math boundary","Local verification"]},{name:"qector-math-foundations",role:"Mathematical Axioms",desc:"Theorems 1-16 executable obligations over GF(2), syndrome equivalence H c = s (mod 2), Wilson 95% CIs, and coset scoring.",keyFeatures:["Theorem 1 fail-closed verification","Theorem 2 logical coset scoring","Wilson score intervals"]},{name:"qector-developer",role:"SDK & Engineering",desc:"Integration guidance for qector-decoder-v3 Python SDK, parity-check matrix generation, Sinter/Stim adapters, and CI/CD testing.",keyFeatures:["Python SDK best practices","Matrix construction helpers","Local test automation"]},{name:"qector-researcher",role:"Quantum Information Science",desc:"Threshold discovery workflows, noise modeling, Monte Carlo error simulations, and academic paper reproduction.",keyFeatures:["Code-capacity sweeps","Noise model parameterization","Reproducible artifact export"]},{name:"qector-hardware-engineer",role:"Experimental & Cryogenic",desc:"Hardware constraint modeling, heavy-hex/surface graph mapping, physical error rate profiling, and latency budgets.",keyFeatures:["Physical qubit layout mapping","Hardware latency analysis","Cryogenic error budgets"]},{name:"qector-educator",role:"Pedagogy & Concepts",desc:"Interactive tutorial creation, mathematical explanations of syndrome decoding, MWPM matching, and BP-OSD.",keyFeatures:["Step-by-step decoding explanations","Interactive code walkthroughs","Visual homology concepts"]},{name:"qector-sysadmin",role:"Operations & Hygiene",desc:"Environment diagnostics, resource limits (MAX_CHECKS, MAX_QUBITS), safe file I/O, and deployment validation.",keyFeatures:["15-point runtime health check","DoS & memory limit guards","Platform compatibility audit"]}],T=["qector-architecture","qector-batch-decoding","qector-bp-osd","qector-codes-builder","qector-core","qector-decoders-deep-dive","qector-dem-pipeline","qector-deployment","qector-developer","qector-educator","qector-glossary","qector-hardware-engineer","qector-ler-methodology","qector-licensing","qector-math-foundations","qector-orchestration","qector-pymatching-compat","qector-release-engineering","qector-reproducibility","qector-researcher","qector-roadmap","qector-services","qector-sinter","qector-space-time","qector-sysadmin","qector-testing-strategy","qector-two-stage-css","qector-workbench"],A=[{file:"qec-developer.md",title:"QEC Software Engineer",desc:"Specialized in Python SDK integration, decoder benchmarking, matrix generation, and production deployment."},{file:"qec-researcher.md",title:"QEC Research Scientist",desc:"Specialized in academic literature review, threshold sweeps, Wilson confidence intervals, and Monte Carlo studies."},{file:"qec-validator.md",title:"Mathematical Proof Validator",desc:"Specialized in formal theorem checking, finite matrix verification, syndrome faithfulness, and local-only enforcement."},{file:"qec-sysadmin.md",title:"Systems & Runtime Engineer",desc:"Specialized in Python environment health, MCP server stdio management, resource bounds, and packaging."},{file:"qec-hardware-engineer.md",title:"Quantum Hardware Architect",desc:"Specialized in superconducting qubit topologies, heavy-hex grids, cryogenic latency constraints, and noise budgets."}],D=[{name:"list_code_families",desc:"Lists available code families (Rotated Surface, Toric, Ring, Repetition, Color, Heavy-Hex, Hypergraph Product)."},{name:"list_decoders",desc:"Lists the five stable decoder classes: UnionFind, FastUnionFind, Blossom (MWPM), SparseBlossom, NativeAuto."},{name:"get_license_info",desc:"Reads live offline licensing tier and feature flags from the installed qector-decoder-v3 package."},{name:"decode_syndrome",desc:"Decodes a binary syndrome with mandatory Theorem 1 fail-closed verification: H c = s (mod 2)."},{name:"decode_single",desc:"Executes a single-shot decode with logical-coset scoring (Theorem 2) against logical observables."},{name:"threshold_sweep",desc:"Runs device-local code-capacity sweeps with Wilson 95% confidence intervals and SHA-256 sealed artifacts."},{name:"build_code_from_matrix",desc:"Validates and compiles an arbitrary binary parity-check matrix with rank and observable analysis."},{name:"compat_report",desc:"Audits runtime health, wheel version, NumPy compatibility, and provisional feature boundaries."}],d=["artifacts_sha256","artifact_metadata_check","code_distance_check","code_export_matrices","code_family_info","code_logicals_inspect","compat_report","decode_faithfulness_check","dem_collapse_parallel","dem_inspect","env_block","glossary_lookup","hardware_probe","hot_path_microbench","license_active_check","logical_coset_score","pymatching_compat_check","qiskit_plugin_check","reproduction_command_lookup","sinter_decoder_list","sinter_task_template","stim_circuit_probe","theorem_lookup","wilson_ci","wilson_table","workload_hash","get_capability_matrix","get_evidence_policy","get_runtime_provenance"],m=["system_setup","configure_claude_desktop","workbench_probe"];function Q(){const[l,x]=h.useState(!1),p=(s,a)=>{navigator.clipboard.writeText(s),a(!0),setTimeout(()=>a(!1),2e3)},n=`claude plugin marketplace add GuillaumeLessard/qector-claude-plugin -claude plugin install qector@qector-tools`;return e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"QECTOR Claude Plugin · Quantum Error Correction for Claude Code",description:"Official QECTOR Claude Code and Claude Desktop plugin v2.0.1: air-gapped qector-secure MCP server (12 schema-validated tools), 28 skills and 5 agents on qector-decoder-v3 1.0.1."}),e.jsx(g,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Claude Plugin",description:"Official QECTOR plugin v2.0.1 for Claude Code and Claude Desktop: air-gapped qector-secure MCP server with 12 schema-validated tools, 28 skills, 5 agents, 11 commands; 29 research and 3 admin tools are opt-in.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",softwareVersion:t.version,author:{"@type":"Person",name:"Guillaume Lessard",url:"https://orcid.org/0009-0000-3465-3753"},offers:{"@type":"Offer",price:"0",priceCurrency:"USD"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-400/5 via-surface/40 to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/4 left-1/2 -translate-x-1/2 -translate-y-1/2 w-96 h-96 bg-cyan-400/10 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-4 sm:px-6 relative z-10 text-center",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3.5 py-1.5 rounded-full bg-cyan-950/60 border border-cyan-800/60 text-cyan-300 text-xs font-mono font-medium mb-6 backdrop-blur-sm",children:[e.jsx(b,{className:"w-3.5 h-3.5 text-cyan-400"}),e.jsxs("span",{children:["ANTHROPIC CLAUDE CODE & DESKTOP PLUGIN · v",t.version," · published ",t.releaseDate]})]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-extrabold tracking-tight text-slate-100 mb-6 max-w-4xl mx-auto leading-[1.1]",children:e.jsx(f,{text:"QECTOR Claude Plugin"})}),e.jsxs("p",{className:"text-lg md:text-xl text-slate-300 max-w-3xl mx-auto leading-relaxed mb-8",children:["Empower Claude with local Quantum Error Correction engineering. Release v2.0.1 runs on qector-decoder-v3 1.0.1. The default"," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"qector-secure"})," server is air-gapped, integrity-checked and validates every request and response against JSON Schema (12 tools). It ships with"," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"28 domain skills"}),","," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"5 specialized agents"})," and 11 slash commands; 29 research tools and 3 admin tools are opt-in. Every dependency is pinned by SHA-256, and releases are signed."]}),e.jsxs("div",{className:"max-w-2xl mx-auto bg-slate-950/90 border border-cyan-900/60 rounded-2xl p-5 mb-10 shadow-2xl backdrop-blur-md text-left",children:[e.jsxs("div",{className:"flex items-center justify-between pb-3 mb-3 border-b border-slate-800/80",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(o,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{className:"text-xs font-mono font-semibold uppercase tracking-wider text-slate-400",children:"Instant Marketplace Install"})]}),e.jsxs("button",{onClick:()=>p(n,x),className:"flex items-center gap-1.5 text-xs font-mono text-cyan-400 hover:text-cyan-300 transition-colors px-2.5 py-1 rounded bg-cyan-950/50 border border-cyan-800/40",children:[l?e.jsx(y,{className:"w-3.5 h-3.5 text-green-400"}):e.jsx(j,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:l?"Copied":"Copy"})]})]}),e.jsx("pre",{className:"font-mono text-sm text-cyan-300 overflow-x-auto whitespace-pre leading-relaxed",children:n})]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin",target:"_blank",rel:"noopener noreferrer",className:"px-6 py-3 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-sm transition-all shadow-lg shadow-cyan-400/20 inline-flex items-center gap-2",children:[e.jsx("span",{children:"GitHub Repository"}),e.jsx(v,{className:"w-4 h-4"})]}),e.jsxs(i,{to:"/mcp-server",className:"px-6 py-3 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-sm transition-all inline-flex items-center gap-2",children:[e.jsx("span",{children:"MCP Server Reference"}),e.jsx(N,{className:"w-4 h-4 text-cyan-400"})]})]}),e.jsx("p",{className:"text-xs text-slate-400 mt-6",children:"Independent plugin by iD01t Productions. Not affiliated with or endorsed by Anthropic."})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(w,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Local-First Security"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"Local stdio transport by default. Parity matrices, syndromes, quantum circuits, and simulation artifacts are processed on the host machine; verify your host environment if confidentiality matters."})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(c,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Strict Mathematics"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Decodes are checked against ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"H c = s (mod 2)"}),". Scored with logical cosets and Wilson 95% CIs."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(k,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"App-Free Library"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Built on the official ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"qector-decoder-v3 1.0.x"})," Rust/PyO3 wheel. No desktop GUI required."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(C,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Multi-Agent System"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"28 domain skills and 5 tailored agent personas designed for research, hardware design, verification, and engineering."})]})]})}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"DOMAIN SKILLS ECOSYSTEM"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"28 Grounded QEC Skills"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Each skill encodes verified domain rules and strict-math obligations to reduce hallucination risk and ground interactions in reproducible physics. The seven flagship skills below are a subset of the 28 skills shipped in the plugin."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:O.map(s=>e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800/90 flex flex-col justify-between hover:border-cyan-500/30 transition-all",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsx("span",{className:"font-mono text-sm font-bold text-cyan-400",children:s.name}),e.jsx("span",{className:"text-[11px] font-mono px-2 py-0.5 rounded bg-slate-800 text-slate-300 border border-slate-700",children:s.role})]}),e.jsx("p",{className:"text-sm text-slate-300 leading-relaxed mb-4",children:s.desc})]}),e.jsx("div",{className:"pt-3 border-t border-slate-800/80 space-y-1.5",children:s.keyFeatures.map(a=>e.jsxs("div",{className:"flex items-center gap-2 text-xs text-slate-400",children:[e.jsx(q,{className:"w-3.5 h-3.5 text-cyan-400 shrink-0"}),e.jsx("span",{children:a})]},a))})]},s.name))}),e.jsxs("div",{className:"mt-10",children:[e.jsx("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:"All 28 skills shipped in the plugin"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:T.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-cyan-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(S,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"AGENT ROLES & PERSONAS"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"5 Specialized QEC Agents"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Custom agent definitions for Claude Code configured with tailored instructions, prompt templates, and tool access boundaries."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:A.map(s=>e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2 font-mono text-xs text-cyan-400",children:[e.jsx(o,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:s.file})]}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-2",children:s.title}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:s.desc})]})},s.file))})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(E,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"MCP SERVER TOOL SURFACE"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Local MCP Servers, Air-Gapped by Default"}),e.jsxs("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:["The v2.0.1 release separates local JSON-RPC 2.0 stdio capabilities by risk and purpose. The default",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-secure "})," server (12 tools: the 8 stable tools below plus airgap_status, integrity_check, schema_catalog and audit_log_status) refuses network access and verifies its own files;",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-library "})," (8 stable tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-research "})," (29 provisional tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-admin "})," (3 explicitly enabled tools), and",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-desktop-mcp "})," (the safe Desktop profile)."]})]}),e.jsx("div",{className:"card-surface rounded-2xl border border-slate-800 overflow-hidden shadow-xl",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm",children:[e.jsx("thead",{className:"bg-slate-900/90 text-xs font-mono text-cyan-400 uppercase tracking-wider border-b border-slate-800",children:e.jsxs("tr",{children:[e.jsx("th",{className:"px-6 py-4",children:"Tool Name"}),e.jsx("th",{className:"px-6 py-4",children:"Functionality & Mathematical Invariant"})]})}),e.jsx("tbody",{className:"divide-y divide-slate-800/60 font-mono text-xs text-slate-300",children:D.map(s=>e.jsxs("tr",{className:"hover:bg-slate-900/40 transition-colors",children:[e.jsx("td",{className:"px-6 py-4 font-semibold text-cyan-300 whitespace-nowrap",children:s.name}),e.jsx("td",{className:"px-6 py-4 font-sans text-sm text-slate-400",children:s.desc})]},s.name))})]})})}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-research server · ",d.length," provisional tools"]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:d.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-slate-300",children:s},s))})]}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-admin server · ",m.length," privileged tools"]}),e.jsxs("p",{className:"text-xs text-slate-400 mb-3",children:["Disabled by default. Requires ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"QECTOR_ADMIN_ENABLED=1"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"confirm=true"})," for every administrative call."]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:m.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-gold-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Installation & Setup"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2",children:"Configure QECTOR Claude Plugin v2.0.1 for Claude Code or Claude Desktop in seconds."})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"1"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Claude Code Marketplace"})]}),e.jsx("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:"Install directly via Claude Code marketplace registration:"}),e.jsx(r,{code:`# 1. Add marketplace repository -claude plugin marketplace add GuillaumeLessard/qector-claude-plugin - -# 2. Install plugin -claude plugin install qector@qector-tools`,language:"bash"})]})}),e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"2"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Local Plugin Directory"})]}),e.jsxs("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:["Clone the source repository and launch with the ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"--plugin-dir"})," flag:"]}),e.jsx(r,{code:`git clone https://github.com/GuillaumeLessard/qector-claude-plugin.git -cd qector-claude-plugin -pip install --require-hashes -r requirements.lock -claude --plugin-dir .`,language:"bash"})]})})]}),e.jsxs("div",{className:"mt-8 card-surface p-6 rounded-2xl border border-slate-800",children:[e.jsxs("h3",{className:"text-lg font-bold text-slate-100 mb-2 flex items-center gap-2",children:[e.jsx(c,{className:"w-5 h-5 text-cyan-400"}),e.jsx("span",{children:"Mathematical Validation Gate"})]}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed mb-4",children:"Verify all 16 Reference Manual theorems and 29 executable proof obligations locally on your machine:"}),e.jsx(r,{code:`# Run the complete public reference manual mathematical gate -python scripts/run_manual_math_validation.py - -# Or run full pytest integration suite -python -m pytest tests/test_reference_manual_math.py -v`,language:"bash"})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6 mb-12",children:e.jsx("div",{className:"card-surface p-8 border border-cyan-900/50 relative overflow-hidden bg-gradient-to-br from-slate-950 via-surface/60 to-slate-950",children:e.jsxs("div",{className:"relative z-10 flex flex-col md:flex-row items-center justify-between gap-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-2xl font-extrabold text-slate-100 mb-2",children:"Download Distribution Packages"}),e.jsx("p",{className:"text-sm text-slate-400 max-w-xl leading-relaxed",children:"Signed release archives: the Claude Code plugin, Claude Desktop extensions (.mcpb, including an offline bundle with a pinned wheelhouse), SHA256SUMS with its signature, an SBOM and provenance."})]}),e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsxs("a",{href:t.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2 shadow-lg shadow-cyan-400/20",children:[e.jsx(L,{className:"w-4 h-4"}),e.jsxs("span",{children:["v",t.version," Release, Checksums & Signatures"]})]}),e.jsxs(i,{to:"/docs",className:"px-5 py-2.5 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2",children:[e.jsx(P,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{children:"Docs Hub"})]})]})]})})})]})}export{Q as default}; diff --git a/assets/ClaudePlugin-DA4c0s-8.js b/assets/ClaudePlugin-DA4c0s-8.js deleted file mode 100644 index a0220b95..00000000 --- a/assets/ClaudePlugin-DA4c0s-8.js +++ /dev/null @@ -1,13 +0,0 @@ -import{r as h,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,J as f,C as t}from"./index-iVST85F-.js";import{N as g}from"./NeuralReveal-BflyZYSb.js";import{C as n}from"./releases-DiQz_IDu.js";import{S as b,T as o,c as y,d as j,E as v,f as N,L as w,a as i,g as k,W as C,h as _,i as q,A as S,j as E,D as L,B as P}from"./vendor-ui-B0ssGG4c.js";import{L as c}from"./vendor-PiU4YGcH.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const O=[{name:"qector-core",role:"Core Ground Truth",desc:"Verified platform facts, 8 library MCP tools, 5 stable decoders, and strict API grounding to prevent hallucination.",keyFeatures:["Grounds tool names & signatures","Enforces strict math boundary","Local verification"]},{name:"qector-math-foundations",role:"Mathematical Axioms",desc:"Theorems 1-16 executable obligations over GF(2), syndrome equivalence H c = s (mod 2), Wilson 95% CIs, and coset scoring.",keyFeatures:["Theorem 1 fail-closed verification","Theorem 2 logical coset scoring","Wilson score intervals"]},{name:"qector-developer",role:"SDK & Engineering",desc:"Integration guidance for qector-decoder-v3 Python SDK, parity-check matrix generation, Sinter/Stim adapters, and CI/CD testing.",keyFeatures:["Python SDK best practices","Matrix construction helpers","Local test automation"]},{name:"qector-researcher",role:"Quantum Information Science",desc:"Threshold discovery workflows, noise modeling, Monte Carlo error simulations, and academic paper reproduction.",keyFeatures:["Code-capacity sweeps","Noise model parameterization","Reproducible artifact export"]},{name:"qector-hardware-engineer",role:"Experimental & Cryogenic",desc:"Hardware constraint modeling, heavy-hex/surface graph mapping, physical error rate profiling, and latency budgets.",keyFeatures:["Physical qubit layout mapping","Hardware latency analysis","Cryogenic error budgets"]},{name:"qector-educator",role:"Pedagogy & Concepts",desc:"Interactive tutorial creation, mathematical explanations of syndrome decoding, MWPM matching, and BP-OSD.",keyFeatures:["Step-by-step decoding explanations","Interactive code walkthroughs","Visual homology concepts"]},{name:"qector-sysadmin",role:"Operations & Hygiene",desc:"Environment diagnostics, resource limits (MAX_CHECKS, MAX_QUBITS), safe file I/O, and deployment validation.",keyFeatures:["15-point runtime health check","DoS & memory limit guards","Platform compatibility audit"]}],T=["qector-architecture","qector-batch-decoding","qector-bp-osd","qector-codes-builder","qector-core","qector-decoders-deep-dive","qector-dem-pipeline","qector-deployment","qector-developer","qector-educator","qector-glossary","qector-hardware-engineer","qector-ler-methodology","qector-licensing","qector-math-foundations","qector-orchestration","qector-pymatching-compat","qector-release-engineering","qector-reproducibility","qector-researcher","qector-roadmap","qector-services","qector-sinter","qector-space-time","qector-sysadmin","qector-testing-strategy","qector-two-stage-css","qector-workbench"],R=[{file:"qec-developer.md",title:"QEC Software Engineer",desc:"Specialized in Python SDK integration, decoder benchmarking, matrix generation, and production deployment."},{file:"qec-researcher.md",title:"QEC Research Scientist",desc:"Specialized in academic literature review, threshold sweeps, Wilson confidence intervals, and Monte Carlo studies."},{file:"qec-validator.md",title:"Mathematical Proof Validator",desc:"Specialized in formal theorem checking, finite matrix verification, syndrome faithfulness, and local-only enforcement."},{file:"qec-sysadmin.md",title:"Systems & Runtime Engineer",desc:"Specialized in Python environment health, MCP server stdio management, resource bounds, and packaging."},{file:"qec-hardware-engineer.md",title:"Quantum Hardware Architect",desc:"Specialized in superconducting qubit topologies, heavy-hex grids, cryogenic latency constraints, and noise budgets."}],D=[{name:"list_code_families",desc:"Lists available code families (Rotated Surface, Toric, Ring, Repetition, Color, Heavy-Hex, Hypergraph Product)."},{name:"list_decoders",desc:"Lists the five stable decoder classes: UnionFind, FastUnionFind, Blossom (MWPM), SparseBlossom, NativeAuto."},{name:"get_license_info",desc:"Reads live offline licensing tier and feature flags from the installed qector-decoder-v3 package."},{name:"decode_syndrome",desc:"Decodes a binary syndrome with mandatory Theorem 1 fail-closed verification: H c = s (mod 2)."},{name:"decode_single",desc:"Executes a single-shot decode with logical-coset scoring (Theorem 2) against logical observables."},{name:"threshold_sweep",desc:"Runs device-local code-capacity sweeps with Wilson 95% confidence intervals and SHA-256 sealed artifacts."},{name:"build_code_from_matrix",desc:"Validates and compiles an arbitrary binary parity-check matrix with rank and observable analysis."},{name:"compat_report",desc:"Audits runtime health, wheel version, NumPy compatibility, and provisional feature boundaries."}],d=["artifacts_sha256","artifact_metadata_check","code_distance_check","code_export_matrices","code_family_info","code_logicals_inspect","compat_report","decode_faithfulness_check","dem_collapse_parallel","dem_inspect","env_block","glossary_lookup","hardware_probe","hot_path_microbench","license_active_check","logical_coset_score","pymatching_compat_check","qiskit_plugin_check","reproduction_command_lookup","sinter_decoder_list","sinter_task_template","stim_circuit_probe","theorem_lookup","wilson_ci","wilson_table","workload_hash","get_capability_matrix","get_evidence_policy","get_runtime_provenance"],m=["system_setup","configure_claude_desktop","workbench_probe"];function B(){const[r,x]=h.useState(!1),p=(s,a)=>{navigator.clipboard.writeText(s),a(!0),setTimeout(()=>a(!1),2e3)},l=`claude plugin marketplace add GuillaumeLessard/qector-claude-plugin -claude plugin install qector@qector-tools`;return e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"QECTOR Claude Plugin · Quantum Error Correction for Claude Code",description:"Official QECTOR Claude Code and Claude Desktop plugin v1.0.6. 28 skills, 5 agents, four MCP servers, and qector-decoder-v3 1.0.0 with local stdio-based decoding."}),e.jsx(f,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Claude Plugin",description:"Official QECTOR plugin v1.0.6 for Claude Code and Claude Desktop. 28 skills, 5 agents, four MCP servers, 8 stable library tools, 29 opt-in research tools, and 3 opt-in admin tools.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",softwareVersion:"1.0.6",author:{"@type":"Person",name:"Guillaume Lessard",url:"https://orcid.org/0009-0000-3465-3753"},offers:{"@type":"Offer",price:"0",priceCurrency:"USD"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-400/5 via-surface/40 to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/4 left-1/2 -translate-x-1/2 -translate-y-1/2 w-96 h-96 bg-cyan-400/10 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-4 sm:px-6 relative z-10 text-center",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3.5 py-1.5 rounded-full bg-cyan-950/60 border border-cyan-800/60 text-cyan-300 text-xs font-mono font-medium mb-6 backdrop-blur-sm",children:[e.jsx(b,{className:"w-3.5 h-3.5 text-cyan-400"}),e.jsxs("span",{children:["ANTHROPIC CLAUDE CODE & DESKTOP PLUGIN · v",n.version," · published ",n.releaseDate]})]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-extrabold tracking-tight text-slate-100 mb-6 max-w-4xl mx-auto leading-[1.1]",children:e.jsx(g,{text:"QECTOR Claude Plugin"})}),e.jsxs("p",{className:"text-lg md:text-xl text-slate-300 max-w-3xl mx-auto leading-relaxed mb-8",children:["Empower Claude with local Quantum Error Correction engineering. Release v1.0.6 adds marketplace compliance hardening and environment-agnostic setup. It includes"," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"28 domain skills"}),","," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"5 specialized agents"}),","," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"8 stable library tools"}),", 29 opt-in research tools, and 3 opt-in admin tools across four MCP servers. The default configuration uses local stdio transport."]}),e.jsxs("div",{className:"max-w-2xl mx-auto bg-slate-950/90 border border-cyan-900/60 rounded-2xl p-5 mb-10 shadow-2xl backdrop-blur-md text-left",children:[e.jsxs("div",{className:"flex items-center justify-between pb-3 mb-3 border-b border-slate-800/80",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(o,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{className:"text-xs font-mono font-semibold uppercase tracking-wider text-slate-400",children:"Instant Marketplace Install"})]}),e.jsxs("button",{onClick:()=>p(l,x),className:"flex items-center gap-1.5 text-xs font-mono text-cyan-400 hover:text-cyan-300 transition-colors px-2.5 py-1 rounded bg-cyan-950/50 border border-cyan-800/40",children:[r?e.jsx(y,{className:"w-3.5 h-3.5 text-green-400"}):e.jsx(j,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:r?"Copied":"Copy"})]})]}),e.jsx("pre",{className:"font-mono text-sm text-cyan-300 overflow-x-auto whitespace-pre leading-relaxed",children:l})]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin",target:"_blank",rel:"noopener noreferrer",className:"px-6 py-3 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-sm transition-all shadow-lg shadow-cyan-400/20 inline-flex items-center gap-2",children:[e.jsx("span",{children:"GitHub Repository"}),e.jsx(v,{className:"w-4 h-4"})]}),e.jsxs(c,{to:"/mcp-server",className:"px-6 py-3 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-sm transition-all inline-flex items-center gap-2",children:[e.jsx("span",{children:"MCP Server Reference"}),e.jsx(N,{className:"w-4 h-4 text-cyan-400"})]})]}),e.jsx("p",{className:"text-xs text-slate-400 mt-6",children:"Independent plugin by iD01t Productions. Not affiliated with or endorsed by Anthropic."})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(w,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Local-First Security"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"Local stdio transport by default. Parity matrices, syndromes, quantum circuits, and simulation artifacts are processed on the host machine; verify your host environment if confidentiality matters."})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(i,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Strict Mathematics"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Decodes are checked against ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"H c = s (mod 2)"}),". Scored with logical cosets and Wilson 95% CIs."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(k,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"App-Free Library"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Built on the official ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"qector-decoder-v3==1.0.0"})," Rust/PyO3 wheel. No desktop GUI required."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(C,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Multi-Agent System"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"28 domain skills and 5 tailored agent personas designed for research, hardware design, verification, and engineering."})]})]})}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"DOMAIN SKILLS ECOSYSTEM"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"28 Grounded QEC Skills"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Each skill encodes verified domain rules and strict-math obligations to reduce hallucination risk and ground interactions in reproducible physics. The seven flagship skills below are a subset of the 28 skills shipped in v1.0.6."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:O.map(s=>e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800/90 flex flex-col justify-between hover:border-cyan-500/30 transition-all",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsx("span",{className:"font-mono text-sm font-bold text-cyan-400",children:s.name}),e.jsx("span",{className:"text-[11px] font-mono px-2 py-0.5 rounded bg-slate-800 text-slate-300 border border-slate-700",children:s.role})]}),e.jsx("p",{className:"text-sm text-slate-300 leading-relaxed mb-4",children:s.desc})]}),e.jsx("div",{className:"pt-3 border-t border-slate-800/80 space-y-1.5",children:s.keyFeatures.map(a=>e.jsxs("div",{className:"flex items-center gap-2 text-xs text-slate-400",children:[e.jsx(q,{className:"w-3.5 h-3.5 text-cyan-400 shrink-0"}),e.jsx("span",{children:a})]},a))})]},s.name))}),e.jsxs("div",{className:"mt-10",children:[e.jsx("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:"All 28 skills shipped in the plugin"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:T.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-cyan-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(S,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"AGENT ROLES & PERSONAS"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"5 Specialized QEC Agents"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Custom agent definitions for Claude Code configured with tailored instructions, prompt templates, and tool access boundaries."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:R.map(s=>e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2 font-mono text-xs text-cyan-400",children:[e.jsx(o,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:s.file})]}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-2",children:s.title}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:s.desc})]})},s.file))})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(E,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"MCP SERVER TOOL SURFACE"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Four Local MCP Servers"}),e.jsxs("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:["The v1.0.6 release separates local JSON-RPC 2.0 stdio capabilities by risk and purpose:",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-library "})," (8 stable tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-research "})," (29 provisional tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-admin "})," (3 explicitly enabled tools), and",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-desktop-mcp "})," (the safe Desktop profile)."]})]}),e.jsx("div",{className:"card-surface rounded-2xl border border-slate-800 overflow-hidden shadow-xl",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm",children:[e.jsx("thead",{className:"bg-slate-900/90 text-xs font-mono text-cyan-400 uppercase tracking-wider border-b border-slate-800",children:e.jsxs("tr",{children:[e.jsx("th",{className:"px-6 py-4",children:"Tool Name"}),e.jsx("th",{className:"px-6 py-4",children:"Functionality & Mathematical Invariant"})]})}),e.jsx("tbody",{className:"divide-y divide-slate-800/60 font-mono text-xs text-slate-300",children:D.map(s=>e.jsxs("tr",{className:"hover:bg-slate-900/40 transition-colors",children:[e.jsx("td",{className:"px-6 py-4 font-semibold text-cyan-300 whitespace-nowrap",children:s.name}),e.jsx("td",{className:"px-6 py-4 font-sans text-sm text-slate-400",children:s.desc})]},s.name))})]})})}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-research server · ",d.length," provisional tools"]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:d.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-slate-300",children:s},s))})]}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-admin server · ",m.length," privileged tools"]}),e.jsxs("p",{className:"text-xs text-slate-400 mb-3",children:["Disabled by default. Requires ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"QECTOR_ADMIN_ENABLED=1"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"confirm=true"})," for every administrative call."]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:m.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-gold-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Installation & Setup"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2",children:"Configure QECTOR Claude Plugin v1.0.6 for Claude Code or Claude Desktop in seconds."})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"1"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Claude Code Marketplace"})]}),e.jsx("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:"Install directly via Claude Code marketplace registration:"}),e.jsx(t,{code:`# 1. Add marketplace repository -claude plugin marketplace add GuillaumeLessard/qector-claude-plugin - -# 2. Install plugin -claude plugin install qector@qector-tools`,language:"bash"})]})}),e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"2"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Local Plugin Directory"})]}),e.jsxs("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:["Clone the source repository and launch with the ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"--plugin-dir"})," flag:"]}),e.jsx(t,{code:`git clone https://github.com/GuillaumeLessard/qector-claude-plugin.git -cd qector-claude-plugin -pip install -r requirements.txt -claude --plugin-dir .`,language:"bash"})]})})]}),e.jsxs("div",{className:"mt-8 card-surface p-6 rounded-2xl border border-slate-800",children:[e.jsxs("h3",{className:"text-lg font-bold text-slate-100 mb-2 flex items-center gap-2",children:[e.jsx(i,{className:"w-5 h-5 text-cyan-400"}),e.jsx("span",{children:"Mathematical Validation Gate"})]}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed mb-4",children:"Verify all 16 Reference Manual theorems and 29 executable proof obligations locally on your machine:"}),e.jsx(t,{code:`# Run the complete public reference manual mathematical gate -python scripts/run_manual_math_validation.py - -# Or run full pytest integration suite -python -m pytest tests/test_reference_manual_math.py -v`,language:"bash"})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6 mb-12",children:e.jsx("div",{className:"card-surface p-8 border border-cyan-900/50 relative overflow-hidden bg-gradient-to-br from-slate-950 via-surface/60 to-slate-950",children:e.jsxs("div",{className:"relative z-10 flex flex-col md:flex-row items-center justify-between gap-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-2xl font-extrabold text-slate-100 mb-2",children:"Download Distribution Packages"}),e.jsx("p",{className:"text-sm text-slate-400 max-w-xl leading-relaxed",children:"Pre-packaged standalone ZIP archives formatted specifically for the Claude.ai custom-skill uploader (forward-slash path normalized) and Claude Code multi-skill plugin distributions."})]}),e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin/releases/tag/v1.0.6",target:"_blank",rel:"noopener noreferrer",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2 shadow-lg shadow-cyan-400/20",children:[e.jsx(L,{className:"w-4 h-4"}),e.jsx("span",{children:"v1.0.6 Release & Checksums"})]}),e.jsxs(c,{to:"/docs",className:"px-5 py-2.5 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2",children:[e.jsx(P,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{children:"Docs Hub"})]})]})]})})})]})}export{B as default}; diff --git a/assets/ClaudePlugin-Dch9HZQU.js b/assets/ClaudePlugin-Dch9HZQU.js deleted file mode 100644 index 6bbb801c..00000000 --- a/assets/ClaudePlugin-Dch9HZQU.js +++ /dev/null @@ -1,13 +0,0 @@ -import{r as h,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,J as g,C as r}from"./index-abfjMTlQ.js";import{N as f}from"./NeuralReveal-D-EQoOl2.js";import{C as t}from"./releases-1-HBloZv.js";import{S as b,T as i,c as y,d as j,E as v,f as N,L as w,a as o,g as k,W as C,h as _,i as q,A as S,j as E,D as L,B as P}from"./vendor-ui-B0ssGG4c.js";import{L as c}from"./vendor-PiU4YGcH.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const O=[{name:"qector-core",role:"Core Ground Truth",desc:"Verified platform facts, 8 library MCP tools, 5 stable decoders, and strict API grounding to prevent hallucination.",keyFeatures:["Grounds tool names & signatures","Enforces strict math boundary","Local verification"]},{name:"qector-math-foundations",role:"Mathematical Axioms",desc:"Theorems 1-16 executable obligations over GF(2), syndrome equivalence H c = s (mod 2), Wilson 95% CIs, and coset scoring.",keyFeatures:["Theorem 1 fail-closed verification","Theorem 2 logical coset scoring","Wilson score intervals"]},{name:"qector-developer",role:"SDK & Engineering",desc:"Integration guidance for qector-decoder-v3 Python SDK, parity-check matrix generation, Sinter/Stim adapters, and CI/CD testing.",keyFeatures:["Python SDK best practices","Matrix construction helpers","Local test automation"]},{name:"qector-researcher",role:"Quantum Information Science",desc:"Threshold discovery workflows, noise modeling, Monte Carlo error simulations, and academic paper reproduction.",keyFeatures:["Code-capacity sweeps","Noise model parameterization","Reproducible artifact export"]},{name:"qector-hardware-engineer",role:"Experimental & Cryogenic",desc:"Hardware constraint modeling, heavy-hex/surface graph mapping, physical error rate profiling, and latency budgets.",keyFeatures:["Physical qubit layout mapping","Hardware latency analysis","Cryogenic error budgets"]},{name:"qector-educator",role:"Pedagogy & Concepts",desc:"Interactive tutorial creation, mathematical explanations of syndrome decoding, MWPM matching, and BP-OSD.",keyFeatures:["Step-by-step decoding explanations","Interactive code walkthroughs","Visual homology concepts"]},{name:"qector-sysadmin",role:"Operations & Hygiene",desc:"Environment diagnostics, resource limits (MAX_CHECKS, MAX_QUBITS), safe file I/O, and deployment validation.",keyFeatures:["15-point runtime health check","DoS & memory limit guards","Platform compatibility audit"]}],T=["qector-architecture","qector-batch-decoding","qector-bp-osd","qector-codes-builder","qector-core","qector-decoders-deep-dive","qector-dem-pipeline","qector-deployment","qector-developer","qector-educator","qector-glossary","qector-hardware-engineer","qector-ler-methodology","qector-licensing","qector-math-foundations","qector-orchestration","qector-pymatching-compat","qector-release-engineering","qector-reproducibility","qector-researcher","qector-roadmap","qector-services","qector-sinter","qector-space-time","qector-sysadmin","qector-testing-strategy","qector-two-stage-css","qector-workbench"],A=[{file:"qec-developer.md",title:"QEC Software Engineer",desc:"Specialized in Python SDK integration, decoder benchmarking, matrix generation, and production deployment."},{file:"qec-researcher.md",title:"QEC Research Scientist",desc:"Specialized in academic literature review, threshold sweeps, Wilson confidence intervals, and Monte Carlo studies."},{file:"qec-validator.md",title:"Mathematical Proof Validator",desc:"Specialized in formal theorem checking, finite matrix verification, syndrome faithfulness, and local-only enforcement."},{file:"qec-sysadmin.md",title:"Systems & Runtime Engineer",desc:"Specialized in Python environment health, MCP server stdio management, resource bounds, and packaging."},{file:"qec-hardware-engineer.md",title:"Quantum Hardware Architect",desc:"Specialized in superconducting qubit topologies, heavy-hex grids, cryogenic latency constraints, and noise budgets."}],D=[{name:"list_code_families",desc:"Lists available code families (Rotated Surface, Toric, Ring, Repetition, Color, Heavy-Hex, Hypergraph Product)."},{name:"list_decoders",desc:"Lists the five stable decoder classes: UnionFind, FastUnionFind, Blossom (MWPM), SparseBlossom, NativeAuto."},{name:"get_license_info",desc:"Reads live offline licensing tier and feature flags from the installed qector-decoder-v3 package."},{name:"decode_syndrome",desc:"Decodes a binary syndrome with mandatory Theorem 1 fail-closed verification: H c = s (mod 2)."},{name:"decode_single",desc:"Executes a single-shot decode with logical-coset scoring (Theorem 2) against logical observables."},{name:"threshold_sweep",desc:"Runs device-local code-capacity sweeps with Wilson 95% confidence intervals and SHA-256 sealed artifacts."},{name:"build_code_from_matrix",desc:"Validates and compiles an arbitrary binary parity-check matrix with rank and observable analysis."},{name:"compat_report",desc:"Audits runtime health, wheel version, NumPy compatibility, and provisional feature boundaries."}],d=["artifacts_sha256","artifact_metadata_check","code_distance_check","code_export_matrices","code_family_info","code_logicals_inspect","compat_report","decode_faithfulness_check","dem_collapse_parallel","dem_inspect","env_block","glossary_lookup","hardware_probe","hot_path_microbench","license_active_check","logical_coset_score","pymatching_compat_check","qiskit_plugin_check","reproduction_command_lookup","sinter_decoder_list","sinter_task_template","stim_circuit_probe","theorem_lookup","wilson_ci","wilson_table","workload_hash","get_capability_matrix","get_evidence_policy","get_runtime_provenance"],m=["system_setup","configure_claude_desktop","workbench_probe"];function U(){const[l,x]=h.useState(!1),p=(s,a)=>{navigator.clipboard.writeText(s),a(!0),setTimeout(()=>a(!1),2e3)},n=`claude plugin marketplace add GuillaumeLessard/qector-claude-plugin -claude plugin install qector@qector-tools`;return e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"QECTOR Claude Plugin · Quantum Error Correction for Claude Code",description:"Official QECTOR Claude Code and Claude Desktop plugin v2.0.1: air-gapped qector-secure MCP server (12 schema-validated tools), 28 skills and 5 agents on qector-decoder-v3 1.0.1."}),e.jsx(g,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Claude Plugin",description:"Official QECTOR plugin v2.0.1 for Claude Code and Claude Desktop: air-gapped qector-secure MCP server with 12 schema-validated tools, 28 skills, 5 agents, 11 commands; 29 research and 3 admin tools are opt-in.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",softwareVersion:t.version,author:{"@type":"Person",name:"Guillaume Lessard",url:"https://orcid.org/0009-0000-3465-3753"},offers:{"@type":"Offer",price:"0",priceCurrency:"USD"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-400/5 via-surface/40 to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/4 left-1/2 -translate-x-1/2 -translate-y-1/2 w-96 h-96 bg-cyan-400/10 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-4 sm:px-6 relative z-10 text-center",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3.5 py-1.5 rounded-full bg-cyan-950/60 border border-cyan-800/60 text-cyan-300 text-xs font-mono font-medium mb-6 backdrop-blur-sm",children:[e.jsx(b,{className:"w-3.5 h-3.5 text-cyan-400"}),e.jsxs("span",{children:["ANTHROPIC CLAUDE CODE & DESKTOP PLUGIN · v",t.version," · published ",t.releaseDate]})]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-extrabold tracking-tight text-slate-100 mb-6 max-w-4xl mx-auto leading-[1.1]",children:e.jsx(f,{text:"QECTOR Claude Plugin"})}),e.jsxs("p",{className:"text-lg md:text-xl text-slate-300 max-w-3xl mx-auto leading-relaxed mb-8",children:["Empower Claude with local Quantum Error Correction engineering. Release v2.0.1 runs on qector-decoder-v3 1.0.1. The default"," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"qector-secure"})," server is air-gapped, integrity-checked and validates every request and response against JSON Schema (12 tools). It ships with"," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"28 domain skills"}),","," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"5 specialized agents"})," and 11 slash commands; 29 research tools and 3 admin tools are opt-in. Every dependency is pinned by SHA-256, and releases are signed."]}),e.jsxs("div",{className:"max-w-2xl mx-auto bg-slate-950/90 border border-cyan-900/60 rounded-2xl p-5 mb-10 shadow-2xl backdrop-blur-md text-left",children:[e.jsxs("div",{className:"flex items-center justify-between pb-3 mb-3 border-b border-slate-800/80",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(i,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{className:"text-xs font-mono font-semibold uppercase tracking-wider text-slate-400",children:"Instant Marketplace Install"})]}),e.jsxs("button",{onClick:()=>p(n,x),className:"flex items-center gap-1.5 text-xs font-mono text-cyan-400 hover:text-cyan-300 transition-colors px-2.5 py-1 rounded bg-cyan-950/50 border border-cyan-800/40",children:[l?e.jsx(y,{className:"w-3.5 h-3.5 text-green-400"}):e.jsx(j,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:l?"Copied":"Copy"})]})]}),e.jsx("pre",{className:"font-mono text-sm text-cyan-300 overflow-x-auto whitespace-pre leading-relaxed",children:n})]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin",target:"_blank",rel:"noopener noreferrer",className:"px-6 py-3 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-sm transition-all shadow-lg shadow-cyan-400/20 inline-flex items-center gap-2",children:[e.jsx("span",{children:"GitHub Repository"}),e.jsx(v,{className:"w-4 h-4"})]}),e.jsxs(c,{to:"/mcp-server",className:"px-6 py-3 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-sm transition-all inline-flex items-center gap-2",children:[e.jsx("span",{children:"MCP Server Reference"}),e.jsx(N,{className:"w-4 h-4 text-cyan-400"})]})]}),e.jsx("p",{className:"text-xs text-slate-400 mt-6",children:"Independent plugin by iD01t Productions. Not affiliated with or endorsed by Anthropic."})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(w,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Local-First Security"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"Local stdio transport by default. Parity matrices, syndromes, quantum circuits, and simulation artifacts are processed on the host machine; verify your host environment if confidentiality matters."})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(o,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Strict Mathematics"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Decodes are checked against ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"H c = s (mod 2)"}),". Scored with logical cosets and Wilson 95% CIs."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(k,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"App-Free Library"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Built on the official ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"qector-decoder-v3 1.0.x"})," Rust/PyO3 wheel. No desktop GUI required."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(C,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Multi-Agent System"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"28 domain skills and 5 tailored agent personas designed for research, hardware design, verification, and engineering."})]})]})}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"DOMAIN SKILLS ECOSYSTEM"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"28 Grounded QEC Skills"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Each skill encodes verified domain rules and strict-math obligations to reduce hallucination risk and ground interactions in reproducible physics. The seven flagship skills below are a subset of the 28 skills shipped in the plugin."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:O.map(s=>e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800/90 flex flex-col justify-between hover:border-cyan-500/30 transition-all",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsx("span",{className:"font-mono text-sm font-bold text-cyan-400",children:s.name}),e.jsx("span",{className:"text-[11px] font-mono px-2 py-0.5 rounded bg-slate-800 text-slate-300 border border-slate-700",children:s.role})]}),e.jsx("p",{className:"text-sm text-slate-300 leading-relaxed mb-4",children:s.desc})]}),e.jsx("div",{className:"pt-3 border-t border-slate-800/80 space-y-1.5",children:s.keyFeatures.map(a=>e.jsxs("div",{className:"flex items-center gap-2 text-xs text-slate-400",children:[e.jsx(q,{className:"w-3.5 h-3.5 text-cyan-400 shrink-0"}),e.jsx("span",{children:a})]},a))})]},s.name))}),e.jsxs("div",{className:"mt-10",children:[e.jsx("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:"All 28 skills shipped in the plugin"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:T.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-cyan-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(S,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"AGENT ROLES & PERSONAS"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"5 Specialized QEC Agents"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Custom agent definitions for Claude Code configured with tailored instructions, prompt templates, and tool access boundaries."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:A.map(s=>e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2 font-mono text-xs text-cyan-400",children:[e.jsx(i,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:s.file})]}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-2",children:s.title}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:s.desc})]})},s.file))})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(E,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"MCP SERVER TOOL SURFACE"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Local MCP Servers, Air-Gapped by Default"}),e.jsxs("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:["The v2.0.1 release separates local JSON-RPC 2.0 stdio capabilities by risk and purpose. The default",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-secure "})," server (12 tools: the 8 stable tools below plus airgap_status, integrity_check, schema_catalog and audit_log_status) refuses network access and verifies its own files;",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-library "})," (8 stable tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-research "})," (29 provisional tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-admin "})," (3 explicitly enabled tools), and",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-desktop-mcp "})," (the safe Desktop profile)."]})]}),e.jsx("div",{className:"card-surface rounded-2xl border border-slate-800 overflow-hidden shadow-xl",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm",children:[e.jsx("thead",{className:"bg-slate-900/90 text-xs font-mono text-cyan-400 uppercase tracking-wider border-b border-slate-800",children:e.jsxs("tr",{children:[e.jsx("th",{className:"px-6 py-4",children:"Tool Name"}),e.jsx("th",{className:"px-6 py-4",children:"Functionality & Mathematical Invariant"})]})}),e.jsx("tbody",{className:"divide-y divide-slate-800/60 font-mono text-xs text-slate-300",children:D.map(s=>e.jsxs("tr",{className:"hover:bg-slate-900/40 transition-colors",children:[e.jsx("td",{className:"px-6 py-4 font-semibold text-cyan-300 whitespace-nowrap",children:s.name}),e.jsx("td",{className:"px-6 py-4 font-sans text-sm text-slate-400",children:s.desc})]},s.name))})]})})}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-research server · ",d.length," provisional tools"]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:d.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-slate-300",children:s},s))})]}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-admin server · ",m.length," privileged tools"]}),e.jsxs("p",{className:"text-xs text-slate-400 mb-3",children:["Disabled by default. Requires ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"QECTOR_ADMIN_ENABLED=1"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"confirm=true"})," for every administrative call."]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:m.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-gold-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Installation & Setup"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2",children:"Configure QECTOR Claude Plugin v2.0.1 for Claude Code or Claude Desktop in seconds."})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"1"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Claude Code Marketplace"})]}),e.jsx("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:"Install directly via Claude Code marketplace registration:"}),e.jsx(r,{code:`# 1. Add marketplace repository -claude plugin marketplace add GuillaumeLessard/qector-claude-plugin - -# 2. Install plugin -claude plugin install qector@qector-tools`,language:"bash"})]})}),e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"2"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Local Plugin Directory"})]}),e.jsxs("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:["Clone the source repository and launch with the ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"--plugin-dir"})," flag:"]}),e.jsx(r,{code:`git clone https://github.com/GuillaumeLessard/qector-claude-plugin.git -cd qector-claude-plugin -pip install --require-hashes -r requirements.lock -claude --plugin-dir .`,language:"bash"})]})})]}),e.jsxs("div",{className:"mt-8 card-surface p-6 rounded-2xl border border-slate-800",children:[e.jsxs("h3",{className:"text-lg font-bold text-slate-100 mb-2 flex items-center gap-2",children:[e.jsx(o,{className:"w-5 h-5 text-cyan-400"}),e.jsx("span",{children:"Mathematical Validation Gate"})]}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed mb-4",children:"Verify all 16 Reference Manual theorems and 29 executable proof obligations locally on your machine:"}),e.jsx(r,{code:`# Run the complete public reference manual mathematical gate -python scripts/run_manual_math_validation.py - -# Or run full pytest integration suite -python -m pytest tests/test_reference_manual_math.py -v`,language:"bash"})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6 mb-12",children:e.jsx("div",{className:"card-surface p-8 border border-cyan-900/50 relative overflow-hidden bg-gradient-to-br from-slate-950 via-surface/60 to-slate-950",children:e.jsxs("div",{className:"relative z-10 flex flex-col md:flex-row items-center justify-between gap-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-2xl font-extrabold text-slate-100 mb-2",children:"Download Distribution Packages"}),e.jsx("p",{className:"text-sm text-slate-400 max-w-xl leading-relaxed",children:"Signed release archives: the Claude Code plugin, Claude Desktop extensions (.mcpb, including an offline bundle with a pinned wheelhouse), SHA256SUMS with its signature, an SBOM and provenance."})]}),e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsxs("a",{href:t.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2 shadow-lg shadow-cyan-400/20",children:[e.jsx(L,{className:"w-4 h-4"}),e.jsxs("span",{children:["v",t.version," Release, Checksums & Signatures"]})]}),e.jsxs(c,{to:"/docs",className:"px-5 py-2.5 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2",children:[e.jsx(P,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{children:"Docs Hub"})]})]})]})})})]})}export{U as default}; diff --git a/assets/ClaudePlugin-DdB5MGg7.js b/assets/ClaudePlugin-DdB5MGg7.js deleted file mode 100644 index c255d8fe..00000000 --- a/assets/ClaudePlugin-DdB5MGg7.js +++ /dev/null @@ -1,13 +0,0 @@ -import{r as h,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,J as f,C as t}from"./index-BcbVjARk.js";import{N as g}from"./NeuralReveal-BflyZYSb.js";import{C as n}from"./releases-DiQz_IDu.js";import{S as b,T as o,c as y,d as j,E as v,f as N,L as w,a as i,g as k,W as C,h as _,i as q,A as S,j as E,D as L,B as P}from"./vendor-ui-B0ssGG4c.js";import{L as c}from"./vendor-PiU4YGcH.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const O=[{name:"qector-core",role:"Core Ground Truth",desc:"Verified platform facts, 8 library MCP tools, 5 stable decoders, and strict API grounding to prevent hallucination.",keyFeatures:["Grounds tool names & signatures","Enforces strict math boundary","Local verification"]},{name:"qector-math-foundations",role:"Mathematical Axioms",desc:"Theorems 1-16 executable obligations over GF(2), syndrome equivalence H c = s (mod 2), Wilson 95% CIs, and coset scoring.",keyFeatures:["Theorem 1 fail-closed verification","Theorem 2 logical coset scoring","Wilson score intervals"]},{name:"qector-developer",role:"SDK & Engineering",desc:"Integration guidance for qector-decoder-v3 Python SDK, parity-check matrix generation, Sinter/Stim adapters, and CI/CD testing.",keyFeatures:["Python SDK best practices","Matrix construction helpers","Local test automation"]},{name:"qector-researcher",role:"Quantum Information Science",desc:"Threshold discovery workflows, noise modeling, Monte Carlo error simulations, and academic paper reproduction.",keyFeatures:["Code-capacity sweeps","Noise model parameterization","Reproducible artifact export"]},{name:"qector-hardware-engineer",role:"Experimental & Cryogenic",desc:"Hardware constraint modeling, heavy-hex/surface graph mapping, physical error rate profiling, and latency budgets.",keyFeatures:["Physical qubit layout mapping","Hardware latency analysis","Cryogenic error budgets"]},{name:"qector-educator",role:"Pedagogy & Concepts",desc:"Interactive tutorial creation, mathematical explanations of syndrome decoding, MWPM matching, and BP-OSD.",keyFeatures:["Step-by-step decoding explanations","Interactive code walkthroughs","Visual homology concepts"]},{name:"qector-sysadmin",role:"Operations & Hygiene",desc:"Environment diagnostics, resource limits (MAX_CHECKS, MAX_QUBITS), safe file I/O, and deployment validation.",keyFeatures:["15-point runtime health check","DoS & memory limit guards","Platform compatibility audit"]}],T=["qector-architecture","qector-batch-decoding","qector-bp-osd","qector-codes-builder","qector-core","qector-decoders-deep-dive","qector-dem-pipeline","qector-deployment","qector-developer","qector-educator","qector-glossary","qector-hardware-engineer","qector-ler-methodology","qector-licensing","qector-math-foundations","qector-orchestration","qector-pymatching-compat","qector-release-engineering","qector-reproducibility","qector-researcher","qector-roadmap","qector-services","qector-sinter","qector-space-time","qector-sysadmin","qector-testing-strategy","qector-two-stage-css","qector-workbench"],R=[{file:"qec-developer.md",title:"QEC Software Engineer",desc:"Specialized in Python SDK integration, decoder benchmarking, matrix generation, and production deployment."},{file:"qec-researcher.md",title:"QEC Research Scientist",desc:"Specialized in academic literature review, threshold sweeps, Wilson confidence intervals, and Monte Carlo studies."},{file:"qec-validator.md",title:"Mathematical Proof Validator",desc:"Specialized in formal theorem checking, finite matrix verification, syndrome faithfulness, and local-only enforcement."},{file:"qec-sysadmin.md",title:"Systems & Runtime Engineer",desc:"Specialized in Python environment health, MCP server stdio management, resource bounds, and packaging."},{file:"qec-hardware-engineer.md",title:"Quantum Hardware Architect",desc:"Specialized in superconducting qubit topologies, heavy-hex grids, cryogenic latency constraints, and noise budgets."}],D=[{name:"list_code_families",desc:"Lists available code families (Rotated Surface, Toric, Ring, Repetition, Color, Heavy-Hex, Hypergraph Product)."},{name:"list_decoders",desc:"Lists the five stable decoder classes: UnionFind, FastUnionFind, Blossom (MWPM), SparseBlossom, NativeAuto."},{name:"get_license_info",desc:"Reads live offline licensing tier and feature flags from the installed qector-decoder-v3 package."},{name:"decode_syndrome",desc:"Decodes a binary syndrome with mandatory Theorem 1 fail-closed verification: H c = s (mod 2)."},{name:"decode_single",desc:"Executes a single-shot decode with logical-coset scoring (Theorem 2) against logical observables."},{name:"threshold_sweep",desc:"Runs device-local code-capacity sweeps with Wilson 95% confidence intervals and SHA-256 sealed artifacts."},{name:"build_code_from_matrix",desc:"Validates and compiles an arbitrary binary parity-check matrix with rank and observable analysis."},{name:"compat_report",desc:"Audits runtime health, wheel version, NumPy compatibility, and provisional feature boundaries."}],d=["artifacts_sha256","artifact_metadata_check","code_distance_check","code_export_matrices","code_family_info","code_logicals_inspect","compat_report","decode_faithfulness_check","dem_collapse_parallel","dem_inspect","env_block","glossary_lookup","hardware_probe","hot_path_microbench","license_active_check","logical_coset_score","pymatching_compat_check","qiskit_plugin_check","reproduction_command_lookup","sinter_decoder_list","sinter_task_template","stim_circuit_probe","theorem_lookup","wilson_ci","wilson_table","workload_hash","get_capability_matrix","get_evidence_policy","get_runtime_provenance"],m=["system_setup","configure_claude_desktop","workbench_probe"];function B(){const[r,x]=h.useState(!1),p=(s,a)=>{navigator.clipboard.writeText(s),a(!0),setTimeout(()=>a(!1),2e3)},l=`claude plugin marketplace add GuillaumeLessard/qector-claude-plugin -claude plugin install qector@qector-tools`;return e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"QECTOR Claude Plugin · Quantum Error Correction for Claude Code",description:"Official QECTOR Claude Code and Claude Desktop plugin v1.0.6. 28 skills, 5 agents, four MCP servers, and qector-decoder-v3 1.0.0 with local stdio-based decoding."}),e.jsx(f,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Claude Plugin",description:"Official QECTOR plugin v1.0.6 for Claude Code and Claude Desktop. 28 skills, 5 agents, four MCP servers, 8 stable library tools, 29 opt-in research tools, and 3 opt-in admin tools.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",softwareVersion:"1.0.6",author:{"@type":"Person",name:"Guillaume Lessard",url:"https://orcid.org/0009-0000-3465-3753"},offers:{"@type":"Offer",price:"0",priceCurrency:"USD"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-400/5 via-surface/40 to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/4 left-1/2 -translate-x-1/2 -translate-y-1/2 w-96 h-96 bg-cyan-400/10 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-4 sm:px-6 relative z-10 text-center",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3.5 py-1.5 rounded-full bg-cyan-950/60 border border-cyan-800/60 text-cyan-300 text-xs font-mono font-medium mb-6 backdrop-blur-sm",children:[e.jsx(b,{className:"w-3.5 h-3.5 text-cyan-400"}),e.jsxs("span",{children:["ANTHROPIC CLAUDE CODE & DESKTOP PLUGIN · v",n.version," · published ",n.releaseDate]})]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-extrabold tracking-tight text-slate-100 mb-6 max-w-4xl mx-auto leading-[1.1]",children:e.jsx(g,{text:"QECTOR Claude Plugin"})}),e.jsxs("p",{className:"text-lg md:text-xl text-slate-300 max-w-3xl mx-auto leading-relaxed mb-8",children:["Empower Claude with local Quantum Error Correction engineering. Release v1.0.6 adds marketplace compliance hardening and environment-agnostic setup. It includes"," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"28 domain skills"}),","," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"5 specialized agents"}),","," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"8 stable library tools"}),", 29 opt-in research tools, and 3 opt-in admin tools across four MCP servers. The default configuration uses local stdio transport."]}),e.jsxs("div",{className:"max-w-2xl mx-auto bg-slate-950/90 border border-cyan-900/60 rounded-2xl p-5 mb-10 shadow-2xl backdrop-blur-md text-left",children:[e.jsxs("div",{className:"flex items-center justify-between pb-3 mb-3 border-b border-slate-800/80",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(o,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{className:"text-xs font-mono font-semibold uppercase tracking-wider text-slate-400",children:"Instant Marketplace Install"})]}),e.jsxs("button",{onClick:()=>p(l,x),className:"flex items-center gap-1.5 text-xs font-mono text-cyan-400 hover:text-cyan-300 transition-colors px-2.5 py-1 rounded bg-cyan-950/50 border border-cyan-800/40",children:[r?e.jsx(y,{className:"w-3.5 h-3.5 text-green-400"}):e.jsx(j,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:r?"Copied":"Copy"})]})]}),e.jsx("pre",{className:"font-mono text-sm text-cyan-300 overflow-x-auto whitespace-pre leading-relaxed",children:l})]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin",target:"_blank",rel:"noopener noreferrer",className:"px-6 py-3 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-sm transition-all shadow-lg shadow-cyan-400/20 inline-flex items-center gap-2",children:[e.jsx("span",{children:"GitHub Repository"}),e.jsx(v,{className:"w-4 h-4"})]}),e.jsxs(c,{to:"/mcp-server",className:"px-6 py-3 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-sm transition-all inline-flex items-center gap-2",children:[e.jsx("span",{children:"MCP Server Reference"}),e.jsx(N,{className:"w-4 h-4 text-cyan-400"})]})]}),e.jsx("p",{className:"text-xs text-slate-400 mt-6",children:"Independent plugin by iD01t Productions. Not affiliated with or endorsed by Anthropic."})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(w,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Local-First Security"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"Local stdio transport by default. Parity matrices, syndromes, quantum circuits, and simulation artifacts are processed on the host machine; verify your host environment if confidentiality matters."})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(i,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Strict Mathematics"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Decodes are checked against ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"H c = s (mod 2)"}),". Scored with logical cosets and Wilson 95% CIs."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(k,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"App-Free Library"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Built on the official ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"qector-decoder-v3==1.0.0"})," Rust/PyO3 wheel. No desktop GUI required."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(C,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Multi-Agent System"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"28 domain skills and 5 tailored agent personas designed for research, hardware design, verification, and engineering."})]})]})}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"DOMAIN SKILLS ECOSYSTEM"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"28 Grounded QEC Skills"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Each skill encodes verified domain rules and strict-math obligations to reduce hallucination risk and ground interactions in reproducible physics. The seven flagship skills below are a subset of the 28 skills shipped in v1.0.6."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:O.map(s=>e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800/90 flex flex-col justify-between hover:border-cyan-500/30 transition-all",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsx("span",{className:"font-mono text-sm font-bold text-cyan-400",children:s.name}),e.jsx("span",{className:"text-[11px] font-mono px-2 py-0.5 rounded bg-slate-800 text-slate-300 border border-slate-700",children:s.role})]}),e.jsx("p",{className:"text-sm text-slate-300 leading-relaxed mb-4",children:s.desc})]}),e.jsx("div",{className:"pt-3 border-t border-slate-800/80 space-y-1.5",children:s.keyFeatures.map(a=>e.jsxs("div",{className:"flex items-center gap-2 text-xs text-slate-400",children:[e.jsx(q,{className:"w-3.5 h-3.5 text-cyan-400 shrink-0"}),e.jsx("span",{children:a})]},a))})]},s.name))}),e.jsxs("div",{className:"mt-10",children:[e.jsx("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:"All 28 skills shipped in the plugin"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:T.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-cyan-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(S,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"AGENT ROLES & PERSONAS"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"5 Specialized QEC Agents"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Custom agent definitions for Claude Code configured with tailored instructions, prompt templates, and tool access boundaries."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:R.map(s=>e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2 font-mono text-xs text-cyan-400",children:[e.jsx(o,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:s.file})]}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-2",children:s.title}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:s.desc})]})},s.file))})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(E,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"MCP SERVER TOOL SURFACE"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Four Local MCP Servers"}),e.jsxs("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:["The v1.0.6 release separates local JSON-RPC 2.0 stdio capabilities by risk and purpose:",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-library "})," (8 stable tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-research "})," (29 provisional tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-admin "})," (3 explicitly enabled tools), and",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-desktop-mcp "})," (the safe Desktop profile)."]})]}),e.jsx("div",{className:"card-surface rounded-2xl border border-slate-800 overflow-hidden shadow-xl",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm",children:[e.jsx("thead",{className:"bg-slate-900/90 text-xs font-mono text-cyan-400 uppercase tracking-wider border-b border-slate-800",children:e.jsxs("tr",{children:[e.jsx("th",{className:"px-6 py-4",children:"Tool Name"}),e.jsx("th",{className:"px-6 py-4",children:"Functionality & Mathematical Invariant"})]})}),e.jsx("tbody",{className:"divide-y divide-slate-800/60 font-mono text-xs text-slate-300",children:D.map(s=>e.jsxs("tr",{className:"hover:bg-slate-900/40 transition-colors",children:[e.jsx("td",{className:"px-6 py-4 font-semibold text-cyan-300 whitespace-nowrap",children:s.name}),e.jsx("td",{className:"px-6 py-4 font-sans text-sm text-slate-400",children:s.desc})]},s.name))})]})})}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-research server · ",d.length," provisional tools"]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:d.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-slate-300",children:s},s))})]}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-admin server · ",m.length," privileged tools"]}),e.jsxs("p",{className:"text-xs text-slate-400 mb-3",children:["Disabled by default. Requires ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"QECTOR_ADMIN_ENABLED=1"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"confirm=true"})," for every administrative call."]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:m.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-gold-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Installation & Setup"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2",children:"Configure QECTOR Claude Plugin v1.0.6 for Claude Code or Claude Desktop in seconds."})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"1"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Claude Code Marketplace"})]}),e.jsx("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:"Install directly via Claude Code marketplace registration:"}),e.jsx(t,{code:`# 1. Add marketplace repository -claude plugin marketplace add GuillaumeLessard/qector-claude-plugin - -# 2. Install plugin -claude plugin install qector@qector-tools`,language:"bash"})]})}),e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"2"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Local Plugin Directory"})]}),e.jsxs("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:["Clone the source repository and launch with the ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"--plugin-dir"})," flag:"]}),e.jsx(t,{code:`git clone https://github.com/GuillaumeLessard/qector-claude-plugin.git -cd qector-claude-plugin -pip install -r requirements.txt -claude --plugin-dir .`,language:"bash"})]})})]}),e.jsxs("div",{className:"mt-8 card-surface p-6 rounded-2xl border border-slate-800",children:[e.jsxs("h3",{className:"text-lg font-bold text-slate-100 mb-2 flex items-center gap-2",children:[e.jsx(i,{className:"w-5 h-5 text-cyan-400"}),e.jsx("span",{children:"Mathematical Validation Gate"})]}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed mb-4",children:"Verify all 16 Reference Manual theorems and 29 executable proof obligations locally on your machine:"}),e.jsx(t,{code:`# Run the complete public reference manual mathematical gate -python scripts/run_manual_math_validation.py - -# Or run full pytest integration suite -python -m pytest tests/test_reference_manual_math.py -v`,language:"bash"})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6 mb-12",children:e.jsx("div",{className:"card-surface p-8 border border-cyan-900/50 relative overflow-hidden bg-gradient-to-br from-slate-950 via-surface/60 to-slate-950",children:e.jsxs("div",{className:"relative z-10 flex flex-col md:flex-row items-center justify-between gap-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-2xl font-extrabold text-slate-100 mb-2",children:"Download Distribution Packages"}),e.jsx("p",{className:"text-sm text-slate-400 max-w-xl leading-relaxed",children:"Pre-packaged standalone ZIP archives formatted specifically for the Claude.ai custom-skill uploader (forward-slash path normalized) and Claude Code multi-skill plugin distributions."})]}),e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin/releases/tag/v1.0.6",target:"_blank",rel:"noopener noreferrer",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2 shadow-lg shadow-cyan-400/20",children:[e.jsx(L,{className:"w-4 h-4"}),e.jsx("span",{children:"v1.0.6 Release & Checksums"})]}),e.jsxs(c,{to:"/docs",className:"px-5 py-2.5 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2",children:[e.jsx(P,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{children:"Docs Hub"})]})]})]})})})]})}export{B as default}; diff --git a/assets/ClaudePlugin-Di39W-hr.js b/assets/ClaudePlugin-Di39W-hr.js deleted file mode 100644 index ef3e3026..00000000 --- a/assets/ClaudePlugin-Di39W-hr.js +++ /dev/null @@ -1,13 +0,0 @@ -import{r as h,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,J as g,L as i,C as r}from"./index-DayaklK-.js";import{N as f}from"./NeuralReveal-uYarhiMA.js";import{C as t}from"./releases--9GgxpSb.js";import{S as b,T as o,c as y,d as j,E as v,f as N,L as w,a as c,g as k,W as C,h as _,i as q,A as S,j as E,D as L,B as P}from"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const O=[{name:"qector-core",role:"Core Ground Truth",desc:"Verified platform facts, 8 library MCP tools, 5 stable decoders, and strict API grounding to prevent hallucination.",keyFeatures:["Grounds tool names & signatures","Enforces strict math boundary","Local verification"]},{name:"qector-math-foundations",role:"Mathematical Axioms",desc:"Theorems 1-16 executable obligations over GF(2), syndrome equivalence H c = s (mod 2), Wilson 95% CIs, and coset scoring.",keyFeatures:["Theorem 1 fail-closed verification","Theorem 2 logical coset scoring","Wilson score intervals"]},{name:"qector-developer",role:"SDK & Engineering",desc:"Integration guidance for qector-decoder-v3 Python SDK, parity-check matrix generation, Sinter/Stim adapters, and CI/CD testing.",keyFeatures:["Python SDK best practices","Matrix construction helpers","Local test automation"]},{name:"qector-researcher",role:"Quantum Information Science",desc:"Threshold discovery workflows, noise modeling, Monte Carlo error simulations, and academic paper reproduction.",keyFeatures:["Code-capacity sweeps","Noise model parameterization","Reproducible artifact export"]},{name:"qector-hardware-engineer",role:"Experimental & Cryogenic",desc:"Hardware constraint modeling, heavy-hex/surface graph mapping, physical error rate profiling, and latency budgets.",keyFeatures:["Physical qubit layout mapping","Hardware latency analysis","Cryogenic error budgets"]},{name:"qector-educator",role:"Pedagogy & Concepts",desc:"Interactive tutorial creation, mathematical explanations of syndrome decoding, MWPM matching, and BP-OSD.",keyFeatures:["Step-by-step decoding explanations","Interactive code walkthroughs","Visual homology concepts"]},{name:"qector-sysadmin",role:"Operations & Hygiene",desc:"Environment diagnostics, resource limits (MAX_CHECKS, MAX_QUBITS), safe file I/O, and deployment validation.",keyFeatures:["15-point runtime health check","DoS & memory limit guards","Platform compatibility audit"]}],T=["qector-architecture","qector-batch-decoding","qector-bp-osd","qector-codes-builder","qector-core","qector-decoders-deep-dive","qector-dem-pipeline","qector-deployment","qector-developer","qector-educator","qector-glossary","qector-hardware-engineer","qector-ler-methodology","qector-licensing","qector-math-foundations","qector-orchestration","qector-pymatching-compat","qector-release-engineering","qector-reproducibility","qector-researcher","qector-roadmap","qector-services","qector-sinter","qector-space-time","qector-sysadmin","qector-testing-strategy","qector-two-stage-css","qector-workbench"],A=[{file:"qec-developer.md",title:"QEC Software Engineer",desc:"Specialized in Python SDK integration, decoder benchmarking, matrix generation, and production deployment."},{file:"qec-researcher.md",title:"QEC Research Scientist",desc:"Specialized in academic literature review, threshold sweeps, Wilson confidence intervals, and Monte Carlo studies."},{file:"qec-validator.md",title:"Mathematical Proof Validator",desc:"Specialized in formal theorem checking, finite matrix verification, syndrome faithfulness, and local-only enforcement."},{file:"qec-sysadmin.md",title:"Systems & Runtime Engineer",desc:"Specialized in Python environment health, MCP server stdio management, resource bounds, and packaging."},{file:"qec-hardware-engineer.md",title:"Quantum Hardware Architect",desc:"Specialized in superconducting qubit topologies, heavy-hex grids, cryogenic latency constraints, and noise budgets."}],D=[{name:"list_code_families",desc:"Lists available code families (Rotated Surface, Toric, Ring, Repetition, Color, Heavy-Hex, Hypergraph Product)."},{name:"list_decoders",desc:"Lists the five stable decoder classes: UnionFind, FastUnionFind, Blossom (MWPM), SparseBlossom, NativeAuto."},{name:"get_license_info",desc:"Reads live offline licensing tier and feature flags from the installed qector-decoder-v3 package."},{name:"decode_syndrome",desc:"Decodes a binary syndrome with mandatory Theorem 1 fail-closed verification: H c = s (mod 2)."},{name:"decode_single",desc:"Executes a single-shot decode with logical-coset scoring (Theorem 2) against logical observables."},{name:"threshold_sweep",desc:"Runs device-local code-capacity sweeps with Wilson 95% confidence intervals and SHA-256 sealed artifacts."},{name:"build_code_from_matrix",desc:"Validates and compiles an arbitrary binary parity-check matrix with rank and observable analysis."},{name:"compat_report",desc:"Audits runtime health, wheel version, NumPy compatibility, and provisional feature boundaries."}],d=["artifacts_sha256","artifact_metadata_check","code_distance_check","code_export_matrices","code_family_info","code_logicals_inspect","compat_report","decode_faithfulness_check","dem_collapse_parallel","dem_inspect","env_block","glossary_lookup","hardware_probe","hot_path_microbench","license_active_check","logical_coset_score","pymatching_compat_check","qiskit_plugin_check","reproduction_command_lookup","sinter_decoder_list","sinter_task_template","stim_circuit_probe","theorem_lookup","wilson_ci","wilson_table","workload_hash","get_capability_matrix","get_evidence_policy","get_runtime_provenance"],m=["system_setup","configure_claude_desktop","workbench_probe"];function Q(){const[l,x]=h.useState(!1),p=(s,a)=>{navigator.clipboard.writeText(s),a(!0),setTimeout(()=>a(!1),2e3)},n=`claude plugin marketplace add GuillaumeLessard/qector-claude-plugin -claude plugin install qector@qector-tools`;return e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"QECTOR Claude Plugin · Quantum Error Correction for Claude Code",description:"Official QECTOR Claude Code and Claude Desktop plugin v2.0.1: air-gapped qector-secure MCP server (12 schema-validated tools), 28 skills and 5 agents on qector-decoder-v3 1.0.1."}),e.jsx(g,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Claude Plugin",description:"Official QECTOR plugin v2.0.1 for Claude Code and Claude Desktop: air-gapped qector-secure MCP server with 12 schema-validated tools, 28 skills, 5 agents, 11 commands; 29 research and 3 admin tools are opt-in.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",softwareVersion:t.version,author:{"@type":"Person",name:"Guillaume Lessard",url:"https://orcid.org/0009-0000-3465-3753"},offers:{"@type":"Offer",price:"0",priceCurrency:"USD"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-400/5 via-surface/40 to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/4 left-1/2 -translate-x-1/2 -translate-y-1/2 w-96 h-96 bg-cyan-400/10 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-4 sm:px-6 relative z-10 text-center",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3.5 py-1.5 rounded-full bg-cyan-950/60 border border-cyan-800/60 text-cyan-300 text-xs font-mono font-medium mb-6 backdrop-blur-sm",children:[e.jsx(b,{className:"w-3.5 h-3.5 text-cyan-400"}),e.jsxs("span",{children:["ANTHROPIC CLAUDE CODE & DESKTOP PLUGIN · v",t.version," · published ",t.releaseDate]})]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-extrabold tracking-tight text-slate-100 mb-6 max-w-4xl mx-auto leading-[1.1]",children:e.jsx(f,{text:"QECTOR Claude Plugin"})}),e.jsxs("p",{className:"text-lg md:text-xl text-slate-300 max-w-3xl mx-auto leading-relaxed mb-8",children:["Empower Claude with local Quantum Error Correction engineering. Release v2.0.1 runs on qector-decoder-v3 1.0.1. The default"," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"qector-secure"})," server is air-gapped, integrity-checked and validates every request and response against JSON Schema (12 tools). It ships with"," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"28 domain skills"}),","," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"5 specialized agents"})," and 11 slash commands; 29 research tools and 3 admin tools are opt-in. Every dependency is pinned by SHA-256, and releases are signed."]}),e.jsxs("div",{className:"max-w-2xl mx-auto bg-slate-950/90 border border-cyan-900/60 rounded-2xl p-5 mb-10 shadow-2xl backdrop-blur-md text-left",children:[e.jsxs("div",{className:"flex items-center justify-between pb-3 mb-3 border-b border-slate-800/80",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(o,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{className:"text-xs font-mono font-semibold uppercase tracking-wider text-slate-400",children:"Instant Marketplace Install"})]}),e.jsxs("button",{onClick:()=>p(n,x),className:"flex items-center gap-1.5 text-xs font-mono text-cyan-400 hover:text-cyan-300 transition-colors px-2.5 py-1 rounded bg-cyan-950/50 border border-cyan-800/40",children:[l?e.jsx(y,{className:"w-3.5 h-3.5 text-green-400"}):e.jsx(j,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:l?"Copied":"Copy"})]})]}),e.jsx("pre",{className:"font-mono text-sm text-cyan-300 overflow-x-auto whitespace-pre leading-relaxed",children:n})]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin",target:"_blank",rel:"noopener noreferrer",className:"px-6 py-3 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-sm transition-all shadow-lg shadow-cyan-400/20 inline-flex items-center gap-2",children:[e.jsx("span",{children:"GitHub Repository"}),e.jsx(v,{className:"w-4 h-4"})]}),e.jsxs(i,{to:"/mcp-server",className:"px-6 py-3 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-sm transition-all inline-flex items-center gap-2",children:[e.jsx("span",{children:"MCP Server Reference"}),e.jsx(N,{className:"w-4 h-4 text-cyan-400"})]})]}),e.jsx("p",{className:"text-xs text-slate-400 mt-6",children:"Independent plugin by iD01t Productions. Not affiliated with or endorsed by Anthropic."})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(w,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Local-First Security"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"Local stdio transport by default. Parity matrices, syndromes, quantum circuits, and simulation artifacts are processed on the host machine; verify your host environment if confidentiality matters."})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(c,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Strict Mathematics"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Decodes are checked against ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"H c = s (mod 2)"}),". Scored with logical cosets and Wilson 95% CIs."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(k,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"App-Free Library"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Built on the official ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"qector-decoder-v3 1.0.x"})," Rust/PyO3 wheel. No desktop GUI required."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(C,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Multi-Agent System"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"28 domain skills and 5 tailored agent personas designed for research, hardware design, verification, and engineering."})]})]})}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"DOMAIN SKILLS ECOSYSTEM"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"28 Grounded QEC Skills"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Each skill encodes verified domain rules and strict-math obligations to reduce hallucination risk and ground interactions in reproducible physics. The seven flagship skills below are a subset of the 28 skills shipped in the plugin."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:O.map(s=>e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800/90 flex flex-col justify-between hover:border-cyan-500/30 transition-all",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsx("span",{className:"font-mono text-sm font-bold text-cyan-400",children:s.name}),e.jsx("span",{className:"text-[11px] font-mono px-2 py-0.5 rounded bg-slate-800 text-slate-300 border border-slate-700",children:s.role})]}),e.jsx("p",{className:"text-sm text-slate-300 leading-relaxed mb-4",children:s.desc})]}),e.jsx("div",{className:"pt-3 border-t border-slate-800/80 space-y-1.5",children:s.keyFeatures.map(a=>e.jsxs("div",{className:"flex items-center gap-2 text-xs text-slate-400",children:[e.jsx(q,{className:"w-3.5 h-3.5 text-cyan-400 shrink-0"}),e.jsx("span",{children:a})]},a))})]},s.name))}),e.jsxs("div",{className:"mt-10",children:[e.jsx("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:"All 28 skills shipped in the plugin"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:T.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-cyan-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(S,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"AGENT ROLES & PERSONAS"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"5 Specialized QEC Agents"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Custom agent definitions for Claude Code configured with tailored instructions, prompt templates, and tool access boundaries."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:A.map(s=>e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2 font-mono text-xs text-cyan-400",children:[e.jsx(o,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:s.file})]}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-2",children:s.title}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:s.desc})]})},s.file))})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(E,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"MCP SERVER TOOL SURFACE"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Local MCP Servers, Air-Gapped by Default"}),e.jsxs("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:["The v2.0.1 release separates local JSON-RPC 2.0 stdio capabilities by risk and purpose. The default",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-secure "})," server (12 tools: the 8 stable tools below plus airgap_status, integrity_check, schema_catalog and audit_log_status) refuses network access and verifies its own files;",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-library "})," (8 stable tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-research "})," (29 provisional tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-admin "})," (3 explicitly enabled tools), and",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-desktop-mcp "})," (the safe Desktop profile)."]})]}),e.jsx("div",{className:"card-surface rounded-2xl border border-slate-800 overflow-hidden shadow-xl",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm",children:[e.jsx("thead",{className:"bg-slate-900/90 text-xs font-mono text-cyan-400 uppercase tracking-wider border-b border-slate-800",children:e.jsxs("tr",{children:[e.jsx("th",{className:"px-6 py-4",children:"Tool Name"}),e.jsx("th",{className:"px-6 py-4",children:"Functionality & Mathematical Invariant"})]})}),e.jsx("tbody",{className:"divide-y divide-slate-800/60 font-mono text-xs text-slate-300",children:D.map(s=>e.jsxs("tr",{className:"hover:bg-slate-900/40 transition-colors",children:[e.jsx("td",{className:"px-6 py-4 font-semibold text-cyan-300 whitespace-nowrap",children:s.name}),e.jsx("td",{className:"px-6 py-4 font-sans text-sm text-slate-400",children:s.desc})]},s.name))})]})})}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-research server · ",d.length," provisional tools"]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:d.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-slate-300",children:s},s))})]}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-admin server · ",m.length," privileged tools"]}),e.jsxs("p",{className:"text-xs text-slate-400 mb-3",children:["Disabled by default. Requires ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"QECTOR_ADMIN_ENABLED=1"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"confirm=true"})," for every administrative call."]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:m.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-gold-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Installation & Setup"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2",children:"Configure QECTOR Claude Plugin v2.0.1 for Claude Code or Claude Desktop in seconds."})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"1"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Claude Code Marketplace"})]}),e.jsx("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:"Install directly via Claude Code marketplace registration:"}),e.jsx(r,{code:`# 1. Add marketplace repository -claude plugin marketplace add GuillaumeLessard/qector-claude-plugin - -# 2. Install plugin -claude plugin install qector@qector-tools`,language:"bash"})]})}),e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"2"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Local Plugin Directory"})]}),e.jsxs("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:["Clone the source repository and launch with the ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"--plugin-dir"})," flag:"]}),e.jsx(r,{code:`git clone https://github.com/GuillaumeLessard/qector-claude-plugin.git -cd qector-claude-plugin -pip install --require-hashes -r requirements.lock -claude --plugin-dir .`,language:"bash"})]})})]}),e.jsxs("div",{className:"mt-8 card-surface p-6 rounded-2xl border border-slate-800",children:[e.jsxs("h3",{className:"text-lg font-bold text-slate-100 mb-2 flex items-center gap-2",children:[e.jsx(c,{className:"w-5 h-5 text-cyan-400"}),e.jsx("span",{children:"Mathematical Validation Gate"})]}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed mb-4",children:"Verify all 16 Reference Manual theorems and 29 executable proof obligations locally on your machine:"}),e.jsx(r,{code:`# Run the complete public reference manual mathematical gate -python scripts/run_manual_math_validation.py - -# Or run full pytest integration suite -python -m pytest tests/test_reference_manual_math.py -v`,language:"bash"})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6 mb-12",children:e.jsx("div",{className:"card-surface p-8 border border-cyan-900/50 relative overflow-hidden bg-gradient-to-br from-slate-950 via-surface/60 to-slate-950",children:e.jsxs("div",{className:"relative z-10 flex flex-col md:flex-row items-center justify-between gap-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-2xl font-extrabold text-slate-100 mb-2",children:"Download Distribution Packages"}),e.jsx("p",{className:"text-sm text-slate-400 max-w-xl leading-relaxed",children:"Signed release archives: the Claude Code plugin, Claude Desktop extensions (.mcpb, including an offline bundle with a pinned wheelhouse), SHA256SUMS with its signature, an SBOM and provenance."})]}),e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsxs("a",{href:t.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2 shadow-lg shadow-cyan-400/20",children:[e.jsx(L,{className:"w-4 h-4"}),e.jsxs("span",{children:["v",t.version," Release, Checksums & Signatures"]})]}),e.jsxs(i,{to:"/docs",className:"px-5 py-2.5 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2",children:[e.jsx(P,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{children:"Docs Hub"})]})]})]})})})]})}export{Q as default}; diff --git a/assets/ClaudePlugin-IaKl8Ymk.js b/assets/ClaudePlugin-IaKl8Ymk.js deleted file mode 100644 index 1b3ccbd9..00000000 --- a/assets/ClaudePlugin-IaKl8Ymk.js +++ /dev/null @@ -1,13 +0,0 @@ -import{r as h,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,J as f,C as t}from"./index-CpdATiEY.js";import{N as g}from"./NeuralReveal-BflyZYSb.js";import{C as n}from"./releases-DiQz_IDu.js";import{S as b,T as o,c as y,d as j,E as v,f as N,L as w,a as i,g as k,W as C,h as _,i as q,A as S,j as E,D as L,B as P}from"./vendor-ui-B0ssGG4c.js";import{L as c}from"./vendor-PiU4YGcH.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const O=[{name:"qector-core",role:"Core Ground Truth",desc:"Verified platform facts, 8 library MCP tools, 5 stable decoders, and strict API grounding to prevent hallucination.",keyFeatures:["Grounds tool names & signatures","Enforces strict math boundary","Local verification"]},{name:"qector-math-foundations",role:"Mathematical Axioms",desc:"Theorems 1-16 executable obligations over GF(2), syndrome equivalence H c = s (mod 2), Wilson 95% CIs, and coset scoring.",keyFeatures:["Theorem 1 fail-closed verification","Theorem 2 logical coset scoring","Wilson score intervals"]},{name:"qector-developer",role:"SDK & Engineering",desc:"Integration guidance for qector-decoder-v3 Python SDK, parity-check matrix generation, Sinter/Stim adapters, and CI/CD testing.",keyFeatures:["Python SDK best practices","Matrix construction helpers","Local test automation"]},{name:"qector-researcher",role:"Quantum Information Science",desc:"Threshold discovery workflows, noise modeling, Monte Carlo error simulations, and academic paper reproduction.",keyFeatures:["Code-capacity sweeps","Noise model parameterization","Reproducible artifact export"]},{name:"qector-hardware-engineer",role:"Experimental & Cryogenic",desc:"Hardware constraint modeling, heavy-hex/surface graph mapping, physical error rate profiling, and latency budgets.",keyFeatures:["Physical qubit layout mapping","Hardware latency analysis","Cryogenic error budgets"]},{name:"qector-educator",role:"Pedagogy & Concepts",desc:"Interactive tutorial creation, mathematical explanations of syndrome decoding, MWPM matching, and BP-OSD.",keyFeatures:["Step-by-step decoding explanations","Interactive code walkthroughs","Visual homology concepts"]},{name:"qector-sysadmin",role:"Operations & Hygiene",desc:"Environment diagnostics, resource limits (MAX_CHECKS, MAX_QUBITS), safe file I/O, and deployment validation.",keyFeatures:["15-point runtime health check","DoS & memory limit guards","Platform compatibility audit"]}],T=["qector-architecture","qector-batch-decoding","qector-bp-osd","qector-codes-builder","qector-core","qector-decoders-deep-dive","qector-dem-pipeline","qector-deployment","qector-developer","qector-educator","qector-glossary","qector-hardware-engineer","qector-ler-methodology","qector-licensing","qector-math-foundations","qector-orchestration","qector-pymatching-compat","qector-release-engineering","qector-reproducibility","qector-researcher","qector-roadmap","qector-services","qector-sinter","qector-space-time","qector-sysadmin","qector-testing-strategy","qector-two-stage-css","qector-workbench"],R=[{file:"qec-developer.md",title:"QEC Software Engineer",desc:"Specialized in Python SDK integration, decoder benchmarking, matrix generation, and production deployment."},{file:"qec-researcher.md",title:"QEC Research Scientist",desc:"Specialized in academic literature review, threshold sweeps, Wilson confidence intervals, and Monte Carlo studies."},{file:"qec-validator.md",title:"Mathematical Proof Validator",desc:"Specialized in formal theorem checking, finite matrix verification, syndrome faithfulness, and local-only enforcement."},{file:"qec-sysadmin.md",title:"Systems & Runtime Engineer",desc:"Specialized in Python environment health, MCP server stdio management, resource bounds, and packaging."},{file:"qec-hardware-engineer.md",title:"Quantum Hardware Architect",desc:"Specialized in superconducting qubit topologies, heavy-hex grids, cryogenic latency constraints, and noise budgets."}],D=[{name:"list_code_families",desc:"Lists available code families (Rotated Surface, Toric, Ring, Repetition, Color, Heavy-Hex, Hypergraph Product)."},{name:"list_decoders",desc:"Lists the five stable decoder classes: UnionFind, FastUnionFind, Blossom (MWPM), SparseBlossom, NativeAuto."},{name:"get_license_info",desc:"Reads live offline licensing tier and feature flags from the installed qector-decoder-v3 package."},{name:"decode_syndrome",desc:"Decodes a binary syndrome with mandatory Theorem 1 fail-closed verification: H c = s (mod 2)."},{name:"decode_single",desc:"Executes a single-shot decode with logical-coset scoring (Theorem 2) against logical observables."},{name:"threshold_sweep",desc:"Runs device-local code-capacity sweeps with Wilson 95% confidence intervals and SHA-256 sealed artifacts."},{name:"build_code_from_matrix",desc:"Validates and compiles an arbitrary binary parity-check matrix with rank and observable analysis."},{name:"compat_report",desc:"Audits runtime health, wheel version, NumPy compatibility, and provisional feature boundaries."}],d=["artifacts_sha256","artifact_metadata_check","code_distance_check","code_export_matrices","code_family_info","code_logicals_inspect","compat_report","decode_faithfulness_check","dem_collapse_parallel","dem_inspect","env_block","glossary_lookup","hardware_probe","hot_path_microbench","license_active_check","logical_coset_score","pymatching_compat_check","qiskit_plugin_check","reproduction_command_lookup","sinter_decoder_list","sinter_task_template","stim_circuit_probe","theorem_lookup","wilson_ci","wilson_table","workload_hash","get_capability_matrix","get_evidence_policy","get_runtime_provenance"],m=["system_setup","configure_claude_desktop","workbench_probe"];function B(){const[r,x]=h.useState(!1),p=(s,a)=>{navigator.clipboard.writeText(s),a(!0),setTimeout(()=>a(!1),2e3)},l=`claude plugin marketplace add GuillaumeLessard/qector-claude-plugin -claude plugin install qector@qector-tools`;return e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"QECTOR Claude Plugin · Quantum Error Correction for Claude Code",description:"Official QECTOR Claude Code and Claude Desktop plugin v1.0.6. 28 skills, 5 agents, four MCP servers, and qector-decoder-v3 1.0.0 with local stdio-based decoding."}),e.jsx(f,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Claude Plugin",description:"Official QECTOR plugin v1.0.6 for Claude Code and Claude Desktop. 28 skills, 5 agents, four MCP servers, 8 stable library tools, 29 opt-in research tools, and 3 opt-in admin tools.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",softwareVersion:"1.0.6",author:{"@type":"Person",name:"Guillaume Lessard",url:"https://orcid.org/0009-0000-3465-3753"},offers:{"@type":"Offer",price:"0",priceCurrency:"USD"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-400/5 via-surface/40 to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/4 left-1/2 -translate-x-1/2 -translate-y-1/2 w-96 h-96 bg-cyan-400/10 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-4 sm:px-6 relative z-10 text-center",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3.5 py-1.5 rounded-full bg-cyan-950/60 border border-cyan-800/60 text-cyan-300 text-xs font-mono font-medium mb-6 backdrop-blur-sm",children:[e.jsx(b,{className:"w-3.5 h-3.5 text-cyan-400"}),e.jsxs("span",{children:["ANTHROPIC CLAUDE CODE & DESKTOP PLUGIN · v",n.version," · published ",n.releaseDate]})]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-extrabold tracking-tight text-slate-100 mb-6 max-w-4xl mx-auto leading-[1.1]",children:e.jsx(g,{text:"QECTOR Claude Plugin"})}),e.jsxs("p",{className:"text-lg md:text-xl text-slate-300 max-w-3xl mx-auto leading-relaxed mb-8",children:["Empower Claude with local Quantum Error Correction engineering. Release v1.0.6 adds marketplace compliance hardening and environment-agnostic setup. It includes"," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"28 domain skills"}),","," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"5 specialized agents"}),","," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"8 stable library tools"}),", 29 opt-in research tools, and 3 opt-in admin tools across four MCP servers. The default configuration uses local stdio transport."]}),e.jsxs("div",{className:"max-w-2xl mx-auto bg-slate-950/90 border border-cyan-900/60 rounded-2xl p-5 mb-10 shadow-2xl backdrop-blur-md text-left",children:[e.jsxs("div",{className:"flex items-center justify-between pb-3 mb-3 border-b border-slate-800/80",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(o,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{className:"text-xs font-mono font-semibold uppercase tracking-wider text-slate-400",children:"Instant Marketplace Install"})]}),e.jsxs("button",{onClick:()=>p(l,x),className:"flex items-center gap-1.5 text-xs font-mono text-cyan-400 hover:text-cyan-300 transition-colors px-2.5 py-1 rounded bg-cyan-950/50 border border-cyan-800/40",children:[r?e.jsx(y,{className:"w-3.5 h-3.5 text-green-400"}):e.jsx(j,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:r?"Copied":"Copy"})]})]}),e.jsx("pre",{className:"font-mono text-sm text-cyan-300 overflow-x-auto whitespace-pre leading-relaxed",children:l})]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin",target:"_blank",rel:"noopener noreferrer",className:"px-6 py-3 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-sm transition-all shadow-lg shadow-cyan-400/20 inline-flex items-center gap-2",children:[e.jsx("span",{children:"GitHub Repository"}),e.jsx(v,{className:"w-4 h-4"})]}),e.jsxs(c,{to:"/mcp-server",className:"px-6 py-3 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-sm transition-all inline-flex items-center gap-2",children:[e.jsx("span",{children:"MCP Server Reference"}),e.jsx(N,{className:"w-4 h-4 text-cyan-400"})]})]}),e.jsx("p",{className:"text-xs text-slate-400 mt-6",children:"Independent plugin by iD01t Productions. Not affiliated with or endorsed by Anthropic."})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(w,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Local-First Security"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"Local stdio transport by default. Parity matrices, syndromes, quantum circuits, and simulation artifacts are processed on the host machine; verify your host environment if confidentiality matters."})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(i,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Strict Mathematics"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Decodes are checked against ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"H c = s (mod 2)"}),". Scored with logical cosets and Wilson 95% CIs."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(k,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"App-Free Library"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Built on the official ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"qector-decoder-v3 1.0.x"})," Rust/PyO3 wheel. No desktop GUI required."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(C,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Multi-Agent System"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"28 domain skills and 5 tailored agent personas designed for research, hardware design, verification, and engineering."})]})]})}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"DOMAIN SKILLS ECOSYSTEM"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"28 Grounded QEC Skills"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Each skill encodes verified domain rules and strict-math obligations to reduce hallucination risk and ground interactions in reproducible physics. The seven flagship skills below are a subset of the 28 skills shipped in v1.0.6."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:O.map(s=>e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800/90 flex flex-col justify-between hover:border-cyan-500/30 transition-all",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsx("span",{className:"font-mono text-sm font-bold text-cyan-400",children:s.name}),e.jsx("span",{className:"text-[11px] font-mono px-2 py-0.5 rounded bg-slate-800 text-slate-300 border border-slate-700",children:s.role})]}),e.jsx("p",{className:"text-sm text-slate-300 leading-relaxed mb-4",children:s.desc})]}),e.jsx("div",{className:"pt-3 border-t border-slate-800/80 space-y-1.5",children:s.keyFeatures.map(a=>e.jsxs("div",{className:"flex items-center gap-2 text-xs text-slate-400",children:[e.jsx(q,{className:"w-3.5 h-3.5 text-cyan-400 shrink-0"}),e.jsx("span",{children:a})]},a))})]},s.name))}),e.jsxs("div",{className:"mt-10",children:[e.jsx("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:"All 28 skills shipped in the plugin"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:T.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-cyan-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(S,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"AGENT ROLES & PERSONAS"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"5 Specialized QEC Agents"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Custom agent definitions for Claude Code configured with tailored instructions, prompt templates, and tool access boundaries."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:R.map(s=>e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2 font-mono text-xs text-cyan-400",children:[e.jsx(o,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:s.file})]}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-2",children:s.title}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:s.desc})]})},s.file))})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(E,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"MCP SERVER TOOL SURFACE"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Four Local MCP Servers"}),e.jsxs("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:["The v1.0.6 release separates local JSON-RPC 2.0 stdio capabilities by risk and purpose:",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-library "})," (8 stable tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-research "})," (29 provisional tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-admin "})," (3 explicitly enabled tools), and",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-desktop-mcp "})," (the safe Desktop profile)."]})]}),e.jsx("div",{className:"card-surface rounded-2xl border border-slate-800 overflow-hidden shadow-xl",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm",children:[e.jsx("thead",{className:"bg-slate-900/90 text-xs font-mono text-cyan-400 uppercase tracking-wider border-b border-slate-800",children:e.jsxs("tr",{children:[e.jsx("th",{className:"px-6 py-4",children:"Tool Name"}),e.jsx("th",{className:"px-6 py-4",children:"Functionality & Mathematical Invariant"})]})}),e.jsx("tbody",{className:"divide-y divide-slate-800/60 font-mono text-xs text-slate-300",children:D.map(s=>e.jsxs("tr",{className:"hover:bg-slate-900/40 transition-colors",children:[e.jsx("td",{className:"px-6 py-4 font-semibold text-cyan-300 whitespace-nowrap",children:s.name}),e.jsx("td",{className:"px-6 py-4 font-sans text-sm text-slate-400",children:s.desc})]},s.name))})]})})}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-research server · ",d.length," provisional tools"]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:d.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-slate-300",children:s},s))})]}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-admin server · ",m.length," privileged tools"]}),e.jsxs("p",{className:"text-xs text-slate-400 mb-3",children:["Disabled by default. Requires ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"QECTOR_ADMIN_ENABLED=1"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"confirm=true"})," for every administrative call."]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:m.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-gold-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Installation & Setup"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2",children:"Configure QECTOR Claude Plugin v1.0.6 for Claude Code or Claude Desktop in seconds."})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"1"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Claude Code Marketplace"})]}),e.jsx("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:"Install directly via Claude Code marketplace registration:"}),e.jsx(t,{code:`# 1. Add marketplace repository -claude plugin marketplace add GuillaumeLessard/qector-claude-plugin - -# 2. Install plugin -claude plugin install qector@qector-tools`,language:"bash"})]})}),e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"2"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Local Plugin Directory"})]}),e.jsxs("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:["Clone the source repository and launch with the ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"--plugin-dir"})," flag:"]}),e.jsx(t,{code:`git clone https://github.com/GuillaumeLessard/qector-claude-plugin.git -cd qector-claude-plugin -pip install -r requirements.txt -claude --plugin-dir .`,language:"bash"})]})})]}),e.jsxs("div",{className:"mt-8 card-surface p-6 rounded-2xl border border-slate-800",children:[e.jsxs("h3",{className:"text-lg font-bold text-slate-100 mb-2 flex items-center gap-2",children:[e.jsx(i,{className:"w-5 h-5 text-cyan-400"}),e.jsx("span",{children:"Mathematical Validation Gate"})]}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed mb-4",children:"Verify all 16 Reference Manual theorems and 29 executable proof obligations locally on your machine:"}),e.jsx(t,{code:`# Run the complete public reference manual mathematical gate -python scripts/run_manual_math_validation.py - -# Or run full pytest integration suite -python -m pytest tests/test_reference_manual_math.py -v`,language:"bash"})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6 mb-12",children:e.jsx("div",{className:"card-surface p-8 border border-cyan-900/50 relative overflow-hidden bg-gradient-to-br from-slate-950 via-surface/60 to-slate-950",children:e.jsxs("div",{className:"relative z-10 flex flex-col md:flex-row items-center justify-between gap-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-2xl font-extrabold text-slate-100 mb-2",children:"Download Distribution Packages"}),e.jsx("p",{className:"text-sm text-slate-400 max-w-xl leading-relaxed",children:"Pre-packaged standalone ZIP archives formatted specifically for the Claude.ai custom-skill uploader (forward-slash path normalized) and Claude Code multi-skill plugin distributions."})]}),e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin/releases/tag/v1.0.6",target:"_blank",rel:"noopener noreferrer",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2 shadow-lg shadow-cyan-400/20",children:[e.jsx(L,{className:"w-4 h-4"}),e.jsx("span",{children:"v1.0.6 Release & Checksums"})]}),e.jsxs(c,{to:"/docs",className:"px-5 py-2.5 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2",children:[e.jsx(P,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{children:"Docs Hub"})]})]})]})})})]})}export{B as default}; diff --git a/assets/ClaudePlugin-JC5Ptu3v.js b/assets/ClaudePlugin-JC5Ptu3v.js deleted file mode 100644 index f3c07814..00000000 --- a/assets/ClaudePlugin-JC5Ptu3v.js +++ /dev/null @@ -1,13 +0,0 @@ -import{r as h,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,J as g,C as r}from"./index-CxWP17m6.js";import{N as f}from"./NeuralReveal-BflyZYSb.js";import{C as t}from"./releases-1-HBloZv.js";import{S as b,T as i,c as y,d as j,E as v,f as N,L as w,a as o,g as k,W as C,h as _,i as q,A as S,j as E,D as L,B as P}from"./vendor-ui-B0ssGG4c.js";import{L as c}from"./vendor-PiU4YGcH.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const O=[{name:"qector-core",role:"Core Ground Truth",desc:"Verified platform facts, 8 library MCP tools, 5 stable decoders, and strict API grounding to prevent hallucination.",keyFeatures:["Grounds tool names & signatures","Enforces strict math boundary","Local verification"]},{name:"qector-math-foundations",role:"Mathematical Axioms",desc:"Theorems 1-16 executable obligations over GF(2), syndrome equivalence H c = s (mod 2), Wilson 95% CIs, and coset scoring.",keyFeatures:["Theorem 1 fail-closed verification","Theorem 2 logical coset scoring","Wilson score intervals"]},{name:"qector-developer",role:"SDK & Engineering",desc:"Integration guidance for qector-decoder-v3 Python SDK, parity-check matrix generation, Sinter/Stim adapters, and CI/CD testing.",keyFeatures:["Python SDK best practices","Matrix construction helpers","Local test automation"]},{name:"qector-researcher",role:"Quantum Information Science",desc:"Threshold discovery workflows, noise modeling, Monte Carlo error simulations, and academic paper reproduction.",keyFeatures:["Code-capacity sweeps","Noise model parameterization","Reproducible artifact export"]},{name:"qector-hardware-engineer",role:"Experimental & Cryogenic",desc:"Hardware constraint modeling, heavy-hex/surface graph mapping, physical error rate profiling, and latency budgets.",keyFeatures:["Physical qubit layout mapping","Hardware latency analysis","Cryogenic error budgets"]},{name:"qector-educator",role:"Pedagogy & Concepts",desc:"Interactive tutorial creation, mathematical explanations of syndrome decoding, MWPM matching, and BP-OSD.",keyFeatures:["Step-by-step decoding explanations","Interactive code walkthroughs","Visual homology concepts"]},{name:"qector-sysadmin",role:"Operations & Hygiene",desc:"Environment diagnostics, resource limits (MAX_CHECKS, MAX_QUBITS), safe file I/O, and deployment validation.",keyFeatures:["15-point runtime health check","DoS & memory limit guards","Platform compatibility audit"]}],T=["qector-architecture","qector-batch-decoding","qector-bp-osd","qector-codes-builder","qector-core","qector-decoders-deep-dive","qector-dem-pipeline","qector-deployment","qector-developer","qector-educator","qector-glossary","qector-hardware-engineer","qector-ler-methodology","qector-licensing","qector-math-foundations","qector-orchestration","qector-pymatching-compat","qector-release-engineering","qector-reproducibility","qector-researcher","qector-roadmap","qector-services","qector-sinter","qector-space-time","qector-sysadmin","qector-testing-strategy","qector-two-stage-css","qector-workbench"],A=[{file:"qec-developer.md",title:"QEC Software Engineer",desc:"Specialized in Python SDK integration, decoder benchmarking, matrix generation, and production deployment."},{file:"qec-researcher.md",title:"QEC Research Scientist",desc:"Specialized in academic literature review, threshold sweeps, Wilson confidence intervals, and Monte Carlo studies."},{file:"qec-validator.md",title:"Mathematical Proof Validator",desc:"Specialized in formal theorem checking, finite matrix verification, syndrome faithfulness, and local-only enforcement."},{file:"qec-sysadmin.md",title:"Systems & Runtime Engineer",desc:"Specialized in Python environment health, MCP server stdio management, resource bounds, and packaging."},{file:"qec-hardware-engineer.md",title:"Quantum Hardware Architect",desc:"Specialized in superconducting qubit topologies, heavy-hex grids, cryogenic latency constraints, and noise budgets."}],D=[{name:"list_code_families",desc:"Lists available code families (Rotated Surface, Toric, Ring, Repetition, Color, Heavy-Hex, Hypergraph Product)."},{name:"list_decoders",desc:"Lists the five stable decoder classes: UnionFind, FastUnionFind, Blossom (MWPM), SparseBlossom, NativeAuto."},{name:"get_license_info",desc:"Reads live offline licensing tier and feature flags from the installed qector-decoder-v3 package."},{name:"decode_syndrome",desc:"Decodes a binary syndrome with mandatory Theorem 1 fail-closed verification: H c = s (mod 2)."},{name:"decode_single",desc:"Executes a single-shot decode with logical-coset scoring (Theorem 2) against logical observables."},{name:"threshold_sweep",desc:"Runs device-local code-capacity sweeps with Wilson 95% confidence intervals and SHA-256 sealed artifacts."},{name:"build_code_from_matrix",desc:"Validates and compiles an arbitrary binary parity-check matrix with rank and observable analysis."},{name:"compat_report",desc:"Audits runtime health, wheel version, NumPy compatibility, and provisional feature boundaries."}],d=["artifacts_sha256","artifact_metadata_check","code_distance_check","code_export_matrices","code_family_info","code_logicals_inspect","compat_report","decode_faithfulness_check","dem_collapse_parallel","dem_inspect","env_block","glossary_lookup","hardware_probe","hot_path_microbench","license_active_check","logical_coset_score","pymatching_compat_check","qiskit_plugin_check","reproduction_command_lookup","sinter_decoder_list","sinter_task_template","stim_circuit_probe","theorem_lookup","wilson_ci","wilson_table","workload_hash","get_capability_matrix","get_evidence_policy","get_runtime_provenance"],m=["system_setup","configure_claude_desktop","workbench_probe"];function U(){const[l,x]=h.useState(!1),p=(s,a)=>{navigator.clipboard.writeText(s),a(!0),setTimeout(()=>a(!1),2e3)},n=`claude plugin marketplace add GuillaumeLessard/qector-claude-plugin -claude plugin install qector@qector-tools`;return e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"QECTOR Claude Plugin · Quantum Error Correction for Claude Code",description:"Official QECTOR Claude Code and Claude Desktop plugin v2.0.1: air-gapped qector-secure MCP server (12 schema-validated tools), 28 skills and 5 agents on qector-decoder-v3 1.0.1."}),e.jsx(g,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Claude Plugin",description:"Official QECTOR plugin v2.0.1 for Claude Code and Claude Desktop: air-gapped qector-secure MCP server with 12 schema-validated tools, 28 skills, 5 agents, 11 commands; 29 research and 3 admin tools are opt-in.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",softwareVersion:t.version,author:{"@type":"Person",name:"Guillaume Lessard",url:"https://orcid.org/0009-0000-3465-3753"},offers:{"@type":"Offer",price:"0",priceCurrency:"USD"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-400/5 via-surface/40 to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/4 left-1/2 -translate-x-1/2 -translate-y-1/2 w-96 h-96 bg-cyan-400/10 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-4 sm:px-6 relative z-10 text-center",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3.5 py-1.5 rounded-full bg-cyan-950/60 border border-cyan-800/60 text-cyan-300 text-xs font-mono font-medium mb-6 backdrop-blur-sm",children:[e.jsx(b,{className:"w-3.5 h-3.5 text-cyan-400"}),e.jsxs("span",{children:["ANTHROPIC CLAUDE CODE & DESKTOP PLUGIN · v",t.version," · published ",t.releaseDate]})]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-extrabold tracking-tight text-slate-100 mb-6 max-w-4xl mx-auto leading-[1.1]",children:e.jsx(f,{text:"QECTOR Claude Plugin"})}),e.jsxs("p",{className:"text-lg md:text-xl text-slate-300 max-w-3xl mx-auto leading-relaxed mb-8",children:["Empower Claude with local Quantum Error Correction engineering. Release v2.0.1 runs on qector-decoder-v3 1.0.1. The default"," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"qector-secure"})," server is air-gapped, integrity-checked and validates every request and response against JSON Schema (12 tools). It ships with"," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"28 domain skills"}),","," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"5 specialized agents"})," and 11 slash commands; 29 research tools and 3 admin tools are opt-in. Every dependency is pinned by SHA-256, and releases are signed."]}),e.jsxs("div",{className:"max-w-2xl mx-auto bg-slate-950/90 border border-cyan-900/60 rounded-2xl p-5 mb-10 shadow-2xl backdrop-blur-md text-left",children:[e.jsxs("div",{className:"flex items-center justify-between pb-3 mb-3 border-b border-slate-800/80",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(i,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{className:"text-xs font-mono font-semibold uppercase tracking-wider text-slate-400",children:"Instant Marketplace Install"})]}),e.jsxs("button",{onClick:()=>p(n,x),className:"flex items-center gap-1.5 text-xs font-mono text-cyan-400 hover:text-cyan-300 transition-colors px-2.5 py-1 rounded bg-cyan-950/50 border border-cyan-800/40",children:[l?e.jsx(y,{className:"w-3.5 h-3.5 text-green-400"}):e.jsx(j,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:l?"Copied":"Copy"})]})]}),e.jsx("pre",{className:"font-mono text-sm text-cyan-300 overflow-x-auto whitespace-pre leading-relaxed",children:n})]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin",target:"_blank",rel:"noopener noreferrer",className:"px-6 py-3 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-sm transition-all shadow-lg shadow-cyan-400/20 inline-flex items-center gap-2",children:[e.jsx("span",{children:"GitHub Repository"}),e.jsx(v,{className:"w-4 h-4"})]}),e.jsxs(c,{to:"/mcp-server",className:"px-6 py-3 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-sm transition-all inline-flex items-center gap-2",children:[e.jsx("span",{children:"MCP Server Reference"}),e.jsx(N,{className:"w-4 h-4 text-cyan-400"})]})]}),e.jsx("p",{className:"text-xs text-slate-400 mt-6",children:"Independent plugin by iD01t Productions. Not affiliated with or endorsed by Anthropic."})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(w,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Local-First Security"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"Local stdio transport by default. Parity matrices, syndromes, quantum circuits, and simulation artifacts are processed on the host machine; verify your host environment if confidentiality matters."})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(o,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Strict Mathematics"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Decodes are checked against ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"H c = s (mod 2)"}),". Scored with logical cosets and Wilson 95% CIs."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(k,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"App-Free Library"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Built on the official ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"qector-decoder-v3 1.0.x"})," Rust/PyO3 wheel. No desktop GUI required."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(C,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Multi-Agent System"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"28 domain skills and 5 tailored agent personas designed for research, hardware design, verification, and engineering."})]})]})}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"DOMAIN SKILLS ECOSYSTEM"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"28 Grounded QEC Skills"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Each skill encodes verified domain rules and strict-math obligations to reduce hallucination risk and ground interactions in reproducible physics. The seven flagship skills below are a subset of the 28 skills shipped in the plugin."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:O.map(s=>e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800/90 flex flex-col justify-between hover:border-cyan-500/30 transition-all",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsx("span",{className:"font-mono text-sm font-bold text-cyan-400",children:s.name}),e.jsx("span",{className:"text-[11px] font-mono px-2 py-0.5 rounded bg-slate-800 text-slate-300 border border-slate-700",children:s.role})]}),e.jsx("p",{className:"text-sm text-slate-300 leading-relaxed mb-4",children:s.desc})]}),e.jsx("div",{className:"pt-3 border-t border-slate-800/80 space-y-1.5",children:s.keyFeatures.map(a=>e.jsxs("div",{className:"flex items-center gap-2 text-xs text-slate-400",children:[e.jsx(q,{className:"w-3.5 h-3.5 text-cyan-400 shrink-0"}),e.jsx("span",{children:a})]},a))})]},s.name))}),e.jsxs("div",{className:"mt-10",children:[e.jsx("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:"All 28 skills shipped in the plugin"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:T.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-cyan-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(S,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"AGENT ROLES & PERSONAS"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"5 Specialized QEC Agents"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Custom agent definitions for Claude Code configured with tailored instructions, prompt templates, and tool access boundaries."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:A.map(s=>e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2 font-mono text-xs text-cyan-400",children:[e.jsx(i,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:s.file})]}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-2",children:s.title}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:s.desc})]})},s.file))})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(E,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"MCP SERVER TOOL SURFACE"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Local MCP Servers, Air-Gapped by Default"}),e.jsxs("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:["The v2.0.1 release separates local JSON-RPC 2.0 stdio capabilities by risk and purpose. The default",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-secure "})," server (12 tools: the 8 stable tools below plus airgap_status, integrity_check, schema_catalog and audit_log_status) refuses network access and verifies its own files;",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-library "})," (8 stable tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-research "})," (29 provisional tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-admin "})," (3 explicitly enabled tools), and",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-desktop-mcp "})," (the safe Desktop profile)."]})]}),e.jsx("div",{className:"card-surface rounded-2xl border border-slate-800 overflow-hidden shadow-xl",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm",children:[e.jsx("thead",{className:"bg-slate-900/90 text-xs font-mono text-cyan-400 uppercase tracking-wider border-b border-slate-800",children:e.jsxs("tr",{children:[e.jsx("th",{className:"px-6 py-4",children:"Tool Name"}),e.jsx("th",{className:"px-6 py-4",children:"Functionality & Mathematical Invariant"})]})}),e.jsx("tbody",{className:"divide-y divide-slate-800/60 font-mono text-xs text-slate-300",children:D.map(s=>e.jsxs("tr",{className:"hover:bg-slate-900/40 transition-colors",children:[e.jsx("td",{className:"px-6 py-4 font-semibold text-cyan-300 whitespace-nowrap",children:s.name}),e.jsx("td",{className:"px-6 py-4 font-sans text-sm text-slate-400",children:s.desc})]},s.name))})]})})}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-research server · ",d.length," provisional tools"]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:d.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-slate-300",children:s},s))})]}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-admin server · ",m.length," privileged tools"]}),e.jsxs("p",{className:"text-xs text-slate-400 mb-3",children:["Disabled by default. Requires ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"QECTOR_ADMIN_ENABLED=1"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"confirm=true"})," for every administrative call."]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:m.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-gold-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Installation & Setup"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2",children:"Configure QECTOR Claude Plugin v2.0.1 for Claude Code or Claude Desktop in seconds."})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"1"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Claude Code Marketplace"})]}),e.jsx("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:"Install directly via Claude Code marketplace registration:"}),e.jsx(r,{code:`# 1. Add marketplace repository -claude plugin marketplace add GuillaumeLessard/qector-claude-plugin - -# 2. Install plugin -claude plugin install qector@qector-tools`,language:"bash"})]})}),e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"2"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Local Plugin Directory"})]}),e.jsxs("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:["Clone the source repository and launch with the ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"--plugin-dir"})," flag:"]}),e.jsx(r,{code:`git clone https://github.com/GuillaumeLessard/qector-claude-plugin.git -cd qector-claude-plugin -pip install --require-hashes -r requirements.lock -claude --plugin-dir .`,language:"bash"})]})})]}),e.jsxs("div",{className:"mt-8 card-surface p-6 rounded-2xl border border-slate-800",children:[e.jsxs("h3",{className:"text-lg font-bold text-slate-100 mb-2 flex items-center gap-2",children:[e.jsx(o,{className:"w-5 h-5 text-cyan-400"}),e.jsx("span",{children:"Mathematical Validation Gate"})]}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed mb-4",children:"Verify all 16 Reference Manual theorems and 29 executable proof obligations locally on your machine:"}),e.jsx(r,{code:`# Run the complete public reference manual mathematical gate -python scripts/run_manual_math_validation.py - -# Or run full pytest integration suite -python -m pytest tests/test_reference_manual_math.py -v`,language:"bash"})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6 mb-12",children:e.jsx("div",{className:"card-surface p-8 border border-cyan-900/50 relative overflow-hidden bg-gradient-to-br from-slate-950 via-surface/60 to-slate-950",children:e.jsxs("div",{className:"relative z-10 flex flex-col md:flex-row items-center justify-between gap-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-2xl font-extrabold text-slate-100 mb-2",children:"Download Distribution Packages"}),e.jsx("p",{className:"text-sm text-slate-400 max-w-xl leading-relaxed",children:"Signed release archives: the Claude Code plugin, Claude Desktop extensions (.mcpb, including an offline bundle with a pinned wheelhouse), SHA256SUMS with its signature, an SBOM and provenance."})]}),e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsxs("a",{href:t.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2 shadow-lg shadow-cyan-400/20",children:[e.jsx(L,{className:"w-4 h-4"}),e.jsxs("span",{children:["v",t.version," Release, Checksums & Signatures"]})]}),e.jsxs(c,{to:"/docs",className:"px-5 py-2.5 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2",children:[e.jsx(P,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{children:"Docs Hub"})]})]})]})})})]})}export{U as default}; diff --git a/assets/ClaudePlugin-RchU6fia.js b/assets/ClaudePlugin-RchU6fia.js deleted file mode 100644 index da8be0ee..00000000 --- a/assets/ClaudePlugin-RchU6fia.js +++ /dev/null @@ -1,13 +0,0 @@ -import{r as h,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,J as g,L as i,C as r}from"./index-CCmwjNGU.js";import{N as f}from"./NeuralReveal-uYarhiMA.js";import{C as t}from"./releases--9GgxpSb.js";import{S as b,T as o,c as y,d as j,E as v,f as N,L as w,a as c,g as k,W as C,h as _,i as q,A as S,j as E,D as L,B as P}from"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const O=[{name:"qector-core",role:"Core Ground Truth",desc:"Verified platform facts, 8 library MCP tools, 5 stable decoders, and strict API grounding to prevent hallucination.",keyFeatures:["Grounds tool names & signatures","Enforces strict math boundary","Local verification"]},{name:"qector-math-foundations",role:"Mathematical Axioms",desc:"Theorems 1-16 executable obligations over GF(2), syndrome equivalence H c = s (mod 2), Wilson 95% CIs, and coset scoring.",keyFeatures:["Theorem 1 fail-closed verification","Theorem 2 logical coset scoring","Wilson score intervals"]},{name:"qector-developer",role:"SDK & Engineering",desc:"Integration guidance for qector-decoder-v3 Python SDK, parity-check matrix generation, Sinter/Stim adapters, and CI/CD testing.",keyFeatures:["Python SDK best practices","Matrix construction helpers","Local test automation"]},{name:"qector-researcher",role:"Quantum Information Science",desc:"Threshold discovery workflows, noise modeling, Monte Carlo error simulations, and academic paper reproduction.",keyFeatures:["Code-capacity sweeps","Noise model parameterization","Reproducible artifact export"]},{name:"qector-hardware-engineer",role:"Experimental & Cryogenic",desc:"Hardware constraint modeling, heavy-hex/surface graph mapping, physical error rate profiling, and latency budgets.",keyFeatures:["Physical qubit layout mapping","Hardware latency analysis","Cryogenic error budgets"]},{name:"qector-educator",role:"Pedagogy & Concepts",desc:"Interactive tutorial creation, mathematical explanations of syndrome decoding, MWPM matching, and BP-OSD.",keyFeatures:["Step-by-step decoding explanations","Interactive code walkthroughs","Visual homology concepts"]},{name:"qector-sysadmin",role:"Operations & Hygiene",desc:"Environment diagnostics, resource limits (MAX_CHECKS, MAX_QUBITS), safe file I/O, and deployment validation.",keyFeatures:["15-point runtime health check","DoS & memory limit guards","Platform compatibility audit"]}],T=["qector-architecture","qector-batch-decoding","qector-bp-osd","qector-codes-builder","qector-core","qector-decoders-deep-dive","qector-dem-pipeline","qector-deployment","qector-developer","qector-educator","qector-glossary","qector-hardware-engineer","qector-ler-methodology","qector-licensing","qector-math-foundations","qector-orchestration","qector-pymatching-compat","qector-release-engineering","qector-reproducibility","qector-researcher","qector-roadmap","qector-services","qector-sinter","qector-space-time","qector-sysadmin","qector-testing-strategy","qector-two-stage-css","qector-workbench"],A=[{file:"qec-developer.md",title:"QEC Software Engineer",desc:"Specialized in Python SDK integration, decoder benchmarking, matrix generation, and production deployment."},{file:"qec-researcher.md",title:"QEC Research Scientist",desc:"Specialized in academic literature review, threshold sweeps, Wilson confidence intervals, and Monte Carlo studies."},{file:"qec-validator.md",title:"Mathematical Proof Validator",desc:"Specialized in formal theorem checking, finite matrix verification, syndrome faithfulness, and local-only enforcement."},{file:"qec-sysadmin.md",title:"Systems & Runtime Engineer",desc:"Specialized in Python environment health, MCP server stdio management, resource bounds, and packaging."},{file:"qec-hardware-engineer.md",title:"Quantum Hardware Architect",desc:"Specialized in superconducting qubit topologies, heavy-hex grids, cryogenic latency constraints, and noise budgets."}],D=[{name:"list_code_families",desc:"Lists available code families (Rotated Surface, Toric, Ring, Repetition, Color, Heavy-Hex, Hypergraph Product)."},{name:"list_decoders",desc:"Lists the five stable decoder classes: UnionFind, FastUnionFind, Blossom (MWPM), SparseBlossom, NativeAuto."},{name:"get_license_info",desc:"Reads live offline licensing tier and feature flags from the installed qector-decoder-v3 package."},{name:"decode_syndrome",desc:"Decodes a binary syndrome with mandatory Theorem 1 fail-closed verification: H c = s (mod 2)."},{name:"decode_single",desc:"Executes a single-shot decode with logical-coset scoring (Theorem 2) against logical observables."},{name:"threshold_sweep",desc:"Runs device-local code-capacity sweeps with Wilson 95% confidence intervals and SHA-256 sealed artifacts."},{name:"build_code_from_matrix",desc:"Validates and compiles an arbitrary binary parity-check matrix with rank and observable analysis."},{name:"compat_report",desc:"Audits runtime health, wheel version, NumPy compatibility, and provisional feature boundaries."}],d=["artifacts_sha256","artifact_metadata_check","code_distance_check","code_export_matrices","code_family_info","code_logicals_inspect","compat_report","decode_faithfulness_check","dem_collapse_parallel","dem_inspect","env_block","glossary_lookup","hardware_probe","hot_path_microbench","license_active_check","logical_coset_score","pymatching_compat_check","qiskit_plugin_check","reproduction_command_lookup","sinter_decoder_list","sinter_task_template","stim_circuit_probe","theorem_lookup","wilson_ci","wilson_table","workload_hash","get_capability_matrix","get_evidence_policy","get_runtime_provenance"],m=["system_setup","configure_claude_desktop","workbench_probe"];function Q(){const[l,x]=h.useState(!1),p=(s,a)=>{navigator.clipboard.writeText(s),a(!0),setTimeout(()=>a(!1),2e3)},n=`claude plugin marketplace add GuillaumeLessard/qector-claude-plugin -claude plugin install qector@qector-tools`;return e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"QECTOR Claude Plugin · Quantum Error Correction for Claude Code",description:"Official QECTOR Claude Code and Claude Desktop plugin v2.0.1: air-gapped qector-secure MCP server (12 schema-validated tools), 28 skills and 5 agents on qector-decoder-v3 1.0.1."}),e.jsx(g,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Claude Plugin",description:"Official QECTOR plugin v2.0.1 for Claude Code and Claude Desktop: air-gapped qector-secure MCP server with 12 schema-validated tools, 28 skills, 5 agents, 11 commands; 29 research and 3 admin tools are opt-in.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",softwareVersion:t.version,author:{"@type":"Person",name:"Guillaume Lessard",url:"https://orcid.org/0009-0000-3465-3753"},offers:{"@type":"Offer",price:"0",priceCurrency:"USD"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-400/5 via-surface/40 to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/4 left-1/2 -translate-x-1/2 -translate-y-1/2 w-96 h-96 bg-cyan-400/10 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-4 sm:px-6 relative z-10 text-center",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3.5 py-1.5 rounded-full bg-cyan-950/60 border border-cyan-800/60 text-cyan-300 text-xs font-mono font-medium mb-6 backdrop-blur-sm",children:[e.jsx(b,{className:"w-3.5 h-3.5 text-cyan-400"}),e.jsxs("span",{children:["ANTHROPIC CLAUDE CODE & DESKTOP PLUGIN · v",t.version," · published ",t.releaseDate]})]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-extrabold tracking-tight text-slate-100 mb-6 max-w-4xl mx-auto leading-[1.1]",children:e.jsx(f,{text:"QECTOR Claude Plugin"})}),e.jsxs("p",{className:"text-lg md:text-xl text-slate-300 max-w-3xl mx-auto leading-relaxed mb-8",children:["Empower Claude with local Quantum Error Correction engineering. Release v2.0.1 runs on qector-decoder-v3 1.0.1. The default"," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"qector-secure"})," server is air-gapped, integrity-checked and validates every request and response against JSON Schema (12 tools). It ships with"," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"28 domain skills"}),","," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"5 specialized agents"})," and 11 slash commands; 29 research tools and 3 admin tools are opt-in. Every dependency is pinned by SHA-256, and releases are signed."]}),e.jsxs("div",{className:"max-w-2xl mx-auto bg-slate-950/90 border border-cyan-900/60 rounded-2xl p-5 mb-10 shadow-2xl backdrop-blur-md text-left",children:[e.jsxs("div",{className:"flex items-center justify-between pb-3 mb-3 border-b border-slate-800/80",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(o,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{className:"text-xs font-mono font-semibold uppercase tracking-wider text-slate-400",children:"Instant Marketplace Install"})]}),e.jsxs("button",{onClick:()=>p(n,x),className:"flex items-center gap-1.5 text-xs font-mono text-cyan-400 hover:text-cyan-300 transition-colors px-2.5 py-1 rounded bg-cyan-950/50 border border-cyan-800/40",children:[l?e.jsx(y,{className:"w-3.5 h-3.5 text-green-400"}):e.jsx(j,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:l?"Copied":"Copy"})]})]}),e.jsx("pre",{className:"font-mono text-sm text-cyan-300 overflow-x-auto whitespace-pre leading-relaxed",children:n})]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin",target:"_blank",rel:"noopener noreferrer",className:"px-6 py-3 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-sm transition-all shadow-lg shadow-cyan-400/20 inline-flex items-center gap-2",children:[e.jsx("span",{children:"GitHub Repository"}),e.jsx(v,{className:"w-4 h-4"})]}),e.jsxs(i,{to:"/mcp-server",className:"px-6 py-3 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-sm transition-all inline-flex items-center gap-2",children:[e.jsx("span",{children:"MCP Server Reference"}),e.jsx(N,{className:"w-4 h-4 text-cyan-400"})]})]}),e.jsx("p",{className:"text-xs text-slate-400 mt-6",children:"Independent plugin by iD01t Productions. Not affiliated with or endorsed by Anthropic."})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(w,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Local-First Security"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"Local stdio transport by default. Parity matrices, syndromes, quantum circuits, and simulation artifacts are processed on the host machine; verify your host environment if confidentiality matters."})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(c,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Strict Mathematics"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Decodes are checked against ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"H c = s (mod 2)"}),". Scored with logical cosets and Wilson 95% CIs."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(k,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"App-Free Library"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Built on the official ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"qector-decoder-v3 1.0.x"})," Rust/PyO3 wheel. No desktop GUI required."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(C,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Multi-Agent System"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"28 domain skills and 5 tailored agent personas designed for research, hardware design, verification, and engineering."})]})]})}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"DOMAIN SKILLS ECOSYSTEM"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"28 Grounded QEC Skills"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Each skill encodes verified domain rules and strict-math obligations to reduce hallucination risk and ground interactions in reproducible physics. The seven flagship skills below are a subset of the 28 skills shipped in the plugin."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:O.map(s=>e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800/90 flex flex-col justify-between hover:border-cyan-500/30 transition-all",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsx("span",{className:"font-mono text-sm font-bold text-cyan-400",children:s.name}),e.jsx("span",{className:"text-[11px] font-mono px-2 py-0.5 rounded bg-slate-800 text-slate-300 border border-slate-700",children:s.role})]}),e.jsx("p",{className:"text-sm text-slate-300 leading-relaxed mb-4",children:s.desc})]}),e.jsx("div",{className:"pt-3 border-t border-slate-800/80 space-y-1.5",children:s.keyFeatures.map(a=>e.jsxs("div",{className:"flex items-center gap-2 text-xs text-slate-400",children:[e.jsx(q,{className:"w-3.5 h-3.5 text-cyan-400 shrink-0"}),e.jsx("span",{children:a})]},a))})]},s.name))}),e.jsxs("div",{className:"mt-10",children:[e.jsx("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:"All 28 skills shipped in the plugin"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:T.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-cyan-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(S,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"AGENT ROLES & PERSONAS"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"5 Specialized QEC Agents"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Custom agent definitions for Claude Code configured with tailored instructions, prompt templates, and tool access boundaries."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:A.map(s=>e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2 font-mono text-xs text-cyan-400",children:[e.jsx(o,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:s.file})]}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-2",children:s.title}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:s.desc})]})},s.file))})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(E,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"MCP SERVER TOOL SURFACE"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Local MCP Servers, Air-Gapped by Default"}),e.jsxs("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:["The v2.0.1 release separates local JSON-RPC 2.0 stdio capabilities by risk and purpose. The default",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-secure "})," server (12 tools: the 8 stable tools below plus airgap_status, integrity_check, schema_catalog and audit_log_status) refuses network access and verifies its own files;",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-library "})," (8 stable tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-research "})," (29 provisional tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-admin "})," (3 explicitly enabled tools), and",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-desktop-mcp "})," (the safe Desktop profile)."]})]}),e.jsx("div",{className:"card-surface rounded-2xl border border-slate-800 overflow-hidden shadow-xl",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm",children:[e.jsx("thead",{className:"bg-slate-900/90 text-xs font-mono text-cyan-400 uppercase tracking-wider border-b border-slate-800",children:e.jsxs("tr",{children:[e.jsx("th",{className:"px-6 py-4",children:"Tool Name"}),e.jsx("th",{className:"px-6 py-4",children:"Functionality & Mathematical Invariant"})]})}),e.jsx("tbody",{className:"divide-y divide-slate-800/60 font-mono text-xs text-slate-300",children:D.map(s=>e.jsxs("tr",{className:"hover:bg-slate-900/40 transition-colors",children:[e.jsx("td",{className:"px-6 py-4 font-semibold text-cyan-300 whitespace-nowrap",children:s.name}),e.jsx("td",{className:"px-6 py-4 font-sans text-sm text-slate-400",children:s.desc})]},s.name))})]})})}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-research server · ",d.length," provisional tools"]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:d.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-slate-300",children:s},s))})]}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-admin server · ",m.length," privileged tools"]}),e.jsxs("p",{className:"text-xs text-slate-400 mb-3",children:["Disabled by default. Requires ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"QECTOR_ADMIN_ENABLED=1"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"confirm=true"})," for every administrative call."]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:m.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-gold-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Installation & Setup"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2",children:"Configure QECTOR Claude Plugin v2.0.1 for Claude Code or Claude Desktop in seconds."})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"1"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Claude Code Marketplace"})]}),e.jsx("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:"Install directly via Claude Code marketplace registration:"}),e.jsx(r,{code:`# 1. Add marketplace repository -claude plugin marketplace add GuillaumeLessard/qector-claude-plugin - -# 2. Install plugin -claude plugin install qector@qector-tools`,language:"bash"})]})}),e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"2"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Local Plugin Directory"})]}),e.jsxs("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:["Clone the source repository and launch with the ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"--plugin-dir"})," flag:"]}),e.jsx(r,{code:`git clone https://github.com/GuillaumeLessard/qector-claude-plugin.git -cd qector-claude-plugin -pip install --require-hashes -r requirements.lock -claude --plugin-dir .`,language:"bash"})]})})]}),e.jsxs("div",{className:"mt-8 card-surface p-6 rounded-2xl border border-slate-800",children:[e.jsxs("h3",{className:"text-lg font-bold text-slate-100 mb-2 flex items-center gap-2",children:[e.jsx(c,{className:"w-5 h-5 text-cyan-400"}),e.jsx("span",{children:"Mathematical Validation Gate"})]}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed mb-4",children:"Verify all 16 Reference Manual theorems and 29 executable proof obligations locally on your machine:"}),e.jsx(r,{code:`# Run the complete public reference manual mathematical gate -python scripts/run_manual_math_validation.py - -# Or run full pytest integration suite -python -m pytest tests/test_reference_manual_math.py -v`,language:"bash"})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6 mb-12",children:e.jsx("div",{className:"card-surface p-8 border border-cyan-900/50 relative overflow-hidden bg-gradient-to-br from-slate-950 via-surface/60 to-slate-950",children:e.jsxs("div",{className:"relative z-10 flex flex-col md:flex-row items-center justify-between gap-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-2xl font-extrabold text-slate-100 mb-2",children:"Download Distribution Packages"}),e.jsx("p",{className:"text-sm text-slate-400 max-w-xl leading-relaxed",children:"Signed release archives: the Claude Code plugin, Claude Desktop extensions (.mcpb, including an offline bundle with a pinned wheelhouse), SHA256SUMS with its signature, an SBOM and provenance."})]}),e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsxs("a",{href:t.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2 shadow-lg shadow-cyan-400/20",children:[e.jsx(L,{className:"w-4 h-4"}),e.jsxs("span",{children:["v",t.version," Release, Checksums & Signatures"]})]}),e.jsxs(i,{to:"/docs",className:"px-5 py-2.5 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2",children:[e.jsx(P,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{children:"Docs Hub"})]})]})]})})})]})}export{Q as default}; diff --git a/assets/ClaudePlugin-utSYcLIe.js b/assets/ClaudePlugin-utSYcLIe.js deleted file mode 100644 index 71e81560..00000000 --- a/assets/ClaudePlugin-utSYcLIe.js +++ /dev/null @@ -1,13 +0,0 @@ -import{r as h,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,J as f,C as t}from"./index-_BpMZhV3.js";import{N as g}from"./NeuralReveal-BflyZYSb.js";import{C as n}from"./releases-DiQz_IDu.js";import{S as b,T as o,c as y,d as j,E as v,f as N,L as w,a as i,g as k,W as C,h as _,i as q,A as S,j as E,D as L,B as P}from"./vendor-ui-B0ssGG4c.js";import{L as c}from"./vendor-PiU4YGcH.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const O=[{name:"qector-core",role:"Core Ground Truth",desc:"Verified platform facts, 8 library MCP tools, 5 stable decoders, and strict API grounding to prevent hallucination.",keyFeatures:["Grounds tool names & signatures","Enforces strict math boundary","Local verification"]},{name:"qector-math-foundations",role:"Mathematical Axioms",desc:"Theorems 1-16 executable obligations over GF(2), syndrome equivalence H c = s (mod 2), Wilson 95% CIs, and coset scoring.",keyFeatures:["Theorem 1 fail-closed verification","Theorem 2 logical coset scoring","Wilson score intervals"]},{name:"qector-developer",role:"SDK & Engineering",desc:"Integration guidance for qector-decoder-v3 Python SDK, parity-check matrix generation, Sinter/Stim adapters, and CI/CD testing.",keyFeatures:["Python SDK best practices","Matrix construction helpers","Local test automation"]},{name:"qector-researcher",role:"Quantum Information Science",desc:"Threshold discovery workflows, noise modeling, Monte Carlo error simulations, and academic paper reproduction.",keyFeatures:["Code-capacity sweeps","Noise model parameterization","Reproducible artifact export"]},{name:"qector-hardware-engineer",role:"Experimental & Cryogenic",desc:"Hardware constraint modeling, heavy-hex/surface graph mapping, physical error rate profiling, and latency budgets.",keyFeatures:["Physical qubit layout mapping","Hardware latency analysis","Cryogenic error budgets"]},{name:"qector-educator",role:"Pedagogy & Concepts",desc:"Interactive tutorial creation, mathematical explanations of syndrome decoding, MWPM matching, and BP-OSD.",keyFeatures:["Step-by-step decoding explanations","Interactive code walkthroughs","Visual homology concepts"]},{name:"qector-sysadmin",role:"Operations & Hygiene",desc:"Environment diagnostics, resource limits (MAX_CHECKS, MAX_QUBITS), safe file I/O, and deployment validation.",keyFeatures:["15-point runtime health check","DoS & memory limit guards","Platform compatibility audit"]}],T=["qector-architecture","qector-batch-decoding","qector-bp-osd","qector-codes-builder","qector-core","qector-decoders-deep-dive","qector-dem-pipeline","qector-deployment","qector-developer","qector-educator","qector-glossary","qector-hardware-engineer","qector-ler-methodology","qector-licensing","qector-math-foundations","qector-orchestration","qector-pymatching-compat","qector-release-engineering","qector-reproducibility","qector-researcher","qector-roadmap","qector-services","qector-sinter","qector-space-time","qector-sysadmin","qector-testing-strategy","qector-two-stage-css","qector-workbench"],R=[{file:"qec-developer.md",title:"QEC Software Engineer",desc:"Specialized in Python SDK integration, decoder benchmarking, matrix generation, and production deployment."},{file:"qec-researcher.md",title:"QEC Research Scientist",desc:"Specialized in academic literature review, threshold sweeps, Wilson confidence intervals, and Monte Carlo studies."},{file:"qec-validator.md",title:"Mathematical Proof Validator",desc:"Specialized in formal theorem checking, finite matrix verification, syndrome faithfulness, and local-only enforcement."},{file:"qec-sysadmin.md",title:"Systems & Runtime Engineer",desc:"Specialized in Python environment health, MCP server stdio management, resource bounds, and packaging."},{file:"qec-hardware-engineer.md",title:"Quantum Hardware Architect",desc:"Specialized in superconducting qubit topologies, heavy-hex grids, cryogenic latency constraints, and noise budgets."}],D=[{name:"list_code_families",desc:"Lists available code families (Rotated Surface, Toric, Ring, Repetition, Color, Heavy-Hex, Hypergraph Product)."},{name:"list_decoders",desc:"Lists the five stable decoder classes: UnionFind, FastUnionFind, Blossom (MWPM), SparseBlossom, NativeAuto."},{name:"get_license_info",desc:"Reads live offline licensing tier and feature flags from the installed qector-decoder-v3 package."},{name:"decode_syndrome",desc:"Decodes a binary syndrome with mandatory Theorem 1 fail-closed verification: H c = s (mod 2)."},{name:"decode_single",desc:"Executes a single-shot decode with logical-coset scoring (Theorem 2) against logical observables."},{name:"threshold_sweep",desc:"Runs device-local code-capacity sweeps with Wilson 95% confidence intervals and SHA-256 sealed artifacts."},{name:"build_code_from_matrix",desc:"Validates and compiles an arbitrary binary parity-check matrix with rank and observable analysis."},{name:"compat_report",desc:"Audits runtime health, wheel version, NumPy compatibility, and provisional feature boundaries."}],d=["artifacts_sha256","artifact_metadata_check","code_distance_check","code_export_matrices","code_family_info","code_logicals_inspect","compat_report","decode_faithfulness_check","dem_collapse_parallel","dem_inspect","env_block","glossary_lookup","hardware_probe","hot_path_microbench","license_active_check","logical_coset_score","pymatching_compat_check","qiskit_plugin_check","reproduction_command_lookup","sinter_decoder_list","sinter_task_template","stim_circuit_probe","theorem_lookup","wilson_ci","wilson_table","workload_hash","get_capability_matrix","get_evidence_policy","get_runtime_provenance"],m=["system_setup","configure_claude_desktop","workbench_probe"];function B(){const[r,x]=h.useState(!1),p=(s,a)=>{navigator.clipboard.writeText(s),a(!0),setTimeout(()=>a(!1),2e3)},l=`claude plugin marketplace add GuillaumeLessard/qector-claude-plugin -claude plugin install qector@qector-tools`;return e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"QECTOR Claude Plugin · Quantum Error Correction for Claude Code",description:"Official QECTOR Claude Code and Claude Desktop plugin v1.0.6. 28 skills, 5 agents, four MCP servers, and qector-decoder-v3 1.0.0 with local stdio-based decoding."}),e.jsx(f,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Claude Plugin",description:"Official QECTOR plugin v1.0.6 for Claude Code and Claude Desktop. 28 skills, 5 agents, four MCP servers, 8 stable library tools, 29 opt-in research tools, and 3 opt-in admin tools.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",softwareVersion:"1.0.6",author:{"@type":"Person",name:"Guillaume Lessard",url:"https://orcid.org/0009-0000-3465-3753"},offers:{"@type":"Offer",price:"0",priceCurrency:"USD"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-400/5 via-surface/40 to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/4 left-1/2 -translate-x-1/2 -translate-y-1/2 w-96 h-96 bg-cyan-400/10 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"max-w-6xl mx-auto px-4 sm:px-6 relative z-10 text-center",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3.5 py-1.5 rounded-full bg-cyan-950/60 border border-cyan-800/60 text-cyan-300 text-xs font-mono font-medium mb-6 backdrop-blur-sm",children:[e.jsx(b,{className:"w-3.5 h-3.5 text-cyan-400"}),e.jsxs("span",{children:["ANTHROPIC CLAUDE CODE & DESKTOP PLUGIN · v",n.version," · published ",n.releaseDate]})]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-extrabold tracking-tight text-slate-100 mb-6 max-w-4xl mx-auto leading-[1.1]",children:e.jsx(g,{text:"QECTOR Claude Plugin"})}),e.jsxs("p",{className:"text-lg md:text-xl text-slate-300 max-w-3xl mx-auto leading-relaxed mb-8",children:["Empower Claude with local Quantum Error Correction engineering. Release v1.0.6 adds marketplace compliance hardening and environment-agnostic setup. It includes"," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"28 domain skills"}),","," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"5 specialized agents"}),","," ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"8 stable library tools"}),", 29 opt-in research tools, and 3 opt-in admin tools across four MCP servers. The default configuration uses local stdio transport."]}),e.jsxs("div",{className:"max-w-2xl mx-auto bg-slate-950/90 border border-cyan-900/60 rounded-2xl p-5 mb-10 shadow-2xl backdrop-blur-md text-left",children:[e.jsxs("div",{className:"flex items-center justify-between pb-3 mb-3 border-b border-slate-800/80",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(o,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{className:"text-xs font-mono font-semibold uppercase tracking-wider text-slate-400",children:"Instant Marketplace Install"})]}),e.jsxs("button",{onClick:()=>p(l,x),className:"flex items-center gap-1.5 text-xs font-mono text-cyan-400 hover:text-cyan-300 transition-colors px-2.5 py-1 rounded bg-cyan-950/50 border border-cyan-800/40",children:[r?e.jsx(y,{className:"w-3.5 h-3.5 text-green-400"}):e.jsx(j,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:r?"Copied":"Copy"})]})]}),e.jsx("pre",{className:"font-mono text-sm text-cyan-300 overflow-x-auto whitespace-pre leading-relaxed",children:l})]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin",target:"_blank",rel:"noopener noreferrer",className:"px-6 py-3 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-sm transition-all shadow-lg shadow-cyan-400/20 inline-flex items-center gap-2",children:[e.jsx("span",{children:"GitHub Repository"}),e.jsx(v,{className:"w-4 h-4"})]}),e.jsxs(c,{to:"/mcp-server",className:"px-6 py-3 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-sm transition-all inline-flex items-center gap-2",children:[e.jsx("span",{children:"MCP Server Reference"}),e.jsx(N,{className:"w-4 h-4 text-cyan-400"})]})]}),e.jsx("p",{className:"text-xs text-slate-400 mt-6",children:"Independent plugin by iD01t Productions. Not affiliated with or endorsed by Anthropic."})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(w,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Local-First Security"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"Local stdio transport by default. Parity matrices, syndromes, quantum circuits, and simulation artifacts are processed on the host machine; verify your host environment if confidentiality matters."})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(i,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Strict Mathematics"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Decodes are checked against ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"H c = s (mod 2)"}),". Scored with logical cosets and Wilson 95% CIs."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(k,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"App-Free Library"}),e.jsxs("p",{className:"text-sm text-slate-400 leading-relaxed",children:["Built on the official ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"qector-decoder-v3==1.0.0"})," Rust/PyO3 wheel. No desktop GUI required."]})]}),e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 hover:border-cyan-500/40 transition-all",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-cyan-950/80 border border-cyan-800/50 flex items-center justify-center text-cyan-400 mb-4",children:e.jsx(C,{className:"w-6 h-6"})}),e.jsx("h2",{className:"text-lg font-bold text-slate-100 mb-2",children:"Multi-Agent System"}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:"28 domain skills and 5 tailored agent personas designed for research, hardware design, verification, and engineering."})]})]})}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"DOMAIN SKILLS ECOSYSTEM"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"28 Grounded QEC Skills"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Each skill encodes verified domain rules and strict-math obligations to reduce hallucination risk and ground interactions in reproducible physics. The seven flagship skills below are a subset of the 28 skills shipped in v1.0.6."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:O.map(s=>e.jsxs("div",{className:"card-surface p-6 rounded-2xl border border-slate-800/90 flex flex-col justify-between hover:border-cyan-500/30 transition-all",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsx("span",{className:"font-mono text-sm font-bold text-cyan-400",children:s.name}),e.jsx("span",{className:"text-[11px] font-mono px-2 py-0.5 rounded bg-slate-800 text-slate-300 border border-slate-700",children:s.role})]}),e.jsx("p",{className:"text-sm text-slate-300 leading-relaxed mb-4",children:s.desc})]}),e.jsx("div",{className:"pt-3 border-t border-slate-800/80 space-y-1.5",children:s.keyFeatures.map(a=>e.jsxs("div",{className:"flex items-center gap-2 text-xs text-slate-400",children:[e.jsx(q,{className:"w-3.5 h-3.5 text-cyan-400 shrink-0"}),e.jsx("span",{children:a})]},a))})]},s.name))}),e.jsxs("div",{className:"mt-10",children:[e.jsx("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:"All 28 skills shipped in the plugin"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:T.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-cyan-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(S,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"AGENT ROLES & PERSONAS"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"5 Specialized QEC Agents"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:"Custom agent definitions for Claude Code configured with tailored instructions, prompt templates, and tool access boundaries."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:R.map(s=>e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2 font-mono text-xs text-cyan-400",children:[e.jsx(o,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:s.file})]}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-2",children:s.title}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed",children:s.desc})]})},s.file))})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full bg-cyan-950/50 border border-cyan-800/40 text-cyan-300 text-xs font-mono font-medium mb-3",children:[e.jsx(E,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:"MCP SERVER TOOL SURFACE"})]}),e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Four Local MCP Servers"}),e.jsxs("p",{className:"text-slate-400 text-sm mt-2 max-w-2xl",children:["The v1.0.6 release separates local JSON-RPC 2.0 stdio capabilities by risk and purpose:",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-library "})," (8 stable tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-research "})," (29 provisional tools),",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-admin "})," (3 explicitly enabled tools), and",e.jsx("code",{className:"text-cyan-300 font-mono",children:" qector-desktop-mcp "})," (the safe Desktop profile)."]})]}),e.jsx("div",{className:"card-surface rounded-2xl border border-slate-800 overflow-hidden shadow-xl",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm",children:[e.jsx("thead",{className:"bg-slate-900/90 text-xs font-mono text-cyan-400 uppercase tracking-wider border-b border-slate-800",children:e.jsxs("tr",{children:[e.jsx("th",{className:"px-6 py-4",children:"Tool Name"}),e.jsx("th",{className:"px-6 py-4",children:"Functionality & Mathematical Invariant"})]})}),e.jsx("tbody",{className:"divide-y divide-slate-800/60 font-mono text-xs text-slate-300",children:D.map(s=>e.jsxs("tr",{className:"hover:bg-slate-900/40 transition-colors",children:[e.jsx("td",{className:"px-6 py-4 font-semibold text-cyan-300 whitespace-nowrap",children:s.name}),e.jsx("td",{className:"px-6 py-4 font-sans text-sm text-slate-400",children:s.desc})]},s.name))})]})})}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-research server · ",d.length," provisional tools"]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:d.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-slate-300",children:s},s))})]}),e.jsxs("div",{className:"mt-6",children:[e.jsxs("h3",{className:"text-sm font-bold text-slate-100 mb-3 uppercase tracking-wider",children:["qector-admin server · ",m.length," privileged tools"]}),e.jsxs("p",{className:"text-xs text-slate-400 mb-3",children:["Disabled by default. Requires ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"QECTOR_ADMIN_ENABLED=1"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"confirm=true"})," for every administrative call."]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:m.map(s=>e.jsx("span",{className:"font-mono text-xs px-2.5 py-1 rounded-full bg-slate-900 border border-slate-700 text-gold-300",children:s},s))})]})]}),e.jsxs("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-10",children:[e.jsx("h2",{className:"text-3xl font-extrabold text-slate-100 tracking-tight",children:"Installation & Setup"}),e.jsx("p",{className:"text-slate-400 text-sm mt-2",children:"Configure QECTOR Claude Plugin v1.0.6 for Claude Code or Claude Desktop in seconds."})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"1"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Claude Code Marketplace"})]}),e.jsx("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:"Install directly via Claude Code marketplace registration:"}),e.jsx(t,{code:`# 1. Add marketplace repository -claude plugin marketplace add GuillaumeLessard/qector-claude-plugin - -# 2. Install plugin -claude plugin install qector@qector-tools`,language:"bash"})]})}),e.jsx("div",{className:"card-surface p-6 rounded-2xl border border-slate-800 flex flex-col justify-between",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-6 h-6 rounded-full bg-cyan-400 text-slate-950 font-bold text-xs flex items-center justify-center",children:"2"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100",children:"Local Plugin Directory"})]}),e.jsxs("p",{className:"text-sm text-slate-400 mb-4 leading-relaxed",children:["Clone the source repository and launch with the ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"--plugin-dir"})," flag:"]}),e.jsx(t,{code:`git clone https://github.com/GuillaumeLessard/qector-claude-plugin.git -cd qector-claude-plugin -pip install -r requirements.txt -claude --plugin-dir .`,language:"bash"})]})})]}),e.jsxs("div",{className:"mt-8 card-surface p-6 rounded-2xl border border-slate-800",children:[e.jsxs("h3",{className:"text-lg font-bold text-slate-100 mb-2 flex items-center gap-2",children:[e.jsx(i,{className:"w-5 h-5 text-cyan-400"}),e.jsx("span",{children:"Mathematical Validation Gate"})]}),e.jsx("p",{className:"text-sm text-slate-400 leading-relaxed mb-4",children:"Verify all 16 Reference Manual theorems and 29 executable proof obligations locally on your machine:"}),e.jsx(t,{code:`# Run the complete public reference manual mathematical gate -python scripts/run_manual_math_validation.py - -# Or run full pytest integration suite -python -m pytest tests/test_reference_manual_math.py -v`,language:"bash"})]})]}),e.jsx("section",{className:"py-16 md:py-20 max-w-6xl mx-auto px-4 sm:px-6 mb-12",children:e.jsx("div",{className:"card-surface p-8 border border-cyan-900/50 relative overflow-hidden bg-gradient-to-br from-slate-950 via-surface/60 to-slate-950",children:e.jsxs("div",{className:"relative z-10 flex flex-col md:flex-row items-center justify-between gap-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-2xl font-extrabold text-slate-100 mb-2",children:"Download Distribution Packages"}),e.jsx("p",{className:"text-sm text-slate-400 max-w-xl leading-relaxed",children:"Pre-packaged standalone ZIP archives formatted specifically for the Claude.ai custom-skill uploader (forward-slash path normalized) and Claude Code multi-skill plugin distributions."})]}),e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin/releases/tag/v1.0.6",target:"_blank",rel:"noopener noreferrer",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2 shadow-lg shadow-cyan-400/20",children:[e.jsx(L,{className:"w-4 h-4"}),e.jsx("span",{children:"v1.0.6 Release & Checksums"})]}),e.jsxs(c,{to:"/docs",className:"px-5 py-2.5 rounded-xl bg-slate-900 hover:bg-slate-800 border border-slate-700 text-slate-200 font-semibold text-xs font-mono transition-all inline-flex items-center gap-2",children:[e.jsx(P,{className:"w-4 h-4 text-cyan-400"}),e.jsx("span",{children:"Docs Hub"})]})]})]})})})]})}export{B as default}; diff --git a/assets/Commercial-9F8cl06-.js b/assets/Commercial-9F8cl06-.js deleted file mode 100644 index 54ee569e..00000000 --- a/assets/Commercial-9F8cl06-.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as n,c as r,L as s,P as a}from"./index-DayaklK-.js";import{N as i}from"./NeuralReveal-uYarhiMA.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const o=[{title:"Hosted, SaaS and API",body:"Offer QECTOR decoding to your own customers through a hosted service or API. Standard plans cover internal use only."},{title:"OEM and hardware bundling",body:"Ship QECTOR inside your control stack, appliance or software product, with redistribution rights for your customers."},{title:"Named support engineer",body:"A direct line to the developer, response targets written into the agreement, and help with integration and upgrades."},{title:"Custom terms",body:"Signed agreement, your paper or ours, purchase orders and invoicing, security questionnaires and vendor onboarding."}],d=["E-mail admin@qector.store or book a call: tell us the use case, deployment and timeline.","Optional: start with the Pilot (60 days, creditable toward Lab) or a Validation Sprint on your workloads.","We send a written proposal and agreement; Enterprise starts from "+r(a.enterpriseFrom)+" a year.","Sign, pay by invoice or card, and receive offline licence tokens the same day."];function h(){return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Enterprise & OEM Licensing · QECTOR",description:`Enterprise and OEM licences for QECTOR Decoder v3: hosted and SaaS rights, OEM and hardware bundling, named support and a signed agreement, from ${r(a.enterpriseFrom)} a year. Air-gapped licensing.`}),e.jsxs("section",{className:"relative py-24 md:py-28 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding max-w-3xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill",children:"Enterprise & OEM"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] my-6",children:e.jsx(i,{text:"Enterprise & OEM Licensing",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-8",children:["For teams that put QECTOR in front of their own customers, inside their hardware, or under their own contract terms. From ",r(a.enterpriseFrom)," a year, with licences that verify offline."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[e.jsx(s,{to:"/contact",className:"btn-gold",children:"Talk to us"}),e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"Compare all plans"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-10",children:[e.jsx("div",{className:"grid sm:grid-cols-2 gap-6",children:o.map(t=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-lg font-bold mb-2",children:t.title}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t.body})]},t.title))}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"How it works"}),e.jsx("ol",{className:"list-decimal pl-5 space-y-2 text-secondary text-sm leading-relaxed",children:d.map(t=>e.jsx("li",{children:t},t))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Not sure you need Enterprise?"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Internal research and production use, including GPU decoding, is covered by Pro (",r(a.proMonthly),"/month) or Lab (",r(a.lab),"/year), bought online with no seat counts. You need Enterprise only for hosted or customer-facing use, OEM redistribution or custom contract terms. See the"," ",e.jsx(s,{to:"/license-agreement",className:"text-cyan-300 hover:underline",children:"Commercial Licence Agreement"})," and the"," ",e.jsx(s,{to:"/security",className:"text-cyan-300 hover:underline",children:"Security & Trust"})," pack for procurement."]})]})]})})]})}export{h as default}; diff --git a/assets/Commercial-B6zsxQh9.js b/assets/Commercial-B6zsxQh9.js deleted file mode 100644 index 27b6e2e4..00000000 --- a/assets/Commercial-B6zsxQh9.js +++ /dev/null @@ -1 +0,0 @@ -import{r as t,j as e}from"./vendor-react-BiHfrq0e.js";import{S as n}from"./index-DlmjLVYe.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{L as s}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function x(){return t.useEffect(()=>{window.scrollTo(0,0)},[]),e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Enterprise Licensing · QECTOR",description:"Enterprise and OEM licenses for QECTOR Decoder v3. Custom agreements for redistribution, SaaS hosting, and hardware bundling."}),e.jsx("section",{className:"py-24 md:py-32 section-padding text-center",children:e.jsxs("div",{className:"max-w-2xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill",children:"Enterprise & OEM"}),e.jsx("h1",{className:"text-3xl md:text-5xl font-bold mb-6",children:e.jsx(r,{text:"Enterprise & OEM Licensing",className:"text-3xl md:text-5xl font-bold"})}),e.jsx("p",{className:"text-secondary text-lg mb-8",children:"Custom licensing for redistribution, SaaS hosting, hardware bundling, and strategic partnerships."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"View All Pricing & Tiers →"}),e.jsx(s,{to:"/contact",className:"btn-gold",children:"Contact Enterprise Sales"})]}),e.jsxs("p",{className:"text-muted-foreground text-sm mt-6",children:["All standard licensing information including evaluation, annual tiers, and FAQs has moved to the"," ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing page"}),"."]})]})})]})}export{x as default}; diff --git a/assets/Commercial-B8PtG5cG.js b/assets/Commercial-B8PtG5cG.js deleted file mode 100644 index 1af4fbe1..00000000 --- a/assets/Commercial-B8PtG5cG.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as n,c as r,L as s,P as a}from"./index-PdoH5kLF.js";import{N as i}from"./NeuralReveal-Bsl9IGCr.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const o=[{title:"Hosted, SaaS and API",body:"Offer QECTOR decoding to your own customers through a hosted service or API. Standard plans cover internal use only."},{title:"OEM and hardware bundling",body:"Ship QECTOR inside your control stack, appliance or software product, with redistribution rights for your customers."},{title:"Named support engineer",body:"A direct line to the developer, response targets written into the agreement, and help with integration and upgrades."},{title:"Custom terms",body:"Signed agreement, your paper or ours, purchase orders and invoicing, security questionnaires and vendor onboarding."}],d=["E-mail admin@qector.store or book a call: tell us the use case, deployment and timeline.","Optional: start with the Pilot (60 days, creditable toward Lab) or a Validation Sprint on your workloads.","We send a written proposal and agreement; Enterprise starts from "+r(a.enterpriseFrom)+" a year.","Sign, pay by invoice or card, and receive offline licence tokens the same day."];function h(){return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Enterprise & OEM Licensing · QECTOR",description:`Enterprise and OEM licences for QECTOR Decoder v3: hosted and SaaS rights, OEM and hardware bundling, named support and a signed agreement, from ${r(a.enterpriseFrom)} a year. Air-gapped licensing.`}),e.jsxs("section",{className:"relative py-24 md:py-28 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding max-w-3xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill",children:"Enterprise & OEM"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] my-6",children:e.jsx(i,{text:"Enterprise & OEM Licensing",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-8",children:["For teams that put QECTOR in front of their own customers, inside their hardware, or under their own contract terms. From ",r(a.enterpriseFrom)," a year, with licences that verify offline."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[e.jsx(s,{to:"/contact",className:"btn-gold",children:"Talk to us"}),e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"Compare all plans"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-10",children:[e.jsx("div",{className:"grid sm:grid-cols-2 gap-6",children:o.map(t=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-lg font-bold mb-2",children:t.title}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t.body})]},t.title))}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"How it works"}),e.jsx("ol",{className:"list-decimal pl-5 space-y-2 text-secondary text-sm leading-relaxed",children:d.map(t=>e.jsx("li",{children:t},t))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Not sure you need Enterprise?"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Internal research and production use, including GPU decoding, is covered by Pro (",r(a.proMonthly),"/month) or Lab (",r(a.lab),"/year), bought online with no seat counts. You need Enterprise only for hosted or customer-facing use, OEM redistribution or custom contract terms. See the"," ",e.jsx(s,{to:"/license-agreement",className:"text-cyan-300 hover:underline",children:"Commercial Licence Agreement"})," and the"," ",e.jsx(s,{to:"/security",className:"text-cyan-300 hover:underline",children:"Security & Trust"})," pack for procurement."]})]})]})})]})}export{h as default}; diff --git a/assets/Commercial-BBdipo-u.js b/assets/Commercial-BBdipo-u.js deleted file mode 100644 index ca2f51aa..00000000 --- a/assets/Commercial-BBdipo-u.js +++ /dev/null @@ -1 +0,0 @@ -import{r as t,j as e}from"./vendor-react-BiHfrq0e.js";import{S as n}from"./index-_BpMZhV3.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{L as s}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function x(){return t.useEffect(()=>{window.scrollTo(0,0)},[]),e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Enterprise Licensing · QECTOR",description:"Enterprise and OEM licenses for QECTOR Decoder v3. Custom agreements for redistribution, SaaS hosting, and hardware bundling."}),e.jsx("section",{className:"py-24 md:py-32 section-padding text-center",children:e.jsxs("div",{className:"max-w-2xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill",children:"Enterprise & OEM"}),e.jsx("h1",{className:"text-3xl md:text-5xl font-bold mb-6",children:e.jsx(r,{text:"Enterprise & OEM Licensing",className:"text-3xl md:text-5xl font-bold"})}),e.jsx("p",{className:"text-secondary text-lg mb-8",children:"Custom licensing for redistribution, SaaS hosting, hardware bundling, and strategic partnerships."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"View All Pricing & Tiers →"}),e.jsx(s,{to:"/contact",className:"btn-gold",children:"Contact Enterprise Sales"})]}),e.jsxs("p",{className:"text-muted-foreground text-sm mt-6",children:["All standard licensing information including evaluation, annual tiers, and FAQs has moved to the"," ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing page"}),"."]})]})})]})}export{x as default}; diff --git a/assets/Commercial-BPs2_LwV.js b/assets/Commercial-BPs2_LwV.js deleted file mode 100644 index 23d95439..00000000 --- a/assets/Commercial-BPs2_LwV.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as n,b as r,P as a}from"./index-Bh9DBCb3.js";import{N as i}from"./NeuralReveal-D-EQoOl2.js";import{L as s}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const o=[{title:"Hosted, SaaS and API",body:"Offer QECTOR decoding to your own customers through a hosted service or API. Standard plans cover internal use only."},{title:"OEM and hardware bundling",body:"Ship QECTOR inside your control stack, appliance or software product, with redistribution rights for your customers."},{title:"Named support engineer",body:"A direct line to the developer, response targets written into the agreement, and help with integration and upgrades."},{title:"Custom terms",body:"Signed agreement, your paper or ours, purchase orders and invoicing, security questionnaires and vendor onboarding."}],d=["E-mail admin@qector.store or book a call: tell us the use case, deployment and timeline.","Optional: start with the Pilot (60 days, creditable toward Lab) or a Validation Sprint on your workloads.","We send a written proposal and agreement; Enterprise starts from "+r(a.enterpriseFrom)+" a year.","Sign, pay by invoice or card, and receive offline licence tokens the same day."];function g(){return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Enterprise & OEM Licensing · QECTOR",description:`Enterprise and OEM licences for QECTOR Decoder v3: hosted and SaaS rights, OEM and hardware bundling, named support and a signed agreement, from ${r(a.enterpriseFrom)} a year. Air-gapped licensing.`}),e.jsxs("section",{className:"relative py-24 md:py-28 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding max-w-3xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill",children:"Enterprise & OEM"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] my-6",children:e.jsx(i,{text:"Enterprise & OEM Licensing",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-8",children:["For teams that put QECTOR in front of their own customers, inside their hardware, or under their own contract terms. From ",r(a.enterpriseFrom)," a year, with licences that verify offline."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[e.jsx(s,{to:"/contact",className:"btn-gold",children:"Talk to us"}),e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"Compare all plans"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-10",children:[e.jsx("div",{className:"grid sm:grid-cols-2 gap-6",children:o.map(t=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-lg font-bold mb-2",children:t.title}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t.body})]},t.title))}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"How it works"}),e.jsx("ol",{className:"list-decimal pl-5 space-y-2 text-secondary text-sm leading-relaxed",children:d.map(t=>e.jsx("li",{children:t},t))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Not sure you need Enterprise?"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Internal research and production use, including GPU decoding, is covered by Pro (",r(a.proMonthly),"/month) or Lab (",r(a.lab),"/year), bought online with no seat counts. You need Enterprise only for hosted or customer-facing use, OEM redistribution or custom contract terms. See the"," ",e.jsx(s,{to:"/license-agreement",className:"text-cyan-300 hover:underline",children:"Commercial Licence Agreement"})," and the"," ",e.jsx(s,{to:"/security",className:"text-cyan-300 hover:underline",children:"Security & Trust"})," pack for procurement."]})]})]})})]})}export{g as default}; diff --git a/assets/Commercial-BqJzIf-W.js b/assets/Commercial-BqJzIf-W.js deleted file mode 100644 index 803f5e2c..00000000 --- a/assets/Commercial-BqJzIf-W.js +++ /dev/null @@ -1 +0,0 @@ -import{r as t,j as e}from"./vendor-react-BiHfrq0e.js";import{S as i}from"./index-CxWP17m6.js";import{N as n}from"./NeuralReveal-BflyZYSb.js";import{L as s}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function x(){return t.useEffect(()=>{window.scrollTo(0,0)},[]),e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Enterprise Licensing · QECTOR",description:"Enterprise and OEM licenses for QECTOR Decoder v3. Custom agreements for redistribution, SaaS hosting, and hardware bundling."}),e.jsx("section",{className:"py-24 md:py-32 section-padding text-center",children:e.jsxs("div",{className:"max-w-2xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill",children:"Enterprise & OEM"}),e.jsx("h1",{className:"text-3xl md:text-5xl font-bold mb-6",children:e.jsx(n,{text:"Enterprise & OEM Licensing",className:"text-3xl md:text-5xl font-bold"})}),e.jsx("p",{className:"text-secondary text-lg mb-8",children:"Custom licensing for redistribution, SaaS hosting, hardware bundling, and strategic partnerships."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"View All Pricing & Tiers →"}),e.jsx(s,{to:"/contact",className:"btn-gold",children:"Contact Enterprise Sales"})]}),e.jsxs("p",{className:"text-muted-foreground text-sm mt-6",children:["All standard licensing information, including plans, the Pilot and FAQs, is on the"," ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing page"}),"."]})]})})]})}export{x as default}; diff --git a/assets/Commercial-Bs186zL3.js b/assets/Commercial-Bs186zL3.js deleted file mode 100644 index ee2cbecb..00000000 --- a/assets/Commercial-Bs186zL3.js +++ /dev/null @@ -1 +0,0 @@ -import{r as t,j as e}from"./vendor-react-BiHfrq0e.js";import{S as n}from"./index-CpdATiEY.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{L as s}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function x(){return t.useEffect(()=>{window.scrollTo(0,0)},[]),e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Enterprise Licensing · QECTOR",description:"Enterprise and OEM licenses for QECTOR Decoder v3. Custom agreements for redistribution, SaaS hosting, and hardware bundling."}),e.jsx("section",{className:"py-24 md:py-32 section-padding text-center",children:e.jsxs("div",{className:"max-w-2xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill",children:"Enterprise & OEM"}),e.jsx("h1",{className:"text-3xl md:text-5xl font-bold mb-6",children:e.jsx(r,{text:"Enterprise & OEM Licensing",className:"text-3xl md:text-5xl font-bold"})}),e.jsx("p",{className:"text-secondary text-lg mb-8",children:"Custom licensing for redistribution, SaaS hosting, hardware bundling, and strategic partnerships."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"View All Pricing & Tiers →"}),e.jsx(s,{to:"/contact",className:"btn-gold",children:"Contact Enterprise Sales"})]}),e.jsxs("p",{className:"text-muted-foreground text-sm mt-6",children:["All standard licensing information including evaluation, annual tiers, and FAQs has moved to the"," ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing page"}),"."]})]})})]})}export{x as default}; diff --git a/assets/Commercial-C-t75vTg.js b/assets/Commercial-C-t75vTg.js deleted file mode 100644 index 79cb5b55..00000000 --- a/assets/Commercial-C-t75vTg.js +++ /dev/null @@ -1 +0,0 @@ -import{r as t,j as e}from"./vendor-react-BiHfrq0e.js";import{S as n}from"./index-iVST85F-.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{L as s}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function x(){return t.useEffect(()=>{window.scrollTo(0,0)},[]),e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Enterprise Licensing · QECTOR",description:"Enterprise and OEM licenses for QECTOR Decoder v3. Custom agreements for redistribution, SaaS hosting, and hardware bundling."}),e.jsx("section",{className:"py-24 md:py-32 section-padding text-center",children:e.jsxs("div",{className:"max-w-2xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill",children:"Enterprise & OEM"}),e.jsx("h1",{className:"text-3xl md:text-5xl font-bold mb-6",children:e.jsx(r,{text:"Enterprise & OEM Licensing",className:"text-3xl md:text-5xl font-bold"})}),e.jsx("p",{className:"text-secondary text-lg mb-8",children:"Custom licensing for redistribution, SaaS hosting, hardware bundling, and strategic partnerships."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"View All Pricing & Tiers →"}),e.jsx(s,{to:"/contact",className:"btn-gold",children:"Contact Enterprise Sales"})]}),e.jsxs("p",{className:"text-muted-foreground text-sm mt-6",children:["All standard licensing information including evaluation, annual tiers, and FAQs has moved to the"," ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing page"}),"."]})]})})]})}export{x as default}; diff --git a/assets/Commercial-C0AKNYqz.js b/assets/Commercial-C0AKNYqz.js deleted file mode 100644 index d8d5d354..00000000 --- a/assets/Commercial-C0AKNYqz.js +++ /dev/null @@ -1 +0,0 @@ -import{r as t,j as e}from"./vendor-react-BiHfrq0e.js";import{S as n}from"./index-BN-vOeL2.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{L as s}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function x(){return t.useEffect(()=>{window.scrollTo(0,0)},[]),e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Enterprise Licensing · QECTOR",description:"Enterprise and OEM licenses for QECTOR Decoder v3. Custom agreements for redistribution, SaaS hosting, and hardware bundling."}),e.jsx("section",{className:"py-24 md:py-32 section-padding text-center",children:e.jsxs("div",{className:"max-w-2xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill",children:"Enterprise & OEM"}),e.jsx("h1",{className:"text-3xl md:text-5xl font-bold mb-6",children:e.jsx(r,{text:"Enterprise & OEM Licensing",className:"text-3xl md:text-5xl font-bold"})}),e.jsx("p",{className:"text-secondary text-lg mb-8",children:"Custom licensing for redistribution, SaaS hosting, hardware bundling, and strategic partnerships."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"View All Pricing & Tiers →"}),e.jsx(s,{to:"/contact",className:"btn-gold",children:"Contact Enterprise Sales"})]}),e.jsxs("p",{className:"text-muted-foreground text-sm mt-6",children:["All standard licensing information including evaluation, annual tiers, and FAQs has moved to the"," ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing page"}),"."]})]})})]})}export{x as default}; diff --git a/assets/Commercial-CCyjMCrg.js b/assets/Commercial-CCyjMCrg.js deleted file mode 100644 index 86bee8b5..00000000 --- a/assets/Commercial-CCyjMCrg.js +++ /dev/null @@ -1 +0,0 @@ -import{r as t,j as e}from"./vendor-react-BiHfrq0e.js";import{S as n}from"./index-CqAA-ZXu.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{L as s}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function x(){return t.useEffect(()=>{window.scrollTo(0,0)},[]),e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Enterprise Licensing · QECTOR",description:"Enterprise and OEM licenses for QECTOR Decoder v3. Custom agreements for redistribution, SaaS hosting, and hardware bundling."}),e.jsx("section",{className:"py-24 md:py-32 section-padding text-center",children:e.jsxs("div",{className:"max-w-2xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill",children:"Enterprise & OEM"}),e.jsx("h1",{className:"text-3xl md:text-5xl font-bold mb-6",children:e.jsx(r,{text:"Enterprise & OEM Licensing",className:"text-3xl md:text-5xl font-bold"})}),e.jsx("p",{className:"text-secondary text-lg mb-8",children:"Custom licensing for redistribution, SaaS hosting, hardware bundling, and strategic partnerships."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"View All Pricing & Tiers →"}),e.jsx(s,{to:"/contact",className:"btn-gold",children:"Contact Enterprise Sales"})]}),e.jsxs("p",{className:"text-muted-foreground text-sm mt-6",children:["All standard licensing information including evaluation, annual tiers, and FAQs has moved to the"," ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing page"}),"."]})]})})]})}export{x as default}; diff --git a/assets/Commercial-CHRl50uZ.js b/assets/Commercial-CHRl50uZ.js deleted file mode 100644 index 226c6511..00000000 --- a/assets/Commercial-CHRl50uZ.js +++ /dev/null @@ -1 +0,0 @@ -import{r as t,j as e}from"./vendor-react-BiHfrq0e.js";import{S as n}from"./index-B9kEGiWi.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{L as s}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function x(){return t.useEffect(()=>{window.scrollTo(0,0)},[]),e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Enterprise Licensing · QECTOR",description:"Enterprise and OEM licenses for QECTOR Decoder v3. Custom agreements for redistribution, SaaS hosting, and hardware bundling."}),e.jsx("section",{className:"py-24 md:py-32 section-padding text-center",children:e.jsxs("div",{className:"max-w-2xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill",children:"Enterprise & OEM"}),e.jsx("h1",{className:"text-3xl md:text-5xl font-bold mb-6",children:e.jsx(r,{text:"Enterprise & OEM Licensing",className:"text-3xl md:text-5xl font-bold"})}),e.jsx("p",{className:"text-secondary text-lg mb-8",children:"Custom licensing for redistribution, SaaS hosting, hardware bundling, and strategic partnerships."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"View All Pricing & Tiers →"}),e.jsx(s,{to:"/contact",className:"btn-gold",children:"Contact Enterprise Sales"})]}),e.jsxs("p",{className:"text-muted-foreground text-sm mt-6",children:["All standard licensing information including evaluation, annual tiers, and FAQs has moved to the"," ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing page"}),"."]})]})})]})}export{x as default}; diff --git a/assets/Commercial-CK9aK7Ti.js b/assets/Commercial-CK9aK7Ti.js deleted file mode 100644 index f6a01b6d..00000000 --- a/assets/Commercial-CK9aK7Ti.js +++ /dev/null @@ -1 +0,0 @@ -import{r as t,j as e}from"./vendor-react-BiHfrq0e.js";import{S as i}from"./index-DkYdPRY7.js";import{N as n}from"./NeuralReveal-BflyZYSb.js";import{L as s}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function x(){return t.useEffect(()=>{window.scrollTo(0,0)},[]),e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Enterprise Licensing · QECTOR",description:"Enterprise and OEM licenses for QECTOR Decoder v3. Custom agreements for redistribution, SaaS hosting, and hardware bundling."}),e.jsx("section",{className:"py-24 md:py-32 section-padding text-center",children:e.jsxs("div",{className:"max-w-2xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill",children:"Enterprise & OEM"}),e.jsx("h1",{className:"text-3xl md:text-5xl font-bold mb-6",children:e.jsx(n,{text:"Enterprise & OEM Licensing",className:"text-3xl md:text-5xl font-bold"})}),e.jsx("p",{className:"text-secondary text-lg mb-8",children:"Custom licensing for redistribution, SaaS hosting, hardware bundling, and strategic partnerships."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"View All Pricing & Tiers →"}),e.jsx(s,{to:"/contact",className:"btn-gold",children:"Contact Enterprise Sales"})]}),e.jsxs("p",{className:"text-muted-foreground text-sm mt-6",children:["All standard licensing information, including plans, the Pilot and FAQs, is on the"," ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing page"}),"."]})]})})]})}export{x as default}; diff --git a/assets/Commercial-CbwZveQB.js b/assets/Commercial-CbwZveQB.js deleted file mode 100644 index fdd28ab3..00000000 --- a/assets/Commercial-CbwZveQB.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as n,b as r,P as a}from"./index-abfjMTlQ.js";import{N as i}from"./NeuralReveal-D-EQoOl2.js";import{L as s}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const o=[{title:"Hosted, SaaS and API",body:"Offer QECTOR decoding to your own customers through a hosted service or API. Standard plans cover internal use only."},{title:"OEM and hardware bundling",body:"Ship QECTOR inside your control stack, appliance or software product, with redistribution rights for your customers."},{title:"Named support engineer",body:"A direct line to the developer, response targets written into the agreement, and help with integration and upgrades."},{title:"Custom terms",body:"Signed agreement, your paper or ours, purchase orders and invoicing, security questionnaires and vendor onboarding."}],d=["E-mail admin@qector.store or book a call: tell us the use case, deployment and timeline.","Optional: start with the Pilot (60 days, creditable toward Lab) or a Validation Sprint on your workloads.","We send a written proposal and agreement; Enterprise starts from "+r(a.enterpriseFrom)+" a year.","Sign, pay by invoice or card, and receive offline licence tokens the same day."];function g(){return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Enterprise & OEM Licensing · QECTOR",description:`Enterprise and OEM licences for QECTOR Decoder v3: hosted and SaaS rights, OEM and hardware bundling, named support and a signed agreement, from ${r(a.enterpriseFrom)} a year. Air-gapped licensing.`}),e.jsxs("section",{className:"relative py-24 md:py-28 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding max-w-3xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill",children:"Enterprise & OEM"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] my-6",children:e.jsx(i,{text:"Enterprise & OEM Licensing",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-8",children:["For teams that put QECTOR in front of their own customers, inside their hardware, or under their own contract terms. From ",r(a.enterpriseFrom)," a year, with licences that verify offline."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[e.jsx(s,{to:"/contact",className:"btn-gold",children:"Talk to us"}),e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"Compare all plans"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-10",children:[e.jsx("div",{className:"grid sm:grid-cols-2 gap-6",children:o.map(t=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-lg font-bold mb-2",children:t.title}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t.body})]},t.title))}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"How it works"}),e.jsx("ol",{className:"list-decimal pl-5 space-y-2 text-secondary text-sm leading-relaxed",children:d.map(t=>e.jsx("li",{children:t},t))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Not sure you need Enterprise?"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Internal research and production use, including GPU decoding, is covered by Pro (",r(a.proMonthly),"/month) or Lab (",r(a.lab),"/year), bought online with no seat counts. You need Enterprise only for hosted or customer-facing use, OEM redistribution or custom contract terms. See the"," ",e.jsx(s,{to:"/license-agreement",className:"text-cyan-300 hover:underline",children:"Commercial Licence Agreement"})," and the"," ",e.jsx(s,{to:"/security",className:"text-cyan-300 hover:underline",children:"Security & Trust"})," pack for procurement."]})]})]})})]})}export{g as default}; diff --git a/assets/Commercial-CgBsPCVr.js b/assets/Commercial-CgBsPCVr.js deleted file mode 100644 index 46e310b2..00000000 --- a/assets/Commercial-CgBsPCVr.js +++ /dev/null @@ -1 +0,0 @@ -import{r as t,j as e}from"./vendor-react-BiHfrq0e.js";import{S as n}from"./index-BcbVjARk.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{L as s}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function x(){return t.useEffect(()=>{window.scrollTo(0,0)},[]),e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Enterprise Licensing · QECTOR",description:"Enterprise and OEM licenses for QECTOR Decoder v3. Custom agreements for redistribution, SaaS hosting, and hardware bundling."}),e.jsx("section",{className:"py-24 md:py-32 section-padding text-center",children:e.jsxs("div",{className:"max-w-2xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill",children:"Enterprise & OEM"}),e.jsx("h1",{className:"text-3xl md:text-5xl font-bold mb-6",children:e.jsx(r,{text:"Enterprise & OEM Licensing",className:"text-3xl md:text-5xl font-bold"})}),e.jsx("p",{className:"text-secondary text-lg mb-8",children:"Custom licensing for redistribution, SaaS hosting, hardware bundling, and strategic partnerships."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"View All Pricing & Tiers →"}),e.jsx(s,{to:"/contact",className:"btn-gold",children:"Contact Enterprise Sales"})]}),e.jsxs("p",{className:"text-muted-foreground text-sm mt-6",children:["All standard licensing information including evaluation, annual tiers, and FAQs has moved to the"," ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing page"}),"."]})]})})]})}export{x as default}; diff --git a/assets/Commercial-CxpVn0T0.js b/assets/Commercial-CxpVn0T0.js deleted file mode 100644 index b4b5e478..00000000 --- a/assets/Commercial-CxpVn0T0.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as n,c as r,L as s,P as a}from"./index-CcwlvHYJ.js";import{N as i}from"./NeuralReveal-Bsl9IGCr.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";const o=[{title:"Hosted, SaaS and API",body:"Offer QECTOR decoding to your own customers through a hosted service or API. Standard plans cover internal use only."},{title:"OEM and hardware bundling",body:"Ship QECTOR inside your control stack, appliance or software product, with redistribution rights for your customers."},{title:"Named support engineer",body:"A direct line to the developer, response targets written into the agreement, and help with integration and upgrades."},{title:"Custom terms",body:"Signed agreement, your paper or ours, purchase orders and invoicing, security questionnaires and vendor onboarding."}],d=["E-mail admin@qector.store or book a call: tell us the use case, deployment and timeline.","Optional: start with the Pilot (60 days, creditable toward Lab) or a Validation Sprint on your workloads.","We send a written proposal and agreement; Enterprise starts from "+r(a.enterpriseFrom)+" a year.","Sign, pay by invoice or card, and receive offline licence tokens the same day."];function h(){return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Enterprise & OEM Licensing · QECTOR",description:`Enterprise and OEM licences for QECTOR Decoder v3: hosted and SaaS rights, OEM and hardware bundling, named support and a signed agreement, from ${r(a.enterpriseFrom)} a year. Air-gapped licensing.`}),e.jsxs("section",{className:"relative py-24 md:py-28 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding max-w-3xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill",children:"Enterprise & OEM"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] my-6",children:e.jsx(i,{text:"Enterprise & OEM Licensing",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-8",children:["For teams that put QECTOR in front of their own customers, inside their hardware, or under their own contract terms. From ",r(a.enterpriseFrom)," a year, with licences that verify offline."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[e.jsx(s,{to:"/contact",className:"btn-gold",children:"Talk to us"}),e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"Compare all plans"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-10",children:[e.jsx("div",{className:"grid sm:grid-cols-2 gap-6",children:o.map(t=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-lg font-bold mb-2",children:t.title}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t.body})]},t.title))}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"How it works"}),e.jsx("ol",{className:"list-decimal pl-5 space-y-2 text-secondary text-sm leading-relaxed",children:d.map(t=>e.jsx("li",{children:t},t))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Not sure you need Enterprise?"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Internal research and production use, including GPU decoding, is covered by Pro (",r(a.proMonthly),"/month) or Lab (",r(a.lab),"/year), bought online with no seat counts. You need Enterprise only for hosted or customer-facing use, OEM redistribution or custom contract terms. See the"," ",e.jsx(s,{to:"/license-agreement",className:"text-cyan-300 hover:underline",children:"Commercial Licence Agreement"})," and the"," ",e.jsx(s,{to:"/security",className:"text-cyan-300 hover:underline",children:"Security & Trust"})," pack for procurement."]})]})]})})]})}export{h as default}; diff --git a/assets/Commercial-DQA7Mxss.js b/assets/Commercial-DQA7Mxss.js deleted file mode 100644 index 2e519614..00000000 --- a/assets/Commercial-DQA7Mxss.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as n,c as r,L as s,P as a}from"./index-CCmwjNGU.js";import{N as i}from"./NeuralReveal-uYarhiMA.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const o=[{title:"Hosted, SaaS and API",body:"Offer QECTOR decoding to your own customers through a hosted service or API. Standard plans cover internal use only."},{title:"OEM and hardware bundling",body:"Ship QECTOR inside your control stack, appliance or software product, with redistribution rights for your customers."},{title:"Named support engineer",body:"A direct line to the developer, response targets written into the agreement, and help with integration and upgrades."},{title:"Custom terms",body:"Signed agreement, your paper or ours, purchase orders and invoicing, security questionnaires and vendor onboarding."}],d=["E-mail admin@qector.store or book a call: tell us the use case, deployment and timeline.","Optional: start with the Pilot (60 days, creditable toward Lab) or a Validation Sprint on your workloads.","We send a written proposal and agreement; Enterprise starts from "+r(a.enterpriseFrom)+" a year.","Sign, pay by invoice or card, and receive offline licence tokens the same day."];function h(){return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Enterprise & OEM Licensing · QECTOR",description:`Enterprise and OEM licences for QECTOR Decoder v3: hosted and SaaS rights, OEM and hardware bundling, named support and a signed agreement, from ${r(a.enterpriseFrom)} a year. Air-gapped licensing.`}),e.jsxs("section",{className:"relative py-24 md:py-28 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding max-w-3xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill",children:"Enterprise & OEM"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] my-6",children:e.jsx(i,{text:"Enterprise & OEM Licensing",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-8",children:["For teams that put QECTOR in front of their own customers, inside their hardware, or under their own contract terms. From ",r(a.enterpriseFrom)," a year, with licences that verify offline."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[e.jsx(s,{to:"/contact",className:"btn-gold",children:"Talk to us"}),e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"Compare all plans"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-10",children:[e.jsx("div",{className:"grid sm:grid-cols-2 gap-6",children:o.map(t=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-lg font-bold mb-2",children:t.title}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t.body})]},t.title))}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"How it works"}),e.jsx("ol",{className:"list-decimal pl-5 space-y-2 text-secondary text-sm leading-relaxed",children:d.map(t=>e.jsx("li",{children:t},t))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Not sure you need Enterprise?"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Internal research and production use, including GPU decoding, is covered by Pro (",r(a.proMonthly),"/month) or Lab (",r(a.lab),"/year), bought online with no seat counts. You need Enterprise only for hosted or customer-facing use, OEM redistribution or custom contract terms. See the"," ",e.jsx(s,{to:"/license-agreement",className:"text-cyan-300 hover:underline",children:"Commercial Licence Agreement"})," and the"," ",e.jsx(s,{to:"/security",className:"text-cyan-300 hover:underline",children:"Security & Trust"})," pack for procurement."]})]})]})})]})}export{h as default}; diff --git a/assets/Commercial-MVsMi_JH.js b/assets/Commercial-MVsMi_JH.js deleted file mode 100644 index 1fc07b43..00000000 --- a/assets/Commercial-MVsMi_JH.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as n,c as r,L as s,P as a}from"./index-c1PDYu0j.js";import{N as i}from"./NeuralReveal-uYarhiMA.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const o=[{title:"Hosted, SaaS and API",body:"Offer QECTOR decoding to your own customers through a hosted service or API. Standard plans cover internal use only."},{title:"OEM and hardware bundling",body:"Ship QECTOR inside your control stack, appliance or software product, with redistribution rights for your customers."},{title:"Named support engineer",body:"A direct line to the developer, response targets written into the agreement, and help with integration and upgrades."},{title:"Custom terms",body:"Signed agreement, your paper or ours, purchase orders and invoicing, security questionnaires and vendor onboarding."}],d=["E-mail admin@qector.store or book a call: tell us the use case, deployment and timeline.","Optional: start with the Pilot (60 days, creditable toward Lab) or a Validation Sprint on your workloads.","We send a written proposal and agreement; Enterprise starts from "+r(a.enterpriseFrom)+" a year.","Sign, pay by invoice or card, and receive offline licence tokens the same day."];function h(){return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Enterprise & OEM Licensing · QECTOR",description:`Enterprise and OEM licences for QECTOR Decoder v3: hosted and SaaS rights, OEM and hardware bundling, named support and a signed agreement, from ${r(a.enterpriseFrom)} a year. Air-gapped licensing.`}),e.jsxs("section",{className:"relative py-24 md:py-28 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding max-w-3xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill",children:"Enterprise & OEM"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] my-6",children:e.jsx(i,{text:"Enterprise & OEM Licensing",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-8",children:["For teams that put QECTOR in front of their own customers, inside their hardware, or under their own contract terms. From ",r(a.enterpriseFrom)," a year, with licences that verify offline."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[e.jsx(s,{to:"/contact",className:"btn-gold",children:"Talk to us"}),e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"Compare all plans"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-10",children:[e.jsx("div",{className:"grid sm:grid-cols-2 gap-6",children:o.map(t=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-lg font-bold mb-2",children:t.title}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t.body})]},t.title))}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"How it works"}),e.jsx("ol",{className:"list-decimal pl-5 space-y-2 text-secondary text-sm leading-relaxed",children:d.map(t=>e.jsx("li",{children:t},t))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Not sure you need Enterprise?"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Internal research and production use, including GPU decoding, is covered by Pro (",r(a.proMonthly),"/month) or Lab (",r(a.lab),"/year), bought online with no seat counts. You need Enterprise only for hosted or customer-facing use, OEM redistribution or custom contract terms. See the"," ",e.jsx(s,{to:"/license-agreement",className:"text-cyan-300 hover:underline",children:"Commercial Licence Agreement"})," and the"," ",e.jsx(s,{to:"/security",className:"text-cyan-300 hover:underline",children:"Security & Trust"})," pack for procurement."]})]})]})})]})}export{h as default}; diff --git a/assets/Commercial-_regRqgo.js b/assets/Commercial-_regRqgo.js deleted file mode 100644 index c5f1a432..00000000 --- a/assets/Commercial-_regRqgo.js +++ /dev/null @@ -1 +0,0 @@ -import{r as t,j as e}from"./vendor-react-BiHfrq0e.js";import{S as n}from"./index-DRAXObZB.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{L as s}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function x(){return t.useEffect(()=>{window.scrollTo(0,0)},[]),e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Enterprise Licensing · QECTOR",description:"Enterprise and OEM licenses for QECTOR Decoder v3. Custom agreements for redistribution, SaaS hosting, and hardware bundling."}),e.jsx("section",{className:"py-24 md:py-32 section-padding text-center",children:e.jsxs("div",{className:"max-w-2xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill",children:"Enterprise & OEM"}),e.jsx("h1",{className:"text-3xl md:text-5xl font-bold mb-6",children:e.jsx(r,{text:"Enterprise & OEM Licensing",className:"text-3xl md:text-5xl font-bold"})}),e.jsx("p",{className:"text-secondary text-lg mb-8",children:"Custom licensing for redistribution, SaaS hosting, hardware bundling, and strategic partnerships."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"View All Pricing & Tiers →"}),e.jsx(s,{to:"/contact",className:"btn-gold",children:"Contact Enterprise Sales"})]}),e.jsxs("p",{className:"text-muted-foreground text-sm mt-6",children:["All standard licensing information including evaluation, annual tiers, and FAQs has moved to the"," ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing page"}),"."]})]})})]})}export{x as default}; diff --git a/assets/Commercial-cPXJAPQT.js b/assets/Commercial-cPXJAPQT.js deleted file mode 100644 index ab01a230..00000000 --- a/assets/Commercial-cPXJAPQT.js +++ /dev/null @@ -1 +0,0 @@ -import{r as t,j as e}from"./vendor-react-BiHfrq0e.js";import{S as n}from"./index-WV1aysjN.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{L as s}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function x(){return t.useEffect(()=>{window.scrollTo(0,0)},[]),e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Enterprise Licensing · QECTOR",description:"Enterprise and OEM licenses for QECTOR Decoder v3. Custom agreements for redistribution, SaaS hosting, and hardware bundling."}),e.jsx("section",{className:"py-24 md:py-32 section-padding text-center",children:e.jsxs("div",{className:"max-w-2xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill",children:"Enterprise & OEM"}),e.jsx("h1",{className:"text-3xl md:text-5xl font-bold mb-6",children:e.jsx(r,{text:"Enterprise & OEM Licensing",className:"text-3xl md:text-5xl font-bold"})}),e.jsx("p",{className:"text-secondary text-lg mb-8",children:"Custom licensing for redistribution, SaaS hosting, hardware bundling, and strategic partnerships."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"View All Pricing & Tiers →"}),e.jsx(s,{to:"/contact",className:"btn-gold",children:"Contact Enterprise Sales"})]}),e.jsxs("p",{className:"text-muted-foreground text-sm mt-6",children:["All standard licensing information including evaluation, annual tiers, and FAQs has moved to the"," ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing page"}),"."]})]})})]})}export{x as default}; diff --git a/assets/Commercial-e3jcuxYP.js b/assets/Commercial-e3jcuxYP.js deleted file mode 100644 index bfadd587..00000000 --- a/assets/Commercial-e3jcuxYP.js +++ /dev/null @@ -1 +0,0 @@ -import{r as t,j as e}from"./vendor-react-BiHfrq0e.js";import{S as i}from"./index-BUYYSLdX.js";import{N as n}from"./NeuralReveal-BflyZYSb.js";import{L as s}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function x(){return t.useEffect(()=>{window.scrollTo(0,0)},[]),e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Enterprise Licensing · QECTOR",description:"Enterprise and OEM licenses for QECTOR Decoder v3. Custom agreements for redistribution, SaaS hosting, and hardware bundling."}),e.jsx("section",{className:"py-24 md:py-32 section-padding text-center",children:e.jsxs("div",{className:"max-w-2xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill",children:"Enterprise & OEM"}),e.jsx("h1",{className:"text-3xl md:text-5xl font-bold mb-6",children:e.jsx(n,{text:"Enterprise & OEM Licensing",className:"text-3xl md:text-5xl font-bold"})}),e.jsx("p",{className:"text-secondary text-lg mb-8",children:"Custom licensing for redistribution, SaaS hosting, hardware bundling, and strategic partnerships."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"View All Pricing & Tiers →"}),e.jsx(s,{to:"/contact",className:"btn-gold",children:"Contact Enterprise Sales"})]}),e.jsxs("p",{className:"text-muted-foreground text-sm mt-6",children:["All standard licensing information, including plans, the Pilot and FAQs, is on the"," ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing page"}),"."]})]})})]})}export{x as default}; diff --git a/assets/Compare-5L3DLJJs.js b/assets/Compare-5L3DLJJs.js deleted file mode 100644 index ac463c15..00000000 --- a/assets/Compare-5L3DLJJs.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,L as n}from"./index-CCmwjNGU.js";import{N as r}from"./NeuralReveal-uYarhiMA.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const i=[{label:"Main decoders",qector:"Union-Find, exact MWPM (Blossom, Sparse Blossom), BP-OSD, Relay-BP",pymatching:"MWPM (Sparse Blossom), correlated matching",ldpc:"BP+OSD, BP+LSD, BeliefFind (BP + Union-Find)",fusion:"Parallel MWPM"},{label:"Graph-like codes (surface, repetition)",qector:"Yes",pymatching:"Yes, its specialty",ldpc:"Yes",fusion:"Yes"},{label:"qLDPC and non-graph-like codes",qector:"Yes (BP-OSD, Relay-BP)",pymatching:"No: needs graph-like error models",ldpc:"Yes, its specialty",fusion:"No"},{label:"Several families on one check matrix",qector:"Yes, one API",pymatching:"Matching only",ldpc:"BP-based family",fusion:"Matching only"},{label:"GPU batch decoding",qector:"Yes (CUDA, OpenCL; paid plans)",pymatching:"No",ldpc:"No",fusion:"No"},{label:"Stim and Sinter",qector:"Yes",pymatching:"Yes",ldpc:"Via Sinter decoder classes",fusion:"Via Sinter"},{label:"Core language",qector:"Rust, Python API",pymatching:"C++, Python API",ldpc:"C++, Python API",fusion:"Rust, Python API"},{label:"Licence",qector:"PolyForm Noncommercial; commercial plans",pymatching:"Apache 2.0",ldpc:"MIT",fusion:"MIT"},{label:"Commercial support",qector:"Yes, with offline-verified licences",pymatching:"Community",ldpc:"Community",fusion:"Community"}],a=[["PyMatching","https://pypi.org/project/pymatching/"],["ldpc","https://pypi.org/project/ldpc/"],["fusion-blossom","https://pypi.org/project/fusion-blossom/"],["QECTOR Decoder v3","https://pypi.org/project/qector-decoder-v3/"]];function x(){return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"QECTOR vs PyMatching, ldpc and fusion-blossom · Feature Comparison",description:"An honest feature comparison of QECTOR Decoder v3 with PyMatching, ldpc and fusion-blossom: decoder families, qLDPC support, GPU, Stim and Sinter, licences and support. No speed claims."}),e.jsxs("section",{className:"relative py-24 md:py-28 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"Features, not speed claims · Checked November 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"How QECTOR Compares",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"PyMatching, ldpc and fusion-blossom are excellent open-source decoders. QECTOR's case is breadth: many decoder families, qLDPC and GPU batch decoding behind one API, with every correction checked."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto space-y-8",children:[e.jsx("div",{className:"card-surface overflow-x-auto",tabIndex:0,role:"region","aria-label":"Feature comparison",children:e.jsxs("table",{className:"w-full min-w-[760px] text-sm text-left",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline",children:[e.jsx("th",{scope:"col",className:"py-3 pr-4 text-muted-foreground font-semibold w-[20%]",children:"Feature"}),e.jsx("th",{scope:"col",className:"py-3 pr-4 text-cyan-300 font-bold",children:"QECTOR Decoder v3"}),e.jsx("th",{scope:"col",className:"py-3 pr-4 text-primary font-semibold",children:"PyMatching"}),e.jsx("th",{scope:"col",className:"py-3 pr-4 text-primary font-semibold",children:"ldpc"}),e.jsx("th",{scope:"col",className:"py-3 text-primary font-semibold",children:"fusion-blossom"})]})}),e.jsx("tbody",{children:i.map(s=>e.jsxs("tr",{className:"border-b border-gridline/50 align-top",children:[e.jsx("th",{scope:"row",className:"py-3 pr-4 text-primary font-medium",children:s.label}),e.jsx("td",{className:"py-3 pr-4 text-primary bg-cyan-300/[0.04]",children:s.qector}),e.jsx("td",{className:"py-3 pr-4 text-secondary",children:s.pymatching}),e.jsx("td",{className:"py-3 pr-4 text-secondary",children:s.ldpc}),e.jsx("td",{className:"py-3 text-secondary",children:s.fusion})]},s.label))})]})}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-6",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Choose another tool when"}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 list-disc pl-5",children:[e.jsx("li",{children:"You only decode surface or repetition codes with matching and want the most established tool: PyMatching is the reference."}),e.jsx("li",{children:"You need a permissive open-source licence to redistribute the decoder inside your own product for free."}),e.jsx("li",{children:"You only need BP-based qLDPC decoding and are happy on CPU: ldpc is mature and MIT-licensed."})]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Choose QECTOR when"}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 list-disc pl-5",children:[e.jsx("li",{children:"You compare several decoder families on the same codes and want one API and one output format."}),e.jsx("li",{children:"You work on qLDPC codes and want GPU batch decoding."}),e.jsx("li",{children:"You need every correction checked against its syndrome, and commercial support with licences that work air-gapped."}),e.jsxs("li",{children:["You use Claude: the ",e.jsx(n,{to:"/claude-plugin",className:"text-cyan-300 hover:underline",children:"QECTOR Claude plugin"})," brings verified decoding into Claude Code and Claude Desktop."]})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"About this comparison"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Features and licences come from each project's own PyPI page, checked on 6 November 2026. We publish no speed comparison: decoder speed depends on code, noise model, hardware and settings, so measure on your own workload. QECTOR ships a PyMatching compatibility shim (",e.jsx("code",{className:"font-mono text-cyan-200",children:"from qector_decoder_v3.pymatching import Matching"}),") so you can switch and compare in place. Spotted something out of date? Write to"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," and we will correct it."]}),e.jsxs("p",{className:"text-secondary text-sm",children:["Sources:"," ",a.map(([s,o],t)=>e.jsxs("span",{children:[e.jsx("a",{href:o,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:s}),te.jsxs("tr",{className:"border-b border-gridline/50 align-top",children:[e.jsx("th",{scope:"row",className:"py-3 pr-4 text-primary font-medium",children:s.label}),e.jsx("td",{className:"py-3 pr-4 text-primary bg-cyan-300/[0.04]",children:s.qector}),e.jsx("td",{className:"py-3 pr-4 text-secondary",children:s.pymatching}),e.jsx("td",{className:"py-3 pr-4 text-secondary",children:s.ldpc}),e.jsx("td",{className:"py-3 text-secondary",children:s.fusion})]},s.label))})]})}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-6",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Choose another tool when"}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 list-disc pl-5",children:[e.jsx("li",{children:"You only decode surface or repetition codes with matching and want the most established tool: PyMatching is the reference."}),e.jsx("li",{children:"You need a permissive open-source licence to redistribute the decoder inside your own product for free."}),e.jsx("li",{children:"You only need BP-based qLDPC decoding and are happy on CPU: ldpc is mature and MIT-licensed."})]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Choose QECTOR when"}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 list-disc pl-5",children:[e.jsx("li",{children:"You compare several decoder families on the same codes and want one API and one output format."}),e.jsx("li",{children:"You work on qLDPC codes and want GPU batch decoding."}),e.jsx("li",{children:"You need every correction checked against its syndrome, and commercial support with licences that work air-gapped."}),e.jsxs("li",{children:["You use Claude: the ",e.jsx(n,{to:"/claude-plugin",className:"text-cyan-300 hover:underline",children:"QECTOR Claude plugin"})," brings verified decoding into Claude Code and Claude Desktop."]})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"About this comparison"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Features and licences come from each project's own PyPI page, checked on 6 November 2026. We publish no speed comparison: decoder speed depends on code, noise model, hardware and settings, so measure on your own workload. QECTOR ships a PyMatching compatibility shim (",e.jsx("code",{className:"font-mono text-cyan-200",children:"from qector_decoder_v3.pymatching import Matching"}),") so you can switch and compare in place. Spotted something out of date? Write to"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," and we will correct it."]}),e.jsxs("p",{className:"text-secondary text-sm",children:["Sources:"," ",a.map(([s,o],t)=>e.jsxs("span",{children:[e.jsx("a",{href:o,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:s}),te.jsxs("tr",{className:"border-b border-gridline/50 align-top",children:[e.jsx("th",{scope:"row",className:"py-3 pr-4 text-primary font-medium",children:s.label}),e.jsx("td",{className:"py-3 pr-4 text-primary bg-cyan-300/[0.04]",children:s.qector}),e.jsx("td",{className:"py-3 pr-4 text-secondary",children:s.pymatching}),e.jsx("td",{className:"py-3 pr-4 text-secondary",children:s.ldpc}),e.jsx("td",{className:"py-3 text-secondary",children:s.fusion})]},s.label))})]})}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-6",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Choose another tool when"}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 list-disc pl-5",children:[e.jsx("li",{children:"You only decode surface or repetition codes with matching and want the most established tool: PyMatching is the reference."}),e.jsx("li",{children:"You need a permissive open-source licence to redistribute the decoder inside your own product for free."}),e.jsx("li",{children:"You only need BP-based qLDPC decoding and are happy on CPU: ldpc is mature and MIT-licensed."})]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Choose QECTOR when"}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 list-disc pl-5",children:[e.jsx("li",{children:"You compare several decoder families on the same codes and want one API and one output format."}),e.jsx("li",{children:"You work on qLDPC codes and want GPU batch decoding."}),e.jsx("li",{children:"You need every correction checked against its syndrome, and commercial support with licences that work air-gapped."}),e.jsxs("li",{children:["You use Claude: the ",e.jsx(n,{to:"/claude-plugin",className:"text-cyan-300 hover:underline",children:"QECTOR Claude plugin"})," brings verified decoding into Claude Code and Claude Desktop."]})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"About this comparison"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Features and licences come from each project's own PyPI page, checked on 6 November 2026. We publish no speed comparison: decoder speed depends on code, noise model, hardware and settings, so measure on your own workload. QECTOR ships a PyMatching compatibility shim (",e.jsx("code",{className:"font-mono text-cyan-200",children:"from qector_decoder_v3.pymatching import Matching"}),") so you can switch and compare in place. Spotted something out of date? Write to"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," and we will correct it."]}),e.jsxs("p",{className:"text-secondary text-sm",children:["Sources:"," ",a.map(([s,o],t)=>e.jsxs("span",{children:[e.jsx("a",{href:o,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:s}),te.jsxs("tr",{className:"border-b border-gridline/50 align-top",children:[e.jsx("th",{scope:"row",className:"py-3 pr-4 text-primary font-medium",children:s.label}),e.jsx("td",{className:"py-3 pr-4 text-primary bg-cyan-300/[0.04]",children:s.qector}),e.jsx("td",{className:"py-3 pr-4 text-secondary",children:s.pymatching}),e.jsx("td",{className:"py-3 pr-4 text-secondary",children:s.ldpc}),e.jsx("td",{className:"py-3 text-secondary",children:s.fusion})]},s.label))})]})}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-6",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Choose another tool when"}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 list-disc pl-5",children:[e.jsx("li",{children:"You only decode surface or repetition codes with matching and want the most established tool: PyMatching is the reference."}),e.jsx("li",{children:"You need a permissive open-source licence to redistribute the decoder inside your own product for free."}),e.jsx("li",{children:"You only need BP-based qLDPC decoding and are happy on CPU: ldpc is mature and MIT-licensed."})]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Choose QECTOR when"}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 list-disc pl-5",children:[e.jsx("li",{children:"You compare several decoder families on the same codes and want one API and one output format."}),e.jsx("li",{children:"You work on qLDPC codes and want GPU batch decoding."}),e.jsx("li",{children:"You need every correction checked against its syndrome, and commercial support with licences that work air-gapped."}),e.jsxs("li",{children:["You use Claude: the ",e.jsx(n,{to:"/claude-plugin",className:"text-cyan-300 hover:underline",children:"QECTOR Claude plugin"})," brings verified decoding into Claude Code and Claude Desktop."]})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"About this comparison"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Features and licences come from each project's own PyPI page, checked on 6 November 2026. We publish no speed comparison: decoder speed depends on code, noise model, hardware and settings, so measure on your own workload. QECTOR ships a PyMatching compatibility shim (",e.jsx("code",{className:"font-mono text-cyan-200",children:"from qector_decoder_v3.pymatching import Matching"}),") so you can switch and compare in place. Spotted something out of date? Write to"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," and we will correct it."]}),e.jsxs("p",{className:"text-secondary text-sm",children:["Sources:"," ",a.map(([s,o],t)=>e.jsxs("span",{children:[e.jsx("a",{href:o,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:s}),te.jsxs("tr",{className:"border-b border-gridline/50 align-top",children:[e.jsx("th",{scope:"row",className:"py-3 pr-4 text-primary font-medium",children:s.label}),e.jsx("td",{className:"py-3 pr-4 text-primary bg-cyan-300/[0.04]",children:s.qector}),e.jsx("td",{className:"py-3 pr-4 text-secondary",children:s.pymatching}),e.jsx("td",{className:"py-3 pr-4 text-secondary",children:s.ldpc}),e.jsx("td",{className:"py-3 text-secondary",children:s.fusion})]},s.label))})]})}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-6",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Choose another tool when"}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 list-disc pl-5",children:[e.jsx("li",{children:"You only decode surface or repetition codes with matching and want the most established tool: PyMatching is the reference."}),e.jsx("li",{children:"You need a permissive open-source licence to redistribute the decoder inside your own product for free."}),e.jsx("li",{children:"You only need BP-based qLDPC decoding and are happy on CPU: ldpc is mature and MIT-licensed."})]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Choose QECTOR when"}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 list-disc pl-5",children:[e.jsx("li",{children:"You compare several decoder families on the same codes and want one API and one output format."}),e.jsx("li",{children:"You work on qLDPC codes and want GPU batch decoding."}),e.jsx("li",{children:"You need every correction checked against its syndrome, and commercial support with licences that work air-gapped."}),e.jsxs("li",{children:["You use Claude: the ",e.jsx(i,{to:"/claude-plugin",className:"text-cyan-300 hover:underline",children:"QECTOR Claude plugin"})," brings verified decoding into Claude Code and Claude Desktop."]})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"About this comparison"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Features and licences come from each project's own PyPI page, checked on 6 November 2026. We publish no speed comparison: decoder speed depends on code, noise model, hardware and settings, so measure on your own workload. QECTOR ships a PyMatching compatibility shim (",e.jsx("code",{className:"font-mono text-cyan-200",children:"from qector_decoder_v3.pymatching import Matching"}),") so you can switch and compare in place. Spotted something out of date? Write to"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," and we will correct it."]}),e.jsxs("p",{className:"text-secondary text-sm",children:["Sources:"," ",a.map(([s,o],t)=>e.jsxs("span",{children:[e.jsx("a",{href:o,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:s}),te.jsxs("tr",{className:"border-b border-gridline/50 align-top",children:[e.jsx("th",{scope:"row",className:"py-3 pr-4 text-primary font-medium",children:s.label}),e.jsx("td",{className:"py-3 pr-4 text-primary bg-cyan-300/[0.04]",children:s.qector}),e.jsx("td",{className:"py-3 pr-4 text-secondary",children:s.pymatching}),e.jsx("td",{className:"py-3 pr-4 text-secondary",children:s.ldpc}),e.jsx("td",{className:"py-3 text-secondary",children:s.fusion})]},s.label))})]})}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-6",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Choose another tool when"}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 list-disc pl-5",children:[e.jsx("li",{children:"You only decode surface or repetition codes with matching and want the most established tool: PyMatching is the reference."}),e.jsx("li",{children:"You need a permissive open-source licence to redistribute the decoder inside your own product for free."}),e.jsx("li",{children:"You only need BP-based qLDPC decoding and are happy on CPU: ldpc is mature and MIT-licensed."})]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Choose QECTOR when"}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 list-disc pl-5",children:[e.jsx("li",{children:"You compare several decoder families on the same codes and want one API and one output format."}),e.jsx("li",{children:"You work on qLDPC codes and want GPU batch decoding."}),e.jsx("li",{children:"You need every correction checked against its syndrome, and commercial support with licences that work air-gapped."}),e.jsxs("li",{children:["You use Claude: the ",e.jsx(i,{to:"/claude-plugin",className:"text-cyan-300 hover:underline",children:"QECTOR Claude plugin"})," brings verified decoding into Claude Code and Claude Desktop."]})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"About this comparison"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Features and licences come from each project's own PyPI page, checked on 6 November 2026. We publish no speed comparison: decoder speed depends on code, noise model, hardware and settings, so measure on your own workload. QECTOR ships a PyMatching compatibility shim (",e.jsx("code",{className:"font-mono text-cyan-200",children:"from qector_decoder_v3.pymatching import Matching"}),") so you can switch and compare in place. Spotted something out of date? Write to"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," and we will correct it."]}),e.jsxs("p",{className:"text-secondary text-sm",children:["Sources:"," ",a.map(([s,o],t)=>e.jsxs("span",{children:[e.jsx("a",{href:o,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:s}),te.jsxs("tr",{className:"border-b border-gridline/50 align-top",children:[e.jsx("th",{scope:"row",className:"py-3 pr-4 text-primary font-medium",children:s.label}),e.jsx("td",{className:"py-3 pr-4 text-primary bg-cyan-300/[0.04]",children:s.qector}),e.jsx("td",{className:"py-3 pr-4 text-secondary",children:s.pymatching}),e.jsx("td",{className:"py-3 pr-4 text-secondary",children:s.ldpc}),e.jsx("td",{className:"py-3 text-secondary",children:s.fusion})]},s.label))})]})}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-6",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Choose another tool when"}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 list-disc pl-5",children:[e.jsx("li",{children:"You only decode surface or repetition codes with matching and want the most established tool: PyMatching is the reference."}),e.jsx("li",{children:"You need a permissive open-source licence to redistribute the decoder inside your own product for free."}),e.jsx("li",{children:"You only need BP-based qLDPC decoding and are happy on CPU: ldpc is mature and MIT-licensed."})]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Choose QECTOR when"}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 list-disc pl-5",children:[e.jsx("li",{children:"You compare several decoder families on the same codes and want one API and one output format."}),e.jsx("li",{children:"You work on qLDPC codes and want GPU batch decoding."}),e.jsx("li",{children:"You need every correction checked against its syndrome, and commercial support with licences that work air-gapped."}),e.jsxs("li",{children:["You use Claude: the ",e.jsx(n,{to:"/claude-plugin",className:"text-cyan-300 hover:underline",children:"QECTOR Claude plugin"})," brings verified decoding into Claude Code and Claude Desktop."]})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"About this comparison"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Features and licences come from each project's own PyPI page, checked on 6 November 2026. We publish no speed comparison: decoder speed depends on code, noise model, hardware and settings, so measure on your own workload. QECTOR ships a PyMatching compatibility shim (",e.jsx("code",{className:"font-mono text-cyan-200",children:"from qector_decoder_v3.pymatching import Matching"}),") so you can switch and compare in place. Spotted something out of date? Write to"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," and we will correct it."]}),e.jsxs("p",{className:"text-secondary text-sm",children:["Sources:"," ",a.map(([s,o],t)=>e.jsxs("span",{children:[e.jsx("a",{href:o,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:s}),t{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{o.current.filter(Boolean).forEach(r=>{n.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const c=(s,r)=>{s&&(o.current[r]=s)},x=async s=>{s.preventDefault(),m("");const r=s.currentTarget,t=new FormData(r);{const u=`QECTOR inquiry from ${t.get("name")||"anonymous"}`,h=[`Name: ${t.get("name")||""}`,`Email: ${t.get("email")||""}`,`Organization: ${t.get("organization")||""}`,`Referral: ${t.get("referral")||""}`,`Timeline: ${t.get("timeline")||""}`,"",String(t.get("message")||"")].join(` -`);window.location.href=`mailto:admin@qector.store?${new URLSearchParams({subject:u,body:h})}`,d("draft")}};return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"Contact · QECTOR",description:"Contact QECTOR · commercial inquiries, technical support questions, and evaluation requests."}),e.jsx(g,{data:{"@context":"https://schema.org","@type":"ContactPage",name:"Contact QECTOR",description:"Commercial inquiries, technical support, and evaluation requests for QECTOR.",url:"https://qector.store/contact",mainEntity:{"@type":"Organization",name:"QECTOR",url:"https://qector.store",email:"mailto:admin@qector.store",sameAs:["https://github.com/GuillaumeLessard/qector-decoder","https://pypi.org/project/qector-decoder-v3/","https://github.com/GuillaumeLessard/qector-decoder"]}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"admin@qector.store - Mon-Fri EST/EDT"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"Contact Us"}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Commercial evaluation requests, technical inquiries, partnership discussions, and support - all handled directly by Guillaume Lessard / iD01t Productions."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-5 gap-8",children:[e.jsxs("div",{ref:s=>c(s,0),className:"lg:col-span-2 space-y-4",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Office"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR is developed by iD01t Productions.",e.jsx("br",{}),"Primary contact: Guillaume Lessard.",e.jsx("br",{}),"Email: ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Working Hours"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Monday - Friday: 09:00-17:00 EST/EDT",e.jsx("br",{}),"Saturday - Sunday: Closed"]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Links"}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(j,{to:"/guillaume-lessard",className:"text-cyan-300 text-sm hover:underline",children:"About Guillaume Lessard"}),e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["ORCID",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://www.linkedin.com/in/qector/",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["LinkedIn",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["QEC Book",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]})]})]}),e.jsx("div",{className:"p-4 bg-green-400/5 border border-green-400/20 rounded-xl",children:e.jsxs("p",{className:"text-green-400 text-sm font-semibold flex items-center gap-2",children:[e.jsx(v,{size:14,className:"shrink-0","aria-hidden":"true"})," Response time: 1 business day for commercial inquiries."]})})]}),e.jsx("div",{ref:s=>c(s,1),className:"lg:col-span-3",children:e.jsx("div",{className:"card-surface",children:i?e.jsxs("div",{className:"text-center py-12",role:"status","aria-live":"polite",children:[e.jsx("div",{className:"w-16 h-16 rounded-full bg-green-400/10 border border-green-400/20 flex items-center justify-center mx-auto mb-4",children:e.jsx("span",{className:"text-green-400 text-2xl","aria-hidden":"true",children:"✓"})}),e.jsx("h2",{className:"text-primary font-bold text-xl mb-2",children:i==="sent"?"Message Sent":"Email Draft Opened"}),e.jsx("p",{className:"text-secondary",children:i==="sent"?"We will get back to you within one business day.":"Your email client should contain the completed inquiry. If it did not open, email admin@qector.store directly."})]}):e.jsxs("form",{onSubmit:x,method:"POST",className:"space-y-5",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-name",className:"block text-secondary text-sm mb-2",children:["Full Name ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-name",name:"name",type:"text",required:!0,autoComplete:"name",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Your name"})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-email",className:"block text-secondary text-sm mb-2",children:["Email Address ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-email",name:"email",type:"email",required:!0,autoComplete:"email",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"you@company.com"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-org",className:"block text-secondary text-sm mb-2",children:"Organization / Affiliation"}),e.jsx("input",{id:"contact-org",name:"organization",type:"text",autoComplete:"organization",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Company or Institution"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-referral",className:"block text-secondary text-sm mb-2",children:"Referral Source"}),e.jsxs("select",{id:"contact-referral",name:"referral",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"Web search"}),e.jsx("option",{children:"Social media"}),e.jsx("option",{children:"Conference / event"}),e.jsx("option",{children:"Publication / DOI"}),e.jsx("option",{children:"Recommendation"}),e.jsx("option",{children:"Other"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-timeline",className:"block text-secondary text-sm mb-2",children:"Evaluation Timeline"}),e.jsxs("select",{id:"contact-timeline",name:"timeline",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"0-30 days"}),e.jsx("option",{children:"30-90 days"}),e.jsx("option",{children:"90+ days"}),e.jsx("option",{children:"Undecided"})]})]})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-message",className:"block text-secondary text-sm mb-2",children:["Message ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("textarea",{id:"contact-message",name:"message",required:!0,rows:6,className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors resize-y",placeholder:"Tell us about your interest in QECTOR and evaluation needs..."})]}),l&&e.jsx("p",{className:"text-red-400 text-sm",role:"alert",children:l}),e.jsx("button",{type:"submit",className:"btn-gold w-full py-3",children:"Send Message"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"By submitting this form, you agree to the processing of your contact data to respond to your inquiry. We do not share submission contents with third parties."})]})})})]}),e.jsxs("div",{className:"max-w-4xl mx-auto mt-16",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2 text-center",children:"Book a 30-minute call"}),e.jsx("p",{className:"text-secondary text-sm mb-6 text-center",children:"Decoder audit, licensing questions, or an integration walkthrough, booked directly with Guillaume Lessard."}),e.jsx(y,{url:b})]})]})})]})}export{T as default}; diff --git a/assets/Contact--nZcFW5q.js b/assets/Contact--nZcFW5q.js deleted file mode 100644 index b8bcb039..00000000 --- a/assets/Contact--nZcFW5q.js +++ /dev/null @@ -1,2 +0,0 @@ -import{r as a,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,J as g,d as b}from"./index-DkYdPRY7.js";import{C as y}from"./CalendlyWidget-BuhQfp2_.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{L as j}from"./vendor-PiU4YGcH.js";import{Z as v}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";n.registerPlugin(f);function T(){const o=a.useRef([]),[i,d]=a.useState(!1),[l,m]=a.useState("");a.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{o.current.filter(Boolean).forEach(r=>{n.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const c=(s,r)=>{s&&(o.current[r]=s)},x=async s=>{s.preventDefault(),m("");const r=s.currentTarget,t=new FormData(r);{const u=`QECTOR inquiry from ${t.get("name")||"anonymous"}`,h=[`Name: ${t.get("name")||""}`,`Email: ${t.get("email")||""}`,`Organization: ${t.get("organization")||""}`,`Referral: ${t.get("referral")||""}`,`Timeline: ${t.get("timeline")||""}`,"",String(t.get("message")||"")].join(` -`);window.location.href=`mailto:admin@qector.store?${new URLSearchParams({subject:u,body:h})}`,d("draft")}};return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"Contact · QECTOR",description:"Contact QECTOR · commercial inquiries, technical support questions, and evaluation requests."}),e.jsx(g,{data:{"@context":"https://schema.org","@type":"ContactPage",name:"Contact QECTOR",description:"Commercial inquiries, technical support, and evaluation requests for QECTOR.",url:"https://qector.store/contact",mainEntity:{"@type":"Organization",name:"QECTOR",url:"https://qector.store",email:"mailto:admin@qector.store",sameAs:["https://github.com/GuillaumeLessard/qector-decoder","https://pypi.org/project/qector-decoder-v3/","https://github.com/GuillaumeLessard/qector-decoder"]}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"admin@qector.store - Mon-Fri EST/EDT"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"Contact Us"}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Commercial evaluation requests, technical inquiries, partnership discussions, and support - all handled directly by Guillaume Lessard / iD01t Productions."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-5 gap-8",children:[e.jsxs("div",{ref:s=>c(s,0),className:"lg:col-span-2 space-y-4",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Office"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR is developed by iD01t Productions.",e.jsx("br",{}),"Primary contact: Guillaume Lessard.",e.jsx("br",{}),"Email: ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Working Hours"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Monday - Friday: 09:00-17:00 EST/EDT",e.jsx("br",{}),"Saturday - Sunday: Closed"]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Links"}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(j,{to:"/guillaume-lessard",className:"text-cyan-300 text-sm hover:underline",children:"About Guillaume Lessard"}),e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["ORCID",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://www.linkedin.com/in/qector/",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["LinkedIn",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["QEC Book",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]})]})]}),e.jsx("div",{className:"p-4 bg-green-400/5 border border-green-400/20 rounded-xl",children:e.jsxs("p",{className:"text-green-400 text-sm font-semibold flex items-center gap-2",children:[e.jsx(v,{size:14,className:"shrink-0","aria-hidden":"true"})," Response time: 1 business day for commercial inquiries."]})})]}),e.jsx("div",{ref:s=>c(s,1),className:"lg:col-span-3",children:e.jsx("div",{className:"card-surface",children:i?e.jsxs("div",{className:"text-center py-12",role:"status","aria-live":"polite",children:[e.jsx("div",{className:"w-16 h-16 rounded-full bg-green-400/10 border border-green-400/20 flex items-center justify-center mx-auto mb-4",children:e.jsx("span",{className:"text-green-400 text-2xl","aria-hidden":"true",children:"✓"})}),e.jsx("h2",{className:"text-primary font-bold text-xl mb-2",children:i==="sent"?"Message Sent":"Email Draft Opened"}),e.jsx("p",{className:"text-secondary",children:i==="sent"?"We will get back to you within one business day.":"Your email client should contain the completed inquiry. If it did not open, email admin@qector.store directly."})]}):e.jsxs("form",{onSubmit:x,method:"POST",className:"space-y-5",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-name",className:"block text-secondary text-sm mb-2",children:["Full Name ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-name",name:"name",type:"text",required:!0,autoComplete:"name",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Your name"})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-email",className:"block text-secondary text-sm mb-2",children:["Email Address ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-email",name:"email",type:"email",required:!0,autoComplete:"email",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"you@company.com"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-org",className:"block text-secondary text-sm mb-2",children:"Organization / Affiliation"}),e.jsx("input",{id:"contact-org",name:"organization",type:"text",autoComplete:"organization",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Company or Institution"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-referral",className:"block text-secondary text-sm mb-2",children:"Referral Source"}),e.jsxs("select",{id:"contact-referral",name:"referral",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"Web search"}),e.jsx("option",{children:"Social media"}),e.jsx("option",{children:"Conference / event"}),e.jsx("option",{children:"Publication / DOI"}),e.jsx("option",{children:"Recommendation"}),e.jsx("option",{children:"Other"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-timeline",className:"block text-secondary text-sm mb-2",children:"Evaluation Timeline"}),e.jsxs("select",{id:"contact-timeline",name:"timeline",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"0-30 days"}),e.jsx("option",{children:"30-90 days"}),e.jsx("option",{children:"90+ days"}),e.jsx("option",{children:"Undecided"})]})]})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-message",className:"block text-secondary text-sm mb-2",children:["Message ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("textarea",{id:"contact-message",name:"message",required:!0,rows:6,className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors resize-y",placeholder:"Tell us about your interest in QECTOR and evaluation needs..."})]}),l&&e.jsx("p",{className:"text-red-400 text-sm",role:"alert",children:l}),e.jsx("button",{type:"submit",className:"btn-gold w-full py-3",children:"Send Message"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"By submitting this form, you agree to the processing of your contact data to respond to your inquiry. We do not share submission contents with third parties."})]})})})]}),e.jsxs("div",{className:"max-w-4xl mx-auto mt-16",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2 text-center",children:"Book a 30-minute call"}),e.jsx("p",{className:"text-secondary text-sm mb-6 text-center",children:"Decoder audit, licensing questions, or an integration walkthrough, booked directly with Guillaume Lessard."}),e.jsx(y,{url:b})]})]})})]})}export{T as default}; diff --git a/assets/Contact-5DsWRxiq.js b/assets/Contact-5DsWRxiq.js deleted file mode 100644 index 3c9fec6f..00000000 --- a/assets/Contact-5DsWRxiq.js +++ /dev/null @@ -1,2 +0,0 @@ -import{r as a,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,J as g,d as b}from"./index-abfjMTlQ.js";import{C as y}from"./CalendlyWidget-BuhQfp2_.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{L as j}from"./vendor-PiU4YGcH.js";import{Z as v}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";n.registerPlugin(f);function T(){const o=a.useRef([]),[i,d]=a.useState(!1),[l,m]=a.useState("");a.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{o.current.filter(Boolean).forEach(r=>{n.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const c=(s,r)=>{s&&(o.current[r]=s)},x=async s=>{s.preventDefault(),m("");const r=s.currentTarget,t=new FormData(r);{const u=`QECTOR inquiry from ${t.get("name")||"anonymous"}`,h=[`Name: ${t.get("name")||""}`,`Email: ${t.get("email")||""}`,`Organization: ${t.get("organization")||""}`,`Referral: ${t.get("referral")||""}`,`Timeline: ${t.get("timeline")||""}`,"",String(t.get("message")||"")].join(` -`);window.location.href=`mailto:admin@qector.store?${new URLSearchParams({subject:u,body:h})}`,d("draft")}};return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"Contact · QECTOR",description:"Contact QECTOR · commercial inquiries, technical support questions, and evaluation requests."}),e.jsx(g,{data:{"@context":"https://schema.org","@type":"ContactPage",name:"Contact QECTOR",description:"Commercial inquiries, technical support, and evaluation requests for QECTOR.",url:"https://qector.store/contact",mainEntity:{"@type":"Organization",name:"QECTOR",url:"https://qector.store",email:"mailto:admin@qector.store",sameAs:["https://github.com/GuillaumeLessard/qector-decoder","https://pypi.org/project/qector-decoder-v3/","https://github.com/GuillaumeLessard/qector-decoder"]}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"admin@qector.store - Mon-Fri EST/EDT"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"Contact Us"}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Commercial evaluation requests, technical inquiries, partnership discussions, and support - all handled directly by Guillaume Lessard / iD01t Productions."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-5 gap-8",children:[e.jsxs("div",{ref:s=>c(s,0),className:"lg:col-span-2 space-y-4",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Office"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR is developed by iD01t Productions.",e.jsx("br",{}),"Primary contact: Guillaume Lessard.",e.jsx("br",{}),"2004 De Lorimier, Longueuil, Québec, Canada J4K 3H7",e.jsx("br",{}),"Email: ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Working Hours"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Monday - Friday: 09:00-17:00 EST/EDT",e.jsx("br",{}),"Saturday - Sunday: Closed"]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Links"}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(j,{to:"/guillaume-lessard",className:"text-cyan-300 text-sm hover:underline",children:"About Guillaume Lessard"}),e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["ORCID",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://www.linkedin.com/in/qector/",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["LinkedIn",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["QEC Book",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]})]})]}),e.jsx("div",{className:"p-4 bg-green-400/5 border border-green-400/20 rounded-xl",children:e.jsxs("p",{className:"text-green-400 text-sm font-semibold flex items-center gap-2",children:[e.jsx(v,{size:14,className:"shrink-0","aria-hidden":"true"})," Response time: 1 business day for commercial inquiries."]})})]}),e.jsx("div",{ref:s=>c(s,1),className:"lg:col-span-3",children:e.jsx("div",{className:"card-surface",children:i?e.jsxs("div",{className:"text-center py-12",role:"status","aria-live":"polite",children:[e.jsx("div",{className:"w-16 h-16 rounded-full bg-green-400/10 border border-green-400/20 flex items-center justify-center mx-auto mb-4",children:e.jsx("span",{className:"text-green-400 text-2xl","aria-hidden":"true",children:"✓"})}),e.jsx("h2",{className:"text-primary font-bold text-xl mb-2",children:i==="sent"?"Message Sent":"Email Draft Opened"}),e.jsx("p",{className:"text-secondary",children:i==="sent"?"We will get back to you within one business day.":"Your email client should contain the completed inquiry. If it did not open, email admin@qector.store directly."})]}):e.jsxs("form",{onSubmit:x,method:"POST",className:"space-y-5",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-name",className:"block text-secondary text-sm mb-2",children:["Full Name ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-name",name:"name",type:"text",required:!0,autoComplete:"name",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Your name"})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-email",className:"block text-secondary text-sm mb-2",children:["Email Address ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-email",name:"email",type:"email",required:!0,autoComplete:"email",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"you@company.com"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-org",className:"block text-secondary text-sm mb-2",children:"Organization / Affiliation"}),e.jsx("input",{id:"contact-org",name:"organization",type:"text",autoComplete:"organization",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Company or Institution"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-referral",className:"block text-secondary text-sm mb-2",children:"Referral Source"}),e.jsxs("select",{id:"contact-referral",name:"referral",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"Web search"}),e.jsx("option",{children:"Social media"}),e.jsx("option",{children:"Conference / event"}),e.jsx("option",{children:"Publication / DOI"}),e.jsx("option",{children:"Recommendation"}),e.jsx("option",{children:"Other"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-timeline",className:"block text-secondary text-sm mb-2",children:"Evaluation Timeline"}),e.jsxs("select",{id:"contact-timeline",name:"timeline",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"0-30 days"}),e.jsx("option",{children:"30-90 days"}),e.jsx("option",{children:"90+ days"}),e.jsx("option",{children:"Undecided"})]})]})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-message",className:"block text-secondary text-sm mb-2",children:["Message ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("textarea",{id:"contact-message",name:"message",required:!0,rows:6,className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors resize-y",placeholder:"Tell us about your interest in QECTOR and evaluation needs..."})]}),l&&e.jsx("p",{className:"text-red-400 text-sm",role:"alert",children:l}),e.jsx("button",{type:"submit",className:"btn-gold w-full py-3",children:"Send Message"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"By submitting this form, you agree to the processing of your contact data to respond to your inquiry. We do not share submission contents with third parties."})]})})})]}),e.jsxs("div",{className:"max-w-4xl mx-auto mt-16",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2 text-center",children:"Book a 30-minute call"}),e.jsx("p",{className:"text-secondary text-sm mb-6 text-center",children:"Decoder audit, licensing questions, or an integration walkthrough, booked directly with Guillaume Lessard."}),e.jsx(y,{url:b})]})]})})]})}export{T as default}; diff --git a/assets/Contact-5d9KNtoD.js b/assets/Contact-5d9KNtoD.js deleted file mode 100644 index e501af5b..00000000 --- a/assets/Contact-5d9KNtoD.js +++ /dev/null @@ -1,2 +0,0 @@ -import{r as a,j as e}from"./vendor-react-BiHfrq0e.js";import{S as b,J as g,L as n,f as y}from"./index-PdoH5kLF.js";import{C as f}from"./CalendlyWidget-BuhQfp2_.js";import{g as o,S as j}from"./vendor-gsap-a3sj5zmn.js";import{Z as v}from"./vendor-ui-B8TlNU4J.js";o.registerPlugin(j);function S(){const l=a.useRef([]),[i,c]=a.useState(!1),[d,x]=a.useState("");a.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=o.context(()=>{l.current.filter(Boolean).forEach(r=>{o.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const m=(s,r)=>{s&&(l.current[r]=s)},u=async s=>{s.preventDefault(),x("");const r=s.currentTarget,t=new FormData(r);if(String(t.get("website")||"").trim()!==""){c("sent");return}{const h=`QECTOR inquiry from ${t.get("name")||"anonymous"}`,p=[`Name: ${t.get("name")||""}`,`Email: ${t.get("email")||""}`,`Organization: ${t.get("organization")||""}`,`Referral: ${t.get("referral")||""}`,`Timeline: ${t.get("timeline")||""}`,"",String(t.get("message")||"")].join(` -`);window.location.href=`mailto:admin@qector.store?${new URLSearchParams({subject:h,body:p})}`,c("draft")}};return e.jsxs(e.Fragment,{children:[e.jsx(b,{title:"Contact · QECTOR",description:"Contact QECTOR · commercial inquiries, technical support questions, and evaluation requests."}),e.jsx(g,{data:{"@context":"https://schema.org","@type":"ContactPage",name:"Contact QECTOR",description:"Commercial inquiries, technical support, and evaluation requests for QECTOR.",url:"https://qector.store/contact",mainEntity:{"@type":"Organization",name:"QECTOR",url:"https://qector.store",email:"mailto:admin@qector.store",sameAs:["https://github.com/GuillaumeLessard/qector-decoder","https://pypi.org/project/qector-decoder-v3/","https://github.com/GuillaumeLessard/qector-decoder"]}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"admin@qector.store - Mon-Fri EST/EDT"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"Contact Us"}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Commercial evaluation requests, technical inquiries, partnership discussions, and support - all handled directly by Guillaume Lessard / iD01t Productions."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-5 gap-8",children:[e.jsxs("div",{ref:s=>m(s,0),className:"lg:col-span-2 space-y-4",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Business address"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR is developed by iD01t Productions.",e.jsx("br",{}),"Primary contact: Guillaume Lessard.",e.jsx("br",{}),"2004 De Lorimier, Longueuil, Québec, Canada J4K 3H7",e.jsx("br",{}),"Email: ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Working Hours"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Monday - Friday: 09:00-17:00 EST/EDT",e.jsx("br",{}),"Saturday - Sunday: Closed"]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Links"}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(n,{to:"/guillaume-lessard",className:"text-cyan-300 text-sm hover:underline",children:"About Guillaume Lessard"}),e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["ORCID",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://www.linkedin.com/in/qector/",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["LinkedIn",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["QEC Book",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]})]})]}),e.jsx("div",{className:"p-4 bg-green-400/5 border border-green-400/20 rounded-xl",children:e.jsxs("p",{className:"text-green-400 text-sm font-semibold flex items-center gap-2",children:[e.jsx(v,{size:14,className:"shrink-0","aria-hidden":"true"})," Response time: 1 business day for commercial inquiries."]})})]}),e.jsx("div",{ref:s=>m(s,1),className:"lg:col-span-3",children:e.jsx("div",{className:"card-surface",children:i?e.jsxs("div",{className:"text-center py-12",role:"status","aria-live":"polite",children:[e.jsx("div",{className:"w-16 h-16 rounded-full bg-green-400/10 border border-green-400/20 flex items-center justify-center mx-auto mb-4",children:e.jsx("span",{className:"text-green-400 text-2xl","aria-hidden":"true",children:"✓"})}),e.jsx("h2",{className:"text-primary font-bold text-xl mb-2",children:i==="sent"?"Message Sent":"Email Draft Opened"}),e.jsx("p",{className:"text-secondary",children:i==="sent"?"We will get back to you within one business day.":"Your email client should contain the completed inquiry. If it did not open, email admin@qector.store directly."})]}):e.jsxs("form",{onSubmit:u,method:"POST",className:"space-y-5",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-name",className:"block text-secondary text-sm mb-2",children:["Full Name ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-name",name:"name",type:"text",required:!0,autoComplete:"name",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Your name"})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-email",className:"block text-secondary text-sm mb-2",children:["Email Address ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-email",name:"email",type:"email",required:!0,autoComplete:"email",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"you@company.com"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-org",className:"block text-secondary text-sm mb-2",children:"Organization / Affiliation"}),e.jsx("input",{id:"contact-org",name:"organization",type:"text",autoComplete:"organization",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Company or Institution"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-referral",className:"block text-secondary text-sm mb-2",children:"Referral Source"}),e.jsxs("select",{id:"contact-referral",name:"referral",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"Web search"}),e.jsx("option",{children:"Social media"}),e.jsx("option",{children:"Conference / event"}),e.jsx("option",{children:"Publication / DOI"}),e.jsx("option",{children:"Recommendation"}),e.jsx("option",{children:"Other"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-timeline",className:"block text-secondary text-sm mb-2",children:"Evaluation Timeline"}),e.jsxs("select",{id:"contact-timeline",name:"timeline",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"0-30 days"}),e.jsx("option",{children:"30-90 days"}),e.jsx("option",{children:"90+ days"}),e.jsx("option",{children:"Undecided"})]})]})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-message",className:"block text-secondary text-sm mb-2",children:["Message ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("textarea",{id:"contact-message",name:"message",required:!0,rows:6,className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors resize-y",placeholder:"Tell us about your interest in QECTOR and evaluation needs..."})]}),e.jsxs("div",{"aria-hidden":"true",className:"absolute -left-[9999px] w-px h-px overflow-hidden",children:[e.jsx("label",{htmlFor:"contact-website",children:"Leave this field empty"}),e.jsx("input",{id:"contact-website",name:"website",type:"text",tabIndex:-1,autoComplete:"off"})]}),d&&e.jsx("p",{className:"text-red-400 text-sm",role:"alert",children:d}),e.jsx("button",{type:"submit",className:"btn-gold w-full py-3",children:"Send Message"}),e.jsxs("p",{className:"text-muted-foreground text-xs",children:["We use what you send only to answer your inquiry and keep it for 3 years after our last exchange. It is never sold or shared for marketing. See the"," ",e.jsx(n,{to:"/privacy",className:"text-cyan-300 hover:underline",children:"Privacy Policy"})," (",e.jsx(n,{to:"/fr/privacy",className:"text-cyan-300 hover:underline",children:"français"}),") for your rights under Québec law."]})]})})})]}),e.jsxs("div",{className:"max-w-4xl mx-auto mt-16",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2 text-center",children:"Book a 30-minute call"}),e.jsx("p",{className:"text-secondary text-sm mb-6 text-center",children:"Decoder audit, licensing questions, or an integration walkthrough, booked directly with Guillaume Lessard."}),e.jsx(f,{url:y})]})]})})]})}export{S as default}; diff --git a/assets/Contact-BMa0iMCR.js b/assets/Contact-BMa0iMCR.js deleted file mode 100644 index 6c33138f..00000000 --- a/assets/Contact-BMa0iMCR.js +++ /dev/null @@ -1,2 +0,0 @@ -import{r as a,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,J as g,d as b}from"./index-CqAA-ZXu.js";import{C as y}from"./CalendlyWidget-BuhQfp2_.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{L as j}from"./vendor-PiU4YGcH.js";import{Z as v}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";n.registerPlugin(f);function T(){const o=a.useRef([]),[i,d]=a.useState(!1),[l,m]=a.useState("");a.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{o.current.filter(Boolean).forEach(r=>{n.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const c=(s,r)=>{s&&(o.current[r]=s)},x=async s=>{s.preventDefault(),m("");const r=s.currentTarget,t=new FormData(r);{const u=`QECTOR inquiry from ${t.get("name")||"anonymous"}`,h=[`Name: ${t.get("name")||""}`,`Email: ${t.get("email")||""}`,`Organization: ${t.get("organization")||""}`,`Referral: ${t.get("referral")||""}`,`Timeline: ${t.get("timeline")||""}`,"",String(t.get("message")||"")].join(` -`);window.location.href=`mailto:admin@qector.store?${new URLSearchParams({subject:u,body:h})}`,d("draft")}};return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"Contact · QECTOR",description:"Contact QECTOR · commercial inquiries, technical support questions, and evaluation requests."}),e.jsx(g,{data:{"@context":"https://schema.org","@type":"ContactPage",name:"Contact QECTOR",description:"Commercial inquiries, technical support, and evaluation requests for QECTOR.",url:"https://qector.store/contact",mainEntity:{"@type":"Organization",name:"QECTOR",url:"https://qector.store",email:"mailto:admin@qector.store",sameAs:["https://github.com/GuillaumeLessard/qector-decoder","https://pypi.org/project/qector-decoder-v3/","https://github.com/GuillaumeLessard/qector-decoder"]}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"admin@qector.store - Mon-Fri EST/EDT"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"Contact Us"}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Commercial evaluation requests, technical inquiries, partnership discussions, and support - all handled directly by Guillaume Lessard / iD01t Productions."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-5 gap-8",children:[e.jsxs("div",{ref:s=>c(s,0),className:"lg:col-span-2 space-y-4",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Office"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR is developed by iD01t Productions.",e.jsx("br",{}),"Primary contact: Guillaume Lessard.",e.jsx("br",{}),"Email: ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Working Hours"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Monday - Friday: 09:00-17:00 EST/EDT",e.jsx("br",{}),"Saturday - Sunday: Closed"]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Links"}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(j,{to:"/guillaume-lessard",className:"text-cyan-300 text-sm hover:underline",children:"About Guillaume Lessard"}),e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["ORCID",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://www.linkedin.com/in/qector/",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["LinkedIn",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["QEC Book",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]})]})]}),e.jsx("div",{className:"p-4 bg-green-400/5 border border-green-400/20 rounded-xl",children:e.jsxs("p",{className:"text-green-400 text-sm font-semibold flex items-center gap-2",children:[e.jsx(v,{size:14,className:"shrink-0","aria-hidden":"true"})," Response time: 1 business day for commercial inquiries."]})})]}),e.jsx("div",{ref:s=>c(s,1),className:"lg:col-span-3",children:e.jsx("div",{className:"card-surface",children:i?e.jsxs("div",{className:"text-center py-12",role:"status","aria-live":"polite",children:[e.jsx("div",{className:"w-16 h-16 rounded-full bg-green-400/10 border border-green-400/20 flex items-center justify-center mx-auto mb-4",children:e.jsx("span",{className:"text-green-400 text-2xl","aria-hidden":"true",children:"✓"})}),e.jsx("h2",{className:"text-primary font-bold text-xl mb-2",children:i==="sent"?"Message Sent":"Email Draft Opened"}),e.jsx("p",{className:"text-secondary",children:i==="sent"?"We will get back to you within one business day.":"Your email client should contain the completed inquiry. If it did not open, email admin@qector.store directly."})]}):e.jsxs("form",{onSubmit:x,method:"POST",className:"space-y-5",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-name",className:"block text-secondary text-sm mb-2",children:["Full Name ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-name",name:"name",type:"text",required:!0,autoComplete:"name",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Your name"})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-email",className:"block text-secondary text-sm mb-2",children:["Email Address ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-email",name:"email",type:"email",required:!0,autoComplete:"email",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"you@company.com"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-org",className:"block text-secondary text-sm mb-2",children:"Organization / Affiliation"}),e.jsx("input",{id:"contact-org",name:"organization",type:"text",autoComplete:"organization",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Company or Institution"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-referral",className:"block text-secondary text-sm mb-2",children:"Referral Source"}),e.jsxs("select",{id:"contact-referral",name:"referral",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"Web search"}),e.jsx("option",{children:"Social media"}),e.jsx("option",{children:"Conference / event"}),e.jsx("option",{children:"Publication / DOI"}),e.jsx("option",{children:"Recommendation"}),e.jsx("option",{children:"Other"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-timeline",className:"block text-secondary text-sm mb-2",children:"Evaluation Timeline"}),e.jsxs("select",{id:"contact-timeline",name:"timeline",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"0-30 days"}),e.jsx("option",{children:"30-90 days"}),e.jsx("option",{children:"90+ days"}),e.jsx("option",{children:"Undecided"})]})]})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-message",className:"block text-secondary text-sm mb-2",children:["Message ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("textarea",{id:"contact-message",name:"message",required:!0,rows:6,className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors resize-y",placeholder:"Tell us about your interest in QECTOR and evaluation needs..."})]}),l&&e.jsx("p",{className:"text-red-400 text-sm",role:"alert",children:l}),e.jsx("button",{type:"submit",className:"btn-gold w-full py-3",children:"Send Message"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"By submitting this form, you agree to the processing of your contact data to respond to your inquiry. We do not share submission contents with third parties."})]})})})]}),e.jsxs("div",{className:"max-w-4xl mx-auto mt-16",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2 text-center",children:"Book a 30-minute call"}),e.jsx("p",{className:"text-secondary text-sm mb-6 text-center",children:"Decoder audit, licensing questions, or an integration walkthrough, booked directly with Guillaume Lessard."}),e.jsx(y,{url:b})]})]})})]})}export{T as default}; diff --git a/assets/Contact-BcMJNVGG.js b/assets/Contact-BcMJNVGG.js deleted file mode 100644 index 6670a228..00000000 --- a/assets/Contact-BcMJNVGG.js +++ /dev/null @@ -1,2 +0,0 @@ -import{r as a,j as e}from"./vendor-react-BiHfrq0e.js";import{S as b,J as g,L as n,f as y}from"./index-CCmwjNGU.js";import{C as f}from"./CalendlyWidget-BuhQfp2_.js";import{g as o,S as j}from"./vendor-gsap-a3sj5zmn.js";import{Z as v}from"./vendor-ui-B8TlNU4J.js";o.registerPlugin(j);function S(){const l=a.useRef([]),[i,c]=a.useState(!1),[d,x]=a.useState("");a.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=o.context(()=>{l.current.filter(Boolean).forEach(r=>{o.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const m=(s,r)=>{s&&(l.current[r]=s)},u=async s=>{s.preventDefault(),x("");const r=s.currentTarget,t=new FormData(r);if(String(t.get("website")||"").trim()!==""){c("sent");return}{const h=`QECTOR inquiry from ${t.get("name")||"anonymous"}`,p=[`Name: ${t.get("name")||""}`,`Email: ${t.get("email")||""}`,`Organization: ${t.get("organization")||""}`,`Referral: ${t.get("referral")||""}`,`Timeline: ${t.get("timeline")||""}`,"",String(t.get("message")||"")].join(` -`);window.location.href=`mailto:admin@qector.store?${new URLSearchParams({subject:h,body:p})}`,c("draft")}};return e.jsxs(e.Fragment,{children:[e.jsx(b,{title:"Contact · QECTOR",description:"Contact QECTOR · commercial inquiries, technical support questions, and evaluation requests."}),e.jsx(g,{data:{"@context":"https://schema.org","@type":"ContactPage",name:"Contact QECTOR",description:"Commercial inquiries, technical support, and evaluation requests for QECTOR.",url:"https://qector.store/contact",mainEntity:{"@type":"Organization",name:"QECTOR",url:"https://qector.store",email:"mailto:admin@qector.store",sameAs:["https://github.com/GuillaumeLessard/qector-decoder","https://pypi.org/project/qector-decoder-v3/","https://github.com/GuillaumeLessard/qector-decoder"]}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"admin@qector.store - Mon-Fri EST/EDT"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"Contact Us"}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Commercial evaluation requests, technical inquiries, partnership discussions, and support - all handled directly by Guillaume Lessard / iD01t Productions."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-5 gap-8",children:[e.jsxs("div",{ref:s=>m(s,0),className:"lg:col-span-2 space-y-4",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Mailing address"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR is developed by iD01t Productions.",e.jsx("br",{}),"Primary contact: Guillaume Lessard.",e.jsx("br",{}),"288 boul. des Ormeaux, Longueuil, Québec, Canada J4L 1J4",e.jsx("br",{}),"Email: ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Working Hours"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Monday - Friday: 09:00-17:00 EST/EDT",e.jsx("br",{}),"Saturday - Sunday: Closed"]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Links"}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(n,{to:"/guillaume-lessard",className:"text-cyan-300 text-sm hover:underline",children:"About Guillaume Lessard"}),e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["ORCID",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://www.linkedin.com/in/qector/",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["LinkedIn",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["QEC Book",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]})]})]}),e.jsx("div",{className:"p-4 bg-green-400/5 border border-green-400/20 rounded-xl",children:e.jsxs("p",{className:"text-green-400 text-sm font-semibold flex items-center gap-2",children:[e.jsx(v,{size:14,className:"shrink-0","aria-hidden":"true"})," Response time: 1 business day for commercial inquiries."]})})]}),e.jsx("div",{ref:s=>m(s,1),className:"lg:col-span-3",children:e.jsx("div",{className:"card-surface",children:i?e.jsxs("div",{className:"text-center py-12",role:"status","aria-live":"polite",children:[e.jsx("div",{className:"w-16 h-16 rounded-full bg-green-400/10 border border-green-400/20 flex items-center justify-center mx-auto mb-4",children:e.jsx("span",{className:"text-green-400 text-2xl","aria-hidden":"true",children:"✓"})}),e.jsx("h2",{className:"text-primary font-bold text-xl mb-2",children:i==="sent"?"Message Sent":"Email Draft Opened"}),e.jsx("p",{className:"text-secondary",children:i==="sent"?"We will get back to you within one business day.":"Your email client should contain the completed inquiry. If it did not open, email admin@qector.store directly."})]}):e.jsxs("form",{onSubmit:u,method:"POST",className:"space-y-5",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-name",className:"block text-secondary text-sm mb-2",children:["Full Name ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-name",name:"name",type:"text",required:!0,autoComplete:"name",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Your name"})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-email",className:"block text-secondary text-sm mb-2",children:["Email Address ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-email",name:"email",type:"email",required:!0,autoComplete:"email",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"you@company.com"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-org",className:"block text-secondary text-sm mb-2",children:"Organization / Affiliation"}),e.jsx("input",{id:"contact-org",name:"organization",type:"text",autoComplete:"organization",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Company or Institution"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-referral",className:"block text-secondary text-sm mb-2",children:"Referral Source"}),e.jsxs("select",{id:"contact-referral",name:"referral",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"Web search"}),e.jsx("option",{children:"Social media"}),e.jsx("option",{children:"Conference / event"}),e.jsx("option",{children:"Publication / DOI"}),e.jsx("option",{children:"Recommendation"}),e.jsx("option",{children:"Other"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-timeline",className:"block text-secondary text-sm mb-2",children:"Evaluation Timeline"}),e.jsxs("select",{id:"contact-timeline",name:"timeline",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"0-30 days"}),e.jsx("option",{children:"30-90 days"}),e.jsx("option",{children:"90+ days"}),e.jsx("option",{children:"Undecided"})]})]})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-message",className:"block text-secondary text-sm mb-2",children:["Message ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("textarea",{id:"contact-message",name:"message",required:!0,rows:6,className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors resize-y",placeholder:"Tell us about your interest in QECTOR and evaluation needs..."})]}),e.jsxs("div",{"aria-hidden":"true",className:"absolute -left-[9999px] w-px h-px overflow-hidden",children:[e.jsx("label",{htmlFor:"contact-website",children:"Leave this field empty"}),e.jsx("input",{id:"contact-website",name:"website",type:"text",tabIndex:-1,autoComplete:"off"})]}),d&&e.jsx("p",{className:"text-red-400 text-sm",role:"alert",children:d}),e.jsx("button",{type:"submit",className:"btn-gold w-full py-3",children:"Send Message"}),e.jsxs("p",{className:"text-muted-foreground text-xs",children:["We use what you send only to answer your inquiry and keep it for 3 years after our last exchange. It is never sold or shared for marketing. See the"," ",e.jsx(n,{to:"/privacy",className:"text-cyan-300 hover:underline",children:"Privacy Policy"})," (",e.jsx(n,{to:"/fr/privacy",className:"text-cyan-300 hover:underline",children:"français"}),") for your rights under Québec law."]})]})})})]}),e.jsxs("div",{className:"max-w-4xl mx-auto mt-16",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2 text-center",children:"Book a 30-minute call"}),e.jsx("p",{className:"text-secondary text-sm mb-6 text-center",children:"Decoder audit, licensing questions, or an integration walkthrough, booked directly with Guillaume Lessard."}),e.jsx(f,{url:y})]})]})})]})}export{S as default}; diff --git a/assets/Contact-Bqa2Snjs.js b/assets/Contact-Bqa2Snjs.js deleted file mode 100644 index c3d35bcb..00000000 --- a/assets/Contact-Bqa2Snjs.js +++ /dev/null @@ -1,2 +0,0 @@ -import{r as a,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,J as g,d as b}from"./index-DlmjLVYe.js";import{C as y}from"./CalendlyWidget-BuhQfp2_.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{L as j}from"./vendor-PiU4YGcH.js";import{Z as v}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";n.registerPlugin(f);function T(){const o=a.useRef([]),[i,d]=a.useState(!1),[l,m]=a.useState("");a.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{o.current.filter(Boolean).forEach(r=>{n.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const c=(s,r)=>{s&&(o.current[r]=s)},x=async s=>{s.preventDefault(),m("");const r=s.currentTarget,t=new FormData(r);{const u=`QECTOR inquiry from ${t.get("name")||"anonymous"}`,h=[`Name: ${t.get("name")||""}`,`Email: ${t.get("email")||""}`,`Organization: ${t.get("organization")||""}`,`Referral: ${t.get("referral")||""}`,`Timeline: ${t.get("timeline")||""}`,"",String(t.get("message")||"")].join(` -`);window.location.href=`mailto:admin@qector.store?${new URLSearchParams({subject:u,body:h})}`,d("draft")}};return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"Contact · QECTOR",description:"Contact QECTOR · commercial inquiries, technical support questions, and evaluation requests."}),e.jsx(g,{data:{"@context":"https://schema.org","@type":"ContactPage",name:"Contact QECTOR",description:"Commercial inquiries, technical support, and evaluation requests for QECTOR.",url:"https://qector.store/contact",mainEntity:{"@type":"Organization",name:"QECTOR",url:"https://qector.store",email:"mailto:admin@qector.store",sameAs:["https://github.com/GuillaumeLessard/qector-decoder","https://pypi.org/project/qector-decoder-v3/","https://github.com/GuillaumeLessard/qector-decoder"]}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"admin@qector.store - Mon-Fri EST/EDT"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"Contact Us"}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Commercial evaluation requests, technical inquiries, partnership discussions, and support - all handled directly by Guillaume Lessard / iD01t Productions."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-5 gap-8",children:[e.jsxs("div",{ref:s=>c(s,0),className:"lg:col-span-2 space-y-4",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Office"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR is developed by iD01t Productions.",e.jsx("br",{}),"Primary contact: Guillaume Lessard.",e.jsx("br",{}),"Email: ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Working Hours"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Monday - Friday: 09:00-17:00 EST/EDT",e.jsx("br",{}),"Saturday - Sunday: Closed"]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Links"}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(j,{to:"/guillaume-lessard",className:"text-cyan-300 text-sm hover:underline",children:"About Guillaume Lessard"}),e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["ORCID",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://www.linkedin.com/in/qector/",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["LinkedIn",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["QEC Book",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]})]})]}),e.jsx("div",{className:"p-4 bg-green-400/5 border border-green-400/20 rounded-xl",children:e.jsxs("p",{className:"text-green-400 text-sm font-semibold flex items-center gap-2",children:[e.jsx(v,{size:14,className:"shrink-0","aria-hidden":"true"})," Response time: 1 business day for commercial inquiries."]})})]}),e.jsx("div",{ref:s=>c(s,1),className:"lg:col-span-3",children:e.jsx("div",{className:"card-surface",children:i?e.jsxs("div",{className:"text-center py-12",role:"status","aria-live":"polite",children:[e.jsx("div",{className:"w-16 h-16 rounded-full bg-green-400/10 border border-green-400/20 flex items-center justify-center mx-auto mb-4",children:e.jsx("span",{className:"text-green-400 text-2xl","aria-hidden":"true",children:"✓"})}),e.jsx("h2",{className:"text-primary font-bold text-xl mb-2",children:i==="sent"?"Message Sent":"Email Draft Opened"}),e.jsx("p",{className:"text-secondary",children:i==="sent"?"We will get back to you within one business day.":"Your email client should contain the completed inquiry. If it did not open, email admin@qector.store directly."})]}):e.jsxs("form",{onSubmit:x,method:"POST",className:"space-y-5",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-name",className:"block text-secondary text-sm mb-2",children:["Full Name ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-name",name:"name",type:"text",required:!0,autoComplete:"name",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Your name"})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-email",className:"block text-secondary text-sm mb-2",children:["Email Address ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-email",name:"email",type:"email",required:!0,autoComplete:"email",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"you@company.com"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-org",className:"block text-secondary text-sm mb-2",children:"Organization / Affiliation"}),e.jsx("input",{id:"contact-org",name:"organization",type:"text",autoComplete:"organization",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Company or Institution"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-referral",className:"block text-secondary text-sm mb-2",children:"Referral Source"}),e.jsxs("select",{id:"contact-referral",name:"referral",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"Web search"}),e.jsx("option",{children:"Social media"}),e.jsx("option",{children:"Conference / event"}),e.jsx("option",{children:"Publication / DOI"}),e.jsx("option",{children:"Recommendation"}),e.jsx("option",{children:"Other"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-timeline",className:"block text-secondary text-sm mb-2",children:"Evaluation Timeline"}),e.jsxs("select",{id:"contact-timeline",name:"timeline",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"0-30 days"}),e.jsx("option",{children:"30-90 days"}),e.jsx("option",{children:"90+ days"}),e.jsx("option",{children:"Undecided"})]})]})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-message",className:"block text-secondary text-sm mb-2",children:["Message ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("textarea",{id:"contact-message",name:"message",required:!0,rows:6,className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors resize-y",placeholder:"Tell us about your interest in QECTOR and evaluation needs..."})]}),l&&e.jsx("p",{className:"text-red-400 text-sm",role:"alert",children:l}),e.jsx("button",{type:"submit",className:"btn-gold w-full py-3",children:"Send Message"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"By submitting this form, you agree to the processing of your contact data to respond to your inquiry. We do not share submission contents with third parties."})]})})})]}),e.jsxs("div",{className:"max-w-4xl mx-auto mt-16",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2 text-center",children:"Book a 30-minute call"}),e.jsx("p",{className:"text-secondary text-sm mb-6 text-center",children:"Decoder audit, licensing questions, or an integration walkthrough, booked directly with Guillaume Lessard."}),e.jsx(y,{url:b})]})]})})]})}export{T as default}; diff --git a/assets/Contact-C9JTwA3Q.js b/assets/Contact-C9JTwA3Q.js deleted file mode 100644 index 07737e37..00000000 --- a/assets/Contact-C9JTwA3Q.js +++ /dev/null @@ -1,2 +0,0 @@ -import{r as a,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,J as g,d as b}from"./index-CpdATiEY.js";import{C as y}from"./CalendlyWidget-BuhQfp2_.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{L as j}from"./vendor-PiU4YGcH.js";import{Z as v}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";n.registerPlugin(f);function T(){const o=a.useRef([]),[i,d]=a.useState(!1),[l,m]=a.useState("");a.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{o.current.filter(Boolean).forEach(r=>{n.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const c=(s,r)=>{s&&(o.current[r]=s)},x=async s=>{s.preventDefault(),m("");const r=s.currentTarget,t=new FormData(r);{const u=`QECTOR inquiry from ${t.get("name")||"anonymous"}`,h=[`Name: ${t.get("name")||""}`,`Email: ${t.get("email")||""}`,`Organization: ${t.get("organization")||""}`,`Referral: ${t.get("referral")||""}`,`Timeline: ${t.get("timeline")||""}`,"",String(t.get("message")||"")].join(` -`);window.location.href=`mailto:admin@qector.store?${new URLSearchParams({subject:u,body:h})}`,d("draft")}};return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"Contact · QECTOR",description:"Contact QECTOR · commercial inquiries, technical support questions, and evaluation requests."}),e.jsx(g,{data:{"@context":"https://schema.org","@type":"ContactPage",name:"Contact QECTOR",description:"Commercial inquiries, technical support, and evaluation requests for QECTOR.",url:"https://qector.store/contact",mainEntity:{"@type":"Organization",name:"QECTOR",url:"https://qector.store",email:"mailto:admin@qector.store",sameAs:["https://github.com/GuillaumeLessard/qector-decoder","https://pypi.org/project/qector-decoder-v3/","https://github.com/GuillaumeLessard/qector-decoder"]}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"admin@qector.store - Mon-Fri EST/EDT"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"Contact Us"}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Commercial evaluation requests, technical inquiries, partnership discussions, and support - all handled directly by Guillaume Lessard / iD01t Productions."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-5 gap-8",children:[e.jsxs("div",{ref:s=>c(s,0),className:"lg:col-span-2 space-y-4",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Office"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR is developed by iD01t Productions.",e.jsx("br",{}),"Primary contact: Guillaume Lessard.",e.jsx("br",{}),"Email: ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Working Hours"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Monday - Friday: 09:00-17:00 EST/EDT",e.jsx("br",{}),"Saturday - Sunday: Closed"]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Links"}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(j,{to:"/guillaume-lessard",className:"text-cyan-300 text-sm hover:underline",children:"About Guillaume Lessard"}),e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["ORCID",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://www.linkedin.com/in/qector/",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["LinkedIn",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["QEC Book",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]})]})]}),e.jsx("div",{className:"p-4 bg-green-400/5 border border-green-400/20 rounded-xl",children:e.jsxs("p",{className:"text-green-400 text-sm font-semibold flex items-center gap-2",children:[e.jsx(v,{size:14,className:"shrink-0","aria-hidden":"true"})," Response time: 1 business day for commercial inquiries."]})})]}),e.jsx("div",{ref:s=>c(s,1),className:"lg:col-span-3",children:e.jsx("div",{className:"card-surface",children:i?e.jsxs("div",{className:"text-center py-12",role:"status","aria-live":"polite",children:[e.jsx("div",{className:"w-16 h-16 rounded-full bg-green-400/10 border border-green-400/20 flex items-center justify-center mx-auto mb-4",children:e.jsx("span",{className:"text-green-400 text-2xl","aria-hidden":"true",children:"✓"})}),e.jsx("h2",{className:"text-primary font-bold text-xl mb-2",children:i==="sent"?"Message Sent":"Email Draft Opened"}),e.jsx("p",{className:"text-secondary",children:i==="sent"?"We will get back to you within one business day.":"Your email client should contain the completed inquiry. If it did not open, email admin@qector.store directly."})]}):e.jsxs("form",{onSubmit:x,method:"POST",className:"space-y-5",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-name",className:"block text-secondary text-sm mb-2",children:["Full Name ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-name",name:"name",type:"text",required:!0,autoComplete:"name",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Your name"})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-email",className:"block text-secondary text-sm mb-2",children:["Email Address ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-email",name:"email",type:"email",required:!0,autoComplete:"email",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"you@company.com"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-org",className:"block text-secondary text-sm mb-2",children:"Organization / Affiliation"}),e.jsx("input",{id:"contact-org",name:"organization",type:"text",autoComplete:"organization",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Company or Institution"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-referral",className:"block text-secondary text-sm mb-2",children:"Referral Source"}),e.jsxs("select",{id:"contact-referral",name:"referral",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"Web search"}),e.jsx("option",{children:"Social media"}),e.jsx("option",{children:"Conference / event"}),e.jsx("option",{children:"Publication / DOI"}),e.jsx("option",{children:"Recommendation"}),e.jsx("option",{children:"Other"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-timeline",className:"block text-secondary text-sm mb-2",children:"Evaluation Timeline"}),e.jsxs("select",{id:"contact-timeline",name:"timeline",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"0-30 days"}),e.jsx("option",{children:"30-90 days"}),e.jsx("option",{children:"90+ days"}),e.jsx("option",{children:"Undecided"})]})]})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-message",className:"block text-secondary text-sm mb-2",children:["Message ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("textarea",{id:"contact-message",name:"message",required:!0,rows:6,className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors resize-y",placeholder:"Tell us about your interest in QECTOR and evaluation needs..."})]}),l&&e.jsx("p",{className:"text-red-400 text-sm",role:"alert",children:l}),e.jsx("button",{type:"submit",className:"btn-gold w-full py-3",children:"Send Message"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"By submitting this form, you agree to the processing of your contact data to respond to your inquiry. We do not share submission contents with third parties."})]})})})]}),e.jsxs("div",{className:"max-w-4xl mx-auto mt-16",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2 text-center",children:"Book a 30-minute call"}),e.jsx("p",{className:"text-secondary text-sm mb-6 text-center",children:"Decoder audit, licensing questions, or an integration walkthrough, booked directly with Guillaume Lessard."}),e.jsx(y,{url:b})]})]})})]})}export{T as default}; diff --git a/assets/Contact-CNyl61eI.js b/assets/Contact-CNyl61eI.js deleted file mode 100644 index c7a2267a..00000000 --- a/assets/Contact-CNyl61eI.js +++ /dev/null @@ -1,2 +0,0 @@ -import{r as a,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,J as g,d as b}from"./index-BN-vOeL2.js";import{C as y}from"./CalendlyWidget-BuhQfp2_.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{L as j}from"./vendor-PiU4YGcH.js";import{Z as v}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";n.registerPlugin(f);function T(){const o=a.useRef([]),[i,d]=a.useState(!1),[l,m]=a.useState("");a.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{o.current.filter(Boolean).forEach(r=>{n.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const c=(s,r)=>{s&&(o.current[r]=s)},x=async s=>{s.preventDefault(),m("");const r=s.currentTarget,t=new FormData(r);{const u=`QECTOR inquiry from ${t.get("name")||"anonymous"}`,h=[`Name: ${t.get("name")||""}`,`Email: ${t.get("email")||""}`,`Organization: ${t.get("organization")||""}`,`Referral: ${t.get("referral")||""}`,`Timeline: ${t.get("timeline")||""}`,"",String(t.get("message")||"")].join(` -`);window.location.href=`mailto:admin@qector.store?${new URLSearchParams({subject:u,body:h})}`,d("draft")}};return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"Contact · QECTOR",description:"Contact QECTOR · commercial inquiries, technical support questions, and evaluation requests."}),e.jsx(g,{data:{"@context":"https://schema.org","@type":"ContactPage",name:"Contact QECTOR",description:"Commercial inquiries, technical support, and evaluation requests for QECTOR.",url:"https://qector.store/contact",mainEntity:{"@type":"Organization",name:"QECTOR",url:"https://qector.store",email:"mailto:admin@qector.store",sameAs:["https://github.com/GuillaumeLessard/qector-decoder","https://pypi.org/project/qector-decoder-v3/","https://github.com/GuillaumeLessard/qector-decoder"]}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"admin@qector.store - Mon-Fri EST/EDT"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"Contact Us"}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Commercial evaluation requests, technical inquiries, partnership discussions, and support - all handled directly by Guillaume Lessard / iD01t Productions."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-5 gap-8",children:[e.jsxs("div",{ref:s=>c(s,0),className:"lg:col-span-2 space-y-4",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Office"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR is developed by iD01t Productions.",e.jsx("br",{}),"Primary contact: Guillaume Lessard.",e.jsx("br",{}),"Email: ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Working Hours"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Monday - Friday: 09:00-17:00 EST/EDT",e.jsx("br",{}),"Saturday - Sunday: Closed"]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Links"}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(j,{to:"/guillaume-lessard",className:"text-cyan-300 text-sm hover:underline",children:"About Guillaume Lessard"}),e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["ORCID",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://www.linkedin.com/in/qector/",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["LinkedIn",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["QEC Book",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]})]})]}),e.jsx("div",{className:"p-4 bg-green-400/5 border border-green-400/20 rounded-xl",children:e.jsxs("p",{className:"text-green-400 text-sm font-semibold flex items-center gap-2",children:[e.jsx(v,{size:14,className:"shrink-0","aria-hidden":"true"})," Response time: 1 business day for commercial inquiries."]})})]}),e.jsx("div",{ref:s=>c(s,1),className:"lg:col-span-3",children:e.jsx("div",{className:"card-surface",children:i?e.jsxs("div",{className:"text-center py-12",role:"status","aria-live":"polite",children:[e.jsx("div",{className:"w-16 h-16 rounded-full bg-green-400/10 border border-green-400/20 flex items-center justify-center mx-auto mb-4",children:e.jsx("span",{className:"text-green-400 text-2xl","aria-hidden":"true",children:"✓"})}),e.jsx("h2",{className:"text-primary font-bold text-xl mb-2",children:i==="sent"?"Message Sent":"Email Draft Opened"}),e.jsx("p",{className:"text-secondary",children:i==="sent"?"We will get back to you within one business day.":"Your email client should contain the completed inquiry. If it did not open, email admin@qector.store directly."})]}):e.jsxs("form",{onSubmit:x,method:"POST",className:"space-y-5",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-name",className:"block text-secondary text-sm mb-2",children:["Full Name ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-name",name:"name",type:"text",required:!0,autoComplete:"name",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Your name"})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-email",className:"block text-secondary text-sm mb-2",children:["Email Address ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-email",name:"email",type:"email",required:!0,autoComplete:"email",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"you@company.com"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-org",className:"block text-secondary text-sm mb-2",children:"Organization / Affiliation"}),e.jsx("input",{id:"contact-org",name:"organization",type:"text",autoComplete:"organization",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Company or Institution"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-referral",className:"block text-secondary text-sm mb-2",children:"Referral Source"}),e.jsxs("select",{id:"contact-referral",name:"referral",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"Web search"}),e.jsx("option",{children:"Social media"}),e.jsx("option",{children:"Conference / event"}),e.jsx("option",{children:"Publication / DOI"}),e.jsx("option",{children:"Recommendation"}),e.jsx("option",{children:"Other"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-timeline",className:"block text-secondary text-sm mb-2",children:"Evaluation Timeline"}),e.jsxs("select",{id:"contact-timeline",name:"timeline",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"0-30 days"}),e.jsx("option",{children:"30-90 days"}),e.jsx("option",{children:"90+ days"}),e.jsx("option",{children:"Undecided"})]})]})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-message",className:"block text-secondary text-sm mb-2",children:["Message ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("textarea",{id:"contact-message",name:"message",required:!0,rows:6,className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors resize-y",placeholder:"Tell us about your interest in QECTOR and evaluation needs..."})]}),l&&e.jsx("p",{className:"text-red-400 text-sm",role:"alert",children:l}),e.jsx("button",{type:"submit",className:"btn-gold w-full py-3",children:"Send Message"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"By submitting this form, you agree to the processing of your contact data to respond to your inquiry. We do not share submission contents with third parties."})]})})})]}),e.jsxs("div",{className:"max-w-4xl mx-auto mt-16",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2 text-center",children:"Book a 30-minute call"}),e.jsx("p",{className:"text-secondary text-sm mb-6 text-center",children:"Decoder audit, licensing questions, or an integration walkthrough, booked directly with Guillaume Lessard."}),e.jsx(y,{url:b})]})]})})]})}export{T as default}; diff --git a/assets/Contact-CcHAROXi.js b/assets/Contact-CcHAROXi.js deleted file mode 100644 index 52cd897e..00000000 --- a/assets/Contact-CcHAROXi.js +++ /dev/null @@ -1,2 +0,0 @@ -import{r as a,j as e}from"./vendor-react-BiHfrq0e.js";import{S as b,J as g,L as n,f as y}from"./index-CcwlvHYJ.js";import{C as f}from"./CalendlyWidget-BuhQfp2_.js";import{g as o,S as j}from"./vendor-gsap-a3sj5zmn.js";import{Z as v}from"./vendor-ui-B0ssGG4c.js";o.registerPlugin(j);function S(){const l=a.useRef([]),[i,c]=a.useState(!1),[d,x]=a.useState("");a.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=o.context(()=>{l.current.filter(Boolean).forEach(r=>{o.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const m=(s,r)=>{s&&(l.current[r]=s)},u=async s=>{s.preventDefault(),x("");const r=s.currentTarget,t=new FormData(r);if(String(t.get("website")||"").trim()!==""){c("sent");return}{const h=`QECTOR inquiry from ${t.get("name")||"anonymous"}`,p=[`Name: ${t.get("name")||""}`,`Email: ${t.get("email")||""}`,`Organization: ${t.get("organization")||""}`,`Referral: ${t.get("referral")||""}`,`Timeline: ${t.get("timeline")||""}`,"",String(t.get("message")||"")].join(` -`);window.location.href=`mailto:admin@qector.store?${new URLSearchParams({subject:h,body:p})}`,c("draft")}};return e.jsxs(e.Fragment,{children:[e.jsx(b,{title:"Contact · QECTOR",description:"Contact QECTOR · commercial inquiries, technical support questions, and evaluation requests."}),e.jsx(g,{data:{"@context":"https://schema.org","@type":"ContactPage",name:"Contact QECTOR",description:"Commercial inquiries, technical support, and evaluation requests for QECTOR.",url:"https://qector.store/contact",mainEntity:{"@type":"Organization",name:"QECTOR",url:"https://qector.store",email:"mailto:admin@qector.store",sameAs:["https://github.com/GuillaumeLessard/qector-decoder","https://pypi.org/project/qector-decoder-v3/","https://github.com/GuillaumeLessard/qector-decoder"]}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"admin@qector.store - Mon-Fri EST/EDT"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"Contact Us"}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Commercial evaluation requests, technical inquiries, partnership discussions, and support - all handled directly by Guillaume Lessard / iD01t Productions."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-5 gap-8",children:[e.jsxs("div",{ref:s=>m(s,0),className:"lg:col-span-2 space-y-4",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Business address"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR is developed by iD01t Productions.",e.jsx("br",{}),"Primary contact: Guillaume Lessard.",e.jsx("br",{}),"2004 De Lorimier, Longueuil, Québec, Canada J4K 3H7",e.jsx("br",{}),"Email: ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Working Hours"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Monday - Friday: 09:00-17:00 EST/EDT",e.jsx("br",{}),"Saturday - Sunday: Closed"]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Links"}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(n,{to:"/guillaume-lessard",className:"text-cyan-300 text-sm hover:underline",children:"About Guillaume Lessard"}),e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["ORCID",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://www.linkedin.com/in/qector/",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["LinkedIn",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["QEC Book",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]})]})]}),e.jsx("div",{className:"p-4 bg-green-400/5 border border-green-400/20 rounded-xl",children:e.jsxs("p",{className:"text-green-400 text-sm font-semibold flex items-center gap-2",children:[e.jsx(v,{size:14,className:"shrink-0","aria-hidden":"true"})," Response time: 1 business day for commercial inquiries."]})})]}),e.jsx("div",{ref:s=>m(s,1),className:"lg:col-span-3",children:e.jsx("div",{className:"card-surface",children:i?e.jsxs("div",{className:"text-center py-12",role:"status","aria-live":"polite",children:[e.jsx("div",{className:"w-16 h-16 rounded-full bg-green-400/10 border border-green-400/20 flex items-center justify-center mx-auto mb-4",children:e.jsx("span",{className:"text-green-400 text-2xl","aria-hidden":"true",children:"✓"})}),e.jsx("h2",{className:"text-primary font-bold text-xl mb-2",children:i==="sent"?"Message Sent":"Email Draft Opened"}),e.jsx("p",{className:"text-secondary",children:i==="sent"?"We will get back to you within one business day.":"Your email client should contain the completed inquiry. If it did not open, email admin@qector.store directly."})]}):e.jsxs("form",{onSubmit:u,method:"POST",className:"space-y-5",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-name",className:"block text-secondary text-sm mb-2",children:["Full Name ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-name",name:"name",type:"text",required:!0,autoComplete:"name",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Your name"})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-email",className:"block text-secondary text-sm mb-2",children:["Email Address ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-email",name:"email",type:"email",required:!0,autoComplete:"email",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"you@company.com"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-org",className:"block text-secondary text-sm mb-2",children:"Organization / Affiliation"}),e.jsx("input",{id:"contact-org",name:"organization",type:"text",autoComplete:"organization",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Company or Institution"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-referral",className:"block text-secondary text-sm mb-2",children:"Referral Source"}),e.jsxs("select",{id:"contact-referral",name:"referral",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"Web search"}),e.jsx("option",{children:"Social media"}),e.jsx("option",{children:"Conference / event"}),e.jsx("option",{children:"Publication / DOI"}),e.jsx("option",{children:"Recommendation"}),e.jsx("option",{children:"Other"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-timeline",className:"block text-secondary text-sm mb-2",children:"Evaluation Timeline"}),e.jsxs("select",{id:"contact-timeline",name:"timeline",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"0-30 days"}),e.jsx("option",{children:"30-90 days"}),e.jsx("option",{children:"90+ days"}),e.jsx("option",{children:"Undecided"})]})]})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-message",className:"block text-secondary text-sm mb-2",children:["Message ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("textarea",{id:"contact-message",name:"message",required:!0,rows:6,className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors resize-y",placeholder:"Tell us about your interest in QECTOR and evaluation needs..."})]}),e.jsxs("div",{"aria-hidden":"true",className:"absolute -left-[9999px] w-px h-px overflow-hidden",children:[e.jsx("label",{htmlFor:"contact-website",children:"Leave this field empty"}),e.jsx("input",{id:"contact-website",name:"website",type:"text",tabIndex:-1,autoComplete:"off"})]}),d&&e.jsx("p",{className:"text-red-400 text-sm",role:"alert",children:d}),e.jsx("button",{type:"submit",className:"btn-gold w-full py-3",children:"Send Message"}),e.jsxs("p",{className:"text-muted-foreground text-xs",children:["We use what you send only to answer your inquiry and keep it for 3 years after our last exchange. It is never sold or shared for marketing. See the"," ",e.jsx(n,{to:"/privacy",className:"text-cyan-300 hover:underline",children:"Privacy Policy"})," (",e.jsx(n,{to:"/fr/privacy",className:"text-cyan-300 hover:underline",children:"français"}),") for your rights under Québec law."]})]})})})]}),e.jsxs("div",{className:"max-w-4xl mx-auto mt-16",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2 text-center",children:"Book a 30-minute call"}),e.jsx("p",{className:"text-secondary text-sm mb-6 text-center",children:"Decoder audit, licensing questions, or an integration walkthrough, booked directly with Guillaume Lessard."}),e.jsx(f,{url:y})]})]})})]})}export{S as default}; diff --git a/assets/Contact-CppRxmmN.js b/assets/Contact-CppRxmmN.js deleted file mode 100644 index 94ede3f2..00000000 --- a/assets/Contact-CppRxmmN.js +++ /dev/null @@ -1,2 +0,0 @@ -import{r as a,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,J as g,d as b}from"./index-WV1aysjN.js";import{C as y}from"./CalendlyWidget-BuhQfp2_.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{L as j}from"./vendor-PiU4YGcH.js";import{Z as v}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";n.registerPlugin(f);function T(){const o=a.useRef([]),[i,d]=a.useState(!1),[l,m]=a.useState("");a.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{o.current.filter(Boolean).forEach(r=>{n.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const c=(s,r)=>{s&&(o.current[r]=s)},x=async s=>{s.preventDefault(),m("");const r=s.currentTarget,t=new FormData(r);{const u=`QECTOR inquiry from ${t.get("name")||"anonymous"}`,h=[`Name: ${t.get("name")||""}`,`Email: ${t.get("email")||""}`,`Organization: ${t.get("organization")||""}`,`Referral: ${t.get("referral")||""}`,`Timeline: ${t.get("timeline")||""}`,"",String(t.get("message")||"")].join(` -`);window.location.href=`mailto:admin@qector.store?${new URLSearchParams({subject:u,body:h})}`,d("draft")}};return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"Contact · QECTOR",description:"Contact QECTOR · commercial inquiries, technical support questions, and evaluation requests."}),e.jsx(g,{data:{"@context":"https://schema.org","@type":"ContactPage",name:"Contact QECTOR",description:"Commercial inquiries, technical support, and evaluation requests for QECTOR.",url:"https://qector.store/contact",mainEntity:{"@type":"Organization",name:"QECTOR",url:"https://qector.store",email:"mailto:admin@qector.store",sameAs:["https://github.com/GuillaumeLessard/qector-decoder","https://pypi.org/project/qector-decoder-v3/","https://github.com/GuillaumeLessard/qector-decoder"]}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"admin@qector.store - Mon-Fri EST/EDT"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"Contact Us"}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Commercial evaluation requests, technical inquiries, partnership discussions, and support - all handled directly by Guillaume Lessard / iD01t Productions."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-5 gap-8",children:[e.jsxs("div",{ref:s=>c(s,0),className:"lg:col-span-2 space-y-4",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Office"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR is developed by iD01t Productions.",e.jsx("br",{}),"Primary contact: Guillaume Lessard.",e.jsx("br",{}),"Email: ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Working Hours"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Monday - Friday: 09:00-17:00 EST/EDT",e.jsx("br",{}),"Saturday - Sunday: Closed"]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Links"}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(j,{to:"/guillaume-lessard",className:"text-cyan-300 text-sm hover:underline",children:"About Guillaume Lessard"}),e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["ORCID",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://www.linkedin.com/in/qector/",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["LinkedIn",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["QEC Book",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]})]})]}),e.jsx("div",{className:"p-4 bg-green-400/5 border border-green-400/20 rounded-xl",children:e.jsxs("p",{className:"text-green-400 text-sm font-semibold flex items-center gap-2",children:[e.jsx(v,{size:14,className:"shrink-0","aria-hidden":"true"})," Response time: 1 business day for commercial inquiries."]})})]}),e.jsx("div",{ref:s=>c(s,1),className:"lg:col-span-3",children:e.jsx("div",{className:"card-surface",children:i?e.jsxs("div",{className:"text-center py-12",role:"status","aria-live":"polite",children:[e.jsx("div",{className:"w-16 h-16 rounded-full bg-green-400/10 border border-green-400/20 flex items-center justify-center mx-auto mb-4",children:e.jsx("span",{className:"text-green-400 text-2xl","aria-hidden":"true",children:"✓"})}),e.jsx("h2",{className:"text-primary font-bold text-xl mb-2",children:i==="sent"?"Message Sent":"Email Draft Opened"}),e.jsx("p",{className:"text-secondary",children:i==="sent"?"We will get back to you within one business day.":"Your email client should contain the completed inquiry. If it did not open, email admin@qector.store directly."})]}):e.jsxs("form",{onSubmit:x,method:"POST",className:"space-y-5",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-name",className:"block text-secondary text-sm mb-2",children:["Full Name ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-name",name:"name",type:"text",required:!0,autoComplete:"name",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Your name"})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-email",className:"block text-secondary text-sm mb-2",children:["Email Address ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-email",name:"email",type:"email",required:!0,autoComplete:"email",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"you@company.com"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-org",className:"block text-secondary text-sm mb-2",children:"Organization / Affiliation"}),e.jsx("input",{id:"contact-org",name:"organization",type:"text",autoComplete:"organization",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Company or Institution"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-referral",className:"block text-secondary text-sm mb-2",children:"Referral Source"}),e.jsxs("select",{id:"contact-referral",name:"referral",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"Web search"}),e.jsx("option",{children:"Social media"}),e.jsx("option",{children:"Conference / event"}),e.jsx("option",{children:"Publication / DOI"}),e.jsx("option",{children:"Recommendation"}),e.jsx("option",{children:"Other"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-timeline",className:"block text-secondary text-sm mb-2",children:"Evaluation Timeline"}),e.jsxs("select",{id:"contact-timeline",name:"timeline",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"0-30 days"}),e.jsx("option",{children:"30-90 days"}),e.jsx("option",{children:"90+ days"}),e.jsx("option",{children:"Undecided"})]})]})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-message",className:"block text-secondary text-sm mb-2",children:["Message ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("textarea",{id:"contact-message",name:"message",required:!0,rows:6,className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors resize-y",placeholder:"Tell us about your interest in QECTOR and evaluation needs..."})]}),l&&e.jsx("p",{className:"text-red-400 text-sm",role:"alert",children:l}),e.jsx("button",{type:"submit",className:"btn-gold w-full py-3",children:"Send Message"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"By submitting this form, you agree to the processing of your contact data to respond to your inquiry. We do not share submission contents with third parties."})]})})})]}),e.jsxs("div",{className:"max-w-4xl mx-auto mt-16",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2 text-center",children:"Book a 30-minute call"}),e.jsx("p",{className:"text-secondary text-sm mb-6 text-center",children:"Decoder audit, licensing questions, or an integration walkthrough, booked directly with Guillaume Lessard."}),e.jsx(y,{url:b})]})]})})]})}export{T as default}; diff --git a/assets/Contact-D1OwXUzJ.js b/assets/Contact-D1OwXUzJ.js deleted file mode 100644 index fd289259..00000000 --- a/assets/Contact-D1OwXUzJ.js +++ /dev/null @@ -1,2 +0,0 @@ -import{r as a,j as e}from"./vendor-react-BiHfrq0e.js";import{S as b,J as g,L as n,f as y}from"./index-c1PDYu0j.js";import{C as f}from"./CalendlyWidget-BuhQfp2_.js";import{g as o,S as j}from"./vendor-gsap-a3sj5zmn.js";import{Z as v}from"./vendor-ui-B8TlNU4J.js";o.registerPlugin(j);function S(){const l=a.useRef([]),[i,c]=a.useState(!1),[d,x]=a.useState("");a.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=o.context(()=>{l.current.filter(Boolean).forEach(r=>{o.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const m=(s,r)=>{s&&(l.current[r]=s)},u=async s=>{s.preventDefault(),x("");const r=s.currentTarget,t=new FormData(r);if(String(t.get("website")||"").trim()!==""){c("sent");return}{const h=`QECTOR inquiry from ${t.get("name")||"anonymous"}`,p=[`Name: ${t.get("name")||""}`,`Email: ${t.get("email")||""}`,`Organization: ${t.get("organization")||""}`,`Referral: ${t.get("referral")||""}`,`Timeline: ${t.get("timeline")||""}`,"",String(t.get("message")||"")].join(` -`);window.location.href=`mailto:admin@qector.store?${new URLSearchParams({subject:h,body:p})}`,c("draft")}};return e.jsxs(e.Fragment,{children:[e.jsx(b,{title:"Contact · QECTOR",description:"Contact QECTOR · commercial inquiries, technical support questions, and evaluation requests."}),e.jsx(g,{data:{"@context":"https://schema.org","@type":"ContactPage",name:"Contact QECTOR",description:"Commercial inquiries, technical support, and evaluation requests for QECTOR.",url:"https://qector.store/contact",mainEntity:{"@type":"Organization",name:"QECTOR",url:"https://qector.store",email:"mailto:admin@qector.store",sameAs:["https://github.com/GuillaumeLessard/qector-decoder","https://pypi.org/project/qector-decoder-v3/","https://github.com/GuillaumeLessard/qector-decoder"]}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"admin@qector.store - Mon-Fri EST/EDT"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"Contact Us"}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Commercial evaluation requests, technical inquiries, partnership discussions, and support - all handled directly by Guillaume Lessard / iD01t Productions."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-5 gap-8",children:[e.jsxs("div",{ref:s=>m(s,0),className:"lg:col-span-2 space-y-4",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Business address"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR is developed by iD01t Productions.",e.jsx("br",{}),"Primary contact: Guillaume Lessard.",e.jsx("br",{}),"2004 De Lorimier, Longueuil, Québec, Canada J4K 3H7",e.jsx("br",{}),"Email: ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Working Hours"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Monday - Friday: 09:00-17:00 EST/EDT",e.jsx("br",{}),"Saturday - Sunday: Closed"]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Links"}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(n,{to:"/guillaume-lessard",className:"text-cyan-300 text-sm hover:underline",children:"About Guillaume Lessard"}),e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["ORCID",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://www.linkedin.com/in/qector/",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["LinkedIn",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["QEC Book",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]})]})]}),e.jsx("div",{className:"p-4 bg-green-400/5 border border-green-400/20 rounded-xl",children:e.jsxs("p",{className:"text-green-400 text-sm font-semibold flex items-center gap-2",children:[e.jsx(v,{size:14,className:"shrink-0","aria-hidden":"true"})," Response time: 1 business day for commercial inquiries."]})})]}),e.jsx("div",{ref:s=>m(s,1),className:"lg:col-span-3",children:e.jsx("div",{className:"card-surface",children:i?e.jsxs("div",{className:"text-center py-12",role:"status","aria-live":"polite",children:[e.jsx("div",{className:"w-16 h-16 rounded-full bg-green-400/10 border border-green-400/20 flex items-center justify-center mx-auto mb-4",children:e.jsx("span",{className:"text-green-400 text-2xl","aria-hidden":"true",children:"✓"})}),e.jsx("h2",{className:"text-primary font-bold text-xl mb-2",children:i==="sent"?"Message Sent":"Email Draft Opened"}),e.jsx("p",{className:"text-secondary",children:i==="sent"?"We will get back to you within one business day.":"Your email client should contain the completed inquiry. If it did not open, email admin@qector.store directly."})]}):e.jsxs("form",{onSubmit:u,method:"POST",className:"space-y-5",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-name",className:"block text-secondary text-sm mb-2",children:["Full Name ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-name",name:"name",type:"text",required:!0,autoComplete:"name",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Your name"})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-email",className:"block text-secondary text-sm mb-2",children:["Email Address ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-email",name:"email",type:"email",required:!0,autoComplete:"email",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"you@company.com"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-org",className:"block text-secondary text-sm mb-2",children:"Organization / Affiliation"}),e.jsx("input",{id:"contact-org",name:"organization",type:"text",autoComplete:"organization",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Company or Institution"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-referral",className:"block text-secondary text-sm mb-2",children:"Referral Source"}),e.jsxs("select",{id:"contact-referral",name:"referral",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"Web search"}),e.jsx("option",{children:"Social media"}),e.jsx("option",{children:"Conference / event"}),e.jsx("option",{children:"Publication / DOI"}),e.jsx("option",{children:"Recommendation"}),e.jsx("option",{children:"Other"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-timeline",className:"block text-secondary text-sm mb-2",children:"Evaluation Timeline"}),e.jsxs("select",{id:"contact-timeline",name:"timeline",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"0-30 days"}),e.jsx("option",{children:"30-90 days"}),e.jsx("option",{children:"90+ days"}),e.jsx("option",{children:"Undecided"})]})]})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-message",className:"block text-secondary text-sm mb-2",children:["Message ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("textarea",{id:"contact-message",name:"message",required:!0,rows:6,className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors resize-y",placeholder:"Tell us about your interest in QECTOR and evaluation needs..."})]}),e.jsxs("div",{"aria-hidden":"true",className:"absolute -left-[9999px] w-px h-px overflow-hidden",children:[e.jsx("label",{htmlFor:"contact-website",children:"Leave this field empty"}),e.jsx("input",{id:"contact-website",name:"website",type:"text",tabIndex:-1,autoComplete:"off"})]}),d&&e.jsx("p",{className:"text-red-400 text-sm",role:"alert",children:d}),e.jsx("button",{type:"submit",className:"btn-gold w-full py-3",children:"Send Message"}),e.jsxs("p",{className:"text-muted-foreground text-xs",children:["We use what you send only to answer your inquiry and keep it for 3 years after our last exchange. It is never sold or shared for marketing. See the"," ",e.jsx(n,{to:"/privacy",className:"text-cyan-300 hover:underline",children:"Privacy Policy"})," (",e.jsx(n,{to:"/fr/privacy",className:"text-cyan-300 hover:underline",children:"français"}),") for your rights under Québec law."]})]})})})]}),e.jsxs("div",{className:"max-w-4xl mx-auto mt-16",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2 text-center",children:"Book a 30-minute call"}),e.jsx("p",{className:"text-secondary text-sm mb-6 text-center",children:"Decoder audit, licensing questions, or an integration walkthrough, booked directly with Guillaume Lessard."}),e.jsx(f,{url:y})]})]})})]})}export{S as default}; diff --git a/assets/Contact-D61L1Z0b.js b/assets/Contact-D61L1Z0b.js deleted file mode 100644 index 94fe1713..00000000 --- a/assets/Contact-D61L1Z0b.js +++ /dev/null @@ -1,2 +0,0 @@ -import{r as a,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,J as g,d as b}from"./index-BUYYSLdX.js";import{C as y}from"./CalendlyWidget-BuhQfp2_.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{L as j}from"./vendor-PiU4YGcH.js";import{Z as v}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";n.registerPlugin(f);function T(){const o=a.useRef([]),[i,d]=a.useState(!1),[l,m]=a.useState("");a.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{o.current.filter(Boolean).forEach(r=>{n.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const c=(s,r)=>{s&&(o.current[r]=s)},x=async s=>{s.preventDefault(),m("");const r=s.currentTarget,t=new FormData(r);{const u=`QECTOR inquiry from ${t.get("name")||"anonymous"}`,h=[`Name: ${t.get("name")||""}`,`Email: ${t.get("email")||""}`,`Organization: ${t.get("organization")||""}`,`Referral: ${t.get("referral")||""}`,`Timeline: ${t.get("timeline")||""}`,"",String(t.get("message")||"")].join(` -`);window.location.href=`mailto:admin@qector.store?${new URLSearchParams({subject:u,body:h})}`,d("draft")}};return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"Contact · QECTOR",description:"Contact QECTOR · commercial inquiries, technical support questions, and evaluation requests."}),e.jsx(g,{data:{"@context":"https://schema.org","@type":"ContactPage",name:"Contact QECTOR",description:"Commercial inquiries, technical support, and evaluation requests for QECTOR.",url:"https://qector.store/contact",mainEntity:{"@type":"Organization",name:"QECTOR",url:"https://qector.store",email:"mailto:admin@qector.store",sameAs:["https://github.com/GuillaumeLessard/qector-decoder","https://pypi.org/project/qector-decoder-v3/","https://github.com/GuillaumeLessard/qector-decoder"]}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"admin@qector.store - Mon-Fri EST/EDT"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"Contact Us"}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Commercial evaluation requests, technical inquiries, partnership discussions, and support - all handled directly by Guillaume Lessard / iD01t Productions."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-5 gap-8",children:[e.jsxs("div",{ref:s=>c(s,0),className:"lg:col-span-2 space-y-4",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Office"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR is developed by iD01t Productions.",e.jsx("br",{}),"Primary contact: Guillaume Lessard.",e.jsx("br",{}),"Email: ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Working Hours"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Monday - Friday: 09:00-17:00 EST/EDT",e.jsx("br",{}),"Saturday - Sunday: Closed"]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Links"}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(j,{to:"/guillaume-lessard",className:"text-cyan-300 text-sm hover:underline",children:"About Guillaume Lessard"}),e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["ORCID",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://www.linkedin.com/in/qector/",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["LinkedIn",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["QEC Book",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]})]})]}),e.jsx("div",{className:"p-4 bg-green-400/5 border border-green-400/20 rounded-xl",children:e.jsxs("p",{className:"text-green-400 text-sm font-semibold flex items-center gap-2",children:[e.jsx(v,{size:14,className:"shrink-0","aria-hidden":"true"})," Response time: 1 business day for commercial inquiries."]})})]}),e.jsx("div",{ref:s=>c(s,1),className:"lg:col-span-3",children:e.jsx("div",{className:"card-surface",children:i?e.jsxs("div",{className:"text-center py-12",role:"status","aria-live":"polite",children:[e.jsx("div",{className:"w-16 h-16 rounded-full bg-green-400/10 border border-green-400/20 flex items-center justify-center mx-auto mb-4",children:e.jsx("span",{className:"text-green-400 text-2xl","aria-hidden":"true",children:"✓"})}),e.jsx("h2",{className:"text-primary font-bold text-xl mb-2",children:i==="sent"?"Message Sent":"Email Draft Opened"}),e.jsx("p",{className:"text-secondary",children:i==="sent"?"We will get back to you within one business day.":"Your email client should contain the completed inquiry. If it did not open, email admin@qector.store directly."})]}):e.jsxs("form",{onSubmit:x,method:"POST",className:"space-y-5",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-name",className:"block text-secondary text-sm mb-2",children:["Full Name ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-name",name:"name",type:"text",required:!0,autoComplete:"name",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Your name"})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-email",className:"block text-secondary text-sm mb-2",children:["Email Address ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-email",name:"email",type:"email",required:!0,autoComplete:"email",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"you@company.com"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-org",className:"block text-secondary text-sm mb-2",children:"Organization / Affiliation"}),e.jsx("input",{id:"contact-org",name:"organization",type:"text",autoComplete:"organization",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Company or Institution"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-referral",className:"block text-secondary text-sm mb-2",children:"Referral Source"}),e.jsxs("select",{id:"contact-referral",name:"referral",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"Web search"}),e.jsx("option",{children:"Social media"}),e.jsx("option",{children:"Conference / event"}),e.jsx("option",{children:"Publication / DOI"}),e.jsx("option",{children:"Recommendation"}),e.jsx("option",{children:"Other"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-timeline",className:"block text-secondary text-sm mb-2",children:"Evaluation Timeline"}),e.jsxs("select",{id:"contact-timeline",name:"timeline",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"0-30 days"}),e.jsx("option",{children:"30-90 days"}),e.jsx("option",{children:"90+ days"}),e.jsx("option",{children:"Undecided"})]})]})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-message",className:"block text-secondary text-sm mb-2",children:["Message ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("textarea",{id:"contact-message",name:"message",required:!0,rows:6,className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors resize-y",placeholder:"Tell us about your interest in QECTOR and evaluation needs..."})]}),l&&e.jsx("p",{className:"text-red-400 text-sm",role:"alert",children:l}),e.jsx("button",{type:"submit",className:"btn-gold w-full py-3",children:"Send Message"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"By submitting this form, you agree to the processing of your contact data to respond to your inquiry. We do not share submission contents with third parties."})]})})})]}),e.jsxs("div",{className:"max-w-4xl mx-auto mt-16",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2 text-center",children:"Book a 30-minute call"}),e.jsx("p",{className:"text-secondary text-sm mb-6 text-center",children:"Decoder audit, licensing questions, or an integration walkthrough, booked directly with Guillaume Lessard."}),e.jsx(y,{url:b})]})]})})]})}export{T as default}; diff --git a/assets/Contact-Dg86Xaug.js b/assets/Contact-Dg86Xaug.js deleted file mode 100644 index cb8a2110..00000000 --- a/assets/Contact-Dg86Xaug.js +++ /dev/null @@ -1,2 +0,0 @@ -import{r as a,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,J as g,b}from"./index-_BpMZhV3.js";import{C as y}from"./CalendlyWidget-BuhQfp2_.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{L as j}from"./vendor-PiU4YGcH.js";import{Z as v}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";n.registerPlugin(f);function T(){const o=a.useRef([]),[i,d]=a.useState(!1),[l,m]=a.useState("");a.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{o.current.filter(Boolean).forEach(r=>{n.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const c=(s,r)=>{s&&(o.current[r]=s)},x=async s=>{s.preventDefault(),m("");const r=s.currentTarget,t=new FormData(r);{const u=`QECTOR inquiry from ${t.get("name")||"anonymous"}`,h=[`Name: ${t.get("name")||""}`,`Email: ${t.get("email")||""}`,`Organization: ${t.get("organization")||""}`,`Referral: ${t.get("referral")||""}`,`Timeline: ${t.get("timeline")||""}`,"",String(t.get("message")||"")].join(` -`);window.location.href=`mailto:admin@qector.store?${new URLSearchParams({subject:u,body:h})}`,d("draft")}};return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"Contact · QECTOR",description:"Contact QECTOR · commercial inquiries, technical support questions, and evaluation requests."}),e.jsx(g,{data:{"@context":"https://schema.org","@type":"ContactPage",name:"Contact QECTOR",description:"Commercial inquiries, technical support, and evaluation requests for QECTOR.",url:"https://qector.store/contact",mainEntity:{"@type":"Organization",name:"QECTOR",url:"https://qector.store",email:"mailto:admin@qector.store",sameAs:["https://github.com/GuillaumeLessard/qector-decoder","https://pypi.org/project/qector-decoder-v3/","https://github.com/GuillaumeLessard/qector-decoder"]}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"admin@qector.store - Mon-Fri EST/EDT"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"Contact Us"}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Commercial evaluation requests, technical inquiries, partnership discussions, and support - all handled directly by Guillaume Lessard / iD01t Productions."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-5 gap-8",children:[e.jsxs("div",{ref:s=>c(s,0),className:"lg:col-span-2 space-y-4",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Office"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR is developed by iD01t Productions.",e.jsx("br",{}),"Primary contact: Guillaume Lessard.",e.jsx("br",{}),"Email: ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Working Hours"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Monday - Friday: 09:00-17:00 EST/EDT",e.jsx("br",{}),"Saturday - Sunday: Closed"]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Links"}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(j,{to:"/guillaume-lessard",className:"text-cyan-300 text-sm hover:underline",children:"About Guillaume Lessard"}),e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["ORCID",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://www.linkedin.com/in/qector/",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["LinkedIn",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["QEC Book",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]})]})]}),e.jsx("div",{className:"p-4 bg-green-400/5 border border-green-400/20 rounded-xl",children:e.jsxs("p",{className:"text-green-400 text-sm font-semibold flex items-center gap-2",children:[e.jsx(v,{size:14,className:"shrink-0","aria-hidden":"true"})," Response time: 1 business day for commercial inquiries."]})})]}),e.jsx("div",{ref:s=>c(s,1),className:"lg:col-span-3",children:e.jsx("div",{className:"card-surface",children:i?e.jsxs("div",{className:"text-center py-12",role:"status","aria-live":"polite",children:[e.jsx("div",{className:"w-16 h-16 rounded-full bg-green-400/10 border border-green-400/20 flex items-center justify-center mx-auto mb-4",children:e.jsx("span",{className:"text-green-400 text-2xl","aria-hidden":"true",children:"✓"})}),e.jsx("h2",{className:"text-primary font-bold text-xl mb-2",children:i==="sent"?"Message Sent":"Email Draft Opened"}),e.jsx("p",{className:"text-secondary",children:i==="sent"?"We will get back to you within one business day.":"Your email client should contain the completed inquiry. If it did not open, email admin@qector.store directly."})]}):e.jsxs("form",{onSubmit:x,method:"POST",className:"space-y-5",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-name",className:"block text-secondary text-sm mb-2",children:["Full Name ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-name",name:"name",type:"text",required:!0,autoComplete:"name",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Your name"})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-email",className:"block text-secondary text-sm mb-2",children:["Email Address ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-email",name:"email",type:"email",required:!0,autoComplete:"email",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"you@company.com"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-org",className:"block text-secondary text-sm mb-2",children:"Organization / Affiliation"}),e.jsx("input",{id:"contact-org",name:"organization",type:"text",autoComplete:"organization",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Company or Institution"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-referral",className:"block text-secondary text-sm mb-2",children:"Referral Source"}),e.jsxs("select",{id:"contact-referral",name:"referral",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"Web search"}),e.jsx("option",{children:"Social media"}),e.jsx("option",{children:"Conference / event"}),e.jsx("option",{children:"Publication / DOI"}),e.jsx("option",{children:"Recommendation"}),e.jsx("option",{children:"Other"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-timeline",className:"block text-secondary text-sm mb-2",children:"Evaluation Timeline"}),e.jsxs("select",{id:"contact-timeline",name:"timeline",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"0-30 days"}),e.jsx("option",{children:"30-90 days"}),e.jsx("option",{children:"90+ days"}),e.jsx("option",{children:"Undecided"})]})]})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-message",className:"block text-secondary text-sm mb-2",children:["Message ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("textarea",{id:"contact-message",name:"message",required:!0,rows:6,className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors resize-y",placeholder:"Tell us about your interest in QECTOR and evaluation needs..."})]}),l&&e.jsx("p",{className:"text-red-400 text-sm",role:"alert",children:l}),e.jsx("button",{type:"submit",className:"btn-gold w-full py-3",children:"Send Message"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"By submitting this form, you agree to the processing of your contact data to respond to your inquiry. We do not share submission contents with third parties."})]})})})]}),e.jsxs("div",{className:"max-w-4xl mx-auto mt-16",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2 text-center",children:"Book a 30-minute call"}),e.jsx("p",{className:"text-secondary text-sm mb-6 text-center",children:"Decoder audit, licensing questions, or an integration walkthrough, booked directly with Guillaume Lessard."}),e.jsx(y,{url:b})]})]})})]})}export{T as default}; diff --git a/assets/Contact-Dlj_E6zg.js b/assets/Contact-Dlj_E6zg.js deleted file mode 100644 index 59dfbc72..00000000 --- a/assets/Contact-Dlj_E6zg.js +++ /dev/null @@ -1,2 +0,0 @@ -import{r as a,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,J as g,d as b}from"./index-CxWP17m6.js";import{C as y}from"./CalendlyWidget-BuhQfp2_.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{L as j}from"./vendor-PiU4YGcH.js";import{Z as v}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";n.registerPlugin(f);function T(){const o=a.useRef([]),[i,d]=a.useState(!1),[l,m]=a.useState("");a.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{o.current.filter(Boolean).forEach(r=>{n.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const c=(s,r)=>{s&&(o.current[r]=s)},x=async s=>{s.preventDefault(),m("");const r=s.currentTarget,t=new FormData(r);{const u=`QECTOR inquiry from ${t.get("name")||"anonymous"}`,h=[`Name: ${t.get("name")||""}`,`Email: ${t.get("email")||""}`,`Organization: ${t.get("organization")||""}`,`Referral: ${t.get("referral")||""}`,`Timeline: ${t.get("timeline")||""}`,"",String(t.get("message")||"")].join(` -`);window.location.href=`mailto:admin@qector.store?${new URLSearchParams({subject:u,body:h})}`,d("draft")}};return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"Contact · QECTOR",description:"Contact QECTOR · commercial inquiries, technical support questions, and evaluation requests."}),e.jsx(g,{data:{"@context":"https://schema.org","@type":"ContactPage",name:"Contact QECTOR",description:"Commercial inquiries, technical support, and evaluation requests for QECTOR.",url:"https://qector.store/contact",mainEntity:{"@type":"Organization",name:"QECTOR",url:"https://qector.store",email:"mailto:admin@qector.store",sameAs:["https://github.com/GuillaumeLessard/qector-decoder","https://pypi.org/project/qector-decoder-v3/","https://github.com/GuillaumeLessard/qector-decoder"]}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"admin@qector.store - Mon-Fri EST/EDT"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"Contact Us"}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Commercial evaluation requests, technical inquiries, partnership discussions, and support - all handled directly by Guillaume Lessard / iD01t Productions."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-5 gap-8",children:[e.jsxs("div",{ref:s=>c(s,0),className:"lg:col-span-2 space-y-4",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Office"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR is developed by iD01t Productions.",e.jsx("br",{}),"Primary contact: Guillaume Lessard.",e.jsx("br",{}),"Email: ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Working Hours"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Monday - Friday: 09:00-17:00 EST/EDT",e.jsx("br",{}),"Saturday - Sunday: Closed"]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Links"}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(j,{to:"/guillaume-lessard",className:"text-cyan-300 text-sm hover:underline",children:"About Guillaume Lessard"}),e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["ORCID",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://www.linkedin.com/in/qector/",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["LinkedIn",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["QEC Book",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]})]})]}),e.jsx("div",{className:"p-4 bg-green-400/5 border border-green-400/20 rounded-xl",children:e.jsxs("p",{className:"text-green-400 text-sm font-semibold flex items-center gap-2",children:[e.jsx(v,{size:14,className:"shrink-0","aria-hidden":"true"})," Response time: 1 business day for commercial inquiries."]})})]}),e.jsx("div",{ref:s=>c(s,1),className:"lg:col-span-3",children:e.jsx("div",{className:"card-surface",children:i?e.jsxs("div",{className:"text-center py-12",role:"status","aria-live":"polite",children:[e.jsx("div",{className:"w-16 h-16 rounded-full bg-green-400/10 border border-green-400/20 flex items-center justify-center mx-auto mb-4",children:e.jsx("span",{className:"text-green-400 text-2xl","aria-hidden":"true",children:"✓"})}),e.jsx("h2",{className:"text-primary font-bold text-xl mb-2",children:i==="sent"?"Message Sent":"Email Draft Opened"}),e.jsx("p",{className:"text-secondary",children:i==="sent"?"We will get back to you within one business day.":"Your email client should contain the completed inquiry. If it did not open, email admin@qector.store directly."})]}):e.jsxs("form",{onSubmit:x,method:"POST",className:"space-y-5",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-name",className:"block text-secondary text-sm mb-2",children:["Full Name ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-name",name:"name",type:"text",required:!0,autoComplete:"name",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Your name"})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-email",className:"block text-secondary text-sm mb-2",children:["Email Address ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-email",name:"email",type:"email",required:!0,autoComplete:"email",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"you@company.com"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-org",className:"block text-secondary text-sm mb-2",children:"Organization / Affiliation"}),e.jsx("input",{id:"contact-org",name:"organization",type:"text",autoComplete:"organization",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Company or Institution"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-referral",className:"block text-secondary text-sm mb-2",children:"Referral Source"}),e.jsxs("select",{id:"contact-referral",name:"referral",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"Web search"}),e.jsx("option",{children:"Social media"}),e.jsx("option",{children:"Conference / event"}),e.jsx("option",{children:"Publication / DOI"}),e.jsx("option",{children:"Recommendation"}),e.jsx("option",{children:"Other"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-timeline",className:"block text-secondary text-sm mb-2",children:"Evaluation Timeline"}),e.jsxs("select",{id:"contact-timeline",name:"timeline",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"0-30 days"}),e.jsx("option",{children:"30-90 days"}),e.jsx("option",{children:"90+ days"}),e.jsx("option",{children:"Undecided"})]})]})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-message",className:"block text-secondary text-sm mb-2",children:["Message ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("textarea",{id:"contact-message",name:"message",required:!0,rows:6,className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors resize-y",placeholder:"Tell us about your interest in QECTOR and evaluation needs..."})]}),l&&e.jsx("p",{className:"text-red-400 text-sm",role:"alert",children:l}),e.jsx("button",{type:"submit",className:"btn-gold w-full py-3",children:"Send Message"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"By submitting this form, you agree to the processing of your contact data to respond to your inquiry. We do not share submission contents with third parties."})]})})})]}),e.jsxs("div",{className:"max-w-4xl mx-auto mt-16",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2 text-center",children:"Book a 30-minute call"}),e.jsx("p",{className:"text-secondary text-sm mb-6 text-center",children:"Decoder audit, licensing questions, or an integration walkthrough, booked directly with Guillaume Lessard."}),e.jsx(y,{url:b})]})]})})]})}export{T as default}; diff --git a/assets/Contact-DuHdX58e.js b/assets/Contact-DuHdX58e.js deleted file mode 100644 index 25cacd09..00000000 --- a/assets/Contact-DuHdX58e.js +++ /dev/null @@ -1,2 +0,0 @@ -import{r as a,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,J as g,d as b}from"./index-Bh9DBCb3.js";import{C as y}from"./CalendlyWidget-BuhQfp2_.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{L as j}from"./vendor-PiU4YGcH.js";import{Z as v}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";n.registerPlugin(f);function T(){const o=a.useRef([]),[i,d]=a.useState(!1),[l,m]=a.useState("");a.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{o.current.filter(Boolean).forEach(r=>{n.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const c=(s,r)=>{s&&(o.current[r]=s)},x=async s=>{s.preventDefault(),m("");const r=s.currentTarget,t=new FormData(r);{const u=`QECTOR inquiry from ${t.get("name")||"anonymous"}`,h=[`Name: ${t.get("name")||""}`,`Email: ${t.get("email")||""}`,`Organization: ${t.get("organization")||""}`,`Referral: ${t.get("referral")||""}`,`Timeline: ${t.get("timeline")||""}`,"",String(t.get("message")||"")].join(` -`);window.location.href=`mailto:admin@qector.store?${new URLSearchParams({subject:u,body:h})}`,d("draft")}};return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"Contact · QECTOR",description:"Contact QECTOR · commercial inquiries, technical support questions, and evaluation requests."}),e.jsx(g,{data:{"@context":"https://schema.org","@type":"ContactPage",name:"Contact QECTOR",description:"Commercial inquiries, technical support, and evaluation requests for QECTOR.",url:"https://qector.store/contact",mainEntity:{"@type":"Organization",name:"QECTOR",url:"https://qector.store",email:"mailto:admin@qector.store",sameAs:["https://github.com/GuillaumeLessard/qector-decoder","https://pypi.org/project/qector-decoder-v3/","https://github.com/GuillaumeLessard/qector-decoder"]}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"admin@qector.store - Mon-Fri EST/EDT"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"Contact Us"}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Commercial evaluation requests, technical inquiries, partnership discussions, and support - all handled directly by Guillaume Lessard / iD01t Productions."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-5 gap-8",children:[e.jsxs("div",{ref:s=>c(s,0),className:"lg:col-span-2 space-y-4",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Office"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR is developed by iD01t Productions.",e.jsx("br",{}),"Primary contact: Guillaume Lessard.",e.jsx("br",{}),"2004 De Lorimier, Longueuil, Québec, Canada J4K 3H7",e.jsx("br",{}),"Email: ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Working Hours"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Monday - Friday: 09:00-17:00 EST/EDT",e.jsx("br",{}),"Saturday - Sunday: Closed"]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Links"}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(j,{to:"/guillaume-lessard",className:"text-cyan-300 text-sm hover:underline",children:"About Guillaume Lessard"}),e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["ORCID",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://www.linkedin.com/in/qector/",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["LinkedIn",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["QEC Book",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]})]})]}),e.jsx("div",{className:"p-4 bg-green-400/5 border border-green-400/20 rounded-xl",children:e.jsxs("p",{className:"text-green-400 text-sm font-semibold flex items-center gap-2",children:[e.jsx(v,{size:14,className:"shrink-0","aria-hidden":"true"})," Response time: 1 business day for commercial inquiries."]})})]}),e.jsx("div",{ref:s=>c(s,1),className:"lg:col-span-3",children:e.jsx("div",{className:"card-surface",children:i?e.jsxs("div",{className:"text-center py-12",role:"status","aria-live":"polite",children:[e.jsx("div",{className:"w-16 h-16 rounded-full bg-green-400/10 border border-green-400/20 flex items-center justify-center mx-auto mb-4",children:e.jsx("span",{className:"text-green-400 text-2xl","aria-hidden":"true",children:"✓"})}),e.jsx("h2",{className:"text-primary font-bold text-xl mb-2",children:i==="sent"?"Message Sent":"Email Draft Opened"}),e.jsx("p",{className:"text-secondary",children:i==="sent"?"We will get back to you within one business day.":"Your email client should contain the completed inquiry. If it did not open, email admin@qector.store directly."})]}):e.jsxs("form",{onSubmit:x,method:"POST",className:"space-y-5",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-name",className:"block text-secondary text-sm mb-2",children:["Full Name ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-name",name:"name",type:"text",required:!0,autoComplete:"name",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Your name"})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-email",className:"block text-secondary text-sm mb-2",children:["Email Address ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-email",name:"email",type:"email",required:!0,autoComplete:"email",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"you@company.com"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-org",className:"block text-secondary text-sm mb-2",children:"Organization / Affiliation"}),e.jsx("input",{id:"contact-org",name:"organization",type:"text",autoComplete:"organization",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Company or Institution"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-referral",className:"block text-secondary text-sm mb-2",children:"Referral Source"}),e.jsxs("select",{id:"contact-referral",name:"referral",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"Web search"}),e.jsx("option",{children:"Social media"}),e.jsx("option",{children:"Conference / event"}),e.jsx("option",{children:"Publication / DOI"}),e.jsx("option",{children:"Recommendation"}),e.jsx("option",{children:"Other"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-timeline",className:"block text-secondary text-sm mb-2",children:"Evaluation Timeline"}),e.jsxs("select",{id:"contact-timeline",name:"timeline",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"0-30 days"}),e.jsx("option",{children:"30-90 days"}),e.jsx("option",{children:"90+ days"}),e.jsx("option",{children:"Undecided"})]})]})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-message",className:"block text-secondary text-sm mb-2",children:["Message ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("textarea",{id:"contact-message",name:"message",required:!0,rows:6,className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors resize-y",placeholder:"Tell us about your interest in QECTOR and evaluation needs..."})]}),l&&e.jsx("p",{className:"text-red-400 text-sm",role:"alert",children:l}),e.jsx("button",{type:"submit",className:"btn-gold w-full py-3",children:"Send Message"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"By submitting this form, you agree to the processing of your contact data to respond to your inquiry. We do not share submission contents with third parties."})]})})})]}),e.jsxs("div",{className:"max-w-4xl mx-auto mt-16",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2 text-center",children:"Book a 30-minute call"}),e.jsx("p",{className:"text-secondary text-sm mb-6 text-center",children:"Decoder audit, licensing questions, or an integration walkthrough, booked directly with Guillaume Lessard."}),e.jsx(y,{url:b})]})]})})]})}export{T as default}; diff --git a/assets/Contact-DxkfRI_A.js b/assets/Contact-DxkfRI_A.js deleted file mode 100644 index 1218dcce..00000000 --- a/assets/Contact-DxkfRI_A.js +++ /dev/null @@ -1,2 +0,0 @@ -import{r as a,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,J as g,b}from"./index-B9kEGiWi.js";import{C as y}from"./CalendlyWidget-BuhQfp2_.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{L as j}from"./vendor-PiU4YGcH.js";import{Z as v}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";n.registerPlugin(f);function T(){const o=a.useRef([]),[i,d]=a.useState(!1),[l,m]=a.useState("");a.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{o.current.filter(Boolean).forEach(r=>{n.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const c=(s,r)=>{s&&(o.current[r]=s)},x=async s=>{s.preventDefault(),m("");const r=s.currentTarget,t=new FormData(r);{const u=`QECTOR inquiry from ${t.get("name")||"anonymous"}`,h=[`Name: ${t.get("name")||""}`,`Email: ${t.get("email")||""}`,`Organization: ${t.get("organization")||""}`,`Referral: ${t.get("referral")||""}`,`Timeline: ${t.get("timeline")||""}`,"",String(t.get("message")||"")].join(` -`);window.location.href=`mailto:admin@qector.store?${new URLSearchParams({subject:u,body:h})}`,d("draft")}};return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"Contact · QECTOR",description:"Contact QECTOR · commercial inquiries, technical support questions, and evaluation requests."}),e.jsx(g,{data:{"@context":"https://schema.org","@type":"ContactPage",name:"Contact QECTOR",description:"Commercial inquiries, technical support, and evaluation requests for QECTOR.",url:"https://qector.store/contact",mainEntity:{"@type":"Organization",name:"QECTOR",url:"https://qector.store",email:"mailto:admin@qector.store",sameAs:["https://github.com/GuillaumeLessard/qector-decoder","https://pypi.org/project/qector-decoder-v3/","https://github.com/GuillaumeLessard/qector-decoder"]}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"admin@qector.store - Mon-Fri EST/EDT"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"Contact Us"}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Commercial evaluation requests, technical inquiries, partnership discussions, and support - all handled directly by Guillaume Lessard / iD01t Productions."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-5 gap-8",children:[e.jsxs("div",{ref:s=>c(s,0),className:"lg:col-span-2 space-y-4",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Office"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR is developed by iD01t Productions.",e.jsx("br",{}),"Primary contact: Guillaume Lessard.",e.jsx("br",{}),"Email: ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Working Hours"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Monday - Friday: 09:00-17:00 EST/EDT",e.jsx("br",{}),"Saturday - Sunday: Closed"]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Links"}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(j,{to:"/guillaume-lessard",className:"text-cyan-300 text-sm hover:underline",children:"About Guillaume Lessard"}),e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["ORCID",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://www.linkedin.com/in/qector/",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["LinkedIn",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["QEC Book",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]})]})]}),e.jsx("div",{className:"p-4 bg-green-400/5 border border-green-400/20 rounded-xl",children:e.jsxs("p",{className:"text-green-400 text-sm font-semibold flex items-center gap-2",children:[e.jsx(v,{size:14,className:"shrink-0","aria-hidden":"true"})," Response time: 1 business day for commercial inquiries."]})})]}),e.jsx("div",{ref:s=>c(s,1),className:"lg:col-span-3",children:e.jsx("div",{className:"card-surface",children:i?e.jsxs("div",{className:"text-center py-12",role:"status","aria-live":"polite",children:[e.jsx("div",{className:"w-16 h-16 rounded-full bg-green-400/10 border border-green-400/20 flex items-center justify-center mx-auto mb-4",children:e.jsx("span",{className:"text-green-400 text-2xl","aria-hidden":"true",children:"✓"})}),e.jsx("h2",{className:"text-primary font-bold text-xl mb-2",children:i==="sent"?"Message Sent":"Email Draft Opened"}),e.jsx("p",{className:"text-secondary",children:i==="sent"?"We will get back to you within one business day.":"Your email client should contain the completed inquiry. If it did not open, email admin@qector.store directly."})]}):e.jsxs("form",{onSubmit:x,method:"POST",className:"space-y-5",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-name",className:"block text-secondary text-sm mb-2",children:["Full Name ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-name",name:"name",type:"text",required:!0,autoComplete:"name",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Your name"})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-email",className:"block text-secondary text-sm mb-2",children:["Email Address ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-email",name:"email",type:"email",required:!0,autoComplete:"email",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"you@company.com"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-org",className:"block text-secondary text-sm mb-2",children:"Organization / Affiliation"}),e.jsx("input",{id:"contact-org",name:"organization",type:"text",autoComplete:"organization",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Company or Institution"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-referral",className:"block text-secondary text-sm mb-2",children:"Referral Source"}),e.jsxs("select",{id:"contact-referral",name:"referral",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"Web search"}),e.jsx("option",{children:"Social media"}),e.jsx("option",{children:"Conference / event"}),e.jsx("option",{children:"Publication / DOI"}),e.jsx("option",{children:"Recommendation"}),e.jsx("option",{children:"Other"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-timeline",className:"block text-secondary text-sm mb-2",children:"Evaluation Timeline"}),e.jsxs("select",{id:"contact-timeline",name:"timeline",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"0-30 days"}),e.jsx("option",{children:"30-90 days"}),e.jsx("option",{children:"90+ days"}),e.jsx("option",{children:"Undecided"})]})]})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-message",className:"block text-secondary text-sm mb-2",children:["Message ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("textarea",{id:"contact-message",name:"message",required:!0,rows:6,className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors resize-y",placeholder:"Tell us about your interest in QECTOR and evaluation needs..."})]}),l&&e.jsx("p",{className:"text-red-400 text-sm",role:"alert",children:l}),e.jsx("button",{type:"submit",className:"btn-gold w-full py-3",children:"Send Message"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"By submitting this form, you agree to the processing of your contact data to respond to your inquiry. We do not share submission contents with third parties."})]})})})]}),e.jsxs("div",{className:"max-w-4xl mx-auto mt-16",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2 text-center",children:"Book a 30-minute call"}),e.jsx("p",{className:"text-secondary text-sm mb-6 text-center",children:"Decoder audit, licensing questions, or an integration walkthrough, booked directly with Guillaume Lessard."}),e.jsx(y,{url:b})]})]})})]})}export{T as default}; diff --git a/assets/Contact-HqNNvrNi.js b/assets/Contact-HqNNvrNi.js deleted file mode 100644 index e3e12fce..00000000 --- a/assets/Contact-HqNNvrNi.js +++ /dev/null @@ -1,2 +0,0 @@ -import{r as a,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,J as g,b}from"./index-iVST85F-.js";import{C as y}from"./CalendlyWidget-BuhQfp2_.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{L as j}from"./vendor-PiU4YGcH.js";import{Z as v}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";n.registerPlugin(f);function T(){const o=a.useRef([]),[i,d]=a.useState(!1),[l,m]=a.useState("");a.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{o.current.filter(Boolean).forEach(r=>{n.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const c=(s,r)=>{s&&(o.current[r]=s)},x=async s=>{s.preventDefault(),m("");const r=s.currentTarget,t=new FormData(r);{const u=`QECTOR inquiry from ${t.get("name")||"anonymous"}`,h=[`Name: ${t.get("name")||""}`,`Email: ${t.get("email")||""}`,`Organization: ${t.get("organization")||""}`,`Referral: ${t.get("referral")||""}`,`Timeline: ${t.get("timeline")||""}`,"",String(t.get("message")||"")].join(` -`);window.location.href=`mailto:admin@qector.store?${new URLSearchParams({subject:u,body:h})}`,d("draft")}};return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"Contact · QECTOR",description:"Contact QECTOR · commercial inquiries, technical support questions, and evaluation requests."}),e.jsx(g,{data:{"@context":"https://schema.org","@type":"ContactPage",name:"Contact QECTOR",description:"Commercial inquiries, technical support, and evaluation requests for QECTOR.",url:"https://qector.store/contact",mainEntity:{"@type":"Organization",name:"QECTOR",url:"https://qector.store",email:"mailto:admin@qector.store",sameAs:["https://github.com/GuillaumeLessard/qector-decoder","https://pypi.org/project/qector-decoder-v3/","https://github.com/GuillaumeLessard/qector-decoder"]}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"admin@qector.store - Mon-Fri EST/EDT"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"Contact Us"}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Commercial evaluation requests, technical inquiries, partnership discussions, and support - all handled directly by Guillaume Lessard / iD01t Productions."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-5 gap-8",children:[e.jsxs("div",{ref:s=>c(s,0),className:"lg:col-span-2 space-y-4",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Office"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR is developed by iD01t Productions.",e.jsx("br",{}),"Primary contact: Guillaume Lessard.",e.jsx("br",{}),"Email: ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Working Hours"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Monday - Friday: 09:00-17:00 EST/EDT",e.jsx("br",{}),"Saturday - Sunday: Closed"]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Links"}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(j,{to:"/guillaume-lessard",className:"text-cyan-300 text-sm hover:underline",children:"About Guillaume Lessard"}),e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["ORCID",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://www.linkedin.com/in/qector/",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["LinkedIn",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["QEC Book",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]})]})]}),e.jsx("div",{className:"p-4 bg-green-400/5 border border-green-400/20 rounded-xl",children:e.jsxs("p",{className:"text-green-400 text-sm font-semibold flex items-center gap-2",children:[e.jsx(v,{size:14,className:"shrink-0","aria-hidden":"true"})," Response time: 1 business day for commercial inquiries."]})})]}),e.jsx("div",{ref:s=>c(s,1),className:"lg:col-span-3",children:e.jsx("div",{className:"card-surface",children:i?e.jsxs("div",{className:"text-center py-12",role:"status","aria-live":"polite",children:[e.jsx("div",{className:"w-16 h-16 rounded-full bg-green-400/10 border border-green-400/20 flex items-center justify-center mx-auto mb-4",children:e.jsx("span",{className:"text-green-400 text-2xl","aria-hidden":"true",children:"✓"})}),e.jsx("h2",{className:"text-primary font-bold text-xl mb-2",children:i==="sent"?"Message Sent":"Email Draft Opened"}),e.jsx("p",{className:"text-secondary",children:i==="sent"?"We will get back to you within one business day.":"Your email client should contain the completed inquiry. If it did not open, email admin@qector.store directly."})]}):e.jsxs("form",{onSubmit:x,method:"POST",className:"space-y-5",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-name",className:"block text-secondary text-sm mb-2",children:["Full Name ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-name",name:"name",type:"text",required:!0,autoComplete:"name",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Your name"})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-email",className:"block text-secondary text-sm mb-2",children:["Email Address ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-email",name:"email",type:"email",required:!0,autoComplete:"email",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"you@company.com"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-org",className:"block text-secondary text-sm mb-2",children:"Organization / Affiliation"}),e.jsx("input",{id:"contact-org",name:"organization",type:"text",autoComplete:"organization",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Company or Institution"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-referral",className:"block text-secondary text-sm mb-2",children:"Referral Source"}),e.jsxs("select",{id:"contact-referral",name:"referral",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"Web search"}),e.jsx("option",{children:"Social media"}),e.jsx("option",{children:"Conference / event"}),e.jsx("option",{children:"Publication / DOI"}),e.jsx("option",{children:"Recommendation"}),e.jsx("option",{children:"Other"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-timeline",className:"block text-secondary text-sm mb-2",children:"Evaluation Timeline"}),e.jsxs("select",{id:"contact-timeline",name:"timeline",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"0-30 days"}),e.jsx("option",{children:"30-90 days"}),e.jsx("option",{children:"90+ days"}),e.jsx("option",{children:"Undecided"})]})]})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-message",className:"block text-secondary text-sm mb-2",children:["Message ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("textarea",{id:"contact-message",name:"message",required:!0,rows:6,className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors resize-y",placeholder:"Tell us about your interest in QECTOR and evaluation needs..."})]}),l&&e.jsx("p",{className:"text-red-400 text-sm",role:"alert",children:l}),e.jsx("button",{type:"submit",className:"btn-gold w-full py-3",children:"Send Message"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"By submitting this form, you agree to the processing of your contact data to respond to your inquiry. We do not share submission contents with third parties."})]})})})]}),e.jsxs("div",{className:"max-w-4xl mx-auto mt-16",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2 text-center",children:"Book a 30-minute call"}),e.jsx("p",{className:"text-secondary text-sm mb-6 text-center",children:"Decoder audit, licensing questions, or an integration walkthrough, booked directly with Guillaume Lessard."}),e.jsx(y,{url:b})]})]})})]})}export{T as default}; diff --git a/assets/Contact-Qiq6QgKt.js b/assets/Contact-Qiq6QgKt.js deleted file mode 100644 index 72208f12..00000000 --- a/assets/Contact-Qiq6QgKt.js +++ /dev/null @@ -1,2 +0,0 @@ -import{r as a,j as e}from"./vendor-react-BiHfrq0e.js";import{S as b,J as g,L as n,f as y}from"./index-DayaklK-.js";import{C as f}from"./CalendlyWidget-BuhQfp2_.js";import{g as o,S as j}from"./vendor-gsap-a3sj5zmn.js";import{Z as v}from"./vendor-ui-B8TlNU4J.js";o.registerPlugin(j);function S(){const l=a.useRef([]),[i,c]=a.useState(!1),[d,x]=a.useState("");a.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=o.context(()=>{l.current.filter(Boolean).forEach(r=>{o.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const m=(s,r)=>{s&&(l.current[r]=s)},u=async s=>{s.preventDefault(),x("");const r=s.currentTarget,t=new FormData(r);if(String(t.get("website")||"").trim()!==""){c("sent");return}{const h=`QECTOR inquiry from ${t.get("name")||"anonymous"}`,p=[`Name: ${t.get("name")||""}`,`Email: ${t.get("email")||""}`,`Organization: ${t.get("organization")||""}`,`Referral: ${t.get("referral")||""}`,`Timeline: ${t.get("timeline")||""}`,"",String(t.get("message")||"")].join(` -`);window.location.href=`mailto:admin@qector.store?${new URLSearchParams({subject:h,body:p})}`,c("draft")}};return e.jsxs(e.Fragment,{children:[e.jsx(b,{title:"Contact · QECTOR",description:"Contact QECTOR · commercial inquiries, technical support questions, and evaluation requests."}),e.jsx(g,{data:{"@context":"https://schema.org","@type":"ContactPage",name:"Contact QECTOR",description:"Commercial inquiries, technical support, and evaluation requests for QECTOR.",url:"https://qector.store/contact",mainEntity:{"@type":"Organization",name:"QECTOR",url:"https://qector.store",email:"mailto:admin@qector.store",sameAs:["https://github.com/GuillaumeLessard/qector-decoder","https://pypi.org/project/qector-decoder-v3/","https://github.com/GuillaumeLessard/qector-decoder"]}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"admin@qector.store - Mon-Fri EST/EDT"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"Contact Us"}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Commercial evaluation requests, technical inquiries, partnership discussions, and support - all handled directly by Guillaume Lessard / iD01t Productions."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-5 gap-8",children:[e.jsxs("div",{ref:s=>m(s,0),className:"lg:col-span-2 space-y-4",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Business address"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR is developed by iD01t Productions.",e.jsx("br",{}),"Primary contact: Guillaume Lessard.",e.jsx("br",{}),"2004 De Lorimier, Longueuil, Québec, Canada J4K 3H7",e.jsx("br",{}),"Email: ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Working Hours"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Monday - Friday: 09:00-17:00 EST/EDT",e.jsx("br",{}),"Saturday - Sunday: Closed"]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Links"}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(n,{to:"/guillaume-lessard",className:"text-cyan-300 text-sm hover:underline",children:"About Guillaume Lessard"}),e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["ORCID",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://www.linkedin.com/in/qector/",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["LinkedIn",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["QEC Book",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]})]})]}),e.jsx("div",{className:"p-4 bg-green-400/5 border border-green-400/20 rounded-xl",children:e.jsxs("p",{className:"text-green-400 text-sm font-semibold flex items-center gap-2",children:[e.jsx(v,{size:14,className:"shrink-0","aria-hidden":"true"})," Response time: 1 business day for commercial inquiries."]})})]}),e.jsx("div",{ref:s=>m(s,1),className:"lg:col-span-3",children:e.jsx("div",{className:"card-surface",children:i?e.jsxs("div",{className:"text-center py-12",role:"status","aria-live":"polite",children:[e.jsx("div",{className:"w-16 h-16 rounded-full bg-green-400/10 border border-green-400/20 flex items-center justify-center mx-auto mb-4",children:e.jsx("span",{className:"text-green-400 text-2xl","aria-hidden":"true",children:"✓"})}),e.jsx("h2",{className:"text-primary font-bold text-xl mb-2",children:i==="sent"?"Message Sent":"Email Draft Opened"}),e.jsx("p",{className:"text-secondary",children:i==="sent"?"We will get back to you within one business day.":"Your email client should contain the completed inquiry. If it did not open, email admin@qector.store directly."})]}):e.jsxs("form",{onSubmit:u,method:"POST",className:"space-y-5",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-name",className:"block text-secondary text-sm mb-2",children:["Full Name ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-name",name:"name",type:"text",required:!0,autoComplete:"name",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Your name"})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-email",className:"block text-secondary text-sm mb-2",children:["Email Address ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-email",name:"email",type:"email",required:!0,autoComplete:"email",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"you@company.com"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-org",className:"block text-secondary text-sm mb-2",children:"Organization / Affiliation"}),e.jsx("input",{id:"contact-org",name:"organization",type:"text",autoComplete:"organization",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Company or Institution"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-referral",className:"block text-secondary text-sm mb-2",children:"Referral Source"}),e.jsxs("select",{id:"contact-referral",name:"referral",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"Web search"}),e.jsx("option",{children:"Social media"}),e.jsx("option",{children:"Conference / event"}),e.jsx("option",{children:"Publication / DOI"}),e.jsx("option",{children:"Recommendation"}),e.jsx("option",{children:"Other"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-timeline",className:"block text-secondary text-sm mb-2",children:"Evaluation Timeline"}),e.jsxs("select",{id:"contact-timeline",name:"timeline",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"0-30 days"}),e.jsx("option",{children:"30-90 days"}),e.jsx("option",{children:"90+ days"}),e.jsx("option",{children:"Undecided"})]})]})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-message",className:"block text-secondary text-sm mb-2",children:["Message ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("textarea",{id:"contact-message",name:"message",required:!0,rows:6,className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors resize-y",placeholder:"Tell us about your interest in QECTOR and evaluation needs..."})]}),e.jsxs("div",{"aria-hidden":"true",className:"absolute -left-[9999px] w-px h-px overflow-hidden",children:[e.jsx("label",{htmlFor:"contact-website",children:"Leave this field empty"}),e.jsx("input",{id:"contact-website",name:"website",type:"text",tabIndex:-1,autoComplete:"off"})]}),d&&e.jsx("p",{className:"text-red-400 text-sm",role:"alert",children:d}),e.jsx("button",{type:"submit",className:"btn-gold w-full py-3",children:"Send Message"}),e.jsxs("p",{className:"text-muted-foreground text-xs",children:["We use what you send only to answer your inquiry and keep it for 3 years after our last exchange. It is never sold or shared for marketing. See the"," ",e.jsx(n,{to:"/privacy",className:"text-cyan-300 hover:underline",children:"Privacy Policy"})," (",e.jsx(n,{to:"/fr/privacy",className:"text-cyan-300 hover:underline",children:"français"}),") for your rights under Québec law."]})]})})})]}),e.jsxs("div",{className:"max-w-4xl mx-auto mt-16",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2 text-center",children:"Book a 30-minute call"}),e.jsx("p",{className:"text-secondary text-sm mb-6 text-center",children:"Decoder audit, licensing questions, or an integration walkthrough, booked directly with Guillaume Lessard."}),e.jsx(f,{url:y})]})]})})]})}export{S as default}; diff --git a/assets/Contact-ZN3l_2_v.js b/assets/Contact-ZN3l_2_v.js deleted file mode 100644 index 6a1f958f..00000000 --- a/assets/Contact-ZN3l_2_v.js +++ /dev/null @@ -1,2 +0,0 @@ -import{r as a,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,J as g,b}from"./index-BcbVjARk.js";import{C as y}from"./CalendlyWidget-BuhQfp2_.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{L as j}from"./vendor-PiU4YGcH.js";import{Z as v}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";n.registerPlugin(f);function T(){const o=a.useRef([]),[i,d]=a.useState(!1),[l,m]=a.useState("");a.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{o.current.filter(Boolean).forEach(r=>{n.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const c=(s,r)=>{s&&(o.current[r]=s)},x=async s=>{s.preventDefault(),m("");const r=s.currentTarget,t=new FormData(r);{const u=`QECTOR inquiry from ${t.get("name")||"anonymous"}`,h=[`Name: ${t.get("name")||""}`,`Email: ${t.get("email")||""}`,`Organization: ${t.get("organization")||""}`,`Referral: ${t.get("referral")||""}`,`Timeline: ${t.get("timeline")||""}`,"",String(t.get("message")||"")].join(` -`);window.location.href=`mailto:admin@qector.store?${new URLSearchParams({subject:u,body:h})}`,d("draft")}};return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"Contact · QECTOR",description:"Contact QECTOR · commercial inquiries, technical support questions, and evaluation requests."}),e.jsx(g,{data:{"@context":"https://schema.org","@type":"ContactPage",name:"Contact QECTOR",description:"Commercial inquiries, technical support, and evaluation requests for QECTOR.",url:"https://qector.store/contact",mainEntity:{"@type":"Organization",name:"QECTOR",url:"https://qector.store",email:"mailto:admin@qector.store",sameAs:["https://github.com/GuillaumeLessard/qector-decoder","https://pypi.org/project/qector-decoder-v3/","https://github.com/GuillaumeLessard/qector-decoder"]}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"admin@qector.store - Mon-Fri EST/EDT"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"Contact Us"}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Commercial evaluation requests, technical inquiries, partnership discussions, and support - all handled directly by Guillaume Lessard / iD01t Productions."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-5 gap-8",children:[e.jsxs("div",{ref:s=>c(s,0),className:"lg:col-span-2 space-y-4",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Office"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR is developed by iD01t Productions.",e.jsx("br",{}),"Primary contact: Guillaume Lessard.",e.jsx("br",{}),"Email: ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Working Hours"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Monday - Friday: 09:00-17:00 EST/EDT",e.jsx("br",{}),"Saturday - Sunday: Closed"]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-primary font-semibold mb-2",children:"Links"}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(j,{to:"/guillaume-lessard",className:"text-cyan-300 text-sm hover:underline",children:"About Guillaume Lessard"}),e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["ORCID",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://www.linkedin.com/in/qector/",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["LinkedIn",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm hover:underline",children:["QEC Book",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]})]})]}),e.jsx("div",{className:"p-4 bg-green-400/5 border border-green-400/20 rounded-xl",children:e.jsxs("p",{className:"text-green-400 text-sm font-semibold flex items-center gap-2",children:[e.jsx(v,{size:14,className:"shrink-0","aria-hidden":"true"})," Response time: 1 business day for commercial inquiries."]})})]}),e.jsx("div",{ref:s=>c(s,1),className:"lg:col-span-3",children:e.jsx("div",{className:"card-surface",children:i?e.jsxs("div",{className:"text-center py-12",role:"status","aria-live":"polite",children:[e.jsx("div",{className:"w-16 h-16 rounded-full bg-green-400/10 border border-green-400/20 flex items-center justify-center mx-auto mb-4",children:e.jsx("span",{className:"text-green-400 text-2xl","aria-hidden":"true",children:"✓"})}),e.jsx("h2",{className:"text-primary font-bold text-xl mb-2",children:i==="sent"?"Message Sent":"Email Draft Opened"}),e.jsx("p",{className:"text-secondary",children:i==="sent"?"We will get back to you within one business day.":"Your email client should contain the completed inquiry. If it did not open, email admin@qector.store directly."})]}):e.jsxs("form",{onSubmit:x,method:"POST",className:"space-y-5",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-name",className:"block text-secondary text-sm mb-2",children:["Full Name ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-name",name:"name",type:"text",required:!0,autoComplete:"name",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Your name"})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-email",className:"block text-secondary text-sm mb-2",children:["Email Address ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("input",{id:"contact-email",name:"email",type:"email",required:!0,autoComplete:"email",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"you@company.com"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-org",className:"block text-secondary text-sm mb-2",children:"Organization / Affiliation"}),e.jsx("input",{id:"contact-org",name:"organization",type:"text",autoComplete:"organization",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",placeholder:"Company or Institution"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5",children:[e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-referral",className:"block text-secondary text-sm mb-2",children:"Referral Source"}),e.jsxs("select",{id:"contact-referral",name:"referral",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"Web search"}),e.jsx("option",{children:"Social media"}),e.jsx("option",{children:"Conference / event"}),e.jsx("option",{children:"Publication / DOI"}),e.jsx("option",{children:"Recommendation"}),e.jsx("option",{children:"Other"})]})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"contact-timeline",className:"block text-secondary text-sm mb-2",children:"Evaluation Timeline"}),e.jsxs("select",{id:"contact-timeline",name:"timeline",className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors",children:[e.jsx("option",{value:"",children:"- Select -"}),e.jsx("option",{children:"0-30 days"}),e.jsx("option",{children:"30-90 days"}),e.jsx("option",{children:"90+ days"}),e.jsx("option",{children:"Undecided"})]})]})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"contact-message",className:"block text-secondary text-sm mb-2",children:["Message ",e.jsx("span",{className:"text-cyan-300",children:"*"})]}),e.jsx("textarea",{id:"contact-message",name:"message",required:!0,rows:6,className:"w-full px-4 py-3 bg-void border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors resize-y",placeholder:"Tell us about your interest in QECTOR and evaluation needs..."})]}),l&&e.jsx("p",{className:"text-red-400 text-sm",role:"alert",children:l}),e.jsx("button",{type:"submit",className:"btn-gold w-full py-3",children:"Send Message"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"By submitting this form, you agree to the processing of your contact data to respond to your inquiry. We do not share submission contents with third parties."})]})})})]}),e.jsxs("div",{className:"max-w-4xl mx-auto mt-16",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2 text-center",children:"Book a 30-minute call"}),e.jsx("p",{className:"text-secondary text-sm mb-6 text-center",children:"Decoder audit, licensing questions, or an integration walkthrough, booked directly with Guillaume Lessard."}),e.jsx(y,{url:b})]})]})})]})}export{T as default}; diff --git a/assets/Decoder-4z-vTL16.js b/assets/Decoder-4z-vTL16.js deleted file mode 100644 index 6f4e6e14..00000000 --- a/assets/Decoder-4z-vTL16.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e,r as d}from"./vendor-react-BiHfrq0e.js";import{u as g,S as x,J as b,a as f,A as l,E as y}from"./index-BcbVjARk.js";import{N as v}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as j}from"./vendor-gsap-a3sj5zmn.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";function w({label:s,value:o,desc:t,icon:r,variant:a="default",centered:m=!1,className:n=""}){const p=a==="compact",h=a==="gold"?"text-gold-400":"text-green-400",u=m?"text-center":"";return o?e.jsxs("div",{className:`card-surface ${u} ${n}`,children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-1",children:s}),e.jsx("div",{className:"text-primary font-bold text-2xl mb-2",children:o}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:t})]}):e.jsxs("div",{className:`${p?"p-4":"p-5"} bg-void border border-gridline rounded-xl transition-colors duration-300 hover:border-cyan-300/30 ${n}`,children:[e.jsxs("div",{className:`${h} font-bold text-sm mb-2 flex items-center gap-2`,children:[r&&e.jsx("span",{"aria-hidden":"true",children:r}),e.jsx("span",{children:s})]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t})]})}c.registerPlugin(j);function R(){const s=d.useRef([]),{version:o}=g();d.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=c.context(()=>{s.current.filter(Boolean).forEach(a=>{c.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const t=(r,a)=>{r&&(s.current[a]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"QECTOR Decoder v3 · QEC Decoding for Python",description:"QECTOR Decoder v3 - 17 decoder configurations in a single Python library. v1.0.0 first stable release with API stability tiers, Relay-BP, CS-OSD, Sinter/qiskit entry points. A reproducible benchmark harness (qector bench) ships with the package for measuring on your own hardware."}),e.jsx(b,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Decoder v3",description:"Poly-algorithmic quantum error correction decoder for Python with exact MWPM and Belief-Matching capabilities.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",programmingLanguage:"Python",url:"https://qector.store/decoder",downloadUrl:"https://pypi.org/project/qector-decoder-v3/",softwareVersion:o,offers:{"@type":"Offer",price:"0",priceCurrency:"USD",availability:"https://schema.org/InStock"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"v",o," (Source-Available) · Free Workbench GUI (CustomTkinter + MCP tools)"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(v,{text:"QECTOR Decoder v3",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["Rust-core Python library implementing 17 decoder configurations from exact MWPM to GPU batch. v1.0.0 is the first stable release: API stability tiers, Relay-BP and CS-OSD, Sinter/qiskit entry points, and the qector CLI. A reproducible benchmark harness (qector bench) ships with the package so you can measure on your own hardware. Stim-native. PyPI binary wheels. All artifacts published on"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"GitHub"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/workbench",className:"btn-outline",children:"Free Workbench GUI"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsx("div",{ref:r=>t(r,0),className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",children:[{label:"Decoder Configs",value:"17",desc:"From exact MWPM to GPU batch, across documented stability tiers"},{label:"Binary Wheels",value:"15",desc:"Python 3.9-3.13 on Windows amd64, Linux x86_64, macOS arm64"},{label:"Stable API",value:"v1.0.0",desc:"First stable release with documented API stability tiers"},{label:"CI Test Suite",value:"Automated",desc:"Continuous validation and Stim comparison test suite on GitHub"}].map(r=>e.jsx(w,{label:r.label,value:r.value,desc:r.desc,centered:!0},r.label))}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsx(f,{align:"left",maxWidth:"max-w-none",heading:"Decoding Algorithms",description:"Stable decoders with validation artifacts on GitHub. Experimental decoders are research-stage. v1.0.0 freezes the public API under documented stability tiers. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",className:"mb-6"}),e.jsx("h3",{className:"text-xs font-semibold text-cyan-300 uppercase tracking-widest mb-3",children:"Stable Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-6",children:[{name:"Union-Find",tag:"Near-Linear",color:"green",desc:"Near-linear time approximate decoder. High-throughput option for graph-like codes: trades some LER accuracy for speed."},{name:"Fast Union-Find",tag:"Hot Path",color:"green",desc:"Optimized Union-Find hot path for low-latency offline simulation pipelines."},{name:"Blossom MWPM",tag:"Exact Reference",color:"gold",desc:"Exact minimum-weight perfect matching for graph-like codes. The reference decoder for surface codes."},{name:"CPU & GPU Batch Decoder",tag:"Parallel",color:"gold",desc:'Native CUDA / OpenCL batch decoding for supported workloads. Throughput depends on hardware and batch size; CUDA accepts edge_weights and precision="f64" in v1.0.0.'}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:r.color},desc:r.desc},r.name))}),e.jsx("h3",{className:"text-xs font-semibold text-gold-400 uppercase tracking-widest mb-3",children:"Experimental & Research Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"BP-OSD",tag:"qLDPC Research",color:"purple",desc:"Belief propagation + ordered statistics decoding. v1.0.0 adds Relay-BP schedules, CS-OSD(lambda, w) and LLR damping."},{name:"Belief-Matching",tag:"Correlated Noise",color:"cyan",desc:"BP pre-processing + reweighted exact MWPM. Research path for correlated noise scenarios."},{name:"Sparse Blossom",tag:"Near-Optimal",color:"gold",desc:"Region-growing blossom variant for detector graphs. Zero-allocation hot path in v1.0.0."},{name:"Hybrid & AutoDecoder",tag:"Adaptive Routing",color:"cyan",desc:"AutoDecoder and HybridDecoder route between Union-Find and Blossom based on code properties."},{name:"Lookup-Table Decoder",tag:"Small Codes",color:"gold",desc:"Precomputed correction table for small codes or syndrome subspaces."},{name:"Colour Code / Two-Stage / Ambiguity-Cluster",tag:"Research",color:"purple",desc:"New v1.0.0 families: ColourCodeDecoder (opt-in cluster_bposd), TwoStageDecoder, AmbiguityClusterDecoder."}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:"gold"},desc:r.desc,muted:!0},r.name))})]}),e.jsxs("div",{ref:r=>t(r,2),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Technical Specifications"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[["Languages","Rust core (PyO3) / Python 3.9-3.13 API"],["Platforms","Linux x86_64, macOS arm64, Windows amd64"],["GPU","CUDA / OpenCL batch paths (supported configurations per package docs)"],["QEC Library","Stim (quantum-circuit noise simulation)"],["Packaging","PyPI binary wheels (manylinux, macOS, Windows)"],["License","PolyForm Noncommercial 1.0.0 (community) / Commercial"],["Validation","GitHub: github.com/GuillaumeLessard/qector-decoder"]].map(([r,a])=>e.jsxs("div",{className:"flex gap-3",children:[e.jsx("span",{className:"text-muted-foreground text-sm min-w-[140px] shrink-0",children:r}),e.jsx("span",{className:"text-secondary text-sm min-w-0 break-words",children:a})]},r))})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx(y,{title:"Validation Status",statement:"v1.0.0 (2026-08-06) is the first stable release. Decode runs are syndrome-validated (H·c = s) through the self-debugging harness, and artifact manifests are SHA-256 sealed on GitHub. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",href:"https://github.com/GuillaumeLessard/qector-decoder",linkLabel:"GitHub Artifacts and Harness →"}),e.jsx("div",{className:"flex flex-wrap gap-4 mt-3 px-1",children:e.jsx(i,{to:"/evidence",className:"text-cyan-300 text-sm hover:underline",children:"Evidence and Reports →"})})]}),e.jsx("div",{ref:r=>t(r,4),className:"text-center py-8",children:e.jsxs("div",{className:"inline-flex flex-wrap gap-4 justify-center",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/commercial",className:"btn-gold",children:"Start Commercial Evaluation"})]})})]})})]})}export{R as default}; diff --git a/assets/Decoder-8BkZ7FyC.js b/assets/Decoder-8BkZ7FyC.js deleted file mode 100644 index 9da05728..00000000 --- a/assets/Decoder-8BkZ7FyC.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e,r as d}from"./vendor-react-BiHfrq0e.js";import{u as g,S as x,J as b,a as f,A as l,E as y}from"./index-abfjMTlQ.js";import{N as v}from"./NeuralReveal-D-EQoOl2.js";import{g as n,S as w}from"./vendor-gsap-a3sj5zmn.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";function j({label:s,value:o,desc:t,icon:r,variant:a="default",centered:m=!1,className:c=""}){const p=a==="compact",h=a==="gold"?"text-gold-400":"text-green-400",u=m?"text-center":"";return o?e.jsxs("div",{className:`card-surface ${u} ${c}`,children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-1",children:s}),e.jsx("div",{className:"text-primary font-bold text-2xl mb-2",children:o}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:t})]}):e.jsxs("div",{className:`${p?"p-4":"p-5"} bg-void border border-gridline rounded-xl transition-colors duration-300 hover:border-cyan-300/30 ${c}`,children:[e.jsxs("div",{className:`${h} font-bold text-sm mb-2 flex items-center gap-2`,children:[r&&e.jsx("span",{"aria-hidden":"true",children:r}),e.jsx("span",{children:s})]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t})]})}n.registerPlugin(w);function R(){const s=d.useRef([]),{version:o}=g();d.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=n.context(()=>{s.current.filter(Boolean).forEach(a=>{n.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const t=(r,a)=>{r&&(s.current[a]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"QECTOR Decoder v3 · QEC Decoding for Python",description:"QECTOR Decoder v3 - 17 decoder configurations in a single Python library. v1.0.1 current stable release (18 wheels, Python 3.9-3.14) with API stability tiers, Relay-BP, CS-OSD, Sinter/qiskit entry points. A reproducible benchmark harness (qector bench) ships with the package for measuring on your own hardware."}),e.jsx(b,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Decoder v3",description:"Poly-algorithmic quantum error correction decoder for Python with exact MWPM and Belief-Matching capabilities.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",programmingLanguage:"Python",url:"https://qector.store/decoder",downloadUrl:"https://pypi.org/project/qector-decoder-v3/",softwareVersion:o,offers:{"@type":"Offer",price:"0",priceCurrency:"USD",availability:"https://schema.org/InStock"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"v",o," (Source-Available) · Free Workbench GUI (CustomTkinter + MCP tools)"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(v,{text:"QECTOR Decoder v3",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["Rust-core Python library implementing 17 decoder configurations from exact MWPM to GPU batch. v1.0.1 is the current stable release: API stability tiers, Relay-BP and CS-OSD, Sinter/qiskit entry points, and the qector CLI, with build provenance for every wheel. A reproducible benchmark harness (qector bench) ships with the package so you can measure on your own hardware. Stim-native. PyPI binary wheels. All artifacts published on"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"GitHub"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/workbench",className:"btn-outline",children:"Free Workbench GUI"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsx("div",{ref:r=>t(r,0),className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",children:[{label:"Decoder Configs",value:"17",desc:"From exact MWPM to GPU batch, across documented stability tiers"},{label:"Binary Wheels",value:"18",desc:"Python 3.9-3.14 on Windows amd64, Linux x86_64, macOS arm64"},{label:"Stable API",value:"v1.0.1",desc:"Stable release with documented API stability tiers"},{label:"CI Test Suite",value:"Automated",desc:"Continuous validation and Stim comparison test suite on GitHub"}].map(r=>e.jsx(j,{label:r.label,value:r.value,desc:r.desc,centered:!0},r.label))}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsx(f,{align:"left",maxWidth:"max-w-none",heading:"Decoding Algorithms",description:"Stable decoders with validation artifacts on GitHub. Experimental decoders are research-stage. Since v1.0.0 the public API is frozen under documented stability tiers. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",className:"mb-6"}),e.jsx("h3",{className:"text-xs font-semibold text-cyan-300 uppercase tracking-widest mb-3",children:"Stable Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-6",children:[{name:"Union-Find",tag:"Near-Linear",color:"green",desc:"Near-linear time approximate decoder. High-throughput option for graph-like codes: trades some LER accuracy for speed."},{name:"Fast Union-Find",tag:"Hot Path",color:"green",desc:"Optimized Union-Find hot path for low-latency offline simulation pipelines."},{name:"Blossom MWPM",tag:"Exact Reference",color:"gold",desc:"Exact minimum-weight perfect matching for graph-like codes. The reference decoder for surface codes."},{name:"CPU & GPU Batch Decoder",tag:"Parallel",color:"gold",desc:'Native CUDA / OpenCL batch decoding for supported workloads. Throughput depends on hardware and batch size; CUDA accepts edge_weights and precision="f64" in v1.0.0.'}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:r.color},desc:r.desc},r.name))}),e.jsx("h3",{className:"text-xs font-semibold text-gold-400 uppercase tracking-widest mb-3",children:"Experimental & Research Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"BP-OSD",tag:"qLDPC Research",color:"purple",desc:"Belief propagation + ordered statistics decoding. v1.0.0 adds Relay-BP schedules, CS-OSD(lambda, w) and LLR damping."},{name:"Belief-Matching",tag:"Correlated Noise",color:"cyan",desc:"BP pre-processing + reweighted exact MWPM. Research path for correlated noise scenarios."},{name:"Sparse Blossom",tag:"Near-Optimal",color:"gold",desc:"Region-growing blossom variant for detector graphs. Zero-allocation hot path in v1.0.0."},{name:"Hybrid & AutoDecoder",tag:"Adaptive Routing",color:"cyan",desc:"AutoDecoder and HybridDecoder route between Union-Find and Blossom based on code properties."},{name:"Lookup-Table Decoder",tag:"Small Codes",color:"gold",desc:"Precomputed correction table for small codes or syndrome subspaces."},{name:"Colour Code / Two-Stage / Ambiguity-Cluster",tag:"Research",color:"purple",desc:"New v1.0.0 families: ColourCodeDecoder (opt-in cluster_bposd), TwoStageDecoder, AmbiguityClusterDecoder."}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:"gold"},desc:r.desc,muted:!0},r.name))})]}),e.jsxs("div",{ref:r=>t(r,2),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Technical Specifications"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[["Languages","Rust core (PyO3) / Python 3.9-3.14 API"],["Platforms","Linux x86_64, macOS arm64, Windows amd64"],["GPU","CUDA / OpenCL batch paths (supported configurations per package docs)"],["QEC Library","Stim (quantum-circuit noise simulation)"],["Packaging","PyPI binary wheels (manylinux, macOS, Windows)"],["License","PolyForm Noncommercial 1.0.0 (community) / Commercial"],["Validation","GitHub: github.com/GuillaumeLessard/qector-decoder"]].map(([r,a])=>e.jsxs("div",{className:"flex gap-3",children:[e.jsx("span",{className:"text-muted-foreground text-sm min-w-[140px] shrink-0",children:r}),e.jsx("span",{className:"text-secondary text-sm min-w-0 break-words",children:a})]},r))})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx(y,{title:"Validation Status",statement:"v1.0.0 (2026-08-06) was the first stable release; v1.0.1 (2026-11-06) is current. Decode runs are syndrome-validated (H·c = s) through the self-debugging harness, and artifact manifests are SHA-256 sealed on GitHub. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",href:"https://github.com/GuillaumeLessard/qector-decoder",linkLabel:"GitHub Artifacts and Harness →"}),e.jsx("div",{className:"flex flex-wrap gap-4 mt-3 px-1",children:e.jsx(i,{to:"/evidence",className:"text-cyan-300 text-sm hover:underline",children:"Evidence and Reports →"})})]}),e.jsx("div",{ref:r=>t(r,4),className:"text-center py-8",children:e.jsxs("div",{className:"inline-flex flex-wrap gap-4 justify-center",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/commercial",className:"btn-gold",children:"Start Commercial Evaluation"})]})})]})})]})}export{R as default}; diff --git a/assets/Decoder-B0aQK11-.js b/assets/Decoder-B0aQK11-.js deleted file mode 100644 index 2b95a75c..00000000 --- a/assets/Decoder-B0aQK11-.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e,r as d}from"./vendor-react-BiHfrq0e.js";import{u as g,S as x,J as b,a as f,A as l,E as y}from"./index-Bh9DBCb3.js";import{N as v}from"./NeuralReveal-D-EQoOl2.js";import{g as n,S as w}from"./vendor-gsap-a3sj5zmn.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";function j({label:s,value:o,desc:t,icon:r,variant:a="default",centered:m=!1,className:c=""}){const p=a==="compact",h=a==="gold"?"text-gold-400":"text-green-400",u=m?"text-center":"";return o?e.jsxs("div",{className:`card-surface ${u} ${c}`,children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-1",children:s}),e.jsx("div",{className:"text-primary font-bold text-2xl mb-2",children:o}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:t})]}):e.jsxs("div",{className:`${p?"p-4":"p-5"} bg-void border border-gridline rounded-xl transition-colors duration-300 hover:border-cyan-300/30 ${c}`,children:[e.jsxs("div",{className:`${h} font-bold text-sm mb-2 flex items-center gap-2`,children:[r&&e.jsx("span",{"aria-hidden":"true",children:r}),e.jsx("span",{children:s})]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t})]})}n.registerPlugin(w);function R(){const s=d.useRef([]),{version:o}=g();d.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=n.context(()=>{s.current.filter(Boolean).forEach(a=>{n.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const t=(r,a)=>{r&&(s.current[a]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"QECTOR Decoder v3 · QEC Decoding for Python",description:"QECTOR Decoder v3 - 17 decoder configurations in a single Python library. v1.0.1 current stable release (18 wheels, Python 3.9-3.14) with API stability tiers, Relay-BP, CS-OSD, Sinter/qiskit entry points. A reproducible benchmark harness (qector bench) ships with the package for measuring on your own hardware."}),e.jsx(b,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Decoder v3",description:"Poly-algorithmic quantum error correction decoder for Python with exact MWPM and Belief-Matching capabilities.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",programmingLanguage:"Python",url:"https://qector.store/decoder",downloadUrl:"https://pypi.org/project/qector-decoder-v3/",softwareVersion:o,offers:{"@type":"Offer",price:"0",priceCurrency:"USD",availability:"https://schema.org/InStock"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"v",o," (Source-Available) · Free Workbench GUI (CustomTkinter + MCP tools)"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(v,{text:"QECTOR Decoder v3",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["Rust-core Python library implementing 17 decoder configurations from exact MWPM to GPU batch. v1.0.1 is the current stable release: API stability tiers, Relay-BP and CS-OSD, Sinter/qiskit entry points, and the qector CLI, with build provenance for every wheel. A reproducible benchmark harness (qector bench) ships with the package so you can measure on your own hardware. Stim-native. PyPI binary wheels. All artifacts published on"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"GitHub"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/workbench",className:"btn-outline",children:"Free Workbench GUI"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsx("div",{ref:r=>t(r,0),className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",children:[{label:"Decoder Configs",value:"17",desc:"From exact MWPM to GPU batch, across documented stability tiers"},{label:"Binary Wheels",value:"18",desc:"Python 3.9-3.14 on Windows amd64, Linux x86_64, macOS arm64"},{label:"Stable API",value:"v1.0.1",desc:"Stable release with documented API stability tiers"},{label:"CI Test Suite",value:"Automated",desc:"Continuous validation and Stim comparison test suite on GitHub"}].map(r=>e.jsx(j,{label:r.label,value:r.value,desc:r.desc,centered:!0},r.label))}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsx(f,{align:"left",maxWidth:"max-w-none",heading:"Decoding Algorithms",description:"Stable decoders with validation artifacts on GitHub. Experimental decoders are research-stage. Since v1.0.0 the public API is frozen under documented stability tiers. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",className:"mb-6"}),e.jsx("h3",{className:"text-xs font-semibold text-cyan-300 uppercase tracking-widest mb-3",children:"Stable Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-6",children:[{name:"Union-Find",tag:"Near-Linear",color:"green",desc:"Near-linear time approximate decoder. High-throughput option for graph-like codes: trades some LER accuracy for speed."},{name:"Fast Union-Find",tag:"Hot Path",color:"green",desc:"Optimized Union-Find hot path for low-latency offline simulation pipelines."},{name:"Blossom MWPM",tag:"Exact Reference",color:"gold",desc:"Exact minimum-weight perfect matching for graph-like codes. The reference decoder for surface codes."},{name:"CPU & GPU Batch Decoder",tag:"Parallel",color:"gold",desc:'Native CUDA / OpenCL batch decoding for supported workloads. Throughput depends on hardware and batch size; CUDA accepts edge_weights and precision="f64" in v1.0.0.'}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:r.color},desc:r.desc},r.name))}),e.jsx("h3",{className:"text-xs font-semibold text-gold-400 uppercase tracking-widest mb-3",children:"Experimental & Research Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"BP-OSD",tag:"qLDPC Research",color:"purple",desc:"Belief propagation + ordered statistics decoding. v1.0.0 adds Relay-BP schedules, CS-OSD(lambda, w) and LLR damping."},{name:"Belief-Matching",tag:"Correlated Noise",color:"cyan",desc:"BP pre-processing + reweighted exact MWPM. Research path for correlated noise scenarios."},{name:"Sparse Blossom",tag:"Near-Optimal",color:"gold",desc:"Region-growing blossom variant for detector graphs. Zero-allocation hot path in v1.0.0."},{name:"Hybrid & AutoDecoder",tag:"Adaptive Routing",color:"cyan",desc:"AutoDecoder and HybridDecoder route between Union-Find and Blossom based on code properties."},{name:"Lookup-Table Decoder",tag:"Small Codes",color:"gold",desc:"Precomputed correction table for small codes or syndrome subspaces."},{name:"Colour Code / Two-Stage / Ambiguity-Cluster",tag:"Research",color:"purple",desc:"New v1.0.0 families: ColourCodeDecoder (opt-in cluster_bposd), TwoStageDecoder, AmbiguityClusterDecoder."}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:"gold"},desc:r.desc,muted:!0},r.name))})]}),e.jsxs("div",{ref:r=>t(r,2),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Technical Specifications"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[["Languages","Rust core (PyO3) / Python 3.9-3.14 API"],["Platforms","Linux x86_64, macOS arm64, Windows amd64"],["GPU","CUDA / OpenCL batch paths (supported configurations per package docs)"],["QEC Library","Stim (quantum-circuit noise simulation)"],["Packaging","PyPI binary wheels (manylinux, macOS, Windows)"],["License","PolyForm Noncommercial 1.0.0 (community) / Commercial"],["Validation","GitHub: github.com/GuillaumeLessard/qector-decoder"]].map(([r,a])=>e.jsxs("div",{className:"flex gap-3",children:[e.jsx("span",{className:"text-muted-foreground text-sm min-w-[140px] shrink-0",children:r}),e.jsx("span",{className:"text-secondary text-sm min-w-0 break-words",children:a})]},r))})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx(y,{title:"Validation Status",statement:"v1.0.0 (2026-08-06) was the first stable release; v1.0.1 (2026-11-06) is current. Decode runs are syndrome-validated (H·c = s) through the self-debugging harness, and artifact manifests are SHA-256 sealed on GitHub. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",href:"https://github.com/GuillaumeLessard/qector-decoder",linkLabel:"GitHub Artifacts and Harness →"}),e.jsx("div",{className:"flex flex-wrap gap-4 mt-3 px-1",children:e.jsx(i,{to:"/evidence",className:"text-cyan-300 text-sm hover:underline",children:"Evidence and Reports →"})})]}),e.jsx("div",{ref:r=>t(r,4),className:"text-center py-8",children:e.jsxs("div",{className:"inline-flex flex-wrap gap-4 justify-center",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/commercial",className:"btn-gold",children:"Start Commercial Evaluation"})]})})]})})]})}export{R as default}; diff --git a/assets/Decoder-BP_OA76u.js b/assets/Decoder-BP_OA76u.js deleted file mode 100644 index aed7627b..00000000 --- a/assets/Decoder-BP_OA76u.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e,r as d}from"./vendor-react-BiHfrq0e.js";import{u as g,S as x,J as b,L as i,a as f,A as l,E as y}from"./index-PdoH5kLF.js";import{N as v}from"./NeuralReveal-Bsl9IGCr.js";import{g as n,S as w}from"./vendor-gsap-a3sj5zmn.js";import"./vendor-ui-B8TlNU4J.js";function j({label:s,value:o,desc:t,icon:r,variant:a="default",centered:m=!1,className:c=""}){const p=a==="compact",h=a==="gold"?"text-gold-400":"text-green-400",u=m?"text-center":"";return o?e.jsxs("div",{className:`card-surface ${u} ${c}`,children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-1",children:s}),e.jsx("div",{className:"text-primary font-bold text-2xl mb-2",children:o}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:t})]}):e.jsxs("div",{className:`${p?"p-4":"p-5"} bg-void border border-gridline rounded-xl transition-colors duration-300 hover:border-cyan-300/30 ${c}`,children:[e.jsxs("div",{className:`${h} font-bold text-sm mb-2 flex items-center gap-2`,children:[r&&e.jsx("span",{"aria-hidden":"true",children:r}),e.jsx("span",{children:s})]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t})]})}n.registerPlugin(w);function D(){const s=d.useRef([]),{version:o}=g();d.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=n.context(()=>{s.current.filter(Boolean).forEach(a=>{n.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const t=(r,a)=>{r&&(s.current[a]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"QECTOR Decoder v3 · QEC Decoding for Python",description:"QECTOR Decoder v3 - 17 decoder configurations in a single Python library. v1.0.1 current stable release (18 wheels, Python 3.9-3.14) with API stability tiers, Relay-BP, CS-OSD, Sinter/qiskit entry points. A reproducible benchmark harness (qector bench) ships with the package for measuring on your own hardware."}),e.jsx(b,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Decoder v3",description:"Poly-algorithmic quantum error correction decoder for Python with exact MWPM and Belief-Matching capabilities.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",programmingLanguage:"Python",url:"https://qector.store/decoder",downloadUrl:"https://pypi.org/project/qector-decoder-v3/",softwareVersion:o,offers:{"@type":"Offer",price:"0",priceCurrency:"USD",availability:"https://schema.org/InStock"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"v",o," (Source-Available) · Free Workbench GUI (CustomTkinter + MCP tools)"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(v,{text:"QECTOR Decoder v3",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["Rust-core Python library implementing 17 decoder configurations from exact MWPM to GPU batch. v1.0.1 is the current stable release: API stability tiers, Relay-BP and CS-OSD, Sinter/qiskit entry points, and the qector CLI, with build provenance for every wheel. A reproducible benchmark harness (qector bench) ships with the package so you can measure on your own hardware. Stim-native. PyPI binary wheels. All artifacts published on"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"GitHub"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/workbench",className:"btn-outline",children:"Free Workbench GUI"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsx("div",{ref:r=>t(r,0),className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",children:[{label:"Decoder Configs",value:"17",desc:"From exact MWPM to GPU batch, across documented stability tiers"},{label:"Binary Wheels",value:"18",desc:"Python 3.9-3.14 on Windows amd64, Linux x86_64, macOS arm64"},{label:"Stable API",value:"v1.0.1",desc:"Stable release with documented API stability tiers"},{label:"CI Test Suite",value:"Automated",desc:"Continuous validation and Stim comparison test suite on GitHub"}].map(r=>e.jsx(j,{label:r.label,value:r.value,desc:r.desc,centered:!0},r.label))}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsx(f,{align:"left",maxWidth:"max-w-none",heading:"Decoding Algorithms",description:"Stable decoders with validation artifacts on GitHub. Experimental decoders are research-stage. Since v1.0.0 the public API is frozen under documented stability tiers. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",className:"mb-6"}),e.jsx("h3",{className:"text-xs font-semibold text-cyan-300 uppercase tracking-widest mb-3",children:"Stable Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-6",children:[{name:"Union-Find",tag:"Near-Linear",color:"green",desc:"Near-linear time approximate decoder. High-throughput option for graph-like codes: trades some LER accuracy for speed."},{name:"Fast Union-Find",tag:"Hot Path",color:"green",desc:"Optimized Union-Find hot path for low-latency offline simulation pipelines."},{name:"Blossom MWPM",tag:"Exact Reference",color:"gold",desc:"Exact minimum-weight perfect matching for graph-like codes. The reference decoder for surface codes."},{name:"CPU & GPU Batch Decoder",tag:"Parallel",color:"gold",desc:'Native CUDA / OpenCL batch decoding for supported workloads. Throughput depends on hardware and batch size; CUDA accepts edge_weights and precision="f64" in v1.0.0.'}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:r.color},desc:r.desc},r.name))}),e.jsx("h3",{className:"text-xs font-semibold text-gold-400 uppercase tracking-widest mb-3",children:"Experimental & Research Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"BP-OSD",tag:"qLDPC Research",color:"purple",desc:"Belief propagation + ordered statistics decoding. v1.0.0 adds Relay-BP schedules, CS-OSD(lambda, w) and LLR damping."},{name:"Belief-Matching",tag:"Correlated Noise",color:"cyan",desc:"BP pre-processing + reweighted exact MWPM. Research path for correlated noise scenarios."},{name:"Sparse Blossom",tag:"Near-Optimal",color:"gold",desc:"Region-growing blossom variant for detector graphs. Zero-allocation hot path in v1.0.0."},{name:"Hybrid & AutoDecoder",tag:"Adaptive Routing",color:"cyan",desc:"AutoDecoder and HybridDecoder route between Union-Find and Blossom based on code properties."},{name:"Lookup-Table Decoder",tag:"Small Codes",color:"gold",desc:"Precomputed correction table for small codes or syndrome subspaces."},{name:"Colour Code / Two-Stage / Ambiguity-Cluster",tag:"Research",color:"purple",desc:"New v1.0.0 families: ColourCodeDecoder (opt-in cluster_bposd), TwoStageDecoder, AmbiguityClusterDecoder."}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:"gold"},desc:r.desc,muted:!0},r.name))})]}),e.jsxs("div",{ref:r=>t(r,2),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Technical Specifications"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[["Languages","Rust core (PyO3) / Python 3.9-3.14 API"],["Platforms","Linux x86_64, macOS arm64, Windows amd64"],["GPU","CUDA / OpenCL batch paths (supported configurations per package docs)"],["QEC Library","Stim (quantum-circuit noise simulation)"],["Packaging","PyPI binary wheels (manylinux, macOS, Windows)"],["License","PolyForm Noncommercial 1.0.0 (community) / Commercial"],["Validation","GitHub: github.com/GuillaumeLessard/qector-decoder"]].map(([r,a])=>e.jsxs("div",{className:"flex gap-3",children:[e.jsx("span",{className:"text-muted-foreground text-sm min-w-[140px] shrink-0",children:r}),e.jsx("span",{className:"text-secondary text-sm min-w-0 break-words",children:a})]},r))})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx(y,{title:"Validation Status",statement:"v1.0.0 (2026-08-06) was the first stable release; v1.0.1 (2026-11-06) is current. Decode runs are syndrome-validated (H·c = s) through the self-debugging harness, and artifact manifests are SHA-256 sealed on GitHub. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",href:"https://github.com/GuillaumeLessard/qector-decoder",linkLabel:"GitHub Artifacts and Harness →"}),e.jsx("div",{className:"flex flex-wrap gap-4 mt-3 px-1",children:e.jsx(i,{to:"/evidence",className:"text-cyan-300 text-sm hover:underline",children:"Evidence and Reports →"})})]}),e.jsx("div",{ref:r=>t(r,4),className:"text-center py-8",children:e.jsxs("div",{className:"inline-flex flex-wrap gap-4 justify-center",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/commercial",className:"btn-gold",children:"Start Commercial Evaluation"})]})})]})})]})}export{D as default}; diff --git a/assets/Decoder-BsiAkz2C.js b/assets/Decoder-BsiAkz2C.js deleted file mode 100644 index 0cacc238..00000000 --- a/assets/Decoder-BsiAkz2C.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e,r as d}from"./vendor-react-BiHfrq0e.js";import{u as g,S as x,J as b,a as f,A as l,E as y}from"./index-iVST85F-.js";import{N as v}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as j}from"./vendor-gsap-a3sj5zmn.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";function w({label:s,value:o,desc:t,icon:r,variant:a="default",centered:m=!1,className:n=""}){const p=a==="compact",h=a==="gold"?"text-gold-400":"text-green-400",u=m?"text-center":"";return o?e.jsxs("div",{className:`card-surface ${u} ${n}`,children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-1",children:s}),e.jsx("div",{className:"text-primary font-bold text-2xl mb-2",children:o}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:t})]}):e.jsxs("div",{className:`${p?"p-4":"p-5"} bg-void border border-gridline rounded-xl transition-colors duration-300 hover:border-cyan-300/30 ${n}`,children:[e.jsxs("div",{className:`${h} font-bold text-sm mb-2 flex items-center gap-2`,children:[r&&e.jsx("span",{"aria-hidden":"true",children:r}),e.jsx("span",{children:s})]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t})]})}c.registerPlugin(j);function R(){const s=d.useRef([]),{version:o}=g();d.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=c.context(()=>{s.current.filter(Boolean).forEach(a=>{c.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const t=(r,a)=>{r&&(s.current[a]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"QECTOR Decoder v3 · QEC Decoding for Python",description:"QECTOR Decoder v3 - 17 decoder configurations in a single Python library. v1.0.0 first stable release with API stability tiers, Relay-BP, CS-OSD, Sinter/qiskit entry points. A reproducible benchmark harness (qector bench) ships with the package for measuring on your own hardware."}),e.jsx(b,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Decoder v3",description:"Poly-algorithmic quantum error correction decoder for Python with exact MWPM and Belief-Matching capabilities.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",programmingLanguage:"Python",url:"https://qector.store/decoder",downloadUrl:"https://pypi.org/project/qector-decoder-v3/",softwareVersion:o,offers:{"@type":"Offer",price:"0",priceCurrency:"USD",availability:"https://schema.org/InStock"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"v",o," (Source-Available) · Free Workbench GUI (CustomTkinter + MCP tools)"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(v,{text:"QECTOR Decoder v3",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["Rust-core Python library implementing 17 decoder configurations from exact MWPM to GPU batch. v1.0.0 is the first stable release: API stability tiers, Relay-BP and CS-OSD, Sinter/qiskit entry points, and the qector CLI. A reproducible benchmark harness (qector bench) ships with the package so you can measure on your own hardware. Stim-native. PyPI binary wheels. All artifacts published on"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"GitHub"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/workbench",className:"btn-outline",children:"Free Workbench GUI"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsx("div",{ref:r=>t(r,0),className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",children:[{label:"Decoder Configs",value:"17",desc:"From exact MWPM to GPU batch, across documented stability tiers"},{label:"Binary Wheels",value:"15",desc:"Python 3.9-3.13 on Windows amd64, Linux x86_64, macOS arm64"},{label:"Stable API",value:"v1.0.0",desc:"First stable release with documented API stability tiers"},{label:"CI Test Suite",value:"Automated",desc:"Continuous validation and Stim comparison test suite on GitHub"}].map(r=>e.jsx(w,{label:r.label,value:r.value,desc:r.desc,centered:!0},r.label))}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsx(f,{align:"left",maxWidth:"max-w-none",heading:"Decoding Algorithms",description:"Stable decoders with validation artifacts on GitHub. Experimental decoders are research-stage. v1.0.0 freezes the public API under documented stability tiers. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",className:"mb-6"}),e.jsx("h3",{className:"text-xs font-semibold text-cyan-300 uppercase tracking-widest mb-3",children:"Stable Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-6",children:[{name:"Union-Find",tag:"Near-Linear",color:"green",desc:"Near-linear time approximate decoder. High-throughput option for graph-like codes: trades some LER accuracy for speed."},{name:"Fast Union-Find",tag:"Hot Path",color:"green",desc:"Optimized Union-Find hot path for low-latency offline simulation pipelines."},{name:"Blossom MWPM",tag:"Exact Reference",color:"gold",desc:"Exact minimum-weight perfect matching for graph-like codes. The reference decoder for surface codes."},{name:"CPU & GPU Batch Decoder",tag:"Parallel",color:"gold",desc:'Native CUDA / OpenCL batch decoding for supported workloads. Throughput depends on hardware and batch size; CUDA accepts edge_weights and precision="f64" in v1.0.0.'}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:r.color},desc:r.desc},r.name))}),e.jsx("h3",{className:"text-xs font-semibold text-gold-400 uppercase tracking-widest mb-3",children:"Experimental & Research Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"BP-OSD",tag:"qLDPC Research",color:"purple",desc:"Belief propagation + ordered statistics decoding. v1.0.0 adds Relay-BP schedules, CS-OSD(lambda, w) and LLR damping."},{name:"Belief-Matching",tag:"Correlated Noise",color:"cyan",desc:"BP pre-processing + reweighted exact MWPM. Research path for correlated noise scenarios."},{name:"Sparse Blossom",tag:"Near-Optimal",color:"gold",desc:"Region-growing blossom variant for detector graphs. Zero-allocation hot path in v1.0.0."},{name:"Hybrid & AutoDecoder",tag:"Adaptive Routing",color:"cyan",desc:"AutoDecoder and HybridDecoder route between Union-Find and Blossom based on code properties."},{name:"Lookup-Table Decoder",tag:"Small Codes",color:"gold",desc:"Precomputed correction table for small codes or syndrome subspaces."},{name:"Colour Code / Two-Stage / Ambiguity-Cluster",tag:"Research",color:"purple",desc:"New v1.0.0 families: ColourCodeDecoder (opt-in cluster_bposd), TwoStageDecoder, AmbiguityClusterDecoder."}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:"gold"},desc:r.desc,muted:!0},r.name))})]}),e.jsxs("div",{ref:r=>t(r,2),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Technical Specifications"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[["Languages","Rust core (PyO3) / Python 3.9-3.13 API"],["Platforms","Linux x86_64, macOS arm64, Windows amd64"],["GPU","CUDA / OpenCL batch paths (supported configurations per package docs)"],["QEC Library","Stim (quantum-circuit noise simulation)"],["Packaging","PyPI binary wheels (manylinux, macOS, Windows)"],["License","PolyForm Noncommercial 1.0.0 (community) / Commercial"],["Validation","GitHub: github.com/GuillaumeLessard/qector-decoder"]].map(([r,a])=>e.jsxs("div",{className:"flex gap-3",children:[e.jsx("span",{className:"text-muted-foreground text-sm min-w-[140px] shrink-0",children:r}),e.jsx("span",{className:"text-secondary text-sm min-w-0 break-words",children:a})]},r))})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx(y,{title:"Validation Status",statement:"v1.0.0 (2026-08-06) is the first stable release. Decode runs are syndrome-validated (H·c = s) through the self-debugging harness, and artifact manifests are SHA-256 sealed on GitHub. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",href:"https://github.com/GuillaumeLessard/qector-decoder",linkLabel:"GitHub Artifacts and Harness →"}),e.jsx("div",{className:"flex flex-wrap gap-4 mt-3 px-1",children:e.jsx(i,{to:"/evidence",className:"text-cyan-300 text-sm hover:underline",children:"Evidence and Reports →"})})]}),e.jsx("div",{ref:r=>t(r,4),className:"text-center py-8",children:e.jsxs("div",{className:"inline-flex flex-wrap gap-4 justify-center",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/commercial",className:"btn-gold",children:"Start Commercial Evaluation"})]})})]})})]})}export{R as default}; diff --git a/assets/Decoder-CD04ckwI.js b/assets/Decoder-CD04ckwI.js deleted file mode 100644 index a52480f4..00000000 --- a/assets/Decoder-CD04ckwI.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e,r as d}from"./vendor-react-BiHfrq0e.js";import{u as g,S as x,J as b,a as f,A as l,E as y}from"./index-BN-vOeL2.js";import{N as v}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as j}from"./vendor-gsap-a3sj5zmn.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";function w({label:s,value:o,desc:t,icon:r,variant:a="default",centered:m=!1,className:n=""}){const p=a==="compact",h=a==="gold"?"text-gold-400":"text-green-400",u=m?"text-center":"";return o?e.jsxs("div",{className:`card-surface ${u} ${n}`,children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-1",children:s}),e.jsx("div",{className:"text-primary font-bold text-2xl mb-2",children:o}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:t})]}):e.jsxs("div",{className:`${p?"p-4":"p-5"} bg-void border border-gridline rounded-xl transition-colors duration-300 hover:border-cyan-300/30 ${n}`,children:[e.jsxs("div",{className:`${h} font-bold text-sm mb-2 flex items-center gap-2`,children:[r&&e.jsx("span",{"aria-hidden":"true",children:r}),e.jsx("span",{children:s})]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t})]})}c.registerPlugin(j);function R(){const s=d.useRef([]),{version:o}=g();d.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=c.context(()=>{s.current.filter(Boolean).forEach(a=>{c.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const t=(r,a)=>{r&&(s.current[a]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"QECTOR Decoder v3 · QEC Decoding for Python",description:"QECTOR Decoder v3 - 17 decoder configurations in a single Python library. v1.0.0 first stable release with API stability tiers, Relay-BP, CS-OSD, Sinter/qiskit entry points. A reproducible benchmark harness (qector bench) ships with the package for measuring on your own hardware."}),e.jsx(b,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Decoder v3",description:"Poly-algorithmic quantum error correction decoder for Python with exact MWPM and Belief-Matching capabilities.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",programmingLanguage:"Python",url:"https://qector.store/decoder",downloadUrl:"https://pypi.org/project/qector-decoder-v3/",softwareVersion:o,offers:{"@type":"Offer",price:"0",priceCurrency:"USD",availability:"https://schema.org/InStock"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"v",o," (Source-Available) · Free Workbench GUI (CustomTkinter + MCP tools)"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(v,{text:"QECTOR Decoder v3",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["Rust-core Python library implementing 17 decoder configurations from exact MWPM to GPU batch. v1.0.0 is the first stable release: API stability tiers, Relay-BP and CS-OSD, Sinter/qiskit entry points, and the qector CLI. A reproducible benchmark harness (qector bench) ships with the package so you can measure on your own hardware. Stim-native. PyPI binary wheels. All artifacts published on"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"GitHub"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/workbench",className:"btn-outline",children:"Free Workbench GUI"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsx("div",{ref:r=>t(r,0),className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",children:[{label:"Decoder Configs",value:"17",desc:"From exact MWPM to GPU batch, across documented stability tiers"},{label:"Binary Wheels",value:"15",desc:"Python 3.9-3.13 on Windows amd64, Linux x86_64, macOS arm64"},{label:"Stable API",value:"v1.0.0",desc:"First stable release with documented API stability tiers"},{label:"CI Test Suite",value:"Automated",desc:"Continuous validation and Stim comparison test suite on GitHub"}].map(r=>e.jsx(w,{label:r.label,value:r.value,desc:r.desc,centered:!0},r.label))}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsx(f,{align:"left",maxWidth:"max-w-none",heading:"Decoding Algorithms",description:"Stable decoders with validation artifacts on GitHub. Experimental decoders are research-stage. v1.0.0 freezes the public API under documented stability tiers. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",className:"mb-6"}),e.jsx("h3",{className:"text-xs font-semibold text-cyan-300 uppercase tracking-widest mb-3",children:"Stable Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-6",children:[{name:"Union-Find",tag:"Near-Linear",color:"green",desc:"Near-linear time approximate decoder. High-throughput option for graph-like codes: trades some LER accuracy for speed."},{name:"Fast Union-Find",tag:"Hot Path",color:"green",desc:"Optimized Union-Find hot path for low-latency offline simulation pipelines."},{name:"Blossom MWPM",tag:"Exact Reference",color:"gold",desc:"Exact minimum-weight perfect matching for graph-like codes. The reference decoder for surface codes."},{name:"CPU & GPU Batch Decoder",tag:"Parallel",color:"gold",desc:'Native CUDA / OpenCL batch decoding for supported workloads. Throughput depends on hardware and batch size; CUDA accepts edge_weights and precision="f64" in v1.0.0.'}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:r.color},desc:r.desc},r.name))}),e.jsx("h3",{className:"text-xs font-semibold text-gold-400 uppercase tracking-widest mb-3",children:"Experimental & Research Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"BP-OSD",tag:"qLDPC Research",color:"purple",desc:"Belief propagation + ordered statistics decoding. v1.0.0 adds Relay-BP schedules, CS-OSD(lambda, w) and LLR damping."},{name:"Belief-Matching",tag:"Correlated Noise",color:"cyan",desc:"BP pre-processing + reweighted exact MWPM. Research path for correlated noise scenarios."},{name:"Sparse Blossom",tag:"Near-Optimal",color:"gold",desc:"Region-growing blossom variant for detector graphs. Zero-allocation hot path in v1.0.0."},{name:"Hybrid & AutoDecoder",tag:"Adaptive Routing",color:"cyan",desc:"AutoDecoder and HybridDecoder route between Union-Find and Blossom based on code properties."},{name:"Lookup-Table Decoder",tag:"Small Codes",color:"gold",desc:"Precomputed correction table for small codes or syndrome subspaces."},{name:"Colour Code / Two-Stage / Ambiguity-Cluster",tag:"Research",color:"purple",desc:"New v1.0.0 families: ColourCodeDecoder (opt-in cluster_bposd), TwoStageDecoder, AmbiguityClusterDecoder."}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:"gold"},desc:r.desc,muted:!0},r.name))})]}),e.jsxs("div",{ref:r=>t(r,2),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Technical Specifications"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[["Languages","Rust core (PyO3) / Python 3.9-3.13 API"],["Platforms","Linux x86_64, macOS arm64, Windows amd64"],["GPU","CUDA / OpenCL batch paths (supported configurations per package docs)"],["QEC Library","Stim (quantum-circuit noise simulation)"],["Packaging","PyPI binary wheels (manylinux, macOS, Windows)"],["License","PolyForm Noncommercial 1.0.0 (community) / Commercial"],["Validation","GitHub: github.com/GuillaumeLessard/qector-decoder"]].map(([r,a])=>e.jsxs("div",{className:"flex gap-3",children:[e.jsx("span",{className:"text-muted-foreground text-sm min-w-[140px] shrink-0",children:r}),e.jsx("span",{className:"text-secondary text-sm min-w-0 break-words",children:a})]},r))})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx(y,{title:"Validation Status",statement:"v1.0.0 (2026-08-06) is the first stable release. Decode runs are syndrome-validated (H·c = s) through the self-debugging harness, and artifact manifests are SHA-256 sealed on GitHub. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",href:"https://github.com/GuillaumeLessard/qector-decoder",linkLabel:"GitHub Artifacts and Harness →"}),e.jsx("div",{className:"flex flex-wrap gap-4 mt-3 px-1",children:e.jsx(i,{to:"/evidence",className:"text-cyan-300 text-sm hover:underline",children:"Evidence and Reports →"})})]}),e.jsx("div",{ref:r=>t(r,4),className:"text-center py-8",children:e.jsxs("div",{className:"inline-flex flex-wrap gap-4 justify-center",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/commercial",className:"btn-gold",children:"Start Commercial Evaluation"})]})})]})})]})}export{R as default}; diff --git a/assets/Decoder-CDV4Wz9P.js b/assets/Decoder-CDV4Wz9P.js deleted file mode 100644 index 15d9190d..00000000 --- a/assets/Decoder-CDV4Wz9P.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e,r as d}from"./vendor-react-BiHfrq0e.js";import{u as g,S as x,J as b,a as f,A as l,E as y}from"./index-WV1aysjN.js";import{N as v}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as j}from"./vendor-gsap-a3sj5zmn.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";function w({label:s,value:o,desc:t,icon:r,variant:a="default",centered:m=!1,className:n=""}){const p=a==="compact",h=a==="gold"?"text-gold-400":"text-green-400",u=m?"text-center":"";return o?e.jsxs("div",{className:`card-surface ${u} ${n}`,children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-1",children:s}),e.jsx("div",{className:"text-primary font-bold text-2xl mb-2",children:o}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:t})]}):e.jsxs("div",{className:`${p?"p-4":"p-5"} bg-void border border-gridline rounded-xl transition-colors duration-300 hover:border-cyan-300/30 ${n}`,children:[e.jsxs("div",{className:`${h} font-bold text-sm mb-2 flex items-center gap-2`,children:[r&&e.jsx("span",{"aria-hidden":"true",children:r}),e.jsx("span",{children:s})]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t})]})}c.registerPlugin(j);function R(){const s=d.useRef([]),{version:o}=g();d.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=c.context(()=>{s.current.filter(Boolean).forEach(a=>{c.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const t=(r,a)=>{r&&(s.current[a]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"QECTOR Decoder v3 · QEC Decoding for Python",description:"QECTOR Decoder v3 - 17 decoder configurations in a single Python library. v1.0.0 first stable release with API stability tiers, Relay-BP, CS-OSD, Sinter/qiskit entry points. A reproducible benchmark harness (qector bench) ships with the package for measuring on your own hardware."}),e.jsx(b,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Decoder v3",description:"Poly-algorithmic quantum error correction decoder for Python with exact MWPM and Belief-Matching capabilities.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",programmingLanguage:"Python",url:"https://qector.store/decoder",downloadUrl:"https://pypi.org/project/qector-decoder-v3/",softwareVersion:o,offers:{"@type":"Offer",price:"0",priceCurrency:"USD",availability:"https://schema.org/InStock"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"v",o," (Source-Available) · Free Workbench GUI (CustomTkinter + MCP tools)"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(v,{text:"QECTOR Decoder v3",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["Rust-core Python library implementing 17 decoder configurations from exact MWPM to GPU batch. v1.0.0 is the first stable release: API stability tiers, Relay-BP and CS-OSD, Sinter/qiskit entry points, and the qector CLI. A reproducible benchmark harness (qector bench) ships with the package so you can measure on your own hardware. Stim-native. PyPI binary wheels. All artifacts published on"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"GitHub"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/workbench",className:"btn-outline",children:"Free Workbench GUI"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsx("div",{ref:r=>t(r,0),className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",children:[{label:"Decoder Configs",value:"17",desc:"From exact MWPM to GPU batch, across documented stability tiers"},{label:"Binary Wheels",value:"15",desc:"Python 3.9-3.13 on Windows amd64, Linux x86_64, macOS arm64"},{label:"Stable API",value:"v1.0.0",desc:"First stable release with documented API stability tiers"},{label:"CI Test Suite",value:"Automated",desc:"Continuous validation and Stim comparison test suite on GitHub"}].map(r=>e.jsx(w,{label:r.label,value:r.value,desc:r.desc,centered:!0},r.label))}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsx(f,{align:"left",maxWidth:"max-w-none",heading:"Decoding Algorithms",description:"Stable decoders with validation artifacts on GitHub. Experimental decoders are research-stage. v1.0.0 freezes the public API under documented stability tiers. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",className:"mb-6"}),e.jsx("h3",{className:"text-xs font-semibold text-cyan-300 uppercase tracking-widest mb-3",children:"Stable Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-6",children:[{name:"Union-Find",tag:"Near-Linear",color:"green",desc:"Near-linear time approximate decoder. High-throughput option for graph-like codes: trades some LER accuracy for speed."},{name:"Fast Union-Find",tag:"Hot Path",color:"green",desc:"Optimized Union-Find hot path for low-latency offline simulation pipelines."},{name:"Blossom MWPM",tag:"Exact Reference",color:"gold",desc:"Exact minimum-weight perfect matching for graph-like codes. The reference decoder for surface codes."},{name:"CPU & GPU Batch Decoder",tag:"Parallel",color:"gold",desc:'Native CUDA / OpenCL batch decoding for supported workloads. Throughput depends on hardware and batch size; CUDA accepts edge_weights and precision="f64" in v1.0.0.'}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:r.color},desc:r.desc},r.name))}),e.jsx("h3",{className:"text-xs font-semibold text-gold-400 uppercase tracking-widest mb-3",children:"Experimental & Research Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"BP-OSD",tag:"qLDPC Research",color:"purple",desc:"Belief propagation + ordered statistics decoding. v1.0.0 adds Relay-BP schedules, CS-OSD(lambda, w) and LLR damping."},{name:"Belief-Matching",tag:"Correlated Noise",color:"cyan",desc:"BP pre-processing + reweighted exact MWPM. Research path for correlated noise scenarios."},{name:"Sparse Blossom",tag:"Near-Optimal",color:"gold",desc:"Region-growing blossom variant for detector graphs. Zero-allocation hot path in v1.0.0."},{name:"Hybrid & AutoDecoder",tag:"Adaptive Routing",color:"cyan",desc:"AutoDecoder and HybridDecoder route between Union-Find and Blossom based on code properties."},{name:"Lookup-Table Decoder",tag:"Small Codes",color:"gold",desc:"Precomputed correction table for small codes or syndrome subspaces."},{name:"Colour Code / Two-Stage / Ambiguity-Cluster",tag:"Research",color:"purple",desc:"New v1.0.0 families: ColourCodeDecoder (opt-in cluster_bposd), TwoStageDecoder, AmbiguityClusterDecoder."}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:"gold"},desc:r.desc,muted:!0},r.name))})]}),e.jsxs("div",{ref:r=>t(r,2),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Technical Specifications"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[["Languages","Rust core (PyO3) / Python 3.9-3.13 API"],["Platforms","Linux x86_64, macOS arm64, Windows amd64"],["GPU","CUDA / OpenCL batch paths (supported configurations per package docs)"],["QEC Library","Stim (quantum-circuit noise simulation)"],["Packaging","PyPI binary wheels (manylinux, macOS, Windows)"],["License","PolyForm Noncommercial 1.0.0 (community) / Commercial"],["Validation","GitHub: github.com/GuillaumeLessard/qector-decoder"]].map(([r,a])=>e.jsxs("div",{className:"flex gap-3",children:[e.jsx("span",{className:"text-muted-foreground text-sm min-w-[140px] shrink-0",children:r}),e.jsx("span",{className:"text-secondary text-sm min-w-0 break-words",children:a})]},r))})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx(y,{title:"Validation Status",statement:"v1.0.0 (2026-08-06) is the first stable release. Decode runs are syndrome-validated (H·c = s) through the self-debugging harness, and artifact manifests are SHA-256 sealed on GitHub. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",href:"https://github.com/GuillaumeLessard/qector-decoder",linkLabel:"GitHub Artifacts and Harness →"}),e.jsx("div",{className:"flex flex-wrap gap-4 mt-3 px-1",children:e.jsx(i,{to:"/evidence",className:"text-cyan-300 text-sm hover:underline",children:"Evidence and Reports →"})})]}),e.jsx("div",{ref:r=>t(r,4),className:"text-center py-8",children:e.jsxs("div",{className:"inline-flex flex-wrap gap-4 justify-center",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/commercial",className:"btn-gold",children:"Start Commercial Evaluation"})]})})]})})]})}export{R as default}; diff --git a/assets/Decoder-Cp5PA7-h.js b/assets/Decoder-Cp5PA7-h.js deleted file mode 100644 index d0ffca08..00000000 --- a/assets/Decoder-Cp5PA7-h.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e,r as d}from"./vendor-react-BiHfrq0e.js";import{u as g,S as x,J as b,a as f,A as l,E as y}from"./index-_BpMZhV3.js";import{N as v}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as j}from"./vendor-gsap-a3sj5zmn.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";function w({label:s,value:o,desc:t,icon:r,variant:a="default",centered:m=!1,className:n=""}){const p=a==="compact",h=a==="gold"?"text-gold-400":"text-green-400",u=m?"text-center":"";return o?e.jsxs("div",{className:`card-surface ${u} ${n}`,children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-1",children:s}),e.jsx("div",{className:"text-primary font-bold text-2xl mb-2",children:o}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:t})]}):e.jsxs("div",{className:`${p?"p-4":"p-5"} bg-void border border-gridline rounded-xl transition-colors duration-300 hover:border-cyan-300/30 ${n}`,children:[e.jsxs("div",{className:`${h} font-bold text-sm mb-2 flex items-center gap-2`,children:[r&&e.jsx("span",{"aria-hidden":"true",children:r}),e.jsx("span",{children:s})]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t})]})}c.registerPlugin(j);function R(){const s=d.useRef([]),{version:o}=g();d.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=c.context(()=>{s.current.filter(Boolean).forEach(a=>{c.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const t=(r,a)=>{r&&(s.current[a]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"QECTOR Decoder v3 · QEC Decoding for Python",description:"QECTOR Decoder v3 - 17 decoder configurations in a single Python library. v1.0.0 first stable release with API stability tiers, Relay-BP, CS-OSD, Sinter/qiskit entry points. A reproducible benchmark harness (qector bench) ships with the package for measuring on your own hardware."}),e.jsx(b,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Decoder v3",description:"Poly-algorithmic quantum error correction decoder for Python with exact MWPM and Belief-Matching capabilities.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",programmingLanguage:"Python",url:"https://qector.store/decoder",downloadUrl:"https://pypi.org/project/qector-decoder-v3/",softwareVersion:o,offers:{"@type":"Offer",price:"0",priceCurrency:"USD",availability:"https://schema.org/InStock"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"v",o," (Source-Available) · Free Workbench GUI (CustomTkinter + MCP tools)"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(v,{text:"QECTOR Decoder v3",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["Rust-core Python library implementing 17 decoder configurations from exact MWPM to GPU batch. v1.0.0 is the first stable release: API stability tiers, Relay-BP and CS-OSD, Sinter/qiskit entry points, and the qector CLI. A reproducible benchmark harness (qector bench) ships with the package so you can measure on your own hardware. Stim-native. PyPI binary wheels. All artifacts published on"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"GitHub"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/workbench",className:"btn-outline",children:"Free Workbench GUI"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsx("div",{ref:r=>t(r,0),className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",children:[{label:"Decoder Configs",value:"17",desc:"From exact MWPM to GPU batch, across documented stability tiers"},{label:"Binary Wheels",value:"15",desc:"Python 3.9-3.13 on Windows amd64, Linux x86_64, macOS arm64"},{label:"Stable API",value:"v1.0.0",desc:"First stable release with documented API stability tiers"},{label:"CI Test Suite",value:"Automated",desc:"Continuous validation and Stim comparison test suite on GitHub"}].map(r=>e.jsx(w,{label:r.label,value:r.value,desc:r.desc,centered:!0},r.label))}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsx(f,{align:"left",maxWidth:"max-w-none",heading:"Decoding Algorithms",description:"Stable decoders with validation artifacts on GitHub. Experimental decoders are research-stage. v1.0.0 freezes the public API under documented stability tiers. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",className:"mb-6"}),e.jsx("h3",{className:"text-xs font-semibold text-cyan-300 uppercase tracking-widest mb-3",children:"Stable Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-6",children:[{name:"Union-Find",tag:"Near-Linear",color:"green",desc:"Near-linear time approximate decoder. High-throughput option for graph-like codes: trades some LER accuracy for speed."},{name:"Fast Union-Find",tag:"Hot Path",color:"green",desc:"Optimized Union-Find hot path for low-latency offline simulation pipelines."},{name:"Blossom MWPM",tag:"Exact Reference",color:"gold",desc:"Exact minimum-weight perfect matching for graph-like codes. The reference decoder for surface codes."},{name:"CPU & GPU Batch Decoder",tag:"Parallel",color:"gold",desc:'Native CUDA / OpenCL batch decoding for supported workloads. Throughput depends on hardware and batch size; CUDA accepts edge_weights and precision="f64" in v1.0.0.'}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:r.color},desc:r.desc},r.name))}),e.jsx("h3",{className:"text-xs font-semibold text-gold-400 uppercase tracking-widest mb-3",children:"Experimental & Research Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"BP-OSD",tag:"qLDPC Research",color:"purple",desc:"Belief propagation + ordered statistics decoding. v1.0.0 adds Relay-BP schedules, CS-OSD(lambda, w) and LLR damping."},{name:"Belief-Matching",tag:"Correlated Noise",color:"cyan",desc:"BP pre-processing + reweighted exact MWPM. Research path for correlated noise scenarios."},{name:"Sparse Blossom",tag:"Near-Optimal",color:"gold",desc:"Region-growing blossom variant for detector graphs. Zero-allocation hot path in v1.0.0."},{name:"Hybrid & AutoDecoder",tag:"Adaptive Routing",color:"cyan",desc:"AutoDecoder and HybridDecoder route between Union-Find and Blossom based on code properties."},{name:"Lookup-Table Decoder",tag:"Small Codes",color:"gold",desc:"Precomputed correction table for small codes or syndrome subspaces."},{name:"Colour Code / Two-Stage / Ambiguity-Cluster",tag:"Research",color:"purple",desc:"New v1.0.0 families: ColourCodeDecoder (opt-in cluster_bposd), TwoStageDecoder, AmbiguityClusterDecoder."}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:"gold"},desc:r.desc,muted:!0},r.name))})]}),e.jsxs("div",{ref:r=>t(r,2),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Technical Specifications"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[["Languages","Rust core (PyO3) / Python 3.9-3.13 API"],["Platforms","Linux x86_64, macOS arm64, Windows amd64"],["GPU","CUDA / OpenCL batch paths (supported configurations per package docs)"],["QEC Library","Stim (quantum-circuit noise simulation)"],["Packaging","PyPI binary wheels (manylinux, macOS, Windows)"],["License","PolyForm Noncommercial 1.0.0 (community) / Commercial"],["Validation","GitHub: github.com/GuillaumeLessard/qector-decoder"]].map(([r,a])=>e.jsxs("div",{className:"flex gap-3",children:[e.jsx("span",{className:"text-muted-foreground text-sm min-w-[140px] shrink-0",children:r}),e.jsx("span",{className:"text-secondary text-sm min-w-0 break-words",children:a})]},r))})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx(y,{title:"Validation Status",statement:"v1.0.0 (2026-08-06) is the first stable release. Decode runs are syndrome-validated (H·c = s) through the self-debugging harness, and artifact manifests are SHA-256 sealed on GitHub. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",href:"https://github.com/GuillaumeLessard/qector-decoder",linkLabel:"GitHub Artifacts and Harness →"}),e.jsx("div",{className:"flex flex-wrap gap-4 mt-3 px-1",children:e.jsx(i,{to:"/evidence",className:"text-cyan-300 text-sm hover:underline",children:"Evidence and Reports →"})})]}),e.jsx("div",{ref:r=>t(r,4),className:"text-center py-8",children:e.jsxs("div",{className:"inline-flex flex-wrap gap-4 justify-center",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/commercial",className:"btn-gold",children:"Start Commercial Evaluation"})]})})]})})]})}export{R as default}; diff --git a/assets/Decoder-DH3zReVC.js b/assets/Decoder-DH3zReVC.js deleted file mode 100644 index 4d0b444f..00000000 --- a/assets/Decoder-DH3zReVC.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e,r as d}from"./vendor-react-BiHfrq0e.js";import{u as g,S as x,J as b,a as f,A as l,E as y}from"./index-CxWP17m6.js";import{N as v}from"./NeuralReveal-BflyZYSb.js";import{g as n,S as w}from"./vendor-gsap-a3sj5zmn.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";function j({label:s,value:o,desc:t,icon:r,variant:a="default",centered:m=!1,className:c=""}){const p=a==="compact",h=a==="gold"?"text-gold-400":"text-green-400",u=m?"text-center":"";return o?e.jsxs("div",{className:`card-surface ${u} ${c}`,children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-1",children:s}),e.jsx("div",{className:"text-primary font-bold text-2xl mb-2",children:o}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:t})]}):e.jsxs("div",{className:`${p?"p-4":"p-5"} bg-void border border-gridline rounded-xl transition-colors duration-300 hover:border-cyan-300/30 ${c}`,children:[e.jsxs("div",{className:`${h} font-bold text-sm mb-2 flex items-center gap-2`,children:[r&&e.jsx("span",{"aria-hidden":"true",children:r}),e.jsx("span",{children:s})]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t})]})}n.registerPlugin(w);function R(){const s=d.useRef([]),{version:o}=g();d.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=n.context(()=>{s.current.filter(Boolean).forEach(a=>{n.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const t=(r,a)=>{r&&(s.current[a]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"QECTOR Decoder v3 · QEC Decoding for Python",description:"QECTOR Decoder v3 - 17 decoder configurations in a single Python library. v1.0.1 current stable release (18 wheels, Python 3.9-3.14) with API stability tiers, Relay-BP, CS-OSD, Sinter/qiskit entry points. A reproducible benchmark harness (qector bench) ships with the package for measuring on your own hardware."}),e.jsx(b,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Decoder v3",description:"Poly-algorithmic quantum error correction decoder for Python with exact MWPM and Belief-Matching capabilities.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",programmingLanguage:"Python",url:"https://qector.store/decoder",downloadUrl:"https://pypi.org/project/qector-decoder-v3/",softwareVersion:o,offers:{"@type":"Offer",price:"0",priceCurrency:"USD",availability:"https://schema.org/InStock"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"v",o," (Source-Available) · Free Workbench GUI (CustomTkinter + MCP tools)"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(v,{text:"QECTOR Decoder v3",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["Rust-core Python library implementing 17 decoder configurations from exact MWPM to GPU batch. v1.0.1 is the current stable release: API stability tiers, Relay-BP and CS-OSD, Sinter/qiskit entry points, and the qector CLI, with build provenance for every wheel. A reproducible benchmark harness (qector bench) ships with the package so you can measure on your own hardware. Stim-native. PyPI binary wheels. All artifacts published on"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"GitHub"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/workbench",className:"btn-outline",children:"Free Workbench GUI"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsx("div",{ref:r=>t(r,0),className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",children:[{label:"Decoder Configs",value:"17",desc:"From exact MWPM to GPU batch, across documented stability tiers"},{label:"Binary Wheels",value:"18",desc:"Python 3.9-3.14 on Windows amd64, Linux x86_64, macOS arm64"},{label:"Stable API",value:"v1.0.1",desc:"Stable release with documented API stability tiers"},{label:"CI Test Suite",value:"Automated",desc:"Continuous validation and Stim comparison test suite on GitHub"}].map(r=>e.jsx(j,{label:r.label,value:r.value,desc:r.desc,centered:!0},r.label))}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsx(f,{align:"left",maxWidth:"max-w-none",heading:"Decoding Algorithms",description:"Stable decoders with validation artifacts on GitHub. Experimental decoders are research-stage. Since v1.0.0 the public API is frozen under documented stability tiers. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",className:"mb-6"}),e.jsx("h3",{className:"text-xs font-semibold text-cyan-300 uppercase tracking-widest mb-3",children:"Stable Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-6",children:[{name:"Union-Find",tag:"Near-Linear",color:"green",desc:"Near-linear time approximate decoder. High-throughput option for graph-like codes: trades some LER accuracy for speed."},{name:"Fast Union-Find",tag:"Hot Path",color:"green",desc:"Optimized Union-Find hot path for low-latency offline simulation pipelines."},{name:"Blossom MWPM",tag:"Exact Reference",color:"gold",desc:"Exact minimum-weight perfect matching for graph-like codes. The reference decoder for surface codes."},{name:"CPU & GPU Batch Decoder",tag:"Parallel",color:"gold",desc:'Native CUDA / OpenCL batch decoding for supported workloads. Throughput depends on hardware and batch size; CUDA accepts edge_weights and precision="f64" in v1.0.0.'}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:r.color},desc:r.desc},r.name))}),e.jsx("h3",{className:"text-xs font-semibold text-gold-400 uppercase tracking-widest mb-3",children:"Experimental & Research Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"BP-OSD",tag:"qLDPC Research",color:"purple",desc:"Belief propagation + ordered statistics decoding. v1.0.0 adds Relay-BP schedules, CS-OSD(lambda, w) and LLR damping."},{name:"Belief-Matching",tag:"Correlated Noise",color:"cyan",desc:"BP pre-processing + reweighted exact MWPM. Research path for correlated noise scenarios."},{name:"Sparse Blossom",tag:"Near-Optimal",color:"gold",desc:"Region-growing blossom variant for detector graphs. Zero-allocation hot path in v1.0.0."},{name:"Hybrid & AutoDecoder",tag:"Adaptive Routing",color:"cyan",desc:"AutoDecoder and HybridDecoder route between Union-Find and Blossom based on code properties."},{name:"Lookup-Table Decoder",tag:"Small Codes",color:"gold",desc:"Precomputed correction table for small codes or syndrome subspaces."},{name:"Colour Code / Two-Stage / Ambiguity-Cluster",tag:"Research",color:"purple",desc:"New v1.0.0 families: ColourCodeDecoder (opt-in cluster_bposd), TwoStageDecoder, AmbiguityClusterDecoder."}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:"gold"},desc:r.desc,muted:!0},r.name))})]}),e.jsxs("div",{ref:r=>t(r,2),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Technical Specifications"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[["Languages","Rust core (PyO3) / Python 3.9-3.14 API"],["Platforms","Linux x86_64, macOS arm64, Windows amd64"],["GPU","CUDA / OpenCL batch paths (supported configurations per package docs)"],["QEC Library","Stim (quantum-circuit noise simulation)"],["Packaging","PyPI binary wheels (manylinux, macOS, Windows)"],["License","PolyForm Noncommercial 1.0.0 (community) / Commercial"],["Validation","GitHub: github.com/GuillaumeLessard/qector-decoder"]].map(([r,a])=>e.jsxs("div",{className:"flex gap-3",children:[e.jsx("span",{className:"text-muted-foreground text-sm min-w-[140px] shrink-0",children:r}),e.jsx("span",{className:"text-secondary text-sm min-w-0 break-words",children:a})]},r))})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx(y,{title:"Validation Status",statement:"v1.0.0 (2026-08-06) was the first stable release; v1.0.1 (2026-11-06) is current. Decode runs are syndrome-validated (H·c = s) through the self-debugging harness, and artifact manifests are SHA-256 sealed on GitHub. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",href:"https://github.com/GuillaumeLessard/qector-decoder",linkLabel:"GitHub Artifacts and Harness →"}),e.jsx("div",{className:"flex flex-wrap gap-4 mt-3 px-1",children:e.jsx(i,{to:"/evidence",className:"text-cyan-300 text-sm hover:underline",children:"Evidence and Reports →"})})]}),e.jsx("div",{ref:r=>t(r,4),className:"text-center py-8",children:e.jsxs("div",{className:"inline-flex flex-wrap gap-4 justify-center",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/commercial",className:"btn-gold",children:"Start Commercial Evaluation"})]})})]})})]})}export{R as default}; diff --git a/assets/Decoder-DKEd4jAQ.js b/assets/Decoder-DKEd4jAQ.js deleted file mode 100644 index a78fa03a..00000000 --- a/assets/Decoder-DKEd4jAQ.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e,r as d}from"./vendor-react-BiHfrq0e.js";import{u as g,S as x,J as b,a as f,A as l,E as y}from"./index-B9kEGiWi.js";import{N as v}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as j}from"./vendor-gsap-a3sj5zmn.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";function w({label:s,value:o,desc:t,icon:r,variant:a="default",centered:m=!1,className:n=""}){const p=a==="compact",h=a==="gold"?"text-gold-400":"text-green-400",u=m?"text-center":"";return o?e.jsxs("div",{className:`card-surface ${u} ${n}`,children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-1",children:s}),e.jsx("div",{className:"text-primary font-bold text-2xl mb-2",children:o}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:t})]}):e.jsxs("div",{className:`${p?"p-4":"p-5"} bg-void border border-gridline rounded-xl transition-colors duration-300 hover:border-cyan-300/30 ${n}`,children:[e.jsxs("div",{className:`${h} font-bold text-sm mb-2 flex items-center gap-2`,children:[r&&e.jsx("span",{"aria-hidden":"true",children:r}),e.jsx("span",{children:s})]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t})]})}c.registerPlugin(j);function R(){const s=d.useRef([]),{version:o}=g();d.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=c.context(()=>{s.current.filter(Boolean).forEach(a=>{c.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const t=(r,a)=>{r&&(s.current[a]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"QECTOR Decoder v3 · QEC Decoding for Python",description:"QECTOR Decoder v3 - 17 decoder configurations in a single Python library. v1.0.0 first stable release with API stability tiers, Relay-BP, CS-OSD, Sinter/qiskit entry points. A reproducible benchmark harness (qector bench) ships with the package for measuring on your own hardware."}),e.jsx(b,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Decoder v3",description:"Poly-algorithmic quantum error correction decoder for Python with exact MWPM and Belief-Matching capabilities.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",programmingLanguage:"Python",url:"https://qector.store/decoder",downloadUrl:"https://pypi.org/project/qector-decoder-v3/",softwareVersion:o,offers:{"@type":"Offer",price:"0",priceCurrency:"USD",availability:"https://schema.org/InStock"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"v",o," (Source-Available) · Free Workbench GUI (CustomTkinter + MCP tools)"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(v,{text:"QECTOR Decoder v3",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["Rust-core Python library implementing 17 decoder configurations from exact MWPM to GPU batch. v1.0.0 is the first stable release: API stability tiers, Relay-BP and CS-OSD, Sinter/qiskit entry points, and the qector CLI. A reproducible benchmark harness (qector bench) ships with the package so you can measure on your own hardware. Stim-native. PyPI binary wheels. All artifacts published on"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"GitHub"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/workbench",className:"btn-outline",children:"Free Workbench GUI"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsx("div",{ref:r=>t(r,0),className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",children:[{label:"Decoder Configs",value:"17",desc:"From exact MWPM to GPU batch, across documented stability tiers"},{label:"Binary Wheels",value:"15",desc:"Python 3.9-3.13 on Windows amd64, Linux x86_64, macOS arm64"},{label:"Stable API",value:"v1.0.0",desc:"First stable release with documented API stability tiers"},{label:"CI Test Suite",value:"Automated",desc:"Continuous validation and Stim comparison test suite on GitHub"}].map(r=>e.jsx(w,{label:r.label,value:r.value,desc:r.desc,centered:!0},r.label))}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsx(f,{align:"left",maxWidth:"max-w-none",heading:"Decoding Algorithms",description:"Stable decoders with validation artifacts on GitHub. Experimental decoders are research-stage. v1.0.0 freezes the public API under documented stability tiers. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",className:"mb-6"}),e.jsx("h3",{className:"text-xs font-semibold text-cyan-300 uppercase tracking-widest mb-3",children:"Stable Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-6",children:[{name:"Union-Find",tag:"Near-Linear",color:"green",desc:"Near-linear time approximate decoder. High-throughput option for graph-like codes: trades some LER accuracy for speed."},{name:"Fast Union-Find",tag:"Hot Path",color:"green",desc:"Optimized Union-Find hot path for low-latency offline simulation pipelines."},{name:"Blossom MWPM",tag:"Exact Reference",color:"gold",desc:"Exact minimum-weight perfect matching for graph-like codes. The reference decoder for surface codes."},{name:"CPU & GPU Batch Decoder",tag:"Parallel",color:"gold",desc:'Native CUDA / OpenCL batch decoding for supported workloads. Throughput depends on hardware and batch size; CUDA accepts edge_weights and precision="f64" in v1.0.0.'}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:r.color},desc:r.desc},r.name))}),e.jsx("h3",{className:"text-xs font-semibold text-gold-400 uppercase tracking-widest mb-3",children:"Experimental & Research Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"BP-OSD",tag:"qLDPC Research",color:"purple",desc:"Belief propagation + ordered statistics decoding. v1.0.0 adds Relay-BP schedules, CS-OSD(lambda, w) and LLR damping."},{name:"Belief-Matching",tag:"Correlated Noise",color:"cyan",desc:"BP pre-processing + reweighted exact MWPM. Research path for correlated noise scenarios."},{name:"Sparse Blossom",tag:"Near-Optimal",color:"gold",desc:"Region-growing blossom variant for detector graphs. Zero-allocation hot path in v1.0.0."},{name:"Hybrid & AutoDecoder",tag:"Adaptive Routing",color:"cyan",desc:"AutoDecoder and HybridDecoder route between Union-Find and Blossom based on code properties."},{name:"Lookup-Table Decoder",tag:"Small Codes",color:"gold",desc:"Precomputed correction table for small codes or syndrome subspaces."},{name:"Colour Code / Two-Stage / Ambiguity-Cluster",tag:"Research",color:"purple",desc:"New v1.0.0 families: ColourCodeDecoder (opt-in cluster_bposd), TwoStageDecoder, AmbiguityClusterDecoder."}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:"gold"},desc:r.desc,muted:!0},r.name))})]}),e.jsxs("div",{ref:r=>t(r,2),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Technical Specifications"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[["Languages","Rust core (PyO3) / Python 3.9-3.13 API"],["Platforms","Linux x86_64, macOS arm64, Windows amd64"],["GPU","CUDA / OpenCL batch paths (supported configurations per package docs)"],["QEC Library","Stim (quantum-circuit noise simulation)"],["Packaging","PyPI binary wheels (manylinux, macOS, Windows)"],["License","PolyForm Noncommercial 1.0.0 (community) / Commercial"],["Validation","GitHub: github.com/GuillaumeLessard/qector-decoder"]].map(([r,a])=>e.jsxs("div",{className:"flex gap-3",children:[e.jsx("span",{className:"text-muted-foreground text-sm min-w-[140px] shrink-0",children:r}),e.jsx("span",{className:"text-secondary text-sm min-w-0 break-words",children:a})]},r))})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx(y,{title:"Validation Status",statement:"v1.0.0 (2026-08-06) is the first stable release. Decode runs are syndrome-validated (H·c = s) through the self-debugging harness, and artifact manifests are SHA-256 sealed on GitHub. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",href:"https://github.com/GuillaumeLessard/qector-decoder",linkLabel:"GitHub Artifacts and Harness →"}),e.jsx("div",{className:"flex flex-wrap gap-4 mt-3 px-1",children:e.jsx(i,{to:"/evidence",className:"text-cyan-300 text-sm hover:underline",children:"Evidence and Reports →"})})]}),e.jsx("div",{ref:r=>t(r,4),className:"text-center py-8",children:e.jsxs("div",{className:"inline-flex flex-wrap gap-4 justify-center",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/commercial",className:"btn-gold",children:"Start Commercial Evaluation"})]})})]})})]})}export{R as default}; diff --git a/assets/Decoder-DPFHpNvT.js b/assets/Decoder-DPFHpNvT.js deleted file mode 100644 index bc804cfe..00000000 --- a/assets/Decoder-DPFHpNvT.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e,r as d}from"./vendor-react-BiHfrq0e.js";import{u as g,S as x,J as b,L as i,a as f,A as l,E as y}from"./index-DayaklK-.js";import{N as v}from"./NeuralReveal-uYarhiMA.js";import{g as n,S as w}from"./vendor-gsap-a3sj5zmn.js";import"./vendor-ui-B8TlNU4J.js";function j({label:s,value:o,desc:t,icon:r,variant:a="default",centered:m=!1,className:c=""}){const p=a==="compact",h=a==="gold"?"text-gold-400":"text-green-400",u=m?"text-center":"";return o?e.jsxs("div",{className:`card-surface ${u} ${c}`,children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-1",children:s}),e.jsx("div",{className:"text-primary font-bold text-2xl mb-2",children:o}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:t})]}):e.jsxs("div",{className:`${p?"p-4":"p-5"} bg-void border border-gridline rounded-xl transition-colors duration-300 hover:border-cyan-300/30 ${c}`,children:[e.jsxs("div",{className:`${h} font-bold text-sm mb-2 flex items-center gap-2`,children:[r&&e.jsx("span",{"aria-hidden":"true",children:r}),e.jsx("span",{children:s})]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t})]})}n.registerPlugin(w);function D(){const s=d.useRef([]),{version:o}=g();d.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=n.context(()=>{s.current.filter(Boolean).forEach(a=>{n.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const t=(r,a)=>{r&&(s.current[a]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"QECTOR Decoder v3 · QEC Decoding for Python",description:"QECTOR Decoder v3 - 17 decoder configurations in a single Python library. v1.0.1 current stable release (18 wheels, Python 3.9-3.14) with API stability tiers, Relay-BP, CS-OSD, Sinter/qiskit entry points. A reproducible benchmark harness (qector bench) ships with the package for measuring on your own hardware."}),e.jsx(b,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Decoder v3",description:"Poly-algorithmic quantum error correction decoder for Python with exact MWPM and Belief-Matching capabilities.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",programmingLanguage:"Python",url:"https://qector.store/decoder",downloadUrl:"https://pypi.org/project/qector-decoder-v3/",softwareVersion:o,offers:{"@type":"Offer",price:"0",priceCurrency:"USD",availability:"https://schema.org/InStock"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"v",o," (Source-Available) · Free Workbench GUI (CustomTkinter + MCP tools)"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(v,{text:"QECTOR Decoder v3",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["Rust-core Python library implementing 17 decoder configurations from exact MWPM to GPU batch. v1.0.1 is the current stable release: API stability tiers, Relay-BP and CS-OSD, Sinter/qiskit entry points, and the qector CLI, with build provenance for every wheel. A reproducible benchmark harness (qector bench) ships with the package so you can measure on your own hardware. Stim-native. PyPI binary wheels. All artifacts published on"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"GitHub"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/workbench",className:"btn-outline",children:"Free Workbench GUI"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsx("div",{ref:r=>t(r,0),className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",children:[{label:"Decoder Configs",value:"17",desc:"From exact MWPM to GPU batch, across documented stability tiers"},{label:"Binary Wheels",value:"18",desc:"Python 3.9-3.14 on Windows amd64, Linux x86_64, macOS arm64"},{label:"Stable API",value:"v1.0.1",desc:"Stable release with documented API stability tiers"},{label:"CI Test Suite",value:"Automated",desc:"Continuous validation and Stim comparison test suite on GitHub"}].map(r=>e.jsx(j,{label:r.label,value:r.value,desc:r.desc,centered:!0},r.label))}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsx(f,{align:"left",maxWidth:"max-w-none",heading:"Decoding Algorithms",description:"Stable decoders with validation artifacts on GitHub. Experimental decoders are research-stage. Since v1.0.0 the public API is frozen under documented stability tiers. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",className:"mb-6"}),e.jsx("h3",{className:"text-xs font-semibold text-cyan-300 uppercase tracking-widest mb-3",children:"Stable Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-6",children:[{name:"Union-Find",tag:"Near-Linear",color:"green",desc:"Near-linear time approximate decoder. High-throughput option for graph-like codes: trades some LER accuracy for speed."},{name:"Fast Union-Find",tag:"Hot Path",color:"green",desc:"Optimized Union-Find hot path for low-latency offline simulation pipelines."},{name:"Blossom MWPM",tag:"Exact Reference",color:"gold",desc:"Exact minimum-weight perfect matching for graph-like codes. The reference decoder for surface codes."},{name:"CPU & GPU Batch Decoder",tag:"Parallel",color:"gold",desc:'Native CUDA / OpenCL batch decoding for supported workloads. Throughput depends on hardware and batch size; CUDA accepts edge_weights and precision="f64" in v1.0.0.'}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:r.color},desc:r.desc},r.name))}),e.jsx("h3",{className:"text-xs font-semibold text-gold-400 uppercase tracking-widest mb-3",children:"Experimental & Research Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"BP-OSD",tag:"qLDPC Research",color:"purple",desc:"Belief propagation + ordered statistics decoding. v1.0.0 adds Relay-BP schedules, CS-OSD(lambda, w) and LLR damping."},{name:"Belief-Matching",tag:"Correlated Noise",color:"cyan",desc:"BP pre-processing + reweighted exact MWPM. Research path for correlated noise scenarios."},{name:"Sparse Blossom",tag:"Near-Optimal",color:"gold",desc:"Region-growing blossom variant for detector graphs. Zero-allocation hot path in v1.0.0."},{name:"Hybrid & AutoDecoder",tag:"Adaptive Routing",color:"cyan",desc:"AutoDecoder and HybridDecoder route between Union-Find and Blossom based on code properties."},{name:"Lookup-Table Decoder",tag:"Small Codes",color:"gold",desc:"Precomputed correction table for small codes or syndrome subspaces."},{name:"Colour Code / Two-Stage / Ambiguity-Cluster",tag:"Research",color:"purple",desc:"New v1.0.0 families: ColourCodeDecoder (opt-in cluster_bposd), TwoStageDecoder, AmbiguityClusterDecoder."}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:"gold"},desc:r.desc,muted:!0},r.name))})]}),e.jsxs("div",{ref:r=>t(r,2),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Technical Specifications"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[["Languages","Rust core (PyO3) / Python 3.9-3.14 API"],["Platforms","Linux x86_64, macOS arm64, Windows amd64"],["GPU","CUDA / OpenCL batch paths (supported configurations per package docs)"],["QEC Library","Stim (quantum-circuit noise simulation)"],["Packaging","PyPI binary wheels (manylinux, macOS, Windows)"],["License","PolyForm Noncommercial 1.0.0 (community) / Commercial"],["Validation","GitHub: github.com/GuillaumeLessard/qector-decoder"]].map(([r,a])=>e.jsxs("div",{className:"flex gap-3",children:[e.jsx("span",{className:"text-muted-foreground text-sm min-w-[140px] shrink-0",children:r}),e.jsx("span",{className:"text-secondary text-sm min-w-0 break-words",children:a})]},r))})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx(y,{title:"Validation Status",statement:"v1.0.0 (2026-08-06) was the first stable release; v1.0.1 (2026-11-06) is current. Decode runs are syndrome-validated (H·c = s) through the self-debugging harness, and artifact manifests are SHA-256 sealed on GitHub. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",href:"https://github.com/GuillaumeLessard/qector-decoder",linkLabel:"GitHub Artifacts and Harness →"}),e.jsx("div",{className:"flex flex-wrap gap-4 mt-3 px-1",children:e.jsx(i,{to:"/evidence",className:"text-cyan-300 text-sm hover:underline",children:"Evidence and Reports →"})})]}),e.jsx("div",{ref:r=>t(r,4),className:"text-center py-8",children:e.jsxs("div",{className:"inline-flex flex-wrap gap-4 justify-center",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/commercial",className:"btn-gold",children:"Start Commercial Evaluation"})]})})]})})]})}export{D as default}; diff --git a/assets/Decoder-Daf_S4dz.js b/assets/Decoder-Daf_S4dz.js deleted file mode 100644 index 1c647b09..00000000 --- a/assets/Decoder-Daf_S4dz.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e,r as d}from"./vendor-react-BiHfrq0e.js";import{u as g,S as x,J as b,a as f,A as l,E as y}from"./index-DkYdPRY7.js";import{N as v}from"./NeuralReveal-BflyZYSb.js";import{g as n,S as w}from"./vendor-gsap-a3sj5zmn.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";function j({label:s,value:o,desc:t,icon:r,variant:a="default",centered:m=!1,className:c=""}){const p=a==="compact",h=a==="gold"?"text-gold-400":"text-green-400",u=m?"text-center":"";return o?e.jsxs("div",{className:`card-surface ${u} ${c}`,children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-1",children:s}),e.jsx("div",{className:"text-primary font-bold text-2xl mb-2",children:o}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:t})]}):e.jsxs("div",{className:`${p?"p-4":"p-5"} bg-void border border-gridline rounded-xl transition-colors duration-300 hover:border-cyan-300/30 ${c}`,children:[e.jsxs("div",{className:`${h} font-bold text-sm mb-2 flex items-center gap-2`,children:[r&&e.jsx("span",{"aria-hidden":"true",children:r}),e.jsx("span",{children:s})]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t})]})}n.registerPlugin(w);function R(){const s=d.useRef([]),{version:o}=g();d.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=n.context(()=>{s.current.filter(Boolean).forEach(a=>{n.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const t=(r,a)=>{r&&(s.current[a]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"QECTOR Decoder v3 · QEC Decoding for Python",description:"QECTOR Decoder v3 - 17 decoder configurations in a single Python library. v1.0.1 current stable release (18 wheels, Python 3.9-3.14) with API stability tiers, Relay-BP, CS-OSD, Sinter/qiskit entry points. A reproducible benchmark harness (qector bench) ships with the package for measuring on your own hardware."}),e.jsx(b,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Decoder v3",description:"Poly-algorithmic quantum error correction decoder for Python with exact MWPM and Belief-Matching capabilities.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",programmingLanguage:"Python",url:"https://qector.store/decoder",downloadUrl:"https://pypi.org/project/qector-decoder-v3/",softwareVersion:o,offers:{"@type":"Offer",price:"0",priceCurrency:"USD",availability:"https://schema.org/InStock"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"v",o," (Source-Available) · Free Workbench GUI (CustomTkinter + MCP tools)"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(v,{text:"QECTOR Decoder v3",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["Rust-core Python library implementing 17 decoder configurations from exact MWPM to GPU batch. v1.0.1 is the current stable release: API stability tiers, Relay-BP and CS-OSD, Sinter/qiskit entry points, and the qector CLI, with build provenance for every wheel. A reproducible benchmark harness (qector bench) ships with the package so you can measure on your own hardware. Stim-native. PyPI binary wheels. All artifacts published on"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"GitHub"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/workbench",className:"btn-outline",children:"Free Workbench GUI"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsx("div",{ref:r=>t(r,0),className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",children:[{label:"Decoder Configs",value:"17",desc:"From exact MWPM to GPU batch, across documented stability tiers"},{label:"Binary Wheels",value:"18",desc:"Python 3.9-3.14 on Windows amd64, Linux x86_64, macOS arm64"},{label:"Stable API",value:"v1.0.1",desc:"Stable release with documented API stability tiers"},{label:"CI Test Suite",value:"Automated",desc:"Continuous validation and Stim comparison test suite on GitHub"}].map(r=>e.jsx(j,{label:r.label,value:r.value,desc:r.desc,centered:!0},r.label))}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsx(f,{align:"left",maxWidth:"max-w-none",heading:"Decoding Algorithms",description:"Stable decoders with validation artifacts on GitHub. Experimental decoders are research-stage. Since v1.0.0 the public API is frozen under documented stability tiers. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",className:"mb-6"}),e.jsx("h3",{className:"text-xs font-semibold text-cyan-300 uppercase tracking-widest mb-3",children:"Stable Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-6",children:[{name:"Union-Find",tag:"Near-Linear",color:"green",desc:"Near-linear time approximate decoder. High-throughput option for graph-like codes: trades some LER accuracy for speed."},{name:"Fast Union-Find",tag:"Hot Path",color:"green",desc:"Optimized Union-Find hot path for low-latency offline simulation pipelines."},{name:"Blossom MWPM",tag:"Exact Reference",color:"gold",desc:"Exact minimum-weight perfect matching for graph-like codes. The reference decoder for surface codes."},{name:"CPU & GPU Batch Decoder",tag:"Parallel",color:"gold",desc:'Native CUDA / OpenCL batch decoding for supported workloads. Throughput depends on hardware and batch size; CUDA accepts edge_weights and precision="f64" in v1.0.0.'}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:r.color},desc:r.desc},r.name))}),e.jsx("h3",{className:"text-xs font-semibold text-gold-400 uppercase tracking-widest mb-3",children:"Experimental & Research Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"BP-OSD",tag:"qLDPC Research",color:"purple",desc:"Belief propagation + ordered statistics decoding. v1.0.0 adds Relay-BP schedules, CS-OSD(lambda, w) and LLR damping."},{name:"Belief-Matching",tag:"Correlated Noise",color:"cyan",desc:"BP pre-processing + reweighted exact MWPM. Research path for correlated noise scenarios."},{name:"Sparse Blossom",tag:"Near-Optimal",color:"gold",desc:"Region-growing blossom variant for detector graphs. Zero-allocation hot path in v1.0.0."},{name:"Hybrid & AutoDecoder",tag:"Adaptive Routing",color:"cyan",desc:"AutoDecoder and HybridDecoder route between Union-Find and Blossom based on code properties."},{name:"Lookup-Table Decoder",tag:"Small Codes",color:"gold",desc:"Precomputed correction table for small codes or syndrome subspaces."},{name:"Colour Code / Two-Stage / Ambiguity-Cluster",tag:"Research",color:"purple",desc:"New v1.0.0 families: ColourCodeDecoder (opt-in cluster_bposd), TwoStageDecoder, AmbiguityClusterDecoder."}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:"gold"},desc:r.desc,muted:!0},r.name))})]}),e.jsxs("div",{ref:r=>t(r,2),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Technical Specifications"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[["Languages","Rust core (PyO3) / Python 3.9-3.14 API"],["Platforms","Linux x86_64, macOS arm64, Windows amd64"],["GPU","CUDA / OpenCL batch paths (supported configurations per package docs)"],["QEC Library","Stim (quantum-circuit noise simulation)"],["Packaging","PyPI binary wheels (manylinux, macOS, Windows)"],["License","PolyForm Noncommercial 1.0.0 (community) / Commercial"],["Validation","GitHub: github.com/GuillaumeLessard/qector-decoder"]].map(([r,a])=>e.jsxs("div",{className:"flex gap-3",children:[e.jsx("span",{className:"text-muted-foreground text-sm min-w-[140px] shrink-0",children:r}),e.jsx("span",{className:"text-secondary text-sm min-w-0 break-words",children:a})]},r))})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx(y,{title:"Validation Status",statement:"v1.0.0 (2026-08-06) was the first stable release; v1.0.1 (2026-11-06) is current. Decode runs are syndrome-validated (H·c = s) through the self-debugging harness, and artifact manifests are SHA-256 sealed on GitHub. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",href:"https://github.com/GuillaumeLessard/qector-decoder",linkLabel:"GitHub Artifacts and Harness →"}),e.jsx("div",{className:"flex flex-wrap gap-4 mt-3 px-1",children:e.jsx(i,{to:"/evidence",className:"text-cyan-300 text-sm hover:underline",children:"Evidence and Reports →"})})]}),e.jsx("div",{ref:r=>t(r,4),className:"text-center py-8",children:e.jsxs("div",{className:"inline-flex flex-wrap gap-4 justify-center",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/commercial",className:"btn-gold",children:"Start Commercial Evaluation"})]})})]})})]})}export{R as default}; diff --git a/assets/Decoder-Esh1GsiS.js b/assets/Decoder-Esh1GsiS.js deleted file mode 100644 index 4fa9d3f6..00000000 --- a/assets/Decoder-Esh1GsiS.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e,r as d}from"./vendor-react-BiHfrq0e.js";import{u as g,S as x,J as b,a as f,A as l,E as y}from"./index-BUYYSLdX.js";import{N as v}from"./NeuralReveal-BflyZYSb.js";import{g as n,S as w}from"./vendor-gsap-a3sj5zmn.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";function j({label:s,value:o,desc:t,icon:r,variant:a="default",centered:m=!1,className:c=""}){const p=a==="compact",h=a==="gold"?"text-gold-400":"text-green-400",u=m?"text-center":"";return o?e.jsxs("div",{className:`card-surface ${u} ${c}`,children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-1",children:s}),e.jsx("div",{className:"text-primary font-bold text-2xl mb-2",children:o}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:t})]}):e.jsxs("div",{className:`${p?"p-4":"p-5"} bg-void border border-gridline rounded-xl transition-colors duration-300 hover:border-cyan-300/30 ${c}`,children:[e.jsxs("div",{className:`${h} font-bold text-sm mb-2 flex items-center gap-2`,children:[r&&e.jsx("span",{"aria-hidden":"true",children:r}),e.jsx("span",{children:s})]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t})]})}n.registerPlugin(w);function R(){const s=d.useRef([]),{version:o}=g();d.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=n.context(()=>{s.current.filter(Boolean).forEach(a=>{n.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const t=(r,a)=>{r&&(s.current[a]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"QECTOR Decoder v3 · QEC Decoding for Python",description:"QECTOR Decoder v3 - 17 decoder configurations in a single Python library. v1.0.1 current stable release (18 wheels, Python 3.9-3.14) with API stability tiers, Relay-BP, CS-OSD, Sinter/qiskit entry points. A reproducible benchmark harness (qector bench) ships with the package for measuring on your own hardware."}),e.jsx(b,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Decoder v3",description:"Poly-algorithmic quantum error correction decoder for Python with exact MWPM and Belief-Matching capabilities.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",programmingLanguage:"Python",url:"https://qector.store/decoder",downloadUrl:"https://pypi.org/project/qector-decoder-v3/",softwareVersion:o,offers:{"@type":"Offer",price:"0",priceCurrency:"USD",availability:"https://schema.org/InStock"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"v",o," (Source-Available) · Free Workbench GUI (CustomTkinter + MCP tools)"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(v,{text:"QECTOR Decoder v3",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["Rust-core Python library implementing 17 decoder configurations from exact MWPM to GPU batch. v1.0.1 is the current stable release: API stability tiers, Relay-BP and CS-OSD, Sinter/qiskit entry points, and the qector CLI, with build provenance for every wheel. A reproducible benchmark harness (qector bench) ships with the package so you can measure on your own hardware. Stim-native. PyPI binary wheels. All artifacts published on"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"GitHub"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/workbench",className:"btn-outline",children:"Free Workbench GUI"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsx("div",{ref:r=>t(r,0),className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",children:[{label:"Decoder Configs",value:"17",desc:"From exact MWPM to GPU batch, across documented stability tiers"},{label:"Binary Wheels",value:"18",desc:"Python 3.9-3.14 on Windows amd64, Linux x86_64, macOS arm64"},{label:"Stable API",value:"v1.0.1",desc:"Stable release with documented API stability tiers"},{label:"CI Test Suite",value:"Automated",desc:"Continuous validation and Stim comparison test suite on GitHub"}].map(r=>e.jsx(j,{label:r.label,value:r.value,desc:r.desc,centered:!0},r.label))}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsx(f,{align:"left",maxWidth:"max-w-none",heading:"Decoding Algorithms",description:"Stable decoders with validation artifacts on GitHub. Experimental decoders are research-stage. Since v1.0.0 the public API is frozen under documented stability tiers. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",className:"mb-6"}),e.jsx("h3",{className:"text-xs font-semibold text-cyan-300 uppercase tracking-widest mb-3",children:"Stable Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-6",children:[{name:"Union-Find",tag:"Near-Linear",color:"green",desc:"Near-linear time approximate decoder. High-throughput option for graph-like codes: trades some LER accuracy for speed."},{name:"Fast Union-Find",tag:"Hot Path",color:"green",desc:"Optimized Union-Find hot path for low-latency offline simulation pipelines."},{name:"Blossom MWPM",tag:"Exact Reference",color:"gold",desc:"Exact minimum-weight perfect matching for graph-like codes. The reference decoder for surface codes."},{name:"CPU & GPU Batch Decoder",tag:"Parallel",color:"gold",desc:'Native CUDA / OpenCL batch decoding for supported workloads. Throughput depends on hardware and batch size; CUDA accepts edge_weights and precision="f64" in v1.0.0.'}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:r.color},desc:r.desc},r.name))}),e.jsx("h3",{className:"text-xs font-semibold text-gold-400 uppercase tracking-widest mb-3",children:"Experimental & Research Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"BP-OSD",tag:"qLDPC Research",color:"purple",desc:"Belief propagation + ordered statistics decoding. v1.0.0 adds Relay-BP schedules, CS-OSD(lambda, w) and LLR damping."},{name:"Belief-Matching",tag:"Correlated Noise",color:"cyan",desc:"BP pre-processing + reweighted exact MWPM. Research path for correlated noise scenarios."},{name:"Sparse Blossom",tag:"Near-Optimal",color:"gold",desc:"Region-growing blossom variant for detector graphs. Zero-allocation hot path in v1.0.0."},{name:"Hybrid & AutoDecoder",tag:"Adaptive Routing",color:"cyan",desc:"AutoDecoder and HybridDecoder route between Union-Find and Blossom based on code properties."},{name:"Lookup-Table Decoder",tag:"Small Codes",color:"gold",desc:"Precomputed correction table for small codes or syndrome subspaces."},{name:"Colour Code / Two-Stage / Ambiguity-Cluster",tag:"Research",color:"purple",desc:"New v1.0.0 families: ColourCodeDecoder (opt-in cluster_bposd), TwoStageDecoder, AmbiguityClusterDecoder."}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:"gold"},desc:r.desc,muted:!0},r.name))})]}),e.jsxs("div",{ref:r=>t(r,2),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Technical Specifications"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[["Languages","Rust core (PyO3) / Python 3.9-3.14 API"],["Platforms","Linux x86_64, macOS arm64, Windows amd64"],["GPU","CUDA / OpenCL batch paths (supported configurations per package docs)"],["QEC Library","Stim (quantum-circuit noise simulation)"],["Packaging","PyPI binary wheels (manylinux, macOS, Windows)"],["License","PolyForm Noncommercial 1.0.0 (community) / Commercial"],["Validation","GitHub: github.com/GuillaumeLessard/qector-decoder"]].map(([r,a])=>e.jsxs("div",{className:"flex gap-3",children:[e.jsx("span",{className:"text-muted-foreground text-sm min-w-[140px] shrink-0",children:r}),e.jsx("span",{className:"text-secondary text-sm min-w-0 break-words",children:a})]},r))})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx(y,{title:"Validation Status",statement:"v1.0.0 (2026-08-06) was the first stable release; v1.0.1 (2026-11-06) is current. Decode runs are syndrome-validated (H·c = s) through the self-debugging harness, and artifact manifests are SHA-256 sealed on GitHub. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",href:"https://github.com/GuillaumeLessard/qector-decoder",linkLabel:"GitHub Artifacts and Harness →"}),e.jsx("div",{className:"flex flex-wrap gap-4 mt-3 px-1",children:e.jsx(i,{to:"/evidence",className:"text-cyan-300 text-sm hover:underline",children:"Evidence and Reports →"})})]}),e.jsx("div",{ref:r=>t(r,4),className:"text-center py-8",children:e.jsxs("div",{className:"inline-flex flex-wrap gap-4 justify-center",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/commercial",className:"btn-gold",children:"Start Commercial Evaluation"})]})})]})})]})}export{R as default}; diff --git a/assets/Decoder-GMF7NEIt.js b/assets/Decoder-GMF7NEIt.js deleted file mode 100644 index b6f99747..00000000 --- a/assets/Decoder-GMF7NEIt.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e,r as d}from"./vendor-react-BiHfrq0e.js";import{u as g,S as x,J as b,a as f,A as l,E as y}from"./index-CpdATiEY.js";import{N as v}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as j}from"./vendor-gsap-a3sj5zmn.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";function w({label:s,value:o,desc:t,icon:r,variant:a="default",centered:m=!1,className:n=""}){const p=a==="compact",h=a==="gold"?"text-gold-400":"text-green-400",u=m?"text-center":"";return o?e.jsxs("div",{className:`card-surface ${u} ${n}`,children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-1",children:s}),e.jsx("div",{className:"text-primary font-bold text-2xl mb-2",children:o}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:t})]}):e.jsxs("div",{className:`${p?"p-4":"p-5"} bg-void border border-gridline rounded-xl transition-colors duration-300 hover:border-cyan-300/30 ${n}`,children:[e.jsxs("div",{className:`${h} font-bold text-sm mb-2 flex items-center gap-2`,children:[r&&e.jsx("span",{"aria-hidden":"true",children:r}),e.jsx("span",{children:s})]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t})]})}c.registerPlugin(j);function R(){const s=d.useRef([]),{version:o}=g();d.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=c.context(()=>{s.current.filter(Boolean).forEach(a=>{c.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const t=(r,a)=>{r&&(s.current[a]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"QECTOR Decoder v3 · QEC Decoding for Python",description:"QECTOR Decoder v3 - 17 decoder configurations in a single Python library. v1.0.0 first stable release with API stability tiers, Relay-BP, CS-OSD, Sinter/qiskit entry points. A reproducible benchmark harness (qector bench) ships with the package for measuring on your own hardware."}),e.jsx(b,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Decoder v3",description:"Poly-algorithmic quantum error correction decoder for Python with exact MWPM and Belief-Matching capabilities.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",programmingLanguage:"Python",url:"https://qector.store/decoder",downloadUrl:"https://pypi.org/project/qector-decoder-v3/",softwareVersion:o,offers:{"@type":"Offer",price:"0",priceCurrency:"USD",availability:"https://schema.org/InStock"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"v",o," (Source-Available) · Free Workbench GUI (CustomTkinter + MCP tools)"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(v,{text:"QECTOR Decoder v3",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["Rust-core Python library implementing 17 decoder configurations from exact MWPM to GPU batch. v1.0.0 is the first stable release: API stability tiers, Relay-BP and CS-OSD, Sinter/qiskit entry points, and the qector CLI. A reproducible benchmark harness (qector bench) ships with the package so you can measure on your own hardware. Stim-native. PyPI binary wheels. All artifacts published on"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"GitHub"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/workbench",className:"btn-outline",children:"Free Workbench GUI"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsx("div",{ref:r=>t(r,0),className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",children:[{label:"Decoder Configs",value:"17",desc:"From exact MWPM to GPU batch, across documented stability tiers"},{label:"Binary Wheels",value:"15",desc:"Python 3.9-3.13 on Windows amd64, Linux x86_64, macOS arm64"},{label:"Stable API",value:"v1.0.0",desc:"First stable release with documented API stability tiers"},{label:"CI Test Suite",value:"Automated",desc:"Continuous validation and Stim comparison test suite on GitHub"}].map(r=>e.jsx(w,{label:r.label,value:r.value,desc:r.desc,centered:!0},r.label))}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsx(f,{align:"left",maxWidth:"max-w-none",heading:"Decoding Algorithms",description:"Stable decoders with validation artifacts on GitHub. Experimental decoders are research-stage. v1.0.0 freezes the public API under documented stability tiers. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",className:"mb-6"}),e.jsx("h3",{className:"text-xs font-semibold text-cyan-300 uppercase tracking-widest mb-3",children:"Stable Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-6",children:[{name:"Union-Find",tag:"Near-Linear",color:"green",desc:"Near-linear time approximate decoder. High-throughput option for graph-like codes: trades some LER accuracy for speed."},{name:"Fast Union-Find",tag:"Hot Path",color:"green",desc:"Optimized Union-Find hot path for low-latency offline simulation pipelines."},{name:"Blossom MWPM",tag:"Exact Reference",color:"gold",desc:"Exact minimum-weight perfect matching for graph-like codes. The reference decoder for surface codes."},{name:"CPU & GPU Batch Decoder",tag:"Parallel",color:"gold",desc:'Native CUDA / OpenCL batch decoding for supported workloads. Throughput depends on hardware and batch size; CUDA accepts edge_weights and precision="f64" in v1.0.0.'}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:r.color},desc:r.desc},r.name))}),e.jsx("h3",{className:"text-xs font-semibold text-gold-400 uppercase tracking-widest mb-3",children:"Experimental & Research Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"BP-OSD",tag:"qLDPC Research",color:"purple",desc:"Belief propagation + ordered statistics decoding. v1.0.0 adds Relay-BP schedules, CS-OSD(lambda, w) and LLR damping."},{name:"Belief-Matching",tag:"Correlated Noise",color:"cyan",desc:"BP pre-processing + reweighted exact MWPM. Research path for correlated noise scenarios."},{name:"Sparse Blossom",tag:"Near-Optimal",color:"gold",desc:"Region-growing blossom variant for detector graphs. Zero-allocation hot path in v1.0.0."},{name:"Hybrid & AutoDecoder",tag:"Adaptive Routing",color:"cyan",desc:"AutoDecoder and HybridDecoder route between Union-Find and Blossom based on code properties."},{name:"Lookup-Table Decoder",tag:"Small Codes",color:"gold",desc:"Precomputed correction table for small codes or syndrome subspaces."},{name:"Colour Code / Two-Stage / Ambiguity-Cluster",tag:"Research",color:"purple",desc:"New v1.0.0 families: ColourCodeDecoder (opt-in cluster_bposd), TwoStageDecoder, AmbiguityClusterDecoder."}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:"gold"},desc:r.desc,muted:!0},r.name))})]}),e.jsxs("div",{ref:r=>t(r,2),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Technical Specifications"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[["Languages","Rust core (PyO3) / Python 3.9-3.13 API"],["Platforms","Linux x86_64, macOS arm64, Windows amd64"],["GPU","CUDA / OpenCL batch paths (supported configurations per package docs)"],["QEC Library","Stim (quantum-circuit noise simulation)"],["Packaging","PyPI binary wheels (manylinux, macOS, Windows)"],["License","PolyForm Noncommercial 1.0.0 (community) / Commercial"],["Validation","GitHub: github.com/GuillaumeLessard/qector-decoder"]].map(([r,a])=>e.jsxs("div",{className:"flex gap-3",children:[e.jsx("span",{className:"text-muted-foreground text-sm min-w-[140px] shrink-0",children:r}),e.jsx("span",{className:"text-secondary text-sm min-w-0 break-words",children:a})]},r))})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx(y,{title:"Validation Status",statement:"v1.0.0 (2026-08-06) is the first stable release. Decode runs are syndrome-validated (H·c = s) through the self-debugging harness, and artifact manifests are SHA-256 sealed on GitHub. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",href:"https://github.com/GuillaumeLessard/qector-decoder",linkLabel:"GitHub Artifacts and Harness →"}),e.jsx("div",{className:"flex flex-wrap gap-4 mt-3 px-1",children:e.jsx(i,{to:"/evidence",className:"text-cyan-300 text-sm hover:underline",children:"Evidence and Reports →"})})]}),e.jsx("div",{ref:r=>t(r,4),className:"text-center py-8",children:e.jsxs("div",{className:"inline-flex flex-wrap gap-4 justify-center",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/commercial",className:"btn-gold",children:"Start Commercial Evaluation"})]})})]})})]})}export{R as default}; diff --git a/assets/Decoder-HV90mkf5.js b/assets/Decoder-HV90mkf5.js deleted file mode 100644 index 2da797e1..00000000 --- a/assets/Decoder-HV90mkf5.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e,r as d}from"./vendor-react-BiHfrq0e.js";import{u as g,S as x,J as b,a as f,A as l,E as y}from"./index-CqAA-ZXu.js";import{N as v}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as j}from"./vendor-gsap-a3sj5zmn.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";function w({label:s,value:o,desc:t,icon:r,variant:a="default",centered:m=!1,className:n=""}){const p=a==="compact",h=a==="gold"?"text-gold-400":"text-green-400",u=m?"text-center":"";return o?e.jsxs("div",{className:`card-surface ${u} ${n}`,children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-1",children:s}),e.jsx("div",{className:"text-primary font-bold text-2xl mb-2",children:o}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:t})]}):e.jsxs("div",{className:`${p?"p-4":"p-5"} bg-void border border-gridline rounded-xl transition-colors duration-300 hover:border-cyan-300/30 ${n}`,children:[e.jsxs("div",{className:`${h} font-bold text-sm mb-2 flex items-center gap-2`,children:[r&&e.jsx("span",{"aria-hidden":"true",children:r}),e.jsx("span",{children:s})]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t})]})}c.registerPlugin(j);function R(){const s=d.useRef([]),{version:o}=g();d.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=c.context(()=>{s.current.filter(Boolean).forEach(a=>{c.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const t=(r,a)=>{r&&(s.current[a]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"QECTOR Decoder v3 · QEC Decoding for Python",description:"QECTOR Decoder v3 - 17 decoder configurations in a single Python library. v1.0.0 first stable release with API stability tiers, Relay-BP, CS-OSD, Sinter/qiskit entry points. A reproducible benchmark harness (qector bench) ships with the package for measuring on your own hardware."}),e.jsx(b,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Decoder v3",description:"Poly-algorithmic quantum error correction decoder for Python with exact MWPM and Belief-Matching capabilities.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",programmingLanguage:"Python",url:"https://qector.store/decoder",downloadUrl:"https://pypi.org/project/qector-decoder-v3/",softwareVersion:o,offers:{"@type":"Offer",price:"0",priceCurrency:"USD",availability:"https://schema.org/InStock"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"v",o," (Source-Available) · Free Workbench GUI (CustomTkinter + MCP tools)"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(v,{text:"QECTOR Decoder v3",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["Rust-core Python library implementing 17 decoder configurations from exact MWPM to GPU batch. v1.0.0 is the first stable release: API stability tiers, Relay-BP and CS-OSD, Sinter/qiskit entry points, and the qector CLI. A reproducible benchmark harness (qector bench) ships with the package so you can measure on your own hardware. Stim-native. PyPI binary wheels. All artifacts published on"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"GitHub"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/workbench",className:"btn-outline",children:"Free Workbench GUI"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsx("div",{ref:r=>t(r,0),className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",children:[{label:"Decoder Configs",value:"17",desc:"From exact MWPM to GPU batch, across documented stability tiers"},{label:"Binary Wheels",value:"15",desc:"Python 3.9-3.13 on Windows amd64, Linux x86_64, macOS arm64"},{label:"Stable API",value:"v1.0.0",desc:"First stable release with documented API stability tiers"},{label:"CI Test Suite",value:"Automated",desc:"Continuous validation and Stim comparison test suite on GitHub"}].map(r=>e.jsx(w,{label:r.label,value:r.value,desc:r.desc,centered:!0},r.label))}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsx(f,{align:"left",maxWidth:"max-w-none",heading:"Decoding Algorithms",description:"Stable decoders with validation artifacts on GitHub. Experimental decoders are research-stage. v1.0.0 freezes the public API under documented stability tiers. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",className:"mb-6"}),e.jsx("h3",{className:"text-xs font-semibold text-cyan-300 uppercase tracking-widest mb-3",children:"Stable Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-6",children:[{name:"Union-Find",tag:"Near-Linear",color:"green",desc:"Near-linear time approximate decoder. High-throughput option for graph-like codes: trades some LER accuracy for speed."},{name:"Fast Union-Find",tag:"Hot Path",color:"green",desc:"Optimized Union-Find hot path for low-latency offline simulation pipelines."},{name:"Blossom MWPM",tag:"Exact Reference",color:"gold",desc:"Exact minimum-weight perfect matching for graph-like codes. The reference decoder for surface codes."},{name:"CPU & GPU Batch Decoder",tag:"Parallel",color:"gold",desc:'Native CUDA / OpenCL batch decoding for supported workloads. Throughput depends on hardware and batch size; CUDA accepts edge_weights and precision="f64" in v1.0.0.'}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:r.color},desc:r.desc},r.name))}),e.jsx("h3",{className:"text-xs font-semibold text-gold-400 uppercase tracking-widest mb-3",children:"Experimental & Research Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"BP-OSD",tag:"qLDPC Research",color:"purple",desc:"Belief propagation + ordered statistics decoding. v1.0.0 adds Relay-BP schedules, CS-OSD(lambda, w) and LLR damping."},{name:"Belief-Matching",tag:"Correlated Noise",color:"cyan",desc:"BP pre-processing + reweighted exact MWPM. Research path for correlated noise scenarios."},{name:"Sparse Blossom",tag:"Near-Optimal",color:"gold",desc:"Region-growing blossom variant for detector graphs. Zero-allocation hot path in v1.0.0."},{name:"Hybrid & AutoDecoder",tag:"Adaptive Routing",color:"cyan",desc:"AutoDecoder and HybridDecoder route between Union-Find and Blossom based on code properties."},{name:"Lookup-Table Decoder",tag:"Small Codes",color:"gold",desc:"Precomputed correction table for small codes or syndrome subspaces."},{name:"Colour Code / Two-Stage / Ambiguity-Cluster",tag:"Research",color:"purple",desc:"New v1.0.0 families: ColourCodeDecoder (opt-in cluster_bposd), TwoStageDecoder, AmbiguityClusterDecoder."}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:"gold"},desc:r.desc,muted:!0},r.name))})]}),e.jsxs("div",{ref:r=>t(r,2),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Technical Specifications"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[["Languages","Rust core (PyO3) / Python 3.9-3.13 API"],["Platforms","Linux x86_64, macOS arm64, Windows amd64"],["GPU","CUDA / OpenCL batch paths (supported configurations per package docs)"],["QEC Library","Stim (quantum-circuit noise simulation)"],["Packaging","PyPI binary wheels (manylinux, macOS, Windows)"],["License","PolyForm Noncommercial 1.0.0 (community) / Commercial"],["Validation","GitHub: github.com/GuillaumeLessard/qector-decoder"]].map(([r,a])=>e.jsxs("div",{className:"flex gap-3",children:[e.jsx("span",{className:"text-muted-foreground text-sm min-w-[140px] shrink-0",children:r}),e.jsx("span",{className:"text-secondary text-sm min-w-0 break-words",children:a})]},r))})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx(y,{title:"Validation Status",statement:"v1.0.0 (2026-08-06) is the first stable release. Decode runs are syndrome-validated (H·c = s) through the self-debugging harness, and artifact manifests are SHA-256 sealed on GitHub. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",href:"https://github.com/GuillaumeLessard/qector-decoder",linkLabel:"GitHub Artifacts and Harness →"}),e.jsx("div",{className:"flex flex-wrap gap-4 mt-3 px-1",children:e.jsx(i,{to:"/evidence",className:"text-cyan-300 text-sm hover:underline",children:"Evidence and Reports →"})})]}),e.jsx("div",{ref:r=>t(r,4),className:"text-center py-8",children:e.jsxs("div",{className:"inline-flex flex-wrap gap-4 justify-center",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/commercial",className:"btn-gold",children:"Start Commercial Evaluation"})]})})]})})]})}export{R as default}; diff --git a/assets/Decoder-LpFGwXBi.js b/assets/Decoder-LpFGwXBi.js deleted file mode 100644 index 8c8d3369..00000000 --- a/assets/Decoder-LpFGwXBi.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e,r as d}from"./vendor-react-BiHfrq0e.js";import{u as g,S as x,J as b,L as i,a as f,A as l,E as y}from"./index-CcwlvHYJ.js";import{N as v}from"./NeuralReveal-Bsl9IGCr.js";import{g as n,S as w}from"./vendor-gsap-a3sj5zmn.js";import"./vendor-ui-B0ssGG4c.js";function j({label:s,value:o,desc:t,icon:r,variant:a="default",centered:m=!1,className:c=""}){const p=a==="compact",h=a==="gold"?"text-gold-400":"text-green-400",u=m?"text-center":"";return o?e.jsxs("div",{className:`card-surface ${u} ${c}`,children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-1",children:s}),e.jsx("div",{className:"text-primary font-bold text-2xl mb-2",children:o}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:t})]}):e.jsxs("div",{className:`${p?"p-4":"p-5"} bg-void border border-gridline rounded-xl transition-colors duration-300 hover:border-cyan-300/30 ${c}`,children:[e.jsxs("div",{className:`${h} font-bold text-sm mb-2 flex items-center gap-2`,children:[r&&e.jsx("span",{"aria-hidden":"true",children:r}),e.jsx("span",{children:s})]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t})]})}n.registerPlugin(w);function D(){const s=d.useRef([]),{version:o}=g();d.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=n.context(()=>{s.current.filter(Boolean).forEach(a=>{n.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const t=(r,a)=>{r&&(s.current[a]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"QECTOR Decoder v3 · QEC Decoding for Python",description:"QECTOR Decoder v3 - 17 decoder configurations in a single Python library. v1.0.1 current stable release (18 wheels, Python 3.9-3.14) with API stability tiers, Relay-BP, CS-OSD, Sinter/qiskit entry points. A reproducible benchmark harness (qector bench) ships with the package for measuring on your own hardware."}),e.jsx(b,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Decoder v3",description:"Poly-algorithmic quantum error correction decoder for Python with exact MWPM and Belief-Matching capabilities.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",programmingLanguage:"Python",url:"https://qector.store/decoder",downloadUrl:"https://pypi.org/project/qector-decoder-v3/",softwareVersion:o,offers:{"@type":"Offer",price:"0",priceCurrency:"USD",availability:"https://schema.org/InStock"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"v",o," (Source-Available) · Free Workbench GUI (CustomTkinter + MCP tools)"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(v,{text:"QECTOR Decoder v3",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["Rust-core Python library implementing 17 decoder configurations from exact MWPM to GPU batch. v1.0.1 is the current stable release: API stability tiers, Relay-BP and CS-OSD, Sinter/qiskit entry points, and the qector CLI, with build provenance for every wheel. A reproducible benchmark harness (qector bench) ships with the package so you can measure on your own hardware. Stim-native. PyPI binary wheels. All artifacts published on"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"GitHub"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/workbench",className:"btn-outline",children:"Free Workbench GUI"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsx("div",{ref:r=>t(r,0),className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",children:[{label:"Decoder Configs",value:"17",desc:"From exact MWPM to GPU batch, across documented stability tiers"},{label:"Binary Wheels",value:"18",desc:"Python 3.9-3.14 on Windows amd64, Linux x86_64, macOS arm64"},{label:"Stable API",value:"v1.0.1",desc:"Stable release with documented API stability tiers"},{label:"CI Test Suite",value:"Automated",desc:"Continuous validation and Stim comparison test suite on GitHub"}].map(r=>e.jsx(j,{label:r.label,value:r.value,desc:r.desc,centered:!0},r.label))}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsx(f,{align:"left",maxWidth:"max-w-none",heading:"Decoding Algorithms",description:"Stable decoders with validation artifacts on GitHub. Experimental decoders are research-stage. Since v1.0.0 the public API is frozen under documented stability tiers. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",className:"mb-6"}),e.jsx("h3",{className:"text-xs font-semibold text-cyan-300 uppercase tracking-widest mb-3",children:"Stable Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-6",children:[{name:"Union-Find",tag:"Near-Linear",color:"green",desc:"Near-linear time approximate decoder. High-throughput option for graph-like codes: trades some LER accuracy for speed."},{name:"Fast Union-Find",tag:"Hot Path",color:"green",desc:"Optimized Union-Find hot path for low-latency offline simulation pipelines."},{name:"Blossom MWPM",tag:"Exact Reference",color:"gold",desc:"Exact minimum-weight perfect matching for graph-like codes. The reference decoder for surface codes."},{name:"CPU & GPU Batch Decoder",tag:"Parallel",color:"gold",desc:'Native CUDA / OpenCL batch decoding for supported workloads. Throughput depends on hardware and batch size; CUDA accepts edge_weights and precision="f64" in v1.0.0.'}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:r.color},desc:r.desc},r.name))}),e.jsx("h3",{className:"text-xs font-semibold text-gold-400 uppercase tracking-widest mb-3",children:"Experimental & Research Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"BP-OSD",tag:"qLDPC Research",color:"purple",desc:"Belief propagation + ordered statistics decoding. v1.0.0 adds Relay-BP schedules, CS-OSD(lambda, w) and LLR damping."},{name:"Belief-Matching",tag:"Correlated Noise",color:"cyan",desc:"BP pre-processing + reweighted exact MWPM. Research path for correlated noise scenarios."},{name:"Sparse Blossom",tag:"Near-Optimal",color:"gold",desc:"Region-growing blossom variant for detector graphs. Zero-allocation hot path in v1.0.0."},{name:"Hybrid & AutoDecoder",tag:"Adaptive Routing",color:"cyan",desc:"AutoDecoder and HybridDecoder route between Union-Find and Blossom based on code properties."},{name:"Lookup-Table Decoder",tag:"Small Codes",color:"gold",desc:"Precomputed correction table for small codes or syndrome subspaces."},{name:"Colour Code / Two-Stage / Ambiguity-Cluster",tag:"Research",color:"purple",desc:"New v1.0.0 families: ColourCodeDecoder (opt-in cluster_bposd), TwoStageDecoder, AmbiguityClusterDecoder."}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:"gold"},desc:r.desc,muted:!0},r.name))})]}),e.jsxs("div",{ref:r=>t(r,2),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Technical Specifications"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[["Languages","Rust core (PyO3) / Python 3.9-3.14 API"],["Platforms","Linux x86_64, macOS arm64, Windows amd64"],["GPU","CUDA / OpenCL batch paths (supported configurations per package docs)"],["QEC Library","Stim (quantum-circuit noise simulation)"],["Packaging","PyPI binary wheels (manylinux, macOS, Windows)"],["License","PolyForm Noncommercial 1.0.0 (community) / Commercial"],["Validation","GitHub: github.com/GuillaumeLessard/qector-decoder"]].map(([r,a])=>e.jsxs("div",{className:"flex gap-3",children:[e.jsx("span",{className:"text-muted-foreground text-sm min-w-[140px] shrink-0",children:r}),e.jsx("span",{className:"text-secondary text-sm min-w-0 break-words",children:a})]},r))})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx(y,{title:"Validation Status",statement:"v1.0.0 (2026-08-06) was the first stable release; v1.0.1 (2026-11-06) is current. Decode runs are syndrome-validated (H·c = s) through the self-debugging harness, and artifact manifests are SHA-256 sealed on GitHub. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",href:"https://github.com/GuillaumeLessard/qector-decoder",linkLabel:"GitHub Artifacts and Harness →"}),e.jsx("div",{className:"flex flex-wrap gap-4 mt-3 px-1",children:e.jsx(i,{to:"/evidence",className:"text-cyan-300 text-sm hover:underline",children:"Evidence and Reports →"})})]}),e.jsx("div",{ref:r=>t(r,4),className:"text-center py-8",children:e.jsxs("div",{className:"inline-flex flex-wrap gap-4 justify-center",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/commercial",className:"btn-gold",children:"Start Commercial Evaluation"})]})})]})})]})}export{D as default}; diff --git a/assets/Decoder-biNq2b_R.js b/assets/Decoder-biNq2b_R.js deleted file mode 100644 index a3a8cbc9..00000000 --- a/assets/Decoder-biNq2b_R.js +++ /dev/null @@ -1 +0,0 @@ -import{r as n,j as e}from"./vendor-react-BiHfrq0e.js";import{u as l,S as m,J as h,L as s,a as p,A as d,E as u}from"./index-CCmwjNGU.js";import{N as g}from"./NeuralReveal-uYarhiMA.js";import{M as x}from"./MetricCard-BJ0ePioZ.js";import{g as o,S as b}from"./vendor-gsap-a3sj5zmn.js";import"./vendor-ui-B8TlNU4J.js";o.registerPlugin(b);function N(){const i=n.useRef([]),{version:c}=l();n.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=o.context(()=>{i.current.filter(Boolean).forEach(a=>{o.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const t=(r,a)=>{r&&(i.current[a]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(m,{title:"QECTOR Decoder v3 · QEC Decoding for Python",description:"QECTOR Decoder v3 - 17 decoder configurations in a single Python library. v1.0.1 current stable release (18 wheels, Python 3.9-3.14) with API stability tiers, Relay-BP, CS-OSD, Sinter/qiskit entry points. A reproducible benchmark harness (qector bench) ships with the package for measuring on your own hardware.",alternates:[{lang:"en",href:"https://qector.store/decoder/"},{lang:"fr",href:"https://qector.store/fr/decoder/"}]}),e.jsx(h,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Decoder v3",description:"Poly-algorithmic quantum error correction decoder for Python with exact MWPM and Belief-Matching capabilities.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",programmingLanguage:"Python",url:"https://qector.store/decoder",downloadUrl:"https://pypi.org/project/qector-decoder-v3/",softwareVersion:c,offers:{"@type":"Offer",price:"0",priceCurrency:"USD",availability:"https://schema.org/InStock"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"v",c," (Source-Available) · Free Workbench GUI (CustomTkinter + MCP tools)"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(g,{text:"QECTOR Decoder v3",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["Rust-core Python library implementing 17 decoder configurations from exact MWPM to GPU batch. v1.0.1 is the current stable release: API stability tiers, Relay-BP and CS-OSD, Sinter/qiskit entry points, and the qector CLI, with build provenance for every wheel. A reproducible benchmark harness (qector bench) ships with the package so you can measure on your own hardware. Stim-native. PyPI binary wheels. All artifacts published on"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"GitHub"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(s,{to:"/workbench",className:"btn-outline",children:"Free Workbench GUI"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsx("div",{ref:r=>t(r,0),className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",children:[{label:"Decoder Configs",value:"17",desc:"From exact MWPM to GPU batch, across documented stability tiers"},{label:"Binary Wheels",value:"18",desc:"Python 3.9-3.14 on Windows amd64, Linux x86_64, macOS arm64"},{label:"Stable API",value:"v1.0.1",desc:"Stable release with documented API stability tiers"},{label:"CI Test Suite",value:"Automated",desc:"Continuous validation and Stim comparison test suite on GitHub"}].map(r=>e.jsx(x,{label:r.label,value:r.value,desc:r.desc,centered:!0},r.label))}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsx(p,{align:"left",maxWidth:"max-w-none",heading:"Decoding Algorithms",description:"Stable decoders with validation artifacts on GitHub. Experimental decoders are research-stage. Since v1.0.0 the public API is frozen under documented stability tiers. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",className:"mb-6"}),e.jsx("h3",{className:"text-xs font-semibold text-cyan-300 uppercase tracking-widest mb-3",children:"Stable Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-6",children:[{name:"Union-Find",tag:"Near-Linear",color:"green",desc:"Near-linear time approximate decoder. High-throughput option for graph-like codes: trades some LER accuracy for speed."},{name:"Fast Union-Find",tag:"Hot Path",color:"green",desc:"Optimized Union-Find hot path for low-latency offline simulation pipelines."},{name:"Blossom MWPM",tag:"Exact Reference",color:"gold",desc:"Exact minimum-weight perfect matching for graph-like codes. The reference decoder for surface codes."},{name:"CPU & GPU Batch Decoder",tag:"Parallel",color:"gold",desc:'Native CUDA / OpenCL batch decoding for supported workloads. Throughput depends on hardware and batch size; CUDA accepts edge_weights and precision="f64" in v1.0.0.'}].map(r=>e.jsx(d,{title:r.name,badge:{label:r.tag,color:r.color},desc:r.desc},r.name))}),e.jsx("h3",{className:"text-xs font-semibold text-gold-400 uppercase tracking-widest mb-3",children:"Experimental & Research Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"BP-OSD",tag:"qLDPC Research",color:"purple",desc:"Belief propagation + ordered statistics decoding. v1.0.0 adds Relay-BP schedules, CS-OSD(lambda, w) and LLR damping."},{name:"Belief-Matching",tag:"Correlated Noise",color:"cyan",desc:"BP pre-processing + reweighted exact MWPM. Research path for correlated noise scenarios."},{name:"Sparse Blossom",tag:"Near-Optimal",color:"gold",desc:"Region-growing blossom variant for detector graphs. Zero-allocation hot path in v1.0.0."},{name:"Hybrid & AutoDecoder",tag:"Adaptive Routing",color:"cyan",desc:"AutoDecoder and HybridDecoder route between Union-Find and Blossom based on code properties."},{name:"Lookup-Table Decoder",tag:"Small Codes",color:"gold",desc:"Precomputed correction table for small codes or syndrome subspaces."},{name:"Colour Code / Two-Stage / Ambiguity-Cluster",tag:"Research",color:"purple",desc:"New v1.0.0 families: ColourCodeDecoder (opt-in cluster_bposd), TwoStageDecoder, AmbiguityClusterDecoder."}].map(r=>e.jsx(d,{title:r.name,badge:{label:r.tag,color:"gold"},desc:r.desc,muted:!0},r.name))})]}),e.jsxs("div",{ref:r=>t(r,2),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Technical Specifications"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[["Languages","Rust core (PyO3) / Python 3.9-3.14 API"],["Platforms","Linux x86_64, macOS arm64, Windows amd64"],["GPU","CUDA / OpenCL batch paths (supported configurations per package docs)"],["QEC Library","Stim (quantum-circuit noise simulation)"],["Packaging","PyPI binary wheels (manylinux, macOS, Windows)"],["License","PolyForm Noncommercial 1.0.0 (community) / Commercial"],["Validation","GitHub: github.com/GuillaumeLessard/qector-decoder"]].map(([r,a])=>e.jsxs("div",{className:"flex gap-3",children:[e.jsx("span",{className:"text-muted-foreground text-sm min-w-[140px] shrink-0",children:r}),e.jsx("span",{className:"text-secondary text-sm min-w-0 break-words",children:a})]},r))})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx(u,{title:"Validation Status",statement:"v1.0.0 (2026-08-06) was the first stable release; v1.0.1 (2026-11-06) is current. Decode runs are syndrome-validated (H·c = s) through the self-debugging harness, and artifact manifests are SHA-256 sealed on GitHub. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",href:"https://github.com/GuillaumeLessard/qector-decoder",linkLabel:"GitHub Artifacts and Harness →"}),e.jsx("div",{className:"flex flex-wrap gap-4 mt-3 px-1",children:e.jsx(s,{to:"/evidence",className:"text-cyan-300 text-sm hover:underline",children:"Evidence and Reports →"})})]}),e.jsx("div",{ref:r=>t(r,4),className:"text-center py-8",children:e.jsxs("div",{className:"inline-flex flex-wrap gap-4 justify-center",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(s,{to:"/commercial",className:"btn-gold",children:"Start Commercial Evaluation"})]})})]})})]})}export{N as default}; diff --git a/assets/Decoder-c0PrhrVs.js b/assets/Decoder-c0PrhrVs.js deleted file mode 100644 index 98ea8188..00000000 --- a/assets/Decoder-c0PrhrVs.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e,r as d}from"./vendor-react-BiHfrq0e.js";import{u as g,S as x,J as b,L as i,a as f,A as l,E as y}from"./index-c1PDYu0j.js";import{N as v}from"./NeuralReveal-uYarhiMA.js";import{g as n,S as w}from"./vendor-gsap-a3sj5zmn.js";import"./vendor-ui-B8TlNU4J.js";function j({label:s,value:o,desc:t,icon:r,variant:a="default",centered:m=!1,className:c=""}){const p=a==="compact",h=a==="gold"?"text-gold-400":"text-green-400",u=m?"text-center":"";return o?e.jsxs("div",{className:`card-surface ${u} ${c}`,children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-1",children:s}),e.jsx("div",{className:"text-primary font-bold text-2xl mb-2",children:o}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:t})]}):e.jsxs("div",{className:`${p?"p-4":"p-5"} bg-void border border-gridline rounded-xl transition-colors duration-300 hover:border-cyan-300/30 ${c}`,children:[e.jsxs("div",{className:`${h} font-bold text-sm mb-2 flex items-center gap-2`,children:[r&&e.jsx("span",{"aria-hidden":"true",children:r}),e.jsx("span",{children:s})]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t})]})}n.registerPlugin(w);function D(){const s=d.useRef([]),{version:o}=g();d.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=n.context(()=>{s.current.filter(Boolean).forEach(a=>{n.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const t=(r,a)=>{r&&(s.current[a]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"QECTOR Decoder v3 · QEC Decoding for Python",description:"QECTOR Decoder v3 - 17 decoder configurations in a single Python library. v1.0.1 current stable release (18 wheels, Python 3.9-3.14) with API stability tiers, Relay-BP, CS-OSD, Sinter/qiskit entry points. A reproducible benchmark harness (qector bench) ships with the package for measuring on your own hardware."}),e.jsx(b,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Decoder v3",description:"Poly-algorithmic quantum error correction decoder for Python with exact MWPM and Belief-Matching capabilities.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",programmingLanguage:"Python",url:"https://qector.store/decoder",downloadUrl:"https://pypi.org/project/qector-decoder-v3/",softwareVersion:o,offers:{"@type":"Offer",price:"0",priceCurrency:"USD",availability:"https://schema.org/InStock"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"v",o," (Source-Available) · Free Workbench GUI (CustomTkinter + MCP tools)"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(v,{text:"QECTOR Decoder v3",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["Rust-core Python library implementing 17 decoder configurations from exact MWPM to GPU batch. v1.0.1 is the current stable release: API stability tiers, Relay-BP and CS-OSD, Sinter/qiskit entry points, and the qector CLI, with build provenance for every wheel. A reproducible benchmark harness (qector bench) ships with the package so you can measure on your own hardware. Stim-native. PyPI binary wheels. All artifacts published on"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"GitHub"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/workbench",className:"btn-outline",children:"Free Workbench GUI"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsx("div",{ref:r=>t(r,0),className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",children:[{label:"Decoder Configs",value:"17",desc:"From exact MWPM to GPU batch, across documented stability tiers"},{label:"Binary Wheels",value:"18",desc:"Python 3.9-3.14 on Windows amd64, Linux x86_64, macOS arm64"},{label:"Stable API",value:"v1.0.1",desc:"Stable release with documented API stability tiers"},{label:"CI Test Suite",value:"Automated",desc:"Continuous validation and Stim comparison test suite on GitHub"}].map(r=>e.jsx(j,{label:r.label,value:r.value,desc:r.desc,centered:!0},r.label))}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsx(f,{align:"left",maxWidth:"max-w-none",heading:"Decoding Algorithms",description:"Stable decoders with validation artifacts on GitHub. Experimental decoders are research-stage. Since v1.0.0 the public API is frozen under documented stability tiers. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",className:"mb-6"}),e.jsx("h3",{className:"text-xs font-semibold text-cyan-300 uppercase tracking-widest mb-3",children:"Stable Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-6",children:[{name:"Union-Find",tag:"Near-Linear",color:"green",desc:"Near-linear time approximate decoder. High-throughput option for graph-like codes: trades some LER accuracy for speed."},{name:"Fast Union-Find",tag:"Hot Path",color:"green",desc:"Optimized Union-Find hot path for low-latency offline simulation pipelines."},{name:"Blossom MWPM",tag:"Exact Reference",color:"gold",desc:"Exact minimum-weight perfect matching for graph-like codes. The reference decoder for surface codes."},{name:"CPU & GPU Batch Decoder",tag:"Parallel",color:"gold",desc:'Native CUDA / OpenCL batch decoding for supported workloads. Throughput depends on hardware and batch size; CUDA accepts edge_weights and precision="f64" in v1.0.0.'}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:r.color},desc:r.desc},r.name))}),e.jsx("h3",{className:"text-xs font-semibold text-gold-400 uppercase tracking-widest mb-3",children:"Experimental & Research Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"BP-OSD",tag:"qLDPC Research",color:"purple",desc:"Belief propagation + ordered statistics decoding. v1.0.0 adds Relay-BP schedules, CS-OSD(lambda, w) and LLR damping."},{name:"Belief-Matching",tag:"Correlated Noise",color:"cyan",desc:"BP pre-processing + reweighted exact MWPM. Research path for correlated noise scenarios."},{name:"Sparse Blossom",tag:"Near-Optimal",color:"gold",desc:"Region-growing blossom variant for detector graphs. Zero-allocation hot path in v1.0.0."},{name:"Hybrid & AutoDecoder",tag:"Adaptive Routing",color:"cyan",desc:"AutoDecoder and HybridDecoder route between Union-Find and Blossom based on code properties."},{name:"Lookup-Table Decoder",tag:"Small Codes",color:"gold",desc:"Precomputed correction table for small codes or syndrome subspaces."},{name:"Colour Code / Two-Stage / Ambiguity-Cluster",tag:"Research",color:"purple",desc:"New v1.0.0 families: ColourCodeDecoder (opt-in cluster_bposd), TwoStageDecoder, AmbiguityClusterDecoder."}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:"gold"},desc:r.desc,muted:!0},r.name))})]}),e.jsxs("div",{ref:r=>t(r,2),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Technical Specifications"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[["Languages","Rust core (PyO3) / Python 3.9-3.14 API"],["Platforms","Linux x86_64, macOS arm64, Windows amd64"],["GPU","CUDA / OpenCL batch paths (supported configurations per package docs)"],["QEC Library","Stim (quantum-circuit noise simulation)"],["Packaging","PyPI binary wheels (manylinux, macOS, Windows)"],["License","PolyForm Noncommercial 1.0.0 (community) / Commercial"],["Validation","GitHub: github.com/GuillaumeLessard/qector-decoder"]].map(([r,a])=>e.jsxs("div",{className:"flex gap-3",children:[e.jsx("span",{className:"text-muted-foreground text-sm min-w-[140px] shrink-0",children:r}),e.jsx("span",{className:"text-secondary text-sm min-w-0 break-words",children:a})]},r))})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx(y,{title:"Validation Status",statement:"v1.0.0 (2026-08-06) was the first stable release; v1.0.1 (2026-11-06) is current. Decode runs are syndrome-validated (H·c = s) through the self-debugging harness, and artifact manifests are SHA-256 sealed on GitHub. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",href:"https://github.com/GuillaumeLessard/qector-decoder",linkLabel:"GitHub Artifacts and Harness →"}),e.jsx("div",{className:"flex flex-wrap gap-4 mt-3 px-1",children:e.jsx(i,{to:"/evidence",className:"text-cyan-300 text-sm hover:underline",children:"Evidence and Reports →"})})]}),e.jsx("div",{ref:r=>t(r,4),className:"text-center py-8",children:e.jsxs("div",{className:"inline-flex flex-wrap gap-4 justify-center",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/commercial",className:"btn-gold",children:"Start Commercial Evaluation"})]})})]})})]})}export{D as default}; diff --git a/assets/Decoder-s2E7Qqrc.js b/assets/Decoder-s2E7Qqrc.js deleted file mode 100644 index 518a7e5f..00000000 --- a/assets/Decoder-s2E7Qqrc.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e,r as d}from"./vendor-react-BiHfrq0e.js";import{u as g,S as x,J as b,a as f,A as l,E as y}from"./index-DRAXObZB.js";import{N as v}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as j}from"./vendor-gsap-a3sj5zmn.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";function w({label:s,value:o,desc:t,icon:r,variant:a="default",centered:m=!1,className:n=""}){const p=a==="compact",h=a==="gold"?"text-gold-400":"text-green-400",u=m?"text-center":"";return o?e.jsxs("div",{className:`card-surface ${u} ${n}`,children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-1",children:s}),e.jsx("div",{className:"text-primary font-bold text-2xl mb-2",children:o}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:t})]}):e.jsxs("div",{className:`${p?"p-4":"p-5"} bg-void border border-gridline rounded-xl transition-colors duration-300 hover:border-cyan-300/30 ${n}`,children:[e.jsxs("div",{className:`${h} font-bold text-sm mb-2 flex items-center gap-2`,children:[r&&e.jsx("span",{"aria-hidden":"true",children:r}),e.jsx("span",{children:s})]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t})]})}c.registerPlugin(j);function R(){const s=d.useRef([]),{version:o}=g();d.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=c.context(()=>{s.current.filter(Boolean).forEach(a=>{c.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const t=(r,a)=>{r&&(s.current[a]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"QECTOR Decoder v3 · QEC Decoding for Python",description:"QECTOR Decoder v3 - 17 decoder configurations in a single Python library. v1.0.0 first stable release with API stability tiers, Relay-BP, CS-OSD, Sinter/qiskit entry points. A reproducible benchmark harness (qector bench) ships with the package for measuring on your own hardware."}),e.jsx(b,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Decoder v3",description:"Poly-algorithmic quantum error correction decoder for Python with exact MWPM and Belief-Matching capabilities.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",programmingLanguage:"Python",url:"https://qector.store/decoder",downloadUrl:"https://pypi.org/project/qector-decoder-v3/",softwareVersion:o,offers:{"@type":"Offer",price:"0",priceCurrency:"USD",availability:"https://schema.org/InStock"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"v",o," (Source-Available) · Free Workbench GUI (CustomTkinter + MCP tools)"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(v,{text:"QECTOR Decoder v3",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["Rust-core Python library implementing 17 decoder configurations from exact MWPM to GPU batch. v1.0.0 is the first stable release: API stability tiers, Relay-BP and CS-OSD, Sinter/qiskit entry points, and the qector CLI. A reproducible benchmark harness (qector bench) ships with the package so you can measure on your own hardware. Stim-native. PyPI binary wheels. All artifacts published on"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"GitHub"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/workbench",className:"btn-outline",children:"Free Workbench GUI"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsx("div",{ref:r=>t(r,0),className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",children:[{label:"Decoder Configs",value:"17",desc:"From exact MWPM to GPU batch, across documented stability tiers"},{label:"Binary Wheels",value:"15",desc:"Python 3.9-3.13 on Windows amd64, Linux x86_64, macOS arm64"},{label:"Stable API",value:"v1.0.0",desc:"First stable release with documented API stability tiers"},{label:"CI Test Suite",value:"Automated",desc:"Continuous validation and Stim comparison test suite on GitHub"}].map(r=>e.jsx(w,{label:r.label,value:r.value,desc:r.desc,centered:!0},r.label))}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsx(f,{align:"left",maxWidth:"max-w-none",heading:"Decoding Algorithms",description:"Stable decoders with validation artifacts on GitHub. Experimental decoders are research-stage. v1.0.0 freezes the public API under documented stability tiers. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",className:"mb-6"}),e.jsx("h3",{className:"text-xs font-semibold text-cyan-300 uppercase tracking-widest mb-3",children:"Stable Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-6",children:[{name:"Union-Find",tag:"Near-Linear",color:"green",desc:"Near-linear time approximate decoder. High-throughput option for graph-like codes: trades some LER accuracy for speed."},{name:"Fast Union-Find",tag:"Hot Path",color:"green",desc:"Optimized Union-Find hot path for low-latency offline simulation pipelines."},{name:"Blossom MWPM",tag:"Exact Reference",color:"gold",desc:"Exact minimum-weight perfect matching for graph-like codes. The reference decoder for surface codes."},{name:"CPU & GPU Batch Decoder",tag:"Parallel",color:"gold",desc:'Native CUDA / OpenCL batch decoding for supported workloads. Throughput depends on hardware and batch size; CUDA accepts edge_weights and precision="f64" in v1.0.0.'}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:r.color},desc:r.desc},r.name))}),e.jsx("h3",{className:"text-xs font-semibold text-gold-400 uppercase tracking-widest mb-3",children:"Experimental & Research Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"BP-OSD",tag:"qLDPC Research",color:"purple",desc:"Belief propagation + ordered statistics decoding. v1.0.0 adds Relay-BP schedules, CS-OSD(lambda, w) and LLR damping."},{name:"Belief-Matching",tag:"Correlated Noise",color:"cyan",desc:"BP pre-processing + reweighted exact MWPM. Research path for correlated noise scenarios."},{name:"Sparse Blossom",tag:"Near-Optimal",color:"gold",desc:"Region-growing blossom variant for detector graphs. Zero-allocation hot path in v1.0.0."},{name:"Hybrid & AutoDecoder",tag:"Adaptive Routing",color:"cyan",desc:"AutoDecoder and HybridDecoder route between Union-Find and Blossom based on code properties."},{name:"Lookup-Table Decoder",tag:"Small Codes",color:"gold",desc:"Precomputed correction table for small codes or syndrome subspaces."},{name:"Colour Code / Two-Stage / Ambiguity-Cluster",tag:"Research",color:"purple",desc:"New v1.0.0 families: ColourCodeDecoder (opt-in cluster_bposd), TwoStageDecoder, AmbiguityClusterDecoder."}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:"gold"},desc:r.desc,muted:!0},r.name))})]}),e.jsxs("div",{ref:r=>t(r,2),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Technical Specifications"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[["Languages","Rust core (PyO3) / Python 3.9-3.13 API"],["Platforms","Linux x86_64, macOS arm64, Windows amd64"],["GPU","CUDA / OpenCL batch paths (supported configurations per package docs)"],["QEC Library","Stim (quantum-circuit noise simulation)"],["Packaging","PyPI binary wheels (manylinux, macOS, Windows)"],["License","PolyForm Noncommercial 1.0.0 (community) / Commercial"],["Validation","GitHub: github.com/GuillaumeLessard/qector-decoder"]].map(([r,a])=>e.jsxs("div",{className:"flex gap-3",children:[e.jsx("span",{className:"text-muted-foreground text-sm min-w-[140px] shrink-0",children:r}),e.jsx("span",{className:"text-secondary text-sm min-w-0 break-words",children:a})]},r))})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx(y,{title:"Validation Status",statement:"v1.0.0 (2026-08-06) is the first stable release. Decode runs are syndrome-validated (H·c = s) through the self-debugging harness, and artifact manifests are SHA-256 sealed on GitHub. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",href:"https://github.com/GuillaumeLessard/qector-decoder",linkLabel:"GitHub Artifacts and Harness →"}),e.jsx("div",{className:"flex flex-wrap gap-4 mt-3 px-1",children:e.jsx(i,{to:"/evidence",className:"text-cyan-300 text-sm hover:underline",children:"Evidence and Reports →"})})]}),e.jsx("div",{ref:r=>t(r,4),className:"text-center py-8",children:e.jsxs("div",{className:"inline-flex flex-wrap gap-4 justify-center",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/commercial",className:"btn-gold",children:"Start Commercial Evaluation"})]})})]})})]})}export{R as default}; diff --git a/assets/Decoder-tKogflLK.js b/assets/Decoder-tKogflLK.js deleted file mode 100644 index 8ce3c3f6..00000000 --- a/assets/Decoder-tKogflLK.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e,r as d}from"./vendor-react-BiHfrq0e.js";import{u as g,S as x,J as b,a as f,A as l,E as y}from"./index-DlmjLVYe.js";import{N as v}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as j}from"./vendor-gsap-a3sj5zmn.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";function w({label:s,value:o,desc:t,icon:r,variant:a="default",centered:m=!1,className:n=""}){const p=a==="compact",h=a==="gold"?"text-gold-400":"text-green-400",u=m?"text-center":"";return o?e.jsxs("div",{className:`card-surface ${u} ${n}`,children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-1",children:s}),e.jsx("div",{className:"text-primary font-bold text-2xl mb-2",children:o}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:t})]}):e.jsxs("div",{className:`${p?"p-4":"p-5"} bg-void border border-gridline rounded-xl transition-colors duration-300 hover:border-cyan-300/30 ${n}`,children:[e.jsxs("div",{className:`${h} font-bold text-sm mb-2 flex items-center gap-2`,children:[r&&e.jsx("span",{"aria-hidden":"true",children:r}),e.jsx("span",{children:s})]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t})]})}c.registerPlugin(j);function R(){const s=d.useRef([]),{version:o}=g();d.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=c.context(()=>{s.current.filter(Boolean).forEach(a=>{c.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{r.revert()}},[]);const t=(r,a)=>{r&&(s.current[a]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"QECTOR Decoder v3 · QEC Decoding for Python",description:"QECTOR Decoder v3 - 17 decoder configurations in a single Python library. v1.0.0 first stable release with API stability tiers, Relay-BP, CS-OSD, Sinter/qiskit entry points. A reproducible benchmark harness (qector bench) ships with the package for measuring on your own hardware."}),e.jsx(b,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Decoder v3",description:"Poly-algorithmic quantum error correction decoder for Python with exact MWPM and Belief-Matching capabilities.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",programmingLanguage:"Python",url:"https://qector.store/decoder",downloadUrl:"https://pypi.org/project/qector-decoder-v3/",softwareVersion:o,offers:{"@type":"Offer",price:"0",priceCurrency:"USD",availability:"https://schema.org/InStock"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"v",o," (Source-Available) · Free Workbench GUI (CustomTkinter + MCP tools)"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(v,{text:"QECTOR Decoder v3",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["Rust-core Python library implementing 17 decoder configurations from exact MWPM to GPU batch. v1.0.0 is the first stable release: API stability tiers, Relay-BP and CS-OSD, Sinter/qiskit entry points, and the qector CLI. A reproducible benchmark harness (qector bench) ships with the package so you can measure on your own hardware. Stim-native. PyPI binary wheels. All artifacts published on"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"GitHub"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/workbench",className:"btn-outline",children:"Free Workbench GUI"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsx("div",{ref:r=>t(r,0),className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",children:[{label:"Decoder Configs",value:"17",desc:"From exact MWPM to GPU batch, across documented stability tiers"},{label:"Binary Wheels",value:"15",desc:"Python 3.9-3.13 on Windows amd64, Linux x86_64, macOS arm64"},{label:"Stable API",value:"v1.0.0",desc:"First stable release with documented API stability tiers"},{label:"CI Test Suite",value:"Automated",desc:"Continuous validation and Stim comparison test suite on GitHub"}].map(r=>e.jsx(w,{label:r.label,value:r.value,desc:r.desc,centered:!0},r.label))}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsx(f,{align:"left",maxWidth:"max-w-none",heading:"Decoding Algorithms",description:"Stable decoders with validation artifacts on GitHub. Experimental decoders are research-stage. v1.0.0 freezes the public API under documented stability tiers. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",className:"mb-6"}),e.jsx("h3",{className:"text-xs font-semibold text-cyan-300 uppercase tracking-widest mb-3",children:"Stable Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-6",children:[{name:"Union-Find",tag:"Near-Linear",color:"green",desc:"Near-linear time approximate decoder. High-throughput option for graph-like codes: trades some LER accuracy for speed."},{name:"Fast Union-Find",tag:"Hot Path",color:"green",desc:"Optimized Union-Find hot path for low-latency offline simulation pipelines."},{name:"Blossom MWPM",tag:"Exact Reference",color:"gold",desc:"Exact minimum-weight perfect matching for graph-like codes. The reference decoder for surface codes."},{name:"CPU & GPU Batch Decoder",tag:"Parallel",color:"gold",desc:'Native CUDA / OpenCL batch decoding for supported workloads. Throughput depends on hardware and batch size; CUDA accepts edge_weights and precision="f64" in v1.0.0.'}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:r.color},desc:r.desc},r.name))}),e.jsx("h3",{className:"text-xs font-semibold text-gold-400 uppercase tracking-widest mb-3",children:"Experimental & Research Decoders"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"BP-OSD",tag:"qLDPC Research",color:"purple",desc:"Belief propagation + ordered statistics decoding. v1.0.0 adds Relay-BP schedules, CS-OSD(lambda, w) and LLR damping."},{name:"Belief-Matching",tag:"Correlated Noise",color:"cyan",desc:"BP pre-processing + reweighted exact MWPM. Research path for correlated noise scenarios."},{name:"Sparse Blossom",tag:"Near-Optimal",color:"gold",desc:"Region-growing blossom variant for detector graphs. Zero-allocation hot path in v1.0.0."},{name:"Hybrid & AutoDecoder",tag:"Adaptive Routing",color:"cyan",desc:"AutoDecoder and HybridDecoder route between Union-Find and Blossom based on code properties."},{name:"Lookup-Table Decoder",tag:"Small Codes",color:"gold",desc:"Precomputed correction table for small codes or syndrome subspaces."},{name:"Colour Code / Two-Stage / Ambiguity-Cluster",tag:"Research",color:"purple",desc:"New v1.0.0 families: ColourCodeDecoder (opt-in cluster_bposd), TwoStageDecoder, AmbiguityClusterDecoder."}].map(r=>e.jsx(l,{title:r.name,badge:{label:r.tag,color:"gold"},desc:r.desc,muted:!0},r.name))})]}),e.jsxs("div",{ref:r=>t(r,2),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Technical Specifications"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[["Languages","Rust core (PyO3) / Python 3.9-3.13 API"],["Platforms","Linux x86_64, macOS arm64, Windows amd64"],["GPU","CUDA / OpenCL batch paths (supported configurations per package docs)"],["QEC Library","Stim (quantum-circuit noise simulation)"],["Packaging","PyPI binary wheels (manylinux, macOS, Windows)"],["License","PolyForm Noncommercial 1.0.0 (community) / Commercial"],["Validation","GitHub: github.com/GuillaumeLessard/qector-decoder"]].map(([r,a])=>e.jsxs("div",{className:"flex gap-3",children:[e.jsx("span",{className:"text-muted-foreground text-sm min-w-[140px] shrink-0",children:r}),e.jsx("span",{className:"text-secondary text-sm min-w-0 break-words",children:a})]},r))})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx(y,{title:"Validation Status",statement:"v1.0.0 (2026-08-06) is the first stable release. Decode runs are syndrome-validated (H·c = s) through the self-debugging harness, and artifact manifests are SHA-256 sealed on GitHub. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.",href:"https://github.com/GuillaumeLessard/qector-decoder",linkLabel:"GitHub Artifacts and Harness →"}),e.jsx("div",{className:"flex flex-wrap gap-4 mt-3 px-1",children:e.jsx(i,{to:"/evidence",className:"text-cyan-300 text-sm hover:underline",children:"Evidence and Reports →"})})]}),e.jsx("div",{ref:r=>t(r,4),className:"text-center py-8",children:e.jsxs("div",{className:"inline-flex flex-wrap gap-4 justify-center",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(i,{to:"/commercial",className:"btn-gold",children:"Start Commercial Evaluation"})]})})]})})]})}export{R as default}; diff --git a/assets/DecoderFR-DlRe5BDF.js b/assets/DecoderFR-DlRe5BDF.js deleted file mode 100644 index 43b75b20..00000000 --- a/assets/DecoderFR-DlRe5BDF.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{u as o,S as c,J as n,L as a,a as l,A as r,E as d}from"./index-CCmwjNGU.js";import{N as u}from"./NeuralReveal-uYarhiMA.js";import{M as m}from"./MetricCard-BJ0ePioZ.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const p=[{name:"Union-Find",tag:"Quasi linéaire",color:"green",desc:"Décodeur approché en temps quasi linéaire. L’option à haut débit pour les codes de type graphe : un peu moins précis, beaucoup plus rapide."},{name:"Fast Union-Find",tag:"Chemin rapide",color:"green",desc:"Chemin Union-Find optimisé pour les pipelines de simulation hors ligne à faible latence."},{name:"Blossom MWPM",tag:"Référence exacte",color:"gold",desc:"Couplage parfait de poids minimal exact pour les codes de type graphe. Le décodeur de référence des codes de surface."},{name:"Décodage par lots CPU et GPU",tag:"Parallèle",color:"gold",desc:'Décodage par lots natif CUDA / OpenCL pour les charges prises en charge. Le débit dépend du matériel et de la taille des lots; CUDA accepte edge_weights et precision="f64" depuis la v1.0.0.'}],g=[{name:"BP-OSD",tag:"Recherche qLDPC",desc:"Propagation de croyance + décodage par statistiques ordonnées. La v1.0.0 ajoute les ordonnancements Relay-BP, CS-OSD(lambda, w) et l’amortissement des LLR."},{name:"Belief-Matching",tag:"Bruit corrélé",desc:"Prétraitement BP + MWPM exact repondéré. Voie de recherche pour le bruit corrélé."},{name:"Sparse Blossom",tag:"Quasi optimal",desc:"Variante blossom par croissance de régions pour les graphes de détecteurs. Chemin sans allocation depuis la v1.0.0."},{name:"Hybrid et AutoDecoder",tag:"Routage adaptatif",desc:"AutoDecoder et HybridDecoder choisissent entre Union-Find et Blossom selon les propriétés du code."},{name:"Décodeur à table",tag:"Petits codes",desc:"Table de corrections précalculée pour les petits codes ou des sous-espaces de syndromes."},{name:"Code couleur / Deux étapes / Grappes d’ambiguïté",tag:"Recherche",desc:"Familles ajoutées en v1.0.0 : ColourCodeDecoder (cluster_bposd optionnel), TwoStageDecoder, AmbiguityClusterDecoder."}],h=[["Langages","Noyau Rust (PyO3) / API Python 3.9 à 3.14"],["Plateformes","Linux x86_64, macOS arm64, Windows amd64"],["GPU","Chemins par lots CUDA / OpenCL (configurations prises en charge selon la documentation)"],["Bibliothèque QEC","Stim (simulation de bruit sur circuits quantiques)"],["Distribution","Roues binaires PyPI (manylinux, macOS, Windows)"],["Licence","PolyForm Noncommercial 1.0.0 (communauté) / commerciale"],["Validation","GitHub : github.com/GuillaumeLessard/qector-decoder"]];function P(){const{version:t}=o();return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"QECTOR Decoder v3 · Décodage QEC pour Python",description:"QECTOR Decoder v3 : 17 configurations de décodeurs dans une seule bibliothèque Python. Version stable 1.0.1 (18 roues, Python 3.9 à 3.14), paliers de stabilité d’API, Relay-BP, CS-OSD, Sinter et qiskit, et le banc d’essai qector bench.",lang:"fr",alternates:[{lang:"en",href:"https://qector.store/decoder/"},{lang:"fr",href:"https://qector.store/fr/decoder/"}]}),e.jsx(n,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Decoder v3",inLanguage:"fr",description:"Décodeur polyalgorithmique de correction d’erreurs quantiques pour Python, avec MWPM exact et Belief-Matching.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",programmingLanguage:"Python",url:"https://qector.store/fr/decoder/",downloadUrl:"https://pypi.org/project/qector-decoder-v3/",softwareVersion:t,offers:{"@type":"Offer",price:"0",priceCurrency:"USD",availability:"https://schema.org/InStock"}}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"eyebrow-pill mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300 animate-pulse-dot"}),"v",t," (code source disponible) · Workbench gratuit"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(u,{text:"QECTOR Decoder v3",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["Bibliothèque Python à noyau Rust offrant 17 configurations de décodeurs, du MWPM exact au décodage GPU par lots. La v1.0.1 est la version stable actuelle : paliers de stabilité d’API, Relay-BP et CS-OSD, points d’entrée Sinter et qiskit, et l’outil en ligne de commande qector, avec une provenance de compilation pour chaque roue. Le banc d’essai reproductible qector bench est inclus pour mesurer sur votre propre matériel. Compatible Stim, roues binaires sur PyPI, artefacts publiés sur"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"GitHub"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(a,{to:"/fr/pricing",className:"btn-outline",children:"Voir les forfaits"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",children:[{label:"Configurations",value:"17",desc:"Du MWPM exact au GPU par lots, selon des paliers de stabilité documentés"},{label:"Roues binaires",value:"18",desc:"Python 3.9 à 3.14 sur Windows amd64, Linux x86_64 et macOS arm64"},{label:"API stable",value:"v1.0.1",desc:"Version stable avec paliers de stabilité d’API documentés"},{label:"Tests CI",value:"Automatisés",desc:"Validation continue et comparaison avec Stim sur GitHub"}].map(s=>e.jsx(m,{label:s.label,value:s.value,desc:s.desc,centered:!0},s.label))}),e.jsxs("div",{children:[e.jsx(l,{align:"left",maxWidth:"max-w-none",heading:"Algorithmes de décodage",description:"Décodeurs stables avec artefacts de validation sur GitHub; les décodeurs expérimentaux sont au stade de la recherche. Depuis la v1.0.0, l’API publique est figée selon des paliers de stabilité documentés. Aucun chiffre de performance universel n’est publié : mesurez sur votre matériel avec qector bench.",className:"mb-6"}),e.jsx("h2",{className:"text-xs font-semibold text-cyan-300 uppercase tracking-widest mb-3",children:"Décodeurs stables"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-6",children:p.map(s=>e.jsx(r,{title:s.name,badge:{label:s.tag,color:s.color},desc:s.desc},s.name))}),e.jsx("h2",{className:"text-xs font-semibold text-gold-400 uppercase tracking-widest mb-3",children:"Décodeurs expérimentaux et de recherche"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:g.map(s=>e.jsx(r,{title:s.name,badge:{label:s.tag,color:"gold"},desc:s.desc,muted:!0},s.name))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider mb-4",children:"Caractéristiques techniques"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:h.map(([s,i])=>e.jsxs("div",{className:"flex gap-3",children:[e.jsx("span",{className:"text-muted-foreground text-sm min-w-[140px] shrink-0",children:s}),e.jsx("span",{className:"text-secondary text-sm min-w-0 break-words",children:i})]},s))})]}),e.jsxs("div",{children:[e.jsx(d,{title:"État de la validation",statement:"La v1.0.0 (2026-08-06) a été la première version stable; la v1.0.1 (2026-11-06) est la version actuelle. Chaque décodage est vérifié contre son syndrome (H·c = s) et les manifestes d’artefacts sont scellés par SHA-256 sur GitHub. Aucun chiffre de performance universel n’est publié; qector bench est inclus pour mesurer sur votre matériel.",href:"https://github.com/GuillaumeLessard/qector-decoder",linkLabel:"Artefacts et banc d’essai sur GitHub →"}),e.jsxs("p",{className:"text-sm mt-3 px-1",children:[e.jsx(a,{to:"/decoder",hrefLang:"en",lang:"en",className:"text-cyan-300 hover:underline",children:"Detailed English page"}),e.jsx("span",{className:"text-muted-foreground",children:" · "}),e.jsx(a,{to:"/getting-started",hrefLang:"en",className:"text-cyan-300 hover:underline",children:"Tutoriel (en anglais)"})]})]}),e.jsx("div",{className:"text-center py-8",children:e.jsxs("div",{className:"inline-flex flex-wrap gap-4 justify-center",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"pip install qector-decoder-v3"}),e.jsx(a,{to:"/fr/license",className:"btn-gold",children:"Licences commerciales"})]})})]})})]})}export{P as default}; diff --git a/assets/Docs-B3K5DZpI.js b/assets/Docs-B3K5DZpI.js deleted file mode 100644 index 3957ec1f..00000000 --- a/assets/Docs-B3K5DZpI.js +++ /dev/null @@ -1 +0,0 @@ -import{r as l,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c}from"./index-CpdATiEY.js";import{N as d}from"./NeuralReveal-BflyZYSb.js";import{g as i,S as x}from"./vendor-gsap-a3sj5zmn.js";import{L as a}from"./vendor-PiU4YGcH.js";import{F as m,P as h,t as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";i.registerPlugin(x);function y(){const n=l.useRef([]);l.useEffect(()=>{const t=i.context(()=>{n.current.filter(Boolean).forEach(r=>{i.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{t.revert()}},[]);const s=(t,r)=>{t&&(n.current[r]=t)},o=[{title:"Claude Code Plugin",desc:"v1.0.6: 28 skills, 5 agents, four MCP servers, and explicit local tool profiles",href:"/claude-plugin"},{title:"Workbench (Win / Linux)",desc:"Free desktop GUI with an 85-tool MCP server, v1.0.7 on Windows/Linux",href:"/workbench"},{title:"MCP Server",desc:"App-free local library MCP server exposing 8 local tools",href:"/mcp-server"},{title:"Technical Reference",desc:"API documentation, decoder parameters, code examples",href:"/technical-reference"},{title:"User Manual",desc:"Installation, configuration, workflow guides",href:"/manual"},{title:"Package Reference (v1.0.0)",desc:"Extended reference manual for qector-decoder-v3 Python package",href:"/docs/reference.md"},{title:"Installation Guide",desc:"Platform-specific setup instructions",href:"/installer"},{title:"Evidence & Reports",desc:"Six-record Zenodo registry, validation artifacts and reproducibility data",href:"/evidence"},{title:"Changelog",desc:"Version history and release notes",href:"/changelog"}];return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Documentation · QECTOR",description:"Documentation hub for QECTOR quantum error correction decoder. API reference, user manual, installation guides, and validation reports."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Python 3.9-3.13 · Linux · macOS · Windows"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Documentation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:"Install, configure, and integrate QECTOR Decoder v3 with your QEC stack. Stim, PyMatching, Sinter, and Qiskit compatible."}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-8",children:[e.jsxs("div",{ref:t=>s(t,0),className:"card-surface text-center",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Quick Install"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground inline-block text-left",children:"pip install qector-decoder-v3"}),e.jsxs("div",{className:"mt-4 flex flex-wrap gap-3 justify-center",children:[e.jsx(a,{to:"/installer",className:"btn-outline text-sm",children:"Full Installation Guide"}),e.jsx(a,{to:"/manual",className:"btn-outline text-sm",children:"User Manual"})]})]}),e.jsx("div",{ref:t=>s(t,1),className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:o.map(t=>t.href.startsWith("/docs/")?e.jsxs("a",{href:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title):e.jsxs(a,{to:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title))}),e.jsxs("div",{ref:t=>s(t,2),className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"External Resources"}),e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(m,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Repository"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Source code, issues, and contributions"})]})]}),e.jsxs("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(h,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"PyPI Package"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Latest release and installation"})]})]}),e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(u,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"github.com/GuillaumeLessard/qector-decoder"})]})]})]})]})]})})]})}export{y as default}; diff --git a/assets/Docs-BF06L5iZ.js b/assets/Docs-BF06L5iZ.js deleted file mode 100644 index aef60a08..00000000 --- a/assets/Docs-BF06L5iZ.js +++ /dev/null @@ -1 +0,0 @@ -import{r as l,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c}from"./index-WV1aysjN.js";import{N as d}from"./NeuralReveal-BflyZYSb.js";import{g as i,S as x}from"./vendor-gsap-a3sj5zmn.js";import{L as a}from"./vendor-PiU4YGcH.js";import{F as m,P as h,t as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";i.registerPlugin(x);function y(){const n=l.useRef([]);l.useEffect(()=>{const t=i.context(()=>{n.current.filter(Boolean).forEach(r=>{i.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{t.revert()}},[]);const s=(t,r)=>{t&&(n.current[r]=t)},o=[{title:"Claude Code Plugin",desc:"v1.0.6: 28 skills, 5 agents, four MCP servers, and explicit local tool profiles",href:"/claude-plugin"},{title:"Workbench (Win / Linux)",desc:"Free desktop GUI with an 85-tool MCP server, v1.0.7 on Windows/Linux",href:"/workbench"},{title:"MCP Server",desc:"App-free local library MCP server exposing 8 local tools",href:"/mcp-server"},{title:"Technical Reference",desc:"API documentation, decoder parameters, code examples",href:"/technical-reference"},{title:"User Manual",desc:"Installation, configuration, workflow guides",href:"/manual"},{title:"Package Reference (v1.0.0)",desc:"Extended reference manual for qector-decoder-v3 Python package",href:"/docs/reference.md"},{title:"Installation Guide",desc:"Platform-specific setup instructions",href:"/installer"},{title:"Evidence & Reports",desc:"Six-record Zenodo registry, validation artifacts and reproducibility data",href:"/evidence"},{title:"Changelog",desc:"Version history and release notes",href:"/changelog"}];return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Documentation · QECTOR",description:"Documentation hub for QECTOR quantum error correction decoder. API reference, user manual, installation guides, and validation reports."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Python 3.9-3.13 · Linux · macOS · Windows"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Documentation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:"Install, configure, and integrate QECTOR Decoder v3 with your QEC stack. Stim, PyMatching, Sinter, and Qiskit compatible."}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-8",children:[e.jsxs("div",{ref:t=>s(t,0),className:"card-surface text-center",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Quick Install"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground inline-block text-left",children:"pip install qector-decoder-v3"}),e.jsxs("div",{className:"mt-4 flex flex-wrap gap-3 justify-center",children:[e.jsx(a,{to:"/installer",className:"btn-outline text-sm",children:"Full Installation Guide"}),e.jsx(a,{to:"/manual",className:"btn-outline text-sm",children:"User Manual"})]})]}),e.jsx("div",{ref:t=>s(t,1),className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:o.map(t=>t.href.startsWith("/docs/")?e.jsxs("a",{href:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title):e.jsxs(a,{to:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title))}),e.jsxs("div",{ref:t=>s(t,2),className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"External Resources"}),e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(m,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Repository"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Source code, issues, and contributions"})]})]}),e.jsxs("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(h,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"PyPI Package"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Latest release and installation"})]})]}),e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(u,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"github.com/GuillaumeLessard/qector-decoder"})]})]})]})]})]})})]})}export{y as default}; diff --git a/assets/Docs-BVov2Mkr.js b/assets/Docs-BVov2Mkr.js deleted file mode 100644 index 1d145317..00000000 --- a/assets/Docs-BVov2Mkr.js +++ /dev/null @@ -1 +0,0 @@ -import{r as l,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c}from"./index-DRAXObZB.js";import{N as d}from"./NeuralReveal-BflyZYSb.js";import{g as i,S as x}from"./vendor-gsap-a3sj5zmn.js";import{L as a}from"./vendor-PiU4YGcH.js";import{F as m,P as h,t as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";i.registerPlugin(x);function y(){const n=l.useRef([]);l.useEffect(()=>{const t=i.context(()=>{n.current.filter(Boolean).forEach(r=>{i.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{t.revert()}},[]);const s=(t,r)=>{t&&(n.current[r]=t)},o=[{title:"Claude Code Plugin",desc:"v1.0.6: 28 skills, 5 agents, four MCP servers, and explicit local tool profiles",href:"/claude-plugin"},{title:"Workbench (Win / Linux)",desc:"Free desktop GUI with an 85-tool MCP server, v1.0.7 on Windows/Linux",href:"/workbench"},{title:"MCP Server",desc:"App-free local library MCP server exposing 8 local tools",href:"/mcp-server"},{title:"Technical Reference",desc:"API documentation, decoder parameters, code examples",href:"/technical-reference"},{title:"User Manual",desc:"Installation, configuration, workflow guides",href:"/manual"},{title:"Package Reference (v1.0.0)",desc:"Extended reference manual for qector-decoder-v3 Python package",href:"/docs/reference.md"},{title:"Installation Guide",desc:"Platform-specific setup instructions",href:"/installer"},{title:"Evidence & Reports",desc:"Six-record Zenodo registry, validation artifacts and reproducibility data",href:"/evidence"},{title:"Changelog",desc:"Version history and release notes",href:"/changelog"}];return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Documentation · QECTOR",description:"Documentation hub for QECTOR quantum error correction decoder. API reference, user manual, installation guides, and validation reports."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Python 3.9-3.13 · Linux · macOS · Windows"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Documentation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:"Install, configure, and integrate QECTOR Decoder v3 with your QEC stack. Stim, PyMatching, Sinter, and Qiskit compatible."}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-8",children:[e.jsxs("div",{ref:t=>s(t,0),className:"card-surface text-center",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Quick Install"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground inline-block text-left",children:"pip install qector-decoder-v3"}),e.jsxs("div",{className:"mt-4 flex flex-wrap gap-3 justify-center",children:[e.jsx(a,{to:"/installer",className:"btn-outline text-sm",children:"Full Installation Guide"}),e.jsx(a,{to:"/manual",className:"btn-outline text-sm",children:"User Manual"})]})]}),e.jsx("div",{ref:t=>s(t,1),className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:o.map(t=>t.href.startsWith("/docs/")?e.jsxs("a",{href:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title):e.jsxs(a,{to:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title))}),e.jsxs("div",{ref:t=>s(t,2),className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"External Resources"}),e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(m,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Repository"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Source code, issues, and contributions"})]})]}),e.jsxs("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(h,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"PyPI Package"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Latest release and installation"})]})]}),e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(u,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"github.com/GuillaumeLessard/qector-decoder"})]})]})]})]})]})})]})}export{y as default}; diff --git a/assets/Docs-Bm6ILkhb.js b/assets/Docs-Bm6ILkhb.js deleted file mode 100644 index 259768e7..00000000 --- a/assets/Docs-Bm6ILkhb.js +++ /dev/null @@ -1 +0,0 @@ -import{r as l,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c}from"./index-CxWP17m6.js";import{N as d}from"./NeuralReveal-BflyZYSb.js";import{g as i,S as x}from"./vendor-gsap-a3sj5zmn.js";import{L as a}from"./vendor-PiU4YGcH.js";import{F as m,P as h,t as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";i.registerPlugin(x);function y(){const n=l.useRef([]);l.useEffect(()=>{const t=i.context(()=>{n.current.filter(Boolean).forEach(r=>{i.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{t.revert()}},[]);const s=(t,r)=>{t&&(n.current[r]=t)},o=[{title:"Claude Code Plugin",desc:"v2.0.1: 28 skills, 5 agents, air-gapped qector-secure server with 12 schema-validated tools",href:"/claude-plugin"},{title:"Workbench (Win / Linux)",desc:"Free desktop GUI with an 85-tool MCP server, v1.0.7 on Windows/Linux",href:"/workbench"},{title:"MCP Server",desc:"App-free local library MCP server exposing 8 local tools",href:"/mcp-server"},{title:"Technical Reference",desc:"API documentation, decoder parameters, code examples",href:"/technical-reference"},{title:"User Manual",desc:"Installation, configuration, workflow guides",href:"/manual"},{title:"Package Reference (v1.0.1)",desc:"Extended reference manual for qector-decoder-v3 Python package",href:"/docs/reference.md"},{title:"Installation Guide",desc:"Platform-specific setup instructions",href:"/installer"},{title:"Evidence & Reports",desc:"Six-record Zenodo registry, validation artifacts and reproducibility data",href:"/evidence"},{title:"Changelog",desc:"Version history and release notes",href:"/changelog"}];return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Documentation · QECTOR",description:"Documentation hub for QECTOR quantum error correction decoder. API reference, user manual, installation guides, and validation reports."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Python 3.9-3.14 · Linux · macOS · Windows"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Documentation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:"Install, configure, and integrate QECTOR Decoder v3 with your QEC stack. Stim, PyMatching, Sinter, and Qiskit compatible."}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-8",children:[e.jsxs("div",{ref:t=>s(t,0),className:"card-surface text-center",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Quick Install"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground inline-block text-left",children:"pip install qector-decoder-v3"}),e.jsxs("div",{className:"mt-4 flex flex-wrap gap-3 justify-center",children:[e.jsx(a,{to:"/installer",className:"btn-outline text-sm",children:"Full Installation Guide"}),e.jsx(a,{to:"/manual",className:"btn-outline text-sm",children:"User Manual"})]})]}),e.jsx("div",{ref:t=>s(t,1),className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:o.map(t=>t.href.startsWith("/docs/")?e.jsxs("a",{href:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title):e.jsxs(a,{to:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title))}),e.jsxs("div",{ref:t=>s(t,2),className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"External Resources"}),e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(m,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Repository"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Source code, issues, and contributions"})]})]}),e.jsxs("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(h,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"PyPI Package"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Latest release and installation"})]})]}),e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(u,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"github.com/GuillaumeLessard/qector-decoder"})]})]})]})]})]})})]})}export{y as default}; diff --git a/assets/Docs-C271TpRb.js b/assets/Docs-C271TpRb.js deleted file mode 100644 index 3ecab1da..00000000 --- a/assets/Docs-C271TpRb.js +++ /dev/null @@ -1 +0,0 @@ -import{r as l,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,L as a}from"./index-PdoH5kLF.js";import{N as d}from"./NeuralReveal-Bsl9IGCr.js";import{g as i,S as x}from"./vendor-gsap-a3sj5zmn.js";import{F as m,P as h,t as u}from"./vendor-ui-B8TlNU4J.js";i.registerPlugin(x);function j(){const n=l.useRef([]);l.useEffect(()=>{const t=i.context(()=>{n.current.filter(Boolean).forEach(r=>{i.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{t.revert()}},[]);const s=(t,r)=>{t&&(n.current[r]=t)},o=[{title:"Claude Code Plugin",desc:"v2.0.1: 28 skills, 5 agents, air-gapped qector-secure server with 12 schema-validated tools",href:"/claude-plugin"},{title:"Workbench (Win / Linux)",desc:"Free desktop GUI with an 85-tool MCP server, v1.0.7 on Windows/Linux",href:"/workbench"},{title:"MCP Server",desc:"App-free local library MCP server exposing 8 local tools",href:"/mcp-server"},{title:"Technical Reference",desc:"API documentation, decoder parameters, code examples",href:"/technical-reference"},{title:"User Manual",desc:"Installation, configuration, workflow guides",href:"/manual"},{title:"Package Reference (v1.0.1)",desc:"Extended reference manual for qector-decoder-v3 Python package",href:"/docs/reference.md"},{title:"Installation Guide",desc:"Platform-specific setup instructions",href:"/installer"},{title:"Evidence & Reports",desc:"Six-record Zenodo registry, validation artifacts and reproducibility data",href:"/evidence"},{title:"Changelog",desc:"Version history and release notes",href:"/changelog"}];return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Documentation · QECTOR",description:"Documentation hub for QECTOR quantum error correction decoder. API reference, user manual, installation guides, and validation reports."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Python 3.9-3.14 · Linux · macOS · Windows"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Documentation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:"Install, configure, and integrate QECTOR Decoder v3 with your QEC stack. Stim, PyMatching, Sinter, and Qiskit compatible."}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-8",children:[e.jsxs("div",{ref:t=>s(t,0),className:"card-surface text-center",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Quick Install"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground inline-block text-left",children:"pip install qector-decoder-v3"}),e.jsxs("div",{className:"mt-4 flex flex-wrap gap-3 justify-center",children:[e.jsx(a,{to:"/installer",className:"btn-outline text-sm",children:"Full Installation Guide"}),e.jsx(a,{to:"/manual",className:"btn-outline text-sm",children:"User Manual"})]})]}),e.jsx("div",{ref:t=>s(t,1),className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:o.map(t=>t.href.startsWith("/docs/")?e.jsxs("a",{href:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title):e.jsxs(a,{to:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title))}),e.jsxs("div",{ref:t=>s(t,2),className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"External Resources"}),e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(m,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Repository"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Source code, issues, and contributions"})]})]}),e.jsxs("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(h,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"PyPI Package"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Latest release and installation"})]})]}),e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(u,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"github.com/GuillaumeLessard/qector-decoder"})]})]})]})]})]})})]})}export{j as default}; diff --git a/assets/Docs-CEW0_2Sk.js b/assets/Docs-CEW0_2Sk.js deleted file mode 100644 index 500fc2de..00000000 --- a/assets/Docs-CEW0_2Sk.js +++ /dev/null @@ -1 +0,0 @@ -import{r as l,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c}from"./index-_BpMZhV3.js";import{N as d}from"./NeuralReveal-BflyZYSb.js";import{g as i,S as x}from"./vendor-gsap-a3sj5zmn.js";import{L as a}from"./vendor-PiU4YGcH.js";import{F as m,P as h,t as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";i.registerPlugin(x);function y(){const n=l.useRef([]);l.useEffect(()=>{const t=i.context(()=>{n.current.filter(Boolean).forEach(r=>{i.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{t.revert()}},[]);const s=(t,r)=>{t&&(n.current[r]=t)},o=[{title:"Claude Code Plugin",desc:"v1.0.6: 28 skills, 5 agents, four MCP servers, and explicit local tool profiles",href:"/claude-plugin"},{title:"Workbench (Win / Linux)",desc:"Free desktop GUI with an 85-tool MCP server, v1.0.7 on Windows/Linux",href:"/workbench"},{title:"MCP Server",desc:"App-free local library MCP server exposing 8 local tools",href:"/mcp-server"},{title:"Technical Reference",desc:"API documentation, decoder parameters, code examples",href:"/technical-reference"},{title:"User Manual",desc:"Installation, configuration, workflow guides",href:"/manual"},{title:"Package Reference (v1.0.0)",desc:"Extended reference manual for qector-decoder-v3 Python package",href:"/docs/reference.md"},{title:"Installation Guide",desc:"Platform-specific setup instructions",href:"/installer"},{title:"Evidence & Reports",desc:"Six-record Zenodo registry, validation artifacts and reproducibility data",href:"/evidence"},{title:"Changelog",desc:"Version history and release notes",href:"/changelog"}];return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Documentation · QECTOR",description:"Documentation hub for QECTOR quantum error correction decoder. API reference, user manual, installation guides, and validation reports."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Python 3.9-3.13 · Linux · macOS · Windows"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Documentation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:"Install, configure, and integrate QECTOR Decoder v3 with your QEC stack. Stim, PyMatching, Sinter, and Qiskit compatible."}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-8",children:[e.jsxs("div",{ref:t=>s(t,0),className:"card-surface text-center",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Quick Install"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground inline-block text-left",children:"pip install qector-decoder-v3"}),e.jsxs("div",{className:"mt-4 flex flex-wrap gap-3 justify-center",children:[e.jsx(a,{to:"/installer",className:"btn-outline text-sm",children:"Full Installation Guide"}),e.jsx(a,{to:"/manual",className:"btn-outline text-sm",children:"User Manual"})]})]}),e.jsx("div",{ref:t=>s(t,1),className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:o.map(t=>t.href.startsWith("/docs/")?e.jsxs("a",{href:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title):e.jsxs(a,{to:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title))}),e.jsxs("div",{ref:t=>s(t,2),className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"External Resources"}),e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(m,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Repository"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Source code, issues, and contributions"})]})]}),e.jsxs("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(h,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"PyPI Package"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Latest release and installation"})]})]}),e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(u,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"github.com/GuillaumeLessard/qector-decoder"})]})]})]})]})]})})]})}export{y as default}; diff --git a/assets/Docs-CEpRVtVA.js b/assets/Docs-CEpRVtVA.js deleted file mode 100644 index b9dbabe6..00000000 --- a/assets/Docs-CEpRVtVA.js +++ /dev/null @@ -1 +0,0 @@ -import{r as l,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c}from"./index-abfjMTlQ.js";import{N as d}from"./NeuralReveal-D-EQoOl2.js";import{g as i,S as x}from"./vendor-gsap-a3sj5zmn.js";import{L as a}from"./vendor-PiU4YGcH.js";import{F as m,P as h,t as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";i.registerPlugin(x);function y(){const n=l.useRef([]);l.useEffect(()=>{const t=i.context(()=>{n.current.filter(Boolean).forEach(r=>{i.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{t.revert()}},[]);const s=(t,r)=>{t&&(n.current[r]=t)},o=[{title:"Claude Code Plugin",desc:"v2.0.1: 28 skills, 5 agents, air-gapped qector-secure server with 12 schema-validated tools",href:"/claude-plugin"},{title:"Workbench (Win / Linux)",desc:"Free desktop GUI with an 85-tool MCP server, v1.0.7 on Windows/Linux",href:"/workbench"},{title:"MCP Server",desc:"App-free local library MCP server exposing 8 local tools",href:"/mcp-server"},{title:"Technical Reference",desc:"API documentation, decoder parameters, code examples",href:"/technical-reference"},{title:"User Manual",desc:"Installation, configuration, workflow guides",href:"/manual"},{title:"Package Reference (v1.0.1)",desc:"Extended reference manual for qector-decoder-v3 Python package",href:"/docs/reference.md"},{title:"Installation Guide",desc:"Platform-specific setup instructions",href:"/installer"},{title:"Evidence & Reports",desc:"Six-record Zenodo registry, validation artifacts and reproducibility data",href:"/evidence"},{title:"Changelog",desc:"Version history and release notes",href:"/changelog"}];return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Documentation · QECTOR",description:"Documentation hub for QECTOR quantum error correction decoder. API reference, user manual, installation guides, and validation reports."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Python 3.9-3.14 · Linux · macOS · Windows"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Documentation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:"Install, configure, and integrate QECTOR Decoder v3 with your QEC stack. Stim, PyMatching, Sinter, and Qiskit compatible."}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-8",children:[e.jsxs("div",{ref:t=>s(t,0),className:"card-surface text-center",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Quick Install"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground inline-block text-left",children:"pip install qector-decoder-v3"}),e.jsxs("div",{className:"mt-4 flex flex-wrap gap-3 justify-center",children:[e.jsx(a,{to:"/installer",className:"btn-outline text-sm",children:"Full Installation Guide"}),e.jsx(a,{to:"/manual",className:"btn-outline text-sm",children:"User Manual"})]})]}),e.jsx("div",{ref:t=>s(t,1),className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:o.map(t=>t.href.startsWith("/docs/")?e.jsxs("a",{href:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title):e.jsxs(a,{to:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title))}),e.jsxs("div",{ref:t=>s(t,2),className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"External Resources"}),e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(m,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Repository"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Source code, issues, and contributions"})]})]}),e.jsxs("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(h,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"PyPI Package"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Latest release and installation"})]})]}),e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(u,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"github.com/GuillaumeLessard/qector-decoder"})]})]})]})]})]})})]})}export{y as default}; diff --git a/assets/Docs-CGoJVEyR.js b/assets/Docs-CGoJVEyR.js deleted file mode 100644 index 509e2a62..00000000 --- a/assets/Docs-CGoJVEyR.js +++ /dev/null @@ -1 +0,0 @@ -import{r as l,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,L as a}from"./index-c1PDYu0j.js";import{N as d}from"./NeuralReveal-uYarhiMA.js";import{g as i,S as x}from"./vendor-gsap-a3sj5zmn.js";import{F as m,P as h,t as u}from"./vendor-ui-B8TlNU4J.js";i.registerPlugin(x);function j(){const n=l.useRef([]);l.useEffect(()=>{const t=i.context(()=>{n.current.filter(Boolean).forEach(r=>{i.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{t.revert()}},[]);const s=(t,r)=>{t&&(n.current[r]=t)},o=[{title:"Claude Code Plugin",desc:"v2.0.1: 28 skills, 5 agents, air-gapped qector-secure server with 12 schema-validated tools",href:"/claude-plugin"},{title:"Workbench (Win / Linux)",desc:"Free desktop GUI with an 85-tool MCP server, v1.0.7 on Windows/Linux",href:"/workbench"},{title:"MCP Server",desc:"App-free local library MCP server exposing 8 local tools",href:"/mcp-server"},{title:"Technical Reference",desc:"API documentation, decoder parameters, code examples",href:"/technical-reference"},{title:"User Manual",desc:"Installation, configuration, workflow guides",href:"/manual"},{title:"Package Reference (v1.0.1)",desc:"Extended reference manual for qector-decoder-v3 Python package",href:"/docs/reference.md"},{title:"Installation Guide",desc:"Platform-specific setup instructions",href:"/installer"},{title:"Evidence & Reports",desc:"Six-record Zenodo registry, validation artifacts and reproducibility data",href:"/evidence"},{title:"Changelog",desc:"Version history and release notes",href:"/changelog"}];return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Documentation · QECTOR",description:"Documentation hub for QECTOR quantum error correction decoder. API reference, user manual, installation guides, and validation reports."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Python 3.9-3.14 · Linux · macOS · Windows"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Documentation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:"Install, configure, and integrate QECTOR Decoder v3 with your QEC stack. Stim, PyMatching, Sinter, and Qiskit compatible."}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-8",children:[e.jsxs("div",{ref:t=>s(t,0),className:"card-surface text-center",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Quick Install"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground inline-block text-left",children:"pip install qector-decoder-v3"}),e.jsxs("div",{className:"mt-4 flex flex-wrap gap-3 justify-center",children:[e.jsx(a,{to:"/installer",className:"btn-outline text-sm",children:"Full Installation Guide"}),e.jsx(a,{to:"/manual",className:"btn-outline text-sm",children:"User Manual"})]})]}),e.jsx("div",{ref:t=>s(t,1),className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:o.map(t=>t.href.startsWith("/docs/")?e.jsxs("a",{href:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title):e.jsxs(a,{to:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title))}),e.jsxs("div",{ref:t=>s(t,2),className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"External Resources"}),e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(m,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Repository"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Source code, issues, and contributions"})]})]}),e.jsxs("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(h,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"PyPI Package"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Latest release and installation"})]})]}),e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(u,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"github.com/GuillaumeLessard/qector-decoder"})]})]})]})]})]})})]})}export{j as default}; diff --git a/assets/Docs-CVIyARKv.js b/assets/Docs-CVIyARKv.js deleted file mode 100644 index b903d31a..00000000 --- a/assets/Docs-CVIyARKv.js +++ /dev/null @@ -1 +0,0 @@ -import{r as l,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c}from"./index-CqAA-ZXu.js";import{N as d}from"./NeuralReveal-BflyZYSb.js";import{g as i,S as x}from"./vendor-gsap-a3sj5zmn.js";import{L as a}from"./vendor-PiU4YGcH.js";import{F as m,P as h,t as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";i.registerPlugin(x);function y(){const n=l.useRef([]);l.useEffect(()=>{const t=i.context(()=>{n.current.filter(Boolean).forEach(r=>{i.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{t.revert()}},[]);const s=(t,r)=>{t&&(n.current[r]=t)},o=[{title:"Claude Code Plugin",desc:"v1.0.6: 28 skills, 5 agents, four MCP servers, and explicit local tool profiles",href:"/claude-plugin"},{title:"Workbench (Win / Linux)",desc:"Free desktop GUI with an 85-tool MCP server, v1.0.7 on Windows/Linux",href:"/workbench"},{title:"MCP Server",desc:"App-free local library MCP server exposing 8 local tools",href:"/mcp-server"},{title:"Technical Reference",desc:"API documentation, decoder parameters, code examples",href:"/technical-reference"},{title:"User Manual",desc:"Installation, configuration, workflow guides",href:"/manual"},{title:"Package Reference (v1.0.0)",desc:"Extended reference manual for qector-decoder-v3 Python package",href:"/docs/reference.md"},{title:"Installation Guide",desc:"Platform-specific setup instructions",href:"/installer"},{title:"Evidence & Reports",desc:"Six-record Zenodo registry, validation artifacts and reproducibility data",href:"/evidence"},{title:"Changelog",desc:"Version history and release notes",href:"/changelog"}];return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Documentation · QECTOR",description:"Documentation hub for QECTOR quantum error correction decoder. API reference, user manual, installation guides, and validation reports."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Python 3.9-3.13 · Linux · macOS · Windows"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Documentation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:"Install, configure, and integrate QECTOR Decoder v3 with your QEC stack. Stim, PyMatching, Sinter, and Qiskit compatible."}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-8",children:[e.jsxs("div",{ref:t=>s(t,0),className:"card-surface text-center",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Quick Install"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground inline-block text-left",children:"pip install qector-decoder-v3"}),e.jsxs("div",{className:"mt-4 flex flex-wrap gap-3 justify-center",children:[e.jsx(a,{to:"/installer",className:"btn-outline text-sm",children:"Full Installation Guide"}),e.jsx(a,{to:"/manual",className:"btn-outline text-sm",children:"User Manual"})]})]}),e.jsx("div",{ref:t=>s(t,1),className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:o.map(t=>t.href.startsWith("/docs/")?e.jsxs("a",{href:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title):e.jsxs(a,{to:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title))}),e.jsxs("div",{ref:t=>s(t,2),className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"External Resources"}),e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(m,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Repository"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Source code, issues, and contributions"})]})]}),e.jsxs("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(h,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"PyPI Package"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Latest release and installation"})]})]}),e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(u,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"github.com/GuillaumeLessard/qector-decoder"})]})]})]})]})]})})]})}export{y as default}; diff --git a/assets/Docs-CXj_11_o.js b/assets/Docs-CXj_11_o.js deleted file mode 100644 index 28929667..00000000 --- a/assets/Docs-CXj_11_o.js +++ /dev/null @@ -1 +0,0 @@ -import{r as l,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,L as a}from"./index-CcwlvHYJ.js";import{N as d}from"./NeuralReveal-Bsl9IGCr.js";import{g as i,S as x}from"./vendor-gsap-a3sj5zmn.js";import{F as m,P as h,t as u}from"./vendor-ui-B0ssGG4c.js";i.registerPlugin(x);function j(){const n=l.useRef([]);l.useEffect(()=>{const t=i.context(()=>{n.current.filter(Boolean).forEach(r=>{i.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{t.revert()}},[]);const s=(t,r)=>{t&&(n.current[r]=t)},o=[{title:"Claude Code Plugin",desc:"v2.0.1: 28 skills, 5 agents, air-gapped qector-secure server with 12 schema-validated tools",href:"/claude-plugin"},{title:"Workbench (Win / Linux)",desc:"Free desktop GUI with an 85-tool MCP server, v1.0.7 on Windows/Linux",href:"/workbench"},{title:"MCP Server",desc:"App-free local library MCP server exposing 8 local tools",href:"/mcp-server"},{title:"Technical Reference",desc:"API documentation, decoder parameters, code examples",href:"/technical-reference"},{title:"User Manual",desc:"Installation, configuration, workflow guides",href:"/manual"},{title:"Package Reference (v1.0.1)",desc:"Extended reference manual for qector-decoder-v3 Python package",href:"/docs/reference.md"},{title:"Installation Guide",desc:"Platform-specific setup instructions",href:"/installer"},{title:"Evidence & Reports",desc:"Six-record Zenodo registry, validation artifacts and reproducibility data",href:"/evidence"},{title:"Changelog",desc:"Version history and release notes",href:"/changelog"}];return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Documentation · QECTOR",description:"Documentation hub for QECTOR quantum error correction decoder. API reference, user manual, installation guides, and validation reports."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Python 3.9-3.14 · Linux · macOS · Windows"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Documentation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:"Install, configure, and integrate QECTOR Decoder v3 with your QEC stack. Stim, PyMatching, Sinter, and Qiskit compatible."}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-8",children:[e.jsxs("div",{ref:t=>s(t,0),className:"card-surface text-center",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Quick Install"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground inline-block text-left",children:"pip install qector-decoder-v3"}),e.jsxs("div",{className:"mt-4 flex flex-wrap gap-3 justify-center",children:[e.jsx(a,{to:"/installer",className:"btn-outline text-sm",children:"Full Installation Guide"}),e.jsx(a,{to:"/manual",className:"btn-outline text-sm",children:"User Manual"})]})]}),e.jsx("div",{ref:t=>s(t,1),className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:o.map(t=>t.href.startsWith("/docs/")?e.jsxs("a",{href:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title):e.jsxs(a,{to:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title))}),e.jsxs("div",{ref:t=>s(t,2),className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"External Resources"}),e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(m,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Repository"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Source code, issues, and contributions"})]})]}),e.jsxs("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(h,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"PyPI Package"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Latest release and installation"})]})]}),e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(u,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"github.com/GuillaumeLessard/qector-decoder"})]})]})]})]})]})})]})}export{j as default}; diff --git a/assets/Docs-CbxYbU8R.js b/assets/Docs-CbxYbU8R.js deleted file mode 100644 index d9cbf49e..00000000 --- a/assets/Docs-CbxYbU8R.js +++ /dev/null @@ -1 +0,0 @@ -import{r as l,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c}from"./index-BcbVjARk.js";import{N as d}from"./NeuralReveal-BflyZYSb.js";import{g as i,S as x}from"./vendor-gsap-a3sj5zmn.js";import{L as a}from"./vendor-PiU4YGcH.js";import{F as m,P as h,t as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";i.registerPlugin(x);function y(){const n=l.useRef([]);l.useEffect(()=>{const t=i.context(()=>{n.current.filter(Boolean).forEach(r=>{i.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{t.revert()}},[]);const s=(t,r)=>{t&&(n.current[r]=t)},o=[{title:"Claude Code Plugin",desc:"v1.0.6: 28 skills, 5 agents, four MCP servers, and explicit local tool profiles",href:"/claude-plugin"},{title:"Workbench (Win / Linux)",desc:"Free desktop GUI with an 85-tool MCP server, v1.0.7 on Windows/Linux",href:"/workbench"},{title:"MCP Server",desc:"App-free local library MCP server exposing 8 local tools",href:"/mcp-server"},{title:"Technical Reference",desc:"API documentation, decoder parameters, code examples",href:"/technical-reference"},{title:"User Manual",desc:"Installation, configuration, workflow guides",href:"/manual"},{title:"Package Reference (v1.0.0)",desc:"Extended reference manual for qector-decoder-v3 Python package",href:"/docs/reference.md"},{title:"Installation Guide",desc:"Platform-specific setup instructions",href:"/installer"},{title:"Evidence & Reports",desc:"Six-record Zenodo registry, validation artifacts and reproducibility data",href:"/evidence"},{title:"Changelog",desc:"Version history and release notes",href:"/changelog"}];return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Documentation · QECTOR",description:"Documentation hub for QECTOR quantum error correction decoder. API reference, user manual, installation guides, and validation reports."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Python 3.9-3.13 · Linux · macOS · Windows"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Documentation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:"Install, configure, and integrate QECTOR Decoder v3 with your QEC stack. Stim, PyMatching, Sinter, and Qiskit compatible."}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-8",children:[e.jsxs("div",{ref:t=>s(t,0),className:"card-surface text-center",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Quick Install"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground inline-block text-left",children:"pip install qector-decoder-v3"}),e.jsxs("div",{className:"mt-4 flex flex-wrap gap-3 justify-center",children:[e.jsx(a,{to:"/installer",className:"btn-outline text-sm",children:"Full Installation Guide"}),e.jsx(a,{to:"/manual",className:"btn-outline text-sm",children:"User Manual"})]})]}),e.jsx("div",{ref:t=>s(t,1),className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:o.map(t=>t.href.startsWith("/docs/")?e.jsxs("a",{href:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title):e.jsxs(a,{to:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title))}),e.jsxs("div",{ref:t=>s(t,2),className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"External Resources"}),e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(m,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Repository"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Source code, issues, and contributions"})]})]}),e.jsxs("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(h,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"PyPI Package"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Latest release and installation"})]})]}),e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(u,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"github.com/GuillaumeLessard/qector-decoder"})]})]})]})]})]})})]})}export{y as default}; diff --git a/assets/Docs-ChCtVg9x.js b/assets/Docs-ChCtVg9x.js deleted file mode 100644 index 5f24cefb..00000000 --- a/assets/Docs-ChCtVg9x.js +++ /dev/null @@ -1 +0,0 @@ -import{r as l,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,L as a}from"./index-DayaklK-.js";import{N as d}from"./NeuralReveal-uYarhiMA.js";import{g as i,S as x}from"./vendor-gsap-a3sj5zmn.js";import{F as m,P as h,t as u}from"./vendor-ui-B8TlNU4J.js";i.registerPlugin(x);function j(){const n=l.useRef([]);l.useEffect(()=>{const t=i.context(()=>{n.current.filter(Boolean).forEach(r=>{i.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{t.revert()}},[]);const s=(t,r)=>{t&&(n.current[r]=t)},o=[{title:"Claude Code Plugin",desc:"v2.0.1: 28 skills, 5 agents, air-gapped qector-secure server with 12 schema-validated tools",href:"/claude-plugin"},{title:"Workbench (Win / Linux)",desc:"Free desktop GUI with an 85-tool MCP server, v1.0.7 on Windows/Linux",href:"/workbench"},{title:"MCP Server",desc:"App-free local library MCP server exposing 8 local tools",href:"/mcp-server"},{title:"Technical Reference",desc:"API documentation, decoder parameters, code examples",href:"/technical-reference"},{title:"User Manual",desc:"Installation, configuration, workflow guides",href:"/manual"},{title:"Package Reference (v1.0.1)",desc:"Extended reference manual for qector-decoder-v3 Python package",href:"/docs/reference.md"},{title:"Installation Guide",desc:"Platform-specific setup instructions",href:"/installer"},{title:"Evidence & Reports",desc:"Six-record Zenodo registry, validation artifacts and reproducibility data",href:"/evidence"},{title:"Changelog",desc:"Version history and release notes",href:"/changelog"}];return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Documentation · QECTOR",description:"Documentation hub for QECTOR quantum error correction decoder. API reference, user manual, installation guides, and validation reports."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Python 3.9-3.14 · Linux · macOS · Windows"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Documentation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:"Install, configure, and integrate QECTOR Decoder v3 with your QEC stack. Stim, PyMatching, Sinter, and Qiskit compatible."}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-8",children:[e.jsxs("div",{ref:t=>s(t,0),className:"card-surface text-center",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Quick Install"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground inline-block text-left",children:"pip install qector-decoder-v3"}),e.jsxs("div",{className:"mt-4 flex flex-wrap gap-3 justify-center",children:[e.jsx(a,{to:"/installer",className:"btn-outline text-sm",children:"Full Installation Guide"}),e.jsx(a,{to:"/manual",className:"btn-outline text-sm",children:"User Manual"})]})]}),e.jsx("div",{ref:t=>s(t,1),className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:o.map(t=>t.href.startsWith("/docs/")?e.jsxs("a",{href:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title):e.jsxs(a,{to:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title))}),e.jsxs("div",{ref:t=>s(t,2),className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"External Resources"}),e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(m,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Repository"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Source code, issues, and contributions"})]})]}),e.jsxs("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(h,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"PyPI Package"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Latest release and installation"})]})]}),e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(u,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"github.com/GuillaumeLessard/qector-decoder"})]})]})]})]})]})})]})}export{j as default}; diff --git a/assets/Docs-CxH1-v5C.js b/assets/Docs-CxH1-v5C.js deleted file mode 100644 index cf9a5b11..00000000 --- a/assets/Docs-CxH1-v5C.js +++ /dev/null @@ -1 +0,0 @@ -import{r as l,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c}from"./index-DlmjLVYe.js";import{N as d}from"./NeuralReveal-BflyZYSb.js";import{g as i,S as x}from"./vendor-gsap-a3sj5zmn.js";import{L as a}from"./vendor-PiU4YGcH.js";import{F as m,P as h,t as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";i.registerPlugin(x);function y(){const n=l.useRef([]);l.useEffect(()=>{const t=i.context(()=>{n.current.filter(Boolean).forEach(r=>{i.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{t.revert()}},[]);const s=(t,r)=>{t&&(n.current[r]=t)},o=[{title:"Claude Code Plugin",desc:"v1.0.6: 28 skills, 5 agents, four MCP servers, and explicit local tool profiles",href:"/claude-plugin"},{title:"Workbench (Win / Linux)",desc:"Free desktop GUI with an 85-tool MCP server, v1.0.7 on Windows/Linux",href:"/workbench"},{title:"MCP Server",desc:"App-free local library MCP server exposing 8 local tools",href:"/mcp-server"},{title:"Technical Reference",desc:"API documentation, decoder parameters, code examples",href:"/technical-reference"},{title:"User Manual",desc:"Installation, configuration, workflow guides",href:"/manual"},{title:"Package Reference (v1.0.0)",desc:"Extended reference manual for qector-decoder-v3 Python package",href:"/docs/reference.md"},{title:"Installation Guide",desc:"Platform-specific setup instructions",href:"/installer"},{title:"Evidence & Reports",desc:"Six-record Zenodo registry, validation artifacts and reproducibility data",href:"/evidence"},{title:"Changelog",desc:"Version history and release notes",href:"/changelog"}];return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Documentation · QECTOR",description:"Documentation hub for QECTOR quantum error correction decoder. API reference, user manual, installation guides, and validation reports."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Python 3.9-3.13 · Linux · macOS · Windows"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Documentation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:"Install, configure, and integrate QECTOR Decoder v3 with your QEC stack. Stim, PyMatching, Sinter, and Qiskit compatible."}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-8",children:[e.jsxs("div",{ref:t=>s(t,0),className:"card-surface text-center",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Quick Install"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground inline-block text-left",children:"pip install qector-decoder-v3"}),e.jsxs("div",{className:"mt-4 flex flex-wrap gap-3 justify-center",children:[e.jsx(a,{to:"/installer",className:"btn-outline text-sm",children:"Full Installation Guide"}),e.jsx(a,{to:"/manual",className:"btn-outline text-sm",children:"User Manual"})]})]}),e.jsx("div",{ref:t=>s(t,1),className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:o.map(t=>t.href.startsWith("/docs/")?e.jsxs("a",{href:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title):e.jsxs(a,{to:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title))}),e.jsxs("div",{ref:t=>s(t,2),className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"External Resources"}),e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(m,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Repository"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Source code, issues, and contributions"})]})]}),e.jsxs("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(h,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"PyPI Package"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Latest release and installation"})]})]}),e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(u,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"github.com/GuillaumeLessard/qector-decoder"})]})]})]})]})]})})]})}export{y as default}; diff --git a/assets/Docs-D2qi4UVs.js b/assets/Docs-D2qi4UVs.js deleted file mode 100644 index d76d6758..00000000 --- a/assets/Docs-D2qi4UVs.js +++ /dev/null @@ -1 +0,0 @@ -import{r as l,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c}from"./index-B9kEGiWi.js";import{N as d}from"./NeuralReveal-BflyZYSb.js";import{g as i,S as x}from"./vendor-gsap-a3sj5zmn.js";import{L as a}from"./vendor-PiU4YGcH.js";import{F as m,P as h,t as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";i.registerPlugin(x);function y(){const n=l.useRef([]);l.useEffect(()=>{const t=i.context(()=>{n.current.filter(Boolean).forEach(r=>{i.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{t.revert()}},[]);const s=(t,r)=>{t&&(n.current[r]=t)},o=[{title:"Claude Code Plugin",desc:"v1.0.6: 28 skills, 5 agents, four MCP servers, and explicit local tool profiles",href:"/claude-plugin"},{title:"Workbench (Win / Linux)",desc:"Free desktop GUI with an 85-tool MCP server, v1.0.7 on Windows/Linux",href:"/workbench"},{title:"MCP Server",desc:"App-free local library MCP server exposing 8 local tools",href:"/mcp-server"},{title:"Technical Reference",desc:"API documentation, decoder parameters, code examples",href:"/technical-reference"},{title:"User Manual",desc:"Installation, configuration, workflow guides",href:"/manual"},{title:"Package Reference (v1.0.0)",desc:"Extended reference manual for qector-decoder-v3 Python package",href:"/docs/reference.md"},{title:"Installation Guide",desc:"Platform-specific setup instructions",href:"/installer"},{title:"Evidence & Reports",desc:"Six-record Zenodo registry, validation artifacts and reproducibility data",href:"/evidence"},{title:"Changelog",desc:"Version history and release notes",href:"/changelog"}];return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Documentation · QECTOR",description:"Documentation hub for QECTOR quantum error correction decoder. API reference, user manual, installation guides, and validation reports."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Python 3.9-3.13 · Linux · macOS · Windows"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Documentation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:"Install, configure, and integrate QECTOR Decoder v3 with your QEC stack. Stim, PyMatching, Sinter, and Qiskit compatible."}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-8",children:[e.jsxs("div",{ref:t=>s(t,0),className:"card-surface text-center",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Quick Install"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground inline-block text-left",children:"pip install qector-decoder-v3"}),e.jsxs("div",{className:"mt-4 flex flex-wrap gap-3 justify-center",children:[e.jsx(a,{to:"/installer",className:"btn-outline text-sm",children:"Full Installation Guide"}),e.jsx(a,{to:"/manual",className:"btn-outline text-sm",children:"User Manual"})]})]}),e.jsx("div",{ref:t=>s(t,1),className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:o.map(t=>t.href.startsWith("/docs/")?e.jsxs("a",{href:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title):e.jsxs(a,{to:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title))}),e.jsxs("div",{ref:t=>s(t,2),className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"External Resources"}),e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(m,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Repository"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Source code, issues, and contributions"})]})]}),e.jsxs("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(h,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"PyPI Package"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Latest release and installation"})]})]}),e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(u,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"github.com/GuillaumeLessard/qector-decoder"})]})]})]})]})]})})]})}export{y as default}; diff --git a/assets/Docs-DA36t10x.js b/assets/Docs-DA36t10x.js deleted file mode 100644 index 384d6293..00000000 --- a/assets/Docs-DA36t10x.js +++ /dev/null @@ -1 +0,0 @@ -import{r as l,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c}from"./index-BUYYSLdX.js";import{N as d}from"./NeuralReveal-BflyZYSb.js";import{g as i,S as x}from"./vendor-gsap-a3sj5zmn.js";import{L as a}from"./vendor-PiU4YGcH.js";import{F as m,P as h,t as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";i.registerPlugin(x);function y(){const n=l.useRef([]);l.useEffect(()=>{const t=i.context(()=>{n.current.filter(Boolean).forEach(r=>{i.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{t.revert()}},[]);const s=(t,r)=>{t&&(n.current[r]=t)},o=[{title:"Claude Code Plugin",desc:"v2.0.1: 28 skills, 5 agents, air-gapped qector-secure server with 12 schema-validated tools",href:"/claude-plugin"},{title:"Workbench (Win / Linux)",desc:"Free desktop GUI with an 85-tool MCP server, v1.0.7 on Windows/Linux",href:"/workbench"},{title:"MCP Server",desc:"App-free local library MCP server exposing 8 local tools",href:"/mcp-server"},{title:"Technical Reference",desc:"API documentation, decoder parameters, code examples",href:"/technical-reference"},{title:"User Manual",desc:"Installation, configuration, workflow guides",href:"/manual"},{title:"Package Reference (v1.0.1)",desc:"Extended reference manual for qector-decoder-v3 Python package",href:"/docs/reference.md"},{title:"Installation Guide",desc:"Platform-specific setup instructions",href:"/installer"},{title:"Evidence & Reports",desc:"Six-record Zenodo registry, validation artifacts and reproducibility data",href:"/evidence"},{title:"Changelog",desc:"Version history and release notes",href:"/changelog"}];return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Documentation · QECTOR",description:"Documentation hub for QECTOR quantum error correction decoder. API reference, user manual, installation guides, and validation reports."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Python 3.9-3.14 · Linux · macOS · Windows"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Documentation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:"Install, configure, and integrate QECTOR Decoder v3 with your QEC stack. Stim, PyMatching, Sinter, and Qiskit compatible."}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-8",children:[e.jsxs("div",{ref:t=>s(t,0),className:"card-surface text-center",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Quick Install"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground inline-block text-left",children:"pip install qector-decoder-v3"}),e.jsxs("div",{className:"mt-4 flex flex-wrap gap-3 justify-center",children:[e.jsx(a,{to:"/installer",className:"btn-outline text-sm",children:"Full Installation Guide"}),e.jsx(a,{to:"/manual",className:"btn-outline text-sm",children:"User Manual"})]})]}),e.jsx("div",{ref:t=>s(t,1),className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:o.map(t=>t.href.startsWith("/docs/")?e.jsxs("a",{href:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title):e.jsxs(a,{to:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title))}),e.jsxs("div",{ref:t=>s(t,2),className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"External Resources"}),e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(m,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Repository"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Source code, issues, and contributions"})]})]}),e.jsxs("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(h,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"PyPI Package"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Latest release and installation"})]})]}),e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(u,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"github.com/GuillaumeLessard/qector-decoder"})]})]})]})]})]})})]})}export{y as default}; diff --git a/assets/Docs-D_KRdt5F.js b/assets/Docs-D_KRdt5F.js deleted file mode 100644 index df4d9033..00000000 --- a/assets/Docs-D_KRdt5F.js +++ /dev/null @@ -1 +0,0 @@ -import{r as l,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c}from"./index-BN-vOeL2.js";import{N as d}from"./NeuralReveal-BflyZYSb.js";import{g as i,S as x}from"./vendor-gsap-a3sj5zmn.js";import{L as a}from"./vendor-PiU4YGcH.js";import{F as m,P as h,t as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";i.registerPlugin(x);function y(){const n=l.useRef([]);l.useEffect(()=>{const t=i.context(()=>{n.current.filter(Boolean).forEach(r=>{i.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{t.revert()}},[]);const s=(t,r)=>{t&&(n.current[r]=t)},o=[{title:"Claude Code Plugin",desc:"v1.0.6: 28 skills, 5 agents, four MCP servers, and explicit local tool profiles",href:"/claude-plugin"},{title:"Workbench (Win / Linux)",desc:"Free desktop GUI with an 85-tool MCP server, v1.0.7 on Windows/Linux",href:"/workbench"},{title:"MCP Server",desc:"App-free local library MCP server exposing 8 local tools",href:"/mcp-server"},{title:"Technical Reference",desc:"API documentation, decoder parameters, code examples",href:"/technical-reference"},{title:"User Manual",desc:"Installation, configuration, workflow guides",href:"/manual"},{title:"Package Reference (v1.0.0)",desc:"Extended reference manual for qector-decoder-v3 Python package",href:"/docs/reference.md"},{title:"Installation Guide",desc:"Platform-specific setup instructions",href:"/installer"},{title:"Evidence & Reports",desc:"Six-record Zenodo registry, validation artifacts and reproducibility data",href:"/evidence"},{title:"Changelog",desc:"Version history and release notes",href:"/changelog"}];return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Documentation · QECTOR",description:"Documentation hub for QECTOR quantum error correction decoder. API reference, user manual, installation guides, and validation reports."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Python 3.9-3.13 · Linux · macOS · Windows"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Documentation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:"Install, configure, and integrate QECTOR Decoder v3 with your QEC stack. Stim, PyMatching, Sinter, and Qiskit compatible."}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-8",children:[e.jsxs("div",{ref:t=>s(t,0),className:"card-surface text-center",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Quick Install"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground inline-block text-left",children:"pip install qector-decoder-v3"}),e.jsxs("div",{className:"mt-4 flex flex-wrap gap-3 justify-center",children:[e.jsx(a,{to:"/installer",className:"btn-outline text-sm",children:"Full Installation Guide"}),e.jsx(a,{to:"/manual",className:"btn-outline text-sm",children:"User Manual"})]})]}),e.jsx("div",{ref:t=>s(t,1),className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:o.map(t=>t.href.startsWith("/docs/")?e.jsxs("a",{href:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title):e.jsxs(a,{to:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title))}),e.jsxs("div",{ref:t=>s(t,2),className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"External Resources"}),e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(m,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Repository"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Source code, issues, and contributions"})]})]}),e.jsxs("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(h,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"PyPI Package"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Latest release and installation"})]})]}),e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(u,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"github.com/GuillaumeLessard/qector-decoder"})]})]})]})]})]})})]})}export{y as default}; diff --git a/assets/Docs-Di4dBc5W.js b/assets/Docs-Di4dBc5W.js deleted file mode 100644 index 4d7cd341..00000000 --- a/assets/Docs-Di4dBc5W.js +++ /dev/null @@ -1 +0,0 @@ -import{r as l,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c}from"./index-iVST85F-.js";import{N as d}from"./NeuralReveal-BflyZYSb.js";import{g as i,S as x}from"./vendor-gsap-a3sj5zmn.js";import{L as a}from"./vendor-PiU4YGcH.js";import{F as m,P as h,t as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";i.registerPlugin(x);function y(){const n=l.useRef([]);l.useEffect(()=>{const t=i.context(()=>{n.current.filter(Boolean).forEach(r=>{i.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{t.revert()}},[]);const s=(t,r)=>{t&&(n.current[r]=t)},o=[{title:"Claude Code Plugin",desc:"v1.0.6: 28 skills, 5 agents, four MCP servers, and explicit local tool profiles",href:"/claude-plugin"},{title:"Workbench (Win / Linux)",desc:"Free desktop GUI with an 85-tool MCP server, v1.0.7 on Windows/Linux",href:"/workbench"},{title:"MCP Server",desc:"App-free local library MCP server exposing 8 local tools",href:"/mcp-server"},{title:"Technical Reference",desc:"API documentation, decoder parameters, code examples",href:"/technical-reference"},{title:"User Manual",desc:"Installation, configuration, workflow guides",href:"/manual"},{title:"Package Reference (v1.0.0)",desc:"Extended reference manual for qector-decoder-v3 Python package",href:"/docs/reference.md"},{title:"Installation Guide",desc:"Platform-specific setup instructions",href:"/installer"},{title:"Evidence & Reports",desc:"Six-record Zenodo registry, validation artifacts and reproducibility data",href:"/evidence"},{title:"Changelog",desc:"Version history and release notes",href:"/changelog"}];return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Documentation · QECTOR",description:"Documentation hub for QECTOR quantum error correction decoder. API reference, user manual, installation guides, and validation reports."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Python 3.9-3.13 · Linux · macOS · Windows"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Documentation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:"Install, configure, and integrate QECTOR Decoder v3 with your QEC stack. Stim, PyMatching, Sinter, and Qiskit compatible."}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-8",children:[e.jsxs("div",{ref:t=>s(t,0),className:"card-surface text-center",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Quick Install"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground inline-block text-left",children:"pip install qector-decoder-v3"}),e.jsxs("div",{className:"mt-4 flex flex-wrap gap-3 justify-center",children:[e.jsx(a,{to:"/installer",className:"btn-outline text-sm",children:"Full Installation Guide"}),e.jsx(a,{to:"/manual",className:"btn-outline text-sm",children:"User Manual"})]})]}),e.jsx("div",{ref:t=>s(t,1),className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:o.map(t=>t.href.startsWith("/docs/")?e.jsxs("a",{href:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title):e.jsxs(a,{to:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title))}),e.jsxs("div",{ref:t=>s(t,2),className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"External Resources"}),e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(m,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Repository"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Source code, issues, and contributions"})]})]}),e.jsxs("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(h,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"PyPI Package"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Latest release and installation"})]})]}),e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(u,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"github.com/GuillaumeLessard/qector-decoder"})]})]})]})]})]})})]})}export{y as default}; diff --git a/assets/Docs-Do1RRZu3.js b/assets/Docs-Do1RRZu3.js deleted file mode 100644 index 7ff61401..00000000 --- a/assets/Docs-Do1RRZu3.js +++ /dev/null @@ -1 +0,0 @@ -import{r as l,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,L as a}from"./index-CCmwjNGU.js";import{N as d}from"./NeuralReveal-uYarhiMA.js";import{g as i,S as x}from"./vendor-gsap-a3sj5zmn.js";import{F as m,P as h,t as u}from"./vendor-ui-B8TlNU4J.js";i.registerPlugin(x);function j(){const n=l.useRef([]);l.useEffect(()=>{const t=i.context(()=>{n.current.filter(Boolean).forEach(r=>{i.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{t.revert()}},[]);const s=(t,r)=>{t&&(n.current[r]=t)},o=[{title:"Claude Code Plugin",desc:"v2.0.1: 28 skills, 5 agents, air-gapped qector-secure server with 12 schema-validated tools",href:"/claude-plugin"},{title:"Workbench (Win / Linux)",desc:"Free desktop GUI with an 85-tool MCP server, v1.0.7 on Windows/Linux",href:"/workbench"},{title:"MCP Server",desc:"App-free local library MCP server exposing 8 local tools",href:"/mcp-server"},{title:"Technical Reference",desc:"API documentation, decoder parameters, code examples",href:"/technical-reference"},{title:"User Manual",desc:"Installation, configuration, workflow guides",href:"/manual"},{title:"Package Reference (v1.0.1)",desc:"Extended reference manual for qector-decoder-v3 Python package",href:"/docs/reference.md"},{title:"Installation Guide",desc:"Platform-specific setup instructions",href:"/installer"},{title:"Evidence & Reports",desc:"Six-record Zenodo registry, validation artifacts and reproducibility data",href:"/evidence"},{title:"Changelog",desc:"Version history and release notes",href:"/changelog"}];return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Documentation · QECTOR",description:"Documentation hub for QECTOR quantum error correction decoder. API reference, user manual, installation guides, and validation reports."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Python 3.9-3.14 · Linux · macOS · Windows"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Documentation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:"Install, configure, and integrate QECTOR Decoder v3 with your QEC stack. Stim, PyMatching, Sinter, and Qiskit compatible."}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-8",children:[e.jsxs("div",{ref:t=>s(t,0),className:"card-surface text-center",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Quick Install"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground inline-block text-left",children:"pip install qector-decoder-v3"}),e.jsxs("div",{className:"mt-4 flex flex-wrap gap-3 justify-center",children:[e.jsx(a,{to:"/installer",className:"btn-outline text-sm",children:"Full Installation Guide"}),e.jsx(a,{to:"/manual",className:"btn-outline text-sm",children:"User Manual"})]})]}),e.jsx("div",{ref:t=>s(t,1),className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:o.map(t=>t.href.startsWith("/docs/")?e.jsxs("a",{href:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title):e.jsxs(a,{to:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title))}),e.jsxs("div",{ref:t=>s(t,2),className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"External Resources"}),e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(m,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Repository"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Source code, issues, and contributions"})]})]}),e.jsxs("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(h,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"PyPI Package"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Latest release and installation"})]})]}),e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(u,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"github.com/GuillaumeLessard/qector-decoder"})]})]})]})]})]})})]})}export{j as default}; diff --git a/assets/Docs-KUXBA0rX.js b/assets/Docs-KUXBA0rX.js deleted file mode 100644 index 1177ef8b..00000000 --- a/assets/Docs-KUXBA0rX.js +++ /dev/null @@ -1 +0,0 @@ -import{r as l,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c}from"./index-Bh9DBCb3.js";import{N as d}from"./NeuralReveal-D-EQoOl2.js";import{g as i,S as x}from"./vendor-gsap-a3sj5zmn.js";import{L as a}from"./vendor-PiU4YGcH.js";import{F as m,P as h,t as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";i.registerPlugin(x);function y(){const n=l.useRef([]);l.useEffect(()=>{const t=i.context(()=>{n.current.filter(Boolean).forEach(r=>{i.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{t.revert()}},[]);const s=(t,r)=>{t&&(n.current[r]=t)},o=[{title:"Claude Code Plugin",desc:"v2.0.1: 28 skills, 5 agents, air-gapped qector-secure server with 12 schema-validated tools",href:"/claude-plugin"},{title:"Workbench (Win / Linux)",desc:"Free desktop GUI with an 85-tool MCP server, v1.0.7 on Windows/Linux",href:"/workbench"},{title:"MCP Server",desc:"App-free local library MCP server exposing 8 local tools",href:"/mcp-server"},{title:"Technical Reference",desc:"API documentation, decoder parameters, code examples",href:"/technical-reference"},{title:"User Manual",desc:"Installation, configuration, workflow guides",href:"/manual"},{title:"Package Reference (v1.0.1)",desc:"Extended reference manual for qector-decoder-v3 Python package",href:"/docs/reference.md"},{title:"Installation Guide",desc:"Platform-specific setup instructions",href:"/installer"},{title:"Evidence & Reports",desc:"Six-record Zenodo registry, validation artifacts and reproducibility data",href:"/evidence"},{title:"Changelog",desc:"Version history and release notes",href:"/changelog"}];return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Documentation · QECTOR",description:"Documentation hub for QECTOR quantum error correction decoder. API reference, user manual, installation guides, and validation reports."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Python 3.9-3.14 · Linux · macOS · Windows"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Documentation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:"Install, configure, and integrate QECTOR Decoder v3 with your QEC stack. Stim, PyMatching, Sinter, and Qiskit compatible."}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-8",children:[e.jsxs("div",{ref:t=>s(t,0),className:"card-surface text-center",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Quick Install"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground inline-block text-left",children:"pip install qector-decoder-v3"}),e.jsxs("div",{className:"mt-4 flex flex-wrap gap-3 justify-center",children:[e.jsx(a,{to:"/installer",className:"btn-outline text-sm",children:"Full Installation Guide"}),e.jsx(a,{to:"/manual",className:"btn-outline text-sm",children:"User Manual"})]})]}),e.jsx("div",{ref:t=>s(t,1),className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:o.map(t=>t.href.startsWith("/docs/")?e.jsxs("a",{href:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title):e.jsxs(a,{to:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title))}),e.jsxs("div",{ref:t=>s(t,2),className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"External Resources"}),e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(m,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Repository"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Source code, issues, and contributions"})]})]}),e.jsxs("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(h,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"PyPI Package"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Latest release and installation"})]})]}),e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(u,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"github.com/GuillaumeLessard/qector-decoder"})]})]})]})]})]})})]})}export{y as default}; diff --git a/assets/Docs-j61tlEUv.js b/assets/Docs-j61tlEUv.js deleted file mode 100644 index 06e0b598..00000000 --- a/assets/Docs-j61tlEUv.js +++ /dev/null @@ -1 +0,0 @@ -import{r as l,j as e}from"./vendor-react-BiHfrq0e.js";import{S as c}from"./index-DkYdPRY7.js";import{N as d}from"./NeuralReveal-BflyZYSb.js";import{g as i,S as x}from"./vendor-gsap-a3sj5zmn.js";import{L as a}from"./vendor-PiU4YGcH.js";import{F as m,P as h,t as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";i.registerPlugin(x);function y(){const n=l.useRef([]);l.useEffect(()=>{const t=i.context(()=>{n.current.filter(Boolean).forEach(r=>{i.fromTo(r,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:r,start:"top 85%",once:!0}})})});return()=>{t.revert()}},[]);const s=(t,r)=>{t&&(n.current[r]=t)},o=[{title:"Claude Code Plugin",desc:"v2.0.1: 28 skills, 5 agents, air-gapped qector-secure server with 12 schema-validated tools",href:"/claude-plugin"},{title:"Workbench (Win / Linux)",desc:"Free desktop GUI with an 85-tool MCP server, v1.0.7 on Windows/Linux",href:"/workbench"},{title:"MCP Server",desc:"App-free local library MCP server exposing 8 local tools",href:"/mcp-server"},{title:"Technical Reference",desc:"API documentation, decoder parameters, code examples",href:"/technical-reference"},{title:"User Manual",desc:"Installation, configuration, workflow guides",href:"/manual"},{title:"Package Reference (v1.0.1)",desc:"Extended reference manual for qector-decoder-v3 Python package",href:"/docs/reference.md"},{title:"Installation Guide",desc:"Platform-specific setup instructions",href:"/installer"},{title:"Evidence & Reports",desc:"Six-record Zenodo registry, validation artifacts and reproducibility data",href:"/evidence"},{title:"Changelog",desc:"Version history and release notes",href:"/changelog"}];return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Documentation · QECTOR",description:"Documentation hub for QECTOR quantum error correction decoder. API reference, user manual, installation guides, and validation reports."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Python 3.9-3.14 · Linux · macOS · Windows"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Documentation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:"Install, configure, and integrate QECTOR Decoder v3 with your QEC stack. Stim, PyMatching, Sinter, and Qiskit compatible."}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-8",children:[e.jsxs("div",{ref:t=>s(t,0),className:"card-surface text-center",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Quick Install"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground inline-block text-left",children:"pip install qector-decoder-v3"}),e.jsxs("div",{className:"mt-4 flex flex-wrap gap-3 justify-center",children:[e.jsx(a,{to:"/installer",className:"btn-outline text-sm",children:"Full Installation Guide"}),e.jsx(a,{to:"/manual",className:"btn-outline text-sm",children:"User Manual"})]})]}),e.jsx("div",{ref:t=>s(t,1),className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:o.map(t=>t.href.startsWith("/docs/")?e.jsxs("a",{href:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title):e.jsxs(a,{to:t.href,className:"card-surface group hover:border-cyan-300/30 transition-all",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold group-hover:text-cyan-200 transition-colors mb-1",children:t.title}),e.jsx("p",{className:"text-secondary text-sm",children:t.desc})]},t.title))}),e.jsxs("div",{ref:t=>s(t,2),className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"External Resources"}),e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(m,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Repository"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Source code, issues, and contributions"})]})]}),e.jsxs("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(h,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"PyPI Package"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"Latest release and installation"})]})]}),e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-3 bg-void rounded-xl hover:bg-surface transition-colors",children:[e.jsx("span",{className:"shrink-0",children:e.jsx(u,{className:"h-5 w-5 text-cyan-300","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("div",{className:"text-primary font-medium text-sm",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-xs",children:"github.com/GuillaumeLessard/qector-decoder"})]})]})]})]})]})})]})}export{y as default}; diff --git a/assets/Evidence-0j0vQPZW.js b/assets/Evidence-0j0vQPZW.js deleted file mode 100644 index 66a2265a..00000000 --- a/assets/Evidence-0j0vQPZW.js +++ /dev/null @@ -1,14 +0,0 @@ -import{r as i,j as e}from"./vendor-react-BiHfrq0e.js";import{S as m,L as o,A as x,C as h,E as u}from"./index-DayaklK-.js";import{N as p}from"./NeuralReveal-uYarhiMA.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{Z as g}from"./releases--9GgxpSb.js";import{o as b,p as v,E as y,L as j}from"./vendor-ui-B8TlNU4J.js";n.registerPlugin(f);const N=[{title:"Official User Manual v1.0.0",desc:"QECTOR Decoder v3 Reference Manual v1.0.0 (DOI 10.5281/zenodo.21941046): the normative source for decoder contracts and claim boundaries.",status:"Verified"},{title:"SHA-256 Sealed Artifact Manifests",desc:"Source and artifact releases carry SHA-256 sealed manifests on GitHub, so published builds can be verified against their recorded hashes.",status:"Verified"},{title:"Syndromic Validation Harness",desc:"Decode runs verify H·c = s on every shot through the self-debugging harness shipped in the package, with the harness published on GitHub.",status:"Verified"},{title:"Scoped Methodology and Limitations",desc:"The manual excludes hardware-bound performance figures and documents the metadata, confidence intervals, and artifact requirements for future measurements.",status:"Methodology"}];function O(){const[t,c]=i.useState("All"),d=i.useRef([]);i.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{d.current.filter(Boolean).forEach(a=>{n.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const r=(s,a)=>{s&&(d.current[a]=s)},l=N.filter(s=>t==="All"||s.status===t);return e.jsxs(e.Fragment,{children:[e.jsx(m,{title:"Evidence & Reports · QECTOR",description:"Validation reports, reproducible artifacts, and evidence bundles for QECTOR quantum error correction decoder. Available on GitHub."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-green-400/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-green-400/10 border border-green-400/20 rounded-full text-xs font-semibold text-green-400 uppercase tracking-wider mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Verified v1.0.0 Manual · SHA-256 Sealed Manifests"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(p,{text:"Evidence & Reports",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:"Public claims are documented with their boundaries: the six-record Zenodo evidence corpus, validation reports, and SHA-256 sealed manifests archived on GitHub."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"GitHub Repository →"}),e.jsx(o,{to:"/technical-reference",className:"btn-outline",children:"Technical Reference"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsxs("div",{ref:s=>r(s,0),className:"flex flex-wrap justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-3 px-8 py-4 bg-cyan-300/10 border border-cyan-300/20 rounded-2xl hover:bg-cyan-300/20 transition-all",children:[e.jsx(b,{className:"w-6 h-6 text-cyan-300","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"github.com/GuillaumeLessard/qector-decoder"})]})]}),e.jsxs("a",{href:"/docs/reference.md",className:"inline-flex items-center gap-3 px-8 py-4 bg-gold-400/10 border border-gold-400/20 rounded-2xl hover:bg-gold-400/20 transition-all",children:[e.jsx(v,{className:"w-6 h-6 text-gold-400","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-gold-400 font-semibold",children:"Official User Manual v1.0.0"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"qector.store/docs/reference.md"})]})]})]}),e.jsx("div",{className:"flex flex-wrap items-center justify-center gap-2 max-w-lg mx-auto",children:["All","Verified","Methodology"].map(s=>e.jsx("button",{"aria-pressed":t===s,onClick:()=>c(s),className:`px-4 py-2 text-xs font-semibold rounded-lg border transition-all duration-300 ${t===s?"bg-cyan-300 text-void border-cyan-300 shadow-[0_0_12px_rgba(103,232,249,0.35)]":"bg-[#0b1329]/40 text-secondary border-gridline hover:text-primary hover:border-cyan-300/40"}`,children:s},s))}),e.jsxs("div",{ref:s=>r(s,1),className:"space-y-4",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Evidence Reports"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:l.map(s=>e.jsx(x,{title:s.title,badge:{label:s.status,color:s.status==="Verified"?"green":"gold"},desc:s.desc},s.title))})]}),e.jsxs("div",{ref:s=>r(s,2),className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Zenodo Evidence Registry"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"The complete six-record evidence corpus for QECTOR Decoder v3 v1.0.0. Each record is a DOI-stable, versioned deposit with its scope and date listed below."})]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"DOI"}),e.jsx("th",{className:"py-3 px-3",children:"Scope"}),e.jsx("th",{className:"py-3 px-3 hidden md:table-cell",children:"Title"}),e.jsx("th",{className:"py-3 px-3",children:"Date"}),e.jsx("th",{className:"py-3 px-3",children:"Access"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:g.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3",children:e.jsxs("a",{href:s.url,target:"_blank",rel:"noopener noreferrer",className:"font-mono text-cyan-300 hover:underline inline-flex items-center gap-1",children:["10.5281/zenodo.",s.id,e.jsx(y,{className:"w-3 h-3","aria-hidden":"true"})]})}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.kindLabel}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs hidden md:table-cell",children:s.title}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs font-mono whitespace-nowrap",children:s.date}),e.jsx("td",{className:"py-3 px-3 text-xs whitespace-nowrap",children:s.access==="open"?e.jsx("span",{className:"text-green-400",children:"open"}):e.jsxs("span",{className:"inline-flex items-center gap-1 text-gold-400",children:[e.jsx(j,{className:"w-3 h-3","aria-hidden":"true"})," embargoed"]})})]},s.id))})]})}),e.jsxs("p",{className:"text-muted-foreground text-xs leading-relaxed",children:["Document deposits carry their own document-level publication licence; software licensing (PolyForm Noncommercial / commercial) is separate and governed by the"," ",e.jsx(o,{to:"/license",className:"text-cyan-300 hover:underline",children:"license page"}),". The embargoed record is restricted source custody and is not part of the public evidence set."]})]}),e.jsxs("div",{ref:s=>r(s,3),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"Verify on Your Own Machine"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"No universal benchmark figures are published on this site, because results depend on your hardware. The package ships the qector-doctor environment diagnostic and the qector bench harness so you can validate and measure on your own machines. Run them yourself:"}),e.jsx(h,{language:"bash",code:`# Quick validation -pip install --upgrade "qector-decoder-v3>=1.0.1,<2" -python -c "import qector_decoder_v3 as qd; print(qd.__version__)" -# environment diagnostic -qector-doctor -# Throughput benchmark on a generated surface-code circuit -qector bench -d 5 -r 5 -s 10000 --decoder blossom --noise 0.001`})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"How to Cite QECTOR"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed mb-3",children:"If you use QECTOR Decoder v3 or its validation artifacts in academic research, please cite our software artifact release:"}),e.jsx("pre",{className:"p-4 bg-void border border-gridline rounded-xl text-xs text-muted-foreground font-mono overflow-x-auto select-all",children:`@software{lessard2026qector, - author = {Guillaume Lessard}, - title = {{QECTOR Decoder v3}: Rust/Python Quantum Error Correction Decoding Platform}, - year = {2026}, - version = {1.0.1}, - url = {https://qector.store/}, - note = {Source-available under PolyForm Noncommercial 1.0.0. Commercial license required for commercial use.} -}`})]}),e.jsx(u,{title:"Our Transparency Commitment",statement:"We document validation results openly, including known limitations. Published numeric claims link to GitHub artifact releases. We do not hide non-passes behind aggregate statistics."})]})})]})}export{O as default}; diff --git a/assets/Evidence-B1mKE-cg.js b/assets/Evidence-B1mKE-cg.js deleted file mode 100644 index ad35133d..00000000 --- a/assets/Evidence-B1mKE-cg.js +++ /dev/null @@ -1,14 +0,0 @@ -import{r as i,j as e}from"./vendor-react-BiHfrq0e.js";import{S as m,A as x,C as h,E as u}from"./index-DkYdPRY7.js";import{N as p}from"./NeuralReveal-BflyZYSb.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{Z as g}from"./releases-1-HBloZv.js";import{L as o}from"./vendor-PiU4YGcH.js";import{p as b,q as v,E as y,L as j}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";n.registerPlugin(f);const N=[{title:"Official User Manual v1.0.0",desc:"QECTOR Decoder v3 Reference Manual v1.0.0 (DOI 10.5281/zenodo.21941046): the normative source for decoder contracts and claim boundaries.",status:"Verified"},{title:"SHA-256 Sealed Artifact Manifests",desc:"Source and artifact releases carry SHA-256 sealed manifests on GitHub, so published builds can be verified against their recorded hashes.",status:"Verified"},{title:"Syndromic Validation Harness",desc:"Decode runs verify H·c = s on every shot through the self-debugging harness shipped in the package, with the harness published on GitHub.",status:"Verified"},{title:"Scoped Methodology and Limitations",desc:"The manual excludes hardware-bound performance figures and documents the metadata, confidence intervals, and artifact requirements for future measurements.",status:"Methodology"}];function C(){const[t,c]=i.useState("All"),d=i.useRef([]);i.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{d.current.filter(Boolean).forEach(a=>{n.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const r=(s,a)=>{s&&(d.current[a]=s)},l=N.filter(s=>t==="All"||s.status===t);return e.jsxs(e.Fragment,{children:[e.jsx(m,{title:"Evidence & Reports · QECTOR",description:"Validation reports, reproducible artifacts, and evidence bundles for QECTOR quantum error correction decoder. Available on GitHub."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-green-400/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-green-400/10 border border-green-400/20 rounded-full text-xs font-semibold text-green-400 uppercase tracking-wider mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Verified v1.0.0 Manual · SHA-256 Sealed Manifests"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(p,{text:"Evidence & Reports",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:"Public claims are documented with their boundaries: the six-record Zenodo evidence corpus, validation reports, and SHA-256 sealed manifests archived on GitHub."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"GitHub Repository →"}),e.jsx(o,{to:"/technical-reference",className:"btn-outline",children:"Technical Reference"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsxs("div",{ref:s=>r(s,0),className:"flex flex-wrap justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-3 px-8 py-4 bg-cyan-300/10 border border-cyan-300/20 rounded-2xl hover:bg-cyan-300/20 transition-all",children:[e.jsx(b,{className:"w-6 h-6 text-cyan-300","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"github.com/GuillaumeLessard/qector-decoder"})]})]}),e.jsxs("a",{href:"/docs/reference.md",className:"inline-flex items-center gap-3 px-8 py-4 bg-gold-400/10 border border-gold-400/20 rounded-2xl hover:bg-gold-400/20 transition-all",children:[e.jsx(v,{className:"w-6 h-6 text-gold-400","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-gold-400 font-semibold",children:"Official User Manual v1.0.0"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"qector.store/docs/reference.md"})]})]})]}),e.jsx("div",{className:"flex flex-wrap items-center justify-center gap-2 max-w-lg mx-auto",children:["All","Verified","Methodology"].map(s=>e.jsx("button",{"aria-pressed":t===s,onClick:()=>c(s),className:`px-4 py-2 text-xs font-semibold rounded-lg border transition-all duration-300 ${t===s?"bg-cyan-300 text-void border-cyan-300 shadow-[0_0_12px_rgba(103,232,249,0.35)]":"bg-[#0b1329]/40 text-secondary border-gridline hover:text-primary hover:border-cyan-300/40"}`,children:s},s))}),e.jsxs("div",{ref:s=>r(s,1),className:"space-y-4",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Evidence Reports"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:l.map(s=>e.jsx(x,{title:s.title,badge:{label:s.status,color:s.status==="Verified"?"green":"gold"},desc:s.desc},s.title))})]}),e.jsxs("div",{ref:s=>r(s,2),className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Zenodo Evidence Registry"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"The complete six-record evidence corpus for QECTOR Decoder v3 v1.0.0. Each record is a DOI-stable, versioned deposit with its scope and date listed below."})]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"DOI"}),e.jsx("th",{className:"py-3 px-3",children:"Scope"}),e.jsx("th",{className:"py-3 px-3 hidden md:table-cell",children:"Title"}),e.jsx("th",{className:"py-3 px-3",children:"Date"}),e.jsx("th",{className:"py-3 px-3",children:"Access"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:g.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3",children:e.jsxs("a",{href:s.url,target:"_blank",rel:"noopener noreferrer",className:"font-mono text-cyan-300 hover:underline inline-flex items-center gap-1",children:["10.5281/zenodo.",s.id,e.jsx(y,{className:"w-3 h-3","aria-hidden":"true"})]})}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.kindLabel}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs hidden md:table-cell",children:s.title}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs font-mono whitespace-nowrap",children:s.date}),e.jsx("td",{className:"py-3 px-3 text-xs whitespace-nowrap",children:s.access==="open"?e.jsx("span",{className:"text-green-400",children:"open"}):e.jsxs("span",{className:"inline-flex items-center gap-1 text-gold-400",children:[e.jsx(j,{className:"w-3 h-3","aria-hidden":"true"})," embargoed"]})})]},s.id))})]})}),e.jsxs("p",{className:"text-muted-foreground text-xs leading-relaxed",children:["Document deposits carry their own document-level publication licence; software licensing (PolyForm Noncommercial / commercial) is separate and governed by the"," ",e.jsx(o,{to:"/license",className:"text-cyan-300 hover:underline",children:"license page"}),". The embargoed record is restricted source custody and is not part of the public evidence set."]})]}),e.jsxs("div",{ref:s=>r(s,3),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"Verify on Your Own Machine"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"No universal benchmark figures are published on this site, because results depend on your hardware. The package ships the qector-doctor environment diagnostic and the qector bench harness so you can validate and measure on your own machines. Run them yourself:"}),e.jsx(h,{language:"bash",code:`# Quick validation -pip install --upgrade "qector-decoder-v3>=1.0,<2" -python -c "import qector_decoder_v3 as qd; print(qd.__version__)" -# environment diagnostic -qector-doctor -# Throughput benchmark on a generated surface-code circuit -qector bench -d 5 -r 5 -s 10000 --decoder blossom --noise 0.001`})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"How to Cite QECTOR"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed mb-3",children:"If you use QECTOR Decoder v3 or its validation artifacts in academic research, please cite our software artifact release:"}),e.jsx("pre",{className:"p-4 bg-void border border-gridline rounded-xl text-xs text-muted-foreground font-mono overflow-x-auto select-all",children:`@software{lessard2026qector, - author = {Guillaume Lessard}, - title = {{QECTOR Decoder v3}: Rust/Python Quantum Error Correction Decoding Platform}, - year = {2026}, - version = {1.0.1}, - url = {https://qector.store/}, - note = {Source-available under PolyForm Noncommercial 1.0.0. Commercial license required for commercial use.} -}`})]}),e.jsx(u,{title:"Our Transparency Commitment",statement:"We document validation results openly, including known limitations. Published numeric claims link to GitHub artifact releases. We do not hide non-passes behind aggregate statistics."})]})})]})}export{C as default}; diff --git a/assets/Evidence-B6pxWHub.js b/assets/Evidence-B6pxWHub.js deleted file mode 100644 index 5338c7e7..00000000 --- a/assets/Evidence-B6pxWHub.js +++ /dev/null @@ -1,14 +0,0 @@ -import{r as i,j as e}from"./vendor-react-BiHfrq0e.js";import{S as m,A as x,C as h,E as u}from"./index-CxWP17m6.js";import{N as p}from"./NeuralReveal-BflyZYSb.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{Z as g}from"./releases-1-HBloZv.js";import{L as o}from"./vendor-PiU4YGcH.js";import{p as b,q as v,E as y,L as j}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";n.registerPlugin(f);const N=[{title:"Official User Manual v1.0.0",desc:"QECTOR Decoder v3 Reference Manual v1.0.0 (DOI 10.5281/zenodo.21941046): the normative source for decoder contracts and claim boundaries.",status:"Verified"},{title:"SHA-256 Sealed Artifact Manifests",desc:"Source and artifact releases carry SHA-256 sealed manifests on GitHub, so published builds can be verified against their recorded hashes.",status:"Verified"},{title:"Syndromic Validation Harness",desc:"Decode runs verify H·c = s on every shot through the self-debugging harness shipped in the package, with the harness published on GitHub.",status:"Verified"},{title:"Scoped Methodology and Limitations",desc:"The manual excludes hardware-bound performance figures and documents the metadata, confidence intervals, and artifact requirements for future measurements.",status:"Methodology"}];function C(){const[t,c]=i.useState("All"),d=i.useRef([]);i.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{d.current.filter(Boolean).forEach(a=>{n.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const r=(s,a)=>{s&&(d.current[a]=s)},l=N.filter(s=>t==="All"||s.status===t);return e.jsxs(e.Fragment,{children:[e.jsx(m,{title:"Evidence & Reports · QECTOR",description:"Validation reports, reproducible artifacts, and evidence bundles for QECTOR quantum error correction decoder. Available on GitHub."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-green-400/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-green-400/10 border border-green-400/20 rounded-full text-xs font-semibold text-green-400 uppercase tracking-wider mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Verified v1.0.0 Manual · SHA-256 Sealed Manifests"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(p,{text:"Evidence & Reports",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:"Public claims are documented with their boundaries: the six-record Zenodo evidence corpus, validation reports, and SHA-256 sealed manifests archived on GitHub."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"GitHub Repository →"}),e.jsx(o,{to:"/technical-reference",className:"btn-outline",children:"Technical Reference"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsxs("div",{ref:s=>r(s,0),className:"flex flex-wrap justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-3 px-8 py-4 bg-cyan-300/10 border border-cyan-300/20 rounded-2xl hover:bg-cyan-300/20 transition-all",children:[e.jsx(b,{className:"w-6 h-6 text-cyan-300","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"github.com/GuillaumeLessard/qector-decoder"})]})]}),e.jsxs("a",{href:"/docs/reference.md",className:"inline-flex items-center gap-3 px-8 py-4 bg-gold-400/10 border border-gold-400/20 rounded-2xl hover:bg-gold-400/20 transition-all",children:[e.jsx(v,{className:"w-6 h-6 text-gold-400","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-gold-400 font-semibold",children:"Official User Manual v1.0.0"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"qector.store/docs/reference.md"})]})]})]}),e.jsx("div",{className:"flex flex-wrap items-center justify-center gap-2 max-w-lg mx-auto",children:["All","Verified","Methodology"].map(s=>e.jsx("button",{"aria-pressed":t===s,onClick:()=>c(s),className:`px-4 py-2 text-xs font-semibold rounded-lg border transition-all duration-300 ${t===s?"bg-cyan-300 text-void border-cyan-300 shadow-[0_0_12px_rgba(103,232,249,0.35)]":"bg-[#0b1329]/40 text-secondary border-gridline hover:text-primary hover:border-cyan-300/40"}`,children:s},s))}),e.jsxs("div",{ref:s=>r(s,1),className:"space-y-4",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Evidence Reports"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:l.map(s=>e.jsx(x,{title:s.title,badge:{label:s.status,color:s.status==="Verified"?"green":"gold"},desc:s.desc},s.title))})]}),e.jsxs("div",{ref:s=>r(s,2),className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Zenodo Evidence Registry"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"The complete six-record evidence corpus for QECTOR Decoder v3 v1.0.0. Each record is a DOI-stable, versioned deposit with its scope and date listed below."})]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"DOI"}),e.jsx("th",{className:"py-3 px-3",children:"Scope"}),e.jsx("th",{className:"py-3 px-3 hidden md:table-cell",children:"Title"}),e.jsx("th",{className:"py-3 px-3",children:"Date"}),e.jsx("th",{className:"py-3 px-3",children:"Access"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:g.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3",children:e.jsxs("a",{href:s.url,target:"_blank",rel:"noopener noreferrer",className:"font-mono text-cyan-300 hover:underline inline-flex items-center gap-1",children:["10.5281/zenodo.",s.id,e.jsx(y,{className:"w-3 h-3","aria-hidden":"true"})]})}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.kindLabel}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs hidden md:table-cell",children:s.title}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs font-mono whitespace-nowrap",children:s.date}),e.jsx("td",{className:"py-3 px-3 text-xs whitespace-nowrap",children:s.access==="open"?e.jsx("span",{className:"text-green-400",children:"open"}):e.jsxs("span",{className:"inline-flex items-center gap-1 text-gold-400",children:[e.jsx(j,{className:"w-3 h-3","aria-hidden":"true"})," embargoed"]})})]},s.id))})]})}),e.jsxs("p",{className:"text-muted-foreground text-xs leading-relaxed",children:["Document deposits carry their own document-level publication licence; software licensing (PolyForm Noncommercial / commercial) is separate and governed by the"," ",e.jsx(o,{to:"/license",className:"text-cyan-300 hover:underline",children:"license page"}),". The embargoed record is restricted source custody and is not part of the public evidence set."]})]}),e.jsxs("div",{ref:s=>r(s,3),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"Verify on Your Own Machine"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"No universal benchmark figures are published on this site, because results depend on your hardware. The package ships the qector-doctor environment diagnostic and the qector bench harness so you can validate and measure on your own machines. Run them yourself:"}),e.jsx(h,{language:"bash",code:`# Quick validation -pip install --upgrade "qector-decoder-v3>=1.0,<2" -python -c "import qector_decoder_v3 as qd; print(qd.__version__)" -# environment diagnostic -qector-doctor -# Throughput benchmark on a generated surface-code circuit -qector bench -d 5 -r 5 -s 10000 --decoder blossom --noise 0.001`})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"How to Cite QECTOR"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed mb-3",children:"If you use QECTOR Decoder v3 or its validation artifacts in academic research, please cite our software artifact release:"}),e.jsx("pre",{className:"p-4 bg-void border border-gridline rounded-xl text-xs text-muted-foreground font-mono overflow-x-auto select-all",children:`@software{lessard2026qector, - author = {Guillaume Lessard}, - title = {{QECTOR Decoder v3}: Rust/Python Quantum Error Correction Decoding Platform}, - year = {2026}, - version = {1.0.1}, - url = {https://qector.store/}, - note = {Source-available under PolyForm Noncommercial 1.0.0. Commercial license required for commercial use.} -}`})]}),e.jsx(u,{title:"Our Transparency Commitment",statement:"We document validation results openly, including known limitations. Published numeric claims link to GitHub artifact releases. We do not hide non-passes behind aggregate statistics."})]})})]})}export{C as default}; diff --git a/assets/Evidence-BF-nkrsP.js b/assets/Evidence-BF-nkrsP.js deleted file mode 100644 index a88b2df3..00000000 --- a/assets/Evidence-BF-nkrsP.js +++ /dev/null @@ -1,14 +0,0 @@ -import{r as i,j as e}from"./vendor-react-BiHfrq0e.js";import{S as m,A as x,C as h,E as u}from"./index-DlmjLVYe.js";import{N as p}from"./NeuralReveal-BflyZYSb.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{Z as g}from"./releases-DiQz_IDu.js";import{L as o}from"./vendor-PiU4YGcH.js";import{p as b,q as v,E as y,L as j}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";n.registerPlugin(f);const N=[{title:"Official User Manual v1.0.0",desc:"QECTOR Decoder v3 Reference Manual v1.0.0 (DOI 10.5281/zenodo.21941046): the normative source for decoder contracts and claim boundaries.",status:"Verified"},{title:"SHA-256 Sealed Artifact Manifests",desc:"Source and artifact releases carry SHA-256 sealed manifests on GitHub, so published builds can be verified against their recorded hashes.",status:"Verified"},{title:"Syndromic Validation Harness",desc:"Decode runs verify H·c = s on every shot through the self-debugging harness shipped in the package, with the harness published on GitHub.",status:"Verified"},{title:"Scoped Methodology and Limitations",desc:"The manual excludes hardware-bound performance figures and documents the metadata, confidence intervals, and artifact requirements for future measurements.",status:"Methodology"}];function C(){const[t,c]=i.useState("All"),d=i.useRef([]);i.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{d.current.filter(Boolean).forEach(a=>{n.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const r=(s,a)=>{s&&(d.current[a]=s)},l=N.filter(s=>t==="All"||s.status===t);return e.jsxs(e.Fragment,{children:[e.jsx(m,{title:"Evidence & Reports · QECTOR",description:"Validation reports, reproducible artifacts, and evidence bundles for QECTOR quantum error correction decoder. Available on GitHub."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-green-400/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-green-400/10 border border-green-400/20 rounded-full text-xs font-semibold text-green-400 uppercase tracking-wider mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Verified v1.0.0 Manual · SHA-256 Sealed Manifests"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(p,{text:"Evidence & Reports",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:"Public claims are documented with their boundaries: the six-record Zenodo evidence corpus, validation reports, and SHA-256 sealed manifests archived on GitHub."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"GitHub Repository →"}),e.jsx(o,{to:"/technical-reference",className:"btn-outline",children:"Technical Reference"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsxs("div",{ref:s=>r(s,0),className:"flex flex-wrap justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-3 px-8 py-4 bg-cyan-300/10 border border-cyan-300/20 rounded-2xl hover:bg-cyan-300/20 transition-all",children:[e.jsx(b,{className:"w-6 h-6 text-cyan-300","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"github.com/GuillaumeLessard/qector-decoder"})]})]}),e.jsxs("a",{href:"/docs/reference.md",className:"inline-flex items-center gap-3 px-8 py-4 bg-gold-400/10 border border-gold-400/20 rounded-2xl hover:bg-gold-400/20 transition-all",children:[e.jsx(v,{className:"w-6 h-6 text-gold-400","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-gold-400 font-semibold",children:"Official User Manual v1.0.0"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"qector.store/docs/reference.md"})]})]})]}),e.jsx("div",{className:"flex flex-wrap items-center justify-center gap-2 max-w-lg mx-auto",children:["All","Verified","Methodology"].map(s=>e.jsx("button",{"aria-pressed":t===s,onClick:()=>c(s),className:`px-4 py-2 text-xs font-semibold rounded-lg border transition-all duration-300 ${t===s?"bg-cyan-300 text-void border-cyan-300 shadow-[0_0_12px_rgba(103,232,249,0.35)]":"bg-[#0b1329]/40 text-secondary border-gridline hover:text-primary hover:border-cyan-300/40"}`,children:s},s))}),e.jsxs("div",{ref:s=>r(s,1),className:"space-y-4",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Evidence Reports"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:l.map(s=>e.jsx(x,{title:s.title,badge:{label:s.status,color:s.status==="Verified"?"green":"gold"},desc:s.desc},s.title))})]}),e.jsxs("div",{ref:s=>r(s,2),className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Zenodo Evidence Registry"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"The complete six-record evidence corpus for QECTOR Decoder v3 v1.0.0. Each record is a DOI-stable, versioned deposit with its scope and date listed below."})]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"DOI"}),e.jsx("th",{className:"py-3 px-3",children:"Scope"}),e.jsx("th",{className:"py-3 px-3 hidden md:table-cell",children:"Title"}),e.jsx("th",{className:"py-3 px-3",children:"Date"}),e.jsx("th",{className:"py-3 px-3",children:"Access"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:g.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3",children:e.jsxs("a",{href:s.url,target:"_blank",rel:"noopener noreferrer",className:"font-mono text-cyan-300 hover:underline inline-flex items-center gap-1",children:["10.5281/zenodo.",s.id,e.jsx(y,{className:"w-3 h-3","aria-hidden":"true"})]})}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.kindLabel}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs hidden md:table-cell",children:s.title}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs font-mono whitespace-nowrap",children:s.date}),e.jsx("td",{className:"py-3 px-3 text-xs whitespace-nowrap",children:s.access==="open"?e.jsx("span",{className:"text-green-400",children:"open"}):e.jsxs("span",{className:"inline-flex items-center gap-1 text-gold-400",children:[e.jsx(j,{className:"w-3 h-3","aria-hidden":"true"})," embargoed"]})})]},s.id))})]})}),e.jsxs("p",{className:"text-muted-foreground text-xs leading-relaxed",children:["Document deposits carry their own document-level publication licence; software licensing (PolyForm Noncommercial / commercial) is separate and governed by the"," ",e.jsx(o,{to:"/license",className:"text-cyan-300 hover:underline",children:"license page"}),". The embargoed record is restricted source custody and is not part of the public evidence set."]})]}),e.jsxs("div",{ref:s=>r(s,3),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"Verify on Your Own Machine"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"No universal benchmark figures are published on this site, because results depend on your hardware. The package ships the qector-doctor environment diagnostic and the qector bench harness so you can validate and measure on your own machines. Run them yourself:"}),e.jsx(h,{language:"bash",code:`# Quick validation -pip install --upgrade "qector-decoder-v3>=1.0,<2" -python -c "import qector_decoder_v3 as qd; print(qd.__version__)" -# 15-check environment diagnostic (v1.0.0) -qector-doctor -# Throughput benchmark on a generated surface-code circuit -qector bench -d 5 -r 5 -s 10000 --decoder blossom --noise 0.001`})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"How to Cite QECTOR"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed mb-3",children:"If you use QECTOR Decoder v3 or its validation artifacts in academic research, please cite our software artifact release:"}),e.jsx("pre",{className:"p-4 bg-void border border-gridline rounded-xl text-xs text-muted-foreground font-mono overflow-x-auto select-all",children:`@software{lessard2026qector, - author = {Guillaume Lessard}, - title = {{QECTOR Decoder v3}: Rust/Python Quantum Error Correction Decoding Platform}, - year = {2026}, - version = {1.0.0}, - url = {https://www.qector.store}, - note = {Source-available under PolyForm Noncommercial 1.0.0. Commercial license required for commercial use.} -}`})]}),e.jsx(u,{title:"Our Transparency Commitment",statement:"We document validation results openly, including known limitations. Published numeric claims link to GitHub artifact releases. We do not hide non-passes behind aggregate statistics."})]})})]})}export{C as default}; diff --git a/assets/Evidence-Bj6L0ipY.js b/assets/Evidence-Bj6L0ipY.js deleted file mode 100644 index bf4ef708..00000000 --- a/assets/Evidence-Bj6L0ipY.js +++ /dev/null @@ -1,14 +0,0 @@ -import{r as i,j as e}from"./vendor-react-BiHfrq0e.js";import{S as m,A as x,C as h,E as u}from"./index-BN-vOeL2.js";import{N as p}from"./NeuralReveal-BflyZYSb.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{Z as g}from"./releases-DiQz_IDu.js";import{L as o}from"./vendor-PiU4YGcH.js";import{p as b,q as v,E as y,L as j}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";n.registerPlugin(f);const N=[{title:"Official User Manual v1.0.0",desc:"QECTOR Decoder v3 Reference Manual v1.0.0 (DOI 10.5281/zenodo.21941046): the normative source for decoder contracts and claim boundaries.",status:"Verified"},{title:"SHA-256 Sealed Artifact Manifests",desc:"Source and artifact releases carry SHA-256 sealed manifests on GitHub, so published builds can be verified against their recorded hashes.",status:"Verified"},{title:"Syndromic Validation Harness",desc:"Decode runs verify H·c = s on every shot through the self-debugging harness shipped in the package, with the harness published on GitHub.",status:"Verified"},{title:"Scoped Methodology and Limitations",desc:"The manual excludes hardware-bound performance figures and documents the metadata, confidence intervals, and artifact requirements for future measurements.",status:"Methodology"}];function C(){const[t,c]=i.useState("All"),d=i.useRef([]);i.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{d.current.filter(Boolean).forEach(a=>{n.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const r=(s,a)=>{s&&(d.current[a]=s)},l=N.filter(s=>t==="All"||s.status===t);return e.jsxs(e.Fragment,{children:[e.jsx(m,{title:"Evidence & Reports · QECTOR",description:"Validation reports, reproducible artifacts, and evidence bundles for QECTOR quantum error correction decoder. Available on GitHub."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-green-400/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-green-400/10 border border-green-400/20 rounded-full text-xs font-semibold text-green-400 uppercase tracking-wider mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Verified v1.0.0 Manual · SHA-256 Sealed Manifests"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(p,{text:"Evidence & Reports",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:"Public claims are documented with their boundaries: the six-record Zenodo evidence corpus, validation reports, and SHA-256 sealed manifests archived on GitHub."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"GitHub Repository →"}),e.jsx(o,{to:"/technical-reference",className:"btn-outline",children:"Technical Reference"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsxs("div",{ref:s=>r(s,0),className:"flex flex-wrap justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-3 px-8 py-4 bg-cyan-300/10 border border-cyan-300/20 rounded-2xl hover:bg-cyan-300/20 transition-all",children:[e.jsx(b,{className:"w-6 h-6 text-cyan-300","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"github.com/GuillaumeLessard/qector-decoder"})]})]}),e.jsxs("a",{href:"/docs/reference.md",className:"inline-flex items-center gap-3 px-8 py-4 bg-gold-400/10 border border-gold-400/20 rounded-2xl hover:bg-gold-400/20 transition-all",children:[e.jsx(v,{className:"w-6 h-6 text-gold-400","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-gold-400 font-semibold",children:"Official User Manual v1.0.0"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"qector.store/docs/reference.md"})]})]})]}),e.jsx("div",{className:"flex flex-wrap items-center justify-center gap-2 max-w-lg mx-auto",children:["All","Verified","Methodology"].map(s=>e.jsx("button",{"aria-pressed":t===s,onClick:()=>c(s),className:`px-4 py-2 text-xs font-semibold rounded-lg border transition-all duration-300 ${t===s?"bg-cyan-300 text-void border-cyan-300 shadow-[0_0_12px_rgba(103,232,249,0.35)]":"bg-[#0b1329]/40 text-secondary border-gridline hover:text-primary hover:border-cyan-300/40"}`,children:s},s))}),e.jsxs("div",{ref:s=>r(s,1),className:"space-y-4",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Evidence Reports"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:l.map(s=>e.jsx(x,{title:s.title,badge:{label:s.status,color:s.status==="Verified"?"green":"gold"},desc:s.desc},s.title))})]}),e.jsxs("div",{ref:s=>r(s,2),className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Zenodo Evidence Registry"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"The complete six-record evidence corpus for QECTOR Decoder v3 v1.0.0. Each record is a DOI-stable, versioned deposit with its scope and date listed below."})]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"DOI"}),e.jsx("th",{className:"py-3 px-3",children:"Scope"}),e.jsx("th",{className:"py-3 px-3 hidden md:table-cell",children:"Title"}),e.jsx("th",{className:"py-3 px-3",children:"Date"}),e.jsx("th",{className:"py-3 px-3",children:"Access"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:g.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3",children:e.jsxs("a",{href:s.url,target:"_blank",rel:"noopener noreferrer",className:"font-mono text-cyan-300 hover:underline inline-flex items-center gap-1",children:["10.5281/zenodo.",s.id,e.jsx(y,{className:"w-3 h-3","aria-hidden":"true"})]})}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.kindLabel}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs hidden md:table-cell",children:s.title}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs font-mono whitespace-nowrap",children:s.date}),e.jsx("td",{className:"py-3 px-3 text-xs whitespace-nowrap",children:s.access==="open"?e.jsx("span",{className:"text-green-400",children:"open"}):e.jsxs("span",{className:"inline-flex items-center gap-1 text-gold-400",children:[e.jsx(j,{className:"w-3 h-3","aria-hidden":"true"})," embargoed"]})})]},s.id))})]})}),e.jsxs("p",{className:"text-muted-foreground text-xs leading-relaxed",children:["Document deposits carry their own document-level publication licence; software licensing (PolyForm Noncommercial / commercial) is separate and governed by the"," ",e.jsx(o,{to:"/license",className:"text-cyan-300 hover:underline",children:"license page"}),". The embargoed record is restricted source custody and is not part of the public evidence set."]})]}),e.jsxs("div",{ref:s=>r(s,3),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"Verify on Your Own Machine"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"No universal benchmark figures are published on this site, because results depend on your hardware. The package ships the qector-doctor environment diagnostic and the qector bench harness so you can validate and measure on your own machines. Run them yourself:"}),e.jsx(h,{language:"bash",code:`# Quick validation -pip install --upgrade "qector-decoder-v3>=1.0,<2" -python -c "import qector_decoder_v3 as qd; print(qd.__version__)" -# 15-check environment diagnostic (v1.0.0) -qector-doctor -# Throughput benchmark on a generated surface-code circuit -qector bench -d 5 -r 5 -s 10000 --decoder blossom --noise 0.001`})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"How to Cite QECTOR"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed mb-3",children:"If you use QECTOR Decoder v3 or its validation artifacts in academic research, please cite our software artifact release:"}),e.jsx("pre",{className:"p-4 bg-void border border-gridline rounded-xl text-xs text-muted-foreground font-mono overflow-x-auto select-all",children:`@software{lessard2026qector, - author = {Guillaume Lessard}, - title = {{QECTOR Decoder v3}: Rust/Python Quantum Error Correction Decoding Platform}, - year = {2026}, - version = {1.0.0}, - url = {https://www.qector.store}, - note = {Source-available under PolyForm Noncommercial 1.0.0. Commercial license required for commercial use.} -}`})]}),e.jsx(u,{title:"Our Transparency Commitment",statement:"We document validation results openly, including known limitations. Published numeric claims link to GitHub artifact releases. We do not hide non-passes behind aggregate statistics."})]})})]})}export{C as default}; diff --git a/assets/Evidence-BtzcgP8e.js b/assets/Evidence-BtzcgP8e.js deleted file mode 100644 index fb1243ff..00000000 --- a/assets/Evidence-BtzcgP8e.js +++ /dev/null @@ -1,14 +0,0 @@ -import{r as i,j as e}from"./vendor-react-BiHfrq0e.js";import{S as m,L as o,A as x,C as h,E as u}from"./index-PdoH5kLF.js";import{N as p}from"./NeuralReveal-Bsl9IGCr.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{Z as g}from"./releases-1-HBloZv.js";import{o as b,p as v,E as y,L as j}from"./vendor-ui-B8TlNU4J.js";n.registerPlugin(f);const N=[{title:"Official User Manual v1.0.0",desc:"QECTOR Decoder v3 Reference Manual v1.0.0 (DOI 10.5281/zenodo.21941046): the normative source for decoder contracts and claim boundaries.",status:"Verified"},{title:"SHA-256 Sealed Artifact Manifests",desc:"Source and artifact releases carry SHA-256 sealed manifests on GitHub, so published builds can be verified against their recorded hashes.",status:"Verified"},{title:"Syndromic Validation Harness",desc:"Decode runs verify H·c = s on every shot through the self-debugging harness shipped in the package, with the harness published on GitHub.",status:"Verified"},{title:"Scoped Methodology and Limitations",desc:"The manual excludes hardware-bound performance figures and documents the metadata, confidence intervals, and artifact requirements for future measurements.",status:"Methodology"}];function O(){const[t,c]=i.useState("All"),d=i.useRef([]);i.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{d.current.filter(Boolean).forEach(a=>{n.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const r=(s,a)=>{s&&(d.current[a]=s)},l=N.filter(s=>t==="All"||s.status===t);return e.jsxs(e.Fragment,{children:[e.jsx(m,{title:"Evidence & Reports · QECTOR",description:"Validation reports, reproducible artifacts, and evidence bundles for QECTOR quantum error correction decoder. Available on GitHub."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-green-400/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-green-400/10 border border-green-400/20 rounded-full text-xs font-semibold text-green-400 uppercase tracking-wider mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Verified v1.0.0 Manual · SHA-256 Sealed Manifests"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(p,{text:"Evidence & Reports",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:"Public claims are documented with their boundaries: the six-record Zenodo evidence corpus, validation reports, and SHA-256 sealed manifests archived on GitHub."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"GitHub Repository →"}),e.jsx(o,{to:"/technical-reference",className:"btn-outline",children:"Technical Reference"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsxs("div",{ref:s=>r(s,0),className:"flex flex-wrap justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-3 px-8 py-4 bg-cyan-300/10 border border-cyan-300/20 rounded-2xl hover:bg-cyan-300/20 transition-all",children:[e.jsx(b,{className:"w-6 h-6 text-cyan-300","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"github.com/GuillaumeLessard/qector-decoder"})]})]}),e.jsxs("a",{href:"/docs/reference.md",className:"inline-flex items-center gap-3 px-8 py-4 bg-gold-400/10 border border-gold-400/20 rounded-2xl hover:bg-gold-400/20 transition-all",children:[e.jsx(v,{className:"w-6 h-6 text-gold-400","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-gold-400 font-semibold",children:"Official User Manual v1.0.0"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"qector.store/docs/reference.md"})]})]})]}),e.jsx("div",{className:"flex flex-wrap items-center justify-center gap-2 max-w-lg mx-auto",children:["All","Verified","Methodology"].map(s=>e.jsx("button",{"aria-pressed":t===s,onClick:()=>c(s),className:`px-4 py-2 text-xs font-semibold rounded-lg border transition-all duration-300 ${t===s?"bg-cyan-300 text-void border-cyan-300 shadow-[0_0_12px_rgba(103,232,249,0.35)]":"bg-[#0b1329]/40 text-secondary border-gridline hover:text-primary hover:border-cyan-300/40"}`,children:s},s))}),e.jsxs("div",{ref:s=>r(s,1),className:"space-y-4",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Evidence Reports"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:l.map(s=>e.jsx(x,{title:s.title,badge:{label:s.status,color:s.status==="Verified"?"green":"gold"},desc:s.desc},s.title))})]}),e.jsxs("div",{ref:s=>r(s,2),className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Zenodo Evidence Registry"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"The complete six-record evidence corpus for QECTOR Decoder v3 v1.0.0. Each record is a DOI-stable, versioned deposit with its scope and date listed below."})]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"DOI"}),e.jsx("th",{className:"py-3 px-3",children:"Scope"}),e.jsx("th",{className:"py-3 px-3 hidden md:table-cell",children:"Title"}),e.jsx("th",{className:"py-3 px-3",children:"Date"}),e.jsx("th",{className:"py-3 px-3",children:"Access"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:g.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3",children:e.jsxs("a",{href:s.url,target:"_blank",rel:"noopener noreferrer",className:"font-mono text-cyan-300 hover:underline inline-flex items-center gap-1",children:["10.5281/zenodo.",s.id,e.jsx(y,{className:"w-3 h-3","aria-hidden":"true"})]})}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.kindLabel}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs hidden md:table-cell",children:s.title}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs font-mono whitespace-nowrap",children:s.date}),e.jsx("td",{className:"py-3 px-3 text-xs whitespace-nowrap",children:s.access==="open"?e.jsx("span",{className:"text-green-400",children:"open"}):e.jsxs("span",{className:"inline-flex items-center gap-1 text-gold-400",children:[e.jsx(j,{className:"w-3 h-3","aria-hidden":"true"})," embargoed"]})})]},s.id))})]})}),e.jsxs("p",{className:"text-muted-foreground text-xs leading-relaxed",children:["Document deposits carry their own document-level publication licence; software licensing (PolyForm Noncommercial / commercial) is separate and governed by the"," ",e.jsx(o,{to:"/license",className:"text-cyan-300 hover:underline",children:"license page"}),". The embargoed record is restricted source custody and is not part of the public evidence set."]})]}),e.jsxs("div",{ref:s=>r(s,3),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"Verify on Your Own Machine"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"No universal benchmark figures are published on this site, because results depend on your hardware. The package ships the qector-doctor environment diagnostic and the qector bench harness so you can validate and measure on your own machines. Run them yourself:"}),e.jsx(h,{language:"bash",code:`# Quick validation -pip install --upgrade "qector-decoder-v3>=1.0.1,<2" -python -c "import qector_decoder_v3 as qd; print(qd.__version__)" -# environment diagnostic -qector-doctor -# Throughput benchmark on a generated surface-code circuit -qector bench -d 5 -r 5 -s 10000 --decoder blossom --noise 0.001`})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"How to Cite QECTOR"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed mb-3",children:"If you use QECTOR Decoder v3 or its validation artifacts in academic research, please cite our software artifact release:"}),e.jsx("pre",{className:"p-4 bg-void border border-gridline rounded-xl text-xs text-muted-foreground font-mono overflow-x-auto select-all",children:`@software{lessard2026qector, - author = {Guillaume Lessard}, - title = {{QECTOR Decoder v3}: Rust/Python Quantum Error Correction Decoding Platform}, - year = {2026}, - version = {1.0.1}, - url = {https://qector.store/}, - note = {Source-available under PolyForm Noncommercial 1.0.0. Commercial license required for commercial use.} -}`})]}),e.jsx(u,{title:"Our Transparency Commitment",statement:"We document validation results openly, including known limitations. Published numeric claims link to GitHub artifact releases. We do not hide non-passes behind aggregate statistics."})]})})]})}export{O as default}; diff --git a/assets/Evidence-BwlSEt0X.js b/assets/Evidence-BwlSEt0X.js deleted file mode 100644 index 7a1ecfb0..00000000 --- a/assets/Evidence-BwlSEt0X.js +++ /dev/null @@ -1,14 +0,0 @@ -import{r as i,j as e}from"./vendor-react-BiHfrq0e.js";import{S as m,A as x,C as h,E as u}from"./index-Bh9DBCb3.js";import{N as p}from"./NeuralReveal-D-EQoOl2.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{Z as g}from"./releases-1-HBloZv.js";import{L as o}from"./vendor-PiU4YGcH.js";import{p as b,q as v,E as y,L as j}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";n.registerPlugin(f);const N=[{title:"Official User Manual v1.0.0",desc:"QECTOR Decoder v3 Reference Manual v1.0.0 (DOI 10.5281/zenodo.21941046): the normative source for decoder contracts and claim boundaries.",status:"Verified"},{title:"SHA-256 Sealed Artifact Manifests",desc:"Source and artifact releases carry SHA-256 sealed manifests on GitHub, so published builds can be verified against their recorded hashes.",status:"Verified"},{title:"Syndromic Validation Harness",desc:"Decode runs verify H·c = s on every shot through the self-debugging harness shipped in the package, with the harness published on GitHub.",status:"Verified"},{title:"Scoped Methodology and Limitations",desc:"The manual excludes hardware-bound performance figures and documents the metadata, confidence intervals, and artifact requirements for future measurements.",status:"Methodology"}];function C(){const[t,c]=i.useState("All"),d=i.useRef([]);i.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{d.current.filter(Boolean).forEach(a=>{n.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const r=(s,a)=>{s&&(d.current[a]=s)},l=N.filter(s=>t==="All"||s.status===t);return e.jsxs(e.Fragment,{children:[e.jsx(m,{title:"Evidence & Reports · QECTOR",description:"Validation reports, reproducible artifacts, and evidence bundles for QECTOR quantum error correction decoder. Available on GitHub."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-green-400/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-green-400/10 border border-green-400/20 rounded-full text-xs font-semibold text-green-400 uppercase tracking-wider mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Verified v1.0.0 Manual · SHA-256 Sealed Manifests"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(p,{text:"Evidence & Reports",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:"Public claims are documented with their boundaries: the six-record Zenodo evidence corpus, validation reports, and SHA-256 sealed manifests archived on GitHub."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"GitHub Repository →"}),e.jsx(o,{to:"/technical-reference",className:"btn-outline",children:"Technical Reference"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsxs("div",{ref:s=>r(s,0),className:"flex flex-wrap justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-3 px-8 py-4 bg-cyan-300/10 border border-cyan-300/20 rounded-2xl hover:bg-cyan-300/20 transition-all",children:[e.jsx(b,{className:"w-6 h-6 text-cyan-300","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"github.com/GuillaumeLessard/qector-decoder"})]})]}),e.jsxs("a",{href:"/docs/reference.md",className:"inline-flex items-center gap-3 px-8 py-4 bg-gold-400/10 border border-gold-400/20 rounded-2xl hover:bg-gold-400/20 transition-all",children:[e.jsx(v,{className:"w-6 h-6 text-gold-400","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-gold-400 font-semibold",children:"Official User Manual v1.0.0"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"qector.store/docs/reference.md"})]})]})]}),e.jsx("div",{className:"flex flex-wrap items-center justify-center gap-2 max-w-lg mx-auto",children:["All","Verified","Methodology"].map(s=>e.jsx("button",{"aria-pressed":t===s,onClick:()=>c(s),className:`px-4 py-2 text-xs font-semibold rounded-lg border transition-all duration-300 ${t===s?"bg-cyan-300 text-void border-cyan-300 shadow-[0_0_12px_rgba(103,232,249,0.35)]":"bg-[#0b1329]/40 text-secondary border-gridline hover:text-primary hover:border-cyan-300/40"}`,children:s},s))}),e.jsxs("div",{ref:s=>r(s,1),className:"space-y-4",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Evidence Reports"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:l.map(s=>e.jsx(x,{title:s.title,badge:{label:s.status,color:s.status==="Verified"?"green":"gold"},desc:s.desc},s.title))})]}),e.jsxs("div",{ref:s=>r(s,2),className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Zenodo Evidence Registry"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"The complete six-record evidence corpus for QECTOR Decoder v3 v1.0.0. Each record is a DOI-stable, versioned deposit with its scope and date listed below."})]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"DOI"}),e.jsx("th",{className:"py-3 px-3",children:"Scope"}),e.jsx("th",{className:"py-3 px-3 hidden md:table-cell",children:"Title"}),e.jsx("th",{className:"py-3 px-3",children:"Date"}),e.jsx("th",{className:"py-3 px-3",children:"Access"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:g.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3",children:e.jsxs("a",{href:s.url,target:"_blank",rel:"noopener noreferrer",className:"font-mono text-cyan-300 hover:underline inline-flex items-center gap-1",children:["10.5281/zenodo.",s.id,e.jsx(y,{className:"w-3 h-3","aria-hidden":"true"})]})}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.kindLabel}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs hidden md:table-cell",children:s.title}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs font-mono whitespace-nowrap",children:s.date}),e.jsx("td",{className:"py-3 px-3 text-xs whitespace-nowrap",children:s.access==="open"?e.jsx("span",{className:"text-green-400",children:"open"}):e.jsxs("span",{className:"inline-flex items-center gap-1 text-gold-400",children:[e.jsx(j,{className:"w-3 h-3","aria-hidden":"true"})," embargoed"]})})]},s.id))})]})}),e.jsxs("p",{className:"text-muted-foreground text-xs leading-relaxed",children:["Document deposits carry their own document-level publication licence; software licensing (PolyForm Noncommercial / commercial) is separate and governed by the"," ",e.jsx(o,{to:"/license",className:"text-cyan-300 hover:underline",children:"license page"}),". The embargoed record is restricted source custody and is not part of the public evidence set."]})]}),e.jsxs("div",{ref:s=>r(s,3),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"Verify on Your Own Machine"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"No universal benchmark figures are published on this site, because results depend on your hardware. The package ships the qector-doctor environment diagnostic and the qector bench harness so you can validate and measure on your own machines. Run them yourself:"}),e.jsx(h,{language:"bash",code:`# Quick validation -pip install --upgrade "qector-decoder-v3>=1.0.1,<2" -python -c "import qector_decoder_v3 as qd; print(qd.__version__)" -# environment diagnostic -qector-doctor -# Throughput benchmark on a generated surface-code circuit -qector bench -d 5 -r 5 -s 10000 --decoder blossom --noise 0.001`})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"How to Cite QECTOR"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed mb-3",children:"If you use QECTOR Decoder v3 or its validation artifacts in academic research, please cite our software artifact release:"}),e.jsx("pre",{className:"p-4 bg-void border border-gridline rounded-xl text-xs text-muted-foreground font-mono overflow-x-auto select-all",children:`@software{lessard2026qector, - author = {Guillaume Lessard}, - title = {{QECTOR Decoder v3}: Rust/Python Quantum Error Correction Decoding Platform}, - year = {2026}, - version = {1.0.1}, - url = {https://qector.store/}, - note = {Source-available under PolyForm Noncommercial 1.0.0. Commercial license required for commercial use.} -}`})]}),e.jsx(u,{title:"Our Transparency Commitment",statement:"We document validation results openly, including known limitations. Published numeric claims link to GitHub artifact releases. We do not hide non-passes behind aggregate statistics."})]})})]})}export{C as default}; diff --git a/assets/Evidence-C-hSXMLq.js b/assets/Evidence-C-hSXMLq.js deleted file mode 100644 index 1773a576..00000000 --- a/assets/Evidence-C-hSXMLq.js +++ /dev/null @@ -1,14 +0,0 @@ -import{r as i,j as e}from"./vendor-react-BiHfrq0e.js";import{S as m,L as o,A as x,C as h,E as u}from"./index-CCmwjNGU.js";import{N as p}from"./NeuralReveal-uYarhiMA.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{Z as g}from"./releases--9GgxpSb.js";import{o as b,p as v,E as y,L as j}from"./vendor-ui-B8TlNU4J.js";n.registerPlugin(f);const N=[{title:"Official User Manual v1.0.0",desc:"QECTOR Decoder v3 Reference Manual v1.0.0 (DOI 10.5281/zenodo.21941046): the normative source for decoder contracts and claim boundaries.",status:"Verified"},{title:"SHA-256 Sealed Artifact Manifests",desc:"Source and artifact releases carry SHA-256 sealed manifests on GitHub, so published builds can be verified against their recorded hashes.",status:"Verified"},{title:"Syndromic Validation Harness",desc:"Decode runs verify H·c = s on every shot through the self-debugging harness shipped in the package, with the harness published on GitHub.",status:"Verified"},{title:"Scoped Methodology and Limitations",desc:"The manual excludes hardware-bound performance figures and documents the metadata, confidence intervals, and artifact requirements for future measurements.",status:"Methodology"}];function O(){const[t,c]=i.useState("All"),d=i.useRef([]);i.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{d.current.filter(Boolean).forEach(a=>{n.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const r=(s,a)=>{s&&(d.current[a]=s)},l=N.filter(s=>t==="All"||s.status===t);return e.jsxs(e.Fragment,{children:[e.jsx(m,{title:"Evidence & Reports · QECTOR",description:"Validation reports, reproducible artifacts, and evidence bundles for QECTOR quantum error correction decoder. Available on GitHub."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-green-400/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-green-400/10 border border-green-400/20 rounded-full text-xs font-semibold text-green-400 uppercase tracking-wider mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Verified v1.0.0 Manual · SHA-256 Sealed Manifests"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(p,{text:"Evidence & Reports",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:"Public claims are documented with their boundaries: the six-record Zenodo evidence corpus, validation reports, and SHA-256 sealed manifests archived on GitHub."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"GitHub Repository →"}),e.jsx(o,{to:"/technical-reference",className:"btn-outline",children:"Technical Reference"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsxs("div",{ref:s=>r(s,0),className:"flex flex-wrap justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-3 px-8 py-4 bg-cyan-300/10 border border-cyan-300/20 rounded-2xl hover:bg-cyan-300/20 transition-all",children:[e.jsx(b,{className:"w-6 h-6 text-cyan-300","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"github.com/GuillaumeLessard/qector-decoder"})]})]}),e.jsxs("a",{href:"/docs/reference.md",className:"inline-flex items-center gap-3 px-8 py-4 bg-gold-400/10 border border-gold-400/20 rounded-2xl hover:bg-gold-400/20 transition-all",children:[e.jsx(v,{className:"w-6 h-6 text-gold-400","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-gold-400 font-semibold",children:"Official User Manual v1.0.0"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"qector.store/docs/reference.md"})]})]})]}),e.jsx("div",{className:"flex flex-wrap items-center justify-center gap-2 max-w-lg mx-auto",children:["All","Verified","Methodology"].map(s=>e.jsx("button",{"aria-pressed":t===s,onClick:()=>c(s),className:`px-4 py-2 text-xs font-semibold rounded-lg border transition-all duration-300 ${t===s?"bg-cyan-300 text-void border-cyan-300 shadow-[0_0_12px_rgba(103,232,249,0.35)]":"bg-[#0b1329]/40 text-secondary border-gridline hover:text-primary hover:border-cyan-300/40"}`,children:s},s))}),e.jsxs("div",{ref:s=>r(s,1),className:"space-y-4",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Evidence Reports"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:l.map(s=>e.jsx(x,{title:s.title,badge:{label:s.status,color:s.status==="Verified"?"green":"gold"},desc:s.desc},s.title))})]}),e.jsxs("div",{ref:s=>r(s,2),className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Zenodo Evidence Registry"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"The complete six-record evidence corpus for QECTOR Decoder v3 v1.0.0. Each record is a DOI-stable, versioned deposit with its scope and date listed below."})]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"DOI"}),e.jsx("th",{className:"py-3 px-3",children:"Scope"}),e.jsx("th",{className:"py-3 px-3 hidden md:table-cell",children:"Title"}),e.jsx("th",{className:"py-3 px-3",children:"Date"}),e.jsx("th",{className:"py-3 px-3",children:"Access"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:g.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3",children:e.jsxs("a",{href:s.url,target:"_blank",rel:"noopener noreferrer",className:"font-mono text-cyan-300 hover:underline inline-flex items-center gap-1",children:["10.5281/zenodo.",s.id,e.jsx(y,{className:"w-3 h-3","aria-hidden":"true"})]})}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.kindLabel}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs hidden md:table-cell",children:s.title}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs font-mono whitespace-nowrap",children:s.date}),e.jsx("td",{className:"py-3 px-3 text-xs whitespace-nowrap",children:s.access==="open"?e.jsx("span",{className:"text-green-400",children:"open"}):e.jsxs("span",{className:"inline-flex items-center gap-1 text-gold-400",children:[e.jsx(j,{className:"w-3 h-3","aria-hidden":"true"})," embargoed"]})})]},s.id))})]})}),e.jsxs("p",{className:"text-muted-foreground text-xs leading-relaxed",children:["Document deposits carry their own document-level publication licence; software licensing (PolyForm Noncommercial / commercial) is separate and governed by the"," ",e.jsx(o,{to:"/license",className:"text-cyan-300 hover:underline",children:"license page"}),". The embargoed record is restricted source custody and is not part of the public evidence set."]})]}),e.jsxs("div",{ref:s=>r(s,3),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"Verify on Your Own Machine"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"No universal benchmark figures are published on this site, because results depend on your hardware. The package ships the qector-doctor environment diagnostic and the qector bench harness so you can validate and measure on your own machines. Run them yourself:"}),e.jsx(h,{language:"bash",code:`# Quick validation -pip install --upgrade "qector-decoder-v3>=1.0.1,<2" -python -c "import qector_decoder_v3 as qd; print(qd.__version__)" -# environment diagnostic -qector-doctor -# Throughput benchmark on a generated surface-code circuit -qector bench -d 5 -r 5 -s 10000 --decoder blossom --noise 0.001`})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"How to Cite QECTOR"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed mb-3",children:"If you use QECTOR Decoder v3 or its validation artifacts in academic research, please cite our software artifact release:"}),e.jsx("pre",{className:"p-4 bg-void border border-gridline rounded-xl text-xs text-muted-foreground font-mono overflow-x-auto select-all",children:`@software{lessard2026qector, - author = {Guillaume Lessard}, - title = {{QECTOR Decoder v3}: Rust/Python Quantum Error Correction Decoding Platform}, - year = {2026}, - version = {1.0.1}, - url = {https://qector.store/}, - note = {Source-available under PolyForm Noncommercial 1.0.0. Commercial license required for commercial use.} -}`})]}),e.jsx(u,{title:"Our Transparency Commitment",statement:"We document validation results openly, including known limitations. Published numeric claims link to GitHub artifact releases. We do not hide non-passes behind aggregate statistics."})]})})]})}export{O as default}; diff --git a/assets/Evidence-C7IJaw71.js b/assets/Evidence-C7IJaw71.js deleted file mode 100644 index 58c6004b..00000000 --- a/assets/Evidence-C7IJaw71.js +++ /dev/null @@ -1,14 +0,0 @@ -import{r as i,j as e}from"./vendor-react-BiHfrq0e.js";import{S as m,A as x,C as h,E as u}from"./index-BcbVjARk.js";import{N as p}from"./NeuralReveal-BflyZYSb.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{Z as g}from"./releases-DiQz_IDu.js";import{L as d}from"./vendor-PiU4YGcH.js";import{p as b,q as v,E as y,L as j}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";n.registerPlugin(f);const N=[{title:"Official User Manual v1.0.0",desc:"QECTOR Decoder v3 Reference Manual v1.0.0 (DOI 10.5281/zenodo.21941046): the normative source for decoder contracts and claim boundaries.",status:"Verified"},{title:"SHA-256 Sealed Artifact Manifests",desc:"Source and artifact releases carry SHA-256 sealed manifests on GitHub, so published builds can be verified against their recorded hashes.",status:"Verified"},{title:"Syndromic Validation Harness",desc:"Decode runs verify H·c = s on every shot through the self-debugging harness shipped in the package, with the harness published on GitHub.",status:"Verified"},{title:"Scoped Methodology and Limitations",desc:"The manual excludes hardware-bound performance figures and documents the metadata, confidence intervals, and artifact requirements for future measurements.",status:"Methodology"}];function C(){const[t,c]=i.useState("All"),o=i.useRef([]);i.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{o.current.filter(Boolean).forEach(a=>{n.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const r=(s,a)=>{s&&(o.current[a]=s)},l=N.filter(s=>t==="All"||s.status===t);return e.jsxs(e.Fragment,{children:[e.jsx(m,{title:"Evidence & Reports · QECTOR",description:"Validation reports, reproducible artifacts, and evidence bundles for QECTOR quantum error correction decoder. Available on GitHub."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-green-400/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-green-400/10 border border-green-400/20 rounded-full text-xs font-semibold text-green-400 uppercase tracking-wider mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Verified v1.0.0 Manual · SHA-256 Sealed Manifests"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(p,{text:"Evidence & Reports",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:"Public claims are documented with their boundaries: the six-record Zenodo evidence corpus, validation reports, and SHA-256 sealed manifests archived on GitHub."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"GitHub Repository →"}),e.jsx(d,{to:"/technical-reference",className:"btn-outline",children:"Technical Reference"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsxs("div",{ref:s=>r(s,0),className:"flex flex-wrap justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-3 px-8 py-4 bg-cyan-300/10 border border-cyan-300/20 rounded-2xl hover:bg-cyan-300/20 transition-all",children:[e.jsx(b,{className:"w-6 h-6 text-cyan-300","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"github.com/GuillaumeLessard/qector-decoder"})]})]}),e.jsxs("a",{href:"/docs/reference.md",className:"inline-flex items-center gap-3 px-8 py-4 bg-gold-400/10 border border-gold-400/20 rounded-2xl hover:bg-gold-400/20 transition-all",children:[e.jsx(v,{className:"w-6 h-6 text-gold-400","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-gold-400 font-semibold",children:"Official User Manual v1.0.0"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"qector.store/docs/reference.md"})]})]})]}),e.jsx("div",{className:"flex flex-wrap items-center justify-center gap-2 max-w-lg mx-auto",children:["All","Verified","Methodology"].map(s=>e.jsx("button",{"aria-pressed":t===s,onClick:()=>c(s),className:`px-4 py-2 text-xs font-semibold rounded-lg border transition-all duration-300 ${t===s?"bg-cyan-300 text-void border-cyan-300 shadow-[0_0_12px_rgba(103,232,249,0.35)]":"bg-[#0b1329]/40 text-secondary border-gridline hover:text-primary hover:border-cyan-300/40"}`,children:s},s))}),e.jsxs("div",{ref:s=>r(s,1),className:"space-y-4",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Evidence Reports"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:l.map(s=>e.jsx(x,{title:s.title,badge:{label:s.status,color:s.status==="Verified"?"green":"gold"},desc:s.desc},s.title))})]}),e.jsxs("div",{ref:s=>r(s,2),className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Zenodo Evidence Registry"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"The complete six-record evidence corpus for QECTOR Decoder v3 v1.0.0. Each record is a DOI-stable, versioned deposit with its scope and date listed below."})]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"DOI"}),e.jsx("th",{className:"py-3 px-3",children:"Scope"}),e.jsx("th",{className:"py-3 px-3 hidden md:table-cell",children:"Title"}),e.jsx("th",{className:"py-3 px-3",children:"Date"}),e.jsx("th",{className:"py-3 px-3",children:"Access"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:g.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3",children:e.jsxs("a",{href:s.url,target:"_blank",rel:"noopener noreferrer",className:"font-mono text-cyan-300 hover:underline inline-flex items-center gap-1",children:["10.5281/zenodo.",s.id,e.jsx(y,{className:"w-3 h-3","aria-hidden":"true"})]})}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.kindLabel}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs hidden md:table-cell",children:s.title}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs font-mono whitespace-nowrap",children:s.date}),e.jsx("td",{className:"py-3 px-3 text-xs whitespace-nowrap",children:s.access==="open"?e.jsx("span",{className:"text-green-400",children:"open"}):e.jsxs("span",{className:"inline-flex items-center gap-1 text-gold-400",children:[e.jsx(j,{className:"w-3 h-3","aria-hidden":"true"})," embargoed"]})})]},s.id))})]})}),e.jsxs("p",{className:"text-muted-foreground text-xs leading-relaxed",children:["Document deposits carry their own document-level publication licence; software licensing (PolyForm Noncommercial / commercial) is separate and governed by the"," ",e.jsx(d,{to:"/license",className:"text-cyan-300 hover:underline",children:"license page"}),". The embargoed record is restricted source custody and is not part of the public evidence set."]})]}),e.jsxs("div",{ref:s=>r(s,3),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"Verify on Your Own Machine"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"No universal benchmark figures are published on this site, because results depend on your hardware. The package ships the qector-doctor environment diagnostic and the qector bench harness so you can validate and measure on your own machines. Run them yourself:"}),e.jsx(h,{language:"bash",code:`# Quick validation -pip install qector-decoder-v3==1.0.0 -python -c "import qector_decoder_v3 as qd; print(qd.__version__)" -# 15-check environment diagnostic (v1.0.0) -qector-doctor -# Throughput benchmark on a generated surface-code circuit -qector bench -d 5 -r 5 -s 10000 --decoder blossom --noise 0.001`})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"How to Cite QECTOR"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed mb-3",children:"If you use QECTOR Decoder v3 or its validation artifacts in academic research, please cite our software artifact release:"}),e.jsx("pre",{className:"p-4 bg-void border border-gridline rounded-xl text-xs text-muted-foreground font-mono overflow-x-auto select-all",children:`@software{lessard2026qector, - author = {Guillaume Lessard}, - title = {{QECTOR Decoder v3}: Rust/Python Quantum Error Correction Decoding Platform}, - year = {2026}, - version = {1.0.0}, - url = {https://www.qector.store}, - note = {Source-available under PolyForm Noncommercial 1.0.0. Commercial license required for commercial use.} -}`})]}),e.jsx(u,{title:"Our Transparency Commitment",statement:"We document validation results openly, including known limitations. Published numeric claims link to GitHub artifact releases. We do not hide non-passes behind aggregate statistics."})]})})]})}export{C as default}; diff --git a/assets/Evidence-C8yUP9My.js b/assets/Evidence-C8yUP9My.js deleted file mode 100644 index a780cda1..00000000 --- a/assets/Evidence-C8yUP9My.js +++ /dev/null @@ -1,14 +0,0 @@ -import{r as i,j as e}from"./vendor-react-BiHfrq0e.js";import{S as m,A as x,C as h,E as u}from"./index-_BpMZhV3.js";import{N as p}from"./NeuralReveal-BflyZYSb.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{Z as g}from"./releases-DiQz_IDu.js";import{L as d}from"./vendor-PiU4YGcH.js";import{p as b,q as v,E as y,L as j}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";n.registerPlugin(f);const N=[{title:"Official User Manual v1.0.0",desc:"QECTOR Decoder v3 Reference Manual v1.0.0 (DOI 10.5281/zenodo.21941046): the normative source for decoder contracts and claim boundaries.",status:"Verified"},{title:"SHA-256 Sealed Artifact Manifests",desc:"Source and artifact releases carry SHA-256 sealed manifests on GitHub, so published builds can be verified against their recorded hashes.",status:"Verified"},{title:"Syndromic Validation Harness",desc:"Decode runs verify H·c = s on every shot through the self-debugging harness shipped in the package, with the harness published on GitHub.",status:"Verified"},{title:"Scoped Methodology and Limitations",desc:"The manual excludes hardware-bound performance figures and documents the metadata, confidence intervals, and artifact requirements for future measurements.",status:"Methodology"}];function C(){const[t,c]=i.useState("All"),o=i.useRef([]);i.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{o.current.filter(Boolean).forEach(a=>{n.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const r=(s,a)=>{s&&(o.current[a]=s)},l=N.filter(s=>t==="All"||s.status===t);return e.jsxs(e.Fragment,{children:[e.jsx(m,{title:"Evidence & Reports · QECTOR",description:"Validation reports, reproducible artifacts, and evidence bundles for QECTOR quantum error correction decoder. Available on GitHub."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-green-400/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-green-400/10 border border-green-400/20 rounded-full text-xs font-semibold text-green-400 uppercase tracking-wider mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Verified v1.0.0 Manual · SHA-256 Sealed Manifests"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(p,{text:"Evidence & Reports",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:"Public claims are documented with their boundaries: the six-record Zenodo evidence corpus, validation reports, and SHA-256 sealed manifests archived on GitHub."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"GitHub Repository →"}),e.jsx(d,{to:"/technical-reference",className:"btn-outline",children:"Technical Reference"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsxs("div",{ref:s=>r(s,0),className:"flex flex-wrap justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-3 px-8 py-4 bg-cyan-300/10 border border-cyan-300/20 rounded-2xl hover:bg-cyan-300/20 transition-all",children:[e.jsx(b,{className:"w-6 h-6 text-cyan-300","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"github.com/GuillaumeLessard/qector-decoder"})]})]}),e.jsxs("a",{href:"/docs/reference.md",className:"inline-flex items-center gap-3 px-8 py-4 bg-gold-400/10 border border-gold-400/20 rounded-2xl hover:bg-gold-400/20 transition-all",children:[e.jsx(v,{className:"w-6 h-6 text-gold-400","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-gold-400 font-semibold",children:"Official User Manual v1.0.0"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"qector.store/docs/reference.md"})]})]})]}),e.jsx("div",{className:"flex flex-wrap items-center justify-center gap-2 max-w-lg mx-auto",children:["All","Verified","Methodology"].map(s=>e.jsx("button",{"aria-pressed":t===s,onClick:()=>c(s),className:`px-4 py-2 text-xs font-semibold rounded-lg border transition-all duration-300 ${t===s?"bg-cyan-300 text-void border-cyan-300 shadow-[0_0_12px_rgba(103,232,249,0.35)]":"bg-[#0b1329]/40 text-secondary border-gridline hover:text-primary hover:border-cyan-300/40"}`,children:s},s))}),e.jsxs("div",{ref:s=>r(s,1),className:"space-y-4",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Evidence Reports"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:l.map(s=>e.jsx(x,{title:s.title,badge:{label:s.status,color:s.status==="Verified"?"green":"gold"},desc:s.desc},s.title))})]}),e.jsxs("div",{ref:s=>r(s,2),className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Zenodo Evidence Registry"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"The complete six-record evidence corpus for QECTOR Decoder v3 v1.0.0. Each record is a DOI-stable, versioned deposit with its scope and date listed below."})]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"DOI"}),e.jsx("th",{className:"py-3 px-3",children:"Scope"}),e.jsx("th",{className:"py-3 px-3 hidden md:table-cell",children:"Title"}),e.jsx("th",{className:"py-3 px-3",children:"Date"}),e.jsx("th",{className:"py-3 px-3",children:"Access"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:g.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3",children:e.jsxs("a",{href:s.url,target:"_blank",rel:"noopener noreferrer",className:"font-mono text-cyan-300 hover:underline inline-flex items-center gap-1",children:["10.5281/zenodo.",s.id,e.jsx(y,{className:"w-3 h-3","aria-hidden":"true"})]})}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.kindLabel}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs hidden md:table-cell",children:s.title}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs font-mono whitespace-nowrap",children:s.date}),e.jsx("td",{className:"py-3 px-3 text-xs whitespace-nowrap",children:s.access==="open"?e.jsx("span",{className:"text-green-400",children:"open"}):e.jsxs("span",{className:"inline-flex items-center gap-1 text-gold-400",children:[e.jsx(j,{className:"w-3 h-3","aria-hidden":"true"})," embargoed"]})})]},s.id))})]})}),e.jsxs("p",{className:"text-muted-foreground text-xs leading-relaxed",children:["Document deposits carry their own document-level publication licence; software licensing (PolyForm Noncommercial / commercial) is separate and governed by the"," ",e.jsx(d,{to:"/license",className:"text-cyan-300 hover:underline",children:"license page"}),". The embargoed record is restricted source custody and is not part of the public evidence set."]})]}),e.jsxs("div",{ref:s=>r(s,3),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"Verify on Your Own Machine"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"No universal benchmark figures are published on this site, because results depend on your hardware. The package ships the qector-doctor environment diagnostic and the qector bench harness so you can validate and measure on your own machines. Run them yourself:"}),e.jsx(h,{language:"bash",code:`# Quick validation -pip install qector-decoder-v3==1.0.0 -python -c "import qector_decoder_v3 as qd; print(qd.__version__)" -# 15-check environment diagnostic (v1.0.0) -qector-doctor -# Throughput benchmark on a generated surface-code circuit -qector bench -d 5 -r 5 -s 10000 --decoder blossom --noise 0.001`})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"How to Cite QECTOR"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed mb-3",children:"If you use QECTOR Decoder v3 or its validation artifacts in academic research, please cite our software artifact release:"}),e.jsx("pre",{className:"p-4 bg-void border border-gridline rounded-xl text-xs text-muted-foreground font-mono overflow-x-auto select-all",children:`@software{lessard2026qector, - author = {Guillaume Lessard}, - title = {{QECTOR Decoder v3}: Rust/Python Quantum Error Correction Decoding Platform}, - year = {2026}, - version = {1.0.0}, - url = {https://www.qector.store}, - note = {Source-available under PolyForm Noncommercial 1.0.0. Commercial license required for commercial use.} -}`})]}),e.jsx(u,{title:"Our Transparency Commitment",statement:"We document validation results openly, including known limitations. Published numeric claims link to GitHub artifact releases. We do not hide non-passes behind aggregate statistics."})]})})]})}export{C as default}; diff --git a/assets/Evidence-CiRnbh9a.js b/assets/Evidence-CiRnbh9a.js deleted file mode 100644 index 41d9b2a0..00000000 --- a/assets/Evidence-CiRnbh9a.js +++ /dev/null @@ -1,14 +0,0 @@ -import{r as i,j as e}from"./vendor-react-BiHfrq0e.js";import{S as m,A as x,C as h,E as u}from"./index-BUYYSLdX.js";import{N as p}from"./NeuralReveal-BflyZYSb.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{Z as g}from"./releases-1-HBloZv.js";import{L as o}from"./vendor-PiU4YGcH.js";import{p as b,q as v,E as y,L as j}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";n.registerPlugin(f);const N=[{title:"Official User Manual v1.0.0",desc:"QECTOR Decoder v3 Reference Manual v1.0.0 (DOI 10.5281/zenodo.21941046): the normative source for decoder contracts and claim boundaries.",status:"Verified"},{title:"SHA-256 Sealed Artifact Manifests",desc:"Source and artifact releases carry SHA-256 sealed manifests on GitHub, so published builds can be verified against their recorded hashes.",status:"Verified"},{title:"Syndromic Validation Harness",desc:"Decode runs verify H·c = s on every shot through the self-debugging harness shipped in the package, with the harness published on GitHub.",status:"Verified"},{title:"Scoped Methodology and Limitations",desc:"The manual excludes hardware-bound performance figures and documents the metadata, confidence intervals, and artifact requirements for future measurements.",status:"Methodology"}];function C(){const[t,c]=i.useState("All"),d=i.useRef([]);i.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{d.current.filter(Boolean).forEach(a=>{n.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const r=(s,a)=>{s&&(d.current[a]=s)},l=N.filter(s=>t==="All"||s.status===t);return e.jsxs(e.Fragment,{children:[e.jsx(m,{title:"Evidence & Reports · QECTOR",description:"Validation reports, reproducible artifacts, and evidence bundles for QECTOR quantum error correction decoder. Available on GitHub."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-green-400/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-green-400/10 border border-green-400/20 rounded-full text-xs font-semibold text-green-400 uppercase tracking-wider mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Verified v1.0.0 Manual · SHA-256 Sealed Manifests"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(p,{text:"Evidence & Reports",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:"Public claims are documented with their boundaries: the six-record Zenodo evidence corpus, validation reports, and SHA-256 sealed manifests archived on GitHub."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"GitHub Repository →"}),e.jsx(o,{to:"/technical-reference",className:"btn-outline",children:"Technical Reference"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsxs("div",{ref:s=>r(s,0),className:"flex flex-wrap justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-3 px-8 py-4 bg-cyan-300/10 border border-cyan-300/20 rounded-2xl hover:bg-cyan-300/20 transition-all",children:[e.jsx(b,{className:"w-6 h-6 text-cyan-300","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"github.com/GuillaumeLessard/qector-decoder"})]})]}),e.jsxs("a",{href:"/docs/reference.md",className:"inline-flex items-center gap-3 px-8 py-4 bg-gold-400/10 border border-gold-400/20 rounded-2xl hover:bg-gold-400/20 transition-all",children:[e.jsx(v,{className:"w-6 h-6 text-gold-400","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-gold-400 font-semibold",children:"Official User Manual v1.0.0"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"qector.store/docs/reference.md"})]})]})]}),e.jsx("div",{className:"flex flex-wrap items-center justify-center gap-2 max-w-lg mx-auto",children:["All","Verified","Methodology"].map(s=>e.jsx("button",{"aria-pressed":t===s,onClick:()=>c(s),className:`px-4 py-2 text-xs font-semibold rounded-lg border transition-all duration-300 ${t===s?"bg-cyan-300 text-void border-cyan-300 shadow-[0_0_12px_rgba(103,232,249,0.35)]":"bg-[#0b1329]/40 text-secondary border-gridline hover:text-primary hover:border-cyan-300/40"}`,children:s},s))}),e.jsxs("div",{ref:s=>r(s,1),className:"space-y-4",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Evidence Reports"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:l.map(s=>e.jsx(x,{title:s.title,badge:{label:s.status,color:s.status==="Verified"?"green":"gold"},desc:s.desc},s.title))})]}),e.jsxs("div",{ref:s=>r(s,2),className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Zenodo Evidence Registry"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"The complete six-record evidence corpus for QECTOR Decoder v3 v1.0.0. Each record is a DOI-stable, versioned deposit with its scope and date listed below."})]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"DOI"}),e.jsx("th",{className:"py-3 px-3",children:"Scope"}),e.jsx("th",{className:"py-3 px-3 hidden md:table-cell",children:"Title"}),e.jsx("th",{className:"py-3 px-3",children:"Date"}),e.jsx("th",{className:"py-3 px-3",children:"Access"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:g.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3",children:e.jsxs("a",{href:s.url,target:"_blank",rel:"noopener noreferrer",className:"font-mono text-cyan-300 hover:underline inline-flex items-center gap-1",children:["10.5281/zenodo.",s.id,e.jsx(y,{className:"w-3 h-3","aria-hidden":"true"})]})}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.kindLabel}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs hidden md:table-cell",children:s.title}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs font-mono whitespace-nowrap",children:s.date}),e.jsx("td",{className:"py-3 px-3 text-xs whitespace-nowrap",children:s.access==="open"?e.jsx("span",{className:"text-green-400",children:"open"}):e.jsxs("span",{className:"inline-flex items-center gap-1 text-gold-400",children:[e.jsx(j,{className:"w-3 h-3","aria-hidden":"true"})," embargoed"]})})]},s.id))})]})}),e.jsxs("p",{className:"text-muted-foreground text-xs leading-relaxed",children:["Document deposits carry their own document-level publication licence; software licensing (PolyForm Noncommercial / commercial) is separate and governed by the"," ",e.jsx(o,{to:"/license",className:"text-cyan-300 hover:underline",children:"license page"}),". The embargoed record is restricted source custody and is not part of the public evidence set."]})]}),e.jsxs("div",{ref:s=>r(s,3),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"Verify on Your Own Machine"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"No universal benchmark figures are published on this site, because results depend on your hardware. The package ships the qector-doctor environment diagnostic and the qector bench harness so you can validate and measure on your own machines. Run them yourself:"}),e.jsx(h,{language:"bash",code:`# Quick validation -pip install --upgrade "qector-decoder-v3>=1.0,<2" -python -c "import qector_decoder_v3 as qd; print(qd.__version__)" -# environment diagnostic -qector-doctor -# Throughput benchmark on a generated surface-code circuit -qector bench -d 5 -r 5 -s 10000 --decoder blossom --noise 0.001`})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"How to Cite QECTOR"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed mb-3",children:"If you use QECTOR Decoder v3 or its validation artifacts in academic research, please cite our software artifact release:"}),e.jsx("pre",{className:"p-4 bg-void border border-gridline rounded-xl text-xs text-muted-foreground font-mono overflow-x-auto select-all",children:`@software{lessard2026qector, - author = {Guillaume Lessard}, - title = {{QECTOR Decoder v3}: Rust/Python Quantum Error Correction Decoding Platform}, - year = {2026}, - version = {1.0.1}, - url = {https://qector.store/}, - note = {Source-available under PolyForm Noncommercial 1.0.0. Commercial license required for commercial use.} -}`})]}),e.jsx(u,{title:"Our Transparency Commitment",statement:"We document validation results openly, including known limitations. Published numeric claims link to GitHub artifact releases. We do not hide non-passes behind aggregate statistics."})]})})]})}export{C as default}; diff --git a/assets/Evidence-Cjd1QxOO.js b/assets/Evidence-Cjd1QxOO.js deleted file mode 100644 index 592a7270..00000000 --- a/assets/Evidence-Cjd1QxOO.js +++ /dev/null @@ -1,14 +0,0 @@ -import{r as i,j as e}from"./vendor-react-BiHfrq0e.js";import{S as m,A as x,C as h,E as u}from"./index-B9kEGiWi.js";import{N as p}from"./NeuralReveal-BflyZYSb.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{Z as g}from"./releases-DiQz_IDu.js";import{L as d}from"./vendor-PiU4YGcH.js";import{p as b,q as v,E as y,L as j}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";n.registerPlugin(f);const N=[{title:"Official User Manual v1.0.0",desc:"QECTOR Decoder v3 Reference Manual v1.0.0 (DOI 10.5281/zenodo.21941046): the normative source for decoder contracts and claim boundaries.",status:"Verified"},{title:"SHA-256 Sealed Artifact Manifests",desc:"Source and artifact releases carry SHA-256 sealed manifests on GitHub, so published builds can be verified against their recorded hashes.",status:"Verified"},{title:"Syndromic Validation Harness",desc:"Decode runs verify H·c = s on every shot through the self-debugging harness shipped in the package, with the harness published on GitHub.",status:"Verified"},{title:"Scoped Methodology and Limitations",desc:"The manual excludes hardware-bound performance figures and documents the metadata, confidence intervals, and artifact requirements for future measurements.",status:"Methodology"}];function C(){const[t,c]=i.useState("All"),o=i.useRef([]);i.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{o.current.filter(Boolean).forEach(a=>{n.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const r=(s,a)=>{s&&(o.current[a]=s)},l=N.filter(s=>t==="All"||s.status===t);return e.jsxs(e.Fragment,{children:[e.jsx(m,{title:"Evidence & Reports · QECTOR",description:"Validation reports, reproducible artifacts, and evidence bundles for QECTOR quantum error correction decoder. Available on GitHub."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-green-400/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-green-400/10 border border-green-400/20 rounded-full text-xs font-semibold text-green-400 uppercase tracking-wider mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Verified v1.0.0 Manual · SHA-256 Sealed Manifests"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(p,{text:"Evidence & Reports",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:"Public claims are documented with their boundaries: the six-record Zenodo evidence corpus, validation reports, and SHA-256 sealed manifests archived on GitHub."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"GitHub Repository →"}),e.jsx(d,{to:"/technical-reference",className:"btn-outline",children:"Technical Reference"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsxs("div",{ref:s=>r(s,0),className:"flex flex-wrap justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-3 px-8 py-4 bg-cyan-300/10 border border-cyan-300/20 rounded-2xl hover:bg-cyan-300/20 transition-all",children:[e.jsx(b,{className:"w-6 h-6 text-cyan-300","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"github.com/GuillaumeLessard/qector-decoder"})]})]}),e.jsxs("a",{href:"/docs/reference.md",className:"inline-flex items-center gap-3 px-8 py-4 bg-gold-400/10 border border-gold-400/20 rounded-2xl hover:bg-gold-400/20 transition-all",children:[e.jsx(v,{className:"w-6 h-6 text-gold-400","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-gold-400 font-semibold",children:"Official User Manual v1.0.0"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"qector.store/docs/reference.md"})]})]})]}),e.jsx("div",{className:"flex flex-wrap items-center justify-center gap-2 max-w-lg mx-auto",children:["All","Verified","Methodology"].map(s=>e.jsx("button",{"aria-pressed":t===s,onClick:()=>c(s),className:`px-4 py-2 text-xs font-semibold rounded-lg border transition-all duration-300 ${t===s?"bg-cyan-300 text-void border-cyan-300 shadow-[0_0_12px_rgba(103,232,249,0.35)]":"bg-[#0b1329]/40 text-secondary border-gridline hover:text-primary hover:border-cyan-300/40"}`,children:s},s))}),e.jsxs("div",{ref:s=>r(s,1),className:"space-y-4",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Evidence Reports"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:l.map(s=>e.jsx(x,{title:s.title,badge:{label:s.status,color:s.status==="Verified"?"green":"gold"},desc:s.desc},s.title))})]}),e.jsxs("div",{ref:s=>r(s,2),className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Zenodo Evidence Registry"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"The complete six-record evidence corpus for QECTOR Decoder v3 v1.0.0. Each record is a DOI-stable, versioned deposit with its scope and date listed below."})]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"DOI"}),e.jsx("th",{className:"py-3 px-3",children:"Scope"}),e.jsx("th",{className:"py-3 px-3 hidden md:table-cell",children:"Title"}),e.jsx("th",{className:"py-3 px-3",children:"Date"}),e.jsx("th",{className:"py-3 px-3",children:"Access"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:g.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3",children:e.jsxs("a",{href:s.url,target:"_blank",rel:"noopener noreferrer",className:"font-mono text-cyan-300 hover:underline inline-flex items-center gap-1",children:["10.5281/zenodo.",s.id,e.jsx(y,{className:"w-3 h-3","aria-hidden":"true"})]})}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.kindLabel}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs hidden md:table-cell",children:s.title}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs font-mono whitespace-nowrap",children:s.date}),e.jsx("td",{className:"py-3 px-3 text-xs whitespace-nowrap",children:s.access==="open"?e.jsx("span",{className:"text-green-400",children:"open"}):e.jsxs("span",{className:"inline-flex items-center gap-1 text-gold-400",children:[e.jsx(j,{className:"w-3 h-3","aria-hidden":"true"})," embargoed"]})})]},s.id))})]})}),e.jsxs("p",{className:"text-muted-foreground text-xs leading-relaxed",children:["Document deposits carry their own document-level publication licence; software licensing (PolyForm Noncommercial / commercial) is separate and governed by the"," ",e.jsx(d,{to:"/license",className:"text-cyan-300 hover:underline",children:"license page"}),". The embargoed record is restricted source custody and is not part of the public evidence set."]})]}),e.jsxs("div",{ref:s=>r(s,3),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"Verify on Your Own Machine"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"No universal benchmark figures are published on this site, because results depend on your hardware. The package ships the qector-doctor environment diagnostic and the qector bench harness so you can validate and measure on your own machines. Run them yourself:"}),e.jsx(h,{language:"bash",code:`# Quick validation -pip install qector-decoder-v3==1.0.0 -python -c "import qector_decoder_v3 as qd; print(qd.__version__)" -# 15-check environment diagnostic (v1.0.0) -qector-doctor -# Throughput benchmark on a generated surface-code circuit -qector bench -d 5 -r 5 -s 10000 --decoder blossom --noise 0.001`})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"How to Cite QECTOR"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed mb-3",children:"If you use QECTOR Decoder v3 or its validation artifacts in academic research, please cite our software artifact release:"}),e.jsx("pre",{className:"p-4 bg-void border border-gridline rounded-xl text-xs text-muted-foreground font-mono overflow-x-auto select-all",children:`@software{lessard2026qector, - author = {Guillaume Lessard}, - title = {{QECTOR Decoder v3}: Rust/Python Quantum Error Correction Decoding Platform}, - year = {2026}, - version = {1.0.0}, - url = {https://www.qector.store}, - note = {Source-available under PolyForm Noncommercial 1.0.0. Commercial license required for commercial use.} -}`})]}),e.jsx(u,{title:"Our Transparency Commitment",statement:"We document validation results openly, including known limitations. Published numeric claims link to GitHub artifact releases. We do not hide non-passes behind aggregate statistics."})]})})]})}export{C as default}; diff --git a/assets/Evidence-CvTRADgN.js b/assets/Evidence-CvTRADgN.js deleted file mode 100644 index 2e009939..00000000 --- a/assets/Evidence-CvTRADgN.js +++ /dev/null @@ -1,14 +0,0 @@ -import{r as i,j as e}from"./vendor-react-BiHfrq0e.js";import{S as m,L as o,A as x,C as h,E as u}from"./index-c1PDYu0j.js";import{N as p}from"./NeuralReveal-uYarhiMA.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{Z as g}from"./releases--9GgxpSb.js";import{o as b,p as v,E as y,L as j}from"./vendor-ui-B8TlNU4J.js";n.registerPlugin(f);const N=[{title:"Official User Manual v1.0.0",desc:"QECTOR Decoder v3 Reference Manual v1.0.0 (DOI 10.5281/zenodo.21941046): the normative source for decoder contracts and claim boundaries.",status:"Verified"},{title:"SHA-256 Sealed Artifact Manifests",desc:"Source and artifact releases carry SHA-256 sealed manifests on GitHub, so published builds can be verified against their recorded hashes.",status:"Verified"},{title:"Syndromic Validation Harness",desc:"Decode runs verify H·c = s on every shot through the self-debugging harness shipped in the package, with the harness published on GitHub.",status:"Verified"},{title:"Scoped Methodology and Limitations",desc:"The manual excludes hardware-bound performance figures and documents the metadata, confidence intervals, and artifact requirements for future measurements.",status:"Methodology"}];function O(){const[t,c]=i.useState("All"),d=i.useRef([]);i.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{d.current.filter(Boolean).forEach(a=>{n.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const r=(s,a)=>{s&&(d.current[a]=s)},l=N.filter(s=>t==="All"||s.status===t);return e.jsxs(e.Fragment,{children:[e.jsx(m,{title:"Evidence & Reports · QECTOR",description:"Validation reports, reproducible artifacts, and evidence bundles for QECTOR quantum error correction decoder. Available on GitHub."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-green-400/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-green-400/10 border border-green-400/20 rounded-full text-xs font-semibold text-green-400 uppercase tracking-wider mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Verified v1.0.0 Manual · SHA-256 Sealed Manifests"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(p,{text:"Evidence & Reports",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:"Public claims are documented with their boundaries: the six-record Zenodo evidence corpus, validation reports, and SHA-256 sealed manifests archived on GitHub."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"GitHub Repository →"}),e.jsx(o,{to:"/technical-reference",className:"btn-outline",children:"Technical Reference"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsxs("div",{ref:s=>r(s,0),className:"flex flex-wrap justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-3 px-8 py-4 bg-cyan-300/10 border border-cyan-300/20 rounded-2xl hover:bg-cyan-300/20 transition-all",children:[e.jsx(b,{className:"w-6 h-6 text-cyan-300","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"github.com/GuillaumeLessard/qector-decoder"})]})]}),e.jsxs("a",{href:"/docs/reference.md",className:"inline-flex items-center gap-3 px-8 py-4 bg-gold-400/10 border border-gold-400/20 rounded-2xl hover:bg-gold-400/20 transition-all",children:[e.jsx(v,{className:"w-6 h-6 text-gold-400","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-gold-400 font-semibold",children:"Official User Manual v1.0.0"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"qector.store/docs/reference.md"})]})]})]}),e.jsx("div",{className:"flex flex-wrap items-center justify-center gap-2 max-w-lg mx-auto",children:["All","Verified","Methodology"].map(s=>e.jsx("button",{"aria-pressed":t===s,onClick:()=>c(s),className:`px-4 py-2 text-xs font-semibold rounded-lg border transition-all duration-300 ${t===s?"bg-cyan-300 text-void border-cyan-300 shadow-[0_0_12px_rgba(103,232,249,0.35)]":"bg-[#0b1329]/40 text-secondary border-gridline hover:text-primary hover:border-cyan-300/40"}`,children:s},s))}),e.jsxs("div",{ref:s=>r(s,1),className:"space-y-4",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Evidence Reports"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:l.map(s=>e.jsx(x,{title:s.title,badge:{label:s.status,color:s.status==="Verified"?"green":"gold"},desc:s.desc},s.title))})]}),e.jsxs("div",{ref:s=>r(s,2),className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Zenodo Evidence Registry"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"The complete six-record evidence corpus for QECTOR Decoder v3 v1.0.0. Each record is a DOI-stable, versioned deposit with its scope and date listed below."})]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"DOI"}),e.jsx("th",{className:"py-3 px-3",children:"Scope"}),e.jsx("th",{className:"py-3 px-3 hidden md:table-cell",children:"Title"}),e.jsx("th",{className:"py-3 px-3",children:"Date"}),e.jsx("th",{className:"py-3 px-3",children:"Access"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:g.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3",children:e.jsxs("a",{href:s.url,target:"_blank",rel:"noopener noreferrer",className:"font-mono text-cyan-300 hover:underline inline-flex items-center gap-1",children:["10.5281/zenodo.",s.id,e.jsx(y,{className:"w-3 h-3","aria-hidden":"true"})]})}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.kindLabel}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs hidden md:table-cell",children:s.title}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs font-mono whitespace-nowrap",children:s.date}),e.jsx("td",{className:"py-3 px-3 text-xs whitespace-nowrap",children:s.access==="open"?e.jsx("span",{className:"text-green-400",children:"open"}):e.jsxs("span",{className:"inline-flex items-center gap-1 text-gold-400",children:[e.jsx(j,{className:"w-3 h-3","aria-hidden":"true"})," embargoed"]})})]},s.id))})]})}),e.jsxs("p",{className:"text-muted-foreground text-xs leading-relaxed",children:["Document deposits carry their own document-level publication licence; software licensing (PolyForm Noncommercial / commercial) is separate and governed by the"," ",e.jsx(o,{to:"/license",className:"text-cyan-300 hover:underline",children:"license page"}),". The embargoed record is restricted source custody and is not part of the public evidence set."]})]}),e.jsxs("div",{ref:s=>r(s,3),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"Verify on Your Own Machine"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"No universal benchmark figures are published on this site, because results depend on your hardware. The package ships the qector-doctor environment diagnostic and the qector bench harness so you can validate and measure on your own machines. Run them yourself:"}),e.jsx(h,{language:"bash",code:`# Quick validation -pip install --upgrade "qector-decoder-v3>=1.0.1,<2" -python -c "import qector_decoder_v3 as qd; print(qd.__version__)" -# environment diagnostic -qector-doctor -# Throughput benchmark on a generated surface-code circuit -qector bench -d 5 -r 5 -s 10000 --decoder blossom --noise 0.001`})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"How to Cite QECTOR"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed mb-3",children:"If you use QECTOR Decoder v3 or its validation artifacts in academic research, please cite our software artifact release:"}),e.jsx("pre",{className:"p-4 bg-void border border-gridline rounded-xl text-xs text-muted-foreground font-mono overflow-x-auto select-all",children:`@software{lessard2026qector, - author = {Guillaume Lessard}, - title = {{QECTOR Decoder v3}: Rust/Python Quantum Error Correction Decoding Platform}, - year = {2026}, - version = {1.0.1}, - url = {https://qector.store/}, - note = {Source-available under PolyForm Noncommercial 1.0.0. Commercial license required for commercial use.} -}`})]}),e.jsx(u,{title:"Our Transparency Commitment",statement:"We document validation results openly, including known limitations. Published numeric claims link to GitHub artifact releases. We do not hide non-passes behind aggregate statistics."})]})})]})}export{O as default}; diff --git a/assets/Evidence-Cxt9JaAV.js b/assets/Evidence-Cxt9JaAV.js deleted file mode 100644 index d2bba82f..00000000 --- a/assets/Evidence-Cxt9JaAV.js +++ /dev/null @@ -1,14 +0,0 @@ -import{r as i,j as e}from"./vendor-react-BiHfrq0e.js";import{S as m,A as x,C as h,E as u}from"./index-CqAA-ZXu.js";import{N as p}from"./NeuralReveal-BflyZYSb.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{Z as g}from"./releases-DiQz_IDu.js";import{L as o}from"./vendor-PiU4YGcH.js";import{p as b,q as v,E as y,L as j}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";n.registerPlugin(f);const N=[{title:"Official User Manual v1.0.0",desc:"QECTOR Decoder v3 Reference Manual v1.0.0 (DOI 10.5281/zenodo.21941046): the normative source for decoder contracts and claim boundaries.",status:"Verified"},{title:"SHA-256 Sealed Artifact Manifests",desc:"Source and artifact releases carry SHA-256 sealed manifests on GitHub, so published builds can be verified against their recorded hashes.",status:"Verified"},{title:"Syndromic Validation Harness",desc:"Decode runs verify H·c = s on every shot through the self-debugging harness shipped in the package, with the harness published on GitHub.",status:"Verified"},{title:"Scoped Methodology and Limitations",desc:"The manual excludes hardware-bound performance figures and documents the metadata, confidence intervals, and artifact requirements for future measurements.",status:"Methodology"}];function C(){const[t,c]=i.useState("All"),d=i.useRef([]);i.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{d.current.filter(Boolean).forEach(a=>{n.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const r=(s,a)=>{s&&(d.current[a]=s)},l=N.filter(s=>t==="All"||s.status===t);return e.jsxs(e.Fragment,{children:[e.jsx(m,{title:"Evidence & Reports · QECTOR",description:"Validation reports, reproducible artifacts, and evidence bundles for QECTOR quantum error correction decoder. Available on GitHub."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-green-400/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-green-400/10 border border-green-400/20 rounded-full text-xs font-semibold text-green-400 uppercase tracking-wider mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Verified v1.0.0 Manual · SHA-256 Sealed Manifests"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(p,{text:"Evidence & Reports",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:"Public claims are documented with their boundaries: the six-record Zenodo evidence corpus, validation reports, and SHA-256 sealed manifests archived on GitHub."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"GitHub Repository →"}),e.jsx(o,{to:"/technical-reference",className:"btn-outline",children:"Technical Reference"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsxs("div",{ref:s=>r(s,0),className:"flex flex-wrap justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-3 px-8 py-4 bg-cyan-300/10 border border-cyan-300/20 rounded-2xl hover:bg-cyan-300/20 transition-all",children:[e.jsx(b,{className:"w-6 h-6 text-cyan-300","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"github.com/GuillaumeLessard/qector-decoder"})]})]}),e.jsxs("a",{href:"/docs/reference.md",className:"inline-flex items-center gap-3 px-8 py-4 bg-gold-400/10 border border-gold-400/20 rounded-2xl hover:bg-gold-400/20 transition-all",children:[e.jsx(v,{className:"w-6 h-6 text-gold-400","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-gold-400 font-semibold",children:"Official User Manual v1.0.0"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"qector.store/docs/reference.md"})]})]})]}),e.jsx("div",{className:"flex flex-wrap items-center justify-center gap-2 max-w-lg mx-auto",children:["All","Verified","Methodology"].map(s=>e.jsx("button",{"aria-pressed":t===s,onClick:()=>c(s),className:`px-4 py-2 text-xs font-semibold rounded-lg border transition-all duration-300 ${t===s?"bg-cyan-300 text-void border-cyan-300 shadow-[0_0_12px_rgba(103,232,249,0.35)]":"bg-[#0b1329]/40 text-secondary border-gridline hover:text-primary hover:border-cyan-300/40"}`,children:s},s))}),e.jsxs("div",{ref:s=>r(s,1),className:"space-y-4",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Evidence Reports"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:l.map(s=>e.jsx(x,{title:s.title,badge:{label:s.status,color:s.status==="Verified"?"green":"gold"},desc:s.desc},s.title))})]}),e.jsxs("div",{ref:s=>r(s,2),className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Zenodo Evidence Registry"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"The complete six-record evidence corpus for QECTOR Decoder v3 v1.0.0. Each record is a DOI-stable, versioned deposit with its scope and date listed below."})]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"DOI"}),e.jsx("th",{className:"py-3 px-3",children:"Scope"}),e.jsx("th",{className:"py-3 px-3 hidden md:table-cell",children:"Title"}),e.jsx("th",{className:"py-3 px-3",children:"Date"}),e.jsx("th",{className:"py-3 px-3",children:"Access"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:g.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3",children:e.jsxs("a",{href:s.url,target:"_blank",rel:"noopener noreferrer",className:"font-mono text-cyan-300 hover:underline inline-flex items-center gap-1",children:["10.5281/zenodo.",s.id,e.jsx(y,{className:"w-3 h-3","aria-hidden":"true"})]})}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.kindLabel}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs hidden md:table-cell",children:s.title}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs font-mono whitespace-nowrap",children:s.date}),e.jsx("td",{className:"py-3 px-3 text-xs whitespace-nowrap",children:s.access==="open"?e.jsx("span",{className:"text-green-400",children:"open"}):e.jsxs("span",{className:"inline-flex items-center gap-1 text-gold-400",children:[e.jsx(j,{className:"w-3 h-3","aria-hidden":"true"})," embargoed"]})})]},s.id))})]})}),e.jsxs("p",{className:"text-muted-foreground text-xs leading-relaxed",children:["Document deposits carry their own document-level publication licence; software licensing (PolyForm Noncommercial / commercial) is separate and governed by the"," ",e.jsx(o,{to:"/license",className:"text-cyan-300 hover:underline",children:"license page"}),". The embargoed record is restricted source custody and is not part of the public evidence set."]})]}),e.jsxs("div",{ref:s=>r(s,3),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"Verify on Your Own Machine"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"No universal benchmark figures are published on this site, because results depend on your hardware. The package ships the qector-doctor environment diagnostic and the qector bench harness so you can validate and measure on your own machines. Run them yourself:"}),e.jsx(h,{language:"bash",code:`# Quick validation -pip install --upgrade "qector-decoder-v3>=1.0,<2" -python -c "import qector_decoder_v3 as qd; print(qd.__version__)" -# 15-check environment diagnostic (v1.0.0) -qector-doctor -# Throughput benchmark on a generated surface-code circuit -qector bench -d 5 -r 5 -s 10000 --decoder blossom --noise 0.001`})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"How to Cite QECTOR"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed mb-3",children:"If you use QECTOR Decoder v3 or its validation artifacts in academic research, please cite our software artifact release:"}),e.jsx("pre",{className:"p-4 bg-void border border-gridline rounded-xl text-xs text-muted-foreground font-mono overflow-x-auto select-all",children:`@software{lessard2026qector, - author = {Guillaume Lessard}, - title = {{QECTOR Decoder v3}: Rust/Python Quantum Error Correction Decoding Platform}, - year = {2026}, - version = {1.0.0}, - url = {https://www.qector.store}, - note = {Source-available under PolyForm Noncommercial 1.0.0. Commercial license required for commercial use.} -}`})]}),e.jsx(u,{title:"Our Transparency Commitment",statement:"We document validation results openly, including known limitations. Published numeric claims link to GitHub artifact releases. We do not hide non-passes behind aggregate statistics."})]})})]})}export{C as default}; diff --git a/assets/Evidence-D6-z-CP3.js b/assets/Evidence-D6-z-CP3.js deleted file mode 100644 index 01423f31..00000000 --- a/assets/Evidence-D6-z-CP3.js +++ /dev/null @@ -1,14 +0,0 @@ -import{r as i,j as e}from"./vendor-react-BiHfrq0e.js";import{S as m,A as x,C as h,E as u}from"./index-CpdATiEY.js";import{N as p}from"./NeuralReveal-BflyZYSb.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{Z as g}from"./releases-DiQz_IDu.js";import{L as o}from"./vendor-PiU4YGcH.js";import{p as b,q as v,E as y,L as j}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";n.registerPlugin(f);const N=[{title:"Official User Manual v1.0.0",desc:"QECTOR Decoder v3 Reference Manual v1.0.0 (DOI 10.5281/zenodo.21941046): the normative source for decoder contracts and claim boundaries.",status:"Verified"},{title:"SHA-256 Sealed Artifact Manifests",desc:"Source and artifact releases carry SHA-256 sealed manifests on GitHub, so published builds can be verified against their recorded hashes.",status:"Verified"},{title:"Syndromic Validation Harness",desc:"Decode runs verify H·c = s on every shot through the self-debugging harness shipped in the package, with the harness published on GitHub.",status:"Verified"},{title:"Scoped Methodology and Limitations",desc:"The manual excludes hardware-bound performance figures and documents the metadata, confidence intervals, and artifact requirements for future measurements.",status:"Methodology"}];function C(){const[t,c]=i.useState("All"),d=i.useRef([]);i.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{d.current.filter(Boolean).forEach(a=>{n.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const r=(s,a)=>{s&&(d.current[a]=s)},l=N.filter(s=>t==="All"||s.status===t);return e.jsxs(e.Fragment,{children:[e.jsx(m,{title:"Evidence & Reports · QECTOR",description:"Validation reports, reproducible artifacts, and evidence bundles for QECTOR quantum error correction decoder. Available on GitHub."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-green-400/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-green-400/10 border border-green-400/20 rounded-full text-xs font-semibold text-green-400 uppercase tracking-wider mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Verified v1.0.0 Manual · SHA-256 Sealed Manifests"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(p,{text:"Evidence & Reports",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:"Public claims are documented with their boundaries: the six-record Zenodo evidence corpus, validation reports, and SHA-256 sealed manifests archived on GitHub."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"GitHub Repository →"}),e.jsx(o,{to:"/technical-reference",className:"btn-outline",children:"Technical Reference"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsxs("div",{ref:s=>r(s,0),className:"flex flex-wrap justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-3 px-8 py-4 bg-cyan-300/10 border border-cyan-300/20 rounded-2xl hover:bg-cyan-300/20 transition-all",children:[e.jsx(b,{className:"w-6 h-6 text-cyan-300","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"github.com/GuillaumeLessard/qector-decoder"})]})]}),e.jsxs("a",{href:"/docs/reference.md",className:"inline-flex items-center gap-3 px-8 py-4 bg-gold-400/10 border border-gold-400/20 rounded-2xl hover:bg-gold-400/20 transition-all",children:[e.jsx(v,{className:"w-6 h-6 text-gold-400","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-gold-400 font-semibold",children:"Official User Manual v1.0.0"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"qector.store/docs/reference.md"})]})]})]}),e.jsx("div",{className:"flex flex-wrap items-center justify-center gap-2 max-w-lg mx-auto",children:["All","Verified","Methodology"].map(s=>e.jsx("button",{"aria-pressed":t===s,onClick:()=>c(s),className:`px-4 py-2 text-xs font-semibold rounded-lg border transition-all duration-300 ${t===s?"bg-cyan-300 text-void border-cyan-300 shadow-[0_0_12px_rgba(103,232,249,0.35)]":"bg-[#0b1329]/40 text-secondary border-gridline hover:text-primary hover:border-cyan-300/40"}`,children:s},s))}),e.jsxs("div",{ref:s=>r(s,1),className:"space-y-4",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Evidence Reports"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:l.map(s=>e.jsx(x,{title:s.title,badge:{label:s.status,color:s.status==="Verified"?"green":"gold"},desc:s.desc},s.title))})]}),e.jsxs("div",{ref:s=>r(s,2),className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Zenodo Evidence Registry"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"The complete six-record evidence corpus for QECTOR Decoder v3 v1.0.0. Each record is a DOI-stable, versioned deposit with its scope and date listed below."})]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"DOI"}),e.jsx("th",{className:"py-3 px-3",children:"Scope"}),e.jsx("th",{className:"py-3 px-3 hidden md:table-cell",children:"Title"}),e.jsx("th",{className:"py-3 px-3",children:"Date"}),e.jsx("th",{className:"py-3 px-3",children:"Access"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:g.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3",children:e.jsxs("a",{href:s.url,target:"_blank",rel:"noopener noreferrer",className:"font-mono text-cyan-300 hover:underline inline-flex items-center gap-1",children:["10.5281/zenodo.",s.id,e.jsx(y,{className:"w-3 h-3","aria-hidden":"true"})]})}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.kindLabel}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs hidden md:table-cell",children:s.title}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs font-mono whitespace-nowrap",children:s.date}),e.jsx("td",{className:"py-3 px-3 text-xs whitespace-nowrap",children:s.access==="open"?e.jsx("span",{className:"text-green-400",children:"open"}):e.jsxs("span",{className:"inline-flex items-center gap-1 text-gold-400",children:[e.jsx(j,{className:"w-3 h-3","aria-hidden":"true"})," embargoed"]})})]},s.id))})]})}),e.jsxs("p",{className:"text-muted-foreground text-xs leading-relaxed",children:["Document deposits carry their own document-level publication licence; software licensing (PolyForm Noncommercial / commercial) is separate and governed by the"," ",e.jsx(o,{to:"/license",className:"text-cyan-300 hover:underline",children:"license page"}),". The embargoed record is restricted source custody and is not part of the public evidence set."]})]}),e.jsxs("div",{ref:s=>r(s,3),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"Verify on Your Own Machine"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"No universal benchmark figures are published on this site, because results depend on your hardware. The package ships the qector-doctor environment diagnostic and the qector bench harness so you can validate and measure on your own machines. Run them yourself:"}),e.jsx(h,{language:"bash",code:`# Quick validation -pip install --upgrade "qector-decoder-v3>=1.0,<2" -python -c "import qector_decoder_v3 as qd; print(qd.__version__)" -# 15-check environment diagnostic (v1.0.0) -qector-doctor -# Throughput benchmark on a generated surface-code circuit -qector bench -d 5 -r 5 -s 10000 --decoder blossom --noise 0.001`})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"How to Cite QECTOR"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed mb-3",children:"If you use QECTOR Decoder v3 or its validation artifacts in academic research, please cite our software artifact release:"}),e.jsx("pre",{className:"p-4 bg-void border border-gridline rounded-xl text-xs text-muted-foreground font-mono overflow-x-auto select-all",children:`@software{lessard2026qector, - author = {Guillaume Lessard}, - title = {{QECTOR Decoder v3}: Rust/Python Quantum Error Correction Decoding Platform}, - year = {2026}, - version = {1.0.0}, - url = {https://www.qector.store}, - note = {Source-available under PolyForm Noncommercial 1.0.0. Commercial license required for commercial use.} -}`})]}),e.jsx(u,{title:"Our Transparency Commitment",statement:"We document validation results openly, including known limitations. Published numeric claims link to GitHub artifact releases. We do not hide non-passes behind aggregate statistics."})]})})]})}export{C as default}; diff --git a/assets/Evidence-D6bfHitX.js b/assets/Evidence-D6bfHitX.js deleted file mode 100644 index 421816d0..00000000 --- a/assets/Evidence-D6bfHitX.js +++ /dev/null @@ -1,14 +0,0 @@ -import{r as i,j as e}from"./vendor-react-BiHfrq0e.js";import{S as m,A as x,C as h,E as u}from"./index-DRAXObZB.js";import{N as p}from"./NeuralReveal-BflyZYSb.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{Z as g}from"./releases-DiQz_IDu.js";import{L as o}from"./vendor-PiU4YGcH.js";import{p as b,q as v,E as y,L as j}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";n.registerPlugin(f);const N=[{title:"Official User Manual v1.0.0",desc:"QECTOR Decoder v3 Reference Manual v1.0.0 (DOI 10.5281/zenodo.21941046): the normative source for decoder contracts and claim boundaries.",status:"Verified"},{title:"SHA-256 Sealed Artifact Manifests",desc:"Source and artifact releases carry SHA-256 sealed manifests on GitHub, so published builds can be verified against their recorded hashes.",status:"Verified"},{title:"Syndromic Validation Harness",desc:"Decode runs verify H·c = s on every shot through the self-debugging harness shipped in the package, with the harness published on GitHub.",status:"Verified"},{title:"Scoped Methodology and Limitations",desc:"The manual excludes hardware-bound performance figures and documents the metadata, confidence intervals, and artifact requirements for future measurements.",status:"Methodology"}];function C(){const[t,c]=i.useState("All"),d=i.useRef([]);i.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{d.current.filter(Boolean).forEach(a=>{n.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const r=(s,a)=>{s&&(d.current[a]=s)},l=N.filter(s=>t==="All"||s.status===t);return e.jsxs(e.Fragment,{children:[e.jsx(m,{title:"Evidence & Reports · QECTOR",description:"Validation reports, reproducible artifacts, and evidence bundles for QECTOR quantum error correction decoder. Available on GitHub."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-green-400/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-green-400/10 border border-green-400/20 rounded-full text-xs font-semibold text-green-400 uppercase tracking-wider mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Verified v1.0.0 Manual · SHA-256 Sealed Manifests"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(p,{text:"Evidence & Reports",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:"Public claims are documented with their boundaries: the six-record Zenodo evidence corpus, validation reports, and SHA-256 sealed manifests archived on GitHub."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"GitHub Repository →"}),e.jsx(o,{to:"/technical-reference",className:"btn-outline",children:"Technical Reference"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsxs("div",{ref:s=>r(s,0),className:"flex flex-wrap justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-3 px-8 py-4 bg-cyan-300/10 border border-cyan-300/20 rounded-2xl hover:bg-cyan-300/20 transition-all",children:[e.jsx(b,{className:"w-6 h-6 text-cyan-300","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"github.com/GuillaumeLessard/qector-decoder"})]})]}),e.jsxs("a",{href:"/docs/reference.md",className:"inline-flex items-center gap-3 px-8 py-4 bg-gold-400/10 border border-gold-400/20 rounded-2xl hover:bg-gold-400/20 transition-all",children:[e.jsx(v,{className:"w-6 h-6 text-gold-400","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-gold-400 font-semibold",children:"Official User Manual v1.0.0"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"qector.store/docs/reference.md"})]})]})]}),e.jsx("div",{className:"flex flex-wrap items-center justify-center gap-2 max-w-lg mx-auto",children:["All","Verified","Methodology"].map(s=>e.jsx("button",{"aria-pressed":t===s,onClick:()=>c(s),className:`px-4 py-2 text-xs font-semibold rounded-lg border transition-all duration-300 ${t===s?"bg-cyan-300 text-void border-cyan-300 shadow-[0_0_12px_rgba(103,232,249,0.35)]":"bg-[#0b1329]/40 text-secondary border-gridline hover:text-primary hover:border-cyan-300/40"}`,children:s},s))}),e.jsxs("div",{ref:s=>r(s,1),className:"space-y-4",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Evidence Reports"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:l.map(s=>e.jsx(x,{title:s.title,badge:{label:s.status,color:s.status==="Verified"?"green":"gold"},desc:s.desc},s.title))})]}),e.jsxs("div",{ref:s=>r(s,2),className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Zenodo Evidence Registry"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"The complete six-record evidence corpus for QECTOR Decoder v3 v1.0.0. Each record is a DOI-stable, versioned deposit with its scope and date listed below."})]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"DOI"}),e.jsx("th",{className:"py-3 px-3",children:"Scope"}),e.jsx("th",{className:"py-3 px-3 hidden md:table-cell",children:"Title"}),e.jsx("th",{className:"py-3 px-3",children:"Date"}),e.jsx("th",{className:"py-3 px-3",children:"Access"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:g.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3",children:e.jsxs("a",{href:s.url,target:"_blank",rel:"noopener noreferrer",className:"font-mono text-cyan-300 hover:underline inline-flex items-center gap-1",children:["10.5281/zenodo.",s.id,e.jsx(y,{className:"w-3 h-3","aria-hidden":"true"})]})}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.kindLabel}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs hidden md:table-cell",children:s.title}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs font-mono whitespace-nowrap",children:s.date}),e.jsx("td",{className:"py-3 px-3 text-xs whitespace-nowrap",children:s.access==="open"?e.jsx("span",{className:"text-green-400",children:"open"}):e.jsxs("span",{className:"inline-flex items-center gap-1 text-gold-400",children:[e.jsx(j,{className:"w-3 h-3","aria-hidden":"true"})," embargoed"]})})]},s.id))})]})}),e.jsxs("p",{className:"text-muted-foreground text-xs leading-relaxed",children:["Document deposits carry their own document-level publication licence; software licensing (PolyForm Noncommercial / commercial) is separate and governed by the"," ",e.jsx(o,{to:"/license",className:"text-cyan-300 hover:underline",children:"license page"}),". The embargoed record is restricted source custody and is not part of the public evidence set."]})]}),e.jsxs("div",{ref:s=>r(s,3),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"Verify on Your Own Machine"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"No universal benchmark figures are published on this site, because results depend on your hardware. The package ships the qector-doctor environment diagnostic and the qector bench harness so you can validate and measure on your own machines. Run them yourself:"}),e.jsx(h,{language:"bash",code:`# Quick validation -pip install --upgrade "qector-decoder-v3>=1.0,<2" -python -c "import qector_decoder_v3 as qd; print(qd.__version__)" -# 15-check environment diagnostic (v1.0.0) -qector-doctor -# Throughput benchmark on a generated surface-code circuit -qector bench -d 5 -r 5 -s 10000 --decoder blossom --noise 0.001`})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"How to Cite QECTOR"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed mb-3",children:"If you use QECTOR Decoder v3 or its validation artifacts in academic research, please cite our software artifact release:"}),e.jsx("pre",{className:"p-4 bg-void border border-gridline rounded-xl text-xs text-muted-foreground font-mono overflow-x-auto select-all",children:`@software{lessard2026qector, - author = {Guillaume Lessard}, - title = {{QECTOR Decoder v3}: Rust/Python Quantum Error Correction Decoding Platform}, - year = {2026}, - version = {1.0.0}, - url = {https://www.qector.store}, - note = {Source-available under PolyForm Noncommercial 1.0.0. Commercial license required for commercial use.} -}`})]}),e.jsx(u,{title:"Our Transparency Commitment",statement:"We document validation results openly, including known limitations. Published numeric claims link to GitHub artifact releases. We do not hide non-passes behind aggregate statistics."})]})})]})}export{C as default}; diff --git a/assets/Evidence-DQH9lAmJ.js b/assets/Evidence-DQH9lAmJ.js deleted file mode 100644 index 3ee4d135..00000000 --- a/assets/Evidence-DQH9lAmJ.js +++ /dev/null @@ -1,14 +0,0 @@ -import{r as i,j as e}from"./vendor-react-BiHfrq0e.js";import{S as m,L as o,A as x,C as h,E as u}from"./index-CcwlvHYJ.js";import{N as p}from"./NeuralReveal-Bsl9IGCr.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{Z as g}from"./releases-1-HBloZv.js";import{p as b,q as v,E as y,L as j}from"./vendor-ui-B0ssGG4c.js";n.registerPlugin(f);const N=[{title:"Official User Manual v1.0.0",desc:"QECTOR Decoder v3 Reference Manual v1.0.0 (DOI 10.5281/zenodo.21941046): the normative source for decoder contracts and claim boundaries.",status:"Verified"},{title:"SHA-256 Sealed Artifact Manifests",desc:"Source and artifact releases carry SHA-256 sealed manifests on GitHub, so published builds can be verified against their recorded hashes.",status:"Verified"},{title:"Syndromic Validation Harness",desc:"Decode runs verify H·c = s on every shot through the self-debugging harness shipped in the package, with the harness published on GitHub.",status:"Verified"},{title:"Scoped Methodology and Limitations",desc:"The manual excludes hardware-bound performance figures and documents the metadata, confidence intervals, and artifact requirements for future measurements.",status:"Methodology"}];function O(){const[t,c]=i.useState("All"),d=i.useRef([]);i.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{d.current.filter(Boolean).forEach(a=>{n.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const r=(s,a)=>{s&&(d.current[a]=s)},l=N.filter(s=>t==="All"||s.status===t);return e.jsxs(e.Fragment,{children:[e.jsx(m,{title:"Evidence & Reports · QECTOR",description:"Validation reports, reproducible artifacts, and evidence bundles for QECTOR quantum error correction decoder. Available on GitHub."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-green-400/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-green-400/10 border border-green-400/20 rounded-full text-xs font-semibold text-green-400 uppercase tracking-wider mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Verified v1.0.0 Manual · SHA-256 Sealed Manifests"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(p,{text:"Evidence & Reports",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:"Public claims are documented with their boundaries: the six-record Zenodo evidence corpus, validation reports, and SHA-256 sealed manifests archived on GitHub."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"GitHub Repository →"}),e.jsx(o,{to:"/technical-reference",className:"btn-outline",children:"Technical Reference"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsxs("div",{ref:s=>r(s,0),className:"flex flex-wrap justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-3 px-8 py-4 bg-cyan-300/10 border border-cyan-300/20 rounded-2xl hover:bg-cyan-300/20 transition-all",children:[e.jsx(b,{className:"w-6 h-6 text-cyan-300","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"github.com/GuillaumeLessard/qector-decoder"})]})]}),e.jsxs("a",{href:"/docs/reference.md",className:"inline-flex items-center gap-3 px-8 py-4 bg-gold-400/10 border border-gold-400/20 rounded-2xl hover:bg-gold-400/20 transition-all",children:[e.jsx(v,{className:"w-6 h-6 text-gold-400","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-gold-400 font-semibold",children:"Official User Manual v1.0.0"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"qector.store/docs/reference.md"})]})]})]}),e.jsx("div",{className:"flex flex-wrap items-center justify-center gap-2 max-w-lg mx-auto",children:["All","Verified","Methodology"].map(s=>e.jsx("button",{"aria-pressed":t===s,onClick:()=>c(s),className:`px-4 py-2 text-xs font-semibold rounded-lg border transition-all duration-300 ${t===s?"bg-cyan-300 text-void border-cyan-300 shadow-[0_0_12px_rgba(103,232,249,0.35)]":"bg-[#0b1329]/40 text-secondary border-gridline hover:text-primary hover:border-cyan-300/40"}`,children:s},s))}),e.jsxs("div",{ref:s=>r(s,1),className:"space-y-4",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Evidence Reports"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:l.map(s=>e.jsx(x,{title:s.title,badge:{label:s.status,color:s.status==="Verified"?"green":"gold"},desc:s.desc},s.title))})]}),e.jsxs("div",{ref:s=>r(s,2),className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Zenodo Evidence Registry"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"The complete six-record evidence corpus for QECTOR Decoder v3 v1.0.0. Each record is a DOI-stable, versioned deposit with its scope and date listed below."})]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"DOI"}),e.jsx("th",{className:"py-3 px-3",children:"Scope"}),e.jsx("th",{className:"py-3 px-3 hidden md:table-cell",children:"Title"}),e.jsx("th",{className:"py-3 px-3",children:"Date"}),e.jsx("th",{className:"py-3 px-3",children:"Access"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:g.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3",children:e.jsxs("a",{href:s.url,target:"_blank",rel:"noopener noreferrer",className:"font-mono text-cyan-300 hover:underline inline-flex items-center gap-1",children:["10.5281/zenodo.",s.id,e.jsx(y,{className:"w-3 h-3","aria-hidden":"true"})]})}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.kindLabel}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs hidden md:table-cell",children:s.title}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs font-mono whitespace-nowrap",children:s.date}),e.jsx("td",{className:"py-3 px-3 text-xs whitespace-nowrap",children:s.access==="open"?e.jsx("span",{className:"text-green-400",children:"open"}):e.jsxs("span",{className:"inline-flex items-center gap-1 text-gold-400",children:[e.jsx(j,{className:"w-3 h-3","aria-hidden":"true"})," embargoed"]})})]},s.id))})]})}),e.jsxs("p",{className:"text-muted-foreground text-xs leading-relaxed",children:["Document deposits carry their own document-level publication licence; software licensing (PolyForm Noncommercial / commercial) is separate and governed by the"," ",e.jsx(o,{to:"/license",className:"text-cyan-300 hover:underline",children:"license page"}),". The embargoed record is restricted source custody and is not part of the public evidence set."]})]}),e.jsxs("div",{ref:s=>r(s,3),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"Verify on Your Own Machine"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"No universal benchmark figures are published on this site, because results depend on your hardware. The package ships the qector-doctor environment diagnostic and the qector bench harness so you can validate and measure on your own machines. Run them yourself:"}),e.jsx(h,{language:"bash",code:`# Quick validation -pip install --upgrade "qector-decoder-v3>=1.0.1,<2" -python -c "import qector_decoder_v3 as qd; print(qd.__version__)" -# environment diagnostic -qector-doctor -# Throughput benchmark on a generated surface-code circuit -qector bench -d 5 -r 5 -s 10000 --decoder blossom --noise 0.001`})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"How to Cite QECTOR"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed mb-3",children:"If you use QECTOR Decoder v3 or its validation artifacts in academic research, please cite our software artifact release:"}),e.jsx("pre",{className:"p-4 bg-void border border-gridline rounded-xl text-xs text-muted-foreground font-mono overflow-x-auto select-all",children:`@software{lessard2026qector, - author = {Guillaume Lessard}, - title = {{QECTOR Decoder v3}: Rust/Python Quantum Error Correction Decoding Platform}, - year = {2026}, - version = {1.0.1}, - url = {https://qector.store/}, - note = {Source-available under PolyForm Noncommercial 1.0.0. Commercial license required for commercial use.} -}`})]}),e.jsx(u,{title:"Our Transparency Commitment",statement:"We document validation results openly, including known limitations. Published numeric claims link to GitHub artifact releases. We do not hide non-passes behind aggregate statistics."})]})})]})}export{O as default}; diff --git a/assets/Evidence-DyzDVZBl.js b/assets/Evidence-DyzDVZBl.js deleted file mode 100644 index cac14b9c..00000000 --- a/assets/Evidence-DyzDVZBl.js +++ /dev/null @@ -1,14 +0,0 @@ -import{r as i,j as e}from"./vendor-react-BiHfrq0e.js";import{S as m,A as x,C as h,E as u}from"./index-abfjMTlQ.js";import{N as p}from"./NeuralReveal-D-EQoOl2.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{Z as g}from"./releases-1-HBloZv.js";import{L as o}from"./vendor-PiU4YGcH.js";import{p as b,q as v,E as y,L as j}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";n.registerPlugin(f);const N=[{title:"Official User Manual v1.0.0",desc:"QECTOR Decoder v3 Reference Manual v1.0.0 (DOI 10.5281/zenodo.21941046): the normative source for decoder contracts and claim boundaries.",status:"Verified"},{title:"SHA-256 Sealed Artifact Manifests",desc:"Source and artifact releases carry SHA-256 sealed manifests on GitHub, so published builds can be verified against their recorded hashes.",status:"Verified"},{title:"Syndromic Validation Harness",desc:"Decode runs verify H·c = s on every shot through the self-debugging harness shipped in the package, with the harness published on GitHub.",status:"Verified"},{title:"Scoped Methodology and Limitations",desc:"The manual excludes hardware-bound performance figures and documents the metadata, confidence intervals, and artifact requirements for future measurements.",status:"Methodology"}];function C(){const[t,c]=i.useState("All"),d=i.useRef([]);i.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{d.current.filter(Boolean).forEach(a=>{n.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const r=(s,a)=>{s&&(d.current[a]=s)},l=N.filter(s=>t==="All"||s.status===t);return e.jsxs(e.Fragment,{children:[e.jsx(m,{title:"Evidence & Reports · QECTOR",description:"Validation reports, reproducible artifacts, and evidence bundles for QECTOR quantum error correction decoder. Available on GitHub."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-green-400/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-green-400/10 border border-green-400/20 rounded-full text-xs font-semibold text-green-400 uppercase tracking-wider mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Verified v1.0.0 Manual · SHA-256 Sealed Manifests"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(p,{text:"Evidence & Reports",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:"Public claims are documented with their boundaries: the six-record Zenodo evidence corpus, validation reports, and SHA-256 sealed manifests archived on GitHub."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"GitHub Repository →"}),e.jsx(o,{to:"/technical-reference",className:"btn-outline",children:"Technical Reference"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsxs("div",{ref:s=>r(s,0),className:"flex flex-wrap justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-3 px-8 py-4 bg-cyan-300/10 border border-cyan-300/20 rounded-2xl hover:bg-cyan-300/20 transition-all",children:[e.jsx(b,{className:"w-6 h-6 text-cyan-300","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"github.com/GuillaumeLessard/qector-decoder"})]})]}),e.jsxs("a",{href:"/docs/reference.md",className:"inline-flex items-center gap-3 px-8 py-4 bg-gold-400/10 border border-gold-400/20 rounded-2xl hover:bg-gold-400/20 transition-all",children:[e.jsx(v,{className:"w-6 h-6 text-gold-400","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-gold-400 font-semibold",children:"Official User Manual v1.0.0"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"qector.store/docs/reference.md"})]})]})]}),e.jsx("div",{className:"flex flex-wrap items-center justify-center gap-2 max-w-lg mx-auto",children:["All","Verified","Methodology"].map(s=>e.jsx("button",{"aria-pressed":t===s,onClick:()=>c(s),className:`px-4 py-2 text-xs font-semibold rounded-lg border transition-all duration-300 ${t===s?"bg-cyan-300 text-void border-cyan-300 shadow-[0_0_12px_rgba(103,232,249,0.35)]":"bg-[#0b1329]/40 text-secondary border-gridline hover:text-primary hover:border-cyan-300/40"}`,children:s},s))}),e.jsxs("div",{ref:s=>r(s,1),className:"space-y-4",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Evidence Reports"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:l.map(s=>e.jsx(x,{title:s.title,badge:{label:s.status,color:s.status==="Verified"?"green":"gold"},desc:s.desc},s.title))})]}),e.jsxs("div",{ref:s=>r(s,2),className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Zenodo Evidence Registry"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"The complete six-record evidence corpus for QECTOR Decoder v3 v1.0.0. Each record is a DOI-stable, versioned deposit with its scope and date listed below."})]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"DOI"}),e.jsx("th",{className:"py-3 px-3",children:"Scope"}),e.jsx("th",{className:"py-3 px-3 hidden md:table-cell",children:"Title"}),e.jsx("th",{className:"py-3 px-3",children:"Date"}),e.jsx("th",{className:"py-3 px-3",children:"Access"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:g.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3",children:e.jsxs("a",{href:s.url,target:"_blank",rel:"noopener noreferrer",className:"font-mono text-cyan-300 hover:underline inline-flex items-center gap-1",children:["10.5281/zenodo.",s.id,e.jsx(y,{className:"w-3 h-3","aria-hidden":"true"})]})}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.kindLabel}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs hidden md:table-cell",children:s.title}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs font-mono whitespace-nowrap",children:s.date}),e.jsx("td",{className:"py-3 px-3 text-xs whitespace-nowrap",children:s.access==="open"?e.jsx("span",{className:"text-green-400",children:"open"}):e.jsxs("span",{className:"inline-flex items-center gap-1 text-gold-400",children:[e.jsx(j,{className:"w-3 h-3","aria-hidden":"true"})," embargoed"]})})]},s.id))})]})}),e.jsxs("p",{className:"text-muted-foreground text-xs leading-relaxed",children:["Document deposits carry their own document-level publication licence; software licensing (PolyForm Noncommercial / commercial) is separate and governed by the"," ",e.jsx(o,{to:"/license",className:"text-cyan-300 hover:underline",children:"license page"}),". The embargoed record is restricted source custody and is not part of the public evidence set."]})]}),e.jsxs("div",{ref:s=>r(s,3),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"Verify on Your Own Machine"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"No universal benchmark figures are published on this site, because results depend on your hardware. The package ships the qector-doctor environment diagnostic and the qector bench harness so you can validate and measure on your own machines. Run them yourself:"}),e.jsx(h,{language:"bash",code:`# Quick validation -pip install --upgrade "qector-decoder-v3>=1.0.1,<2" -python -c "import qector_decoder_v3 as qd; print(qd.__version__)" -# environment diagnostic -qector-doctor -# Throughput benchmark on a generated surface-code circuit -qector bench -d 5 -r 5 -s 10000 --decoder blossom --noise 0.001`})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"How to Cite QECTOR"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed mb-3",children:"If you use QECTOR Decoder v3 or its validation artifacts in academic research, please cite our software artifact release:"}),e.jsx("pre",{className:"p-4 bg-void border border-gridline rounded-xl text-xs text-muted-foreground font-mono overflow-x-auto select-all",children:`@software{lessard2026qector, - author = {Guillaume Lessard}, - title = {{QECTOR Decoder v3}: Rust/Python Quantum Error Correction Decoding Platform}, - year = {2026}, - version = {1.0.1}, - url = {https://qector.store/}, - note = {Source-available under PolyForm Noncommercial 1.0.0. Commercial license required for commercial use.} -}`})]}),e.jsx(u,{title:"Our Transparency Commitment",statement:"We document validation results openly, including known limitations. Published numeric claims link to GitHub artifact releases. We do not hide non-passes behind aggregate statistics."})]})})]})}export{C as default}; diff --git a/assets/Evidence-Ls2E646e.js b/assets/Evidence-Ls2E646e.js deleted file mode 100644 index 0d90500e..00000000 --- a/assets/Evidence-Ls2E646e.js +++ /dev/null @@ -1,14 +0,0 @@ -import{r as i,j as e}from"./vendor-react-BiHfrq0e.js";import{S as m,A as x,C as h,E as u}from"./index-iVST85F-.js";import{N as p}from"./NeuralReveal-BflyZYSb.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{Z as g}from"./releases-DiQz_IDu.js";import{L as d}from"./vendor-PiU4YGcH.js";import{p as b,q as v,E as y,L as j}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";n.registerPlugin(f);const N=[{title:"Official User Manual v1.0.0",desc:"QECTOR Decoder v3 Reference Manual v1.0.0 (DOI 10.5281/zenodo.21941046): the normative source for decoder contracts and claim boundaries.",status:"Verified"},{title:"SHA-256 Sealed Artifact Manifests",desc:"Source and artifact releases carry SHA-256 sealed manifests on GitHub, so published builds can be verified against their recorded hashes.",status:"Verified"},{title:"Syndromic Validation Harness",desc:"Decode runs verify H·c = s on every shot through the self-debugging harness shipped in the package, with the harness published on GitHub.",status:"Verified"},{title:"Scoped Methodology and Limitations",desc:"The manual excludes hardware-bound performance figures and documents the metadata, confidence intervals, and artifact requirements for future measurements.",status:"Methodology"}];function C(){const[t,c]=i.useState("All"),o=i.useRef([]);i.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{o.current.filter(Boolean).forEach(a=>{n.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const r=(s,a)=>{s&&(o.current[a]=s)},l=N.filter(s=>t==="All"||s.status===t);return e.jsxs(e.Fragment,{children:[e.jsx(m,{title:"Evidence & Reports · QECTOR",description:"Validation reports, reproducible artifacts, and evidence bundles for QECTOR quantum error correction decoder. Available on GitHub."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-green-400/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-green-400/10 border border-green-400/20 rounded-full text-xs font-semibold text-green-400 uppercase tracking-wider mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Verified v1.0.0 Manual · SHA-256 Sealed Manifests"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(p,{text:"Evidence & Reports",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:"Public claims are documented with their boundaries: the six-record Zenodo evidence corpus, validation reports, and SHA-256 sealed manifests archived on GitHub."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"GitHub Repository →"}),e.jsx(d,{to:"/technical-reference",className:"btn-outline",children:"Technical Reference"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsxs("div",{ref:s=>r(s,0),className:"flex flex-wrap justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-3 px-8 py-4 bg-cyan-300/10 border border-cyan-300/20 rounded-2xl hover:bg-cyan-300/20 transition-all",children:[e.jsx(b,{className:"w-6 h-6 text-cyan-300","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"github.com/GuillaumeLessard/qector-decoder"})]})]}),e.jsxs("a",{href:"/docs/reference.md",className:"inline-flex items-center gap-3 px-8 py-4 bg-gold-400/10 border border-gold-400/20 rounded-2xl hover:bg-gold-400/20 transition-all",children:[e.jsx(v,{className:"w-6 h-6 text-gold-400","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-gold-400 font-semibold",children:"Official User Manual v1.0.0"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"qector.store/docs/reference.md"})]})]})]}),e.jsx("div",{className:"flex flex-wrap items-center justify-center gap-2 max-w-lg mx-auto",children:["All","Verified","Methodology"].map(s=>e.jsx("button",{"aria-pressed":t===s,onClick:()=>c(s),className:`px-4 py-2 text-xs font-semibold rounded-lg border transition-all duration-300 ${t===s?"bg-cyan-300 text-void border-cyan-300 shadow-[0_0_12px_rgba(103,232,249,0.35)]":"bg-[#0b1329]/40 text-secondary border-gridline hover:text-primary hover:border-cyan-300/40"}`,children:s},s))}),e.jsxs("div",{ref:s=>r(s,1),className:"space-y-4",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Evidence Reports"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:l.map(s=>e.jsx(x,{title:s.title,badge:{label:s.status,color:s.status==="Verified"?"green":"gold"},desc:s.desc},s.title))})]}),e.jsxs("div",{ref:s=>r(s,2),className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Zenodo Evidence Registry"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"The complete six-record evidence corpus for QECTOR Decoder v3 v1.0.0. Each record is a DOI-stable, versioned deposit with its scope and date listed below."})]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"DOI"}),e.jsx("th",{className:"py-3 px-3",children:"Scope"}),e.jsx("th",{className:"py-3 px-3 hidden md:table-cell",children:"Title"}),e.jsx("th",{className:"py-3 px-3",children:"Date"}),e.jsx("th",{className:"py-3 px-3",children:"Access"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:g.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3",children:e.jsxs("a",{href:s.url,target:"_blank",rel:"noopener noreferrer",className:"font-mono text-cyan-300 hover:underline inline-flex items-center gap-1",children:["10.5281/zenodo.",s.id,e.jsx(y,{className:"w-3 h-3","aria-hidden":"true"})]})}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.kindLabel}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs hidden md:table-cell",children:s.title}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs font-mono whitespace-nowrap",children:s.date}),e.jsx("td",{className:"py-3 px-3 text-xs whitespace-nowrap",children:s.access==="open"?e.jsx("span",{className:"text-green-400",children:"open"}):e.jsxs("span",{className:"inline-flex items-center gap-1 text-gold-400",children:[e.jsx(j,{className:"w-3 h-3","aria-hidden":"true"})," embargoed"]})})]},s.id))})]})}),e.jsxs("p",{className:"text-muted-foreground text-xs leading-relaxed",children:["Document deposits carry their own document-level publication licence; software licensing (PolyForm Noncommercial / commercial) is separate and governed by the"," ",e.jsx(d,{to:"/license",className:"text-cyan-300 hover:underline",children:"license page"}),". The embargoed record is restricted source custody and is not part of the public evidence set."]})]}),e.jsxs("div",{ref:s=>r(s,3),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"Verify on Your Own Machine"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"No universal benchmark figures are published on this site, because results depend on your hardware. The package ships the qector-doctor environment diagnostic and the qector bench harness so you can validate and measure on your own machines. Run them yourself:"}),e.jsx(h,{language:"bash",code:`# Quick validation -pip install qector-decoder-v3==1.0.0 -python -c "import qector_decoder_v3 as qd; print(qd.__version__)" -# 15-check environment diagnostic (v1.0.0) -qector-doctor -# Throughput benchmark on a generated surface-code circuit -qector bench -d 5 -r 5 -s 10000 --decoder blossom --noise 0.001`})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"How to Cite QECTOR"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed mb-3",children:"If you use QECTOR Decoder v3 or its validation artifacts in academic research, please cite our software artifact release:"}),e.jsx("pre",{className:"p-4 bg-void border border-gridline rounded-xl text-xs text-muted-foreground font-mono overflow-x-auto select-all",children:`@software{lessard2026qector, - author = {Guillaume Lessard}, - title = {{QECTOR Decoder v3}: Rust/Python Quantum Error Correction Decoding Platform}, - year = {2026}, - version = {1.0.0}, - url = {https://www.qector.store}, - note = {Source-available under PolyForm Noncommercial 1.0.0. Commercial license required for commercial use.} -}`})]}),e.jsx(u,{title:"Our Transparency Commitment",statement:"We document validation results openly, including known limitations. Published numeric claims link to GitHub artifact releases. We do not hide non-passes behind aggregate statistics."})]})})]})}export{C as default}; diff --git a/assets/Evidence-bSRMW5HI.js b/assets/Evidence-bSRMW5HI.js deleted file mode 100644 index f86a54c4..00000000 --- a/assets/Evidence-bSRMW5HI.js +++ /dev/null @@ -1,14 +0,0 @@ -import{r as i,j as e}from"./vendor-react-BiHfrq0e.js";import{S as m,A as x,C as h,E as u}from"./index-WV1aysjN.js";import{N as p}from"./NeuralReveal-BflyZYSb.js";import{g as n,S as f}from"./vendor-gsap-a3sj5zmn.js";import{Z as g}from"./releases-DiQz_IDu.js";import{L as o}from"./vendor-PiU4YGcH.js";import{p as b,q as v,E as y,L as j}from"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";n.registerPlugin(f);const N=[{title:"Official User Manual v1.0.0",desc:"QECTOR Decoder v3 Reference Manual v1.0.0 (DOI 10.5281/zenodo.21941046): the normative source for decoder contracts and claim boundaries.",status:"Verified"},{title:"SHA-256 Sealed Artifact Manifests",desc:"Source and artifact releases carry SHA-256 sealed manifests on GitHub, so published builds can be verified against their recorded hashes.",status:"Verified"},{title:"Syndromic Validation Harness",desc:"Decode runs verify H·c = s on every shot through the self-debugging harness shipped in the package, with the harness published on GitHub.",status:"Verified"},{title:"Scoped Methodology and Limitations",desc:"The manual excludes hardware-bound performance figures and documents the metadata, confidence intervals, and artifact requirements for future measurements.",status:"Methodology"}];function C(){const[t,c]=i.useState("All"),d=i.useRef([]);i.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=n.context(()=>{d.current.filter(Boolean).forEach(a=>{n.fromTo(a,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:a,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const r=(s,a)=>{s&&(d.current[a]=s)},l=N.filter(s=>t==="All"||s.status===t);return e.jsxs(e.Fragment,{children:[e.jsx(m,{title:"Evidence & Reports · QECTOR",description:"Validation reports, reproducible artifacts, and evidence bundles for QECTOR quantum error correction decoder. Available on GitHub."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-green-400/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-green-400/10 border border-green-400/20 rounded-full text-xs font-semibold text-green-400 uppercase tracking-wider mb-6",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse-dot"}),"Verified v1.0.0 Manual · SHA-256 Sealed Manifests"]}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(p,{text:"Evidence & Reports",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:"Public claims are documented with their boundaries: the six-record Zenodo evidence corpus, validation reports, and SHA-256 sealed manifests archived on GitHub."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"GitHub Repository →"}),e.jsx(o,{to:"/technical-reference",className:"btn-outline",children:"Technical Reference"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-12",children:[e.jsxs("div",{ref:s=>r(s,0),className:"flex flex-wrap justify-center gap-4",children:[e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-3 px-8 py-4 bg-cyan-300/10 border border-cyan-300/20 rounded-2xl hover:bg-cyan-300/20 transition-all",children:[e.jsx(b,{className:"w-6 h-6 text-cyan-300","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold",children:"GitHub Artifacts & Validation"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"github.com/GuillaumeLessard/qector-decoder"})]})]}),e.jsxs("a",{href:"/docs/reference.md",className:"inline-flex items-center gap-3 px-8 py-4 bg-gold-400/10 border border-gold-400/20 rounded-2xl hover:bg-gold-400/20 transition-all",children:[e.jsx(v,{className:"w-6 h-6 text-gold-400","aria-hidden":"true"}),e.jsxs("div",{className:"text-left",children:[e.jsx("div",{className:"text-gold-400 font-semibold",children:"Official User Manual v1.0.0"}),e.jsx("div",{className:"text-muted-foreground text-sm",children:"qector.store/docs/reference.md"})]})]})]}),e.jsx("div",{className:"flex flex-wrap items-center justify-center gap-2 max-w-lg mx-auto",children:["All","Verified","Methodology"].map(s=>e.jsx("button",{"aria-pressed":t===s,onClick:()=>c(s),className:`px-4 py-2 text-xs font-semibold rounded-lg border transition-all duration-300 ${t===s?"bg-cyan-300 text-void border-cyan-300 shadow-[0_0_12px_rgba(103,232,249,0.35)]":"bg-[#0b1329]/40 text-secondary border-gridline hover:text-primary hover:border-cyan-300/40"}`,children:s},s))}),e.jsxs("div",{ref:s=>r(s,1),className:"space-y-4",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Evidence Reports"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:l.map(s=>e.jsx(x,{title:s.title,badge:{label:s.status,color:s.status==="Verified"?"green":"gold"},desc:s.desc},s.title))})]}),e.jsxs("div",{ref:s=>r(s,2),className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Zenodo Evidence Registry"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"The complete six-record evidence corpus for QECTOR Decoder v3 v1.0.0. Each record is a DOI-stable, versioned deposit with its scope and date listed below."})]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"DOI"}),e.jsx("th",{className:"py-3 px-3",children:"Scope"}),e.jsx("th",{className:"py-3 px-3 hidden md:table-cell",children:"Title"}),e.jsx("th",{className:"py-3 px-3",children:"Date"}),e.jsx("th",{className:"py-3 px-3",children:"Access"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:g.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3",children:e.jsxs("a",{href:s.url,target:"_blank",rel:"noopener noreferrer",className:"font-mono text-cyan-300 hover:underline inline-flex items-center gap-1",children:["10.5281/zenodo.",s.id,e.jsx(y,{className:"w-3 h-3","aria-hidden":"true"})]})}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.kindLabel}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs hidden md:table-cell",children:s.title}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs font-mono whitespace-nowrap",children:s.date}),e.jsx("td",{className:"py-3 px-3 text-xs whitespace-nowrap",children:s.access==="open"?e.jsx("span",{className:"text-green-400",children:"open"}):e.jsxs("span",{className:"inline-flex items-center gap-1 text-gold-400",children:[e.jsx(j,{className:"w-3 h-3","aria-hidden":"true"})," embargoed"]})})]},s.id))})]})}),e.jsxs("p",{className:"text-muted-foreground text-xs leading-relaxed",children:["Document deposits carry their own document-level publication licence; software licensing (PolyForm Noncommercial / commercial) is separate and governed by the"," ",e.jsx(o,{to:"/license",className:"text-cyan-300 hover:underline",children:"license page"}),". The embargoed record is restricted source custody and is not part of the public evidence set."]})]}),e.jsxs("div",{ref:s=>r(s,3),className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"Verify on Your Own Machine"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"No universal benchmark figures are published on this site, because results depend on your hardware. The package ships the qector-doctor environment diagnostic and the qector bench harness so you can validate and measure on your own machines. Run them yourself:"}),e.jsx(h,{language:"bash",code:`# Quick validation -pip install --upgrade "qector-decoder-v3>=1.0,<2" -python -c "import qector_decoder_v3 as qd; print(qd.__version__)" -# 15-check environment diagnostic (v1.0.0) -qector-doctor -# Throughput benchmark on a generated surface-code circuit -qector bench -d 5 -r 5 -s 10000 --decoder blossom --noise 0.001`})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-3",children:"How to Cite QECTOR"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed mb-3",children:"If you use QECTOR Decoder v3 or its validation artifacts in academic research, please cite our software artifact release:"}),e.jsx("pre",{className:"p-4 bg-void border border-gridline rounded-xl text-xs text-muted-foreground font-mono overflow-x-auto select-all",children:`@software{lessard2026qector, - author = {Guillaume Lessard}, - title = {{QECTOR Decoder v3}: Rust/Python Quantum Error Correction Decoding Platform}, - year = {2026}, - version = {1.0.0}, - url = {https://www.qector.store}, - note = {Source-available under PolyForm Noncommercial 1.0.0. Commercial license required for commercial use.} -}`})]}),e.jsx(u,{title:"Our Transparency Commitment",statement:"We document validation results openly, including known limitations. Published numeric claims link to GitHub artifact releases. We do not hide non-passes behind aggregate statistics."})]})})]})}export{C as default}; diff --git a/assets/Founder-B-0BF051.js b/assets/Founder-B-0BF051.js deleted file mode 100644 index 21040b83..00000000 --- a/assets/Founder-B-0BF051.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,J as p,f as g,L as l}from"./index-c1PDYu0j.js";import{C as f}from"./CalendlyWidget-BuhQfp2_.js";import{C as i,W as b,a}from"./releases--9GgxpSb.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const n="https://orcid.org/0009-0000-3465-3753",o="https://www.linkedin.com/in/qector/",h="https://github.com/GuillaumeLessard",r="https://pypi.org/project/qector-decoder-v3/",y=t=>new Date(`${t}T12:00:00Z`).toLocaleDateString("en-CA",{year:"numeric",month:"short",day:"numeric",timeZone:"UTC"}),c=a.find(t=>t.version==="1.0.1"),j=a.find(t=>t.version==="1.0.0"),m=a[a.length-1],s=b[0],v=[{title:"Decoders that prove their output",body:"A Rust core behind a Python API: Union-Find, exact MWPM, BP-OSD and Relay-BP for qLDPC codes, on CPU and GPU. Every correction is checked against its syndrome, H·c = s (mod 2)."},{title:"Releases you can verify",body:"Wheels built in public CI, tested on each operating system before publishing, with Sigstore provenance, PyPI attestations and Trusted Publishing."},{title:"Tools that stay offline",body:"Air-gapped licensing with Ed25519 tokens, a schema-validated MCP server for Claude, and a self-contained desktop Workbench."}],N=[{date:c.releaseDate,title:`QECTOR Decoder v3 ${c.version}`,detail:"18 wheels for CPython 3.9 to 3.14, tested per OS, Sigstore provenance on every file",href:"https://github.com/GuillaumeLessard/qector-decoder/releases/tag/v1.0.1"},{date:i.releaseDate,title:`QECTOR Claude Plugin ${i.version}`,detail:"Air-gapped, schema-validated MCP server for Claude Code and Claude Desktop",href:i.releaseUrl},{date:s.releaseDate,title:`QECTOR Workbench ${s.version}`,detail:`Free desktop GUI for Windows and Linux, ${s.decoderKinds} decoder kinds, ${s.codeFamilies} code families`,href:s.releaseUrl},{date:j.releaseDate,title:"QECTOR Decoder v3 1.0.0",detail:"First stable release: API stability tiers, qector CLI, reference manual",href:r},{date:m.releaseDate,title:`First public release (${m.version})`,detail:`Published on PyPI; ${a.length} releases to date`,href:r}],P=[{title:"QECTOR Decoder v3 User Manual (v1.0.0)",doi:"10.5281/zenodo.21611214"},{title:"Normative Reference Manual (v1.0.0)",doi:"10.5281/zenodo.21941046"},{title:"Verification and Proof Bundle",doi:"10.5281/zenodo.22046403"}],k=[{area:"Quantum error correction",items:"MWPM and Blossom, Union-Find, BP-OSD and Relay-BP for qLDPC, detector error models, Stim and Sinter"},{area:"Systems",items:"Rust, PyO3, CUDA and OpenCL batch kernels, memory layout and throughput"},{area:"Python and release engineering",items:"Binary wheels for Linux, Windows and macOS, PyPI Trusted Publishing, Sigstore, supply-chain gates"},{area:"Tooling and product",items:"MCP servers, desktop apps, React and TypeScript, Stripe and licensing infrastructure"}],C=[["ORCID","0009-0000-3465-3753",n],["GitHub","github.com/GuillaumeLessard",h],["GitHub organisation","github.com/qectorlab","https://github.com/qectorlab"],["PyPI","qector-decoder-v3",r],["LinkedIn","linkedin.com/in/qector",o],["E-mail","admin@qector.store","mailto:admin@qector.store"]];function O(){return e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"Guillaume Lessard · Founder and Lead Engineer, QECTOR",description:"Guillaume Lessard, founder and lead engineer of QECTOR: Rust and Python quantum error correction decoders, verifiable releases and offline licensing. Longueuil, Québec. ORCID 0009-0000-3465-3753."}),e.jsx(p,{data:{"@context":"https://schema.org","@type":"Person","@id":"https://qector.store/guillaume-lessard#person",name:"Guillaume Lessard",givenName:"Guillaume",familyName:"Lessard",identifier:"0009-0000-3465-3753",jobTitle:"Founder and Lead Engineer, QECTOR",description:"Founder and lead engineer of QECTOR, a Rust and Python quantum error correction decoding platform. Founder of iD01t Productions.",image:"https://qector.store/assets/g.png",url:"https://qector.store/guillaume-lessard/",email:"admin@qector.store",address:{"@type":"PostalAddress",addressLocality:"Longueuil",addressRegion:"QC",addressCountry:"CA"},worksFor:{"@type":"Organization",name:"iD01t Productions",foundingDate:"2012",url:"https://qector.store/"},knowsAbout:["Quantum error correction","Minimum-weight perfect matching","Belief propagation and OSD decoding","qLDPC codes","Rust","Python","GPU computing","Software supply-chain security"],sameAs:[n,h,"https://github.com/qectorlab",r,o,"https://id01t.itch.io/"]}}),e.jsxs("section",{className:"relative pt-32 pb-16 md:pt-36 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsx("div",{className:"relative z-10 section-padding",children:e.jsxs("div",{className:"max-w-5xl mx-auto flex flex-col md:flex-row items-center md:items-start gap-8 md:gap-10",children:[e.jsx("img",{src:"/assets/g.png",alt:"Guillaume Lessard",width:176,height:176,fetchPriority:"high",className:"w-44 h-44 rounded-2xl object-cover border border-cyan-300/30 shadow-lg shrink-0"}),e.jsxs("div",{className:"text-center md:text-left",children:[e.jsx("p",{className:"text-cyan-300 text-sm font-semibold tracking-wide mb-2",children:"Founder and Lead Engineer, QECTOR"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.05] mb-4",children:"Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed mb-6 max-w-2xl",children:"I build quantum error correction decoders in Rust and Python, and the release and licensing infrastructure that lets teams trust them: corrections checked against their syndromes, wheels with verifiable provenance, and licences that work air-gapped. Based in Longueuil, Québec."}),e.jsxs("div",{className:"flex flex-wrap justify-center md:justify-start gap-3",children:[e.jsx("a",{href:"#book",className:"btn-gold px-6 py-3 text-sm",children:"Book a call"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline px-6 py-3 text-sm",children:"admin@qector.store"}),e.jsx("a",{href:o,target:"_blank",rel:"noopener noreferrer",className:"btn-outline px-6 py-3 text-sm",children:"LinkedIn"})]})]})]})})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-14",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-6",children:"What I work on"}),e.jsx("div",{className:"grid md:grid-cols-3 gap-5",children:v.map(t=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-lg font-bold mb-2",children:t.title}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t.body})]},t.title))})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"Track record"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Public releases, newest first. Each links to its release page."}),e.jsx("ol",{className:"relative border-l border-gridline ml-2 space-y-6",children:N.map(t=>e.jsxs("li",{className:"pl-6 relative",children:[e.jsx("span",{className:"absolute -left-[5px] top-1.5 w-2.5 h-2.5 rounded-full bg-cyan-300","aria-hidden":"true"}),e.jsx("time",{dateTime:t.date,className:"text-xs font-mono text-muted-foreground",children:y(t.date)}),e.jsx("h3",{className:"font-semibold text-primary",children:e.jsx("a",{href:t.href,target:"_blank",rel:"noopener noreferrer",className:"hover:text-cyan-300",children:t.title})}),e.jsx("p",{className:"text-secondary text-sm",children:t.detail})]},t.title))})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"Publications and records"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Manuals and verification material are archived with DOIs on Zenodo and linked to my"," ",e.jsx("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"ORCID record"}),"."]}),e.jsx("div",{className:"grid md:grid-cols-3 gap-4",children:P.map(t=>e.jsxs("a",{href:`https://doi.org/${t.doi}`,target:"_blank",rel:"noopener noreferrer",className:"card-surface block hover:border-cyan-300/40",children:[e.jsx("span",{className:"block text-primary font-semibold text-sm mb-2",children:t.title}),e.jsxs("span",{className:"block font-mono text-xs text-cyan-300 break-all",children:["doi:",t.doi]})]},t.doi))})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-6",children:"Expertise"}),e.jsx("dl",{className:"card-surface divide-y divide-gridline/60 !py-2",children:k.map(t=>e.jsxs("div",{className:"grid md:grid-cols-[14rem_1fr] gap-1 md:gap-6 py-4",children:[e.jsx("dt",{className:"text-primary font-semibold text-sm",children:t.area}),e.jsx("dd",{className:"text-secondary text-sm",children:t.items})]},t.area))})]}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-5",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"iD01t Productions"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"I founded iD01t Productions in 2012 as an independent studio. It publishes technical books, desktop software and games, and electronic music. QECTOR is its quantum error correction line, built and supported by me directly, so you always deal with the person who wrote the code."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Verify my identity"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"Several people share my name. For invoices, citations or due diligence, these are the identifiers I control:"}),e.jsx("ul",{className:"grid sm:grid-cols-2 gap-2",children:C.map(([t,x,d])=>e.jsx("li",{children:e.jsxs("a",{href:d,...d?.startsWith("http")?{target:"_blank",rel:"noopener noreferrer"}:{},className:"block p-2.5 bg-void border border-gridline rounded-lg hover:border-cyan-300/40",children:[e.jsx("span",{className:"block text-[10px] uppercase tracking-wider text-muted-foreground",children:t}),e.jsx("span",{className:"block font-mono text-xs text-cyan-300 break-all",children:x})]})},t))})]})]}),e.jsxs("div",{id:"book",className:"card-surface scroll-mt-28",children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"Book a 30-minute call"}),e.jsxs("p",{className:"text-secondary text-sm mb-5",children:["Decoder evaluation, integration, licensing or research collaboration: you will speak with me directly. Prefer e-mail?"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]}),e.jsx(f,{url:g})]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[e.jsx(l,{to:"/decoder",className:"btn-cyan",children:"Explore the decoder"}),e.jsx(l,{to:"/pricing",className:"btn-outline",children:"Plans and licensing"})]})]})})]})}export{O as default}; diff --git a/assets/Founder-B-wRvSAc.js b/assets/Founder-B-wRvSAc.js deleted file mode 100644 index 2103f6da..00000000 --- a/assets/Founder-B-wRvSAc.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as l,J as d,d as c}from"./index-DlmjLVYe.js";import{C as m}from"./CalendlyWidget-BuhQfp2_.js";import{L as t}from"./vendor-PiU4YGcH.js";import{o as h}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const n="https://orcid.org/0009-0000-3465-3753",x=[{title:"Systems & Performance",items:["Rust","PyO3 bindings","C-adjacent FFI","CUDA / OpenCL batch kernels","Memory-layout and throughput tuning"]},{title:"Python Engineering",items:["Python 3.9-3.13","NumPy / SciPy","Binary wheel packaging (manylinux, macOS, Windows)","PyPI release engineering"]},{title:"Quantum Error Correction",items:["MWPM / Blossom matching","Union-Find decoding","Belief propagation + OSD (qLDPC)","Stim / Sinter / PyMatching integration","Benchmark design and reproducibility"]},{title:"Applications & Desktop",items:["CustomTkinter GUI","Self-contained runtime bundling","PyInstaller / Inno Setup / .deb packaging","Model Context Protocol (MCP) servers","Offline-first architecture"]},{title:"Web & Product",items:["React + TypeScript","Vite","Tailwind","SEO and structured data","Stripe commerce integration"]},{title:"Writing & Publishing",items:["Technical documentation","Long-form instructional writing","Audiobook production","Electronic music production","Independent distribution"]}];function v(){return e.jsxs(e.Fragment,{children:[e.jsx(l,{title:"Guillaume Lessard · Founder of QECTOR and iD01t Productions",description:"Guillaume Lessard, software engineer, author, and independent researcher in Longueuil, Québec. Founder of iD01t Productions and creator of QECTOR Decoder v3. ORCID 0009-0000-3465-3753."}),e.jsx(d,{data:{"@context":"https://schema.org","@type":"Person","@id":"https://qector.store/guillaume-lessard#person",name:"Guillaume Lessard",givenName:"Guillaume",familyName:"Lessard",identifier:"0009-0000-3465-3753",jobTitle:"Founder, Software Engineer and Independent Researcher",description:"Software engineer, author and independent researcher. Founder of iD01t Productions and author of the QECTOR Decoder v3 quantum error correction library.",image:"https://qector.store/assets/g.png",url:"https://qector.store/guillaume-lessard",email:"admin@qector.store",address:{"@type":"PostalAddress",streetAddress:"2004 De Lorimier",addressLocality:"Longueuil",addressRegion:"QC",postalCode:"J4K 3H7",addressCountry:"CA"},worksFor:{"@type":"Organization",name:"iD01t Productions",foundingDate:"2023"},knowsAbout:["Quantum error correction","Minimum-weight perfect matching decoders","Belief propagation and OSD decoding","Rust","Python","GPU batch computing","Technical writing"],sameAs:[n,"https://github.com/GuillaumeLessard","https://github.com/qectorlab","https://pypi.org/project/qector-decoder-v3/","https://id01t.itch.io/","https://www.linkedin.com/in/qector/"]}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsx("div",{className:"relative z-10 section-padding",children:e.jsxs("div",{className:"max-w-4xl mx-auto flex flex-col md:flex-row items-center md:items-start gap-8",children:[e.jsx("img",{src:"/assets/g.png",alt:"Portrait of Guillaume Lessard, founder of QECTOR and iD01t Productions",width:160,height:160,loading:"lazy",className:"w-40 h-40 rounded-2xl object-cover border border-cyan-300/30 shadow-lg shrink-0"}),e.jsxs("div",{className:"text-center md:text-left",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-semibold text-cyan-300 uppercase tracking-wider mb-4",children:"Founder · Developer · Author · Independent Researcher"}),e.jsx("h1",{className:"text-4xl md:text-5xl font-extrabold tracking-tight leading-[1.1] mb-4",children:"Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed mb-5",children:"I am Guillaume Lessard, the founder of iD01t Productions and the creator of QECTOR. I design Rust/Python quantum error-correction systems, local MCP tooling, and release workflows where correctness claims are tied to declared workloads, reproducible artifacts, and public records. I build and support the platform independently from Longueuil, Québec."}),e.jsxs("div",{className:"flex flex-wrap justify-center md:justify-start gap-2 text-xs",children:[e.jsx("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"ORCID 0009-0000-3465-3753"}),e.jsx("a",{href:"https://github.com/qectorlab",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"GitHub"}),e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"PyPI"}),e.jsx("span",{className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary",children:"iD01t Productions"})]})]})]})})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Making sure you have the right Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"It is a common Québécois name, and several accomplished professionals share it, including a compiler engineer who works on Swift and a real estate executive. None of them are me, and I claim none of their work. If you are evaluating QECTOR, verifying an invoice, or checking a citation, these are the primary identifiers I control:"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-sm",children:[["ORCID","0009-0000-3465-3753",n],["GitHub","github.com/qectorlab","https://github.com/qectorlab"],["PyPI","qector-decoder-v3","https://pypi.org/project/qector-decoder-v3/"],["Studio","iD01t Productions, Longueuil QC"],["itch.io","id01t.itch.io","https://id01t.itch.io/"],["Email","admin@qector.store","mailto:admin@qector.store"]].map(([r,s,a])=>{const i=e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"text-[11px] text-muted-foreground uppercase tracking-wider mb-0.5",children:r}),e.jsx("div",{className:"text-cyan-300 font-mono text-xs break-all",children:s})]}),o="p-3 bg-void border border-gridline rounded-xl";return a?e.jsx("a",{href:a,target:a.startsWith("mailto")?void 0:"_blank",rel:"noopener noreferrer",className:`${o} hover:border-cyan-300/40 transition-colors`,children:i},r):e.jsx("span",{className:o,children:i},r)})})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Professional Profile"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["My work combines more than two decades of software engineering with focused quantum error-correction research. QECTOR Decoder v3 is published as the stable ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3 1.0.x"}),"Rust/PyO3 package; its companion Claude Plugin is released at ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"v1.0.6"}),". I publish the user manual, normative reference manual, and certification/proof material so identity, software version, and evidence can be checked independently."]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21611214",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["v1.0.0 user manual",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.21611214"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21941046",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["Normative reference manual",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.21941046"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.22046403",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["Verification and proof bundle",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.22046403"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Background"}),e.jsxs("div",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsx("p",{children:"My engineering philosophy is rooted in practical execution. Over the course of my career, I learned to build robust systems because I wanted to make things that worked in the real world. That has been the method ever since: pick the problem, learn what the problem requires, ship the result, publish the evidence."}),e.jsxs("p",{children:["For most of the last twenty years that meant building high-performance applications and tools. I founded"," ",e.jsx("span",{className:"text-secondary",children:"iD01t Productions"})," ","in 2023. QECTOR serves as its dedicated QEC software division, delivering robust decoder pipelines for research and production environments."]}),e.jsx("p",{children:"Quantum error correction is where that method currently points. QECTOR Decoder v3 is a Rust core behind a Python API implementing 17+ decoder configurations, with v1.0.0 as the first stable release (2026-08-06). The public contract separates mathematical correctness from machine-specific performance: decodes can be checked against the declared syndrome relation, while local benchmark results carry their workload, environment, raw artifact, and hash. The qector Claude Plugin v1.0.6 extends the same evidence-first approach into local Claude Code and Claude Desktop workflows."}),e.jsx("p",{className:"text-primary italic border-l-2 border-cyan-300/40 pl-4",children:"We ship. Even tired. Even messy. Still shipping."})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-5",children:"What I've shipped"}),e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"17+",label:"Decoder Configurations"},{value:"10+",label:"Supported Topologies"},{value:"20+",label:"Years Writing Software"},{value:"v1.0.6",label:"Claude Plugin Release"}].map(r=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-2xl mb-1",children:r.value}),e.jsx("div",{className:"text-secondary text-xs",children:r.label})]},r.label))}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mt-4",children:[e.jsxs("div",{className:"p-5 bg-surface border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-2 text-sm",children:"Quantum error correction"}),e.jsxs("ul",{className:"text-secondary text-xs space-y-1.5",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/decoder",className:"text-cyan-300 hover:underline font-semibold",children:"QECTOR Decoder v3"}),": Rust-core Python library, 17+ decoder configurations"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/workbench",className:"text-cyan-300 hover:underline font-semibold",children:"QECTOR Workbench"}),": free desktop GUI and comprehensive MCP server"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/evidence",className:"text-cyan-300 hover:underline font-semibold",children:"Evidence & Provenance"}),": validation reports and SHA-256 sealed manifests on GitHub"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Mastering QEC and the QEC Academy instructional series"})]})]})]}),e.jsxs("div",{className:"p-5 bg-surface border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-2 text-sm",children:"Research & Engineering"}),e.jsxs("ul",{className:"text-secondary text-xs space-y-1.5",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Work signed and traceable through ORCID and Zenodo"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Custom decoder topologies for research workflows"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"High-performance batch simulation pipelines"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Reproducible artifact workflows"})]})]})]})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-5",children:"Skills"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:x.map(r=>e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-3",children:r.title}),e.jsx("ul",{className:"space-y-1.5",children:r.items.map(s=>e.jsxs("li",{className:"text-secondary text-xs flex items-start gap-2",children:[e.jsx(h,{size:14,className:"text-cyan-300 mt-0.5 shrink-0","aria-hidden":"true"}),e.jsx("span",{children:s})]},s))})]},r.title))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"Book a 30-minute call"}),e.jsxs("p",{className:"text-secondary text-sm mb-5",children:["For a decoder audit, licensing questions, or an integration walkthrough, you will speak directly with me. Prefer email? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]}),e.jsx(m,{url:c})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(t,{to:"/pricing",className:"btn-cyan",children:"View Pricing & Licensing"})})]})})]})}export{v as default}; diff --git a/assets/Founder-BJJh0MV8.js b/assets/Founder-BJJh0MV8.js deleted file mode 100644 index 153819a7..00000000 --- a/assets/Founder-BJJh0MV8.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as l,J as d,d as c}from"./index-BN-vOeL2.js";import{C as m}from"./CalendlyWidget-BuhQfp2_.js";import{L as t}from"./vendor-PiU4YGcH.js";import{o as h}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const n="https://orcid.org/0009-0000-3465-3753",x=[{title:"Systems & Performance",items:["Rust","PyO3 bindings","C-adjacent FFI","CUDA / OpenCL batch kernels","Memory-layout and throughput tuning"]},{title:"Python Engineering",items:["Python 3.9-3.13","NumPy / SciPy","Binary wheel packaging (manylinux, macOS, Windows)","PyPI release engineering"]},{title:"Quantum Error Correction",items:["MWPM / Blossom matching","Union-Find decoding","Belief propagation + OSD (qLDPC)","Stim / Sinter / PyMatching integration","Benchmark design and reproducibility"]},{title:"Applications & Desktop",items:["CustomTkinter GUI","Self-contained runtime bundling","PyInstaller / Inno Setup / .deb packaging","Model Context Protocol (MCP) servers","Offline-first architecture"]},{title:"Web & Product",items:["React + TypeScript","Vite","Tailwind","SEO and structured data","Stripe commerce integration"]},{title:"Writing & Publishing",items:["Technical documentation","Long-form instructional writing","Audiobook production","Electronic music production","Independent distribution"]}];function v(){return e.jsxs(e.Fragment,{children:[e.jsx(l,{title:"Guillaume Lessard · Founder of QECTOR and iD01t Productions",description:"Guillaume Lessard, software engineer, author, and independent researcher in Longueuil, Québec. Founder of iD01t Productions and creator of QECTOR Decoder v3. ORCID 0009-0000-3465-3753."}),e.jsx(d,{data:{"@context":"https://schema.org","@type":"Person","@id":"https://qector.store/guillaume-lessard#person",name:"Guillaume Lessard",givenName:"Guillaume",familyName:"Lessard",identifier:"0009-0000-3465-3753",jobTitle:"Founder, Software Engineer and Independent Researcher",description:"Software engineer, author and independent researcher. Founder of iD01t Productions and author of the QECTOR Decoder v3 quantum error correction library.",image:"https://qector.store/assets/g.png",url:"https://qector.store/guillaume-lessard",email:"admin@qector.store",address:{"@type":"PostalAddress",streetAddress:"2004 De Lorimier",addressLocality:"Longueuil",addressRegion:"QC",postalCode:"J4K 3H7",addressCountry:"CA"},worksFor:{"@type":"Organization",name:"iD01t Productions",foundingDate:"2023"},knowsAbout:["Quantum error correction","Minimum-weight perfect matching decoders","Belief propagation and OSD decoding","Rust","Python","GPU batch computing","Technical writing"],sameAs:[n,"https://github.com/GuillaumeLessard","https://github.com/qectorlab","https://pypi.org/project/qector-decoder-v3/","https://id01t.itch.io/","https://www.linkedin.com/in/qector/"]}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsx("div",{className:"relative z-10 section-padding",children:e.jsxs("div",{className:"max-w-4xl mx-auto flex flex-col md:flex-row items-center md:items-start gap-8",children:[e.jsx("img",{src:"/assets/g.png",alt:"Portrait of Guillaume Lessard, founder of QECTOR and iD01t Productions",width:160,height:160,loading:"lazy",className:"w-40 h-40 rounded-2xl object-cover border border-cyan-300/30 shadow-lg shrink-0"}),e.jsxs("div",{className:"text-center md:text-left",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-semibold text-cyan-300 uppercase tracking-wider mb-4",children:"Founder · Developer · Author · Independent Researcher"}),e.jsx("h1",{className:"text-4xl md:text-5xl font-extrabold tracking-tight leading-[1.1] mb-4",children:"Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed mb-5",children:"I am Guillaume Lessard, the founder of iD01t Productions and the creator of QECTOR. I design Rust/Python quantum error-correction systems, local MCP tooling, and release workflows where correctness claims are tied to declared workloads, reproducible artifacts, and public records. I build and support the platform independently from Longueuil, Québec."}),e.jsxs("div",{className:"flex flex-wrap justify-center md:justify-start gap-2 text-xs",children:[e.jsx("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"ORCID 0009-0000-3465-3753"}),e.jsx("a",{href:"https://github.com/qectorlab",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"GitHub"}),e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"PyPI"}),e.jsx("span",{className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary",children:"iD01t Productions"})]})]})]})})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Making sure you have the right Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"It is a common Québécois name, and several accomplished professionals share it, including a compiler engineer who works on Swift and a real estate executive. None of them are me, and I claim none of their work. If you are evaluating QECTOR, verifying an invoice, or checking a citation, these are the primary identifiers I control:"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-sm",children:[["ORCID","0009-0000-3465-3753",n],["GitHub","github.com/qectorlab","https://github.com/qectorlab"],["PyPI","qector-decoder-v3","https://pypi.org/project/qector-decoder-v3/"],["Studio","iD01t Productions, Longueuil QC"],["itch.io","id01t.itch.io","https://id01t.itch.io/"],["Email","admin@qector.store","mailto:admin@qector.store"]].map(([r,s,a])=>{const i=e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"text-[11px] text-muted-foreground uppercase tracking-wider mb-0.5",children:r}),e.jsx("div",{className:"text-cyan-300 font-mono text-xs break-all",children:s})]}),o="p-3 bg-void border border-gridline rounded-xl";return a?e.jsx("a",{href:a,target:a.startsWith("mailto")?void 0:"_blank",rel:"noopener noreferrer",className:`${o} hover:border-cyan-300/40 transition-colors`,children:i},r):e.jsx("span",{className:o,children:i},r)})})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Professional Profile"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["My work combines more than two decades of software engineering with focused quantum error-correction research. QECTOR Decoder v3 is published as the stable ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3 1.0.x"}),"Rust/PyO3 package; its companion Claude Plugin is released at ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"v1.0.6"}),". I publish the user manual, normative reference manual, and certification/proof material so identity, software version, and evidence can be checked independently."]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21611214",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["v1.0.0 user manual",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.21611214"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21941046",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["Normative reference manual",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.21941046"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.22046403",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["Verification and proof bundle",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.22046403"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Background"}),e.jsxs("div",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsx("p",{children:"My engineering philosophy is rooted in practical execution. Over the course of my career, I learned to build robust systems because I wanted to make things that worked in the real world. That has been the method ever since: pick the problem, learn what the problem requires, ship the result, publish the evidence."}),e.jsxs("p",{children:["For most of the last twenty years that meant building high-performance applications and tools. I founded"," ",e.jsx("span",{className:"text-secondary",children:"iD01t Productions"})," ","in 2023. QECTOR serves as its dedicated QEC software division, delivering robust decoder pipelines for research and production environments."]}),e.jsx("p",{children:"Quantum error correction is where that method currently points. QECTOR Decoder v3 is a Rust core behind a Python API implementing 17+ decoder configurations, with v1.0.0 as the first stable release (2026-08-06). The public contract separates mathematical correctness from machine-specific performance: decodes can be checked against the declared syndrome relation, while local benchmark results carry their workload, environment, raw artifact, and hash. The qector Claude Plugin v1.0.6 extends the same evidence-first approach into local Claude Code and Claude Desktop workflows."}),e.jsx("p",{className:"text-primary italic border-l-2 border-cyan-300/40 pl-4",children:"We ship. Even tired. Even messy. Still shipping."})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-5",children:"What I've shipped"}),e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"17+",label:"Decoder Configurations"},{value:"10+",label:"Supported Topologies"},{value:"20+",label:"Years Writing Software"},{value:"v1.0.6",label:"Claude Plugin Release"}].map(r=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-2xl mb-1",children:r.value}),e.jsx("div",{className:"text-secondary text-xs",children:r.label})]},r.label))}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mt-4",children:[e.jsxs("div",{className:"p-5 bg-surface border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-2 text-sm",children:"Quantum error correction"}),e.jsxs("ul",{className:"text-secondary text-xs space-y-1.5",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/decoder",className:"text-cyan-300 hover:underline font-semibold",children:"QECTOR Decoder v3"}),": Rust-core Python library, 17+ decoder configurations"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/workbench",className:"text-cyan-300 hover:underline font-semibold",children:"QECTOR Workbench"}),": free desktop GUI and comprehensive MCP server"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/evidence",className:"text-cyan-300 hover:underline font-semibold",children:"Evidence & Provenance"}),": validation reports and SHA-256 sealed manifests on GitHub"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Mastering QEC and the QEC Academy instructional series"})]})]})]}),e.jsxs("div",{className:"p-5 bg-surface border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-2 text-sm",children:"Research & Engineering"}),e.jsxs("ul",{className:"text-secondary text-xs space-y-1.5",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Work signed and traceable through ORCID and Zenodo"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Custom decoder topologies for research workflows"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"High-performance batch simulation pipelines"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Reproducible artifact workflows"})]})]})]})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-5",children:"Skills"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:x.map(r=>e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-3",children:r.title}),e.jsx("ul",{className:"space-y-1.5",children:r.items.map(s=>e.jsxs("li",{className:"text-secondary text-xs flex items-start gap-2",children:[e.jsx(h,{size:14,className:"text-cyan-300 mt-0.5 shrink-0","aria-hidden":"true"}),e.jsx("span",{children:s})]},s))})]},r.title))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"Book a 30-minute call"}),e.jsxs("p",{className:"text-secondary text-sm mb-5",children:["For a decoder audit, licensing questions, or an integration walkthrough, you will speak directly with me. Prefer email? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]}),e.jsx(m,{url:c})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(t,{to:"/pricing",className:"btn-cyan",children:"View Pricing & Licensing"})})]})})]})}export{v as default}; diff --git a/assets/Founder-BJk4p_3B.js b/assets/Founder-BJk4p_3B.js deleted file mode 100644 index 14145270..00000000 --- a/assets/Founder-BJk4p_3B.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as l,J as d,b as c}from"./index-_BpMZhV3.js";import{C as m}from"./CalendlyWidget-BuhQfp2_.js";import{L as t}from"./vendor-PiU4YGcH.js";import{o as h}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const n="https://orcid.org/0009-0000-3465-3753",x=[{title:"Systems & Performance",items:["Rust","PyO3 bindings","C-adjacent FFI","CUDA / OpenCL batch kernels","Memory-layout and throughput tuning"]},{title:"Python Engineering",items:["Python 3.9-3.13","NumPy / SciPy","Binary wheel packaging (manylinux, macOS, Windows)","PyPI release engineering"]},{title:"Quantum Error Correction",items:["MWPM / Blossom matching","Union-Find decoding","Belief propagation + OSD (qLDPC)","Stim / Sinter / PyMatching integration","Benchmark design and reproducibility"]},{title:"Applications & Desktop",items:["CustomTkinter GUI","Self-contained runtime bundling","PyInstaller / Inno Setup / .deb packaging","Model Context Protocol (MCP) servers","Offline-first architecture"]},{title:"Web & Product",items:["React + TypeScript","Vite","Tailwind","SEO and structured data","Stripe commerce integration"]},{title:"Writing & Publishing",items:["Technical documentation","Long-form instructional writing","Audiobook production","Electronic music production","Independent distribution"]}];function v(){return e.jsxs(e.Fragment,{children:[e.jsx(l,{title:"Guillaume Lessard · Founder of QECTOR and iD01t Productions",description:"Guillaume Lessard, software engineer, author, and independent researcher in Longueuil, Québec. Founder of iD01t Productions and creator of QECTOR Decoder v3. ORCID 0009-0000-3465-3753."}),e.jsx(d,{data:{"@context":"https://schema.org","@type":"Person","@id":"https://qector.store/guillaume-lessard#person",name:"Guillaume Lessard",givenName:"Guillaume",familyName:"Lessard",identifier:"0009-0000-3465-3753",jobTitle:"Founder, Software Engineer and Independent Researcher",description:"Software engineer, author and independent researcher. Founder of iD01t Productions and author of the QECTOR Decoder v3 quantum error correction library.",image:"https://qector.store/assets/g.png",url:"https://qector.store/guillaume-lessard",email:"admin@qector.store",address:{"@type":"PostalAddress",streetAddress:"2004 De Lorimier",addressLocality:"Longueuil",addressRegion:"QC",postalCode:"J4K 3H7",addressCountry:"CA"},worksFor:{"@type":"Organization",name:"iD01t Productions",foundingDate:"2023"},knowsAbout:["Quantum error correction","Minimum-weight perfect matching decoders","Belief propagation and OSD decoding","Rust","Python","GPU batch computing","Technical writing"],sameAs:[n,"https://github.com/GuillaumeLessard","https://github.com/qectorlab","https://pypi.org/project/qector-decoder-v3/","https://id01t.itch.io/","https://www.linkedin.com/in/qector/"]}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsx("div",{className:"relative z-10 section-padding",children:e.jsxs("div",{className:"max-w-4xl mx-auto flex flex-col md:flex-row items-center md:items-start gap-8",children:[e.jsx("img",{src:"/assets/g.png",alt:"Portrait of Guillaume Lessard, founder of QECTOR and iD01t Productions",width:160,height:160,loading:"lazy",className:"w-40 h-40 rounded-2xl object-cover border border-cyan-300/30 shadow-lg shrink-0"}),e.jsxs("div",{className:"text-center md:text-left",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-semibold text-cyan-300 uppercase tracking-wider mb-4",children:"Founder · Developer · Author · Independent Researcher"}),e.jsx("h1",{className:"text-4xl md:text-5xl font-extrabold tracking-tight leading-[1.1] mb-4",children:"Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed mb-5",children:"I am Guillaume Lessard, the founder of iD01t Productions and the creator of QECTOR. I design Rust/Python quantum error-correction systems, local MCP tooling, and release workflows where correctness claims are tied to declared workloads, reproducible artifacts, and public records. I build and support the platform independently from Longueuil, Québec."}),e.jsxs("div",{className:"flex flex-wrap justify-center md:justify-start gap-2 text-xs",children:[e.jsx("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"ORCID 0009-0000-3465-3753"}),e.jsx("a",{href:"https://github.com/qectorlab",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"GitHub"}),e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"PyPI"}),e.jsx("span",{className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary",children:"iD01t Productions"})]})]})]})})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Making sure you have the right Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"It is a common Québécois name, and several accomplished professionals share it, including a compiler engineer who works on Swift and a real estate executive. None of them are me, and I claim none of their work. If you are evaluating QECTOR, verifying an invoice, or checking a citation, these are the primary identifiers I control:"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-sm",children:[["ORCID","0009-0000-3465-3753",n],["GitHub","github.com/qectorlab","https://github.com/qectorlab"],["PyPI","qector-decoder-v3","https://pypi.org/project/qector-decoder-v3/"],["Studio","iD01t Productions, Longueuil QC"],["itch.io","id01t.itch.io","https://id01t.itch.io/"],["Email","admin@qector.store","mailto:admin@qector.store"]].map(([r,s,a])=>{const i=e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"text-[11px] text-muted-foreground uppercase tracking-wider mb-0.5",children:r}),e.jsx("div",{className:"text-cyan-300 font-mono text-xs break-all",children:s})]}),o="p-3 bg-void border border-gridline rounded-xl";return a?e.jsx("a",{href:a,target:a.startsWith("mailto")?void 0:"_blank",rel:"noopener noreferrer",className:`${o} hover:border-cyan-300/40 transition-colors`,children:i},r):e.jsx("span",{className:o,children:i},r)})})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Professional Profile"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["My work combines more than two decades of software engineering with focused quantum error-correction research. QECTOR Decoder v3 is published as the stable ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3==1.0.0"}),"Rust/PyO3 package; its companion Claude Plugin is released at ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"v1.0.6"}),". I publish the user manual, normative reference manual, and certification/proof material so identity, software version, and evidence can be checked independently."]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21611214",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["v1.0.0 user manual",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.21611214"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21941046",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["Normative reference manual",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.21941046"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.22046403",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["Verification and proof bundle",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.22046403"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Background"}),e.jsxs("div",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsx("p",{children:"My engineering philosophy is rooted in practical execution. Over the course of my career, I learned to build robust systems because I wanted to make things that worked in the real world. That has been the method ever since: pick the problem, learn what the problem requires, ship the result, publish the evidence."}),e.jsxs("p",{children:["For most of the last twenty years that meant building high-performance applications and tools. I founded"," ",e.jsx("span",{className:"text-secondary",children:"iD01t Productions"})," ","in 2023. QECTOR serves as its dedicated QEC software division, delivering robust decoder pipelines for research and production environments."]}),e.jsx("p",{children:"Quantum error correction is where that method currently points. QECTOR Decoder v3 is a Rust core behind a Python API implementing 17+ decoder configurations, with v1.0.0 as the first stable release (2026-08-06). The public contract separates mathematical correctness from machine-specific performance: decodes can be checked against the declared syndrome relation, while local benchmark results carry their workload, environment, raw artifact, and hash. The qector Claude Plugin v1.0.6 extends the same evidence-first approach into local Claude Code and Claude Desktop workflows."}),e.jsx("p",{className:"text-primary italic border-l-2 border-cyan-300/40 pl-4",children:"We ship. Even tired. Even messy. Still shipping."})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-5",children:"What I've shipped"}),e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"17+",label:"Decoder Configurations"},{value:"10+",label:"Supported Topologies"},{value:"20+",label:"Years Writing Software"},{value:"v1.0.6",label:"Claude Plugin Release"}].map(r=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-2xl mb-1",children:r.value}),e.jsx("div",{className:"text-secondary text-xs",children:r.label})]},r.label))}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mt-4",children:[e.jsxs("div",{className:"p-5 bg-surface border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-2 text-sm",children:"Quantum error correction"}),e.jsxs("ul",{className:"text-secondary text-xs space-y-1.5",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/decoder",className:"text-cyan-300 hover:underline font-semibold",children:"QECTOR Decoder v3"}),": Rust-core Python library, 17+ decoder configurations"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/workbench",className:"text-cyan-300 hover:underline font-semibold",children:"QECTOR Workbench"}),": free desktop GUI and comprehensive MCP server"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/evidence",className:"text-cyan-300 hover:underline font-semibold",children:"Evidence & Provenance"}),": validation reports and SHA-256 sealed manifests on GitHub"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Mastering QEC and the QEC Academy instructional series"})]})]})]}),e.jsxs("div",{className:"p-5 bg-surface border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-2 text-sm",children:"Research & Engineering"}),e.jsxs("ul",{className:"text-secondary text-xs space-y-1.5",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Work signed and traceable through ORCID and Zenodo"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Custom decoder topologies for research workflows"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"High-performance batch simulation pipelines"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Reproducible artifact workflows"})]})]})]})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-5",children:"Skills"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:x.map(r=>e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-3",children:r.title}),e.jsx("ul",{className:"space-y-1.5",children:r.items.map(s=>e.jsxs("li",{className:"text-secondary text-xs flex items-start gap-2",children:[e.jsx(h,{size:14,className:"text-cyan-300 mt-0.5 shrink-0","aria-hidden":"true"}),e.jsx("span",{children:s})]},s))})]},r.title))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"Book a 30-minute call"}),e.jsxs("p",{className:"text-secondary text-sm mb-5",children:["For a decoder audit, licensing questions, or an integration walkthrough, you will speak directly with me. Prefer email? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]}),e.jsx(m,{url:c})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(t,{to:"/pricing",className:"btn-cyan",children:"View Pricing & Licensing"})})]})})]})}export{v as default}; diff --git a/assets/Founder-BS0MLavi.js b/assets/Founder-BS0MLavi.js deleted file mode 100644 index 367e3535..00000000 --- a/assets/Founder-BS0MLavi.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as l,J as d,d as c}from"./index-BUYYSLdX.js";import{C as m}from"./CalendlyWidget-BuhQfp2_.js";import{L as t}from"./vendor-PiU4YGcH.js";import{o as h}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const n="https://orcid.org/0009-0000-3465-3753",x=[{title:"Systems & Performance",items:["Rust","PyO3 bindings","C-adjacent FFI","CUDA / OpenCL batch kernels","Memory-layout and throughput tuning"]},{title:"Python Engineering",items:["Python 3.9-3.14","NumPy / SciPy","Binary wheel packaging (manylinux, macOS, Windows)","PyPI release engineering"]},{title:"Quantum Error Correction",items:["MWPM / Blossom matching","Union-Find decoding","Belief propagation + OSD (qLDPC)","Stim / Sinter / PyMatching integration","Benchmark design and reproducibility"]},{title:"Applications & Desktop",items:["CustomTkinter GUI","Self-contained runtime bundling","PyInstaller / Inno Setup / .deb packaging","Model Context Protocol (MCP) servers","Offline-first architecture"]},{title:"Web & Product",items:["React + TypeScript","Vite","Tailwind","SEO and structured data","Stripe commerce integration"]},{title:"Writing & Publishing",items:["Technical documentation","Long-form instructional writing","Audiobook production","Electronic music production","Independent distribution"]}];function v(){return e.jsxs(e.Fragment,{children:[e.jsx(l,{title:"Guillaume Lessard · Founder of QECTOR and iD01t Productions",description:"Guillaume Lessard, software engineer, author, and independent researcher in Longueuil, Québec. Founder of iD01t Productions and creator of QECTOR Decoder v3. ORCID 0009-0000-3465-3753."}),e.jsx(d,{data:{"@context":"https://schema.org","@type":"Person","@id":"https://qector.store/guillaume-lessard#person",name:"Guillaume Lessard",givenName:"Guillaume",familyName:"Lessard",identifier:"0009-0000-3465-3753",jobTitle:"Founder, Software Engineer and Independent Researcher",description:"Software engineer, author and independent researcher. Founder of iD01t Productions and author of the QECTOR Decoder v3 quantum error correction library.",image:"https://qector.store/assets/g.png",url:"https://qector.store/guillaume-lessard",email:"admin@qector.store",address:{"@type":"PostalAddress",streetAddress:"2004 De Lorimier",addressLocality:"Longueuil",addressRegion:"QC",postalCode:"J4K 3H7",addressCountry:"CA"},worksFor:{"@type":"Organization",name:"iD01t Productions",foundingDate:"2023"},knowsAbout:["Quantum error correction","Minimum-weight perfect matching decoders","Belief propagation and OSD decoding","Rust","Python","GPU batch computing","Technical writing"],sameAs:[n,"https://github.com/GuillaumeLessard","https://github.com/qectorlab","https://pypi.org/project/qector-decoder-v3/","https://id01t.itch.io/","https://www.linkedin.com/in/qector/"]}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsx("div",{className:"relative z-10 section-padding",children:e.jsxs("div",{className:"max-w-4xl mx-auto flex flex-col md:flex-row items-center md:items-start gap-8",children:[e.jsx("img",{src:"/assets/g.png",alt:"Portrait of Guillaume Lessard, founder of QECTOR and iD01t Productions",width:160,height:160,loading:"lazy",className:"w-40 h-40 rounded-2xl object-cover border border-cyan-300/30 shadow-lg shrink-0"}),e.jsxs("div",{className:"text-center md:text-left",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-semibold text-cyan-300 uppercase tracking-wider mb-4",children:"Founder · Developer · Author · Independent Researcher"}),e.jsx("h1",{className:"text-4xl md:text-5xl font-extrabold tracking-tight leading-[1.1] mb-4",children:"Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed mb-5",children:"I am Guillaume Lessard, the founder of iD01t Productions and the creator of QECTOR. I design Rust/Python quantum error-correction systems, local MCP tooling, and release workflows where correctness claims are tied to declared workloads, reproducible artifacts, and public records. I build and support the platform independently from Longueuil, Québec."}),e.jsxs("div",{className:"flex flex-wrap justify-center md:justify-start gap-2 text-xs",children:[e.jsx("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"ORCID 0009-0000-3465-3753"}),e.jsx("a",{href:"https://github.com/qectorlab",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"GitHub"}),e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"PyPI"}),e.jsx("span",{className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary",children:"iD01t Productions"})]})]})]})})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Making sure you have the right Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"It is a common Québécois name, and several accomplished professionals share it, including a compiler engineer who works on Swift and a real estate executive. None of them are me, and I claim none of their work. If you are evaluating QECTOR, verifying an invoice, or checking a citation, these are the primary identifiers I control:"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-sm",children:[["ORCID","0009-0000-3465-3753",n],["GitHub","github.com/qectorlab","https://github.com/qectorlab"],["PyPI","qector-decoder-v3","https://pypi.org/project/qector-decoder-v3/"],["Studio","iD01t Productions, Longueuil QC"],["itch.io","id01t.itch.io","https://id01t.itch.io/"],["Email","admin@qector.store","mailto:admin@qector.store"]].map(([r,s,a])=>{const i=e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"text-[11px] text-muted-foreground uppercase tracking-wider mb-0.5",children:r}),e.jsx("div",{className:"text-cyan-300 font-mono text-xs break-all",children:s})]}),o="p-3 bg-void border border-gridline rounded-xl";return a?e.jsx("a",{href:a,target:a.startsWith("mailto")?void 0:"_blank",rel:"noopener noreferrer",className:`${o} hover:border-cyan-300/40 transition-colors`,children:i},r):e.jsx("span",{className:o,children:i},r)})})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Professional Profile"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["My work combines more than two decades of software engineering with focused quantum error-correction research. QECTOR Decoder v3 is published as the stable ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3 1.0.x"}),"Rust/PyO3 package; its companion Claude Plugin is released at ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"v2.0.1"}),". I publish the user manual, normative reference manual, and certification/proof material so identity, software version, and evidence can be checked independently."]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21611214",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["v1.0.0 user manual",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.21611214"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21941046",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["Normative reference manual",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.21941046"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.22046403",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["Verification and proof bundle",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.22046403"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Background"}),e.jsxs("div",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsx("p",{children:"My engineering philosophy is rooted in practical execution. Over the course of my career, I learned to build robust systems because I wanted to make things that worked in the real world. That has been the method ever since: pick the problem, learn what the problem requires, ship the result, publish the evidence."}),e.jsxs("p",{children:["For most of the last twenty years that meant building high-performance applications and tools. I founded"," ",e.jsx("span",{className:"text-secondary",children:"iD01t Productions"})," ","in 2023. QECTOR serves as its dedicated QEC software division, delivering robust decoder pipelines for research and production environments."]}),e.jsx("p",{children:"Quantum error correction is where that method currently points. QECTOR Decoder v3 is a Rust core behind a Python API implementing 17+ decoder configurations, with v1.0.0 (August 2026) as the first stable release and v1.0.1 as the current one (2026-08-06). The public contract separates mathematical correctness from machine-specific performance: decodes can be checked against the declared syndrome relation, while local benchmark results carry their workload, environment, raw artifact, and hash. The qector Claude Plugin v2.0.1 extends the same evidence-first approach into local Claude Code and Claude Desktop workflows."}),e.jsx("p",{className:"text-primary italic border-l-2 border-cyan-300/40 pl-4",children:"We ship. Even tired. Even messy. Still shipping."})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-5",children:"What I've shipped"}),e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"17+",label:"Decoder Configurations"},{value:"10+",label:"Supported Topologies"},{value:"20+",label:"Years Writing Software"},{value:"v2.0.1",label:"Claude Plugin Release"}].map(r=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-2xl mb-1",children:r.value}),e.jsx("div",{className:"text-secondary text-xs",children:r.label})]},r.label))}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mt-4",children:[e.jsxs("div",{className:"p-5 bg-surface border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-2 text-sm",children:"Quantum error correction"}),e.jsxs("ul",{className:"text-secondary text-xs space-y-1.5",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/decoder",className:"text-cyan-300 hover:underline font-semibold",children:"QECTOR Decoder v3"}),": Rust-core Python library, 17+ decoder configurations"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/workbench",className:"text-cyan-300 hover:underline font-semibold",children:"QECTOR Workbench"}),": free desktop GUI and comprehensive MCP server"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/evidence",className:"text-cyan-300 hover:underline font-semibold",children:"Evidence & Provenance"}),": validation reports and SHA-256 sealed manifests on GitHub"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Mastering QEC and the QEC Academy instructional series"})]})]})]}),e.jsxs("div",{className:"p-5 bg-surface border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-2 text-sm",children:"Research & Engineering"}),e.jsxs("ul",{className:"text-secondary text-xs space-y-1.5",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Work signed and traceable through ORCID and Zenodo"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Custom decoder topologies for research workflows"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"High-performance batch simulation pipelines"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Reproducible artifact workflows"})]})]})]})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-5",children:"Skills"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:x.map(r=>e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-3",children:r.title}),e.jsx("ul",{className:"space-y-1.5",children:r.items.map(s=>e.jsxs("li",{className:"text-secondary text-xs flex items-start gap-2",children:[e.jsx(h,{size:14,className:"text-cyan-300 mt-0.5 shrink-0","aria-hidden":"true"}),e.jsx("span",{children:s})]},s))})]},r.title))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"Book a 30-minute call"}),e.jsxs("p",{className:"text-secondary text-sm mb-5",children:["For a decoder audit, licensing questions, or an integration walkthrough, you will speak directly with me. Prefer email? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]}),e.jsx(m,{url:c})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(t,{to:"/pricing",className:"btn-cyan",children:"View Pricing & Licensing"})})]})})]})}export{v as default}; diff --git a/assets/Founder-C0qDlV-3.js b/assets/Founder-C0qDlV-3.js deleted file mode 100644 index a799efd2..00000000 --- a/assets/Founder-C0qDlV-3.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as l,J as d,b as c}from"./index-iVST85F-.js";import{C as m}from"./CalendlyWidget-BuhQfp2_.js";import{L as t}from"./vendor-PiU4YGcH.js";import{o as h}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const n="https://orcid.org/0009-0000-3465-3753",x=[{title:"Systems & Performance",items:["Rust","PyO3 bindings","C-adjacent FFI","CUDA / OpenCL batch kernels","Memory-layout and throughput tuning"]},{title:"Python Engineering",items:["Python 3.9-3.13","NumPy / SciPy","Binary wheel packaging (manylinux, macOS, Windows)","PyPI release engineering"]},{title:"Quantum Error Correction",items:["MWPM / Blossom matching","Union-Find decoding","Belief propagation + OSD (qLDPC)","Stim / Sinter / PyMatching integration","Benchmark design and reproducibility"]},{title:"Applications & Desktop",items:["CustomTkinter GUI","Self-contained runtime bundling","PyInstaller / Inno Setup / .deb packaging","Model Context Protocol (MCP) servers","Offline-first architecture"]},{title:"Web & Product",items:["React + TypeScript","Vite","Tailwind","SEO and structured data","Stripe commerce integration"]},{title:"Writing & Publishing",items:["Technical documentation","Long-form instructional writing","Audiobook production","Electronic music production","Independent distribution"]}];function v(){return e.jsxs(e.Fragment,{children:[e.jsx(l,{title:"Guillaume Lessard · Founder of QECTOR and iD01t Productions",description:"Guillaume Lessard, software engineer, author, and independent researcher in Longueuil, Québec. Founder of iD01t Productions and creator of QECTOR Decoder v3. ORCID 0009-0000-3465-3753."}),e.jsx(d,{data:{"@context":"https://schema.org","@type":"Person","@id":"https://qector.store/guillaume-lessard#person",name:"Guillaume Lessard",givenName:"Guillaume",familyName:"Lessard",identifier:"0009-0000-3465-3753",jobTitle:"Founder, Software Engineer and Independent Researcher",description:"Software engineer, author and independent researcher. Founder of iD01t Productions and author of the QECTOR Decoder v3 quantum error correction library.",image:"https://qector.store/assets/g.png",url:"https://qector.store/guillaume-lessard",email:"admin@qector.store",address:{"@type":"PostalAddress",streetAddress:"2004 De Lorimier",addressLocality:"Longueuil",addressRegion:"QC",postalCode:"J4K 3H7",addressCountry:"CA"},worksFor:{"@type":"Organization",name:"iD01t Productions",foundingDate:"2023"},knowsAbout:["Quantum error correction","Minimum-weight perfect matching decoders","Belief propagation and OSD decoding","Rust","Python","GPU batch computing","Technical writing"],sameAs:[n,"https://github.com/GuillaumeLessard","https://github.com/qectorlab","https://pypi.org/project/qector-decoder-v3/","https://id01t.itch.io/","https://www.linkedin.com/in/qector/"]}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsx("div",{className:"relative z-10 section-padding",children:e.jsxs("div",{className:"max-w-4xl mx-auto flex flex-col md:flex-row items-center md:items-start gap-8",children:[e.jsx("img",{src:"/assets/g.png",alt:"Portrait of Guillaume Lessard, founder of QECTOR and iD01t Productions",width:160,height:160,loading:"lazy",className:"w-40 h-40 rounded-2xl object-cover border border-cyan-300/30 shadow-lg shrink-0"}),e.jsxs("div",{className:"text-center md:text-left",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-semibold text-cyan-300 uppercase tracking-wider mb-4",children:"Founder · Developer · Author · Independent Researcher"}),e.jsx("h1",{className:"text-4xl md:text-5xl font-extrabold tracking-tight leading-[1.1] mb-4",children:"Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed mb-5",children:"I am Guillaume Lessard, the founder of iD01t Productions and the creator of QECTOR. I design Rust/Python quantum error-correction systems, local MCP tooling, and release workflows where correctness claims are tied to declared workloads, reproducible artifacts, and public records. I build and support the platform independently from Longueuil, Québec."}),e.jsxs("div",{className:"flex flex-wrap justify-center md:justify-start gap-2 text-xs",children:[e.jsx("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"ORCID 0009-0000-3465-3753"}),e.jsx("a",{href:"https://github.com/qectorlab",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"GitHub"}),e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"PyPI"}),e.jsx("span",{className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary",children:"iD01t Productions"})]})]})]})})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Making sure you have the right Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"It is a common Québécois name, and several accomplished professionals share it, including a compiler engineer who works on Swift and a real estate executive. None of them are me, and I claim none of their work. If you are evaluating QECTOR, verifying an invoice, or checking a citation, these are the primary identifiers I control:"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-sm",children:[["ORCID","0009-0000-3465-3753",n],["GitHub","github.com/qectorlab","https://github.com/qectorlab"],["PyPI","qector-decoder-v3","https://pypi.org/project/qector-decoder-v3/"],["Studio","iD01t Productions, Longueuil QC"],["itch.io","id01t.itch.io","https://id01t.itch.io/"],["Email","admin@qector.store","mailto:admin@qector.store"]].map(([r,s,a])=>{const i=e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"text-[11px] text-muted-foreground uppercase tracking-wider mb-0.5",children:r}),e.jsx("div",{className:"text-cyan-300 font-mono text-xs break-all",children:s})]}),o="p-3 bg-void border border-gridline rounded-xl";return a?e.jsx("a",{href:a,target:a.startsWith("mailto")?void 0:"_blank",rel:"noopener noreferrer",className:`${o} hover:border-cyan-300/40 transition-colors`,children:i},r):e.jsx("span",{className:o,children:i},r)})})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Professional Profile"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["My work combines more than two decades of software engineering with focused quantum error-correction research. QECTOR Decoder v3 is published as the stable ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3==1.0.0"}),"Rust/PyO3 package; its companion Claude Plugin is released at ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"v1.0.6"}),". I publish the user manual, normative reference manual, and certification/proof material so identity, software version, and evidence can be checked independently."]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21611214",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["v1.0.0 user manual",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.21611214"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21941046",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["Normative reference manual",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.21941046"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.22046403",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["Verification and proof bundle",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.22046403"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Background"}),e.jsxs("div",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsx("p",{children:"My engineering philosophy is rooted in practical execution. Over the course of my career, I learned to build robust systems because I wanted to make things that worked in the real world. That has been the method ever since: pick the problem, learn what the problem requires, ship the result, publish the evidence."}),e.jsxs("p",{children:["For most of the last twenty years that meant building high-performance applications and tools. I founded"," ",e.jsx("span",{className:"text-secondary",children:"iD01t Productions"})," ","in 2023. QECTOR serves as its dedicated QEC software division, delivering robust decoder pipelines for research and production environments."]}),e.jsx("p",{children:"Quantum error correction is where that method currently points. QECTOR Decoder v3 is a Rust core behind a Python API implementing 17+ decoder configurations, with v1.0.0 as the first stable release (2026-08-06). The public contract separates mathematical correctness from machine-specific performance: decodes can be checked against the declared syndrome relation, while local benchmark results carry their workload, environment, raw artifact, and hash. The qector Claude Plugin v1.0.6 extends the same evidence-first approach into local Claude Code and Claude Desktop workflows."}),e.jsx("p",{className:"text-primary italic border-l-2 border-cyan-300/40 pl-4",children:"We ship. Even tired. Even messy. Still shipping."})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-5",children:"What I've shipped"}),e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"17+",label:"Decoder Configurations"},{value:"10+",label:"Supported Topologies"},{value:"20+",label:"Years Writing Software"},{value:"v1.0.6",label:"Claude Plugin Release"}].map(r=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-2xl mb-1",children:r.value}),e.jsx("div",{className:"text-secondary text-xs",children:r.label})]},r.label))}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mt-4",children:[e.jsxs("div",{className:"p-5 bg-surface border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-2 text-sm",children:"Quantum error correction"}),e.jsxs("ul",{className:"text-secondary text-xs space-y-1.5",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/decoder",className:"text-cyan-300 hover:underline font-semibold",children:"QECTOR Decoder v3"}),": Rust-core Python library, 17+ decoder configurations"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/workbench",className:"text-cyan-300 hover:underline font-semibold",children:"QECTOR Workbench"}),": free desktop GUI and comprehensive MCP server"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/evidence",className:"text-cyan-300 hover:underline font-semibold",children:"Evidence & Provenance"}),": validation reports and SHA-256 sealed manifests on GitHub"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Mastering QEC and the QEC Academy instructional series"})]})]})]}),e.jsxs("div",{className:"p-5 bg-surface border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-2 text-sm",children:"Research & Engineering"}),e.jsxs("ul",{className:"text-secondary text-xs space-y-1.5",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Work signed and traceable through ORCID and Zenodo"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Custom decoder topologies for research workflows"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"High-performance batch simulation pipelines"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Reproducible artifact workflows"})]})]})]})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-5",children:"Skills"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:x.map(r=>e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-3",children:r.title}),e.jsx("ul",{className:"space-y-1.5",children:r.items.map(s=>e.jsxs("li",{className:"text-secondary text-xs flex items-start gap-2",children:[e.jsx(h,{size:14,className:"text-cyan-300 mt-0.5 shrink-0","aria-hidden":"true"}),e.jsx("span",{children:s})]},s))})]},r.title))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"Book a 30-minute call"}),e.jsxs("p",{className:"text-secondary text-sm mb-5",children:["For a decoder audit, licensing questions, or an integration walkthrough, you will speak directly with me. Prefer email? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]}),e.jsx(m,{url:c})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(t,{to:"/pricing",className:"btn-cyan",children:"View Pricing & Licensing"})})]})})]})}export{v as default}; diff --git a/assets/Founder-C30HSU2C.js b/assets/Founder-C30HSU2C.js deleted file mode 100644 index a43ea331..00000000 --- a/assets/Founder-C30HSU2C.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as l,J as d,d as c}from"./index-Bh9DBCb3.js";import{C as m}from"./CalendlyWidget-BuhQfp2_.js";import{L as t}from"./vendor-PiU4YGcH.js";import{o as h}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const n="https://orcid.org/0009-0000-3465-3753",x=[{title:"Systems & Performance",items:["Rust","PyO3 bindings","C-adjacent FFI","CUDA / OpenCL batch kernels","Memory-layout and throughput tuning"]},{title:"Python Engineering",items:["Python 3.9-3.14","NumPy / SciPy","Binary wheel packaging (manylinux, macOS, Windows)","PyPI release engineering"]},{title:"Quantum Error Correction",items:["MWPM / Blossom matching","Union-Find decoding","Belief propagation + OSD (qLDPC)","Stim / Sinter / PyMatching integration","Benchmark design and reproducibility"]},{title:"Applications & Desktop",items:["CustomTkinter GUI","Self-contained runtime bundling","PyInstaller / Inno Setup / .deb packaging","Model Context Protocol (MCP) servers","Offline-first architecture"]},{title:"Web & Product",items:["React + TypeScript","Vite","Tailwind","SEO and structured data","Stripe commerce integration"]},{title:"Writing & Publishing",items:["Technical documentation","Long-form instructional writing","Audiobook production","Electronic music production","Independent distribution"]}];function v(){return e.jsxs(e.Fragment,{children:[e.jsx(l,{title:"Guillaume Lessard · Founder of QECTOR and iD01t Productions",description:"Guillaume Lessard, software engineer, author, and independent researcher in Longueuil, Québec. Founder of iD01t Productions and creator of QECTOR Decoder v3. ORCID 0009-0000-3465-3753."}),e.jsx(d,{data:{"@context":"https://schema.org","@type":"Person","@id":"https://qector.store/guillaume-lessard#person",name:"Guillaume Lessard",givenName:"Guillaume",familyName:"Lessard",identifier:"0009-0000-3465-3753",jobTitle:"Founder, Software Engineer and Independent Researcher",description:"Software engineer, author and independent researcher. Founder of iD01t Productions and author of the QECTOR Decoder v3 quantum error correction library.",image:"https://qector.store/assets/g.png",url:"https://qector.store/guillaume-lessard",email:"admin@qector.store",address:{"@type":"PostalAddress",streetAddress:"2004 De Lorimier",addressLocality:"Longueuil",addressRegion:"QC",postalCode:"J4K 3H7",addressCountry:"CA"},worksFor:{"@type":"Organization",name:"iD01t Productions",foundingDate:"2012"},knowsAbout:["Quantum error correction","Minimum-weight perfect matching decoders","Belief propagation and OSD decoding","Rust","Python","GPU batch computing","Technical writing"],sameAs:[n,"https://github.com/GuillaumeLessard","https://github.com/qectorlab","https://pypi.org/project/qector-decoder-v3/","https://id01t.itch.io/","https://www.linkedin.com/in/qector/"]}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsx("div",{className:"relative z-10 section-padding",children:e.jsxs("div",{className:"max-w-4xl mx-auto flex flex-col md:flex-row items-center md:items-start gap-8",children:[e.jsx("img",{src:"/assets/g.png",alt:"Portrait of Guillaume Lessard, founder of QECTOR and iD01t Productions",width:160,height:160,loading:"lazy",className:"w-40 h-40 rounded-2xl object-cover border border-cyan-300/30 shadow-lg shrink-0"}),e.jsxs("div",{className:"text-center md:text-left",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-semibold text-cyan-300 uppercase tracking-wider mb-4",children:"Founder · Developer · Author · Independent Researcher"}),e.jsx("h1",{className:"text-4xl md:text-5xl font-extrabold tracking-tight leading-[1.1] mb-4",children:"Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed mb-5",children:"I am Guillaume Lessard, the founder of iD01t Productions and the creator of QECTOR. I design Rust/Python quantum error-correction systems, local MCP tooling, and release workflows where correctness claims are tied to declared workloads, reproducible artifacts, and public records. I build and support the platform independently from Longueuil, Québec."}),e.jsxs("div",{className:"flex flex-wrap justify-center md:justify-start gap-2 text-xs",children:[e.jsx("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"ORCID 0009-0000-3465-3753"}),e.jsx("a",{href:"https://github.com/qectorlab",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"GitHub"}),e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"PyPI"}),e.jsx("span",{className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary",children:"iD01t Productions"})]})]})]})})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Making sure you have the right Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"It is a common Québécois name, and several accomplished professionals share it, including a compiler engineer who works on Swift and a real estate executive. None of them are me, and I claim none of their work. If you are evaluating QECTOR, verifying an invoice, or checking a citation, these are the primary identifiers I control:"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-sm",children:[["ORCID","0009-0000-3465-3753",n],["GitHub","github.com/qectorlab","https://github.com/qectorlab"],["PyPI","qector-decoder-v3","https://pypi.org/project/qector-decoder-v3/"],["Studio","iD01t Productions, Longueuil QC"],["itch.io","id01t.itch.io","https://id01t.itch.io/"],["Email","admin@qector.store","mailto:admin@qector.store"]].map(([r,s,a])=>{const i=e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"text-[11px] text-muted-foreground uppercase tracking-wider mb-0.5",children:r}),e.jsx("div",{className:"text-cyan-300 font-mono text-xs break-all",children:s})]}),o="p-3 bg-void border border-gridline rounded-xl";return a?e.jsx("a",{href:a,target:a.startsWith("mailto")?void 0:"_blank",rel:"noopener noreferrer",className:`${o} hover:border-cyan-300/40 transition-colors`,children:i},r):e.jsx("span",{className:o,children:i},r)})})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Professional Profile"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["My work combines more than two decades of software engineering with focused quantum error-correction research. QECTOR Decoder v3 is published as the stable ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3 1.0.x"}),"Rust/PyO3 package; its companion Claude Plugin is released at ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"v2.0.1"}),". I publish the user manual, normative reference manual, and certification/proof material so identity, software version, and evidence can be checked independently."]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21611214",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["v1.0.0 user manual",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.21611214"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21941046",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["Normative reference manual",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.21941046"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.22046403",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["Verification and proof bundle",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.22046403"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Background"}),e.jsxs("div",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsx("p",{children:"My engineering philosophy is rooted in practical execution. Over the course of my career, I learned to build robust systems because I wanted to make things that worked in the real world. That has been the method ever since: pick the problem, learn what the problem requires, ship the result, publish the evidence."}),e.jsxs("p",{children:["For most of the last twenty years that meant building high-performance applications and tools. I founded"," ",e.jsx("span",{className:"text-secondary",children:"iD01t Productions"})," ","in 2012. QECTOR serves as its dedicated QEC software division, delivering robust decoder pipelines for research and production environments."]}),e.jsx("p",{children:"Quantum error correction is where that method currently points. QECTOR Decoder v3 is a Rust core behind a Python API implementing 17+ decoder configurations, with v1.0.0 (August 2026) as the first stable release and v1.0.1 as the current one (2026-08-06). The public contract separates mathematical correctness from machine-specific performance: decodes can be checked against the declared syndrome relation, while local benchmark results carry their workload, environment, raw artifact, and hash. The qector Claude Plugin v2.0.1 extends the same evidence-first approach into local Claude Code and Claude Desktop workflows."}),e.jsx("p",{className:"text-primary italic border-l-2 border-cyan-300/40 pl-4",children:"We ship. Even tired. Even messy. Still shipping."})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-5",children:"What I've shipped"}),e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"17+",label:"Decoder Configurations"},{value:"10+",label:"Supported Topologies"},{value:"20+",label:"Years Writing Software"},{value:"v2.0.1",label:"Claude Plugin Release"}].map(r=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-2xl mb-1",children:r.value}),e.jsx("div",{className:"text-secondary text-xs",children:r.label})]},r.label))}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mt-4",children:[e.jsxs("div",{className:"p-5 bg-surface border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-2 text-sm",children:"Quantum error correction"}),e.jsxs("ul",{className:"text-secondary text-xs space-y-1.5",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/decoder",className:"text-cyan-300 hover:underline font-semibold",children:"QECTOR Decoder v3"}),": Rust-core Python library, 17+ decoder configurations"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/workbench",className:"text-cyan-300 hover:underline font-semibold",children:"QECTOR Workbench"}),": free desktop GUI and comprehensive MCP server"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/evidence",className:"text-cyan-300 hover:underline font-semibold",children:"Evidence & Provenance"}),": validation reports and SHA-256 sealed manifests on GitHub"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Mastering QEC and the QEC Academy instructional series"})]})]})]}),e.jsxs("div",{className:"p-5 bg-surface border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-2 text-sm",children:"Research & Engineering"}),e.jsxs("ul",{className:"text-secondary text-xs space-y-1.5",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Work signed and traceable through ORCID and Zenodo"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Custom decoder topologies for research workflows"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"High-performance batch simulation pipelines"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Reproducible artifact workflows"})]})]})]})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-5",children:"Skills"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:x.map(r=>e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-3",children:r.title}),e.jsx("ul",{className:"space-y-1.5",children:r.items.map(s=>e.jsxs("li",{className:"text-secondary text-xs flex items-start gap-2",children:[e.jsx(h,{size:14,className:"text-cyan-300 mt-0.5 shrink-0","aria-hidden":"true"}),e.jsx("span",{children:s})]},s))})]},r.title))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"Book a 30-minute call"}),e.jsxs("p",{className:"text-secondary text-sm mb-5",children:["For a decoder audit, licensing questions, or an integration walkthrough, you will speak directly with me. Prefer email? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]}),e.jsx(m,{url:c})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(t,{to:"/pricing",className:"btn-cyan",children:"View Pricing & Licensing"})})]})})]})}export{v as default}; diff --git a/assets/Founder-C5uaMuzf.js b/assets/Founder-C5uaMuzf.js deleted file mode 100644 index cf78dbc1..00000000 --- a/assets/Founder-C5uaMuzf.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,J as p,f as g,L as l}from"./index-PdoH5kLF.js";import{C as f}from"./CalendlyWidget-BuhQfp2_.js";import{C as i,W as b,P as a}from"./releases-1-HBloZv.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const n="https://orcid.org/0009-0000-3465-3753",o="https://www.linkedin.com/in/qector/",h="https://github.com/GuillaumeLessard",r="https://pypi.org/project/qector-decoder-v3/",y=t=>new Date(`${t}T12:00:00Z`).toLocaleDateString("en-CA",{year:"numeric",month:"short",day:"numeric",timeZone:"UTC"}),c=a.find(t=>t.version==="1.0.1"),j=a.find(t=>t.version==="1.0.0"),m=a[a.length-1],s=b[0],v=[{title:"Decoders that prove their output",body:"A Rust core behind a Python API: Union-Find, exact MWPM, BP-OSD and Relay-BP for qLDPC codes, on CPU and GPU. Every correction is checked against its syndrome, H·c = s (mod 2)."},{title:"Releases you can verify",body:"Wheels built in public CI, tested on each operating system before publishing, with Sigstore provenance, PyPI attestations and Trusted Publishing."},{title:"Tools that stay offline",body:"Air-gapped licensing with Ed25519 tokens, a schema-validated MCP server for Claude, and a self-contained desktop Workbench."}],N=[{date:c.releaseDate,title:`QECTOR Decoder v3 ${c.version}`,detail:"18 wheels for CPython 3.9 to 3.14, tested per OS, Sigstore provenance on every file",href:"https://github.com/GuillaumeLessard/qector-decoder/releases/tag/v1.0.1"},{date:i.releaseDate,title:`QECTOR Claude Plugin ${i.version}`,detail:"Air-gapped, schema-validated MCP server for Claude Code and Claude Desktop",href:i.releaseUrl},{date:s.releaseDate,title:`QECTOR Workbench ${s.version}`,detail:`Free desktop GUI for Windows and Linux, ${s.decoderKinds} decoder kinds, ${s.codeFamilies} code families`,href:s.releaseUrl},{date:j.releaseDate,title:"QECTOR Decoder v3 1.0.0",detail:"First stable release: API stability tiers, qector CLI, reference manual",href:r},{date:m.releaseDate,title:`First public release (${m.version})`,detail:`Published on PyPI; ${a.length} releases to date`,href:r}],P=[{title:"QECTOR Decoder v3 User Manual (v1.0.0)",doi:"10.5281/zenodo.21611214"},{title:"Normative Reference Manual (v1.0.0)",doi:"10.5281/zenodo.21941046"},{title:"Verification and Proof Bundle",doi:"10.5281/zenodo.22046403"}],k=[{area:"Quantum error correction",items:"MWPM and Blossom, Union-Find, BP-OSD and Relay-BP for qLDPC, detector error models, Stim and Sinter"},{area:"Systems",items:"Rust, PyO3, CUDA and OpenCL batch kernels, memory layout and throughput"},{area:"Python and release engineering",items:"Binary wheels for Linux, Windows and macOS, PyPI Trusted Publishing, Sigstore, supply-chain gates"},{area:"Tooling and product",items:"MCP servers, desktop apps, React and TypeScript, Stripe and licensing infrastructure"}],C=[["ORCID","0009-0000-3465-3753",n],["GitHub","github.com/GuillaumeLessard",h],["GitHub organisation","github.com/qectorlab","https://github.com/qectorlab"],["PyPI","qector-decoder-v3",r],["LinkedIn","linkedin.com/in/qector",o],["E-mail","admin@qector.store","mailto:admin@qector.store"]];function O(){return e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"Guillaume Lessard · Founder and Lead Engineer, QECTOR",description:"Guillaume Lessard, founder and lead engineer of QECTOR: Rust and Python quantum error correction decoders, verifiable releases and offline licensing. Longueuil, Québec. ORCID 0009-0000-3465-3753."}),e.jsx(p,{data:{"@context":"https://schema.org","@type":"Person","@id":"https://qector.store/guillaume-lessard#person",name:"Guillaume Lessard",givenName:"Guillaume",familyName:"Lessard",identifier:"0009-0000-3465-3753",jobTitle:"Founder and Lead Engineer, QECTOR",description:"Founder and lead engineer of QECTOR, a Rust and Python quantum error correction decoding platform. Founder of iD01t Productions.",image:"https://qector.store/assets/g.png",url:"https://qector.store/guillaume-lessard/",email:"admin@qector.store",address:{"@type":"PostalAddress",addressLocality:"Longueuil",addressRegion:"QC",addressCountry:"CA"},worksFor:{"@type":"Organization",name:"iD01t Productions",foundingDate:"2012",url:"https://qector.store/"},knowsAbout:["Quantum error correction","Minimum-weight perfect matching","Belief propagation and OSD decoding","qLDPC codes","Rust","Python","GPU computing","Software supply-chain security"],sameAs:[n,h,"https://github.com/qectorlab",r,o,"https://id01t.itch.io/"]}}),e.jsxs("section",{className:"relative pt-32 pb-16 md:pt-36 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsx("div",{className:"relative z-10 section-padding",children:e.jsxs("div",{className:"max-w-5xl mx-auto flex flex-col md:flex-row items-center md:items-start gap-8 md:gap-10",children:[e.jsx("img",{src:"/assets/g.png",alt:"Guillaume Lessard",width:176,height:176,fetchPriority:"high",className:"w-44 h-44 rounded-2xl object-cover border border-cyan-300/30 shadow-lg shrink-0"}),e.jsxs("div",{className:"text-center md:text-left",children:[e.jsx("p",{className:"text-cyan-300 text-sm font-semibold tracking-wide mb-2",children:"Founder and Lead Engineer, QECTOR"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.05] mb-4",children:"Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed mb-6 max-w-2xl",children:"I build quantum error correction decoders in Rust and Python, and the release and licensing infrastructure that lets teams trust them: corrections checked against their syndromes, wheels with verifiable provenance, and licences that work air-gapped. Based in Longueuil, Québec."}),e.jsxs("div",{className:"flex flex-wrap justify-center md:justify-start gap-3",children:[e.jsx("a",{href:"#book",className:"btn-gold px-6 py-3 text-sm",children:"Book a call"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline px-6 py-3 text-sm",children:"admin@qector.store"}),e.jsx("a",{href:o,target:"_blank",rel:"noopener noreferrer",className:"btn-outline px-6 py-3 text-sm",children:"LinkedIn"})]})]})]})})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-14",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-6",children:"What I work on"}),e.jsx("div",{className:"grid md:grid-cols-3 gap-5",children:v.map(t=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-lg font-bold mb-2",children:t.title}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t.body})]},t.title))})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"Track record"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Public releases, newest first. Each links to its release page."}),e.jsx("ol",{className:"relative border-l border-gridline ml-2 space-y-6",children:N.map(t=>e.jsxs("li",{className:"pl-6 relative",children:[e.jsx("span",{className:"absolute -left-[5px] top-1.5 w-2.5 h-2.5 rounded-full bg-cyan-300","aria-hidden":"true"}),e.jsx("time",{dateTime:t.date,className:"text-xs font-mono text-muted-foreground",children:y(t.date)}),e.jsx("h3",{className:"font-semibold text-primary",children:e.jsx("a",{href:t.href,target:"_blank",rel:"noopener noreferrer",className:"hover:text-cyan-300",children:t.title})}),e.jsx("p",{className:"text-secondary text-sm",children:t.detail})]},t.title))})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"Publications and records"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Manuals and verification material are archived with DOIs on Zenodo and linked to my"," ",e.jsx("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"ORCID record"}),"."]}),e.jsx("div",{className:"grid md:grid-cols-3 gap-4",children:P.map(t=>e.jsxs("a",{href:`https://doi.org/${t.doi}`,target:"_blank",rel:"noopener noreferrer",className:"card-surface block hover:border-cyan-300/40",children:[e.jsx("span",{className:"block text-primary font-semibold text-sm mb-2",children:t.title}),e.jsxs("span",{className:"block font-mono text-xs text-cyan-300 break-all",children:["doi:",t.doi]})]},t.doi))})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-6",children:"Expertise"}),e.jsx("dl",{className:"card-surface divide-y divide-gridline/60 !py-2",children:k.map(t=>e.jsxs("div",{className:"grid md:grid-cols-[14rem_1fr] gap-1 md:gap-6 py-4",children:[e.jsx("dt",{className:"text-primary font-semibold text-sm",children:t.area}),e.jsx("dd",{className:"text-secondary text-sm",children:t.items})]},t.area))})]}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-5",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"iD01t Productions"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"I founded iD01t Productions in 2012 as an independent studio. It publishes technical books, desktop software and games, and electronic music. QECTOR is its quantum error correction line, built and supported by me directly, so you always deal with the person who wrote the code."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Verify my identity"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"Several people share my name. For invoices, citations or due diligence, these are the identifiers I control:"}),e.jsx("ul",{className:"grid sm:grid-cols-2 gap-2",children:C.map(([t,x,d])=>e.jsx("li",{children:e.jsxs("a",{href:d,...d?.startsWith("http")?{target:"_blank",rel:"noopener noreferrer"}:{},className:"block p-2.5 bg-void border border-gridline rounded-lg hover:border-cyan-300/40",children:[e.jsx("span",{className:"block text-[10px] uppercase tracking-wider text-muted-foreground",children:t}),e.jsx("span",{className:"block font-mono text-xs text-cyan-300 break-all",children:x})]})},t))})]})]}),e.jsxs("div",{id:"book",className:"card-surface scroll-mt-28",children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"Book a 30-minute call"}),e.jsxs("p",{className:"text-secondary text-sm mb-5",children:["Decoder evaluation, integration, licensing or research collaboration: you will speak with me directly. Prefer e-mail?"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]}),e.jsx(f,{url:g})]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[e.jsx(l,{to:"/decoder",className:"btn-cyan",children:"Explore the decoder"}),e.jsx(l,{to:"/pricing",className:"btn-outline",children:"Plans and licensing"})]})]})})]})}export{O as default}; diff --git a/assets/Founder-CuTYpFsD.js b/assets/Founder-CuTYpFsD.js deleted file mode 100644 index 40479b49..00000000 --- a/assets/Founder-CuTYpFsD.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as l,J as d,b as c}from"./index-BcbVjARk.js";import{C as m}from"./CalendlyWidget-BuhQfp2_.js";import{L as t}from"./vendor-PiU4YGcH.js";import{o as h}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const n="https://orcid.org/0009-0000-3465-3753",x=[{title:"Systems & Performance",items:["Rust","PyO3 bindings","C-adjacent FFI","CUDA / OpenCL batch kernels","Memory-layout and throughput tuning"]},{title:"Python Engineering",items:["Python 3.9-3.13","NumPy / SciPy","Binary wheel packaging (manylinux, macOS, Windows)","PyPI release engineering"]},{title:"Quantum Error Correction",items:["MWPM / Blossom matching","Union-Find decoding","Belief propagation + OSD (qLDPC)","Stim / Sinter / PyMatching integration","Benchmark design and reproducibility"]},{title:"Applications & Desktop",items:["CustomTkinter GUI","Self-contained runtime bundling","PyInstaller / Inno Setup / .deb packaging","Model Context Protocol (MCP) servers","Offline-first architecture"]},{title:"Web & Product",items:["React + TypeScript","Vite","Tailwind","SEO and structured data","Stripe commerce integration"]},{title:"Writing & Publishing",items:["Technical documentation","Long-form instructional writing","Audiobook production","Electronic music production","Independent distribution"]}];function v(){return e.jsxs(e.Fragment,{children:[e.jsx(l,{title:"Guillaume Lessard · Founder of QECTOR and iD01t Productions",description:"Guillaume Lessard, software engineer, author, and independent researcher in Longueuil, Québec. Founder of iD01t Productions and creator of QECTOR Decoder v3. ORCID 0009-0000-3465-3753."}),e.jsx(d,{data:{"@context":"https://schema.org","@type":"Person","@id":"https://qector.store/guillaume-lessard#person",name:"Guillaume Lessard",givenName:"Guillaume",familyName:"Lessard",identifier:"0009-0000-3465-3753",jobTitle:"Founder, Software Engineer and Independent Researcher",description:"Software engineer, author and independent researcher. Founder of iD01t Productions and author of the QECTOR Decoder v3 quantum error correction library.",image:"https://qector.store/assets/g.png",url:"https://qector.store/guillaume-lessard",email:"admin@qector.store",address:{"@type":"PostalAddress",streetAddress:"2004 De Lorimier",addressLocality:"Longueuil",addressRegion:"QC",postalCode:"J4K 3H7",addressCountry:"CA"},worksFor:{"@type":"Organization",name:"iD01t Productions",foundingDate:"2023"},knowsAbout:["Quantum error correction","Minimum-weight perfect matching decoders","Belief propagation and OSD decoding","Rust","Python","GPU batch computing","Technical writing"],sameAs:[n,"https://github.com/GuillaumeLessard","https://github.com/qectorlab","https://pypi.org/project/qector-decoder-v3/","https://id01t.itch.io/","https://www.linkedin.com/in/qector/"]}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsx("div",{className:"relative z-10 section-padding",children:e.jsxs("div",{className:"max-w-4xl mx-auto flex flex-col md:flex-row items-center md:items-start gap-8",children:[e.jsx("img",{src:"/assets/g.png",alt:"Portrait of Guillaume Lessard, founder of QECTOR and iD01t Productions",width:160,height:160,loading:"lazy",className:"w-40 h-40 rounded-2xl object-cover border border-cyan-300/30 shadow-lg shrink-0"}),e.jsxs("div",{className:"text-center md:text-left",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-semibold text-cyan-300 uppercase tracking-wider mb-4",children:"Founder · Developer · Author · Independent Researcher"}),e.jsx("h1",{className:"text-4xl md:text-5xl font-extrabold tracking-tight leading-[1.1] mb-4",children:"Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed mb-5",children:"I am Guillaume Lessard, the founder of iD01t Productions and the creator of QECTOR. I design Rust/Python quantum error-correction systems, local MCP tooling, and release workflows where correctness claims are tied to declared workloads, reproducible artifacts, and public records. I build and support the platform independently from Longueuil, Québec."}),e.jsxs("div",{className:"flex flex-wrap justify-center md:justify-start gap-2 text-xs",children:[e.jsx("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"ORCID 0009-0000-3465-3753"}),e.jsx("a",{href:"https://github.com/qectorlab",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"GitHub"}),e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"PyPI"}),e.jsx("span",{className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary",children:"iD01t Productions"})]})]})]})})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Making sure you have the right Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"It is a common Québécois name, and several accomplished professionals share it, including a compiler engineer who works on Swift and a real estate executive. None of them are me, and I claim none of their work. If you are evaluating QECTOR, verifying an invoice, or checking a citation, these are the primary identifiers I control:"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-sm",children:[["ORCID","0009-0000-3465-3753",n],["GitHub","github.com/qectorlab","https://github.com/qectorlab"],["PyPI","qector-decoder-v3","https://pypi.org/project/qector-decoder-v3/"],["Studio","iD01t Productions, Longueuil QC"],["itch.io","id01t.itch.io","https://id01t.itch.io/"],["Email","admin@qector.store","mailto:admin@qector.store"]].map(([r,s,a])=>{const i=e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"text-[11px] text-muted-foreground uppercase tracking-wider mb-0.5",children:r}),e.jsx("div",{className:"text-cyan-300 font-mono text-xs break-all",children:s})]}),o="p-3 bg-void border border-gridline rounded-xl";return a?e.jsx("a",{href:a,target:a.startsWith("mailto")?void 0:"_blank",rel:"noopener noreferrer",className:`${o} hover:border-cyan-300/40 transition-colors`,children:i},r):e.jsx("span",{className:o,children:i},r)})})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Professional Profile"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["My work combines more than two decades of software engineering with focused quantum error-correction research. QECTOR Decoder v3 is published as the stable ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3==1.0.0"}),"Rust/PyO3 package; its companion Claude Plugin is released at ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"v1.0.6"}),". I publish the user manual, normative reference manual, and certification/proof material so identity, software version, and evidence can be checked independently."]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21611214",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["v1.0.0 user manual",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.21611214"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21941046",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["Normative reference manual",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.21941046"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.22046403",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["Verification and proof bundle",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.22046403"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Background"}),e.jsxs("div",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsx("p",{children:"My engineering philosophy is rooted in practical execution. Over the course of my career, I learned to build robust systems because I wanted to make things that worked in the real world. That has been the method ever since: pick the problem, learn what the problem requires, ship the result, publish the evidence."}),e.jsxs("p",{children:["For most of the last twenty years that meant building high-performance applications and tools. I founded"," ",e.jsx("span",{className:"text-secondary",children:"iD01t Productions"})," ","in 2023. QECTOR serves as its dedicated QEC software division, delivering robust decoder pipelines for research and production environments."]}),e.jsx("p",{children:"Quantum error correction is where that method currently points. QECTOR Decoder v3 is a Rust core behind a Python API implementing 17+ decoder configurations, with v1.0.0 as the first stable release (2026-08-06). The public contract separates mathematical correctness from machine-specific performance: decodes can be checked against the declared syndrome relation, while local benchmark results carry their workload, environment, raw artifact, and hash. The qector Claude Plugin v1.0.6 extends the same evidence-first approach into local Claude Code and Claude Desktop workflows."}),e.jsx("p",{className:"text-primary italic border-l-2 border-cyan-300/40 pl-4",children:"We ship. Even tired. Even messy. Still shipping."})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-5",children:"What I've shipped"}),e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"17+",label:"Decoder Configurations"},{value:"10+",label:"Supported Topologies"},{value:"20+",label:"Years Writing Software"},{value:"v1.0.6",label:"Claude Plugin Release"}].map(r=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-2xl mb-1",children:r.value}),e.jsx("div",{className:"text-secondary text-xs",children:r.label})]},r.label))}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mt-4",children:[e.jsxs("div",{className:"p-5 bg-surface border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-2 text-sm",children:"Quantum error correction"}),e.jsxs("ul",{className:"text-secondary text-xs space-y-1.5",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/decoder",className:"text-cyan-300 hover:underline font-semibold",children:"QECTOR Decoder v3"}),": Rust-core Python library, 17+ decoder configurations"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/workbench",className:"text-cyan-300 hover:underline font-semibold",children:"QECTOR Workbench"}),": free desktop GUI and comprehensive MCP server"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/evidence",className:"text-cyan-300 hover:underline font-semibold",children:"Evidence & Provenance"}),": validation reports and SHA-256 sealed manifests on GitHub"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Mastering QEC and the QEC Academy instructional series"})]})]})]}),e.jsxs("div",{className:"p-5 bg-surface border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-2 text-sm",children:"Research & Engineering"}),e.jsxs("ul",{className:"text-secondary text-xs space-y-1.5",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Work signed and traceable through ORCID and Zenodo"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Custom decoder topologies for research workflows"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"High-performance batch simulation pipelines"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Reproducible artifact workflows"})]})]})]})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-5",children:"Skills"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:x.map(r=>e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-3",children:r.title}),e.jsx("ul",{className:"space-y-1.5",children:r.items.map(s=>e.jsxs("li",{className:"text-secondary text-xs flex items-start gap-2",children:[e.jsx(h,{size:14,className:"text-cyan-300 mt-0.5 shrink-0","aria-hidden":"true"}),e.jsx("span",{children:s})]},s))})]},r.title))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"Book a 30-minute call"}),e.jsxs("p",{className:"text-secondary text-sm mb-5",children:["For a decoder audit, licensing questions, or an integration walkthrough, you will speak directly with me. Prefer email? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]}),e.jsx(m,{url:c})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(t,{to:"/pricing",className:"btn-cyan",children:"View Pricing & Licensing"})})]})})]})}export{v as default}; diff --git a/assets/Founder-D-gWai07.js b/assets/Founder-D-gWai07.js deleted file mode 100644 index 13302aa6..00000000 --- a/assets/Founder-D-gWai07.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as l,J as d,L as t,f as c}from"./index-CcwlvHYJ.js";import{C as m}from"./CalendlyWidget-BuhQfp2_.js";import{o as h}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";const n="https://orcid.org/0009-0000-3465-3753",x=[{title:"Systems & Performance",items:["Rust","PyO3 bindings","C-adjacent FFI","CUDA / OpenCL batch kernels","Memory-layout and throughput tuning"]},{title:"Python Engineering",items:["Python 3.9-3.14","NumPy / SciPy","Binary wheel packaging (manylinux, macOS, Windows)","PyPI release engineering"]},{title:"Quantum Error Correction",items:["MWPM / Blossom matching","Union-Find decoding","Belief propagation + OSD (qLDPC)","Stim / Sinter / PyMatching integration","Benchmark design and reproducibility"]},{title:"Applications & Desktop",items:["CustomTkinter GUI","Self-contained runtime bundling","PyInstaller / Inno Setup / .deb packaging","Model Context Protocol (MCP) servers","Offline-first architecture"]},{title:"Web & Product",items:["React + TypeScript","Vite","Tailwind","SEO and structured data","Stripe commerce integration"]},{title:"Writing & Publishing",items:["Technical documentation","Long-form instructional writing","Audiobook production","Electronic music production","Independent distribution"]}];function y(){return e.jsxs(e.Fragment,{children:[e.jsx(l,{title:"Guillaume Lessard · Founder of QECTOR and iD01t Productions",description:"Guillaume Lessard, software engineer, author, and independent researcher in Longueuil, Québec. Founder of iD01t Productions and creator of QECTOR Decoder v3. ORCID 0009-0000-3465-3753."}),e.jsx(d,{data:{"@context":"https://schema.org","@type":"Person","@id":"https://qector.store/guillaume-lessard#person",name:"Guillaume Lessard",givenName:"Guillaume",familyName:"Lessard",identifier:"0009-0000-3465-3753",jobTitle:"Founder, Software Engineer and Independent Researcher",description:"Software engineer, author and independent researcher. Founder of iD01t Productions and author of the QECTOR Decoder v3 quantum error correction library.",image:"https://qector.store/assets/g.png",url:"https://qector.store/guillaume-lessard",email:"admin@qector.store",address:{"@type":"PostalAddress",streetAddress:"2004 De Lorimier",addressLocality:"Longueuil",addressRegion:"QC",postalCode:"J4K 3H7",addressCountry:"CA"},worksFor:{"@type":"Organization",name:"iD01t Productions",foundingDate:"2012"},knowsAbout:["Quantum error correction","Minimum-weight perfect matching decoders","Belief propagation and OSD decoding","Rust","Python","GPU batch computing","Technical writing"],sameAs:[n,"https://github.com/GuillaumeLessard","https://github.com/qectorlab","https://pypi.org/project/qector-decoder-v3/","https://id01t.itch.io/","https://www.linkedin.com/in/qector/"]}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsx("div",{className:"relative z-10 section-padding",children:e.jsxs("div",{className:"max-w-4xl mx-auto flex flex-col md:flex-row items-center md:items-start gap-8",children:[e.jsx("img",{src:"/assets/g.png",alt:"Portrait of Guillaume Lessard, founder of QECTOR and iD01t Productions",width:160,height:160,loading:"lazy",className:"w-40 h-40 rounded-2xl object-cover border border-cyan-300/30 shadow-lg shrink-0"}),e.jsxs("div",{className:"text-center md:text-left",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-semibold text-cyan-300 uppercase tracking-wider mb-4",children:"Founder · Developer · Author · Independent Researcher"}),e.jsx("h1",{className:"text-4xl md:text-5xl font-extrabold tracking-tight leading-[1.1] mb-4",children:"Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed mb-5",children:"I am Guillaume Lessard, the founder of iD01t Productions and the creator of QECTOR. I design Rust/Python quantum error-correction systems, local MCP tooling, and release workflows where correctness claims are tied to declared workloads, reproducible artifacts, and public records. I build and support the platform independently from Longueuil, Québec."}),e.jsxs("div",{className:"flex flex-wrap justify-center md:justify-start gap-2 text-xs",children:[e.jsx("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"ORCID 0009-0000-3465-3753"}),e.jsx("a",{href:"https://github.com/qectorlab",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"GitHub"}),e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"PyPI"}),e.jsx("span",{className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary",children:"iD01t Productions"})]})]})]})})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Making sure you have the right Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"It is a common Québécois name, and several accomplished professionals share it, including a compiler engineer who works on Swift and a real estate executive. None of them are me, and I claim none of their work. If you are evaluating QECTOR, verifying an invoice, or checking a citation, these are the primary identifiers I control:"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-sm",children:[["ORCID","0009-0000-3465-3753",n],["GitHub","github.com/qectorlab","https://github.com/qectorlab"],["PyPI","qector-decoder-v3","https://pypi.org/project/qector-decoder-v3/"],["Studio","iD01t Productions, Longueuil QC"],["itch.io","id01t.itch.io","https://id01t.itch.io/"],["Email","admin@qector.store","mailto:admin@qector.store"]].map(([r,s,a])=>{const i=e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"text-[11px] text-muted-foreground uppercase tracking-wider mb-0.5",children:r}),e.jsx("div",{className:"text-cyan-300 font-mono text-xs break-all",children:s})]}),o="p-3 bg-void border border-gridline rounded-xl";return a?e.jsx("a",{href:a,target:a.startsWith("mailto")?void 0:"_blank",rel:"noopener noreferrer",className:`${o} hover:border-cyan-300/40 transition-colors`,children:i},r):e.jsx("span",{className:o,children:i},r)})})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Professional Profile"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["My work combines more than two decades of software engineering with focused quantum error-correction research. QECTOR Decoder v3 is published as the stable ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3 1.0.x"}),"Rust/PyO3 package; its companion Claude Plugin is released at ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"v2.0.1"}),". I publish the user manual, normative reference manual, and certification/proof material so identity, software version, and evidence can be checked independently."]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21611214",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["v1.0.0 user manual",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.21611214"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21941046",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["Normative reference manual",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.21941046"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.22046403",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["Verification and proof bundle",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.22046403"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Background"}),e.jsxs("div",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsx("p",{children:"My engineering philosophy is rooted in practical execution. Over the course of my career, I learned to build robust systems because I wanted to make things that worked in the real world. That has been the method ever since: pick the problem, learn what the problem requires, ship the result, publish the evidence."}),e.jsxs("p",{children:["For most of the last twenty years that meant building high-performance applications and tools. I founded"," ",e.jsx("span",{className:"text-secondary",children:"iD01t Productions"})," ","in 2012. QECTOR serves as its dedicated QEC software division, delivering robust decoder pipelines for research and production environments."]}),e.jsx("p",{children:"Quantum error correction is where that method currently points. QECTOR Decoder v3 is a Rust core behind a Python API implementing 17+ decoder configurations, with v1.0.0 (August 2026) as the first stable release and v1.0.1 as the current one (2026-08-06). The public contract separates mathematical correctness from machine-specific performance: decodes can be checked against the declared syndrome relation, while local benchmark results carry their workload, environment, raw artifact, and hash. The qector Claude Plugin v2.0.1 extends the same evidence-first approach into local Claude Code and Claude Desktop workflows."}),e.jsx("p",{className:"text-primary italic border-l-2 border-cyan-300/40 pl-4",children:"We ship. Even tired. Even messy. Still shipping."})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-5",children:"What I've shipped"}),e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"17+",label:"Decoder Configurations"},{value:"10+",label:"Supported Topologies"},{value:"20+",label:"Years Writing Software"},{value:"v2.0.1",label:"Claude Plugin Release"}].map(r=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-2xl mb-1",children:r.value}),e.jsx("div",{className:"text-secondary text-xs",children:r.label})]},r.label))}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mt-4",children:[e.jsxs("div",{className:"p-5 bg-surface border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-2 text-sm",children:"Quantum error correction"}),e.jsxs("ul",{className:"text-secondary text-xs space-y-1.5",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/decoder",className:"text-cyan-300 hover:underline font-semibold",children:"QECTOR Decoder v3"}),": Rust-core Python library, 17+ decoder configurations"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/workbench",className:"text-cyan-300 hover:underline font-semibold",children:"QECTOR Workbench"}),": free desktop GUI and comprehensive MCP server"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/evidence",className:"text-cyan-300 hover:underline font-semibold",children:"Evidence & Provenance"}),": validation reports and SHA-256 sealed manifests on GitHub"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Mastering QEC and the QEC Academy instructional series"})]})]})]}),e.jsxs("div",{className:"p-5 bg-surface border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-2 text-sm",children:"Research & Engineering"}),e.jsxs("ul",{className:"text-secondary text-xs space-y-1.5",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Work signed and traceable through ORCID and Zenodo"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Custom decoder topologies for research workflows"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"High-performance batch simulation pipelines"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Reproducible artifact workflows"})]})]})]})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-5",children:"Skills"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:x.map(r=>e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-3",children:r.title}),e.jsx("ul",{className:"space-y-1.5",children:r.items.map(s=>e.jsxs("li",{className:"text-secondary text-xs flex items-start gap-2",children:[e.jsx(h,{size:14,className:"text-cyan-300 mt-0.5 shrink-0","aria-hidden":"true"}),e.jsx("span",{children:s})]},s))})]},r.title))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"Book a 30-minute call"}),e.jsxs("p",{className:"text-secondary text-sm mb-5",children:["For a decoder audit, licensing questions, or an integration walkthrough, you will speak directly with me. Prefer email? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]}),e.jsx(m,{url:c})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(t,{to:"/pricing",className:"btn-cyan",children:"View Pricing & Licensing"})})]})})]})}export{y as default}; diff --git a/assets/Founder-D4bg94dW.js b/assets/Founder-D4bg94dW.js deleted file mode 100644 index bb212ad6..00000000 --- a/assets/Founder-D4bg94dW.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,J as p,f as g,L as l}from"./index-CCmwjNGU.js";import{C as f}from"./CalendlyWidget-BuhQfp2_.js";import{C as i,W as b,a}from"./releases--9GgxpSb.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const n="https://orcid.org/0009-0000-3465-3753",o="https://www.linkedin.com/in/qector/",h="https://github.com/GuillaumeLessard",r="https://pypi.org/project/qector-decoder-v3/",y=t=>new Date(`${t}T12:00:00Z`).toLocaleDateString("en-CA",{year:"numeric",month:"short",day:"numeric",timeZone:"UTC"}),c=a.find(t=>t.version==="1.0.1"),j=a.find(t=>t.version==="1.0.0"),m=a[a.length-1],s=b[0],v=[{title:"Decoders that prove their output",body:"A Rust core behind a Python API: Union-Find, exact MWPM, BP-OSD and Relay-BP for qLDPC codes, on CPU and GPU. Every correction is checked against its syndrome, H·c = s (mod 2)."},{title:"Releases you can verify",body:"Wheels built in public CI, tested on each operating system before publishing, with Sigstore provenance, PyPI attestations and Trusted Publishing."},{title:"Tools that stay offline",body:"Air-gapped licensing with Ed25519 tokens, a schema-validated MCP server for Claude, and a self-contained desktop Workbench."}],N=[{date:c.releaseDate,title:`QECTOR Decoder v3 ${c.version}`,detail:"18 wheels for CPython 3.9 to 3.14, tested per OS, Sigstore provenance on every file",href:"https://github.com/GuillaumeLessard/qector-decoder/releases/tag/v1.0.1"},{date:i.releaseDate,title:`QECTOR Claude Plugin ${i.version}`,detail:"Air-gapped, schema-validated MCP server for Claude Code and Claude Desktop",href:i.releaseUrl},{date:s.releaseDate,title:`QECTOR Workbench ${s.version}`,detail:`Free desktop GUI for Windows and Linux, ${s.decoderKinds} decoder kinds, ${s.codeFamilies} code families`,href:s.releaseUrl},{date:j.releaseDate,title:"QECTOR Decoder v3 1.0.0",detail:"First stable release: API stability tiers, qector CLI, reference manual",href:r},{date:m.releaseDate,title:`First public release (${m.version})`,detail:`Published on PyPI; ${a.length} releases to date`,href:r}],P=[{title:"QECTOR Decoder v3 User Manual (v1.0.0)",doi:"10.5281/zenodo.21611214"},{title:"Normative Reference Manual (v1.0.0)",doi:"10.5281/zenodo.21941046"},{title:"Verification and Proof Bundle",doi:"10.5281/zenodo.22046403"}],k=[{area:"Quantum error correction",items:"MWPM and Blossom, Union-Find, BP-OSD and Relay-BP for qLDPC, detector error models, Stim and Sinter"},{area:"Systems",items:"Rust, PyO3, CUDA and OpenCL batch kernels, memory layout and throughput"},{area:"Python and release engineering",items:"Binary wheels for Linux, Windows and macOS, PyPI Trusted Publishing, Sigstore, supply-chain gates"},{area:"Tooling and product",items:"MCP servers, desktop apps, React and TypeScript, Stripe and licensing infrastructure"}],C=[["ORCID","0009-0000-3465-3753",n],["GitHub","github.com/GuillaumeLessard",h],["GitHub organisation","github.com/qectorlab","https://github.com/qectorlab"],["PyPI","qector-decoder-v3",r],["LinkedIn","linkedin.com/in/qector",o],["E-mail","admin@qector.store","mailto:admin@qector.store"]];function O(){return e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"Guillaume Lessard · Founder and Lead Engineer, QECTOR",description:"Guillaume Lessard, founder and lead engineer of QECTOR: Rust and Python quantum error correction decoders, verifiable releases and offline licensing. Longueuil, Québec. ORCID 0009-0000-3465-3753."}),e.jsx(p,{data:{"@context":"https://schema.org","@type":"Person","@id":"https://qector.store/guillaume-lessard#person",name:"Guillaume Lessard",givenName:"Guillaume",familyName:"Lessard",identifier:"0009-0000-3465-3753",jobTitle:"Founder and Lead Engineer, QECTOR",description:"Founder and lead engineer of QECTOR, a Rust and Python quantum error correction decoding platform. Founder of iD01t Productions.",image:"https://qector.store/assets/g.png",url:"https://qector.store/guillaume-lessard/",email:"admin@qector.store",address:{"@type":"PostalAddress",addressLocality:"Longueuil",addressRegion:"QC",addressCountry:"CA"},worksFor:{"@type":"Organization",name:"iD01t Productions",foundingDate:"2012",url:"https://qector.store/"},knowsAbout:["Quantum error correction","Minimum-weight perfect matching","Belief propagation and OSD decoding","qLDPC codes","Rust","Python","GPU computing","Software supply-chain security"],sameAs:[n,h,"https://github.com/qectorlab",r,o,"https://id01t.itch.io/"]}}),e.jsxs("section",{className:"relative pt-32 pb-16 md:pt-36 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsx("div",{className:"relative z-10 section-padding",children:e.jsxs("div",{className:"max-w-5xl mx-auto flex flex-col md:flex-row items-center md:items-start gap-8 md:gap-10",children:[e.jsx("img",{src:"/assets/g.png",alt:"Guillaume Lessard",width:176,height:176,fetchPriority:"high",className:"w-44 h-44 rounded-2xl object-cover border border-cyan-300/30 shadow-lg shrink-0"}),e.jsxs("div",{className:"text-center md:text-left",children:[e.jsx("p",{className:"text-cyan-300 text-sm font-semibold tracking-wide mb-2",children:"Founder and Lead Engineer, QECTOR"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.05] mb-4",children:"Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed mb-6 max-w-2xl",children:"I build quantum error correction decoders in Rust and Python, and the release and licensing infrastructure that lets teams trust them: corrections checked against their syndromes, wheels with verifiable provenance, and licences that work air-gapped. Based in Longueuil, Québec."}),e.jsxs("div",{className:"flex flex-wrap justify-center md:justify-start gap-3",children:[e.jsx("a",{href:"#book",className:"btn-gold px-6 py-3 text-sm",children:"Book a call"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline px-6 py-3 text-sm",children:"admin@qector.store"}),e.jsx("a",{href:o,target:"_blank",rel:"noopener noreferrer",className:"btn-outline px-6 py-3 text-sm",children:"LinkedIn"})]})]})]})})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-14",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-6",children:"What I work on"}),e.jsx("div",{className:"grid md:grid-cols-3 gap-5",children:v.map(t=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-lg font-bold mb-2",children:t.title}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t.body})]},t.title))})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"Track record"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Public releases, newest first. Each links to its release page."}),e.jsx("ol",{className:"relative border-l border-gridline ml-2 space-y-6",children:N.map(t=>e.jsxs("li",{className:"pl-6 relative",children:[e.jsx("span",{className:"absolute -left-[5px] top-1.5 w-2.5 h-2.5 rounded-full bg-cyan-300","aria-hidden":"true"}),e.jsx("time",{dateTime:t.date,className:"text-xs font-mono text-muted-foreground",children:y(t.date)}),e.jsx("h3",{className:"font-semibold text-primary",children:e.jsx("a",{href:t.href,target:"_blank",rel:"noopener noreferrer",className:"hover:text-cyan-300",children:t.title})}),e.jsx("p",{className:"text-secondary text-sm",children:t.detail})]},t.title))})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"Publications and records"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Manuals and verification material are archived with DOIs on Zenodo and linked to my"," ",e.jsx("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"ORCID record"}),"."]}),e.jsx("div",{className:"grid md:grid-cols-3 gap-4",children:P.map(t=>e.jsxs("a",{href:`https://doi.org/${t.doi}`,target:"_blank",rel:"noopener noreferrer",className:"card-surface block hover:border-cyan-300/40",children:[e.jsx("span",{className:"block text-primary font-semibold text-sm mb-2",children:t.title}),e.jsxs("span",{className:"block font-mono text-xs text-cyan-300 break-all",children:["doi:",t.doi]})]},t.doi))})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-6",children:"Expertise"}),e.jsx("dl",{className:"card-surface divide-y divide-gridline/60 !py-2",children:k.map(t=>e.jsxs("div",{className:"grid md:grid-cols-[14rem_1fr] gap-1 md:gap-6 py-4",children:[e.jsx("dt",{className:"text-primary font-semibold text-sm",children:t.area}),e.jsx("dd",{className:"text-secondary text-sm",children:t.items})]},t.area))})]}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-5",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"iD01t Productions"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"I founded iD01t Productions in 2012 as an independent studio. It publishes technical books, desktop software and games, and electronic music. QECTOR is its quantum error correction line, built and supported by me directly, so you always deal with the person who wrote the code."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Verify my identity"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"Several people share my name. For invoices, citations or due diligence, these are the identifiers I control:"}),e.jsx("ul",{className:"grid sm:grid-cols-2 gap-2",children:C.map(([t,x,d])=>e.jsx("li",{children:e.jsxs("a",{href:d,...d?.startsWith("http")?{target:"_blank",rel:"noopener noreferrer"}:{},className:"block p-2.5 bg-void border border-gridline rounded-lg hover:border-cyan-300/40",children:[e.jsx("span",{className:"block text-[10px] uppercase tracking-wider text-muted-foreground",children:t}),e.jsx("span",{className:"block font-mono text-xs text-cyan-300 break-all",children:x})]})},t))})]})]}),e.jsxs("div",{id:"book",className:"card-surface scroll-mt-28",children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"Book a 30-minute call"}),e.jsxs("p",{className:"text-secondary text-sm mb-5",children:["Decoder evaluation, integration, licensing or research collaboration: you will speak with me directly. Prefer e-mail?"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]}),e.jsx(f,{url:g})]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[e.jsx(l,{to:"/decoder",className:"btn-cyan",children:"Explore the decoder"}),e.jsx(l,{to:"/pricing",className:"btn-outline",children:"Plans and licensing"})]})]})})]})}export{O as default}; diff --git a/assets/Founder-D5LRTxeE.js b/assets/Founder-D5LRTxeE.js deleted file mode 100644 index ad9016d1..00000000 --- a/assets/Founder-D5LRTxeE.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,J as p,f as g,L as l}from"./index-DayaklK-.js";import{C as f}from"./CalendlyWidget-BuhQfp2_.js";import{C as i,W as b,a}from"./releases--9GgxpSb.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const n="https://orcid.org/0009-0000-3465-3753",o="https://www.linkedin.com/in/qector/",h="https://github.com/GuillaumeLessard",r="https://pypi.org/project/qector-decoder-v3/",y=t=>new Date(`${t}T12:00:00Z`).toLocaleDateString("en-CA",{year:"numeric",month:"short",day:"numeric",timeZone:"UTC"}),c=a.find(t=>t.version==="1.0.1"),j=a.find(t=>t.version==="1.0.0"),m=a[a.length-1],s=b[0],v=[{title:"Decoders that prove their output",body:"A Rust core behind a Python API: Union-Find, exact MWPM, BP-OSD and Relay-BP for qLDPC codes, on CPU and GPU. Every correction is checked against its syndrome, H·c = s (mod 2)."},{title:"Releases you can verify",body:"Wheels built in public CI, tested on each operating system before publishing, with Sigstore provenance, PyPI attestations and Trusted Publishing."},{title:"Tools that stay offline",body:"Air-gapped licensing with Ed25519 tokens, a schema-validated MCP server for Claude, and a self-contained desktop Workbench."}],N=[{date:c.releaseDate,title:`QECTOR Decoder v3 ${c.version}`,detail:"18 wheels for CPython 3.9 to 3.14, tested per OS, Sigstore provenance on every file",href:"https://github.com/GuillaumeLessard/qector-decoder/releases/tag/v1.0.1"},{date:i.releaseDate,title:`QECTOR Claude Plugin ${i.version}`,detail:"Air-gapped, schema-validated MCP server for Claude Code and Claude Desktop",href:i.releaseUrl},{date:s.releaseDate,title:`QECTOR Workbench ${s.version}`,detail:`Free desktop GUI for Windows and Linux, ${s.decoderKinds} decoder kinds, ${s.codeFamilies} code families`,href:s.releaseUrl},{date:j.releaseDate,title:"QECTOR Decoder v3 1.0.0",detail:"First stable release: API stability tiers, qector CLI, reference manual",href:r},{date:m.releaseDate,title:`First public release (${m.version})`,detail:`Published on PyPI; ${a.length} releases to date`,href:r}],P=[{title:"QECTOR Decoder v3 User Manual (v1.0.0)",doi:"10.5281/zenodo.21611214"},{title:"Normative Reference Manual (v1.0.0)",doi:"10.5281/zenodo.21941046"},{title:"Verification and Proof Bundle",doi:"10.5281/zenodo.22046403"}],k=[{area:"Quantum error correction",items:"MWPM and Blossom, Union-Find, BP-OSD and Relay-BP for qLDPC, detector error models, Stim and Sinter"},{area:"Systems",items:"Rust, PyO3, CUDA and OpenCL batch kernels, memory layout and throughput"},{area:"Python and release engineering",items:"Binary wheels for Linux, Windows and macOS, PyPI Trusted Publishing, Sigstore, supply-chain gates"},{area:"Tooling and product",items:"MCP servers, desktop apps, React and TypeScript, Stripe and licensing infrastructure"}],C=[["ORCID","0009-0000-3465-3753",n],["GitHub","github.com/GuillaumeLessard",h],["GitHub organisation","github.com/qectorlab","https://github.com/qectorlab"],["PyPI","qector-decoder-v3",r],["LinkedIn","linkedin.com/in/qector",o],["E-mail","admin@qector.store","mailto:admin@qector.store"]];function O(){return e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"Guillaume Lessard · Founder and Lead Engineer, QECTOR",description:"Guillaume Lessard, founder and lead engineer of QECTOR: Rust and Python quantum error correction decoders, verifiable releases and offline licensing. Longueuil, Québec. ORCID 0009-0000-3465-3753."}),e.jsx(p,{data:{"@context":"https://schema.org","@type":"Person","@id":"https://qector.store/guillaume-lessard#person",name:"Guillaume Lessard",givenName:"Guillaume",familyName:"Lessard",identifier:"0009-0000-3465-3753",jobTitle:"Founder and Lead Engineer, QECTOR",description:"Founder and lead engineer of QECTOR, a Rust and Python quantum error correction decoding platform. Founder of iD01t Productions.",image:"https://qector.store/assets/g.png",url:"https://qector.store/guillaume-lessard/",email:"admin@qector.store",address:{"@type":"PostalAddress",addressLocality:"Longueuil",addressRegion:"QC",addressCountry:"CA"},worksFor:{"@type":"Organization",name:"iD01t Productions",foundingDate:"2012",url:"https://qector.store/"},knowsAbout:["Quantum error correction","Minimum-weight perfect matching","Belief propagation and OSD decoding","qLDPC codes","Rust","Python","GPU computing","Software supply-chain security"],sameAs:[n,h,"https://github.com/qectorlab",r,o,"https://id01t.itch.io/"]}}),e.jsxs("section",{className:"relative pt-32 pb-16 md:pt-36 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsx("div",{className:"relative z-10 section-padding",children:e.jsxs("div",{className:"max-w-5xl mx-auto flex flex-col md:flex-row items-center md:items-start gap-8 md:gap-10",children:[e.jsx("img",{src:"/assets/g.png",alt:"Guillaume Lessard",width:176,height:176,fetchPriority:"high",className:"w-44 h-44 rounded-2xl object-cover border border-cyan-300/30 shadow-lg shrink-0"}),e.jsxs("div",{className:"text-center md:text-left",children:[e.jsx("p",{className:"text-cyan-300 text-sm font-semibold tracking-wide mb-2",children:"Founder and Lead Engineer, QECTOR"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.05] mb-4",children:"Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed mb-6 max-w-2xl",children:"I build quantum error correction decoders in Rust and Python, and the release and licensing infrastructure that lets teams trust them: corrections checked against their syndromes, wheels with verifiable provenance, and licences that work air-gapped. Based in Longueuil, Québec."}),e.jsxs("div",{className:"flex flex-wrap justify-center md:justify-start gap-3",children:[e.jsx("a",{href:"#book",className:"btn-gold px-6 py-3 text-sm",children:"Book a call"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline px-6 py-3 text-sm",children:"admin@qector.store"}),e.jsx("a",{href:o,target:"_blank",rel:"noopener noreferrer",className:"btn-outline px-6 py-3 text-sm",children:"LinkedIn"})]})]})]})})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-14",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-6",children:"What I work on"}),e.jsx("div",{className:"grid md:grid-cols-3 gap-5",children:v.map(t=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-lg font-bold mb-2",children:t.title}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t.body})]},t.title))})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"Track record"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Public releases, newest first. Each links to its release page."}),e.jsx("ol",{className:"relative border-l border-gridline ml-2 space-y-6",children:N.map(t=>e.jsxs("li",{className:"pl-6 relative",children:[e.jsx("span",{className:"absolute -left-[5px] top-1.5 w-2.5 h-2.5 rounded-full bg-cyan-300","aria-hidden":"true"}),e.jsx("time",{dateTime:t.date,className:"text-xs font-mono text-muted-foreground",children:y(t.date)}),e.jsx("h3",{className:"font-semibold text-primary",children:e.jsx("a",{href:t.href,target:"_blank",rel:"noopener noreferrer",className:"hover:text-cyan-300",children:t.title})}),e.jsx("p",{className:"text-secondary text-sm",children:t.detail})]},t.title))})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"Publications and records"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Manuals and verification material are archived with DOIs on Zenodo and linked to my"," ",e.jsx("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"ORCID record"}),"."]}),e.jsx("div",{className:"grid md:grid-cols-3 gap-4",children:P.map(t=>e.jsxs("a",{href:`https://doi.org/${t.doi}`,target:"_blank",rel:"noopener noreferrer",className:"card-surface block hover:border-cyan-300/40",children:[e.jsx("span",{className:"block text-primary font-semibold text-sm mb-2",children:t.title}),e.jsxs("span",{className:"block font-mono text-xs text-cyan-300 break-all",children:["doi:",t.doi]})]},t.doi))})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-6",children:"Expertise"}),e.jsx("dl",{className:"card-surface divide-y divide-gridline/60 !py-2",children:k.map(t=>e.jsxs("div",{className:"grid md:grid-cols-[14rem_1fr] gap-1 md:gap-6 py-4",children:[e.jsx("dt",{className:"text-primary font-semibold text-sm",children:t.area}),e.jsx("dd",{className:"text-secondary text-sm",children:t.items})]},t.area))})]}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-5",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"iD01t Productions"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"I founded iD01t Productions in 2012 as an independent studio. It publishes technical books, desktop software and games, and electronic music. QECTOR is its quantum error correction line, built and supported by me directly, so you always deal with the person who wrote the code."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Verify my identity"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"Several people share my name. For invoices, citations or due diligence, these are the identifiers I control:"}),e.jsx("ul",{className:"grid sm:grid-cols-2 gap-2",children:C.map(([t,x,d])=>e.jsx("li",{children:e.jsxs("a",{href:d,...d?.startsWith("http")?{target:"_blank",rel:"noopener noreferrer"}:{},className:"block p-2.5 bg-void border border-gridline rounded-lg hover:border-cyan-300/40",children:[e.jsx("span",{className:"block text-[10px] uppercase tracking-wider text-muted-foreground",children:t}),e.jsx("span",{className:"block font-mono text-xs text-cyan-300 break-all",children:x})]})},t))})]})]}),e.jsxs("div",{id:"book",className:"card-surface scroll-mt-28",children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"Book a 30-minute call"}),e.jsxs("p",{className:"text-secondary text-sm mb-5",children:["Decoder evaluation, integration, licensing or research collaboration: you will speak with me directly. Prefer e-mail?"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]}),e.jsx(f,{url:g})]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[e.jsx(l,{to:"/decoder",className:"btn-cyan",children:"Explore the decoder"}),e.jsx(l,{to:"/pricing",className:"btn-outline",children:"Plans and licensing"})]})]})})]})}export{O as default}; diff --git a/assets/Founder-DOZO8QYR.js b/assets/Founder-DOZO8QYR.js deleted file mode 100644 index 3e3743dd..00000000 --- a/assets/Founder-DOZO8QYR.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as l,J as d,d as c}from"./index-WV1aysjN.js";import{C as m}from"./CalendlyWidget-BuhQfp2_.js";import{L as t}from"./vendor-PiU4YGcH.js";import{o as h}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const n="https://orcid.org/0009-0000-3465-3753",x=[{title:"Systems & Performance",items:["Rust","PyO3 bindings","C-adjacent FFI","CUDA / OpenCL batch kernels","Memory-layout and throughput tuning"]},{title:"Python Engineering",items:["Python 3.9-3.13","NumPy / SciPy","Binary wheel packaging (manylinux, macOS, Windows)","PyPI release engineering"]},{title:"Quantum Error Correction",items:["MWPM / Blossom matching","Union-Find decoding","Belief propagation + OSD (qLDPC)","Stim / Sinter / PyMatching integration","Benchmark design and reproducibility"]},{title:"Applications & Desktop",items:["CustomTkinter GUI","Self-contained runtime bundling","PyInstaller / Inno Setup / .deb packaging","Model Context Protocol (MCP) servers","Offline-first architecture"]},{title:"Web & Product",items:["React + TypeScript","Vite","Tailwind","SEO and structured data","Stripe commerce integration"]},{title:"Writing & Publishing",items:["Technical documentation","Long-form instructional writing","Audiobook production","Electronic music production","Independent distribution"]}];function v(){return e.jsxs(e.Fragment,{children:[e.jsx(l,{title:"Guillaume Lessard · Founder of QECTOR and iD01t Productions",description:"Guillaume Lessard, software engineer, author, and independent researcher in Longueuil, Québec. Founder of iD01t Productions and creator of QECTOR Decoder v3. ORCID 0009-0000-3465-3753."}),e.jsx(d,{data:{"@context":"https://schema.org","@type":"Person","@id":"https://qector.store/guillaume-lessard#person",name:"Guillaume Lessard",givenName:"Guillaume",familyName:"Lessard",identifier:"0009-0000-3465-3753",jobTitle:"Founder, Software Engineer and Independent Researcher",description:"Software engineer, author and independent researcher. Founder of iD01t Productions and author of the QECTOR Decoder v3 quantum error correction library.",image:"https://qector.store/assets/g.png",url:"https://qector.store/guillaume-lessard",email:"admin@qector.store",address:{"@type":"PostalAddress",streetAddress:"2004 De Lorimier",addressLocality:"Longueuil",addressRegion:"QC",postalCode:"J4K 3H7",addressCountry:"CA"},worksFor:{"@type":"Organization",name:"iD01t Productions",foundingDate:"2023"},knowsAbout:["Quantum error correction","Minimum-weight perfect matching decoders","Belief propagation and OSD decoding","Rust","Python","GPU batch computing","Technical writing"],sameAs:[n,"https://github.com/GuillaumeLessard","https://github.com/qectorlab","https://pypi.org/project/qector-decoder-v3/","https://id01t.itch.io/","https://www.linkedin.com/in/qector/"]}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsx("div",{className:"relative z-10 section-padding",children:e.jsxs("div",{className:"max-w-4xl mx-auto flex flex-col md:flex-row items-center md:items-start gap-8",children:[e.jsx("img",{src:"/assets/g.png",alt:"Portrait of Guillaume Lessard, founder of QECTOR and iD01t Productions",width:160,height:160,loading:"lazy",className:"w-40 h-40 rounded-2xl object-cover border border-cyan-300/30 shadow-lg shrink-0"}),e.jsxs("div",{className:"text-center md:text-left",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-semibold text-cyan-300 uppercase tracking-wider mb-4",children:"Founder · Developer · Author · Independent Researcher"}),e.jsx("h1",{className:"text-4xl md:text-5xl font-extrabold tracking-tight leading-[1.1] mb-4",children:"Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed mb-5",children:"I am Guillaume Lessard, the founder of iD01t Productions and the creator of QECTOR. I design Rust/Python quantum error-correction systems, local MCP tooling, and release workflows where correctness claims are tied to declared workloads, reproducible artifacts, and public records. I build and support the platform independently from Longueuil, Québec."}),e.jsxs("div",{className:"flex flex-wrap justify-center md:justify-start gap-2 text-xs",children:[e.jsx("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"ORCID 0009-0000-3465-3753"}),e.jsx("a",{href:"https://github.com/qectorlab",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"GitHub"}),e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"PyPI"}),e.jsx("span",{className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary",children:"iD01t Productions"})]})]})]})})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Making sure you have the right Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"It is a common Québécois name, and several accomplished professionals share it, including a compiler engineer who works on Swift and a real estate executive. None of them are me, and I claim none of their work. If you are evaluating QECTOR, verifying an invoice, or checking a citation, these are the primary identifiers I control:"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-sm",children:[["ORCID","0009-0000-3465-3753",n],["GitHub","github.com/qectorlab","https://github.com/qectorlab"],["PyPI","qector-decoder-v3","https://pypi.org/project/qector-decoder-v3/"],["Studio","iD01t Productions, Longueuil QC"],["itch.io","id01t.itch.io","https://id01t.itch.io/"],["Email","admin@qector.store","mailto:admin@qector.store"]].map(([r,s,a])=>{const i=e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"text-[11px] text-muted-foreground uppercase tracking-wider mb-0.5",children:r}),e.jsx("div",{className:"text-cyan-300 font-mono text-xs break-all",children:s})]}),o="p-3 bg-void border border-gridline rounded-xl";return a?e.jsx("a",{href:a,target:a.startsWith("mailto")?void 0:"_blank",rel:"noopener noreferrer",className:`${o} hover:border-cyan-300/40 transition-colors`,children:i},r):e.jsx("span",{className:o,children:i},r)})})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Professional Profile"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["My work combines more than two decades of software engineering with focused quantum error-correction research. QECTOR Decoder v3 is published as the stable ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3 1.0.x"}),"Rust/PyO3 package; its companion Claude Plugin is released at ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"v1.0.6"}),". I publish the user manual, normative reference manual, and certification/proof material so identity, software version, and evidence can be checked independently."]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21611214",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["v1.0.0 user manual",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.21611214"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21941046",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["Normative reference manual",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.21941046"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.22046403",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["Verification and proof bundle",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.22046403"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Background"}),e.jsxs("div",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsx("p",{children:"My engineering philosophy is rooted in practical execution. Over the course of my career, I learned to build robust systems because I wanted to make things that worked in the real world. That has been the method ever since: pick the problem, learn what the problem requires, ship the result, publish the evidence."}),e.jsxs("p",{children:["For most of the last twenty years that meant building high-performance applications and tools. I founded"," ",e.jsx("span",{className:"text-secondary",children:"iD01t Productions"})," ","in 2023. QECTOR serves as its dedicated QEC software division, delivering robust decoder pipelines for research and production environments."]}),e.jsx("p",{children:"Quantum error correction is where that method currently points. QECTOR Decoder v3 is a Rust core behind a Python API implementing 17+ decoder configurations, with v1.0.0 as the first stable release (2026-08-06). The public contract separates mathematical correctness from machine-specific performance: decodes can be checked against the declared syndrome relation, while local benchmark results carry their workload, environment, raw artifact, and hash. The qector Claude Plugin v1.0.6 extends the same evidence-first approach into local Claude Code and Claude Desktop workflows."}),e.jsx("p",{className:"text-primary italic border-l-2 border-cyan-300/40 pl-4",children:"We ship. Even tired. Even messy. Still shipping."})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-5",children:"What I've shipped"}),e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"17+",label:"Decoder Configurations"},{value:"10+",label:"Supported Topologies"},{value:"20+",label:"Years Writing Software"},{value:"v1.0.6",label:"Claude Plugin Release"}].map(r=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-2xl mb-1",children:r.value}),e.jsx("div",{className:"text-secondary text-xs",children:r.label})]},r.label))}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mt-4",children:[e.jsxs("div",{className:"p-5 bg-surface border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-2 text-sm",children:"Quantum error correction"}),e.jsxs("ul",{className:"text-secondary text-xs space-y-1.5",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/decoder",className:"text-cyan-300 hover:underline font-semibold",children:"QECTOR Decoder v3"}),": Rust-core Python library, 17+ decoder configurations"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/workbench",className:"text-cyan-300 hover:underline font-semibold",children:"QECTOR Workbench"}),": free desktop GUI and comprehensive MCP server"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/evidence",className:"text-cyan-300 hover:underline font-semibold",children:"Evidence & Provenance"}),": validation reports and SHA-256 sealed manifests on GitHub"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Mastering QEC and the QEC Academy instructional series"})]})]})]}),e.jsxs("div",{className:"p-5 bg-surface border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-2 text-sm",children:"Research & Engineering"}),e.jsxs("ul",{className:"text-secondary text-xs space-y-1.5",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Work signed and traceable through ORCID and Zenodo"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Custom decoder topologies for research workflows"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"High-performance batch simulation pipelines"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Reproducible artifact workflows"})]})]})]})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-5",children:"Skills"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:x.map(r=>e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-3",children:r.title}),e.jsx("ul",{className:"space-y-1.5",children:r.items.map(s=>e.jsxs("li",{className:"text-secondary text-xs flex items-start gap-2",children:[e.jsx(h,{size:14,className:"text-cyan-300 mt-0.5 shrink-0","aria-hidden":"true"}),e.jsx("span",{children:s})]},s))})]},r.title))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"Book a 30-minute call"}),e.jsxs("p",{className:"text-secondary text-sm mb-5",children:["For a decoder audit, licensing questions, or an integration walkthrough, you will speak directly with me. Prefer email? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]}),e.jsx(m,{url:c})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(t,{to:"/pricing",className:"btn-cyan",children:"View Pricing & Licensing"})})]})})]})}export{v as default}; diff --git a/assets/Founder-DhTV1Awk.js b/assets/Founder-DhTV1Awk.js deleted file mode 100644 index ad80d907..00000000 --- a/assets/Founder-DhTV1Awk.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as l,J as d,d as c}from"./index-CxWP17m6.js";import{C as m}from"./CalendlyWidget-BuhQfp2_.js";import{L as t}from"./vendor-PiU4YGcH.js";import{o as h}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const n="https://orcid.org/0009-0000-3465-3753",x=[{title:"Systems & Performance",items:["Rust","PyO3 bindings","C-adjacent FFI","CUDA / OpenCL batch kernels","Memory-layout and throughput tuning"]},{title:"Python Engineering",items:["Python 3.9-3.14","NumPy / SciPy","Binary wheel packaging (manylinux, macOS, Windows)","PyPI release engineering"]},{title:"Quantum Error Correction",items:["MWPM / Blossom matching","Union-Find decoding","Belief propagation + OSD (qLDPC)","Stim / Sinter / PyMatching integration","Benchmark design and reproducibility"]},{title:"Applications & Desktop",items:["CustomTkinter GUI","Self-contained runtime bundling","PyInstaller / Inno Setup / .deb packaging","Model Context Protocol (MCP) servers","Offline-first architecture"]},{title:"Web & Product",items:["React + TypeScript","Vite","Tailwind","SEO and structured data","Stripe commerce integration"]},{title:"Writing & Publishing",items:["Technical documentation","Long-form instructional writing","Audiobook production","Electronic music production","Independent distribution"]}];function v(){return e.jsxs(e.Fragment,{children:[e.jsx(l,{title:"Guillaume Lessard · Founder of QECTOR and iD01t Productions",description:"Guillaume Lessard, software engineer, author, and independent researcher in Longueuil, Québec. Founder of iD01t Productions and creator of QECTOR Decoder v3. ORCID 0009-0000-3465-3753."}),e.jsx(d,{data:{"@context":"https://schema.org","@type":"Person","@id":"https://qector.store/guillaume-lessard#person",name:"Guillaume Lessard",givenName:"Guillaume",familyName:"Lessard",identifier:"0009-0000-3465-3753",jobTitle:"Founder, Software Engineer and Independent Researcher",description:"Software engineer, author and independent researcher. Founder of iD01t Productions and author of the QECTOR Decoder v3 quantum error correction library.",image:"https://qector.store/assets/g.png",url:"https://qector.store/guillaume-lessard",email:"admin@qector.store",address:{"@type":"PostalAddress",streetAddress:"2004 De Lorimier",addressLocality:"Longueuil",addressRegion:"QC",postalCode:"J4K 3H7",addressCountry:"CA"},worksFor:{"@type":"Organization",name:"iD01t Productions",foundingDate:"2023"},knowsAbout:["Quantum error correction","Minimum-weight perfect matching decoders","Belief propagation and OSD decoding","Rust","Python","GPU batch computing","Technical writing"],sameAs:[n,"https://github.com/GuillaumeLessard","https://github.com/qectorlab","https://pypi.org/project/qector-decoder-v3/","https://id01t.itch.io/","https://www.linkedin.com/in/qector/"]}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsx("div",{className:"relative z-10 section-padding",children:e.jsxs("div",{className:"max-w-4xl mx-auto flex flex-col md:flex-row items-center md:items-start gap-8",children:[e.jsx("img",{src:"/assets/g.png",alt:"Portrait of Guillaume Lessard, founder of QECTOR and iD01t Productions",width:160,height:160,loading:"lazy",className:"w-40 h-40 rounded-2xl object-cover border border-cyan-300/30 shadow-lg shrink-0"}),e.jsxs("div",{className:"text-center md:text-left",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-semibold text-cyan-300 uppercase tracking-wider mb-4",children:"Founder · Developer · Author · Independent Researcher"}),e.jsx("h1",{className:"text-4xl md:text-5xl font-extrabold tracking-tight leading-[1.1] mb-4",children:"Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed mb-5",children:"I am Guillaume Lessard, the founder of iD01t Productions and the creator of QECTOR. I design Rust/Python quantum error-correction systems, local MCP tooling, and release workflows where correctness claims are tied to declared workloads, reproducible artifacts, and public records. I build and support the platform independently from Longueuil, Québec."}),e.jsxs("div",{className:"flex flex-wrap justify-center md:justify-start gap-2 text-xs",children:[e.jsx("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"ORCID 0009-0000-3465-3753"}),e.jsx("a",{href:"https://github.com/qectorlab",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"GitHub"}),e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"PyPI"}),e.jsx("span",{className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary",children:"iD01t Productions"})]})]})]})})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Making sure you have the right Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"It is a common Québécois name, and several accomplished professionals share it, including a compiler engineer who works on Swift and a real estate executive. None of them are me, and I claim none of their work. If you are evaluating QECTOR, verifying an invoice, or checking a citation, these are the primary identifiers I control:"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-sm",children:[["ORCID","0009-0000-3465-3753",n],["GitHub","github.com/qectorlab","https://github.com/qectorlab"],["PyPI","qector-decoder-v3","https://pypi.org/project/qector-decoder-v3/"],["Studio","iD01t Productions, Longueuil QC"],["itch.io","id01t.itch.io","https://id01t.itch.io/"],["Email","admin@qector.store","mailto:admin@qector.store"]].map(([r,s,a])=>{const i=e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"text-[11px] text-muted-foreground uppercase tracking-wider mb-0.5",children:r}),e.jsx("div",{className:"text-cyan-300 font-mono text-xs break-all",children:s})]}),o="p-3 bg-void border border-gridline rounded-xl";return a?e.jsx("a",{href:a,target:a.startsWith("mailto")?void 0:"_blank",rel:"noopener noreferrer",className:`${o} hover:border-cyan-300/40 transition-colors`,children:i},r):e.jsx("span",{className:o,children:i},r)})})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Professional Profile"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["My work combines more than two decades of software engineering with focused quantum error-correction research. QECTOR Decoder v3 is published as the stable ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3 1.0.x"}),"Rust/PyO3 package; its companion Claude Plugin is released at ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"v2.0.1"}),". I publish the user manual, normative reference manual, and certification/proof material so identity, software version, and evidence can be checked independently."]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21611214",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["v1.0.0 user manual",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.21611214"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21941046",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["Normative reference manual",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.21941046"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.22046403",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["Verification and proof bundle",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.22046403"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Background"}),e.jsxs("div",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsx("p",{children:"My engineering philosophy is rooted in practical execution. Over the course of my career, I learned to build robust systems because I wanted to make things that worked in the real world. That has been the method ever since: pick the problem, learn what the problem requires, ship the result, publish the evidence."}),e.jsxs("p",{children:["For most of the last twenty years that meant building high-performance applications and tools. I founded"," ",e.jsx("span",{className:"text-secondary",children:"iD01t Productions"})," ","in 2023. QECTOR serves as its dedicated QEC software division, delivering robust decoder pipelines for research and production environments."]}),e.jsx("p",{children:"Quantum error correction is where that method currently points. QECTOR Decoder v3 is a Rust core behind a Python API implementing 17+ decoder configurations, with v1.0.0 (August 2026) as the first stable release and v1.0.1 as the current one (2026-08-06). The public contract separates mathematical correctness from machine-specific performance: decodes can be checked against the declared syndrome relation, while local benchmark results carry their workload, environment, raw artifact, and hash. The qector Claude Plugin v2.0.1 extends the same evidence-first approach into local Claude Code and Claude Desktop workflows."}),e.jsx("p",{className:"text-primary italic border-l-2 border-cyan-300/40 pl-4",children:"We ship. Even tired. Even messy. Still shipping."})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-5",children:"What I've shipped"}),e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"17+",label:"Decoder Configurations"},{value:"10+",label:"Supported Topologies"},{value:"20+",label:"Years Writing Software"},{value:"v2.0.1",label:"Claude Plugin Release"}].map(r=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-2xl mb-1",children:r.value}),e.jsx("div",{className:"text-secondary text-xs",children:r.label})]},r.label))}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mt-4",children:[e.jsxs("div",{className:"p-5 bg-surface border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-2 text-sm",children:"Quantum error correction"}),e.jsxs("ul",{className:"text-secondary text-xs space-y-1.5",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/decoder",className:"text-cyan-300 hover:underline font-semibold",children:"QECTOR Decoder v3"}),": Rust-core Python library, 17+ decoder configurations"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/workbench",className:"text-cyan-300 hover:underline font-semibold",children:"QECTOR Workbench"}),": free desktop GUI and comprehensive MCP server"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/evidence",className:"text-cyan-300 hover:underline font-semibold",children:"Evidence & Provenance"}),": validation reports and SHA-256 sealed manifests on GitHub"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Mastering QEC and the QEC Academy instructional series"})]})]})]}),e.jsxs("div",{className:"p-5 bg-surface border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-2 text-sm",children:"Research & Engineering"}),e.jsxs("ul",{className:"text-secondary text-xs space-y-1.5",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Work signed and traceable through ORCID and Zenodo"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Custom decoder topologies for research workflows"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"High-performance batch simulation pipelines"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Reproducible artifact workflows"})]})]})]})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-5",children:"Skills"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:x.map(r=>e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-3",children:r.title}),e.jsx("ul",{className:"space-y-1.5",children:r.items.map(s=>e.jsxs("li",{className:"text-secondary text-xs flex items-start gap-2",children:[e.jsx(h,{size:14,className:"text-cyan-300 mt-0.5 shrink-0","aria-hidden":"true"}),e.jsx("span",{children:s})]},s))})]},r.title))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"Book a 30-minute call"}),e.jsxs("p",{className:"text-secondary text-sm mb-5",children:["For a decoder audit, licensing questions, or an integration walkthrough, you will speak directly with me. Prefer email? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]}),e.jsx(m,{url:c})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(t,{to:"/pricing",className:"btn-cyan",children:"View Pricing & Licensing"})})]})})]})}export{v as default}; diff --git a/assets/Founder-Do9ecKUC.js b/assets/Founder-Do9ecKUC.js deleted file mode 100644 index b39fe4aa..00000000 --- a/assets/Founder-Do9ecKUC.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as l,J as d,d as c}from"./index-DRAXObZB.js";import{C as m}from"./CalendlyWidget-BuhQfp2_.js";import{L as t}from"./vendor-PiU4YGcH.js";import{o as h}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const n="https://orcid.org/0009-0000-3465-3753",x=[{title:"Systems & Performance",items:["Rust","PyO3 bindings","C-adjacent FFI","CUDA / OpenCL batch kernels","Memory-layout and throughput tuning"]},{title:"Python Engineering",items:["Python 3.9-3.13","NumPy / SciPy","Binary wheel packaging (manylinux, macOS, Windows)","PyPI release engineering"]},{title:"Quantum Error Correction",items:["MWPM / Blossom matching","Union-Find decoding","Belief propagation + OSD (qLDPC)","Stim / Sinter / PyMatching integration","Benchmark design and reproducibility"]},{title:"Applications & Desktop",items:["CustomTkinter GUI","Self-contained runtime bundling","PyInstaller / Inno Setup / .deb packaging","Model Context Protocol (MCP) servers","Offline-first architecture"]},{title:"Web & Product",items:["React + TypeScript","Vite","Tailwind","SEO and structured data","Stripe commerce integration"]},{title:"Writing & Publishing",items:["Technical documentation","Long-form instructional writing","Audiobook production","Electronic music production","Independent distribution"]}];function v(){return e.jsxs(e.Fragment,{children:[e.jsx(l,{title:"Guillaume Lessard · Founder of QECTOR and iD01t Productions",description:"Guillaume Lessard, software engineer, author, and independent researcher in Longueuil, Québec. Founder of iD01t Productions and creator of QECTOR Decoder v3. ORCID 0009-0000-3465-3753."}),e.jsx(d,{data:{"@context":"https://schema.org","@type":"Person","@id":"https://qector.store/guillaume-lessard#person",name:"Guillaume Lessard",givenName:"Guillaume",familyName:"Lessard",identifier:"0009-0000-3465-3753",jobTitle:"Founder, Software Engineer and Independent Researcher",description:"Software engineer, author and independent researcher. Founder of iD01t Productions and author of the QECTOR Decoder v3 quantum error correction library.",image:"https://qector.store/assets/g.png",url:"https://qector.store/guillaume-lessard",email:"admin@qector.store",address:{"@type":"PostalAddress",streetAddress:"2004 De Lorimier",addressLocality:"Longueuil",addressRegion:"QC",postalCode:"J4K 3H7",addressCountry:"CA"},worksFor:{"@type":"Organization",name:"iD01t Productions",foundingDate:"2023"},knowsAbout:["Quantum error correction","Minimum-weight perfect matching decoders","Belief propagation and OSD decoding","Rust","Python","GPU batch computing","Technical writing"],sameAs:[n,"https://github.com/GuillaumeLessard","https://github.com/qectorlab","https://pypi.org/project/qector-decoder-v3/","https://id01t.itch.io/","https://www.linkedin.com/in/qector/"]}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsx("div",{className:"relative z-10 section-padding",children:e.jsxs("div",{className:"max-w-4xl mx-auto flex flex-col md:flex-row items-center md:items-start gap-8",children:[e.jsx("img",{src:"/assets/g.png",alt:"Portrait of Guillaume Lessard, founder of QECTOR and iD01t Productions",width:160,height:160,loading:"lazy",className:"w-40 h-40 rounded-2xl object-cover border border-cyan-300/30 shadow-lg shrink-0"}),e.jsxs("div",{className:"text-center md:text-left",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-semibold text-cyan-300 uppercase tracking-wider mb-4",children:"Founder · Developer · Author · Independent Researcher"}),e.jsx("h1",{className:"text-4xl md:text-5xl font-extrabold tracking-tight leading-[1.1] mb-4",children:"Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed mb-5",children:"I am Guillaume Lessard, the founder of iD01t Productions and the creator of QECTOR. I design Rust/Python quantum error-correction systems, local MCP tooling, and release workflows where correctness claims are tied to declared workloads, reproducible artifacts, and public records. I build and support the platform independently from Longueuil, Québec."}),e.jsxs("div",{className:"flex flex-wrap justify-center md:justify-start gap-2 text-xs",children:[e.jsx("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"ORCID 0009-0000-3465-3753"}),e.jsx("a",{href:"https://github.com/qectorlab",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"GitHub"}),e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"PyPI"}),e.jsx("span",{className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary",children:"iD01t Productions"})]})]})]})})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Making sure you have the right Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"It is a common Québécois name, and several accomplished professionals share it, including a compiler engineer who works on Swift and a real estate executive. None of them are me, and I claim none of their work. If you are evaluating QECTOR, verifying an invoice, or checking a citation, these are the primary identifiers I control:"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-sm",children:[["ORCID","0009-0000-3465-3753",n],["GitHub","github.com/qectorlab","https://github.com/qectorlab"],["PyPI","qector-decoder-v3","https://pypi.org/project/qector-decoder-v3/"],["Studio","iD01t Productions, Longueuil QC"],["itch.io","id01t.itch.io","https://id01t.itch.io/"],["Email","admin@qector.store","mailto:admin@qector.store"]].map(([r,s,a])=>{const i=e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"text-[11px] text-muted-foreground uppercase tracking-wider mb-0.5",children:r}),e.jsx("div",{className:"text-cyan-300 font-mono text-xs break-all",children:s})]}),o="p-3 bg-void border border-gridline rounded-xl";return a?e.jsx("a",{href:a,target:a.startsWith("mailto")?void 0:"_blank",rel:"noopener noreferrer",className:`${o} hover:border-cyan-300/40 transition-colors`,children:i},r):e.jsx("span",{className:o,children:i},r)})})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Professional Profile"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["My work combines more than two decades of software engineering with focused quantum error-correction research. QECTOR Decoder v3 is published as the stable ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3 1.0.x"}),"Rust/PyO3 package; its companion Claude Plugin is released at ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"v1.0.6"}),". I publish the user manual, normative reference manual, and certification/proof material so identity, software version, and evidence can be checked independently."]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21611214",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["v1.0.0 user manual",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.21611214"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21941046",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["Normative reference manual",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.21941046"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.22046403",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["Verification and proof bundle",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.22046403"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Background"}),e.jsxs("div",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsx("p",{children:"My engineering philosophy is rooted in practical execution. Over the course of my career, I learned to build robust systems because I wanted to make things that worked in the real world. That has been the method ever since: pick the problem, learn what the problem requires, ship the result, publish the evidence."}),e.jsxs("p",{children:["For most of the last twenty years that meant building high-performance applications and tools. I founded"," ",e.jsx("span",{className:"text-secondary",children:"iD01t Productions"})," ","in 2023. QECTOR serves as its dedicated QEC software division, delivering robust decoder pipelines for research and production environments."]}),e.jsx("p",{children:"Quantum error correction is where that method currently points. QECTOR Decoder v3 is a Rust core behind a Python API implementing 17+ decoder configurations, with v1.0.0 as the first stable release (2026-08-06). The public contract separates mathematical correctness from machine-specific performance: decodes can be checked against the declared syndrome relation, while local benchmark results carry their workload, environment, raw artifact, and hash. The qector Claude Plugin v1.0.6 extends the same evidence-first approach into local Claude Code and Claude Desktop workflows."}),e.jsx("p",{className:"text-primary italic border-l-2 border-cyan-300/40 pl-4",children:"We ship. Even tired. Even messy. Still shipping."})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-5",children:"What I've shipped"}),e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"17+",label:"Decoder Configurations"},{value:"10+",label:"Supported Topologies"},{value:"20+",label:"Years Writing Software"},{value:"v1.0.6",label:"Claude Plugin Release"}].map(r=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-2xl mb-1",children:r.value}),e.jsx("div",{className:"text-secondary text-xs",children:r.label})]},r.label))}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mt-4",children:[e.jsxs("div",{className:"p-5 bg-surface border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-2 text-sm",children:"Quantum error correction"}),e.jsxs("ul",{className:"text-secondary text-xs space-y-1.5",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/decoder",className:"text-cyan-300 hover:underline font-semibold",children:"QECTOR Decoder v3"}),": Rust-core Python library, 17+ decoder configurations"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/workbench",className:"text-cyan-300 hover:underline font-semibold",children:"QECTOR Workbench"}),": free desktop GUI and comprehensive MCP server"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/evidence",className:"text-cyan-300 hover:underline font-semibold",children:"Evidence & Provenance"}),": validation reports and SHA-256 sealed manifests on GitHub"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Mastering QEC and the QEC Academy instructional series"})]})]})]}),e.jsxs("div",{className:"p-5 bg-surface border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-2 text-sm",children:"Research & Engineering"}),e.jsxs("ul",{className:"text-secondary text-xs space-y-1.5",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Work signed and traceable through ORCID and Zenodo"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Custom decoder topologies for research workflows"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"High-performance batch simulation pipelines"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Reproducible artifact workflows"})]})]})]})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-5",children:"Skills"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:x.map(r=>e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-3",children:r.title}),e.jsx("ul",{className:"space-y-1.5",children:r.items.map(s=>e.jsxs("li",{className:"text-secondary text-xs flex items-start gap-2",children:[e.jsx(h,{size:14,className:"text-cyan-300 mt-0.5 shrink-0","aria-hidden":"true"}),e.jsx("span",{children:s})]},s))})]},r.title))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"Book a 30-minute call"}),e.jsxs("p",{className:"text-secondary text-sm mb-5",children:["For a decoder audit, licensing questions, or an integration walkthrough, you will speak directly with me. Prefer email? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]}),e.jsx(m,{url:c})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(t,{to:"/pricing",className:"btn-cyan",children:"View Pricing & Licensing"})})]})})]})}export{v as default}; diff --git a/assets/Founder-DrgUXXtt.js b/assets/Founder-DrgUXXtt.js deleted file mode 100644 index 84ab1bf6..00000000 --- a/assets/Founder-DrgUXXtt.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as l,J as d,d as c}from"./index-abfjMTlQ.js";import{C as m}from"./CalendlyWidget-BuhQfp2_.js";import{L as t}from"./vendor-PiU4YGcH.js";import{o as h}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const n="https://orcid.org/0009-0000-3465-3753",x=[{title:"Systems & Performance",items:["Rust","PyO3 bindings","C-adjacent FFI","CUDA / OpenCL batch kernels","Memory-layout and throughput tuning"]},{title:"Python Engineering",items:["Python 3.9-3.14","NumPy / SciPy","Binary wheel packaging (manylinux, macOS, Windows)","PyPI release engineering"]},{title:"Quantum Error Correction",items:["MWPM / Blossom matching","Union-Find decoding","Belief propagation + OSD (qLDPC)","Stim / Sinter / PyMatching integration","Benchmark design and reproducibility"]},{title:"Applications & Desktop",items:["CustomTkinter GUI","Self-contained runtime bundling","PyInstaller / Inno Setup / .deb packaging","Model Context Protocol (MCP) servers","Offline-first architecture"]},{title:"Web & Product",items:["React + TypeScript","Vite","Tailwind","SEO and structured data","Stripe commerce integration"]},{title:"Writing & Publishing",items:["Technical documentation","Long-form instructional writing","Audiobook production","Electronic music production","Independent distribution"]}];function v(){return e.jsxs(e.Fragment,{children:[e.jsx(l,{title:"Guillaume Lessard · Founder of QECTOR and iD01t Productions",description:"Guillaume Lessard, software engineer, author, and independent researcher in Longueuil, Québec. Founder of iD01t Productions and creator of QECTOR Decoder v3. ORCID 0009-0000-3465-3753."}),e.jsx(d,{data:{"@context":"https://schema.org","@type":"Person","@id":"https://qector.store/guillaume-lessard#person",name:"Guillaume Lessard",givenName:"Guillaume",familyName:"Lessard",identifier:"0009-0000-3465-3753",jobTitle:"Founder, Software Engineer and Independent Researcher",description:"Software engineer, author and independent researcher. Founder of iD01t Productions and author of the QECTOR Decoder v3 quantum error correction library.",image:"https://qector.store/assets/g.png",url:"https://qector.store/guillaume-lessard",email:"admin@qector.store",address:{"@type":"PostalAddress",streetAddress:"2004 De Lorimier",addressLocality:"Longueuil",addressRegion:"QC",postalCode:"J4K 3H7",addressCountry:"CA"},worksFor:{"@type":"Organization",name:"iD01t Productions",foundingDate:"2012"},knowsAbout:["Quantum error correction","Minimum-weight perfect matching decoders","Belief propagation and OSD decoding","Rust","Python","GPU batch computing","Technical writing"],sameAs:[n,"https://github.com/GuillaumeLessard","https://github.com/qectorlab","https://pypi.org/project/qector-decoder-v3/","https://id01t.itch.io/","https://www.linkedin.com/in/qector/"]}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsx("div",{className:"relative z-10 section-padding",children:e.jsxs("div",{className:"max-w-4xl mx-auto flex flex-col md:flex-row items-center md:items-start gap-8",children:[e.jsx("img",{src:"/assets/g.png",alt:"Portrait of Guillaume Lessard, founder of QECTOR and iD01t Productions",width:160,height:160,loading:"lazy",className:"w-40 h-40 rounded-2xl object-cover border border-cyan-300/30 shadow-lg shrink-0"}),e.jsxs("div",{className:"text-center md:text-left",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-semibold text-cyan-300 uppercase tracking-wider mb-4",children:"Founder · Developer · Author · Independent Researcher"}),e.jsx("h1",{className:"text-4xl md:text-5xl font-extrabold tracking-tight leading-[1.1] mb-4",children:"Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed mb-5",children:"I am Guillaume Lessard, the founder of iD01t Productions and the creator of QECTOR. I design Rust/Python quantum error-correction systems, local MCP tooling, and release workflows where correctness claims are tied to declared workloads, reproducible artifacts, and public records. I build and support the platform independently from Longueuil, Québec."}),e.jsxs("div",{className:"flex flex-wrap justify-center md:justify-start gap-2 text-xs",children:[e.jsx("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"ORCID 0009-0000-3465-3753"}),e.jsx("a",{href:"https://github.com/qectorlab",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"GitHub"}),e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"PyPI"}),e.jsx("span",{className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary",children:"iD01t Productions"})]})]})]})})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Making sure you have the right Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"It is a common Québécois name, and several accomplished professionals share it, including a compiler engineer who works on Swift and a real estate executive. None of them are me, and I claim none of their work. If you are evaluating QECTOR, verifying an invoice, or checking a citation, these are the primary identifiers I control:"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-sm",children:[["ORCID","0009-0000-3465-3753",n],["GitHub","github.com/qectorlab","https://github.com/qectorlab"],["PyPI","qector-decoder-v3","https://pypi.org/project/qector-decoder-v3/"],["Studio","iD01t Productions, Longueuil QC"],["itch.io","id01t.itch.io","https://id01t.itch.io/"],["Email","admin@qector.store","mailto:admin@qector.store"]].map(([r,s,a])=>{const i=e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"text-[11px] text-muted-foreground uppercase tracking-wider mb-0.5",children:r}),e.jsx("div",{className:"text-cyan-300 font-mono text-xs break-all",children:s})]}),o="p-3 bg-void border border-gridline rounded-xl";return a?e.jsx("a",{href:a,target:a.startsWith("mailto")?void 0:"_blank",rel:"noopener noreferrer",className:`${o} hover:border-cyan-300/40 transition-colors`,children:i},r):e.jsx("span",{className:o,children:i},r)})})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Professional Profile"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["My work combines more than two decades of software engineering with focused quantum error-correction research. QECTOR Decoder v3 is published as the stable ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3 1.0.x"}),"Rust/PyO3 package; its companion Claude Plugin is released at ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"v2.0.1"}),". I publish the user manual, normative reference manual, and certification/proof material so identity, software version, and evidence can be checked independently."]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21611214",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["v1.0.0 user manual",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.21611214"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21941046",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["Normative reference manual",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.21941046"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.22046403",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["Verification and proof bundle",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.22046403"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Background"}),e.jsxs("div",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsx("p",{children:"My engineering philosophy is rooted in practical execution. Over the course of my career, I learned to build robust systems because I wanted to make things that worked in the real world. That has been the method ever since: pick the problem, learn what the problem requires, ship the result, publish the evidence."}),e.jsxs("p",{children:["For most of the last twenty years that meant building high-performance applications and tools. I founded"," ",e.jsx("span",{className:"text-secondary",children:"iD01t Productions"})," ","in 2012. QECTOR serves as its dedicated QEC software division, delivering robust decoder pipelines for research and production environments."]}),e.jsx("p",{children:"Quantum error correction is where that method currently points. QECTOR Decoder v3 is a Rust core behind a Python API implementing 17+ decoder configurations, with v1.0.0 (August 2026) as the first stable release and v1.0.1 as the current one (2026-08-06). The public contract separates mathematical correctness from machine-specific performance: decodes can be checked against the declared syndrome relation, while local benchmark results carry their workload, environment, raw artifact, and hash. The qector Claude Plugin v2.0.1 extends the same evidence-first approach into local Claude Code and Claude Desktop workflows."}),e.jsx("p",{className:"text-primary italic border-l-2 border-cyan-300/40 pl-4",children:"We ship. Even tired. Even messy. Still shipping."})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-5",children:"What I've shipped"}),e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"17+",label:"Decoder Configurations"},{value:"10+",label:"Supported Topologies"},{value:"20+",label:"Years Writing Software"},{value:"v2.0.1",label:"Claude Plugin Release"}].map(r=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-2xl mb-1",children:r.value}),e.jsx("div",{className:"text-secondary text-xs",children:r.label})]},r.label))}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mt-4",children:[e.jsxs("div",{className:"p-5 bg-surface border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-2 text-sm",children:"Quantum error correction"}),e.jsxs("ul",{className:"text-secondary text-xs space-y-1.5",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/decoder",className:"text-cyan-300 hover:underline font-semibold",children:"QECTOR Decoder v3"}),": Rust-core Python library, 17+ decoder configurations"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/workbench",className:"text-cyan-300 hover:underline font-semibold",children:"QECTOR Workbench"}),": free desktop GUI and comprehensive MCP server"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/evidence",className:"text-cyan-300 hover:underline font-semibold",children:"Evidence & Provenance"}),": validation reports and SHA-256 sealed manifests on GitHub"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Mastering QEC and the QEC Academy instructional series"})]})]})]}),e.jsxs("div",{className:"p-5 bg-surface border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-2 text-sm",children:"Research & Engineering"}),e.jsxs("ul",{className:"text-secondary text-xs space-y-1.5",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Work signed and traceable through ORCID and Zenodo"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Custom decoder topologies for research workflows"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"High-performance batch simulation pipelines"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Reproducible artifact workflows"})]})]})]})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-5",children:"Skills"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:x.map(r=>e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-3",children:r.title}),e.jsx("ul",{className:"space-y-1.5",children:r.items.map(s=>e.jsxs("li",{className:"text-secondary text-xs flex items-start gap-2",children:[e.jsx(h,{size:14,className:"text-cyan-300 mt-0.5 shrink-0","aria-hidden":"true"}),e.jsx("span",{children:s})]},s))})]},r.title))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"Book a 30-minute call"}),e.jsxs("p",{className:"text-secondary text-sm mb-5",children:["For a decoder audit, licensing questions, or an integration walkthrough, you will speak directly with me. Prefer email? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]}),e.jsx(m,{url:c})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(t,{to:"/pricing",className:"btn-cyan",children:"View Pricing & Licensing"})})]})})]})}export{v as default}; diff --git a/assets/Founder-RJ-BJAag.js b/assets/Founder-RJ-BJAag.js deleted file mode 100644 index 7c521b22..00000000 --- a/assets/Founder-RJ-BJAag.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as l,J as d,d as c}from"./index-CqAA-ZXu.js";import{C as m}from"./CalendlyWidget-BuhQfp2_.js";import{L as t}from"./vendor-PiU4YGcH.js";import{o as h}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const n="https://orcid.org/0009-0000-3465-3753",x=[{title:"Systems & Performance",items:["Rust","PyO3 bindings","C-adjacent FFI","CUDA / OpenCL batch kernels","Memory-layout and throughput tuning"]},{title:"Python Engineering",items:["Python 3.9-3.13","NumPy / SciPy","Binary wheel packaging (manylinux, macOS, Windows)","PyPI release engineering"]},{title:"Quantum Error Correction",items:["MWPM / Blossom matching","Union-Find decoding","Belief propagation + OSD (qLDPC)","Stim / Sinter / PyMatching integration","Benchmark design and reproducibility"]},{title:"Applications & Desktop",items:["CustomTkinter GUI","Self-contained runtime bundling","PyInstaller / Inno Setup / .deb packaging","Model Context Protocol (MCP) servers","Offline-first architecture"]},{title:"Web & Product",items:["React + TypeScript","Vite","Tailwind","SEO and structured data","Stripe commerce integration"]},{title:"Writing & Publishing",items:["Technical documentation","Long-form instructional writing","Audiobook production","Electronic music production","Independent distribution"]}];function v(){return e.jsxs(e.Fragment,{children:[e.jsx(l,{title:"Guillaume Lessard · Founder of QECTOR and iD01t Productions",description:"Guillaume Lessard, software engineer, author, and independent researcher in Longueuil, Québec. Founder of iD01t Productions and creator of QECTOR Decoder v3. ORCID 0009-0000-3465-3753."}),e.jsx(d,{data:{"@context":"https://schema.org","@type":"Person","@id":"https://qector.store/guillaume-lessard#person",name:"Guillaume Lessard",givenName:"Guillaume",familyName:"Lessard",identifier:"0009-0000-3465-3753",jobTitle:"Founder, Software Engineer and Independent Researcher",description:"Software engineer, author and independent researcher. Founder of iD01t Productions and author of the QECTOR Decoder v3 quantum error correction library.",image:"https://qector.store/assets/g.png",url:"https://qector.store/guillaume-lessard",email:"admin@qector.store",address:{"@type":"PostalAddress",streetAddress:"2004 De Lorimier",addressLocality:"Longueuil",addressRegion:"QC",postalCode:"J4K 3H7",addressCountry:"CA"},worksFor:{"@type":"Organization",name:"iD01t Productions",foundingDate:"2023"},knowsAbout:["Quantum error correction","Minimum-weight perfect matching decoders","Belief propagation and OSD decoding","Rust","Python","GPU batch computing","Technical writing"],sameAs:[n,"https://github.com/GuillaumeLessard","https://github.com/qectorlab","https://pypi.org/project/qector-decoder-v3/","https://id01t.itch.io/","https://www.linkedin.com/in/qector/"]}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsx("div",{className:"relative z-10 section-padding",children:e.jsxs("div",{className:"max-w-4xl mx-auto flex flex-col md:flex-row items-center md:items-start gap-8",children:[e.jsx("img",{src:"/assets/g.png",alt:"Portrait of Guillaume Lessard, founder of QECTOR and iD01t Productions",width:160,height:160,loading:"lazy",className:"w-40 h-40 rounded-2xl object-cover border border-cyan-300/30 shadow-lg shrink-0"}),e.jsxs("div",{className:"text-center md:text-left",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-semibold text-cyan-300 uppercase tracking-wider mb-4",children:"Founder · Developer · Author · Independent Researcher"}),e.jsx("h1",{className:"text-4xl md:text-5xl font-extrabold tracking-tight leading-[1.1] mb-4",children:"Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed mb-5",children:"I am Guillaume Lessard, the founder of iD01t Productions and the creator of QECTOR. I design Rust/Python quantum error-correction systems, local MCP tooling, and release workflows where correctness claims are tied to declared workloads, reproducible artifacts, and public records. I build and support the platform independently from Longueuil, Québec."}),e.jsxs("div",{className:"flex flex-wrap justify-center md:justify-start gap-2 text-xs",children:[e.jsx("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"ORCID 0009-0000-3465-3753"}),e.jsx("a",{href:"https://github.com/qectorlab",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"GitHub"}),e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"PyPI"}),e.jsx("span",{className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary",children:"iD01t Productions"})]})]})]})})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Making sure you have the right Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"It is a common Québécois name, and several accomplished professionals share it, including a compiler engineer who works on Swift and a real estate executive. None of them are me, and I claim none of their work. If you are evaluating QECTOR, verifying an invoice, or checking a citation, these are the primary identifiers I control:"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-sm",children:[["ORCID","0009-0000-3465-3753",n],["GitHub","github.com/qectorlab","https://github.com/qectorlab"],["PyPI","qector-decoder-v3","https://pypi.org/project/qector-decoder-v3/"],["Studio","iD01t Productions, Longueuil QC"],["itch.io","id01t.itch.io","https://id01t.itch.io/"],["Email","admin@qector.store","mailto:admin@qector.store"]].map(([r,s,a])=>{const i=e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"text-[11px] text-muted-foreground uppercase tracking-wider mb-0.5",children:r}),e.jsx("div",{className:"text-cyan-300 font-mono text-xs break-all",children:s})]}),o="p-3 bg-void border border-gridline rounded-xl";return a?e.jsx("a",{href:a,target:a.startsWith("mailto")?void 0:"_blank",rel:"noopener noreferrer",className:`${o} hover:border-cyan-300/40 transition-colors`,children:i},r):e.jsx("span",{className:o,children:i},r)})})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Professional Profile"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["My work combines more than two decades of software engineering with focused quantum error-correction research. QECTOR Decoder v3 is published as the stable ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3 1.0.x"}),"Rust/PyO3 package; its companion Claude Plugin is released at ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"v1.0.6"}),". I publish the user manual, normative reference manual, and certification/proof material so identity, software version, and evidence can be checked independently."]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21611214",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["v1.0.0 user manual",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.21611214"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21941046",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["Normative reference manual",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.21941046"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.22046403",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["Verification and proof bundle",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.22046403"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Background"}),e.jsxs("div",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsx("p",{children:"My engineering philosophy is rooted in practical execution. Over the course of my career, I learned to build robust systems because I wanted to make things that worked in the real world. That has been the method ever since: pick the problem, learn what the problem requires, ship the result, publish the evidence."}),e.jsxs("p",{children:["For most of the last twenty years that meant building high-performance applications and tools. I founded"," ",e.jsx("span",{className:"text-secondary",children:"iD01t Productions"})," ","in 2023. QECTOR serves as its dedicated QEC software division, delivering robust decoder pipelines for research and production environments."]}),e.jsx("p",{children:"Quantum error correction is where that method currently points. QECTOR Decoder v3 is a Rust core behind a Python API implementing 17+ decoder configurations, with v1.0.0 as the first stable release (2026-08-06). The public contract separates mathematical correctness from machine-specific performance: decodes can be checked against the declared syndrome relation, while local benchmark results carry their workload, environment, raw artifact, and hash. The qector Claude Plugin v1.0.6 extends the same evidence-first approach into local Claude Code and Claude Desktop workflows."}),e.jsx("p",{className:"text-primary italic border-l-2 border-cyan-300/40 pl-4",children:"We ship. Even tired. Even messy. Still shipping."})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-5",children:"What I've shipped"}),e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"17+",label:"Decoder Configurations"},{value:"10+",label:"Supported Topologies"},{value:"20+",label:"Years Writing Software"},{value:"v1.0.6",label:"Claude Plugin Release"}].map(r=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-2xl mb-1",children:r.value}),e.jsx("div",{className:"text-secondary text-xs",children:r.label})]},r.label))}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mt-4",children:[e.jsxs("div",{className:"p-5 bg-surface border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-2 text-sm",children:"Quantum error correction"}),e.jsxs("ul",{className:"text-secondary text-xs space-y-1.5",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/decoder",className:"text-cyan-300 hover:underline font-semibold",children:"QECTOR Decoder v3"}),": Rust-core Python library, 17+ decoder configurations"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/workbench",className:"text-cyan-300 hover:underline font-semibold",children:"QECTOR Workbench"}),": free desktop GUI and comprehensive MCP server"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/evidence",className:"text-cyan-300 hover:underline font-semibold",children:"Evidence & Provenance"}),": validation reports and SHA-256 sealed manifests on GitHub"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Mastering QEC and the QEC Academy instructional series"})]})]})]}),e.jsxs("div",{className:"p-5 bg-surface border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-2 text-sm",children:"Research & Engineering"}),e.jsxs("ul",{className:"text-secondary text-xs space-y-1.5",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Work signed and traceable through ORCID and Zenodo"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Custom decoder topologies for research workflows"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"High-performance batch simulation pipelines"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Reproducible artifact workflows"})]})]})]})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-5",children:"Skills"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:x.map(r=>e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-3",children:r.title}),e.jsx("ul",{className:"space-y-1.5",children:r.items.map(s=>e.jsxs("li",{className:"text-secondary text-xs flex items-start gap-2",children:[e.jsx(h,{size:14,className:"text-cyan-300 mt-0.5 shrink-0","aria-hidden":"true"}),e.jsx("span",{children:s})]},s))})]},r.title))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"Book a 30-minute call"}),e.jsxs("p",{className:"text-secondary text-sm mb-5",children:["For a decoder audit, licensing questions, or an integration walkthrough, you will speak directly with me. Prefer email? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]}),e.jsx(m,{url:c})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(t,{to:"/pricing",className:"btn-cyan",children:"View Pricing & Licensing"})})]})})]})}export{v as default}; diff --git a/assets/Founder-Y62YqrcF.js b/assets/Founder-Y62YqrcF.js deleted file mode 100644 index 9445771e..00000000 --- a/assets/Founder-Y62YqrcF.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as l,J as d,d as c}from"./index-DkYdPRY7.js";import{C as m}from"./CalendlyWidget-BuhQfp2_.js";import{L as t}from"./vendor-PiU4YGcH.js";import{o as h}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const n="https://orcid.org/0009-0000-3465-3753",x=[{title:"Systems & Performance",items:["Rust","PyO3 bindings","C-adjacent FFI","CUDA / OpenCL batch kernels","Memory-layout and throughput tuning"]},{title:"Python Engineering",items:["Python 3.9-3.14","NumPy / SciPy","Binary wheel packaging (manylinux, macOS, Windows)","PyPI release engineering"]},{title:"Quantum Error Correction",items:["MWPM / Blossom matching","Union-Find decoding","Belief propagation + OSD (qLDPC)","Stim / Sinter / PyMatching integration","Benchmark design and reproducibility"]},{title:"Applications & Desktop",items:["CustomTkinter GUI","Self-contained runtime bundling","PyInstaller / Inno Setup / .deb packaging","Model Context Protocol (MCP) servers","Offline-first architecture"]},{title:"Web & Product",items:["React + TypeScript","Vite","Tailwind","SEO and structured data","Stripe commerce integration"]},{title:"Writing & Publishing",items:["Technical documentation","Long-form instructional writing","Audiobook production","Electronic music production","Independent distribution"]}];function v(){return e.jsxs(e.Fragment,{children:[e.jsx(l,{title:"Guillaume Lessard · Founder of QECTOR and iD01t Productions",description:"Guillaume Lessard, software engineer, author, and independent researcher in Longueuil, Québec. Founder of iD01t Productions and creator of QECTOR Decoder v3. ORCID 0009-0000-3465-3753."}),e.jsx(d,{data:{"@context":"https://schema.org","@type":"Person","@id":"https://qector.store/guillaume-lessard#person",name:"Guillaume Lessard",givenName:"Guillaume",familyName:"Lessard",identifier:"0009-0000-3465-3753",jobTitle:"Founder, Software Engineer and Independent Researcher",description:"Software engineer, author and independent researcher. Founder of iD01t Productions and author of the QECTOR Decoder v3 quantum error correction library.",image:"https://qector.store/assets/g.png",url:"https://qector.store/guillaume-lessard",email:"admin@qector.store",address:{"@type":"PostalAddress",streetAddress:"2004 De Lorimier",addressLocality:"Longueuil",addressRegion:"QC",postalCode:"J4K 3H7",addressCountry:"CA"},worksFor:{"@type":"Organization",name:"iD01t Productions",foundingDate:"2023"},knowsAbout:["Quantum error correction","Minimum-weight perfect matching decoders","Belief propagation and OSD decoding","Rust","Python","GPU batch computing","Technical writing"],sameAs:[n,"https://github.com/GuillaumeLessard","https://github.com/qectorlab","https://pypi.org/project/qector-decoder-v3/","https://id01t.itch.io/","https://www.linkedin.com/in/qector/"]}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsx("div",{className:"relative z-10 section-padding",children:e.jsxs("div",{className:"max-w-4xl mx-auto flex flex-col md:flex-row items-center md:items-start gap-8",children:[e.jsx("img",{src:"/assets/g.png",alt:"Portrait of Guillaume Lessard, founder of QECTOR and iD01t Productions",width:160,height:160,loading:"lazy",className:"w-40 h-40 rounded-2xl object-cover border border-cyan-300/30 shadow-lg shrink-0"}),e.jsxs("div",{className:"text-center md:text-left",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-semibold text-cyan-300 uppercase tracking-wider mb-4",children:"Founder · Developer · Author · Independent Researcher"}),e.jsx("h1",{className:"text-4xl md:text-5xl font-extrabold tracking-tight leading-[1.1] mb-4",children:"Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed mb-5",children:"I am Guillaume Lessard, the founder of iD01t Productions and the creator of QECTOR. I design Rust/Python quantum error-correction systems, local MCP tooling, and release workflows where correctness claims are tied to declared workloads, reproducible artifacts, and public records. I build and support the platform independently from Longueuil, Québec."}),e.jsxs("div",{className:"flex flex-wrap justify-center md:justify-start gap-2 text-xs",children:[e.jsx("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"ORCID 0009-0000-3465-3753"}),e.jsx("a",{href:"https://github.com/qectorlab",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"GitHub"}),e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"PyPI"}),e.jsx("span",{className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary",children:"iD01t Productions"})]})]})]})})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Making sure you have the right Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"It is a common Québécois name, and several accomplished professionals share it, including a compiler engineer who works on Swift and a real estate executive. None of them are me, and I claim none of their work. If you are evaluating QECTOR, verifying an invoice, or checking a citation, these are the primary identifiers I control:"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-sm",children:[["ORCID","0009-0000-3465-3753",n],["GitHub","github.com/qectorlab","https://github.com/qectorlab"],["PyPI","qector-decoder-v3","https://pypi.org/project/qector-decoder-v3/"],["Studio","iD01t Productions, Longueuil QC"],["itch.io","id01t.itch.io","https://id01t.itch.io/"],["Email","admin@qector.store","mailto:admin@qector.store"]].map(([r,s,a])=>{const i=e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"text-[11px] text-muted-foreground uppercase tracking-wider mb-0.5",children:r}),e.jsx("div",{className:"text-cyan-300 font-mono text-xs break-all",children:s})]}),o="p-3 bg-void border border-gridline rounded-xl";return a?e.jsx("a",{href:a,target:a.startsWith("mailto")?void 0:"_blank",rel:"noopener noreferrer",className:`${o} hover:border-cyan-300/40 transition-colors`,children:i},r):e.jsx("span",{className:o,children:i},r)})})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Professional Profile"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["My work combines more than two decades of software engineering with focused quantum error-correction research. QECTOR Decoder v3 is published as the stable ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3 1.0.x"}),"Rust/PyO3 package; its companion Claude Plugin is released at ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"v2.0.1"}),". I publish the user manual, normative reference manual, and certification/proof material so identity, software version, and evidence can be checked independently."]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21611214",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["v1.0.0 user manual",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.21611214"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21941046",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["Normative reference manual",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.21941046"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.22046403",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["Verification and proof bundle",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.22046403"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Background"}),e.jsxs("div",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsx("p",{children:"My engineering philosophy is rooted in practical execution. Over the course of my career, I learned to build robust systems because I wanted to make things that worked in the real world. That has been the method ever since: pick the problem, learn what the problem requires, ship the result, publish the evidence."}),e.jsxs("p",{children:["For most of the last twenty years that meant building high-performance applications and tools. I founded"," ",e.jsx("span",{className:"text-secondary",children:"iD01t Productions"})," ","in 2023. QECTOR serves as its dedicated QEC software division, delivering robust decoder pipelines for research and production environments."]}),e.jsx("p",{children:"Quantum error correction is where that method currently points. QECTOR Decoder v3 is a Rust core behind a Python API implementing 17+ decoder configurations, with v1.0.0 (August 2026) as the first stable release and v1.0.1 as the current one (2026-08-06). The public contract separates mathematical correctness from machine-specific performance: decodes can be checked against the declared syndrome relation, while local benchmark results carry their workload, environment, raw artifact, and hash. The qector Claude Plugin v2.0.1 extends the same evidence-first approach into local Claude Code and Claude Desktop workflows."}),e.jsx("p",{className:"text-primary italic border-l-2 border-cyan-300/40 pl-4",children:"We ship. Even tired. Even messy. Still shipping."})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-5",children:"What I've shipped"}),e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"17+",label:"Decoder Configurations"},{value:"10+",label:"Supported Topologies"},{value:"20+",label:"Years Writing Software"},{value:"v2.0.1",label:"Claude Plugin Release"}].map(r=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-2xl mb-1",children:r.value}),e.jsx("div",{className:"text-secondary text-xs",children:r.label})]},r.label))}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mt-4",children:[e.jsxs("div",{className:"p-5 bg-surface border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-2 text-sm",children:"Quantum error correction"}),e.jsxs("ul",{className:"text-secondary text-xs space-y-1.5",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/decoder",className:"text-cyan-300 hover:underline font-semibold",children:"QECTOR Decoder v3"}),": Rust-core Python library, 17+ decoder configurations"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/workbench",className:"text-cyan-300 hover:underline font-semibold",children:"QECTOR Workbench"}),": free desktop GUI and comprehensive MCP server"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/evidence",className:"text-cyan-300 hover:underline font-semibold",children:"Evidence & Provenance"}),": validation reports and SHA-256 sealed manifests on GitHub"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Mastering QEC and the QEC Academy instructional series"})]})]})]}),e.jsxs("div",{className:"p-5 bg-surface border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-2 text-sm",children:"Research & Engineering"}),e.jsxs("ul",{className:"text-secondary text-xs space-y-1.5",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Work signed and traceable through ORCID and Zenodo"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Custom decoder topologies for research workflows"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"High-performance batch simulation pipelines"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Reproducible artifact workflows"})]})]})]})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-5",children:"Skills"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:x.map(r=>e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-3",children:r.title}),e.jsx("ul",{className:"space-y-1.5",children:r.items.map(s=>e.jsxs("li",{className:"text-secondary text-xs flex items-start gap-2",children:[e.jsx(h,{size:14,className:"text-cyan-300 mt-0.5 shrink-0","aria-hidden":"true"}),e.jsx("span",{children:s})]},s))})]},r.title))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"Book a 30-minute call"}),e.jsxs("p",{className:"text-secondary text-sm mb-5",children:["For a decoder audit, licensing questions, or an integration walkthrough, you will speak directly with me. Prefer email? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]}),e.jsx(m,{url:c})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(t,{to:"/pricing",className:"btn-cyan",children:"View Pricing & Licensing"})})]})})]})}export{v as default}; diff --git a/assets/Founder-jWl4MVYA.js b/assets/Founder-jWl4MVYA.js deleted file mode 100644 index d73370aa..00000000 --- a/assets/Founder-jWl4MVYA.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as l,J as d,b as c}from"./index-B9kEGiWi.js";import{C as m}from"./CalendlyWidget-BuhQfp2_.js";import{L as t}from"./vendor-PiU4YGcH.js";import{o as h}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const n="https://orcid.org/0009-0000-3465-3753",x=[{title:"Systems & Performance",items:["Rust","PyO3 bindings","C-adjacent FFI","CUDA / OpenCL batch kernels","Memory-layout and throughput tuning"]},{title:"Python Engineering",items:["Python 3.9-3.13","NumPy / SciPy","Binary wheel packaging (manylinux, macOS, Windows)","PyPI release engineering"]},{title:"Quantum Error Correction",items:["MWPM / Blossom matching","Union-Find decoding","Belief propagation + OSD (qLDPC)","Stim / Sinter / PyMatching integration","Benchmark design and reproducibility"]},{title:"Applications & Desktop",items:["CustomTkinter GUI","Self-contained runtime bundling","PyInstaller / Inno Setup / .deb packaging","Model Context Protocol (MCP) servers","Offline-first architecture"]},{title:"Web & Product",items:["React + TypeScript","Vite","Tailwind","SEO and structured data","Stripe commerce integration"]},{title:"Writing & Publishing",items:["Technical documentation","Long-form instructional writing","Audiobook production","Electronic music production","Independent distribution"]}];function v(){return e.jsxs(e.Fragment,{children:[e.jsx(l,{title:"Guillaume Lessard · Founder of QECTOR and iD01t Productions",description:"Guillaume Lessard, software engineer, author, and independent researcher in Longueuil, Québec. Founder of iD01t Productions and creator of QECTOR Decoder v3. ORCID 0009-0000-3465-3753."}),e.jsx(d,{data:{"@context":"https://schema.org","@type":"Person","@id":"https://qector.store/guillaume-lessard#person",name:"Guillaume Lessard",givenName:"Guillaume",familyName:"Lessard",identifier:"0009-0000-3465-3753",jobTitle:"Founder, Software Engineer and Independent Researcher",description:"Software engineer, author and independent researcher. Founder of iD01t Productions and author of the QECTOR Decoder v3 quantum error correction library.",image:"https://qector.store/assets/g.png",url:"https://qector.store/guillaume-lessard",email:"admin@qector.store",address:{"@type":"PostalAddress",streetAddress:"2004 De Lorimier",addressLocality:"Longueuil",addressRegion:"QC",postalCode:"J4K 3H7",addressCountry:"CA"},worksFor:{"@type":"Organization",name:"iD01t Productions",foundingDate:"2023"},knowsAbout:["Quantum error correction","Minimum-weight perfect matching decoders","Belief propagation and OSD decoding","Rust","Python","GPU batch computing","Technical writing"],sameAs:[n,"https://github.com/GuillaumeLessard","https://github.com/qectorlab","https://pypi.org/project/qector-decoder-v3/","https://id01t.itch.io/","https://www.linkedin.com/in/qector/"]}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsx("div",{className:"relative z-10 section-padding",children:e.jsxs("div",{className:"max-w-4xl mx-auto flex flex-col md:flex-row items-center md:items-start gap-8",children:[e.jsx("img",{src:"/assets/g.png",alt:"Portrait of Guillaume Lessard, founder of QECTOR and iD01t Productions",width:160,height:160,loading:"lazy",className:"w-40 h-40 rounded-2xl object-cover border border-cyan-300/30 shadow-lg shrink-0"}),e.jsxs("div",{className:"text-center md:text-left",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-semibold text-cyan-300 uppercase tracking-wider mb-4",children:"Founder · Developer · Author · Independent Researcher"}),e.jsx("h1",{className:"text-4xl md:text-5xl font-extrabold tracking-tight leading-[1.1] mb-4",children:"Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed mb-5",children:"I am Guillaume Lessard, the founder of iD01t Productions and the creator of QECTOR. I design Rust/Python quantum error-correction systems, local MCP tooling, and release workflows where correctness claims are tied to declared workloads, reproducible artifacts, and public records. I build and support the platform independently from Longueuil, Québec."}),e.jsxs("div",{className:"flex flex-wrap justify-center md:justify-start gap-2 text-xs",children:[e.jsx("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"ORCID 0009-0000-3465-3753"}),e.jsx("a",{href:"https://github.com/qectorlab",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"GitHub"}),e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"PyPI"}),e.jsx("span",{className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary",children:"iD01t Productions"})]})]})]})})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Making sure you have the right Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"It is a common Québécois name, and several accomplished professionals share it, including a compiler engineer who works on Swift and a real estate executive. None of them are me, and I claim none of their work. If you are evaluating QECTOR, verifying an invoice, or checking a citation, these are the primary identifiers I control:"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-sm",children:[["ORCID","0009-0000-3465-3753",n],["GitHub","github.com/qectorlab","https://github.com/qectorlab"],["PyPI","qector-decoder-v3","https://pypi.org/project/qector-decoder-v3/"],["Studio","iD01t Productions, Longueuil QC"],["itch.io","id01t.itch.io","https://id01t.itch.io/"],["Email","admin@qector.store","mailto:admin@qector.store"]].map(([r,s,a])=>{const i=e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"text-[11px] text-muted-foreground uppercase tracking-wider mb-0.5",children:r}),e.jsx("div",{className:"text-cyan-300 font-mono text-xs break-all",children:s})]}),o="p-3 bg-void border border-gridline rounded-xl";return a?e.jsx("a",{href:a,target:a.startsWith("mailto")?void 0:"_blank",rel:"noopener noreferrer",className:`${o} hover:border-cyan-300/40 transition-colors`,children:i},r):e.jsx("span",{className:o,children:i},r)})})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Professional Profile"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["My work combines more than two decades of software engineering with focused quantum error-correction research. QECTOR Decoder v3 is published as the stable ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3==1.0.0"}),"Rust/PyO3 package; its companion Claude Plugin is released at ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"v1.0.6"}),". I publish the user manual, normative reference manual, and certification/proof material so identity, software version, and evidence can be checked independently."]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21611214",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["v1.0.0 user manual",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.21611214"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21941046",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["Normative reference manual",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.21941046"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.22046403",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["Verification and proof bundle",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.22046403"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Background"}),e.jsxs("div",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsx("p",{children:"My engineering philosophy is rooted in practical execution. Over the course of my career, I learned to build robust systems because I wanted to make things that worked in the real world. That has been the method ever since: pick the problem, learn what the problem requires, ship the result, publish the evidence."}),e.jsxs("p",{children:["For most of the last twenty years that meant building high-performance applications and tools. I founded"," ",e.jsx("span",{className:"text-secondary",children:"iD01t Productions"})," ","in 2023. QECTOR serves as its dedicated QEC software division, delivering robust decoder pipelines for research and production environments."]}),e.jsx("p",{children:"Quantum error correction is where that method currently points. QECTOR Decoder v3 is a Rust core behind a Python API implementing 17+ decoder configurations, with v1.0.0 as the first stable release (2026-08-06). The public contract separates mathematical correctness from machine-specific performance: decodes can be checked against the declared syndrome relation, while local benchmark results carry their workload, environment, raw artifact, and hash. The qector Claude Plugin v1.0.6 extends the same evidence-first approach into local Claude Code and Claude Desktop workflows."}),e.jsx("p",{className:"text-primary italic border-l-2 border-cyan-300/40 pl-4",children:"We ship. Even tired. Even messy. Still shipping."})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-5",children:"What I've shipped"}),e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"17+",label:"Decoder Configurations"},{value:"10+",label:"Supported Topologies"},{value:"20+",label:"Years Writing Software"},{value:"v1.0.6",label:"Claude Plugin Release"}].map(r=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-2xl mb-1",children:r.value}),e.jsx("div",{className:"text-secondary text-xs",children:r.label})]},r.label))}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mt-4",children:[e.jsxs("div",{className:"p-5 bg-surface border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-2 text-sm",children:"Quantum error correction"}),e.jsxs("ul",{className:"text-secondary text-xs space-y-1.5",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/decoder",className:"text-cyan-300 hover:underline font-semibold",children:"QECTOR Decoder v3"}),": Rust-core Python library, 17+ decoder configurations"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/workbench",className:"text-cyan-300 hover:underline font-semibold",children:"QECTOR Workbench"}),": free desktop GUI and comprehensive MCP server"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/evidence",className:"text-cyan-300 hover:underline font-semibold",children:"Evidence & Provenance"}),": validation reports and SHA-256 sealed manifests on GitHub"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Mastering QEC and the QEC Academy instructional series"})]})]})]}),e.jsxs("div",{className:"p-5 bg-surface border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-2 text-sm",children:"Research & Engineering"}),e.jsxs("ul",{className:"text-secondary text-xs space-y-1.5",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Work signed and traceable through ORCID and Zenodo"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Custom decoder topologies for research workflows"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"High-performance batch simulation pipelines"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Reproducible artifact workflows"})]})]})]})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-5",children:"Skills"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:x.map(r=>e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-3",children:r.title}),e.jsx("ul",{className:"space-y-1.5",children:r.items.map(s=>e.jsxs("li",{className:"text-secondary text-xs flex items-start gap-2",children:[e.jsx(h,{size:14,className:"text-cyan-300 mt-0.5 shrink-0","aria-hidden":"true"}),e.jsx("span",{children:s})]},s))})]},r.title))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"Book a 30-minute call"}),e.jsxs("p",{className:"text-secondary text-sm mb-5",children:["For a decoder audit, licensing questions, or an integration walkthrough, you will speak directly with me. Prefer email? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]}),e.jsx(m,{url:c})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(t,{to:"/pricing",className:"btn-cyan",children:"View Pricing & Licensing"})})]})})]})}export{v as default}; diff --git a/assets/Founder-yFhedN2-.js b/assets/Founder-yFhedN2-.js deleted file mode 100644 index 4288a1aa..00000000 --- a/assets/Founder-yFhedN2-.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as l,J as d,d as c}from"./index-CpdATiEY.js";import{C as m}from"./CalendlyWidget-BuhQfp2_.js";import{L as t}from"./vendor-PiU4YGcH.js";import{o as h}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const n="https://orcid.org/0009-0000-3465-3753",x=[{title:"Systems & Performance",items:["Rust","PyO3 bindings","C-adjacent FFI","CUDA / OpenCL batch kernels","Memory-layout and throughput tuning"]},{title:"Python Engineering",items:["Python 3.9-3.13","NumPy / SciPy","Binary wheel packaging (manylinux, macOS, Windows)","PyPI release engineering"]},{title:"Quantum Error Correction",items:["MWPM / Blossom matching","Union-Find decoding","Belief propagation + OSD (qLDPC)","Stim / Sinter / PyMatching integration","Benchmark design and reproducibility"]},{title:"Applications & Desktop",items:["CustomTkinter GUI","Self-contained runtime bundling","PyInstaller / Inno Setup / .deb packaging","Model Context Protocol (MCP) servers","Offline-first architecture"]},{title:"Web & Product",items:["React + TypeScript","Vite","Tailwind","SEO and structured data","Stripe commerce integration"]},{title:"Writing & Publishing",items:["Technical documentation","Long-form instructional writing","Audiobook production","Electronic music production","Independent distribution"]}];function v(){return e.jsxs(e.Fragment,{children:[e.jsx(l,{title:"Guillaume Lessard · Founder of QECTOR and iD01t Productions",description:"Guillaume Lessard, software engineer, author, and independent researcher in Longueuil, Québec. Founder of iD01t Productions and creator of QECTOR Decoder v3. ORCID 0009-0000-3465-3753."}),e.jsx(d,{data:{"@context":"https://schema.org","@type":"Person","@id":"https://qector.store/guillaume-lessard#person",name:"Guillaume Lessard",givenName:"Guillaume",familyName:"Lessard",identifier:"0009-0000-3465-3753",jobTitle:"Founder, Software Engineer and Independent Researcher",description:"Software engineer, author and independent researcher. Founder of iD01t Productions and author of the QECTOR Decoder v3 quantum error correction library.",image:"https://qector.store/assets/g.png",url:"https://qector.store/guillaume-lessard",email:"admin@qector.store",address:{"@type":"PostalAddress",streetAddress:"2004 De Lorimier",addressLocality:"Longueuil",addressRegion:"QC",postalCode:"J4K 3H7",addressCountry:"CA"},worksFor:{"@type":"Organization",name:"iD01t Productions",foundingDate:"2023"},knowsAbout:["Quantum error correction","Minimum-weight perfect matching decoders","Belief propagation and OSD decoding","Rust","Python","GPU batch computing","Technical writing"],sameAs:[n,"https://github.com/GuillaumeLessard","https://github.com/qectorlab","https://pypi.org/project/qector-decoder-v3/","https://id01t.itch.io/","https://www.linkedin.com/in/qector/"]}}),e.jsxs("section",{className:"relative py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsx("div",{className:"relative z-10 section-padding",children:e.jsxs("div",{className:"max-w-4xl mx-auto flex flex-col md:flex-row items-center md:items-start gap-8",children:[e.jsx("img",{src:"/assets/g.png",alt:"Portrait of Guillaume Lessard, founder of QECTOR and iD01t Productions",width:160,height:160,loading:"lazy",className:"w-40 h-40 rounded-2xl object-cover border border-cyan-300/30 shadow-lg shrink-0"}),e.jsxs("div",{className:"text-center md:text-left",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-semibold text-cyan-300 uppercase tracking-wider mb-4",children:"Founder · Developer · Author · Independent Researcher"}),e.jsx("h1",{className:"text-4xl md:text-5xl font-extrabold tracking-tight leading-[1.1] mb-4",children:"Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed mb-5",children:"I am Guillaume Lessard, the founder of iD01t Productions and the creator of QECTOR. I design Rust/Python quantum error-correction systems, local MCP tooling, and release workflows where correctness claims are tied to declared workloads, reproducible artifacts, and public records. I build and support the platform independently from Longueuil, Québec."}),e.jsxs("div",{className:"flex flex-wrap justify-center md:justify-start gap-2 text-xs",children:[e.jsx("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"ORCID 0009-0000-3465-3753"}),e.jsx("a",{href:"https://github.com/qectorlab",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"GitHub"}),e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary hover:text-cyan-300 hover:border-cyan-300/30 transition-all",children:"PyPI"}),e.jsx("span",{className:"inline-flex items-center min-h-[44px] px-3 py-1.5 bg-surface border border-gridline rounded-full text-secondary",children:"iD01t Productions"})]})]})]})})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Making sure you have the right Guillaume Lessard"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"It is a common Québécois name, and several accomplished professionals share it, including a compiler engineer who works on Swift and a real estate executive. None of them are me, and I claim none of their work. If you are evaluating QECTOR, verifying an invoice, or checking a citation, these are the primary identifiers I control:"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-sm",children:[["ORCID","0009-0000-3465-3753",n],["GitHub","github.com/qectorlab","https://github.com/qectorlab"],["PyPI","qector-decoder-v3","https://pypi.org/project/qector-decoder-v3/"],["Studio","iD01t Productions, Longueuil QC"],["itch.io","id01t.itch.io","https://id01t.itch.io/"],["Email","admin@qector.store","mailto:admin@qector.store"]].map(([r,s,a])=>{const i=e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"text-[11px] text-muted-foreground uppercase tracking-wider mb-0.5",children:r}),e.jsx("div",{className:"text-cyan-300 font-mono text-xs break-all",children:s})]}),o="p-3 bg-void border border-gridline rounded-xl";return a?e.jsx("a",{href:a,target:a.startsWith("mailto")?void 0:"_blank",rel:"noopener noreferrer",className:`${o} hover:border-cyan-300/40 transition-colors`,children:i},r):e.jsx("span",{className:o,children:i},r)})})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Professional Profile"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["My work combines more than two decades of software engineering with focused quantum error-correction research. QECTOR Decoder v3 is published as the stable ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3 1.0.x"}),"Rust/PyO3 package; its companion Claude Plugin is released at ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"v1.0.6"}),". I publish the user manual, normative reference manual, and certification/proof material so identity, software version, and evidence can be checked independently."]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21611214",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["v1.0.0 user manual",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.21611214"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21941046",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["Normative reference manual",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.21941046"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.22046403",target:"_blank",rel:"noopener noreferrer",className:"p-3 bg-void border border-gridline rounded-xl text-cyan-300 hover:border-cyan-300/40 transition-colors",children:["Verification and proof bundle",e.jsx("br",{}),e.jsx("span",{className:"font-mono",children:"10.5281/zenodo.22046403"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Background"}),e.jsxs("div",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsx("p",{children:"My engineering philosophy is rooted in practical execution. Over the course of my career, I learned to build robust systems because I wanted to make things that worked in the real world. That has been the method ever since: pick the problem, learn what the problem requires, ship the result, publish the evidence."}),e.jsxs("p",{children:["For most of the last twenty years that meant building high-performance applications and tools. I founded"," ",e.jsx("span",{className:"text-secondary",children:"iD01t Productions"})," ","in 2023. QECTOR serves as its dedicated QEC software division, delivering robust decoder pipelines for research and production environments."]}),e.jsx("p",{children:"Quantum error correction is where that method currently points. QECTOR Decoder v3 is a Rust core behind a Python API implementing 17+ decoder configurations, with v1.0.0 as the first stable release (2026-08-06). The public contract separates mathematical correctness from machine-specific performance: decodes can be checked against the declared syndrome relation, while local benchmark results carry their workload, environment, raw artifact, and hash. The qector Claude Plugin v1.0.6 extends the same evidence-first approach into local Claude Code and Claude Desktop workflows."}),e.jsx("p",{className:"text-primary italic border-l-2 border-cyan-300/40 pl-4",children:"We ship. Even tired. Even messy. Still shipping."})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-5",children:"What I've shipped"}),e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"17+",label:"Decoder Configurations"},{value:"10+",label:"Supported Topologies"},{value:"20+",label:"Years Writing Software"},{value:"v1.0.6",label:"Claude Plugin Release"}].map(r=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-2xl mb-1",children:r.value}),e.jsx("div",{className:"text-secondary text-xs",children:r.label})]},r.label))}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mt-4",children:[e.jsxs("div",{className:"p-5 bg-surface border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-2 text-sm",children:"Quantum error correction"}),e.jsxs("ul",{className:"text-secondary text-xs space-y-1.5",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/decoder",className:"text-cyan-300 hover:underline font-semibold",children:"QECTOR Decoder v3"}),": Rust-core Python library, 17+ decoder configurations"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/workbench",className:"text-cyan-300 hover:underline font-semibold",children:"QECTOR Workbench"}),": free desktop GUI and comprehensive MCP server"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsxs("span",{children:[e.jsx(t,{to:"/evidence",className:"text-cyan-300 hover:underline font-semibold",children:"Evidence & Provenance"}),": validation reports and SHA-256 sealed manifests on GitHub"]})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Mastering QEC and the QEC Academy instructional series"})]})]})]}),e.jsxs("div",{className:"p-5 bg-surface border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold mb-2 text-sm",children:"Research & Engineering"}),e.jsxs("ul",{className:"text-secondary text-xs space-y-1.5",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Work signed and traceable through ORCID and Zenodo"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Custom decoder topologies for research workflows"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"High-performance batch simulation pipelines"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-cyan-300",children:"✓"}),e.jsx("span",{children:"Reproducible artifact workflows"})]})]})]})]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-5",children:"Skills"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:x.map(r=>e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-3",children:r.title}),e.jsx("ul",{className:"space-y-1.5",children:r.items.map(s=>e.jsxs("li",{className:"text-secondary text-xs flex items-start gap-2",children:[e.jsx(h,{size:14,className:"text-cyan-300 mt-0.5 shrink-0","aria-hidden":"true"}),e.jsx("span",{children:s})]},s))})]},r.title))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"Book a 30-minute call"}),e.jsxs("p",{className:"text-secondary text-sm mb-5",children:["For a decoder audit, licensing questions, or an integration walkthrough, you will speak directly with me. Prefer email? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]}),e.jsx(m,{url:c})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(t,{to:"/pricing",className:"btn-cyan",children:"View Pricing & Licensing"})})]})})]})}export{v as default}; diff --git a/assets/GettingStarted-B53GBAZh.js b/assets/GettingStarted-B53GBAZh.js deleted file mode 100644 index 953b880a..00000000 --- a/assets/GettingStarted-B53GBAZh.js +++ /dev/null @@ -1,83 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as i,C as s,L as r}from"./index-CCmwjNGU.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const c=`import qector_decoder_v3 as q -print(q.__version__) -print(q.get_license_info()["tier"]) # "Community" until you activate a licence -`,d=`import numpy as np -from qector_decoder_v3 import BlossomDecoder, UnionFindDecoder, generate_parity_check_matrix - -# Distance-5 repetition code: 5 data qubits, 4 parity checks. -check_to_qubits = [[0, 1], [1, 2], [2, 3], [3, 4]] -H = generate_parity_check_matrix(check_to_qubits, 5) - -error = np.array([0, 0, 1, 0, 0], dtype=np.uint8) -syndrome = (H @ error) % 2 # which checks fire - -for decoder in (UnionFindDecoder(check_to_qubits, 5), BlossomDecoder(check_to_qubits, 5)): - correction = np.asarray(decoder.decode(syndrome), dtype=np.uint8) - assert np.array_equal((H @ correction) % 2, syndrome) # H·c = s (mod 2) - print(type(decoder).__name__, correction) -`,a=`import stim -from qector_decoder_v3 import dem - -circuit = stim.Circuit.generated( - "surface_code:rotated_memory_z", distance=5, rounds=5, - after_clifford_depolarization=0.005, -) -graph = dem.from_stim(circuit.detector_error_model(decompose_errors=True)).collapse_to_graph() -decoder = graph.make_decoder("blossom") # uses the DEM's edge weights - -shots = 2_000 -dets, obs = circuit.compile_detector_sampler(seed=7).sample(shots, separate_observables=True) -fails = 0 -for d, o in zip(dets, obs): - correction = decoder.decode(d.astype("uint8")) - predicted = graph.predicted_observables(correction) - fails += int(predicted[0] != o[0]) -print(f"logical errors: {fails} / {shots}") -`,l=`import numpy as np -from qector_decoder_v3 import codes -from qector_decoder_v3.bposd import BpOsdDecoder - -# [[144,12,12]] bivariate bicycle code: A = x^3 + y + y^2, B = y^3 + x + x^2 -cx, cz = codes.bivariate_bicycle_code( - 12, 6, [("x", 3), ("y", 1), ("y", 2)], [("y", 3), ("x", 1), ("x", 2)] -) -H = cx.parity_check_matrix() -decoder = BpOsdDecoder(H, error_rate=0.01, osd_order=0) - -rng = np.random.default_rng(1) -error = (rng.random(H.shape[1]) < 0.01).astype(np.uint8) -syndrome = (H @ error) % 2 -correction = np.asarray(decoder.decode(syndrome), dtype=np.uint8) -assert np.array_equal((H @ correction) % 2, syndrome) -print(H.shape, "syndrome reproduced") -`,m=`import sinter -import stim -from qector_decoder_v3.sinter_compat import qector_sinter_decoders - - -def main(): - tasks = [ - sinter.Task( - circuit=stim.Circuit.generated( - "surface_code:rotated_memory_z", distance=d, rounds=d, - after_clifford_depolarization=p, - ), - json_metadata={"d": d, "p": p}, - ) - for d in (3, 5) - for p in (0.002, 0.004) - ] - - stats = sinter.collect( - num_workers=2, tasks=tasks, - decoders=["qector_blossom"], - custom_decoders=qector_sinter_decoders(), - max_shots=2_000, max_errors=50, - ) - for s in sorted(stats, key=lambda s: (s.json_metadata["d"], s.json_metadata["p"])): - print(s.json_metadata, s.errors, "/", s.shots) - - -if __name__ == "__main__": # Sinter uses worker processes - main() -`,o=[{id:"install",title:"Install and check",text:'Install from PyPI. Wheels exist for CPython 3.9 to 3.14 on Linux x86_64, Windows x64 and macOS on Apple silicon, so there is nothing to compile. The tier stays "Community" until you activate a licence, and every decoder works on the CPU in that tier.',shell:'python -m pip install --upgrade "qector-decoder-v3>=1.0.1,<2" stim sinter',code:c,file:"step1_check.py"},{id:"first-decode",title:"Your first decode, checked",text:"Build a distance-5 repetition code, inject one error, and decode its syndrome with Union-Find and exact matching. The assert is the contract every QECTOR decoder keeps: the correction reproduces the syndrome, H·c = s (mod 2).",code:d,file:"step2_first_decode.py"},{id:"stim",title:"Decode a Stim circuit",text:"Generate a rotated surface-code memory experiment with Stim, turn its detector error model into a weighted matching graph, and count logical errors over sampled shots. The decoder uses the error model’s weights, so rare and common faults are treated differently.",code:a,file:"step3_stim.py"},{id:"qldpc",title:"qLDPC with BP-OSD",text:"Matching needs graph-like errors; qLDPC codes do not have them. Build the [[144,12,12]] bivariate bicycle code and decode a random error with belief propagation plus ordered statistics, again checking the syndrome.",code:l,file:"step4_qldpc.py"},{id:"sinter",title:"Scale up with Sinter",text:"Sinter runs many circuits across worker processes and collects statistics. QECTOR registers its decoders as Sinter custom decoders. Keep the main guard: Sinter starts worker processes.",code:m,file:"step5_sinter.py"}];function _(){return e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Getting Started · QECTOR Decoder v3",description:"A 15-minute tutorial for QECTOR Decoder v3: install, a first checked decode, a Stim surface-code circuit, qLDPC decoding with BP-OSD, and Sinter. Every snippet is tested against version 1.0.1."}),e.jsxs("section",{className:"relative pt-32 pb-12 md:pt-36 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding max-w-3xl mx-auto",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"About 15 minutes · Tested on 1.0.1"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.08] mb-6",children:"Getting Started"}),e.jsxs("p",{className:"text-secondary text-lg leading-relaxed",children:["From ",e.jsx("code",{className:"font-mono text-cyan-200",children:"pip install"})," to decoding a surface-code circuit and a qLDPC code. Each step is a complete script you can copy and run."]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto grid lg:grid-cols-[13rem_1fr] gap-10",children:[e.jsx("nav",{"aria-label":"Steps",className:"hidden lg:block",children:e.jsx("ol",{className:"sticky top-28 space-y-2 text-sm",children:o.map((t,n)=>e.jsx("li",{children:e.jsxs("a",{href:`#${t.id}`,className:"text-secondary hover:text-cyan-300",children:[n+1,". ",t.title]})},t.id))})}),e.jsxs("div",{className:"space-y-14 min-w-0",children:[o.map((t,n)=>e.jsxs("article",{id:t.id,className:"scroll-mt-28",children:[e.jsxs("p",{className:"text-cyan-300 text-xs font-semibold uppercase tracking-wider mb-1",children:["Step ",n+1]}),e.jsx("h2",{className:"text-2xl font-bold mb-3",children:t.title}),e.jsx("p",{className:"text-secondary leading-relaxed mb-4",children:t.text}),t.shell&&e.jsx("div",{className:"mb-4",children:e.jsx(s,{language:"bash",filename:"terminal",code:t.shell})}),e.jsx(s,{language:"python",filename:t.file,code:t.code.trimEnd()})]},t.id)),e.jsxs("div",{className:"bg-[#0b1329]/40 border border-slate-800/80 rounded-2xl p-6",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Where to go next"}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 list-disc pl-5",children:[e.jsxs("li",{children:["Every class and function, with signatures: the ",e.jsx(r,{to:"/technical-reference",className:"text-cyan-300 hover:underline",children:"API index"}),"."]}),e.jsxs("li",{children:["Choosing a decoder and the full feature set: ",e.jsx(r,{to:"/decoder",className:"text-cyan-300 hover:underline",children:"Decoder"})," and the ",e.jsx(r,{to:"/manual",className:"text-cyan-300 hover:underline",children:"user manual"}),"."]}),e.jsxs("li",{children:["Using QECTOR from Claude: the ",e.jsx(r,{to:"/claude-plugin",className:"text-cyan-300 hover:underline",children:"Claude plugin"}),"."]}),e.jsxs("li",{children:["GPU batch decoding and commercial use: ",e.jsx(r,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"plans"}),", from $79/month."]})]}),e.jsx("p",{className:"text-muted-foreground text-xs mt-4",children:"Verified: each script above was run against the published qector-decoder-v3 1.0.1 wheel on Linux (CPython 3.13) on 6 November 2026. Logical-error counts depend on the random seed and noise settings; measure on your own workloads."})]})]})]})})]})}export{_ as default}; diff --git a/assets/GettingStarted-D3810rrk.js b/assets/GettingStarted-D3810rrk.js deleted file mode 100644 index 9500778b..00000000 --- a/assets/GettingStarted-D3810rrk.js +++ /dev/null @@ -1,83 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as i,C as s,L as r}from"./index-DayaklK-.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const c=`import qector_decoder_v3 as q -print(q.__version__) -print(q.get_license_info()["tier"]) # "Community" until you activate a licence -`,d=`import numpy as np -from qector_decoder_v3 import BlossomDecoder, UnionFindDecoder, generate_parity_check_matrix - -# Distance-5 repetition code: 5 data qubits, 4 parity checks. -check_to_qubits = [[0, 1], [1, 2], [2, 3], [3, 4]] -H = generate_parity_check_matrix(check_to_qubits, 5) - -error = np.array([0, 0, 1, 0, 0], dtype=np.uint8) -syndrome = (H @ error) % 2 # which checks fire - -for decoder in (UnionFindDecoder(check_to_qubits, 5), BlossomDecoder(check_to_qubits, 5)): - correction = np.asarray(decoder.decode(syndrome), dtype=np.uint8) - assert np.array_equal((H @ correction) % 2, syndrome) # H·c = s (mod 2) - print(type(decoder).__name__, correction) -`,a=`import stim -from qector_decoder_v3 import dem - -circuit = stim.Circuit.generated( - "surface_code:rotated_memory_z", distance=5, rounds=5, - after_clifford_depolarization=0.005, -) -graph = dem.from_stim(circuit.detector_error_model(decompose_errors=True)).collapse_to_graph() -decoder = graph.make_decoder("blossom") # uses the DEM's edge weights - -shots = 2_000 -dets, obs = circuit.compile_detector_sampler(seed=7).sample(shots, separate_observables=True) -fails = 0 -for d, o in zip(dets, obs): - correction = decoder.decode(d.astype("uint8")) - predicted = graph.predicted_observables(correction) - fails += int(predicted[0] != o[0]) -print(f"logical errors: {fails} / {shots}") -`,l=`import numpy as np -from qector_decoder_v3 import codes -from qector_decoder_v3.bposd import BpOsdDecoder - -# [[144,12,12]] bivariate bicycle code: A = x^3 + y + y^2, B = y^3 + x + x^2 -cx, cz = codes.bivariate_bicycle_code( - 12, 6, [("x", 3), ("y", 1), ("y", 2)], [("y", 3), ("x", 1), ("x", 2)] -) -H = cx.parity_check_matrix() -decoder = BpOsdDecoder(H, error_rate=0.01, osd_order=0) - -rng = np.random.default_rng(1) -error = (rng.random(H.shape[1]) < 0.01).astype(np.uint8) -syndrome = (H @ error) % 2 -correction = np.asarray(decoder.decode(syndrome), dtype=np.uint8) -assert np.array_equal((H @ correction) % 2, syndrome) -print(H.shape, "syndrome reproduced") -`,m=`import sinter -import stim -from qector_decoder_v3.sinter_compat import qector_sinter_decoders - - -def main(): - tasks = [ - sinter.Task( - circuit=stim.Circuit.generated( - "surface_code:rotated_memory_z", distance=d, rounds=d, - after_clifford_depolarization=p, - ), - json_metadata={"d": d, "p": p}, - ) - for d in (3, 5) - for p in (0.002, 0.004) - ] - - stats = sinter.collect( - num_workers=2, tasks=tasks, - decoders=["qector_blossom"], - custom_decoders=qector_sinter_decoders(), - max_shots=2_000, max_errors=50, - ) - for s in sorted(stats, key=lambda s: (s.json_metadata["d"], s.json_metadata["p"])): - print(s.json_metadata, s.errors, "/", s.shots) - - -if __name__ == "__main__": # Sinter uses worker processes - main() -`,o=[{id:"install",title:"Install and check",text:'Install from PyPI. Wheels exist for CPython 3.9 to 3.14 on Linux x86_64, Windows x64 and macOS on Apple silicon, so there is nothing to compile. The tier stays "Community" until you activate a licence, and every decoder works on the CPU in that tier.',shell:'python -m pip install --upgrade "qector-decoder-v3>=1.0.1,<2" stim sinter',code:c,file:"step1_check.py"},{id:"first-decode",title:"Your first decode, checked",text:"Build a distance-5 repetition code, inject one error, and decode its syndrome with Union-Find and exact matching. The assert is the contract every QECTOR decoder keeps: the correction reproduces the syndrome, H·c = s (mod 2).",code:d,file:"step2_first_decode.py"},{id:"stim",title:"Decode a Stim circuit",text:"Generate a rotated surface-code memory experiment with Stim, turn its detector error model into a weighted matching graph, and count logical errors over sampled shots. The decoder uses the error model’s weights, so rare and common faults are treated differently.",code:a,file:"step3_stim.py"},{id:"qldpc",title:"qLDPC with BP-OSD",text:"Matching needs graph-like errors; qLDPC codes do not have them. Build the [[144,12,12]] bivariate bicycle code and decode a random error with belief propagation plus ordered statistics, again checking the syndrome.",code:l,file:"step4_qldpc.py"},{id:"sinter",title:"Scale up with Sinter",text:"Sinter runs many circuits across worker processes and collects statistics. QECTOR registers its decoders as Sinter custom decoders. Keep the main guard: Sinter starts worker processes.",code:m,file:"step5_sinter.py"}];function _(){return e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Getting Started · QECTOR Decoder v3",description:"A 15-minute tutorial for QECTOR Decoder v3: install, a first checked decode, a Stim surface-code circuit, qLDPC decoding with BP-OSD, and Sinter. Every snippet is tested against version 1.0.1."}),e.jsxs("section",{className:"relative pt-32 pb-12 md:pt-36 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding max-w-3xl mx-auto",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"About 15 minutes · Tested on 1.0.1"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.08] mb-6",children:"Getting Started"}),e.jsxs("p",{className:"text-secondary text-lg leading-relaxed",children:["From ",e.jsx("code",{className:"font-mono text-cyan-200",children:"pip install"})," to decoding a surface-code circuit and a qLDPC code. Each step is a complete script you can copy and run."]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto grid lg:grid-cols-[13rem_1fr] gap-10",children:[e.jsx("nav",{"aria-label":"Steps",className:"hidden lg:block",children:e.jsx("ol",{className:"sticky top-28 space-y-2 text-sm",children:o.map((t,n)=>e.jsx("li",{children:e.jsxs("a",{href:`#${t.id}`,className:"text-secondary hover:text-cyan-300",children:[n+1,". ",t.title]})},t.id))})}),e.jsxs("div",{className:"space-y-14 min-w-0",children:[o.map((t,n)=>e.jsxs("article",{id:t.id,className:"scroll-mt-28",children:[e.jsxs("p",{className:"text-cyan-300 text-xs font-semibold uppercase tracking-wider mb-1",children:["Step ",n+1]}),e.jsx("h2",{className:"text-2xl font-bold mb-3",children:t.title}),e.jsx("p",{className:"text-secondary leading-relaxed mb-4",children:t.text}),t.shell&&e.jsx("div",{className:"mb-4",children:e.jsx(s,{language:"bash",filename:"terminal",code:t.shell})}),e.jsx(s,{language:"python",filename:t.file,code:t.code.trimEnd()})]},t.id)),e.jsxs("div",{className:"bg-[#0b1329]/40 border border-slate-800/80 rounded-2xl p-6",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Where to go next"}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 list-disc pl-5",children:[e.jsxs("li",{children:["Every class and function, with signatures: the ",e.jsx(r,{to:"/technical-reference",className:"text-cyan-300 hover:underline",children:"API index"}),"."]}),e.jsxs("li",{children:["Choosing a decoder and the full feature set: ",e.jsx(r,{to:"/decoder",className:"text-cyan-300 hover:underline",children:"Decoder"})," and the ",e.jsx(r,{to:"/manual",className:"text-cyan-300 hover:underline",children:"user manual"}),"."]}),e.jsxs("li",{children:["Using QECTOR from Claude: the ",e.jsx(r,{to:"/claude-plugin",className:"text-cyan-300 hover:underline",children:"Claude plugin"}),"."]}),e.jsxs("li",{children:["GPU batch decoding and commercial use: ",e.jsx(r,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"plans"}),", from $79/month."]})]}),e.jsx("p",{className:"text-muted-foreground text-xs mt-4",children:"Verified: each script above was run against the published qector-decoder-v3 1.0.1 wheel on Linux (CPython 3.13) on 6 November 2026. Logical-error counts depend on the random seed and noise settings; measure on your own workloads."})]})]})]})})]})}export{_ as default}; diff --git a/assets/GettingStarted-DsueGorx.js b/assets/GettingStarted-DsueGorx.js deleted file mode 100644 index e7bebaad..00000000 --- a/assets/GettingStarted-DsueGorx.js +++ /dev/null @@ -1,83 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as i,C as s,L as r}from"./index-c1PDYu0j.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const c=`import qector_decoder_v3 as q -print(q.__version__) -print(q.get_license_info()["tier"]) # "Community" until you activate a licence -`,d=`import numpy as np -from qector_decoder_v3 import BlossomDecoder, UnionFindDecoder, generate_parity_check_matrix - -# Distance-5 repetition code: 5 data qubits, 4 parity checks. -check_to_qubits = [[0, 1], [1, 2], [2, 3], [3, 4]] -H = generate_parity_check_matrix(check_to_qubits, 5) - -error = np.array([0, 0, 1, 0, 0], dtype=np.uint8) -syndrome = (H @ error) % 2 # which checks fire - -for decoder in (UnionFindDecoder(check_to_qubits, 5), BlossomDecoder(check_to_qubits, 5)): - correction = np.asarray(decoder.decode(syndrome), dtype=np.uint8) - assert np.array_equal((H @ correction) % 2, syndrome) # H·c = s (mod 2) - print(type(decoder).__name__, correction) -`,a=`import stim -from qector_decoder_v3 import dem - -circuit = stim.Circuit.generated( - "surface_code:rotated_memory_z", distance=5, rounds=5, - after_clifford_depolarization=0.005, -) -graph = dem.from_stim(circuit.detector_error_model(decompose_errors=True)).collapse_to_graph() -decoder = graph.make_decoder("blossom") # uses the DEM's edge weights - -shots = 2_000 -dets, obs = circuit.compile_detector_sampler(seed=7).sample(shots, separate_observables=True) -fails = 0 -for d, o in zip(dets, obs): - correction = decoder.decode(d.astype("uint8")) - predicted = graph.predicted_observables(correction) - fails += int(predicted[0] != o[0]) -print(f"logical errors: {fails} / {shots}") -`,l=`import numpy as np -from qector_decoder_v3 import codes -from qector_decoder_v3.bposd import BpOsdDecoder - -# [[144,12,12]] bivariate bicycle code: A = x^3 + y + y^2, B = y^3 + x + x^2 -cx, cz = codes.bivariate_bicycle_code( - 12, 6, [("x", 3), ("y", 1), ("y", 2)], [("y", 3), ("x", 1), ("x", 2)] -) -H = cx.parity_check_matrix() -decoder = BpOsdDecoder(H, error_rate=0.01, osd_order=0) - -rng = np.random.default_rng(1) -error = (rng.random(H.shape[1]) < 0.01).astype(np.uint8) -syndrome = (H @ error) % 2 -correction = np.asarray(decoder.decode(syndrome), dtype=np.uint8) -assert np.array_equal((H @ correction) % 2, syndrome) -print(H.shape, "syndrome reproduced") -`,m=`import sinter -import stim -from qector_decoder_v3.sinter_compat import qector_sinter_decoders - - -def main(): - tasks = [ - sinter.Task( - circuit=stim.Circuit.generated( - "surface_code:rotated_memory_z", distance=d, rounds=d, - after_clifford_depolarization=p, - ), - json_metadata={"d": d, "p": p}, - ) - for d in (3, 5) - for p in (0.002, 0.004) - ] - - stats = sinter.collect( - num_workers=2, tasks=tasks, - decoders=["qector_blossom"], - custom_decoders=qector_sinter_decoders(), - max_shots=2_000, max_errors=50, - ) - for s in sorted(stats, key=lambda s: (s.json_metadata["d"], s.json_metadata["p"])): - print(s.json_metadata, s.errors, "/", s.shots) - - -if __name__ == "__main__": # Sinter uses worker processes - main() -`,o=[{id:"install",title:"Install and check",text:'Install from PyPI. Wheels exist for CPython 3.9 to 3.14 on Linux x86_64, Windows x64 and macOS on Apple silicon, so there is nothing to compile. The tier stays "Community" until you activate a licence, and every decoder works on the CPU in that tier.',shell:'python -m pip install --upgrade "qector-decoder-v3>=1.0.1,<2" stim sinter',code:c,file:"step1_check.py"},{id:"first-decode",title:"Your first decode, checked",text:"Build a distance-5 repetition code, inject one error, and decode its syndrome with Union-Find and exact matching. The assert is the contract every QECTOR decoder keeps: the correction reproduces the syndrome, H·c = s (mod 2).",code:d,file:"step2_first_decode.py"},{id:"stim",title:"Decode a Stim circuit",text:"Generate a rotated surface-code memory experiment with Stim, turn its detector error model into a weighted matching graph, and count logical errors over sampled shots. The decoder uses the error model’s weights, so rare and common faults are treated differently.",code:a,file:"step3_stim.py"},{id:"qldpc",title:"qLDPC with BP-OSD",text:"Matching needs graph-like errors; qLDPC codes do not have them. Build the [[144,12,12]] bivariate bicycle code and decode a random error with belief propagation plus ordered statistics, again checking the syndrome.",code:l,file:"step4_qldpc.py"},{id:"sinter",title:"Scale up with Sinter",text:"Sinter runs many circuits across worker processes and collects statistics. QECTOR registers its decoders as Sinter custom decoders. Keep the main guard: Sinter starts worker processes.",code:m,file:"step5_sinter.py"}];function _(){return e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Getting Started · QECTOR Decoder v3",description:"A 15-minute tutorial for QECTOR Decoder v3: install, a first checked decode, a Stim surface-code circuit, qLDPC decoding with BP-OSD, and Sinter. Every snippet is tested against version 1.0.1."}),e.jsxs("section",{className:"relative pt-32 pb-12 md:pt-36 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding max-w-3xl mx-auto",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"About 15 minutes · Tested on 1.0.1"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.08] mb-6",children:"Getting Started"}),e.jsxs("p",{className:"text-secondary text-lg leading-relaxed",children:["From ",e.jsx("code",{className:"font-mono text-cyan-200",children:"pip install"})," to decoding a surface-code circuit and a qLDPC code. Each step is a complete script you can copy and run."]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto grid lg:grid-cols-[13rem_1fr] gap-10",children:[e.jsx("nav",{"aria-label":"Steps",className:"hidden lg:block",children:e.jsx("ol",{className:"sticky top-28 space-y-2 text-sm",children:o.map((t,n)=>e.jsx("li",{children:e.jsxs("a",{href:`#${t.id}`,className:"text-secondary hover:text-cyan-300",children:[n+1,". ",t.title]})},t.id))})}),e.jsxs("div",{className:"space-y-14 min-w-0",children:[o.map((t,n)=>e.jsxs("article",{id:t.id,className:"scroll-mt-28",children:[e.jsxs("p",{className:"text-cyan-300 text-xs font-semibold uppercase tracking-wider mb-1",children:["Step ",n+1]}),e.jsx("h2",{className:"text-2xl font-bold mb-3",children:t.title}),e.jsx("p",{className:"text-secondary leading-relaxed mb-4",children:t.text}),t.shell&&e.jsx("div",{className:"mb-4",children:e.jsx(s,{language:"bash",filename:"terminal",code:t.shell})}),e.jsx(s,{language:"python",filename:t.file,code:t.code.trimEnd()})]},t.id)),e.jsxs("div",{className:"bg-[#0b1329]/40 border border-slate-800/80 rounded-2xl p-6",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Where to go next"}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 list-disc pl-5",children:[e.jsxs("li",{children:["Every class and function, with signatures: the ",e.jsx(r,{to:"/technical-reference",className:"text-cyan-300 hover:underline",children:"API index"}),"."]}),e.jsxs("li",{children:["Choosing a decoder and the full feature set: ",e.jsx(r,{to:"/decoder",className:"text-cyan-300 hover:underline",children:"Decoder"})," and the ",e.jsx(r,{to:"/manual",className:"text-cyan-300 hover:underline",children:"user manual"}),"."]}),e.jsxs("li",{children:["Using QECTOR from Claude: the ",e.jsx(r,{to:"/claude-plugin",className:"text-cyan-300 hover:underline",children:"Claude plugin"}),"."]}),e.jsxs("li",{children:["GPU batch decoding and commercial use: ",e.jsx(r,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"plans"}),", from $79/month."]})]}),e.jsx("p",{className:"text-muted-foreground text-xs mt-4",children:"Verified: each script above was run against the published qector-decoder-v3 1.0.1 wheel on Linux (CPython 3.13) on 6 November 2026. Logical-error counts depend on the random seed and noise settings; measure on your own workloads."})]})]})]})})]})}export{_ as default}; diff --git a/assets/HomeFR-DAGdU1jQ.js b/assets/HomeFR-DAGdU1jQ.js deleted file mode 100644 index f68112db..00000000 --- a/assets/HomeFR-DAGdU1jQ.js +++ /dev/null @@ -1,2 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as n,e as i,P as r,L as s,C as l}from"./index-CCmwjNGU.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const c=[{titre:"QECTOR Decoder v3",texte:"La bibliothèque Python à noyau Rust : Union-Find, MWPM exact (Blossom), BP-OSD et Relay-BP pour les codes qLDPC, décodage par lots CPU et GPU, intégration Stim et Sinter.",lien:"/fr/decoder",libelle:"Le décodeur"},{titre:"Plugiciel Claude",texte:"Un serveur MCP isolé du réseau (air-gapped) qui apporte le décodage vérifié dans Claude Code et Claude Desktop, avec schémas validés et versions signées.",lien:"/claude-plugin",libelle:"Le plugiciel (anglais)"},{titre:"Workbench",texte:"L’application de bureau gratuite pour Windows et Linux : constructeur de circuits, familles de codes et décodeurs, sans installation de Python.",lien:"/workbench",libelle:"Le Workbench (anglais)"}],o=[["Chaque correction est vérifiée","Chaque résultat satisfait H·c = s (mod 2) : la correction reproduit le syndrome."],["Licences hors ligne","Jetons Ed25519 vérifiés localement. Aucun serveur de licence, aucune télémétrie : fonctionne sur des machines isolées."],["Versions vérifiables","18 wheels construites dans GitHub Actions, avec provenance Sigstore et attestations PyPI, testées sur chaque système avant publication."],["Aucun nombre de postes","Une licence couvre l’usage interne de votre organisation, sur autant de machines et par autant de personnes que nécessaire."]];function h(){return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"QECTOR · Décodage de correction d’erreurs quantiques pour Python",description:`QECTOR Decoder v3 : décodeurs QEC à noyau Rust pour Python (Union-Find, MWPM, BP-OSD, Relay-BP, GPU). Gratuit pour la recherche non commerciale; licences commerciales dès ${i(r.proMonthly)}/mois, vérifiées hors ligne.`,lang:"fr",alternates:[{lang:"en",href:"https://qector.store/"},{lang:"fr",href:"https://qector.store/fr/"},{lang:"x-default",href:"https://qector.store/"}]}),e.jsxs("section",{className:"relative pt-36 pb-20 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding max-w-4xl mx-auto",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"v1.0.1 · 18 wheels vérifiées"}),e.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-extrabold tracking-tight leading-[1.08] mb-6",children:[e.jsx("span",{className:"text-transparent bg-clip-text bg-gradient-to-r from-cyan-300 to-cyan-400",children:"Décodage QEC"})," pour Python"]}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-4",children:["Une seule bibliothèque pour plusieurs familles de décodeurs sur la même matrice de contrôle : Union-Find, MWPM exact, BP-OSD et Relay-BP pour les codes qLDPC, sur CPU et GPU, avec Stim et Sinter."," ",e.jsx("span",{className:"text-primary font-semibold",children:"Chaque correction est vérifiée contre son syndrome"}),", et les licences commerciales se vérifient hors ligne."]}),e.jsxs("p",{className:"text-sm text-muted-foreground mb-10",children:["Gratuit pour la recherche universitaire et non commerciale. Forfaits commerciaux dès ",i(r.proMonthly),"/mois, avec garantie de remboursement de ",r.refundDays," jours."]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 justify-center mb-10",children:[e.jsx(s,{to:"/fr/pricing",className:"btn-gold px-8 py-4",children:"Voir les forfaits →"}),e.jsx(s,{to:"/fr/decoder",className:"btn-cyan px-8 py-4",children:"Découvrir le décodeur"})]}),e.jsx("div",{className:"max-w-2xl mx-auto text-left",children:e.jsx(l,{language:"bash",filename:"Démarrage rapide",code:`pip install qector-decoder-v3==1.0.1 -python -c "from qector_decoder_v3 import BlossomDecoder; print('QECTOR OK')"`})})]})]}),e.jsx("section",{className:"section-padding pb-16",children:e.jsx("div",{className:"max-w-6xl mx-auto grid sm:grid-cols-2 gap-6",children:o.map(([t,a])=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-lg font-bold mb-2",children:t}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:a})]},t))})}),e.jsx("section",{className:"section-padding pb-16",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Les produits"}),e.jsx("div",{className:"grid md:grid-cols-3 gap-6",children:c.map(t=>e.jsxs("div",{className:"card-surface flex flex-col",children:[e.jsx("h3",{className:"text-lg font-bold mb-2",children:t.titre}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed flex-1",children:t.texte}),e.jsxs(s,{to:t.lien,hrefLang:t.lien.startsWith("/fr")?void 0:"en",className:"text-cyan-300 text-sm mt-4 hover:underline",children:[t.libelle," →"]})]},t.titre))})]})}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"En français"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx(s,{to:"/fr/decoder",className:"text-cyan-300 hover:underline",children:"Le décodeur"})," et sa ",e.jsx(s,{to:"/fr/license",className:"text-cyan-300 hover:underline",children:"licence"})," (usage gratuit, usage commercial, activation)."]}),e.jsxs("li",{children:[e.jsx(s,{to:"/fr/pricing",className:"text-cyan-300 hover:underline",children:"Tarifs et forfaits"})," : Pro, Labo, Pilote et Entreprise."]}),e.jsxs("li",{children:[e.jsx(s,{to:"/fr/license-agreement",className:"text-cyan-300 hover:underline",children:"Contrat de licence commerciale"}),", version 2026-11."]}),e.jsxs("li",{children:[e.jsx(s,{to:"/fr/privacy",className:"text-cyan-300 hover:underline",children:"Politique de confidentialité"})," (Loi 25)."]}),e.jsxs("li",{children:[e.jsx(s,{to:"/fr/terms",className:"text-cyan-300 hover:underline",children:"Conditions d’utilisation"})," et ",e.jsx(s,{to:"/fr/refund",className:"text-cyan-300 hover:underline",children:"politique de remboursement"}),"."]})]}),e.jsxs("p",{className:"text-secondary text-sm mt-4",children:["La documentation technique est en anglais. Pour toute question, écrivez-nous en français à"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})})]})}export{h as default}; diff --git a/assets/HomeFR-DzS_y1NC.js b/assets/HomeFR-DzS_y1NC.js deleted file mode 100644 index f4c64a1c..00000000 --- a/assets/HomeFR-DzS_y1NC.js +++ /dev/null @@ -1,2 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as n,e as a,P as r,L as t,C as l}from"./index-DayaklK-.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const c=[{titre:"QECTOR Decoder v3",texte:"La bibliothèque Python à noyau Rust : Union-Find, MWPM exact (Blossom), BP-OSD et Relay-BP pour les codes qLDPC, décodage par lots CPU et GPU, intégration Stim et Sinter.",lien:"/decoder",libelle:"Le décodeur (anglais)"},{titre:"Plugiciel Claude",texte:"Un serveur MCP isolé du réseau (air-gapped) qui apporte le décodage vérifié dans Claude Code et Claude Desktop, avec schémas validés et versions signées.",lien:"/claude-plugin",libelle:"Le plugiciel (anglais)"},{titre:"Workbench",texte:"L’application de bureau gratuite pour Windows et Linux : constructeur de circuits, familles de codes et décodeurs, sans installation de Python.",lien:"/workbench",libelle:"Le Workbench (anglais)"}],o=[["Chaque correction est vérifiée","Chaque résultat satisfait H·c = s (mod 2) : la correction reproduit le syndrome."],["Licences hors ligne","Jetons Ed25519 vérifiés localement. Aucun serveur de licence, aucune télémétrie : fonctionne sur des machines isolées."],["Versions vérifiables","18 wheels construites dans GitHub Actions, avec provenance Sigstore et attestations PyPI, testées sur chaque système avant publication."],["Aucun nombre de postes","Une licence couvre l’usage interne de votre organisation, sur autant de machines et par autant de personnes que nécessaire."]];function h(){return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"QECTOR · Décodage de correction d’erreurs quantiques pour Python",description:`QECTOR Decoder v3 : décodeurs QEC à noyau Rust pour Python (Union-Find, MWPM, BP-OSD, Relay-BP, GPU). Gratuit pour la recherche non commerciale; licences commerciales dès ${a(r.proMonthly)}/mois, vérifiées hors ligne.`,lang:"fr",alternates:[{lang:"en",href:"https://qector.store/"},{lang:"fr",href:"https://qector.store/fr/"},{lang:"x-default",href:"https://qector.store/"}]}),e.jsxs("section",{className:"relative pt-36 pb-20 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding max-w-4xl mx-auto",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"v1.0.1 · 18 wheels vérifiées"}),e.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-extrabold tracking-tight leading-[1.08] mb-6",children:[e.jsx("span",{className:"text-transparent bg-clip-text bg-gradient-to-r from-cyan-300 to-cyan-400",children:"Décodage QEC"})," pour Python"]}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-4",children:["Une seule bibliothèque pour plusieurs familles de décodeurs sur la même matrice de contrôle : Union-Find, MWPM exact, BP-OSD et Relay-BP pour les codes qLDPC, sur CPU et GPU, avec Stim et Sinter."," ",e.jsx("span",{className:"text-primary font-semibold",children:"Chaque correction est vérifiée contre son syndrome"}),", et les licences commerciales se vérifient hors ligne."]}),e.jsxs("p",{className:"text-sm text-muted-foreground mb-10",children:["Gratuit pour la recherche universitaire et non commerciale. Forfaits commerciaux dès ",a(r.proMonthly),"/mois, avec garantie de remboursement de ",r.refundDays," jours."]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 justify-center mb-10",children:[e.jsx(t,{to:"/fr/pricing",className:"btn-gold px-8 py-4",children:"Voir les forfaits →"}),e.jsx(t,{to:"/decoder",className:"btn-cyan px-8 py-4",hrefLang:"en",children:"Découvrir le décodeur"})]}),e.jsx("div",{className:"max-w-2xl mx-auto text-left",children:e.jsx(l,{language:"bash",filename:"Démarrage rapide",code:`pip install qector-decoder-v3==1.0.1 -python -c "from qector_decoder_v3 import BlossomDecoder; print('QECTOR OK')"`})})]})]}),e.jsx("section",{className:"section-padding pb-16",children:e.jsx("div",{className:"max-w-6xl mx-auto grid sm:grid-cols-2 gap-6",children:o.map(([s,i])=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-lg font-bold mb-2",children:s}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:i})]},s))})}),e.jsx("section",{className:"section-padding pb-16",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Les produits"}),e.jsx("div",{className:"grid md:grid-cols-3 gap-6",children:c.map(s=>e.jsxs("div",{className:"card-surface flex flex-col",children:[e.jsx("h3",{className:"text-lg font-bold mb-2",children:s.titre}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed flex-1",children:s.texte}),e.jsxs(t,{to:s.lien,hrefLang:"en",className:"text-cyan-300 text-sm mt-4 hover:underline",children:[s.libelle," →"]})]},s.titre))})]})}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"En français"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx(t,{to:"/fr/pricing",className:"text-cyan-300 hover:underline",children:"Tarifs et forfaits"})," : Pro, Labo, Pilote et Entreprise."]}),e.jsxs("li",{children:[e.jsx(t,{to:"/fr/license-agreement",className:"text-cyan-300 hover:underline",children:"Contrat de licence commerciale"}),", version 2026-11."]}),e.jsxs("li",{children:[e.jsx(t,{to:"/fr/privacy",className:"text-cyan-300 hover:underline",children:"Politique de confidentialité"})," (Loi 25)."]}),e.jsxs("li",{children:[e.jsx(t,{to:"/fr/terms",className:"text-cyan-300 hover:underline",children:"Conditions d’utilisation"})," et ",e.jsx(t,{to:"/fr/refund",className:"text-cyan-300 hover:underline",children:"politique de remboursement"}),"."]})]}),e.jsxs("p",{className:"text-secondary text-sm mt-4",children:["La documentation technique est en anglais. Pour toute question, écrivez-nous en français à"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})})]})}export{h as default}; diff --git a/assets/HomeFR-Jl_zglsD.js b/assets/HomeFR-Jl_zglsD.js deleted file mode 100644 index 11fe8ec6..00000000 --- a/assets/HomeFR-Jl_zglsD.js +++ /dev/null @@ -1,2 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as n,e as a,P as r,L as t,C as l}from"./index-PdoH5kLF.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const c=[{titre:"QECTOR Decoder v3",texte:"La bibliothèque Python à noyau Rust : Union-Find, MWPM exact (Blossom), BP-OSD et Relay-BP pour les codes qLDPC, décodage par lots CPU et GPU, intégration Stim et Sinter.",lien:"/decoder",libelle:"Le décodeur (anglais)"},{titre:"Plugiciel Claude",texte:"Un serveur MCP isolé du réseau (air-gapped) qui apporte le décodage vérifié dans Claude Code et Claude Desktop, avec schémas validés et versions signées.",lien:"/claude-plugin",libelle:"Le plugiciel (anglais)"},{titre:"Workbench",texte:"L’application de bureau gratuite pour Windows et Linux : constructeur de circuits, familles de codes et décodeurs, sans installation de Python.",lien:"/workbench",libelle:"Le Workbench (anglais)"}],o=[["Chaque correction est vérifiée","Chaque résultat satisfait H·c = s (mod 2) : la correction reproduit le syndrome."],["Licences hors ligne","Jetons Ed25519 vérifiés localement. Aucun serveur de licence, aucune télémétrie : fonctionne sur des machines isolées."],["Versions vérifiables","18 wheels construites dans GitHub Actions, avec provenance Sigstore et attestations PyPI, testées sur chaque système avant publication."],["Aucun nombre de postes","Une licence couvre l’usage interne de votre organisation, sur autant de machines et par autant de personnes que nécessaire."]];function h(){return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"QECTOR · Décodage de correction d’erreurs quantiques pour Python",description:`QECTOR Decoder v3 : décodeurs QEC à noyau Rust pour Python (Union-Find, MWPM, BP-OSD, Relay-BP, GPU). Gratuit pour la recherche non commerciale; licences commerciales dès ${a(r.proMonthly)}/mois, vérifiées hors ligne.`,lang:"fr",alternates:[{lang:"en",href:"https://qector.store/"},{lang:"fr",href:"https://qector.store/fr/"},{lang:"x-default",href:"https://qector.store/"}]}),e.jsxs("section",{className:"relative pt-36 pb-20 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding max-w-4xl mx-auto",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"v1.0.1 · 18 wheels vérifiées"}),e.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-extrabold tracking-tight leading-[1.08] mb-6",children:[e.jsx("span",{className:"text-transparent bg-clip-text bg-gradient-to-r from-cyan-300 to-cyan-400",children:"Décodage QEC"})," pour Python"]}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-4",children:["Une seule bibliothèque pour plusieurs familles de décodeurs sur la même matrice de contrôle : Union-Find, MWPM exact, BP-OSD et Relay-BP pour les codes qLDPC, sur CPU et GPU, avec Stim et Sinter."," ",e.jsx("span",{className:"text-primary font-semibold",children:"Chaque correction est vérifiée contre son syndrome"}),", et les licences commerciales se vérifient hors ligne."]}),e.jsxs("p",{className:"text-sm text-muted-foreground mb-10",children:["Gratuit pour la recherche universitaire et non commerciale. Forfaits commerciaux dès ",a(r.proMonthly),"/mois, avec garantie de remboursement de ",r.refundDays," jours."]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 justify-center mb-10",children:[e.jsx(t,{to:"/fr/pricing",className:"btn-gold px-8 py-4",children:"Voir les forfaits →"}),e.jsx(t,{to:"/decoder",className:"btn-cyan px-8 py-4",hrefLang:"en",children:"Découvrir le décodeur"})]}),e.jsx("div",{className:"max-w-2xl mx-auto text-left",children:e.jsx(l,{language:"bash",filename:"Démarrage rapide",code:`pip install qector-decoder-v3==1.0.1 -python -c "from qector_decoder_v3 import BlossomDecoder; print('QECTOR OK')"`})})]})]}),e.jsx("section",{className:"section-padding pb-16",children:e.jsx("div",{className:"max-w-6xl mx-auto grid sm:grid-cols-2 gap-6",children:o.map(([s,i])=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-lg font-bold mb-2",children:s}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:i})]},s))})}),e.jsx("section",{className:"section-padding pb-16",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Les produits"}),e.jsx("div",{className:"grid md:grid-cols-3 gap-6",children:c.map(s=>e.jsxs("div",{className:"card-surface flex flex-col",children:[e.jsx("h3",{className:"text-lg font-bold mb-2",children:s.titre}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed flex-1",children:s.texte}),e.jsxs(t,{to:s.lien,hrefLang:"en",className:"text-cyan-300 text-sm mt-4 hover:underline",children:[s.libelle," →"]})]},s.titre))})]})}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"En français"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx(t,{to:"/fr/pricing",className:"text-cyan-300 hover:underline",children:"Tarifs et forfaits"})," : Pro, Labo, Pilote et Entreprise."]}),e.jsxs("li",{children:[e.jsx(t,{to:"/fr/license-agreement",className:"text-cyan-300 hover:underline",children:"Contrat de licence commerciale"}),", version 2026-11."]}),e.jsxs("li",{children:[e.jsx(t,{to:"/fr/privacy",className:"text-cyan-300 hover:underline",children:"Politique de confidentialité"})," (Loi 25)."]}),e.jsxs("li",{children:[e.jsx(t,{to:"/fr/terms",className:"text-cyan-300 hover:underline",children:"Conditions d’utilisation"})," et ",e.jsx(t,{to:"/fr/refund",className:"text-cyan-300 hover:underline",children:"politique de remboursement"}),"."]})]}),e.jsxs("p",{className:"text-secondary text-sm mt-4",children:["La documentation technique est en anglais. Pour toute question, écrivez-nous en français à"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})})]})}export{h as default}; diff --git a/assets/HomeFR-hCJiffE8.js b/assets/HomeFR-hCJiffE8.js deleted file mode 100644 index 0586b83c..00000000 --- a/assets/HomeFR-hCJiffE8.js +++ /dev/null @@ -1,2 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as n,e as a,P as r,L as t,C as l}from"./index-c1PDYu0j.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const c=[{titre:"QECTOR Decoder v3",texte:"La bibliothèque Python à noyau Rust : Union-Find, MWPM exact (Blossom), BP-OSD et Relay-BP pour les codes qLDPC, décodage par lots CPU et GPU, intégration Stim et Sinter.",lien:"/decoder",libelle:"Le décodeur (anglais)"},{titre:"Plugiciel Claude",texte:"Un serveur MCP isolé du réseau (air-gapped) qui apporte le décodage vérifié dans Claude Code et Claude Desktop, avec schémas validés et versions signées.",lien:"/claude-plugin",libelle:"Le plugiciel (anglais)"},{titre:"Workbench",texte:"L’application de bureau gratuite pour Windows et Linux : constructeur de circuits, familles de codes et décodeurs, sans installation de Python.",lien:"/workbench",libelle:"Le Workbench (anglais)"}],o=[["Chaque correction est vérifiée","Chaque résultat satisfait H·c = s (mod 2) : la correction reproduit le syndrome."],["Licences hors ligne","Jetons Ed25519 vérifiés localement. Aucun serveur de licence, aucune télémétrie : fonctionne sur des machines isolées."],["Versions vérifiables","18 wheels construites dans GitHub Actions, avec provenance Sigstore et attestations PyPI, testées sur chaque système avant publication."],["Aucun nombre de postes","Une licence couvre l’usage interne de votre organisation, sur autant de machines et par autant de personnes que nécessaire."]];function h(){return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"QECTOR · Décodage de correction d’erreurs quantiques pour Python",description:`QECTOR Decoder v3 : décodeurs QEC à noyau Rust pour Python (Union-Find, MWPM, BP-OSD, Relay-BP, GPU). Gratuit pour la recherche non commerciale; licences commerciales dès ${a(r.proMonthly)}/mois, vérifiées hors ligne.`,lang:"fr",alternates:[{lang:"en",href:"https://qector.store/"},{lang:"fr",href:"https://qector.store/fr/"},{lang:"x-default",href:"https://qector.store/"}]}),e.jsxs("section",{className:"relative pt-36 pb-20 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding max-w-4xl mx-auto",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"v1.0.1 · 18 wheels vérifiées"}),e.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-extrabold tracking-tight leading-[1.08] mb-6",children:[e.jsx("span",{className:"text-transparent bg-clip-text bg-gradient-to-r from-cyan-300 to-cyan-400",children:"Décodage QEC"})," pour Python"]}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-4",children:["Une seule bibliothèque pour plusieurs familles de décodeurs sur la même matrice de contrôle : Union-Find, MWPM exact, BP-OSD et Relay-BP pour les codes qLDPC, sur CPU et GPU, avec Stim et Sinter."," ",e.jsx("span",{className:"text-primary font-semibold",children:"Chaque correction est vérifiée contre son syndrome"}),", et les licences commerciales se vérifient hors ligne."]}),e.jsxs("p",{className:"text-sm text-muted-foreground mb-10",children:["Gratuit pour la recherche universitaire et non commerciale. Forfaits commerciaux dès ",a(r.proMonthly),"/mois, avec garantie de remboursement de ",r.refundDays," jours."]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 justify-center mb-10",children:[e.jsx(t,{to:"/fr/pricing",className:"btn-gold px-8 py-4",children:"Voir les forfaits →"}),e.jsx(t,{to:"/decoder",className:"btn-cyan px-8 py-4",hrefLang:"en",children:"Découvrir le décodeur"})]}),e.jsx("div",{className:"max-w-2xl mx-auto text-left",children:e.jsx(l,{language:"bash",filename:"Démarrage rapide",code:`pip install qector-decoder-v3==1.0.1 -python -c "from qector_decoder_v3 import BlossomDecoder; print('QECTOR OK')"`})})]})]}),e.jsx("section",{className:"section-padding pb-16",children:e.jsx("div",{className:"max-w-6xl mx-auto grid sm:grid-cols-2 gap-6",children:o.map(([s,i])=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-lg font-bold mb-2",children:s}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:i})]},s))})}),e.jsx("section",{className:"section-padding pb-16",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Les produits"}),e.jsx("div",{className:"grid md:grid-cols-3 gap-6",children:c.map(s=>e.jsxs("div",{className:"card-surface flex flex-col",children:[e.jsx("h3",{className:"text-lg font-bold mb-2",children:s.titre}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed flex-1",children:s.texte}),e.jsxs(t,{to:s.lien,hrefLang:"en",className:"text-cyan-300 text-sm mt-4 hover:underline",children:[s.libelle," →"]})]},s.titre))})]})}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"En français"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx(t,{to:"/fr/pricing",className:"text-cyan-300 hover:underline",children:"Tarifs et forfaits"})," : Pro, Labo, Pilote et Entreprise."]}),e.jsxs("li",{children:[e.jsx(t,{to:"/fr/license-agreement",className:"text-cyan-300 hover:underline",children:"Contrat de licence commerciale"}),", version 2026-11."]}),e.jsxs("li",{children:[e.jsx(t,{to:"/fr/privacy",className:"text-cyan-300 hover:underline",children:"Politique de confidentialité"})," (Loi 25)."]}),e.jsxs("li",{children:[e.jsx(t,{to:"/fr/terms",className:"text-cyan-300 hover:underline",children:"Conditions d’utilisation"})," et ",e.jsx(t,{to:"/fr/refund",className:"text-cyan-300 hover:underline",children:"politique de remboursement"}),"."]})]}),e.jsxs("p",{className:"text-secondary text-sm mt-4",children:["La documentation technique est en anglais. Pour toute question, écrivez-nous en français à"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})})]})}export{h as default}; diff --git a/assets/HomeFR-hP6O4Cqx.js b/assets/HomeFR-hP6O4Cqx.js deleted file mode 100644 index 67f119b1..00000000 --- a/assets/HomeFR-hP6O4Cqx.js +++ /dev/null @@ -1,2 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as n,e as a,P as r,L as t,C as l}from"./index-CcwlvHYJ.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";const c=[{titre:"QECTOR Decoder v3",texte:"La bibliothèque Python à noyau Rust : Union-Find, MWPM exact (Blossom), BP-OSD et Relay-BP pour les codes qLDPC, décodage par lots CPU et GPU, intégration Stim et Sinter.",lien:"/decoder",libelle:"Le décodeur (anglais)"},{titre:"Plugiciel Claude",texte:"Un serveur MCP isolé du réseau (air-gapped) qui apporte le décodage vérifié dans Claude Code et Claude Desktop, avec schémas validés et versions signées.",lien:"/claude-plugin",libelle:"Le plugiciel (anglais)"},{titre:"Workbench",texte:"L’application de bureau gratuite pour Windows et Linux : constructeur de circuits, familles de codes et décodeurs, sans installation de Python.",lien:"/workbench",libelle:"Le Workbench (anglais)"}],o=[["Chaque correction est vérifiée","Chaque résultat satisfait H·c = s (mod 2) : la correction reproduit le syndrome."],["Licences hors ligne","Jetons Ed25519 vérifiés localement. Aucun serveur de licence, aucune télémétrie : fonctionne sur des machines isolées."],["Versions vérifiables","18 wheels construites dans GitHub Actions, avec provenance Sigstore et attestations PyPI, testées sur chaque système avant publication."],["Aucun nombre de postes","Une licence couvre l’usage interne de votre organisation, sur autant de machines et par autant de personnes que nécessaire."]];function h(){return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"QECTOR · Décodage de correction d’erreurs quantiques pour Python",description:`QECTOR Decoder v3 : décodeurs QEC à noyau Rust pour Python (Union-Find, MWPM, BP-OSD, Relay-BP, GPU). Gratuit pour la recherche non commerciale; licences commerciales dès ${a(r.proMonthly)}/mois, vérifiées hors ligne.`,lang:"fr",alternates:[{lang:"en",href:"https://qector.store/"},{lang:"fr",href:"https://qector.store/fr/"},{lang:"x-default",href:"https://qector.store/"}]}),e.jsxs("section",{className:"relative pt-36 pb-20 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding max-w-4xl mx-auto",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"v1.0.1 · 18 wheels vérifiées"}),e.jsxs("h1",{className:"text-4xl sm:text-5xl md:text-6xl font-extrabold tracking-tight leading-[1.08] mb-6",children:[e.jsx("span",{className:"text-transparent bg-clip-text bg-gradient-to-r from-cyan-300 to-cyan-400",children:"Décodage QEC"})," pour Python"]}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-4",children:["Une seule bibliothèque pour plusieurs familles de décodeurs sur la même matrice de contrôle : Union-Find, MWPM exact, BP-OSD et Relay-BP pour les codes qLDPC, sur CPU et GPU, avec Stim et Sinter."," ",e.jsx("span",{className:"text-primary font-semibold",children:"Chaque correction est vérifiée contre son syndrome"}),", et les licences commerciales se vérifient hors ligne."]}),e.jsxs("p",{className:"text-sm text-muted-foreground mb-10",children:["Gratuit pour la recherche universitaire et non commerciale. Forfaits commerciaux dès ",a(r.proMonthly),"/mois, avec garantie de remboursement de ",r.refundDays," jours."]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 justify-center mb-10",children:[e.jsx(t,{to:"/fr/pricing",className:"btn-gold px-8 py-4",children:"Voir les forfaits →"}),e.jsx(t,{to:"/decoder",className:"btn-cyan px-8 py-4",hrefLang:"en",children:"Découvrir le décodeur"})]}),e.jsx("div",{className:"max-w-2xl mx-auto text-left",children:e.jsx(l,{language:"bash",filename:"Démarrage rapide",code:`pip install qector-decoder-v3==1.0.1 -python -c "from qector_decoder_v3 import BlossomDecoder; print('QECTOR OK')"`})})]})]}),e.jsx("section",{className:"section-padding pb-16",children:e.jsx("div",{className:"max-w-6xl mx-auto grid sm:grid-cols-2 gap-6",children:o.map(([s,i])=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-lg font-bold mb-2",children:s}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:i})]},s))})}),e.jsx("section",{className:"section-padding pb-16",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Les produits"}),e.jsx("div",{className:"grid md:grid-cols-3 gap-6",children:c.map(s=>e.jsxs("div",{className:"card-surface flex flex-col",children:[e.jsx("h3",{className:"text-lg font-bold mb-2",children:s.titre}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed flex-1",children:s.texte}),e.jsxs(t,{to:s.lien,hrefLang:"en",className:"text-cyan-300 text-sm mt-4 hover:underline",children:[s.libelle," →"]})]},s.titre))})]})}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"En français"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx(t,{to:"/fr/pricing",className:"text-cyan-300 hover:underline",children:"Tarifs et forfaits"})," : Pro, Labo, Pilote et Entreprise."]}),e.jsxs("li",{children:[e.jsx(t,{to:"/fr/license-agreement",className:"text-cyan-300 hover:underline",children:"Contrat de licence commerciale"}),", version 2026-11."]}),e.jsxs("li",{children:[e.jsx(t,{to:"/fr/privacy",className:"text-cyan-300 hover:underline",children:"Politique de confidentialité"})," (Loi 25)."]}),e.jsxs("li",{children:[e.jsx(t,{to:"/fr/terms",className:"text-cyan-300 hover:underline",children:"Conditions d’utilisation"})," et ",e.jsx(t,{to:"/fr/refund",className:"text-cyan-300 hover:underline",children:"politique de remboursement"}),"."]})]}),e.jsxs("p",{className:"text-secondary text-sm mt-4",children:["La documentation technique est en anglais. Pour toute question, écrivez-nous en français à"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})})]})}export{h as default}; diff --git a/assets/Installer-AK92G1y0.js b/assets/Installer-AK92G1y0.js deleted file mode 100644 index 123516ad..00000000 --- a/assets/Installer-AK92G1y0.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{u as t,S as n}from"./index-BN-vOeL2.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function x(){const{version:s}=t();return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Installation · QECTOR",description:"Install QECTOR Decoder v3 on Linux, macOS, or Windows. PyPI pip install with binary wheels."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PyPI Binary Wheels · AIO Installer · CUDA + OpenCL Optional"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Installation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 ships as a Rust-compiled Python wheel (v1.0.0: 15 binary wheels for CPython 3.9-3.13, no sdist). One command on ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Linux x86_64, macOS ARM64, and Windows amd64"}),". GPU backends optional."]}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"System Requirements"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm list-disc pl-5",children:[e.jsx("li",{children:"Python 3.9, 3.10, 3.11, 3.12, or 3.13"}),e.jsx("li",{children:"64-bit operating system (Linux x86_64, macOS arm64, Windows amd64)"}),e.jsxs("li",{children:["Stim/Sinter/PyMatching are optional extras; install ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3[stim]"})," when needed."]}),e.jsx("li",{children:"GPU paths are optional and environment-dependent; follow the package release documentation for supported drivers and extras."})]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/20",children:[e.jsx("h2",{className:"text-xl font-bold mb-4 text-cyan-300",children:"Quick Install (Recommended)"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground",children:e.jsxs("div",{children:["pip install qector-decoder-v3==",s]})}),e.jsx("p",{className:"text-secondary text-sm mt-3",children:"This installs the latest stable release with pre-compiled binary wheels."}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["Optional extras: ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[stim]"})," (Stim/Sinter/PyMatching), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[bench]"})," (local measurement tools), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[all]"})," (full environment)."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Verify Installation"}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{children:'python -c "import qector_decoder_v3; print(qector_decoder_v3.__version__)"'}),e.jsxs("div",{className:"text-green-400 font-semibold",children:["# Should print: ",s]}),e.jsx("div",{className:"mt-2",children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# 15-check environment diagnostic; reports PASS / WARN / FAIL per check"}),e.jsx("div",{className:"mt-2",children:`python -c "from qector_decoder_v3 import BlossomDecoder, UnionFindDecoder; print('QECTOR OK')"`}),e.jsx("div",{className:"text-green-400",children:"# Should print: QECTOR OK"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Platform-Specific Notes"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Linux"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported Linux platforms and runtime dependencies."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"macOS"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported macOS architectures and minimum version."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Windows"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel for supported Windows Python and architecture combinations. GPU availability remains driver- and device-dependent."})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Optional GPU Workflows"}),e.jsx("p",{className:"text-secondary text-sm mb-3",children:"GPU availability depends on the installed wheel, optional dependencies, operating system, driver, and device. Use the extras and support matrix documented by the package release rather than assuming a GPU backend is available."}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{className:"text-cyan-300",children:"# Optional full environment"}),e.jsx("div",{children:'pip install "qector-decoder-v3[all]"'}),e.jsx("div",{className:"mt-2 text-cyan-300",children:"# Verify the installed package API and environment"}),e.jsx("div",{children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# Read the diagnostic's backend-specific PASS / WARN / FAIL output"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Troubleshooting"}),e.jsxs("div",{className:"space-y-3 text-secondary text-sm",children:[e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"ImportError on macOS:"})," Ensure you have Python 3.9+ from python.org or Homebrew. The system Python may not work."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"GPU not detected:"})," Verify CUDA installation with ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"nvidia-smi"}),". Check the package release documentation for supported CUDA versions."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"Slow import:"})," First import initializes the runtime and validates optional paths. Subsequent imports are fast."]})]})]})]})})]})}export{x as default}; diff --git a/assets/Installer-B56SNEpM.js b/assets/Installer-B56SNEpM.js deleted file mode 100644 index ae36a9c3..00000000 --- a/assets/Installer-B56SNEpM.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{u as t,S as n}from"./index-BcbVjARk.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function x(){const{version:s}=t();return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Installation · QECTOR",description:"Install QECTOR Decoder v3 on Linux, macOS, or Windows. PyPI pip install with binary wheels."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PyPI Binary Wheels · AIO Installer · CUDA + OpenCL Optional"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Installation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 ships as a Rust-compiled Python wheel (v1.0.0: 15 binary wheels for CPython 3.9-3.13, no sdist). One command on ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Linux x86_64, macOS ARM64, and Windows amd64"}),". GPU backends optional."]}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"System Requirements"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm list-disc pl-5",children:[e.jsx("li",{children:"Python 3.9, 3.10, 3.11, 3.12, or 3.13"}),e.jsx("li",{children:"64-bit operating system (Linux x86_64, macOS arm64, Windows amd64)"}),e.jsxs("li",{children:["Stim/Sinter/PyMatching are optional extras; install ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3[stim]"})," when needed."]}),e.jsx("li",{children:"GPU paths are optional and environment-dependent; follow the package release documentation for supported drivers and extras."})]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/20",children:[e.jsx("h2",{className:"text-xl font-bold mb-4 text-cyan-300",children:"Quick Install (Recommended)"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground",children:e.jsxs("div",{children:["pip install qector-decoder-v3==",s]})}),e.jsx("p",{className:"text-secondary text-sm mt-3",children:"This installs the latest stable release with pre-compiled binary wheels."}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["Optional extras: ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[stim]"})," (Stim/Sinter/PyMatching), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[bench]"})," (local measurement tools), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[all]"})," (full environment)."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Verify Installation"}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{children:'python -c "import qector_decoder_v3; print(qector_decoder_v3.__version__)"'}),e.jsxs("div",{className:"text-green-400 font-semibold",children:["# Should print: ",s]}),e.jsx("div",{className:"mt-2",children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# 15-check environment diagnostic; reports PASS / WARN / FAIL per check"}),e.jsx("div",{className:"mt-2",children:`python -c "from qector_decoder_v3 import BlossomDecoder, UnionFindDecoder; print('QECTOR OK')"`}),e.jsx("div",{className:"text-green-400",children:"# Should print: QECTOR OK"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Platform-Specific Notes"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Linux"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported Linux platforms and runtime dependencies."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"macOS"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported macOS architectures and minimum version."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Windows"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel for supported Windows Python and architecture combinations. GPU availability remains driver- and device-dependent."})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Optional GPU Workflows"}),e.jsx("p",{className:"text-secondary text-sm mb-3",children:"GPU availability depends on the installed wheel, optional dependencies, operating system, driver, and device. Use the extras and support matrix documented by the package release rather than assuming a GPU backend is available."}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{className:"text-cyan-300",children:"# Optional full environment"}),e.jsx("div",{children:'pip install "qector-decoder-v3[all]"'}),e.jsx("div",{className:"mt-2 text-cyan-300",children:"# Verify the installed package API and environment"}),e.jsx("div",{children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# Read the diagnostic's backend-specific PASS / WARN / FAIL output"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Troubleshooting"}),e.jsxs("div",{className:"space-y-3 text-secondary text-sm",children:[e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"ImportError on macOS:"})," Ensure you have Python 3.9+ from python.org or Homebrew. The system Python may not work."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"GPU not detected:"})," Verify CUDA installation with ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"nvidia-smi"}),". Check the package release documentation for supported CUDA versions."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"Slow import:"})," First import initializes the runtime and validates optional paths. Subsequent imports are fast."]})]})]})]})})]})}export{x as default}; diff --git a/assets/Installer-BPMW9xjA.js b/assets/Installer-BPMW9xjA.js deleted file mode 100644 index f95fec6f..00000000 --- a/assets/Installer-BPMW9xjA.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{u as t,S as n}from"./index-Bh9DBCb3.js";import{N as a}from"./NeuralReveal-D-EQoOl2.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function x(){const{version:s}=t();return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Installation · QECTOR",description:"Install QECTOR Decoder v3 on Linux, macOS, or Windows. PyPI pip install with binary wheels."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PyPI Binary Wheels · AIO Installer · CUDA + OpenCL Optional"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Installation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 ships as a Rust-compiled Python wheel (v1.0.1: 18 binary wheels for CPython 3.9-3.14, no sdist). One command on ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Linux x86_64, macOS ARM64, and Windows amd64"}),". GPU backends optional."]}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"System Requirements"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm list-disc pl-5",children:[e.jsx("li",{children:"Python 3.9, 3.10, 3.11, 3.12, or 3.13"}),e.jsx("li",{children:"64-bit operating system (Linux x86_64, macOS arm64, Windows amd64)"}),e.jsxs("li",{children:["Stim/Sinter/PyMatching are optional extras; install ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3[stim]"})," when needed."]}),e.jsx("li",{children:"GPU paths are optional and environment-dependent; follow the package release documentation for supported drivers and extras."})]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/20",children:[e.jsx("h2",{className:"text-xl font-bold mb-4 text-cyan-300",children:"Quick Install (Recommended)"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground",children:e.jsxs("div",{children:["pip install qector-decoder-v3==",s]})}),e.jsx("p",{className:"text-secondary text-sm mt-3",children:"This installs the latest stable release with pre-compiled binary wheels."}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["Optional extras: ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[stim]"})," (Stim/Sinter/PyMatching), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[bench]"})," (local measurement tools), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[all]"})," (full environment)."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Verify Installation"}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{children:'python -c "import qector_decoder_v3; print(qector_decoder_v3.__version__)"'}),e.jsxs("div",{className:"text-green-400 font-semibold",children:["# Should print: ",s]}),e.jsx("div",{className:"mt-2",children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# 15-check environment diagnostic; reports PASS / WARN / FAIL per check"}),e.jsx("div",{className:"mt-2",children:`python -c "from qector_decoder_v3 import BlossomDecoder, UnionFindDecoder; print('QECTOR OK')"`}),e.jsx("div",{className:"text-green-400",children:"# Should print: QECTOR OK"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Platform-Specific Notes"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Linux"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported Linux platforms and runtime dependencies."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"macOS"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported macOS architectures and minimum version."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Windows"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel for supported Windows Python and architecture combinations. GPU availability remains driver- and device-dependent."})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Optional GPU Workflows"}),e.jsx("p",{className:"text-secondary text-sm mb-3",children:"GPU availability depends on the installed wheel, optional dependencies, operating system, driver, and device. Use the extras and support matrix documented by the package release rather than assuming a GPU backend is available."}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{className:"text-cyan-300",children:"# Optional full environment"}),e.jsx("div",{children:'pip install "qector-decoder-v3[all]"'}),e.jsx("div",{className:"mt-2 text-cyan-300",children:"# Verify the installed package API and environment"}),e.jsx("div",{children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# Read the diagnostic's backend-specific PASS / WARN / FAIL output"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Troubleshooting"}),e.jsxs("div",{className:"space-y-3 text-secondary text-sm",children:[e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"ImportError on macOS:"})," Ensure you have Python 3.9-3.14 from python.org or Homebrew. The system Python may not work."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"GPU not detected:"})," Verify CUDA installation with ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"nvidia-smi"}),". Check the package release documentation for supported CUDA versions."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"Slow import:"})," First import initializes the runtime and validates optional paths. Subsequent imports are fast."]})]})]})]})})]})}export{x as default}; diff --git a/assets/Installer-C7vdQ6zA.js b/assets/Installer-C7vdQ6zA.js deleted file mode 100644 index ca8b52b4..00000000 --- a/assets/Installer-C7vdQ6zA.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{u as t,S as n}from"./index-PdoH5kLF.js";import{N as a}from"./NeuralReveal-Bsl9IGCr.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";function c(){const{version:s}=t();return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Installation · QECTOR",description:"Install QECTOR Decoder v3 on Linux, macOS, or Windows. PyPI pip install with binary wheels."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PyPI Binary Wheels · AIO Installer · CUDA + OpenCL Optional"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Installation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 ships as a Rust-compiled Python wheel (v1.0.1: 18 binary wheels for CPython 3.9-3.14, no sdist). One command on ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Linux x86_64, macOS ARM64, and Windows amd64"}),". GPU backends optional."]}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"System Requirements"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm list-disc pl-5",children:[e.jsx("li",{children:"Python 3.9, 3.10, 3.11, 3.12, or 3.13"}),e.jsx("li",{children:"64-bit operating system (Linux x86_64, macOS arm64, Windows amd64)"}),e.jsxs("li",{children:["Stim/Sinter/PyMatching are optional extras; install ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3[stim]"})," when needed."]}),e.jsx("li",{children:"GPU paths are optional and environment-dependent; follow the package release documentation for supported drivers and extras."})]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/20",children:[e.jsx("h2",{className:"text-xl font-bold mb-4 text-cyan-300",children:"Quick Install (Recommended)"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground",children:e.jsxs("div",{children:["pip install qector-decoder-v3==",s]})}),e.jsx("p",{className:"text-secondary text-sm mt-3",children:"This installs the latest stable release with pre-compiled binary wheels."}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["Optional extras: ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[stim]"})," (Stim/Sinter/PyMatching), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[bench]"})," (local measurement tools), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[all]"})," (full environment)."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Verify Installation"}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{children:'python -c "import qector_decoder_v3; print(qector_decoder_v3.__version__)"'}),e.jsxs("div",{className:"text-green-400 font-semibold",children:["# Should print: ",s]}),e.jsx("div",{className:"mt-2",children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# 15-check environment diagnostic; reports PASS / WARN / FAIL per check"}),e.jsx("div",{className:"mt-2",children:`python -c "from qector_decoder_v3 import BlossomDecoder, UnionFindDecoder; print('QECTOR OK')"`}),e.jsx("div",{className:"text-green-400",children:"# Should print: QECTOR OK"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Platform-Specific Notes"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Linux"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported Linux platforms and runtime dependencies."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"macOS"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported macOS architectures and minimum version."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Windows"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel for supported Windows Python and architecture combinations. GPU availability remains driver- and device-dependent."})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Optional GPU Workflows"}),e.jsx("p",{className:"text-secondary text-sm mb-3",children:"GPU availability depends on the installed wheel, optional dependencies, operating system, driver, and device. Use the extras and support matrix documented by the package release rather than assuming a GPU backend is available."}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{className:"text-cyan-300",children:"# Optional full environment"}),e.jsx("div",{children:'pip install "qector-decoder-v3[all]"'}),e.jsx("div",{className:"mt-2 text-cyan-300",children:"# Verify the installed package API and environment"}),e.jsx("div",{children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# Read the diagnostic's backend-specific PASS / WARN / FAIL output"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Troubleshooting"}),e.jsxs("div",{className:"space-y-3 text-secondary text-sm",children:[e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"ImportError on macOS:"})," Ensure you have Python 3.9-3.14 from python.org or Homebrew. The system Python may not work."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"GPU not detected:"})," Verify CUDA installation with ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"nvidia-smi"}),". Check the package release documentation for supported CUDA versions."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"Slow import:"})," First import initializes the runtime and validates optional paths. Subsequent imports are fast."]})]})]})]})})]})}export{c as default}; diff --git a/assets/Installer-C9MdHg8C.js b/assets/Installer-C9MdHg8C.js deleted file mode 100644 index f17a03b9..00000000 --- a/assets/Installer-C9MdHg8C.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{u as t,S as n}from"./index-CcwlvHYJ.js";import{N as a}from"./NeuralReveal-Bsl9IGCr.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function c(){const{version:s}=t();return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Installation · QECTOR",description:"Install QECTOR Decoder v3 on Linux, macOS, or Windows. PyPI pip install with binary wheels."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PyPI Binary Wheels · AIO Installer · CUDA + OpenCL Optional"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Installation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 ships as a Rust-compiled Python wheel (v1.0.1: 18 binary wheels for CPython 3.9-3.14, no sdist). One command on ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Linux x86_64, macOS ARM64, and Windows amd64"}),". GPU backends optional."]}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"System Requirements"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm list-disc pl-5",children:[e.jsx("li",{children:"Python 3.9, 3.10, 3.11, 3.12, or 3.13"}),e.jsx("li",{children:"64-bit operating system (Linux x86_64, macOS arm64, Windows amd64)"}),e.jsxs("li",{children:["Stim/Sinter/PyMatching are optional extras; install ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3[stim]"})," when needed."]}),e.jsx("li",{children:"GPU paths are optional and environment-dependent; follow the package release documentation for supported drivers and extras."})]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/20",children:[e.jsx("h2",{className:"text-xl font-bold mb-4 text-cyan-300",children:"Quick Install (Recommended)"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground",children:e.jsxs("div",{children:["pip install qector-decoder-v3==",s]})}),e.jsx("p",{className:"text-secondary text-sm mt-3",children:"This installs the latest stable release with pre-compiled binary wheels."}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["Optional extras: ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[stim]"})," (Stim/Sinter/PyMatching), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[bench]"})," (local measurement tools), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[all]"})," (full environment)."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Verify Installation"}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{children:'python -c "import qector_decoder_v3; print(qector_decoder_v3.__version__)"'}),e.jsxs("div",{className:"text-green-400 font-semibold",children:["# Should print: ",s]}),e.jsx("div",{className:"mt-2",children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# 15-check environment diagnostic; reports PASS / WARN / FAIL per check"}),e.jsx("div",{className:"mt-2",children:`python -c "from qector_decoder_v3 import BlossomDecoder, UnionFindDecoder; print('QECTOR OK')"`}),e.jsx("div",{className:"text-green-400",children:"# Should print: QECTOR OK"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Platform-Specific Notes"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Linux"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported Linux platforms and runtime dependencies."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"macOS"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported macOS architectures and minimum version."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Windows"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel for supported Windows Python and architecture combinations. GPU availability remains driver- and device-dependent."})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Optional GPU Workflows"}),e.jsx("p",{className:"text-secondary text-sm mb-3",children:"GPU availability depends on the installed wheel, optional dependencies, operating system, driver, and device. Use the extras and support matrix documented by the package release rather than assuming a GPU backend is available."}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{className:"text-cyan-300",children:"# Optional full environment"}),e.jsx("div",{children:'pip install "qector-decoder-v3[all]"'}),e.jsx("div",{className:"mt-2 text-cyan-300",children:"# Verify the installed package API and environment"}),e.jsx("div",{children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# Read the diagnostic's backend-specific PASS / WARN / FAIL output"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Troubleshooting"}),e.jsxs("div",{className:"space-y-3 text-secondary text-sm",children:[e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"ImportError on macOS:"})," Ensure you have Python 3.9-3.14 from python.org or Homebrew. The system Python may not work."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"GPU not detected:"})," Verify CUDA installation with ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"nvidia-smi"}),". Check the package release documentation for supported CUDA versions."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"Slow import:"})," First import initializes the runtime and validates optional paths. Subsequent imports are fast."]})]})]})]})})]})}export{c as default}; diff --git a/assets/Installer-CCQImbh1.js b/assets/Installer-CCQImbh1.js deleted file mode 100644 index a09e1ac4..00000000 --- a/assets/Installer-CCQImbh1.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{u as t,S as n}from"./index-DlmjLVYe.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function x(){const{version:s}=t();return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Installation · QECTOR",description:"Install QECTOR Decoder v3 on Linux, macOS, or Windows. PyPI pip install with binary wheels."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PyPI Binary Wheels · AIO Installer · CUDA + OpenCL Optional"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Installation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 ships as a Rust-compiled Python wheel (v1.0.0: 15 binary wheels for CPython 3.9-3.13, no sdist). One command on ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Linux x86_64, macOS ARM64, and Windows amd64"}),". GPU backends optional."]}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"System Requirements"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm list-disc pl-5",children:[e.jsx("li",{children:"Python 3.9, 3.10, 3.11, 3.12, or 3.13"}),e.jsx("li",{children:"64-bit operating system (Linux x86_64, macOS arm64, Windows amd64)"}),e.jsxs("li",{children:["Stim/Sinter/PyMatching are optional extras; install ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3[stim]"})," when needed."]}),e.jsx("li",{children:"GPU paths are optional and environment-dependent; follow the package release documentation for supported drivers and extras."})]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/20",children:[e.jsx("h2",{className:"text-xl font-bold mb-4 text-cyan-300",children:"Quick Install (Recommended)"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground",children:e.jsxs("div",{children:["pip install qector-decoder-v3==",s]})}),e.jsx("p",{className:"text-secondary text-sm mt-3",children:"This installs the latest stable release with pre-compiled binary wheels."}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["Optional extras: ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[stim]"})," (Stim/Sinter/PyMatching), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[bench]"})," (local measurement tools), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[all]"})," (full environment)."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Verify Installation"}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{children:'python -c "import qector_decoder_v3; print(qector_decoder_v3.__version__)"'}),e.jsxs("div",{className:"text-green-400 font-semibold",children:["# Should print: ",s]}),e.jsx("div",{className:"mt-2",children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# 15-check environment diagnostic; reports PASS / WARN / FAIL per check"}),e.jsx("div",{className:"mt-2",children:`python -c "from qector_decoder_v3 import BlossomDecoder, UnionFindDecoder; print('QECTOR OK')"`}),e.jsx("div",{className:"text-green-400",children:"# Should print: QECTOR OK"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Platform-Specific Notes"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Linux"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported Linux platforms and runtime dependencies."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"macOS"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported macOS architectures and minimum version."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Windows"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel for supported Windows Python and architecture combinations. GPU availability remains driver- and device-dependent."})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Optional GPU Workflows"}),e.jsx("p",{className:"text-secondary text-sm mb-3",children:"GPU availability depends on the installed wheel, optional dependencies, operating system, driver, and device. Use the extras and support matrix documented by the package release rather than assuming a GPU backend is available."}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{className:"text-cyan-300",children:"# Optional full environment"}),e.jsx("div",{children:'pip install "qector-decoder-v3[all]"'}),e.jsx("div",{className:"mt-2 text-cyan-300",children:"# Verify the installed package API and environment"}),e.jsx("div",{children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# Read the diagnostic's backend-specific PASS / WARN / FAIL output"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Troubleshooting"}),e.jsxs("div",{className:"space-y-3 text-secondary text-sm",children:[e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"ImportError on macOS:"})," Ensure you have Python 3.9+ from python.org or Homebrew. The system Python may not work."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"GPU not detected:"})," Verify CUDA installation with ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"nvidia-smi"}),". Check the package release documentation for supported CUDA versions."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"Slow import:"})," First import initializes the runtime and validates optional paths. Subsequent imports are fast."]})]})]})]})})]})}export{x as default}; diff --git a/assets/Installer-CHLZGdf0.js b/assets/Installer-CHLZGdf0.js deleted file mode 100644 index 3880a081..00000000 --- a/assets/Installer-CHLZGdf0.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{u as t,S as n}from"./index-DRAXObZB.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function x(){const{version:s}=t();return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Installation · QECTOR",description:"Install QECTOR Decoder v3 on Linux, macOS, or Windows. PyPI pip install with binary wheels."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PyPI Binary Wheels · AIO Installer · CUDA + OpenCL Optional"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Installation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 ships as a Rust-compiled Python wheel (v1.0.0: 15 binary wheels for CPython 3.9-3.13, no sdist). One command on ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Linux x86_64, macOS ARM64, and Windows amd64"}),". GPU backends optional."]}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"System Requirements"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm list-disc pl-5",children:[e.jsx("li",{children:"Python 3.9, 3.10, 3.11, 3.12, or 3.13"}),e.jsx("li",{children:"64-bit operating system (Linux x86_64, macOS arm64, Windows amd64)"}),e.jsxs("li",{children:["Stim/Sinter/PyMatching are optional extras; install ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3[stim]"})," when needed."]}),e.jsx("li",{children:"GPU paths are optional and environment-dependent; follow the package release documentation for supported drivers and extras."})]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/20",children:[e.jsx("h2",{className:"text-xl font-bold mb-4 text-cyan-300",children:"Quick Install (Recommended)"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground",children:e.jsxs("div",{children:["pip install qector-decoder-v3==",s]})}),e.jsx("p",{className:"text-secondary text-sm mt-3",children:"This installs the latest stable release with pre-compiled binary wheels."}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["Optional extras: ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[stim]"})," (Stim/Sinter/PyMatching), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[bench]"})," (local measurement tools), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[all]"})," (full environment)."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Verify Installation"}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{children:'python -c "import qector_decoder_v3; print(qector_decoder_v3.__version__)"'}),e.jsxs("div",{className:"text-green-400 font-semibold",children:["# Should print: ",s]}),e.jsx("div",{className:"mt-2",children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# 15-check environment diagnostic; reports PASS / WARN / FAIL per check"}),e.jsx("div",{className:"mt-2",children:`python -c "from qector_decoder_v3 import BlossomDecoder, UnionFindDecoder; print('QECTOR OK')"`}),e.jsx("div",{className:"text-green-400",children:"# Should print: QECTOR OK"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Platform-Specific Notes"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Linux"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported Linux platforms and runtime dependencies."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"macOS"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported macOS architectures and minimum version."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Windows"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel for supported Windows Python and architecture combinations. GPU availability remains driver- and device-dependent."})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Optional GPU Workflows"}),e.jsx("p",{className:"text-secondary text-sm mb-3",children:"GPU availability depends on the installed wheel, optional dependencies, operating system, driver, and device. Use the extras and support matrix documented by the package release rather than assuming a GPU backend is available."}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{className:"text-cyan-300",children:"# Optional full environment"}),e.jsx("div",{children:'pip install "qector-decoder-v3[all]"'}),e.jsx("div",{className:"mt-2 text-cyan-300",children:"# Verify the installed package API and environment"}),e.jsx("div",{children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# Read the diagnostic's backend-specific PASS / WARN / FAIL output"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Troubleshooting"}),e.jsxs("div",{className:"space-y-3 text-secondary text-sm",children:[e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"ImportError on macOS:"})," Ensure you have Python 3.9+ from python.org or Homebrew. The system Python may not work."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"GPU not detected:"})," Verify CUDA installation with ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"nvidia-smi"}),". Check the package release documentation for supported CUDA versions."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"Slow import:"})," First import initializes the runtime and validates optional paths. Subsequent imports are fast."]})]})]})]})})]})}export{x as default}; diff --git a/assets/Installer-CeDfnoyS.js b/assets/Installer-CeDfnoyS.js deleted file mode 100644 index 107396f3..00000000 --- a/assets/Installer-CeDfnoyS.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{u as t,S as n}from"./index-BUYYSLdX.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function x(){const{version:s}=t();return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Installation · QECTOR",description:"Install QECTOR Decoder v3 on Linux, macOS, or Windows. PyPI pip install with binary wheels."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PyPI Binary Wheels · AIO Installer · CUDA + OpenCL Optional"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Installation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 ships as a Rust-compiled Python wheel (v1.0.1: 18 binary wheels for CPython 3.9-3.14, no sdist). One command on ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Linux x86_64, macOS ARM64, and Windows amd64"}),". GPU backends optional."]}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"System Requirements"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm list-disc pl-5",children:[e.jsx("li",{children:"Python 3.9, 3.10, 3.11, 3.12, or 3.13"}),e.jsx("li",{children:"64-bit operating system (Linux x86_64, macOS arm64, Windows amd64)"}),e.jsxs("li",{children:["Stim/Sinter/PyMatching are optional extras; install ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3[stim]"})," when needed."]}),e.jsx("li",{children:"GPU paths are optional and environment-dependent; follow the package release documentation for supported drivers and extras."})]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/20",children:[e.jsx("h2",{className:"text-xl font-bold mb-4 text-cyan-300",children:"Quick Install (Recommended)"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground",children:e.jsxs("div",{children:["pip install qector-decoder-v3==",s]})}),e.jsx("p",{className:"text-secondary text-sm mt-3",children:"This installs the latest stable release with pre-compiled binary wheels."}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["Optional extras: ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[stim]"})," (Stim/Sinter/PyMatching), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[bench]"})," (local measurement tools), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[all]"})," (full environment)."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Verify Installation"}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{children:'python -c "import qector_decoder_v3; print(qector_decoder_v3.__version__)"'}),e.jsxs("div",{className:"text-green-400 font-semibold",children:["# Should print: ",s]}),e.jsx("div",{className:"mt-2",children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# 15-check environment diagnostic; reports PASS / WARN / FAIL per check"}),e.jsx("div",{className:"mt-2",children:`python -c "from qector_decoder_v3 import BlossomDecoder, UnionFindDecoder; print('QECTOR OK')"`}),e.jsx("div",{className:"text-green-400",children:"# Should print: QECTOR OK"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Platform-Specific Notes"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Linux"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported Linux platforms and runtime dependencies."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"macOS"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported macOS architectures and minimum version."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Windows"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel for supported Windows Python and architecture combinations. GPU availability remains driver- and device-dependent."})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Optional GPU Workflows"}),e.jsx("p",{className:"text-secondary text-sm mb-3",children:"GPU availability depends on the installed wheel, optional dependencies, operating system, driver, and device. Use the extras and support matrix documented by the package release rather than assuming a GPU backend is available."}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{className:"text-cyan-300",children:"# Optional full environment"}),e.jsx("div",{children:'pip install "qector-decoder-v3[all]"'}),e.jsx("div",{className:"mt-2 text-cyan-300",children:"# Verify the installed package API and environment"}),e.jsx("div",{children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# Read the diagnostic's backend-specific PASS / WARN / FAIL output"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Troubleshooting"}),e.jsxs("div",{className:"space-y-3 text-secondary text-sm",children:[e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"ImportError on macOS:"})," Ensure you have Python 3.9-3.14 from python.org or Homebrew. The system Python may not work."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"GPU not detected:"})," Verify CUDA installation with ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"nvidia-smi"}),". Check the package release documentation for supported CUDA versions."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"Slow import:"})," First import initializes the runtime and validates optional paths. Subsequent imports are fast."]})]})]})]})})]})}export{x as default}; diff --git a/assets/Installer-ClnL4KhH.js b/assets/Installer-ClnL4KhH.js deleted file mode 100644 index bdab08ed..00000000 --- a/assets/Installer-ClnL4KhH.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{u as t,S as n}from"./index-abfjMTlQ.js";import{N as a}from"./NeuralReveal-D-EQoOl2.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function x(){const{version:s}=t();return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Installation · QECTOR",description:"Install QECTOR Decoder v3 on Linux, macOS, or Windows. PyPI pip install with binary wheels."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PyPI Binary Wheels · AIO Installer · CUDA + OpenCL Optional"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Installation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 ships as a Rust-compiled Python wheel (v1.0.1: 18 binary wheels for CPython 3.9-3.14, no sdist). One command on ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Linux x86_64, macOS ARM64, and Windows amd64"}),". GPU backends optional."]}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"System Requirements"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm list-disc pl-5",children:[e.jsx("li",{children:"Python 3.9, 3.10, 3.11, 3.12, or 3.13"}),e.jsx("li",{children:"64-bit operating system (Linux x86_64, macOS arm64, Windows amd64)"}),e.jsxs("li",{children:["Stim/Sinter/PyMatching are optional extras; install ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3[stim]"})," when needed."]}),e.jsx("li",{children:"GPU paths are optional and environment-dependent; follow the package release documentation for supported drivers and extras."})]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/20",children:[e.jsx("h2",{className:"text-xl font-bold mb-4 text-cyan-300",children:"Quick Install (Recommended)"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground",children:e.jsxs("div",{children:["pip install qector-decoder-v3==",s]})}),e.jsx("p",{className:"text-secondary text-sm mt-3",children:"This installs the latest stable release with pre-compiled binary wheels."}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["Optional extras: ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[stim]"})," (Stim/Sinter/PyMatching), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[bench]"})," (local measurement tools), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[all]"})," (full environment)."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Verify Installation"}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{children:'python -c "import qector_decoder_v3; print(qector_decoder_v3.__version__)"'}),e.jsxs("div",{className:"text-green-400 font-semibold",children:["# Should print: ",s]}),e.jsx("div",{className:"mt-2",children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# 15-check environment diagnostic; reports PASS / WARN / FAIL per check"}),e.jsx("div",{className:"mt-2",children:`python -c "from qector_decoder_v3 import BlossomDecoder, UnionFindDecoder; print('QECTOR OK')"`}),e.jsx("div",{className:"text-green-400",children:"# Should print: QECTOR OK"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Platform-Specific Notes"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Linux"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported Linux platforms and runtime dependencies."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"macOS"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported macOS architectures and minimum version."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Windows"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel for supported Windows Python and architecture combinations. GPU availability remains driver- and device-dependent."})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Optional GPU Workflows"}),e.jsx("p",{className:"text-secondary text-sm mb-3",children:"GPU availability depends on the installed wheel, optional dependencies, operating system, driver, and device. Use the extras and support matrix documented by the package release rather than assuming a GPU backend is available."}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{className:"text-cyan-300",children:"# Optional full environment"}),e.jsx("div",{children:'pip install "qector-decoder-v3[all]"'}),e.jsx("div",{className:"mt-2 text-cyan-300",children:"# Verify the installed package API and environment"}),e.jsx("div",{children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# Read the diagnostic's backend-specific PASS / WARN / FAIL output"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Troubleshooting"}),e.jsxs("div",{className:"space-y-3 text-secondary text-sm",children:[e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"ImportError on macOS:"})," Ensure you have Python 3.9-3.14 from python.org or Homebrew. The system Python may not work."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"GPU not detected:"})," Verify CUDA installation with ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"nvidia-smi"}),". Check the package release documentation for supported CUDA versions."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"Slow import:"})," First import initializes the runtime and validates optional paths. Subsequent imports are fast."]})]})]})]})})]})}export{x as default}; diff --git a/assets/Installer-CxyEDIXg.js b/assets/Installer-CxyEDIXg.js deleted file mode 100644 index a2ed35ab..00000000 --- a/assets/Installer-CxyEDIXg.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{u as t,S as n}from"./index-iVST85F-.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function x(){const{version:s}=t();return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Installation · QECTOR",description:"Install QECTOR Decoder v3 on Linux, macOS, or Windows. PyPI pip install with binary wheels."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PyPI Binary Wheels · AIO Installer · CUDA + OpenCL Optional"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Installation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 ships as a Rust-compiled Python wheel (v1.0.0: 15 binary wheels for CPython 3.9-3.13, no sdist). One command on ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Linux x86_64, macOS ARM64, and Windows amd64"}),". GPU backends optional."]}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"System Requirements"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm list-disc pl-5",children:[e.jsx("li",{children:"Python 3.9, 3.10, 3.11, 3.12, or 3.13"}),e.jsx("li",{children:"64-bit operating system (Linux x86_64, macOS arm64, Windows amd64)"}),e.jsxs("li",{children:["Stim/Sinter/PyMatching are optional extras; install ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3[stim]"})," when needed."]}),e.jsx("li",{children:"GPU paths are optional and environment-dependent; follow the package release documentation for supported drivers and extras."})]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/20",children:[e.jsx("h2",{className:"text-xl font-bold mb-4 text-cyan-300",children:"Quick Install (Recommended)"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground",children:e.jsxs("div",{children:["pip install qector-decoder-v3==",s]})}),e.jsx("p",{className:"text-secondary text-sm mt-3",children:"This installs the latest stable release with pre-compiled binary wheels."}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["Optional extras: ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[stim]"})," (Stim/Sinter/PyMatching), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[bench]"})," (local measurement tools), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[all]"})," (full environment)."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Verify Installation"}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{children:'python -c "import qector_decoder_v3; print(qector_decoder_v3.__version__)"'}),e.jsxs("div",{className:"text-green-400 font-semibold",children:["# Should print: ",s]}),e.jsx("div",{className:"mt-2",children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# 15-check environment diagnostic; reports PASS / WARN / FAIL per check"}),e.jsx("div",{className:"mt-2",children:`python -c "from qector_decoder_v3 import BlossomDecoder, UnionFindDecoder; print('QECTOR OK')"`}),e.jsx("div",{className:"text-green-400",children:"# Should print: QECTOR OK"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Platform-Specific Notes"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Linux"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported Linux platforms and runtime dependencies."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"macOS"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported macOS architectures and minimum version."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Windows"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel for supported Windows Python and architecture combinations. GPU availability remains driver- and device-dependent."})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Optional GPU Workflows"}),e.jsx("p",{className:"text-secondary text-sm mb-3",children:"GPU availability depends on the installed wheel, optional dependencies, operating system, driver, and device. Use the extras and support matrix documented by the package release rather than assuming a GPU backend is available."}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{className:"text-cyan-300",children:"# Optional full environment"}),e.jsx("div",{children:'pip install "qector-decoder-v3[all]"'}),e.jsx("div",{className:"mt-2 text-cyan-300",children:"# Verify the installed package API and environment"}),e.jsx("div",{children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# Read the diagnostic's backend-specific PASS / WARN / FAIL output"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Troubleshooting"}),e.jsxs("div",{className:"space-y-3 text-secondary text-sm",children:[e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"ImportError on macOS:"})," Ensure you have Python 3.9+ from python.org or Homebrew. The system Python may not work."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"GPU not detected:"})," Verify CUDA installation with ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"nvidia-smi"}),". Check the package release documentation for supported CUDA versions."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"Slow import:"})," First import initializes the runtime and validates optional paths. Subsequent imports are fast."]})]})]})]})})]})}export{x as default}; diff --git a/assets/Installer-DMQ52ZRS.js b/assets/Installer-DMQ52ZRS.js deleted file mode 100644 index ed51cb67..00000000 --- a/assets/Installer-DMQ52ZRS.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{u as t,S as n}from"./index-DkYdPRY7.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function x(){const{version:s}=t();return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Installation · QECTOR",description:"Install QECTOR Decoder v3 on Linux, macOS, or Windows. PyPI pip install with binary wheels."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PyPI Binary Wheels · AIO Installer · CUDA + OpenCL Optional"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Installation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 ships as a Rust-compiled Python wheel (v1.0.1: 18 binary wheels for CPython 3.9-3.14, no sdist). One command on ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Linux x86_64, macOS ARM64, and Windows amd64"}),". GPU backends optional."]}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"System Requirements"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm list-disc pl-5",children:[e.jsx("li",{children:"Python 3.9, 3.10, 3.11, 3.12, or 3.13"}),e.jsx("li",{children:"64-bit operating system (Linux x86_64, macOS arm64, Windows amd64)"}),e.jsxs("li",{children:["Stim/Sinter/PyMatching are optional extras; install ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3[stim]"})," when needed."]}),e.jsx("li",{children:"GPU paths are optional and environment-dependent; follow the package release documentation for supported drivers and extras."})]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/20",children:[e.jsx("h2",{className:"text-xl font-bold mb-4 text-cyan-300",children:"Quick Install (Recommended)"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground",children:e.jsxs("div",{children:["pip install qector-decoder-v3==",s]})}),e.jsx("p",{className:"text-secondary text-sm mt-3",children:"This installs the latest stable release with pre-compiled binary wheels."}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["Optional extras: ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[stim]"})," (Stim/Sinter/PyMatching), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[bench]"})," (local measurement tools), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[all]"})," (full environment)."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Verify Installation"}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{children:'python -c "import qector_decoder_v3; print(qector_decoder_v3.__version__)"'}),e.jsxs("div",{className:"text-green-400 font-semibold",children:["# Should print: ",s]}),e.jsx("div",{className:"mt-2",children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# 15-check environment diagnostic; reports PASS / WARN / FAIL per check"}),e.jsx("div",{className:"mt-2",children:`python -c "from qector_decoder_v3 import BlossomDecoder, UnionFindDecoder; print('QECTOR OK')"`}),e.jsx("div",{className:"text-green-400",children:"# Should print: QECTOR OK"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Platform-Specific Notes"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Linux"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported Linux platforms and runtime dependencies."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"macOS"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported macOS architectures and minimum version."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Windows"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel for supported Windows Python and architecture combinations. GPU availability remains driver- and device-dependent."})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Optional GPU Workflows"}),e.jsx("p",{className:"text-secondary text-sm mb-3",children:"GPU availability depends on the installed wheel, optional dependencies, operating system, driver, and device. Use the extras and support matrix documented by the package release rather than assuming a GPU backend is available."}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{className:"text-cyan-300",children:"# Optional full environment"}),e.jsx("div",{children:'pip install "qector-decoder-v3[all]"'}),e.jsx("div",{className:"mt-2 text-cyan-300",children:"# Verify the installed package API and environment"}),e.jsx("div",{children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# Read the diagnostic's backend-specific PASS / WARN / FAIL output"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Troubleshooting"}),e.jsxs("div",{className:"space-y-3 text-secondary text-sm",children:[e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"ImportError on macOS:"})," Ensure you have Python 3.9-3.14 from python.org or Homebrew. The system Python may not work."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"GPU not detected:"})," Verify CUDA installation with ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"nvidia-smi"}),". Check the package release documentation for supported CUDA versions."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"Slow import:"})," First import initializes the runtime and validates optional paths. Subsequent imports are fast."]})]})]})]})})]})}export{x as default}; diff --git a/assets/Installer-DSAeCuP_.js b/assets/Installer-DSAeCuP_.js deleted file mode 100644 index 24d2cd27..00000000 --- a/assets/Installer-DSAeCuP_.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{u as t,S as n}from"./index-DayaklK-.js";import{N as a}from"./NeuralReveal-uYarhiMA.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";function c(){const{version:s}=t();return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Installation · QECTOR",description:"Install QECTOR Decoder v3 on Linux, macOS, or Windows. PyPI pip install with binary wheels."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PyPI Binary Wheels · AIO Installer · CUDA + OpenCL Optional"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Installation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 ships as a Rust-compiled Python wheel (v1.0.1: 18 binary wheels for CPython 3.9-3.14, no sdist). One command on ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Linux x86_64, macOS ARM64, and Windows amd64"}),". GPU backends optional."]}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"System Requirements"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm list-disc pl-5",children:[e.jsx("li",{children:"Python 3.9, 3.10, 3.11, 3.12, or 3.13"}),e.jsx("li",{children:"64-bit operating system (Linux x86_64, macOS arm64, Windows amd64)"}),e.jsxs("li",{children:["Stim/Sinter/PyMatching are optional extras; install ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3[stim]"})," when needed."]}),e.jsx("li",{children:"GPU paths are optional and environment-dependent; follow the package release documentation for supported drivers and extras."})]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/20",children:[e.jsx("h2",{className:"text-xl font-bold mb-4 text-cyan-300",children:"Quick Install (Recommended)"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground",children:e.jsxs("div",{children:["pip install qector-decoder-v3==",s]})}),e.jsx("p",{className:"text-secondary text-sm mt-3",children:"This installs the latest stable release with pre-compiled binary wheels."}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["Optional extras: ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[stim]"})," (Stim/Sinter/PyMatching), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[bench]"})," (local measurement tools), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[all]"})," (full environment)."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Verify Installation"}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{children:'python -c "import qector_decoder_v3; print(qector_decoder_v3.__version__)"'}),e.jsxs("div",{className:"text-green-400 font-semibold",children:["# Should print: ",s]}),e.jsx("div",{className:"mt-2",children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# 15-check environment diagnostic; reports PASS / WARN / FAIL per check"}),e.jsx("div",{className:"mt-2",children:`python -c "from qector_decoder_v3 import BlossomDecoder, UnionFindDecoder; print('QECTOR OK')"`}),e.jsx("div",{className:"text-green-400",children:"# Should print: QECTOR OK"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Platform-Specific Notes"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Linux"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported Linux platforms and runtime dependencies."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"macOS"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported macOS architectures and minimum version."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Windows"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel for supported Windows Python and architecture combinations. GPU availability remains driver- and device-dependent."})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Optional GPU Workflows"}),e.jsx("p",{className:"text-secondary text-sm mb-3",children:"GPU availability depends on the installed wheel, optional dependencies, operating system, driver, and device. Use the extras and support matrix documented by the package release rather than assuming a GPU backend is available."}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{className:"text-cyan-300",children:"# Optional full environment"}),e.jsx("div",{children:'pip install "qector-decoder-v3[all]"'}),e.jsx("div",{className:"mt-2 text-cyan-300",children:"# Verify the installed package API and environment"}),e.jsx("div",{children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# Read the diagnostic's backend-specific PASS / WARN / FAIL output"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Troubleshooting"}),e.jsxs("div",{className:"space-y-3 text-secondary text-sm",children:[e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"ImportError on macOS:"})," Ensure you have Python 3.9-3.14 from python.org or Homebrew. The system Python may not work."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"GPU not detected:"})," Verify CUDA installation with ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"nvidia-smi"}),". Check the package release documentation for supported CUDA versions."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"Slow import:"})," First import initializes the runtime and validates optional paths. Subsequent imports are fast."]})]})]})]})})]})}export{c as default}; diff --git a/assets/Installer-DhJxPZYS.js b/assets/Installer-DhJxPZYS.js deleted file mode 100644 index 9e17dc56..00000000 --- a/assets/Installer-DhJxPZYS.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{u as t,S as n}from"./index-CxWP17m6.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function x(){const{version:s}=t();return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Installation · QECTOR",description:"Install QECTOR Decoder v3 on Linux, macOS, or Windows. PyPI pip install with binary wheels."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PyPI Binary Wheels · AIO Installer · CUDA + OpenCL Optional"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Installation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 ships as a Rust-compiled Python wheel (v1.0.1: 18 binary wheels for CPython 3.9-3.14, no sdist). One command on ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Linux x86_64, macOS ARM64, and Windows amd64"}),". GPU backends optional."]}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"System Requirements"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm list-disc pl-5",children:[e.jsx("li",{children:"Python 3.9, 3.10, 3.11, 3.12, or 3.13"}),e.jsx("li",{children:"64-bit operating system (Linux x86_64, macOS arm64, Windows amd64)"}),e.jsxs("li",{children:["Stim/Sinter/PyMatching are optional extras; install ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3[stim]"})," when needed."]}),e.jsx("li",{children:"GPU paths are optional and environment-dependent; follow the package release documentation for supported drivers and extras."})]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/20",children:[e.jsx("h2",{className:"text-xl font-bold mb-4 text-cyan-300",children:"Quick Install (Recommended)"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground",children:e.jsxs("div",{children:["pip install qector-decoder-v3==",s]})}),e.jsx("p",{className:"text-secondary text-sm mt-3",children:"This installs the latest stable release with pre-compiled binary wheels."}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["Optional extras: ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[stim]"})," (Stim/Sinter/PyMatching), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[bench]"})," (local measurement tools), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[all]"})," (full environment)."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Verify Installation"}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{children:'python -c "import qector_decoder_v3; print(qector_decoder_v3.__version__)"'}),e.jsxs("div",{className:"text-green-400 font-semibold",children:["# Should print: ",s]}),e.jsx("div",{className:"mt-2",children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# 15-check environment diagnostic; reports PASS / WARN / FAIL per check"}),e.jsx("div",{className:"mt-2",children:`python -c "from qector_decoder_v3 import BlossomDecoder, UnionFindDecoder; print('QECTOR OK')"`}),e.jsx("div",{className:"text-green-400",children:"# Should print: QECTOR OK"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Platform-Specific Notes"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Linux"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported Linux platforms and runtime dependencies."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"macOS"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported macOS architectures and minimum version."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Windows"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel for supported Windows Python and architecture combinations. GPU availability remains driver- and device-dependent."})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Optional GPU Workflows"}),e.jsx("p",{className:"text-secondary text-sm mb-3",children:"GPU availability depends on the installed wheel, optional dependencies, operating system, driver, and device. Use the extras and support matrix documented by the package release rather than assuming a GPU backend is available."}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{className:"text-cyan-300",children:"# Optional full environment"}),e.jsx("div",{children:'pip install "qector-decoder-v3[all]"'}),e.jsx("div",{className:"mt-2 text-cyan-300",children:"# Verify the installed package API and environment"}),e.jsx("div",{children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# Read the diagnostic's backend-specific PASS / WARN / FAIL output"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Troubleshooting"}),e.jsxs("div",{className:"space-y-3 text-secondary text-sm",children:[e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"ImportError on macOS:"})," Ensure you have Python 3.9-3.14 from python.org or Homebrew. The system Python may not work."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"GPU not detected:"})," Verify CUDA installation with ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"nvidia-smi"}),". Check the package release documentation for supported CUDA versions."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"Slow import:"})," First import initializes the runtime and validates optional paths. Subsequent imports are fast."]})]})]})]})})]})}export{x as default}; diff --git a/assets/Installer-DoCAdwGS.js b/assets/Installer-DoCAdwGS.js deleted file mode 100644 index 993e83b1..00000000 --- a/assets/Installer-DoCAdwGS.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{u as t,S as n}from"./index-_BpMZhV3.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function x(){const{version:s}=t();return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Installation · QECTOR",description:"Install QECTOR Decoder v3 on Linux, macOS, or Windows. PyPI pip install with binary wheels."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PyPI Binary Wheels · AIO Installer · CUDA + OpenCL Optional"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Installation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 ships as a Rust-compiled Python wheel (v1.0.0: 15 binary wheels for CPython 3.9-3.13, no sdist). One command on ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Linux x86_64, macOS ARM64, and Windows amd64"}),". GPU backends optional."]}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"System Requirements"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm list-disc pl-5",children:[e.jsx("li",{children:"Python 3.9, 3.10, 3.11, 3.12, or 3.13"}),e.jsx("li",{children:"64-bit operating system (Linux x86_64, macOS arm64, Windows amd64)"}),e.jsxs("li",{children:["Stim/Sinter/PyMatching are optional extras; install ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3[stim]"})," when needed."]}),e.jsx("li",{children:"GPU paths are optional and environment-dependent; follow the package release documentation for supported drivers and extras."})]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/20",children:[e.jsx("h2",{className:"text-xl font-bold mb-4 text-cyan-300",children:"Quick Install (Recommended)"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground",children:e.jsxs("div",{children:["pip install qector-decoder-v3==",s]})}),e.jsx("p",{className:"text-secondary text-sm mt-3",children:"This installs the latest stable release with pre-compiled binary wheels."}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["Optional extras: ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[stim]"})," (Stim/Sinter/PyMatching), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[bench]"})," (local measurement tools), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[all]"})," (full environment)."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Verify Installation"}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{children:'python -c "import qector_decoder_v3; print(qector_decoder_v3.__version__)"'}),e.jsxs("div",{className:"text-green-400 font-semibold",children:["# Should print: ",s]}),e.jsx("div",{className:"mt-2",children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# 15-check environment diagnostic; reports PASS / WARN / FAIL per check"}),e.jsx("div",{className:"mt-2",children:`python -c "from qector_decoder_v3 import BlossomDecoder, UnionFindDecoder; print('QECTOR OK')"`}),e.jsx("div",{className:"text-green-400",children:"# Should print: QECTOR OK"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Platform-Specific Notes"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Linux"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported Linux platforms and runtime dependencies."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"macOS"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported macOS architectures and minimum version."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Windows"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel for supported Windows Python and architecture combinations. GPU availability remains driver- and device-dependent."})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Optional GPU Workflows"}),e.jsx("p",{className:"text-secondary text-sm mb-3",children:"GPU availability depends on the installed wheel, optional dependencies, operating system, driver, and device. Use the extras and support matrix documented by the package release rather than assuming a GPU backend is available."}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{className:"text-cyan-300",children:"# Optional full environment"}),e.jsx("div",{children:'pip install "qector-decoder-v3[all]"'}),e.jsx("div",{className:"mt-2 text-cyan-300",children:"# Verify the installed package API and environment"}),e.jsx("div",{children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# Read the diagnostic's backend-specific PASS / WARN / FAIL output"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Troubleshooting"}),e.jsxs("div",{className:"space-y-3 text-secondary text-sm",children:[e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"ImportError on macOS:"})," Ensure you have Python 3.9+ from python.org or Homebrew. The system Python may not work."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"GPU not detected:"})," Verify CUDA installation with ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"nvidia-smi"}),". Check the package release documentation for supported CUDA versions."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"Slow import:"})," First import initializes the runtime and validates optional paths. Subsequent imports are fast."]})]})]})]})})]})}export{x as default}; diff --git a/assets/Installer-DsNWHCu5.js b/assets/Installer-DsNWHCu5.js deleted file mode 100644 index 1fadecee..00000000 --- a/assets/Installer-DsNWHCu5.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{u as t,S as n}from"./index-CCmwjNGU.js";import{N as a}from"./NeuralReveal-uYarhiMA.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";function c(){const{version:s}=t();return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Installation · QECTOR",description:"Install QECTOR Decoder v3 on Linux, macOS, or Windows. PyPI pip install with binary wheels."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PyPI Binary Wheels · AIO Installer · CUDA + OpenCL Optional"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Installation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 ships as a Rust-compiled Python wheel (v1.0.1: 18 binary wheels for CPython 3.9-3.14, no sdist). One command on ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Linux x86_64, macOS ARM64, and Windows amd64"}),". GPU backends optional."]}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"System Requirements"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm list-disc pl-5",children:[e.jsx("li",{children:"Python 3.9, 3.10, 3.11, 3.12, or 3.13"}),e.jsx("li",{children:"64-bit operating system (Linux x86_64, macOS arm64, Windows amd64)"}),e.jsxs("li",{children:["Stim/Sinter/PyMatching are optional extras; install ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3[stim]"})," when needed."]}),e.jsx("li",{children:"GPU paths are optional and environment-dependent; follow the package release documentation for supported drivers and extras."})]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/20",children:[e.jsx("h2",{className:"text-xl font-bold mb-4 text-cyan-300",children:"Quick Install (Recommended)"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground",children:e.jsxs("div",{children:["pip install qector-decoder-v3==",s]})}),e.jsx("p",{className:"text-secondary text-sm mt-3",children:"This installs the latest stable release with pre-compiled binary wheels."}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["Optional extras: ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[stim]"})," (Stim/Sinter/PyMatching), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[bench]"})," (local measurement tools), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[all]"})," (full environment)."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Verify Installation"}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{children:'python -c "import qector_decoder_v3; print(qector_decoder_v3.__version__)"'}),e.jsxs("div",{className:"text-green-400 font-semibold",children:["# Should print: ",s]}),e.jsx("div",{className:"mt-2",children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# 15-check environment diagnostic; reports PASS / WARN / FAIL per check"}),e.jsx("div",{className:"mt-2",children:`python -c "from qector_decoder_v3 import BlossomDecoder, UnionFindDecoder; print('QECTOR OK')"`}),e.jsx("div",{className:"text-green-400",children:"# Should print: QECTOR OK"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Platform-Specific Notes"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Linux"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported Linux platforms and runtime dependencies."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"macOS"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported macOS architectures and minimum version."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Windows"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel for supported Windows Python and architecture combinations. GPU availability remains driver- and device-dependent."})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Optional GPU Workflows"}),e.jsx("p",{className:"text-secondary text-sm mb-3",children:"GPU availability depends on the installed wheel, optional dependencies, operating system, driver, and device. Use the extras and support matrix documented by the package release rather than assuming a GPU backend is available."}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{className:"text-cyan-300",children:"# Optional full environment"}),e.jsx("div",{children:'pip install "qector-decoder-v3[all]"'}),e.jsx("div",{className:"mt-2 text-cyan-300",children:"# Verify the installed package API and environment"}),e.jsx("div",{children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# Read the diagnostic's backend-specific PASS / WARN / FAIL output"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Troubleshooting"}),e.jsxs("div",{className:"space-y-3 text-secondary text-sm",children:[e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"ImportError on macOS:"})," Ensure you have Python 3.9-3.14 from python.org or Homebrew. The system Python may not work."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"GPU not detected:"})," Verify CUDA installation with ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"nvidia-smi"}),". Check the package release documentation for supported CUDA versions."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"Slow import:"})," First import initializes the runtime and validates optional paths. Subsequent imports are fast."]})]})]})]})})]})}export{c as default}; diff --git a/assets/Installer-DwoF2NcB.js b/assets/Installer-DwoF2NcB.js deleted file mode 100644 index 3bede11f..00000000 --- a/assets/Installer-DwoF2NcB.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{u as t,S as n}from"./index-WV1aysjN.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function x(){const{version:s}=t();return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Installation · QECTOR",description:"Install QECTOR Decoder v3 on Linux, macOS, or Windows. PyPI pip install with binary wheels."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PyPI Binary Wheels · AIO Installer · CUDA + OpenCL Optional"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Installation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 ships as a Rust-compiled Python wheel (v1.0.0: 15 binary wheels for CPython 3.9-3.13, no sdist). One command on ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Linux x86_64, macOS ARM64, and Windows amd64"}),". GPU backends optional."]}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"System Requirements"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm list-disc pl-5",children:[e.jsx("li",{children:"Python 3.9, 3.10, 3.11, 3.12, or 3.13"}),e.jsx("li",{children:"64-bit operating system (Linux x86_64, macOS arm64, Windows amd64)"}),e.jsxs("li",{children:["Stim/Sinter/PyMatching are optional extras; install ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3[stim]"})," when needed."]}),e.jsx("li",{children:"GPU paths are optional and environment-dependent; follow the package release documentation for supported drivers and extras."})]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/20",children:[e.jsx("h2",{className:"text-xl font-bold mb-4 text-cyan-300",children:"Quick Install (Recommended)"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground",children:e.jsxs("div",{children:["pip install qector-decoder-v3==",s]})}),e.jsx("p",{className:"text-secondary text-sm mt-3",children:"This installs the latest stable release with pre-compiled binary wheels."}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["Optional extras: ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[stim]"})," (Stim/Sinter/PyMatching), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[bench]"})," (local measurement tools), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[all]"})," (full environment)."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Verify Installation"}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{children:'python -c "import qector_decoder_v3; print(qector_decoder_v3.__version__)"'}),e.jsxs("div",{className:"text-green-400 font-semibold",children:["# Should print: ",s]}),e.jsx("div",{className:"mt-2",children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# 15-check environment diagnostic; reports PASS / WARN / FAIL per check"}),e.jsx("div",{className:"mt-2",children:`python -c "from qector_decoder_v3 import BlossomDecoder, UnionFindDecoder; print('QECTOR OK')"`}),e.jsx("div",{className:"text-green-400",children:"# Should print: QECTOR OK"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Platform-Specific Notes"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Linux"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported Linux platforms and runtime dependencies."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"macOS"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported macOS architectures and minimum version."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Windows"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel for supported Windows Python and architecture combinations. GPU availability remains driver- and device-dependent."})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Optional GPU Workflows"}),e.jsx("p",{className:"text-secondary text-sm mb-3",children:"GPU availability depends on the installed wheel, optional dependencies, operating system, driver, and device. Use the extras and support matrix documented by the package release rather than assuming a GPU backend is available."}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{className:"text-cyan-300",children:"# Optional full environment"}),e.jsx("div",{children:'pip install "qector-decoder-v3[all]"'}),e.jsx("div",{className:"mt-2 text-cyan-300",children:"# Verify the installed package API and environment"}),e.jsx("div",{children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# Read the diagnostic's backend-specific PASS / WARN / FAIL output"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Troubleshooting"}),e.jsxs("div",{className:"space-y-3 text-secondary text-sm",children:[e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"ImportError on macOS:"})," Ensure you have Python 3.9+ from python.org or Homebrew. The system Python may not work."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"GPU not detected:"})," Verify CUDA installation with ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"nvidia-smi"}),". Check the package release documentation for supported CUDA versions."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"Slow import:"})," First import initializes the runtime and validates optional paths. Subsequent imports are fast."]})]})]})]})})]})}export{x as default}; diff --git a/assets/Installer-DxsJdE4z.js b/assets/Installer-DxsJdE4z.js deleted file mode 100644 index 8e5ff0a8..00000000 --- a/assets/Installer-DxsJdE4z.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{u as t,S as n}from"./index-CqAA-ZXu.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function x(){const{version:s}=t();return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Installation · QECTOR",description:"Install QECTOR Decoder v3 on Linux, macOS, or Windows. PyPI pip install with binary wheels."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PyPI Binary Wheels · AIO Installer · CUDA + OpenCL Optional"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Installation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 ships as a Rust-compiled Python wheel (v1.0.0: 15 binary wheels for CPython 3.9-3.13, no sdist). One command on ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Linux x86_64, macOS ARM64, and Windows amd64"}),". GPU backends optional."]}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"System Requirements"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm list-disc pl-5",children:[e.jsx("li",{children:"Python 3.9, 3.10, 3.11, 3.12, or 3.13"}),e.jsx("li",{children:"64-bit operating system (Linux x86_64, macOS arm64, Windows amd64)"}),e.jsxs("li",{children:["Stim/Sinter/PyMatching are optional extras; install ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3[stim]"})," when needed."]}),e.jsx("li",{children:"GPU paths are optional and environment-dependent; follow the package release documentation for supported drivers and extras."})]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/20",children:[e.jsx("h2",{className:"text-xl font-bold mb-4 text-cyan-300",children:"Quick Install (Recommended)"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground",children:e.jsxs("div",{children:["pip install qector-decoder-v3==",s]})}),e.jsx("p",{className:"text-secondary text-sm mt-3",children:"This installs the latest stable release with pre-compiled binary wheels."}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["Optional extras: ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[stim]"})," (Stim/Sinter/PyMatching), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[bench]"})," (local measurement tools), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[all]"})," (full environment)."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Verify Installation"}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{children:'python -c "import qector_decoder_v3; print(qector_decoder_v3.__version__)"'}),e.jsxs("div",{className:"text-green-400 font-semibold",children:["# Should print: ",s]}),e.jsx("div",{className:"mt-2",children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# 15-check environment diagnostic; reports PASS / WARN / FAIL per check"}),e.jsx("div",{className:"mt-2",children:`python -c "from qector_decoder_v3 import BlossomDecoder, UnionFindDecoder; print('QECTOR OK')"`}),e.jsx("div",{className:"text-green-400",children:"# Should print: QECTOR OK"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Platform-Specific Notes"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Linux"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported Linux platforms and runtime dependencies."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"macOS"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported macOS architectures and minimum version."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Windows"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel for supported Windows Python and architecture combinations. GPU availability remains driver- and device-dependent."})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Optional GPU Workflows"}),e.jsx("p",{className:"text-secondary text-sm mb-3",children:"GPU availability depends on the installed wheel, optional dependencies, operating system, driver, and device. Use the extras and support matrix documented by the package release rather than assuming a GPU backend is available."}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{className:"text-cyan-300",children:"# Optional full environment"}),e.jsx("div",{children:'pip install "qector-decoder-v3[all]"'}),e.jsx("div",{className:"mt-2 text-cyan-300",children:"# Verify the installed package API and environment"}),e.jsx("div",{children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# Read the diagnostic's backend-specific PASS / WARN / FAIL output"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Troubleshooting"}),e.jsxs("div",{className:"space-y-3 text-secondary text-sm",children:[e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"ImportError on macOS:"})," Ensure you have Python 3.9+ from python.org or Homebrew. The system Python may not work."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"GPU not detected:"})," Verify CUDA installation with ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"nvidia-smi"}),". Check the package release documentation for supported CUDA versions."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"Slow import:"})," First import initializes the runtime and validates optional paths. Subsequent imports are fast."]})]})]})]})})]})}export{x as default}; diff --git a/assets/Installer-fYNHzVom.js b/assets/Installer-fYNHzVom.js deleted file mode 100644 index f2792d76..00000000 --- a/assets/Installer-fYNHzVom.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{u as t,S as n}from"./index-CpdATiEY.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function x(){const{version:s}=t();return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Installation · QECTOR",description:"Install QECTOR Decoder v3 on Linux, macOS, or Windows. PyPI pip install with binary wheels."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PyPI Binary Wheels · AIO Installer · CUDA + OpenCL Optional"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Installation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 ships as a Rust-compiled Python wheel (v1.0.0: 15 binary wheels for CPython 3.9-3.13, no sdist). One command on ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Linux x86_64, macOS ARM64, and Windows amd64"}),". GPU backends optional."]}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"System Requirements"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm list-disc pl-5",children:[e.jsx("li",{children:"Python 3.9, 3.10, 3.11, 3.12, or 3.13"}),e.jsx("li",{children:"64-bit operating system (Linux x86_64, macOS arm64, Windows amd64)"}),e.jsxs("li",{children:["Stim/Sinter/PyMatching are optional extras; install ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3[stim]"})," when needed."]}),e.jsx("li",{children:"GPU paths are optional and environment-dependent; follow the package release documentation for supported drivers and extras."})]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/20",children:[e.jsx("h2",{className:"text-xl font-bold mb-4 text-cyan-300",children:"Quick Install (Recommended)"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground",children:e.jsxs("div",{children:["pip install qector-decoder-v3==",s]})}),e.jsx("p",{className:"text-secondary text-sm mt-3",children:"This installs the latest stable release with pre-compiled binary wheels."}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["Optional extras: ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[stim]"})," (Stim/Sinter/PyMatching), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[bench]"})," (local measurement tools), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[all]"})," (full environment)."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Verify Installation"}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{children:'python -c "import qector_decoder_v3; print(qector_decoder_v3.__version__)"'}),e.jsxs("div",{className:"text-green-400 font-semibold",children:["# Should print: ",s]}),e.jsx("div",{className:"mt-2",children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# 15-check environment diagnostic; reports PASS / WARN / FAIL per check"}),e.jsx("div",{className:"mt-2",children:`python -c "from qector_decoder_v3 import BlossomDecoder, UnionFindDecoder; print('QECTOR OK')"`}),e.jsx("div",{className:"text-green-400",children:"# Should print: QECTOR OK"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Platform-Specific Notes"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Linux"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported Linux platforms and runtime dependencies."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"macOS"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported macOS architectures and minimum version."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Windows"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel for supported Windows Python and architecture combinations. GPU availability remains driver- and device-dependent."})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Optional GPU Workflows"}),e.jsx("p",{className:"text-secondary text-sm mb-3",children:"GPU availability depends on the installed wheel, optional dependencies, operating system, driver, and device. Use the extras and support matrix documented by the package release rather than assuming a GPU backend is available."}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{className:"text-cyan-300",children:"# Optional full environment"}),e.jsx("div",{children:'pip install "qector-decoder-v3[all]"'}),e.jsx("div",{className:"mt-2 text-cyan-300",children:"# Verify the installed package API and environment"}),e.jsx("div",{children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# Read the diagnostic's backend-specific PASS / WARN / FAIL output"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Troubleshooting"}),e.jsxs("div",{className:"space-y-3 text-secondary text-sm",children:[e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"ImportError on macOS:"})," Ensure you have Python 3.9+ from python.org or Homebrew. The system Python may not work."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"GPU not detected:"})," Verify CUDA installation with ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"nvidia-smi"}),". Check the package release documentation for supported CUDA versions."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"Slow import:"})," First import initializes the runtime and validates optional paths. Subsequent imports are fast."]})]})]})]})})]})}export{x as default}; diff --git a/assets/Installer-lZeDO-t9.js b/assets/Installer-lZeDO-t9.js deleted file mode 100644 index 8d6220dd..00000000 --- a/assets/Installer-lZeDO-t9.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{u as t,S as n}from"./index-c1PDYu0j.js";import{N as a}from"./NeuralReveal-uYarhiMA.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";function c(){const{version:s}=t();return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Installation · QECTOR",description:"Install QECTOR Decoder v3 on Linux, macOS, or Windows. PyPI pip install with binary wheels."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PyPI Binary Wheels · AIO Installer · CUDA + OpenCL Optional"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Installation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 ships as a Rust-compiled Python wheel (v1.0.1: 18 binary wheels for CPython 3.9-3.14, no sdist). One command on ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Linux x86_64, macOS ARM64, and Windows amd64"}),". GPU backends optional."]}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"System Requirements"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm list-disc pl-5",children:[e.jsx("li",{children:"Python 3.9, 3.10, 3.11, 3.12, or 3.13"}),e.jsx("li",{children:"64-bit operating system (Linux x86_64, macOS arm64, Windows amd64)"}),e.jsxs("li",{children:["Stim/Sinter/PyMatching are optional extras; install ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3[stim]"})," when needed."]}),e.jsx("li",{children:"GPU paths are optional and environment-dependent; follow the package release documentation for supported drivers and extras."})]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/20",children:[e.jsx("h2",{className:"text-xl font-bold mb-4 text-cyan-300",children:"Quick Install (Recommended)"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground",children:e.jsxs("div",{children:["pip install qector-decoder-v3==",s]})}),e.jsx("p",{className:"text-secondary text-sm mt-3",children:"This installs the latest stable release with pre-compiled binary wheels."}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["Optional extras: ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[stim]"})," (Stim/Sinter/PyMatching), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[bench]"})," (local measurement tools), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[all]"})," (full environment)."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Verify Installation"}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{children:'python -c "import qector_decoder_v3; print(qector_decoder_v3.__version__)"'}),e.jsxs("div",{className:"text-green-400 font-semibold",children:["# Should print: ",s]}),e.jsx("div",{className:"mt-2",children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# 15-check environment diagnostic; reports PASS / WARN / FAIL per check"}),e.jsx("div",{className:"mt-2",children:`python -c "from qector_decoder_v3 import BlossomDecoder, UnionFindDecoder; print('QECTOR OK')"`}),e.jsx("div",{className:"text-green-400",children:"# Should print: QECTOR OK"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Platform-Specific Notes"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Linux"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported Linux platforms and runtime dependencies."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"macOS"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported macOS architectures and minimum version."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Windows"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel for supported Windows Python and architecture combinations. GPU availability remains driver- and device-dependent."})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Optional GPU Workflows"}),e.jsx("p",{className:"text-secondary text-sm mb-3",children:"GPU availability depends on the installed wheel, optional dependencies, operating system, driver, and device. Use the extras and support matrix documented by the package release rather than assuming a GPU backend is available."}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{className:"text-cyan-300",children:"# Optional full environment"}),e.jsx("div",{children:'pip install "qector-decoder-v3[all]"'}),e.jsx("div",{className:"mt-2 text-cyan-300",children:"# Verify the installed package API and environment"}),e.jsx("div",{children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# Read the diagnostic's backend-specific PASS / WARN / FAIL output"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Troubleshooting"}),e.jsxs("div",{className:"space-y-3 text-secondary text-sm",children:[e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"ImportError on macOS:"})," Ensure you have Python 3.9-3.14 from python.org or Homebrew. The system Python may not work."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"GPU not detected:"})," Verify CUDA installation with ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"nvidia-smi"}),". Check the package release documentation for supported CUDA versions."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"Slow import:"})," First import initializes the runtime and validates optional paths. Subsequent imports are fast."]})]})]})]})})]})}export{c as default}; diff --git a/assets/Installer-o7IM3q6A.js b/assets/Installer-o7IM3q6A.js deleted file mode 100644 index 2973b5a5..00000000 --- a/assets/Installer-o7IM3q6A.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{u as t,S as n}from"./index-B9kEGiWi.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function x(){const{version:s}=t();return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Installation · QECTOR",description:"Install QECTOR Decoder v3 on Linux, macOS, or Windows. PyPI pip install with binary wheels."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PyPI Binary Wheels · AIO Installer · CUDA + OpenCL Optional"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Installation",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 ships as a Rust-compiled Python wheel (v1.0.0: 15 binary wheels for CPython 3.9-3.13, no sdist). One command on ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"Linux x86_64, macOS ARM64, and Windows amd64"}),". GPU backends optional."]}),e.jsx("div",{className:"inline-block px-6 py-3 bg-void border border-gridline rounded-xl font-mono text-sm text-cyan-300",children:"pip install qector-decoder-v3"})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"System Requirements"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm list-disc pl-5",children:[e.jsx("li",{children:"Python 3.9, 3.10, 3.11, 3.12, or 3.13"}),e.jsx("li",{children:"64-bit operating system (Linux x86_64, macOS arm64, Windows amd64)"}),e.jsxs("li",{children:["Stim/Sinter/PyMatching are optional extras; install ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"qector-decoder-v3[stim]"})," when needed."]}),e.jsx("li",{children:"GPU paths are optional and environment-dependent; follow the package release documentation for supported drivers and extras."})]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/20",children:[e.jsx("h2",{className:"text-xl font-bold mb-4 text-cyan-300",children:"Quick Install (Recommended)"}),e.jsx("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground",children:e.jsxs("div",{children:["pip install qector-decoder-v3==",s]})}),e.jsx("p",{className:"text-secondary text-sm mt-3",children:"This installs the latest stable release with pre-compiled binary wheels."}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["Optional extras: ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[stim]"})," (Stim/Sinter/PyMatching), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[bench]"})," (local measurement tools), ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"[all]"})," (full environment)."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Verify Installation"}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{children:'python -c "import qector_decoder_v3; print(qector_decoder_v3.__version__)"'}),e.jsxs("div",{className:"text-green-400 font-semibold",children:["# Should print: ",s]}),e.jsx("div",{className:"mt-2",children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# 15-check environment diagnostic; reports PASS / WARN / FAIL per check"}),e.jsx("div",{className:"mt-2",children:`python -c "from qector_decoder_v3 import BlossomDecoder, UnionFindDecoder; print('QECTOR OK')"`}),e.jsx("div",{className:"text-green-400",children:"# Should print: QECTOR OK"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Platform-Specific Notes"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Linux"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported Linux platforms and runtime dependencies."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"macOS"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel and the release documentation for supported macOS architectures and minimum version."})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Windows"}),e.jsx("p",{className:"text-secondary text-sm",children:"Use the current PyPI wheel for supported Windows Python and architecture combinations. GPU availability remains driver- and device-dependent."})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Optional GPU Workflows"}),e.jsx("p",{className:"text-secondary text-sm mb-3",children:"GPU availability depends on the installed wheel, optional dependencies, operating system, driver, and device. Use the extras and support matrix documented by the package release rather than assuming a GPU backend is available."}),e.jsxs("div",{className:"p-4 bg-void rounded-xl font-mono text-sm text-muted-foreground space-y-1",children:[e.jsx("div",{className:"text-cyan-300",children:"# Optional full environment"}),e.jsx("div",{children:'pip install "qector-decoder-v3[all]"'}),e.jsx("div",{className:"mt-2 text-cyan-300",children:"# Verify the installed package API and environment"}),e.jsx("div",{children:"qector-doctor"}),e.jsx("div",{className:"text-green-400",children:"# Read the diagnostic's backend-specific PASS / WARN / FAIL output"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Troubleshooting"}),e.jsxs("div",{className:"space-y-3 text-secondary text-sm",children:[e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"ImportError on macOS:"})," Ensure you have Python 3.9+ from python.org or Homebrew. The system Python may not work."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"GPU not detected:"})," Verify CUDA installation with ",e.jsx("code",{className:"text-cyan-300 font-mono",children:"nvidia-smi"}),". Check the package release documentation for supported CUDA versions."]}),e.jsxs("p",{children:[e.jsx("strong",{className:"text-primary",children:"Slow import:"})," First import initializes the runtime and validates optional paths. Subsequent imports are fast."]})]})]})]})})]})}export{x as default}; diff --git a/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 b/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 deleted file mode 100644 index 0acaaff03d4bb7606de02a827aeee338e5a86910..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28076 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 G2<`xUL{2yW diff --git a/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 b/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 deleted file mode 100644 index 75344a1f98e37e2c631e178065854c3a81fb842f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6908 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 CFgb+) diff --git a/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 b/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 deleted file mode 100644 index 395f28beac23c7b0f7f3a1e714bd8dac253dd3bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11348 zcmV-aEUVLZPew8T0RR9104!7h4gdfE08HQj04x0f0RR9100000000000000000000 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 diff --git a/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 b/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 deleted file mode 100644 index b50920e138807f385d0b0359f4f0f09891f18406..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16988 zcmV(>K-j-`Pew8T0RR91076^<4gdfE0E4su073x(0RR9100000000000000000000 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 diff --git a/assets/KaTeX_Main-Regular-B22Nviop.woff2 b/assets/KaTeX_Main-Regular-B22Nviop.woff2 deleted file mode 100644 index eb24a7ba282b03d830fa6c63ee897d92a5188736..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26272 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�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 bkH82T%!~T~dOL3iZSfI!+IWoKhyte*`46Vs diff --git a/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 b/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 deleted file mode 100644 index 29657023adc09956249f6295746c8ce4469b50d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16400 zcmV+rK<~eIPew8T0RR9106-7`4gdfE0D43K06(+<0RR9100000000000000000000 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 diff --git a/assets/KaTeX_Math-Italic-t53AETM-.woff2 b/assets/KaTeX_Math-Italic-t53AETM-.woff2 deleted file mode 100644 index 215c143fd7805a5c2b222bd7892a1a2b09610020..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16440 zcmV(}K+wN;Pew8T0RR9106;hZ4gdfE0D72I17PZ00bZfh;j#meGGvz8}?&GBPzE8 z1u0OUJSyttUiBVPluy!d#s9|yDnr%+PdDJI6W~D+hF7dn3876mx~G$_T&rr^uln5x z|BT}}4pu5P3e*HEr8*eDNTG<1F_;U3ZA=tqpJ7vDW=sX5YRKxDB`FY!LZL8@ z!bX`TSd8YAvLOreMkita9aZ$fQ$*@8r}n?8&fXI{KJWmoXc#0=X$40A*07 z&SI0gyJXs?ugX_CC|r4aZcQPu+bcrpYg<7f7bmfQRh4#o+@zM{cG#5I0dklZ z)z<8ItFoM}%JCB=SLYwy?cof?1GGfhVUk-3A3vRct*O30o6@Q!dZh;dM6m*cJeAl!*4z~IaFs+R8AEDeJOU?u3$8JXqZrnAU^RPh+F zU;a;L|F-we${!dyOb=Y9sM9p#JJMP+Bki*!?>>9v2ey3PS!?%!*)SOVy?*)743p>5skoe=iCPWL7}q;e-a9(G+RBfkb0t=i8_N*+ z7_N0U_z$PkZB<@dmg^}j2qDKj_ZiD2E{-^a@MxAp%Lt*{=gz|MvAU+<%dmy%)1*fC9?>djP?CJbUm!@N*vrK|8L#IrzmL7}7602l}4y?RTD= z#6!3r^5Ona!>#G)S?_S5-S-FtfgimK1aUrG4ns(0(V#gV^>8f@hf-*su5ukNasBL{ zgLBnfJJ-)mbL-qOFU-SP%s=z%Z}%T+!EL+v^$fiHW#`{Ax6jd+tNxX~{?eYf=hVw& z*ze|P61T)(fBbU{mHHA0(6Y^eWse?T|L=*6X=cUCf~xpmtLO*gUB^F|M`rr)E7$la zYxyr@6;nP4W&KEj4@Z#n<^!?2U!Fz#w7-M}Qudi}#A94=>6^>8v6fIfp`dgF1SA+- zMF4VjQ4xk%u@w=Z-$gdg7Oo{tgy1r~(YkCMCt-eDf?_AkHuglXmjgUD#^7k|E?Zl6 zkZ!J=UPd7!ZlHBtFii+0{EiNC9rFul2FYaUfe(V*>Gog^dhqy^X!7cW12aOln0e=^P-ZnLl#qLQ#7r3Oe7La2?Ib8(RC|iNyUMS;^To8AQ{T z4^tCo>P4-BzB>=fh~tcCt%`h5z;b}#Yy-Zdz@325a-~Rkv>^Ddl0S?_08q|KIX^0OZw63{Y=(8w7`DXu%dD_IbvOuaQ?^`5OLLx#r+`^All1Y!=LjPHjjUZ(Dp zgb7ocC>oFviPYQ>j!@}K=0=hMsT*Cg4dezXeE8-w`qSwRN;+9?E?sYJ`43;$fw6Ih zzAS?bQSEn^qFn^dk<1!d3Wv+G4HA10Yzc_OqH+@RM8l1DK31X;b2wyuXhR zQ$_;t*sEriPL;ZwM)xrDbaUh%C|B)G(mnu_BH$_g4aF$bJ1Kz;K_)cX+JxkLknZYU z%33bcO~&7q5}?6^MU_wxdH5NXqCVeLEbGxA;Jj24@f-8^&8W-CBQPQ@0WaYb~#;VhN_MJ#uc(}5AUf}sGTxH({yT2-N)^ckVs~?s*D4EA`<36A9?my(<&%KFXS=y6E6kPfC?XXLmg{T zFtS6Eaa=Re2s!@Rii8aHK?7z=loVctoP2p+MDnl=(KHqo5~0q=XC^{7EhQ&6te~HonR+x@XP0i2l2`P<@ytx$c>rN-x34+~ zR%E~3A+Rzh&YDX55K~!?3^CSpSsjj?s?6T9AAMSvV1{=l-79 z{}z*4CT8?u_Qj2?8Cx~;R>?wiBUDjJBV#o_&s&*0oJxtnI*)zzhXeFBcTcm2l?-2< z_+mXW1WEx*q0s=AUqIt^LGqEH#yFXqWMLDgb->0#rWpeSjXfq9faDQCFvV1*fjD6q zQjk3Y2(~cIwqh58iq>J<41o3{RRMA{Q9PIdCa{>u!X%cG17nye)Pi~hpvIzfAjX(M z3d|z_Ef#H)!_bU_C+ON1@GNLwkS<3xH}pAvV^Q*jVaTi34`d0r~=9C_s+eq2XkOvlT8@xH<~90$?vd9{SMnw8qOC zZ)2VMApk67^bso@_8zpx zArSWtf~+r)b_qNT{^^)v76(T-|u$UBFvrSsBt2{0N{Ly7_xkhen+2Q4Ml ze^vrI#GK{-EgR@=LVZCfTfvJKQ^j_QDQ1I$3YLz!)GI~?ZVVUg$gF8qs)DLwt$0k4 z?(1mW_`hynk;0)a57G`Y?q%x4W#WpV(uo8^rcWpi9?|_k5CRA;b|%z6T|B*l@uL*Bc|%h3CCoWzZ^Q*TB0sB% zJOro3q>vb~wA>$umX)$Q$AWX`zCRO&GdTu&(SER{E%P_9$Th8MBq!40 z+~t)sk{fPo2}J1;@{@xoTh1q%JsN>(7A;r;qv0DPByIIGHs?#gtVqf9kR5V^C~Ud@ zOImuX_*~ekSJbb{6>_S!N95r!OQb$Rt3!5Lat_hl4iwUl74^$GmqFuTv1^egSAEy{ z%=j5~=PXV6;6VG$!;zun!Usn2iGweZxSnXggVhbjVS6_ z#0X?d+Bj(29rr)W(@e_{u#l)s;G)LrDpr<^3@QQ!8R|_AW;ma%)eXl|G%u-NC6NAd z8d*K-k)j&ZaOYd}tU)2xy8j+CNWDmlA1#;0?^Fb!=&2+ZkC0LI zDg}%AWtUFk%d~)=x$}^G|NYjM-pk!qllU5~)H)-I=Is<+XJ)2vJ|?L`J_1MX z<(e>u=3U>Hv)@LRZESS|`7 zfz@jFVsoQZewlL+ef(?kJue}or^cKYuW_JR1finE-WMo+G`v|JzmTr}C7b2q@o z5b5^)@?z4NErhiTZbbLD$LbWK+b@&_a)$}lyP_idId<$qkb|5s5cZ2luS?lVKW<%m z9_ANFkG>e4w+TtI&L+A+SGz@BihmBnBJVbST)Er|(BQ-2z<#>ockEw6B2lW31cf?+ za)W*x8D|uG`sQbw#nOs%n`YaYPTP(g@Vs!)=~VGU3vFbw;0*WXzdM^Zlx;V4LTVja z!KCd1jaucrxkKl6UDJkSZMFnsx7rkVy^hCKLQG%1OPwUyd#bE%o1aGYQOE?F{g6QUrme= zF|ud}g2WT%(49R94K5as&Q^K)h-;!*qOVM`X;2u?8!ZPH19sSScYSDth>q#MPd%upS3ky=sk`Mh z(XE5vXzB=QiF0$ebkV#h+T}984i+~<6kQ-TQNAn?5jT+0yQJ`7pzUDIf`6>U#Gs#; zdHgenRu`dES~}{Un~AV#*;zRV18GR++48X!{5$1<*HH0dg?fq5yUFN zEw8`qbr?jyrCH$h-FRw|;Fl&Pw)OH=GGaEP5aoQLF>e&2ILOKcT z(hy~gs5vhNCLwHE()|0#>C+)_De(H+unPP4xt*BsFuY`qx=Iut?s znr-m(WXL|Z1>6FXUMbW$Y&sCsi{a+{+Tjb4HoN2iBgv<%`G7t}Y)^wyF_v1@EQp&5 zOLKuZh#sVVEH6{mmJ=Xv`V|oKY8vWzJZD{W9ulS`vNhv_3XB<(vLuBtZ}h33I21`Q zCaEZt%tJx(A(A0fJW(xNs8GV;G!{Qk9<`Xu^%w0dPh}v@Ma!XXjY&{MJjf_rj%uaC zi{Fd=vSoe^@~CkwhD4Ye_Z-G|`K+`FPFMteMyt9bckuE?RuF3~wMTL#)C?FXcv~gA zF8i#Ue{YCirT520k0nxN7hb?HmN|D;b_)r|Czx&phZdH$FzD-Z8K*WDiUZMG!`faczN6~&{m7t8lrk%|--?}Qgh>V=szV>owavKfyPifC$A4d$ zx7)eisC7Sa1*rYy--;Qvol)Bd4yDfcw!I0J?efIcCSsy`7c_7WciGYGFk&V&`$C#N z7_QrU@H9+5q<+>gRtACNpx^lyU&}(m7Zij|(W=@P1%`{;Gp0}3!3Ry}nw*YloTs#= zTf$wR`m-w>Psg}P!qEsRRgx>tF(7Zb)yfVn3Q38i3Z>Fz9U%QzskIDyF`#0|20i_l zwCuIZXO+AJC%tN}T&1!U=DsaQPYZN>nm!E*3{Pj}0(Y_%uT#-s70BQybMU~VDKY(k zHUpd2CzOdL5vgs&Ytq-x8;|TS>PcM@j-M2%4NOwfdj1F*f2sRh%rKC1b#LARMUe|qO{0Ko0%pSdyaP+VLaRN$o4Rp%rxpD zV!2SihPX6ms*6cB?*^sR=_6ArTnKcCUE`6hF0KdKy5kgUDOYAU9>ybrC7PB9#pymL zLRZl25A~le+WwG)P_B$y5?Oz4d`!B#={?kK#tzON3 z`#U;z(qhxkzF52{VRlVZFPkHy@`9s*n6If)l877^(=RQ?ipF-5^4pe~iOX@LftspK zbryT`dvOY}?$yRyAp?+EsV!=MsC{9>51ymzdQ*Omh*ub2@|r=4bsGDrhCzrs*+>wX zcM17|Z|KvCWlUQ`{mfyri+1DXou6s>9j+cz~ zMa~0wKs#E%zON(HRv6zu+J1ax-We$*0~;m62R)lqoQIQzf(QRy+U-~U)a4tI9Ps>kz+<=}^&)1G!1oRR8< zn6ae@RStqfA!6G37}ru*@_EOcg-1cPQWhb4;S zw%2djKG#&Y&ZuRqOp95e*|ilq)s8s^XUHRy44>mPOP93G>yS=K#W}5uqRVifCQZAK zmER%#J)FOxmE5>Xj^pp~Q^&7-OC$%4+G*_B6J~fEE5~4U%vJrDu@EktD~S1-N+^FI`FG_?ou%=4qI#SNw?Z1{VVe1GkimR2V+hh zuiszKUo1T!nwg3a?T)|+t1bw~*_3mqTB2d8oX{%(Vc+p$yeom+9+DVaw^L`bK#m*< zXb!k=Qz=-Hv9s;iSw2Dw7FM;K#Pc2Q%qqjcq~{zKy#;xfiw&)d9nnlJqQ&#o8>7%+ zUNT7ILRhDQaN+GUw5@Z2<>|TZ^1&OeJAxC|KH8(EjMIFJJrCprKKdY)kqzSL35*Ao zVKh3lilu&5f2VKj3Y4;BGBG8Ck|LZ$LS8i0VIo}`{3QBslpK8a;bw&s&%lgBS)_9K zVj$3R=sn$j%%*#8<55~DPd6OQk(gc8@g3gcoLOnmn_Df*OH2(nrF^n!jfgylc7+vM z29y7DdzM5D&@C>85kqp=%xF2-T4E0}vqLDo#E~G@(R2|7G#6H0)SapI$P^0;l&MQo+Y*r>QQ=#QX2|-7F+A=@ zF7-U?7%>WYq+5Md!m($K#_R-z>EPT!_9P$;Zb4u)jA{^iCLG71TiNpY-X|aoB$qXC znhp(;Ezub^isg5v7^F#mto5Rt``6Mjk$zofjn*1v2E17d&1`fm~T2WN=cVm%p0W>tELR)N-Z_ZYMFtr>)NL7U5Kw^3VC{Er45QaR@SGJp>Dd%GTBy^>(?x-EAin4aRXH z9RTfn)aG!^yFAB*6eK_3dOI!H$w)>rkSa&izm5-=@CNOSD^M*ek76#FFbVn%O=v_X z2*~EFIc8#_->|KG_hIclq>~bir=S9Iy)(xX&JVIWiS^7B=|3f<4CL+n0!q)XU-_S7 zS~=XsF)e`1O@a0UX96@){B}`LM-h|rVsRhyp zGSzLSAmCMU0a}H8BKd~8W=UwXQ97!5z14mTjk+S#e z8=%Tw8Uz#}Hs=UiKQ3purP89cEV5hWv$;h0R2urWkB05;EXMM5{{s3tYipv1LD5_n zobT~Ix96w_vb{Few{B?F@XXXVue=)KTOCJ-=M3l`STEW*)+DHN1>}J_o56Vh=p$N( z7|-tWQpy2%)#WH}^2BknB#HWzlO$0hqPs!73(%qxf}B+P(A8FO&DA4yKs|_+G**mO z#WQ17@9`*>byXP$JFZIEj}fa!s^Q^rAQ-*0HY*YPZR+(T$R68%9)SQ!$Vm9MvA@1) zD0DTI_>12s{iAw%!F~uE!c?%5-NX2h8~0yUs9WdnFaPnnH1(ghOx>Z&V`w60(n6$Co3RbQ-yCf45{m4vKHYTh( z8Fu_oR)jsZABuyWQ^hA1gKkqftboT02uhC@mw)%rWc|C2VJZ5fC zv^UZVMA?C_T<&0HdifRjwGPE8KR;#H##dX6dg1tY=L1J$Ka~nJ!BF~8ag%<{tmJ&n-nfvdr9Q4Ow})U^;J}re;+F3wdjtkl^mBRK15KVB{$!9;TB}{ zMV~B_5kBwfkG9;uD{jnvB=mk=2#^0N_S;b7v%t&q@x+6uG}wFa60gx1Ssd%Jcv6BL z=9q;(kdt=+RU((C_q|w^{1%4nsVkts>cd4I5(|AF9_o*Wd%|z=D97Z+2OfHB)<|MG zV#0TEdAhl2S@J`L+;=JF*!0!)XT0}6>#X-UxY?Od{^|oR@tB5ET<&u@7FDGpuAGk^ zi#gx2PE7E67XA*)%Ck+vDVO3Lt9bv65Sza@FX-@%&hgvwf(^vW-@L79ty=VL%RLz@ zcuDvYTrX&y6E1G`4#%$lYh!s;Q$?}r{j*Qhm~$VQ75Sn$qP#!vD9X9(!eAeHJN`FW z2k599&!UA@lt&td|I03Ep<){-vJGegngA8AVr@viGa{l=K(*wA`0u}KndG&i%P*)Z z(NezZRa(fi7qtF|F!s=$e>t1muNZ`eaKmaqx!hxzuv?5O_cD~z?}pYRFNXvJlU_5| z+U<+)^W%xS(wM)dp>724K6BF8=Lc|ef)ipI_?4J>t9dwND*S&>24ap#Brg?HHGe0Q zM>oej-f*!z|Er=z;}is&b`oJSjE;q%_HG~6KOo$8J{?;UDt>EeLDjO7Zpj8d+uq)r z#=9l9?H-L{X;ZKN#%}LQ9@~LFQ|= zc3hrT7}NaWe?vyiTTuwH25W-efH2!~P(C_-!jMG^+^M`ll&5+F$SLsv_At=4L5$e4 zfr_S3Q5Y5Qs&uheVyj!4A=fwyaqA6prAHFH3;x$(1;TKCj3@5rAvG82A&`u`dMTsd z%mzvg>kMne$zxGf9*qH6ay{l}rw;AEH2xgQ)SeOha;Kgq7f80e+}W`P!%ErL?_W;)n)T!WP#UCdjFVyk||J^rnyNfX5?UYQ?nqS&yy&AzR<2 z%s{k+rJTM1k9VH$n{-<&72iVe-n}qV@tFiRC%eUSGM+`qwppZ97Wh(tkZxLZlz)7h zq%7O=5k5NpvLOO^`9C z_;Vrhasg71cnPci96B@^T?W@bLMHmqrFu5PGun>UyW z>UI46tB}E~-L_cZV&&Akn6?Up{GRZskT}mCY~a-!y+B2AFQ3)evN^Vas?<43}z@ogV#Wtv3erPGu!ixxV(CZR{gpP++9 zNkP6y-Wjme+F)XNNJO>(BbR~*N!HSRwBm3h4!AgRs!r+>%dYQ6&}$8^4%tG`Lwzq* zUXc0B`!;Sw38Mb1?3AnFe|@C^v7`;PuPRuVYbA{T0aC?aB54R{V$hf|$%lsl%R~{R zc!OAsA^_~$quR$Hs&u-qdCrVP^I$Mx_Z6ke7bT#gwB2|AeNYfec6S>+7%zhq8zbe@ zvdw|;{h~b$I70%GRVf|Sh83W7+sGZymM!RQmWVsKS;I>Ngc(J3t=oki089uXWH_9Q zAbB8z3xcpWHm@Q4x}zxKRw2>V*v(j9{ML#TzgF~$RQ(Gpr}AM1N|PjtNMo=@9RL!k zKsm@T5t!NED5s^yi|v1{dI8^wu1HP|$w%0!r%2nL9?9hH61&+jbj`Q@G3hdW|recTm_>RYB7OO9%n;Lyn!uGQqJ zC!iDOn`-XkF)GEwo=|WZ+1&$m>85n6rO9T7)9?l=Z1-*HjzOeL?w1#9+G(7J;A9#a z3kZtuB*O>sUCkmBAN}MV+o-uhGeVcnBb#sea?H!;0S1FNKVh(auzN9Ipu`64Ghx#< zm9xTYw0zQhvY}|nW727XaWd#$UgT1?JEmWft{3WuGZQ?#AX1AhI3EyDd$c_5l-eZJ z_q-ER$45V^++Fsi}7_S;Y=t*v%J- z4T@RSmxSlG&)vtvhV|S=m=6*p?k;7Pnq2hZhzP?$ajkd{4UR`)KMI3zBXqe>Soj+o z*Bfvd@{|K;7IuwEF}rS`j{H= zwba%NU;aAYxKE+*l_WNrjE@(^i#%ncYaLOci!U0!?%u4JU-oHM!U!;g$6?oL)&lc- zqYT{d7}}};Gy#FYKGQZLcxRZxcsfHce0%#nhR%Uj5hBULn68}-eVH13Z4*Es7+|J1 zA;e8eux_FV;+yAHiYLAwI{JfiLm1kgkMd8vdfaq^feT;^W+0M7u`9Nho+(SM9Z|-6 zHVbnbQ&xuvVp`}`JtzN2;ZrrbwrjTbB$syz>v*JsRC><1p2PX;;lDaS@wt-ov<@q{ zlZ*o@O!Bj6A*_IDUII(~LvDqv-j$hDfS`8Xj zd>-Fe1GO`>9C6G*%3sbaV;qfmUxo09NaAzB*XkC>EuS%b?se=cx@jwu+naW29mVTGWUv5apKR$e3L{9Nm38p<& zS#hej^*-FXoD&T&e}SNk-t3Z=E>Lr=|0eH2&WwxtEfQHhWY8yTyBKORM~D(Wy!dPI z=s7Sgq@M$OfLO@S&Cg)AGEs=!z#q7pX~>s^Jj$85d%n)18dMJ2Cz4+*m^sb{7q|n2 z_^0YiOu|SNMVW-xr-e-3pRQiCW_0by4gv8KDTFo7h)5cSmEOJ34cO&g5$Gs-W?{pj zxdW;p^(eMP#fs1*FJQdz9qDnx7!8vd@&;jTJ2X}=$R-taFv}nSSO_xLuymHc6Ico3 z7hi-BxK)+{ruHS!SPahuHL;aDXGR3r@vV}$jmp!`-4>+l(=Gx>X&iO1>5GHL+PMY* z8ABzNL1^?DIi86=` zZ@Uxh5(2RR4>JJCY7QM$AFZrT`^K)mZ;|fmM$;-?CvczkoYr9sA7xFMK(*2I=Rl$w zo&y!{k!CY6?NBXIxu!2FjfTzo01+Xh_?^9m79E|T$=cs05cJkOQ|XyQhNvuXSR4Cz z6)F31v7|Dz6+sssvs4^-bBQELF3oMV6gUgD@eRXu{Dj2(&NQ~%xFE;*`84f%B%b6l<7UJ9`cnq+3gy1~;Bn&l@e-&rA@JZW(NceL zk;1v5;8H>^nH6cpujHjAjI``gSL6pf_E4)LtD?40@@XYCEj+0tVP(q?-vS0Ac_=2G zZc=5*n+^8r9ElI)&*aa9g(^~d%LB@^Bd8_QK6@nXvPo?u3p##+n{j(u-J&M@2~CNH znh?C8Q;Y7uJy!sif+UYGonEAi{;IZsmw0i63h+q6^}Of*Ie#?-zMWU*{Akops^|gQ z@{>tHdWd(-`c`zbb? z-+5sW{%80E}x1sKoUb)&XGH(1I5xNup z8wP8#Q}58CRE|<%x%p5Uu%tALpg!H?`>O<%SHB2+*k}R4!TiZ!Rg)%H^qhivXeOBc zVJSEEb+kQN`L!jw(6%GnEb#FNb)mF<_pW$}<6|4e#uVmkR+8YUdQ!E2@|k)%hHKd@ zfoXj)g_eDH<8Fst-ZzCxSQ-_yG{t1f;k1m)fZVA#m{cw?9lRYj0OM~je%0V-l# zN(_u4;?{|mb*La$C7ueh%;OIAXi5be>S)X17SSZtNJdR?Cyn!-;>S}_J3tiPnr2(* z1O)mVv%s5Zxp|>aAr=zb-3U(bQ5D_tnB*fd4~gi5&C^`%9jiq)aY?=X4$0Y&=wXSW z*q;f;`nHA3)6w&kd)*=_n=AY9y1m-f#_h3F*yMHe07Vx5{w&}K$nwRx!iMu-vYc#w zi!apuOz)=jj^eT%ucmtFAS2bjq9WXc@q^U>DVi+E=`>T{9b9<(jZc4I5fkbf*s}DA z6^x+{+Z@c(@O?^q1L|oWX)WcFYc?Q47;tp7n6jF=5H{ny7xKfHY=LsH=A=b7ShiDv|z18 z<2&WiG{0rPYz>v)ds-$h#*QDB)<`84pAl-MXP-t9&7EDk3Ke>)|DokU1?+;atj)LX zEp)F*$`X=-p#I%OXDz`*ZLLPxY8!U!nY?DbC4Oy^%>B>8=pBCY%bUyLxLA3WqQDYlB=KSWYrv==tqdyU#;3Mlfo&yrU8uLMr6?+7+4uE&7K6EE=k3$IQa zArn4eFt5v{0QRYU#p>t2s@M|w8Cdq`9I~FmK7HsYPj=O*_rH@1{QSE|5l$q@V!LaP zJloyU9C`7v^KyGWZU1~{Sz62pf#Q>&Bbj^szY4{`^B&3Szn-i@60NWGq}T$5>RG=u{l;i?@+wcu-v7`r@{m+9NA5 z^V{=bEO{)VB1QP7nZevX9AuX-^TG&tBhGh%n`rBc3F4(xSpvGv@ z=vDcIj|di=VuXJrEhBi&R@L7-Y#TMEmJ5VgVDJCPs%n z`qFF~VhE-SK$d?b{jma@)f>RYlZ?jIpU8*ec1E!GuYw2fm_-4E2sB#|IVB#%GGleaSK>}^v1O0?6Kq@V1dcV2#*52%6jP( zOr>=c2gm=$2J103Yg8MOuibpk&8rdqyZEq=pBGl(O%JyBKeHX$P$#*uVF0k6e=dvW z<(S$_LC1s1POP%b+L3G#BCH5xKZ9uv^qD<~hsuQ{dUc#ZG=7g!t2Gt#)o+0!nRo)r zm*WW&kGZ;{Yq9sXCugiQLR;t8)~-x*A~U@gKbRVg5Uc%O>2h%GUT zb+v8?QixI*+lH)XL+q-db?f9EiX~LDZaBC2_Td`a7uV))5@CHSCGARy=)0^Dv{py= zs!@yDut62#u}7Qn*^E#B-KLG1G~qkZH-{ojvv@xmR%!cN!L=uUJofjfUDBix2sIm* zw61ag4w$ylqoCde05#P_TiXKOve%wF;?>R;KDxJ4bWGUnIxGC>iQ?CbUgu*U_nPe@ z+YB-_vAv>=b^p1%yNX@~_kTCAO+7feTHB!Z<#FPeBR7mG>qfs+bk1Db#^wkSlFcHR zoxdC8S>!gwl{we9P=&8T!Q8Ap&$Xpmq`LfGJDgc_4c6*0i%?Ln()l^o6>#tv zTlvpOVU`Jh(2BG!EmA5MH{#9kh6kf+3q0PDQvS~Wi;kJO*Una}(|_+>^4v6h9<6PP zSGh|UT|85j7}~kBTe?@%ZVeUJ{=-rwW46jnMB1%XQs^r+>?hT&D^#gwKMzNVvI?K4 zV_+9LgjJZXaWotFws&#m;Vc5!#I;2S6IyX4 zKb0^kWpLET`g+>05Ni^DRcG1OcU35eue2=j3`8J8iamWfeV7%wU-OHKT)6(zOGNp- zGY&(vv^Otpi(h+I!_OmA&U&DYQT-k9bee-h=GO{k{iDBP~5=PB6%IYM0?<`^1AtPkyZ4v zj9=Q>kcB^3f#qzFk*S9TB*}wgEKi3(FhO(^$uT~i z+<#7_+d_;P1|FNA?BB!ID~lG_88@xX{pkk>q5gi)f2$}>Yd3?R#(AlAU#nlhrjIDXM z?_=ubu#`9Ai>Jy+Ue^(D8vzU*c%6UKizh7wc2$Xn-b|s2{pT76Mo;o!_XY_Q%vA>$ zGx8f{#J>wv)RC6ZxQ1y8-DzJB8hHy@XG4Tx2bBq6jD??w3uqyl*W#Oc2B0CmB{-7W9u@zMY{z2?lVbSKho@J7kO#e$sU1H(B zC%I?|e ze>;DP>x|}bMdJsGULrXDFlY0om?-{XglwVYI$~=haf2v?NLBf=_@zS$Nl@v6I;5fx z#ND_4W{i!u96*Fc_mEd)+>Z?#?S=LplKoDCpXOuZt=L1taJoHIyl_P}?VWuE+P@vr06>)LcYN_v@W z6(UhM)|$J>F(qZ%dy_HuU;F*tmLA*rO~4v6Di0lKv-#?)*7=krNe9G(4LxoA62)r18!E{aGE zsI!C4(azV`-Q>7vcW0Y5k(VX$9WP^R(&-Bi%kkh6Mu@I@)YqUod~RO7xE&xL{F+K4 z6v?NU*-bMWcXMlOO~!y+dPOpK70a#83$i)C%S5RQXYC7f#qa+RSdH+n;-eO1OSLVt zZZ${dgcBIQxBV!FUH`CMW@hyHv$py$rI3I`EEP8yB@AD9<7Nb4Ec4TfDLODh79=o&!F8}&uRiUawFnO<+>>-+oo!ZQLP7VZ`{@?_qt?Bc}lmD4nK=&HMW z1qO@IaaBE>17P00^X?p{hHV;T3ndqEm?tm7?(c~Ob&n6OeL$I(x7~m8t$V}4=8NcH-KEVd~pqfAH3H}#sRqUJ8n-^KDB%9rvBt>J_8RysxIi2B_D?P&c_NKhgS{Cij!5E?Cc`X&M#gD zNWr6pkHN0}_pEfQcEp8e1&d~!uQ5?~u#L5kavSO!b3}9oQ!TnhNr5h{ew}ekYgBM( z6UG;EEn<{ikkj`N>FC1J$rpm8!Lc-;FJm`D{k1Gz-H3!H`oq%bEhEvGOMT z%sr7{ZdrljjUS<*RF}-(+a*n~Nn2eRP^s#%R=H;D<8PMFnD1o88b?|x$@1_Cp^%EA z&!2*f2(A#yd=`5TXH9dTj`Oy@wI?_B?MkEU>0d_rfnc++I32Ccq0;^38~}+U zoz)k^*P!McIYc)_z>E&3l_WsHK_RTo$MUoyD3GONPO@l8Hu&8%h4-c7rPLHTqxhe>K2AIXkvsKIWm;_ZYC0 zIUYnWF!y&{PxDL_V?So-MuwrPtJgB*Vd^@RPmWyAE$uX1@w#@xf6qfEsiV_uPyua)L~!uq(!9R zqEXsjMcIDTpirW7Of8`(28r@GOJ1SLgYxrZz`f1s<*JW+c<;h?QsjaHksz081*$ye z>08RsN`@RmREzE|o{m#>JGv{#+Kg?6W2&5PE|>%C37|8#KA?mr+z2@wf@?}UO-s8g zhICC}T+#*`0tgcOkl|v0apT1>u?H_k1U!8)$`tfsomR;p;u2wG{( ztZ^fT44c5Q>yw++JX|R*SFo3E?Bs+DSnVKJcuaGH1G10G{JO4dK0PNP{;6(7SSIU* zx(6HmwI2Q0UT#)>1vBTj>Cz}C#IlaIdn_}u)*@Dp>WQn`xFJnJw3G5DufUOarQGSYi>>=D|0!q$U(83G+ZEuW&R4jdJ6jeS;omLSM2vx{*us4mFeeV&0o$! zj%ISEY76rpQX{u4!@~MYp>Nl-7z{7-F`hO;F6N}zk*IQtZtBOC@$#G|J(iCyov5u? zC?oaTuXdK{90%p}g5w?sb4p0k`KtrUNv-=SXbzd$c3PbVW15XQ4C23i0}kYmQxTq% z-ss?MPLC-qM_5jwmn{9V=$^2~FKH;+xPq`m9Oammg(+UGuXJ+EbE};c)-4nI`@c}L zhz7?9rr+enjXc(^xI5z0Nn^0&6qHodG_)+NY;xG;%Hxo)fKy=|{qObgDpIUOsWRm% zRH{-fBrGB-rcPYF2926DOGrvd%gAccs!h8NofcUf7$5)zJb(c{z<~e=fe46!1W17l z5FtZ_4ih%=D58ui>S&^MRdmtE5H7};VvZ%&*pd@_a+4QF^0z0)h|A@7@uIPOd5`Hq zc*~1;nH-qt!5U(DZ+{QmR&b(t=^ASL<=M4*WZB9UNFqm&#Af%4{pGv|c?4+hXviDF z)4YeQRQLnE0`!t|g>;b<*U!a=kIc@cF*eqNEem9$O$h|y6&s!@{>lfY@HHLJmDuXw zk(+n18JUR54re4dCi_US=<@oKfuSDEN8m=!BR6LD+~{+WD^`4F*zI-Svd3Er)qjUh zruv&?)=hdHw#v3!DrL0I>S84hMp741qEmzf5I@7;GE> z-@x7*MOh-R-d(0&hfQyWlWSYq+9C>6daQjd5wv59|LwrqrN(m2Iz zjgG#xY->=qP+|u}aS$HIaj>INeoI=nnhxdsxp%{LEI0@pN**u;qJ4SJ5gPj>cX-<7 zzYC6|;y_A{Rzc(dZIq+L1~Gd&qo<217v+!IFE@2jfBTu+e&qI}is%3T-uLI)=Z+C- z*gBQQp^RXekNZ&0?8w@zpcKM&WayL*^KngtN zhj;7%9XKS@AxJ^#?AxNgqE=Tu`8fXnPnV`iSYvluZIT0q%Fji$;JZEIy{4EScmK!T z%zUlJK+;kOKyV2ES5y68x&0sCW_C;hJ%`_tTM_Y}<)VnKfl5Th8pj#(t<+$e{$-a=4?9%!CIie7vRu^>+F`vd_m> z3D&aPaMIPF8lrvt@BgvobJIn%0VmS(iEnYYw^Eb+8e_>JV#SO;-fdn0=VD#L z0N@8c27qnx&;S(}d=9~#c@^;eSibpZ$3$*}9l(p6*C1p+qprU5*F3QE1_1#2t1|!~ zVTv0eNf!lrJreatRTh%=rcySKdd-$tVcPv>%sCgT(hK-PJy-A4`)yy2vdgo1J}>1o z_f<+NNX`Gu>9Y&Z(dsxjQDaaCOH5wIlVX8+Zz4h~3k0hXjNL%PiWxo!Ad;4wTjewFG{t1^@xS zHyI(2tkaAzM2pUd0R1ttb!%iwN(k>wg11VOOxaJEJ4Ybb2(t`5(d(lD?mBuy-Qt0+ zi68jeW8VXuabgBZlB5d>LBt-qL6+db5E_RB30kD>NG3F{u0ju9-5^?i4GD?Ix~qxx zRugfz_1jj)t5~CqT>FxDX3Th>lJVk@ib&|00Kzv~A`aO>gs#S5int}5h%Na*ChKMP zJ4r)nns=XKim;Q*j-cEU6m^ueD=HxIiScLQLMUBp_<|vAtucLYgn|X>ky}K{D8^-E z05ynu=s_kk`N%Xw+>Fw?K3X$krlyF(O3b;zF{r94(c!rv;aYcO%rvY%5y}6VaU{pk zM6_&LzoEjGv*NS^y>}L6WfMV+&N4DV7AFIM#~9(UEHeUv)@ZX#F+kFI zKD!H4+VY;&@K#p@eRbRu8v|=o{Iz+lL4!D{AX2#us-TcmS47>Tj)sQb&-!0 zdW{t#;zhOUe{OiRI*ku7$XFsiC=+wcTNfml>0K+)?zPS+K!UrT9W9ZJLW~Ij1ze)` z?3Niv;Wu2a2wjCl^xzEAD=tuJkA_AOJz|S8%_8YljO87h(4WdZC2t`|0g{Z{w9DJ) zy3(UVGPo28h|673Y#R}3hN5ulSg@NUxWK}Cgmwf(e36ssG@`x{w_wPKaHgfl`>Con z1bYm373(NqOQG;2(u`C#D?pTV=peEl8c}BPz`182E zF%XSzjEphbBk3X&YDv0m<<`mJ6PHnj1c*sSITHxQ5f~{5f|LYBD#Ac&f*}oIqIiNM zEn$tZLTqnKtS;|ZK~Cr+Qs|ItYbcR9f6tm+Vs`#LV0<0({-ZQSEl)F-nCuK&vzt(erDZ!MPuAl(4 znH_0Ln31HOeXFcAM^66CO#D&rZG}k95+iNb_N~)Ub(tpn_NW{9B=zW2jEW9=eg>hC zBXgYzWGCRRQT0t`k~8Pk#9DKchsix6U0TR#&C7TGi8+8{7Q zitS?D(poD4_CO)-Vwf2+6108ub;c|Z$S5Cl)PG!;-V;}R`^W)c~uZJ+7)TSj1sch%vM1*IozN}DN7+qQt})j!-GlN!5~@$ATA+RK+z;VqT2#F zc94)5#wbNdikWzcCrEai*a#R992m&0=M>?sOoLNY*c^pulu4kdVe63G&Mj4hVAC zj`K+b1&YfMP6+X-ITqkoICBK$

uJ`Rl(T>WUyh(#Il^}b(;p^jcl4C!H=Wktd|_LD8=O1B zj`)fCX-8idj-LzkAE7uNhIqp1!IMspy7&Y8&=Nn?h?cq_w9EyecEscBcmhB%4(`q%1dweo1+K0< zf&l^L!mk*X4fDgSrGM1V1;~nIh3= zsDo~)JdSTnpt!+gtFb8LN{!bj#FRkIOEC!a?93dF*r}38jTw?~Dp#uGS@@>ROjmLa zooX@2WD<^4Dlscaky<6;7^G6Io`;L%$=bMhT_&B)XGhD$0=YsiS133P4qC-QtONeX zM*bjlHl4SuTOcUr4>%)}5|a{9RMV?z>Aj#_oS9h~=}kK;G@)e?hCc@shRr`ib?jeH zY1{!-1#0XM+f~{8REp29qEwEl59r7ff#M%pB@ve&t@%0=-nAoQ$sKKxq#zX9OL4Q= zDguO+!`3cKF~qqPFI;OusF+D!a}3Ls zKqz{k(J-|iL7321gb0QTOxjZ$`k2%KgqS7lT@O_l+9~}#g6MHV{~>gu67{Uc_#CuE z(SwAYv+42(l+0wR972+!d5d@Ihf|Y}O|F#YuD<6=M#Ts#c_J4IDl8B}!w#MWBMl67V)zhYw`JRk89lH|8m75bcXjot5`I{?i(Pf) z*yRBt)AP_B(_t?wxwDX}&U7#a^VL8uD+f)wF+v3HifE@BAj8fWAZzpU282GXdM;c?x`gPQsmq+P)4am zkj$L{oEz*Q?I73n_E}F&!(<_9*o_>GT6f5?|0~zv9}y+VzvmBob~AiBBXkQFwjzWx zcZAM>uqDzF@L~CleWvDNXdpzWED|a@V)H1REd|grToS=%yIjd-!x9r&A(KZT5JsjW zts7h0EvrhVv3wd%>*=E+gN;0hC>1Ky$g@eXDTnV#LVsVQvy*gs*mmSI@Jy*9LA*c; z%6hp&7ZCQxKJy3#GhgBEg=bVR`K&;FFqrWA0|E83VkN1N$uLPH%?1clpDWx^ z=}KqwXQDtKjM<)fm)`<}?s0_CJNk?npNF(5jR{9Y;!_NQYj;#f5frr|?#Us{|bj2#XtXA#yFuv|5uusCt#JX zDJy{Lt^KN^Xw>A^#C^XXVL;tEf92fGrbUEepj7+l>$E7-x?E+mgn3IWm6c}LmW2Cx z#z2Ipmk9%$On}1JR=LWO?Mz zfV;9P9~@EM5JI$zzphKrUbq&+U|L6d1CvQhS363{0nNNwuF)o)Bnn~c`as3)1K%Rt zZj+fKR|fW!!TmXZ`9GDfnLj^~s`~x_fz6cAlZ%B@(^zL!&Pn6L6TRrMHzf6VY^eUv z$UCSt>)41a?b6IC79>LGwz&+SwqFfo5k(^5Rs1i9?w?Q1_`b{?+|7mj;SC5uQ!fo zNLYC%1bm+4@Mi||jW2VYXR+cmT-a3h&`7b)EoWbxi@dQW;bFodzTMEc{{G7UAy5Zw zdM~`o#mB$kk_)$(j5DD44{Xc{@c=sBjq&5Eg_BoQTxY3vsscZ~C12b8g78Kn)py?& zUvtb&_orGrW2)j8-yvZ4GW|zTwp8gxLUn}~b}p6HTP+BJgyNly^bFIudO4FJN)n1A zQ{T(cD%P-hH{RX9HgAQ2K3fbn$?p{7O~ua1q|rF1U@ssK-w`T?=K`&$KjXY8I_6;` zQ8ak9Nd7@SuEo0~Qghvqr~J*Ix2m9>k{50~hhf|ffDG!I53jb7kCclOR|Y;b0(Zvb z+K+-s^hndIR&l7VMIUAmFQZj}mDEdY)T(O3rYsveQ8Z=c5uuy|8jv%RX2Fy&& z84K9u_Dd|HL1OXr^b_^C<eQuGoraK3 zoMT-S%bnA1PK^)1{QhzZEAA$|TduJcl>}Sv&Pe4_S1jrix4F+LNj*G4kc5cIv$uD> z<9_wf^fKOt5GnvlAvBEz78iTTk<7|UQ>qN|XifS4TS9=6< zrQ9VJ7MQc@jkP74ehP1`4jku6FryuE0A#fQ%1V2dOdkA{BDhL8q3F!s=g@6TQ$?Kb zCYen&aHo};%c|OWGP;{IIc5Xv{Pbi~PcZr8O{~b<{VV94n|Y{{lqtTiV}2+0qZ?o; z9)d?IgsEFF#|N5Onu<;;n~jEq^R+RG(X2BjxJl=ON+-9OxFK(gsta}1%T!+)-hvr< zrh4ww=R&M4l?0#<)Y7tc@2q6O3&}f2lou#!MKJCBf#Rt5=E4kYSUdD5f1Qra432Zj zOVK_ST05h0&`+z?;-t`G43RQmrS%|ldJUdy1S(Klo+oyC+dwY8@ve?m-PI_D)b>f$ zS;xr%+-k|podhy09rl^T>5<>TpSkh!!Voi*m5&;!h~x>2c2(!6df8kRt4}sA+7!pBHaXs97gcFy2snx!IWG=QEhrc z6N?kqg^EZBCm(^1il>D?9_Bm4zT;M0TUD;0$PhyGXE$HmJ4qoAOi>I*LrI!FVevau zwlk7aKOpzfY7^+aONbzXWT7Dwu3@tR#R&^elS&1q-dWLoRt-G{LR@MZIunB5kTt(^ z;)`oAJFI1JEM?gn+98c%zsVKbsPx73-L}7+CO<{~9i5{+Pbem|ZZWDgSu_>dJa|ij zLWIDzgo}DDJAvPUwy9fUu(4jv0NcS^9$|2}v~hoOy?LD#>#Tvjw>4hDAnnnzO1e+y z7G(ug-Sz=y_WsKx_uEE3=O*sKpDFjEJm?WvBU;pQS)A0dTj#j;k+9yL~ zJAGEay6Dv(+dRV5J7yyo!>XJ*JTbH7$F|d^pO(f`^{tL-y-bA&^mG`-9GmxEJK9Dq zGneDM&j;(98ncryx|g>5X(ii_p@Nd)KKI>wgwegpw%@TvHVZe595_?OU9ZSY`lFpp z&+pM{Kc*MYR6njQO0AWmn;#)`$Is=t8(@{=p^ED^&epSsTfnuN>&W_)4F{mrH<1+?{8IOx zX#5>GtzHKCp9u4jHruKU|Hkc;?o-Q#bS^l5&E|ut`=Ok~6wyvOPdULK^C5!sV#xSv z>8nNq_66fvvDBxdQ%qD9Wu%D;qFh4Trt{0$R>Fsy9x+69eD9uNP2EXU|%ecz8+Bl^YZ?5Zi zY=PM8DTNCPw8M#eLbs*6!XHw}TtDJ_K%@Sr9yG{mNj^YseI2(9EGNmle571Z!@m!# z6oiBe0Bqh07vuv;5dTbD$Zr}cZ8v_f?QH?V4jNJ{xYv)*DN)AG;RysgfBg?Q0t*lQ zdE@)>fUo27A@xtJ_yb;nR3~9G>jXaQUkEDdf=oE$V3S{P3WAU2Ld+Kd8LxjIg{o>} z=_w8DdkoLbo_YS@xUc@%`h(XXA?mvnw5_c9@2Q=ayk~B49`m($y|lN*_ZUq%1a&VI^t2T!KKy>N zRL!t?UfkGOZQCCuaOj_&>kND*WqW(qgAjPfsLh(a`&@73osYWXe#~cu%=GV7i4AaB zZ-`s2%%{Ig?f7#&)ev7+QrR{f#(!j1X+|w+vStYG{3v24)g_;oD}T)M72U{=Fa2eh zWk^2FjyQgYV*THuT?HGCtkr!xv}Z{7{gKrhAYe3fBaDZe#)!w4wPY_l^f2c8T4ywD z>>z%-?}iPe<_?1dW?WrzAS+|Z;j0J}yLnlnmc{i-8IWQWa*os7X?0MoT?P#sz^HMV z_GV6V>2nRQJf>|J=2>_RaYRdr$@^^2VL5*)1;$;wiRIe(hl$<0jQ&!!8|?8>)E_1tw--iCK*83E8hUM zS6fGivki%!dy$Z~OAh=vRLS$Y^olsWi|2(Zap0GCiqH!Dtt9Qq@Ne5?;ucH&Pd~vI za%Cbyw~&ssA;NE0IheK@!fLH}6f1u(Bh_zZN4)H~N-vvHKk5EWlD0f|=?=$-UPZ}R zQQ)5)-t@h$fp&DAng*CQYNUyHEm1C^AG-uhV_Y)*$X)*YE2l7zGGV8Yh&-rxhii%`RauaVg8k6b zWfU0#BF_fbVDxU21y1jV~_zgBU;ZdE4jcx4wqo!Q~w#54Z zlZ+Z^BA1|zl!M(0lAfj|>_-r%?8Y=*^pk5i!zI#IBlyE%b8JC>C{~;v@rc4oRA2k5 zCE-+M0@Ncd4@bp)BU8`s#sdqxQN~1wZWTXmJ#}_|CK8m&ozva?Bzol37Xw+GxU*N@ z`n;vuS-P5x?6#_gWw-e2`!+8rc|C*0qUt6Va>YTNN94>^Fv8cb$Ja{I3R5#(d~8gAZYB{PUefiTzEBe`sAYkmHkH z)y14b5p_2LhO z0GoF05EX?Nf%|SdaU~NFM{`x^Zp`oH`1mr?nT(o>Q-F1QmmW zHeO(Z@%v0`&TrXO2Qsfyjuf23I+ag8SX7sBx}&hufC*&*KizUaw0O3<-N9_d2i(eE z|7{#v(Q2)FcTIkPlkY8i{P+>X!ecVt#Q$v8}}c$Q*>*bDaCU2XA%X>LRFQw z|4w(*B(cJBCWrNtd1s%%-QDEl$+4^(zXs zmZ_YsUnkjl_ss1`cRm&3G-I-nn#g~}dpjIvZ1C#{)Vrg9kC=c3pP`IbMFd-*=S)A* zwenP;ed}@k{Vh>%o|40Ko4R(jZGrzRl|U$$9SVZ$6D4Dxwkl_qibOlMFZ;7#q|1NT zhOamXW}YMSUTy7!9~`*9hyei@Jsj;hR(a+AR&N^lvjj_Bwq$n21+aYiS_YX6O>`wl zmo8g%dDSI}m?^{#=fg0;SAL;qN7Kn~zoCb|lfx2{fFJs~a!J)*(8Nn= zBmLX&jm4w}Lh|sh5B`XCe@)dkty{_^j+wPtTJzY4v975mBGJj3nEaYyiaPy`+H2J| zk_|{5HHC@Wpvo`=jO3w^X~AltC@ob8I#yKI93qV%>c@QgDe9LehT1tQC8xdRiC^d` z%(c&PTXtYyce=?{8>Yo{j1<;_y6CJnzClkL=$Dr&J+{(3VZW#ao#Wk5+M z#iZm%2%ab2u+R3^KAq;|$;c{Ao_Uj= ze2A5R>8%gETGKqAncbpy#Uhw&HL|DYt$AqN$=J@r!hDdY`rJ0YGGRDh7@yyD=o)a^WllD4w^2A2OFb;mpve`&o?M+39q5lMv}DD)!@;y>?D%0t z?Z7c`9Nl4coGM6GKl>W%P+47)ZCyN3fw|{CKY{XP@34F+^}cU1%(`PS5&NfaCVCbR zFh$9$o|1p`&D76E*^xkrD(|CXMcHTm3)rlI|IXk(c2L#UMzNPF%j#^&bg*&#Jw*tm zD_C%7?K1~7b2)2F8-J}hZ=?=%lmt!1xbf>ZPYdB`)XzW2RdL2B^@k?gU=G5pamRv1 z^#S{u&XlimW1NloX&EW@x>v7#|002>&Xv_AS`}G2jk?GFPX#oCU{hV|ca;}qgwg(9 z6E5@HQQD@iCu2gI?<;isD>qeVdpUQF$l`Gw-ube_8vlq)#cD6&_7}v`R}K>uNe!h5 zzoUB^mJmyYy#|aPQMwf}kwWZ7qUpk<1PP-~CzXL*dt@ww>Rz?1?4qFjttrRwx*eEN zw^mnVtabg~k-KUbJE){_!DM~=tzhDD*TdjgG+k&<``$m z_KIx#$H9gvPBSk>D3gT>%*sMUh{%`a-q?x1q> zsE)gzIcFF#j>lDD7oJNLU_F~mdjnCAZ~n=FdU=bgCxgvR)=bJ9Q^z`@iAmAGUQ^FT zh9sRNZGSHbvW7ihWt?%4-ff<87ury!onsWeW}k3K>lFcD$V?SdBU zT6HxeEw{wUfBo~KS-w1zRe89>Cf(JL1d^zLs*k~wGf zj+aR72lBWpIs=|L2Lk?O66okg66n>_#Mw)-Do7$uVwq6z77c}%uFW)gd)HG9O4&!ST8~B`aedc}GNCNQ+>?z1V-h^bV zt6Aq#G@9OM(1HAN)J*t{!)ybAd6>w~%Is>S60JnKj$Rso6`UV1Y9w|4z~un%*ec zBD<(?aqw|t=asHh$-|$u9z)?b2nEn1W4tHM5B$#H1u)nOF>nN*SVpp4X7m_VJ13-4 zg#8Ay8G#%v@N03ZN3}$AruUUe9^B%95VLv5RO$y0OF)IY8oe2&x@~*;qPv7>0yBzz zZi7(SPCf0((^q^w4E}wb8!HmG+Ae+2h=hhOe&!~z> z_1f#UUC|UzW{=nb<3_stc9ts=8`-;lZPa6&QBb>0H?1<;(0OzeLYpC-6_jdEoB#^D`0*z&oq+ zCN&p%Egf2@2TRUY$0A{euQ9%tTj^s1MhrNtW%G$DE`V25!I&cMPzpAci_)_@wAe&Z32cz20Bg>sr6lU5FtU_pq_7}w zUdm^|O@>mWBs>%-XM$Rwawr~i%#p-_KE`*NH7bm=FgWBZOi9xMG|~eX%rH~I!vPJSVmer0~aYV#zE;O#DS0nFqw-+2rcYeQb?~}E;@Mg zo>a30Q<*e8&|yP2l*J%{RFW|sPIGWpo~lgzNP<+x`Uu##hAm=|WK)wI~ShjNPYV+1Z|6^Sd{2c&r zFaXxBPK>JSiVF#E&|+`uE%6tpodz8y{Poq)9T+G(Q`^r|W>m)jo|Y#iPLVvM%+OYj zztsen{eytp1O&Nkl~4>eu!B}i!|sBhWRrP&F@^g+B=t4aV^@1qGOrQbE}Gt-j;07y zwi$c<6UKtFy}fQ+CFizB8nS_s1c>G`RVM&(Y%&ewYMLk2psXye%zEMjco=All9n%- z#9CAS2l0sjO`1h+{L}zoPkes~OXOW%T5AWXTY(agk_L~BaeMB4V)l{BweI{vSzm}_ zDy$~&X;4<@FQBZxdcb+_X1=r)kFdjBniptC+RTRQeLoARlL5K$_RDECAh)I^rkm~3 z8$C<10}P%_sEll@bvD6qwT^Imywoi~FT#&A18G(R0)>U{XPz8y1 zXB7;0wF(jTY!xaY!YT$|GEQS#RlFL2mV7OryM4iL(2&JO^jM(V7*c|EiENx4Uz;g8 zVv1Ii0y>StctAr;OX%cw%eFuYocr0aQHv>V$l#)~v?2m+T6NHDzr~6!sPJnviyiVP zOQ*ZMi_f6GHV$$AfH8l>0-Xe6=X;+lBtlDacsvlPT9OLxprP0eXCFMaaMvRqXEUgK zX&#U*ivUkEgPlvF>epop3B%@?$Y$;OwMx@%A@igg(&j(Om3Tk#{4W(c+y^=z>**bea`n(V9&rko|US|m)5J_~KM+@*`Ol37}G&|tH$ z??@950jGTJsCN0<z(I{S3PO5uOsC866l1 G>;nKVNojrn diff --git a/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 b/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 deleted file mode 100644 index 349c06dc609f896392fd5bc8b364d3bc3efc9330..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12028 zcmV659DkbG}7@mjJD1@jO-Eqc8pH1xbNXy>V zuj4@|WLKW95E7|5CLkNL;`-Y+wfA&?GtJ-Z&L(!k4v|`??3CPcqTcL|tNjQ{K536( z{p-EnmtzN&6c7(-?6J;0;$I;9*Or=#CSe6e`Kj!u4Ul0&Ix>QOQ1Y#>s9n_Rs?i!K z`N8}1e;oFIb6U<-O6FuJcnRoEPTZX=aW9wuuhQ&I(s%2$94HMXDG%c+*1)?j&HvPt z{x5f&l`#j}k2io7&=!!w?=Rc&|6fkeUw4gUWm(R$oMkzA?`+>1cE=cO4|J9@oUwe@ zJq9WYEP(~E3>U5e2q**H@Lxant9$O-_qA1~YfFUmMWi9#7(z1*h0+O0B{7{3D{D^4 z+y+H#pL-pvasQi8$-7u`oy}^Vd1cS&h7d}o=09l#K=2N@4Uhmp8_<0KfKAV*4nF{9 zh``OnQviI=2H$)OZk$-3w+A?YOeVo(|CfPQ^gZ}X2Ef)13;=i^x&{D{0emUK0O21D zE;`}h2dxaq;I_*Km7p55ff-;SSPBk+6W{{40nMlsJ&B%0@1SXH7j`GM8{3B+zz$=_ zu#+;rEJr5!|Nnl_4|b>)w1dn}KY^Y`Z=qY*&M}W-CltGC;W3{5am+sQp%1+8mU~@s z)-i_vmS?{EEpPUg*S+dxFL}Z9o@?xb?}G~<-N^lQjQk`ZI}rTy)pLNZGKgSfq7o;5 z3C!o|;180KTmF@N!@SWef~L?@VC@<(_tr=p{0g*xco(8POvL-AAYBu2CpE-(Pg^7< zM^Ab3%zlk+nVs?3GjK8DTb^inatT2!oMR+)?S3PUowMxCg0eG3A)(Z;sCeEYpJ1XU2Jp}l7$I*6 zI6xy&p)wjudn4F^U5%uGuuCZ1$Q&p=y(q&{2;f zKrbeREM6T+Ko7)CYCtk?2a>fX1#8CI)v)hK=p9wy%t8)58sTxvW*qoQCGuy8Bx_BV zoRMWu7lbROj3Msrgt%?et_D%7pyMD^V*VfRke2622B|#P0%UJMS(2)~fZ!M_5rred z2-%CRYaEa|mdV3woIUz3r@ zsRDSjcf#7lhn~97stOI11A?yl>nS&NRT8SHmDI zY-?rR`%X4=0J*Sqny+N>V4&<$Yq47FB)0sp0MOE1LMEvBfI=MqO@OfiE$s(#wMUOk z?a9zYzDK;u?vGQ0?veN25XS#CVNm#a$Bl0EN*#qLK;RrjRM4`8EJv8-3OBJxmM6j_ zBAZkc%NKQ72XVu_B>c7gAgBnhq9!*k>Ki46emlE3S>ShfCc_v%r|u?UaIr6tLuw*N zh605Wg$jilMFEOJ6h$aBD6}ZHumPw&7Z_tBvwd`g$Iu{&avGpp#snH2jkXUm0~plp zR729dB>4JMQey;Qaqo=6%q{^h7tOYiM5h0`~o*gi{E6v*hEL=GsOXV?O4_ZQRHx~t)UzRQP-ftfIt~F zwkvtViXKQpI5z0J8QQmHLUiuWI#z%{_$C?w+&rb``3s$9%;LF|Y|ucR%RZB+EI}o9 zE(z_Kf?y}Mly&TdGh9t8Lriaas2*{nG)7i3s?v|Js~om8qMo}rHG^|(gd|Q4xY$54 zl}5y?l~qfEkew&}G;f47?iVhF#=Y%l#EJ?b;vkWRNHPi6+Bitu8;oEGMm&gGtDuc6d+M@+8kNlV zWA&lX(#E%KY~TJ$48V+4!+3V=TIP*~O{rCRfqw?5aK<445$&Z`)@uc&4(WnmOA!8p z7DRgOo}RMX#e{b2Pyl56EUjx{u>5V2=YViYP@$idfzbw0cy^x=ZeKlG0G2y3L5pV~ zk&tLK(6XY&0LstbI>0fB^pgKMdSt7K79u;F0qHaMuDL>IXM7*Z^Rq0D&f2 zFC7CUfB|?BJ%esz0Ff5<{WucQVj!sUR1|h#dr|>60~BRR%d$nxcqWPcIm#^3I~d^k ze`biDMdK`oorMCP6J9Dd2v9O(wl^_lNhvKraG!($7{>qy=uj5cXga0YK&dTM^Qh7l zSQ$4=l^j@KZEQ&qXaX&88_hM=0_s1eAcR3!GSG*fiyN4UT2tvVvssEdh!QXiN(7Do z5C;>m4nf2b;doeuAcnQehCsdoD3jqChUcL@v@@DG{66BQJOC>amPVIw90N#zx%s(j zBn(s4_wfLHHOb;kSu8ETmw7=0Fea>mq*Kcxl|o3id1T5QgUGqePw~jXg-HeyO;b1C zAwx4&WPYcdN>e0NX>eYt+Ao+$YDy`ea=ElAX^qA_TR_yZO=XbF@lhT?gMo2oRUlcG zqtO-#lSD2X%xlvs;SZ?{^MMGYc|=m|q;ovDVt*U?z1sjMA{xoYlZ^?_YjH<=J5)xl z00=7-5v@lNtDTKRG=*6+K3@DJT6y(E?4(B1(7v--&BfcB}z}?cna>21Ttx zG~{fct&y~3qhX86BPb*f&~C-U`iwDXaWcnO`gFhMPj#e8lhaYSwD=@SW zTN!vOG{`rox6-geZ1K9)KDP{*fB>4VwXMu23TNc;&EsJOutC#}z6~B?)}m|nA|Ck6 z7KH_{17;Ru$th1I(FwVsCyaq63hJ!fZT1;=uJhy(fSTu1qA#ukro`)24RD;WbhgzT zHNz}?zn>9t6j5%zv!AK0!AZUafHhpB($H6~P^poQ$$ifX=JXnf$_aoXR3>~@F17~Q z1tmn1!tsLm{qM7x>X%sBEtNqWvvf*Rgn>OnkYWEY<1W?zxi?Uwc}K)rR#>sS9+cHb zM~HTFnFw)Q>5=DJmV%GFTp2{~yueiM5#smppj=CRZh!}%?)j7p=FmLn@>l$fhDdkhC!{|~muRIgFFLiA@ZBCMhH;GW~$}|-tku#mPtZ7U& z12(KT`vE+$i|;L=)ToWMJe9hh5Vx49K!;NE4P8yrl_U@RBJ(&TK4BtZ^VMmY(+vM{ z#`Ue}K;1>k0i2u4L^jKO;yWNy`j3M+veO(zjJ5Q+U_d25r|V}BTMc39hF(9jh4oRp zJeR19=nD|XV6GFf)QSuol@qjiqtc}2s#?70La*m(Rg+a+rm2(%LG zKIPOvA~2$ver&qB1MNOCjale1AUD8KTe$EchztPKN;`x^s2T-ugGwzf;S4#gUPsq; zJs$XEf+b@0N-S8iCbk`ul*33dE!etT2vk{aJ8pK{;F*XVC_m+H)Xa+YshB6YIxf}0 zWd+y6iOMKhYO{G))eNaVR}UO}pr`p` zaw}&R?1iOU3PXbp+*WeEe>#C#BlB@X1T&yD1IQ=w?nqqqTDud(93{8TcMbBD_js(r z6tLXi>3{s?@zQDWbd_T^i$(Gbm|E0OOV0}>1l~8JWu50E1A78vY-+|~B3od-2k%QB zTR}7rk1NH1I(|-f<%q4@apMTjQE3O-5T7-#6479#qIS&kt)wx_!{-$d=7>_YTyg6> zZw$5=W>WX_lZLPa&%<#SAt#+|*3LrG*BqltowbJgTpvUNnP?)wviPB&tfUt5?iEIS z0?o`Uu(I%dPjND|afnKZ+GYcJyUOCVno+Xs>bCp3%1u&WF4k%-)XAgH!TL7B3t-U@4YUt9@q0 z?xqw0>QHe_PUbH9B2cO@Z)U1+X5of2Ml&)1+QUmgBzQ}b6;ag)UAzVTLoY@snlHu>dF0aw=BDIwb_q2PUnqecP|fMs`9oSPSJdwbDx_I z!7=N-(}gjxB)(vwOgE*`yHr0h#xUg+4zJiW%Y;oNO7d4`$jfgh%@-y@YlW0Qb4u!(pRC8xz?WI#78o36Aw;f24~j*LrRqyme=S**_HiC~UvPT>tatLHX;-oseQw{! z10Rw&K`%&BMCOZ<)nizFo}I5*;N2zikNceD?=a$Wllqd3=Iy4P1mFS-RZ($0)v)N+ z%Tog6xTDhOXPG7HqZ!B;z|cij>VaVG7cG&fB@fpMF^!1CRz~Kyx z&6yPT%d-G?mShL}+Vo8#8aDg6#1gNMTy+h75ozAl8;QzD)6iFv*@}v8RdavNP-iEh z;Y3oX$K*6(XhyHtpt41yF+;r6v{8nQSr`h{GJTUZ*R&#~6yI{zYKZb9)qzhZt+Yf$ z*9#TO*enc?iRL8YSk^0PSX|}S2}8twwiwQgiM-jdih(4;aeLjFND#=9nO#uAt#wNk z&9(N@kkqt9K`7!el?wdNdT!{U%qQGWM0e$2LoFVr*+T4kF0-E3wGe$>Rue1VPMxUs zjOg>W^RYpR3b#>NXNxZJmOjx+~6&M#22cj67p^kthE~1rjmP06z&;-7j=^zMxI0_ z%@-JQ(0XpLfJr_hyYe{>udNv6`kdyi1e=6=o#{FZMYuPz@R^(}6q4=gu~^EPQ1gf! z@mfLf@b%_|frr-7PS;aLRg#l=Q7)Z)j{Cn@(<9y}VhC5jD{4}HsLNrkD7dMQ|CA;y z=oLCT>SQ7?9}_hU_i5T}*@|dR^j4LD#_fhh^lC}#@=#i$5H|>PGVhfYo`&5tjj|JVZATZJIe1N_l4TxRuWSxHr<`{B4enmQiU z3i2~V?h9dQ7Cb|UC-Hy_%SE4eT_(d(Xx6Y9-o?u}Z`2K}ykC!-?8j_jvU0HFSpN`9 zXR~Ip!$mn3w7euGQvE|yyYdjo2|CEvPShjHUc`3;pnR=x;hD!;KZ^@96h*_y17oC- zW;=MUWtnaa7kJ5?3cyU;(1yk-qm-W3!h@zuTDmUcIVbv)7g=oX)L4t6SQO|_V4)^= zb~o$?;DO~alt`L4u0FokYc_I_L?W>@vy!2Cg-YhrIyCs>sjzVyVag%3)(&M`z_NO7~{vjt<08-7Vy#y<3DCI%o&qy zEdQsl5DLcpT3#BUF2rv~U6fUC-n{=O$YLVw>=yfTCnN=O_g%3xJeHIFFgSO#He6|r zV%~P@k1Xn6zlHXor>F4IDECoBQ}m}`d;5o50{89m?@A`YQ#8hB52+%fp)ew zvTlnnSOn^JhxTwtR?A~j;YI~O?P=iK(bP@`^)Ie)p=XNZ+?!+waZRpWt%8#nym;c{eJ#}M%~bSKYP0!*JB8(RS2wuh}1#vOZy@x^S!i162VTxKboB5 zg-*n2e_irG(l8BoU6bQ#H%<6TN+#b*#4?t!t=>tyNXT#A9+u1z%|2J@lV{iDzPB%1 z`YfM$YrZ_a=Rp_2;gZzc)<3yPDk};(kbL>$NG9Jjb^QKXv+>zG%A|Mk8rLcojj=^< z{G$q*vfH^GHTz5DSl0BUtj%0rvFg$v`o*jp&p4>Ia$l(iQv}wg^~g6%o1R|OQh#7O zswjt~4UW03O{40CXB3tPx-g4(zK>}O2TRL34e0@8ODtFH`C{6#>V8RXkx-mwL=*E8 zzuDH-Xz=Z;w=6qR#-m_V4B_P-GJ$R8Y~?WYw7dk z9fgbPYkwMind3h7U4IpShGd()QRjM4laRW!E^Xdw(Qrl43D8t=)THsKuF$<&52em{ zFoYn=CiM6?fwo~nK{V@J79HVB8&GvMGjRG85I-nhV)==9^lNLgNmj7T{Xb;?hmnp& zX3h^Zhp0}Rm(8KM3WRCbuQ#r5pFmQg9;o*~R-F)SHJ7Y$mW-x5D~|RhnF$GTzeGB! z&^GEG8vx+@_tu4@J(Nyn%|^)!ON$U0k>i2ti67;=l0~fyF{^R=RL`v1*Z>s!p~BXc z(wS}1*gg_7`q0=1M#S zQH0~xY?i9aALH?2Pye?RQdV(ei{R-~7}Q!t-T!lE$zENq*>%e1j%9)_an?xGLHm)D zoIIt&;lPKVPe>-*8Ey+ajE+nf~_ zN!-Fev=yOn^$(i=wAeP-?@#;m&+B|!exl7g!rb$Oi`%5wH_(?#c0|7;Rrdd5R{Hhr zx@<2JAn0<3t6MZpiQI^x=oGij>8cCvJ2f0q|8{;bCsbbW(KYxI$!m(VQ_gPOZ#F}3 z=xJ}!5wETvg*P7TDVt}@YpTtc^DdjKYfzlecrd)S#KmvqzCpQJo!_jj3mE1?ZzH1a z-g%?6XlgNYa7NgE-s@5Oo@g&Dgp60%-o(81Khv?!zvJ(8G(8<}R18}ur*a**Ptvri zeNk|hA+WY5%v-2WCVJXZIcZ^P-J;Np!p;ktuDSceq9(EY+lQEO5pT4YUEl1Bal1QY z9Ru@n>vU;l&W@m|w@erDDcnvwOucW2!8VWBC=JWD1N$)p5bfyLnw5s;%8dnXx=1oN*iEs)HNLz3g(;#UAGT9ixN2 zH|i>{69?OZsoQP?qaEzw&BMz>!^MHS2AavEbIuL)R&45tC8FhAhC{NcYYuE`1Q!?Z zgChnnvzL?WT3i&RG(pbR(*S+)G2)C{l^4zdgam`a{zC_0eE~(|2f!g{`V69L;v`_k zSYZKrjc7}5)Tf@(dg3_1M5DqX1b6Pz9}*Yk-yypT*=$5s!%XGk(GS7^sp%KZZ-UO1Jc5aQhjA28aV~6w*sqq-fLbhXOJGcsZj7 zBTdM$e^YS>?PY=Yjwn7pPUk`ufIqrs^II@hP`ZhD=`d=2&N$OBSlSsm8$AbhEQM^{ zJ8WdJ^nD$fEf57$C>Bx`%wzO zineUMz#dv_izis>d9=;`S7SG5$B<;5cnTt?d@>LHZvM2XGaMAJm8?hgQSfj-yDJ zu^z_0TU+WqGyjPRgt0No4~|KP%@llI)w@%6m+Wq5RA}zrR1WF&0 zwLTv1=RTYO3DJa~;jA{Gx|Z&4mLhnZa$vgc(2m({0qt!-*$Loty-m(^)U4g}=J~3G zN*^+(Ir1#;z_?$uST{FSvj(VUz;*uMxP3F{S)A^;D^d018;4CH;>ZjJ2bxT1a{QlK zL#+WIn+>65Nr*22#Pz2v-}Gas=N8Q8WTGN_wk}!R`T3K4^H-)%)7Xp$+Xas5S9Uae z`;#M`v@n7skwj0t+g6b(wZn!Xi!LieZ<1zVacN}hi*1cY15EE8ec<_&-42HqNiGno z>wyZ0$iM4Hjz-GnWJqNCHO{|{6^8QsmWNkY%x#8eQfFHGaL9U<6d@nVx0H!+$RAYH zRj*l2So<>=GVftweUj`LF=J%eF)Kh-)kSer=hK0fU55i>f{%V%2Rp9}TH3EY2^aXb z`*&10eX-@+=QQ=5yb*37ZoiDGt43BxmU7_dm}*0b4EFBo?|~na$+UC#+NMn%O&ua3 ztrq=HOC}LUbbf<+-WdEjc!u^rYLaZ8v`IE;59A%xC6k10r95O#m=ZAj!K-(|`e1LE zbLTChBGmKOpNQ!L==~UmeB4TuJnM{ChkR8y11o$ydkD3nagDQ~QkZ$uT9D)3a84V@ z9mM&80NdP|;WayoT@X+saFhL~;dss-S)sG=dHx+Z%DRwY&wP-wt1Xz)7o*Bt2zTzP zD`*g8g1V-17MZp@o^*Tb{D1Yqb^$UPlEH(}PBn>)RqJ}0e#z!Qn>n0WNC_RDecS0C zI=gJIzwx)vARD;Y9g0^4tc#VwG|ipQ3bTs#d@-Ly?OJ@cDZajmVE$qxj2y>XrTxMI!2l$_Tcf5quGPmG z-d4(~VMz7>Y~sx4TtR)NH_=v=aHWO>CNgc?9m+|mQ3egqmn|1Y;)a}?!Uqa-Hh-#n zo6-(pWEdcY98F{tKtpgFFd`dKj;fPm; zMl#s}yru|8?Pys!pSaHndEF2VpvMIMYSfC-m++bur%X>Avf7}(ZHMi1lk)b$R)~iG zp*_te)g<*vz;lgy#8#=i}8){UGxT`xD68S~c1 z^F^8Ma%-zGV00K96m-vAXm%xv+ZfyZx>$8u^o8k`r^rYSj32-Z#^gAp2TWn*aKk>;ENI`;{QCSF#r3@xt<9r%;4 zJAEs!woSf=7O62@h}U$L)a&fi_cGm-@8?f9YY(FXh@wZMY1}bXFH(!fg(DnPT#VFz z?CG@QxSq&HM1N?y*Bz}=o`#YLgf3UqtN5Lx;Onm)&on;5PQR&fC_EjSM#0#)ATNNe zxhql|YGvl!ziMr>Q&D(SKqr22>z}u}@Ym+?EP~3UD4b*b1fjwLG?6J99UTj|YqjWw zX}3E((7PZM(7bA7T8N`mjjV`C600vMkHd2Pfi#7EkJ98T-j3C35HuP*?q3+=(2UQ_ zAufFIyh%^f3#Zz7`+$F14&!$h-y zBd>1tE40B&&VfHnbOD$2Q!ECl5oj|1EoTqzvP8*(Vc}5myTsHT-Ip&z z-37T(S4; zxonEbd;KrsBR{_#b)kLxAnJMqgWMEAT?py}IeUPaGMlO1C6`X7YQ>JnyYhseWdDsX zmbT_f%{T`wRLd!y55m`PK5C1Hxo=KBZio`cZ^rr|iAV1V@7Igw@BIYkIk1f@FH+~M z*_wl*Lxu2No3QeZ_vF_wSnecnwoV3*+?iBVPy${S~VU>+pYn_PU9eoCmijrvpNKpy&as zXffm~BF`)e84Pe@x+D<}pjYbOrc#m+ZavLLdwvlfb9dhbmd)Ux0fL?Ureo;LWi)Rt z_@PFH31^xfu75x(Byrd{LSLQ3>`t<<$Xg@Qv=vj#Ep&0EY0?S%4f!}FySO*A4pZ)HCec%4V zMn>vvV0kzCzYrD^*m&pdN5Fke8=E#k5^l?$XE8%_$-M7~ue3Q-$s^+2R)<8j@|g8U z^%Z~y(78|#vsu<~3#8c9Afo@;_&V{8CKpF zxXsV%YN5Gsj`I4Fv1Te%9F!lJUSj(`7s(vZ;{l6==1xAX0Rnz61kTPqlFQm-lVZu& z%CQ$T$Y#r&vZ+{MW~g8|B$b&>Kr|-VSn^K>gY0n8L#EFmvHOg3jMK(zD_o-f_3^9a zHpB`*;!sERd-84Ju-n(e>f}IvFF;+y9Y4A|LIJ@QXI4)_bHi-S9nS8rVCJRJKZuin z@i@RBBB7w9QRJOikiYb~Q!8krypEM|p=YDCDKh$q#i@Vid3=gRj?v?gRVPIMpp^w> zSGe3jim2c|;Ng)rzx<5eQmEMMmxcFHAt{x!?@n_=PG@212krNMz#=|R?w)nN`{Q9a z-2@-RcMUArU*)mL5Lt9rixmQz+p9BOK`nE=HPuj8&c`6TgPuL>4%rhQ-w^LT`zfgK-IJdsi5# zz{!FM*PUe+EgxXHSBZuKCT{@~xOmt>>8&pkGkZJB`IKH_5eBT+y`@ER9$mkpgrc1V z45$?1+67#ca@ugH0%SC2Zz6nJWRObexFya+Qo33u(9osEmal6RYza|@Lp-j55hHqEo(hM$x zhLd{>8Dv<>1TjY7kTNzF%Eyi^C?XPjXC($^@=4H;D4~i}Ao7r?!yO!lSY$#@pr*Hw zNkO`RLvV^DkWK)0n^m%aQ{BEygaRNm-OJ?_DB;pgF&2d|tax9KW;dy`slbVWD%Ukq zK9h=J5@H^cE12ekcSFz|~*?6QoD>U^FnSk=i)1Qqr0Uk^L>J&;rZ+HAAoi zZl#eB`(cg%MoY18fwO2gm|s91(nmtez+&{uSf~jkQ8`FPmY~N#GLzXMK`4n+k)>w2xk3%Kzs?pLt!iz1nI~Jy+o0<08DygmjNXl1Q|K8 z6+RD!(P=PD8C=yagS;4f5;H1QKSls@;C&z?;nqan&fp#=w1dxVz*|rVUPd3m6&x1X_#+CQ&ywszu~Vq*NnkDO?OsQ@zD7_64x)KfD_K1#-da<6y{QFc*+UMF4c*;p@B%oDeH|p^$A8Yh7E$|Guy=`VwCiLy@Jf3|AnzU;>JHL0Q5Z?y^ghsYV3tfm5@2Yu3@K3yhZ4`U_s$jlzHy*si@RK~1^ z?NNLb>NJhmGsl@og8=);OY~WW6j}P?+lVMty1sWQLib zz8*)1Y*1LYd_*Q=ULu1!BCrcjRYSxw!n#v@2o=2oZGRykqlFleKCT-DlF39NhJ-o2 z(9ixx^?bs<3bM4L|F2{*W%19SynliE&V_=CCJP+{6AK#$7Z0C+kVv*1xy15FNXaND zsi+kwR768dN3WQHk%ZAde56-iarc)ZBuf~w70zr*%mc*Lwiq#xeHSOGr0 zb3DaLRH-%IWLxZU$ni)jzs}Tmb-AwfieA&}dsA=e?Y*n_u7vzZe(VRLZ(9jDAAg~< z{-(~=#k$(dkGQkKjyzQ`)$g9TN+Uh6(FO&9*7@)=wBO=IbUWS1Wr7ZL3;5In&{ouKr^jC~kC6N*wp;O?) z3D7S;P+b2CTv%oIF)ooGAILnNYNE-vh3pz@2_Ax4+7TexkKPf%YFRomh!yLo0K>jA zcX`b>42T$gVRMZytzMGx+X|FM#wHD#E(Iml{*pw z7WQ zIZj`BRFq{Z4eVMa#dW*I~SqUlfrfocRB3HkDq$pXxlk!f8y-9NoqE^A3>wv;wqSRw&jw+~g zG6HO4qBYgc3kdN@iLA9GwoR(d5Z3`k3v4b$-t;j$bRS7t=AB< z*o!nNAci4QlH@U)ksB2TLq{Om8nakk<&LpTD&E!F@)yP8HQ2lW(B_8N*qG|~tuaw{ z`(TY&UAK-73hUYBcTLLCMQ{Lg_@3LpTIQ8*3aqN@D&ny%V357wgydUpRP-2;zl>Rv z$XhnFqF zS^@8V3-rySqivp+krj`4oGzUaPcDl0UV9Q&O{_{d6nu}>yXqLD06QELrbtrCNRBEb zPl*&LCq*hqiK?VbHBzDac>@Uct`z0Nw;-s9uPuf7d50NYW6#HNM_t>V&pWJ&HO_{P zQ;5~!9WIM>gBtLm4hjuWXo5lu6xyKB0fjCo^gy8xni&JNw~~oHGA(H2tTy&!%vu<( zdWKs#!UNNEoC27^k!eXA(y6zfDU9Z1F1Sw@dtf)%I^wihc$)9R1JzKSH_dFYGYh~| zrO#c&+HxVg@)E>QqfJ^GIREfk(7u$7vXJKWyhE0N8Z*^Rf|{7mE~C0yFN?L3k1-Sd zqZL+Bn8c0>GeS~J$-c|8efwAmVb}DyoiIPHq%?nN-Ej>B&UfMs@^2uIS)`mxnw;$A zu>o~nffHD7KqX42C_+GX5^w!U#huHrPkKSkKIIE5>U-H~29XKv?$XFGzrwfiq zC5Ukla;Aa&CnFgYv6pKV9!mmclPuG;VS>%zl+2fagq22YgeJD~@0f6>71j?oL3Z zddf6}XY;+Aw*)QNW}qvM66WudwqFqW&?Ac*td`|AWM6X!qCo^%+Izy#o4E$mT9qu# zO*+TlJ^kGD3*Rf&ZtxA>2iKyqrU&49U61x{#c8Fe#J-h$1> zr?8AqMI{@elSe3qj(ao5{rL+q3t-d-`><=)vSDnfG+I@W9G?e8fe1gz*uBxp7Bwkq zKAdXon2(Imy2BTxZcELRa+WOwAe2b^6&g=ub7NJXyT%?2-b+cic~ z0(Am|A~9tEi$>UN(5Qn;;>rLXjorsS0Z9%52}#%kAd(_t2n9`OG^NpuCUSY8&;r+_ zlmRLlQL{m(4K7J519WKAu1X+FJ-E~dSsK8lAzT{4r7>KZz-LWSXv2EyEM<`Qo;e6& zVer5T#PG5T0A5?IK~UFhF9>2YnHYhv^)RsWFxq|vA~^tn_Z&g+oIoV!$;66+i-(1) zhlQJmg}ahT9$t{A7yJcXIe2?G_;@(@dN}wgOY--E44ru~^NwG0R@;PPb)=r{&_S%R zs(wPPOJ%EH4b(0!4nUy6ha9i+MEs>82bNW7?i3l2P2O1Y~_ zBG-??&bBS5!!&G~)+nYy#xHr3)&tKiIDX&vY_lgRjQWqrWZTivv}l^DVHJ@lYF$f_ z)%3M}Yg*F!enh3~9P=^Hz$i8C6@mb331l>akR}K-8m$`UHpTPdQ#MCIR=I~Ft5{3S zN;(IYuW1%y)?yB&@mzViE)*fhXa<)2eayJTmZoW6a=Mn_SkzrrMGf~eZjeQsJk_d& zAfVVd+K>g!Qr{h-5Cl~u!62dTDHBt9t1Co(7FKrYguMU{bu|OP#~%|G(gL66nL9LN zED-zrech#*cn+*fDEN3)H?a$cIut&aIsd6intT6lha3Kud{e@8eNUbF*%PYz?3C)< zU_Q0>TG-m9vb^ov3q!C#ekSfktG=WM;y#zA$30S}a9a+2Y}ic{+lBRGdx2(}b1=A8 z;rE-Si@aoLWF{uq1XvGivM5aCv%zo8CcKvYjjqtfqcetz4Z&};ddk!GGzvvGyk*3s zqM2SHSj;(cWVGg`(aFR#)kt&>zT~D@uR;OzpKsQ3{S0>GFYd%k|y|gtOUd_7KlCW+eEzfhz zLnt6fZ0fKp2N?N*9a2B6VXduPnkY^tPG`pr?F}>Yy{+c`^NVeZ=4^mTLbz!YB{q6> z*Xyo7CfuW$EfdX+Q^dW`-M&-ZDZsQ1*Hx~*((HgmX*32DEabPFW7m7Z@{e2zu2aOD=UkZ$ej<+M>G&4S_?pEW zE;wH_Smf$n?e#mpGfv%e3{uxInR&(772kEA-I(Op*Uvjr`WQ(Jn4cT~phT8Q)AP8N zvSrOL7xy)WFN2b8^&x@x%j2G^z6t}eNccqk0Q9K^eAg@rVyEw;*gDxD8#fM@h_<%3 zRXrkE<#ltyK2X(bq0vQb**0CsDt9cUH>~*h0IS(c!xTYCCWREWZSmEJO@F7rg%f+@ zi|be1v>mGU_Scvaf8i6(aDcSohPX}>`yKVfw+X^$wU4fsZY?pI2y`p%`v)9rsbOeK z%u+R3(lr>V_W3JVfu2QqoFkj4_b)i)oq7Wjy?0U6y(bhdVA?}$UsfzijRI!*tfMas z!%`InG$+THB`_a@nn0gLP!}6F()mo9XZ!;rSG2TiP(WEH*LM@!7;C@vjIJNA!gX2Z z5qsCv#akhj`I-;*2Kr4Dayw6S_F7wB1T-<7VjP7&3KF79P%=Ud&4EHn^HA{TvMoSA z(6L*X9|LND1qFa6qzWS)!X%Vnq^D@u6qd;)<{hD$k2Th^Dz>OVjhhaM0#Z2 zk%xcPKyNNrThv`tWGfFbQ>+E_AD}kl*VoUsC#Yel{tke$yVy)BDcR21#BzlqQ{D63 zoQq0cum=2hp|*w^E0t;{A~@I5sW0n)Flnn@abKtAr6pDq1bYLpmZTlVxYrsIs-*m$ z9U5b`#E@pCVvbPW2#uJUM6kDGkZip7i)_PE=p%zgQmB;qPD`k$P1HMv9g=C8MecQT z3^6Jv`^{BgbmK$f>DHHh{!Uqpdt%E347CJVBeEGE=^>I+INp;PV|{I6?XNJcIz$ny2vAhJ~?n@BIQPY zbFzvD{0$>LP)Dw+0?kKgpS;;Bn0IV)X=VolMV@XQzFD{N)~n9Z3^tBpp~(}Si3D?; z$RMgPhG0Yf;2)qU!iw~QEssZFR(Hp)QHZ~Z&vbxjlmQ=3{$w~?8w(ix-{ zsiNMggF!-dh-T_1${jEj4)d9BMKMB1ey99_c+UswwrjTJc2=20(T250Bu(@+B^xLT zHM$;6sj72_#r*aEK)h|?Vv8>vQG~_R;&9n!zNu0CyJbky#U||Hg+59ZKt^C9no&@=bZVQz7R0)yC1!C6vcY4pAd{tGEaLdw<=v+QEe2EUAtV-ziQe7k||V{b@1^rTpI;~ z&t&xVXw%vOsz&Lfw=}<)(M^VFpsvrinRw9An)S(tvvy#Zo!O&N*{Ly9ZN!p5SBOj% zp#aTaV*Zv1nCXtGu|!DDC<^WsdBGqttJTkS*rfu^9G2MDo3lP%hGHPV%v-gtjTZy; z3DnG)?tYKGO$@{z?c5vcyF!=Px=k}+3Ee~i%$bR68#07@^BBd5Hi_bPkr$16(@IHM z7w|TwT`my!K2+vSyb6w{Q6o%~82rRUW=-6QYjhL$?x$7MJMSvW25NNOoBEqrEF(Bg zh8wZgIdWQ!-n4>?oNi#+>z8F+=(;|`Q(yp1F&KX7Sg%bOvjqs>whjPSc824XCW9#Y-@7pG2ol98}`e$3*(Mx zi)2}Ulm=#9{&B0bB+!97|0;63w9AP6%7ny#kgr3!TNYvY0J9#8ev1^}TqF}PFPl8w)~>s>4ldrR{qk%r@e~h0-$@hcMBr_reB15)_(}0L>D{{k4m)~LE1K`4ogY6Q zvgRfgP>ClHyjcXGn%cW(?iD>FtRt2jPa(iy^R#<(t?uJ|c_JAJiN(%KBPjQ~& zmjP>7m9?Fxg*`px9{>Bly*=RfLpv8vW}Bs_OL86xE*DrUEMI6v~bM z4OXcUbQp!%(D7H{vkJ|9w#vempPw<)G^Mz&C3T~CKg+{TAz5isHm%r@uf`{SQf5!+$FcDM(nmlL%!adf zb+qsML0owlwmP#?KZ{9^o0Tj=3$IM)<&VeH4q^6e4-}lixFSgu9G@N`SH+P%RxF8V z<-I%i0K>ZVJ7<5Jtup}RYURP)xpO@Dt5qPSjjT0HWOFex*@2pb*C>^NwE#9Yl{ z?33w>+kVu`_A#>WHzhh9$LeD;k}8n=yHV#eR)LipNVJah^jo}JKeyf<)t;V#c7>wgCXkX3(aXY__R3sZ4=?ZSB_!sRd65kz6k%rOhs)}g-OM8e8?u5W_Ysh#xnN#M)VOFq*gHD^YZ zTZ^*43zILIW)MvnL!+C-KKbOZSgNv8Gk1Ayr6zmdda%K{*sM_xD|c)qBY6v-`^AMh z#T7-l67}AZY=Hn8fx5Z01H!b|=~C^l2h24v6L(IlA;Lf7aq@ryXXO;Bh>vDSE5u|y zLU&H?cXyi2^Fj!HA=I|B%22hrW;1LU`&0kVoGrb00_s@sIB#-95@biO=N8C~kYb98 z>!I_irFfIl_c3`PQF*@Uy-6;}XQz%bE(j-gdk>@3wLQ@)!yAr5eN({UOAGUOk z%vRtX$*Jn5Q4a5&#?nO&_Q8x<;Bxoaj2G5B~<_>q01EI;7#WAJP4 z+L?!6m-i4Atk^zwqr>B}^`~X>vdOU$Zz`v?Hwc2C7 zsgrI|DHlpW>C+QoPbY#hrh%5WIwR1HXsuwEp7H0$5mIIR zkAh+bPn=Ql*69VISL&SZNTQI*Bxe=vuZWT{>Ktg1vDnycrwdGF{29^$4g1y};dK}xc8~mMWNR=UT)M91W z{4s{#2s>&rLYa3P;s#Dl>MgAiR~pll{4%eKhv36}K&sZ31j6cEq`viC!Rn=z+)Ida zs42A~wQ0_(E7XX~ysbk>+|=B9ZZtyB_>6k3kHQm$a zK2&NTsQ+H*kB;WeJqI_LZS!sxeRniAgLMxrNcGTMBYc3?vu5palxbM8sE2j{HqIOJ zNq~st4NQIJ@IxQCX*qjTFMysAS5q{)vS_A=3NLcxAd%xZ1Ancn7@+9Vh5>V zb4z#4ZX2_k!|uiy{@tj1Xwf3@xr5r#rw=cuDch@c=u)pMd`DZI1(+ku7Ess9WO)dj z>?tuQHxY=-3QY6H@iWv%NrJ8_R}~AIrpnh&dWQl_{r~D2JlH)AYI*ZEyJJLFVxH33 zwA(?!XcBwgYMHsOGq@28Tgv7rU@?TchvqK=Q=57`qwL~hYmI_Cxc#WqF7<5^%K+qB z>s+%U_i*dyR$#qvtpc-bET)PrV25kb!_3-!HQ`^yQkl=HsA+QRrQ@Ret*I*SDE>OO zqSt7483ct8qYflW&1KQKGF9d-b~qjXDe~gS54EW3OFUC1hhk>9C}wd8Nvg%_u*s8v zzsWxdAkNR9Ha!EM=;oXas$y&9F)9Rf?){ zTh5nQUqR!I?ar~#hJDYvp~UVjIoeVe1kD|qJ2X~R+|*OaODFGX-4A1V=7Zh34Z zMMZ)N<>B*o){4C zUPVGhBIeZ_=Ai4=cvE*>a&Wo_Bo#Rf+*xf!LLZ(L8G~2skJZ0S2r(ECGZmke7|lpb zuH9>hjiB5tE;xejTw#(_MHUVg^cxF~+>~nE#Z3Cz5ovctE z*tNsA5p2X?(kJEI_aZZ=`G&lRO5XH#*2#yx!>H^2Q?qAfxEBQ@kmbx@nQ0GW&@g2L zl#p~WSqhQ`H8NFNNoNEY*?;~b=L?1>&905^R#5}hG-XS?XY_!ZM2*KRG}`$J zm912w>c>JSj-+v)y5iBD%PXWo_H?;?w%KW)rlMo4%6Wazf4<4y2w3u@kg2#Ww~Z<- ztIEr<%|ZEBeAP2FC?ytKw|sS>cb@Og%F9MLnjqIqE7|b(oYcq(stiN6veF|fRJzc8 zGnGmk(Ms;IsaNnof4}z&hZZ^gowYI!YHZLatEK0vsIfn;AiZpDOX}lloE0WRWdavR zH?P#BRmlHILt{6cds$RSC_WogsMdU=K#@X!cscxTMKP5=)J#<84vaNwu_^W`v$eCw zfH6@Mnv}F{NG0Wv?+`d>zmsU*qbE*S>l^l_2GybtKF?Z1M2>7b4&bb8n8~Vz7J({K zoF4YV+fN|0Q&mD6ljtCk@EZO5tB$yeM@^A9K<%Md6n+`$jtwS{Q(fif2p!S*N)jSS zo+n&9l%74Jx{93q`{VQV#kykM)|Z7k2}qg0=eeW4@{iA<_4NwZui|k7XZWSA(8-&~ z8Ble#`U-%u#hQ-P7=*}>rPc1 zh6uZL4U+an^|J~;9S>^ow~CJAlC1a^2Gop2uaipPa z21f#)0H}4$y6q{cNA`26G|q-EQqq>M=g_FzslriWVOksdQFD?-Ab@p6p6l@|fyjK-J*x5x*^RHN@JN^-H#rjIVETTy@H_uh#gC!Op6N;!F z(O?3_`0*6Pew67e_0K7Xt`NY}9I1{#elpn`1SA7NCbKon%E-4A8d3!W14)25<89TE z5lvRZDn#VNgy_O|Y}K9YEJ&bU&GBCB4RsyefUR2#LddsOn>=mbUp+T_0CX1u-DPYu zF7nn_J9mwMo49Km9B964^^u>ZP`a4f5iGS~EhWGfv*_JQ+pm}=-$gwf8+W*ux$zKv z0;#q95ifhspV|dA-CgV5jPA&c+VWW2;$Vx|Sm@1B1R4Y61yx<1#!gR{2hPU|@tpGc zAE8(jo)_g8u5DIwGet0x<#La5zln7XyFj74+)Z{Kh7I*i%d2YCWgZ$bD#4v$%rLF_mB66DpRp~@w{)B$$^B$^R>S@i8CYk)V{da4 z%Lw$06Z^9oc0WmS;}rC_P7C`p_%p(76UpYGp z3j~l~{New#hQ!-uUif)kZvt?3{?M}^@aq1TMkV86X~rOvMu5n$U~K`~*<%H{S((vz zoHRp0HI^64GLpCq1Q4nd_+6&*xTj(2HxI_s=q(R)*%Lv=GHBUdkNLM05NDaHg5|P| zthT8GoEbIJ^j5yraTNjuTKr$mdd-L_G}WwSnhzn6p8BvavNYyvH3Q*0+|ZzZC1C~s zvtgx#(4uLse;i=3a@|9{_^PLxw!boe2Q^2Ho>Ac2U5*K*K*2IIvWQfaLa8C^0|vNJZ13RGwel`n*PheE~c zg!XeLDMTOUTLLfne{R|-g%p#&@i8`$k?mqy4iJKdLkOTS}(zoh908lUhW;qjdUZuZ7F5p%1t2M!E zkuJMKC**ZmXirC;;CI_x#MnGZi1%&cc1Gf6~4~UsJ zAq^QKeT~He#qAg6*LnpBV)o^&DWJH1y+51ZI~L5!GJFb%^VlPHzS}ejFKJL6DyWH6u8A%3K~me+Y^I^cj}OkYL3`Dq3xS zUS8_~btoUc?*9yjrRykKn!-}`@UYVunQ|r348rO5AJA(*Ity@)<|qcL4O_;%QD<2) zY(Nx>Rn*|71Z8jrYzb{R>et^$tMxj^l^`9nXa%tn>A3iT=a=*56Cu(I!y|;VKTmvw z@A^>_wIECg1Au2?KmH7rfHHt&G#qG%1h6f59s`N9Z48X=voSa(KaRo6O3WAnRdn+r zv@x{mfEGMeI$6J_)~U-lqcv;Pq!(YBAR)Ju5)&(wnQ)2C=hLXy1LGYTw?$^5o(E?x zDpc)i^RkeI4v~;S0oV6czd%sN{6ds#H;(=Q`!u&&HYV?3wSFCIVBPGE`n2&Ev2vX~ zwU_YGl3FiE%~E=EitxoOATybhK-Eb_T%^vJL{{R(8}E(0q0jp`)~PAhcOapT0q}yf zC36Vfu%tu@ib#yo|CYzYI8{S3uv2{kBjP;mQb>sS(zw8b`c}q zWqI}|(Icoo%XzQmS%6|fNZ<9dnUyoZqp;UA{4gV_NfZAmLFm5|eCL89A)}z8p$o&n z6pkeV8wVFpq$ts1#EQe0C`qyu0;$pnrOP0aDN8mn38@@1x$@*IP^d_;QA(6jP*Tw- zQ?5cKEgd}rBNH=>g_Vt+gOiJ!hgX$qKK{U9kr}SL5FEJZX7CUJLckSQU31Be5Fr#I zL1c&mQ6U;chr%F6n2tDV$T1%q9PR697K@b`87R%k@18Yi?|oa&+}Hw{>>lu%_n3_F(PJ`6#Nt`0$e zVdM667!VJSrU5Md*nBWr3&X?YWO#~TS1HorDI&lFFbZ`;84eT_6+glOnwMmpd*ME$ znCnhRh^EDlqhO1f>8t3&+ewp?=v2^<=Io&TCcf@{Fjiv@!SwVG`7mp=@P$dv*MtxP GG{*pT{>~Tx diff --git a/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 b/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 deleted file mode 100644 index b3048fc115681ee6c1bc86b0aa158cfbbf59daa3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9644 zcmV;dB~#jWPew8T0RR91041yd4gdfE06`=G03}%f0RR9100000000000000000000 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 diff --git a/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 b/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 deleted file mode 100644 index c5a8462fbfe2c39a7c1857b9e296e62500a8a8a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5468 zcmV-i6{G5RPew8T0RR9102N#S4gdfE059|a02KrP0RR9100000000000000000000 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 diff --git a/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 b/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 deleted file mode 100644 index 771f1af705f5cef5f578b3a1e7d8eff66f9b76b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13568 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 G0ssIWa&&r.push({kind:"text",text:t.slice(a,n.index)}),n[1]!==void 0?r.push({kind:"bold",text:n[1]}):n[4]!==void 0?r.push({kind:"code",text:n[4]}):r.push({kind:"link",text:n[2],href:n[3]}),a=s.lastIndex;return a{if(r.kind==="bold")return e.jsx("strong",{className:"text-primary",children:r.text},s);if(r.kind==="code")return e.jsx("code",{className:"font-mono text-[0.9em] text-cyan-200",children:r.text},s);if(r.kind==="link"){const a=r.href??"#";if(a.startsWith("/"))return e.jsx(x,{to:a,className:"text-cyan-300 hover:underline",children:r.text},s);const n=a.startsWith("http");return e.jsx("a",{href:a,className:"text-cyan-300 hover:underline [overflow-wrap:anywhere]",...n?{target:"_blank",rel:"noopener noreferrer"}:{},children:r.text},s)}return e.jsx("span",{children:r.text},s)})})}function g({doc:t}){const r=t.lang==="fr";return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:t.seoTitle,description:t.description,lang:t.lang,alternates:h(t)}),e.jsxs("section",{className:"relative py-24 md:py-28 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex flex-wrap justify-center items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:t.badge}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(o,{text:t.title,className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:e.jsx(l,{text:t.intro})}),t.version&&e.jsx("p",{className:"text-xs text-muted-foreground mt-4",children:t.version}),e.jsx("p",{className:"text-sm mt-4",children:e.jsx(x,{to:t.twin,hrefLang:r?"en":"fr",className:"text-cyan-300 hover:underline",children:r?"English version":"Version française"})})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("nav",{"aria-label":r?"Sommaire":"Contents",className:"card-surface",children:[e.jsx("h2",{className:"text-sm font-semibold uppercase tracking-wider text-muted-foreground mb-3",children:r?"Sommaire":"Contents"}),e.jsx("ul",{className:"grid sm:grid-cols-2 gap-x-6 gap-y-1 text-sm list-none pl-0",children:t.sections.map(s=>e.jsx("li",{children:e.jsx("a",{href:`#${s.id}`,className:"text-secondary hover:text-cyan-300",children:s.heading})},s.id))})]}),t.sections.map(s=>e.jsxs("div",{id:s.id,className:`card-surface scroll-mt-24 ${s.accent?"border-cyan-300/25":""}`,children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:s.heading}),s.paras?.map((a,n)=>e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3 last:mb-0",children:e.jsx(l,{text:a})},n)),s.bullets&&e.jsx("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5 mt-2",children:s.bullets.map((a,n)=>e.jsx("li",{children:e.jsx(l,{text:a})},n))}),s.table&&e.jsx("div",{className:"overflow-x-auto mt-3",children:e.jsxs("table",{className:"w-full text-sm text-left",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline",children:[e.jsx("th",{className:"py-2 pr-4 font-semibold text-primary",children:s.table.head[0]}),e.jsx("th",{className:"py-2 font-semibold text-primary",children:s.table.head[1]})]})}),e.jsx("tbody",{children:s.table.rows.map(([a,n],d)=>e.jsxs("tr",{className:"border-b border-gridline/50 align-top",children:[e.jsx("td",{className:"py-2 pr-4 text-primary md:whitespace-nowrap",children:e.jsx(l,{text:a})}),e.jsx("td",{className:"py-2 text-secondary",children:e.jsx(l,{text:n})})]},d))})]})})]},s.id))]})})]})}export{g as L}; diff --git a/assets/LegalPage-CFP-uSSS.js b/assets/LegalPage-CFP-uSSS.js deleted file mode 100644 index 7f6d838a..00000000 --- a/assets/LegalPage-CFP-uSSS.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,L as x}from"./index-DayaklK-.js";import{N as o}from"./NeuralReveal-uYarhiMA.js";const m="https://qector.store";function i(t){return`${m}${t==="/"?"/":`${t}/`}`}function h(t){const r=t.lang==="en"?t.path:t.twin,s=t.lang==="fr"?t.path:t.twin;return[{lang:"en",href:i(r)},{lang:"fr",href:i(s)},{lang:"x-default",href:i(r)}]}function p(t){const r=[],s=/\*\*([^*]+)\*\*|\[([^\]]+)\]\(([^)\s]+)\)|`([^`]+)`/g;let n=0,a;for(;(a=s.exec(t))!==null;)a.index>n&&r.push({kind:"text",text:t.slice(n,a.index)}),a[1]!==void 0?r.push({kind:"bold",text:a[1]}):a[4]!==void 0?r.push({kind:"code",text:a[4]}):r.push({kind:"link",text:a[2],href:a[3]}),n=s.lastIndex;return n{if(r.kind==="bold")return e.jsx("strong",{className:"text-primary",children:r.text},s);if(r.kind==="code")return e.jsx("code",{className:"font-mono text-[0.9em] text-cyan-200",children:r.text},s);if(r.kind==="link"){const n=r.href??"#";if(n.startsWith("/"))return e.jsx(x,{to:n,className:"text-cyan-300 hover:underline",children:r.text},s);const a=n.startsWith("http");return e.jsx("a",{href:n,className:"text-cyan-300 hover:underline [overflow-wrap:anywhere]",...a?{target:"_blank",rel:"noopener noreferrer"}:{},children:r.text},s)}return e.jsx("span",{children:r.text},s)})})}function j({doc:t}){const r=t.lang==="fr";return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:t.seoTitle,description:t.description,lang:t.lang,alternates:h(t)}),e.jsxs("section",{className:"relative py-24 md:py-28 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex flex-wrap justify-center items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:t.badge}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(o,{text:t.title,className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:e.jsx(l,{text:t.intro})}),t.version&&e.jsx("p",{className:"text-xs text-muted-foreground mt-4",children:t.version}),e.jsx("p",{className:"text-sm mt-4",children:e.jsx(x,{to:t.twin,hrefLang:r?"en":"fr",className:"text-cyan-300 hover:underline",children:r?"English version":"Version française"})})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("nav",{"aria-label":r?"Sommaire":"Contents",className:"card-surface",children:[e.jsx("h2",{className:"text-sm font-semibold uppercase tracking-wider text-muted-foreground mb-3",children:r?"Sommaire":"Contents"}),e.jsx("ul",{className:"grid sm:grid-cols-2 gap-x-6 gap-y-1 text-sm list-none pl-0",children:t.sections.map(s=>e.jsx("li",{children:e.jsx("a",{href:`#${s.id}`,className:"text-secondary hover:text-cyan-300",children:s.heading})},s.id))})]}),t.sections.map(s=>e.jsxs("div",{id:s.id,className:`card-surface scroll-mt-24 ${s.accent?"border-cyan-300/25":""}`,children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:s.heading}),s.paras?.map((n,a)=>e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3 last:mb-0",children:e.jsx(l,{text:n})},a)),s.bullets&&e.jsx("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5 mt-2",children:s.bullets.map((n,a)=>e.jsx("li",{children:e.jsx(l,{text:n})},a))}),s.table&&e.jsx("div",{className:"overflow-x-auto mt-3",tabIndex:0,role:"region","aria-label":s.heading,children:e.jsxs("table",{className:"w-full text-sm text-left",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline",children:[e.jsx("th",{className:"py-2 pr-4 font-semibold text-primary",children:s.table.head[0]}),e.jsx("th",{className:"py-2 font-semibold text-primary",children:s.table.head[1]})]})}),e.jsx("tbody",{children:s.table.rows.map(([n,a],d)=>e.jsxs("tr",{className:"border-b border-gridline/50 align-top",children:[e.jsx("td",{className:"py-2 pr-4 text-primary md:whitespace-nowrap",children:e.jsx(l,{text:n})}),e.jsx("td",{className:"py-2 text-secondary",children:e.jsx(l,{text:a})})]},d))})]})})]},s.id))]})})]})}export{j as L}; diff --git a/assets/LegalPage-CclXHnEm.js b/assets/LegalPage-CclXHnEm.js deleted file mode 100644 index 887379b6..00000000 --- a/assets/LegalPage-CclXHnEm.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as c}from"./index-abfjMTlQ.js";import{N as o}from"./NeuralReveal-D-EQoOl2.js";import{L as x}from"./vendor-PiU4YGcH.js";const m="https://qector.store";function i(t){return`${m}${t==="/"?"/":`${t}/`}`}function h(t){const r=t.lang==="en"?t.path:t.twin,s=t.lang==="fr"?t.path:t.twin;return[{lang:"en",href:i(r)},{lang:"fr",href:i(s)},{lang:"x-default",href:i(r)}]}function p(t){const r=[],s=/\*\*([^*]+)\*\*|\[([^\]]+)\]\(([^)\s]+)\)|`([^`]+)`/g;let a=0,n;for(;(n=s.exec(t))!==null;)n.index>a&&r.push({kind:"text",text:t.slice(a,n.index)}),n[1]!==void 0?r.push({kind:"bold",text:n[1]}):n[4]!==void 0?r.push({kind:"code",text:n[4]}):r.push({kind:"link",text:n[2],href:n[3]}),a=s.lastIndex;return a{if(r.kind==="bold")return e.jsx("strong",{className:"text-primary",children:r.text},s);if(r.kind==="code")return e.jsx("code",{className:"font-mono text-[0.9em] text-cyan-200",children:r.text},s);if(r.kind==="link"){const a=r.href??"#";if(a.startsWith("/"))return e.jsx(x,{to:a,className:"text-cyan-300 hover:underline",children:r.text},s);const n=a.startsWith("http");return e.jsx("a",{href:a,className:"text-cyan-300 hover:underline [overflow-wrap:anywhere]",...n?{target:"_blank",rel:"noopener noreferrer"}:{},children:r.text},s)}return e.jsx("span",{children:r.text},s)})})}function b({doc:t}){const r=t.lang==="fr";return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:t.seoTitle,description:t.description,lang:t.lang,alternates:h(t)}),e.jsxs("section",{className:"relative py-24 md:py-28 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex flex-wrap justify-center items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:t.badge}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(o,{text:t.title,className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:e.jsx(l,{text:t.intro})}),t.version&&e.jsx("p",{className:"text-xs text-muted-foreground mt-4",children:t.version}),e.jsx("p",{className:"text-sm mt-4",children:e.jsx(x,{to:t.twin,hrefLang:r?"en":"fr",className:"text-cyan-300 hover:underline",children:r?"English version":"Version française"})})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("nav",{"aria-label":r?"Sommaire":"Contents",className:"card-surface",children:[e.jsx("h2",{className:"text-sm font-semibold uppercase tracking-wider text-muted-foreground mb-3",children:r?"Sommaire":"Contents"}),e.jsx("ul",{className:"grid sm:grid-cols-2 gap-x-6 gap-y-1 text-sm list-none pl-0",children:t.sections.map(s=>e.jsx("li",{children:e.jsx("a",{href:`#${s.id}`,className:"text-secondary hover:text-cyan-300",children:s.heading})},s.id))})]}),t.sections.map(s=>e.jsxs("div",{id:s.id,className:`card-surface scroll-mt-24 ${s.accent?"border-cyan-300/25":""}`,children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:s.heading}),s.paras?.map((a,n)=>e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3 last:mb-0",children:e.jsx(l,{text:a})},n)),s.bullets&&e.jsx("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5 mt-2",children:s.bullets.map((a,n)=>e.jsx("li",{children:e.jsx(l,{text:a})},n))}),s.table&&e.jsx("div",{className:"overflow-x-auto mt-3",children:e.jsxs("table",{className:"w-full text-sm text-left",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline",children:[e.jsx("th",{className:"py-2 pr-4 font-semibold text-primary",children:s.table.head[0]}),e.jsx("th",{className:"py-2 font-semibold text-primary",children:s.table.head[1]})]})}),e.jsx("tbody",{children:s.table.rows.map(([a,n],d)=>e.jsxs("tr",{className:"border-b border-gridline/50 align-top",children:[e.jsx("td",{className:"py-2 pr-4 text-primary md:whitespace-nowrap",children:e.jsx(l,{text:a})}),e.jsx("td",{className:"py-2 text-secondary",children:e.jsx(l,{text:n})})]},d))})]})})]},s.id))]})})]})}export{b as L}; diff --git a/assets/LegalPage-D-Mi7GTG.js b/assets/LegalPage-D-Mi7GTG.js deleted file mode 100644 index 76156568..00000000 --- a/assets/LegalPage-D-Mi7GTG.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,L as x}from"./index-c1PDYu0j.js";import{N as o}from"./NeuralReveal-uYarhiMA.js";const m="https://qector.store";function i(t){return`${m}${t==="/"?"/":`${t}/`}`}function h(t){const r=t.lang==="en"?t.path:t.twin,s=t.lang==="fr"?t.path:t.twin;return[{lang:"en",href:i(r)},{lang:"fr",href:i(s)},{lang:"x-default",href:i(r)}]}function p(t){const r=[],s=/\*\*([^*]+)\*\*|\[([^\]]+)\]\(([^)\s]+)\)|`([^`]+)`/g;let n=0,a;for(;(a=s.exec(t))!==null;)a.index>n&&r.push({kind:"text",text:t.slice(n,a.index)}),a[1]!==void 0?r.push({kind:"bold",text:a[1]}):a[4]!==void 0?r.push({kind:"code",text:a[4]}):r.push({kind:"link",text:a[2],href:a[3]}),n=s.lastIndex;return n{if(r.kind==="bold")return e.jsx("strong",{className:"text-primary",children:r.text},s);if(r.kind==="code")return e.jsx("code",{className:"font-mono text-[0.9em] text-cyan-200",children:r.text},s);if(r.kind==="link"){const n=r.href??"#";if(n.startsWith("/"))return e.jsx(x,{to:n,className:"text-cyan-300 hover:underline",children:r.text},s);const a=n.startsWith("http");return e.jsx("a",{href:n,className:"text-cyan-300 hover:underline [overflow-wrap:anywhere]",...a?{target:"_blank",rel:"noopener noreferrer"}:{},children:r.text},s)}return e.jsx("span",{children:r.text},s)})})}function j({doc:t}){const r=t.lang==="fr";return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:t.seoTitle,description:t.description,lang:t.lang,alternates:h(t)}),e.jsxs("section",{className:"relative py-24 md:py-28 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex flex-wrap justify-center items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:t.badge}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(o,{text:t.title,className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:e.jsx(l,{text:t.intro})}),t.version&&e.jsx("p",{className:"text-xs text-muted-foreground mt-4",children:t.version}),e.jsx("p",{className:"text-sm mt-4",children:e.jsx(x,{to:t.twin,hrefLang:r?"en":"fr",className:"text-cyan-300 hover:underline",children:r?"English version":"Version française"})})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("nav",{"aria-label":r?"Sommaire":"Contents",className:"card-surface",children:[e.jsx("h2",{className:"text-sm font-semibold uppercase tracking-wider text-muted-foreground mb-3",children:r?"Sommaire":"Contents"}),e.jsx("ul",{className:"grid sm:grid-cols-2 gap-x-6 gap-y-1 text-sm list-none pl-0",children:t.sections.map(s=>e.jsx("li",{children:e.jsx("a",{href:`#${s.id}`,className:"text-secondary hover:text-cyan-300",children:s.heading})},s.id))})]}),t.sections.map(s=>e.jsxs("div",{id:s.id,className:`card-surface scroll-mt-24 ${s.accent?"border-cyan-300/25":""}`,children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:s.heading}),s.paras?.map((n,a)=>e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3 last:mb-0",children:e.jsx(l,{text:n})},a)),s.bullets&&e.jsx("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5 mt-2",children:s.bullets.map((n,a)=>e.jsx("li",{children:e.jsx(l,{text:n})},a))}),s.table&&e.jsx("div",{className:"overflow-x-auto mt-3",tabIndex:0,role:"region","aria-label":s.heading,children:e.jsxs("table",{className:"w-full text-sm text-left",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline",children:[e.jsx("th",{className:"py-2 pr-4 font-semibold text-primary",children:s.table.head[0]}),e.jsx("th",{className:"py-2 font-semibold text-primary",children:s.table.head[1]})]})}),e.jsx("tbody",{children:s.table.rows.map(([n,a],d)=>e.jsxs("tr",{className:"border-b border-gridline/50 align-top",children:[e.jsx("td",{className:"py-2 pr-4 text-primary md:whitespace-nowrap",children:e.jsx(l,{text:n})}),e.jsx("td",{className:"py-2 text-secondary",children:e.jsx(l,{text:a})})]},d))})]})})]},s.id))]})})]})}export{j as L}; diff --git a/assets/LegalPage-DvyIDT6j.js b/assets/LegalPage-DvyIDT6j.js deleted file mode 100644 index 21dd4832..00000000 --- a/assets/LegalPage-DvyIDT6j.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as c}from"./index-Bh9DBCb3.js";import{N as o}from"./NeuralReveal-D-EQoOl2.js";import{L as x}from"./vendor-PiU4YGcH.js";const m="https://qector.store";function i(t){return`${m}${t==="/"?"/":`${t}/`}`}function h(t){const r=t.lang==="en"?t.path:t.twin,s=t.lang==="fr"?t.path:t.twin;return[{lang:"en",href:i(r)},{lang:"fr",href:i(s)},{lang:"x-default",href:i(r)}]}function p(t){const r=[],s=/\*\*([^*]+)\*\*|\[([^\]]+)\]\(([^)\s]+)\)|`([^`]+)`/g;let a=0,n;for(;(n=s.exec(t))!==null;)n.index>a&&r.push({kind:"text",text:t.slice(a,n.index)}),n[1]!==void 0?r.push({kind:"bold",text:n[1]}):n[4]!==void 0?r.push({kind:"code",text:n[4]}):r.push({kind:"link",text:n[2],href:n[3]}),a=s.lastIndex;return a{if(r.kind==="bold")return e.jsx("strong",{className:"text-primary",children:r.text},s);if(r.kind==="code")return e.jsx("code",{className:"font-mono text-[0.9em] text-cyan-200",children:r.text},s);if(r.kind==="link"){const a=r.href??"#";if(a.startsWith("/"))return e.jsx(x,{to:a,className:"text-cyan-300 hover:underline",children:r.text},s);const n=a.startsWith("http");return e.jsx("a",{href:a,className:"text-cyan-300 hover:underline [overflow-wrap:anywhere]",...n?{target:"_blank",rel:"noopener noreferrer"}:{},children:r.text},s)}return e.jsx("span",{children:r.text},s)})})}function b({doc:t}){const r=t.lang==="fr";return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:t.seoTitle,description:t.description,lang:t.lang,alternates:h(t)}),e.jsxs("section",{className:"relative py-24 md:py-28 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex flex-wrap justify-center items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:t.badge}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(o,{text:t.title,className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:e.jsx(l,{text:t.intro})}),t.version&&e.jsx("p",{className:"text-xs text-muted-foreground mt-4",children:t.version}),e.jsx("p",{className:"text-sm mt-4",children:e.jsx(x,{to:t.twin,hrefLang:r?"en":"fr",className:"text-cyan-300 hover:underline",children:r?"English version":"Version française"})})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("nav",{"aria-label":r?"Sommaire":"Contents",className:"card-surface",children:[e.jsx("h2",{className:"text-sm font-semibold uppercase tracking-wider text-muted-foreground mb-3",children:r?"Sommaire":"Contents"}),e.jsx("ul",{className:"grid sm:grid-cols-2 gap-x-6 gap-y-1 text-sm list-none pl-0",children:t.sections.map(s=>e.jsx("li",{children:e.jsx("a",{href:`#${s.id}`,className:"text-secondary hover:text-cyan-300",children:s.heading})},s.id))})]}),t.sections.map(s=>e.jsxs("div",{id:s.id,className:`card-surface scroll-mt-24 ${s.accent?"border-cyan-300/25":""}`,children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:s.heading}),s.paras?.map((a,n)=>e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3 last:mb-0",children:e.jsx(l,{text:a})},n)),s.bullets&&e.jsx("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5 mt-2",children:s.bullets.map((a,n)=>e.jsx("li",{children:e.jsx(l,{text:a})},n))}),s.table&&e.jsx("div",{className:"overflow-x-auto mt-3",children:e.jsxs("table",{className:"w-full text-sm text-left",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline",children:[e.jsx("th",{className:"py-2 pr-4 font-semibold text-primary",children:s.table.head[0]}),e.jsx("th",{className:"py-2 font-semibold text-primary",children:s.table.head[1]})]})}),e.jsx("tbody",{children:s.table.rows.map(([a,n],d)=>e.jsxs("tr",{className:"border-b border-gridline/50 align-top",children:[e.jsx("td",{className:"py-2 pr-4 text-primary md:whitespace-nowrap",children:e.jsx(l,{text:a})}),e.jsx("td",{className:"py-2 text-secondary",children:e.jsx(l,{text:n})})]},d))})]})})]},s.id))]})})]})}export{b as L}; diff --git a/assets/LegalPage-OlrhtE5C.js b/assets/LegalPage-OlrhtE5C.js deleted file mode 100644 index a0690260..00000000 --- a/assets/LegalPage-OlrhtE5C.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,L as x}from"./index-PdoH5kLF.js";import{N as o}from"./NeuralReveal-Bsl9IGCr.js";const m="https://qector.store";function i(t){return`${m}${t==="/"?"/":`${t}/`}`}function h(t){const r=t.lang==="en"?t.path:t.twin,s=t.lang==="fr"?t.path:t.twin;return[{lang:"en",href:i(r)},{lang:"fr",href:i(s)},{lang:"x-default",href:i(r)}]}function p(t){const r=[],s=/\*\*([^*]+)\*\*|\[([^\]]+)\]\(([^)\s]+)\)|`([^`]+)`/g;let a=0,n;for(;(n=s.exec(t))!==null;)n.index>a&&r.push({kind:"text",text:t.slice(a,n.index)}),n[1]!==void 0?r.push({kind:"bold",text:n[1]}):n[4]!==void 0?r.push({kind:"code",text:n[4]}):r.push({kind:"link",text:n[2],href:n[3]}),a=s.lastIndex;return a{if(r.kind==="bold")return e.jsx("strong",{className:"text-primary",children:r.text},s);if(r.kind==="code")return e.jsx("code",{className:"font-mono text-[0.9em] text-cyan-200",children:r.text},s);if(r.kind==="link"){const a=r.href??"#";if(a.startsWith("/"))return e.jsx(x,{to:a,className:"text-cyan-300 hover:underline",children:r.text},s);const n=a.startsWith("http");return e.jsx("a",{href:a,className:"text-cyan-300 hover:underline [overflow-wrap:anywhere]",...n?{target:"_blank",rel:"noopener noreferrer"}:{},children:r.text},s)}return e.jsx("span",{children:r.text},s)})})}function g({doc:t}){const r=t.lang==="fr";return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:t.seoTitle,description:t.description,lang:t.lang,alternates:h(t)}),e.jsxs("section",{className:"relative py-24 md:py-28 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex flex-wrap justify-center items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:t.badge}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(o,{text:t.title,className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:e.jsx(l,{text:t.intro})}),t.version&&e.jsx("p",{className:"text-xs text-muted-foreground mt-4",children:t.version}),e.jsx("p",{className:"text-sm mt-4",children:e.jsx(x,{to:t.twin,hrefLang:r?"en":"fr",className:"text-cyan-300 hover:underline",children:r?"English version":"Version française"})})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("nav",{"aria-label":r?"Sommaire":"Contents",className:"card-surface",children:[e.jsx("h2",{className:"text-sm font-semibold uppercase tracking-wider text-muted-foreground mb-3",children:r?"Sommaire":"Contents"}),e.jsx("ul",{className:"grid sm:grid-cols-2 gap-x-6 gap-y-1 text-sm list-none pl-0",children:t.sections.map(s=>e.jsx("li",{children:e.jsx("a",{href:`#${s.id}`,className:"text-secondary hover:text-cyan-300",children:s.heading})},s.id))})]}),t.sections.map(s=>e.jsxs("div",{id:s.id,className:`card-surface scroll-mt-24 ${s.accent?"border-cyan-300/25":""}`,children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:s.heading}),s.paras?.map((a,n)=>e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3 last:mb-0",children:e.jsx(l,{text:a})},n)),s.bullets&&e.jsx("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5 mt-2",children:s.bullets.map((a,n)=>e.jsx("li",{children:e.jsx(l,{text:a})},n))}),s.table&&e.jsx("div",{className:"overflow-x-auto mt-3",children:e.jsxs("table",{className:"w-full text-sm text-left",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline",children:[e.jsx("th",{className:"py-2 pr-4 font-semibold text-primary",children:s.table.head[0]}),e.jsx("th",{className:"py-2 font-semibold text-primary",children:s.table.head[1]})]})}),e.jsx("tbody",{children:s.table.rows.map(([a,n],d)=>e.jsxs("tr",{className:"border-b border-gridline/50 align-top",children:[e.jsx("td",{className:"py-2 pr-4 text-primary md:whitespace-nowrap",children:e.jsx(l,{text:a})}),e.jsx("td",{className:"py-2 text-secondary",children:e.jsx(l,{text:n})})]},d))})]})})]},s.id))]})})]})}export{g as L}; diff --git a/assets/LegalPage-k7aoVn24.js b/assets/LegalPage-k7aoVn24.js deleted file mode 100644 index 93f81ff6..00000000 --- a/assets/LegalPage-k7aoVn24.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,L as x}from"./index-CCmwjNGU.js";import{N as o}from"./NeuralReveal-uYarhiMA.js";const m="https://qector.store";function i(t){return`${m}${t==="/"?"/":`${t}/`}`}function h(t){const r=t.lang==="en"?t.path:t.twin,s=t.lang==="fr"?t.path:t.twin;return[{lang:"en",href:i(r)},{lang:"fr",href:i(s)},{lang:"x-default",href:i(r)}]}function p(t){const r=[],s=/\*\*([^*]+)\*\*|\[([^\]]+)\]\(([^)\s]+)\)|`([^`]+)`/g;let n=0,a;for(;(a=s.exec(t))!==null;)a.index>n&&r.push({kind:"text",text:t.slice(n,a.index)}),a[1]!==void 0?r.push({kind:"bold",text:a[1]}):a[4]!==void 0?r.push({kind:"code",text:a[4]}):r.push({kind:"link",text:a[2],href:a[3]}),n=s.lastIndex;return n{if(r.kind==="bold")return e.jsx("strong",{className:"text-primary",children:r.text},s);if(r.kind==="code")return e.jsx("code",{className:"font-mono text-[0.9em] text-cyan-200",children:r.text},s);if(r.kind==="link"){const n=r.href??"#";if(n.startsWith("/"))return e.jsx(x,{to:n,className:"text-cyan-300 hover:underline",children:r.text},s);const a=n.startsWith("http");return e.jsx("a",{href:n,className:"text-cyan-300 hover:underline [overflow-wrap:anywhere]",...a?{target:"_blank",rel:"noopener noreferrer"}:{},children:r.text},s)}return e.jsx("span",{children:r.text},s)})})}function j({doc:t}){const r=t.lang==="fr";return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:t.seoTitle,description:t.description,lang:t.lang,alternates:h(t)}),e.jsxs("section",{className:"relative py-24 md:py-28 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex flex-wrap justify-center items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:t.badge}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(o,{text:t.title,className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:e.jsx(l,{text:t.intro})}),t.version&&e.jsx("p",{className:"text-xs text-muted-foreground mt-4",children:t.version}),e.jsx("p",{className:"text-sm mt-4",children:e.jsx(x,{to:t.twin,hrefLang:r?"en":"fr",className:"text-cyan-300 hover:underline",children:r?"English version":"Version française"})})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("nav",{"aria-label":r?"Sommaire":"Contents",className:"card-surface",children:[e.jsx("h2",{className:"text-sm font-semibold uppercase tracking-wider text-muted-foreground mb-3",children:r?"Sommaire":"Contents"}),e.jsx("ul",{className:"grid sm:grid-cols-2 gap-x-6 gap-y-1 text-sm list-none pl-0",children:t.sections.map(s=>e.jsx("li",{children:e.jsx("a",{href:`#${s.id}`,className:"text-secondary hover:text-cyan-300",children:s.heading})},s.id))})]}),t.sections.map(s=>e.jsxs("div",{id:s.id,className:`card-surface scroll-mt-24 ${s.accent?"border-cyan-300/25":""}`,children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:s.heading}),s.paras?.map((n,a)=>e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3 last:mb-0",children:e.jsx(l,{text:n})},a)),s.bullets&&e.jsx("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5 mt-2",children:s.bullets.map((n,a)=>e.jsx("li",{children:e.jsx(l,{text:n})},a))}),s.table&&e.jsx("div",{className:"overflow-x-auto mt-3",tabIndex:0,role:"region","aria-label":s.heading,children:e.jsxs("table",{className:"w-full text-sm text-left",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline",children:[e.jsx("th",{className:"py-2 pr-4 font-semibold text-primary",children:s.table.head[0]}),e.jsx("th",{className:"py-2 font-semibold text-primary",children:s.table.head[1]})]})}),e.jsx("tbody",{children:s.table.rows.map(([n,a],d)=>e.jsxs("tr",{className:"border-b border-gridline/50 align-top",children:[e.jsx("td",{className:"py-2 pr-4 text-primary md:whitespace-nowrap",children:e.jsx(l,{text:n})}),e.jsx("td",{className:"py-2 text-secondary",children:e.jsx(l,{text:a})})]},d))})]})})]},s.id))]})})]})}export{j as L}; diff --git a/assets/License-2ghqe3kh.js b/assets/License-2ghqe3kh.js deleted file mode 100644 index 02e6f2d4..00000000 --- a/assets/License-2ghqe3kh.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as t}from"./index-DRAXObZB.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{L as s}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function m(){return e.jsxs(e.Fragment,{children:[e.jsx(t,{title:"License · QECTOR",description:"QECTOR Decoder v3 license terms and token activation procedure. PolyForm Noncommercial for community use; commercial plans from $79/month, verified offline (air-gapped)."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PolyForm Noncommercial 1.0.0 · Free for Research · Commercial by Written Agreement · Last updated November 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"License",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 is ",e.jsx("span",{className:"text-primary font-semibold",children:"Source-Available"})," (not free for commercial use). Free for personal, academic, and non-commercial research. Commercial use requires a paid plan from ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"$79/month"}),", with a ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"14-day money-back guarantee"}),". The Workbench GUI is free."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"View Pricing"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact for Commercial"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Community License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["QECTOR Decoder v3 is released under the ",e.jsx("strong",{className:"text-primary",children:"PolyForm Noncommercial License 1.0.0"}),". This means you can use, modify, and distribute the software for non-commercial purposes free of charge."]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"Permitted (Non-Commercial)"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Personal research and learning"}),e.jsx("li",{children:"• Academic research and teaching"}),e.jsx("li",{children:"• Use by universities, public research organisations, charities and government institutions, whatever their source of funding"}),e.jsx("li",{children:"• Non-commercial open-source projects"}),e.jsx("li",{children:"• Publishing benchmark results (with attribution)"})]})]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl mt-4",children:[e.jsx("h3",{className:"text-gold-400 font-semibold text-sm mb-2",children:"Requires Commercial License"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Commercial product integration"}),e.jsx("li",{children:"• Internal commercial R&D with value extraction"}),e.jsx("li",{children:"• Company work on government, defence or university contracts"}),e.jsx("li",{children:"• Redistribution in commercial products"}),e.jsx("li",{children:"• SaaS / hosted API usage"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Commercial licenses grant internal use rights, written agreements, priority support, and validation packages. See ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing"})," for tier details."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All commercial licenses include: written license agreement, commercial use rights (internal), reproducible artifact bundles, and priority bug review. No redistribution or OEM rights included by default; contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," for OEM/SaaS licensing."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Perpetual licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Pro Perpetual ($1,990 one-time): the same rights as Pro, for every 3.x release including all patch and minor updates; a major version such as 4.0 requires a new license. Licenses bought earlier as Solo / Indie Perpetual keep their original terms."})]}),e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial Addendum: What a Paid License Changes"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm",children:[e.jsx("li",{children:"• Grants the commercial use that PolyForm Noncommercial withholds, for the term you purchased."}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"Internal use only."})," Redistribution, sublicensing, OEM bundling, and customer-facing SaaS or hosted APIs are excluded unless a written Enterprise/OEM agreement grants them."]}),e.jsxs("li",{children:["• Activated by setting ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to your Ed25519 token. Verification is offline against a public key embedded in the package: no license server, no phone-home, works air-gapped."]}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"The package is identical for licensed and unlicensed users."})," Without a token, a licensing notice prints on import (suppressible with ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_SILENT=1"}),"). The token does two things: it silences the notice and it unlocks tier-scoped runtime features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and a code-distance tier of 7 (Community), 19 (Pro, Team) or 63 (Lab, Enterprise). CPU decoding is never blocked; distance caps apply only when ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_ENFORCE=1"})," is set."]}),e.jsx("li",{children:"• No warranty, indemnification, exclusivity, trademark, or patent grant is included by default."})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mt-4",children:["Tokens are delivered within minutes, and every plan has a 14-day money-back guarantee on the first payment: see the ",e.jsx(s,{to:"/refund",className:"text-cyan-300 hover:underline",children:"Refund Policy"}),". A refunded licence ends on refund. Plans are on the"," ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"pricing page"}),"."]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"License Activation Procedure"}),e.jsxs("ol",{className:"space-y-3 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Verify the purchase."})," The fulfillment worker accepts only a Stripe-signed live checkout event and records the Stripe reference, customer email, tier, and token in the protected fulfillment ledger."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Install the runtime."})," Use ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:'python -m pip install --upgrade "qector-decoder-v3>=1.0,<2"'})," from the official PyPI project."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Activate both variables."})," Set ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to the same token from the license email. The first is used by the import notice; the second is used by the tier-aware runtime."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"4. Verify offline."})," Run ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:`python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),". It must print your paid tier (for example ",e.jsx("code",{className:"text-cyan-300",children:"Pro"}),"), not ",e.jsx("code",{className:"text-cyan-300",children:"Community"}),"; no license server or phone-home is involved."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"5. Preserve the audit record."})," Keep the token and Stripe invoice or payment confirmation together. Never send the token in a URL, issue tracker, chat, or public repository."]})]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed mt-4",children:["If either email is missing or the token fails verification, contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with the Stripe reference. Do not open a duplicate checkout or dispute while delivery is being repaired."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Full License Text"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["The complete, authoritative PolyForm Noncommercial License 1.0.0 text is published at"," ",e.jsx("a",{href:"https://polyformproject.org/licenses/noncommercial/1.0.0",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"polyformproject.org/licenses/noncommercial/1.0.0"})," ","and is bundled verbatim with every package distribution (",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"LICENSE"})," in the wheel). The summaries on this page are for orientation only; where they differ from the license text, the license text governs."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Third-Party Licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR depends on several open-source projects including Stim (Apache 2.0), PyMatching (MIT), NumPy (BSD), and NetworkX (BSD). Full third-party attribution is included in the distribution. All third-party names are trademarks of their respective owners; QECTOR is not affiliated with, sponsored, or endorsed by them."})]})]})})]})}export{m as default}; diff --git a/assets/License-4Bojqpc8.js b/assets/License-4Bojqpc8.js deleted file mode 100644 index 64debf7a..00000000 --- a/assets/License-4Bojqpc8.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as t}from"./index-DlmjLVYe.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{L as s}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function m(){return e.jsxs(e.Fragment,{children:[e.jsx(t,{title:"License · QECTOR",description:"QECTOR Decoder v3 license terms and token activation procedure. PolyForm Noncommercial for community use; commercial plans from $79/month with a free 14-day trial."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PolyForm Noncommercial 1.0.0 · Free for Research · Commercial by Written Agreement · Last updated November 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"License",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 is ",e.jsx("span",{className:"text-primary font-semibold",children:"Source-Available"})," (not free for commercial use). Free for personal, academic, and non-commercial research. Commercial use requires a paid plan from ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"$79/month"}),", with a ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"free 14-day trial"}),". The Workbench GUI is free."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"View Pricing"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact for Commercial"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Community License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["QECTOR Decoder v3 is released under the ",e.jsx("strong",{className:"text-primary",children:"PolyForm Noncommercial License 1.0.0"}),". This means you can use, modify, and distribute the software for non-commercial purposes free of charge."]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"Permitted (Non-Commercial)"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Personal research and learning"}),e.jsx("li",{children:"• Academic research and teaching"}),e.jsx("li",{children:"• Use by universities, public research organisations, charities and government institutions, whatever their source of funding"}),e.jsx("li",{children:"• Non-commercial open-source projects"}),e.jsx("li",{children:"• Publishing benchmark results (with attribution)"})]})]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl mt-4",children:[e.jsx("h3",{className:"text-gold-400 font-semibold text-sm mb-2",children:"Requires Commercial License"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Commercial product integration"}),e.jsx("li",{children:"• Internal commercial R&D with value extraction"}),e.jsx("li",{children:"• Company work on government, defence or university contracts"}),e.jsx("li",{children:"• Redistribution in commercial products"}),e.jsx("li",{children:"• SaaS / hosted API usage"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Commercial licenses grant internal use rights, written agreements, priority support, and validation packages. See ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing"})," for tier details."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All commercial licenses include: written license agreement, commercial use rights (internal), reproducible artifact bundles, and priority bug review. No redistribution or OEM rights included by default; contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," for OEM/SaaS licensing."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Perpetual licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Pro Perpetual ($1,990 one-time): the same rights as Pro for one named user, for every 3.x release including all patch and minor updates; a major version such as 4.0 requires a new license. Licenses bought earlier as Solo / Indie Perpetual keep their original terms."})]}),e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial Addendum: What a Paid License Changes"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm",children:[e.jsx("li",{children:"• Grants the commercial use that PolyForm Noncommercial withholds, for the seats and term you purchased."}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"Internal use only."})," Redistribution, sublicensing, OEM bundling, and customer-facing SaaS or hosted APIs are excluded unless a written Enterprise/OEM agreement grants them."]}),e.jsxs("li",{children:["• Activated by setting ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to your Ed25519 token. Verification is offline against a public key embedded in the package: no license server, no phone-home, works air-gapped."]}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"The package is identical for licensed and unlicensed users."})," Without a token, a licensing notice prints on import (suppressible with ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_SILENT=1"}),"). The token does two things: it silences the notice and it unlocks tier-scoped runtime features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and a code-distance tier of 7 (Community), 19 (Pro, Team) or 63 (Lab, Enterprise). CPU decoding is never blocked; distance caps apply only when ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_ENFORCE=1"})," is set."]}),e.jsx("li",{children:"• No warranty, indemnification, exclusivity, trademark, or patent grant is included by default."})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mt-4",children:["Tokens are delivered within minutes, and every plan has a 14-day money-back guarantee on the first payment: see the ",e.jsx(s,{to:"/refund",className:"text-cyan-300 hover:underline",children:"Refund Policy"}),". A refunded licence ends on refund. Try it first with the free 14-day trial on the"," ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"pricing page"}),"."]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"License Activation Procedure"}),e.jsxs("ol",{className:"space-y-3 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Verify the purchase."})," The fulfillment worker accepts only a Stripe-signed live checkout event and records the Stripe reference, customer email, tier, and token in the protected fulfillment ledger."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Install the runtime."})," Use ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:'python -m pip install --upgrade "qector-decoder-v3>=1.0,<2"'})," from the official PyPI project."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Activate both variables."})," Set ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to the same token from the license email. The first is used by the import notice; the second is used by the tier-aware runtime."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"4. Verify offline."})," Run ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:`python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),". It must print your paid tier (for example ",e.jsx("code",{className:"text-cyan-300",children:"pro"}),"), not ",e.jsx("code",{className:"text-cyan-300",children:"community"}),"; no license server or phone-home is involved."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"5. Preserve the audit record."})," Keep the token and Stripe invoice or payment confirmation together. Never send the token in a URL, issue tracker, chat, or public repository."]})]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed mt-4",children:["If either email is missing or the token fails verification, contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with the Stripe reference. Do not open a duplicate checkout or dispute while delivery is being repaired."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Full License Text"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["The complete, authoritative PolyForm Noncommercial License 1.0.0 text is published at"," ",e.jsx("a",{href:"https://polyformproject.org/licenses/noncommercial/1.0.0",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"polyformproject.org/licenses/noncommercial/1.0.0"})," ","and is bundled verbatim with every package distribution (",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"LICENSE"})," in the wheel). The summaries on this page are for orientation only; where they differ from the license text, the license text governs."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Third-Party Licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR depends on several open-source projects including Stim (Apache 2.0), PyMatching (MIT), NumPy (BSD), and NetworkX (BSD). Full third-party attribution is included in the distribution. All third-party names are trademarks of their respective owners; QECTOR is not affiliated with, sponsored, or endorsed by them."})]})]})})]})}export{m as default}; diff --git a/assets/License-BMVCbHh5.js b/assets/License-BMVCbHh5.js deleted file mode 100644 index bac7517d..00000000 --- a/assets/License-BMVCbHh5.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as t,L as s}from"./index-DayaklK-.js";import{N as r}from"./NeuralReveal-uYarhiMA.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";function l(){return e.jsxs(e.Fragment,{children:[e.jsx(t,{title:"License · QECTOR",description:"QECTOR Decoder v3 license terms and token activation procedure. PolyForm Noncommercial for community use; commercial plans from $79/month, verified offline (air-gapped)."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PolyForm Noncommercial 1.0.0 · Free for Research · Commercial by Written Agreement · Last updated November 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"License",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 is ",e.jsx("span",{className:"text-primary font-semibold",children:"Source-Available"})," (not free for commercial use). Free for personal, academic, and non-commercial research. Commercial use requires a paid plan from ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"$79/month"}),", with a ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"14-day money-back guarantee"}),". The Workbench GUI is free."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"View Pricing"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact for Commercial"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Community License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["QECTOR Decoder v3 is released under the ",e.jsx("strong",{className:"text-primary",children:"PolyForm Noncommercial License 1.0.0"}),". This means you can use, modify, and distribute the software for non-commercial purposes free of charge."]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"Permitted (Non-Commercial)"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Personal research and learning"}),e.jsx("li",{children:"• Academic research and teaching"}),e.jsx("li",{children:"• Use by universities, public research organisations, charities and government institutions, whatever their source of funding"}),e.jsx("li",{children:"• Non-commercial open-source projects"}),e.jsx("li",{children:"• Publishing benchmark results (with attribution)"})]})]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl mt-4",children:[e.jsx("h3",{className:"text-gold-400 font-semibold text-sm mb-2",children:"Requires Commercial License"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Commercial product integration"}),e.jsx("li",{children:"• Internal commercial R&D with value extraction"}),e.jsx("li",{children:"• Company work on government, defence or university contracts"}),e.jsx("li",{children:"• Redistribution in commercial products"}),e.jsx("li",{children:"• SaaS / hosted API usage"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Commercial licenses grant internal use rights, written agreements, priority support, and validation packages. See ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing"})," for tier details."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Every paid plan is governed by the"," ",e.jsx(s,{to:"/license-agreement",className:"text-cyan-300 hover:underline",children:"Commercial Licence Agreement"})," ","(",e.jsx(s,{to:"/fr/license-agreement",className:"text-cyan-300 hover:underline",children:"version française"}),"). All commercial licenses include: commercial use rights (internal, no seat counts), reproducible artifact bundles, and priority bug review. No redistribution or OEM rights included by default; contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," for OEM/SaaS licensing."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Perpetual licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Pro Perpetual ($1,990 one-time): the same rights as Pro, for every 1.x release of qector-decoder-v3, including all patch and minor updates; a new major version such as 2.0 requires a new license. Licenses bought earlier as Solo / Indie Perpetual keep their original terms."})]}),e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial Addendum: What a Paid License Changes"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm",children:[e.jsx("li",{children:"• Grants the commercial use that PolyForm Noncommercial withholds, for the term you purchased."}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"Internal use only."})," Redistribution, sublicensing, OEM bundling, and customer-facing SaaS or hosted APIs are excluded unless a written Enterprise/OEM agreement grants them."]}),e.jsxs("li",{children:["• Activated by setting ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to your Ed25519 token. Verification is offline against a public key embedded in the package: no license server, no phone-home, works air-gapped."]}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"The package is identical for licensed and unlicensed users."})," Without a token, a licensing notice prints on import (suppressible with ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_SILENT=1"}),"). The token does two things: it silences the notice and it unlocks tier-scoped runtime features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and a code-distance tier of 7 (Community), 19 (Pro, Team) or 63 (Lab, Enterprise). CPU decoding is never blocked; distance caps apply only when ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_ENFORCE=1"})," is set."]}),e.jsx("li",{children:"• No warranty, indemnification, exclusivity, trademark, or patent grant is included by default."})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mt-4",children:["Tokens are delivered within minutes, and every plan has a 14-day money-back guarantee on the first payment: see the ",e.jsx(s,{to:"/refund",className:"text-cyan-300 hover:underline",children:"Refund Policy"}),". A refunded licence ends on refund. Plans are on the"," ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"pricing page"}),"."]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"License Activation Procedure"}),e.jsxs("ol",{className:"space-y-3 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Verify the purchase."})," The fulfillment worker accepts only a Stripe-signed live checkout event and records the Stripe reference, customer email, tier, and token in the protected fulfillment ledger."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Install the runtime."})," Use ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:'python -m pip install --upgrade "qector-decoder-v3>=1.0,<2"'})," from the official PyPI project."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Activate both variables."})," Set ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to the same token from the license email. The first is used by the import notice; the second is used by the tier-aware runtime."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"4. Verify offline."})," Run ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:`python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),". It must print your paid tier (for example ",e.jsx("code",{className:"text-cyan-300",children:"Pro"}),"), not ",e.jsx("code",{className:"text-cyan-300",children:"Community"}),"; no license server or phone-home is involved."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"5. Preserve the audit record."})," Keep the token and Stripe invoice or payment confirmation together. Never send the token in a URL, issue tracker, chat, or public repository."]})]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed mt-4",children:["If either email is missing or the token fails verification, contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with the Stripe reference. Do not open a duplicate checkout or dispute while delivery is being repaired."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Full License Text"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["The complete, authoritative PolyForm Noncommercial License 1.0.0 text is published at"," ",e.jsx("a",{href:"https://polyformproject.org/licenses/noncommercial/1.0.0",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"polyformproject.org/licenses/noncommercial/1.0.0"})," ","and is bundled verbatim with every package distribution (",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"LICENSE"})," in the wheel). The summaries on this page are for orientation only; where they differ from the license text, the license text governs."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Third-Party Licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR depends on several open-source projects including Stim (Apache 2.0), PyMatching (MIT), NumPy (BSD), and NetworkX (BSD). Full third-party attribution is included in the distribution. All third-party names are trademarks of their respective owners; QECTOR is not affiliated with, sponsored, or endorsed by them."})]})]})})]})}export{l as default}; diff --git a/assets/License-BVQmOrwC.js b/assets/License-BVQmOrwC.js deleted file mode 100644 index 3e9584f1..00000000 --- a/assets/License-BVQmOrwC.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as t}from"./index-BcbVjARk.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{L as s}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function m(){return e.jsxs(e.Fragment,{children:[e.jsx(t,{title:"License · QECTOR",description:"QECTOR Decoder v3 license terms and v1.0.0 token activation procedure. PolyForm Noncommercial for community use; written commercial licenses available."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PolyForm Noncommercial 1.0.0 · Free for Research · Commercial by Written Agreement · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"License",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 is ",e.jsx("span",{className:"text-primary font-semibold",children:"Source-Available"})," (not free for commercial use). Free for personal, academic, and non-commercial research. Commercial use requires a written agreement from ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"$499"})," (evaluation) or ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"$1,299/yr"}),". The Workbench GUI is free."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"View Pricing"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact for Commercial"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Community License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["QECTOR Decoder v3 is released under the ",e.jsx("strong",{className:"text-primary",children:"PolyForm Noncommercial License 1.0.0"}),". This means you can use, modify, and distribute the software for non-commercial purposes free of charge."]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"Permitted (Non-Commercial)"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Personal research and learning"}),e.jsx("li",{children:"• Academic research and teaching"}),e.jsx("li",{children:"• Non-commercial open-source projects"}),e.jsx("li",{children:"• Publishing benchmark results (with attribution)"})]})]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl mt-4",children:[e.jsx("h3",{className:"text-gold-400 font-semibold text-sm mb-2",children:"Requires Commercial License"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Commercial product integration"}),e.jsx("li",{children:"• Internal commercial R&D with value extraction"}),e.jsx("li",{children:"• Government and defense contracts"}),e.jsx("li",{children:"• Redistribution in commercial products"}),e.jsx("li",{children:"• SaaS / hosted API usage"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Commercial licenses grant internal use rights, written agreements, priority support, and validation packages. See ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing"})," for tier details."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All commercial licenses include: written license agreement, commercial use rights (internal), reproducible artifact bundles, and priority bug review. No redistribution or OEM rights included by default; contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," for OEM/SaaS licensing."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Perpetual licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Solo / Indie Perpetual ($3,299 one-time): same rights as the annual tier for v3.x, including all v3.x patch and minor updates; major version upgrades such as v4.0 require a new license."})]}),e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial Addendum: What a Paid License Changes"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm",children:[e.jsx("li",{children:"• Grants the commercial use that PolyForm Noncommercial withholds, for the seats and term you purchased."}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"Internal use only."})," Redistribution, sublicensing, OEM bundling, and customer-facing SaaS or hosted APIs are excluded unless a written Enterprise/OEM agreement grants them."]}),e.jsxs("li",{children:["• Activated by setting ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to your Ed25519 token. Verification is offline against a public key embedded in the package: no license server, no phone-home, works air-gapped."]}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"The package is identical for licensed and unlicensed users."})," Without a token, a licensing notice prints on import (suppressible with ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_SILENT=1"}),"). The token does two things: it silences the notice and it unlocks tier-scoped runtime features, distance caps of 7, 19, or 63 depending on tier, and GPU batch paths on Pro and Enterprise tiers."]}),e.jsx("li",{children:"• No warranty, indemnification, exclusivity, trademark, or patent grant is included by default."})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mt-4",children:["Tokens are delivered instantly and all sales are final: see the"," ",e.jsx(s,{to:"/refund",className:"text-cyan-300 hover:underline",children:"Refund Policy"}),". The $499 evaluation is the creditable way to evaluate before committing."]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"License Activation Procedure"}),e.jsxs("ol",{className:"space-y-3 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Verify the purchase."})," The fulfillment worker accepts only a Stripe-signed live checkout event and records the Stripe reference, customer email, tier, and token in the protected fulfillment ledger."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Install the runtime."})," Use ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"python -m pip install --upgrade qector-decoder-v3==1.0.0"})," from the official PyPI project."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Activate both v1.0.0 variables."})," Set ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to the same token from the license email. The first is used by the import notice; the second is used by the tier-aware runtime."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"4. Verify offline."})," Run ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:'python -c "import qector_decoder_v3 as q; print(q._is_license_active())"'}),". It must print ",e.jsx("code",{className:"text-cyan-300",children:"True"}),"; no license server or phone-home is involved."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"5. Preserve the audit record."})," Keep the token and Stripe invoice or payment confirmation together. Never send the token in a URL, issue tracker, chat, or public repository."]})]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed mt-4",children:["If either email is missing or the token fails verification, contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with the Stripe reference. Do not open a duplicate checkout or dispute while delivery is being repaired."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Full License Text"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["The complete, authoritative PolyForm Noncommercial License 1.0.0 text is published at"," ",e.jsx("a",{href:"https://polyformproject.org/licenses/noncommercial/1.0.0",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"polyformproject.org/licenses/noncommercial/1.0.0"})," ","and is bundled verbatim with every package distribution (",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"LICENSE"})," in the wheel). The summaries on this page are for orientation only; where they differ from the license text, the license text governs."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Third-Party Licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR depends on several open-source projects including Stim (Apache 2.0), PyMatching (MIT), NumPy (BSD), and NetworkX (BSD). Full third-party attribution is included in the distribution. All third-party names are trademarks of their respective owners; QECTOR is not affiliated with, sponsored, or endorsed by them."})]})]})})]})}export{m as default}; diff --git a/assets/License-Bbjd5pqD.js b/assets/License-Bbjd5pqD.js deleted file mode 100644 index d3921fa6..00000000 --- a/assets/License-Bbjd5pqD.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as t}from"./index-_BpMZhV3.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{L as s}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function m(){return e.jsxs(e.Fragment,{children:[e.jsx(t,{title:"License · QECTOR",description:"QECTOR Decoder v3 license terms and v1.0.0 token activation procedure. PolyForm Noncommercial for community use; written commercial licenses available."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PolyForm Noncommercial 1.0.0 · Free for Research · Commercial by Written Agreement · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"License",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 is ",e.jsx("span",{className:"text-primary font-semibold",children:"Source-Available"})," (not free for commercial use). Free for personal, academic, and non-commercial research. Commercial use requires a written agreement from ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"$499"})," (evaluation) or ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"$1,299/yr"}),". The Workbench GUI is free."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"View Pricing"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact for Commercial"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Community License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["QECTOR Decoder v3 is released under the ",e.jsx("strong",{className:"text-primary",children:"PolyForm Noncommercial License 1.0.0"}),". This means you can use, modify, and distribute the software for non-commercial purposes free of charge."]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"Permitted (Non-Commercial)"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Personal research and learning"}),e.jsx("li",{children:"• Academic research and teaching"}),e.jsx("li",{children:"• Non-commercial open-source projects"}),e.jsx("li",{children:"• Publishing benchmark results (with attribution)"})]})]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl mt-4",children:[e.jsx("h3",{className:"text-gold-400 font-semibold text-sm mb-2",children:"Requires Commercial License"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Commercial product integration"}),e.jsx("li",{children:"• Internal commercial R&D with value extraction"}),e.jsx("li",{children:"• Government and defense contracts"}),e.jsx("li",{children:"• Redistribution in commercial products"}),e.jsx("li",{children:"• SaaS / hosted API usage"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Commercial licenses grant internal use rights, written agreements, priority support, and validation packages. See ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing"})," for tier details."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All commercial licenses include: written license agreement, commercial use rights (internal), reproducible artifact bundles, and priority bug review. No redistribution or OEM rights included by default; contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," for OEM/SaaS licensing."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Perpetual licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Solo / Indie Perpetual ($3,299 one-time): same rights as the annual tier for v3.x, including all v3.x patch and minor updates; major version upgrades such as v4.0 require a new license."})]}),e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial Addendum: What a Paid License Changes"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm",children:[e.jsx("li",{children:"• Grants the commercial use that PolyForm Noncommercial withholds, for the seats and term you purchased."}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"Internal use only."})," Redistribution, sublicensing, OEM bundling, and customer-facing SaaS or hosted APIs are excluded unless a written Enterprise/OEM agreement grants them."]}),e.jsxs("li",{children:["• Activated by setting ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to your Ed25519 token. Verification is offline against a public key embedded in the package: no license server, no phone-home, works air-gapped."]}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"The package is identical for licensed and unlicensed users."})," Without a token, a licensing notice prints on import (suppressible with ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_SILENT=1"}),"). No functionality is gated, degraded, or disabled."]}),e.jsx("li",{children:"• No warranty, indemnification, exclusivity, trademark, or patent grant is included by default."})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mt-4",children:["Tokens are delivered instantly and all sales are final: see the"," ",e.jsx(s,{to:"/refund",className:"text-cyan-300 hover:underline",children:"Refund Policy"}),". The $499 evaluation is the creditable way to evaluate before committing."]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"License Activation Procedure"}),e.jsxs("ol",{className:"space-y-3 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Verify the purchase."})," The fulfillment worker accepts only a Stripe-signed live checkout event and records the Stripe reference, customer email, tier, and token in the protected fulfillment ledger."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Install the runtime."})," Use ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"python -m pip install --upgrade qector-decoder-v3==1.0.0"})," from the official PyPI project."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Activate both v1.0.0 variables."})," Set ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to the same token from the license email. The first is used by the import notice; the second is used by the tier-aware runtime."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"4. Verify offline."})," Run ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:'python -c "import qector_decoder_v3 as q; print(q._is_license_active())"'}),". It must print ",e.jsx("code",{className:"text-cyan-300",children:"True"}),"; no license server or phone-home is involved."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"5. Preserve the audit record."})," Keep the token and Stripe invoice or payment confirmation together. Never send the token in a URL, issue tracker, chat, or public repository."]})]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed mt-4",children:["If either email is missing or the token fails verification, contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with the Stripe reference. Do not open a duplicate checkout or dispute while delivery is being repaired."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Full License Text"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["The complete, authoritative PolyForm Noncommercial License 1.0.0 text is published at"," ",e.jsx("a",{href:"https://polyformproject.org/licenses/noncommercial/1.0.0",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"polyformproject.org/licenses/noncommercial/1.0.0"})," ","and is bundled verbatim with every package distribution (",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"LICENSE"})," in the wheel). The summaries on this page are for orientation only; where they differ from the license text, the license text governs."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Third-Party Licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR depends on several open-source projects including Stim (Apache 2.0), PyMatching (MIT), NumPy (BSD), and NetworkX (BSD). Full third-party attribution is included in the distribution. All third-party names are trademarks of their respective owners; QECTOR is not affiliated with, sponsored, or endorsed by them."})]})]})})]})}export{m as default}; diff --git a/assets/License-BfOBkHYL.js b/assets/License-BfOBkHYL.js deleted file mode 100644 index c9e8bb51..00000000 --- a/assets/License-BfOBkHYL.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as t,L as s}from"./index-PdoH5kLF.js";import{N as r}from"./NeuralReveal-Bsl9IGCr.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";function l(){return e.jsxs(e.Fragment,{children:[e.jsx(t,{title:"License · QECTOR",description:"QECTOR Decoder v3 license terms and token activation procedure. PolyForm Noncommercial for community use; commercial plans from $79/month, verified offline (air-gapped)."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PolyForm Noncommercial 1.0.0 · Free for Research · Commercial by Written Agreement · Last updated November 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"License",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 is ",e.jsx("span",{className:"text-primary font-semibold",children:"Source-Available"})," (not free for commercial use). Free for personal, academic, and non-commercial research. Commercial use requires a paid plan from ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"$79/month"}),", with a ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"14-day money-back guarantee"}),". The Workbench GUI is free."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"View Pricing"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact for Commercial"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Community License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["QECTOR Decoder v3 is released under the ",e.jsx("strong",{className:"text-primary",children:"PolyForm Noncommercial License 1.0.0"}),". This means you can use, modify, and distribute the software for non-commercial purposes free of charge."]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"Permitted (Non-Commercial)"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Personal research and learning"}),e.jsx("li",{children:"• Academic research and teaching"}),e.jsx("li",{children:"• Use by universities, public research organisations, charities and government institutions, whatever their source of funding"}),e.jsx("li",{children:"• Non-commercial open-source projects"}),e.jsx("li",{children:"• Publishing benchmark results (with attribution)"})]})]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl mt-4",children:[e.jsx("h3",{className:"text-gold-400 font-semibold text-sm mb-2",children:"Requires Commercial License"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Commercial product integration"}),e.jsx("li",{children:"• Internal commercial R&D with value extraction"}),e.jsx("li",{children:"• Company work on government, defence or university contracts"}),e.jsx("li",{children:"• Redistribution in commercial products"}),e.jsx("li",{children:"• SaaS / hosted API usage"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Commercial licenses grant internal use rights, written agreements, priority support, and validation packages. See ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing"})," for tier details."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Every paid plan is governed by the"," ",e.jsx(s,{to:"/license-agreement",className:"text-cyan-300 hover:underline",children:"Commercial Licence Agreement"})," ","(",e.jsx(s,{to:"/fr/license-agreement",className:"text-cyan-300 hover:underline",children:"version française"}),"). All commercial licenses include: commercial use rights (internal, no seat counts), reproducible artifact bundles, and priority bug review. No redistribution or OEM rights included by default; contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," for OEM/SaaS licensing."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Perpetual licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Pro Perpetual ($1,990 one-time): the same rights as Pro, for every 1.x release of qector-decoder-v3, including all patch and minor updates; a new major version such as 2.0 requires a new license. Licenses bought earlier as Solo / Indie Perpetual keep their original terms."})]}),e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial Addendum: What a Paid License Changes"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm",children:[e.jsx("li",{children:"• Grants the commercial use that PolyForm Noncommercial withholds, for the term you purchased."}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"Internal use only."})," Redistribution, sublicensing, OEM bundling, and customer-facing SaaS or hosted APIs are excluded unless a written Enterprise/OEM agreement grants them."]}),e.jsxs("li",{children:["• Activated by setting ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to your Ed25519 token. Verification is offline against a public key embedded in the package: no license server, no phone-home, works air-gapped."]}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"The package is identical for licensed and unlicensed users."})," Without a token, a licensing notice prints on import (suppressible with ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_SILENT=1"}),"). The token does two things: it silences the notice and it unlocks tier-scoped runtime features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and a code-distance tier of 7 (Community), 19 (Pro, Team) or 63 (Lab, Enterprise). CPU decoding is never blocked; distance caps apply only when ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_ENFORCE=1"})," is set."]}),e.jsx("li",{children:"• No warranty, indemnification, exclusivity, trademark, or patent grant is included by default."})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mt-4",children:["Tokens are delivered within minutes, and every plan has a 14-day money-back guarantee on the first payment: see the ",e.jsx(s,{to:"/refund",className:"text-cyan-300 hover:underline",children:"Refund Policy"}),". A refunded licence ends on refund. Plans are on the"," ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"pricing page"}),"."]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"License Activation Procedure"}),e.jsxs("ol",{className:"space-y-3 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Verify the purchase."})," The fulfillment worker accepts only a Stripe-signed live checkout event and records the Stripe reference, customer email, tier, and token in the protected fulfillment ledger."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Install the runtime."})," Use ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:'python -m pip install --upgrade "qector-decoder-v3>=1.0,<2"'})," from the official PyPI project."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Activate both variables."})," Set ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to the same token from the license email. The first is used by the import notice; the second is used by the tier-aware runtime."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"4. Verify offline."})," Run ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:`python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),". It must print your paid tier (for example ",e.jsx("code",{className:"text-cyan-300",children:"Pro"}),"), not ",e.jsx("code",{className:"text-cyan-300",children:"Community"}),"; no license server or phone-home is involved."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"5. Preserve the audit record."})," Keep the token and Stripe invoice or payment confirmation together. Never send the token in a URL, issue tracker, chat, or public repository."]})]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed mt-4",children:["If either email is missing or the token fails verification, contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with the Stripe reference. Do not open a duplicate checkout or dispute while delivery is being repaired."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Full License Text"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["The complete, authoritative PolyForm Noncommercial License 1.0.0 text is published at"," ",e.jsx("a",{href:"https://polyformproject.org/licenses/noncommercial/1.0.0",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"polyformproject.org/licenses/noncommercial/1.0.0"})," ","and is bundled verbatim with every package distribution (",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"LICENSE"})," in the wheel). The summaries on this page are for orientation only; where they differ from the license text, the license text governs."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Third-Party Licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR depends on several open-source projects including Stim (Apache 2.0), PyMatching (MIT), NumPy (BSD), and NetworkX (BSD). Full third-party attribution is included in the distribution. All third-party names are trademarks of their respective owners; QECTOR is not affiliated with, sponsored, or endorsed by them."})]})]})})]})}export{l as default}; diff --git a/assets/License-CLXCCxwS.js b/assets/License-CLXCCxwS.js deleted file mode 100644 index 479f5ea0..00000000 --- a/assets/License-CLXCCxwS.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as t}from"./index-abfjMTlQ.js";import{N as r}from"./NeuralReveal-D-EQoOl2.js";import{L as s}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function m(){return e.jsxs(e.Fragment,{children:[e.jsx(t,{title:"License · QECTOR",description:"QECTOR Decoder v3 license terms and token activation procedure. PolyForm Noncommercial for community use; commercial plans from $79/month, verified offline (air-gapped)."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PolyForm Noncommercial 1.0.0 · Free for Research · Commercial by Written Agreement · Last updated November 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"License",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 is ",e.jsx("span",{className:"text-primary font-semibold",children:"Source-Available"})," (not free for commercial use). Free for personal, academic, and non-commercial research. Commercial use requires a paid plan from ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"$79/month"}),", with a ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"14-day money-back guarantee"}),". The Workbench GUI is free."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"View Pricing"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact for Commercial"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Community License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["QECTOR Decoder v3 is released under the ",e.jsx("strong",{className:"text-primary",children:"PolyForm Noncommercial License 1.0.0"}),". This means you can use, modify, and distribute the software for non-commercial purposes free of charge."]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"Permitted (Non-Commercial)"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Personal research and learning"}),e.jsx("li",{children:"• Academic research and teaching"}),e.jsx("li",{children:"• Use by universities, public research organisations, charities and government institutions, whatever their source of funding"}),e.jsx("li",{children:"• Non-commercial open-source projects"}),e.jsx("li",{children:"• Publishing benchmark results (with attribution)"})]})]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl mt-4",children:[e.jsx("h3",{className:"text-gold-400 font-semibold text-sm mb-2",children:"Requires Commercial License"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Commercial product integration"}),e.jsx("li",{children:"• Internal commercial R&D with value extraction"}),e.jsx("li",{children:"• Company work on government, defence or university contracts"}),e.jsx("li",{children:"• Redistribution in commercial products"}),e.jsx("li",{children:"• SaaS / hosted API usage"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Commercial licenses grant internal use rights, written agreements, priority support, and validation packages. See ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing"})," for tier details."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Every paid plan is governed by the"," ",e.jsx(s,{to:"/license-agreement",className:"text-cyan-300 hover:underline",children:"Commercial Licence Agreement"})," ","(",e.jsx(s,{to:"/fr/license-agreement",className:"text-cyan-300 hover:underline",children:"version française"}),"). All commercial licenses include: commercial use rights (internal, no seat counts), reproducible artifact bundles, and priority bug review. No redistribution or OEM rights included by default; contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," for OEM/SaaS licensing."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Perpetual licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Pro Perpetual ($1,990 one-time): the same rights as Pro, for every 1.x release of qector-decoder-v3, including all patch and minor updates; a new major version such as 2.0 requires a new license. Licenses bought earlier as Solo / Indie Perpetual keep their original terms."})]}),e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial Addendum: What a Paid License Changes"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm",children:[e.jsx("li",{children:"• Grants the commercial use that PolyForm Noncommercial withholds, for the term you purchased."}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"Internal use only."})," Redistribution, sublicensing, OEM bundling, and customer-facing SaaS or hosted APIs are excluded unless a written Enterprise/OEM agreement grants them."]}),e.jsxs("li",{children:["• Activated by setting ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to your Ed25519 token. Verification is offline against a public key embedded in the package: no license server, no phone-home, works air-gapped."]}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"The package is identical for licensed and unlicensed users."})," Without a token, a licensing notice prints on import (suppressible with ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_SILENT=1"}),"). The token does two things: it silences the notice and it unlocks tier-scoped runtime features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and a code-distance tier of 7 (Community), 19 (Pro, Team) or 63 (Lab, Enterprise). CPU decoding is never blocked; distance caps apply only when ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_ENFORCE=1"})," is set."]}),e.jsx("li",{children:"• No warranty, indemnification, exclusivity, trademark, or patent grant is included by default."})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mt-4",children:["Tokens are delivered within minutes, and every plan has a 14-day money-back guarantee on the first payment: see the ",e.jsx(s,{to:"/refund",className:"text-cyan-300 hover:underline",children:"Refund Policy"}),". A refunded licence ends on refund. Plans are on the"," ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"pricing page"}),"."]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"License Activation Procedure"}),e.jsxs("ol",{className:"space-y-3 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Verify the purchase."})," The fulfillment worker accepts only a Stripe-signed live checkout event and records the Stripe reference, customer email, tier, and token in the protected fulfillment ledger."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Install the runtime."})," Use ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:'python -m pip install --upgrade "qector-decoder-v3>=1.0,<2"'})," from the official PyPI project."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Activate both variables."})," Set ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to the same token from the license email. The first is used by the import notice; the second is used by the tier-aware runtime."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"4. Verify offline."})," Run ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:`python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),". It must print your paid tier (for example ",e.jsx("code",{className:"text-cyan-300",children:"Pro"}),"), not ",e.jsx("code",{className:"text-cyan-300",children:"Community"}),"; no license server or phone-home is involved."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"5. Preserve the audit record."})," Keep the token and Stripe invoice or payment confirmation together. Never send the token in a URL, issue tracker, chat, or public repository."]})]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed mt-4",children:["If either email is missing or the token fails verification, contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with the Stripe reference. Do not open a duplicate checkout or dispute while delivery is being repaired."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Full License Text"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["The complete, authoritative PolyForm Noncommercial License 1.0.0 text is published at"," ",e.jsx("a",{href:"https://polyformproject.org/licenses/noncommercial/1.0.0",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"polyformproject.org/licenses/noncommercial/1.0.0"})," ","and is bundled verbatim with every package distribution (",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"LICENSE"})," in the wheel). The summaries on this page are for orientation only; where they differ from the license text, the license text governs."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Third-Party Licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR depends on several open-source projects including Stim (Apache 2.0), PyMatching (MIT), NumPy (BSD), and NetworkX (BSD). Full third-party attribution is included in the distribution. All third-party names are trademarks of their respective owners; QECTOR is not affiliated with, sponsored, or endorsed by them."})]})]})})]})}export{m as default}; diff --git a/assets/License-CSNrV1_I.js b/assets/License-CSNrV1_I.js deleted file mode 100644 index 9685204c..00000000 --- a/assets/License-CSNrV1_I.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as t}from"./index-DkYdPRY7.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{L as s}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function m(){return e.jsxs(e.Fragment,{children:[e.jsx(t,{title:"License · QECTOR",description:"QECTOR Decoder v3 license terms and token activation procedure. PolyForm Noncommercial for community use; commercial plans from $79/month, verified offline (air-gapped)."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PolyForm Noncommercial 1.0.0 · Free for Research · Commercial by Written Agreement · Last updated November 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"License",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 is ",e.jsx("span",{className:"text-primary font-semibold",children:"Source-Available"})," (not free for commercial use). Free for personal, academic, and non-commercial research. Commercial use requires a paid plan from ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"$79/month"}),", with a ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"14-day money-back guarantee"}),". The Workbench GUI is free."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"View Pricing"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact for Commercial"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Community License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["QECTOR Decoder v3 is released under the ",e.jsx("strong",{className:"text-primary",children:"PolyForm Noncommercial License 1.0.0"}),". This means you can use, modify, and distribute the software for non-commercial purposes free of charge."]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"Permitted (Non-Commercial)"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Personal research and learning"}),e.jsx("li",{children:"• Academic research and teaching"}),e.jsx("li",{children:"• Use by universities, public research organisations, charities and government institutions, whatever their source of funding"}),e.jsx("li",{children:"• Non-commercial open-source projects"}),e.jsx("li",{children:"• Publishing benchmark results (with attribution)"})]})]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl mt-4",children:[e.jsx("h3",{className:"text-gold-400 font-semibold text-sm mb-2",children:"Requires Commercial License"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Commercial product integration"}),e.jsx("li",{children:"• Internal commercial R&D with value extraction"}),e.jsx("li",{children:"• Company work on government, defence or university contracts"}),e.jsx("li",{children:"• Redistribution in commercial products"}),e.jsx("li",{children:"• SaaS / hosted API usage"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Commercial licenses grant internal use rights, written agreements, priority support, and validation packages. See ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing"})," for tier details."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All commercial licenses include: written license agreement, commercial use rights (internal), reproducible artifact bundles, and priority bug review. No redistribution or OEM rights included by default; contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," for OEM/SaaS licensing."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Perpetual licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Pro Perpetual ($1,990 one-time): the same rights as Pro, for every 3.x release including all patch and minor updates; a major version such as 4.0 requires a new license. Licenses bought earlier as Solo / Indie Perpetual keep their original terms."})]}),e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial Addendum: What a Paid License Changes"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm",children:[e.jsx("li",{children:"• Grants the commercial use that PolyForm Noncommercial withholds, for the term you purchased."}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"Internal use only."})," Redistribution, sublicensing, OEM bundling, and customer-facing SaaS or hosted APIs are excluded unless a written Enterprise/OEM agreement grants them."]}),e.jsxs("li",{children:["• Activated by setting ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to your Ed25519 token. Verification is offline against a public key embedded in the package: no license server, no phone-home, works air-gapped."]}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"The package is identical for licensed and unlicensed users."})," Without a token, a licensing notice prints on import (suppressible with ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_SILENT=1"}),"). The token does two things: it silences the notice and it unlocks tier-scoped runtime features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and a code-distance tier of 7 (Community), 19 (Pro, Team) or 63 (Lab, Enterprise). CPU decoding is never blocked; distance caps apply only when ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_ENFORCE=1"})," is set."]}),e.jsx("li",{children:"• No warranty, indemnification, exclusivity, trademark, or patent grant is included by default."})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mt-4",children:["Tokens are delivered within minutes, and every plan has a 14-day money-back guarantee on the first payment: see the ",e.jsx(s,{to:"/refund",className:"text-cyan-300 hover:underline",children:"Refund Policy"}),". A refunded licence ends on refund. Plans are on the"," ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"pricing page"}),"."]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"License Activation Procedure"}),e.jsxs("ol",{className:"space-y-3 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Verify the purchase."})," The fulfillment worker accepts only a Stripe-signed live checkout event and records the Stripe reference, customer email, tier, and token in the protected fulfillment ledger."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Install the runtime."})," Use ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:'python -m pip install --upgrade "qector-decoder-v3>=1.0,<2"'})," from the official PyPI project."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Activate both variables."})," Set ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to the same token from the license email. The first is used by the import notice; the second is used by the tier-aware runtime."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"4. Verify offline."})," Run ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:`python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),". It must print your paid tier (for example ",e.jsx("code",{className:"text-cyan-300",children:"Pro"}),"), not ",e.jsx("code",{className:"text-cyan-300",children:"Community"}),"; no license server or phone-home is involved."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"5. Preserve the audit record."})," Keep the token and Stripe invoice or payment confirmation together. Never send the token in a URL, issue tracker, chat, or public repository."]})]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed mt-4",children:["If either email is missing or the token fails verification, contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with the Stripe reference. Do not open a duplicate checkout or dispute while delivery is being repaired."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Full License Text"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["The complete, authoritative PolyForm Noncommercial License 1.0.0 text is published at"," ",e.jsx("a",{href:"https://polyformproject.org/licenses/noncommercial/1.0.0",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"polyformproject.org/licenses/noncommercial/1.0.0"})," ","and is bundled verbatim with every package distribution (",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"LICENSE"})," in the wheel). The summaries on this page are for orientation only; where they differ from the license text, the license text governs."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Third-Party Licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR depends on several open-source projects including Stim (Apache 2.0), PyMatching (MIT), NumPy (BSD), and NetworkX (BSD). Full third-party attribution is included in the distribution. All third-party names are trademarks of their respective owners; QECTOR is not affiliated with, sponsored, or endorsed by them."})]})]})})]})}export{m as default}; diff --git a/assets/License-CUAefKwM.js b/assets/License-CUAefKwM.js deleted file mode 100644 index df4c40b2..00000000 --- a/assets/License-CUAefKwM.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as t}from"./index-B9kEGiWi.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{L as s}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function m(){return e.jsxs(e.Fragment,{children:[e.jsx(t,{title:"License · QECTOR",description:"QECTOR Decoder v3 license terms and v1.0.0 token activation procedure. PolyForm Noncommercial for community use; written commercial licenses available."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PolyForm Noncommercial 1.0.0 · Free for Research · Commercial by Written Agreement · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"License",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 is ",e.jsx("span",{className:"text-primary font-semibold",children:"Source-Available"})," (not free for commercial use). Free for personal, academic, and non-commercial research. Commercial use requires a written agreement from ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"$499"})," (evaluation) or ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"$1,299/yr"}),". The Workbench GUI is free."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"View Pricing"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact for Commercial"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Community License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["QECTOR Decoder v3 is released under the ",e.jsx("strong",{className:"text-primary",children:"PolyForm Noncommercial License 1.0.0"}),". This means you can use, modify, and distribute the software for non-commercial purposes free of charge."]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"Permitted (Non-Commercial)"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Personal research and learning"}),e.jsx("li",{children:"• Academic research and teaching"}),e.jsx("li",{children:"• Non-commercial open-source projects"}),e.jsx("li",{children:"• Publishing benchmark results (with attribution)"})]})]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl mt-4",children:[e.jsx("h3",{className:"text-gold-400 font-semibold text-sm mb-2",children:"Requires Commercial License"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Commercial product integration"}),e.jsx("li",{children:"• Internal commercial R&D with value extraction"}),e.jsx("li",{children:"• Government and defense contracts"}),e.jsx("li",{children:"• Redistribution in commercial products"}),e.jsx("li",{children:"• SaaS / hosted API usage"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Commercial licenses grant internal use rights, written agreements, priority support, and validation packages. See ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing"})," for tier details."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All commercial licenses include: written license agreement, commercial use rights (internal), reproducible artifact bundles, and priority bug review. No redistribution or OEM rights included by default; contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," for OEM/SaaS licensing."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Perpetual licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Solo / Indie Perpetual ($3,299 one-time): same rights as the annual tier for v3.x, including all v3.x patch and minor updates; major version upgrades such as v4.0 require a new license."})]}),e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial Addendum: What a Paid License Changes"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm",children:[e.jsx("li",{children:"• Grants the commercial use that PolyForm Noncommercial withholds, for the seats and term you purchased."}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"Internal use only."})," Redistribution, sublicensing, OEM bundling, and customer-facing SaaS or hosted APIs are excluded unless a written Enterprise/OEM agreement grants them."]}),e.jsxs("li",{children:["• Activated by setting ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to your Ed25519 token. Verification is offline against a public key embedded in the package: no license server, no phone-home, works air-gapped."]}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"The package is identical for licensed and unlicensed users."})," Without a token, a licensing notice prints on import (suppressible with ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_SILENT=1"}),"). No functionality is gated, degraded, or disabled."]}),e.jsx("li",{children:"• No warranty, indemnification, exclusivity, trademark, or patent grant is included by default."})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mt-4",children:["Tokens are delivered instantly and all sales are final: see the"," ",e.jsx(s,{to:"/refund",className:"text-cyan-300 hover:underline",children:"Refund Policy"}),". The $499 evaluation is the creditable way to evaluate before committing."]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"License Activation Procedure"}),e.jsxs("ol",{className:"space-y-3 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Verify the purchase."})," The fulfillment worker accepts only a Stripe-signed live checkout event and records the Stripe reference, customer email, tier, and token in the protected fulfillment ledger."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Install the runtime."})," Use ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"python -m pip install --upgrade qector-decoder-v3==1.0.0"})," from the official PyPI project."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Activate both v1.0.0 variables."})," Set ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to the same token from the license email. The first is used by the import notice; the second is used by the tier-aware runtime."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"4. Verify offline."})," Run ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:'python -c "import qector_decoder_v3 as q; print(q._is_license_active())"'}),". It must print ",e.jsx("code",{className:"text-cyan-300",children:"True"}),"; no license server or phone-home is involved."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"5. Preserve the audit record."})," Keep the token and Stripe invoice or payment confirmation together. Never send the token in a URL, issue tracker, chat, or public repository."]})]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed mt-4",children:["If either email is missing or the token fails verification, contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with the Stripe reference. Do not open a duplicate checkout or dispute while delivery is being repaired."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Full License Text"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["The complete, authoritative PolyForm Noncommercial License 1.0.0 text is published at"," ",e.jsx("a",{href:"https://polyformproject.org/licenses/noncommercial/1.0.0",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"polyformproject.org/licenses/noncommercial/1.0.0"})," ","and is bundled verbatim with every package distribution (",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"LICENSE"})," in the wheel). The summaries on this page are for orientation only; where they differ from the license text, the license text governs."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Third-Party Licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR depends on several open-source projects including Stim (Apache 2.0), PyMatching (MIT), NumPy (BSD), and NetworkX (BSD). Full third-party attribution is included in the distribution. All third-party names are trademarks of their respective owners; QECTOR is not affiliated with, sponsored, or endorsed by them."})]})]})})]})}export{m as default}; diff --git a/assets/License-CXS5aYz7.js b/assets/License-CXS5aYz7.js deleted file mode 100644 index 523eb8d8..00000000 --- a/assets/License-CXS5aYz7.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as t,L as s}from"./index-CCmwjNGU.js";import{N as r}from"./NeuralReveal-uYarhiMA.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";function o(){return e.jsxs(e.Fragment,{children:[e.jsx(t,{title:"License · QECTOR",description:"QECTOR Decoder v3 license terms and token activation procedure. PolyForm Noncommercial for community use; commercial plans from $79/month, verified offline (air-gapped).",alternates:[{lang:"en",href:"https://qector.store/license/"},{lang:"fr",href:"https://qector.store/fr/license/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PolyForm Noncommercial 1.0.0 · Free for Research · Commercial by Written Agreement · Last updated November 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"License",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 is ",e.jsx("span",{className:"text-primary font-semibold",children:"Source-Available"})," (not free for commercial use). Free for personal, academic, and non-commercial research. Commercial use requires a paid plan from ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"$79/month"}),", with a ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"14-day money-back guarantee"}),". The Workbench GUI is free."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"View Pricing"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact for Commercial"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Community License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["QECTOR Decoder v3 is released under the ",e.jsx("strong",{className:"text-primary",children:"PolyForm Noncommercial License 1.0.0"}),". This means you can use, modify, and distribute the software for non-commercial purposes free of charge."]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"Permitted (Non-Commercial)"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Personal research and learning"}),e.jsx("li",{children:"• Academic research and teaching"}),e.jsx("li",{children:"• Use by universities, public research organisations, charities and government institutions, whatever their source of funding"}),e.jsx("li",{children:"• Non-commercial open-source projects"}),e.jsx("li",{children:"• Publishing benchmark results (with attribution)"})]})]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl mt-4",children:[e.jsx("h3",{className:"text-gold-400 font-semibold text-sm mb-2",children:"Requires Commercial License"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Commercial product integration"}),e.jsx("li",{children:"• Internal commercial R&D with value extraction"}),e.jsx("li",{children:"• Company work on government, defence or university contracts"}),e.jsx("li",{children:"• Redistribution in commercial products"}),e.jsx("li",{children:"• SaaS / hosted API usage"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Commercial licenses grant internal use rights, written agreements, priority support, and validation packages. See ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing"})," for tier details."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Every paid plan is governed by the"," ",e.jsx(s,{to:"/license-agreement",className:"text-cyan-300 hover:underline",children:"Commercial Licence Agreement"})," ","(",e.jsx(s,{to:"/fr/license-agreement",className:"text-cyan-300 hover:underline",children:"version française"}),"). All commercial licenses include: commercial use rights (internal, no seat counts), reproducible artifact bundles, and priority bug review. No redistribution or OEM rights included by default; contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," for OEM/SaaS licensing."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Perpetual licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Pro Perpetual ($1,990 one-time): the same rights as Pro, for every 1.x release of qector-decoder-v3, including all patch and minor updates; a new major version such as 2.0 requires a new license. Licenses bought earlier as Solo / Indie Perpetual keep their original terms."})]}),e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial Addendum: What a Paid License Changes"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm",children:[e.jsx("li",{children:"• Grants the commercial use that PolyForm Noncommercial withholds, for the term you purchased."}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"Internal use only."})," Redistribution, sublicensing, OEM bundling, and customer-facing SaaS or hosted APIs are excluded unless a written Enterprise/OEM agreement grants them."]}),e.jsxs("li",{children:["• Activated by setting ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to your Ed25519 token. Verification is offline against a public key embedded in the package: no license server, no phone-home, works air-gapped."]}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"The package is identical for licensed and unlicensed users."})," Without a token, a licensing notice prints on import (suppressible with ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_SILENT=1"}),"). The token does two things: it silences the notice and it unlocks tier-scoped runtime features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and a code-distance tier of 7 (Community), 19 (Pro, Team) or 63 (Lab, Enterprise). CPU decoding is never blocked; distance caps apply only when ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_ENFORCE=1"})," is set."]}),e.jsx("li",{children:"• No warranty, indemnification, exclusivity, trademark, or patent grant is included by default."})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mt-4",children:["Tokens are delivered within minutes, and every plan has a 14-day money-back guarantee on the first payment: see the ",e.jsx(s,{to:"/refund",className:"text-cyan-300 hover:underline",children:"Refund Policy"}),". A refunded licence ends on refund. Plans are on the"," ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"pricing page"}),"."]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"License Activation Procedure"}),e.jsxs("ol",{className:"space-y-3 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Verify the purchase."})," The fulfillment worker accepts only a Stripe-signed live checkout event and records the Stripe reference, customer email, tier, and token in the protected fulfillment ledger."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Install the runtime."})," Use ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:'python -m pip install --upgrade "qector-decoder-v3>=1.0,<2"'})," from the official PyPI project."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Activate both variables."})," Set ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to the same token from the license email. The first is used by the import notice; the second is used by the tier-aware runtime."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"4. Verify offline."})," Run ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:`python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),". It must print your paid tier (for example ",e.jsx("code",{className:"text-cyan-300",children:"Pro"}),"), not ",e.jsx("code",{className:"text-cyan-300",children:"Community"}),"; no license server or phone-home is involved."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"5. Preserve the audit record."})," Keep the token and Stripe invoice or payment confirmation together. Never send the token in a URL, issue tracker, chat, or public repository."]})]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed mt-4",children:["If either email is missing or the token fails verification, contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with the Stripe reference. Do not open a duplicate checkout or dispute while delivery is being repaired."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Full License Text"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["The complete, authoritative PolyForm Noncommercial License 1.0.0 text is published at"," ",e.jsx("a",{href:"https://polyformproject.org/licenses/noncommercial/1.0.0",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"polyformproject.org/licenses/noncommercial/1.0.0"})," ","and is bundled verbatim with every package distribution (",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"LICENSE"})," in the wheel). The summaries on this page are for orientation only; where they differ from the license text, the license text governs."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Third-Party Licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR depends on several open-source projects including Stim (Apache 2.0), PyMatching (MIT), NumPy (BSD), and NetworkX (BSD). Full third-party attribution is included in the distribution. All third-party names are trademarks of their respective owners; QECTOR is not affiliated with, sponsored, or endorsed by them."})]})]})})]})}export{o as default}; diff --git a/assets/License-CeBx9XeU.js b/assets/License-CeBx9XeU.js deleted file mode 100644 index 74736bdd..00000000 --- a/assets/License-CeBx9XeU.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as t}from"./index-WV1aysjN.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{L as s}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function m(){return e.jsxs(e.Fragment,{children:[e.jsx(t,{title:"License · QECTOR",description:"QECTOR Decoder v3 license terms and token activation procedure. PolyForm Noncommercial for community use; commercial plans from $79/month with a free 14-day trial."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PolyForm Noncommercial 1.0.0 · Free for Research · Commercial by Written Agreement · Last updated November 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"License",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 is ",e.jsx("span",{className:"text-primary font-semibold",children:"Source-Available"})," (not free for commercial use). Free for personal, academic, and non-commercial research. Commercial use requires a paid plan from ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"$79/month"}),", with a ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"free 14-day trial"}),". The Workbench GUI is free."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"View Pricing"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact for Commercial"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Community License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["QECTOR Decoder v3 is released under the ",e.jsx("strong",{className:"text-primary",children:"PolyForm Noncommercial License 1.0.0"}),". This means you can use, modify, and distribute the software for non-commercial purposes free of charge."]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"Permitted (Non-Commercial)"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Personal research and learning"}),e.jsx("li",{children:"• Academic research and teaching"}),e.jsx("li",{children:"• Non-commercial open-source projects"}),e.jsx("li",{children:"• Publishing benchmark results (with attribution)"})]})]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl mt-4",children:[e.jsx("h3",{className:"text-gold-400 font-semibold text-sm mb-2",children:"Requires Commercial License"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Commercial product integration"}),e.jsx("li",{children:"• Internal commercial R&D with value extraction"}),e.jsx("li",{children:"• Government and defense contracts"}),e.jsx("li",{children:"• Redistribution in commercial products"}),e.jsx("li",{children:"• SaaS / hosted API usage"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Commercial licenses grant internal use rights, written agreements, priority support, and validation packages. See ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing"})," for tier details."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All commercial licenses include: written license agreement, commercial use rights (internal), reproducible artifact bundles, and priority bug review. No redistribution or OEM rights included by default; contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," for OEM/SaaS licensing."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Perpetual licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Pro Perpetual ($1,990 one-time): the same rights as Pro for one named user, for every 3.x release including all patch and minor updates; a major version such as 4.0 requires a new license. Licenses bought earlier as Solo / Indie Perpetual keep their original terms."})]}),e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial Addendum: What a Paid License Changes"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm",children:[e.jsx("li",{children:"• Grants the commercial use that PolyForm Noncommercial withholds, for the seats and term you purchased."}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"Internal use only."})," Redistribution, sublicensing, OEM bundling, and customer-facing SaaS or hosted APIs are excluded unless a written Enterprise/OEM agreement grants them."]}),e.jsxs("li",{children:["• Activated by setting ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to your Ed25519 token. Verification is offline against a public key embedded in the package: no license server, no phone-home, works air-gapped."]}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"The package is identical for licensed and unlicensed users."})," Without a token, a licensing notice prints on import (suppressible with ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_SILENT=1"}),"). The token does two things: it silences the notice and it unlocks tier-scoped runtime features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and a code-distance tier of 7 (Community), 19 (Pro, Team) or 63 (Lab, Enterprise). CPU decoding is never blocked; distance caps apply only when ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_ENFORCE=1"})," is set."]}),e.jsx("li",{children:"• No warranty, indemnification, exclusivity, trademark, or patent grant is included by default."})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mt-4",children:["Tokens are delivered within minutes, and every plan has a 14-day money-back guarantee on the first payment: see the ",e.jsx(s,{to:"/refund",className:"text-cyan-300 hover:underline",children:"Refund Policy"}),". A refunded licence ends on refund. Try it first with the free 14-day trial on the"," ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"pricing page"}),"."]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"License Activation Procedure"}),e.jsxs("ol",{className:"space-y-3 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Verify the purchase."})," The fulfillment worker accepts only a Stripe-signed live checkout event and records the Stripe reference, customer email, tier, and token in the protected fulfillment ledger."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Install the runtime."})," Use ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:'python -m pip install --upgrade "qector-decoder-v3>=1.0,<2"'})," from the official PyPI project."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Activate both variables."})," Set ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to the same token from the license email. The first is used by the import notice; the second is used by the tier-aware runtime."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"4. Verify offline."})," Run ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:`python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),". It must print your paid tier (for example ",e.jsx("code",{className:"text-cyan-300",children:"pro"}),"), not ",e.jsx("code",{className:"text-cyan-300",children:"community"}),"; no license server or phone-home is involved."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"5. Preserve the audit record."})," Keep the token and Stripe invoice or payment confirmation together. Never send the token in a URL, issue tracker, chat, or public repository."]})]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed mt-4",children:["If either email is missing or the token fails verification, contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with the Stripe reference. Do not open a duplicate checkout or dispute while delivery is being repaired."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Full License Text"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["The complete, authoritative PolyForm Noncommercial License 1.0.0 text is published at"," ",e.jsx("a",{href:"https://polyformproject.org/licenses/noncommercial/1.0.0",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"polyformproject.org/licenses/noncommercial/1.0.0"})," ","and is bundled verbatim with every package distribution (",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"LICENSE"})," in the wheel). The summaries on this page are for orientation only; where they differ from the license text, the license text governs."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Third-Party Licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR depends on several open-source projects including Stim (Apache 2.0), PyMatching (MIT), NumPy (BSD), and NetworkX (BSD). Full third-party attribution is included in the distribution. All third-party names are trademarks of their respective owners; QECTOR is not affiliated with, sponsored, or endorsed by them."})]})]})})]})}export{m as default}; diff --git a/assets/License-CqqH5PUX.js b/assets/License-CqqH5PUX.js deleted file mode 100644 index 9f713003..00000000 --- a/assets/License-CqqH5PUX.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as t}from"./index-BUYYSLdX.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{L as s}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function m(){return e.jsxs(e.Fragment,{children:[e.jsx(t,{title:"License · QECTOR",description:"QECTOR Decoder v3 license terms and token activation procedure. PolyForm Noncommercial for community use; commercial plans from $79/month, verified offline (air-gapped)."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PolyForm Noncommercial 1.0.0 · Free for Research · Commercial by Written Agreement · Last updated November 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"License",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 is ",e.jsx("span",{className:"text-primary font-semibold",children:"Source-Available"})," (not free for commercial use). Free for personal, academic, and non-commercial research. Commercial use requires a paid plan from ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"$79/month"}),", with a ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"14-day money-back guarantee"}),". The Workbench GUI is free."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"View Pricing"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact for Commercial"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Community License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["QECTOR Decoder v3 is released under the ",e.jsx("strong",{className:"text-primary",children:"PolyForm Noncommercial License 1.0.0"}),". This means you can use, modify, and distribute the software for non-commercial purposes free of charge."]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"Permitted (Non-Commercial)"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Personal research and learning"}),e.jsx("li",{children:"• Academic research and teaching"}),e.jsx("li",{children:"• Use by universities, public research organisations, charities and government institutions, whatever their source of funding"}),e.jsx("li",{children:"• Non-commercial open-source projects"}),e.jsx("li",{children:"• Publishing benchmark results (with attribution)"})]})]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl mt-4",children:[e.jsx("h3",{className:"text-gold-400 font-semibold text-sm mb-2",children:"Requires Commercial License"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Commercial product integration"}),e.jsx("li",{children:"• Internal commercial R&D with value extraction"}),e.jsx("li",{children:"• Company work on government, defence or university contracts"}),e.jsx("li",{children:"• Redistribution in commercial products"}),e.jsx("li",{children:"• SaaS / hosted API usage"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Commercial licenses grant internal use rights, written agreements, priority support, and validation packages. See ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing"})," for tier details."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All commercial licenses include: written license agreement, commercial use rights (internal), reproducible artifact bundles, and priority bug review. No redistribution or OEM rights included by default; contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," for OEM/SaaS licensing."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Perpetual licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Pro Perpetual ($1,990 one-time): the same rights as Pro, for every 3.x release including all patch and minor updates; a major version such as 4.0 requires a new license. Licenses bought earlier as Solo / Indie Perpetual keep their original terms."})]}),e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial Addendum: What a Paid License Changes"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm",children:[e.jsx("li",{children:"• Grants the commercial use that PolyForm Noncommercial withholds, for the term you purchased."}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"Internal use only."})," Redistribution, sublicensing, OEM bundling, and customer-facing SaaS or hosted APIs are excluded unless a written Enterprise/OEM agreement grants them."]}),e.jsxs("li",{children:["• Activated by setting ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to your Ed25519 token. Verification is offline against a public key embedded in the package: no license server, no phone-home, works air-gapped."]}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"The package is identical for licensed and unlicensed users."})," Without a token, a licensing notice prints on import (suppressible with ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_SILENT=1"}),"). The token does two things: it silences the notice and it unlocks tier-scoped runtime features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and a code-distance tier of 7 (Community), 19 (Pro, Team) or 63 (Lab, Enterprise). CPU decoding is never blocked; distance caps apply only when ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_ENFORCE=1"})," is set."]}),e.jsx("li",{children:"• No warranty, indemnification, exclusivity, trademark, or patent grant is included by default."})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mt-4",children:["Tokens are delivered within minutes, and every plan has a 14-day money-back guarantee on the first payment: see the ",e.jsx(s,{to:"/refund",className:"text-cyan-300 hover:underline",children:"Refund Policy"}),". A refunded licence ends on refund. Plans are on the"," ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"pricing page"}),"."]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"License Activation Procedure"}),e.jsxs("ol",{className:"space-y-3 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Verify the purchase."})," The fulfillment worker accepts only a Stripe-signed live checkout event and records the Stripe reference, customer email, tier, and token in the protected fulfillment ledger."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Install the runtime."})," Use ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:'python -m pip install --upgrade "qector-decoder-v3>=1.0,<2"'})," from the official PyPI project."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Activate both variables."})," Set ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to the same token from the license email. The first is used by the import notice; the second is used by the tier-aware runtime."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"4. Verify offline."})," Run ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:`python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),". It must print your paid tier (for example ",e.jsx("code",{className:"text-cyan-300",children:"Pro"}),"), not ",e.jsx("code",{className:"text-cyan-300",children:"Community"}),"; no license server or phone-home is involved."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"5. Preserve the audit record."})," Keep the token and Stripe invoice or payment confirmation together. Never send the token in a URL, issue tracker, chat, or public repository."]})]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed mt-4",children:["If either email is missing or the token fails verification, contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with the Stripe reference. Do not open a duplicate checkout or dispute while delivery is being repaired."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Full License Text"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["The complete, authoritative PolyForm Noncommercial License 1.0.0 text is published at"," ",e.jsx("a",{href:"https://polyformproject.org/licenses/noncommercial/1.0.0",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"polyformproject.org/licenses/noncommercial/1.0.0"})," ","and is bundled verbatim with every package distribution (",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"LICENSE"})," in the wheel). The summaries on this page are for orientation only; where they differ from the license text, the license text governs."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Third-Party Licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR depends on several open-source projects including Stim (Apache 2.0), PyMatching (MIT), NumPy (BSD), and NetworkX (BSD). Full third-party attribution is included in the distribution. All third-party names are trademarks of their respective owners; QECTOR is not affiliated with, sponsored, or endorsed by them."})]})]})})]})}export{m as default}; diff --git a/assets/License-D7X_SmnO.js b/assets/License-D7X_SmnO.js deleted file mode 100644 index 83298cd6..00000000 --- a/assets/License-D7X_SmnO.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as t}from"./index-iVST85F-.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{L as s}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function m(){return e.jsxs(e.Fragment,{children:[e.jsx(t,{title:"License · QECTOR",description:"QECTOR Decoder v3 license terms and v1.0.0 token activation procedure. PolyForm Noncommercial for community use; written commercial licenses available."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PolyForm Noncommercial 1.0.0 · Free for Research · Commercial by Written Agreement · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"License",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 is ",e.jsx("span",{className:"text-primary font-semibold",children:"Source-Available"})," (not free for commercial use). Free for personal, academic, and non-commercial research. Commercial use requires a written agreement from ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"$499"})," (evaluation) or ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"$1,299/yr"}),". The Workbench GUI is free."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"View Pricing"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact for Commercial"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Community License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["QECTOR Decoder v3 is released under the ",e.jsx("strong",{className:"text-primary",children:"PolyForm Noncommercial License 1.0.0"}),". This means you can use, modify, and distribute the software for non-commercial purposes free of charge."]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"Permitted (Non-Commercial)"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Personal research and learning"}),e.jsx("li",{children:"• Academic research and teaching"}),e.jsx("li",{children:"• Non-commercial open-source projects"}),e.jsx("li",{children:"• Publishing benchmark results (with attribution)"})]})]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl mt-4",children:[e.jsx("h3",{className:"text-gold-400 font-semibold text-sm mb-2",children:"Requires Commercial License"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Commercial product integration"}),e.jsx("li",{children:"• Internal commercial R&D with value extraction"}),e.jsx("li",{children:"• Government and defense contracts"}),e.jsx("li",{children:"• Redistribution in commercial products"}),e.jsx("li",{children:"• SaaS / hosted API usage"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Commercial licenses grant internal use rights, written agreements, priority support, and validation packages. See ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing"})," for tier details."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All commercial licenses include: written license agreement, commercial use rights (internal), reproducible artifact bundles, and priority bug review. No redistribution or OEM rights included by default; contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," for OEM/SaaS licensing."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Perpetual licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Solo / Indie Perpetual ($3,299 one-time): same rights as the annual tier for v3.x, including all v3.x patch and minor updates; major version upgrades such as v4.0 require a new license."})]}),e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial Addendum: What a Paid License Changes"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm",children:[e.jsx("li",{children:"• Grants the commercial use that PolyForm Noncommercial withholds, for the seats and term you purchased."}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"Internal use only."})," Redistribution, sublicensing, OEM bundling, and customer-facing SaaS or hosted APIs are excluded unless a written Enterprise/OEM agreement grants them."]}),e.jsxs("li",{children:["• Activated by setting ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to your Ed25519 token. Verification is offline against a public key embedded in the package: no license server, no phone-home, works air-gapped."]}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"The package is identical for licensed and unlicensed users."})," Without a token, a licensing notice prints on import (suppressible with ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_SILENT=1"}),"). No functionality is gated, degraded, or disabled."]}),e.jsx("li",{children:"• No warranty, indemnification, exclusivity, trademark, or patent grant is included by default."})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mt-4",children:["Tokens are delivered instantly and all sales are final: see the"," ",e.jsx(s,{to:"/refund",className:"text-cyan-300 hover:underline",children:"Refund Policy"}),". The $499 evaluation is the creditable way to evaluate before committing."]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"License Activation Procedure"}),e.jsxs("ol",{className:"space-y-3 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Verify the purchase."})," The fulfillment worker accepts only a Stripe-signed live checkout event and records the Stripe reference, customer email, tier, and token in the protected fulfillment ledger."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Install the runtime."})," Use ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"python -m pip install --upgrade qector-decoder-v3==1.0.0"})," from the official PyPI project."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Activate both v1.0.0 variables."})," Set ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to the same token from the license email. The first is used by the import notice; the second is used by the tier-aware runtime."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"4. Verify offline."})," Run ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:'python -c "import qector_decoder_v3 as q; print(q._is_license_active())"'}),". It must print ",e.jsx("code",{className:"text-cyan-300",children:"True"}),"; no license server or phone-home is involved."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"5. Preserve the audit record."})," Keep the token and Stripe invoice or payment confirmation together. Never send the token in a URL, issue tracker, chat, or public repository."]})]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed mt-4",children:["If either email is missing or the token fails verification, contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with the Stripe reference. Do not open a duplicate checkout or dispute while delivery is being repaired."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Full License Text"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["The complete, authoritative PolyForm Noncommercial License 1.0.0 text is published at"," ",e.jsx("a",{href:"https://polyformproject.org/licenses/noncommercial/1.0.0",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"polyformproject.org/licenses/noncommercial/1.0.0"})," ","and is bundled verbatim with every package distribution (",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"LICENSE"})," in the wheel). The summaries on this page are for orientation only; where they differ from the license text, the license text governs."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Third-Party Licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR depends on several open-source projects including Stim (Apache 2.0), PyMatching (MIT), NumPy (BSD), and NetworkX (BSD). Full third-party attribution is included in the distribution. All third-party names are trademarks of their respective owners; QECTOR is not affiliated with, sponsored, or endorsed by them."})]})]})})]})}export{m as default}; diff --git a/assets/License-DC6asr5h.js b/assets/License-DC6asr5h.js deleted file mode 100644 index e7a150c0..00000000 --- a/assets/License-DC6asr5h.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as t}from"./index-CxWP17m6.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{L as s}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function m(){return e.jsxs(e.Fragment,{children:[e.jsx(t,{title:"License · QECTOR",description:"QECTOR Decoder v3 license terms and token activation procedure. PolyForm Noncommercial for community use; commercial plans from $79/month, verified offline (air-gapped)."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PolyForm Noncommercial 1.0.0 · Free for Research · Commercial by Written Agreement · Last updated November 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"License",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 is ",e.jsx("span",{className:"text-primary font-semibold",children:"Source-Available"})," (not free for commercial use). Free for personal, academic, and non-commercial research. Commercial use requires a paid plan from ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"$79/month"}),", with a ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"14-day money-back guarantee"}),". The Workbench GUI is free."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"View Pricing"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact for Commercial"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Community License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["QECTOR Decoder v3 is released under the ",e.jsx("strong",{className:"text-primary",children:"PolyForm Noncommercial License 1.0.0"}),". This means you can use, modify, and distribute the software for non-commercial purposes free of charge."]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"Permitted (Non-Commercial)"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Personal research and learning"}),e.jsx("li",{children:"• Academic research and teaching"}),e.jsx("li",{children:"• Use by universities, public research organisations, charities and government institutions, whatever their source of funding"}),e.jsx("li",{children:"• Non-commercial open-source projects"}),e.jsx("li",{children:"• Publishing benchmark results (with attribution)"})]})]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl mt-4",children:[e.jsx("h3",{className:"text-gold-400 font-semibold text-sm mb-2",children:"Requires Commercial License"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Commercial product integration"}),e.jsx("li",{children:"• Internal commercial R&D with value extraction"}),e.jsx("li",{children:"• Company work on government, defence or university contracts"}),e.jsx("li",{children:"• Redistribution in commercial products"}),e.jsx("li",{children:"• SaaS / hosted API usage"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Commercial licenses grant internal use rights, written agreements, priority support, and validation packages. See ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing"})," for tier details."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All commercial licenses include: written license agreement, commercial use rights (internal), reproducible artifact bundles, and priority bug review. No redistribution or OEM rights included by default; contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," for OEM/SaaS licensing."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Perpetual licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Pro Perpetual ($1,990 one-time): the same rights as Pro, for every 3.x release including all patch and minor updates; a major version such as 4.0 requires a new license. Licenses bought earlier as Solo / Indie Perpetual keep their original terms."})]}),e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial Addendum: What a Paid License Changes"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm",children:[e.jsx("li",{children:"• Grants the commercial use that PolyForm Noncommercial withholds, for the term you purchased."}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"Internal use only."})," Redistribution, sublicensing, OEM bundling, and customer-facing SaaS or hosted APIs are excluded unless a written Enterprise/OEM agreement grants them."]}),e.jsxs("li",{children:["• Activated by setting ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to your Ed25519 token. Verification is offline against a public key embedded in the package: no license server, no phone-home, works air-gapped."]}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"The package is identical for licensed and unlicensed users."})," Without a token, a licensing notice prints on import (suppressible with ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_SILENT=1"}),"). The token does two things: it silences the notice and it unlocks tier-scoped runtime features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and a code-distance tier of 7 (Community), 19 (Pro, Team) or 63 (Lab, Enterprise). CPU decoding is never blocked; distance caps apply only when ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_ENFORCE=1"})," is set."]}),e.jsx("li",{children:"• No warranty, indemnification, exclusivity, trademark, or patent grant is included by default."})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mt-4",children:["Tokens are delivered within minutes, and every plan has a 14-day money-back guarantee on the first payment: see the ",e.jsx(s,{to:"/refund",className:"text-cyan-300 hover:underline",children:"Refund Policy"}),". A refunded licence ends on refund. Plans are on the"," ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"pricing page"}),"."]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"License Activation Procedure"}),e.jsxs("ol",{className:"space-y-3 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Verify the purchase."})," The fulfillment worker accepts only a Stripe-signed live checkout event and records the Stripe reference, customer email, tier, and token in the protected fulfillment ledger."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Install the runtime."})," Use ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:'python -m pip install --upgrade "qector-decoder-v3>=1.0,<2"'})," from the official PyPI project."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Activate both variables."})," Set ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to the same token from the license email. The first is used by the import notice; the second is used by the tier-aware runtime."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"4. Verify offline."})," Run ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:`python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),". It must print your paid tier (for example ",e.jsx("code",{className:"text-cyan-300",children:"Pro"}),"), not ",e.jsx("code",{className:"text-cyan-300",children:"Community"}),"; no license server or phone-home is involved."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"5. Preserve the audit record."})," Keep the token and Stripe invoice or payment confirmation together. Never send the token in a URL, issue tracker, chat, or public repository."]})]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed mt-4",children:["If either email is missing or the token fails verification, contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with the Stripe reference. Do not open a duplicate checkout or dispute while delivery is being repaired."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Full License Text"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["The complete, authoritative PolyForm Noncommercial License 1.0.0 text is published at"," ",e.jsx("a",{href:"https://polyformproject.org/licenses/noncommercial/1.0.0",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"polyformproject.org/licenses/noncommercial/1.0.0"})," ","and is bundled verbatim with every package distribution (",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"LICENSE"})," in the wheel). The summaries on this page are for orientation only; where they differ from the license text, the license text governs."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Third-Party Licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR depends on several open-source projects including Stim (Apache 2.0), PyMatching (MIT), NumPy (BSD), and NetworkX (BSD). Full third-party attribution is included in the distribution. All third-party names are trademarks of their respective owners; QECTOR is not affiliated with, sponsored, or endorsed by them."})]})]})})]})}export{m as default}; diff --git a/assets/License-DDdBqsPy.js b/assets/License-DDdBqsPy.js deleted file mode 100644 index b2cc322f..00000000 --- a/assets/License-DDdBqsPy.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as t}from"./index-Bh9DBCb3.js";import{N as r}from"./NeuralReveal-D-EQoOl2.js";import{L as s}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function m(){return e.jsxs(e.Fragment,{children:[e.jsx(t,{title:"License · QECTOR",description:"QECTOR Decoder v3 license terms and token activation procedure. PolyForm Noncommercial for community use; commercial plans from $79/month, verified offline (air-gapped)."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PolyForm Noncommercial 1.0.0 · Free for Research · Commercial by Written Agreement · Last updated November 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"License",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 is ",e.jsx("span",{className:"text-primary font-semibold",children:"Source-Available"})," (not free for commercial use). Free for personal, academic, and non-commercial research. Commercial use requires a paid plan from ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"$79/month"}),", with a ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"14-day money-back guarantee"}),". The Workbench GUI is free."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"View Pricing"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact for Commercial"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Community License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["QECTOR Decoder v3 is released under the ",e.jsx("strong",{className:"text-primary",children:"PolyForm Noncommercial License 1.0.0"}),". This means you can use, modify, and distribute the software for non-commercial purposes free of charge."]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"Permitted (Non-Commercial)"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Personal research and learning"}),e.jsx("li",{children:"• Academic research and teaching"}),e.jsx("li",{children:"• Use by universities, public research organisations, charities and government institutions, whatever their source of funding"}),e.jsx("li",{children:"• Non-commercial open-source projects"}),e.jsx("li",{children:"• Publishing benchmark results (with attribution)"})]})]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl mt-4",children:[e.jsx("h3",{className:"text-gold-400 font-semibold text-sm mb-2",children:"Requires Commercial License"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Commercial product integration"}),e.jsx("li",{children:"• Internal commercial R&D with value extraction"}),e.jsx("li",{children:"• Company work on government, defence or university contracts"}),e.jsx("li",{children:"• Redistribution in commercial products"}),e.jsx("li",{children:"• SaaS / hosted API usage"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Commercial licenses grant internal use rights, written agreements, priority support, and validation packages. See ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing"})," for tier details."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Every paid plan is governed by the"," ",e.jsx(s,{to:"/license-agreement",className:"text-cyan-300 hover:underline",children:"Commercial Licence Agreement"})," ","(",e.jsx(s,{to:"/fr/license-agreement",className:"text-cyan-300 hover:underline",children:"version française"}),"). All commercial licenses include: commercial use rights (internal, no seat counts), reproducible artifact bundles, and priority bug review. No redistribution or OEM rights included by default; contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," for OEM/SaaS licensing."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Perpetual licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Pro Perpetual ($1,990 one-time): the same rights as Pro, for every 1.x release of qector-decoder-v3, including all patch and minor updates; a new major version such as 2.0 requires a new license. Licenses bought earlier as Solo / Indie Perpetual keep their original terms."})]}),e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial Addendum: What a Paid License Changes"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm",children:[e.jsx("li",{children:"• Grants the commercial use that PolyForm Noncommercial withholds, for the term you purchased."}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"Internal use only."})," Redistribution, sublicensing, OEM bundling, and customer-facing SaaS or hosted APIs are excluded unless a written Enterprise/OEM agreement grants them."]}),e.jsxs("li",{children:["• Activated by setting ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to your Ed25519 token. Verification is offline against a public key embedded in the package: no license server, no phone-home, works air-gapped."]}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"The package is identical for licensed and unlicensed users."})," Without a token, a licensing notice prints on import (suppressible with ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_SILENT=1"}),"). The token does two things: it silences the notice and it unlocks tier-scoped runtime features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and a code-distance tier of 7 (Community), 19 (Pro, Team) or 63 (Lab, Enterprise). CPU decoding is never blocked; distance caps apply only when ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_ENFORCE=1"})," is set."]}),e.jsx("li",{children:"• No warranty, indemnification, exclusivity, trademark, or patent grant is included by default."})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mt-4",children:["Tokens are delivered within minutes, and every plan has a 14-day money-back guarantee on the first payment: see the ",e.jsx(s,{to:"/refund",className:"text-cyan-300 hover:underline",children:"Refund Policy"}),". A refunded licence ends on refund. Plans are on the"," ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"pricing page"}),"."]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"License Activation Procedure"}),e.jsxs("ol",{className:"space-y-3 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Verify the purchase."})," The fulfillment worker accepts only a Stripe-signed live checkout event and records the Stripe reference, customer email, tier, and token in the protected fulfillment ledger."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Install the runtime."})," Use ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:'python -m pip install --upgrade "qector-decoder-v3>=1.0,<2"'})," from the official PyPI project."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Activate both variables."})," Set ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to the same token from the license email. The first is used by the import notice; the second is used by the tier-aware runtime."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"4. Verify offline."})," Run ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:`python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),". It must print your paid tier (for example ",e.jsx("code",{className:"text-cyan-300",children:"Pro"}),"), not ",e.jsx("code",{className:"text-cyan-300",children:"Community"}),"; no license server or phone-home is involved."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"5. Preserve the audit record."})," Keep the token and Stripe invoice or payment confirmation together. Never send the token in a URL, issue tracker, chat, or public repository."]})]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed mt-4",children:["If either email is missing or the token fails verification, contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with the Stripe reference. Do not open a duplicate checkout or dispute while delivery is being repaired."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Full License Text"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["The complete, authoritative PolyForm Noncommercial License 1.0.0 text is published at"," ",e.jsx("a",{href:"https://polyformproject.org/licenses/noncommercial/1.0.0",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"polyformproject.org/licenses/noncommercial/1.0.0"})," ","and is bundled verbatim with every package distribution (",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"LICENSE"})," in the wheel). The summaries on this page are for orientation only; where they differ from the license text, the license text governs."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Third-Party Licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR depends on several open-source projects including Stim (Apache 2.0), PyMatching (MIT), NumPy (BSD), and NetworkX (BSD). Full third-party attribution is included in the distribution. All third-party names are trademarks of their respective owners; QECTOR is not affiliated with, sponsored, or endorsed by them."})]})]})})]})}export{m as default}; diff --git a/assets/License-DHRrrKKE.js b/assets/License-DHRrrKKE.js deleted file mode 100644 index 158c5f81..00000000 --- a/assets/License-DHRrrKKE.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as t}from"./index-BN-vOeL2.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{L as s}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function m(){return e.jsxs(e.Fragment,{children:[e.jsx(t,{title:"License · QECTOR",description:"QECTOR Decoder v3 license terms and token activation procedure. PolyForm Noncommercial for community use; commercial plans from $79/month with a free 14-day trial."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PolyForm Noncommercial 1.0.0 · Free for Research · Commercial by Written Agreement · Last updated November 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"License",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 is ",e.jsx("span",{className:"text-primary font-semibold",children:"Source-Available"})," (not free for commercial use). Free for personal, academic, and non-commercial research. Commercial use requires a paid plan from ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"$79/month"}),", with a ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"free 14-day trial"}),". The Workbench GUI is free."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"View Pricing"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact for Commercial"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Community License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["QECTOR Decoder v3 is released under the ",e.jsx("strong",{className:"text-primary",children:"PolyForm Noncommercial License 1.0.0"}),". This means you can use, modify, and distribute the software for non-commercial purposes free of charge."]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"Permitted (Non-Commercial)"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Personal research and learning"}),e.jsx("li",{children:"• Academic research and teaching"}),e.jsx("li",{children:"• Non-commercial open-source projects"}),e.jsx("li",{children:"• Publishing benchmark results (with attribution)"})]})]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl mt-4",children:[e.jsx("h3",{className:"text-gold-400 font-semibold text-sm mb-2",children:"Requires Commercial License"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Commercial product integration"}),e.jsx("li",{children:"• Internal commercial R&D with value extraction"}),e.jsx("li",{children:"• Government and defense contracts"}),e.jsx("li",{children:"• Redistribution in commercial products"}),e.jsx("li",{children:"• SaaS / hosted API usage"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Commercial licenses grant internal use rights, written agreements, priority support, and validation packages. See ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing"})," for tier details."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All commercial licenses include: written license agreement, commercial use rights (internal), reproducible artifact bundles, and priority bug review. No redistribution or OEM rights included by default; contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," for OEM/SaaS licensing."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Perpetual licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Pro Perpetual ($1,990 one-time): the same rights as Pro for one named user, for every 3.x release including all patch and minor updates; a major version such as 4.0 requires a new license. Licenses bought earlier as Solo / Indie Perpetual keep their original terms."})]}),e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial Addendum: What a Paid License Changes"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm",children:[e.jsx("li",{children:"• Grants the commercial use that PolyForm Noncommercial withholds, for the seats and term you purchased."}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"Internal use only."})," Redistribution, sublicensing, OEM bundling, and customer-facing SaaS or hosted APIs are excluded unless a written Enterprise/OEM agreement grants them."]}),e.jsxs("li",{children:["• Activated by setting ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to your Ed25519 token. Verification is offline against a public key embedded in the package: no license server, no phone-home, works air-gapped."]}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"The package is identical for licensed and unlicensed users."})," Without a token, a licensing notice prints on import (suppressible with ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_SILENT=1"}),"). The token does two things: it silences the notice and it unlocks tier-scoped runtime features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and a code-distance tier of 7 (Community), 19 (Pro, Team) or 63 (Lab, Enterprise). CPU decoding is never blocked; distance caps apply only when ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_ENFORCE=1"})," is set."]}),e.jsx("li",{children:"• No warranty, indemnification, exclusivity, trademark, or patent grant is included by default."})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mt-4",children:["Tokens are delivered within minutes, and every plan has a 14-day money-back guarantee on the first payment: see the ",e.jsx(s,{to:"/refund",className:"text-cyan-300 hover:underline",children:"Refund Policy"}),". A refunded licence ends on refund. Try it first with the free 14-day trial on the"," ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"pricing page"}),"."]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"License Activation Procedure"}),e.jsxs("ol",{className:"space-y-3 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Verify the purchase."})," The fulfillment worker accepts only a Stripe-signed live checkout event and records the Stripe reference, customer email, tier, and token in the protected fulfillment ledger."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Install the runtime."})," Use ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:'python -m pip install --upgrade "qector-decoder-v3>=1.0,<2"'})," from the official PyPI project."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Activate both variables."})," Set ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to the same token from the license email. The first is used by the import notice; the second is used by the tier-aware runtime."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"4. Verify offline."})," Run ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:`python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),". It must print your paid tier (for example ",e.jsx("code",{className:"text-cyan-300",children:"pro"}),"), not ",e.jsx("code",{className:"text-cyan-300",children:"community"}),"; no license server or phone-home is involved."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"5. Preserve the audit record."})," Keep the token and Stripe invoice or payment confirmation together. Never send the token in a URL, issue tracker, chat, or public repository."]})]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed mt-4",children:["If either email is missing or the token fails verification, contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with the Stripe reference. Do not open a duplicate checkout or dispute while delivery is being repaired."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Full License Text"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["The complete, authoritative PolyForm Noncommercial License 1.0.0 text is published at"," ",e.jsx("a",{href:"https://polyformproject.org/licenses/noncommercial/1.0.0",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"polyformproject.org/licenses/noncommercial/1.0.0"})," ","and is bundled verbatim with every package distribution (",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"LICENSE"})," in the wheel). The summaries on this page are for orientation only; where they differ from the license text, the license text governs."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Third-Party Licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR depends on several open-source projects including Stim (Apache 2.0), PyMatching (MIT), NumPy (BSD), and NetworkX (BSD). Full third-party attribution is included in the distribution. All third-party names are trademarks of their respective owners; QECTOR is not affiliated with, sponsored, or endorsed by them."})]})]})})]})}export{m as default}; diff --git a/assets/License-DxqQ4a3A.js b/assets/License-DxqQ4a3A.js deleted file mode 100644 index 8ee1c9a6..00000000 --- a/assets/License-DxqQ4a3A.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as t,L as s}from"./index-CcwlvHYJ.js";import{N as r}from"./NeuralReveal-Bsl9IGCr.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function l(){return e.jsxs(e.Fragment,{children:[e.jsx(t,{title:"License · QECTOR",description:"QECTOR Decoder v3 license terms and token activation procedure. PolyForm Noncommercial for community use; commercial plans from $79/month, verified offline (air-gapped)."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PolyForm Noncommercial 1.0.0 · Free for Research · Commercial by Written Agreement · Last updated November 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"License",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 is ",e.jsx("span",{className:"text-primary font-semibold",children:"Source-Available"})," (not free for commercial use). Free for personal, academic, and non-commercial research. Commercial use requires a paid plan from ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"$79/month"}),", with a ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"14-day money-back guarantee"}),". The Workbench GUI is free."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"View Pricing"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact for Commercial"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Community License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["QECTOR Decoder v3 is released under the ",e.jsx("strong",{className:"text-primary",children:"PolyForm Noncommercial License 1.0.0"}),". This means you can use, modify, and distribute the software for non-commercial purposes free of charge."]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"Permitted (Non-Commercial)"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Personal research and learning"}),e.jsx("li",{children:"• Academic research and teaching"}),e.jsx("li",{children:"• Use by universities, public research organisations, charities and government institutions, whatever their source of funding"}),e.jsx("li",{children:"• Non-commercial open-source projects"}),e.jsx("li",{children:"• Publishing benchmark results (with attribution)"})]})]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl mt-4",children:[e.jsx("h3",{className:"text-gold-400 font-semibold text-sm mb-2",children:"Requires Commercial License"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Commercial product integration"}),e.jsx("li",{children:"• Internal commercial R&D with value extraction"}),e.jsx("li",{children:"• Company work on government, defence or university contracts"}),e.jsx("li",{children:"• Redistribution in commercial products"}),e.jsx("li",{children:"• SaaS / hosted API usage"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Commercial licenses grant internal use rights, written agreements, priority support, and validation packages. See ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing"})," for tier details."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Every paid plan is governed by the"," ",e.jsx(s,{to:"/license-agreement",className:"text-cyan-300 hover:underline",children:"Commercial Licence Agreement"})," ","(",e.jsx(s,{to:"/fr/license-agreement",className:"text-cyan-300 hover:underline",children:"version française"}),"). All commercial licenses include: commercial use rights (internal, no seat counts), reproducible artifact bundles, and priority bug review. No redistribution or OEM rights included by default; contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," for OEM/SaaS licensing."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Perpetual licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Pro Perpetual ($1,990 one-time): the same rights as Pro, for every 1.x release of qector-decoder-v3, including all patch and minor updates; a new major version such as 2.0 requires a new license. Licenses bought earlier as Solo / Indie Perpetual keep their original terms."})]}),e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial Addendum: What a Paid License Changes"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm",children:[e.jsx("li",{children:"• Grants the commercial use that PolyForm Noncommercial withholds, for the term you purchased."}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"Internal use only."})," Redistribution, sublicensing, OEM bundling, and customer-facing SaaS or hosted APIs are excluded unless a written Enterprise/OEM agreement grants them."]}),e.jsxs("li",{children:["• Activated by setting ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to your Ed25519 token. Verification is offline against a public key embedded in the package: no license server, no phone-home, works air-gapped."]}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"The package is identical for licensed and unlicensed users."})," Without a token, a licensing notice prints on import (suppressible with ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_SILENT=1"}),"). The token does two things: it silences the notice and it unlocks tier-scoped runtime features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and a code-distance tier of 7 (Community), 19 (Pro, Team) or 63 (Lab, Enterprise). CPU decoding is never blocked; distance caps apply only when ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_ENFORCE=1"})," is set."]}),e.jsx("li",{children:"• No warranty, indemnification, exclusivity, trademark, or patent grant is included by default."})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mt-4",children:["Tokens are delivered within minutes, and every plan has a 14-day money-back guarantee on the first payment: see the ",e.jsx(s,{to:"/refund",className:"text-cyan-300 hover:underline",children:"Refund Policy"}),". A refunded licence ends on refund. Plans are on the"," ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"pricing page"}),"."]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"License Activation Procedure"}),e.jsxs("ol",{className:"space-y-3 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Verify the purchase."})," The fulfillment worker accepts only a Stripe-signed live checkout event and records the Stripe reference, customer email, tier, and token in the protected fulfillment ledger."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Install the runtime."})," Use ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:'python -m pip install --upgrade "qector-decoder-v3>=1.0,<2"'})," from the official PyPI project."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Activate both variables."})," Set ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to the same token from the license email. The first is used by the import notice; the second is used by the tier-aware runtime."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"4. Verify offline."})," Run ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:`python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),". It must print your paid tier (for example ",e.jsx("code",{className:"text-cyan-300",children:"Pro"}),"), not ",e.jsx("code",{className:"text-cyan-300",children:"Community"}),"; no license server or phone-home is involved."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"5. Preserve the audit record."})," Keep the token and Stripe invoice or payment confirmation together. Never send the token in a URL, issue tracker, chat, or public repository."]})]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed mt-4",children:["If either email is missing or the token fails verification, contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with the Stripe reference. Do not open a duplicate checkout or dispute while delivery is being repaired."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Full License Text"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["The complete, authoritative PolyForm Noncommercial License 1.0.0 text is published at"," ",e.jsx("a",{href:"https://polyformproject.org/licenses/noncommercial/1.0.0",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"polyformproject.org/licenses/noncommercial/1.0.0"})," ","and is bundled verbatim with every package distribution (",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"LICENSE"})," in the wheel). The summaries on this page are for orientation only; where they differ from the license text, the license text governs."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Third-Party Licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR depends on several open-source projects including Stim (Apache 2.0), PyMatching (MIT), NumPy (BSD), and NetworkX (BSD). Full third-party attribution is included in the distribution. All third-party names are trademarks of their respective owners; QECTOR is not affiliated with, sponsored, or endorsed by them."})]})]})})]})}export{l as default}; diff --git a/assets/License-PdOsBDOv.js b/assets/License-PdOsBDOv.js deleted file mode 100644 index b0bd8430..00000000 --- a/assets/License-PdOsBDOv.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as t,L as s}from"./index-c1PDYu0j.js";import{N as r}from"./NeuralReveal-uYarhiMA.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";function l(){return e.jsxs(e.Fragment,{children:[e.jsx(t,{title:"License · QECTOR",description:"QECTOR Decoder v3 license terms and token activation procedure. PolyForm Noncommercial for community use; commercial plans from $79/month, verified offline (air-gapped)."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PolyForm Noncommercial 1.0.0 · Free for Research · Commercial by Written Agreement · Last updated November 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"License",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 is ",e.jsx("span",{className:"text-primary font-semibold",children:"Source-Available"})," (not free for commercial use). Free for personal, academic, and non-commercial research. Commercial use requires a paid plan from ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"$79/month"}),", with a ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"14-day money-back guarantee"}),". The Workbench GUI is free."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"View Pricing"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact for Commercial"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Community License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["QECTOR Decoder v3 is released under the ",e.jsx("strong",{className:"text-primary",children:"PolyForm Noncommercial License 1.0.0"}),". This means you can use, modify, and distribute the software for non-commercial purposes free of charge."]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"Permitted (Non-Commercial)"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Personal research and learning"}),e.jsx("li",{children:"• Academic research and teaching"}),e.jsx("li",{children:"• Use by universities, public research organisations, charities and government institutions, whatever their source of funding"}),e.jsx("li",{children:"• Non-commercial open-source projects"}),e.jsx("li",{children:"• Publishing benchmark results (with attribution)"})]})]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl mt-4",children:[e.jsx("h3",{className:"text-gold-400 font-semibold text-sm mb-2",children:"Requires Commercial License"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Commercial product integration"}),e.jsx("li",{children:"• Internal commercial R&D with value extraction"}),e.jsx("li",{children:"• Company work on government, defence or university contracts"}),e.jsx("li",{children:"• Redistribution in commercial products"}),e.jsx("li",{children:"• SaaS / hosted API usage"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Commercial licenses grant internal use rights, written agreements, priority support, and validation packages. See ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing"})," for tier details."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Every paid plan is governed by the"," ",e.jsx(s,{to:"/license-agreement",className:"text-cyan-300 hover:underline",children:"Commercial Licence Agreement"})," ","(",e.jsx(s,{to:"/fr/license-agreement",className:"text-cyan-300 hover:underline",children:"version française"}),"). All commercial licenses include: commercial use rights (internal, no seat counts), reproducible artifact bundles, and priority bug review. No redistribution or OEM rights included by default; contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," for OEM/SaaS licensing."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Perpetual licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Pro Perpetual ($1,990 one-time): the same rights as Pro, for every 1.x release of qector-decoder-v3, including all patch and minor updates; a new major version such as 2.0 requires a new license. Licenses bought earlier as Solo / Indie Perpetual keep their original terms."})]}),e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial Addendum: What a Paid License Changes"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm",children:[e.jsx("li",{children:"• Grants the commercial use that PolyForm Noncommercial withholds, for the term you purchased."}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"Internal use only."})," Redistribution, sublicensing, OEM bundling, and customer-facing SaaS or hosted APIs are excluded unless a written Enterprise/OEM agreement grants them."]}),e.jsxs("li",{children:["• Activated by setting ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to your Ed25519 token. Verification is offline against a public key embedded in the package: no license server, no phone-home, works air-gapped."]}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"The package is identical for licensed and unlicensed users."})," Without a token, a licensing notice prints on import (suppressible with ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_SILENT=1"}),"). The token does two things: it silences the notice and it unlocks tier-scoped runtime features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and a code-distance tier of 7 (Community), 19 (Pro, Team) or 63 (Lab, Enterprise). CPU decoding is never blocked; distance caps apply only when ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_ENFORCE=1"})," is set."]}),e.jsx("li",{children:"• No warranty, indemnification, exclusivity, trademark, or patent grant is included by default."})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mt-4",children:["Tokens are delivered within minutes, and every plan has a 14-day money-back guarantee on the first payment: see the ",e.jsx(s,{to:"/refund",className:"text-cyan-300 hover:underline",children:"Refund Policy"}),". A refunded licence ends on refund. Plans are on the"," ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"pricing page"}),"."]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"License Activation Procedure"}),e.jsxs("ol",{className:"space-y-3 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Verify the purchase."})," The fulfillment worker accepts only a Stripe-signed live checkout event and records the Stripe reference, customer email, tier, and token in the protected fulfillment ledger."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Install the runtime."})," Use ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:'python -m pip install --upgrade "qector-decoder-v3>=1.0,<2"'})," from the official PyPI project."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Activate both variables."})," Set ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to the same token from the license email. The first is used by the import notice; the second is used by the tier-aware runtime."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"4. Verify offline."})," Run ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:`python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),". It must print your paid tier (for example ",e.jsx("code",{className:"text-cyan-300",children:"Pro"}),"), not ",e.jsx("code",{className:"text-cyan-300",children:"Community"}),"; no license server or phone-home is involved."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"5. Preserve the audit record."})," Keep the token and Stripe invoice or payment confirmation together. Never send the token in a URL, issue tracker, chat, or public repository."]})]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed mt-4",children:["If either email is missing or the token fails verification, contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with the Stripe reference. Do not open a duplicate checkout or dispute while delivery is being repaired."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Full License Text"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["The complete, authoritative PolyForm Noncommercial License 1.0.0 text is published at"," ",e.jsx("a",{href:"https://polyformproject.org/licenses/noncommercial/1.0.0",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"polyformproject.org/licenses/noncommercial/1.0.0"})," ","and is bundled verbatim with every package distribution (",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"LICENSE"})," in the wheel). The summaries on this page are for orientation only; where they differ from the license text, the license text governs."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Third-Party Licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR depends on several open-source projects including Stim (Apache 2.0), PyMatching (MIT), NumPy (BSD), and NetworkX (BSD). Full third-party attribution is included in the distribution. All third-party names are trademarks of their respective owners; QECTOR is not affiliated with, sponsored, or endorsed by them."})]})]})})]})}export{l as default}; diff --git a/assets/License-qW4Azk-u.js b/assets/License-qW4Azk-u.js deleted file mode 100644 index 9b028e52..00000000 --- a/assets/License-qW4Azk-u.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as t}from"./index-CqAA-ZXu.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{L as s}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function m(){return e.jsxs(e.Fragment,{children:[e.jsx(t,{title:"License · QECTOR",description:"QECTOR Decoder v3 license terms and token activation procedure. PolyForm Noncommercial for community use; commercial plans from $79/month with a free 14-day trial."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PolyForm Noncommercial 1.0.0 · Free for Research · Commercial by Written Agreement · Last updated November 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"License",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 is ",e.jsx("span",{className:"text-primary font-semibold",children:"Source-Available"})," (not free for commercial use). Free for personal, academic, and non-commercial research. Commercial use requires a paid plan from ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"$79/month"}),", with a ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"free 14-day trial"}),". The Workbench GUI is free."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"View Pricing"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact for Commercial"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Community License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["QECTOR Decoder v3 is released under the ",e.jsx("strong",{className:"text-primary",children:"PolyForm Noncommercial License 1.0.0"}),". This means you can use, modify, and distribute the software for non-commercial purposes free of charge."]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"Permitted (Non-Commercial)"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Personal research and learning"}),e.jsx("li",{children:"• Academic research and teaching"}),e.jsx("li",{children:"• Use by universities, public research organisations, charities and government institutions, whatever their source of funding"}),e.jsx("li",{children:"• Non-commercial open-source projects"}),e.jsx("li",{children:"• Publishing benchmark results (with attribution)"})]})]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl mt-4",children:[e.jsx("h3",{className:"text-gold-400 font-semibold text-sm mb-2",children:"Requires Commercial License"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Commercial product integration"}),e.jsx("li",{children:"• Internal commercial R&D with value extraction"}),e.jsx("li",{children:"• Company work on government, defence or university contracts"}),e.jsx("li",{children:"• Redistribution in commercial products"}),e.jsx("li",{children:"• SaaS / hosted API usage"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Commercial licenses grant internal use rights, written agreements, priority support, and validation packages. See ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing"})," for tier details."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All commercial licenses include: written license agreement, commercial use rights (internal), reproducible artifact bundles, and priority bug review. No redistribution or OEM rights included by default; contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," for OEM/SaaS licensing."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Perpetual licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Pro Perpetual ($1,990 one-time): the same rights as Pro for one named user, for every 3.x release including all patch and minor updates; a major version such as 4.0 requires a new license. Licenses bought earlier as Solo / Indie Perpetual keep their original terms."})]}),e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial Addendum: What a Paid License Changes"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm",children:[e.jsx("li",{children:"• Grants the commercial use that PolyForm Noncommercial withholds, for the seats and term you purchased."}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"Internal use only."})," Redistribution, sublicensing, OEM bundling, and customer-facing SaaS or hosted APIs are excluded unless a written Enterprise/OEM agreement grants them."]}),e.jsxs("li",{children:["• Activated by setting ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to your Ed25519 token. Verification is offline against a public key embedded in the package: no license server, no phone-home, works air-gapped."]}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"The package is identical for licensed and unlicensed users."})," Without a token, a licensing notice prints on import (suppressible with ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_SILENT=1"}),"). The token does two things: it silences the notice and it unlocks tier-scoped runtime features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and a code-distance tier of 7 (Community), 19 (Pro, Team) or 63 (Lab, Enterprise). CPU decoding is never blocked; distance caps apply only when ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_ENFORCE=1"})," is set."]}),e.jsx("li",{children:"• No warranty, indemnification, exclusivity, trademark, or patent grant is included by default."})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mt-4",children:["Tokens are delivered within minutes, and every plan has a 14-day money-back guarantee on the first payment: see the ",e.jsx(s,{to:"/refund",className:"text-cyan-300 hover:underline",children:"Refund Policy"}),". A refunded licence ends on refund. Try it first with the free 14-day trial on the"," ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"pricing page"}),"."]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"License Activation Procedure"}),e.jsxs("ol",{className:"space-y-3 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Verify the purchase."})," The fulfillment worker accepts only a Stripe-signed live checkout event and records the Stripe reference, customer email, tier, and token in the protected fulfillment ledger."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Install the runtime."})," Use ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:'python -m pip install --upgrade "qector-decoder-v3>=1.0,<2"'})," from the official PyPI project."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Activate both variables."})," Set ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to the same token from the license email. The first is used by the import notice; the second is used by the tier-aware runtime."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"4. Verify offline."})," Run ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:`python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),". It must print your paid tier (for example ",e.jsx("code",{className:"text-cyan-300",children:"Pro"}),"), not ",e.jsx("code",{className:"text-cyan-300",children:"Community"}),"; no license server or phone-home is involved."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"5. Preserve the audit record."})," Keep the token and Stripe invoice or payment confirmation together. Never send the token in a URL, issue tracker, chat, or public repository."]})]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed mt-4",children:["If either email is missing or the token fails verification, contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with the Stripe reference. Do not open a duplicate checkout or dispute while delivery is being repaired."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Full License Text"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["The complete, authoritative PolyForm Noncommercial License 1.0.0 text is published at"," ",e.jsx("a",{href:"https://polyformproject.org/licenses/noncommercial/1.0.0",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"polyformproject.org/licenses/noncommercial/1.0.0"})," ","and is bundled verbatim with every package distribution (",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"LICENSE"})," in the wheel). The summaries on this page are for orientation only; where they differ from the license text, the license text governs."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Third-Party Licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR depends on several open-source projects including Stim (Apache 2.0), PyMatching (MIT), NumPy (BSD), and NetworkX (BSD). Full third-party attribution is included in the distribution. All third-party names are trademarks of their respective owners; QECTOR is not affiliated with, sponsored, or endorsed by them."})]})]})})]})}export{m as default}; diff --git a/assets/License-usilVdvV.js b/assets/License-usilVdvV.js deleted file mode 100644 index 567a94af..00000000 --- a/assets/License-usilVdvV.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as t}from"./index-CpdATiEY.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{L as s}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function m(){return e.jsxs(e.Fragment,{children:[e.jsx(t,{title:"License · QECTOR",description:"QECTOR Decoder v3 license terms and token activation procedure. PolyForm Noncommercial for community use; commercial plans from $79/month with a free 14-day trial."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PolyForm Noncommercial 1.0.0 · Free for Research · Commercial by Written Agreement · Last updated November 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"License",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["QECTOR Decoder v3 is ",e.jsx("span",{className:"text-primary font-semibold",children:"Source-Available"})," (not free for commercial use). Free for personal, academic, and non-commercial research. Commercial use requires a paid plan from ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"$79/month"}),", with a ",e.jsx("span",{className:"text-cyan-300 font-semibold",children:"free 14-day trial"}),". The Workbench GUI is free."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(s,{to:"/pricing",className:"btn-cyan",children:"View Pricing"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact for Commercial"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Community License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["QECTOR Decoder v3 is released under the ",e.jsx("strong",{className:"text-primary",children:"PolyForm Noncommercial License 1.0.0"}),". This means you can use, modify, and distribute the software for non-commercial purposes free of charge."]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"Permitted (Non-Commercial)"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Personal research and learning"}),e.jsx("li",{children:"• Academic research and teaching"}),e.jsx("li",{children:"• Non-commercial open-source projects"}),e.jsx("li",{children:"• Publishing benchmark results (with attribution)"})]})]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl mt-4",children:[e.jsx("h3",{className:"text-gold-400 font-semibold text-sm mb-2",children:"Requires Commercial License"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Commercial product integration"}),e.jsx("li",{children:"• Internal commercial R&D with value extraction"}),e.jsx("li",{children:"• Government and defense contracts"}),e.jsx("li",{children:"• Redistribution in commercial products"}),e.jsx("li",{children:"• SaaS / hosted API usage"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Commercial licenses grant internal use rights, written agreements, priority support, and validation packages. See ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing"})," for tier details."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All commercial licenses include: written license agreement, commercial use rights (internal), reproducible artifact bundles, and priority bug review. No redistribution or OEM rights included by default; contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," for OEM/SaaS licensing."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Perpetual licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Pro Perpetual ($1,990 one-time): the same rights as Pro for one named user, for every 3.x release including all patch and minor updates; a major version such as 4.0 requires a new license. Licenses bought earlier as Solo / Indie Perpetual keep their original terms."})]}),e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commercial Addendum: What a Paid License Changes"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm",children:[e.jsx("li",{children:"• Grants the commercial use that PolyForm Noncommercial withholds, for the seats and term you purchased."}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"Internal use only."})," Redistribution, sublicensing, OEM bundling, and customer-facing SaaS or hosted APIs are excluded unless a written Enterprise/OEM agreement grants them."]}),e.jsxs("li",{children:["• Activated by setting ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to your Ed25519 token. Verification is offline against a public key embedded in the package: no license server, no phone-home, works air-gapped."]}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"The package is identical for licensed and unlicensed users."})," Without a token, a licensing notice prints on import (suppressible with ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_SILENT=1"}),"). The token does two things: it silences the notice and it unlocks tier-scoped runtime features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and a code-distance tier of 7 (Community), 19 (Pro, Team) or 63 (Lab, Enterprise). CPU decoding is never blocked; distance caps apply only when ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_ENFORCE=1"})," is set."]}),e.jsx("li",{children:"• No warranty, indemnification, exclusivity, trademark, or patent grant is included by default."})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mt-4",children:["Tokens are delivered within minutes, and every plan has a 14-day money-back guarantee on the first payment: see the ",e.jsx(s,{to:"/refund",className:"text-cyan-300 hover:underline",children:"Refund Policy"}),". A refunded licence ends on refund. Try it first with the free 14-day trial on the"," ",e.jsx(s,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"pricing page"}),"."]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"License Activation Procedure"}),e.jsxs("ol",{className:"space-y-3 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Verify the purchase."})," The fulfillment worker accepts only a Stripe-signed live checkout event and records the Stripe reference, customer email, tier, and token in the protected fulfillment ledger."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Install the runtime."})," Use ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:'python -m pip install --upgrade "qector-decoder-v3>=1.0,<2"'})," from the official PyPI project."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Activate both variables."})," Set ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE"})," and ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"QECTOR_LICENSE_KEY"})," to the same token from the license email. The first is used by the import notice; the second is used by the tier-aware runtime."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"4. Verify offline."})," Run ",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:`python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),". It must print your paid tier (for example ",e.jsx("code",{className:"text-cyan-300",children:"pro"}),"), not ",e.jsx("code",{className:"text-cyan-300",children:"community"}),"; no license server or phone-home is involved."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"5. Preserve the audit record."})," Keep the token and Stripe invoice or payment confirmation together. Never send the token in a URL, issue tracker, chat, or public repository."]})]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed mt-4",children:["If either email is missing or the token fails verification, contact ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with the Stripe reference. Do not open a duplicate checkout or dispute while delivery is being repaired."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Full License Text"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["The complete, authoritative PolyForm Noncommercial License 1.0.0 text is published at"," ",e.jsx("a",{href:"https://polyformproject.org/licenses/noncommercial/1.0.0",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"polyformproject.org/licenses/noncommercial/1.0.0"})," ","and is bundled verbatim with every package distribution (",e.jsx("code",{className:"text-cyan-300 font-mono text-xs",children:"LICENSE"})," in the wheel). The summaries on this page are for orientation only; where they differ from the license text, the license text governs."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Third-Party Licenses"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR depends on several open-source projects including Stim (Apache 2.0), PyMatching (MIT), NumPy (BSD), and NetworkX (BSD). Full third-party attribution is included in the distribution. All third-party names are trademarks of their respective owners; QECTOR is not affiliated with, sponsored, or endorsed by them."})]})]})})]})}export{m as default}; diff --git a/assets/LicenseAgreement-6bmCtLLY.js b/assets/LicenseAgreement-6bmCtLLY.js deleted file mode 100644 index 21a34034..00000000 --- a/assets/LicenseAgreement-6bmCtLLY.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{L as r}from"./LegalPage-k7aoVn24.js";import{l as t}from"./licenseAgreement-SdRZXyQm.js";import"./index-CCmwjNGU.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-uYarhiMA.js";function f(){return e.jsx(r,{doc:t})}export{f as default}; diff --git a/assets/LicenseAgreement-BnmISf1J.js b/assets/LicenseAgreement-BnmISf1J.js deleted file mode 100644 index aa83a8cb..00000000 --- a/assets/LicenseAgreement-BnmISf1J.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{L as r}from"./LegalPage-D-Mi7GTG.js";import{l as t}from"./licenseAgreement-BVRBs70C.js";import"./index-c1PDYu0j.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-uYarhiMA.js";function f(){return e.jsx(r,{doc:t})}export{f as default}; diff --git a/assets/LicenseAgreement-CFfEeDQ9.js b/assets/LicenseAgreement-CFfEeDQ9.js deleted file mode 100644 index 6cbc84d0..00000000 --- a/assets/LicenseAgreement-CFfEeDQ9.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{L as r}from"./LegalPage-BXZvemzZ.js";import{l as t}from"./licenseAgreement-BVRBs70C.js";import"./index-CcwlvHYJ.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-Bsl9IGCr.js";function f(){return e.jsx(r,{doc:t})}export{f as default}; diff --git a/assets/LicenseAgreement-DNUn9QnG.js b/assets/LicenseAgreement-DNUn9QnG.js deleted file mode 100644 index b915f6db..00000000 --- a/assets/LicenseAgreement-DNUn9QnG.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as t}from"./LegalPage-CclXHnEm.js";import{l as e}from"./licenseAgreement-BCkY28fp.js";import"./index-abfjMTlQ.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-D-EQoOl2.js";function g(){return r.jsx(t,{doc:e})}export{g as default}; diff --git a/assets/LicenseAgreement-DRoDblCm.js b/assets/LicenseAgreement-DRoDblCm.js deleted file mode 100644 index 4168e2fd..00000000 --- a/assets/LicenseAgreement-DRoDblCm.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{L as r}from"./LegalPage-OlrhtE5C.js";import{l as t}from"./licenseAgreement-BVRBs70C.js";import"./index-PdoH5kLF.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-Bsl9IGCr.js";function f(){return e.jsx(r,{doc:t})}export{f as default}; diff --git a/assets/LicenseAgreement-DybwV0lD.js b/assets/LicenseAgreement-DybwV0lD.js deleted file mode 100644 index 750e1c1d..00000000 --- a/assets/LicenseAgreement-DybwV0lD.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{L as r}from"./LegalPage-CFP-uSSS.js";import{l as t}from"./licenseAgreement-BVRBs70C.js";import"./index-DayaklK-.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-uYarhiMA.js";function f(){return e.jsx(r,{doc:t})}export{f as default}; diff --git a/assets/LicenseAgreement-prqWmpN4.js b/assets/LicenseAgreement-prqWmpN4.js deleted file mode 100644 index d05f04b8..00000000 --- a/assets/LicenseAgreement-prqWmpN4.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as t}from"./LegalPage-DvyIDT6j.js";import{l as e}from"./licenseAgreement-BVRBs70C.js";import"./index-Bh9DBCb3.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-D-EQoOl2.js";function g(){return r.jsx(t,{doc:e})}export{g as default}; diff --git a/assets/LicenseAgreementFR-B4ZVCapm.js b/assets/LicenseAgreementFR-B4ZVCapm.js deleted file mode 100644 index a2535b37..00000000 --- a/assets/LicenseAgreementFR-B4ZVCapm.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as e}from"./LegalPage-BXZvemzZ.js";import{a as t}from"./licenseAgreement-BVRBs70C.js";import"./index-CcwlvHYJ.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-Bsl9IGCr.js";function f(){return r.jsx(e,{doc:t})}export{f as default}; diff --git a/assets/LicenseAgreementFR-CB5VPHTj.js b/assets/LicenseAgreementFR-CB5VPHTj.js deleted file mode 100644 index adf34146..00000000 --- a/assets/LicenseAgreementFR-CB5VPHTj.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as t}from"./LegalPage-CclXHnEm.js";import{a as e}from"./licenseAgreement-BCkY28fp.js";import"./index-abfjMTlQ.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-D-EQoOl2.js";function g(){return r.jsx(t,{doc:e})}export{g as default}; diff --git a/assets/LicenseAgreementFR-CCa0fXfI.js b/assets/LicenseAgreementFR-CCa0fXfI.js deleted file mode 100644 index ce4ec603..00000000 --- a/assets/LicenseAgreementFR-CCa0fXfI.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as e}from"./LegalPage-k7aoVn24.js";import{a as t}from"./licenseAgreement-SdRZXyQm.js";import"./index-CCmwjNGU.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-uYarhiMA.js";function f(){return r.jsx(e,{doc:t})}export{f as default}; diff --git a/assets/LicenseAgreementFR-D5JK6868.js b/assets/LicenseAgreementFR-D5JK6868.js deleted file mode 100644 index 01d7319d..00000000 --- a/assets/LicenseAgreementFR-D5JK6868.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as e}from"./LegalPage-D-Mi7GTG.js";import{a as t}from"./licenseAgreement-BVRBs70C.js";import"./index-c1PDYu0j.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-uYarhiMA.js";function f(){return r.jsx(e,{doc:t})}export{f as default}; diff --git a/assets/LicenseAgreementFR-IumvCzu-.js b/assets/LicenseAgreementFR-IumvCzu-.js deleted file mode 100644 index 0617e732..00000000 --- a/assets/LicenseAgreementFR-IumvCzu-.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as e}from"./LegalPage-OlrhtE5C.js";import{a as t}from"./licenseAgreement-BVRBs70C.js";import"./index-PdoH5kLF.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-Bsl9IGCr.js";function f(){return r.jsx(e,{doc:t})}export{f as default}; diff --git a/assets/LicenseAgreementFR-S73MctF5.js b/assets/LicenseAgreementFR-S73MctF5.js deleted file mode 100644 index 2c35e338..00000000 --- a/assets/LicenseAgreementFR-S73MctF5.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as e}from"./LegalPage-CFP-uSSS.js";import{a as t}from"./licenseAgreement-BVRBs70C.js";import"./index-DayaklK-.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-uYarhiMA.js";function f(){return r.jsx(e,{doc:t})}export{f as default}; diff --git a/assets/LicenseAgreementFR-vtWAZWNF.js b/assets/LicenseAgreementFR-vtWAZWNF.js deleted file mode 100644 index 01940a0e..00000000 --- a/assets/LicenseAgreementFR-vtWAZWNF.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as t}from"./LegalPage-DvyIDT6j.js";import{a as e}from"./licenseAgreement-BVRBs70C.js";import"./index-Bh9DBCb3.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-D-EQoOl2.js";function g(){return r.jsx(t,{doc:e})}export{g as default}; diff --git a/assets/LicenseFR-Ckd0MEiL.js b/assets/LicenseFR-Ckd0MEiL.js deleted file mode 100644 index 9fecddc3..00000000 --- a/assets/LicenseFR-Ckd0MEiL.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as i,e as n,P as r,L as a}from"./index-CCmwjNGU.js";import{N as t}from"./NeuralReveal-uYarhiMA.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const s="text-cyan-300 font-mono text-xs";function u(){return e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Licence · QECTOR",description:`Conditions de licence de QECTOR Decoder v3 et procédure d’activation du jeton. PolyForm Noncommercial pour l’usage communautaire; forfaits commerciaux dès ${n(r.proMonthly)}/mois, vérifiés hors ligne.`,lang:"fr",alternates:[{lang:"en",href:"https://qector.store/license/"},{lang:"fr",href:"https://qector.store/fr/license/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"PolyForm Noncommercial 1.0.0 · Gratuit pour la recherche · Usage commercial sous licence · Mis à jour en novembre 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(t,{text:"Licence",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Le code source de QECTOR Decoder v3 est ",e.jsx("span",{className:"text-primary font-semibold",children:"disponible"}),", mais son usage commercial n’est pas gratuit. Gratuit pour l’usage personnel, académique et la recherche non commerciale. L’usage commercial exige un forfait payant dès"," ",e.jsxs("span",{className:"text-cyan-300 font-semibold",children:[n(r.proMonthly),"/mois"]}),", avec une"," ",e.jsxs("span",{className:"text-cyan-300 font-semibold",children:["garantie de remboursement de ",r.refundDays," jours"]}),". Le Workbench est gratuit."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/fr/pricing",className:"btn-cyan",children:"Voir les tarifs"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Nous écrire"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Licence communautaire"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["QECTOR Decoder v3 est publié sous la ",e.jsx("strong",{className:"text-primary",children:"PolyForm Noncommercial License 1.0.0"}),". Vous pouvez utiliser, modifier et distribuer le logiciel gratuitement à des fins non commerciales."]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"Permis (non commercial)"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Recherche et apprentissage personnels"}),e.jsx("li",{children:"• Recherche et enseignement universitaires"}),e.jsx("li",{children:"• Usage par les universités, organismes de recherche publics, organismes de bienfaisance et institutions gouvernementales, quelle que soit leur source de financement"}),e.jsx("li",{children:"• Projets libres non commerciaux"}),e.jsx("li",{children:"• Publication de résultats de mesures (avec attribution)"})]})]}),e.jsxs("div",{className:"p-4 bg-void rounded-xl mt-4",children:[e.jsx("h3",{className:"text-gold-400 font-semibold text-sm mb-2",children:"Exige une licence commerciale"}),e.jsxs("ul",{className:"space-y-1 text-secondary text-sm",children:[e.jsx("li",{children:"• Intégration dans un produit commercial"}),e.jsx("li",{children:"• R-D commerciale interne"}),e.jsx("li",{children:"• Travail d’une entreprise dans le cadre de contrats gouvernementaux, de défense ou universitaires"}),e.jsx("li",{children:"• Redistribution dans des produits commerciaux"}),e.jsx("li",{children:"• Usage en SaaS ou par API hébergée"})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Licence commerciale"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Chaque forfait payant est régi par le"," ",e.jsx(a,{to:"/fr/license-agreement",className:"text-cyan-300 hover:underline",children:"Contrat de licence commerciale"})," ","(",e.jsx(a,{to:"/license-agreement",hrefLang:"en",className:"text-cyan-300 hover:underline",children:"English version"}),"). Toutes les licences commerciales comprennent le droit d’usage commercial (interne, sans nombre de postes), des ensembles d’artefacts reproductibles et l’examen prioritaire des bogues. La redistribution et les droits OEM ne sont pas inclus par défaut; écrivez à ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," pour une licence OEM ou SaaS. Le détail des paliers est sur la page ",e.jsx(a,{to:"/fr/pricing",className:"text-cyan-300 hover:underline",children:"Tarifs"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Licences perpétuelles"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Pro Perpétuel (",n(r.proPerpetual),", paiement unique) : les mêmes droits que Pro, pour toutes les versions 1.x de qector-decoder-v3, y compris les correctifs et les mises à jour mineures; une nouvelle version majeure comme la 2.0 exige une nouvelle licence. Les licences achetées auparavant sous le nom Solo / Indie Perpétuel conservent leurs conditions d’origine."]})]}),e.jsxs("div",{className:"card-surface border-gold-400/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Ce que change une licence payante"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm",children:[e.jsx("li",{children:"• Accorde l’usage commercial que PolyForm Noncommercial exclut, pour la durée achetée."}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"Usage interne seulement."})," La redistribution, la sous-licence, l’intégration OEM et les services SaaS ou API hébergées offerts à des clients sont exclus, sauf entente écrite Entreprise ou OEM."]}),e.jsxs("li",{children:["• S’active en réglant ",e.jsx("code",{className:s,children:"QECTOR_LICENSE"})," et ",e.jsx("code",{className:s,children:"QECTOR_LICENSE_KEY"})," à votre jeton Ed25519. La vérification se fait hors ligne, avec une clé publique intégrée au paquet : aucun serveur de licences, aucune communication sortante, fonctionne sur un réseau isolé."]}),e.jsxs("li",{children:["• ",e.jsx("strong",{className:"text-primary",children:"Le paquet est identique avec ou sans licence."})," Sans jeton, un avis de licence s’affiche à l’importation (masquable avec ",e.jsx("code",{className:s,children:"QECTOR_SILENT=1"}),"). Le jeton masque l’avis et débloque les fonctions liées au palier : décodage GPU par lots (CUDA/OpenCL) sur tous les forfaits payants, et une distance de code maximale de 7 (Communauté), 19 (Pro, Équipe) ou 63 (Labo, Entreprise). Le décodage CPU n’est jamais bloqué; les plafonds de distance ne s’appliquent que si ",e.jsx("code",{className:s,children:"QECTOR_ENFORCE=1"})," est réglé."]}),e.jsx("li",{children:"• Aucune garantie, indemnisation, exclusivité, marque de commerce ni licence de brevet n’est incluse par défaut."})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mt-4",children:["Les jetons sont livrés en quelques minutes, et chaque forfait est assorti d’une garantie de remboursement de ",r.refundDays," jours sur le premier paiement : voir la ",e.jsx(a,{to:"/fr/refund",className:"text-cyan-300 hover:underline",children:"Politique de remboursement"}),". Une licence remboursée prend fin au remboursement."]})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Activer votre licence"}),e.jsxs("ol",{className:"space-y-3 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Achat vérifié."})," Le service de livraison n’accepte qu’un événement de paiement Stripe signé et enregistre la référence Stripe, le courriel, le palier et le jeton dans un registre protégé."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Installer."})," ",e.jsx("code",{className:s,children:'python -m pip install --upgrade "qector-decoder-v3>=1.0,<2"'})," depuis le projet PyPI officiel."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Régler les deux variables."})," Donnez à ",e.jsx("code",{className:s,children:"QECTOR_LICENSE"})," et à ",e.jsx("code",{className:s,children:"QECTOR_LICENSE_KEY"})," le même jeton, reçu par courriel. La première sert à l’avis d’importation, la seconde au moteur selon le palier."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"4. Vérifier hors ligne."})," ",e.jsx("code",{className:s,children:`python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`})," doit afficher votre palier payant (par exemple ",e.jsx("code",{className:"text-cyan-300",children:"Pro"}),") et non ",e.jsx("code",{className:"text-cyan-300",children:"Community"}),". Aucun serveur n’est contacté."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"5. Conserver la preuve."})," Gardez le jeton avec la facture ou la confirmation Stripe. N’envoyez jamais le jeton dans une URL, un suivi de bogues, une messagerie ou un dépôt public."]})]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed mt-4",children:["Courriel manquant ou jeton refusé? Écrivez à ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," avec la référence Stripe. N’ouvrez pas un second paiement ni une contestation pendant que la livraison est corrigée."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Texte complet de la licence"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Le texte officiel de la PolyForm Noncommercial License 1.0.0 (en anglais) est publié à"," ",e.jsx("a",{href:"https://polyformproject.org/licenses/noncommercial/1.0.0",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline [overflow-wrap:anywhere]",children:"polyformproject.org/licenses/noncommercial/1.0.0"})," ","et inclus tel quel dans chaque distribution (",e.jsx("code",{className:s,children:"LICENSE"})," dans la roue). Les résumés de cette page sont fournis à titre indicatif; en cas d’écart, le texte de la licence prévaut."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Licences de tiers"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR s’appuie sur plusieurs projets libres, dont Stim (Apache 2.0), PyMatching (MIT), NumPy (BSD) et NetworkX (BSD). Les attributions complètes sont incluses dans la distribution. Les noms de tiers sont des marques de leurs propriétaires respectifs; QECTOR n’est ni affilié à eux, ni commandité, ni approuvé par eux."})]})]})})]})}export{u as default}; diff --git a/assets/Manual-B7fpCrlk.js b/assets/Manual-B7fpCrlk.js deleted file mode 100644 index a3adfbee..00000000 --- a/assets/Manual-B7fpCrlk.js +++ /dev/null @@ -1,67 +0,0 @@ -import{r as p,j as e,R as b}from"./vendor-react-BiHfrq0e.js";import{S as N,J as w,C as c}from"./index-c1PDYu0j.js";import{T as k,s as _,u as C,I as S,g as q,a as D,C as P,B as R,v as u,i as E}from"./vendor-ui-B8TlNU4J.js";import{N as I}from"./NeuralReveal-uYarhiMA.js";import"./vendor-gsap-a3sj5zmn.js";function B(){const[a,l]=p.useState(""),[n,t]=p.useState([{text:"QECTOR CLI Terminal Demo (simulation only)",type:"info"},{text:"No command is executed and no external service is contacted.",type:"info"}]),[s,h]=p.useState(!1),g=p.useRef(null),y=()=>{g.current?.scrollIntoView({behavior:"smooth"})};p.useEffect(()=>{y()},[n]);const f=async i=>{const m=i.trim().toLowerCase(),x=[...n,{text:`qector@sandbox:~$ ${i}`,type:"input"}];t(x),l(""),h(!0);const o=r=>new Promise(v=>setTimeout(v,r));m==="help"?(await o(200),t(r=>[...r,{text:"Available commands:",type:"info"},{text:" help - Show this menu",type:"output"},{text:" pip install qector-decoder-v3 - Show the install command",type:"output"},{text:" qector-doctor - Show the diagnostic command",type:"output"},{text:" qector bench -d 5 - Show a local measurement command",type:"output"},{text:" clear - Clear the terminal screen",type:"output"}])):m==="clear"?t([]):m==="pip install qector-decoder-v3"?(await o(300),t(r=>[...r,{text:"Simulation only: no package was downloaded.",type:"output"}]),await o(800),t(r=>[...r,{text:"Simulation only: no package was installed.",type:"output"}]),await o(400),t(r=>[...r,{text:"For a real install, follow the current PyPI and release verification instructions.",type:"output"}]),await o(600),t(r=>[...r,{text:"✓ Demo complete: no network request or filesystem change was made.",type:"success"}])):m==="qector-doctor"?(await o(300),t(r=>[...r,{text:"Simulation only: qector-doctor was not run.",type:"output"}]),await o(500),t(r=>[...r,{text:"Run qector-doctor in your installed environment to obtain real PASS / WARN / FAIL results.",type:"info"}])):m==="qector bench -d 5"||m==="qector bench --distance 5"?(await o(400),t(r=>[...r,{text:"Simulation only: no circuit or measurement was generated.",type:"output"}]),await o(1e3),t(r=>[...r,{text:"Run qector bench on your own declared workload to generate real local evidence.",type:"info"}])):(await o(150),t(r=>[...r,{text:`qector: command not found: ${i}. Type "help" for a list of commands.`,type:"info"}])),h(!1)},j=i=>{i.preventDefault(),!(!a.trim()||s)&&f(a)};return e.jsxs("div",{className:"flex flex-col border border-gridline bg-void/90 rounded-2xl overflow-hidden shadow-2xl",children:[e.jsxs("div",{className:"flex items-center justify-between px-4 py-3 bg-surface border-b border-gridline",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(k,{className:"w-4 h-4 text-cyan-300"}),e.jsx("span",{className:"font-mono text-xs text-secondary font-semibold",children:"interactive-cli.sh"})]}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-red-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-yellow-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-green-500/80"})]})]}),e.jsxs("div",{className:"p-5 font-mono text-xs h-72 overflow-y-auto space-y-2 select-text custom-scrollbar",children:[n.map((i,m)=>{let x="text-secondary";return i.type==="input"?x="text-cyan-300 font-semibold":i.type==="success"?x="text-green-400 font-semibold":i.type==="info"&&(x="text-gold-400"),e.jsx("div",{className:`${x} leading-relaxed whitespace-pre-wrap`,children:i.text},m)}),s&&e.jsxs("div",{className:"text-muted-foreground animate-pulse flex items-center gap-1",children:[e.jsx("span",{className:"w-1.5 h-3 bg-muted-foreground inline-block animate-caret"}),e.jsx("span",{children:"Executing..."})]}),e.jsx("div",{ref:g})]}),e.jsxs("form",{onSubmit:j,className:"flex items-center border-t border-gridline bg-surface/50 px-4 py-2",children:[e.jsx(_,{className:"w-4 h-4 text-cyan-300 shrink-0"}),e.jsx("input",{type:"text",value:a,onChange:i=>l(i.target.value),disabled:s,className:"flex-1 bg-transparent border-none outline-none font-mono text-xs text-cyan-300 px-2 py-1 placeholder-cyan-300/60 focus-visible:ring-2 focus-visible:ring-cyan-300",placeholder:'Type a command (e.g. "help", "pip install qector-decoder-v3")...',"aria-label":"Terminal input"}),e.jsx("button",{type:"submit",disabled:s||!a.trim(),className:"p-1 text-cyan-300 hover:text-cyan-200 disabled:text-muted/20 transition-colors","aria-label":"Run command",children:e.jsx(C,{className:"w-3.5 h-3.5 fill-current"})})]})]})}const L="font-mono text-[11px] bg-cyan-300/10 text-cyan-200 px-1 py-0.5 rounded border border-cyan-300/20";function O(a,l){return a.replace(/\\"/g,'"').split(/(`[^`\n]+`)/g).map((n,t)=>n.length>2&&n.startsWith("`")&&n.endsWith("`")?e.jsx("code",{className:L,children:n.slice(1,-1)},`${l}-${t}`):n)}function d({children:a}){const l=(n,t)=>typeof n=="string"?e.jsx(b.Fragment,{children:O(n,t)},t):Array.isArray(n)?e.jsx(e.Fragment,{children:n.map((s,h)=>e.jsx(b.Fragment,{children:l(s,`${t}-${h}`)},`${t}-${h}`))}):n;return e.jsx(e.Fragment,{children:l(a,"imd")})}function W(){const[a,l]=p.useState("overview"),n=[{id:"overview",title:"1. Overview",icon:e.jsx(S,{className:"w-4 h-4"})},{id:"installation",title:"2. Installation",icon:e.jsx(q,{className:"w-4 h-4"})},{id:"quickstart",title:"3. Quick Start",icon:e.jsx(T,{className:"w-4 h-4"})},{id:"decoders",title:"4. Choosing a Decoder",icon:e.jsx(D,{className:"w-4 h-4"})},{id:"measurement",title:"5. Local Measurements",icon:e.jsx(M,{className:"w-4 h-4"})},{id:"configuration",title:"6. Configuration",icon:e.jsx(U,{className:"w-4 h-4"})},{id:"troubleshooting",title:"7. Troubleshooting",icon:e.jsx(P,{className:"w-4 h-4"})},{id:"package-reference",title:"8. Package Reference (v1.0.1)",icon:e.jsx(R,{className:"w-4 h-4"})}],t=()=>{switch(a){case"overview":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-base leading-relaxed",children:"QECTOR Decoder v3 is a Python library for quantum error correction (QEC) decoding. v1.0.1 is the current stable release (v1.0.0, August 2026, was the first): it provides 17 decoder configurations and helpers integrated into a high-performance compiled Rust core with a plug-and-play Python API."}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/10 rounded-xl flex items-start gap-3",children:[e.jsx(E,{className:"w-5 h-5 text-cyan-300 shrink-0 mt-0.5"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Ecosystem Native:"})," Swappable backend design. You can easily plug QECTOR into Stim, PyMatching, Sinter, and Qiskit pipelines with minimal API modifications: Sinter decoders plug in with ",e.jsx("code",{className:"text-cyan-300",children:"custom_decoders=qector_sinter_decoders()"}),", and a qiskit-qec plugin is registered."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-lg mb-3",children:"Key Highlights"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"v1.0.0: First Stable Release"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"API stability tiers, Relay-BP, CS-OSD(lambda, w), colour-code cluster_bposd, qector CLI + qector-doctor, Sinter/qiskit entry points, pymatching shim."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Validate on Your Hardware"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"Hardware, GPU, and measurement results are device-local. Use the package diagnostic and declared measurement workflow instead of treating site text as performance evidence."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Multi-Algorithm Diversity"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"17 decoder configurations from exact Blossom MWPM to Belief-Matching, BP-OSD, and GPU batch decoding."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Compiled Rust Core"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"A compiled Rust core with a Python API. Exact memory, latency, and throughput behavior depends on the selected workload and environment."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Optional GPU Paths"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"GPU paths are optional and environment-dependent. Read the installed release diagnostics before relying on them."})]})]})]})]});case"installation":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR ships as pre-compiled binary wheels on PyPI. Installing requires Python and pip."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Standard Installation"}),e.jsx(c,{code:"pip install qector-decoder-v3",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"System Requirements"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-sm",children:[e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary",children:"3.9, 3.10, 3.11, 3.12, 3.13 (64-bit)"})]}),e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Operating System"}),e.jsx("span",{className:"text-primary",children:"Linux, macOS, Windows (see current PyPI wheel metadata)"})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"GPU Requirements (Optional)"}),e.jsx("span",{className:"text-primary",children:"Optional and environment-dependent; check the installed release diagnostics"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Install Optional Dependencies"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"Install only the extras required by your workflow:"}),e.jsx(c,{code:`# Stim / Sinter / PyMatching ecosystem - pip install "qector-decoder-v3[stim]" - - # Full optional environment - pip install "qector-decoder-v3[all]"`,filename:"terminal",language:"bash"})]})]});case"quickstart":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Below is a minimal package-only example: create a rotated surface code, generate a syndrome, and verify a Blossom correction against the parity-check matrix."}),e.jsx(c,{filename:"surface_code_decode.py",language:"python",code:`import numpy as np -import qector_decoder_v3 as qector - -# Build a small code and inject one bit error. -code = qector.codes.rotated_surface_code(3) -error = np.zeros(code.n_qubits, dtype=np.uint8) -error[4] = 1 -syndrome = code.syndrome(error) - -# Decode with the graphlike Blossom backend. -correction = qector.BlossomDecoder( - code.check_to_qubits, - n_qubits=code.n_qubits, -).decode(syndrome) - -# The syndrome contract is H c = s (mod 2). -matrix = np.asarray(code.parity_check_matrix(), dtype=np.uint8) -assert np.array_equal((matrix @ correction.astype(int)) % 2, syndrome) -print("Syndrome-faithful correction")`})]});case"decoders":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR includes 17 decoder configurations categorized into stable, workload-sensitive, and experimental/research tiers. Choose based on code type and speed/accuracy tradeoffs:"}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse border border-gridline text-left text-sm rounded-xl overflow-hidden",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 font-semibold",children:[e.jsx("th",{className:"p-3",children:"Decoder"}),e.jsx("th",{className:"p-3",children:"Target Code"}),e.jsx("th",{className:"p-3",children:"Speed"}),e.jsx("th",{className:"p-3",children:"Accuracy"}),e.jsx("th",{className:"p-3",children:"Tier"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:[{name:"Blossom (MWPM)",target:"Graphlike CSS / surface",speed:"Workload-dependent",accuracy:"Minimum-weight matching objective",tier:"Stable"},{name:"Belief-Matching",target:"Correlated-noise research",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"BP-OSD",target:"qLDPC, LDPC",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"Union-Find",target:"Large Surface",speed:"Near-linear O(N)",accuracy:"Approximate",tier:"Production"},{name:"GPU Batch",target:"Supported batch workloads",speed:"Runtime-dependent",accuracy:"Validate locally",tier:"Workload-sensitive"},{name:"Hybrid / Cascade",target:"Degenerate, mixed",speed:"Iterative",accuracy:"High",tier:"Research"},{name:"Colour Code",target:"Triangular colour code",speed:"Moderate",accuracy:"Native",tier:"Research"}].map(s=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-semibold text-primary",children:s.name}),e.jsx("td",{className:"p-3 text-secondary",children:s.target}),e.jsx("td",{className:"p-3 text-secondary",children:s.speed}),e.jsx("td",{className:"p-3 text-secondary",children:s.accuracy}),e.jsx("td",{className:"p-3",children:e.jsx("span",{className:`px-2 py-0.5 rounded text-[10px] uppercase font-bold border ${s.tier==="Production"?"bg-green-400/10 text-green-400 border-green-400/20":"bg-gold-400/10 text-gold-400 border-gold-400/20"}`,children:s.tier})})]},s.name))})]})})]});case"measurement":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Hardware-specific measurements are not published on this site. If your project requires a local measurement, record the code, noise model, decoder configuration, seed, shots, environment, and raw artifact."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Environment Diagnostic"}),e.jsx(c,{code:"qector-doctor",filename:"terminal",language:"bash"}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["15-check diagnostic that reports PASS / WARN / FAIL per check and explains WHY a decoder is unavailable on your machine. Full report via ",e.jsx("code",{className:"text-cyan-300",children:"qector-doctor --json"}),"."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Local measurement via qector bench"}),e.jsx("p",{className:"text-secondary text-xs mb-2",children:"Use the command documented by the installed package release. The result is machine- and workload-specific, not a site claim:"}),e.jsx(c,{code:"qector bench --distance 5 --rounds 5 --shots 10000 --decoder blossom --noise 0.001",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Interactive Sandbox CLI"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"This UI is a command-output demonstration only; it does not execute commands or generate benchmark data:"}),e.jsx(B,{})]})]});case"configuration":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Detailed constructor configuration arguments for QECTOR's primary decoders:"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BlossomDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"adaptive_k"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:"`bool` (Default: `True`). Enable union-find matching pre-filtering to minimize match graph sizing."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"timeout"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:"`float` (Default: `None`). Maximum time (in seconds) allowed to resolve a single syndrome."})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BeliefMatchingDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_iters"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:"`int` (Default: `30`). Maximum number of belief propagation iterations. Higher iterations improve syndrome accuracy."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"max_paths"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:"`int` (Default: `10`). Maximum number of alternative paths generated for matching reweighting calculations."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_method"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:'`str` (Default: `"product_sum"`). Choice of BP update method. Options: `"product_sum"`, `"minimum_sum"`.'})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"GpuBatchDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"backend"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:'`str` (Default: `"cuda"`). Choose GPU compilation framework. Options: `"cuda"`, `"opencl"`.'})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"batch_size"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:"`int` (Default: `1000`). Number of parallel syndromes transferred to and calculated in the GPU memory space."})})]})]})]})]});case"troubleshooting":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Solutions for common installation and running issues:"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:e.jsx(d,{children:"Issue: ImportError when importing `qector`"})})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(d,{children:[e.jsx("strong",{children:"Fix:"})," Ensure your Python architecture matches the wheel and reinstall with `python -m pip install --force-reinstall qector-decoder-v3`."]})})]}),e.jsxs("div",{className:"p-4 bg-gold-400/5 border border-gold-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-gold-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: GPU / CUDA is not detected"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(d,{children:[e.jsx("strong",{children:"Fix:"})," Verify drivers by typing `nvidia-smi` in terminal. Ensure CUDA Toolkit 11.8 or higher is installed and environment variable `CUDA_PATH` or `LD_LIBRARY_PATH` points to the CUDA install folder."]})})]}),e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: Out Of Memory (OOM) on GPU batching"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(d,{children:[e.jsx("strong",{children:"Fix:"})," Lower the `batch_size` argument in your `GpuBatchDecoder` instantiation. For exceptionally large code distances (d > 15), prefer the linear-scaling `UnionFindDecoder` which reduces memory demands."]})})]})]})]});case"package-reference":return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl flex items-center justify-between flex-wrap gap-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-bold text-lg",children:"QECTOR Decoder v3: Extended Reference (package only)"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Version: 1.0.1 · PyPI: qector-decoder-v3 · Backend: Rust + PyO3"})]}),e.jsx("a",{href:"/docs/reference.md",target:"_blank",rel:"noopener noreferrer",download:"QECTOR Decoder v3 - Reference (package only).md",className:"btn-cyan text-xs py-2 px-4",children:"Download Reference (.md)"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"1. Installation & Platforms"}),e.jsx(c,{code:`pip install --upgrade "qector-decoder-v3>=1.0.1,<2" -pip install "qector-decoder-v3[stim]" # Stim / Sinter / PyMatching / LDPC ecosystem -pip install "qector-decoder-v3[bench]" # local measurement tools -pip install "qector-decoder-v3[all]" # optional full environment`,language:"bash",filename:"terminal"}),e.jsxs("div",{className:"mt-3 border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary font-mono",children:"3.9 - 3.13"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Platforms"}),e.jsx("span",{className:"text-primary",children:"Linux x86_64 (manylinux), Windows x64, macOS arm64"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License"}),e.jsx("span",{className:"text-primary",children:"Source-available (Free academic / non-commercial)"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Startup Notice"}),e.jsx("span",{className:"text-primary font-mono",children:"Suppressed with QECTOR_SILENT=1"})]}),e.jsxs("div",{className:"p-2.5 flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License Env"}),e.jsx("span",{className:"text-primary font-mono",children:"QECTOR_LICENSE + QECTOR_LICENSE_KEY (Ed25519 token)"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"2. Core Architecture"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1.5 text-secondary text-xs leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Rust Core (compiled extension):"})," Matching, UF, batch CPU/GPU algorithms."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Python Surface:"})," Clean API, Stim/Sinter compat, belief/GNN layers, licensing."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Zero-copy NumPy:"})," Direct memory access; GIL-free parallel decoding paths."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Version Symbol:"})," ",e.jsx("code",{className:"text-cyan-300",children:'qector_decoder_v3.__version__ == "1.0.1"'})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"3. Decoder Families & Incidence Rules"}),e.jsxs("p",{className:"text-muted-foreground text-xs mb-3",children:[e.jsx("strong",{className:"text-cyan-300",children:"Graph-like rule (UF family):"})," Every qubit must participate in at most two checks (participation ≤ 2). Matrices violating this raise a clear error (",e.jsx("code",{className:"text-red-400",children:"-32602"}),"). ",e.jsx("code",{className:"text-cyan-300",children:"BlossomDecoder"}),", ",e.jsx("code",{className:"text-cyan-300",children:"SparseBlossomDecoder"}),", and ",e.jsx("code",{className:"text-cyan-300",children:"BpOsdDecoder"})," accept general hyperedge codes."]}),e.jsx("div",{className:"overflow-x-auto rounded-xl",children:e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 font-bold border-b border-gridline bg-surface/30",children:[e.jsx("span",{children:"Class"}),e.jsx("span",{children:"Best for"}),e.jsx("span",{children:"Status"}),e.jsx("span",{children:"Graph-like?"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"UnionFindDecoder"}),e.jsx("span",{children:"Low-latency approximate"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes (participation ≤ 2)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"FastUnionFindDecoder"}),e.jsx("span",{children:"Faster UF hot path"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BlossomDecoder"}),e.jsx("span",{children:"Exact MWPM"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"SparseBlossomDecoder"}),e.jsx("span",{children:"Near-optimal matching"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BeliefMatching"}),e.jsx("span",{children:"Correlated-noise accuracy"}),e.jsx("span",{children:"Research"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BpOsdDecoder"}),e.jsx("span",{children:"LDPC / qLDPC"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BatchDecoder"}),e.jsx("span",{children:"High-throughput CPU batch"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes for UF batch"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"CUDABatchDecoder"}),e.jsx("span",{children:"GPU batch (NVIDIA)"}),e.jsx("span",{children:"Runtime-dependent"}),e.jsx("span",{children:"N/A"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"AutoDecoder"}),e.jsx("span",{children:"7-tier self-debugging fallback"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"N/A"})]})]})})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"4. Code Generators"}),e.jsx(c,{code:`from qector_decoder_v3 import ( - generate_repetition_code_checks, # (checks, n_qubits) - generate_ring_code_checks, # (checks, n_qubits) - generate_surface_code_checks, # surface-code checks -)`,language:"python",filename:"python"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"5. MCP and General-Matrix Workflows"}),e.jsx(c,{code:`# The standalone library MCP server is documented separately. -# Start it from the plugin package with: -python mcp/mcp_server_library.py - -# Initialize and call tools/list before using a tool.`,language:"python",filename:"mcp_server.py"}),e.jsx("p",{className:"text-muted-foreground text-xs mt-2 mb-3",children:"For general matrices, use the decoder family documented for that workload and verify every returned correction against H c = s (mod 2):"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import BlossomDecoder, SparseBlossomDecoder, BpOsdDecoder - -def decode_hyperedge(checks, n_qubits, syndrome, kind="Blossom", **opts): - syn = np.asarray(syndrome, dtype=np.uint8).ravel() - if kind in ("Blossom", "blossom"): - return BlossomDecoder(checks, n_qubits).decode(syn) - if kind in ("SparseBlossom", "sparse_blossom"): - return SparseBlossomDecoder(checks, n_qubits).decode(syn) - if kind.lower() in ("bposd", "bp_osd"): - H = np.zeros((len(checks), n_qubits), dtype=np.uint8) - for i, c in enumerate(checks): - for q in c: H[i, q] ^= 1 - return BpOsdDecoder(H, error_rate=opts.get("error_rate", 0.05)).decode(syn) - raise ValueError(f"unsupported kind: {kind}")`,language:"python",filename:"hyperedge_workaround.py"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"6. Verified Fallback Pattern"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed mb-3",children:"A fallback is safe only when each candidate is checked against the same parity-check matrix. The following pattern uses the stable Union-Find and Blossom classes and fails closed if a candidate is not syndrome-faithful:"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder - -def faithful_decode(check_to_qubits, n_qubits, syndrome): - syndrome = np.asarray(syndrome, dtype=np.uint8).ravel() - matrix = np.zeros((len(check_to_qubits), n_qubits), dtype=np.uint8) - for check, qubits in enumerate(check_to_qubits): - matrix[check, qubits] = 1 - - for decoder_type in (FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder): - try: - correction = np.asarray( - decoder_type(check_to_qubits, n_qubits=n_qubits).decode(syndrome), - dtype=np.uint8, - ) - if np.array_equal((matrix @ correction.astype(int)) % 2, syndrome): - return correction, decoder_type.__name__ - except Exception: - continue - raise RuntimeError("No syndrome-faithful decoder result")`,language:"python",filename:"cascade_decode.py"})]})]});default:return null}};return e.jsxs(e.Fragment,{children:[e.jsx(N,{title:"User Manual · QECTOR",description:"Complete user manual for QECTOR Decoder v3. Installation, configuration, decoder selection, validation, and troubleshooting."}),e.jsx(w,{data:{"@context":"https://schema.org","@type":"HowTo",name:"How to Install and Run QECTOR Decoder v3",description:"Step-by-step instructions to install QECTOR, verify a syndrome-faithful decode, select a decoder, and review evidence boundaries.",step:[{"@type":"HowToStep",name:"Install the package",text:"Run pip install qector-decoder-v3 in your Python terminal to install the Rust core binary wheels."},{"@type":"HowToStep",name:"Verify the installation",text:'Verify the installation with python -c "import qector_decoder_v3 as qd; print(qd.__version__)" and a small syndrome-faithfulness check.'},{"@type":"HowToStep",name:"Review evidence boundaries",text:"Read the v1.0.0 reference manual and record code, noise model, decoder configuration, seed, environment, and artifact metadata before making a local measurement."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"15 backend families powering 17 decoder configurations · GPU Batch · Stim · Sinter · Qiskit"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(I,{text:"User Manual",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Complete guide to QECTOR Decoder v3: installation, decoder selection, local measurements, diagnostics, and ecosystem integration."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsx("div",{className:"max-w-6xl mx-auto",children:e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-4 gap-8",children:[e.jsx("div",{className:"lg:col-span-1",children:e.jsx("nav",{"aria-label":"Manual sections",className:"sticky top-24 space-y-1 bg-surface/10 p-2 rounded-xl border border-gridline/50",children:n.map(s=>e.jsxs("button",{type:"button",onClick:()=>l(s.id),"aria-current":a===s.id?"true":void 0,className:`w-full text-left px-3.5 py-2.5 rounded-lg text-sm font-medium transition-all duration-200 flex items-center gap-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cyan-300 ${a===s.id?"bg-cyan-300/10 text-cyan-300 border border-cyan-300/20":"text-secondary hover:text-primary hover:bg-white/5 border border-transparent"}`,children:[s.icon,s.title]},s.id))})}),e.jsx("div",{className:"lg:col-span-3",children:e.jsxs("div",{className:"card-surface bg-surface/20 min-h-[500px]",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6 text-primary border-b border-gridline pb-4 flex items-center gap-2",children:n.find(s=>s.id===a)?.title.substring(3)}),e.jsx("div",{className:"transition-all duration-300",children:t()})]})})]})})})]})}function T(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.813 15.904 9 21l-.813-5.096L3 15l5.096-.813L9 9l.813 5.096L15 15l-5.187.904Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19.071 4.929a10 10 0 0 0-14.142 0M12 3v3m0 12v3M3 12h3m12 0h3",opacity:"0.5"})]})}function M(a){return e.jsx("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v5.25c0 .621-.504 1.125-1.125 1.125h-2.25A1.125 1.125 0 0 1 3 18.375v-5.25ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v9.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125v-9.75ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v14.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z"})})}function U(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.324.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.43l-1.003.828c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.954.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.43l1.004-.827c.292-.24.437-.613.43-.991a6.936 6.936 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"})]})}export{W as default}; diff --git a/assets/Manual-B80JvGo2.js b/assets/Manual-B80JvGo2.js deleted file mode 100644 index 9a91c8a4..00000000 --- a/assets/Manual-B80JvGo2.js +++ /dev/null @@ -1,67 +0,0 @@ -import{r as p,j as e,R as b}from"./vendor-react-BiHfrq0e.js";import{S as N,J as w,C as c}from"./index-WV1aysjN.js";import{T as k,o as _,u as C,I as S,g as q,a as D,C as P,B as R,v as u,i as E}from"./vendor-ui-B0ssGG4c.js";import{N as I}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-gsap-a3sj5zmn.js";function B(){const[a,l]=p.useState(""),[n,t]=p.useState([{text:"QECTOR CLI Terminal Demo (simulation only)",type:"info"},{text:"No command is executed and no external service is contacted.",type:"info"}]),[s,h]=p.useState(!1),g=p.useRef(null),y=()=>{g.current?.scrollIntoView({behavior:"smooth"})};p.useEffect(()=>{y()},[n]);const f=async i=>{const m=i.trim().toLowerCase(),x=[...n,{text:`qector@sandbox:~$ ${i}`,type:"input"}];t(x),l(""),h(!0);const d=r=>new Promise(v=>setTimeout(v,r));m==="help"?(await d(200),t(r=>[...r,{text:"Available commands:",type:"info"},{text:" help - Show this menu",type:"output"},{text:" pip install qector-decoder-v3 - Show the install command",type:"output"},{text:" qector-doctor - Show the diagnostic command",type:"output"},{text:" qector bench -d 5 - Show a local measurement command",type:"output"},{text:" clear - Clear the terminal screen",type:"output"}])):m==="clear"?t([]):m==="pip install qector-decoder-v3"?(await d(300),t(r=>[...r,{text:"Simulation only: no package was downloaded.",type:"output"}]),await d(800),t(r=>[...r,{text:"Simulation only: no package was installed.",type:"output"}]),await d(400),t(r=>[...r,{text:"For a real install, follow the current PyPI and release verification instructions.",type:"output"}]),await d(600),t(r=>[...r,{text:"✓ Demo complete: no network request or filesystem change was made.",type:"success"}])):m==="qector-doctor"?(await d(300),t(r=>[...r,{text:"Simulation only: qector-doctor was not run.",type:"output"}]),await d(500),t(r=>[...r,{text:"Run qector-doctor in your installed environment to obtain real PASS / WARN / FAIL results.",type:"info"}])):m==="qector bench -d 5"||m==="qector bench --distance 5"?(await d(400),t(r=>[...r,{text:"Simulation only: no circuit or measurement was generated.",type:"output"}]),await d(1e3),t(r=>[...r,{text:"Run qector bench on your own declared workload to generate real local evidence.",type:"info"}])):(await d(150),t(r=>[...r,{text:`qector: command not found: ${i}. Type "help" for a list of commands.`,type:"info"}])),h(!1)},j=i=>{i.preventDefault(),!(!a.trim()||s)&&f(a)};return e.jsxs("div",{className:"flex flex-col border border-gridline bg-void/90 rounded-2xl overflow-hidden shadow-2xl",children:[e.jsxs("div",{className:"flex items-center justify-between px-4 py-3 bg-surface border-b border-gridline",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(k,{className:"w-4 h-4 text-cyan-300"}),e.jsx("span",{className:"font-mono text-xs text-secondary font-semibold",children:"interactive-cli.sh"})]}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-red-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-yellow-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-green-500/80"})]})]}),e.jsxs("div",{className:"p-5 font-mono text-xs h-72 overflow-y-auto space-y-2 select-text custom-scrollbar",children:[n.map((i,m)=>{let x="text-secondary";return i.type==="input"?x="text-cyan-300 font-semibold":i.type==="success"?x="text-green-400 font-semibold":i.type==="info"&&(x="text-gold-400"),e.jsx("div",{className:`${x} leading-relaxed whitespace-pre-wrap`,children:i.text},m)}),s&&e.jsxs("div",{className:"text-muted-foreground animate-pulse flex items-center gap-1",children:[e.jsx("span",{className:"w-1.5 h-3 bg-muted-foreground inline-block animate-caret"}),e.jsx("span",{children:"Executing..."})]}),e.jsx("div",{ref:g})]}),e.jsxs("form",{onSubmit:j,className:"flex items-center border-t border-gridline bg-surface/50 px-4 py-2",children:[e.jsx(_,{className:"w-4 h-4 text-cyan-300 shrink-0"}),e.jsx("input",{type:"text",value:a,onChange:i=>l(i.target.value),disabled:s,className:"flex-1 bg-transparent border-none outline-none font-mono text-xs text-cyan-300 px-2 py-1 placeholder-cyan-300/60 focus-visible:ring-2 focus-visible:ring-cyan-300",placeholder:'Type a command (e.g. "help", "pip install qector-decoder-v3")...',"aria-label":"Terminal input"}),e.jsx("button",{type:"submit",disabled:s||!a.trim(),className:"p-1 text-cyan-300 hover:text-cyan-200 disabled:text-muted/20 transition-colors","aria-label":"Run command",children:e.jsx(C,{className:"w-3.5 h-3.5 fill-current"})})]})]})}const L="font-mono text-[11px] bg-cyan-300/10 text-cyan-200 px-1 py-0.5 rounded border border-cyan-300/20";function O(a,l){return a.replace(/\\"/g,'"').split(/(`[^`\n]+`)/g).map((n,t)=>n.length>2&&n.startsWith("`")&&n.endsWith("`")?e.jsx("code",{className:L,children:n.slice(1,-1)},`${l}-${t}`):n)}function o({children:a}){const l=(n,t)=>typeof n=="string"?e.jsx(b.Fragment,{children:O(n,t)},t):Array.isArray(n)?e.jsx(e.Fragment,{children:n.map((s,h)=>e.jsx(b.Fragment,{children:l(s,`${t}-${h}`)},`${t}-${h}`))}):n;return e.jsx(e.Fragment,{children:l(a,"imd")})}function $(){const[a,l]=p.useState("overview"),n=[{id:"overview",title:"1. Overview",icon:e.jsx(S,{className:"w-4 h-4"})},{id:"installation",title:"2. Installation",icon:e.jsx(q,{className:"w-4 h-4"})},{id:"quickstart",title:"3. Quick Start",icon:e.jsx(T,{className:"w-4 h-4"})},{id:"decoders",title:"4. Choosing a Decoder",icon:e.jsx(D,{className:"w-4 h-4"})},{id:"measurement",title:"5. Local Measurements",icon:e.jsx(M,{className:"w-4 h-4"})},{id:"configuration",title:"6. Configuration",icon:e.jsx(U,{className:"w-4 h-4"})},{id:"troubleshooting",title:"7. Troubleshooting",icon:e.jsx(P,{className:"w-4 h-4"})},{id:"package-reference",title:"8. Package Reference (v1.0.0)",icon:e.jsx(R,{className:"w-4 h-4"})}],t=()=>{switch(a){case"overview":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-base leading-relaxed",children:"QECTOR Decoder v3 is a Python library for quantum error correction (QEC) decoding. v1.0.0 is the first stable release: it provides 17 decoder configurations and helpers integrated into a high-performance compiled Rust core with a plug-and-play Python API."}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/10 rounded-xl flex items-start gap-3",children:[e.jsx(E,{className:"w-5 h-5 text-cyan-300 shrink-0 mt-0.5"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Ecosystem Native:"})," Swappable backend design. You can easily plug QECTOR into Stim, PyMatching, Sinter, and Qiskit pipelines with minimal API modifications: v1.0.0 registers Sinter and qiskit-qec entry points so ",e.jsx("code",{className:"text-cyan-300",children:"sinter.collect()"})," works with no ",e.jsx("code",{className:"text-cyan-300",children:"custom_decoders="}),"."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-lg mb-3",children:"Key Highlights"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"v1.0.0: First Stable Release"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"API stability tiers, Relay-BP, CS-OSD(lambda, w), colour-code cluster_bposd, qector CLI + qector-doctor, Sinter/qiskit entry points, pymatching shim."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Validate on Your Hardware"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"Hardware, GPU, and measurement results are device-local. Use the package diagnostic and declared measurement workflow instead of treating site text as performance evidence."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Multi-Algorithm Diversity"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"17 decoder configurations from exact Blossom MWPM to Belief-Matching, BP-OSD, and GPU batch decoding."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Compiled Rust Core"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"A compiled Rust core with a Python API. Exact memory, latency, and throughput behavior depends on the selected workload and environment."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Optional GPU Paths"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"GPU paths are optional and environment-dependent. Read the installed release diagnostics before relying on them."})]})]})]})]});case"installation":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR ships as pre-compiled binary wheels on PyPI. Installing requires Python and pip."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Standard Installation"}),e.jsx(c,{code:"pip install qector-decoder-v3",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"System Requirements"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-sm",children:[e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary",children:"3.9, 3.10, 3.11, 3.12, 3.13 (64-bit)"})]}),e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Operating System"}),e.jsx("span",{className:"text-primary",children:"Linux, macOS, Windows (see current PyPI wheel metadata)"})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"GPU Requirements (Optional)"}),e.jsx("span",{className:"text-primary",children:"Optional and environment-dependent; check the installed release diagnostics"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Install Optional Dependencies"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"Install only the extras required by your workflow:"}),e.jsx(c,{code:`# Stim / Sinter / PyMatching ecosystem - pip install "qector-decoder-v3[stim]" - - # Full optional environment - pip install "qector-decoder-v3[all]"`,filename:"terminal",language:"bash"})]})]});case"quickstart":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Below is a minimal package-only example: create a rotated surface code, generate a syndrome, and verify a Blossom correction against the parity-check matrix."}),e.jsx(c,{filename:"surface_code_decode.py",language:"python",code:`import numpy as np -import qector_decoder_v3 as qector - -# Build a small code and inject one bit error. -code = qector.codes.rotated_surface_code(3) -error = np.zeros(code.n_qubits, dtype=np.uint8) -error[4] = 1 -syndrome = code.syndrome(error) - -# Decode with the graphlike Blossom backend. -correction = qector.BlossomDecoder( - code.check_to_qubits, - n_qubits=code.n_qubits, -).decode(syndrome) - -# The syndrome contract is H c = s (mod 2). -matrix = np.asarray(code.parity_check_matrix(), dtype=np.uint8) -assert np.array_equal((matrix @ correction.astype(int)) % 2, syndrome) -print("Syndrome-faithful correction")`})]});case"decoders":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR includes 17 decoder configurations categorized into stable, workload-sensitive, and experimental/research tiers. Choose based on code type and speed/accuracy tradeoffs:"}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse border border-gridline text-left text-sm rounded-xl overflow-hidden",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 font-semibold",children:[e.jsx("th",{className:"p-3",children:"Decoder"}),e.jsx("th",{className:"p-3",children:"Target Code"}),e.jsx("th",{className:"p-3",children:"Speed"}),e.jsx("th",{className:"p-3",children:"Accuracy"}),e.jsx("th",{className:"p-3",children:"Tier"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:[{name:"Blossom (MWPM)",target:"Graphlike CSS / surface",speed:"Workload-dependent",accuracy:"Minimum-weight matching objective",tier:"Stable"},{name:"Belief-Matching",target:"Correlated-noise research",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"BP-OSD",target:"qLDPC, LDPC",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"Union-Find",target:"Large Surface",speed:"Near-linear O(N)",accuracy:"Approximate",tier:"Production"},{name:"GPU Batch",target:"Supported batch workloads",speed:"Runtime-dependent",accuracy:"Validate locally",tier:"Workload-sensitive"},{name:"Hybrid / Cascade",target:"Degenerate, mixed",speed:"Iterative",accuracy:"High",tier:"Research"},{name:"Colour Code",target:"Triangular colour code",speed:"Moderate",accuracy:"Native",tier:"Research"}].map(s=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-semibold text-primary",children:s.name}),e.jsx("td",{className:"p-3 text-secondary",children:s.target}),e.jsx("td",{className:"p-3 text-secondary",children:s.speed}),e.jsx("td",{className:"p-3 text-secondary",children:s.accuracy}),e.jsx("td",{className:"p-3",children:e.jsx("span",{className:`px-2 py-0.5 rounded text-[10px] uppercase font-bold border ${s.tier==="Production"?"bg-green-400/10 text-green-400 border-green-400/20":"bg-gold-400/10 text-gold-400 border-gold-400/20"}`,children:s.tier})})]},s.name))})]})})]});case"measurement":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Hardware-specific measurements are not published on this site. If your project requires a local measurement, record the code, noise model, decoder configuration, seed, shots, environment, and raw artifact."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Environment Diagnostic"}),e.jsx(c,{code:"qector-doctor",filename:"terminal",language:"bash"}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["15-check diagnostic that reports PASS / WARN / FAIL per check and explains WHY a decoder is unavailable on your machine. Full report via ",e.jsx("code",{className:"text-cyan-300",children:"qector-doctor --json"}),"."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Local measurement via qector bench"}),e.jsx("p",{className:"text-secondary text-xs mb-2",children:"Use the command documented by the installed package release. The result is machine- and workload-specific, not a site claim:"}),e.jsx(c,{code:"qector bench --distance 5 --rounds 5 --shots 10000 --decoder blossom --noise 0.001",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Interactive Sandbox CLI"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"This UI is a command-output demonstration only; it does not execute commands or generate benchmark data:"}),e.jsx(B,{})]})]});case"configuration":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Detailed constructor configuration arguments for QECTOR's primary decoders:"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BlossomDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"adaptive_k"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`bool` (Default: `True`). Enable union-find matching pre-filtering to minimize match graph sizing."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"timeout"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`float` (Default: `None`). Maximum time (in seconds) allowed to resolve a single syndrome."})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BeliefMatchingDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_iters"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `30`). Maximum number of belief propagation iterations. Higher iterations improve syndrome accuracy."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"max_paths"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `10`). Maximum number of alternative paths generated for matching reweighting calculations."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_method"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:'`str` (Default: `"product_sum"`). Choice of BP update method. Options: `"product_sum"`, `"minimum_sum"`.'})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"GpuBatchDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"backend"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:'`str` (Default: `"cuda"`). Choose GPU compilation framework. Options: `"cuda"`, `"opencl"`.'})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"batch_size"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `1000`). Number of parallel syndromes transferred to and calculated in the GPU memory space."})})]})]})]})]});case"troubleshooting":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Solutions for common installation and running issues:"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:e.jsx(o,{children:"Issue: ImportError when importing `qector`"})})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Ensure your Python architecture matches the wheel and reinstall with `python -m pip install --force-reinstall qector-decoder-v3`."]})})]}),e.jsxs("div",{className:"p-4 bg-gold-400/5 border border-gold-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-gold-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: GPU / CUDA is not detected"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Verify drivers by typing `nvidia-smi` in terminal. Ensure CUDA Toolkit 11.8 or higher is installed and environment variable `CUDA_PATH` or `LD_LIBRARY_PATH` points to the CUDA install folder."]})})]}),e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: Out Of Memory (OOM) on GPU batching"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Lower the `batch_size` argument in your `GpuBatchDecoder` instantiation. For exceptionally large code distances (d > 15), prefer the linear-scaling `UnionFindDecoder` which reduces memory demands."]})})]})]})]});case"package-reference":return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl flex items-center justify-between flex-wrap gap-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-bold text-lg",children:"QECTOR Decoder v3: Extended Reference (package only)"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Version: 1.0.0 · PyPI: qector-decoder-v3 · Backend: Rust + PyO3"})]}),e.jsx("a",{href:"/docs/reference.md",target:"_blank",rel:"noopener noreferrer",download:"QECTOR Decoder v3 - Reference (package only).md",className:"btn-cyan text-xs py-2 px-4",children:"Download Reference (.md)"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"1. Installation & Platforms"}),e.jsx(c,{code:`pip install --upgrade "qector-decoder-v3>=1.0,<2" -pip install "qector-decoder-v3[stim]" # Stim / Sinter / PyMatching / LDPC ecosystem -pip install "qector-decoder-v3[bench]" # local measurement tools -pip install "qector-decoder-v3[all]" # optional full environment`,language:"bash",filename:"terminal"}),e.jsxs("div",{className:"mt-3 border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary font-mono",children:"3.9 - 3.13"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Platforms"}),e.jsx("span",{className:"text-primary",children:"Linux x86_64 (manylinux), Windows x64, macOS arm64"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License"}),e.jsx("span",{className:"text-primary",children:"Source-available (Free academic / non-commercial)"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Startup Notice"}),e.jsx("span",{className:"text-primary font-mono",children:"Suppressed with QECTOR_SILENT=1"})]}),e.jsxs("div",{className:"p-2.5 flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License Env"}),e.jsx("span",{className:"text-primary font-mono",children:"QECTOR_LICENSE + QECTOR_LICENSE_KEY (Ed25519 token)"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"2. Core Architecture"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1.5 text-secondary text-xs leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Rust Core (compiled extension):"})," Matching, UF, batch CPU/GPU algorithms."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Python Surface:"})," Clean API, Stim/Sinter compat, belief/GNN layers, licensing."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Zero-copy NumPy:"})," Direct memory access; GIL-free parallel decoding paths."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Version Symbol:"})," ",e.jsx("code",{className:"text-cyan-300",children:'qector_decoder_v3.__version__ == "1.0.0"'})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"3. Decoder Families & Incidence Rules"}),e.jsxs("p",{className:"text-muted-foreground text-xs mb-3",children:[e.jsx("strong",{className:"text-cyan-300",children:"Graph-like rule (UF family):"})," Every qubit must participate in at most two checks (participation ≤ 2). Matrices violating this raise a clear error (",e.jsx("code",{className:"text-red-400",children:"-32602"}),"). ",e.jsx("code",{className:"text-cyan-300",children:"BlossomDecoder"}),", ",e.jsx("code",{className:"text-cyan-300",children:"SparseBlossomDecoder"}),", and ",e.jsx("code",{className:"text-cyan-300",children:"BpOsdDecoder"})," accept general hyperedge codes."]}),e.jsx("div",{className:"overflow-x-auto rounded-xl",children:e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 font-bold border-b border-gridline bg-surface/30",children:[e.jsx("span",{children:"Class"}),e.jsx("span",{children:"Best for"}),e.jsx("span",{children:"Status"}),e.jsx("span",{children:"Graph-like?"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"UnionFindDecoder"}),e.jsx("span",{children:"Low-latency approximate"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes (participation ≤ 2)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"FastUnionFindDecoder"}),e.jsx("span",{children:"Faster UF hot path"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BlossomDecoder"}),e.jsx("span",{children:"Exact MWPM"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"SparseBlossomDecoder"}),e.jsx("span",{children:"Near-optimal matching"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BeliefMatching"}),e.jsx("span",{children:"Correlated-noise accuracy"}),e.jsx("span",{children:"Research"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BpOsdDecoder"}),e.jsx("span",{children:"LDPC / qLDPC"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BatchDecoder"}),e.jsx("span",{children:"High-throughput CPU batch"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes for UF batch"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"CUDABatchDecoder"}),e.jsx("span",{children:"GPU batch (NVIDIA)"}),e.jsx("span",{children:"Runtime-dependent"}),e.jsx("span",{children:"N/A"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"AutoDecoder"}),e.jsx("span",{children:"7-tier self-debugging fallback"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"N/A"})]})]})})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"4. Code Generators"}),e.jsx(c,{code:`from qector_decoder_v3 import ( - generate_repetition_code_checks, # (checks, n_qubits) - generate_ring_code_checks, # (checks, n_qubits) - generate_surface_code_checks, # surface-code checks -)`,language:"python",filename:"python"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"5. MCP and General-Matrix Workflows"}),e.jsx(c,{code:`# The standalone library MCP server is documented separately. -# Start it from the plugin package with: -python mcp/mcp_server_library.py - -# Initialize and call tools/list before using a tool.`,language:"python",filename:"mcp_server.py"}),e.jsx("p",{className:"text-muted-foreground text-xs mt-2 mb-3",children:"For general matrices, use the decoder family documented for that workload and verify every returned correction against H c = s (mod 2):"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import BlossomDecoder, SparseBlossomDecoder, BpOsdDecoder - -def decode_hyperedge(checks, n_qubits, syndrome, kind="Blossom", **opts): - syn = np.asarray(syndrome, dtype=np.uint8).ravel() - if kind in ("Blossom", "blossom"): - return BlossomDecoder(checks, n_qubits).decode(syn) - if kind in ("SparseBlossom", "sparse_blossom"): - return SparseBlossomDecoder(checks, n_qubits).decode(syn) - if kind.lower() in ("bposd", "bp_osd"): - H = np.zeros((len(checks), n_qubits), dtype=np.uint8) - for i, c in enumerate(checks): - for q in c: H[i, q] ^= 1 - return BpOsdDecoder(H, error_rate=opts.get("error_rate", 0.05)).decode(syn) - raise ValueError(f"unsupported kind: {kind}")`,language:"python",filename:"hyperedge_workaround.py"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"6. Verified Fallback Pattern"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed mb-3",children:"A fallback is safe only when each candidate is checked against the same parity-check matrix. The following pattern uses the stable Union-Find and Blossom classes and fails closed if a candidate is not syndrome-faithful:"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder - -def faithful_decode(check_to_qubits, n_qubits, syndrome): - syndrome = np.asarray(syndrome, dtype=np.uint8).ravel() - matrix = np.zeros((len(check_to_qubits), n_qubits), dtype=np.uint8) - for check, qubits in enumerate(check_to_qubits): - matrix[check, qubits] = 1 - - for decoder_type in (FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder): - try: - correction = np.asarray( - decoder_type(check_to_qubits, n_qubits=n_qubits).decode(syndrome), - dtype=np.uint8, - ) - if np.array_equal((matrix @ correction.astype(int)) % 2, syndrome): - return correction, decoder_type.__name__ - except Exception: - continue - raise RuntimeError("No syndrome-faithful decoder result")`,language:"python",filename:"cascade_decode.py"})]})]});default:return null}};return e.jsxs(e.Fragment,{children:[e.jsx(N,{title:"User Manual · QECTOR",description:"Complete user manual for QECTOR Decoder v3. Installation, configuration, decoder selection, validation, and troubleshooting."}),e.jsx(w,{data:{"@context":"https://schema.org","@type":"HowTo",name:"How to Install and Run QECTOR Decoder v3",description:"Step-by-step instructions to install QECTOR, verify a syndrome-faithful decode, select a decoder, and review evidence boundaries.",step:[{"@type":"HowToStep",name:"Install the package",text:"Run pip install qector-decoder-v3 in your Python terminal to install the Rust core binary wheels."},{"@type":"HowToStep",name:"Verify the installation",text:'Verify the installation with python -c "import qector_decoder_v3 as qd; print(qd.__version__)" and a small syndrome-faithfulness check.'},{"@type":"HowToStep",name:"Review evidence boundaries",text:"Read the v1.0.0 reference manual and record code, noise model, decoder configuration, seed, environment, and artifact metadata before making a local measurement."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"15 backend families powering 17 decoder configurations · GPU Batch · Stim · Sinter · Qiskit"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(I,{text:"User Manual",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Complete guide to QECTOR Decoder v3: installation, decoder selection, local measurements, diagnostics, and ecosystem integration."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsx("div",{className:"max-w-6xl mx-auto",children:e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-4 gap-8",children:[e.jsx("div",{className:"lg:col-span-1",children:e.jsx("nav",{"aria-label":"Manual sections",className:"sticky top-24 space-y-1 bg-surface/10 p-2 rounded-xl border border-gridline/50",children:n.map(s=>e.jsxs("button",{type:"button",onClick:()=>l(s.id),"aria-current":a===s.id?"true":void 0,className:`w-full text-left px-3.5 py-2.5 rounded-lg text-sm font-medium transition-all duration-200 flex items-center gap-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cyan-300 ${a===s.id?"bg-cyan-300/10 text-cyan-300 border border-cyan-300/20":"text-secondary hover:text-primary hover:bg-white/5 border border-transparent"}`,children:[s.icon,s.title]},s.id))})}),e.jsx("div",{className:"lg:col-span-3",children:e.jsxs("div",{className:"card-surface bg-surface/20 min-h-[500px]",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6 text-primary border-b border-gridline pb-4 flex items-center gap-2",children:n.find(s=>s.id===a)?.title.substring(3)}),e.jsx("div",{className:"transition-all duration-300",children:t()})]})})]})})})]})}function T(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.813 15.904 9 21l-.813-5.096L3 15l5.096-.813L9 9l.813 5.096L15 15l-5.187.904Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19.071 4.929a10 10 0 0 0-14.142 0M12 3v3m0 12v3M3 12h3m12 0h3",opacity:"0.5"})]})}function M(a){return e.jsx("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v5.25c0 .621-.504 1.125-1.125 1.125h-2.25A1.125 1.125 0 0 1 3 18.375v-5.25ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v9.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125v-9.75ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v14.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z"})})}function U(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.324.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.43l-1.003.828c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.954.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.43l1.004-.827c.292-.24.437-.613.43-.991a6.936 6.936 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"})]})}export{$ as default}; diff --git a/assets/Manual-BOkG7qye.js b/assets/Manual-BOkG7qye.js deleted file mode 100644 index 110b1162..00000000 --- a/assets/Manual-BOkG7qye.js +++ /dev/null @@ -1,67 +0,0 @@ -import{r as p,j as e,R as b}from"./vendor-react-BiHfrq0e.js";import{S as N,J as w,C as c}from"./index-BN-vOeL2.js";import{T as k,o as _,u as C,I as S,g as q,a as D,C as P,B as R,v as u,i as E}from"./vendor-ui-B0ssGG4c.js";import{N as I}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-gsap-a3sj5zmn.js";function B(){const[a,l]=p.useState(""),[n,t]=p.useState([{text:"QECTOR CLI Terminal Demo (simulation only)",type:"info"},{text:"No command is executed and no external service is contacted.",type:"info"}]),[s,h]=p.useState(!1),g=p.useRef(null),y=()=>{g.current?.scrollIntoView({behavior:"smooth"})};p.useEffect(()=>{y()},[n]);const f=async i=>{const m=i.trim().toLowerCase(),x=[...n,{text:`qector@sandbox:~$ ${i}`,type:"input"}];t(x),l(""),h(!0);const d=r=>new Promise(v=>setTimeout(v,r));m==="help"?(await d(200),t(r=>[...r,{text:"Available commands:",type:"info"},{text:" help - Show this menu",type:"output"},{text:" pip install qector-decoder-v3 - Show the install command",type:"output"},{text:" qector-doctor - Show the diagnostic command",type:"output"},{text:" qector bench -d 5 - Show a local measurement command",type:"output"},{text:" clear - Clear the terminal screen",type:"output"}])):m==="clear"?t([]):m==="pip install qector-decoder-v3"?(await d(300),t(r=>[...r,{text:"Simulation only: no package was downloaded.",type:"output"}]),await d(800),t(r=>[...r,{text:"Simulation only: no package was installed.",type:"output"}]),await d(400),t(r=>[...r,{text:"For a real install, follow the current PyPI and release verification instructions.",type:"output"}]),await d(600),t(r=>[...r,{text:"✓ Demo complete: no network request or filesystem change was made.",type:"success"}])):m==="qector-doctor"?(await d(300),t(r=>[...r,{text:"Simulation only: qector-doctor was not run.",type:"output"}]),await d(500),t(r=>[...r,{text:"Run qector-doctor in your installed environment to obtain real PASS / WARN / FAIL results.",type:"info"}])):m==="qector bench -d 5"||m==="qector bench --distance 5"?(await d(400),t(r=>[...r,{text:"Simulation only: no circuit or measurement was generated.",type:"output"}]),await d(1e3),t(r=>[...r,{text:"Run qector bench on your own declared workload to generate real local evidence.",type:"info"}])):(await d(150),t(r=>[...r,{text:`qector: command not found: ${i}. Type "help" for a list of commands.`,type:"info"}])),h(!1)},j=i=>{i.preventDefault(),!(!a.trim()||s)&&f(a)};return e.jsxs("div",{className:"flex flex-col border border-gridline bg-void/90 rounded-2xl overflow-hidden shadow-2xl",children:[e.jsxs("div",{className:"flex items-center justify-between px-4 py-3 bg-surface border-b border-gridline",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(k,{className:"w-4 h-4 text-cyan-300"}),e.jsx("span",{className:"font-mono text-xs text-secondary font-semibold",children:"interactive-cli.sh"})]}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-red-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-yellow-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-green-500/80"})]})]}),e.jsxs("div",{className:"p-5 font-mono text-xs h-72 overflow-y-auto space-y-2 select-text custom-scrollbar",children:[n.map((i,m)=>{let x="text-secondary";return i.type==="input"?x="text-cyan-300 font-semibold":i.type==="success"?x="text-green-400 font-semibold":i.type==="info"&&(x="text-gold-400"),e.jsx("div",{className:`${x} leading-relaxed whitespace-pre-wrap`,children:i.text},m)}),s&&e.jsxs("div",{className:"text-muted-foreground animate-pulse flex items-center gap-1",children:[e.jsx("span",{className:"w-1.5 h-3 bg-muted-foreground inline-block animate-caret"}),e.jsx("span",{children:"Executing..."})]}),e.jsx("div",{ref:g})]}),e.jsxs("form",{onSubmit:j,className:"flex items-center border-t border-gridline bg-surface/50 px-4 py-2",children:[e.jsx(_,{className:"w-4 h-4 text-cyan-300 shrink-0"}),e.jsx("input",{type:"text",value:a,onChange:i=>l(i.target.value),disabled:s,className:"flex-1 bg-transparent border-none outline-none font-mono text-xs text-cyan-300 px-2 py-1 placeholder-cyan-300/60 focus-visible:ring-2 focus-visible:ring-cyan-300",placeholder:'Type a command (e.g. "help", "pip install qector-decoder-v3")...',"aria-label":"Terminal input"}),e.jsx("button",{type:"submit",disabled:s||!a.trim(),className:"p-1 text-cyan-300 hover:text-cyan-200 disabled:text-muted/20 transition-colors","aria-label":"Run command",children:e.jsx(C,{className:"w-3.5 h-3.5 fill-current"})})]})]})}const L="font-mono text-[11px] bg-cyan-300/10 text-cyan-200 px-1 py-0.5 rounded border border-cyan-300/20";function O(a,l){return a.replace(/\\"/g,'"').split(/(`[^`\n]+`)/g).map((n,t)=>n.length>2&&n.startsWith("`")&&n.endsWith("`")?e.jsx("code",{className:L,children:n.slice(1,-1)},`${l}-${t}`):n)}function o({children:a}){const l=(n,t)=>typeof n=="string"?e.jsx(b.Fragment,{children:O(n,t)},t):Array.isArray(n)?e.jsx(e.Fragment,{children:n.map((s,h)=>e.jsx(b.Fragment,{children:l(s,`${t}-${h}`)},`${t}-${h}`))}):n;return e.jsx(e.Fragment,{children:l(a,"imd")})}function $(){const[a,l]=p.useState("overview"),n=[{id:"overview",title:"1. Overview",icon:e.jsx(S,{className:"w-4 h-4"})},{id:"installation",title:"2. Installation",icon:e.jsx(q,{className:"w-4 h-4"})},{id:"quickstart",title:"3. Quick Start",icon:e.jsx(T,{className:"w-4 h-4"})},{id:"decoders",title:"4. Choosing a Decoder",icon:e.jsx(D,{className:"w-4 h-4"})},{id:"measurement",title:"5. Local Measurements",icon:e.jsx(M,{className:"w-4 h-4"})},{id:"configuration",title:"6. Configuration",icon:e.jsx(U,{className:"w-4 h-4"})},{id:"troubleshooting",title:"7. Troubleshooting",icon:e.jsx(P,{className:"w-4 h-4"})},{id:"package-reference",title:"8. Package Reference (v1.0.0)",icon:e.jsx(R,{className:"w-4 h-4"})}],t=()=>{switch(a){case"overview":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-base leading-relaxed",children:"QECTOR Decoder v3 is a Python library for quantum error correction (QEC) decoding. v1.0.0 is the first stable release: it provides 17 decoder configurations and helpers integrated into a high-performance compiled Rust core with a plug-and-play Python API."}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/10 rounded-xl flex items-start gap-3",children:[e.jsx(E,{className:"w-5 h-5 text-cyan-300 shrink-0 mt-0.5"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Ecosystem Native:"})," Swappable backend design. You can easily plug QECTOR into Stim, PyMatching, Sinter, and Qiskit pipelines with minimal API modifications: v1.0.0 registers Sinter and qiskit-qec entry points so ",e.jsx("code",{className:"text-cyan-300",children:"sinter.collect()"})," works with no ",e.jsx("code",{className:"text-cyan-300",children:"custom_decoders="}),"."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-lg mb-3",children:"Key Highlights"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"v1.0.0: First Stable Release"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"API stability tiers, Relay-BP, CS-OSD(lambda, w), colour-code cluster_bposd, qector CLI + qector-doctor, Sinter/qiskit entry points, pymatching shim."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Validate on Your Hardware"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"Hardware, GPU, and measurement results are device-local. Use the package diagnostic and declared measurement workflow instead of treating site text as performance evidence."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Multi-Algorithm Diversity"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"17 decoder configurations from exact Blossom MWPM to Belief-Matching, BP-OSD, and GPU batch decoding."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Compiled Rust Core"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"A compiled Rust core with a Python API. Exact memory, latency, and throughput behavior depends on the selected workload and environment."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Optional GPU Paths"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"GPU paths are optional and environment-dependent. Read the installed release diagnostics before relying on them."})]})]})]})]});case"installation":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR ships as pre-compiled binary wheels on PyPI. Installing requires Python and pip."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Standard Installation"}),e.jsx(c,{code:"pip install qector-decoder-v3",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"System Requirements"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-sm",children:[e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary",children:"3.9, 3.10, 3.11, 3.12, 3.13 (64-bit)"})]}),e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Operating System"}),e.jsx("span",{className:"text-primary",children:"Linux, macOS, Windows (see current PyPI wheel metadata)"})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"GPU Requirements (Optional)"}),e.jsx("span",{className:"text-primary",children:"Optional and environment-dependent; check the installed release diagnostics"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Install Optional Dependencies"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"Install only the extras required by your workflow:"}),e.jsx(c,{code:`# Stim / Sinter / PyMatching ecosystem - pip install "qector-decoder-v3[stim]" - - # Full optional environment - pip install "qector-decoder-v3[all]"`,filename:"terminal",language:"bash"})]})]});case"quickstart":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Below is a minimal package-only example: create a rotated surface code, generate a syndrome, and verify a Blossom correction against the parity-check matrix."}),e.jsx(c,{filename:"surface_code_decode.py",language:"python",code:`import numpy as np -import qector_decoder_v3 as qector - -# Build a small code and inject one bit error. -code = qector.codes.rotated_surface_code(3) -error = np.zeros(code.n_qubits, dtype=np.uint8) -error[4] = 1 -syndrome = code.syndrome(error) - -# Decode with the graphlike Blossom backend. -correction = qector.BlossomDecoder( - code.check_to_qubits, - n_qubits=code.n_qubits, -).decode(syndrome) - -# The syndrome contract is H c = s (mod 2). -matrix = np.asarray(code.parity_check_matrix(), dtype=np.uint8) -assert np.array_equal((matrix @ correction.astype(int)) % 2, syndrome) -print("Syndrome-faithful correction")`})]});case"decoders":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR includes 17 decoder configurations categorized into stable, workload-sensitive, and experimental/research tiers. Choose based on code type and speed/accuracy tradeoffs:"}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse border border-gridline text-left text-sm rounded-xl overflow-hidden",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 font-semibold",children:[e.jsx("th",{className:"p-3",children:"Decoder"}),e.jsx("th",{className:"p-3",children:"Target Code"}),e.jsx("th",{className:"p-3",children:"Speed"}),e.jsx("th",{className:"p-3",children:"Accuracy"}),e.jsx("th",{className:"p-3",children:"Tier"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:[{name:"Blossom (MWPM)",target:"Graphlike CSS / surface",speed:"Workload-dependent",accuracy:"Minimum-weight matching objective",tier:"Stable"},{name:"Belief-Matching",target:"Correlated-noise research",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"BP-OSD",target:"qLDPC, LDPC",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"Union-Find",target:"Large Surface",speed:"Near-linear O(N)",accuracy:"Approximate",tier:"Production"},{name:"GPU Batch",target:"Supported batch workloads",speed:"Runtime-dependent",accuracy:"Validate locally",tier:"Workload-sensitive"},{name:"Hybrid / Cascade",target:"Degenerate, mixed",speed:"Iterative",accuracy:"High",tier:"Research"},{name:"Colour Code",target:"Triangular colour code",speed:"Moderate",accuracy:"Native",tier:"Research"}].map(s=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-semibold text-primary",children:s.name}),e.jsx("td",{className:"p-3 text-secondary",children:s.target}),e.jsx("td",{className:"p-3 text-secondary",children:s.speed}),e.jsx("td",{className:"p-3 text-secondary",children:s.accuracy}),e.jsx("td",{className:"p-3",children:e.jsx("span",{className:`px-2 py-0.5 rounded text-[10px] uppercase font-bold border ${s.tier==="Production"?"bg-green-400/10 text-green-400 border-green-400/20":"bg-gold-400/10 text-gold-400 border-gold-400/20"}`,children:s.tier})})]},s.name))})]})})]});case"measurement":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Hardware-specific measurements are not published on this site. If your project requires a local measurement, record the code, noise model, decoder configuration, seed, shots, environment, and raw artifact."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Environment Diagnostic"}),e.jsx(c,{code:"qector-doctor",filename:"terminal",language:"bash"}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["15-check diagnostic that reports PASS / WARN / FAIL per check and explains WHY a decoder is unavailable on your machine. Full report via ",e.jsx("code",{className:"text-cyan-300",children:"qector-doctor --json"}),"."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Local measurement via qector bench"}),e.jsx("p",{className:"text-secondary text-xs mb-2",children:"Use the command documented by the installed package release. The result is machine- and workload-specific, not a site claim:"}),e.jsx(c,{code:"qector bench --distance 5 --rounds 5 --shots 10000 --decoder blossom --noise 0.001",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Interactive Sandbox CLI"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"This UI is a command-output demonstration only; it does not execute commands or generate benchmark data:"}),e.jsx(B,{})]})]});case"configuration":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Detailed constructor configuration arguments for QECTOR's primary decoders:"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BlossomDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"adaptive_k"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`bool` (Default: `True`). Enable union-find matching pre-filtering to minimize match graph sizing."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"timeout"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`float` (Default: `None`). Maximum time (in seconds) allowed to resolve a single syndrome."})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BeliefMatchingDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_iters"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `30`). Maximum number of belief propagation iterations. Higher iterations improve syndrome accuracy."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"max_paths"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `10`). Maximum number of alternative paths generated for matching reweighting calculations."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_method"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:'`str` (Default: `"product_sum"`). Choice of BP update method. Options: `"product_sum"`, `"minimum_sum"`.'})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"GpuBatchDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"backend"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:'`str` (Default: `"cuda"`). Choose GPU compilation framework. Options: `"cuda"`, `"opencl"`.'})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"batch_size"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `1000`). Number of parallel syndromes transferred to and calculated in the GPU memory space."})})]})]})]})]});case"troubleshooting":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Solutions for common installation and running issues:"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:e.jsx(o,{children:"Issue: ImportError when importing `qector`"})})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Ensure your Python architecture matches the wheel and reinstall with `python -m pip install --force-reinstall qector-decoder-v3`."]})})]}),e.jsxs("div",{className:"p-4 bg-gold-400/5 border border-gold-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-gold-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: GPU / CUDA is not detected"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Verify drivers by typing `nvidia-smi` in terminal. Ensure CUDA Toolkit 11.8 or higher is installed and environment variable `CUDA_PATH` or `LD_LIBRARY_PATH` points to the CUDA install folder."]})})]}),e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: Out Of Memory (OOM) on GPU batching"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Lower the `batch_size` argument in your `GpuBatchDecoder` instantiation. For exceptionally large code distances (d > 15), prefer the linear-scaling `UnionFindDecoder` which reduces memory demands."]})})]})]})]});case"package-reference":return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl flex items-center justify-between flex-wrap gap-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-bold text-lg",children:"QECTOR Decoder v3: Extended Reference (package only)"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Version: 1.0.0 · PyPI: qector-decoder-v3 · Backend: Rust + PyO3"})]}),e.jsx("a",{href:"/docs/reference.md",target:"_blank",rel:"noopener noreferrer",download:"QECTOR Decoder v3 - Reference (package only).md",className:"btn-cyan text-xs py-2 px-4",children:"Download Reference (.md)"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"1. Installation & Platforms"}),e.jsx(c,{code:`pip install --upgrade "qector-decoder-v3>=1.0,<2" -pip install "qector-decoder-v3[stim]" # Stim / Sinter / PyMatching / LDPC ecosystem -pip install "qector-decoder-v3[bench]" # local measurement tools -pip install "qector-decoder-v3[all]" # optional full environment`,language:"bash",filename:"terminal"}),e.jsxs("div",{className:"mt-3 border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary font-mono",children:"3.9 - 3.13"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Platforms"}),e.jsx("span",{className:"text-primary",children:"Linux x86_64 (manylinux), Windows x64, macOS arm64"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License"}),e.jsx("span",{className:"text-primary",children:"Source-available (Free academic / non-commercial)"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Startup Notice"}),e.jsx("span",{className:"text-primary font-mono",children:"Suppressed with QECTOR_SILENT=1"})]}),e.jsxs("div",{className:"p-2.5 flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License Env"}),e.jsx("span",{className:"text-primary font-mono",children:"QECTOR_LICENSE + QECTOR_LICENSE_KEY (Ed25519 token)"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"2. Core Architecture"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1.5 text-secondary text-xs leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Rust Core (compiled extension):"})," Matching, UF, batch CPU/GPU algorithms."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Python Surface:"})," Clean API, Stim/Sinter compat, belief/GNN layers, licensing."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Zero-copy NumPy:"})," Direct memory access; GIL-free parallel decoding paths."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Version Symbol:"})," ",e.jsx("code",{className:"text-cyan-300",children:'qector_decoder_v3.__version__ == "1.0.0"'})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"3. Decoder Families & Incidence Rules"}),e.jsxs("p",{className:"text-muted-foreground text-xs mb-3",children:[e.jsx("strong",{className:"text-cyan-300",children:"Graph-like rule (UF family):"})," Every qubit must participate in at most two checks (participation ≤ 2). Matrices violating this raise a clear error (",e.jsx("code",{className:"text-red-400",children:"-32602"}),"). ",e.jsx("code",{className:"text-cyan-300",children:"BlossomDecoder"}),", ",e.jsx("code",{className:"text-cyan-300",children:"SparseBlossomDecoder"}),", and ",e.jsx("code",{className:"text-cyan-300",children:"BpOsdDecoder"})," accept general hyperedge codes."]}),e.jsx("div",{className:"overflow-x-auto rounded-xl",children:e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 font-bold border-b border-gridline bg-surface/30",children:[e.jsx("span",{children:"Class"}),e.jsx("span",{children:"Best for"}),e.jsx("span",{children:"Status"}),e.jsx("span",{children:"Graph-like?"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"UnionFindDecoder"}),e.jsx("span",{children:"Low-latency approximate"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes (participation ≤ 2)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"FastUnionFindDecoder"}),e.jsx("span",{children:"Faster UF hot path"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BlossomDecoder"}),e.jsx("span",{children:"Exact MWPM"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"SparseBlossomDecoder"}),e.jsx("span",{children:"Near-optimal matching"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BeliefMatching"}),e.jsx("span",{children:"Correlated-noise accuracy"}),e.jsx("span",{children:"Research"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BpOsdDecoder"}),e.jsx("span",{children:"LDPC / qLDPC"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BatchDecoder"}),e.jsx("span",{children:"High-throughput CPU batch"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes for UF batch"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"CUDABatchDecoder"}),e.jsx("span",{children:"GPU batch (NVIDIA)"}),e.jsx("span",{children:"Runtime-dependent"}),e.jsx("span",{children:"N/A"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"AutoDecoder"}),e.jsx("span",{children:"7-tier self-debugging fallback"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"N/A"})]})]})})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"4. Code Generators"}),e.jsx(c,{code:`from qector_decoder_v3 import ( - generate_repetition_code_checks, # (checks, n_qubits) - generate_ring_code_checks, # (checks, n_qubits) - generate_surface_code_checks, # surface-code checks -)`,language:"python",filename:"python"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"5. MCP and General-Matrix Workflows"}),e.jsx(c,{code:`# The standalone library MCP server is documented separately. -# Start it from the plugin package with: -python mcp/mcp_server_library.py - -# Initialize and call tools/list before using a tool.`,language:"python",filename:"mcp_server.py"}),e.jsx("p",{className:"text-muted-foreground text-xs mt-2 mb-3",children:"For general matrices, use the decoder family documented for that workload and verify every returned correction against H c = s (mod 2):"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import BlossomDecoder, SparseBlossomDecoder, BpOsdDecoder - -def decode_hyperedge(checks, n_qubits, syndrome, kind="Blossom", **opts): - syn = np.asarray(syndrome, dtype=np.uint8).ravel() - if kind in ("Blossom", "blossom"): - return BlossomDecoder(checks, n_qubits).decode(syn) - if kind in ("SparseBlossom", "sparse_blossom"): - return SparseBlossomDecoder(checks, n_qubits).decode(syn) - if kind.lower() in ("bposd", "bp_osd"): - H = np.zeros((len(checks), n_qubits), dtype=np.uint8) - for i, c in enumerate(checks): - for q in c: H[i, q] ^= 1 - return BpOsdDecoder(H, error_rate=opts.get("error_rate", 0.05)).decode(syn) - raise ValueError(f"unsupported kind: {kind}")`,language:"python",filename:"hyperedge_workaround.py"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"6. Verified Fallback Pattern"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed mb-3",children:"A fallback is safe only when each candidate is checked against the same parity-check matrix. The following pattern uses the stable Union-Find and Blossom classes and fails closed if a candidate is not syndrome-faithful:"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder - -def faithful_decode(check_to_qubits, n_qubits, syndrome): - syndrome = np.asarray(syndrome, dtype=np.uint8).ravel() - matrix = np.zeros((len(check_to_qubits), n_qubits), dtype=np.uint8) - for check, qubits in enumerate(check_to_qubits): - matrix[check, qubits] = 1 - - for decoder_type in (FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder): - try: - correction = np.asarray( - decoder_type(check_to_qubits, n_qubits=n_qubits).decode(syndrome), - dtype=np.uint8, - ) - if np.array_equal((matrix @ correction.astype(int)) % 2, syndrome): - return correction, decoder_type.__name__ - except Exception: - continue - raise RuntimeError("No syndrome-faithful decoder result")`,language:"python",filename:"cascade_decode.py"})]})]});default:return null}};return e.jsxs(e.Fragment,{children:[e.jsx(N,{title:"User Manual · QECTOR",description:"Complete user manual for QECTOR Decoder v3. Installation, configuration, decoder selection, validation, and troubleshooting."}),e.jsx(w,{data:{"@context":"https://schema.org","@type":"HowTo",name:"How to Install and Run QECTOR Decoder v3",description:"Step-by-step instructions to install QECTOR, verify a syndrome-faithful decode, select a decoder, and review evidence boundaries.",step:[{"@type":"HowToStep",name:"Install the package",text:"Run pip install qector-decoder-v3 in your Python terminal to install the Rust core binary wheels."},{"@type":"HowToStep",name:"Verify the installation",text:'Verify the installation with python -c "import qector_decoder_v3 as qd; print(qd.__version__)" and a small syndrome-faithfulness check.'},{"@type":"HowToStep",name:"Review evidence boundaries",text:"Read the v1.0.0 reference manual and record code, noise model, decoder configuration, seed, environment, and artifact metadata before making a local measurement."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"15 backend families powering 17 decoder configurations · GPU Batch · Stim · Sinter · Qiskit"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(I,{text:"User Manual",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Complete guide to QECTOR Decoder v3: installation, decoder selection, local measurements, diagnostics, and ecosystem integration."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsx("div",{className:"max-w-6xl mx-auto",children:e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-4 gap-8",children:[e.jsx("div",{className:"lg:col-span-1",children:e.jsx("nav",{"aria-label":"Manual sections",className:"sticky top-24 space-y-1 bg-surface/10 p-2 rounded-xl border border-gridline/50",children:n.map(s=>e.jsxs("button",{type:"button",onClick:()=>l(s.id),"aria-current":a===s.id?"true":void 0,className:`w-full text-left px-3.5 py-2.5 rounded-lg text-sm font-medium transition-all duration-200 flex items-center gap-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cyan-300 ${a===s.id?"bg-cyan-300/10 text-cyan-300 border border-cyan-300/20":"text-secondary hover:text-primary hover:bg-white/5 border border-transparent"}`,children:[s.icon,s.title]},s.id))})}),e.jsx("div",{className:"lg:col-span-3",children:e.jsxs("div",{className:"card-surface bg-surface/20 min-h-[500px]",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6 text-primary border-b border-gridline pb-4 flex items-center gap-2",children:n.find(s=>s.id===a)?.title.substring(3)}),e.jsx("div",{className:"transition-all duration-300",children:t()})]})})]})})})]})}function T(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.813 15.904 9 21l-.813-5.096L3 15l5.096-.813L9 9l.813 5.096L15 15l-5.187.904Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19.071 4.929a10 10 0 0 0-14.142 0M12 3v3m0 12v3M3 12h3m12 0h3",opacity:"0.5"})]})}function M(a){return e.jsx("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v5.25c0 .621-.504 1.125-1.125 1.125h-2.25A1.125 1.125 0 0 1 3 18.375v-5.25ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v9.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125v-9.75ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v14.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z"})})}function U(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.324.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.43l-1.003.828c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.954.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.43l1.004-.827c.292-.24.437-.613.43-.991a6.936 6.936 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"})]})}export{$ as default}; diff --git a/assets/Manual-BT_SdIYV.js b/assets/Manual-BT_SdIYV.js deleted file mode 100644 index fac63a62..00000000 --- a/assets/Manual-BT_SdIYV.js +++ /dev/null @@ -1,67 +0,0 @@ -import{r as p,j as e,R as b}from"./vendor-react-BiHfrq0e.js";import{S as N,J as w,C as c}from"./index-DkYdPRY7.js";import{T as k,o as _,u as C,I as S,g as q,a as D,C as P,B as R,v as u,i as E}from"./vendor-ui-B0ssGG4c.js";import{N as I}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-gsap-a3sj5zmn.js";function B(){const[a,l]=p.useState(""),[n,t]=p.useState([{text:"QECTOR CLI Terminal Demo (simulation only)",type:"info"},{text:"No command is executed and no external service is contacted.",type:"info"}]),[s,h]=p.useState(!1),g=p.useRef(null),y=()=>{g.current?.scrollIntoView({behavior:"smooth"})};p.useEffect(()=>{y()},[n]);const f=async i=>{const m=i.trim().toLowerCase(),x=[...n,{text:`qector@sandbox:~$ ${i}`,type:"input"}];t(x),l(""),h(!0);const d=r=>new Promise(v=>setTimeout(v,r));m==="help"?(await d(200),t(r=>[...r,{text:"Available commands:",type:"info"},{text:" help - Show this menu",type:"output"},{text:" pip install qector-decoder-v3 - Show the install command",type:"output"},{text:" qector-doctor - Show the diagnostic command",type:"output"},{text:" qector bench -d 5 - Show a local measurement command",type:"output"},{text:" clear - Clear the terminal screen",type:"output"}])):m==="clear"?t([]):m==="pip install qector-decoder-v3"?(await d(300),t(r=>[...r,{text:"Simulation only: no package was downloaded.",type:"output"}]),await d(800),t(r=>[...r,{text:"Simulation only: no package was installed.",type:"output"}]),await d(400),t(r=>[...r,{text:"For a real install, follow the current PyPI and release verification instructions.",type:"output"}]),await d(600),t(r=>[...r,{text:"✓ Demo complete: no network request or filesystem change was made.",type:"success"}])):m==="qector-doctor"?(await d(300),t(r=>[...r,{text:"Simulation only: qector-doctor was not run.",type:"output"}]),await d(500),t(r=>[...r,{text:"Run qector-doctor in your installed environment to obtain real PASS / WARN / FAIL results.",type:"info"}])):m==="qector bench -d 5"||m==="qector bench --distance 5"?(await d(400),t(r=>[...r,{text:"Simulation only: no circuit or measurement was generated.",type:"output"}]),await d(1e3),t(r=>[...r,{text:"Run qector bench on your own declared workload to generate real local evidence.",type:"info"}])):(await d(150),t(r=>[...r,{text:`qector: command not found: ${i}. Type "help" for a list of commands.`,type:"info"}])),h(!1)},j=i=>{i.preventDefault(),!(!a.trim()||s)&&f(a)};return e.jsxs("div",{className:"flex flex-col border border-gridline bg-void/90 rounded-2xl overflow-hidden shadow-2xl",children:[e.jsxs("div",{className:"flex items-center justify-between px-4 py-3 bg-surface border-b border-gridline",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(k,{className:"w-4 h-4 text-cyan-300"}),e.jsx("span",{className:"font-mono text-xs text-secondary font-semibold",children:"interactive-cli.sh"})]}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-red-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-yellow-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-green-500/80"})]})]}),e.jsxs("div",{className:"p-5 font-mono text-xs h-72 overflow-y-auto space-y-2 select-text custom-scrollbar",children:[n.map((i,m)=>{let x="text-secondary";return i.type==="input"?x="text-cyan-300 font-semibold":i.type==="success"?x="text-green-400 font-semibold":i.type==="info"&&(x="text-gold-400"),e.jsx("div",{className:`${x} leading-relaxed whitespace-pre-wrap`,children:i.text},m)}),s&&e.jsxs("div",{className:"text-muted-foreground animate-pulse flex items-center gap-1",children:[e.jsx("span",{className:"w-1.5 h-3 bg-muted-foreground inline-block animate-caret"}),e.jsx("span",{children:"Executing..."})]}),e.jsx("div",{ref:g})]}),e.jsxs("form",{onSubmit:j,className:"flex items-center border-t border-gridline bg-surface/50 px-4 py-2",children:[e.jsx(_,{className:"w-4 h-4 text-cyan-300 shrink-0"}),e.jsx("input",{type:"text",value:a,onChange:i=>l(i.target.value),disabled:s,className:"flex-1 bg-transparent border-none outline-none font-mono text-xs text-cyan-300 px-2 py-1 placeholder-cyan-300/60 focus-visible:ring-2 focus-visible:ring-cyan-300",placeholder:'Type a command (e.g. "help", "pip install qector-decoder-v3")...',"aria-label":"Terminal input"}),e.jsx("button",{type:"submit",disabled:s||!a.trim(),className:"p-1 text-cyan-300 hover:text-cyan-200 disabled:text-muted/20 transition-colors","aria-label":"Run command",children:e.jsx(C,{className:"w-3.5 h-3.5 fill-current"})})]})]})}const L="font-mono text-[11px] bg-cyan-300/10 text-cyan-200 px-1 py-0.5 rounded border border-cyan-300/20";function O(a,l){return a.replace(/\\"/g,'"').split(/(`[^`\n]+`)/g).map((n,t)=>n.length>2&&n.startsWith("`")&&n.endsWith("`")?e.jsx("code",{className:L,children:n.slice(1,-1)},`${l}-${t}`):n)}function o({children:a}){const l=(n,t)=>typeof n=="string"?e.jsx(b.Fragment,{children:O(n,t)},t):Array.isArray(n)?e.jsx(e.Fragment,{children:n.map((s,h)=>e.jsx(b.Fragment,{children:l(s,`${t}-${h}`)},`${t}-${h}`))}):n;return e.jsx(e.Fragment,{children:l(a,"imd")})}function $(){const[a,l]=p.useState("overview"),n=[{id:"overview",title:"1. Overview",icon:e.jsx(S,{className:"w-4 h-4"})},{id:"installation",title:"2. Installation",icon:e.jsx(q,{className:"w-4 h-4"})},{id:"quickstart",title:"3. Quick Start",icon:e.jsx(T,{className:"w-4 h-4"})},{id:"decoders",title:"4. Choosing a Decoder",icon:e.jsx(D,{className:"w-4 h-4"})},{id:"measurement",title:"5. Local Measurements",icon:e.jsx(M,{className:"w-4 h-4"})},{id:"configuration",title:"6. Configuration",icon:e.jsx(U,{className:"w-4 h-4"})},{id:"troubleshooting",title:"7. Troubleshooting",icon:e.jsx(P,{className:"w-4 h-4"})},{id:"package-reference",title:"8. Package Reference (v1.0.1)",icon:e.jsx(R,{className:"w-4 h-4"})}],t=()=>{switch(a){case"overview":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-base leading-relaxed",children:"QECTOR Decoder v3 is a Python library for quantum error correction (QEC) decoding. v1.0.1 is the current stable release (v1.0.0, August 2026, was the first): it provides 17 decoder configurations and helpers integrated into a high-performance compiled Rust core with a plug-and-play Python API."}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/10 rounded-xl flex items-start gap-3",children:[e.jsx(E,{className:"w-5 h-5 text-cyan-300 shrink-0 mt-0.5"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Ecosystem Native:"})," Swappable backend design. You can easily plug QECTOR into Stim, PyMatching, Sinter, and Qiskit pipelines with minimal API modifications: Sinter decoders plug in with ",e.jsx("code",{className:"text-cyan-300",children:"custom_decoders=qector_sinter_decoders()"}),", and a qiskit-qec plugin is registered."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-lg mb-3",children:"Key Highlights"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"v1.0.0: First Stable Release"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"API stability tiers, Relay-BP, CS-OSD(lambda, w), colour-code cluster_bposd, qector CLI + qector-doctor, Sinter/qiskit entry points, pymatching shim."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Validate on Your Hardware"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"Hardware, GPU, and measurement results are device-local. Use the package diagnostic and declared measurement workflow instead of treating site text as performance evidence."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Multi-Algorithm Diversity"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"17 decoder configurations from exact Blossom MWPM to Belief-Matching, BP-OSD, and GPU batch decoding."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Compiled Rust Core"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"A compiled Rust core with a Python API. Exact memory, latency, and throughput behavior depends on the selected workload and environment."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Optional GPU Paths"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"GPU paths are optional and environment-dependent. Read the installed release diagnostics before relying on them."})]})]})]})]});case"installation":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR ships as pre-compiled binary wheels on PyPI. Installing requires Python and pip."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Standard Installation"}),e.jsx(c,{code:"pip install qector-decoder-v3",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"System Requirements"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-sm",children:[e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary",children:"3.9, 3.10, 3.11, 3.12, 3.13 (64-bit)"})]}),e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Operating System"}),e.jsx("span",{className:"text-primary",children:"Linux, macOS, Windows (see current PyPI wheel metadata)"})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"GPU Requirements (Optional)"}),e.jsx("span",{className:"text-primary",children:"Optional and environment-dependent; check the installed release diagnostics"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Install Optional Dependencies"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"Install only the extras required by your workflow:"}),e.jsx(c,{code:`# Stim / Sinter / PyMatching ecosystem - pip install "qector-decoder-v3[stim]" - - # Full optional environment - pip install "qector-decoder-v3[all]"`,filename:"terminal",language:"bash"})]})]});case"quickstart":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Below is a minimal package-only example: create a rotated surface code, generate a syndrome, and verify a Blossom correction against the parity-check matrix."}),e.jsx(c,{filename:"surface_code_decode.py",language:"python",code:`import numpy as np -import qector_decoder_v3 as qector - -# Build a small code and inject one bit error. -code = qector.codes.rotated_surface_code(3) -error = np.zeros(code.n_qubits, dtype=np.uint8) -error[4] = 1 -syndrome = code.syndrome(error) - -# Decode with the graphlike Blossom backend. -correction = qector.BlossomDecoder( - code.check_to_qubits, - n_qubits=code.n_qubits, -).decode(syndrome) - -# The syndrome contract is H c = s (mod 2). -matrix = np.asarray(code.parity_check_matrix(), dtype=np.uint8) -assert np.array_equal((matrix @ correction.astype(int)) % 2, syndrome) -print("Syndrome-faithful correction")`})]});case"decoders":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR includes 17 decoder configurations categorized into stable, workload-sensitive, and experimental/research tiers. Choose based on code type and speed/accuracy tradeoffs:"}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse border border-gridline text-left text-sm rounded-xl overflow-hidden",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 font-semibold",children:[e.jsx("th",{className:"p-3",children:"Decoder"}),e.jsx("th",{className:"p-3",children:"Target Code"}),e.jsx("th",{className:"p-3",children:"Speed"}),e.jsx("th",{className:"p-3",children:"Accuracy"}),e.jsx("th",{className:"p-3",children:"Tier"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:[{name:"Blossom (MWPM)",target:"Graphlike CSS / surface",speed:"Workload-dependent",accuracy:"Minimum-weight matching objective",tier:"Stable"},{name:"Belief-Matching",target:"Correlated-noise research",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"BP-OSD",target:"qLDPC, LDPC",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"Union-Find",target:"Large Surface",speed:"Near-linear O(N)",accuracy:"Approximate",tier:"Production"},{name:"GPU Batch",target:"Supported batch workloads",speed:"Runtime-dependent",accuracy:"Validate locally",tier:"Workload-sensitive"},{name:"Hybrid / Cascade",target:"Degenerate, mixed",speed:"Iterative",accuracy:"High",tier:"Research"},{name:"Colour Code",target:"Triangular colour code",speed:"Moderate",accuracy:"Native",tier:"Research"}].map(s=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-semibold text-primary",children:s.name}),e.jsx("td",{className:"p-3 text-secondary",children:s.target}),e.jsx("td",{className:"p-3 text-secondary",children:s.speed}),e.jsx("td",{className:"p-3 text-secondary",children:s.accuracy}),e.jsx("td",{className:"p-3",children:e.jsx("span",{className:`px-2 py-0.5 rounded text-[10px] uppercase font-bold border ${s.tier==="Production"?"bg-green-400/10 text-green-400 border-green-400/20":"bg-gold-400/10 text-gold-400 border-gold-400/20"}`,children:s.tier})})]},s.name))})]})})]});case"measurement":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Hardware-specific measurements are not published on this site. If your project requires a local measurement, record the code, noise model, decoder configuration, seed, shots, environment, and raw artifact."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Environment Diagnostic"}),e.jsx(c,{code:"qector-doctor",filename:"terminal",language:"bash"}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["15-check diagnostic that reports PASS / WARN / FAIL per check and explains WHY a decoder is unavailable on your machine. Full report via ",e.jsx("code",{className:"text-cyan-300",children:"qector-doctor --json"}),"."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Local measurement via qector bench"}),e.jsx("p",{className:"text-secondary text-xs mb-2",children:"Use the command documented by the installed package release. The result is machine- and workload-specific, not a site claim:"}),e.jsx(c,{code:"qector bench --distance 5 --rounds 5 --shots 10000 --decoder blossom --noise 0.001",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Interactive Sandbox CLI"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"This UI is a command-output demonstration only; it does not execute commands or generate benchmark data:"}),e.jsx(B,{})]})]});case"configuration":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Detailed constructor configuration arguments for QECTOR's primary decoders:"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BlossomDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"adaptive_k"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`bool` (Default: `True`). Enable union-find matching pre-filtering to minimize match graph sizing."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"timeout"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`float` (Default: `None`). Maximum time (in seconds) allowed to resolve a single syndrome."})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BeliefMatchingDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_iters"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `30`). Maximum number of belief propagation iterations. Higher iterations improve syndrome accuracy."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"max_paths"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `10`). Maximum number of alternative paths generated for matching reweighting calculations."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_method"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:'`str` (Default: `"product_sum"`). Choice of BP update method. Options: `"product_sum"`, `"minimum_sum"`.'})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"GpuBatchDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"backend"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:'`str` (Default: `"cuda"`). Choose GPU compilation framework. Options: `"cuda"`, `"opencl"`.'})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"batch_size"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `1000`). Number of parallel syndromes transferred to and calculated in the GPU memory space."})})]})]})]})]});case"troubleshooting":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Solutions for common installation and running issues:"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:e.jsx(o,{children:"Issue: ImportError when importing `qector`"})})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Ensure your Python architecture matches the wheel and reinstall with `python -m pip install --force-reinstall qector-decoder-v3`."]})})]}),e.jsxs("div",{className:"p-4 bg-gold-400/5 border border-gold-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-gold-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: GPU / CUDA is not detected"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Verify drivers by typing `nvidia-smi` in terminal. Ensure CUDA Toolkit 11.8 or higher is installed and environment variable `CUDA_PATH` or `LD_LIBRARY_PATH` points to the CUDA install folder."]})})]}),e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: Out Of Memory (OOM) on GPU batching"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Lower the `batch_size` argument in your `GpuBatchDecoder` instantiation. For exceptionally large code distances (d > 15), prefer the linear-scaling `UnionFindDecoder` which reduces memory demands."]})})]})]})]});case"package-reference":return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl flex items-center justify-between flex-wrap gap-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-bold text-lg",children:"QECTOR Decoder v3: Extended Reference (package only)"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Version: 1.0.1 · PyPI: qector-decoder-v3 · Backend: Rust + PyO3"})]}),e.jsx("a",{href:"/docs/reference.md",target:"_blank",rel:"noopener noreferrer",download:"QECTOR Decoder v3 - Reference (package only).md",className:"btn-cyan text-xs py-2 px-4",children:"Download Reference (.md)"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"1. Installation & Platforms"}),e.jsx(c,{code:`pip install --upgrade "qector-decoder-v3>=1.0,<2" -pip install "qector-decoder-v3[stim]" # Stim / Sinter / PyMatching / LDPC ecosystem -pip install "qector-decoder-v3[bench]" # local measurement tools -pip install "qector-decoder-v3[all]" # optional full environment`,language:"bash",filename:"terminal"}),e.jsxs("div",{className:"mt-3 border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary font-mono",children:"3.9 - 3.13"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Platforms"}),e.jsx("span",{className:"text-primary",children:"Linux x86_64 (manylinux), Windows x64, macOS arm64"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License"}),e.jsx("span",{className:"text-primary",children:"Source-available (Free academic / non-commercial)"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Startup Notice"}),e.jsx("span",{className:"text-primary font-mono",children:"Suppressed with QECTOR_SILENT=1"})]}),e.jsxs("div",{className:"p-2.5 flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License Env"}),e.jsx("span",{className:"text-primary font-mono",children:"QECTOR_LICENSE + QECTOR_LICENSE_KEY (Ed25519 token)"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"2. Core Architecture"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1.5 text-secondary text-xs leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Rust Core (compiled extension):"})," Matching, UF, batch CPU/GPU algorithms."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Python Surface:"})," Clean API, Stim/Sinter compat, belief/GNN layers, licensing."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Zero-copy NumPy:"})," Direct memory access; GIL-free parallel decoding paths."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Version Symbol:"})," ",e.jsx("code",{className:"text-cyan-300",children:'qector_decoder_v3.__version__ == "1.0.1"'})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"3. Decoder Families & Incidence Rules"}),e.jsxs("p",{className:"text-muted-foreground text-xs mb-3",children:[e.jsx("strong",{className:"text-cyan-300",children:"Graph-like rule (UF family):"})," Every qubit must participate in at most two checks (participation ≤ 2). Matrices violating this raise a clear error (",e.jsx("code",{className:"text-red-400",children:"-32602"}),"). ",e.jsx("code",{className:"text-cyan-300",children:"BlossomDecoder"}),", ",e.jsx("code",{className:"text-cyan-300",children:"SparseBlossomDecoder"}),", and ",e.jsx("code",{className:"text-cyan-300",children:"BpOsdDecoder"})," accept general hyperedge codes."]}),e.jsx("div",{className:"overflow-x-auto rounded-xl",children:e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 font-bold border-b border-gridline bg-surface/30",children:[e.jsx("span",{children:"Class"}),e.jsx("span",{children:"Best for"}),e.jsx("span",{children:"Status"}),e.jsx("span",{children:"Graph-like?"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"UnionFindDecoder"}),e.jsx("span",{children:"Low-latency approximate"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes (participation ≤ 2)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"FastUnionFindDecoder"}),e.jsx("span",{children:"Faster UF hot path"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BlossomDecoder"}),e.jsx("span",{children:"Exact MWPM"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"SparseBlossomDecoder"}),e.jsx("span",{children:"Near-optimal matching"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BeliefMatching"}),e.jsx("span",{children:"Correlated-noise accuracy"}),e.jsx("span",{children:"Research"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BpOsdDecoder"}),e.jsx("span",{children:"LDPC / qLDPC"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BatchDecoder"}),e.jsx("span",{children:"High-throughput CPU batch"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes for UF batch"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"CUDABatchDecoder"}),e.jsx("span",{children:"GPU batch (NVIDIA)"}),e.jsx("span",{children:"Runtime-dependent"}),e.jsx("span",{children:"N/A"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"AutoDecoder"}),e.jsx("span",{children:"7-tier self-debugging fallback"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"N/A"})]})]})})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"4. Code Generators"}),e.jsx(c,{code:`from qector_decoder_v3 import ( - generate_repetition_code_checks, # (checks, n_qubits) - generate_ring_code_checks, # (checks, n_qubits) - generate_surface_code_checks, # surface-code checks -)`,language:"python",filename:"python"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"5. MCP and General-Matrix Workflows"}),e.jsx(c,{code:`# The standalone library MCP server is documented separately. -# Start it from the plugin package with: -python mcp/mcp_server_library.py - -# Initialize and call tools/list before using a tool.`,language:"python",filename:"mcp_server.py"}),e.jsx("p",{className:"text-muted-foreground text-xs mt-2 mb-3",children:"For general matrices, use the decoder family documented for that workload and verify every returned correction against H c = s (mod 2):"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import BlossomDecoder, SparseBlossomDecoder, BpOsdDecoder - -def decode_hyperedge(checks, n_qubits, syndrome, kind="Blossom", **opts): - syn = np.asarray(syndrome, dtype=np.uint8).ravel() - if kind in ("Blossom", "blossom"): - return BlossomDecoder(checks, n_qubits).decode(syn) - if kind in ("SparseBlossom", "sparse_blossom"): - return SparseBlossomDecoder(checks, n_qubits).decode(syn) - if kind.lower() in ("bposd", "bp_osd"): - H = np.zeros((len(checks), n_qubits), dtype=np.uint8) - for i, c in enumerate(checks): - for q in c: H[i, q] ^= 1 - return BpOsdDecoder(H, error_rate=opts.get("error_rate", 0.05)).decode(syn) - raise ValueError(f"unsupported kind: {kind}")`,language:"python",filename:"hyperedge_workaround.py"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"6. Verified Fallback Pattern"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed mb-3",children:"A fallback is safe only when each candidate is checked against the same parity-check matrix. The following pattern uses the stable Union-Find and Blossom classes and fails closed if a candidate is not syndrome-faithful:"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder - -def faithful_decode(check_to_qubits, n_qubits, syndrome): - syndrome = np.asarray(syndrome, dtype=np.uint8).ravel() - matrix = np.zeros((len(check_to_qubits), n_qubits), dtype=np.uint8) - for check, qubits in enumerate(check_to_qubits): - matrix[check, qubits] = 1 - - for decoder_type in (FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder): - try: - correction = np.asarray( - decoder_type(check_to_qubits, n_qubits=n_qubits).decode(syndrome), - dtype=np.uint8, - ) - if np.array_equal((matrix @ correction.astype(int)) % 2, syndrome): - return correction, decoder_type.__name__ - except Exception: - continue - raise RuntimeError("No syndrome-faithful decoder result")`,language:"python",filename:"cascade_decode.py"})]})]});default:return null}};return e.jsxs(e.Fragment,{children:[e.jsx(N,{title:"User Manual · QECTOR",description:"Complete user manual for QECTOR Decoder v3. Installation, configuration, decoder selection, validation, and troubleshooting."}),e.jsx(w,{data:{"@context":"https://schema.org","@type":"HowTo",name:"How to Install and Run QECTOR Decoder v3",description:"Step-by-step instructions to install QECTOR, verify a syndrome-faithful decode, select a decoder, and review evidence boundaries.",step:[{"@type":"HowToStep",name:"Install the package",text:"Run pip install qector-decoder-v3 in your Python terminal to install the Rust core binary wheels."},{"@type":"HowToStep",name:"Verify the installation",text:'Verify the installation with python -c "import qector_decoder_v3 as qd; print(qd.__version__)" and a small syndrome-faithfulness check.'},{"@type":"HowToStep",name:"Review evidence boundaries",text:"Read the v1.0.0 reference manual and record code, noise model, decoder configuration, seed, environment, and artifact metadata before making a local measurement."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"15 backend families powering 17 decoder configurations · GPU Batch · Stim · Sinter · Qiskit"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(I,{text:"User Manual",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Complete guide to QECTOR Decoder v3: installation, decoder selection, local measurements, diagnostics, and ecosystem integration."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsx("div",{className:"max-w-6xl mx-auto",children:e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-4 gap-8",children:[e.jsx("div",{className:"lg:col-span-1",children:e.jsx("nav",{"aria-label":"Manual sections",className:"sticky top-24 space-y-1 bg-surface/10 p-2 rounded-xl border border-gridline/50",children:n.map(s=>e.jsxs("button",{type:"button",onClick:()=>l(s.id),"aria-current":a===s.id?"true":void 0,className:`w-full text-left px-3.5 py-2.5 rounded-lg text-sm font-medium transition-all duration-200 flex items-center gap-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cyan-300 ${a===s.id?"bg-cyan-300/10 text-cyan-300 border border-cyan-300/20":"text-secondary hover:text-primary hover:bg-white/5 border border-transparent"}`,children:[s.icon,s.title]},s.id))})}),e.jsx("div",{className:"lg:col-span-3",children:e.jsxs("div",{className:"card-surface bg-surface/20 min-h-[500px]",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6 text-primary border-b border-gridline pb-4 flex items-center gap-2",children:n.find(s=>s.id===a)?.title.substring(3)}),e.jsx("div",{className:"transition-all duration-300",children:t()})]})})]})})})]})}function T(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.813 15.904 9 21l-.813-5.096L3 15l5.096-.813L9 9l.813 5.096L15 15l-5.187.904Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19.071 4.929a10 10 0 0 0-14.142 0M12 3v3m0 12v3M3 12h3m12 0h3",opacity:"0.5"})]})}function M(a){return e.jsx("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v5.25c0 .621-.504 1.125-1.125 1.125h-2.25A1.125 1.125 0 0 1 3 18.375v-5.25ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v9.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125v-9.75ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v14.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z"})})}function U(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.324.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.43l-1.003.828c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.954.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.43l1.004-.827c.292-.24.437-.613.43-.991a6.936 6.936 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"})]})}export{$ as default}; diff --git a/assets/Manual-BVfOpnR5.js b/assets/Manual-BVfOpnR5.js deleted file mode 100644 index 7963932e..00000000 --- a/assets/Manual-BVfOpnR5.js +++ /dev/null @@ -1,67 +0,0 @@ -import{r as p,j as e,R as b}from"./vendor-react-BiHfrq0e.js";import{S as N,J as w,C as c}from"./index-_BpMZhV3.js";import{T as k,o as _,u as C,I as S,g as q,a as D,C as P,B as R,v as u,i as E}from"./vendor-ui-B0ssGG4c.js";import{N as I}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-gsap-a3sj5zmn.js";function B(){const[a,l]=p.useState(""),[n,t]=p.useState([{text:"QECTOR CLI Terminal Demo (simulation only)",type:"info"},{text:"No command is executed and no external service is contacted.",type:"info"}]),[s,h]=p.useState(!1),g=p.useRef(null),y=()=>{g.current?.scrollIntoView({behavior:"smooth"})};p.useEffect(()=>{y()},[n]);const f=async i=>{const m=i.trim().toLowerCase(),x=[...n,{text:`qector@sandbox:~$ ${i}`,type:"input"}];t(x),l(""),h(!0);const d=r=>new Promise(v=>setTimeout(v,r));m==="help"?(await d(200),t(r=>[...r,{text:"Available commands:",type:"info"},{text:" help - Show this menu",type:"output"},{text:" pip install qector-decoder-v3 - Show the install command",type:"output"},{text:" qector-doctor - Show the diagnostic command",type:"output"},{text:" qector bench -d 5 - Show a local measurement command",type:"output"},{text:" clear - Clear the terminal screen",type:"output"}])):m==="clear"?t([]):m==="pip install qector-decoder-v3"?(await d(300),t(r=>[...r,{text:"Simulation only: no package was downloaded.",type:"output"}]),await d(800),t(r=>[...r,{text:"Simulation only: no package was installed.",type:"output"}]),await d(400),t(r=>[...r,{text:"For a real install, follow the current PyPI and release verification instructions.",type:"output"}]),await d(600),t(r=>[...r,{text:"✓ Demo complete: no network request or filesystem change was made.",type:"success"}])):m==="qector-doctor"?(await d(300),t(r=>[...r,{text:"Simulation only: qector-doctor was not run.",type:"output"}]),await d(500),t(r=>[...r,{text:"Run qector-doctor in your installed environment to obtain real PASS / WARN / FAIL results.",type:"info"}])):m==="qector bench -d 5"||m==="qector bench --distance 5"?(await d(400),t(r=>[...r,{text:"Simulation only: no circuit or measurement was generated.",type:"output"}]),await d(1e3),t(r=>[...r,{text:"Run qector bench on your own declared workload to generate real local evidence.",type:"info"}])):(await d(150),t(r=>[...r,{text:`qector: command not found: ${i}. Type "help" for a list of commands.`,type:"info"}])),h(!1)},j=i=>{i.preventDefault(),!(!a.trim()||s)&&f(a)};return e.jsxs("div",{className:"flex flex-col border border-gridline bg-void/90 rounded-2xl overflow-hidden shadow-2xl",children:[e.jsxs("div",{className:"flex items-center justify-between px-4 py-3 bg-surface border-b border-gridline",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(k,{className:"w-4 h-4 text-cyan-300"}),e.jsx("span",{className:"font-mono text-xs text-secondary font-semibold",children:"interactive-cli.sh"})]}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-red-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-yellow-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-green-500/80"})]})]}),e.jsxs("div",{className:"p-5 font-mono text-xs h-72 overflow-y-auto space-y-2 select-text custom-scrollbar",children:[n.map((i,m)=>{let x="text-secondary";return i.type==="input"?x="text-cyan-300 font-semibold":i.type==="success"?x="text-green-400 font-semibold":i.type==="info"&&(x="text-gold-400"),e.jsx("div",{className:`${x} leading-relaxed whitespace-pre-wrap`,children:i.text},m)}),s&&e.jsxs("div",{className:"text-muted-foreground animate-pulse flex items-center gap-1",children:[e.jsx("span",{className:"w-1.5 h-3 bg-muted-foreground inline-block animate-caret"}),e.jsx("span",{children:"Executing..."})]}),e.jsx("div",{ref:g})]}),e.jsxs("form",{onSubmit:j,className:"flex items-center border-t border-gridline bg-surface/50 px-4 py-2",children:[e.jsx(_,{className:"w-4 h-4 text-cyan-300 shrink-0"}),e.jsx("input",{type:"text",value:a,onChange:i=>l(i.target.value),disabled:s,className:"flex-1 bg-transparent border-none outline-none font-mono text-xs text-cyan-300 px-2 py-1 placeholder-cyan-300/60 focus-visible:ring-2 focus-visible:ring-cyan-300",placeholder:'Type a command (e.g. "help", "pip install qector-decoder-v3")...',"aria-label":"Terminal input"}),e.jsx("button",{type:"submit",disabled:s||!a.trim(),className:"p-1 text-cyan-300 hover:text-cyan-200 disabled:text-muted/20 transition-colors","aria-label":"Run command",children:e.jsx(C,{className:"w-3.5 h-3.5 fill-current"})})]})]})}const L="font-mono text-[11px] bg-cyan-300/10 text-cyan-200 px-1 py-0.5 rounded border border-cyan-300/20";function O(a,l){return a.replace(/\\"/g,'"').split(/(`[^`\n]+`)/g).map((n,t)=>n.length>2&&n.startsWith("`")&&n.endsWith("`")?e.jsx("code",{className:L,children:n.slice(1,-1)},`${l}-${t}`):n)}function o({children:a}){const l=(n,t)=>typeof n=="string"?e.jsx(b.Fragment,{children:O(n,t)},t):Array.isArray(n)?e.jsx(e.Fragment,{children:n.map((s,h)=>e.jsx(b.Fragment,{children:l(s,`${t}-${h}`)},`${t}-${h}`))}):n;return e.jsx(e.Fragment,{children:l(a,"imd")})}function $(){const[a,l]=p.useState("overview"),n=[{id:"overview",title:"1. Overview",icon:e.jsx(S,{className:"w-4 h-4"})},{id:"installation",title:"2. Installation",icon:e.jsx(q,{className:"w-4 h-4"})},{id:"quickstart",title:"3. Quick Start",icon:e.jsx(T,{className:"w-4 h-4"})},{id:"decoders",title:"4. Choosing a Decoder",icon:e.jsx(D,{className:"w-4 h-4"})},{id:"measurement",title:"5. Local Measurements",icon:e.jsx(M,{className:"w-4 h-4"})},{id:"configuration",title:"6. Configuration",icon:e.jsx(U,{className:"w-4 h-4"})},{id:"troubleshooting",title:"7. Troubleshooting",icon:e.jsx(P,{className:"w-4 h-4"})},{id:"package-reference",title:"8. Package Reference (v1.0.0)",icon:e.jsx(R,{className:"w-4 h-4"})}],t=()=>{switch(a){case"overview":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-base leading-relaxed",children:"QECTOR Decoder v3 is a Python library for quantum error correction (QEC) decoding. v1.0.0 is the first stable release: it provides 17 decoder configurations and helpers integrated into a high-performance compiled Rust core with a plug-and-play Python API."}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/10 rounded-xl flex items-start gap-3",children:[e.jsx(E,{className:"w-5 h-5 text-cyan-300 shrink-0 mt-0.5"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Ecosystem Native:"})," Swappable backend design. You can easily plug QECTOR into Stim, PyMatching, Sinter, and Qiskit pipelines with minimal API modifications: v1.0.0 registers Sinter and qiskit-qec entry points so ",e.jsx("code",{className:"text-cyan-300",children:"sinter.collect()"})," works with no ",e.jsx("code",{className:"text-cyan-300",children:"custom_decoders="}),"."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-lg mb-3",children:"Key Highlights"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"v1.0.0: First Stable Release"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"API stability tiers, Relay-BP, CS-OSD(lambda, w), colour-code cluster_bposd, qector CLI + qector-doctor, Sinter/qiskit entry points, pymatching shim."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Validate on Your Hardware"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"Hardware, GPU, and measurement results are device-local. Use the package diagnostic and declared measurement workflow instead of treating site text as performance evidence."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Multi-Algorithm Diversity"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"17 decoder configurations from exact Blossom MWPM to Belief-Matching, BP-OSD, and GPU batch decoding."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Compiled Rust Core"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"A compiled Rust core with a Python API. Exact memory, latency, and throughput behavior depends on the selected workload and environment."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Optional GPU Paths"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"GPU paths are optional and environment-dependent. Read the installed release diagnostics before relying on them."})]})]})]})]});case"installation":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR ships as pre-compiled binary wheels on PyPI. Installing requires Python and pip."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Standard Installation"}),e.jsx(c,{code:"pip install qector-decoder-v3",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"System Requirements"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-sm",children:[e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary",children:"3.9, 3.10, 3.11, 3.12, 3.13 (64-bit)"})]}),e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Operating System"}),e.jsx("span",{className:"text-primary",children:"Linux, macOS, Windows (see current PyPI wheel metadata)"})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"GPU Requirements (Optional)"}),e.jsx("span",{className:"text-primary",children:"Optional and environment-dependent; check the installed release diagnostics"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Install Optional Dependencies"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"Install only the extras required by your workflow:"}),e.jsx(c,{code:`# Stim / Sinter / PyMatching ecosystem - pip install "qector-decoder-v3[stim]" - - # Full optional environment - pip install "qector-decoder-v3[all]"`,filename:"terminal",language:"bash"})]})]});case"quickstart":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Below is a minimal package-only example: create a rotated surface code, generate a syndrome, and verify a Blossom correction against the parity-check matrix."}),e.jsx(c,{filename:"surface_code_decode.py",language:"python",code:`import numpy as np -import qector_decoder_v3 as qector - -# Build a small code and inject one bit error. -code = qector.codes.rotated_surface_code(3) -error = np.zeros(code.n_qubits, dtype=np.uint8) -error[4] = 1 -syndrome = code.syndrome(error) - -# Decode with the graphlike Blossom backend. -correction = qector.BlossomDecoder( - code.check_to_qubits, - n_qubits=code.n_qubits, -).decode(syndrome) - -# The syndrome contract is H c = s (mod 2). -matrix = np.asarray(code.parity_check_matrix(), dtype=np.uint8) -assert np.array_equal((matrix @ correction.astype(int)) % 2, syndrome) -print("Syndrome-faithful correction")`})]});case"decoders":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR includes 17 decoder configurations categorized into stable, workload-sensitive, and experimental/research tiers. Choose based on code type and speed/accuracy tradeoffs:"}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse border border-gridline text-left text-sm rounded-xl overflow-hidden",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 font-semibold",children:[e.jsx("th",{className:"p-3",children:"Decoder"}),e.jsx("th",{className:"p-3",children:"Target Code"}),e.jsx("th",{className:"p-3",children:"Speed"}),e.jsx("th",{className:"p-3",children:"Accuracy"}),e.jsx("th",{className:"p-3",children:"Tier"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:[{name:"Blossom (MWPM)",target:"Graphlike CSS / surface",speed:"Workload-dependent",accuracy:"Minimum-weight matching objective",tier:"Stable"},{name:"Belief-Matching",target:"Correlated-noise research",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"BP-OSD",target:"qLDPC, LDPC",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"Union-Find",target:"Large Surface",speed:"Near-linear O(N)",accuracy:"Approximate",tier:"Production"},{name:"GPU Batch",target:"Supported batch workloads",speed:"Runtime-dependent",accuracy:"Validate locally",tier:"Workload-sensitive"},{name:"Hybrid / Cascade",target:"Degenerate, mixed",speed:"Iterative",accuracy:"High",tier:"Research"},{name:"Colour Code",target:"Triangular colour code",speed:"Moderate",accuracy:"Native",tier:"Research"}].map(s=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-semibold text-primary",children:s.name}),e.jsx("td",{className:"p-3 text-secondary",children:s.target}),e.jsx("td",{className:"p-3 text-secondary",children:s.speed}),e.jsx("td",{className:"p-3 text-secondary",children:s.accuracy}),e.jsx("td",{className:"p-3",children:e.jsx("span",{className:`px-2 py-0.5 rounded text-[10px] uppercase font-bold border ${s.tier==="Production"?"bg-green-400/10 text-green-400 border-green-400/20":"bg-gold-400/10 text-gold-400 border-gold-400/20"}`,children:s.tier})})]},s.name))})]})})]});case"measurement":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Hardware-specific measurements are not published on this site. If your project requires a local measurement, record the code, noise model, decoder configuration, seed, shots, environment, and raw artifact."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Environment Diagnostic"}),e.jsx(c,{code:"qector-doctor",filename:"terminal",language:"bash"}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["15-check diagnostic that reports PASS / WARN / FAIL per check and explains WHY a decoder is unavailable on your machine. Full report via ",e.jsx("code",{className:"text-cyan-300",children:"qector-doctor --json"}),"."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Local measurement via qector bench"}),e.jsx("p",{className:"text-secondary text-xs mb-2",children:"Use the command documented by the installed package release. The result is machine- and workload-specific, not a site claim:"}),e.jsx(c,{code:"qector bench --distance 5 --rounds 5 --shots 10000 --decoder blossom --noise 0.001",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Interactive Sandbox CLI"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"This UI is a command-output demonstration only; it does not execute commands or generate benchmark data:"}),e.jsx(B,{})]})]});case"configuration":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Detailed constructor configuration arguments for QECTOR's primary decoders:"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BlossomDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"adaptive_k"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`bool` (Default: `True`). Enable union-find matching pre-filtering to minimize match graph sizing."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"timeout"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`float` (Default: `None`). Maximum time (in seconds) allowed to resolve a single syndrome."})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BeliefMatchingDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_iters"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `30`). Maximum number of belief propagation iterations. Higher iterations improve syndrome accuracy."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"max_paths"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `10`). Maximum number of alternative paths generated for matching reweighting calculations."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_method"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:'`str` (Default: `"product_sum"`). Choice of BP update method. Options: `"product_sum"`, `"minimum_sum"`.'})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"GpuBatchDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"backend"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:'`str` (Default: `"cuda"`). Choose GPU compilation framework. Options: `"cuda"`, `"opencl"`.'})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"batch_size"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `1000`). Number of parallel syndromes transferred to and calculated in the GPU memory space."})})]})]})]})]});case"troubleshooting":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Solutions for common installation and running issues:"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:e.jsx(o,{children:"Issue: ImportError when importing `qector`"})})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Ensure your Python architecture matches the wheel and reinstall with `python -m pip install --force-reinstall qector-decoder-v3`."]})})]}),e.jsxs("div",{className:"p-4 bg-gold-400/5 border border-gold-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-gold-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: GPU / CUDA is not detected"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Verify drivers by typing `nvidia-smi` in terminal. Ensure CUDA Toolkit 11.8 or higher is installed and environment variable `CUDA_PATH` or `LD_LIBRARY_PATH` points to the CUDA install folder."]})})]}),e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: Out Of Memory (OOM) on GPU batching"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Lower the `batch_size` argument in your `GpuBatchDecoder` instantiation. For exceptionally large code distances (d > 15), prefer the linear-scaling `UnionFindDecoder` which reduces memory demands."]})})]})]})]});case"package-reference":return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl flex items-center justify-between flex-wrap gap-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-bold text-lg",children:"QECTOR Decoder v3: Extended Reference (package only)"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Version: 1.0.0 · PyPI: qector-decoder-v3 · Backend: Rust + PyO3"})]}),e.jsx("a",{href:"/docs/reference.md",target:"_blank",rel:"noopener noreferrer",download:"QECTOR Decoder v3 - Reference (package only).md",className:"btn-cyan text-xs py-2 px-4",children:"Download Reference (.md)"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"1. Installation & Platforms"}),e.jsx(c,{code:`pip install qector-decoder-v3==1.0.0 -pip install "qector-decoder-v3[stim]" # Stim / Sinter / PyMatching / LDPC ecosystem -pip install "qector-decoder-v3[bench]" # local measurement tools -pip install "qector-decoder-v3[all]" # optional full environment`,language:"bash",filename:"terminal"}),e.jsxs("div",{className:"mt-3 border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary font-mono",children:"3.9 - 3.13"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Platforms"}),e.jsx("span",{className:"text-primary",children:"Linux x86_64 (manylinux), Windows x64, macOS arm64"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License"}),e.jsx("span",{className:"text-primary",children:"Source-available (Free academic / non-commercial)"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Startup Notice"}),e.jsx("span",{className:"text-primary font-mono",children:"Suppressed with QECTOR_SILENT=1"})]}),e.jsxs("div",{className:"p-2.5 flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License Env"}),e.jsx("span",{className:"text-primary font-mono",children:"QECTOR_LICENSE + QECTOR_LICENSE_KEY (Ed25519 token)"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"2. Core Architecture"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1.5 text-secondary text-xs leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Rust Core (compiled extension):"})," Matching, UF, batch CPU/GPU algorithms."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Python Surface:"})," Clean API, Stim/Sinter compat, belief/GNN layers, licensing."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Zero-copy NumPy:"})," Direct memory access; GIL-free parallel decoding paths."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Version Symbol:"})," ",e.jsx("code",{className:"text-cyan-300",children:'qector_decoder_v3.__version__ == "1.0.0"'})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"3. Decoder Families & Incidence Rules"}),e.jsxs("p",{className:"text-muted-foreground text-xs mb-3",children:[e.jsx("strong",{className:"text-cyan-300",children:"Graph-like rule (UF family):"})," Every qubit must participate in at most two checks (participation ≤ 2). Matrices violating this raise a clear error (",e.jsx("code",{className:"text-red-400",children:"-32602"}),"). ",e.jsx("code",{className:"text-cyan-300",children:"BlossomDecoder"}),", ",e.jsx("code",{className:"text-cyan-300",children:"SparseBlossomDecoder"}),", and ",e.jsx("code",{className:"text-cyan-300",children:"BpOsdDecoder"})," accept general hyperedge codes."]}),e.jsx("div",{className:"overflow-x-auto rounded-xl",children:e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 font-bold border-b border-gridline bg-surface/30",children:[e.jsx("span",{children:"Class"}),e.jsx("span",{children:"Best for"}),e.jsx("span",{children:"Status"}),e.jsx("span",{children:"Graph-like?"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"UnionFindDecoder"}),e.jsx("span",{children:"Low-latency approximate"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes (participation ≤ 2)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"FastUnionFindDecoder"}),e.jsx("span",{children:"Faster UF hot path"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BlossomDecoder"}),e.jsx("span",{children:"Exact MWPM"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"SparseBlossomDecoder"}),e.jsx("span",{children:"Near-optimal matching"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BeliefMatching"}),e.jsx("span",{children:"Correlated-noise accuracy"}),e.jsx("span",{children:"Research"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BpOsdDecoder"}),e.jsx("span",{children:"LDPC / qLDPC"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BatchDecoder"}),e.jsx("span",{children:"High-throughput CPU batch"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes for UF batch"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"CUDABatchDecoder"}),e.jsx("span",{children:"GPU batch (NVIDIA)"}),e.jsx("span",{children:"Runtime-dependent"}),e.jsx("span",{children:"N/A"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"AutoDecoder"}),e.jsx("span",{children:"7-tier self-debugging fallback"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"N/A"})]})]})})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"4. Code Generators"}),e.jsx(c,{code:`from qector_decoder_v3 import ( - generate_repetition_code_checks, # (checks, n_qubits) - generate_ring_code_checks, # (checks, n_qubits) - generate_surface_code_checks, # surface-code checks -)`,language:"python",filename:"python"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"5. MCP and General-Matrix Workflows"}),e.jsx(c,{code:`# The standalone library MCP server is documented separately. -# Start it from the plugin package with: -python mcp/mcp_server_library.py - -# Initialize and call tools/list before using a tool.`,language:"python",filename:"mcp_server.py"}),e.jsx("p",{className:"text-muted-foreground text-xs mt-2 mb-3",children:"For general matrices, use the decoder family documented for that workload and verify every returned correction against H c = s (mod 2):"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import BlossomDecoder, SparseBlossomDecoder, BpOsdDecoder - -def decode_hyperedge(checks, n_qubits, syndrome, kind="Blossom", **opts): - syn = np.asarray(syndrome, dtype=np.uint8).ravel() - if kind in ("Blossom", "blossom"): - return BlossomDecoder(checks, n_qubits).decode(syn) - if kind in ("SparseBlossom", "sparse_blossom"): - return SparseBlossomDecoder(checks, n_qubits).decode(syn) - if kind.lower() in ("bposd", "bp_osd"): - H = np.zeros((len(checks), n_qubits), dtype=np.uint8) - for i, c in enumerate(checks): - for q in c: H[i, q] ^= 1 - return BpOsdDecoder(H, error_rate=opts.get("error_rate", 0.05)).decode(syn) - raise ValueError(f"unsupported kind: {kind}")`,language:"python",filename:"hyperedge_workaround.py"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"6. Verified Fallback Pattern"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed mb-3",children:"A fallback is safe only when each candidate is checked against the same parity-check matrix. The following pattern uses the stable Union-Find and Blossom classes and fails closed if a candidate is not syndrome-faithful:"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder - -def faithful_decode(check_to_qubits, n_qubits, syndrome): - syndrome = np.asarray(syndrome, dtype=np.uint8).ravel() - matrix = np.zeros((len(check_to_qubits), n_qubits), dtype=np.uint8) - for check, qubits in enumerate(check_to_qubits): - matrix[check, qubits] = 1 - - for decoder_type in (FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder): - try: - correction = np.asarray( - decoder_type(check_to_qubits, n_qubits=n_qubits).decode(syndrome), - dtype=np.uint8, - ) - if np.array_equal((matrix @ correction.astype(int)) % 2, syndrome): - return correction, decoder_type.__name__ - except Exception: - continue - raise RuntimeError("No syndrome-faithful decoder result")`,language:"python",filename:"cascade_decode.py"})]})]});default:return null}};return e.jsxs(e.Fragment,{children:[e.jsx(N,{title:"User Manual · QECTOR",description:"Complete user manual for QECTOR Decoder v3. Installation, configuration, decoder selection, validation, and troubleshooting."}),e.jsx(w,{data:{"@context":"https://schema.org","@type":"HowTo",name:"How to Install and Run QECTOR Decoder v3",description:"Step-by-step instructions to install QECTOR, verify a syndrome-faithful decode, select a decoder, and review evidence boundaries.",step:[{"@type":"HowToStep",name:"Install the package",text:"Run pip install qector-decoder-v3 in your Python terminal to install the Rust core binary wheels."},{"@type":"HowToStep",name:"Verify the installation",text:'Verify the installation with python -c "import qector_decoder_v3 as qd; print(qd.__version__)" and a small syndrome-faithfulness check.'},{"@type":"HowToStep",name:"Review evidence boundaries",text:"Read the v1.0.0 reference manual and record code, noise model, decoder configuration, seed, environment, and artifact metadata before making a local measurement."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"15 backend families powering 17 decoder configurations · GPU Batch · Stim · Sinter · Qiskit"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(I,{text:"User Manual",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Complete guide to QECTOR Decoder v3: installation, decoder selection, local measurements, diagnostics, and ecosystem integration."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsx("div",{className:"max-w-6xl mx-auto",children:e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-4 gap-8",children:[e.jsx("div",{className:"lg:col-span-1",children:e.jsx("nav",{"aria-label":"Manual sections",className:"sticky top-24 space-y-1 bg-surface/10 p-2 rounded-xl border border-gridline/50",children:n.map(s=>e.jsxs("button",{type:"button",onClick:()=>l(s.id),"aria-current":a===s.id?"true":void 0,className:`w-full text-left px-3.5 py-2.5 rounded-lg text-sm font-medium transition-all duration-200 flex items-center gap-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cyan-300 ${a===s.id?"bg-cyan-300/10 text-cyan-300 border border-cyan-300/20":"text-secondary hover:text-primary hover:bg-white/5 border border-transparent"}`,children:[s.icon,s.title]},s.id))})}),e.jsx("div",{className:"lg:col-span-3",children:e.jsxs("div",{className:"card-surface bg-surface/20 min-h-[500px]",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6 text-primary border-b border-gridline pb-4 flex items-center gap-2",children:n.find(s=>s.id===a)?.title.substring(3)}),e.jsx("div",{className:"transition-all duration-300",children:t()})]})})]})})})]})}function T(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.813 15.904 9 21l-.813-5.096L3 15l5.096-.813L9 9l.813 5.096L15 15l-5.187.904Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19.071 4.929a10 10 0 0 0-14.142 0M12 3v3m0 12v3M3 12h3m12 0h3",opacity:"0.5"})]})}function M(a){return e.jsx("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v5.25c0 .621-.504 1.125-1.125 1.125h-2.25A1.125 1.125 0 0 1 3 18.375v-5.25ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v9.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125v-9.75ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v14.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z"})})}function U(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.324.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.43l-1.003.828c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.954.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.43l1.004-.827c.292-.24.437-.613.43-.991a6.936 6.936 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"})]})}export{$ as default}; diff --git a/assets/Manual-Bgdopadc.js b/assets/Manual-Bgdopadc.js deleted file mode 100644 index 3740e312..00000000 --- a/assets/Manual-Bgdopadc.js +++ /dev/null @@ -1,67 +0,0 @@ -import{r as p,j as e,R as b}from"./vendor-react-BiHfrq0e.js";import{S as N,J as w,C as c}from"./index-BUYYSLdX.js";import{T as k,o as _,u as C,I as S,g as q,a as D,C as P,B as R,v as u,i as E}from"./vendor-ui-B0ssGG4c.js";import{N as I}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-gsap-a3sj5zmn.js";function B(){const[a,l]=p.useState(""),[n,t]=p.useState([{text:"QECTOR CLI Terminal Demo (simulation only)",type:"info"},{text:"No command is executed and no external service is contacted.",type:"info"}]),[s,h]=p.useState(!1),g=p.useRef(null),y=()=>{g.current?.scrollIntoView({behavior:"smooth"})};p.useEffect(()=>{y()},[n]);const f=async i=>{const m=i.trim().toLowerCase(),x=[...n,{text:`qector@sandbox:~$ ${i}`,type:"input"}];t(x),l(""),h(!0);const d=r=>new Promise(v=>setTimeout(v,r));m==="help"?(await d(200),t(r=>[...r,{text:"Available commands:",type:"info"},{text:" help - Show this menu",type:"output"},{text:" pip install qector-decoder-v3 - Show the install command",type:"output"},{text:" qector-doctor - Show the diagnostic command",type:"output"},{text:" qector bench -d 5 - Show a local measurement command",type:"output"},{text:" clear - Clear the terminal screen",type:"output"}])):m==="clear"?t([]):m==="pip install qector-decoder-v3"?(await d(300),t(r=>[...r,{text:"Simulation only: no package was downloaded.",type:"output"}]),await d(800),t(r=>[...r,{text:"Simulation only: no package was installed.",type:"output"}]),await d(400),t(r=>[...r,{text:"For a real install, follow the current PyPI and release verification instructions.",type:"output"}]),await d(600),t(r=>[...r,{text:"✓ Demo complete: no network request or filesystem change was made.",type:"success"}])):m==="qector-doctor"?(await d(300),t(r=>[...r,{text:"Simulation only: qector-doctor was not run.",type:"output"}]),await d(500),t(r=>[...r,{text:"Run qector-doctor in your installed environment to obtain real PASS / WARN / FAIL results.",type:"info"}])):m==="qector bench -d 5"||m==="qector bench --distance 5"?(await d(400),t(r=>[...r,{text:"Simulation only: no circuit or measurement was generated.",type:"output"}]),await d(1e3),t(r=>[...r,{text:"Run qector bench on your own declared workload to generate real local evidence.",type:"info"}])):(await d(150),t(r=>[...r,{text:`qector: command not found: ${i}. Type "help" for a list of commands.`,type:"info"}])),h(!1)},j=i=>{i.preventDefault(),!(!a.trim()||s)&&f(a)};return e.jsxs("div",{className:"flex flex-col border border-gridline bg-void/90 rounded-2xl overflow-hidden shadow-2xl",children:[e.jsxs("div",{className:"flex items-center justify-between px-4 py-3 bg-surface border-b border-gridline",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(k,{className:"w-4 h-4 text-cyan-300"}),e.jsx("span",{className:"font-mono text-xs text-secondary font-semibold",children:"interactive-cli.sh"})]}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-red-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-yellow-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-green-500/80"})]})]}),e.jsxs("div",{className:"p-5 font-mono text-xs h-72 overflow-y-auto space-y-2 select-text custom-scrollbar",children:[n.map((i,m)=>{let x="text-secondary";return i.type==="input"?x="text-cyan-300 font-semibold":i.type==="success"?x="text-green-400 font-semibold":i.type==="info"&&(x="text-gold-400"),e.jsx("div",{className:`${x} leading-relaxed whitespace-pre-wrap`,children:i.text},m)}),s&&e.jsxs("div",{className:"text-muted-foreground animate-pulse flex items-center gap-1",children:[e.jsx("span",{className:"w-1.5 h-3 bg-muted-foreground inline-block animate-caret"}),e.jsx("span",{children:"Executing..."})]}),e.jsx("div",{ref:g})]}),e.jsxs("form",{onSubmit:j,className:"flex items-center border-t border-gridline bg-surface/50 px-4 py-2",children:[e.jsx(_,{className:"w-4 h-4 text-cyan-300 shrink-0"}),e.jsx("input",{type:"text",value:a,onChange:i=>l(i.target.value),disabled:s,className:"flex-1 bg-transparent border-none outline-none font-mono text-xs text-cyan-300 px-2 py-1 placeholder-cyan-300/60 focus-visible:ring-2 focus-visible:ring-cyan-300",placeholder:'Type a command (e.g. "help", "pip install qector-decoder-v3")...',"aria-label":"Terminal input"}),e.jsx("button",{type:"submit",disabled:s||!a.trim(),className:"p-1 text-cyan-300 hover:text-cyan-200 disabled:text-muted/20 transition-colors","aria-label":"Run command",children:e.jsx(C,{className:"w-3.5 h-3.5 fill-current"})})]})]})}const L="font-mono text-[11px] bg-cyan-300/10 text-cyan-200 px-1 py-0.5 rounded border border-cyan-300/20";function O(a,l){return a.replace(/\\"/g,'"').split(/(`[^`\n]+`)/g).map((n,t)=>n.length>2&&n.startsWith("`")&&n.endsWith("`")?e.jsx("code",{className:L,children:n.slice(1,-1)},`${l}-${t}`):n)}function o({children:a}){const l=(n,t)=>typeof n=="string"?e.jsx(b.Fragment,{children:O(n,t)},t):Array.isArray(n)?e.jsx(e.Fragment,{children:n.map((s,h)=>e.jsx(b.Fragment,{children:l(s,`${t}-${h}`)},`${t}-${h}`))}):n;return e.jsx(e.Fragment,{children:l(a,"imd")})}function $(){const[a,l]=p.useState("overview"),n=[{id:"overview",title:"1. Overview",icon:e.jsx(S,{className:"w-4 h-4"})},{id:"installation",title:"2. Installation",icon:e.jsx(q,{className:"w-4 h-4"})},{id:"quickstart",title:"3. Quick Start",icon:e.jsx(T,{className:"w-4 h-4"})},{id:"decoders",title:"4. Choosing a Decoder",icon:e.jsx(D,{className:"w-4 h-4"})},{id:"measurement",title:"5. Local Measurements",icon:e.jsx(M,{className:"w-4 h-4"})},{id:"configuration",title:"6. Configuration",icon:e.jsx(U,{className:"w-4 h-4"})},{id:"troubleshooting",title:"7. Troubleshooting",icon:e.jsx(P,{className:"w-4 h-4"})},{id:"package-reference",title:"8. Package Reference (v1.0.1)",icon:e.jsx(R,{className:"w-4 h-4"})}],t=()=>{switch(a){case"overview":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-base leading-relaxed",children:"QECTOR Decoder v3 is a Python library for quantum error correction (QEC) decoding. v1.0.1 is the current stable release (v1.0.0, August 2026, was the first): it provides 17 decoder configurations and helpers integrated into a high-performance compiled Rust core with a plug-and-play Python API."}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/10 rounded-xl flex items-start gap-3",children:[e.jsx(E,{className:"w-5 h-5 text-cyan-300 shrink-0 mt-0.5"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Ecosystem Native:"})," Swappable backend design. You can easily plug QECTOR into Stim, PyMatching, Sinter, and Qiskit pipelines with minimal API modifications: v1.0.0 registers Sinter and qiskit-qec entry points so ",e.jsx("code",{className:"text-cyan-300",children:"sinter.collect()"})," works with no ",e.jsx("code",{className:"text-cyan-300",children:"custom_decoders="}),"."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-lg mb-3",children:"Key Highlights"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"v1.0.0: First Stable Release"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"API stability tiers, Relay-BP, CS-OSD(lambda, w), colour-code cluster_bposd, qector CLI + qector-doctor, Sinter/qiskit entry points, pymatching shim."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Validate on Your Hardware"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"Hardware, GPU, and measurement results are device-local. Use the package diagnostic and declared measurement workflow instead of treating site text as performance evidence."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Multi-Algorithm Diversity"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"17 decoder configurations from exact Blossom MWPM to Belief-Matching, BP-OSD, and GPU batch decoding."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Compiled Rust Core"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"A compiled Rust core with a Python API. Exact memory, latency, and throughput behavior depends on the selected workload and environment."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Optional GPU Paths"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"GPU paths are optional and environment-dependent. Read the installed release diagnostics before relying on them."})]})]})]})]});case"installation":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR ships as pre-compiled binary wheels on PyPI. Installing requires Python and pip."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Standard Installation"}),e.jsx(c,{code:"pip install qector-decoder-v3",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"System Requirements"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-sm",children:[e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary",children:"3.9, 3.10, 3.11, 3.12, 3.13 (64-bit)"})]}),e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Operating System"}),e.jsx("span",{className:"text-primary",children:"Linux, macOS, Windows (see current PyPI wheel metadata)"})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"GPU Requirements (Optional)"}),e.jsx("span",{className:"text-primary",children:"Optional and environment-dependent; check the installed release diagnostics"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Install Optional Dependencies"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"Install only the extras required by your workflow:"}),e.jsx(c,{code:`# Stim / Sinter / PyMatching ecosystem - pip install "qector-decoder-v3[stim]" - - # Full optional environment - pip install "qector-decoder-v3[all]"`,filename:"terminal",language:"bash"})]})]});case"quickstart":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Below is a minimal package-only example: create a rotated surface code, generate a syndrome, and verify a Blossom correction against the parity-check matrix."}),e.jsx(c,{filename:"surface_code_decode.py",language:"python",code:`import numpy as np -import qector_decoder_v3 as qector - -# Build a small code and inject one bit error. -code = qector.codes.rotated_surface_code(3) -error = np.zeros(code.n_qubits, dtype=np.uint8) -error[4] = 1 -syndrome = code.syndrome(error) - -# Decode with the graphlike Blossom backend. -correction = qector.BlossomDecoder( - code.check_to_qubits, - n_qubits=code.n_qubits, -).decode(syndrome) - -# The syndrome contract is H c = s (mod 2). -matrix = np.asarray(code.parity_check_matrix(), dtype=np.uint8) -assert np.array_equal((matrix @ correction.astype(int)) % 2, syndrome) -print("Syndrome-faithful correction")`})]});case"decoders":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR includes 17 decoder configurations categorized into stable, workload-sensitive, and experimental/research tiers. Choose based on code type and speed/accuracy tradeoffs:"}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse border border-gridline text-left text-sm rounded-xl overflow-hidden",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 font-semibold",children:[e.jsx("th",{className:"p-3",children:"Decoder"}),e.jsx("th",{className:"p-3",children:"Target Code"}),e.jsx("th",{className:"p-3",children:"Speed"}),e.jsx("th",{className:"p-3",children:"Accuracy"}),e.jsx("th",{className:"p-3",children:"Tier"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:[{name:"Blossom (MWPM)",target:"Graphlike CSS / surface",speed:"Workload-dependent",accuracy:"Minimum-weight matching objective",tier:"Stable"},{name:"Belief-Matching",target:"Correlated-noise research",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"BP-OSD",target:"qLDPC, LDPC",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"Union-Find",target:"Large Surface",speed:"Near-linear O(N)",accuracy:"Approximate",tier:"Production"},{name:"GPU Batch",target:"Supported batch workloads",speed:"Runtime-dependent",accuracy:"Validate locally",tier:"Workload-sensitive"},{name:"Hybrid / Cascade",target:"Degenerate, mixed",speed:"Iterative",accuracy:"High",tier:"Research"},{name:"Colour Code",target:"Triangular colour code",speed:"Moderate",accuracy:"Native",tier:"Research"}].map(s=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-semibold text-primary",children:s.name}),e.jsx("td",{className:"p-3 text-secondary",children:s.target}),e.jsx("td",{className:"p-3 text-secondary",children:s.speed}),e.jsx("td",{className:"p-3 text-secondary",children:s.accuracy}),e.jsx("td",{className:"p-3",children:e.jsx("span",{className:`px-2 py-0.5 rounded text-[10px] uppercase font-bold border ${s.tier==="Production"?"bg-green-400/10 text-green-400 border-green-400/20":"bg-gold-400/10 text-gold-400 border-gold-400/20"}`,children:s.tier})})]},s.name))})]})})]});case"measurement":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Hardware-specific measurements are not published on this site. If your project requires a local measurement, record the code, noise model, decoder configuration, seed, shots, environment, and raw artifact."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Environment Diagnostic"}),e.jsx(c,{code:"qector-doctor",filename:"terminal",language:"bash"}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["15-check diagnostic that reports PASS / WARN / FAIL per check and explains WHY a decoder is unavailable on your machine. Full report via ",e.jsx("code",{className:"text-cyan-300",children:"qector-doctor --json"}),"."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Local measurement via qector bench"}),e.jsx("p",{className:"text-secondary text-xs mb-2",children:"Use the command documented by the installed package release. The result is machine- and workload-specific, not a site claim:"}),e.jsx(c,{code:"qector bench --distance 5 --rounds 5 --shots 10000 --decoder blossom --noise 0.001",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Interactive Sandbox CLI"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"This UI is a command-output demonstration only; it does not execute commands or generate benchmark data:"}),e.jsx(B,{})]})]});case"configuration":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Detailed constructor configuration arguments for QECTOR's primary decoders:"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BlossomDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"adaptive_k"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`bool` (Default: `True`). Enable union-find matching pre-filtering to minimize match graph sizing."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"timeout"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`float` (Default: `None`). Maximum time (in seconds) allowed to resolve a single syndrome."})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BeliefMatchingDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_iters"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `30`). Maximum number of belief propagation iterations. Higher iterations improve syndrome accuracy."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"max_paths"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `10`). Maximum number of alternative paths generated for matching reweighting calculations."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_method"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:'`str` (Default: `"product_sum"`). Choice of BP update method. Options: `"product_sum"`, `"minimum_sum"`.'})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"GpuBatchDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"backend"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:'`str` (Default: `"cuda"`). Choose GPU compilation framework. Options: `"cuda"`, `"opencl"`.'})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"batch_size"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `1000`). Number of parallel syndromes transferred to and calculated in the GPU memory space."})})]})]})]})]});case"troubleshooting":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Solutions for common installation and running issues:"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:e.jsx(o,{children:"Issue: ImportError when importing `qector`"})})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Ensure your Python architecture matches the wheel and reinstall with `python -m pip install --force-reinstall qector-decoder-v3`."]})})]}),e.jsxs("div",{className:"p-4 bg-gold-400/5 border border-gold-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-gold-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: GPU / CUDA is not detected"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Verify drivers by typing `nvidia-smi` in terminal. Ensure CUDA Toolkit 11.8 or higher is installed and environment variable `CUDA_PATH` or `LD_LIBRARY_PATH` points to the CUDA install folder."]})})]}),e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: Out Of Memory (OOM) on GPU batching"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Lower the `batch_size` argument in your `GpuBatchDecoder` instantiation. For exceptionally large code distances (d > 15), prefer the linear-scaling `UnionFindDecoder` which reduces memory demands."]})})]})]})]});case"package-reference":return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl flex items-center justify-between flex-wrap gap-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-bold text-lg",children:"QECTOR Decoder v3: Extended Reference (package only)"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Version: 1.0.1 · PyPI: qector-decoder-v3 · Backend: Rust + PyO3"})]}),e.jsx("a",{href:"/docs/reference.md",target:"_blank",rel:"noopener noreferrer",download:"QECTOR Decoder v3 - Reference (package only).md",className:"btn-cyan text-xs py-2 px-4",children:"Download Reference (.md)"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"1. Installation & Platforms"}),e.jsx(c,{code:`pip install --upgrade "qector-decoder-v3>=1.0,<2" -pip install "qector-decoder-v3[stim]" # Stim / Sinter / PyMatching / LDPC ecosystem -pip install "qector-decoder-v3[bench]" # local measurement tools -pip install "qector-decoder-v3[all]" # optional full environment`,language:"bash",filename:"terminal"}),e.jsxs("div",{className:"mt-3 border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary font-mono",children:"3.9 - 3.13"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Platforms"}),e.jsx("span",{className:"text-primary",children:"Linux x86_64 (manylinux), Windows x64, macOS arm64"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License"}),e.jsx("span",{className:"text-primary",children:"Source-available (Free academic / non-commercial)"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Startup Notice"}),e.jsx("span",{className:"text-primary font-mono",children:"Suppressed with QECTOR_SILENT=1"})]}),e.jsxs("div",{className:"p-2.5 flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License Env"}),e.jsx("span",{className:"text-primary font-mono",children:"QECTOR_LICENSE + QECTOR_LICENSE_KEY (Ed25519 token)"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"2. Core Architecture"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1.5 text-secondary text-xs leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Rust Core (compiled extension):"})," Matching, UF, batch CPU/GPU algorithms."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Python Surface:"})," Clean API, Stim/Sinter compat, belief/GNN layers, licensing."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Zero-copy NumPy:"})," Direct memory access; GIL-free parallel decoding paths."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Version Symbol:"})," ",e.jsx("code",{className:"text-cyan-300",children:'qector_decoder_v3.__version__ == "1.0.1"'})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"3. Decoder Families & Incidence Rules"}),e.jsxs("p",{className:"text-muted-foreground text-xs mb-3",children:[e.jsx("strong",{className:"text-cyan-300",children:"Graph-like rule (UF family):"})," Every qubit must participate in at most two checks (participation ≤ 2). Matrices violating this raise a clear error (",e.jsx("code",{className:"text-red-400",children:"-32602"}),"). ",e.jsx("code",{className:"text-cyan-300",children:"BlossomDecoder"}),", ",e.jsx("code",{className:"text-cyan-300",children:"SparseBlossomDecoder"}),", and ",e.jsx("code",{className:"text-cyan-300",children:"BpOsdDecoder"})," accept general hyperedge codes."]}),e.jsx("div",{className:"overflow-x-auto rounded-xl",children:e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 font-bold border-b border-gridline bg-surface/30",children:[e.jsx("span",{children:"Class"}),e.jsx("span",{children:"Best for"}),e.jsx("span",{children:"Status"}),e.jsx("span",{children:"Graph-like?"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"UnionFindDecoder"}),e.jsx("span",{children:"Low-latency approximate"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes (participation ≤ 2)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"FastUnionFindDecoder"}),e.jsx("span",{children:"Faster UF hot path"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BlossomDecoder"}),e.jsx("span",{children:"Exact MWPM"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"SparseBlossomDecoder"}),e.jsx("span",{children:"Near-optimal matching"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BeliefMatching"}),e.jsx("span",{children:"Correlated-noise accuracy"}),e.jsx("span",{children:"Research"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BpOsdDecoder"}),e.jsx("span",{children:"LDPC / qLDPC"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BatchDecoder"}),e.jsx("span",{children:"High-throughput CPU batch"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes for UF batch"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"CUDABatchDecoder"}),e.jsx("span",{children:"GPU batch (NVIDIA)"}),e.jsx("span",{children:"Runtime-dependent"}),e.jsx("span",{children:"N/A"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"AutoDecoder"}),e.jsx("span",{children:"7-tier self-debugging fallback"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"N/A"})]})]})})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"4. Code Generators"}),e.jsx(c,{code:`from qector_decoder_v3 import ( - generate_repetition_code_checks, # (checks, n_qubits) - generate_ring_code_checks, # (checks, n_qubits) - generate_surface_code_checks, # surface-code checks -)`,language:"python",filename:"python"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"5. MCP and General-Matrix Workflows"}),e.jsx(c,{code:`# The standalone library MCP server is documented separately. -# Start it from the plugin package with: -python mcp/mcp_server_library.py - -# Initialize and call tools/list before using a tool.`,language:"python",filename:"mcp_server.py"}),e.jsx("p",{className:"text-muted-foreground text-xs mt-2 mb-3",children:"For general matrices, use the decoder family documented for that workload and verify every returned correction against H c = s (mod 2):"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import BlossomDecoder, SparseBlossomDecoder, BpOsdDecoder - -def decode_hyperedge(checks, n_qubits, syndrome, kind="Blossom", **opts): - syn = np.asarray(syndrome, dtype=np.uint8).ravel() - if kind in ("Blossom", "blossom"): - return BlossomDecoder(checks, n_qubits).decode(syn) - if kind in ("SparseBlossom", "sparse_blossom"): - return SparseBlossomDecoder(checks, n_qubits).decode(syn) - if kind.lower() in ("bposd", "bp_osd"): - H = np.zeros((len(checks), n_qubits), dtype=np.uint8) - for i, c in enumerate(checks): - for q in c: H[i, q] ^= 1 - return BpOsdDecoder(H, error_rate=opts.get("error_rate", 0.05)).decode(syn) - raise ValueError(f"unsupported kind: {kind}")`,language:"python",filename:"hyperedge_workaround.py"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"6. Verified Fallback Pattern"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed mb-3",children:"A fallback is safe only when each candidate is checked against the same parity-check matrix. The following pattern uses the stable Union-Find and Blossom classes and fails closed if a candidate is not syndrome-faithful:"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder - -def faithful_decode(check_to_qubits, n_qubits, syndrome): - syndrome = np.asarray(syndrome, dtype=np.uint8).ravel() - matrix = np.zeros((len(check_to_qubits), n_qubits), dtype=np.uint8) - for check, qubits in enumerate(check_to_qubits): - matrix[check, qubits] = 1 - - for decoder_type in (FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder): - try: - correction = np.asarray( - decoder_type(check_to_qubits, n_qubits=n_qubits).decode(syndrome), - dtype=np.uint8, - ) - if np.array_equal((matrix @ correction.astype(int)) % 2, syndrome): - return correction, decoder_type.__name__ - except Exception: - continue - raise RuntimeError("No syndrome-faithful decoder result")`,language:"python",filename:"cascade_decode.py"})]})]});default:return null}};return e.jsxs(e.Fragment,{children:[e.jsx(N,{title:"User Manual · QECTOR",description:"Complete user manual for QECTOR Decoder v3. Installation, configuration, decoder selection, validation, and troubleshooting."}),e.jsx(w,{data:{"@context":"https://schema.org","@type":"HowTo",name:"How to Install and Run QECTOR Decoder v3",description:"Step-by-step instructions to install QECTOR, verify a syndrome-faithful decode, select a decoder, and review evidence boundaries.",step:[{"@type":"HowToStep",name:"Install the package",text:"Run pip install qector-decoder-v3 in your Python terminal to install the Rust core binary wheels."},{"@type":"HowToStep",name:"Verify the installation",text:'Verify the installation with python -c "import qector_decoder_v3 as qd; print(qd.__version__)" and a small syndrome-faithfulness check.'},{"@type":"HowToStep",name:"Review evidence boundaries",text:"Read the v1.0.0 reference manual and record code, noise model, decoder configuration, seed, environment, and artifact metadata before making a local measurement."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"15 backend families powering 17 decoder configurations · GPU Batch · Stim · Sinter · Qiskit"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(I,{text:"User Manual",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Complete guide to QECTOR Decoder v3: installation, decoder selection, local measurements, diagnostics, and ecosystem integration."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsx("div",{className:"max-w-6xl mx-auto",children:e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-4 gap-8",children:[e.jsx("div",{className:"lg:col-span-1",children:e.jsx("nav",{"aria-label":"Manual sections",className:"sticky top-24 space-y-1 bg-surface/10 p-2 rounded-xl border border-gridline/50",children:n.map(s=>e.jsxs("button",{type:"button",onClick:()=>l(s.id),"aria-current":a===s.id?"true":void 0,className:`w-full text-left px-3.5 py-2.5 rounded-lg text-sm font-medium transition-all duration-200 flex items-center gap-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cyan-300 ${a===s.id?"bg-cyan-300/10 text-cyan-300 border border-cyan-300/20":"text-secondary hover:text-primary hover:bg-white/5 border border-transparent"}`,children:[s.icon,s.title]},s.id))})}),e.jsx("div",{className:"lg:col-span-3",children:e.jsxs("div",{className:"card-surface bg-surface/20 min-h-[500px]",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6 text-primary border-b border-gridline pb-4 flex items-center gap-2",children:n.find(s=>s.id===a)?.title.substring(3)}),e.jsx("div",{className:"transition-all duration-300",children:t()})]})})]})})})]})}function T(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.813 15.904 9 21l-.813-5.096L3 15l5.096-.813L9 9l.813 5.096L15 15l-5.187.904Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19.071 4.929a10 10 0 0 0-14.142 0M12 3v3m0 12v3M3 12h3m12 0h3",opacity:"0.5"})]})}function M(a){return e.jsx("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v5.25c0 .621-.504 1.125-1.125 1.125h-2.25A1.125 1.125 0 0 1 3 18.375v-5.25ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v9.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125v-9.75ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v14.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z"})})}function U(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.324.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.43l-1.003.828c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.954.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.43l1.004-.827c.292-.24.437-.613.43-.991a6.936 6.936 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"})]})}export{$ as default}; diff --git a/assets/Manual-Bko8q4XD.js b/assets/Manual-Bko8q4XD.js deleted file mode 100644 index acc8e9c2..00000000 --- a/assets/Manual-Bko8q4XD.js +++ /dev/null @@ -1,67 +0,0 @@ -import{r as p,j as e,R as b}from"./vendor-react-BiHfrq0e.js";import{S as N,J as w,C as c}from"./index-CCmwjNGU.js";import{T as k,s as _,u as C,I as S,g as q,a as D,C as P,B as R,v as u,i as E}from"./vendor-ui-B8TlNU4J.js";import{N as I}from"./NeuralReveal-uYarhiMA.js";import"./vendor-gsap-a3sj5zmn.js";function B(){const[a,l]=p.useState(""),[n,t]=p.useState([{text:"QECTOR CLI Terminal Demo (simulation only)",type:"info"},{text:"No command is executed and no external service is contacted.",type:"info"}]),[s,h]=p.useState(!1),g=p.useRef(null),y=()=>{g.current?.scrollIntoView({behavior:"smooth"})};p.useEffect(()=>{y()},[n]);const f=async i=>{const m=i.trim().toLowerCase(),x=[...n,{text:`qector@sandbox:~$ ${i}`,type:"input"}];t(x),l(""),h(!0);const o=r=>new Promise(v=>setTimeout(v,r));m==="help"?(await o(200),t(r=>[...r,{text:"Available commands:",type:"info"},{text:" help - Show this menu",type:"output"},{text:" pip install qector-decoder-v3 - Show the install command",type:"output"},{text:" qector-doctor - Show the diagnostic command",type:"output"},{text:" qector bench -d 5 - Show a local measurement command",type:"output"},{text:" clear - Clear the terminal screen",type:"output"}])):m==="clear"?t([]):m==="pip install qector-decoder-v3"?(await o(300),t(r=>[...r,{text:"Simulation only: no package was downloaded.",type:"output"}]),await o(800),t(r=>[...r,{text:"Simulation only: no package was installed.",type:"output"}]),await o(400),t(r=>[...r,{text:"For a real install, follow the current PyPI and release verification instructions.",type:"output"}]),await o(600),t(r=>[...r,{text:"✓ Demo complete: no network request or filesystem change was made.",type:"success"}])):m==="qector-doctor"?(await o(300),t(r=>[...r,{text:"Simulation only: qector-doctor was not run.",type:"output"}]),await o(500),t(r=>[...r,{text:"Run qector-doctor in your installed environment to obtain real PASS / WARN / FAIL results.",type:"info"}])):m==="qector bench -d 5"||m==="qector bench --distance 5"?(await o(400),t(r=>[...r,{text:"Simulation only: no circuit or measurement was generated.",type:"output"}]),await o(1e3),t(r=>[...r,{text:"Run qector bench on your own declared workload to generate real local evidence.",type:"info"}])):(await o(150),t(r=>[...r,{text:`qector: command not found: ${i}. Type "help" for a list of commands.`,type:"info"}])),h(!1)},j=i=>{i.preventDefault(),!(!a.trim()||s)&&f(a)};return e.jsxs("div",{className:"flex flex-col border border-gridline bg-void/90 rounded-2xl overflow-hidden shadow-2xl",children:[e.jsxs("div",{className:"flex items-center justify-between px-4 py-3 bg-surface border-b border-gridline",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(k,{className:"w-4 h-4 text-cyan-300"}),e.jsx("span",{className:"font-mono text-xs text-secondary font-semibold",children:"interactive-cli.sh"})]}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-red-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-yellow-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-green-500/80"})]})]}),e.jsxs("div",{className:"p-5 font-mono text-xs h-72 overflow-y-auto space-y-2 select-text custom-scrollbar",children:[n.map((i,m)=>{let x="text-secondary";return i.type==="input"?x="text-cyan-300 font-semibold":i.type==="success"?x="text-green-400 font-semibold":i.type==="info"&&(x="text-gold-400"),e.jsx("div",{className:`${x} leading-relaxed whitespace-pre-wrap`,children:i.text},m)}),s&&e.jsxs("div",{className:"text-muted-foreground animate-pulse flex items-center gap-1",children:[e.jsx("span",{className:"w-1.5 h-3 bg-muted-foreground inline-block animate-caret"}),e.jsx("span",{children:"Executing..."})]}),e.jsx("div",{ref:g})]}),e.jsxs("form",{onSubmit:j,className:"flex items-center border-t border-gridline bg-surface/50 px-4 py-2",children:[e.jsx(_,{className:"w-4 h-4 text-cyan-300 shrink-0"}),e.jsx("input",{type:"text",value:a,onChange:i=>l(i.target.value),disabled:s,className:"flex-1 bg-transparent border-none outline-none font-mono text-xs text-cyan-300 px-2 py-1 placeholder-cyan-300/60 focus-visible:ring-2 focus-visible:ring-cyan-300",placeholder:'Type a command (e.g. "help", "pip install qector-decoder-v3")...',"aria-label":"Terminal input"}),e.jsx("button",{type:"submit",disabled:s||!a.trim(),className:"p-1 text-cyan-300 hover:text-cyan-200 disabled:text-muted/20 transition-colors","aria-label":"Run command",children:e.jsx(C,{className:"w-3.5 h-3.5 fill-current"})})]})]})}const L="font-mono text-[11px] bg-cyan-300/10 text-cyan-200 px-1 py-0.5 rounded border border-cyan-300/20";function O(a,l){return a.replace(/\\"/g,'"').split(/(`[^`\n]+`)/g).map((n,t)=>n.length>2&&n.startsWith("`")&&n.endsWith("`")?e.jsx("code",{className:L,children:n.slice(1,-1)},`${l}-${t}`):n)}function d({children:a}){const l=(n,t)=>typeof n=="string"?e.jsx(b.Fragment,{children:O(n,t)},t):Array.isArray(n)?e.jsx(e.Fragment,{children:n.map((s,h)=>e.jsx(b.Fragment,{children:l(s,`${t}-${h}`)},`${t}-${h}`))}):n;return e.jsx(e.Fragment,{children:l(a,"imd")})}function W(){const[a,l]=p.useState("overview"),n=[{id:"overview",title:"1. Overview",icon:e.jsx(S,{className:"w-4 h-4"})},{id:"installation",title:"2. Installation",icon:e.jsx(q,{className:"w-4 h-4"})},{id:"quickstart",title:"3. Quick Start",icon:e.jsx(T,{className:"w-4 h-4"})},{id:"decoders",title:"4. Choosing a Decoder",icon:e.jsx(D,{className:"w-4 h-4"})},{id:"measurement",title:"5. Local Measurements",icon:e.jsx(M,{className:"w-4 h-4"})},{id:"configuration",title:"6. Configuration",icon:e.jsx(U,{className:"w-4 h-4"})},{id:"troubleshooting",title:"7. Troubleshooting",icon:e.jsx(P,{className:"w-4 h-4"})},{id:"package-reference",title:"8. Package Reference (v1.0.1)",icon:e.jsx(R,{className:"w-4 h-4"})}],t=()=>{switch(a){case"overview":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-base leading-relaxed",children:"QECTOR Decoder v3 is a Python library for quantum error correction (QEC) decoding. v1.0.1 is the current stable release (v1.0.0, August 2026, was the first): it provides 17 decoder configurations and helpers integrated into a high-performance compiled Rust core with a plug-and-play Python API."}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/10 rounded-xl flex items-start gap-3",children:[e.jsx(E,{className:"w-5 h-5 text-cyan-300 shrink-0 mt-0.5"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Ecosystem Native:"})," Swappable backend design. You can easily plug QECTOR into Stim, PyMatching, Sinter, and Qiskit pipelines with minimal API modifications: Sinter decoders plug in with ",e.jsx("code",{className:"text-cyan-300",children:"custom_decoders=qector_sinter_decoders()"}),", and a qiskit-qec plugin is registered."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-lg mb-3",children:"Key Highlights"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"v1.0.0: First Stable Release"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"API stability tiers, Relay-BP, CS-OSD(lambda, w), colour-code cluster_bposd, qector CLI + qector-doctor, Sinter/qiskit entry points, pymatching shim."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Validate on Your Hardware"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"Hardware, GPU, and measurement results are device-local. Use the package diagnostic and declared measurement workflow instead of treating site text as performance evidence."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Multi-Algorithm Diversity"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"17 decoder configurations from exact Blossom MWPM to Belief-Matching, BP-OSD, and GPU batch decoding."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Compiled Rust Core"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"A compiled Rust core with a Python API. Exact memory, latency, and throughput behavior depends on the selected workload and environment."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Optional GPU Paths"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"GPU paths are optional and environment-dependent. Read the installed release diagnostics before relying on them."})]})]})]})]});case"installation":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR ships as pre-compiled binary wheels on PyPI. Installing requires Python and pip."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Standard Installation"}),e.jsx(c,{code:"pip install qector-decoder-v3",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"System Requirements"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-sm",children:[e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary",children:"3.9, 3.10, 3.11, 3.12, 3.13 (64-bit)"})]}),e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Operating System"}),e.jsx("span",{className:"text-primary",children:"Linux, macOS, Windows (see current PyPI wheel metadata)"})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"GPU Requirements (Optional)"}),e.jsx("span",{className:"text-primary",children:"Optional and environment-dependent; check the installed release diagnostics"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Install Optional Dependencies"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"Install only the extras required by your workflow:"}),e.jsx(c,{code:`# Stim / Sinter / PyMatching ecosystem - pip install "qector-decoder-v3[stim]" - - # Full optional environment - pip install "qector-decoder-v3[all]"`,filename:"terminal",language:"bash"})]})]});case"quickstart":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Below is a minimal package-only example: create a rotated surface code, generate a syndrome, and verify a Blossom correction against the parity-check matrix."}),e.jsx(c,{filename:"surface_code_decode.py",language:"python",code:`import numpy as np -import qector_decoder_v3 as qector - -# Build a small code and inject one bit error. -code = qector.codes.rotated_surface_code(3) -error = np.zeros(code.n_qubits, dtype=np.uint8) -error[4] = 1 -syndrome = code.syndrome(error) - -# Decode with the graphlike Blossom backend. -correction = qector.BlossomDecoder( - code.check_to_qubits, - n_qubits=code.n_qubits, -).decode(syndrome) - -# The syndrome contract is H c = s (mod 2). -matrix = np.asarray(code.parity_check_matrix(), dtype=np.uint8) -assert np.array_equal((matrix @ correction.astype(int)) % 2, syndrome) -print("Syndrome-faithful correction")`})]});case"decoders":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR includes 17 decoder configurations categorized into stable, workload-sensitive, and experimental/research tiers. Choose based on code type and speed/accuracy tradeoffs:"}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse border border-gridline text-left text-sm rounded-xl overflow-hidden",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 font-semibold",children:[e.jsx("th",{className:"p-3",children:"Decoder"}),e.jsx("th",{className:"p-3",children:"Target Code"}),e.jsx("th",{className:"p-3",children:"Speed"}),e.jsx("th",{className:"p-3",children:"Accuracy"}),e.jsx("th",{className:"p-3",children:"Tier"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:[{name:"Blossom (MWPM)",target:"Graphlike CSS / surface",speed:"Workload-dependent",accuracy:"Minimum-weight matching objective",tier:"Stable"},{name:"Belief-Matching",target:"Correlated-noise research",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"BP-OSD",target:"qLDPC, LDPC",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"Union-Find",target:"Large Surface",speed:"Near-linear O(N)",accuracy:"Approximate",tier:"Production"},{name:"GPU Batch",target:"Supported batch workloads",speed:"Runtime-dependent",accuracy:"Validate locally",tier:"Workload-sensitive"},{name:"Hybrid / Cascade",target:"Degenerate, mixed",speed:"Iterative",accuracy:"High",tier:"Research"},{name:"Colour Code",target:"Triangular colour code",speed:"Moderate",accuracy:"Native",tier:"Research"}].map(s=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-semibold text-primary",children:s.name}),e.jsx("td",{className:"p-3 text-secondary",children:s.target}),e.jsx("td",{className:"p-3 text-secondary",children:s.speed}),e.jsx("td",{className:"p-3 text-secondary",children:s.accuracy}),e.jsx("td",{className:"p-3",children:e.jsx("span",{className:`px-2 py-0.5 rounded text-[10px] uppercase font-bold border ${s.tier==="Production"?"bg-green-400/10 text-green-400 border-green-400/20":"bg-gold-400/10 text-gold-400 border-gold-400/20"}`,children:s.tier})})]},s.name))})]})})]});case"measurement":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Hardware-specific measurements are not published on this site. If your project requires a local measurement, record the code, noise model, decoder configuration, seed, shots, environment, and raw artifact."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Environment Diagnostic"}),e.jsx(c,{code:"qector-doctor",filename:"terminal",language:"bash"}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["15-check diagnostic that reports PASS / WARN / FAIL per check and explains WHY a decoder is unavailable on your machine. Full report via ",e.jsx("code",{className:"text-cyan-300",children:"qector-doctor --json"}),"."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Local measurement via qector bench"}),e.jsx("p",{className:"text-secondary text-xs mb-2",children:"Use the command documented by the installed package release. The result is machine- and workload-specific, not a site claim:"}),e.jsx(c,{code:"qector bench --distance 5 --rounds 5 --shots 10000 --decoder blossom --noise 0.001",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Interactive Sandbox CLI"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"This UI is a command-output demonstration only; it does not execute commands or generate benchmark data:"}),e.jsx(B,{})]})]});case"configuration":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Detailed constructor configuration arguments for QECTOR's primary decoders:"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BlossomDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"adaptive_k"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:"`bool` (Default: `True`). Enable union-find matching pre-filtering to minimize match graph sizing."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"timeout"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:"`float` (Default: `None`). Maximum time (in seconds) allowed to resolve a single syndrome."})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BeliefMatchingDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_iters"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:"`int` (Default: `30`). Maximum number of belief propagation iterations. Higher iterations improve syndrome accuracy."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"max_paths"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:"`int` (Default: `10`). Maximum number of alternative paths generated for matching reweighting calculations."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_method"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:'`str` (Default: `"product_sum"`). Choice of BP update method. Options: `"product_sum"`, `"minimum_sum"`.'})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"GpuBatchDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"backend"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:'`str` (Default: `"cuda"`). Choose GPU compilation framework. Options: `"cuda"`, `"opencl"`.'})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"batch_size"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:"`int` (Default: `1000`). Number of parallel syndromes transferred to and calculated in the GPU memory space."})})]})]})]})]});case"troubleshooting":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Solutions for common installation and running issues:"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:e.jsx(d,{children:"Issue: ImportError when importing `qector`"})})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(d,{children:[e.jsx("strong",{children:"Fix:"})," Ensure your Python architecture matches the wheel and reinstall with `python -m pip install --force-reinstall qector-decoder-v3`."]})})]}),e.jsxs("div",{className:"p-4 bg-gold-400/5 border border-gold-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-gold-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: GPU / CUDA is not detected"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(d,{children:[e.jsx("strong",{children:"Fix:"})," Verify drivers by typing `nvidia-smi` in terminal. Ensure CUDA Toolkit 11.8 or higher is installed and environment variable `CUDA_PATH` or `LD_LIBRARY_PATH` points to the CUDA install folder."]})})]}),e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: Out Of Memory (OOM) on GPU batching"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(d,{children:[e.jsx("strong",{children:"Fix:"})," Lower the `batch_size` argument in your `GpuBatchDecoder` instantiation. For exceptionally large code distances (d > 15), prefer the linear-scaling `UnionFindDecoder` which reduces memory demands."]})})]})]})]});case"package-reference":return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl flex items-center justify-between flex-wrap gap-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-bold text-lg",children:"QECTOR Decoder v3: Extended Reference (package only)"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Version: 1.0.1 · PyPI: qector-decoder-v3 · Backend: Rust + PyO3"})]}),e.jsx("a",{href:"/docs/reference.md",target:"_blank",rel:"noopener noreferrer",download:"QECTOR Decoder v3 - Reference (package only).md",className:"btn-cyan text-xs py-2 px-4",children:"Download Reference (.md)"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"1. Installation & Platforms"}),e.jsx(c,{code:`pip install --upgrade "qector-decoder-v3>=1.0.1,<2" -pip install "qector-decoder-v3[stim]" # Stim / Sinter / PyMatching / LDPC ecosystem -pip install "qector-decoder-v3[bench]" # local measurement tools -pip install "qector-decoder-v3[all]" # optional full environment`,language:"bash",filename:"terminal"}),e.jsxs("div",{className:"mt-3 border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary font-mono",children:"3.9 - 3.13"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Platforms"}),e.jsx("span",{className:"text-primary",children:"Linux x86_64 (manylinux), Windows x64, macOS arm64"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License"}),e.jsx("span",{className:"text-primary",children:"Source-available (Free academic / non-commercial)"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Startup Notice"}),e.jsx("span",{className:"text-primary font-mono",children:"Suppressed with QECTOR_SILENT=1"})]}),e.jsxs("div",{className:"p-2.5 flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License Env"}),e.jsx("span",{className:"text-primary font-mono",children:"QECTOR_LICENSE + QECTOR_LICENSE_KEY (Ed25519 token)"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"2. Core Architecture"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1.5 text-secondary text-xs leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Rust Core (compiled extension):"})," Matching, UF, batch CPU/GPU algorithms."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Python Surface:"})," Clean API, Stim/Sinter compat, belief/GNN layers, licensing."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Zero-copy NumPy:"})," Direct memory access; GIL-free parallel decoding paths."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Version Symbol:"})," ",e.jsx("code",{className:"text-cyan-300",children:'qector_decoder_v3.__version__ == "1.0.1"'})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"3. Decoder Families & Incidence Rules"}),e.jsxs("p",{className:"text-muted-foreground text-xs mb-3",children:[e.jsx("strong",{className:"text-cyan-300",children:"Graph-like rule (UF family):"})," Every qubit must participate in at most two checks (participation ≤ 2). Matrices violating this raise a clear error (",e.jsx("code",{className:"text-red-400",children:"-32602"}),"). ",e.jsx("code",{className:"text-cyan-300",children:"BlossomDecoder"}),", ",e.jsx("code",{className:"text-cyan-300",children:"SparseBlossomDecoder"}),", and ",e.jsx("code",{className:"text-cyan-300",children:"BpOsdDecoder"})," accept general hyperedge codes."]}),e.jsx("div",{className:"overflow-x-auto rounded-xl",children:e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 font-bold border-b border-gridline bg-surface/30",children:[e.jsx("span",{children:"Class"}),e.jsx("span",{children:"Best for"}),e.jsx("span",{children:"Status"}),e.jsx("span",{children:"Graph-like?"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"UnionFindDecoder"}),e.jsx("span",{children:"Low-latency approximate"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes (participation ≤ 2)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"FastUnionFindDecoder"}),e.jsx("span",{children:"Faster UF hot path"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BlossomDecoder"}),e.jsx("span",{children:"Exact MWPM"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"SparseBlossomDecoder"}),e.jsx("span",{children:"Near-optimal matching"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BeliefMatching"}),e.jsx("span",{children:"Correlated-noise accuracy"}),e.jsx("span",{children:"Research"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BpOsdDecoder"}),e.jsx("span",{children:"LDPC / qLDPC"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BatchDecoder"}),e.jsx("span",{children:"High-throughput CPU batch"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes for UF batch"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"CUDABatchDecoder"}),e.jsx("span",{children:"GPU batch (NVIDIA)"}),e.jsx("span",{children:"Runtime-dependent"}),e.jsx("span",{children:"N/A"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"AutoDecoder"}),e.jsx("span",{children:"7-tier self-debugging fallback"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"N/A"})]})]})})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"4. Code Generators"}),e.jsx(c,{code:`from qector_decoder_v3 import ( - generate_repetition_code_checks, # (checks, n_qubits) - generate_ring_code_checks, # (checks, n_qubits) - generate_surface_code_checks, # surface-code checks -)`,language:"python",filename:"python"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"5. MCP and General-Matrix Workflows"}),e.jsx(c,{code:`# The standalone library MCP server is documented separately. -# Start it from the plugin package with: -python mcp/mcp_server_library.py - -# Initialize and call tools/list before using a tool.`,language:"python",filename:"mcp_server.py"}),e.jsx("p",{className:"text-muted-foreground text-xs mt-2 mb-3",children:"For general matrices, use the decoder family documented for that workload and verify every returned correction against H c = s (mod 2):"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import BlossomDecoder, SparseBlossomDecoder, BpOsdDecoder - -def decode_hyperedge(checks, n_qubits, syndrome, kind="Blossom", **opts): - syn = np.asarray(syndrome, dtype=np.uint8).ravel() - if kind in ("Blossom", "blossom"): - return BlossomDecoder(checks, n_qubits).decode(syn) - if kind in ("SparseBlossom", "sparse_blossom"): - return SparseBlossomDecoder(checks, n_qubits).decode(syn) - if kind.lower() in ("bposd", "bp_osd"): - H = np.zeros((len(checks), n_qubits), dtype=np.uint8) - for i, c in enumerate(checks): - for q in c: H[i, q] ^= 1 - return BpOsdDecoder(H, error_rate=opts.get("error_rate", 0.05)).decode(syn) - raise ValueError(f"unsupported kind: {kind}")`,language:"python",filename:"hyperedge_workaround.py"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"6. Verified Fallback Pattern"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed mb-3",children:"A fallback is safe only when each candidate is checked against the same parity-check matrix. The following pattern uses the stable Union-Find and Blossom classes and fails closed if a candidate is not syndrome-faithful:"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder - -def faithful_decode(check_to_qubits, n_qubits, syndrome): - syndrome = np.asarray(syndrome, dtype=np.uint8).ravel() - matrix = np.zeros((len(check_to_qubits), n_qubits), dtype=np.uint8) - for check, qubits in enumerate(check_to_qubits): - matrix[check, qubits] = 1 - - for decoder_type in (FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder): - try: - correction = np.asarray( - decoder_type(check_to_qubits, n_qubits=n_qubits).decode(syndrome), - dtype=np.uint8, - ) - if np.array_equal((matrix @ correction.astype(int)) % 2, syndrome): - return correction, decoder_type.__name__ - except Exception: - continue - raise RuntimeError("No syndrome-faithful decoder result")`,language:"python",filename:"cascade_decode.py"})]})]});default:return null}};return e.jsxs(e.Fragment,{children:[e.jsx(N,{title:"User Manual · QECTOR",description:"Complete user manual for QECTOR Decoder v3. Installation, configuration, decoder selection, validation, and troubleshooting."}),e.jsx(w,{data:{"@context":"https://schema.org","@type":"HowTo",name:"How to Install and Run QECTOR Decoder v3",description:"Step-by-step instructions to install QECTOR, verify a syndrome-faithful decode, select a decoder, and review evidence boundaries.",step:[{"@type":"HowToStep",name:"Install the package",text:"Run pip install qector-decoder-v3 in your Python terminal to install the Rust core binary wheels."},{"@type":"HowToStep",name:"Verify the installation",text:'Verify the installation with python -c "import qector_decoder_v3 as qd; print(qd.__version__)" and a small syndrome-faithfulness check.'},{"@type":"HowToStep",name:"Review evidence boundaries",text:"Read the v1.0.0 reference manual and record code, noise model, decoder configuration, seed, environment, and artifact metadata before making a local measurement."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"15 backend families powering 17 decoder configurations · GPU Batch · Stim · Sinter · Qiskit"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(I,{text:"User Manual",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Complete guide to QECTOR Decoder v3: installation, decoder selection, local measurements, diagnostics, and ecosystem integration."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsx("div",{className:"max-w-6xl mx-auto",children:e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-4 gap-8",children:[e.jsx("div",{className:"lg:col-span-1",children:e.jsx("nav",{"aria-label":"Manual sections",className:"sticky top-24 space-y-1 bg-surface/10 p-2 rounded-xl border border-gridline/50",children:n.map(s=>e.jsxs("button",{type:"button",onClick:()=>l(s.id),"aria-current":a===s.id?"true":void 0,className:`w-full text-left px-3.5 py-2.5 rounded-lg text-sm font-medium transition-all duration-200 flex items-center gap-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cyan-300 ${a===s.id?"bg-cyan-300/10 text-cyan-300 border border-cyan-300/20":"text-secondary hover:text-primary hover:bg-white/5 border border-transparent"}`,children:[s.icon,s.title]},s.id))})}),e.jsx("div",{className:"lg:col-span-3",children:e.jsxs("div",{className:"card-surface bg-surface/20 min-h-[500px]",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6 text-primary border-b border-gridline pb-4 flex items-center gap-2",children:n.find(s=>s.id===a)?.title.substring(3)}),e.jsx("div",{className:"transition-all duration-300",children:t()})]})})]})})})]})}function T(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.813 15.904 9 21l-.813-5.096L3 15l5.096-.813L9 9l.813 5.096L15 15l-5.187.904Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19.071 4.929a10 10 0 0 0-14.142 0M12 3v3m0 12v3M3 12h3m12 0h3",opacity:"0.5"})]})}function M(a){return e.jsx("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v5.25c0 .621-.504 1.125-1.125 1.125h-2.25A1.125 1.125 0 0 1 3 18.375v-5.25ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v9.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125v-9.75ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v14.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z"})})}function U(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.324.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.43l-1.003.828c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.954.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.43l1.004-.827c.292-.24.437-.613.43-.991a6.936 6.936 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"})]})}export{W as default}; diff --git a/assets/Manual-Cd4jvvKA.js b/assets/Manual-Cd4jvvKA.js deleted file mode 100644 index 2b211525..00000000 --- a/assets/Manual-Cd4jvvKA.js +++ /dev/null @@ -1,67 +0,0 @@ -import{r as p,j as e,R as b}from"./vendor-react-BiHfrq0e.js";import{S as N,J as w,C as c}from"./index-B9kEGiWi.js";import{T as k,o as _,u as C,I as S,g as q,a as D,C as P,B as R,v as u,i as E}from"./vendor-ui-B0ssGG4c.js";import{N as I}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-gsap-a3sj5zmn.js";function B(){const[a,l]=p.useState(""),[n,t]=p.useState([{text:"QECTOR CLI Terminal Demo (simulation only)",type:"info"},{text:"No command is executed and no external service is contacted.",type:"info"}]),[s,h]=p.useState(!1),g=p.useRef(null),y=()=>{g.current?.scrollIntoView({behavior:"smooth"})};p.useEffect(()=>{y()},[n]);const f=async i=>{const m=i.trim().toLowerCase(),x=[...n,{text:`qector@sandbox:~$ ${i}`,type:"input"}];t(x),l(""),h(!0);const d=r=>new Promise(v=>setTimeout(v,r));m==="help"?(await d(200),t(r=>[...r,{text:"Available commands:",type:"info"},{text:" help - Show this menu",type:"output"},{text:" pip install qector-decoder-v3 - Show the install command",type:"output"},{text:" qector-doctor - Show the diagnostic command",type:"output"},{text:" qector bench -d 5 - Show a local measurement command",type:"output"},{text:" clear - Clear the terminal screen",type:"output"}])):m==="clear"?t([]):m==="pip install qector-decoder-v3"?(await d(300),t(r=>[...r,{text:"Simulation only: no package was downloaded.",type:"output"}]),await d(800),t(r=>[...r,{text:"Simulation only: no package was installed.",type:"output"}]),await d(400),t(r=>[...r,{text:"For a real install, follow the current PyPI and release verification instructions.",type:"output"}]),await d(600),t(r=>[...r,{text:"✓ Demo complete: no network request or filesystem change was made.",type:"success"}])):m==="qector-doctor"?(await d(300),t(r=>[...r,{text:"Simulation only: qector-doctor was not run.",type:"output"}]),await d(500),t(r=>[...r,{text:"Run qector-doctor in your installed environment to obtain real PASS / WARN / FAIL results.",type:"info"}])):m==="qector bench -d 5"||m==="qector bench --distance 5"?(await d(400),t(r=>[...r,{text:"Simulation only: no circuit or measurement was generated.",type:"output"}]),await d(1e3),t(r=>[...r,{text:"Run qector bench on your own declared workload to generate real local evidence.",type:"info"}])):(await d(150),t(r=>[...r,{text:`qector: command not found: ${i}. Type "help" for a list of commands.`,type:"info"}])),h(!1)},j=i=>{i.preventDefault(),!(!a.trim()||s)&&f(a)};return e.jsxs("div",{className:"flex flex-col border border-gridline bg-void/90 rounded-2xl overflow-hidden shadow-2xl",children:[e.jsxs("div",{className:"flex items-center justify-between px-4 py-3 bg-surface border-b border-gridline",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(k,{className:"w-4 h-4 text-cyan-300"}),e.jsx("span",{className:"font-mono text-xs text-secondary font-semibold",children:"interactive-cli.sh"})]}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-red-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-yellow-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-green-500/80"})]})]}),e.jsxs("div",{className:"p-5 font-mono text-xs h-72 overflow-y-auto space-y-2 select-text custom-scrollbar",children:[n.map((i,m)=>{let x="text-secondary";return i.type==="input"?x="text-cyan-300 font-semibold":i.type==="success"?x="text-green-400 font-semibold":i.type==="info"&&(x="text-gold-400"),e.jsx("div",{className:`${x} leading-relaxed whitespace-pre-wrap`,children:i.text},m)}),s&&e.jsxs("div",{className:"text-muted-foreground animate-pulse flex items-center gap-1",children:[e.jsx("span",{className:"w-1.5 h-3 bg-muted-foreground inline-block animate-caret"}),e.jsx("span",{children:"Executing..."})]}),e.jsx("div",{ref:g})]}),e.jsxs("form",{onSubmit:j,className:"flex items-center border-t border-gridline bg-surface/50 px-4 py-2",children:[e.jsx(_,{className:"w-4 h-4 text-cyan-300 shrink-0"}),e.jsx("input",{type:"text",value:a,onChange:i=>l(i.target.value),disabled:s,className:"flex-1 bg-transparent border-none outline-none font-mono text-xs text-cyan-300 px-2 py-1 placeholder-cyan-300/60 focus-visible:ring-2 focus-visible:ring-cyan-300",placeholder:'Type a command (e.g. "help", "pip install qector-decoder-v3")...',"aria-label":"Terminal input"}),e.jsx("button",{type:"submit",disabled:s||!a.trim(),className:"p-1 text-cyan-300 hover:text-cyan-200 disabled:text-muted/20 transition-colors","aria-label":"Run command",children:e.jsx(C,{className:"w-3.5 h-3.5 fill-current"})})]})]})}const L="font-mono text-[11px] bg-cyan-300/10 text-cyan-200 px-1 py-0.5 rounded border border-cyan-300/20";function O(a,l){return a.replace(/\\"/g,'"').split(/(`[^`\n]+`)/g).map((n,t)=>n.length>2&&n.startsWith("`")&&n.endsWith("`")?e.jsx("code",{className:L,children:n.slice(1,-1)},`${l}-${t}`):n)}function o({children:a}){const l=(n,t)=>typeof n=="string"?e.jsx(b.Fragment,{children:O(n,t)},t):Array.isArray(n)?e.jsx(e.Fragment,{children:n.map((s,h)=>e.jsx(b.Fragment,{children:l(s,`${t}-${h}`)},`${t}-${h}`))}):n;return e.jsx(e.Fragment,{children:l(a,"imd")})}function $(){const[a,l]=p.useState("overview"),n=[{id:"overview",title:"1. Overview",icon:e.jsx(S,{className:"w-4 h-4"})},{id:"installation",title:"2. Installation",icon:e.jsx(q,{className:"w-4 h-4"})},{id:"quickstart",title:"3. Quick Start",icon:e.jsx(T,{className:"w-4 h-4"})},{id:"decoders",title:"4. Choosing a Decoder",icon:e.jsx(D,{className:"w-4 h-4"})},{id:"measurement",title:"5. Local Measurements",icon:e.jsx(M,{className:"w-4 h-4"})},{id:"configuration",title:"6. Configuration",icon:e.jsx(U,{className:"w-4 h-4"})},{id:"troubleshooting",title:"7. Troubleshooting",icon:e.jsx(P,{className:"w-4 h-4"})},{id:"package-reference",title:"8. Package Reference (v1.0.0)",icon:e.jsx(R,{className:"w-4 h-4"})}],t=()=>{switch(a){case"overview":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-base leading-relaxed",children:"QECTOR Decoder v3 is a Python library for quantum error correction (QEC) decoding. v1.0.0 is the first stable release: it provides 17 decoder configurations and helpers integrated into a high-performance compiled Rust core with a plug-and-play Python API."}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/10 rounded-xl flex items-start gap-3",children:[e.jsx(E,{className:"w-5 h-5 text-cyan-300 shrink-0 mt-0.5"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Ecosystem Native:"})," Swappable backend design. You can easily plug QECTOR into Stim, PyMatching, Sinter, and Qiskit pipelines with minimal API modifications: v1.0.0 registers Sinter and qiskit-qec entry points so ",e.jsx("code",{className:"text-cyan-300",children:"sinter.collect()"})," works with no ",e.jsx("code",{className:"text-cyan-300",children:"custom_decoders="}),"."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-lg mb-3",children:"Key Highlights"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"v1.0.0: First Stable Release"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"API stability tiers, Relay-BP, CS-OSD(lambda, w), colour-code cluster_bposd, qector CLI + qector-doctor, Sinter/qiskit entry points, pymatching shim."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Validate on Your Hardware"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"Hardware, GPU, and measurement results are device-local. Use the package diagnostic and declared measurement workflow instead of treating site text as performance evidence."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Multi-Algorithm Diversity"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"17 decoder configurations from exact Blossom MWPM to Belief-Matching, BP-OSD, and GPU batch decoding."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Compiled Rust Core"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"A compiled Rust core with a Python API. Exact memory, latency, and throughput behavior depends on the selected workload and environment."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Optional GPU Paths"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"GPU paths are optional and environment-dependent. Read the installed release diagnostics before relying on them."})]})]})]})]});case"installation":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR ships as pre-compiled binary wheels on PyPI. Installing requires Python and pip."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Standard Installation"}),e.jsx(c,{code:"pip install qector-decoder-v3",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"System Requirements"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-sm",children:[e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary",children:"3.9, 3.10, 3.11, 3.12, 3.13 (64-bit)"})]}),e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Operating System"}),e.jsx("span",{className:"text-primary",children:"Linux, macOS, Windows (see current PyPI wheel metadata)"})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"GPU Requirements (Optional)"}),e.jsx("span",{className:"text-primary",children:"Optional and environment-dependent; check the installed release diagnostics"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Install Optional Dependencies"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"Install only the extras required by your workflow:"}),e.jsx(c,{code:`# Stim / Sinter / PyMatching ecosystem - pip install "qector-decoder-v3[stim]" - - # Full optional environment - pip install "qector-decoder-v3[all]"`,filename:"terminal",language:"bash"})]})]});case"quickstart":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Below is a minimal package-only example: create a rotated surface code, generate a syndrome, and verify a Blossom correction against the parity-check matrix."}),e.jsx(c,{filename:"surface_code_decode.py",language:"python",code:`import numpy as np -import qector_decoder_v3 as qector - -# Build a small code and inject one bit error. -code = qector.codes.rotated_surface_code(3) -error = np.zeros(code.n_qubits, dtype=np.uint8) -error[4] = 1 -syndrome = code.syndrome(error) - -# Decode with the graphlike Blossom backend. -correction = qector.BlossomDecoder( - code.check_to_qubits, - n_qubits=code.n_qubits, -).decode(syndrome) - -# The syndrome contract is H c = s (mod 2). -matrix = np.asarray(code.parity_check_matrix(), dtype=np.uint8) -assert np.array_equal((matrix @ correction.astype(int)) % 2, syndrome) -print("Syndrome-faithful correction")`})]});case"decoders":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR includes 17 decoder configurations categorized into stable, workload-sensitive, and experimental/research tiers. Choose based on code type and speed/accuracy tradeoffs:"}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse border border-gridline text-left text-sm rounded-xl overflow-hidden",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 font-semibold",children:[e.jsx("th",{className:"p-3",children:"Decoder"}),e.jsx("th",{className:"p-3",children:"Target Code"}),e.jsx("th",{className:"p-3",children:"Speed"}),e.jsx("th",{className:"p-3",children:"Accuracy"}),e.jsx("th",{className:"p-3",children:"Tier"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:[{name:"Blossom (MWPM)",target:"Graphlike CSS / surface",speed:"Workload-dependent",accuracy:"Minimum-weight matching objective",tier:"Stable"},{name:"Belief-Matching",target:"Correlated-noise research",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"BP-OSD",target:"qLDPC, LDPC",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"Union-Find",target:"Large Surface",speed:"Near-linear O(N)",accuracy:"Approximate",tier:"Production"},{name:"GPU Batch",target:"Supported batch workloads",speed:"Runtime-dependent",accuracy:"Validate locally",tier:"Workload-sensitive"},{name:"Hybrid / Cascade",target:"Degenerate, mixed",speed:"Iterative",accuracy:"High",tier:"Research"},{name:"Colour Code",target:"Triangular colour code",speed:"Moderate",accuracy:"Native",tier:"Research"}].map(s=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-semibold text-primary",children:s.name}),e.jsx("td",{className:"p-3 text-secondary",children:s.target}),e.jsx("td",{className:"p-3 text-secondary",children:s.speed}),e.jsx("td",{className:"p-3 text-secondary",children:s.accuracy}),e.jsx("td",{className:"p-3",children:e.jsx("span",{className:`px-2 py-0.5 rounded text-[10px] uppercase font-bold border ${s.tier==="Production"?"bg-green-400/10 text-green-400 border-green-400/20":"bg-gold-400/10 text-gold-400 border-gold-400/20"}`,children:s.tier})})]},s.name))})]})})]});case"measurement":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Hardware-specific measurements are not published on this site. If your project requires a local measurement, record the code, noise model, decoder configuration, seed, shots, environment, and raw artifact."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Environment Diagnostic"}),e.jsx(c,{code:"qector-doctor",filename:"terminal",language:"bash"}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["15-check diagnostic that reports PASS / WARN / FAIL per check and explains WHY a decoder is unavailable on your machine. Full report via ",e.jsx("code",{className:"text-cyan-300",children:"qector-doctor --json"}),"."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Local measurement via qector bench"}),e.jsx("p",{className:"text-secondary text-xs mb-2",children:"Use the command documented by the installed package release. The result is machine- and workload-specific, not a site claim:"}),e.jsx(c,{code:"qector bench --distance 5 --rounds 5 --shots 10000 --decoder blossom --noise 0.001",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Interactive Sandbox CLI"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"This UI is a command-output demonstration only; it does not execute commands or generate benchmark data:"}),e.jsx(B,{})]})]});case"configuration":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Detailed constructor configuration arguments for QECTOR's primary decoders:"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BlossomDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"adaptive_k"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`bool` (Default: `True`). Enable union-find matching pre-filtering to minimize match graph sizing."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"timeout"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`float` (Default: `None`). Maximum time (in seconds) allowed to resolve a single syndrome."})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BeliefMatchingDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_iters"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `30`). Maximum number of belief propagation iterations. Higher iterations improve syndrome accuracy."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"max_paths"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `10`). Maximum number of alternative paths generated for matching reweighting calculations."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_method"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:'`str` (Default: `"product_sum"`). Choice of BP update method. Options: `"product_sum"`, `"minimum_sum"`.'})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"GpuBatchDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"backend"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:'`str` (Default: `"cuda"`). Choose GPU compilation framework. Options: `"cuda"`, `"opencl"`.'})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"batch_size"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `1000`). Number of parallel syndromes transferred to and calculated in the GPU memory space."})})]})]})]})]});case"troubleshooting":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Solutions for common installation and running issues:"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:e.jsx(o,{children:"Issue: ImportError when importing `qector`"})})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Ensure your Python architecture matches the wheel and reinstall with `python -m pip install --force-reinstall qector-decoder-v3`."]})})]}),e.jsxs("div",{className:"p-4 bg-gold-400/5 border border-gold-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-gold-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: GPU / CUDA is not detected"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Verify drivers by typing `nvidia-smi` in terminal. Ensure CUDA Toolkit 11.8 or higher is installed and environment variable `CUDA_PATH` or `LD_LIBRARY_PATH` points to the CUDA install folder."]})})]}),e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: Out Of Memory (OOM) on GPU batching"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Lower the `batch_size` argument in your `GpuBatchDecoder` instantiation. For exceptionally large code distances (d > 15), prefer the linear-scaling `UnionFindDecoder` which reduces memory demands."]})})]})]})]});case"package-reference":return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl flex items-center justify-between flex-wrap gap-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-bold text-lg",children:"QECTOR Decoder v3: Extended Reference (package only)"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Version: 1.0.0 · PyPI: qector-decoder-v3 · Backend: Rust + PyO3"})]}),e.jsx("a",{href:"/docs/reference.md",target:"_blank",rel:"noopener noreferrer",download:"QECTOR Decoder v3 - Reference (package only).md",className:"btn-cyan text-xs py-2 px-4",children:"Download Reference (.md)"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"1. Installation & Platforms"}),e.jsx(c,{code:`pip install qector-decoder-v3==1.0.0 -pip install "qector-decoder-v3[stim]" # Stim / Sinter / PyMatching / LDPC ecosystem -pip install "qector-decoder-v3[bench]" # local measurement tools -pip install "qector-decoder-v3[all]" # optional full environment`,language:"bash",filename:"terminal"}),e.jsxs("div",{className:"mt-3 border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary font-mono",children:"3.9 - 3.13"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Platforms"}),e.jsx("span",{className:"text-primary",children:"Linux x86_64 (manylinux), Windows x64, macOS arm64"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License"}),e.jsx("span",{className:"text-primary",children:"Source-available (Free academic / non-commercial)"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Startup Notice"}),e.jsx("span",{className:"text-primary font-mono",children:"Suppressed with QECTOR_SILENT=1"})]}),e.jsxs("div",{className:"p-2.5 flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License Env"}),e.jsx("span",{className:"text-primary font-mono",children:"QECTOR_LICENSE + QECTOR_LICENSE_KEY (Ed25519 token)"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"2. Core Architecture"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1.5 text-secondary text-xs leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Rust Core (compiled extension):"})," Matching, UF, batch CPU/GPU algorithms."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Python Surface:"})," Clean API, Stim/Sinter compat, belief/GNN layers, licensing."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Zero-copy NumPy:"})," Direct memory access; GIL-free parallel decoding paths."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Version Symbol:"})," ",e.jsx("code",{className:"text-cyan-300",children:'qector_decoder_v3.__version__ == "1.0.0"'})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"3. Decoder Families & Incidence Rules"}),e.jsxs("p",{className:"text-muted-foreground text-xs mb-3",children:[e.jsx("strong",{className:"text-cyan-300",children:"Graph-like rule (UF family):"})," Every qubit must participate in at most two checks (participation ≤ 2). Matrices violating this raise a clear error (",e.jsx("code",{className:"text-red-400",children:"-32602"}),"). ",e.jsx("code",{className:"text-cyan-300",children:"BlossomDecoder"}),", ",e.jsx("code",{className:"text-cyan-300",children:"SparseBlossomDecoder"}),", and ",e.jsx("code",{className:"text-cyan-300",children:"BpOsdDecoder"})," accept general hyperedge codes."]}),e.jsx("div",{className:"overflow-x-auto rounded-xl",children:e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 font-bold border-b border-gridline bg-surface/30",children:[e.jsx("span",{children:"Class"}),e.jsx("span",{children:"Best for"}),e.jsx("span",{children:"Status"}),e.jsx("span",{children:"Graph-like?"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"UnionFindDecoder"}),e.jsx("span",{children:"Low-latency approximate"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes (participation ≤ 2)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"FastUnionFindDecoder"}),e.jsx("span",{children:"Faster UF hot path"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BlossomDecoder"}),e.jsx("span",{children:"Exact MWPM"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"SparseBlossomDecoder"}),e.jsx("span",{children:"Near-optimal matching"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BeliefMatching"}),e.jsx("span",{children:"Correlated-noise accuracy"}),e.jsx("span",{children:"Research"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BpOsdDecoder"}),e.jsx("span",{children:"LDPC / qLDPC"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BatchDecoder"}),e.jsx("span",{children:"High-throughput CPU batch"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes for UF batch"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"CUDABatchDecoder"}),e.jsx("span",{children:"GPU batch (NVIDIA)"}),e.jsx("span",{children:"Runtime-dependent"}),e.jsx("span",{children:"N/A"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"AutoDecoder"}),e.jsx("span",{children:"7-tier self-debugging fallback"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"N/A"})]})]})})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"4. Code Generators"}),e.jsx(c,{code:`from qector_decoder_v3 import ( - generate_repetition_code_checks, # (checks, n_qubits) - generate_ring_code_checks, # (checks, n_qubits) - generate_surface_code_checks, # surface-code checks -)`,language:"python",filename:"python"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"5. MCP and General-Matrix Workflows"}),e.jsx(c,{code:`# The standalone library MCP server is documented separately. -# Start it from the plugin package with: -python mcp/mcp_server_library.py - -# Initialize and call tools/list before using a tool.`,language:"python",filename:"mcp_server.py"}),e.jsx("p",{className:"text-muted-foreground text-xs mt-2 mb-3",children:"For general matrices, use the decoder family documented for that workload and verify every returned correction against H c = s (mod 2):"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import BlossomDecoder, SparseBlossomDecoder, BpOsdDecoder - -def decode_hyperedge(checks, n_qubits, syndrome, kind="Blossom", **opts): - syn = np.asarray(syndrome, dtype=np.uint8).ravel() - if kind in ("Blossom", "blossom"): - return BlossomDecoder(checks, n_qubits).decode(syn) - if kind in ("SparseBlossom", "sparse_blossom"): - return SparseBlossomDecoder(checks, n_qubits).decode(syn) - if kind.lower() in ("bposd", "bp_osd"): - H = np.zeros((len(checks), n_qubits), dtype=np.uint8) - for i, c in enumerate(checks): - for q in c: H[i, q] ^= 1 - return BpOsdDecoder(H, error_rate=opts.get("error_rate", 0.05)).decode(syn) - raise ValueError(f"unsupported kind: {kind}")`,language:"python",filename:"hyperedge_workaround.py"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"6. Verified Fallback Pattern"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed mb-3",children:"A fallback is safe only when each candidate is checked against the same parity-check matrix. The following pattern uses the stable Union-Find and Blossom classes and fails closed if a candidate is not syndrome-faithful:"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder - -def faithful_decode(check_to_qubits, n_qubits, syndrome): - syndrome = np.asarray(syndrome, dtype=np.uint8).ravel() - matrix = np.zeros((len(check_to_qubits), n_qubits), dtype=np.uint8) - for check, qubits in enumerate(check_to_qubits): - matrix[check, qubits] = 1 - - for decoder_type in (FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder): - try: - correction = np.asarray( - decoder_type(check_to_qubits, n_qubits=n_qubits).decode(syndrome), - dtype=np.uint8, - ) - if np.array_equal((matrix @ correction.astype(int)) % 2, syndrome): - return correction, decoder_type.__name__ - except Exception: - continue - raise RuntimeError("No syndrome-faithful decoder result")`,language:"python",filename:"cascade_decode.py"})]})]});default:return null}};return e.jsxs(e.Fragment,{children:[e.jsx(N,{title:"User Manual · QECTOR",description:"Complete user manual for QECTOR Decoder v3. Installation, configuration, decoder selection, validation, and troubleshooting."}),e.jsx(w,{data:{"@context":"https://schema.org","@type":"HowTo",name:"How to Install and Run QECTOR Decoder v3",description:"Step-by-step instructions to install QECTOR, verify a syndrome-faithful decode, select a decoder, and review evidence boundaries.",step:[{"@type":"HowToStep",name:"Install the package",text:"Run pip install qector-decoder-v3 in your Python terminal to install the Rust core binary wheels."},{"@type":"HowToStep",name:"Verify the installation",text:'Verify the installation with python -c "import qector_decoder_v3 as qd; print(qd.__version__)" and a small syndrome-faithfulness check.'},{"@type":"HowToStep",name:"Review evidence boundaries",text:"Read the v1.0.0 reference manual and record code, noise model, decoder configuration, seed, environment, and artifact metadata before making a local measurement."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"15 backend families powering 17 decoder configurations · GPU Batch · Stim · Sinter · Qiskit"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(I,{text:"User Manual",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Complete guide to QECTOR Decoder v3: installation, decoder selection, local measurements, diagnostics, and ecosystem integration."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsx("div",{className:"max-w-6xl mx-auto",children:e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-4 gap-8",children:[e.jsx("div",{className:"lg:col-span-1",children:e.jsx("nav",{"aria-label":"Manual sections",className:"sticky top-24 space-y-1 bg-surface/10 p-2 rounded-xl border border-gridline/50",children:n.map(s=>e.jsxs("button",{type:"button",onClick:()=>l(s.id),"aria-current":a===s.id?"true":void 0,className:`w-full text-left px-3.5 py-2.5 rounded-lg text-sm font-medium transition-all duration-200 flex items-center gap-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cyan-300 ${a===s.id?"bg-cyan-300/10 text-cyan-300 border border-cyan-300/20":"text-secondary hover:text-primary hover:bg-white/5 border border-transparent"}`,children:[s.icon,s.title]},s.id))})}),e.jsx("div",{className:"lg:col-span-3",children:e.jsxs("div",{className:"card-surface bg-surface/20 min-h-[500px]",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6 text-primary border-b border-gridline pb-4 flex items-center gap-2",children:n.find(s=>s.id===a)?.title.substring(3)}),e.jsx("div",{className:"transition-all duration-300",children:t()})]})})]})})})]})}function T(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.813 15.904 9 21l-.813-5.096L3 15l5.096-.813L9 9l.813 5.096L15 15l-5.187.904Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19.071 4.929a10 10 0 0 0-14.142 0M12 3v3m0 12v3M3 12h3m12 0h3",opacity:"0.5"})]})}function M(a){return e.jsx("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v5.25c0 .621-.504 1.125-1.125 1.125h-2.25A1.125 1.125 0 0 1 3 18.375v-5.25ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v9.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125v-9.75ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v14.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z"})})}function U(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.324.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.43l-1.003.828c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.954.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.43l1.004-.827c.292-.24.437-.613.43-.991a6.936 6.936 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"})]})}export{$ as default}; diff --git a/assets/Manual-CsPEksBK.js b/assets/Manual-CsPEksBK.js deleted file mode 100644 index 139ca50a..00000000 --- a/assets/Manual-CsPEksBK.js +++ /dev/null @@ -1,67 +0,0 @@ -import{r as p,j as e,R as b}from"./vendor-react-BiHfrq0e.js";import{S as N,J as w,C as c}from"./index-CcwlvHYJ.js";import{T as k,o as _,u as C,I as S,g as q,a as D,C as P,B as R,v as u,i as E}from"./vendor-ui-B0ssGG4c.js";import{N as I}from"./NeuralReveal-Bsl9IGCr.js";import"./vendor-gsap-a3sj5zmn.js";function B(){const[a,l]=p.useState(""),[n,t]=p.useState([{text:"QECTOR CLI Terminal Demo (simulation only)",type:"info"},{text:"No command is executed and no external service is contacted.",type:"info"}]),[s,h]=p.useState(!1),g=p.useRef(null),y=()=>{g.current?.scrollIntoView({behavior:"smooth"})};p.useEffect(()=>{y()},[n]);const f=async i=>{const m=i.trim().toLowerCase(),x=[...n,{text:`qector@sandbox:~$ ${i}`,type:"input"}];t(x),l(""),h(!0);const o=r=>new Promise(v=>setTimeout(v,r));m==="help"?(await o(200),t(r=>[...r,{text:"Available commands:",type:"info"},{text:" help - Show this menu",type:"output"},{text:" pip install qector-decoder-v3 - Show the install command",type:"output"},{text:" qector-doctor - Show the diagnostic command",type:"output"},{text:" qector bench -d 5 - Show a local measurement command",type:"output"},{text:" clear - Clear the terminal screen",type:"output"}])):m==="clear"?t([]):m==="pip install qector-decoder-v3"?(await o(300),t(r=>[...r,{text:"Simulation only: no package was downloaded.",type:"output"}]),await o(800),t(r=>[...r,{text:"Simulation only: no package was installed.",type:"output"}]),await o(400),t(r=>[...r,{text:"For a real install, follow the current PyPI and release verification instructions.",type:"output"}]),await o(600),t(r=>[...r,{text:"✓ Demo complete: no network request or filesystem change was made.",type:"success"}])):m==="qector-doctor"?(await o(300),t(r=>[...r,{text:"Simulation only: qector-doctor was not run.",type:"output"}]),await o(500),t(r=>[...r,{text:"Run qector-doctor in your installed environment to obtain real PASS / WARN / FAIL results.",type:"info"}])):m==="qector bench -d 5"||m==="qector bench --distance 5"?(await o(400),t(r=>[...r,{text:"Simulation only: no circuit or measurement was generated.",type:"output"}]),await o(1e3),t(r=>[...r,{text:"Run qector bench on your own declared workload to generate real local evidence.",type:"info"}])):(await o(150),t(r=>[...r,{text:`qector: command not found: ${i}. Type "help" for a list of commands.`,type:"info"}])),h(!1)},j=i=>{i.preventDefault(),!(!a.trim()||s)&&f(a)};return e.jsxs("div",{className:"flex flex-col border border-gridline bg-void/90 rounded-2xl overflow-hidden shadow-2xl",children:[e.jsxs("div",{className:"flex items-center justify-between px-4 py-3 bg-surface border-b border-gridline",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(k,{className:"w-4 h-4 text-cyan-300"}),e.jsx("span",{className:"font-mono text-xs text-secondary font-semibold",children:"interactive-cli.sh"})]}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-red-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-yellow-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-green-500/80"})]})]}),e.jsxs("div",{className:"p-5 font-mono text-xs h-72 overflow-y-auto space-y-2 select-text custom-scrollbar",children:[n.map((i,m)=>{let x="text-secondary";return i.type==="input"?x="text-cyan-300 font-semibold":i.type==="success"?x="text-green-400 font-semibold":i.type==="info"&&(x="text-gold-400"),e.jsx("div",{className:`${x} leading-relaxed whitespace-pre-wrap`,children:i.text},m)}),s&&e.jsxs("div",{className:"text-muted-foreground animate-pulse flex items-center gap-1",children:[e.jsx("span",{className:"w-1.5 h-3 bg-muted-foreground inline-block animate-caret"}),e.jsx("span",{children:"Executing..."})]}),e.jsx("div",{ref:g})]}),e.jsxs("form",{onSubmit:j,className:"flex items-center border-t border-gridline bg-surface/50 px-4 py-2",children:[e.jsx(_,{className:"w-4 h-4 text-cyan-300 shrink-0"}),e.jsx("input",{type:"text",value:a,onChange:i=>l(i.target.value),disabled:s,className:"flex-1 bg-transparent border-none outline-none font-mono text-xs text-cyan-300 px-2 py-1 placeholder-cyan-300/60 focus-visible:ring-2 focus-visible:ring-cyan-300",placeholder:'Type a command (e.g. "help", "pip install qector-decoder-v3")...',"aria-label":"Terminal input"}),e.jsx("button",{type:"submit",disabled:s||!a.trim(),className:"p-1 text-cyan-300 hover:text-cyan-200 disabled:text-muted/20 transition-colors","aria-label":"Run command",children:e.jsx(C,{className:"w-3.5 h-3.5 fill-current"})})]})]})}const L="font-mono text-[11px] bg-cyan-300/10 text-cyan-200 px-1 py-0.5 rounded border border-cyan-300/20";function O(a,l){return a.replace(/\\"/g,'"').split(/(`[^`\n]+`)/g).map((n,t)=>n.length>2&&n.startsWith("`")&&n.endsWith("`")?e.jsx("code",{className:L,children:n.slice(1,-1)},`${l}-${t}`):n)}function d({children:a}){const l=(n,t)=>typeof n=="string"?e.jsx(b.Fragment,{children:O(n,t)},t):Array.isArray(n)?e.jsx(e.Fragment,{children:n.map((s,h)=>e.jsx(b.Fragment,{children:l(s,`${t}-${h}`)},`${t}-${h}`))}):n;return e.jsx(e.Fragment,{children:l(a,"imd")})}function W(){const[a,l]=p.useState("overview"),n=[{id:"overview",title:"1. Overview",icon:e.jsx(S,{className:"w-4 h-4"})},{id:"installation",title:"2. Installation",icon:e.jsx(q,{className:"w-4 h-4"})},{id:"quickstart",title:"3. Quick Start",icon:e.jsx(T,{className:"w-4 h-4"})},{id:"decoders",title:"4. Choosing a Decoder",icon:e.jsx(D,{className:"w-4 h-4"})},{id:"measurement",title:"5. Local Measurements",icon:e.jsx(M,{className:"w-4 h-4"})},{id:"configuration",title:"6. Configuration",icon:e.jsx(U,{className:"w-4 h-4"})},{id:"troubleshooting",title:"7. Troubleshooting",icon:e.jsx(P,{className:"w-4 h-4"})},{id:"package-reference",title:"8. Package Reference (v1.0.1)",icon:e.jsx(R,{className:"w-4 h-4"})}],t=()=>{switch(a){case"overview":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-base leading-relaxed",children:"QECTOR Decoder v3 is a Python library for quantum error correction (QEC) decoding. v1.0.1 is the current stable release (v1.0.0, August 2026, was the first): it provides 17 decoder configurations and helpers integrated into a high-performance compiled Rust core with a plug-and-play Python API."}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/10 rounded-xl flex items-start gap-3",children:[e.jsx(E,{className:"w-5 h-5 text-cyan-300 shrink-0 mt-0.5"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Ecosystem Native:"})," Swappable backend design. You can easily plug QECTOR into Stim, PyMatching, Sinter, and Qiskit pipelines with minimal API modifications: Sinter decoders plug in with ",e.jsx("code",{className:"text-cyan-300",children:"custom_decoders=qector_sinter_decoders()"}),", and a qiskit-qec plugin is registered."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-lg mb-3",children:"Key Highlights"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"v1.0.0: First Stable Release"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"API stability tiers, Relay-BP, CS-OSD(lambda, w), colour-code cluster_bposd, qector CLI + qector-doctor, Sinter/qiskit entry points, pymatching shim."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Validate on Your Hardware"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"Hardware, GPU, and measurement results are device-local. Use the package diagnostic and declared measurement workflow instead of treating site text as performance evidence."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Multi-Algorithm Diversity"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"17 decoder configurations from exact Blossom MWPM to Belief-Matching, BP-OSD, and GPU batch decoding."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Compiled Rust Core"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"A compiled Rust core with a Python API. Exact memory, latency, and throughput behavior depends on the selected workload and environment."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Optional GPU Paths"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"GPU paths are optional and environment-dependent. Read the installed release diagnostics before relying on them."})]})]})]})]});case"installation":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR ships as pre-compiled binary wheels on PyPI. Installing requires Python and pip."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Standard Installation"}),e.jsx(c,{code:"pip install qector-decoder-v3",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"System Requirements"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-sm",children:[e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary",children:"3.9, 3.10, 3.11, 3.12, 3.13 (64-bit)"})]}),e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Operating System"}),e.jsx("span",{className:"text-primary",children:"Linux, macOS, Windows (see current PyPI wheel metadata)"})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"GPU Requirements (Optional)"}),e.jsx("span",{className:"text-primary",children:"Optional and environment-dependent; check the installed release diagnostics"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Install Optional Dependencies"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"Install only the extras required by your workflow:"}),e.jsx(c,{code:`# Stim / Sinter / PyMatching ecosystem - pip install "qector-decoder-v3[stim]" - - # Full optional environment - pip install "qector-decoder-v3[all]"`,filename:"terminal",language:"bash"})]})]});case"quickstart":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Below is a minimal package-only example: create a rotated surface code, generate a syndrome, and verify a Blossom correction against the parity-check matrix."}),e.jsx(c,{filename:"surface_code_decode.py",language:"python",code:`import numpy as np -import qector_decoder_v3 as qector - -# Build a small code and inject one bit error. -code = qector.codes.rotated_surface_code(3) -error = np.zeros(code.n_qubits, dtype=np.uint8) -error[4] = 1 -syndrome = code.syndrome(error) - -# Decode with the graphlike Blossom backend. -correction = qector.BlossomDecoder( - code.check_to_qubits, - n_qubits=code.n_qubits, -).decode(syndrome) - -# The syndrome contract is H c = s (mod 2). -matrix = np.asarray(code.parity_check_matrix(), dtype=np.uint8) -assert np.array_equal((matrix @ correction.astype(int)) % 2, syndrome) -print("Syndrome-faithful correction")`})]});case"decoders":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR includes 17 decoder configurations categorized into stable, workload-sensitive, and experimental/research tiers. Choose based on code type and speed/accuracy tradeoffs:"}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse border border-gridline text-left text-sm rounded-xl overflow-hidden",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 font-semibold",children:[e.jsx("th",{className:"p-3",children:"Decoder"}),e.jsx("th",{className:"p-3",children:"Target Code"}),e.jsx("th",{className:"p-3",children:"Speed"}),e.jsx("th",{className:"p-3",children:"Accuracy"}),e.jsx("th",{className:"p-3",children:"Tier"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:[{name:"Blossom (MWPM)",target:"Graphlike CSS / surface",speed:"Workload-dependent",accuracy:"Minimum-weight matching objective",tier:"Stable"},{name:"Belief-Matching",target:"Correlated-noise research",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"BP-OSD",target:"qLDPC, LDPC",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"Union-Find",target:"Large Surface",speed:"Near-linear O(N)",accuracy:"Approximate",tier:"Production"},{name:"GPU Batch",target:"Supported batch workloads",speed:"Runtime-dependent",accuracy:"Validate locally",tier:"Workload-sensitive"},{name:"Hybrid / Cascade",target:"Degenerate, mixed",speed:"Iterative",accuracy:"High",tier:"Research"},{name:"Colour Code",target:"Triangular colour code",speed:"Moderate",accuracy:"Native",tier:"Research"}].map(s=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-semibold text-primary",children:s.name}),e.jsx("td",{className:"p-3 text-secondary",children:s.target}),e.jsx("td",{className:"p-3 text-secondary",children:s.speed}),e.jsx("td",{className:"p-3 text-secondary",children:s.accuracy}),e.jsx("td",{className:"p-3",children:e.jsx("span",{className:`px-2 py-0.5 rounded text-[10px] uppercase font-bold border ${s.tier==="Production"?"bg-green-400/10 text-green-400 border-green-400/20":"bg-gold-400/10 text-gold-400 border-gold-400/20"}`,children:s.tier})})]},s.name))})]})})]});case"measurement":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Hardware-specific measurements are not published on this site. If your project requires a local measurement, record the code, noise model, decoder configuration, seed, shots, environment, and raw artifact."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Environment Diagnostic"}),e.jsx(c,{code:"qector-doctor",filename:"terminal",language:"bash"}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["15-check diagnostic that reports PASS / WARN / FAIL per check and explains WHY a decoder is unavailable on your machine. Full report via ",e.jsx("code",{className:"text-cyan-300",children:"qector-doctor --json"}),"."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Local measurement via qector bench"}),e.jsx("p",{className:"text-secondary text-xs mb-2",children:"Use the command documented by the installed package release. The result is machine- and workload-specific, not a site claim:"}),e.jsx(c,{code:"qector bench --distance 5 --rounds 5 --shots 10000 --decoder blossom --noise 0.001",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Interactive Sandbox CLI"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"This UI is a command-output demonstration only; it does not execute commands or generate benchmark data:"}),e.jsx(B,{})]})]});case"configuration":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Detailed constructor configuration arguments for QECTOR's primary decoders:"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BlossomDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"adaptive_k"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:"`bool` (Default: `True`). Enable union-find matching pre-filtering to minimize match graph sizing."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"timeout"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:"`float` (Default: `None`). Maximum time (in seconds) allowed to resolve a single syndrome."})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BeliefMatchingDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_iters"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:"`int` (Default: `30`). Maximum number of belief propagation iterations. Higher iterations improve syndrome accuracy."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"max_paths"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:"`int` (Default: `10`). Maximum number of alternative paths generated for matching reweighting calculations."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_method"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:'`str` (Default: `"product_sum"`). Choice of BP update method. Options: `"product_sum"`, `"minimum_sum"`.'})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"GpuBatchDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"backend"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:'`str` (Default: `"cuda"`). Choose GPU compilation framework. Options: `"cuda"`, `"opencl"`.'})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"batch_size"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:"`int` (Default: `1000`). Number of parallel syndromes transferred to and calculated in the GPU memory space."})})]})]})]})]});case"troubleshooting":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Solutions for common installation and running issues:"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:e.jsx(d,{children:"Issue: ImportError when importing `qector`"})})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(d,{children:[e.jsx("strong",{children:"Fix:"})," Ensure your Python architecture matches the wheel and reinstall with `python -m pip install --force-reinstall qector-decoder-v3`."]})})]}),e.jsxs("div",{className:"p-4 bg-gold-400/5 border border-gold-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-gold-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: GPU / CUDA is not detected"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(d,{children:[e.jsx("strong",{children:"Fix:"})," Verify drivers by typing `nvidia-smi` in terminal. Ensure CUDA Toolkit 11.8 or higher is installed and environment variable `CUDA_PATH` or `LD_LIBRARY_PATH` points to the CUDA install folder."]})})]}),e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: Out Of Memory (OOM) on GPU batching"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(d,{children:[e.jsx("strong",{children:"Fix:"})," Lower the `batch_size` argument in your `GpuBatchDecoder` instantiation. For exceptionally large code distances (d > 15), prefer the linear-scaling `UnionFindDecoder` which reduces memory demands."]})})]})]})]});case"package-reference":return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl flex items-center justify-between flex-wrap gap-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-bold text-lg",children:"QECTOR Decoder v3: Extended Reference (package only)"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Version: 1.0.1 · PyPI: qector-decoder-v3 · Backend: Rust + PyO3"})]}),e.jsx("a",{href:"/docs/reference.md",target:"_blank",rel:"noopener noreferrer",download:"QECTOR Decoder v3 - Reference (package only).md",className:"btn-cyan text-xs py-2 px-4",children:"Download Reference (.md)"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"1. Installation & Platforms"}),e.jsx(c,{code:`pip install --upgrade "qector-decoder-v3>=1.0.1,<2" -pip install "qector-decoder-v3[stim]" # Stim / Sinter / PyMatching / LDPC ecosystem -pip install "qector-decoder-v3[bench]" # local measurement tools -pip install "qector-decoder-v3[all]" # optional full environment`,language:"bash",filename:"terminal"}),e.jsxs("div",{className:"mt-3 border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary font-mono",children:"3.9 - 3.13"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Platforms"}),e.jsx("span",{className:"text-primary",children:"Linux x86_64 (manylinux), Windows x64, macOS arm64"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License"}),e.jsx("span",{className:"text-primary",children:"Source-available (Free academic / non-commercial)"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Startup Notice"}),e.jsx("span",{className:"text-primary font-mono",children:"Suppressed with QECTOR_SILENT=1"})]}),e.jsxs("div",{className:"p-2.5 flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License Env"}),e.jsx("span",{className:"text-primary font-mono",children:"QECTOR_LICENSE + QECTOR_LICENSE_KEY (Ed25519 token)"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"2. Core Architecture"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1.5 text-secondary text-xs leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Rust Core (compiled extension):"})," Matching, UF, batch CPU/GPU algorithms."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Python Surface:"})," Clean API, Stim/Sinter compat, belief/GNN layers, licensing."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Zero-copy NumPy:"})," Direct memory access; GIL-free parallel decoding paths."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Version Symbol:"})," ",e.jsx("code",{className:"text-cyan-300",children:'qector_decoder_v3.__version__ == "1.0.1"'})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"3. Decoder Families & Incidence Rules"}),e.jsxs("p",{className:"text-muted-foreground text-xs mb-3",children:[e.jsx("strong",{className:"text-cyan-300",children:"Graph-like rule (UF family):"})," Every qubit must participate in at most two checks (participation ≤ 2). Matrices violating this raise a clear error (",e.jsx("code",{className:"text-red-400",children:"-32602"}),"). ",e.jsx("code",{className:"text-cyan-300",children:"BlossomDecoder"}),", ",e.jsx("code",{className:"text-cyan-300",children:"SparseBlossomDecoder"}),", and ",e.jsx("code",{className:"text-cyan-300",children:"BpOsdDecoder"})," accept general hyperedge codes."]}),e.jsx("div",{className:"overflow-x-auto rounded-xl",children:e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 font-bold border-b border-gridline bg-surface/30",children:[e.jsx("span",{children:"Class"}),e.jsx("span",{children:"Best for"}),e.jsx("span",{children:"Status"}),e.jsx("span",{children:"Graph-like?"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"UnionFindDecoder"}),e.jsx("span",{children:"Low-latency approximate"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes (participation ≤ 2)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"FastUnionFindDecoder"}),e.jsx("span",{children:"Faster UF hot path"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BlossomDecoder"}),e.jsx("span",{children:"Exact MWPM"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"SparseBlossomDecoder"}),e.jsx("span",{children:"Near-optimal matching"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BeliefMatching"}),e.jsx("span",{children:"Correlated-noise accuracy"}),e.jsx("span",{children:"Research"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BpOsdDecoder"}),e.jsx("span",{children:"LDPC / qLDPC"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BatchDecoder"}),e.jsx("span",{children:"High-throughput CPU batch"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes for UF batch"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"CUDABatchDecoder"}),e.jsx("span",{children:"GPU batch (NVIDIA)"}),e.jsx("span",{children:"Runtime-dependent"}),e.jsx("span",{children:"N/A"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"AutoDecoder"}),e.jsx("span",{children:"7-tier self-debugging fallback"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"N/A"})]})]})})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"4. Code Generators"}),e.jsx(c,{code:`from qector_decoder_v3 import ( - generate_repetition_code_checks, # (checks, n_qubits) - generate_ring_code_checks, # (checks, n_qubits) - generate_surface_code_checks, # surface-code checks -)`,language:"python",filename:"python"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"5. MCP and General-Matrix Workflows"}),e.jsx(c,{code:`# The standalone library MCP server is documented separately. -# Start it from the plugin package with: -python mcp/mcp_server_library.py - -# Initialize and call tools/list before using a tool.`,language:"python",filename:"mcp_server.py"}),e.jsx("p",{className:"text-muted-foreground text-xs mt-2 mb-3",children:"For general matrices, use the decoder family documented for that workload and verify every returned correction against H c = s (mod 2):"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import BlossomDecoder, SparseBlossomDecoder, BpOsdDecoder - -def decode_hyperedge(checks, n_qubits, syndrome, kind="Blossom", **opts): - syn = np.asarray(syndrome, dtype=np.uint8).ravel() - if kind in ("Blossom", "blossom"): - return BlossomDecoder(checks, n_qubits).decode(syn) - if kind in ("SparseBlossom", "sparse_blossom"): - return SparseBlossomDecoder(checks, n_qubits).decode(syn) - if kind.lower() in ("bposd", "bp_osd"): - H = np.zeros((len(checks), n_qubits), dtype=np.uint8) - for i, c in enumerate(checks): - for q in c: H[i, q] ^= 1 - return BpOsdDecoder(H, error_rate=opts.get("error_rate", 0.05)).decode(syn) - raise ValueError(f"unsupported kind: {kind}")`,language:"python",filename:"hyperedge_workaround.py"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"6. Verified Fallback Pattern"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed mb-3",children:"A fallback is safe only when each candidate is checked against the same parity-check matrix. The following pattern uses the stable Union-Find and Blossom classes and fails closed if a candidate is not syndrome-faithful:"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder - -def faithful_decode(check_to_qubits, n_qubits, syndrome): - syndrome = np.asarray(syndrome, dtype=np.uint8).ravel() - matrix = np.zeros((len(check_to_qubits), n_qubits), dtype=np.uint8) - for check, qubits in enumerate(check_to_qubits): - matrix[check, qubits] = 1 - - for decoder_type in (FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder): - try: - correction = np.asarray( - decoder_type(check_to_qubits, n_qubits=n_qubits).decode(syndrome), - dtype=np.uint8, - ) - if np.array_equal((matrix @ correction.astype(int)) % 2, syndrome): - return correction, decoder_type.__name__ - except Exception: - continue - raise RuntimeError("No syndrome-faithful decoder result")`,language:"python",filename:"cascade_decode.py"})]})]});default:return null}};return e.jsxs(e.Fragment,{children:[e.jsx(N,{title:"User Manual · QECTOR",description:"Complete user manual for QECTOR Decoder v3. Installation, configuration, decoder selection, validation, and troubleshooting."}),e.jsx(w,{data:{"@context":"https://schema.org","@type":"HowTo",name:"How to Install and Run QECTOR Decoder v3",description:"Step-by-step instructions to install QECTOR, verify a syndrome-faithful decode, select a decoder, and review evidence boundaries.",step:[{"@type":"HowToStep",name:"Install the package",text:"Run pip install qector-decoder-v3 in your Python terminal to install the Rust core binary wheels."},{"@type":"HowToStep",name:"Verify the installation",text:'Verify the installation with python -c "import qector_decoder_v3 as qd; print(qd.__version__)" and a small syndrome-faithfulness check.'},{"@type":"HowToStep",name:"Review evidence boundaries",text:"Read the v1.0.0 reference manual and record code, noise model, decoder configuration, seed, environment, and artifact metadata before making a local measurement."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"15 backend families powering 17 decoder configurations · GPU Batch · Stim · Sinter · Qiskit"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(I,{text:"User Manual",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Complete guide to QECTOR Decoder v3: installation, decoder selection, local measurements, diagnostics, and ecosystem integration."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsx("div",{className:"max-w-6xl mx-auto",children:e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-4 gap-8",children:[e.jsx("div",{className:"lg:col-span-1",children:e.jsx("nav",{"aria-label":"Manual sections",className:"sticky top-24 space-y-1 bg-surface/10 p-2 rounded-xl border border-gridline/50",children:n.map(s=>e.jsxs("button",{type:"button",onClick:()=>l(s.id),"aria-current":a===s.id?"true":void 0,className:`w-full text-left px-3.5 py-2.5 rounded-lg text-sm font-medium transition-all duration-200 flex items-center gap-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cyan-300 ${a===s.id?"bg-cyan-300/10 text-cyan-300 border border-cyan-300/20":"text-secondary hover:text-primary hover:bg-white/5 border border-transparent"}`,children:[s.icon,s.title]},s.id))})}),e.jsx("div",{className:"lg:col-span-3",children:e.jsxs("div",{className:"card-surface bg-surface/20 min-h-[500px]",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6 text-primary border-b border-gridline pb-4 flex items-center gap-2",children:n.find(s=>s.id===a)?.title.substring(3)}),e.jsx("div",{className:"transition-all duration-300",children:t()})]})})]})})})]})}function T(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.813 15.904 9 21l-.813-5.096L3 15l5.096-.813L9 9l.813 5.096L15 15l-5.187.904Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19.071 4.929a10 10 0 0 0-14.142 0M12 3v3m0 12v3M3 12h3m12 0h3",opacity:"0.5"})]})}function M(a){return e.jsx("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v5.25c0 .621-.504 1.125-1.125 1.125h-2.25A1.125 1.125 0 0 1 3 18.375v-5.25ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v9.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125v-9.75ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v14.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z"})})}function U(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.324.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.43l-1.003.828c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.954.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.43l1.004-.827c.292-.24.437-.613.43-.991a6.936 6.936 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"})]})}export{W as default}; diff --git a/assets/Manual-DV0IXz3U.js b/assets/Manual-DV0IXz3U.js deleted file mode 100644 index 2c1757f4..00000000 --- a/assets/Manual-DV0IXz3U.js +++ /dev/null @@ -1,67 +0,0 @@ -import{r as p,j as e,R as b}from"./vendor-react-BiHfrq0e.js";import{S as N,J as w,C as c}from"./index-CxWP17m6.js";import{T as k,o as _,u as C,I as S,g as q,a as D,C as P,B as R,v as u,i as E}from"./vendor-ui-B0ssGG4c.js";import{N as I}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-gsap-a3sj5zmn.js";function B(){const[a,l]=p.useState(""),[n,t]=p.useState([{text:"QECTOR CLI Terminal Demo (simulation only)",type:"info"},{text:"No command is executed and no external service is contacted.",type:"info"}]),[s,h]=p.useState(!1),g=p.useRef(null),y=()=>{g.current?.scrollIntoView({behavior:"smooth"})};p.useEffect(()=>{y()},[n]);const f=async i=>{const m=i.trim().toLowerCase(),x=[...n,{text:`qector@sandbox:~$ ${i}`,type:"input"}];t(x),l(""),h(!0);const d=r=>new Promise(v=>setTimeout(v,r));m==="help"?(await d(200),t(r=>[...r,{text:"Available commands:",type:"info"},{text:" help - Show this menu",type:"output"},{text:" pip install qector-decoder-v3 - Show the install command",type:"output"},{text:" qector-doctor - Show the diagnostic command",type:"output"},{text:" qector bench -d 5 - Show a local measurement command",type:"output"},{text:" clear - Clear the terminal screen",type:"output"}])):m==="clear"?t([]):m==="pip install qector-decoder-v3"?(await d(300),t(r=>[...r,{text:"Simulation only: no package was downloaded.",type:"output"}]),await d(800),t(r=>[...r,{text:"Simulation only: no package was installed.",type:"output"}]),await d(400),t(r=>[...r,{text:"For a real install, follow the current PyPI and release verification instructions.",type:"output"}]),await d(600),t(r=>[...r,{text:"✓ Demo complete: no network request or filesystem change was made.",type:"success"}])):m==="qector-doctor"?(await d(300),t(r=>[...r,{text:"Simulation only: qector-doctor was not run.",type:"output"}]),await d(500),t(r=>[...r,{text:"Run qector-doctor in your installed environment to obtain real PASS / WARN / FAIL results.",type:"info"}])):m==="qector bench -d 5"||m==="qector bench --distance 5"?(await d(400),t(r=>[...r,{text:"Simulation only: no circuit or measurement was generated.",type:"output"}]),await d(1e3),t(r=>[...r,{text:"Run qector bench on your own declared workload to generate real local evidence.",type:"info"}])):(await d(150),t(r=>[...r,{text:`qector: command not found: ${i}. Type "help" for a list of commands.`,type:"info"}])),h(!1)},j=i=>{i.preventDefault(),!(!a.trim()||s)&&f(a)};return e.jsxs("div",{className:"flex flex-col border border-gridline bg-void/90 rounded-2xl overflow-hidden shadow-2xl",children:[e.jsxs("div",{className:"flex items-center justify-between px-4 py-3 bg-surface border-b border-gridline",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(k,{className:"w-4 h-4 text-cyan-300"}),e.jsx("span",{className:"font-mono text-xs text-secondary font-semibold",children:"interactive-cli.sh"})]}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-red-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-yellow-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-green-500/80"})]})]}),e.jsxs("div",{className:"p-5 font-mono text-xs h-72 overflow-y-auto space-y-2 select-text custom-scrollbar",children:[n.map((i,m)=>{let x="text-secondary";return i.type==="input"?x="text-cyan-300 font-semibold":i.type==="success"?x="text-green-400 font-semibold":i.type==="info"&&(x="text-gold-400"),e.jsx("div",{className:`${x} leading-relaxed whitespace-pre-wrap`,children:i.text},m)}),s&&e.jsxs("div",{className:"text-muted-foreground animate-pulse flex items-center gap-1",children:[e.jsx("span",{className:"w-1.5 h-3 bg-muted-foreground inline-block animate-caret"}),e.jsx("span",{children:"Executing..."})]}),e.jsx("div",{ref:g})]}),e.jsxs("form",{onSubmit:j,className:"flex items-center border-t border-gridline bg-surface/50 px-4 py-2",children:[e.jsx(_,{className:"w-4 h-4 text-cyan-300 shrink-0"}),e.jsx("input",{type:"text",value:a,onChange:i=>l(i.target.value),disabled:s,className:"flex-1 bg-transparent border-none outline-none font-mono text-xs text-cyan-300 px-2 py-1 placeholder-cyan-300/60 focus-visible:ring-2 focus-visible:ring-cyan-300",placeholder:'Type a command (e.g. "help", "pip install qector-decoder-v3")...',"aria-label":"Terminal input"}),e.jsx("button",{type:"submit",disabled:s||!a.trim(),className:"p-1 text-cyan-300 hover:text-cyan-200 disabled:text-muted/20 transition-colors","aria-label":"Run command",children:e.jsx(C,{className:"w-3.5 h-3.5 fill-current"})})]})]})}const L="font-mono text-[11px] bg-cyan-300/10 text-cyan-200 px-1 py-0.5 rounded border border-cyan-300/20";function O(a,l){return a.replace(/\\"/g,'"').split(/(`[^`\n]+`)/g).map((n,t)=>n.length>2&&n.startsWith("`")&&n.endsWith("`")?e.jsx("code",{className:L,children:n.slice(1,-1)},`${l}-${t}`):n)}function o({children:a}){const l=(n,t)=>typeof n=="string"?e.jsx(b.Fragment,{children:O(n,t)},t):Array.isArray(n)?e.jsx(e.Fragment,{children:n.map((s,h)=>e.jsx(b.Fragment,{children:l(s,`${t}-${h}`)},`${t}-${h}`))}):n;return e.jsx(e.Fragment,{children:l(a,"imd")})}function $(){const[a,l]=p.useState("overview"),n=[{id:"overview",title:"1. Overview",icon:e.jsx(S,{className:"w-4 h-4"})},{id:"installation",title:"2. Installation",icon:e.jsx(q,{className:"w-4 h-4"})},{id:"quickstart",title:"3. Quick Start",icon:e.jsx(T,{className:"w-4 h-4"})},{id:"decoders",title:"4. Choosing a Decoder",icon:e.jsx(D,{className:"w-4 h-4"})},{id:"measurement",title:"5. Local Measurements",icon:e.jsx(M,{className:"w-4 h-4"})},{id:"configuration",title:"6. Configuration",icon:e.jsx(U,{className:"w-4 h-4"})},{id:"troubleshooting",title:"7. Troubleshooting",icon:e.jsx(P,{className:"w-4 h-4"})},{id:"package-reference",title:"8. Package Reference (v1.0.1)",icon:e.jsx(R,{className:"w-4 h-4"})}],t=()=>{switch(a){case"overview":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-base leading-relaxed",children:"QECTOR Decoder v3 is a Python library for quantum error correction (QEC) decoding. v1.0.1 is the current stable release (v1.0.0, August 2026, was the first): it provides 17 decoder configurations and helpers integrated into a high-performance compiled Rust core with a plug-and-play Python API."}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/10 rounded-xl flex items-start gap-3",children:[e.jsx(E,{className:"w-5 h-5 text-cyan-300 shrink-0 mt-0.5"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Ecosystem Native:"})," Swappable backend design. You can easily plug QECTOR into Stim, PyMatching, Sinter, and Qiskit pipelines with minimal API modifications: Sinter decoders plug in with ",e.jsx("code",{className:"text-cyan-300",children:"custom_decoders=qector_sinter_decoders()"}),", and a qiskit-qec plugin is registered."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-lg mb-3",children:"Key Highlights"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"v1.0.0: First Stable Release"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"API stability tiers, Relay-BP, CS-OSD(lambda, w), colour-code cluster_bposd, qector CLI + qector-doctor, Sinter/qiskit entry points, pymatching shim."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Validate on Your Hardware"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"Hardware, GPU, and measurement results are device-local. Use the package diagnostic and declared measurement workflow instead of treating site text as performance evidence."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Multi-Algorithm Diversity"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"17 decoder configurations from exact Blossom MWPM to Belief-Matching, BP-OSD, and GPU batch decoding."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Compiled Rust Core"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"A compiled Rust core with a Python API. Exact memory, latency, and throughput behavior depends on the selected workload and environment."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Optional GPU Paths"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"GPU paths are optional and environment-dependent. Read the installed release diagnostics before relying on them."})]})]})]})]});case"installation":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR ships as pre-compiled binary wheels on PyPI. Installing requires Python and pip."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Standard Installation"}),e.jsx(c,{code:"pip install qector-decoder-v3",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"System Requirements"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-sm",children:[e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary",children:"3.9, 3.10, 3.11, 3.12, 3.13 (64-bit)"})]}),e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Operating System"}),e.jsx("span",{className:"text-primary",children:"Linux, macOS, Windows (see current PyPI wheel metadata)"})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"GPU Requirements (Optional)"}),e.jsx("span",{className:"text-primary",children:"Optional and environment-dependent; check the installed release diagnostics"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Install Optional Dependencies"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"Install only the extras required by your workflow:"}),e.jsx(c,{code:`# Stim / Sinter / PyMatching ecosystem - pip install "qector-decoder-v3[stim]" - - # Full optional environment - pip install "qector-decoder-v3[all]"`,filename:"terminal",language:"bash"})]})]});case"quickstart":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Below is a minimal package-only example: create a rotated surface code, generate a syndrome, and verify a Blossom correction against the parity-check matrix."}),e.jsx(c,{filename:"surface_code_decode.py",language:"python",code:`import numpy as np -import qector_decoder_v3 as qector - -# Build a small code and inject one bit error. -code = qector.codes.rotated_surface_code(3) -error = np.zeros(code.n_qubits, dtype=np.uint8) -error[4] = 1 -syndrome = code.syndrome(error) - -# Decode with the graphlike Blossom backend. -correction = qector.BlossomDecoder( - code.check_to_qubits, - n_qubits=code.n_qubits, -).decode(syndrome) - -# The syndrome contract is H c = s (mod 2). -matrix = np.asarray(code.parity_check_matrix(), dtype=np.uint8) -assert np.array_equal((matrix @ correction.astype(int)) % 2, syndrome) -print("Syndrome-faithful correction")`})]});case"decoders":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR includes 17 decoder configurations categorized into stable, workload-sensitive, and experimental/research tiers. Choose based on code type and speed/accuracy tradeoffs:"}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse border border-gridline text-left text-sm rounded-xl overflow-hidden",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 font-semibold",children:[e.jsx("th",{className:"p-3",children:"Decoder"}),e.jsx("th",{className:"p-3",children:"Target Code"}),e.jsx("th",{className:"p-3",children:"Speed"}),e.jsx("th",{className:"p-3",children:"Accuracy"}),e.jsx("th",{className:"p-3",children:"Tier"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:[{name:"Blossom (MWPM)",target:"Graphlike CSS / surface",speed:"Workload-dependent",accuracy:"Minimum-weight matching objective",tier:"Stable"},{name:"Belief-Matching",target:"Correlated-noise research",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"BP-OSD",target:"qLDPC, LDPC",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"Union-Find",target:"Large Surface",speed:"Near-linear O(N)",accuracy:"Approximate",tier:"Production"},{name:"GPU Batch",target:"Supported batch workloads",speed:"Runtime-dependent",accuracy:"Validate locally",tier:"Workload-sensitive"},{name:"Hybrid / Cascade",target:"Degenerate, mixed",speed:"Iterative",accuracy:"High",tier:"Research"},{name:"Colour Code",target:"Triangular colour code",speed:"Moderate",accuracy:"Native",tier:"Research"}].map(s=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-semibold text-primary",children:s.name}),e.jsx("td",{className:"p-3 text-secondary",children:s.target}),e.jsx("td",{className:"p-3 text-secondary",children:s.speed}),e.jsx("td",{className:"p-3 text-secondary",children:s.accuracy}),e.jsx("td",{className:"p-3",children:e.jsx("span",{className:`px-2 py-0.5 rounded text-[10px] uppercase font-bold border ${s.tier==="Production"?"bg-green-400/10 text-green-400 border-green-400/20":"bg-gold-400/10 text-gold-400 border-gold-400/20"}`,children:s.tier})})]},s.name))})]})})]});case"measurement":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Hardware-specific measurements are not published on this site. If your project requires a local measurement, record the code, noise model, decoder configuration, seed, shots, environment, and raw artifact."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Environment Diagnostic"}),e.jsx(c,{code:"qector-doctor",filename:"terminal",language:"bash"}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["15-check diagnostic that reports PASS / WARN / FAIL per check and explains WHY a decoder is unavailable on your machine. Full report via ",e.jsx("code",{className:"text-cyan-300",children:"qector-doctor --json"}),"."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Local measurement via qector bench"}),e.jsx("p",{className:"text-secondary text-xs mb-2",children:"Use the command documented by the installed package release. The result is machine- and workload-specific, not a site claim:"}),e.jsx(c,{code:"qector bench --distance 5 --rounds 5 --shots 10000 --decoder blossom --noise 0.001",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Interactive Sandbox CLI"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"This UI is a command-output demonstration only; it does not execute commands or generate benchmark data:"}),e.jsx(B,{})]})]});case"configuration":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Detailed constructor configuration arguments for QECTOR's primary decoders:"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BlossomDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"adaptive_k"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`bool` (Default: `True`). Enable union-find matching pre-filtering to minimize match graph sizing."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"timeout"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`float` (Default: `None`). Maximum time (in seconds) allowed to resolve a single syndrome."})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BeliefMatchingDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_iters"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `30`). Maximum number of belief propagation iterations. Higher iterations improve syndrome accuracy."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"max_paths"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `10`). Maximum number of alternative paths generated for matching reweighting calculations."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_method"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:'`str` (Default: `"product_sum"`). Choice of BP update method. Options: `"product_sum"`, `"minimum_sum"`.'})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"GpuBatchDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"backend"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:'`str` (Default: `"cuda"`). Choose GPU compilation framework. Options: `"cuda"`, `"opencl"`.'})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"batch_size"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `1000`). Number of parallel syndromes transferred to and calculated in the GPU memory space."})})]})]})]})]});case"troubleshooting":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Solutions for common installation and running issues:"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:e.jsx(o,{children:"Issue: ImportError when importing `qector`"})})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Ensure your Python architecture matches the wheel and reinstall with `python -m pip install --force-reinstall qector-decoder-v3`."]})})]}),e.jsxs("div",{className:"p-4 bg-gold-400/5 border border-gold-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-gold-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: GPU / CUDA is not detected"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Verify drivers by typing `nvidia-smi` in terminal. Ensure CUDA Toolkit 11.8 or higher is installed and environment variable `CUDA_PATH` or `LD_LIBRARY_PATH` points to the CUDA install folder."]})})]}),e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: Out Of Memory (OOM) on GPU batching"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Lower the `batch_size` argument in your `GpuBatchDecoder` instantiation. For exceptionally large code distances (d > 15), prefer the linear-scaling `UnionFindDecoder` which reduces memory demands."]})})]})]})]});case"package-reference":return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl flex items-center justify-between flex-wrap gap-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-bold text-lg",children:"QECTOR Decoder v3: Extended Reference (package only)"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Version: 1.0.1 · PyPI: qector-decoder-v3 · Backend: Rust + PyO3"})]}),e.jsx("a",{href:"/docs/reference.md",target:"_blank",rel:"noopener noreferrer",download:"QECTOR Decoder v3 - Reference (package only).md",className:"btn-cyan text-xs py-2 px-4",children:"Download Reference (.md)"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"1. Installation & Platforms"}),e.jsx(c,{code:`pip install --upgrade "qector-decoder-v3>=1.0,<2" -pip install "qector-decoder-v3[stim]" # Stim / Sinter / PyMatching / LDPC ecosystem -pip install "qector-decoder-v3[bench]" # local measurement tools -pip install "qector-decoder-v3[all]" # optional full environment`,language:"bash",filename:"terminal"}),e.jsxs("div",{className:"mt-3 border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary font-mono",children:"3.9 - 3.13"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Platforms"}),e.jsx("span",{className:"text-primary",children:"Linux x86_64 (manylinux), Windows x64, macOS arm64"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License"}),e.jsx("span",{className:"text-primary",children:"Source-available (Free academic / non-commercial)"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Startup Notice"}),e.jsx("span",{className:"text-primary font-mono",children:"Suppressed with QECTOR_SILENT=1"})]}),e.jsxs("div",{className:"p-2.5 flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License Env"}),e.jsx("span",{className:"text-primary font-mono",children:"QECTOR_LICENSE + QECTOR_LICENSE_KEY (Ed25519 token)"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"2. Core Architecture"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1.5 text-secondary text-xs leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Rust Core (compiled extension):"})," Matching, UF, batch CPU/GPU algorithms."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Python Surface:"})," Clean API, Stim/Sinter compat, belief/GNN layers, licensing."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Zero-copy NumPy:"})," Direct memory access; GIL-free parallel decoding paths."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Version Symbol:"})," ",e.jsx("code",{className:"text-cyan-300",children:'qector_decoder_v3.__version__ == "1.0.1"'})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"3. Decoder Families & Incidence Rules"}),e.jsxs("p",{className:"text-muted-foreground text-xs mb-3",children:[e.jsx("strong",{className:"text-cyan-300",children:"Graph-like rule (UF family):"})," Every qubit must participate in at most two checks (participation ≤ 2). Matrices violating this raise a clear error (",e.jsx("code",{className:"text-red-400",children:"-32602"}),"). ",e.jsx("code",{className:"text-cyan-300",children:"BlossomDecoder"}),", ",e.jsx("code",{className:"text-cyan-300",children:"SparseBlossomDecoder"}),", and ",e.jsx("code",{className:"text-cyan-300",children:"BpOsdDecoder"})," accept general hyperedge codes."]}),e.jsx("div",{className:"overflow-x-auto rounded-xl",children:e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 font-bold border-b border-gridline bg-surface/30",children:[e.jsx("span",{children:"Class"}),e.jsx("span",{children:"Best for"}),e.jsx("span",{children:"Status"}),e.jsx("span",{children:"Graph-like?"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"UnionFindDecoder"}),e.jsx("span",{children:"Low-latency approximate"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes (participation ≤ 2)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"FastUnionFindDecoder"}),e.jsx("span",{children:"Faster UF hot path"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BlossomDecoder"}),e.jsx("span",{children:"Exact MWPM"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"SparseBlossomDecoder"}),e.jsx("span",{children:"Near-optimal matching"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BeliefMatching"}),e.jsx("span",{children:"Correlated-noise accuracy"}),e.jsx("span",{children:"Research"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BpOsdDecoder"}),e.jsx("span",{children:"LDPC / qLDPC"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BatchDecoder"}),e.jsx("span",{children:"High-throughput CPU batch"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes for UF batch"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"CUDABatchDecoder"}),e.jsx("span",{children:"GPU batch (NVIDIA)"}),e.jsx("span",{children:"Runtime-dependent"}),e.jsx("span",{children:"N/A"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"AutoDecoder"}),e.jsx("span",{children:"7-tier self-debugging fallback"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"N/A"})]})]})})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"4. Code Generators"}),e.jsx(c,{code:`from qector_decoder_v3 import ( - generate_repetition_code_checks, # (checks, n_qubits) - generate_ring_code_checks, # (checks, n_qubits) - generate_surface_code_checks, # surface-code checks -)`,language:"python",filename:"python"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"5. MCP and General-Matrix Workflows"}),e.jsx(c,{code:`# The standalone library MCP server is documented separately. -# Start it from the plugin package with: -python mcp/mcp_server_library.py - -# Initialize and call tools/list before using a tool.`,language:"python",filename:"mcp_server.py"}),e.jsx("p",{className:"text-muted-foreground text-xs mt-2 mb-3",children:"For general matrices, use the decoder family documented for that workload and verify every returned correction against H c = s (mod 2):"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import BlossomDecoder, SparseBlossomDecoder, BpOsdDecoder - -def decode_hyperedge(checks, n_qubits, syndrome, kind="Blossom", **opts): - syn = np.asarray(syndrome, dtype=np.uint8).ravel() - if kind in ("Blossom", "blossom"): - return BlossomDecoder(checks, n_qubits).decode(syn) - if kind in ("SparseBlossom", "sparse_blossom"): - return SparseBlossomDecoder(checks, n_qubits).decode(syn) - if kind.lower() in ("bposd", "bp_osd"): - H = np.zeros((len(checks), n_qubits), dtype=np.uint8) - for i, c in enumerate(checks): - for q in c: H[i, q] ^= 1 - return BpOsdDecoder(H, error_rate=opts.get("error_rate", 0.05)).decode(syn) - raise ValueError(f"unsupported kind: {kind}")`,language:"python",filename:"hyperedge_workaround.py"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"6. Verified Fallback Pattern"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed mb-3",children:"A fallback is safe only when each candidate is checked against the same parity-check matrix. The following pattern uses the stable Union-Find and Blossom classes and fails closed if a candidate is not syndrome-faithful:"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder - -def faithful_decode(check_to_qubits, n_qubits, syndrome): - syndrome = np.asarray(syndrome, dtype=np.uint8).ravel() - matrix = np.zeros((len(check_to_qubits), n_qubits), dtype=np.uint8) - for check, qubits in enumerate(check_to_qubits): - matrix[check, qubits] = 1 - - for decoder_type in (FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder): - try: - correction = np.asarray( - decoder_type(check_to_qubits, n_qubits=n_qubits).decode(syndrome), - dtype=np.uint8, - ) - if np.array_equal((matrix @ correction.astype(int)) % 2, syndrome): - return correction, decoder_type.__name__ - except Exception: - continue - raise RuntimeError("No syndrome-faithful decoder result")`,language:"python",filename:"cascade_decode.py"})]})]});default:return null}};return e.jsxs(e.Fragment,{children:[e.jsx(N,{title:"User Manual · QECTOR",description:"Complete user manual for QECTOR Decoder v3. Installation, configuration, decoder selection, validation, and troubleshooting."}),e.jsx(w,{data:{"@context":"https://schema.org","@type":"HowTo",name:"How to Install and Run QECTOR Decoder v3",description:"Step-by-step instructions to install QECTOR, verify a syndrome-faithful decode, select a decoder, and review evidence boundaries.",step:[{"@type":"HowToStep",name:"Install the package",text:"Run pip install qector-decoder-v3 in your Python terminal to install the Rust core binary wheels."},{"@type":"HowToStep",name:"Verify the installation",text:'Verify the installation with python -c "import qector_decoder_v3 as qd; print(qd.__version__)" and a small syndrome-faithfulness check.'},{"@type":"HowToStep",name:"Review evidence boundaries",text:"Read the v1.0.0 reference manual and record code, noise model, decoder configuration, seed, environment, and artifact metadata before making a local measurement."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"15 backend families powering 17 decoder configurations · GPU Batch · Stim · Sinter · Qiskit"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(I,{text:"User Manual",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Complete guide to QECTOR Decoder v3: installation, decoder selection, local measurements, diagnostics, and ecosystem integration."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsx("div",{className:"max-w-6xl mx-auto",children:e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-4 gap-8",children:[e.jsx("div",{className:"lg:col-span-1",children:e.jsx("nav",{"aria-label":"Manual sections",className:"sticky top-24 space-y-1 bg-surface/10 p-2 rounded-xl border border-gridline/50",children:n.map(s=>e.jsxs("button",{type:"button",onClick:()=>l(s.id),"aria-current":a===s.id?"true":void 0,className:`w-full text-left px-3.5 py-2.5 rounded-lg text-sm font-medium transition-all duration-200 flex items-center gap-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cyan-300 ${a===s.id?"bg-cyan-300/10 text-cyan-300 border border-cyan-300/20":"text-secondary hover:text-primary hover:bg-white/5 border border-transparent"}`,children:[s.icon,s.title]},s.id))})}),e.jsx("div",{className:"lg:col-span-3",children:e.jsxs("div",{className:"card-surface bg-surface/20 min-h-[500px]",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6 text-primary border-b border-gridline pb-4 flex items-center gap-2",children:n.find(s=>s.id===a)?.title.substring(3)}),e.jsx("div",{className:"transition-all duration-300",children:t()})]})})]})})})]})}function T(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.813 15.904 9 21l-.813-5.096L3 15l5.096-.813L9 9l.813 5.096L15 15l-5.187.904Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19.071 4.929a10 10 0 0 0-14.142 0M12 3v3m0 12v3M3 12h3m12 0h3",opacity:"0.5"})]})}function M(a){return e.jsx("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v5.25c0 .621-.504 1.125-1.125 1.125h-2.25A1.125 1.125 0 0 1 3 18.375v-5.25ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v9.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125v-9.75ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v14.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z"})})}function U(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.324.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.43l-1.003.828c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.954.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.43l1.004-.827c.292-.24.437-.613.43-.991a6.936 6.936 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"})]})}export{$ as default}; diff --git a/assets/Manual-DVeToNSz.js b/assets/Manual-DVeToNSz.js deleted file mode 100644 index bf5ff659..00000000 --- a/assets/Manual-DVeToNSz.js +++ /dev/null @@ -1,67 +0,0 @@ -import{r as p,j as e,R as b}from"./vendor-react-BiHfrq0e.js";import{S as N,J as w,C as c}from"./index-abfjMTlQ.js";import{T as k,o as _,u as C,I as S,g as q,a as D,C as P,B as R,v as u,i as E}from"./vendor-ui-B0ssGG4c.js";import{N as I}from"./NeuralReveal-D-EQoOl2.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-gsap-a3sj5zmn.js";function B(){const[a,l]=p.useState(""),[n,t]=p.useState([{text:"QECTOR CLI Terminal Demo (simulation only)",type:"info"},{text:"No command is executed and no external service is contacted.",type:"info"}]),[s,h]=p.useState(!1),g=p.useRef(null),y=()=>{g.current?.scrollIntoView({behavior:"smooth"})};p.useEffect(()=>{y()},[n]);const f=async i=>{const m=i.trim().toLowerCase(),x=[...n,{text:`qector@sandbox:~$ ${i}`,type:"input"}];t(x),l(""),h(!0);const d=r=>new Promise(v=>setTimeout(v,r));m==="help"?(await d(200),t(r=>[...r,{text:"Available commands:",type:"info"},{text:" help - Show this menu",type:"output"},{text:" pip install qector-decoder-v3 - Show the install command",type:"output"},{text:" qector-doctor - Show the diagnostic command",type:"output"},{text:" qector bench -d 5 - Show a local measurement command",type:"output"},{text:" clear - Clear the terminal screen",type:"output"}])):m==="clear"?t([]):m==="pip install qector-decoder-v3"?(await d(300),t(r=>[...r,{text:"Simulation only: no package was downloaded.",type:"output"}]),await d(800),t(r=>[...r,{text:"Simulation only: no package was installed.",type:"output"}]),await d(400),t(r=>[...r,{text:"For a real install, follow the current PyPI and release verification instructions.",type:"output"}]),await d(600),t(r=>[...r,{text:"✓ Demo complete: no network request or filesystem change was made.",type:"success"}])):m==="qector-doctor"?(await d(300),t(r=>[...r,{text:"Simulation only: qector-doctor was not run.",type:"output"}]),await d(500),t(r=>[...r,{text:"Run qector-doctor in your installed environment to obtain real PASS / WARN / FAIL results.",type:"info"}])):m==="qector bench -d 5"||m==="qector bench --distance 5"?(await d(400),t(r=>[...r,{text:"Simulation only: no circuit or measurement was generated.",type:"output"}]),await d(1e3),t(r=>[...r,{text:"Run qector bench on your own declared workload to generate real local evidence.",type:"info"}])):(await d(150),t(r=>[...r,{text:`qector: command not found: ${i}. Type "help" for a list of commands.`,type:"info"}])),h(!1)},j=i=>{i.preventDefault(),!(!a.trim()||s)&&f(a)};return e.jsxs("div",{className:"flex flex-col border border-gridline bg-void/90 rounded-2xl overflow-hidden shadow-2xl",children:[e.jsxs("div",{className:"flex items-center justify-between px-4 py-3 bg-surface border-b border-gridline",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(k,{className:"w-4 h-4 text-cyan-300"}),e.jsx("span",{className:"font-mono text-xs text-secondary font-semibold",children:"interactive-cli.sh"})]}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-red-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-yellow-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-green-500/80"})]})]}),e.jsxs("div",{className:"p-5 font-mono text-xs h-72 overflow-y-auto space-y-2 select-text custom-scrollbar",children:[n.map((i,m)=>{let x="text-secondary";return i.type==="input"?x="text-cyan-300 font-semibold":i.type==="success"?x="text-green-400 font-semibold":i.type==="info"&&(x="text-gold-400"),e.jsx("div",{className:`${x} leading-relaxed whitespace-pre-wrap`,children:i.text},m)}),s&&e.jsxs("div",{className:"text-muted-foreground animate-pulse flex items-center gap-1",children:[e.jsx("span",{className:"w-1.5 h-3 bg-muted-foreground inline-block animate-caret"}),e.jsx("span",{children:"Executing..."})]}),e.jsx("div",{ref:g})]}),e.jsxs("form",{onSubmit:j,className:"flex items-center border-t border-gridline bg-surface/50 px-4 py-2",children:[e.jsx(_,{className:"w-4 h-4 text-cyan-300 shrink-0"}),e.jsx("input",{type:"text",value:a,onChange:i=>l(i.target.value),disabled:s,className:"flex-1 bg-transparent border-none outline-none font-mono text-xs text-cyan-300 px-2 py-1 placeholder-cyan-300/60 focus-visible:ring-2 focus-visible:ring-cyan-300",placeholder:'Type a command (e.g. "help", "pip install qector-decoder-v3")...',"aria-label":"Terminal input"}),e.jsx("button",{type:"submit",disabled:s||!a.trim(),className:"p-1 text-cyan-300 hover:text-cyan-200 disabled:text-muted/20 transition-colors","aria-label":"Run command",children:e.jsx(C,{className:"w-3.5 h-3.5 fill-current"})})]})]})}const L="font-mono text-[11px] bg-cyan-300/10 text-cyan-200 px-1 py-0.5 rounded border border-cyan-300/20";function O(a,l){return a.replace(/\\"/g,'"').split(/(`[^`\n]+`)/g).map((n,t)=>n.length>2&&n.startsWith("`")&&n.endsWith("`")?e.jsx("code",{className:L,children:n.slice(1,-1)},`${l}-${t}`):n)}function o({children:a}){const l=(n,t)=>typeof n=="string"?e.jsx(b.Fragment,{children:O(n,t)},t):Array.isArray(n)?e.jsx(e.Fragment,{children:n.map((s,h)=>e.jsx(b.Fragment,{children:l(s,`${t}-${h}`)},`${t}-${h}`))}):n;return e.jsx(e.Fragment,{children:l(a,"imd")})}function $(){const[a,l]=p.useState("overview"),n=[{id:"overview",title:"1. Overview",icon:e.jsx(S,{className:"w-4 h-4"})},{id:"installation",title:"2. Installation",icon:e.jsx(q,{className:"w-4 h-4"})},{id:"quickstart",title:"3. Quick Start",icon:e.jsx(T,{className:"w-4 h-4"})},{id:"decoders",title:"4. Choosing a Decoder",icon:e.jsx(D,{className:"w-4 h-4"})},{id:"measurement",title:"5. Local Measurements",icon:e.jsx(M,{className:"w-4 h-4"})},{id:"configuration",title:"6. Configuration",icon:e.jsx(U,{className:"w-4 h-4"})},{id:"troubleshooting",title:"7. Troubleshooting",icon:e.jsx(P,{className:"w-4 h-4"})},{id:"package-reference",title:"8. Package Reference (v1.0.1)",icon:e.jsx(R,{className:"w-4 h-4"})}],t=()=>{switch(a){case"overview":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-base leading-relaxed",children:"QECTOR Decoder v3 is a Python library for quantum error correction (QEC) decoding. v1.0.1 is the current stable release (v1.0.0, August 2026, was the first): it provides 17 decoder configurations and helpers integrated into a high-performance compiled Rust core with a plug-and-play Python API."}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/10 rounded-xl flex items-start gap-3",children:[e.jsx(E,{className:"w-5 h-5 text-cyan-300 shrink-0 mt-0.5"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Ecosystem Native:"})," Swappable backend design. You can easily plug QECTOR into Stim, PyMatching, Sinter, and Qiskit pipelines with minimal API modifications: Sinter decoders plug in with ",e.jsx("code",{className:"text-cyan-300",children:"custom_decoders=qector_sinter_decoders()"}),", and a qiskit-qec plugin is registered."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-lg mb-3",children:"Key Highlights"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"v1.0.0: First Stable Release"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"API stability tiers, Relay-BP, CS-OSD(lambda, w), colour-code cluster_bposd, qector CLI + qector-doctor, Sinter/qiskit entry points, pymatching shim."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Validate on Your Hardware"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"Hardware, GPU, and measurement results are device-local. Use the package diagnostic and declared measurement workflow instead of treating site text as performance evidence."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Multi-Algorithm Diversity"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"17 decoder configurations from exact Blossom MWPM to Belief-Matching, BP-OSD, and GPU batch decoding."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Compiled Rust Core"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"A compiled Rust core with a Python API. Exact memory, latency, and throughput behavior depends on the selected workload and environment."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Optional GPU Paths"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"GPU paths are optional and environment-dependent. Read the installed release diagnostics before relying on them."})]})]})]})]});case"installation":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR ships as pre-compiled binary wheels on PyPI. Installing requires Python and pip."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Standard Installation"}),e.jsx(c,{code:"pip install qector-decoder-v3",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"System Requirements"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-sm",children:[e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary",children:"3.9, 3.10, 3.11, 3.12, 3.13 (64-bit)"})]}),e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Operating System"}),e.jsx("span",{className:"text-primary",children:"Linux, macOS, Windows (see current PyPI wheel metadata)"})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"GPU Requirements (Optional)"}),e.jsx("span",{className:"text-primary",children:"Optional and environment-dependent; check the installed release diagnostics"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Install Optional Dependencies"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"Install only the extras required by your workflow:"}),e.jsx(c,{code:`# Stim / Sinter / PyMatching ecosystem - pip install "qector-decoder-v3[stim]" - - # Full optional environment - pip install "qector-decoder-v3[all]"`,filename:"terminal",language:"bash"})]})]});case"quickstart":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Below is a minimal package-only example: create a rotated surface code, generate a syndrome, and verify a Blossom correction against the parity-check matrix."}),e.jsx(c,{filename:"surface_code_decode.py",language:"python",code:`import numpy as np -import qector_decoder_v3 as qector - -# Build a small code and inject one bit error. -code = qector.codes.rotated_surface_code(3) -error = np.zeros(code.n_qubits, dtype=np.uint8) -error[4] = 1 -syndrome = code.syndrome(error) - -# Decode with the graphlike Blossom backend. -correction = qector.BlossomDecoder( - code.check_to_qubits, - n_qubits=code.n_qubits, -).decode(syndrome) - -# The syndrome contract is H c = s (mod 2). -matrix = np.asarray(code.parity_check_matrix(), dtype=np.uint8) -assert np.array_equal((matrix @ correction.astype(int)) % 2, syndrome) -print("Syndrome-faithful correction")`})]});case"decoders":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR includes 17 decoder configurations categorized into stable, workload-sensitive, and experimental/research tiers. Choose based on code type and speed/accuracy tradeoffs:"}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse border border-gridline text-left text-sm rounded-xl overflow-hidden",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 font-semibold",children:[e.jsx("th",{className:"p-3",children:"Decoder"}),e.jsx("th",{className:"p-3",children:"Target Code"}),e.jsx("th",{className:"p-3",children:"Speed"}),e.jsx("th",{className:"p-3",children:"Accuracy"}),e.jsx("th",{className:"p-3",children:"Tier"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:[{name:"Blossom (MWPM)",target:"Graphlike CSS / surface",speed:"Workload-dependent",accuracy:"Minimum-weight matching objective",tier:"Stable"},{name:"Belief-Matching",target:"Correlated-noise research",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"BP-OSD",target:"qLDPC, LDPC",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"Union-Find",target:"Large Surface",speed:"Near-linear O(N)",accuracy:"Approximate",tier:"Production"},{name:"GPU Batch",target:"Supported batch workloads",speed:"Runtime-dependent",accuracy:"Validate locally",tier:"Workload-sensitive"},{name:"Hybrid / Cascade",target:"Degenerate, mixed",speed:"Iterative",accuracy:"High",tier:"Research"},{name:"Colour Code",target:"Triangular colour code",speed:"Moderate",accuracy:"Native",tier:"Research"}].map(s=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-semibold text-primary",children:s.name}),e.jsx("td",{className:"p-3 text-secondary",children:s.target}),e.jsx("td",{className:"p-3 text-secondary",children:s.speed}),e.jsx("td",{className:"p-3 text-secondary",children:s.accuracy}),e.jsx("td",{className:"p-3",children:e.jsx("span",{className:`px-2 py-0.5 rounded text-[10px] uppercase font-bold border ${s.tier==="Production"?"bg-green-400/10 text-green-400 border-green-400/20":"bg-gold-400/10 text-gold-400 border-gold-400/20"}`,children:s.tier})})]},s.name))})]})})]});case"measurement":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Hardware-specific measurements are not published on this site. If your project requires a local measurement, record the code, noise model, decoder configuration, seed, shots, environment, and raw artifact."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Environment Diagnostic"}),e.jsx(c,{code:"qector-doctor",filename:"terminal",language:"bash"}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["15-check diagnostic that reports PASS / WARN / FAIL per check and explains WHY a decoder is unavailable on your machine. Full report via ",e.jsx("code",{className:"text-cyan-300",children:"qector-doctor --json"}),"."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Local measurement via qector bench"}),e.jsx("p",{className:"text-secondary text-xs mb-2",children:"Use the command documented by the installed package release. The result is machine- and workload-specific, not a site claim:"}),e.jsx(c,{code:"qector bench --distance 5 --rounds 5 --shots 10000 --decoder blossom --noise 0.001",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Interactive Sandbox CLI"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"This UI is a command-output demonstration only; it does not execute commands or generate benchmark data:"}),e.jsx(B,{})]})]});case"configuration":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Detailed constructor configuration arguments for QECTOR's primary decoders:"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BlossomDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"adaptive_k"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`bool` (Default: `True`). Enable union-find matching pre-filtering to minimize match graph sizing."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"timeout"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`float` (Default: `None`). Maximum time (in seconds) allowed to resolve a single syndrome."})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BeliefMatchingDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_iters"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `30`). Maximum number of belief propagation iterations. Higher iterations improve syndrome accuracy."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"max_paths"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `10`). Maximum number of alternative paths generated for matching reweighting calculations."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_method"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:'`str` (Default: `"product_sum"`). Choice of BP update method. Options: `"product_sum"`, `"minimum_sum"`.'})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"GpuBatchDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"backend"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:'`str` (Default: `"cuda"`). Choose GPU compilation framework. Options: `"cuda"`, `"opencl"`.'})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"batch_size"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `1000`). Number of parallel syndromes transferred to and calculated in the GPU memory space."})})]})]})]})]});case"troubleshooting":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Solutions for common installation and running issues:"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:e.jsx(o,{children:"Issue: ImportError when importing `qector`"})})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Ensure your Python architecture matches the wheel and reinstall with `python -m pip install --force-reinstall qector-decoder-v3`."]})})]}),e.jsxs("div",{className:"p-4 bg-gold-400/5 border border-gold-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-gold-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: GPU / CUDA is not detected"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Verify drivers by typing `nvidia-smi` in terminal. Ensure CUDA Toolkit 11.8 or higher is installed and environment variable `CUDA_PATH` or `LD_LIBRARY_PATH` points to the CUDA install folder."]})})]}),e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: Out Of Memory (OOM) on GPU batching"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Lower the `batch_size` argument in your `GpuBatchDecoder` instantiation. For exceptionally large code distances (d > 15), prefer the linear-scaling `UnionFindDecoder` which reduces memory demands."]})})]})]})]});case"package-reference":return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl flex items-center justify-between flex-wrap gap-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-bold text-lg",children:"QECTOR Decoder v3: Extended Reference (package only)"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Version: 1.0.1 · PyPI: qector-decoder-v3 · Backend: Rust + PyO3"})]}),e.jsx("a",{href:"/docs/reference.md",target:"_blank",rel:"noopener noreferrer",download:"QECTOR Decoder v3 - Reference (package only).md",className:"btn-cyan text-xs py-2 px-4",children:"Download Reference (.md)"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"1. Installation & Platforms"}),e.jsx(c,{code:`pip install --upgrade "qector-decoder-v3>=1.0.1,<2" -pip install "qector-decoder-v3[stim]" # Stim / Sinter / PyMatching / LDPC ecosystem -pip install "qector-decoder-v3[bench]" # local measurement tools -pip install "qector-decoder-v3[all]" # optional full environment`,language:"bash",filename:"terminal"}),e.jsxs("div",{className:"mt-3 border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary font-mono",children:"3.9 - 3.13"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Platforms"}),e.jsx("span",{className:"text-primary",children:"Linux x86_64 (manylinux), Windows x64, macOS arm64"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License"}),e.jsx("span",{className:"text-primary",children:"Source-available (Free academic / non-commercial)"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Startup Notice"}),e.jsx("span",{className:"text-primary font-mono",children:"Suppressed with QECTOR_SILENT=1"})]}),e.jsxs("div",{className:"p-2.5 flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License Env"}),e.jsx("span",{className:"text-primary font-mono",children:"QECTOR_LICENSE + QECTOR_LICENSE_KEY (Ed25519 token)"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"2. Core Architecture"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1.5 text-secondary text-xs leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Rust Core (compiled extension):"})," Matching, UF, batch CPU/GPU algorithms."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Python Surface:"})," Clean API, Stim/Sinter compat, belief/GNN layers, licensing."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Zero-copy NumPy:"})," Direct memory access; GIL-free parallel decoding paths."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Version Symbol:"})," ",e.jsx("code",{className:"text-cyan-300",children:'qector_decoder_v3.__version__ == "1.0.1"'})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"3. Decoder Families & Incidence Rules"}),e.jsxs("p",{className:"text-muted-foreground text-xs mb-3",children:[e.jsx("strong",{className:"text-cyan-300",children:"Graph-like rule (UF family):"})," Every qubit must participate in at most two checks (participation ≤ 2). Matrices violating this raise a clear error (",e.jsx("code",{className:"text-red-400",children:"-32602"}),"). ",e.jsx("code",{className:"text-cyan-300",children:"BlossomDecoder"}),", ",e.jsx("code",{className:"text-cyan-300",children:"SparseBlossomDecoder"}),", and ",e.jsx("code",{className:"text-cyan-300",children:"BpOsdDecoder"})," accept general hyperedge codes."]}),e.jsx("div",{className:"overflow-x-auto rounded-xl",children:e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 font-bold border-b border-gridline bg-surface/30",children:[e.jsx("span",{children:"Class"}),e.jsx("span",{children:"Best for"}),e.jsx("span",{children:"Status"}),e.jsx("span",{children:"Graph-like?"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"UnionFindDecoder"}),e.jsx("span",{children:"Low-latency approximate"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes (participation ≤ 2)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"FastUnionFindDecoder"}),e.jsx("span",{children:"Faster UF hot path"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BlossomDecoder"}),e.jsx("span",{children:"Exact MWPM"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"SparseBlossomDecoder"}),e.jsx("span",{children:"Near-optimal matching"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BeliefMatching"}),e.jsx("span",{children:"Correlated-noise accuracy"}),e.jsx("span",{children:"Research"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BpOsdDecoder"}),e.jsx("span",{children:"LDPC / qLDPC"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BatchDecoder"}),e.jsx("span",{children:"High-throughput CPU batch"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes for UF batch"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"CUDABatchDecoder"}),e.jsx("span",{children:"GPU batch (NVIDIA)"}),e.jsx("span",{children:"Runtime-dependent"}),e.jsx("span",{children:"N/A"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"AutoDecoder"}),e.jsx("span",{children:"7-tier self-debugging fallback"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"N/A"})]})]})})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"4. Code Generators"}),e.jsx(c,{code:`from qector_decoder_v3 import ( - generate_repetition_code_checks, # (checks, n_qubits) - generate_ring_code_checks, # (checks, n_qubits) - generate_surface_code_checks, # surface-code checks -)`,language:"python",filename:"python"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"5. MCP and General-Matrix Workflows"}),e.jsx(c,{code:`# The standalone library MCP server is documented separately. -# Start it from the plugin package with: -python mcp/mcp_server_library.py - -# Initialize and call tools/list before using a tool.`,language:"python",filename:"mcp_server.py"}),e.jsx("p",{className:"text-muted-foreground text-xs mt-2 mb-3",children:"For general matrices, use the decoder family documented for that workload and verify every returned correction against H c = s (mod 2):"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import BlossomDecoder, SparseBlossomDecoder, BpOsdDecoder - -def decode_hyperedge(checks, n_qubits, syndrome, kind="Blossom", **opts): - syn = np.asarray(syndrome, dtype=np.uint8).ravel() - if kind in ("Blossom", "blossom"): - return BlossomDecoder(checks, n_qubits).decode(syn) - if kind in ("SparseBlossom", "sparse_blossom"): - return SparseBlossomDecoder(checks, n_qubits).decode(syn) - if kind.lower() in ("bposd", "bp_osd"): - H = np.zeros((len(checks), n_qubits), dtype=np.uint8) - for i, c in enumerate(checks): - for q in c: H[i, q] ^= 1 - return BpOsdDecoder(H, error_rate=opts.get("error_rate", 0.05)).decode(syn) - raise ValueError(f"unsupported kind: {kind}")`,language:"python",filename:"hyperedge_workaround.py"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"6. Verified Fallback Pattern"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed mb-3",children:"A fallback is safe only when each candidate is checked against the same parity-check matrix. The following pattern uses the stable Union-Find and Blossom classes and fails closed if a candidate is not syndrome-faithful:"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder - -def faithful_decode(check_to_qubits, n_qubits, syndrome): - syndrome = np.asarray(syndrome, dtype=np.uint8).ravel() - matrix = np.zeros((len(check_to_qubits), n_qubits), dtype=np.uint8) - for check, qubits in enumerate(check_to_qubits): - matrix[check, qubits] = 1 - - for decoder_type in (FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder): - try: - correction = np.asarray( - decoder_type(check_to_qubits, n_qubits=n_qubits).decode(syndrome), - dtype=np.uint8, - ) - if np.array_equal((matrix @ correction.astype(int)) % 2, syndrome): - return correction, decoder_type.__name__ - except Exception: - continue - raise RuntimeError("No syndrome-faithful decoder result")`,language:"python",filename:"cascade_decode.py"})]})]});default:return null}};return e.jsxs(e.Fragment,{children:[e.jsx(N,{title:"User Manual · QECTOR",description:"Complete user manual for QECTOR Decoder v3. Installation, configuration, decoder selection, validation, and troubleshooting."}),e.jsx(w,{data:{"@context":"https://schema.org","@type":"HowTo",name:"How to Install and Run QECTOR Decoder v3",description:"Step-by-step instructions to install QECTOR, verify a syndrome-faithful decode, select a decoder, and review evidence boundaries.",step:[{"@type":"HowToStep",name:"Install the package",text:"Run pip install qector-decoder-v3 in your Python terminal to install the Rust core binary wheels."},{"@type":"HowToStep",name:"Verify the installation",text:'Verify the installation with python -c "import qector_decoder_v3 as qd; print(qd.__version__)" and a small syndrome-faithfulness check.'},{"@type":"HowToStep",name:"Review evidence boundaries",text:"Read the v1.0.0 reference manual and record code, noise model, decoder configuration, seed, environment, and artifact metadata before making a local measurement."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"15 backend families powering 17 decoder configurations · GPU Batch · Stim · Sinter · Qiskit"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(I,{text:"User Manual",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Complete guide to QECTOR Decoder v3: installation, decoder selection, local measurements, diagnostics, and ecosystem integration."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsx("div",{className:"max-w-6xl mx-auto",children:e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-4 gap-8",children:[e.jsx("div",{className:"lg:col-span-1",children:e.jsx("nav",{"aria-label":"Manual sections",className:"sticky top-24 space-y-1 bg-surface/10 p-2 rounded-xl border border-gridline/50",children:n.map(s=>e.jsxs("button",{type:"button",onClick:()=>l(s.id),"aria-current":a===s.id?"true":void 0,className:`w-full text-left px-3.5 py-2.5 rounded-lg text-sm font-medium transition-all duration-200 flex items-center gap-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cyan-300 ${a===s.id?"bg-cyan-300/10 text-cyan-300 border border-cyan-300/20":"text-secondary hover:text-primary hover:bg-white/5 border border-transparent"}`,children:[s.icon,s.title]},s.id))})}),e.jsx("div",{className:"lg:col-span-3",children:e.jsxs("div",{className:"card-surface bg-surface/20 min-h-[500px]",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6 text-primary border-b border-gridline pb-4 flex items-center gap-2",children:n.find(s=>s.id===a)?.title.substring(3)}),e.jsx("div",{className:"transition-all duration-300",children:t()})]})})]})})})]})}function T(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.813 15.904 9 21l-.813-5.096L3 15l5.096-.813L9 9l.813 5.096L15 15l-5.187.904Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19.071 4.929a10 10 0 0 0-14.142 0M12 3v3m0 12v3M3 12h3m12 0h3",opacity:"0.5"})]})}function M(a){return e.jsx("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v5.25c0 .621-.504 1.125-1.125 1.125h-2.25A1.125 1.125 0 0 1 3 18.375v-5.25ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v9.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125v-9.75ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v14.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z"})})}function U(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.324.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.43l-1.003.828c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.954.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.43l1.004-.827c.292-.24.437-.613.43-.991a6.936 6.936 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"})]})}export{$ as default}; diff --git a/assets/Manual-DcMDTO2e.js b/assets/Manual-DcMDTO2e.js deleted file mode 100644 index b56a2c3a..00000000 --- a/assets/Manual-DcMDTO2e.js +++ /dev/null @@ -1,67 +0,0 @@ -import{r as p,j as e,R as b}from"./vendor-react-BiHfrq0e.js";import{S as N,J as w,C as c}from"./index-DRAXObZB.js";import{T as k,o as _,u as C,I as S,g as q,a as D,C as P,B as R,v as u,i as E}from"./vendor-ui-B0ssGG4c.js";import{N as I}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-gsap-a3sj5zmn.js";function B(){const[a,l]=p.useState(""),[n,t]=p.useState([{text:"QECTOR CLI Terminal Demo (simulation only)",type:"info"},{text:"No command is executed and no external service is contacted.",type:"info"}]),[s,h]=p.useState(!1),g=p.useRef(null),y=()=>{g.current?.scrollIntoView({behavior:"smooth"})};p.useEffect(()=>{y()},[n]);const f=async i=>{const m=i.trim().toLowerCase(),x=[...n,{text:`qector@sandbox:~$ ${i}`,type:"input"}];t(x),l(""),h(!0);const d=r=>new Promise(v=>setTimeout(v,r));m==="help"?(await d(200),t(r=>[...r,{text:"Available commands:",type:"info"},{text:" help - Show this menu",type:"output"},{text:" pip install qector-decoder-v3 - Show the install command",type:"output"},{text:" qector-doctor - Show the diagnostic command",type:"output"},{text:" qector bench -d 5 - Show a local measurement command",type:"output"},{text:" clear - Clear the terminal screen",type:"output"}])):m==="clear"?t([]):m==="pip install qector-decoder-v3"?(await d(300),t(r=>[...r,{text:"Simulation only: no package was downloaded.",type:"output"}]),await d(800),t(r=>[...r,{text:"Simulation only: no package was installed.",type:"output"}]),await d(400),t(r=>[...r,{text:"For a real install, follow the current PyPI and release verification instructions.",type:"output"}]),await d(600),t(r=>[...r,{text:"✓ Demo complete: no network request or filesystem change was made.",type:"success"}])):m==="qector-doctor"?(await d(300),t(r=>[...r,{text:"Simulation only: qector-doctor was not run.",type:"output"}]),await d(500),t(r=>[...r,{text:"Run qector-doctor in your installed environment to obtain real PASS / WARN / FAIL results.",type:"info"}])):m==="qector bench -d 5"||m==="qector bench --distance 5"?(await d(400),t(r=>[...r,{text:"Simulation only: no circuit or measurement was generated.",type:"output"}]),await d(1e3),t(r=>[...r,{text:"Run qector bench on your own declared workload to generate real local evidence.",type:"info"}])):(await d(150),t(r=>[...r,{text:`qector: command not found: ${i}. Type "help" for a list of commands.`,type:"info"}])),h(!1)},j=i=>{i.preventDefault(),!(!a.trim()||s)&&f(a)};return e.jsxs("div",{className:"flex flex-col border border-gridline bg-void/90 rounded-2xl overflow-hidden shadow-2xl",children:[e.jsxs("div",{className:"flex items-center justify-between px-4 py-3 bg-surface border-b border-gridline",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(k,{className:"w-4 h-4 text-cyan-300"}),e.jsx("span",{className:"font-mono text-xs text-secondary font-semibold",children:"interactive-cli.sh"})]}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-red-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-yellow-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-green-500/80"})]})]}),e.jsxs("div",{className:"p-5 font-mono text-xs h-72 overflow-y-auto space-y-2 select-text custom-scrollbar",children:[n.map((i,m)=>{let x="text-secondary";return i.type==="input"?x="text-cyan-300 font-semibold":i.type==="success"?x="text-green-400 font-semibold":i.type==="info"&&(x="text-gold-400"),e.jsx("div",{className:`${x} leading-relaxed whitespace-pre-wrap`,children:i.text},m)}),s&&e.jsxs("div",{className:"text-muted-foreground animate-pulse flex items-center gap-1",children:[e.jsx("span",{className:"w-1.5 h-3 bg-muted-foreground inline-block animate-caret"}),e.jsx("span",{children:"Executing..."})]}),e.jsx("div",{ref:g})]}),e.jsxs("form",{onSubmit:j,className:"flex items-center border-t border-gridline bg-surface/50 px-4 py-2",children:[e.jsx(_,{className:"w-4 h-4 text-cyan-300 shrink-0"}),e.jsx("input",{type:"text",value:a,onChange:i=>l(i.target.value),disabled:s,className:"flex-1 bg-transparent border-none outline-none font-mono text-xs text-cyan-300 px-2 py-1 placeholder-cyan-300/60 focus-visible:ring-2 focus-visible:ring-cyan-300",placeholder:'Type a command (e.g. "help", "pip install qector-decoder-v3")...',"aria-label":"Terminal input"}),e.jsx("button",{type:"submit",disabled:s||!a.trim(),className:"p-1 text-cyan-300 hover:text-cyan-200 disabled:text-muted/20 transition-colors","aria-label":"Run command",children:e.jsx(C,{className:"w-3.5 h-3.5 fill-current"})})]})]})}const L="font-mono text-[11px] bg-cyan-300/10 text-cyan-200 px-1 py-0.5 rounded border border-cyan-300/20";function O(a,l){return a.replace(/\\"/g,'"').split(/(`[^`\n]+`)/g).map((n,t)=>n.length>2&&n.startsWith("`")&&n.endsWith("`")?e.jsx("code",{className:L,children:n.slice(1,-1)},`${l}-${t}`):n)}function o({children:a}){const l=(n,t)=>typeof n=="string"?e.jsx(b.Fragment,{children:O(n,t)},t):Array.isArray(n)?e.jsx(e.Fragment,{children:n.map((s,h)=>e.jsx(b.Fragment,{children:l(s,`${t}-${h}`)},`${t}-${h}`))}):n;return e.jsx(e.Fragment,{children:l(a,"imd")})}function $(){const[a,l]=p.useState("overview"),n=[{id:"overview",title:"1. Overview",icon:e.jsx(S,{className:"w-4 h-4"})},{id:"installation",title:"2. Installation",icon:e.jsx(q,{className:"w-4 h-4"})},{id:"quickstart",title:"3. Quick Start",icon:e.jsx(T,{className:"w-4 h-4"})},{id:"decoders",title:"4. Choosing a Decoder",icon:e.jsx(D,{className:"w-4 h-4"})},{id:"measurement",title:"5. Local Measurements",icon:e.jsx(M,{className:"w-4 h-4"})},{id:"configuration",title:"6. Configuration",icon:e.jsx(U,{className:"w-4 h-4"})},{id:"troubleshooting",title:"7. Troubleshooting",icon:e.jsx(P,{className:"w-4 h-4"})},{id:"package-reference",title:"8. Package Reference (v1.0.0)",icon:e.jsx(R,{className:"w-4 h-4"})}],t=()=>{switch(a){case"overview":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-base leading-relaxed",children:"QECTOR Decoder v3 is a Python library for quantum error correction (QEC) decoding. v1.0.0 is the first stable release: it provides 17 decoder configurations and helpers integrated into a high-performance compiled Rust core with a plug-and-play Python API."}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/10 rounded-xl flex items-start gap-3",children:[e.jsx(E,{className:"w-5 h-5 text-cyan-300 shrink-0 mt-0.5"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Ecosystem Native:"})," Swappable backend design. You can easily plug QECTOR into Stim, PyMatching, Sinter, and Qiskit pipelines with minimal API modifications: v1.0.0 registers Sinter and qiskit-qec entry points so ",e.jsx("code",{className:"text-cyan-300",children:"sinter.collect()"})," works with no ",e.jsx("code",{className:"text-cyan-300",children:"custom_decoders="}),"."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-lg mb-3",children:"Key Highlights"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"v1.0.0: First Stable Release"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"API stability tiers, Relay-BP, CS-OSD(lambda, w), colour-code cluster_bposd, qector CLI + qector-doctor, Sinter/qiskit entry points, pymatching shim."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Validate on Your Hardware"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"Hardware, GPU, and measurement results are device-local. Use the package diagnostic and declared measurement workflow instead of treating site text as performance evidence."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Multi-Algorithm Diversity"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"17 decoder configurations from exact Blossom MWPM to Belief-Matching, BP-OSD, and GPU batch decoding."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Compiled Rust Core"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"A compiled Rust core with a Python API. Exact memory, latency, and throughput behavior depends on the selected workload and environment."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Optional GPU Paths"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"GPU paths are optional and environment-dependent. Read the installed release diagnostics before relying on them."})]})]})]})]});case"installation":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR ships as pre-compiled binary wheels on PyPI. Installing requires Python and pip."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Standard Installation"}),e.jsx(c,{code:"pip install qector-decoder-v3",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"System Requirements"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-sm",children:[e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary",children:"3.9, 3.10, 3.11, 3.12, 3.13 (64-bit)"})]}),e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Operating System"}),e.jsx("span",{className:"text-primary",children:"Linux, macOS, Windows (see current PyPI wheel metadata)"})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"GPU Requirements (Optional)"}),e.jsx("span",{className:"text-primary",children:"Optional and environment-dependent; check the installed release diagnostics"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Install Optional Dependencies"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"Install only the extras required by your workflow:"}),e.jsx(c,{code:`# Stim / Sinter / PyMatching ecosystem - pip install "qector-decoder-v3[stim]" - - # Full optional environment - pip install "qector-decoder-v3[all]"`,filename:"terminal",language:"bash"})]})]});case"quickstart":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Below is a minimal package-only example: create a rotated surface code, generate a syndrome, and verify a Blossom correction against the parity-check matrix."}),e.jsx(c,{filename:"surface_code_decode.py",language:"python",code:`import numpy as np -import qector_decoder_v3 as qector - -# Build a small code and inject one bit error. -code = qector.codes.rotated_surface_code(3) -error = np.zeros(code.n_qubits, dtype=np.uint8) -error[4] = 1 -syndrome = code.syndrome(error) - -# Decode with the graphlike Blossom backend. -correction = qector.BlossomDecoder( - code.check_to_qubits, - n_qubits=code.n_qubits, -).decode(syndrome) - -# The syndrome contract is H c = s (mod 2). -matrix = np.asarray(code.parity_check_matrix(), dtype=np.uint8) -assert np.array_equal((matrix @ correction.astype(int)) % 2, syndrome) -print("Syndrome-faithful correction")`})]});case"decoders":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR includes 17 decoder configurations categorized into stable, workload-sensitive, and experimental/research tiers. Choose based on code type and speed/accuracy tradeoffs:"}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse border border-gridline text-left text-sm rounded-xl overflow-hidden",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 font-semibold",children:[e.jsx("th",{className:"p-3",children:"Decoder"}),e.jsx("th",{className:"p-3",children:"Target Code"}),e.jsx("th",{className:"p-3",children:"Speed"}),e.jsx("th",{className:"p-3",children:"Accuracy"}),e.jsx("th",{className:"p-3",children:"Tier"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:[{name:"Blossom (MWPM)",target:"Graphlike CSS / surface",speed:"Workload-dependent",accuracy:"Minimum-weight matching objective",tier:"Stable"},{name:"Belief-Matching",target:"Correlated-noise research",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"BP-OSD",target:"qLDPC, LDPC",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"Union-Find",target:"Large Surface",speed:"Near-linear O(N)",accuracy:"Approximate",tier:"Production"},{name:"GPU Batch",target:"Supported batch workloads",speed:"Runtime-dependent",accuracy:"Validate locally",tier:"Workload-sensitive"},{name:"Hybrid / Cascade",target:"Degenerate, mixed",speed:"Iterative",accuracy:"High",tier:"Research"},{name:"Colour Code",target:"Triangular colour code",speed:"Moderate",accuracy:"Native",tier:"Research"}].map(s=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-semibold text-primary",children:s.name}),e.jsx("td",{className:"p-3 text-secondary",children:s.target}),e.jsx("td",{className:"p-3 text-secondary",children:s.speed}),e.jsx("td",{className:"p-3 text-secondary",children:s.accuracy}),e.jsx("td",{className:"p-3",children:e.jsx("span",{className:`px-2 py-0.5 rounded text-[10px] uppercase font-bold border ${s.tier==="Production"?"bg-green-400/10 text-green-400 border-green-400/20":"bg-gold-400/10 text-gold-400 border-gold-400/20"}`,children:s.tier})})]},s.name))})]})})]});case"measurement":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Hardware-specific measurements are not published on this site. If your project requires a local measurement, record the code, noise model, decoder configuration, seed, shots, environment, and raw artifact."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Environment Diagnostic"}),e.jsx(c,{code:"qector-doctor",filename:"terminal",language:"bash"}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["15-check diagnostic that reports PASS / WARN / FAIL per check and explains WHY a decoder is unavailable on your machine. Full report via ",e.jsx("code",{className:"text-cyan-300",children:"qector-doctor --json"}),"."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Local measurement via qector bench"}),e.jsx("p",{className:"text-secondary text-xs mb-2",children:"Use the command documented by the installed package release. The result is machine- and workload-specific, not a site claim:"}),e.jsx(c,{code:"qector bench --distance 5 --rounds 5 --shots 10000 --decoder blossom --noise 0.001",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Interactive Sandbox CLI"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"This UI is a command-output demonstration only; it does not execute commands or generate benchmark data:"}),e.jsx(B,{})]})]});case"configuration":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Detailed constructor configuration arguments for QECTOR's primary decoders:"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BlossomDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"adaptive_k"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`bool` (Default: `True`). Enable union-find matching pre-filtering to minimize match graph sizing."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"timeout"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`float` (Default: `None`). Maximum time (in seconds) allowed to resolve a single syndrome."})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BeliefMatchingDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_iters"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `30`). Maximum number of belief propagation iterations. Higher iterations improve syndrome accuracy."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"max_paths"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `10`). Maximum number of alternative paths generated for matching reweighting calculations."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_method"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:'`str` (Default: `"product_sum"`). Choice of BP update method. Options: `"product_sum"`, `"minimum_sum"`.'})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"GpuBatchDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"backend"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:'`str` (Default: `"cuda"`). Choose GPU compilation framework. Options: `"cuda"`, `"opencl"`.'})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"batch_size"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `1000`). Number of parallel syndromes transferred to and calculated in the GPU memory space."})})]})]})]})]});case"troubleshooting":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Solutions for common installation and running issues:"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:e.jsx(o,{children:"Issue: ImportError when importing `qector`"})})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Ensure your Python architecture matches the wheel and reinstall with `python -m pip install --force-reinstall qector-decoder-v3`."]})})]}),e.jsxs("div",{className:"p-4 bg-gold-400/5 border border-gold-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-gold-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: GPU / CUDA is not detected"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Verify drivers by typing `nvidia-smi` in terminal. Ensure CUDA Toolkit 11.8 or higher is installed and environment variable `CUDA_PATH` or `LD_LIBRARY_PATH` points to the CUDA install folder."]})})]}),e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: Out Of Memory (OOM) on GPU batching"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Lower the `batch_size` argument in your `GpuBatchDecoder` instantiation. For exceptionally large code distances (d > 15), prefer the linear-scaling `UnionFindDecoder` which reduces memory demands."]})})]})]})]});case"package-reference":return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl flex items-center justify-between flex-wrap gap-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-bold text-lg",children:"QECTOR Decoder v3: Extended Reference (package only)"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Version: 1.0.0 · PyPI: qector-decoder-v3 · Backend: Rust + PyO3"})]}),e.jsx("a",{href:"/docs/reference.md",target:"_blank",rel:"noopener noreferrer",download:"QECTOR Decoder v3 - Reference (package only).md",className:"btn-cyan text-xs py-2 px-4",children:"Download Reference (.md)"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"1. Installation & Platforms"}),e.jsx(c,{code:`pip install --upgrade "qector-decoder-v3>=1.0,<2" -pip install "qector-decoder-v3[stim]" # Stim / Sinter / PyMatching / LDPC ecosystem -pip install "qector-decoder-v3[bench]" # local measurement tools -pip install "qector-decoder-v3[all]" # optional full environment`,language:"bash",filename:"terminal"}),e.jsxs("div",{className:"mt-3 border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary font-mono",children:"3.9 - 3.13"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Platforms"}),e.jsx("span",{className:"text-primary",children:"Linux x86_64 (manylinux), Windows x64, macOS arm64"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License"}),e.jsx("span",{className:"text-primary",children:"Source-available (Free academic / non-commercial)"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Startup Notice"}),e.jsx("span",{className:"text-primary font-mono",children:"Suppressed with QECTOR_SILENT=1"})]}),e.jsxs("div",{className:"p-2.5 flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License Env"}),e.jsx("span",{className:"text-primary font-mono",children:"QECTOR_LICENSE + QECTOR_LICENSE_KEY (Ed25519 token)"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"2. Core Architecture"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1.5 text-secondary text-xs leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Rust Core (compiled extension):"})," Matching, UF, batch CPU/GPU algorithms."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Python Surface:"})," Clean API, Stim/Sinter compat, belief/GNN layers, licensing."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Zero-copy NumPy:"})," Direct memory access; GIL-free parallel decoding paths."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Version Symbol:"})," ",e.jsx("code",{className:"text-cyan-300",children:'qector_decoder_v3.__version__ == "1.0.0"'})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"3. Decoder Families & Incidence Rules"}),e.jsxs("p",{className:"text-muted-foreground text-xs mb-3",children:[e.jsx("strong",{className:"text-cyan-300",children:"Graph-like rule (UF family):"})," Every qubit must participate in at most two checks (participation ≤ 2). Matrices violating this raise a clear error (",e.jsx("code",{className:"text-red-400",children:"-32602"}),"). ",e.jsx("code",{className:"text-cyan-300",children:"BlossomDecoder"}),", ",e.jsx("code",{className:"text-cyan-300",children:"SparseBlossomDecoder"}),", and ",e.jsx("code",{className:"text-cyan-300",children:"BpOsdDecoder"})," accept general hyperedge codes."]}),e.jsx("div",{className:"overflow-x-auto rounded-xl",children:e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 font-bold border-b border-gridline bg-surface/30",children:[e.jsx("span",{children:"Class"}),e.jsx("span",{children:"Best for"}),e.jsx("span",{children:"Status"}),e.jsx("span",{children:"Graph-like?"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"UnionFindDecoder"}),e.jsx("span",{children:"Low-latency approximate"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes (participation ≤ 2)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"FastUnionFindDecoder"}),e.jsx("span",{children:"Faster UF hot path"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BlossomDecoder"}),e.jsx("span",{children:"Exact MWPM"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"SparseBlossomDecoder"}),e.jsx("span",{children:"Near-optimal matching"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BeliefMatching"}),e.jsx("span",{children:"Correlated-noise accuracy"}),e.jsx("span",{children:"Research"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BpOsdDecoder"}),e.jsx("span",{children:"LDPC / qLDPC"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BatchDecoder"}),e.jsx("span",{children:"High-throughput CPU batch"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes for UF batch"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"CUDABatchDecoder"}),e.jsx("span",{children:"GPU batch (NVIDIA)"}),e.jsx("span",{children:"Runtime-dependent"}),e.jsx("span",{children:"N/A"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"AutoDecoder"}),e.jsx("span",{children:"7-tier self-debugging fallback"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"N/A"})]})]})})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"4. Code Generators"}),e.jsx(c,{code:`from qector_decoder_v3 import ( - generate_repetition_code_checks, # (checks, n_qubits) - generate_ring_code_checks, # (checks, n_qubits) - generate_surface_code_checks, # surface-code checks -)`,language:"python",filename:"python"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"5. MCP and General-Matrix Workflows"}),e.jsx(c,{code:`# The standalone library MCP server is documented separately. -# Start it from the plugin package with: -python mcp/mcp_server_library.py - -# Initialize and call tools/list before using a tool.`,language:"python",filename:"mcp_server.py"}),e.jsx("p",{className:"text-muted-foreground text-xs mt-2 mb-3",children:"For general matrices, use the decoder family documented for that workload and verify every returned correction against H c = s (mod 2):"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import BlossomDecoder, SparseBlossomDecoder, BpOsdDecoder - -def decode_hyperedge(checks, n_qubits, syndrome, kind="Blossom", **opts): - syn = np.asarray(syndrome, dtype=np.uint8).ravel() - if kind in ("Blossom", "blossom"): - return BlossomDecoder(checks, n_qubits).decode(syn) - if kind in ("SparseBlossom", "sparse_blossom"): - return SparseBlossomDecoder(checks, n_qubits).decode(syn) - if kind.lower() in ("bposd", "bp_osd"): - H = np.zeros((len(checks), n_qubits), dtype=np.uint8) - for i, c in enumerate(checks): - for q in c: H[i, q] ^= 1 - return BpOsdDecoder(H, error_rate=opts.get("error_rate", 0.05)).decode(syn) - raise ValueError(f"unsupported kind: {kind}")`,language:"python",filename:"hyperedge_workaround.py"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"6. Verified Fallback Pattern"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed mb-3",children:"A fallback is safe only when each candidate is checked against the same parity-check matrix. The following pattern uses the stable Union-Find and Blossom classes and fails closed if a candidate is not syndrome-faithful:"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder - -def faithful_decode(check_to_qubits, n_qubits, syndrome): - syndrome = np.asarray(syndrome, dtype=np.uint8).ravel() - matrix = np.zeros((len(check_to_qubits), n_qubits), dtype=np.uint8) - for check, qubits in enumerate(check_to_qubits): - matrix[check, qubits] = 1 - - for decoder_type in (FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder): - try: - correction = np.asarray( - decoder_type(check_to_qubits, n_qubits=n_qubits).decode(syndrome), - dtype=np.uint8, - ) - if np.array_equal((matrix @ correction.astype(int)) % 2, syndrome): - return correction, decoder_type.__name__ - except Exception: - continue - raise RuntimeError("No syndrome-faithful decoder result")`,language:"python",filename:"cascade_decode.py"})]})]});default:return null}};return e.jsxs(e.Fragment,{children:[e.jsx(N,{title:"User Manual · QECTOR",description:"Complete user manual for QECTOR Decoder v3. Installation, configuration, decoder selection, validation, and troubleshooting."}),e.jsx(w,{data:{"@context":"https://schema.org","@type":"HowTo",name:"How to Install and Run QECTOR Decoder v3",description:"Step-by-step instructions to install QECTOR, verify a syndrome-faithful decode, select a decoder, and review evidence boundaries.",step:[{"@type":"HowToStep",name:"Install the package",text:"Run pip install qector-decoder-v3 in your Python terminal to install the Rust core binary wheels."},{"@type":"HowToStep",name:"Verify the installation",text:'Verify the installation with python -c "import qector_decoder_v3 as qd; print(qd.__version__)" and a small syndrome-faithfulness check.'},{"@type":"HowToStep",name:"Review evidence boundaries",text:"Read the v1.0.0 reference manual and record code, noise model, decoder configuration, seed, environment, and artifact metadata before making a local measurement."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"15 backend families powering 17 decoder configurations · GPU Batch · Stim · Sinter · Qiskit"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(I,{text:"User Manual",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Complete guide to QECTOR Decoder v3: installation, decoder selection, local measurements, diagnostics, and ecosystem integration."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsx("div",{className:"max-w-6xl mx-auto",children:e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-4 gap-8",children:[e.jsx("div",{className:"lg:col-span-1",children:e.jsx("nav",{"aria-label":"Manual sections",className:"sticky top-24 space-y-1 bg-surface/10 p-2 rounded-xl border border-gridline/50",children:n.map(s=>e.jsxs("button",{type:"button",onClick:()=>l(s.id),"aria-current":a===s.id?"true":void 0,className:`w-full text-left px-3.5 py-2.5 rounded-lg text-sm font-medium transition-all duration-200 flex items-center gap-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cyan-300 ${a===s.id?"bg-cyan-300/10 text-cyan-300 border border-cyan-300/20":"text-secondary hover:text-primary hover:bg-white/5 border border-transparent"}`,children:[s.icon,s.title]},s.id))})}),e.jsx("div",{className:"lg:col-span-3",children:e.jsxs("div",{className:"card-surface bg-surface/20 min-h-[500px]",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6 text-primary border-b border-gridline pb-4 flex items-center gap-2",children:n.find(s=>s.id===a)?.title.substring(3)}),e.jsx("div",{className:"transition-all duration-300",children:t()})]})})]})})})]})}function T(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.813 15.904 9 21l-.813-5.096L3 15l5.096-.813L9 9l.813 5.096L15 15l-5.187.904Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19.071 4.929a10 10 0 0 0-14.142 0M12 3v3m0 12v3M3 12h3m12 0h3",opacity:"0.5"})]})}function M(a){return e.jsx("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v5.25c0 .621-.504 1.125-1.125 1.125h-2.25A1.125 1.125 0 0 1 3 18.375v-5.25ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v9.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125v-9.75ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v14.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z"})})}function U(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.324.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.43l-1.003.828c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.954.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.43l1.004-.827c.292-.24.437-.613.43-.991a6.936 6.936 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"})]})}export{$ as default}; diff --git a/assets/Manual-DhAX5H3m.js b/assets/Manual-DhAX5H3m.js deleted file mode 100644 index 5be31b72..00000000 --- a/assets/Manual-DhAX5H3m.js +++ /dev/null @@ -1,67 +0,0 @@ -import{r as p,j as e,R as b}from"./vendor-react-BiHfrq0e.js";import{S as N,J as w,C as c}from"./index-iVST85F-.js";import{T as k,o as _,u as C,I as S,g as q,a as D,C as P,B as R,v as u,i as E}from"./vendor-ui-B0ssGG4c.js";import{N as I}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-gsap-a3sj5zmn.js";function B(){const[a,l]=p.useState(""),[n,t]=p.useState([{text:"QECTOR CLI Terminal Demo (simulation only)",type:"info"},{text:"No command is executed and no external service is contacted.",type:"info"}]),[s,h]=p.useState(!1),g=p.useRef(null),y=()=>{g.current?.scrollIntoView({behavior:"smooth"})};p.useEffect(()=>{y()},[n]);const f=async i=>{const m=i.trim().toLowerCase(),x=[...n,{text:`qector@sandbox:~$ ${i}`,type:"input"}];t(x),l(""),h(!0);const d=r=>new Promise(v=>setTimeout(v,r));m==="help"?(await d(200),t(r=>[...r,{text:"Available commands:",type:"info"},{text:" help - Show this menu",type:"output"},{text:" pip install qector-decoder-v3 - Show the install command",type:"output"},{text:" qector-doctor - Show the diagnostic command",type:"output"},{text:" qector bench -d 5 - Show a local measurement command",type:"output"},{text:" clear - Clear the terminal screen",type:"output"}])):m==="clear"?t([]):m==="pip install qector-decoder-v3"?(await d(300),t(r=>[...r,{text:"Simulation only: no package was downloaded.",type:"output"}]),await d(800),t(r=>[...r,{text:"Simulation only: no package was installed.",type:"output"}]),await d(400),t(r=>[...r,{text:"For a real install, follow the current PyPI and release verification instructions.",type:"output"}]),await d(600),t(r=>[...r,{text:"✓ Demo complete: no network request or filesystem change was made.",type:"success"}])):m==="qector-doctor"?(await d(300),t(r=>[...r,{text:"Simulation only: qector-doctor was not run.",type:"output"}]),await d(500),t(r=>[...r,{text:"Run qector-doctor in your installed environment to obtain real PASS / WARN / FAIL results.",type:"info"}])):m==="qector bench -d 5"||m==="qector bench --distance 5"?(await d(400),t(r=>[...r,{text:"Simulation only: no circuit or measurement was generated.",type:"output"}]),await d(1e3),t(r=>[...r,{text:"Run qector bench on your own declared workload to generate real local evidence.",type:"info"}])):(await d(150),t(r=>[...r,{text:`qector: command not found: ${i}. Type "help" for a list of commands.`,type:"info"}])),h(!1)},j=i=>{i.preventDefault(),!(!a.trim()||s)&&f(a)};return e.jsxs("div",{className:"flex flex-col border border-gridline bg-void/90 rounded-2xl overflow-hidden shadow-2xl",children:[e.jsxs("div",{className:"flex items-center justify-between px-4 py-3 bg-surface border-b border-gridline",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(k,{className:"w-4 h-4 text-cyan-300"}),e.jsx("span",{className:"font-mono text-xs text-secondary font-semibold",children:"interactive-cli.sh"})]}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-red-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-yellow-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-green-500/80"})]})]}),e.jsxs("div",{className:"p-5 font-mono text-xs h-72 overflow-y-auto space-y-2 select-text custom-scrollbar",children:[n.map((i,m)=>{let x="text-secondary";return i.type==="input"?x="text-cyan-300 font-semibold":i.type==="success"?x="text-green-400 font-semibold":i.type==="info"&&(x="text-gold-400"),e.jsx("div",{className:`${x} leading-relaxed whitespace-pre-wrap`,children:i.text},m)}),s&&e.jsxs("div",{className:"text-muted-foreground animate-pulse flex items-center gap-1",children:[e.jsx("span",{className:"w-1.5 h-3 bg-muted-foreground inline-block animate-caret"}),e.jsx("span",{children:"Executing..."})]}),e.jsx("div",{ref:g})]}),e.jsxs("form",{onSubmit:j,className:"flex items-center border-t border-gridline bg-surface/50 px-4 py-2",children:[e.jsx(_,{className:"w-4 h-4 text-cyan-300 shrink-0"}),e.jsx("input",{type:"text",value:a,onChange:i=>l(i.target.value),disabled:s,className:"flex-1 bg-transparent border-none outline-none font-mono text-xs text-cyan-300 px-2 py-1 placeholder-cyan-300/60 focus-visible:ring-2 focus-visible:ring-cyan-300",placeholder:'Type a command (e.g. "help", "pip install qector-decoder-v3")...',"aria-label":"Terminal input"}),e.jsx("button",{type:"submit",disabled:s||!a.trim(),className:"p-1 text-cyan-300 hover:text-cyan-200 disabled:text-muted/20 transition-colors","aria-label":"Run command",children:e.jsx(C,{className:"w-3.5 h-3.5 fill-current"})})]})]})}const L="font-mono text-[11px] bg-cyan-300/10 text-cyan-200 px-1 py-0.5 rounded border border-cyan-300/20";function O(a,l){return a.replace(/\\"/g,'"').split(/(`[^`\n]+`)/g).map((n,t)=>n.length>2&&n.startsWith("`")&&n.endsWith("`")?e.jsx("code",{className:L,children:n.slice(1,-1)},`${l}-${t}`):n)}function o({children:a}){const l=(n,t)=>typeof n=="string"?e.jsx(b.Fragment,{children:O(n,t)},t):Array.isArray(n)?e.jsx(e.Fragment,{children:n.map((s,h)=>e.jsx(b.Fragment,{children:l(s,`${t}-${h}`)},`${t}-${h}`))}):n;return e.jsx(e.Fragment,{children:l(a,"imd")})}function $(){const[a,l]=p.useState("overview"),n=[{id:"overview",title:"1. Overview",icon:e.jsx(S,{className:"w-4 h-4"})},{id:"installation",title:"2. Installation",icon:e.jsx(q,{className:"w-4 h-4"})},{id:"quickstart",title:"3. Quick Start",icon:e.jsx(T,{className:"w-4 h-4"})},{id:"decoders",title:"4. Choosing a Decoder",icon:e.jsx(D,{className:"w-4 h-4"})},{id:"measurement",title:"5. Local Measurements",icon:e.jsx(M,{className:"w-4 h-4"})},{id:"configuration",title:"6. Configuration",icon:e.jsx(U,{className:"w-4 h-4"})},{id:"troubleshooting",title:"7. Troubleshooting",icon:e.jsx(P,{className:"w-4 h-4"})},{id:"package-reference",title:"8. Package Reference (v1.0.0)",icon:e.jsx(R,{className:"w-4 h-4"})}],t=()=>{switch(a){case"overview":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-base leading-relaxed",children:"QECTOR Decoder v3 is a Python library for quantum error correction (QEC) decoding. v1.0.0 is the first stable release: it provides 17 decoder configurations and helpers integrated into a high-performance compiled Rust core with a plug-and-play Python API."}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/10 rounded-xl flex items-start gap-3",children:[e.jsx(E,{className:"w-5 h-5 text-cyan-300 shrink-0 mt-0.5"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Ecosystem Native:"})," Swappable backend design. You can easily plug QECTOR into Stim, PyMatching, Sinter, and Qiskit pipelines with minimal API modifications: v1.0.0 registers Sinter and qiskit-qec entry points so ",e.jsx("code",{className:"text-cyan-300",children:"sinter.collect()"})," works with no ",e.jsx("code",{className:"text-cyan-300",children:"custom_decoders="}),"."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-lg mb-3",children:"Key Highlights"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"v1.0.0: First Stable Release"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"API stability tiers, Relay-BP, CS-OSD(lambda, w), colour-code cluster_bposd, qector CLI + qector-doctor, Sinter/qiskit entry points, pymatching shim."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Validate on Your Hardware"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"Hardware, GPU, and measurement results are device-local. Use the package diagnostic and declared measurement workflow instead of treating site text as performance evidence."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Multi-Algorithm Diversity"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"17 decoder configurations from exact Blossom MWPM to Belief-Matching, BP-OSD, and GPU batch decoding."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Compiled Rust Core"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"A compiled Rust core with a Python API. Exact memory, latency, and throughput behavior depends on the selected workload and environment."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Optional GPU Paths"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"GPU paths are optional and environment-dependent. Read the installed release diagnostics before relying on them."})]})]})]})]});case"installation":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR ships as pre-compiled binary wheels on PyPI. Installing requires Python and pip."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Standard Installation"}),e.jsx(c,{code:"pip install qector-decoder-v3",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"System Requirements"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-sm",children:[e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary",children:"3.9, 3.10, 3.11, 3.12, 3.13 (64-bit)"})]}),e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Operating System"}),e.jsx("span",{className:"text-primary",children:"Linux, macOS, Windows (see current PyPI wheel metadata)"})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"GPU Requirements (Optional)"}),e.jsx("span",{className:"text-primary",children:"Optional and environment-dependent; check the installed release diagnostics"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Install Optional Dependencies"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"Install only the extras required by your workflow:"}),e.jsx(c,{code:`# Stim / Sinter / PyMatching ecosystem - pip install "qector-decoder-v3[stim]" - - # Full optional environment - pip install "qector-decoder-v3[all]"`,filename:"terminal",language:"bash"})]})]});case"quickstart":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Below is a minimal package-only example: create a rotated surface code, generate a syndrome, and verify a Blossom correction against the parity-check matrix."}),e.jsx(c,{filename:"surface_code_decode.py",language:"python",code:`import numpy as np -import qector_decoder_v3 as qector - -# Build a small code and inject one bit error. -code = qector.codes.rotated_surface_code(3) -error = np.zeros(code.n_qubits, dtype=np.uint8) -error[4] = 1 -syndrome = code.syndrome(error) - -# Decode with the graphlike Blossom backend. -correction = qector.BlossomDecoder( - code.check_to_qubits, - n_qubits=code.n_qubits, -).decode(syndrome) - -# The syndrome contract is H c = s (mod 2). -matrix = np.asarray(code.parity_check_matrix(), dtype=np.uint8) -assert np.array_equal((matrix @ correction.astype(int)) % 2, syndrome) -print("Syndrome-faithful correction")`})]});case"decoders":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR includes 17 decoder configurations categorized into stable, workload-sensitive, and experimental/research tiers. Choose based on code type and speed/accuracy tradeoffs:"}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse border border-gridline text-left text-sm rounded-xl overflow-hidden",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 font-semibold",children:[e.jsx("th",{className:"p-3",children:"Decoder"}),e.jsx("th",{className:"p-3",children:"Target Code"}),e.jsx("th",{className:"p-3",children:"Speed"}),e.jsx("th",{className:"p-3",children:"Accuracy"}),e.jsx("th",{className:"p-3",children:"Tier"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:[{name:"Blossom (MWPM)",target:"Graphlike CSS / surface",speed:"Workload-dependent",accuracy:"Minimum-weight matching objective",tier:"Stable"},{name:"Belief-Matching",target:"Correlated-noise research",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"BP-OSD",target:"qLDPC, LDPC",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"Union-Find",target:"Large Surface",speed:"Near-linear O(N)",accuracy:"Approximate",tier:"Production"},{name:"GPU Batch",target:"Supported batch workloads",speed:"Runtime-dependent",accuracy:"Validate locally",tier:"Workload-sensitive"},{name:"Hybrid / Cascade",target:"Degenerate, mixed",speed:"Iterative",accuracy:"High",tier:"Research"},{name:"Colour Code",target:"Triangular colour code",speed:"Moderate",accuracy:"Native",tier:"Research"}].map(s=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-semibold text-primary",children:s.name}),e.jsx("td",{className:"p-3 text-secondary",children:s.target}),e.jsx("td",{className:"p-3 text-secondary",children:s.speed}),e.jsx("td",{className:"p-3 text-secondary",children:s.accuracy}),e.jsx("td",{className:"p-3",children:e.jsx("span",{className:`px-2 py-0.5 rounded text-[10px] uppercase font-bold border ${s.tier==="Production"?"bg-green-400/10 text-green-400 border-green-400/20":"bg-gold-400/10 text-gold-400 border-gold-400/20"}`,children:s.tier})})]},s.name))})]})})]});case"measurement":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Hardware-specific measurements are not published on this site. If your project requires a local measurement, record the code, noise model, decoder configuration, seed, shots, environment, and raw artifact."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Environment Diagnostic"}),e.jsx(c,{code:"qector-doctor",filename:"terminal",language:"bash"}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["15-check diagnostic that reports PASS / WARN / FAIL per check and explains WHY a decoder is unavailable on your machine. Full report via ",e.jsx("code",{className:"text-cyan-300",children:"qector-doctor --json"}),"."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Local measurement via qector bench"}),e.jsx("p",{className:"text-secondary text-xs mb-2",children:"Use the command documented by the installed package release. The result is machine- and workload-specific, not a site claim:"}),e.jsx(c,{code:"qector bench --distance 5 --rounds 5 --shots 10000 --decoder blossom --noise 0.001",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Interactive Sandbox CLI"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"This UI is a command-output demonstration only; it does not execute commands or generate benchmark data:"}),e.jsx(B,{})]})]});case"configuration":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Detailed constructor configuration arguments for QECTOR's primary decoders:"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BlossomDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"adaptive_k"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`bool` (Default: `True`). Enable union-find matching pre-filtering to minimize match graph sizing."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"timeout"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`float` (Default: `None`). Maximum time (in seconds) allowed to resolve a single syndrome."})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BeliefMatchingDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_iters"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `30`). Maximum number of belief propagation iterations. Higher iterations improve syndrome accuracy."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"max_paths"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `10`). Maximum number of alternative paths generated for matching reweighting calculations."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_method"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:'`str` (Default: `"product_sum"`). Choice of BP update method. Options: `"product_sum"`, `"minimum_sum"`.'})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"GpuBatchDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"backend"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:'`str` (Default: `"cuda"`). Choose GPU compilation framework. Options: `"cuda"`, `"opencl"`.'})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"batch_size"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `1000`). Number of parallel syndromes transferred to and calculated in the GPU memory space."})})]})]})]})]});case"troubleshooting":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Solutions for common installation and running issues:"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:e.jsx(o,{children:"Issue: ImportError when importing `qector`"})})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Ensure your Python architecture matches the wheel and reinstall with `python -m pip install --force-reinstall qector-decoder-v3`."]})})]}),e.jsxs("div",{className:"p-4 bg-gold-400/5 border border-gold-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-gold-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: GPU / CUDA is not detected"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Verify drivers by typing `nvidia-smi` in terminal. Ensure CUDA Toolkit 11.8 or higher is installed and environment variable `CUDA_PATH` or `LD_LIBRARY_PATH` points to the CUDA install folder."]})})]}),e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: Out Of Memory (OOM) on GPU batching"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Lower the `batch_size` argument in your `GpuBatchDecoder` instantiation. For exceptionally large code distances (d > 15), prefer the linear-scaling `UnionFindDecoder` which reduces memory demands."]})})]})]})]});case"package-reference":return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl flex items-center justify-between flex-wrap gap-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-bold text-lg",children:"QECTOR Decoder v3: Extended Reference (package only)"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Version: 1.0.0 · PyPI: qector-decoder-v3 · Backend: Rust + PyO3"})]}),e.jsx("a",{href:"/docs/reference.md",target:"_blank",rel:"noopener noreferrer",download:"QECTOR Decoder v3 - Reference (package only).md",className:"btn-cyan text-xs py-2 px-4",children:"Download Reference (.md)"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"1. Installation & Platforms"}),e.jsx(c,{code:`pip install qector-decoder-v3==1.0.0 -pip install "qector-decoder-v3[stim]" # Stim / Sinter / PyMatching / LDPC ecosystem -pip install "qector-decoder-v3[bench]" # local measurement tools -pip install "qector-decoder-v3[all]" # optional full environment`,language:"bash",filename:"terminal"}),e.jsxs("div",{className:"mt-3 border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary font-mono",children:"3.9 - 3.13"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Platforms"}),e.jsx("span",{className:"text-primary",children:"Linux x86_64 (manylinux), Windows x64, macOS arm64"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License"}),e.jsx("span",{className:"text-primary",children:"Source-available (Free academic / non-commercial)"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Startup Notice"}),e.jsx("span",{className:"text-primary font-mono",children:"Suppressed with QECTOR_SILENT=1"})]}),e.jsxs("div",{className:"p-2.5 flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License Env"}),e.jsx("span",{className:"text-primary font-mono",children:"QECTOR_LICENSE + QECTOR_LICENSE_KEY (Ed25519 token)"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"2. Core Architecture"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1.5 text-secondary text-xs leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Rust Core (compiled extension):"})," Matching, UF, batch CPU/GPU algorithms."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Python Surface:"})," Clean API, Stim/Sinter compat, belief/GNN layers, licensing."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Zero-copy NumPy:"})," Direct memory access; GIL-free parallel decoding paths."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Version Symbol:"})," ",e.jsx("code",{className:"text-cyan-300",children:'qector_decoder_v3.__version__ == "1.0.0"'})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"3. Decoder Families & Incidence Rules"}),e.jsxs("p",{className:"text-muted-foreground text-xs mb-3",children:[e.jsx("strong",{className:"text-cyan-300",children:"Graph-like rule (UF family):"})," Every qubit must participate in at most two checks (participation ≤ 2). Matrices violating this raise a clear error (",e.jsx("code",{className:"text-red-400",children:"-32602"}),"). ",e.jsx("code",{className:"text-cyan-300",children:"BlossomDecoder"}),", ",e.jsx("code",{className:"text-cyan-300",children:"SparseBlossomDecoder"}),", and ",e.jsx("code",{className:"text-cyan-300",children:"BpOsdDecoder"})," accept general hyperedge codes."]}),e.jsx("div",{className:"overflow-x-auto rounded-xl",children:e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 font-bold border-b border-gridline bg-surface/30",children:[e.jsx("span",{children:"Class"}),e.jsx("span",{children:"Best for"}),e.jsx("span",{children:"Status"}),e.jsx("span",{children:"Graph-like?"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"UnionFindDecoder"}),e.jsx("span",{children:"Low-latency approximate"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes (participation ≤ 2)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"FastUnionFindDecoder"}),e.jsx("span",{children:"Faster UF hot path"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BlossomDecoder"}),e.jsx("span",{children:"Exact MWPM"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"SparseBlossomDecoder"}),e.jsx("span",{children:"Near-optimal matching"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BeliefMatching"}),e.jsx("span",{children:"Correlated-noise accuracy"}),e.jsx("span",{children:"Research"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BpOsdDecoder"}),e.jsx("span",{children:"LDPC / qLDPC"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BatchDecoder"}),e.jsx("span",{children:"High-throughput CPU batch"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes for UF batch"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"CUDABatchDecoder"}),e.jsx("span",{children:"GPU batch (NVIDIA)"}),e.jsx("span",{children:"Runtime-dependent"}),e.jsx("span",{children:"N/A"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"AutoDecoder"}),e.jsx("span",{children:"7-tier self-debugging fallback"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"N/A"})]})]})})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"4. Code Generators"}),e.jsx(c,{code:`from qector_decoder_v3 import ( - generate_repetition_code_checks, # (checks, n_qubits) - generate_ring_code_checks, # (checks, n_qubits) - generate_surface_code_checks, # surface-code checks -)`,language:"python",filename:"python"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"5. MCP and General-Matrix Workflows"}),e.jsx(c,{code:`# The standalone library MCP server is documented separately. -# Start it from the plugin package with: -python mcp/mcp_server_library.py - -# Initialize and call tools/list before using a tool.`,language:"python",filename:"mcp_server.py"}),e.jsx("p",{className:"text-muted-foreground text-xs mt-2 mb-3",children:"For general matrices, use the decoder family documented for that workload and verify every returned correction against H c = s (mod 2):"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import BlossomDecoder, SparseBlossomDecoder, BpOsdDecoder - -def decode_hyperedge(checks, n_qubits, syndrome, kind="Blossom", **opts): - syn = np.asarray(syndrome, dtype=np.uint8).ravel() - if kind in ("Blossom", "blossom"): - return BlossomDecoder(checks, n_qubits).decode(syn) - if kind in ("SparseBlossom", "sparse_blossom"): - return SparseBlossomDecoder(checks, n_qubits).decode(syn) - if kind.lower() in ("bposd", "bp_osd"): - H = np.zeros((len(checks), n_qubits), dtype=np.uint8) - for i, c in enumerate(checks): - for q in c: H[i, q] ^= 1 - return BpOsdDecoder(H, error_rate=opts.get("error_rate", 0.05)).decode(syn) - raise ValueError(f"unsupported kind: {kind}")`,language:"python",filename:"hyperedge_workaround.py"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"6. Verified Fallback Pattern"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed mb-3",children:"A fallback is safe only when each candidate is checked against the same parity-check matrix. The following pattern uses the stable Union-Find and Blossom classes and fails closed if a candidate is not syndrome-faithful:"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder - -def faithful_decode(check_to_qubits, n_qubits, syndrome): - syndrome = np.asarray(syndrome, dtype=np.uint8).ravel() - matrix = np.zeros((len(check_to_qubits), n_qubits), dtype=np.uint8) - for check, qubits in enumerate(check_to_qubits): - matrix[check, qubits] = 1 - - for decoder_type in (FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder): - try: - correction = np.asarray( - decoder_type(check_to_qubits, n_qubits=n_qubits).decode(syndrome), - dtype=np.uint8, - ) - if np.array_equal((matrix @ correction.astype(int)) % 2, syndrome): - return correction, decoder_type.__name__ - except Exception: - continue - raise RuntimeError("No syndrome-faithful decoder result")`,language:"python",filename:"cascade_decode.py"})]})]});default:return null}};return e.jsxs(e.Fragment,{children:[e.jsx(N,{title:"User Manual · QECTOR",description:"Complete user manual for QECTOR Decoder v3. Installation, configuration, decoder selection, validation, and troubleshooting."}),e.jsx(w,{data:{"@context":"https://schema.org","@type":"HowTo",name:"How to Install and Run QECTOR Decoder v3",description:"Step-by-step instructions to install QECTOR, verify a syndrome-faithful decode, select a decoder, and review evidence boundaries.",step:[{"@type":"HowToStep",name:"Install the package",text:"Run pip install qector-decoder-v3 in your Python terminal to install the Rust core binary wheels."},{"@type":"HowToStep",name:"Verify the installation",text:'Verify the installation with python -c "import qector_decoder_v3 as qd; print(qd.__version__)" and a small syndrome-faithfulness check.'},{"@type":"HowToStep",name:"Review evidence boundaries",text:"Read the v1.0.0 reference manual and record code, noise model, decoder configuration, seed, environment, and artifact metadata before making a local measurement."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"15 backend families powering 17 decoder configurations · GPU Batch · Stim · Sinter · Qiskit"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(I,{text:"User Manual",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Complete guide to QECTOR Decoder v3: installation, decoder selection, local measurements, diagnostics, and ecosystem integration."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsx("div",{className:"max-w-6xl mx-auto",children:e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-4 gap-8",children:[e.jsx("div",{className:"lg:col-span-1",children:e.jsx("nav",{"aria-label":"Manual sections",className:"sticky top-24 space-y-1 bg-surface/10 p-2 rounded-xl border border-gridline/50",children:n.map(s=>e.jsxs("button",{type:"button",onClick:()=>l(s.id),"aria-current":a===s.id?"true":void 0,className:`w-full text-left px-3.5 py-2.5 rounded-lg text-sm font-medium transition-all duration-200 flex items-center gap-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cyan-300 ${a===s.id?"bg-cyan-300/10 text-cyan-300 border border-cyan-300/20":"text-secondary hover:text-primary hover:bg-white/5 border border-transparent"}`,children:[s.icon,s.title]},s.id))})}),e.jsx("div",{className:"lg:col-span-3",children:e.jsxs("div",{className:"card-surface bg-surface/20 min-h-[500px]",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6 text-primary border-b border-gridline pb-4 flex items-center gap-2",children:n.find(s=>s.id===a)?.title.substring(3)}),e.jsx("div",{className:"transition-all duration-300",children:t()})]})})]})})})]})}function T(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.813 15.904 9 21l-.813-5.096L3 15l5.096-.813L9 9l.813 5.096L15 15l-5.187.904Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19.071 4.929a10 10 0 0 0-14.142 0M12 3v3m0 12v3M3 12h3m12 0h3",opacity:"0.5"})]})}function M(a){return e.jsx("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v5.25c0 .621-.504 1.125-1.125 1.125h-2.25A1.125 1.125 0 0 1 3 18.375v-5.25ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v9.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125v-9.75ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v14.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z"})})}function U(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.324.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.43l-1.003.828c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.954.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.43l1.004-.827c.292-.24.437-.613.43-.991a6.936 6.936 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"})]})}export{$ as default}; diff --git a/assets/Manual-DufMHAK3.js b/assets/Manual-DufMHAK3.js deleted file mode 100644 index 1475bc2d..00000000 --- a/assets/Manual-DufMHAK3.js +++ /dev/null @@ -1,67 +0,0 @@ -import{r as p,j as e,R as b}from"./vendor-react-BiHfrq0e.js";import{S as N,J as w,C as c}from"./index-Bh9DBCb3.js";import{T as k,o as _,u as C,I as S,g as q,a as D,C as P,B as R,v as u,i as E}from"./vendor-ui-B0ssGG4c.js";import{N as I}from"./NeuralReveal-D-EQoOl2.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-gsap-a3sj5zmn.js";function B(){const[a,l]=p.useState(""),[n,t]=p.useState([{text:"QECTOR CLI Terminal Demo (simulation only)",type:"info"},{text:"No command is executed and no external service is contacted.",type:"info"}]),[s,h]=p.useState(!1),g=p.useRef(null),y=()=>{g.current?.scrollIntoView({behavior:"smooth"})};p.useEffect(()=>{y()},[n]);const f=async i=>{const m=i.trim().toLowerCase(),x=[...n,{text:`qector@sandbox:~$ ${i}`,type:"input"}];t(x),l(""),h(!0);const d=r=>new Promise(v=>setTimeout(v,r));m==="help"?(await d(200),t(r=>[...r,{text:"Available commands:",type:"info"},{text:" help - Show this menu",type:"output"},{text:" pip install qector-decoder-v3 - Show the install command",type:"output"},{text:" qector-doctor - Show the diagnostic command",type:"output"},{text:" qector bench -d 5 - Show a local measurement command",type:"output"},{text:" clear - Clear the terminal screen",type:"output"}])):m==="clear"?t([]):m==="pip install qector-decoder-v3"?(await d(300),t(r=>[...r,{text:"Simulation only: no package was downloaded.",type:"output"}]),await d(800),t(r=>[...r,{text:"Simulation only: no package was installed.",type:"output"}]),await d(400),t(r=>[...r,{text:"For a real install, follow the current PyPI and release verification instructions.",type:"output"}]),await d(600),t(r=>[...r,{text:"✓ Demo complete: no network request or filesystem change was made.",type:"success"}])):m==="qector-doctor"?(await d(300),t(r=>[...r,{text:"Simulation only: qector-doctor was not run.",type:"output"}]),await d(500),t(r=>[...r,{text:"Run qector-doctor in your installed environment to obtain real PASS / WARN / FAIL results.",type:"info"}])):m==="qector bench -d 5"||m==="qector bench --distance 5"?(await d(400),t(r=>[...r,{text:"Simulation only: no circuit or measurement was generated.",type:"output"}]),await d(1e3),t(r=>[...r,{text:"Run qector bench on your own declared workload to generate real local evidence.",type:"info"}])):(await d(150),t(r=>[...r,{text:`qector: command not found: ${i}. Type "help" for a list of commands.`,type:"info"}])),h(!1)},j=i=>{i.preventDefault(),!(!a.trim()||s)&&f(a)};return e.jsxs("div",{className:"flex flex-col border border-gridline bg-void/90 rounded-2xl overflow-hidden shadow-2xl",children:[e.jsxs("div",{className:"flex items-center justify-between px-4 py-3 bg-surface border-b border-gridline",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(k,{className:"w-4 h-4 text-cyan-300"}),e.jsx("span",{className:"font-mono text-xs text-secondary font-semibold",children:"interactive-cli.sh"})]}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-red-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-yellow-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-green-500/80"})]})]}),e.jsxs("div",{className:"p-5 font-mono text-xs h-72 overflow-y-auto space-y-2 select-text custom-scrollbar",children:[n.map((i,m)=>{let x="text-secondary";return i.type==="input"?x="text-cyan-300 font-semibold":i.type==="success"?x="text-green-400 font-semibold":i.type==="info"&&(x="text-gold-400"),e.jsx("div",{className:`${x} leading-relaxed whitespace-pre-wrap`,children:i.text},m)}),s&&e.jsxs("div",{className:"text-muted-foreground animate-pulse flex items-center gap-1",children:[e.jsx("span",{className:"w-1.5 h-3 bg-muted-foreground inline-block animate-caret"}),e.jsx("span",{children:"Executing..."})]}),e.jsx("div",{ref:g})]}),e.jsxs("form",{onSubmit:j,className:"flex items-center border-t border-gridline bg-surface/50 px-4 py-2",children:[e.jsx(_,{className:"w-4 h-4 text-cyan-300 shrink-0"}),e.jsx("input",{type:"text",value:a,onChange:i=>l(i.target.value),disabled:s,className:"flex-1 bg-transparent border-none outline-none font-mono text-xs text-cyan-300 px-2 py-1 placeholder-cyan-300/60 focus-visible:ring-2 focus-visible:ring-cyan-300",placeholder:'Type a command (e.g. "help", "pip install qector-decoder-v3")...',"aria-label":"Terminal input"}),e.jsx("button",{type:"submit",disabled:s||!a.trim(),className:"p-1 text-cyan-300 hover:text-cyan-200 disabled:text-muted/20 transition-colors","aria-label":"Run command",children:e.jsx(C,{className:"w-3.5 h-3.5 fill-current"})})]})]})}const L="font-mono text-[11px] bg-cyan-300/10 text-cyan-200 px-1 py-0.5 rounded border border-cyan-300/20";function O(a,l){return a.replace(/\\"/g,'"').split(/(`[^`\n]+`)/g).map((n,t)=>n.length>2&&n.startsWith("`")&&n.endsWith("`")?e.jsx("code",{className:L,children:n.slice(1,-1)},`${l}-${t}`):n)}function o({children:a}){const l=(n,t)=>typeof n=="string"?e.jsx(b.Fragment,{children:O(n,t)},t):Array.isArray(n)?e.jsx(e.Fragment,{children:n.map((s,h)=>e.jsx(b.Fragment,{children:l(s,`${t}-${h}`)},`${t}-${h}`))}):n;return e.jsx(e.Fragment,{children:l(a,"imd")})}function $(){const[a,l]=p.useState("overview"),n=[{id:"overview",title:"1. Overview",icon:e.jsx(S,{className:"w-4 h-4"})},{id:"installation",title:"2. Installation",icon:e.jsx(q,{className:"w-4 h-4"})},{id:"quickstart",title:"3. Quick Start",icon:e.jsx(T,{className:"w-4 h-4"})},{id:"decoders",title:"4. Choosing a Decoder",icon:e.jsx(D,{className:"w-4 h-4"})},{id:"measurement",title:"5. Local Measurements",icon:e.jsx(M,{className:"w-4 h-4"})},{id:"configuration",title:"6. Configuration",icon:e.jsx(U,{className:"w-4 h-4"})},{id:"troubleshooting",title:"7. Troubleshooting",icon:e.jsx(P,{className:"w-4 h-4"})},{id:"package-reference",title:"8. Package Reference (v1.0.1)",icon:e.jsx(R,{className:"w-4 h-4"})}],t=()=>{switch(a){case"overview":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-base leading-relaxed",children:"QECTOR Decoder v3 is a Python library for quantum error correction (QEC) decoding. v1.0.1 is the current stable release (v1.0.0, August 2026, was the first): it provides 17 decoder configurations and helpers integrated into a high-performance compiled Rust core with a plug-and-play Python API."}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/10 rounded-xl flex items-start gap-3",children:[e.jsx(E,{className:"w-5 h-5 text-cyan-300 shrink-0 mt-0.5"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Ecosystem Native:"})," Swappable backend design. You can easily plug QECTOR into Stim, PyMatching, Sinter, and Qiskit pipelines with minimal API modifications: Sinter decoders plug in with ",e.jsx("code",{className:"text-cyan-300",children:"custom_decoders=qector_sinter_decoders()"}),", and a qiskit-qec plugin is registered."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-lg mb-3",children:"Key Highlights"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"v1.0.0: First Stable Release"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"API stability tiers, Relay-BP, CS-OSD(lambda, w), colour-code cluster_bposd, qector CLI + qector-doctor, Sinter/qiskit entry points, pymatching shim."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Validate on Your Hardware"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"Hardware, GPU, and measurement results are device-local. Use the package diagnostic and declared measurement workflow instead of treating site text as performance evidence."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Multi-Algorithm Diversity"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"17 decoder configurations from exact Blossom MWPM to Belief-Matching, BP-OSD, and GPU batch decoding."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Compiled Rust Core"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"A compiled Rust core with a Python API. Exact memory, latency, and throughput behavior depends on the selected workload and environment."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Optional GPU Paths"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"GPU paths are optional and environment-dependent. Read the installed release diagnostics before relying on them."})]})]})]})]});case"installation":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR ships as pre-compiled binary wheels on PyPI. Installing requires Python and pip."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Standard Installation"}),e.jsx(c,{code:"pip install qector-decoder-v3",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"System Requirements"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-sm",children:[e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary",children:"3.9, 3.10, 3.11, 3.12, 3.13 (64-bit)"})]}),e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Operating System"}),e.jsx("span",{className:"text-primary",children:"Linux, macOS, Windows (see current PyPI wheel metadata)"})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"GPU Requirements (Optional)"}),e.jsx("span",{className:"text-primary",children:"Optional and environment-dependent; check the installed release diagnostics"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Install Optional Dependencies"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"Install only the extras required by your workflow:"}),e.jsx(c,{code:`# Stim / Sinter / PyMatching ecosystem - pip install "qector-decoder-v3[stim]" - - # Full optional environment - pip install "qector-decoder-v3[all]"`,filename:"terminal",language:"bash"})]})]});case"quickstart":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Below is a minimal package-only example: create a rotated surface code, generate a syndrome, and verify a Blossom correction against the parity-check matrix."}),e.jsx(c,{filename:"surface_code_decode.py",language:"python",code:`import numpy as np -import qector_decoder_v3 as qector - -# Build a small code and inject one bit error. -code = qector.codes.rotated_surface_code(3) -error = np.zeros(code.n_qubits, dtype=np.uint8) -error[4] = 1 -syndrome = code.syndrome(error) - -# Decode with the graphlike Blossom backend. -correction = qector.BlossomDecoder( - code.check_to_qubits, - n_qubits=code.n_qubits, -).decode(syndrome) - -# The syndrome contract is H c = s (mod 2). -matrix = np.asarray(code.parity_check_matrix(), dtype=np.uint8) -assert np.array_equal((matrix @ correction.astype(int)) % 2, syndrome) -print("Syndrome-faithful correction")`})]});case"decoders":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR includes 17 decoder configurations categorized into stable, workload-sensitive, and experimental/research tiers. Choose based on code type and speed/accuracy tradeoffs:"}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse border border-gridline text-left text-sm rounded-xl overflow-hidden",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 font-semibold",children:[e.jsx("th",{className:"p-3",children:"Decoder"}),e.jsx("th",{className:"p-3",children:"Target Code"}),e.jsx("th",{className:"p-3",children:"Speed"}),e.jsx("th",{className:"p-3",children:"Accuracy"}),e.jsx("th",{className:"p-3",children:"Tier"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:[{name:"Blossom (MWPM)",target:"Graphlike CSS / surface",speed:"Workload-dependent",accuracy:"Minimum-weight matching objective",tier:"Stable"},{name:"Belief-Matching",target:"Correlated-noise research",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"BP-OSD",target:"qLDPC, LDPC",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"Union-Find",target:"Large Surface",speed:"Near-linear O(N)",accuracy:"Approximate",tier:"Production"},{name:"GPU Batch",target:"Supported batch workloads",speed:"Runtime-dependent",accuracy:"Validate locally",tier:"Workload-sensitive"},{name:"Hybrid / Cascade",target:"Degenerate, mixed",speed:"Iterative",accuracy:"High",tier:"Research"},{name:"Colour Code",target:"Triangular colour code",speed:"Moderate",accuracy:"Native",tier:"Research"}].map(s=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-semibold text-primary",children:s.name}),e.jsx("td",{className:"p-3 text-secondary",children:s.target}),e.jsx("td",{className:"p-3 text-secondary",children:s.speed}),e.jsx("td",{className:"p-3 text-secondary",children:s.accuracy}),e.jsx("td",{className:"p-3",children:e.jsx("span",{className:`px-2 py-0.5 rounded text-[10px] uppercase font-bold border ${s.tier==="Production"?"bg-green-400/10 text-green-400 border-green-400/20":"bg-gold-400/10 text-gold-400 border-gold-400/20"}`,children:s.tier})})]},s.name))})]})})]});case"measurement":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Hardware-specific measurements are not published on this site. If your project requires a local measurement, record the code, noise model, decoder configuration, seed, shots, environment, and raw artifact."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Environment Diagnostic"}),e.jsx(c,{code:"qector-doctor",filename:"terminal",language:"bash"}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["15-check diagnostic that reports PASS / WARN / FAIL per check and explains WHY a decoder is unavailable on your machine. Full report via ",e.jsx("code",{className:"text-cyan-300",children:"qector-doctor --json"}),"."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Local measurement via qector bench"}),e.jsx("p",{className:"text-secondary text-xs mb-2",children:"Use the command documented by the installed package release. The result is machine- and workload-specific, not a site claim:"}),e.jsx(c,{code:"qector bench --distance 5 --rounds 5 --shots 10000 --decoder blossom --noise 0.001",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Interactive Sandbox CLI"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"This UI is a command-output demonstration only; it does not execute commands or generate benchmark data:"}),e.jsx(B,{})]})]});case"configuration":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Detailed constructor configuration arguments for QECTOR's primary decoders:"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BlossomDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"adaptive_k"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`bool` (Default: `True`). Enable union-find matching pre-filtering to minimize match graph sizing."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"timeout"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`float` (Default: `None`). Maximum time (in seconds) allowed to resolve a single syndrome."})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BeliefMatchingDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_iters"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `30`). Maximum number of belief propagation iterations. Higher iterations improve syndrome accuracy."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"max_paths"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `10`). Maximum number of alternative paths generated for matching reweighting calculations."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_method"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:'`str` (Default: `"product_sum"`). Choice of BP update method. Options: `"product_sum"`, `"minimum_sum"`.'})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"GpuBatchDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"backend"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:'`str` (Default: `"cuda"`). Choose GPU compilation framework. Options: `"cuda"`, `"opencl"`.'})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"batch_size"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `1000`). Number of parallel syndromes transferred to and calculated in the GPU memory space."})})]})]})]})]});case"troubleshooting":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Solutions for common installation and running issues:"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:e.jsx(o,{children:"Issue: ImportError when importing `qector`"})})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Ensure your Python architecture matches the wheel and reinstall with `python -m pip install --force-reinstall qector-decoder-v3`."]})})]}),e.jsxs("div",{className:"p-4 bg-gold-400/5 border border-gold-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-gold-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: GPU / CUDA is not detected"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Verify drivers by typing `nvidia-smi` in terminal. Ensure CUDA Toolkit 11.8 or higher is installed and environment variable `CUDA_PATH` or `LD_LIBRARY_PATH` points to the CUDA install folder."]})})]}),e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: Out Of Memory (OOM) on GPU batching"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Lower the `batch_size` argument in your `GpuBatchDecoder` instantiation. For exceptionally large code distances (d > 15), prefer the linear-scaling `UnionFindDecoder` which reduces memory demands."]})})]})]})]});case"package-reference":return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl flex items-center justify-between flex-wrap gap-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-bold text-lg",children:"QECTOR Decoder v3: Extended Reference (package only)"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Version: 1.0.1 · PyPI: qector-decoder-v3 · Backend: Rust + PyO3"})]}),e.jsx("a",{href:"/docs/reference.md",target:"_blank",rel:"noopener noreferrer",download:"QECTOR Decoder v3 - Reference (package only).md",className:"btn-cyan text-xs py-2 px-4",children:"Download Reference (.md)"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"1. Installation & Platforms"}),e.jsx(c,{code:`pip install --upgrade "qector-decoder-v3>=1.0.1,<2" -pip install "qector-decoder-v3[stim]" # Stim / Sinter / PyMatching / LDPC ecosystem -pip install "qector-decoder-v3[bench]" # local measurement tools -pip install "qector-decoder-v3[all]" # optional full environment`,language:"bash",filename:"terminal"}),e.jsxs("div",{className:"mt-3 border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary font-mono",children:"3.9 - 3.13"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Platforms"}),e.jsx("span",{className:"text-primary",children:"Linux x86_64 (manylinux), Windows x64, macOS arm64"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License"}),e.jsx("span",{className:"text-primary",children:"Source-available (Free academic / non-commercial)"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Startup Notice"}),e.jsx("span",{className:"text-primary font-mono",children:"Suppressed with QECTOR_SILENT=1"})]}),e.jsxs("div",{className:"p-2.5 flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License Env"}),e.jsx("span",{className:"text-primary font-mono",children:"QECTOR_LICENSE + QECTOR_LICENSE_KEY (Ed25519 token)"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"2. Core Architecture"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1.5 text-secondary text-xs leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Rust Core (compiled extension):"})," Matching, UF, batch CPU/GPU algorithms."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Python Surface:"})," Clean API, Stim/Sinter compat, belief/GNN layers, licensing."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Zero-copy NumPy:"})," Direct memory access; GIL-free parallel decoding paths."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Version Symbol:"})," ",e.jsx("code",{className:"text-cyan-300",children:'qector_decoder_v3.__version__ == "1.0.1"'})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"3. Decoder Families & Incidence Rules"}),e.jsxs("p",{className:"text-muted-foreground text-xs mb-3",children:[e.jsx("strong",{className:"text-cyan-300",children:"Graph-like rule (UF family):"})," Every qubit must participate in at most two checks (participation ≤ 2). Matrices violating this raise a clear error (",e.jsx("code",{className:"text-red-400",children:"-32602"}),"). ",e.jsx("code",{className:"text-cyan-300",children:"BlossomDecoder"}),", ",e.jsx("code",{className:"text-cyan-300",children:"SparseBlossomDecoder"}),", and ",e.jsx("code",{className:"text-cyan-300",children:"BpOsdDecoder"})," accept general hyperedge codes."]}),e.jsx("div",{className:"overflow-x-auto rounded-xl",children:e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 font-bold border-b border-gridline bg-surface/30",children:[e.jsx("span",{children:"Class"}),e.jsx("span",{children:"Best for"}),e.jsx("span",{children:"Status"}),e.jsx("span",{children:"Graph-like?"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"UnionFindDecoder"}),e.jsx("span",{children:"Low-latency approximate"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes (participation ≤ 2)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"FastUnionFindDecoder"}),e.jsx("span",{children:"Faster UF hot path"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BlossomDecoder"}),e.jsx("span",{children:"Exact MWPM"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"SparseBlossomDecoder"}),e.jsx("span",{children:"Near-optimal matching"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BeliefMatching"}),e.jsx("span",{children:"Correlated-noise accuracy"}),e.jsx("span",{children:"Research"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BpOsdDecoder"}),e.jsx("span",{children:"LDPC / qLDPC"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BatchDecoder"}),e.jsx("span",{children:"High-throughput CPU batch"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes for UF batch"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"CUDABatchDecoder"}),e.jsx("span",{children:"GPU batch (NVIDIA)"}),e.jsx("span",{children:"Runtime-dependent"}),e.jsx("span",{children:"N/A"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"AutoDecoder"}),e.jsx("span",{children:"7-tier self-debugging fallback"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"N/A"})]})]})})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"4. Code Generators"}),e.jsx(c,{code:`from qector_decoder_v3 import ( - generate_repetition_code_checks, # (checks, n_qubits) - generate_ring_code_checks, # (checks, n_qubits) - generate_surface_code_checks, # surface-code checks -)`,language:"python",filename:"python"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"5. MCP and General-Matrix Workflows"}),e.jsx(c,{code:`# The standalone library MCP server is documented separately. -# Start it from the plugin package with: -python mcp/mcp_server_library.py - -# Initialize and call tools/list before using a tool.`,language:"python",filename:"mcp_server.py"}),e.jsx("p",{className:"text-muted-foreground text-xs mt-2 mb-3",children:"For general matrices, use the decoder family documented for that workload and verify every returned correction against H c = s (mod 2):"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import BlossomDecoder, SparseBlossomDecoder, BpOsdDecoder - -def decode_hyperedge(checks, n_qubits, syndrome, kind="Blossom", **opts): - syn = np.asarray(syndrome, dtype=np.uint8).ravel() - if kind in ("Blossom", "blossom"): - return BlossomDecoder(checks, n_qubits).decode(syn) - if kind in ("SparseBlossom", "sparse_blossom"): - return SparseBlossomDecoder(checks, n_qubits).decode(syn) - if kind.lower() in ("bposd", "bp_osd"): - H = np.zeros((len(checks), n_qubits), dtype=np.uint8) - for i, c in enumerate(checks): - for q in c: H[i, q] ^= 1 - return BpOsdDecoder(H, error_rate=opts.get("error_rate", 0.05)).decode(syn) - raise ValueError(f"unsupported kind: {kind}")`,language:"python",filename:"hyperedge_workaround.py"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"6. Verified Fallback Pattern"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed mb-3",children:"A fallback is safe only when each candidate is checked against the same parity-check matrix. The following pattern uses the stable Union-Find and Blossom classes and fails closed if a candidate is not syndrome-faithful:"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder - -def faithful_decode(check_to_qubits, n_qubits, syndrome): - syndrome = np.asarray(syndrome, dtype=np.uint8).ravel() - matrix = np.zeros((len(check_to_qubits), n_qubits), dtype=np.uint8) - for check, qubits in enumerate(check_to_qubits): - matrix[check, qubits] = 1 - - for decoder_type in (FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder): - try: - correction = np.asarray( - decoder_type(check_to_qubits, n_qubits=n_qubits).decode(syndrome), - dtype=np.uint8, - ) - if np.array_equal((matrix @ correction.astype(int)) % 2, syndrome): - return correction, decoder_type.__name__ - except Exception: - continue - raise RuntimeError("No syndrome-faithful decoder result")`,language:"python",filename:"cascade_decode.py"})]})]});default:return null}};return e.jsxs(e.Fragment,{children:[e.jsx(N,{title:"User Manual · QECTOR",description:"Complete user manual for QECTOR Decoder v3. Installation, configuration, decoder selection, validation, and troubleshooting."}),e.jsx(w,{data:{"@context":"https://schema.org","@type":"HowTo",name:"How to Install and Run QECTOR Decoder v3",description:"Step-by-step instructions to install QECTOR, verify a syndrome-faithful decode, select a decoder, and review evidence boundaries.",step:[{"@type":"HowToStep",name:"Install the package",text:"Run pip install qector-decoder-v3 in your Python terminal to install the Rust core binary wheels."},{"@type":"HowToStep",name:"Verify the installation",text:'Verify the installation with python -c "import qector_decoder_v3 as qd; print(qd.__version__)" and a small syndrome-faithfulness check.'},{"@type":"HowToStep",name:"Review evidence boundaries",text:"Read the v1.0.0 reference manual and record code, noise model, decoder configuration, seed, environment, and artifact metadata before making a local measurement."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"15 backend families powering 17 decoder configurations · GPU Batch · Stim · Sinter · Qiskit"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(I,{text:"User Manual",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Complete guide to QECTOR Decoder v3: installation, decoder selection, local measurements, diagnostics, and ecosystem integration."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsx("div",{className:"max-w-6xl mx-auto",children:e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-4 gap-8",children:[e.jsx("div",{className:"lg:col-span-1",children:e.jsx("nav",{"aria-label":"Manual sections",className:"sticky top-24 space-y-1 bg-surface/10 p-2 rounded-xl border border-gridline/50",children:n.map(s=>e.jsxs("button",{type:"button",onClick:()=>l(s.id),"aria-current":a===s.id?"true":void 0,className:`w-full text-left px-3.5 py-2.5 rounded-lg text-sm font-medium transition-all duration-200 flex items-center gap-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cyan-300 ${a===s.id?"bg-cyan-300/10 text-cyan-300 border border-cyan-300/20":"text-secondary hover:text-primary hover:bg-white/5 border border-transparent"}`,children:[s.icon,s.title]},s.id))})}),e.jsx("div",{className:"lg:col-span-3",children:e.jsxs("div",{className:"card-surface bg-surface/20 min-h-[500px]",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6 text-primary border-b border-gridline pb-4 flex items-center gap-2",children:n.find(s=>s.id===a)?.title.substring(3)}),e.jsx("div",{className:"transition-all duration-300",children:t()})]})})]})})})]})}function T(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.813 15.904 9 21l-.813-5.096L3 15l5.096-.813L9 9l.813 5.096L15 15l-5.187.904Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19.071 4.929a10 10 0 0 0-14.142 0M12 3v3m0 12v3M3 12h3m12 0h3",opacity:"0.5"})]})}function M(a){return e.jsx("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v5.25c0 .621-.504 1.125-1.125 1.125h-2.25A1.125 1.125 0 0 1 3 18.375v-5.25ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v9.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125v-9.75ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v14.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z"})})}function U(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.324.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.43l-1.003.828c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.954.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.43l1.004-.827c.292-.24.437-.613.43-.991a6.936 6.936 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"})]})}export{$ as default}; diff --git a/assets/Manual-Dz9ghE94.js b/assets/Manual-Dz9ghE94.js deleted file mode 100644 index 518e3777..00000000 --- a/assets/Manual-Dz9ghE94.js +++ /dev/null @@ -1,67 +0,0 @@ -import{r as p,j as e,R as b}from"./vendor-react-BiHfrq0e.js";import{S as N,J as w,C as c}from"./index-CpdATiEY.js";import{T as k,o as _,u as C,I as S,g as q,a as D,C as P,B as R,v as u,i as E}from"./vendor-ui-B0ssGG4c.js";import{N as I}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-gsap-a3sj5zmn.js";function B(){const[a,l]=p.useState(""),[n,t]=p.useState([{text:"QECTOR CLI Terminal Demo (simulation only)",type:"info"},{text:"No command is executed and no external service is contacted.",type:"info"}]),[s,h]=p.useState(!1),g=p.useRef(null),y=()=>{g.current?.scrollIntoView({behavior:"smooth"})};p.useEffect(()=>{y()},[n]);const f=async i=>{const m=i.trim().toLowerCase(),x=[...n,{text:`qector@sandbox:~$ ${i}`,type:"input"}];t(x),l(""),h(!0);const d=r=>new Promise(v=>setTimeout(v,r));m==="help"?(await d(200),t(r=>[...r,{text:"Available commands:",type:"info"},{text:" help - Show this menu",type:"output"},{text:" pip install qector-decoder-v3 - Show the install command",type:"output"},{text:" qector-doctor - Show the diagnostic command",type:"output"},{text:" qector bench -d 5 - Show a local measurement command",type:"output"},{text:" clear - Clear the terminal screen",type:"output"}])):m==="clear"?t([]):m==="pip install qector-decoder-v3"?(await d(300),t(r=>[...r,{text:"Simulation only: no package was downloaded.",type:"output"}]),await d(800),t(r=>[...r,{text:"Simulation only: no package was installed.",type:"output"}]),await d(400),t(r=>[...r,{text:"For a real install, follow the current PyPI and release verification instructions.",type:"output"}]),await d(600),t(r=>[...r,{text:"✓ Demo complete: no network request or filesystem change was made.",type:"success"}])):m==="qector-doctor"?(await d(300),t(r=>[...r,{text:"Simulation only: qector-doctor was not run.",type:"output"}]),await d(500),t(r=>[...r,{text:"Run qector-doctor in your installed environment to obtain real PASS / WARN / FAIL results.",type:"info"}])):m==="qector bench -d 5"||m==="qector bench --distance 5"?(await d(400),t(r=>[...r,{text:"Simulation only: no circuit or measurement was generated.",type:"output"}]),await d(1e3),t(r=>[...r,{text:"Run qector bench on your own declared workload to generate real local evidence.",type:"info"}])):(await d(150),t(r=>[...r,{text:`qector: command not found: ${i}. Type "help" for a list of commands.`,type:"info"}])),h(!1)},j=i=>{i.preventDefault(),!(!a.trim()||s)&&f(a)};return e.jsxs("div",{className:"flex flex-col border border-gridline bg-void/90 rounded-2xl overflow-hidden shadow-2xl",children:[e.jsxs("div",{className:"flex items-center justify-between px-4 py-3 bg-surface border-b border-gridline",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(k,{className:"w-4 h-4 text-cyan-300"}),e.jsx("span",{className:"font-mono text-xs text-secondary font-semibold",children:"interactive-cli.sh"})]}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-red-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-yellow-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-green-500/80"})]})]}),e.jsxs("div",{className:"p-5 font-mono text-xs h-72 overflow-y-auto space-y-2 select-text custom-scrollbar",children:[n.map((i,m)=>{let x="text-secondary";return i.type==="input"?x="text-cyan-300 font-semibold":i.type==="success"?x="text-green-400 font-semibold":i.type==="info"&&(x="text-gold-400"),e.jsx("div",{className:`${x} leading-relaxed whitespace-pre-wrap`,children:i.text},m)}),s&&e.jsxs("div",{className:"text-muted-foreground animate-pulse flex items-center gap-1",children:[e.jsx("span",{className:"w-1.5 h-3 bg-muted-foreground inline-block animate-caret"}),e.jsx("span",{children:"Executing..."})]}),e.jsx("div",{ref:g})]}),e.jsxs("form",{onSubmit:j,className:"flex items-center border-t border-gridline bg-surface/50 px-4 py-2",children:[e.jsx(_,{className:"w-4 h-4 text-cyan-300 shrink-0"}),e.jsx("input",{type:"text",value:a,onChange:i=>l(i.target.value),disabled:s,className:"flex-1 bg-transparent border-none outline-none font-mono text-xs text-cyan-300 px-2 py-1 placeholder-cyan-300/60 focus-visible:ring-2 focus-visible:ring-cyan-300",placeholder:'Type a command (e.g. "help", "pip install qector-decoder-v3")...',"aria-label":"Terminal input"}),e.jsx("button",{type:"submit",disabled:s||!a.trim(),className:"p-1 text-cyan-300 hover:text-cyan-200 disabled:text-muted/20 transition-colors","aria-label":"Run command",children:e.jsx(C,{className:"w-3.5 h-3.5 fill-current"})})]})]})}const L="font-mono text-[11px] bg-cyan-300/10 text-cyan-200 px-1 py-0.5 rounded border border-cyan-300/20";function O(a,l){return a.replace(/\\"/g,'"').split(/(`[^`\n]+`)/g).map((n,t)=>n.length>2&&n.startsWith("`")&&n.endsWith("`")?e.jsx("code",{className:L,children:n.slice(1,-1)},`${l}-${t}`):n)}function o({children:a}){const l=(n,t)=>typeof n=="string"?e.jsx(b.Fragment,{children:O(n,t)},t):Array.isArray(n)?e.jsx(e.Fragment,{children:n.map((s,h)=>e.jsx(b.Fragment,{children:l(s,`${t}-${h}`)},`${t}-${h}`))}):n;return e.jsx(e.Fragment,{children:l(a,"imd")})}function $(){const[a,l]=p.useState("overview"),n=[{id:"overview",title:"1. Overview",icon:e.jsx(S,{className:"w-4 h-4"})},{id:"installation",title:"2. Installation",icon:e.jsx(q,{className:"w-4 h-4"})},{id:"quickstart",title:"3. Quick Start",icon:e.jsx(T,{className:"w-4 h-4"})},{id:"decoders",title:"4. Choosing a Decoder",icon:e.jsx(D,{className:"w-4 h-4"})},{id:"measurement",title:"5. Local Measurements",icon:e.jsx(M,{className:"w-4 h-4"})},{id:"configuration",title:"6. Configuration",icon:e.jsx(U,{className:"w-4 h-4"})},{id:"troubleshooting",title:"7. Troubleshooting",icon:e.jsx(P,{className:"w-4 h-4"})},{id:"package-reference",title:"8. Package Reference (v1.0.0)",icon:e.jsx(R,{className:"w-4 h-4"})}],t=()=>{switch(a){case"overview":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-base leading-relaxed",children:"QECTOR Decoder v3 is a Python library for quantum error correction (QEC) decoding. v1.0.0 is the first stable release: it provides 17 decoder configurations and helpers integrated into a high-performance compiled Rust core with a plug-and-play Python API."}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/10 rounded-xl flex items-start gap-3",children:[e.jsx(E,{className:"w-5 h-5 text-cyan-300 shrink-0 mt-0.5"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Ecosystem Native:"})," Swappable backend design. You can easily plug QECTOR into Stim, PyMatching, Sinter, and Qiskit pipelines with minimal API modifications: v1.0.0 registers Sinter and qiskit-qec entry points so ",e.jsx("code",{className:"text-cyan-300",children:"sinter.collect()"})," works with no ",e.jsx("code",{className:"text-cyan-300",children:"custom_decoders="}),"."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-lg mb-3",children:"Key Highlights"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"v1.0.0: First Stable Release"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"API stability tiers, Relay-BP, CS-OSD(lambda, w), colour-code cluster_bposd, qector CLI + qector-doctor, Sinter/qiskit entry points, pymatching shim."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Validate on Your Hardware"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"Hardware, GPU, and measurement results are device-local. Use the package diagnostic and declared measurement workflow instead of treating site text as performance evidence."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Multi-Algorithm Diversity"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"17 decoder configurations from exact Blossom MWPM to Belief-Matching, BP-OSD, and GPU batch decoding."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Compiled Rust Core"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"A compiled Rust core with a Python API. Exact memory, latency, and throughput behavior depends on the selected workload and environment."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Optional GPU Paths"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"GPU paths are optional and environment-dependent. Read the installed release diagnostics before relying on them."})]})]})]})]});case"installation":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR ships as pre-compiled binary wheels on PyPI. Installing requires Python and pip."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Standard Installation"}),e.jsx(c,{code:"pip install qector-decoder-v3",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"System Requirements"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-sm",children:[e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary",children:"3.9, 3.10, 3.11, 3.12, 3.13 (64-bit)"})]}),e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Operating System"}),e.jsx("span",{className:"text-primary",children:"Linux, macOS, Windows (see current PyPI wheel metadata)"})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"GPU Requirements (Optional)"}),e.jsx("span",{className:"text-primary",children:"Optional and environment-dependent; check the installed release diagnostics"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Install Optional Dependencies"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"Install only the extras required by your workflow:"}),e.jsx(c,{code:`# Stim / Sinter / PyMatching ecosystem - pip install "qector-decoder-v3[stim]" - - # Full optional environment - pip install "qector-decoder-v3[all]"`,filename:"terminal",language:"bash"})]})]});case"quickstart":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Below is a minimal package-only example: create a rotated surface code, generate a syndrome, and verify a Blossom correction against the parity-check matrix."}),e.jsx(c,{filename:"surface_code_decode.py",language:"python",code:`import numpy as np -import qector_decoder_v3 as qector - -# Build a small code and inject one bit error. -code = qector.codes.rotated_surface_code(3) -error = np.zeros(code.n_qubits, dtype=np.uint8) -error[4] = 1 -syndrome = code.syndrome(error) - -# Decode with the graphlike Blossom backend. -correction = qector.BlossomDecoder( - code.check_to_qubits, - n_qubits=code.n_qubits, -).decode(syndrome) - -# The syndrome contract is H c = s (mod 2). -matrix = np.asarray(code.parity_check_matrix(), dtype=np.uint8) -assert np.array_equal((matrix @ correction.astype(int)) % 2, syndrome) -print("Syndrome-faithful correction")`})]});case"decoders":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR includes 17 decoder configurations categorized into stable, workload-sensitive, and experimental/research tiers. Choose based on code type and speed/accuracy tradeoffs:"}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse border border-gridline text-left text-sm rounded-xl overflow-hidden",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 font-semibold",children:[e.jsx("th",{className:"p-3",children:"Decoder"}),e.jsx("th",{className:"p-3",children:"Target Code"}),e.jsx("th",{className:"p-3",children:"Speed"}),e.jsx("th",{className:"p-3",children:"Accuracy"}),e.jsx("th",{className:"p-3",children:"Tier"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:[{name:"Blossom (MWPM)",target:"Graphlike CSS / surface",speed:"Workload-dependent",accuracy:"Minimum-weight matching objective",tier:"Stable"},{name:"Belief-Matching",target:"Correlated-noise research",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"BP-OSD",target:"qLDPC, LDPC",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"Union-Find",target:"Large Surface",speed:"Near-linear O(N)",accuracy:"Approximate",tier:"Production"},{name:"GPU Batch",target:"Supported batch workloads",speed:"Runtime-dependent",accuracy:"Validate locally",tier:"Workload-sensitive"},{name:"Hybrid / Cascade",target:"Degenerate, mixed",speed:"Iterative",accuracy:"High",tier:"Research"},{name:"Colour Code",target:"Triangular colour code",speed:"Moderate",accuracy:"Native",tier:"Research"}].map(s=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-semibold text-primary",children:s.name}),e.jsx("td",{className:"p-3 text-secondary",children:s.target}),e.jsx("td",{className:"p-3 text-secondary",children:s.speed}),e.jsx("td",{className:"p-3 text-secondary",children:s.accuracy}),e.jsx("td",{className:"p-3",children:e.jsx("span",{className:`px-2 py-0.5 rounded text-[10px] uppercase font-bold border ${s.tier==="Production"?"bg-green-400/10 text-green-400 border-green-400/20":"bg-gold-400/10 text-gold-400 border-gold-400/20"}`,children:s.tier})})]},s.name))})]})})]});case"measurement":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Hardware-specific measurements are not published on this site. If your project requires a local measurement, record the code, noise model, decoder configuration, seed, shots, environment, and raw artifact."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Environment Diagnostic"}),e.jsx(c,{code:"qector-doctor",filename:"terminal",language:"bash"}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["15-check diagnostic that reports PASS / WARN / FAIL per check and explains WHY a decoder is unavailable on your machine. Full report via ",e.jsx("code",{className:"text-cyan-300",children:"qector-doctor --json"}),"."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Local measurement via qector bench"}),e.jsx("p",{className:"text-secondary text-xs mb-2",children:"Use the command documented by the installed package release. The result is machine- and workload-specific, not a site claim:"}),e.jsx(c,{code:"qector bench --distance 5 --rounds 5 --shots 10000 --decoder blossom --noise 0.001",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Interactive Sandbox CLI"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"This UI is a command-output demonstration only; it does not execute commands or generate benchmark data:"}),e.jsx(B,{})]})]});case"configuration":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Detailed constructor configuration arguments for QECTOR's primary decoders:"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BlossomDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"adaptive_k"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`bool` (Default: `True`). Enable union-find matching pre-filtering to minimize match graph sizing."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"timeout"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`float` (Default: `None`). Maximum time (in seconds) allowed to resolve a single syndrome."})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BeliefMatchingDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_iters"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `30`). Maximum number of belief propagation iterations. Higher iterations improve syndrome accuracy."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"max_paths"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `10`). Maximum number of alternative paths generated for matching reweighting calculations."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_method"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:'`str` (Default: `"product_sum"`). Choice of BP update method. Options: `"product_sum"`, `"minimum_sum"`.'})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"GpuBatchDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"backend"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:'`str` (Default: `"cuda"`). Choose GPU compilation framework. Options: `"cuda"`, `"opencl"`.'})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"batch_size"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `1000`). Number of parallel syndromes transferred to and calculated in the GPU memory space."})})]})]})]})]});case"troubleshooting":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Solutions for common installation and running issues:"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:e.jsx(o,{children:"Issue: ImportError when importing `qector`"})})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Ensure your Python architecture matches the wheel and reinstall with `python -m pip install --force-reinstall qector-decoder-v3`."]})})]}),e.jsxs("div",{className:"p-4 bg-gold-400/5 border border-gold-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-gold-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: GPU / CUDA is not detected"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Verify drivers by typing `nvidia-smi` in terminal. Ensure CUDA Toolkit 11.8 or higher is installed and environment variable `CUDA_PATH` or `LD_LIBRARY_PATH` points to the CUDA install folder."]})})]}),e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: Out Of Memory (OOM) on GPU batching"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Lower the `batch_size` argument in your `GpuBatchDecoder` instantiation. For exceptionally large code distances (d > 15), prefer the linear-scaling `UnionFindDecoder` which reduces memory demands."]})})]})]})]});case"package-reference":return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl flex items-center justify-between flex-wrap gap-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-bold text-lg",children:"QECTOR Decoder v3: Extended Reference (package only)"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Version: 1.0.0 · PyPI: qector-decoder-v3 · Backend: Rust + PyO3"})]}),e.jsx("a",{href:"/docs/reference.md",target:"_blank",rel:"noopener noreferrer",download:"QECTOR Decoder v3 - Reference (package only).md",className:"btn-cyan text-xs py-2 px-4",children:"Download Reference (.md)"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"1. Installation & Platforms"}),e.jsx(c,{code:`pip install --upgrade "qector-decoder-v3>=1.0,<2" -pip install "qector-decoder-v3[stim]" # Stim / Sinter / PyMatching / LDPC ecosystem -pip install "qector-decoder-v3[bench]" # local measurement tools -pip install "qector-decoder-v3[all]" # optional full environment`,language:"bash",filename:"terminal"}),e.jsxs("div",{className:"mt-3 border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary font-mono",children:"3.9 - 3.13"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Platforms"}),e.jsx("span",{className:"text-primary",children:"Linux x86_64 (manylinux), Windows x64, macOS arm64"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License"}),e.jsx("span",{className:"text-primary",children:"Source-available (Free academic / non-commercial)"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Startup Notice"}),e.jsx("span",{className:"text-primary font-mono",children:"Suppressed with QECTOR_SILENT=1"})]}),e.jsxs("div",{className:"p-2.5 flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License Env"}),e.jsx("span",{className:"text-primary font-mono",children:"QECTOR_LICENSE + QECTOR_LICENSE_KEY (Ed25519 token)"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"2. Core Architecture"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1.5 text-secondary text-xs leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Rust Core (compiled extension):"})," Matching, UF, batch CPU/GPU algorithms."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Python Surface:"})," Clean API, Stim/Sinter compat, belief/GNN layers, licensing."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Zero-copy NumPy:"})," Direct memory access; GIL-free parallel decoding paths."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Version Symbol:"})," ",e.jsx("code",{className:"text-cyan-300",children:'qector_decoder_v3.__version__ == "1.0.0"'})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"3. Decoder Families & Incidence Rules"}),e.jsxs("p",{className:"text-muted-foreground text-xs mb-3",children:[e.jsx("strong",{className:"text-cyan-300",children:"Graph-like rule (UF family):"})," Every qubit must participate in at most two checks (participation ≤ 2). Matrices violating this raise a clear error (",e.jsx("code",{className:"text-red-400",children:"-32602"}),"). ",e.jsx("code",{className:"text-cyan-300",children:"BlossomDecoder"}),", ",e.jsx("code",{className:"text-cyan-300",children:"SparseBlossomDecoder"}),", and ",e.jsx("code",{className:"text-cyan-300",children:"BpOsdDecoder"})," accept general hyperedge codes."]}),e.jsx("div",{className:"overflow-x-auto rounded-xl",children:e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 font-bold border-b border-gridline bg-surface/30",children:[e.jsx("span",{children:"Class"}),e.jsx("span",{children:"Best for"}),e.jsx("span",{children:"Status"}),e.jsx("span",{children:"Graph-like?"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"UnionFindDecoder"}),e.jsx("span",{children:"Low-latency approximate"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes (participation ≤ 2)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"FastUnionFindDecoder"}),e.jsx("span",{children:"Faster UF hot path"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BlossomDecoder"}),e.jsx("span",{children:"Exact MWPM"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"SparseBlossomDecoder"}),e.jsx("span",{children:"Near-optimal matching"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BeliefMatching"}),e.jsx("span",{children:"Correlated-noise accuracy"}),e.jsx("span",{children:"Research"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BpOsdDecoder"}),e.jsx("span",{children:"LDPC / qLDPC"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BatchDecoder"}),e.jsx("span",{children:"High-throughput CPU batch"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes for UF batch"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"CUDABatchDecoder"}),e.jsx("span",{children:"GPU batch (NVIDIA)"}),e.jsx("span",{children:"Runtime-dependent"}),e.jsx("span",{children:"N/A"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"AutoDecoder"}),e.jsx("span",{children:"7-tier self-debugging fallback"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"N/A"})]})]})})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"4. Code Generators"}),e.jsx(c,{code:`from qector_decoder_v3 import ( - generate_repetition_code_checks, # (checks, n_qubits) - generate_ring_code_checks, # (checks, n_qubits) - generate_surface_code_checks, # surface-code checks -)`,language:"python",filename:"python"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"5. MCP and General-Matrix Workflows"}),e.jsx(c,{code:`# The standalone library MCP server is documented separately. -# Start it from the plugin package with: -python mcp/mcp_server_library.py - -# Initialize and call tools/list before using a tool.`,language:"python",filename:"mcp_server.py"}),e.jsx("p",{className:"text-muted-foreground text-xs mt-2 mb-3",children:"For general matrices, use the decoder family documented for that workload and verify every returned correction against H c = s (mod 2):"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import BlossomDecoder, SparseBlossomDecoder, BpOsdDecoder - -def decode_hyperedge(checks, n_qubits, syndrome, kind="Blossom", **opts): - syn = np.asarray(syndrome, dtype=np.uint8).ravel() - if kind in ("Blossom", "blossom"): - return BlossomDecoder(checks, n_qubits).decode(syn) - if kind in ("SparseBlossom", "sparse_blossom"): - return SparseBlossomDecoder(checks, n_qubits).decode(syn) - if kind.lower() in ("bposd", "bp_osd"): - H = np.zeros((len(checks), n_qubits), dtype=np.uint8) - for i, c in enumerate(checks): - for q in c: H[i, q] ^= 1 - return BpOsdDecoder(H, error_rate=opts.get("error_rate", 0.05)).decode(syn) - raise ValueError(f"unsupported kind: {kind}")`,language:"python",filename:"hyperedge_workaround.py"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"6. Verified Fallback Pattern"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed mb-3",children:"A fallback is safe only when each candidate is checked against the same parity-check matrix. The following pattern uses the stable Union-Find and Blossom classes and fails closed if a candidate is not syndrome-faithful:"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder - -def faithful_decode(check_to_qubits, n_qubits, syndrome): - syndrome = np.asarray(syndrome, dtype=np.uint8).ravel() - matrix = np.zeros((len(check_to_qubits), n_qubits), dtype=np.uint8) - for check, qubits in enumerate(check_to_qubits): - matrix[check, qubits] = 1 - - for decoder_type in (FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder): - try: - correction = np.asarray( - decoder_type(check_to_qubits, n_qubits=n_qubits).decode(syndrome), - dtype=np.uint8, - ) - if np.array_equal((matrix @ correction.astype(int)) % 2, syndrome): - return correction, decoder_type.__name__ - except Exception: - continue - raise RuntimeError("No syndrome-faithful decoder result")`,language:"python",filename:"cascade_decode.py"})]})]});default:return null}};return e.jsxs(e.Fragment,{children:[e.jsx(N,{title:"User Manual · QECTOR",description:"Complete user manual for QECTOR Decoder v3. Installation, configuration, decoder selection, validation, and troubleshooting."}),e.jsx(w,{data:{"@context":"https://schema.org","@type":"HowTo",name:"How to Install and Run QECTOR Decoder v3",description:"Step-by-step instructions to install QECTOR, verify a syndrome-faithful decode, select a decoder, and review evidence boundaries.",step:[{"@type":"HowToStep",name:"Install the package",text:"Run pip install qector-decoder-v3 in your Python terminal to install the Rust core binary wheels."},{"@type":"HowToStep",name:"Verify the installation",text:'Verify the installation with python -c "import qector_decoder_v3 as qd; print(qd.__version__)" and a small syndrome-faithfulness check.'},{"@type":"HowToStep",name:"Review evidence boundaries",text:"Read the v1.0.0 reference manual and record code, noise model, decoder configuration, seed, environment, and artifact metadata before making a local measurement."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"15 backend families powering 17 decoder configurations · GPU Batch · Stim · Sinter · Qiskit"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(I,{text:"User Manual",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Complete guide to QECTOR Decoder v3: installation, decoder selection, local measurements, diagnostics, and ecosystem integration."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsx("div",{className:"max-w-6xl mx-auto",children:e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-4 gap-8",children:[e.jsx("div",{className:"lg:col-span-1",children:e.jsx("nav",{"aria-label":"Manual sections",className:"sticky top-24 space-y-1 bg-surface/10 p-2 rounded-xl border border-gridline/50",children:n.map(s=>e.jsxs("button",{type:"button",onClick:()=>l(s.id),"aria-current":a===s.id?"true":void 0,className:`w-full text-left px-3.5 py-2.5 rounded-lg text-sm font-medium transition-all duration-200 flex items-center gap-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cyan-300 ${a===s.id?"bg-cyan-300/10 text-cyan-300 border border-cyan-300/20":"text-secondary hover:text-primary hover:bg-white/5 border border-transparent"}`,children:[s.icon,s.title]},s.id))})}),e.jsx("div",{className:"lg:col-span-3",children:e.jsxs("div",{className:"card-surface bg-surface/20 min-h-[500px]",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6 text-primary border-b border-gridline pb-4 flex items-center gap-2",children:n.find(s=>s.id===a)?.title.substring(3)}),e.jsx("div",{className:"transition-all duration-300",children:t()})]})})]})})})]})}function T(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.813 15.904 9 21l-.813-5.096L3 15l5.096-.813L9 9l.813 5.096L15 15l-5.187.904Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19.071 4.929a10 10 0 0 0-14.142 0M12 3v3m0 12v3M3 12h3m12 0h3",opacity:"0.5"})]})}function M(a){return e.jsx("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v5.25c0 .621-.504 1.125-1.125 1.125h-2.25A1.125 1.125 0 0 1 3 18.375v-5.25ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v9.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125v-9.75ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v14.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z"})})}function U(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.324.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.43l-1.003.828c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.954.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.43l1.004-.827c.292-.24.437-.613.43-.991a6.936 6.936 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"})]})}export{$ as default}; diff --git a/assets/Manual-RdcO5vwC.js b/assets/Manual-RdcO5vwC.js deleted file mode 100644 index 5753cbc8..00000000 --- a/assets/Manual-RdcO5vwC.js +++ /dev/null @@ -1,67 +0,0 @@ -import{r as p,j as e,R as b}from"./vendor-react-BiHfrq0e.js";import{S as N,J as w,C as c}from"./index-BcbVjARk.js";import{T as k,o as _,u as C,I as S,g as q,a as D,C as P,B as R,v as u,i as E}from"./vendor-ui-B0ssGG4c.js";import{N as I}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-gsap-a3sj5zmn.js";function B(){const[a,l]=p.useState(""),[n,t]=p.useState([{text:"QECTOR CLI Terminal Demo (simulation only)",type:"info"},{text:"No command is executed and no external service is contacted.",type:"info"}]),[s,h]=p.useState(!1),g=p.useRef(null),y=()=>{g.current?.scrollIntoView({behavior:"smooth"})};p.useEffect(()=>{y()},[n]);const f=async i=>{const m=i.trim().toLowerCase(),x=[...n,{text:`qector@sandbox:~$ ${i}`,type:"input"}];t(x),l(""),h(!0);const d=r=>new Promise(v=>setTimeout(v,r));m==="help"?(await d(200),t(r=>[...r,{text:"Available commands:",type:"info"},{text:" help - Show this menu",type:"output"},{text:" pip install qector-decoder-v3 - Show the install command",type:"output"},{text:" qector-doctor - Show the diagnostic command",type:"output"},{text:" qector bench -d 5 - Show a local measurement command",type:"output"},{text:" clear - Clear the terminal screen",type:"output"}])):m==="clear"?t([]):m==="pip install qector-decoder-v3"?(await d(300),t(r=>[...r,{text:"Simulation only: no package was downloaded.",type:"output"}]),await d(800),t(r=>[...r,{text:"Simulation only: no package was installed.",type:"output"}]),await d(400),t(r=>[...r,{text:"For a real install, follow the current PyPI and release verification instructions.",type:"output"}]),await d(600),t(r=>[...r,{text:"✓ Demo complete: no network request or filesystem change was made.",type:"success"}])):m==="qector-doctor"?(await d(300),t(r=>[...r,{text:"Simulation only: qector-doctor was not run.",type:"output"}]),await d(500),t(r=>[...r,{text:"Run qector-doctor in your installed environment to obtain real PASS / WARN / FAIL results.",type:"info"}])):m==="qector bench -d 5"||m==="qector bench --distance 5"?(await d(400),t(r=>[...r,{text:"Simulation only: no circuit or measurement was generated.",type:"output"}]),await d(1e3),t(r=>[...r,{text:"Run qector bench on your own declared workload to generate real local evidence.",type:"info"}])):(await d(150),t(r=>[...r,{text:`qector: command not found: ${i}. Type "help" for a list of commands.`,type:"info"}])),h(!1)},j=i=>{i.preventDefault(),!(!a.trim()||s)&&f(a)};return e.jsxs("div",{className:"flex flex-col border border-gridline bg-void/90 rounded-2xl overflow-hidden shadow-2xl",children:[e.jsxs("div",{className:"flex items-center justify-between px-4 py-3 bg-surface border-b border-gridline",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(k,{className:"w-4 h-4 text-cyan-300"}),e.jsx("span",{className:"font-mono text-xs text-secondary font-semibold",children:"interactive-cli.sh"})]}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-red-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-yellow-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-green-500/80"})]})]}),e.jsxs("div",{className:"p-5 font-mono text-xs h-72 overflow-y-auto space-y-2 select-text custom-scrollbar",children:[n.map((i,m)=>{let x="text-secondary";return i.type==="input"?x="text-cyan-300 font-semibold":i.type==="success"?x="text-green-400 font-semibold":i.type==="info"&&(x="text-gold-400"),e.jsx("div",{className:`${x} leading-relaxed whitespace-pre-wrap`,children:i.text},m)}),s&&e.jsxs("div",{className:"text-muted-foreground animate-pulse flex items-center gap-1",children:[e.jsx("span",{className:"w-1.5 h-3 bg-muted-foreground inline-block animate-caret"}),e.jsx("span",{children:"Executing..."})]}),e.jsx("div",{ref:g})]}),e.jsxs("form",{onSubmit:j,className:"flex items-center border-t border-gridline bg-surface/50 px-4 py-2",children:[e.jsx(_,{className:"w-4 h-4 text-cyan-300 shrink-0"}),e.jsx("input",{type:"text",value:a,onChange:i=>l(i.target.value),disabled:s,className:"flex-1 bg-transparent border-none outline-none font-mono text-xs text-cyan-300 px-2 py-1 placeholder-cyan-300/60 focus-visible:ring-2 focus-visible:ring-cyan-300",placeholder:'Type a command (e.g. "help", "pip install qector-decoder-v3")...',"aria-label":"Terminal input"}),e.jsx("button",{type:"submit",disabled:s||!a.trim(),className:"p-1 text-cyan-300 hover:text-cyan-200 disabled:text-muted/20 transition-colors","aria-label":"Run command",children:e.jsx(C,{className:"w-3.5 h-3.5 fill-current"})})]})]})}const L="font-mono text-[11px] bg-cyan-300/10 text-cyan-200 px-1 py-0.5 rounded border border-cyan-300/20";function O(a,l){return a.replace(/\\"/g,'"').split(/(`[^`\n]+`)/g).map((n,t)=>n.length>2&&n.startsWith("`")&&n.endsWith("`")?e.jsx("code",{className:L,children:n.slice(1,-1)},`${l}-${t}`):n)}function o({children:a}){const l=(n,t)=>typeof n=="string"?e.jsx(b.Fragment,{children:O(n,t)},t):Array.isArray(n)?e.jsx(e.Fragment,{children:n.map((s,h)=>e.jsx(b.Fragment,{children:l(s,`${t}-${h}`)},`${t}-${h}`))}):n;return e.jsx(e.Fragment,{children:l(a,"imd")})}function $(){const[a,l]=p.useState("overview"),n=[{id:"overview",title:"1. Overview",icon:e.jsx(S,{className:"w-4 h-4"})},{id:"installation",title:"2. Installation",icon:e.jsx(q,{className:"w-4 h-4"})},{id:"quickstart",title:"3. Quick Start",icon:e.jsx(T,{className:"w-4 h-4"})},{id:"decoders",title:"4. Choosing a Decoder",icon:e.jsx(D,{className:"w-4 h-4"})},{id:"measurement",title:"5. Local Measurements",icon:e.jsx(M,{className:"w-4 h-4"})},{id:"configuration",title:"6. Configuration",icon:e.jsx(U,{className:"w-4 h-4"})},{id:"troubleshooting",title:"7. Troubleshooting",icon:e.jsx(P,{className:"w-4 h-4"})},{id:"package-reference",title:"8. Package Reference (v1.0.0)",icon:e.jsx(R,{className:"w-4 h-4"})}],t=()=>{switch(a){case"overview":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-base leading-relaxed",children:"QECTOR Decoder v3 is a Python library for quantum error correction (QEC) decoding. v1.0.0 is the first stable release: it provides 17 decoder configurations and helpers integrated into a high-performance compiled Rust core with a plug-and-play Python API."}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/10 rounded-xl flex items-start gap-3",children:[e.jsx(E,{className:"w-5 h-5 text-cyan-300 shrink-0 mt-0.5"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Ecosystem Native:"})," Swappable backend design. You can easily plug QECTOR into Stim, PyMatching, Sinter, and Qiskit pipelines with minimal API modifications: v1.0.0 registers Sinter and qiskit-qec entry points so ",e.jsx("code",{className:"text-cyan-300",children:"sinter.collect()"})," works with no ",e.jsx("code",{className:"text-cyan-300",children:"custom_decoders="}),"."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-lg mb-3",children:"Key Highlights"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"v1.0.0: First Stable Release"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"API stability tiers, Relay-BP, CS-OSD(lambda, w), colour-code cluster_bposd, qector CLI + qector-doctor, Sinter/qiskit entry points, pymatching shim."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Validate on Your Hardware"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"Hardware, GPU, and measurement results are device-local. Use the package diagnostic and declared measurement workflow instead of treating site text as performance evidence."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Multi-Algorithm Diversity"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"17 decoder configurations from exact Blossom MWPM to Belief-Matching, BP-OSD, and GPU batch decoding."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Compiled Rust Core"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"A compiled Rust core with a Python API. Exact memory, latency, and throughput behavior depends on the selected workload and environment."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Optional GPU Paths"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"GPU paths are optional and environment-dependent. Read the installed release diagnostics before relying on them."})]})]})]})]});case"installation":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR ships as pre-compiled binary wheels on PyPI. Installing requires Python and pip."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Standard Installation"}),e.jsx(c,{code:"pip install qector-decoder-v3",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"System Requirements"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-sm",children:[e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary",children:"3.9, 3.10, 3.11, 3.12, 3.13 (64-bit)"})]}),e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Operating System"}),e.jsx("span",{className:"text-primary",children:"Linux, macOS, Windows (see current PyPI wheel metadata)"})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"GPU Requirements (Optional)"}),e.jsx("span",{className:"text-primary",children:"Optional and environment-dependent; check the installed release diagnostics"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Install Optional Dependencies"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"Install only the extras required by your workflow:"}),e.jsx(c,{code:`# Stim / Sinter / PyMatching ecosystem - pip install "qector-decoder-v3[stim]" - - # Full optional environment - pip install "qector-decoder-v3[all]"`,filename:"terminal",language:"bash"})]})]});case"quickstart":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Below is a minimal package-only example: create a rotated surface code, generate a syndrome, and verify a Blossom correction against the parity-check matrix."}),e.jsx(c,{filename:"surface_code_decode.py",language:"python",code:`import numpy as np -import qector_decoder_v3 as qector - -# Build a small code and inject one bit error. -code = qector.codes.rotated_surface_code(3) -error = np.zeros(code.n_qubits, dtype=np.uint8) -error[4] = 1 -syndrome = code.syndrome(error) - -# Decode with the graphlike Blossom backend. -correction = qector.BlossomDecoder( - code.check_to_qubits, - n_qubits=code.n_qubits, -).decode(syndrome) - -# The syndrome contract is H c = s (mod 2). -matrix = np.asarray(code.parity_check_matrix(), dtype=np.uint8) -assert np.array_equal((matrix @ correction.astype(int)) % 2, syndrome) -print("Syndrome-faithful correction")`})]});case"decoders":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR includes 17 decoder configurations categorized into stable, workload-sensitive, and experimental/research tiers. Choose based on code type and speed/accuracy tradeoffs:"}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse border border-gridline text-left text-sm rounded-xl overflow-hidden",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 font-semibold",children:[e.jsx("th",{className:"p-3",children:"Decoder"}),e.jsx("th",{className:"p-3",children:"Target Code"}),e.jsx("th",{className:"p-3",children:"Speed"}),e.jsx("th",{className:"p-3",children:"Accuracy"}),e.jsx("th",{className:"p-3",children:"Tier"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:[{name:"Blossom (MWPM)",target:"Graphlike CSS / surface",speed:"Workload-dependent",accuracy:"Minimum-weight matching objective",tier:"Stable"},{name:"Belief-Matching",target:"Correlated-noise research",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"BP-OSD",target:"qLDPC, LDPC",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"Union-Find",target:"Large Surface",speed:"Near-linear O(N)",accuracy:"Approximate",tier:"Production"},{name:"GPU Batch",target:"Supported batch workloads",speed:"Runtime-dependent",accuracy:"Validate locally",tier:"Workload-sensitive"},{name:"Hybrid / Cascade",target:"Degenerate, mixed",speed:"Iterative",accuracy:"High",tier:"Research"},{name:"Colour Code",target:"Triangular colour code",speed:"Moderate",accuracy:"Native",tier:"Research"}].map(s=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-semibold text-primary",children:s.name}),e.jsx("td",{className:"p-3 text-secondary",children:s.target}),e.jsx("td",{className:"p-3 text-secondary",children:s.speed}),e.jsx("td",{className:"p-3 text-secondary",children:s.accuracy}),e.jsx("td",{className:"p-3",children:e.jsx("span",{className:`px-2 py-0.5 rounded text-[10px] uppercase font-bold border ${s.tier==="Production"?"bg-green-400/10 text-green-400 border-green-400/20":"bg-gold-400/10 text-gold-400 border-gold-400/20"}`,children:s.tier})})]},s.name))})]})})]});case"measurement":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Hardware-specific measurements are not published on this site. If your project requires a local measurement, record the code, noise model, decoder configuration, seed, shots, environment, and raw artifact."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Environment Diagnostic"}),e.jsx(c,{code:"qector-doctor",filename:"terminal",language:"bash"}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["15-check diagnostic that reports PASS / WARN / FAIL per check and explains WHY a decoder is unavailable on your machine. Full report via ",e.jsx("code",{className:"text-cyan-300",children:"qector-doctor --json"}),"."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Local measurement via qector bench"}),e.jsx("p",{className:"text-secondary text-xs mb-2",children:"Use the command documented by the installed package release. The result is machine- and workload-specific, not a site claim:"}),e.jsx(c,{code:"qector bench --distance 5 --rounds 5 --shots 10000 --decoder blossom --noise 0.001",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Interactive Sandbox CLI"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"This UI is a command-output demonstration only; it does not execute commands or generate benchmark data:"}),e.jsx(B,{})]})]});case"configuration":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Detailed constructor configuration arguments for QECTOR's primary decoders:"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BlossomDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"adaptive_k"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`bool` (Default: `True`). Enable union-find matching pre-filtering to minimize match graph sizing."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"timeout"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`float` (Default: `None`). Maximum time (in seconds) allowed to resolve a single syndrome."})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BeliefMatchingDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_iters"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `30`). Maximum number of belief propagation iterations. Higher iterations improve syndrome accuracy."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"max_paths"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `10`). Maximum number of alternative paths generated for matching reweighting calculations."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_method"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:'`str` (Default: `"product_sum"`). Choice of BP update method. Options: `"product_sum"`, `"minimum_sum"`.'})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"GpuBatchDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"backend"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:'`str` (Default: `"cuda"`). Choose GPU compilation framework. Options: `"cuda"`, `"opencl"`.'})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"batch_size"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `1000`). Number of parallel syndromes transferred to and calculated in the GPU memory space."})})]})]})]})]});case"troubleshooting":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Solutions for common installation and running issues:"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:e.jsx(o,{children:"Issue: ImportError when importing `qector`"})})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Ensure your Python architecture matches the wheel and reinstall with `python -m pip install --force-reinstall qector-decoder-v3`."]})})]}),e.jsxs("div",{className:"p-4 bg-gold-400/5 border border-gold-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-gold-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: GPU / CUDA is not detected"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Verify drivers by typing `nvidia-smi` in terminal. Ensure CUDA Toolkit 11.8 or higher is installed and environment variable `CUDA_PATH` or `LD_LIBRARY_PATH` points to the CUDA install folder."]})})]}),e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: Out Of Memory (OOM) on GPU batching"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Lower the `batch_size` argument in your `GpuBatchDecoder` instantiation. For exceptionally large code distances (d > 15), prefer the linear-scaling `UnionFindDecoder` which reduces memory demands."]})})]})]})]});case"package-reference":return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl flex items-center justify-between flex-wrap gap-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-bold text-lg",children:"QECTOR Decoder v3: Extended Reference (package only)"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Version: 1.0.0 · PyPI: qector-decoder-v3 · Backend: Rust + PyO3"})]}),e.jsx("a",{href:"/docs/reference.md",target:"_blank",rel:"noopener noreferrer",download:"QECTOR Decoder v3 - Reference (package only).md",className:"btn-cyan text-xs py-2 px-4",children:"Download Reference (.md)"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"1. Installation & Platforms"}),e.jsx(c,{code:`pip install qector-decoder-v3==1.0.0 -pip install "qector-decoder-v3[stim]" # Stim / Sinter / PyMatching / LDPC ecosystem -pip install "qector-decoder-v3[bench]" # local measurement tools -pip install "qector-decoder-v3[all]" # optional full environment`,language:"bash",filename:"terminal"}),e.jsxs("div",{className:"mt-3 border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary font-mono",children:"3.9 - 3.13"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Platforms"}),e.jsx("span",{className:"text-primary",children:"Linux x86_64 (manylinux), Windows x64, macOS arm64"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License"}),e.jsx("span",{className:"text-primary",children:"Source-available (Free academic / non-commercial)"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Startup Notice"}),e.jsx("span",{className:"text-primary font-mono",children:"Suppressed with QECTOR_SILENT=1"})]}),e.jsxs("div",{className:"p-2.5 flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License Env"}),e.jsx("span",{className:"text-primary font-mono",children:"QECTOR_LICENSE + QECTOR_LICENSE_KEY (Ed25519 token)"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"2. Core Architecture"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1.5 text-secondary text-xs leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Rust Core (compiled extension):"})," Matching, UF, batch CPU/GPU algorithms."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Python Surface:"})," Clean API, Stim/Sinter compat, belief/GNN layers, licensing."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Zero-copy NumPy:"})," Direct memory access; GIL-free parallel decoding paths."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Version Symbol:"})," ",e.jsx("code",{className:"text-cyan-300",children:'qector_decoder_v3.__version__ == "1.0.0"'})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"3. Decoder Families & Incidence Rules"}),e.jsxs("p",{className:"text-muted-foreground text-xs mb-3",children:[e.jsx("strong",{className:"text-cyan-300",children:"Graph-like rule (UF family):"})," Every qubit must participate in at most two checks (participation ≤ 2). Matrices violating this raise a clear error (",e.jsx("code",{className:"text-red-400",children:"-32602"}),"). ",e.jsx("code",{className:"text-cyan-300",children:"BlossomDecoder"}),", ",e.jsx("code",{className:"text-cyan-300",children:"SparseBlossomDecoder"}),", and ",e.jsx("code",{className:"text-cyan-300",children:"BpOsdDecoder"})," accept general hyperedge codes."]}),e.jsx("div",{className:"overflow-x-auto rounded-xl",children:e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 font-bold border-b border-gridline bg-surface/30",children:[e.jsx("span",{children:"Class"}),e.jsx("span",{children:"Best for"}),e.jsx("span",{children:"Status"}),e.jsx("span",{children:"Graph-like?"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"UnionFindDecoder"}),e.jsx("span",{children:"Low-latency approximate"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes (participation ≤ 2)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"FastUnionFindDecoder"}),e.jsx("span",{children:"Faster UF hot path"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BlossomDecoder"}),e.jsx("span",{children:"Exact MWPM"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"SparseBlossomDecoder"}),e.jsx("span",{children:"Near-optimal matching"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BeliefMatching"}),e.jsx("span",{children:"Correlated-noise accuracy"}),e.jsx("span",{children:"Research"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BpOsdDecoder"}),e.jsx("span",{children:"LDPC / qLDPC"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BatchDecoder"}),e.jsx("span",{children:"High-throughput CPU batch"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes for UF batch"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"CUDABatchDecoder"}),e.jsx("span",{children:"GPU batch (NVIDIA)"}),e.jsx("span",{children:"Runtime-dependent"}),e.jsx("span",{children:"N/A"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"AutoDecoder"}),e.jsx("span",{children:"7-tier self-debugging fallback"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"N/A"})]})]})})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"4. Code Generators"}),e.jsx(c,{code:`from qector_decoder_v3 import ( - generate_repetition_code_checks, # (checks, n_qubits) - generate_ring_code_checks, # (checks, n_qubits) - generate_surface_code_checks, # surface-code checks -)`,language:"python",filename:"python"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"5. MCP and General-Matrix Workflows"}),e.jsx(c,{code:`# The standalone library MCP server is documented separately. -# Start it from the plugin package with: -python mcp/mcp_server_library.py - -# Initialize and call tools/list before using a tool.`,language:"python",filename:"mcp_server.py"}),e.jsx("p",{className:"text-muted-foreground text-xs mt-2 mb-3",children:"For general matrices, use the decoder family documented for that workload and verify every returned correction against H c = s (mod 2):"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import BlossomDecoder, SparseBlossomDecoder, BpOsdDecoder - -def decode_hyperedge(checks, n_qubits, syndrome, kind="Blossom", **opts): - syn = np.asarray(syndrome, dtype=np.uint8).ravel() - if kind in ("Blossom", "blossom"): - return BlossomDecoder(checks, n_qubits).decode(syn) - if kind in ("SparseBlossom", "sparse_blossom"): - return SparseBlossomDecoder(checks, n_qubits).decode(syn) - if kind.lower() in ("bposd", "bp_osd"): - H = np.zeros((len(checks), n_qubits), dtype=np.uint8) - for i, c in enumerate(checks): - for q in c: H[i, q] ^= 1 - return BpOsdDecoder(H, error_rate=opts.get("error_rate", 0.05)).decode(syn) - raise ValueError(f"unsupported kind: {kind}")`,language:"python",filename:"hyperedge_workaround.py"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"6. Verified Fallback Pattern"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed mb-3",children:"A fallback is safe only when each candidate is checked against the same parity-check matrix. The following pattern uses the stable Union-Find and Blossom classes and fails closed if a candidate is not syndrome-faithful:"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder - -def faithful_decode(check_to_qubits, n_qubits, syndrome): - syndrome = np.asarray(syndrome, dtype=np.uint8).ravel() - matrix = np.zeros((len(check_to_qubits), n_qubits), dtype=np.uint8) - for check, qubits in enumerate(check_to_qubits): - matrix[check, qubits] = 1 - - for decoder_type in (FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder): - try: - correction = np.asarray( - decoder_type(check_to_qubits, n_qubits=n_qubits).decode(syndrome), - dtype=np.uint8, - ) - if np.array_equal((matrix @ correction.astype(int)) % 2, syndrome): - return correction, decoder_type.__name__ - except Exception: - continue - raise RuntimeError("No syndrome-faithful decoder result")`,language:"python",filename:"cascade_decode.py"})]})]});default:return null}};return e.jsxs(e.Fragment,{children:[e.jsx(N,{title:"User Manual · QECTOR",description:"Complete user manual for QECTOR Decoder v3. Installation, configuration, decoder selection, validation, and troubleshooting."}),e.jsx(w,{data:{"@context":"https://schema.org","@type":"HowTo",name:"How to Install and Run QECTOR Decoder v3",description:"Step-by-step instructions to install QECTOR, verify a syndrome-faithful decode, select a decoder, and review evidence boundaries.",step:[{"@type":"HowToStep",name:"Install the package",text:"Run pip install qector-decoder-v3 in your Python terminal to install the Rust core binary wheels."},{"@type":"HowToStep",name:"Verify the installation",text:'Verify the installation with python -c "import qector_decoder_v3 as qd; print(qd.__version__)" and a small syndrome-faithfulness check.'},{"@type":"HowToStep",name:"Review evidence boundaries",text:"Read the v1.0.0 reference manual and record code, noise model, decoder configuration, seed, environment, and artifact metadata before making a local measurement."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"15 backend families powering 17 decoder configurations · GPU Batch · Stim · Sinter · Qiskit"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(I,{text:"User Manual",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Complete guide to QECTOR Decoder v3: installation, decoder selection, local measurements, diagnostics, and ecosystem integration."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsx("div",{className:"max-w-6xl mx-auto",children:e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-4 gap-8",children:[e.jsx("div",{className:"lg:col-span-1",children:e.jsx("nav",{"aria-label":"Manual sections",className:"sticky top-24 space-y-1 bg-surface/10 p-2 rounded-xl border border-gridline/50",children:n.map(s=>e.jsxs("button",{type:"button",onClick:()=>l(s.id),"aria-current":a===s.id?"true":void 0,className:`w-full text-left px-3.5 py-2.5 rounded-lg text-sm font-medium transition-all duration-200 flex items-center gap-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cyan-300 ${a===s.id?"bg-cyan-300/10 text-cyan-300 border border-cyan-300/20":"text-secondary hover:text-primary hover:bg-white/5 border border-transparent"}`,children:[s.icon,s.title]},s.id))})}),e.jsx("div",{className:"lg:col-span-3",children:e.jsxs("div",{className:"card-surface bg-surface/20 min-h-[500px]",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6 text-primary border-b border-gridline pb-4 flex items-center gap-2",children:n.find(s=>s.id===a)?.title.substring(3)}),e.jsx("div",{className:"transition-all duration-300",children:t()})]})})]})})})]})}function T(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.813 15.904 9 21l-.813-5.096L3 15l5.096-.813L9 9l.813 5.096L15 15l-5.187.904Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19.071 4.929a10 10 0 0 0-14.142 0M12 3v3m0 12v3M3 12h3m12 0h3",opacity:"0.5"})]})}function M(a){return e.jsx("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v5.25c0 .621-.504 1.125-1.125 1.125h-2.25A1.125 1.125 0 0 1 3 18.375v-5.25ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v9.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125v-9.75ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v14.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z"})})}function U(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.324.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.43l-1.003.828c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.954.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.43l1.004-.827c.292-.24.437-.613.43-.991a6.936 6.936 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"})]})}export{$ as default}; diff --git a/assets/Manual-bANcf9AE.js b/assets/Manual-bANcf9AE.js deleted file mode 100644 index 8e947296..00000000 --- a/assets/Manual-bANcf9AE.js +++ /dev/null @@ -1,67 +0,0 @@ -import{r as p,j as e,R as b}from"./vendor-react-BiHfrq0e.js";import{S as N,J as w,C as c}from"./index-DayaklK-.js";import{T as k,s as _,u as C,I as S,g as q,a as D,C as P,B as R,v as u,i as E}from"./vendor-ui-B8TlNU4J.js";import{N as I}from"./NeuralReveal-uYarhiMA.js";import"./vendor-gsap-a3sj5zmn.js";function B(){const[a,l]=p.useState(""),[n,t]=p.useState([{text:"QECTOR CLI Terminal Demo (simulation only)",type:"info"},{text:"No command is executed and no external service is contacted.",type:"info"}]),[s,h]=p.useState(!1),g=p.useRef(null),y=()=>{g.current?.scrollIntoView({behavior:"smooth"})};p.useEffect(()=>{y()},[n]);const f=async i=>{const m=i.trim().toLowerCase(),x=[...n,{text:`qector@sandbox:~$ ${i}`,type:"input"}];t(x),l(""),h(!0);const o=r=>new Promise(v=>setTimeout(v,r));m==="help"?(await o(200),t(r=>[...r,{text:"Available commands:",type:"info"},{text:" help - Show this menu",type:"output"},{text:" pip install qector-decoder-v3 - Show the install command",type:"output"},{text:" qector-doctor - Show the diagnostic command",type:"output"},{text:" qector bench -d 5 - Show a local measurement command",type:"output"},{text:" clear - Clear the terminal screen",type:"output"}])):m==="clear"?t([]):m==="pip install qector-decoder-v3"?(await o(300),t(r=>[...r,{text:"Simulation only: no package was downloaded.",type:"output"}]),await o(800),t(r=>[...r,{text:"Simulation only: no package was installed.",type:"output"}]),await o(400),t(r=>[...r,{text:"For a real install, follow the current PyPI and release verification instructions.",type:"output"}]),await o(600),t(r=>[...r,{text:"✓ Demo complete: no network request or filesystem change was made.",type:"success"}])):m==="qector-doctor"?(await o(300),t(r=>[...r,{text:"Simulation only: qector-doctor was not run.",type:"output"}]),await o(500),t(r=>[...r,{text:"Run qector-doctor in your installed environment to obtain real PASS / WARN / FAIL results.",type:"info"}])):m==="qector bench -d 5"||m==="qector bench --distance 5"?(await o(400),t(r=>[...r,{text:"Simulation only: no circuit or measurement was generated.",type:"output"}]),await o(1e3),t(r=>[...r,{text:"Run qector bench on your own declared workload to generate real local evidence.",type:"info"}])):(await o(150),t(r=>[...r,{text:`qector: command not found: ${i}. Type "help" for a list of commands.`,type:"info"}])),h(!1)},j=i=>{i.preventDefault(),!(!a.trim()||s)&&f(a)};return e.jsxs("div",{className:"flex flex-col border border-gridline bg-void/90 rounded-2xl overflow-hidden shadow-2xl",children:[e.jsxs("div",{className:"flex items-center justify-between px-4 py-3 bg-surface border-b border-gridline",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(k,{className:"w-4 h-4 text-cyan-300"}),e.jsx("span",{className:"font-mono text-xs text-secondary font-semibold",children:"interactive-cli.sh"})]}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-red-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-yellow-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-green-500/80"})]})]}),e.jsxs("div",{className:"p-5 font-mono text-xs h-72 overflow-y-auto space-y-2 select-text custom-scrollbar",children:[n.map((i,m)=>{let x="text-secondary";return i.type==="input"?x="text-cyan-300 font-semibold":i.type==="success"?x="text-green-400 font-semibold":i.type==="info"&&(x="text-gold-400"),e.jsx("div",{className:`${x} leading-relaxed whitespace-pre-wrap`,children:i.text},m)}),s&&e.jsxs("div",{className:"text-muted-foreground animate-pulse flex items-center gap-1",children:[e.jsx("span",{className:"w-1.5 h-3 bg-muted-foreground inline-block animate-caret"}),e.jsx("span",{children:"Executing..."})]}),e.jsx("div",{ref:g})]}),e.jsxs("form",{onSubmit:j,className:"flex items-center border-t border-gridline bg-surface/50 px-4 py-2",children:[e.jsx(_,{className:"w-4 h-4 text-cyan-300 shrink-0"}),e.jsx("input",{type:"text",value:a,onChange:i=>l(i.target.value),disabled:s,className:"flex-1 bg-transparent border-none outline-none font-mono text-xs text-cyan-300 px-2 py-1 placeholder-cyan-300/60 focus-visible:ring-2 focus-visible:ring-cyan-300",placeholder:'Type a command (e.g. "help", "pip install qector-decoder-v3")...',"aria-label":"Terminal input"}),e.jsx("button",{type:"submit",disabled:s||!a.trim(),className:"p-1 text-cyan-300 hover:text-cyan-200 disabled:text-muted/20 transition-colors","aria-label":"Run command",children:e.jsx(C,{className:"w-3.5 h-3.5 fill-current"})})]})]})}const L="font-mono text-[11px] bg-cyan-300/10 text-cyan-200 px-1 py-0.5 rounded border border-cyan-300/20";function O(a,l){return a.replace(/\\"/g,'"').split(/(`[^`\n]+`)/g).map((n,t)=>n.length>2&&n.startsWith("`")&&n.endsWith("`")?e.jsx("code",{className:L,children:n.slice(1,-1)},`${l}-${t}`):n)}function d({children:a}){const l=(n,t)=>typeof n=="string"?e.jsx(b.Fragment,{children:O(n,t)},t):Array.isArray(n)?e.jsx(e.Fragment,{children:n.map((s,h)=>e.jsx(b.Fragment,{children:l(s,`${t}-${h}`)},`${t}-${h}`))}):n;return e.jsx(e.Fragment,{children:l(a,"imd")})}function W(){const[a,l]=p.useState("overview"),n=[{id:"overview",title:"1. Overview",icon:e.jsx(S,{className:"w-4 h-4"})},{id:"installation",title:"2. Installation",icon:e.jsx(q,{className:"w-4 h-4"})},{id:"quickstart",title:"3. Quick Start",icon:e.jsx(T,{className:"w-4 h-4"})},{id:"decoders",title:"4. Choosing a Decoder",icon:e.jsx(D,{className:"w-4 h-4"})},{id:"measurement",title:"5. Local Measurements",icon:e.jsx(M,{className:"w-4 h-4"})},{id:"configuration",title:"6. Configuration",icon:e.jsx(U,{className:"w-4 h-4"})},{id:"troubleshooting",title:"7. Troubleshooting",icon:e.jsx(P,{className:"w-4 h-4"})},{id:"package-reference",title:"8. Package Reference (v1.0.1)",icon:e.jsx(R,{className:"w-4 h-4"})}],t=()=>{switch(a){case"overview":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-base leading-relaxed",children:"QECTOR Decoder v3 is a Python library for quantum error correction (QEC) decoding. v1.0.1 is the current stable release (v1.0.0, August 2026, was the first): it provides 17 decoder configurations and helpers integrated into a high-performance compiled Rust core with a plug-and-play Python API."}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/10 rounded-xl flex items-start gap-3",children:[e.jsx(E,{className:"w-5 h-5 text-cyan-300 shrink-0 mt-0.5"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Ecosystem Native:"})," Swappable backend design. You can easily plug QECTOR into Stim, PyMatching, Sinter, and Qiskit pipelines with minimal API modifications: Sinter decoders plug in with ",e.jsx("code",{className:"text-cyan-300",children:"custom_decoders=qector_sinter_decoders()"}),", and a qiskit-qec plugin is registered."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-lg mb-3",children:"Key Highlights"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"v1.0.0: First Stable Release"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"API stability tiers, Relay-BP, CS-OSD(lambda, w), colour-code cluster_bposd, qector CLI + qector-doctor, Sinter/qiskit entry points, pymatching shim."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Validate on Your Hardware"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"Hardware, GPU, and measurement results are device-local. Use the package diagnostic and declared measurement workflow instead of treating site text as performance evidence."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Multi-Algorithm Diversity"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"17 decoder configurations from exact Blossom MWPM to Belief-Matching, BP-OSD, and GPU batch decoding."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Compiled Rust Core"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"A compiled Rust core with a Python API. Exact memory, latency, and throughput behavior depends on the selected workload and environment."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Optional GPU Paths"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"GPU paths are optional and environment-dependent. Read the installed release diagnostics before relying on them."})]})]})]})]});case"installation":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR ships as pre-compiled binary wheels on PyPI. Installing requires Python and pip."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Standard Installation"}),e.jsx(c,{code:"pip install qector-decoder-v3",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"System Requirements"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-sm",children:[e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary",children:"3.9, 3.10, 3.11, 3.12, 3.13 (64-bit)"})]}),e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Operating System"}),e.jsx("span",{className:"text-primary",children:"Linux, macOS, Windows (see current PyPI wheel metadata)"})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"GPU Requirements (Optional)"}),e.jsx("span",{className:"text-primary",children:"Optional and environment-dependent; check the installed release diagnostics"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Install Optional Dependencies"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"Install only the extras required by your workflow:"}),e.jsx(c,{code:`# Stim / Sinter / PyMatching ecosystem - pip install "qector-decoder-v3[stim]" - - # Full optional environment - pip install "qector-decoder-v3[all]"`,filename:"terminal",language:"bash"})]})]});case"quickstart":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Below is a minimal package-only example: create a rotated surface code, generate a syndrome, and verify a Blossom correction against the parity-check matrix."}),e.jsx(c,{filename:"surface_code_decode.py",language:"python",code:`import numpy as np -import qector_decoder_v3 as qector - -# Build a small code and inject one bit error. -code = qector.codes.rotated_surface_code(3) -error = np.zeros(code.n_qubits, dtype=np.uint8) -error[4] = 1 -syndrome = code.syndrome(error) - -# Decode with the graphlike Blossom backend. -correction = qector.BlossomDecoder( - code.check_to_qubits, - n_qubits=code.n_qubits, -).decode(syndrome) - -# The syndrome contract is H c = s (mod 2). -matrix = np.asarray(code.parity_check_matrix(), dtype=np.uint8) -assert np.array_equal((matrix @ correction.astype(int)) % 2, syndrome) -print("Syndrome-faithful correction")`})]});case"decoders":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR includes 17 decoder configurations categorized into stable, workload-sensitive, and experimental/research tiers. Choose based on code type and speed/accuracy tradeoffs:"}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse border border-gridline text-left text-sm rounded-xl overflow-hidden",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 font-semibold",children:[e.jsx("th",{className:"p-3",children:"Decoder"}),e.jsx("th",{className:"p-3",children:"Target Code"}),e.jsx("th",{className:"p-3",children:"Speed"}),e.jsx("th",{className:"p-3",children:"Accuracy"}),e.jsx("th",{className:"p-3",children:"Tier"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:[{name:"Blossom (MWPM)",target:"Graphlike CSS / surface",speed:"Workload-dependent",accuracy:"Minimum-weight matching objective",tier:"Stable"},{name:"Belief-Matching",target:"Correlated-noise research",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"BP-OSD",target:"qLDPC, LDPC",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"Union-Find",target:"Large Surface",speed:"Near-linear O(N)",accuracy:"Approximate",tier:"Production"},{name:"GPU Batch",target:"Supported batch workloads",speed:"Runtime-dependent",accuracy:"Validate locally",tier:"Workload-sensitive"},{name:"Hybrid / Cascade",target:"Degenerate, mixed",speed:"Iterative",accuracy:"High",tier:"Research"},{name:"Colour Code",target:"Triangular colour code",speed:"Moderate",accuracy:"Native",tier:"Research"}].map(s=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-semibold text-primary",children:s.name}),e.jsx("td",{className:"p-3 text-secondary",children:s.target}),e.jsx("td",{className:"p-3 text-secondary",children:s.speed}),e.jsx("td",{className:"p-3 text-secondary",children:s.accuracy}),e.jsx("td",{className:"p-3",children:e.jsx("span",{className:`px-2 py-0.5 rounded text-[10px] uppercase font-bold border ${s.tier==="Production"?"bg-green-400/10 text-green-400 border-green-400/20":"bg-gold-400/10 text-gold-400 border-gold-400/20"}`,children:s.tier})})]},s.name))})]})})]});case"measurement":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Hardware-specific measurements are not published on this site. If your project requires a local measurement, record the code, noise model, decoder configuration, seed, shots, environment, and raw artifact."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Environment Diagnostic"}),e.jsx(c,{code:"qector-doctor",filename:"terminal",language:"bash"}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["15-check diagnostic that reports PASS / WARN / FAIL per check and explains WHY a decoder is unavailable on your machine. Full report via ",e.jsx("code",{className:"text-cyan-300",children:"qector-doctor --json"}),"."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Local measurement via qector bench"}),e.jsx("p",{className:"text-secondary text-xs mb-2",children:"Use the command documented by the installed package release. The result is machine- and workload-specific, not a site claim:"}),e.jsx(c,{code:"qector bench --distance 5 --rounds 5 --shots 10000 --decoder blossom --noise 0.001",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Interactive Sandbox CLI"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"This UI is a command-output demonstration only; it does not execute commands or generate benchmark data:"}),e.jsx(B,{})]})]});case"configuration":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Detailed constructor configuration arguments for QECTOR's primary decoders:"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BlossomDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"adaptive_k"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:"`bool` (Default: `True`). Enable union-find matching pre-filtering to minimize match graph sizing."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"timeout"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:"`float` (Default: `None`). Maximum time (in seconds) allowed to resolve a single syndrome."})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BeliefMatchingDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_iters"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:"`int` (Default: `30`). Maximum number of belief propagation iterations. Higher iterations improve syndrome accuracy."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"max_paths"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:"`int` (Default: `10`). Maximum number of alternative paths generated for matching reweighting calculations."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_method"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:'`str` (Default: `"product_sum"`). Choice of BP update method. Options: `"product_sum"`, `"minimum_sum"`.'})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"GpuBatchDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"backend"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:'`str` (Default: `"cuda"`). Choose GPU compilation framework. Options: `"cuda"`, `"opencl"`.'})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"batch_size"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:"`int` (Default: `1000`). Number of parallel syndromes transferred to and calculated in the GPU memory space."})})]})]})]})]});case"troubleshooting":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Solutions for common installation and running issues:"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:e.jsx(d,{children:"Issue: ImportError when importing `qector`"})})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(d,{children:[e.jsx("strong",{children:"Fix:"})," Ensure your Python architecture matches the wheel and reinstall with `python -m pip install --force-reinstall qector-decoder-v3`."]})})]}),e.jsxs("div",{className:"p-4 bg-gold-400/5 border border-gold-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-gold-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: GPU / CUDA is not detected"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(d,{children:[e.jsx("strong",{children:"Fix:"})," Verify drivers by typing `nvidia-smi` in terminal. Ensure CUDA Toolkit 11.8 or higher is installed and environment variable `CUDA_PATH` or `LD_LIBRARY_PATH` points to the CUDA install folder."]})})]}),e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: Out Of Memory (OOM) on GPU batching"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(d,{children:[e.jsx("strong",{children:"Fix:"})," Lower the `batch_size` argument in your `GpuBatchDecoder` instantiation. For exceptionally large code distances (d > 15), prefer the linear-scaling `UnionFindDecoder` which reduces memory demands."]})})]})]})]});case"package-reference":return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl flex items-center justify-between flex-wrap gap-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-bold text-lg",children:"QECTOR Decoder v3: Extended Reference (package only)"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Version: 1.0.1 · PyPI: qector-decoder-v3 · Backend: Rust + PyO3"})]}),e.jsx("a",{href:"/docs/reference.md",target:"_blank",rel:"noopener noreferrer",download:"QECTOR Decoder v3 - Reference (package only).md",className:"btn-cyan text-xs py-2 px-4",children:"Download Reference (.md)"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"1. Installation & Platforms"}),e.jsx(c,{code:`pip install --upgrade "qector-decoder-v3>=1.0.1,<2" -pip install "qector-decoder-v3[stim]" # Stim / Sinter / PyMatching / LDPC ecosystem -pip install "qector-decoder-v3[bench]" # local measurement tools -pip install "qector-decoder-v3[all]" # optional full environment`,language:"bash",filename:"terminal"}),e.jsxs("div",{className:"mt-3 border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary font-mono",children:"3.9 - 3.13"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Platforms"}),e.jsx("span",{className:"text-primary",children:"Linux x86_64 (manylinux), Windows x64, macOS arm64"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License"}),e.jsx("span",{className:"text-primary",children:"Source-available (Free academic / non-commercial)"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Startup Notice"}),e.jsx("span",{className:"text-primary font-mono",children:"Suppressed with QECTOR_SILENT=1"})]}),e.jsxs("div",{className:"p-2.5 flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License Env"}),e.jsx("span",{className:"text-primary font-mono",children:"QECTOR_LICENSE + QECTOR_LICENSE_KEY (Ed25519 token)"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"2. Core Architecture"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1.5 text-secondary text-xs leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Rust Core (compiled extension):"})," Matching, UF, batch CPU/GPU algorithms."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Python Surface:"})," Clean API, Stim/Sinter compat, belief/GNN layers, licensing."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Zero-copy NumPy:"})," Direct memory access; GIL-free parallel decoding paths."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Version Symbol:"})," ",e.jsx("code",{className:"text-cyan-300",children:'qector_decoder_v3.__version__ == "1.0.1"'})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"3. Decoder Families & Incidence Rules"}),e.jsxs("p",{className:"text-muted-foreground text-xs mb-3",children:[e.jsx("strong",{className:"text-cyan-300",children:"Graph-like rule (UF family):"})," Every qubit must participate in at most two checks (participation ≤ 2). Matrices violating this raise a clear error (",e.jsx("code",{className:"text-red-400",children:"-32602"}),"). ",e.jsx("code",{className:"text-cyan-300",children:"BlossomDecoder"}),", ",e.jsx("code",{className:"text-cyan-300",children:"SparseBlossomDecoder"}),", and ",e.jsx("code",{className:"text-cyan-300",children:"BpOsdDecoder"})," accept general hyperedge codes."]}),e.jsx("div",{className:"overflow-x-auto rounded-xl",children:e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 font-bold border-b border-gridline bg-surface/30",children:[e.jsx("span",{children:"Class"}),e.jsx("span",{children:"Best for"}),e.jsx("span",{children:"Status"}),e.jsx("span",{children:"Graph-like?"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"UnionFindDecoder"}),e.jsx("span",{children:"Low-latency approximate"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes (participation ≤ 2)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"FastUnionFindDecoder"}),e.jsx("span",{children:"Faster UF hot path"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BlossomDecoder"}),e.jsx("span",{children:"Exact MWPM"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"SparseBlossomDecoder"}),e.jsx("span",{children:"Near-optimal matching"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BeliefMatching"}),e.jsx("span",{children:"Correlated-noise accuracy"}),e.jsx("span",{children:"Research"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BpOsdDecoder"}),e.jsx("span",{children:"LDPC / qLDPC"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BatchDecoder"}),e.jsx("span",{children:"High-throughput CPU batch"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes for UF batch"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"CUDABatchDecoder"}),e.jsx("span",{children:"GPU batch (NVIDIA)"}),e.jsx("span",{children:"Runtime-dependent"}),e.jsx("span",{children:"N/A"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"AutoDecoder"}),e.jsx("span",{children:"7-tier self-debugging fallback"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"N/A"})]})]})})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"4. Code Generators"}),e.jsx(c,{code:`from qector_decoder_v3 import ( - generate_repetition_code_checks, # (checks, n_qubits) - generate_ring_code_checks, # (checks, n_qubits) - generate_surface_code_checks, # surface-code checks -)`,language:"python",filename:"python"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"5. MCP and General-Matrix Workflows"}),e.jsx(c,{code:`# The standalone library MCP server is documented separately. -# Start it from the plugin package with: -python mcp/mcp_server_library.py - -# Initialize and call tools/list before using a tool.`,language:"python",filename:"mcp_server.py"}),e.jsx("p",{className:"text-muted-foreground text-xs mt-2 mb-3",children:"For general matrices, use the decoder family documented for that workload and verify every returned correction against H c = s (mod 2):"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import BlossomDecoder, SparseBlossomDecoder, BpOsdDecoder - -def decode_hyperedge(checks, n_qubits, syndrome, kind="Blossom", **opts): - syn = np.asarray(syndrome, dtype=np.uint8).ravel() - if kind in ("Blossom", "blossom"): - return BlossomDecoder(checks, n_qubits).decode(syn) - if kind in ("SparseBlossom", "sparse_blossom"): - return SparseBlossomDecoder(checks, n_qubits).decode(syn) - if kind.lower() in ("bposd", "bp_osd"): - H = np.zeros((len(checks), n_qubits), dtype=np.uint8) - for i, c in enumerate(checks): - for q in c: H[i, q] ^= 1 - return BpOsdDecoder(H, error_rate=opts.get("error_rate", 0.05)).decode(syn) - raise ValueError(f"unsupported kind: {kind}")`,language:"python",filename:"hyperedge_workaround.py"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"6. Verified Fallback Pattern"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed mb-3",children:"A fallback is safe only when each candidate is checked against the same parity-check matrix. The following pattern uses the stable Union-Find and Blossom classes and fails closed if a candidate is not syndrome-faithful:"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder - -def faithful_decode(check_to_qubits, n_qubits, syndrome): - syndrome = np.asarray(syndrome, dtype=np.uint8).ravel() - matrix = np.zeros((len(check_to_qubits), n_qubits), dtype=np.uint8) - for check, qubits in enumerate(check_to_qubits): - matrix[check, qubits] = 1 - - for decoder_type in (FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder): - try: - correction = np.asarray( - decoder_type(check_to_qubits, n_qubits=n_qubits).decode(syndrome), - dtype=np.uint8, - ) - if np.array_equal((matrix @ correction.astype(int)) % 2, syndrome): - return correction, decoder_type.__name__ - except Exception: - continue - raise RuntimeError("No syndrome-faithful decoder result")`,language:"python",filename:"cascade_decode.py"})]})]});default:return null}};return e.jsxs(e.Fragment,{children:[e.jsx(N,{title:"User Manual · QECTOR",description:"Complete user manual for QECTOR Decoder v3. Installation, configuration, decoder selection, validation, and troubleshooting."}),e.jsx(w,{data:{"@context":"https://schema.org","@type":"HowTo",name:"How to Install and Run QECTOR Decoder v3",description:"Step-by-step instructions to install QECTOR, verify a syndrome-faithful decode, select a decoder, and review evidence boundaries.",step:[{"@type":"HowToStep",name:"Install the package",text:"Run pip install qector-decoder-v3 in your Python terminal to install the Rust core binary wheels."},{"@type":"HowToStep",name:"Verify the installation",text:'Verify the installation with python -c "import qector_decoder_v3 as qd; print(qd.__version__)" and a small syndrome-faithfulness check.'},{"@type":"HowToStep",name:"Review evidence boundaries",text:"Read the v1.0.0 reference manual and record code, noise model, decoder configuration, seed, environment, and artifact metadata before making a local measurement."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"15 backend families powering 17 decoder configurations · GPU Batch · Stim · Sinter · Qiskit"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(I,{text:"User Manual",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Complete guide to QECTOR Decoder v3: installation, decoder selection, local measurements, diagnostics, and ecosystem integration."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsx("div",{className:"max-w-6xl mx-auto",children:e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-4 gap-8",children:[e.jsx("div",{className:"lg:col-span-1",children:e.jsx("nav",{"aria-label":"Manual sections",className:"sticky top-24 space-y-1 bg-surface/10 p-2 rounded-xl border border-gridline/50",children:n.map(s=>e.jsxs("button",{type:"button",onClick:()=>l(s.id),"aria-current":a===s.id?"true":void 0,className:`w-full text-left px-3.5 py-2.5 rounded-lg text-sm font-medium transition-all duration-200 flex items-center gap-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cyan-300 ${a===s.id?"bg-cyan-300/10 text-cyan-300 border border-cyan-300/20":"text-secondary hover:text-primary hover:bg-white/5 border border-transparent"}`,children:[s.icon,s.title]},s.id))})}),e.jsx("div",{className:"lg:col-span-3",children:e.jsxs("div",{className:"card-surface bg-surface/20 min-h-[500px]",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6 text-primary border-b border-gridline pb-4 flex items-center gap-2",children:n.find(s=>s.id===a)?.title.substring(3)}),e.jsx("div",{className:"transition-all duration-300",children:t()})]})})]})})})]})}function T(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.813 15.904 9 21l-.813-5.096L3 15l5.096-.813L9 9l.813 5.096L15 15l-5.187.904Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19.071 4.929a10 10 0 0 0-14.142 0M12 3v3m0 12v3M3 12h3m12 0h3",opacity:"0.5"})]})}function M(a){return e.jsx("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v5.25c0 .621-.504 1.125-1.125 1.125h-2.25A1.125 1.125 0 0 1 3 18.375v-5.25ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v9.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125v-9.75ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v14.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z"})})}function U(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.324.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.43l-1.003.828c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.954.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.43l1.004-.827c.292-.24.437-.613.43-.991a6.936 6.936 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"})]})}export{W as default}; diff --git a/assets/Manual-ehjT3thq.js b/assets/Manual-ehjT3thq.js deleted file mode 100644 index 060f63ab..00000000 --- a/assets/Manual-ehjT3thq.js +++ /dev/null @@ -1,67 +0,0 @@ -import{r as p,j as e,R as b}from"./vendor-react-BiHfrq0e.js";import{S as N,J as w,C as c}from"./index-PdoH5kLF.js";import{T as k,s as _,u as C,I as S,g as q,a as D,C as P,B as R,v as u,i as E}from"./vendor-ui-B8TlNU4J.js";import{N as I}from"./NeuralReveal-Bsl9IGCr.js";import"./vendor-gsap-a3sj5zmn.js";function B(){const[a,l]=p.useState(""),[n,t]=p.useState([{text:"QECTOR CLI Terminal Demo (simulation only)",type:"info"},{text:"No command is executed and no external service is contacted.",type:"info"}]),[s,h]=p.useState(!1),g=p.useRef(null),y=()=>{g.current?.scrollIntoView({behavior:"smooth"})};p.useEffect(()=>{y()},[n]);const f=async i=>{const m=i.trim().toLowerCase(),x=[...n,{text:`qector@sandbox:~$ ${i}`,type:"input"}];t(x),l(""),h(!0);const o=r=>new Promise(v=>setTimeout(v,r));m==="help"?(await o(200),t(r=>[...r,{text:"Available commands:",type:"info"},{text:" help - Show this menu",type:"output"},{text:" pip install qector-decoder-v3 - Show the install command",type:"output"},{text:" qector-doctor - Show the diagnostic command",type:"output"},{text:" qector bench -d 5 - Show a local measurement command",type:"output"},{text:" clear - Clear the terminal screen",type:"output"}])):m==="clear"?t([]):m==="pip install qector-decoder-v3"?(await o(300),t(r=>[...r,{text:"Simulation only: no package was downloaded.",type:"output"}]),await o(800),t(r=>[...r,{text:"Simulation only: no package was installed.",type:"output"}]),await o(400),t(r=>[...r,{text:"For a real install, follow the current PyPI and release verification instructions.",type:"output"}]),await o(600),t(r=>[...r,{text:"✓ Demo complete: no network request or filesystem change was made.",type:"success"}])):m==="qector-doctor"?(await o(300),t(r=>[...r,{text:"Simulation only: qector-doctor was not run.",type:"output"}]),await o(500),t(r=>[...r,{text:"Run qector-doctor in your installed environment to obtain real PASS / WARN / FAIL results.",type:"info"}])):m==="qector bench -d 5"||m==="qector bench --distance 5"?(await o(400),t(r=>[...r,{text:"Simulation only: no circuit or measurement was generated.",type:"output"}]),await o(1e3),t(r=>[...r,{text:"Run qector bench on your own declared workload to generate real local evidence.",type:"info"}])):(await o(150),t(r=>[...r,{text:`qector: command not found: ${i}. Type "help" for a list of commands.`,type:"info"}])),h(!1)},j=i=>{i.preventDefault(),!(!a.trim()||s)&&f(a)};return e.jsxs("div",{className:"flex flex-col border border-gridline bg-void/90 rounded-2xl overflow-hidden shadow-2xl",children:[e.jsxs("div",{className:"flex items-center justify-between px-4 py-3 bg-surface border-b border-gridline",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(k,{className:"w-4 h-4 text-cyan-300"}),e.jsx("span",{className:"font-mono text-xs text-secondary font-semibold",children:"interactive-cli.sh"})]}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-red-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-yellow-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-green-500/80"})]})]}),e.jsxs("div",{className:"p-5 font-mono text-xs h-72 overflow-y-auto space-y-2 select-text custom-scrollbar",children:[n.map((i,m)=>{let x="text-secondary";return i.type==="input"?x="text-cyan-300 font-semibold":i.type==="success"?x="text-green-400 font-semibold":i.type==="info"&&(x="text-gold-400"),e.jsx("div",{className:`${x} leading-relaxed whitespace-pre-wrap`,children:i.text},m)}),s&&e.jsxs("div",{className:"text-muted-foreground animate-pulse flex items-center gap-1",children:[e.jsx("span",{className:"w-1.5 h-3 bg-muted-foreground inline-block animate-caret"}),e.jsx("span",{children:"Executing..."})]}),e.jsx("div",{ref:g})]}),e.jsxs("form",{onSubmit:j,className:"flex items-center border-t border-gridline bg-surface/50 px-4 py-2",children:[e.jsx(_,{className:"w-4 h-4 text-cyan-300 shrink-0"}),e.jsx("input",{type:"text",value:a,onChange:i=>l(i.target.value),disabled:s,className:"flex-1 bg-transparent border-none outline-none font-mono text-xs text-cyan-300 px-2 py-1 placeholder-cyan-300/60 focus-visible:ring-2 focus-visible:ring-cyan-300",placeholder:'Type a command (e.g. "help", "pip install qector-decoder-v3")...',"aria-label":"Terminal input"}),e.jsx("button",{type:"submit",disabled:s||!a.trim(),className:"p-1 text-cyan-300 hover:text-cyan-200 disabled:text-muted/20 transition-colors","aria-label":"Run command",children:e.jsx(C,{className:"w-3.5 h-3.5 fill-current"})})]})]})}const L="font-mono text-[11px] bg-cyan-300/10 text-cyan-200 px-1 py-0.5 rounded border border-cyan-300/20";function O(a,l){return a.replace(/\\"/g,'"').split(/(`[^`\n]+`)/g).map((n,t)=>n.length>2&&n.startsWith("`")&&n.endsWith("`")?e.jsx("code",{className:L,children:n.slice(1,-1)},`${l}-${t}`):n)}function d({children:a}){const l=(n,t)=>typeof n=="string"?e.jsx(b.Fragment,{children:O(n,t)},t):Array.isArray(n)?e.jsx(e.Fragment,{children:n.map((s,h)=>e.jsx(b.Fragment,{children:l(s,`${t}-${h}`)},`${t}-${h}`))}):n;return e.jsx(e.Fragment,{children:l(a,"imd")})}function W(){const[a,l]=p.useState("overview"),n=[{id:"overview",title:"1. Overview",icon:e.jsx(S,{className:"w-4 h-4"})},{id:"installation",title:"2. Installation",icon:e.jsx(q,{className:"w-4 h-4"})},{id:"quickstart",title:"3. Quick Start",icon:e.jsx(T,{className:"w-4 h-4"})},{id:"decoders",title:"4. Choosing a Decoder",icon:e.jsx(D,{className:"w-4 h-4"})},{id:"measurement",title:"5. Local Measurements",icon:e.jsx(M,{className:"w-4 h-4"})},{id:"configuration",title:"6. Configuration",icon:e.jsx(U,{className:"w-4 h-4"})},{id:"troubleshooting",title:"7. Troubleshooting",icon:e.jsx(P,{className:"w-4 h-4"})},{id:"package-reference",title:"8. Package Reference (v1.0.1)",icon:e.jsx(R,{className:"w-4 h-4"})}],t=()=>{switch(a){case"overview":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-base leading-relaxed",children:"QECTOR Decoder v3 is a Python library for quantum error correction (QEC) decoding. v1.0.1 is the current stable release (v1.0.0, August 2026, was the first): it provides 17 decoder configurations and helpers integrated into a high-performance compiled Rust core with a plug-and-play Python API."}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/10 rounded-xl flex items-start gap-3",children:[e.jsx(E,{className:"w-5 h-5 text-cyan-300 shrink-0 mt-0.5"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Ecosystem Native:"})," Swappable backend design. You can easily plug QECTOR into Stim, PyMatching, Sinter, and Qiskit pipelines with minimal API modifications: Sinter decoders plug in with ",e.jsx("code",{className:"text-cyan-300",children:"custom_decoders=qector_sinter_decoders()"}),", and a qiskit-qec plugin is registered."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-lg mb-3",children:"Key Highlights"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"v1.0.0: First Stable Release"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"API stability tiers, Relay-BP, CS-OSD(lambda, w), colour-code cluster_bposd, qector CLI + qector-doctor, Sinter/qiskit entry points, pymatching shim."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Validate on Your Hardware"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"Hardware, GPU, and measurement results are device-local. Use the package diagnostic and declared measurement workflow instead of treating site text as performance evidence."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Multi-Algorithm Diversity"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"17 decoder configurations from exact Blossom MWPM to Belief-Matching, BP-OSD, and GPU batch decoding."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Compiled Rust Core"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"A compiled Rust core with a Python API. Exact memory, latency, and throughput behavior depends on the selected workload and environment."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Optional GPU Paths"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"GPU paths are optional and environment-dependent. Read the installed release diagnostics before relying on them."})]})]})]})]});case"installation":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR ships as pre-compiled binary wheels on PyPI. Installing requires Python and pip."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Standard Installation"}),e.jsx(c,{code:"pip install qector-decoder-v3",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"System Requirements"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-sm",children:[e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary",children:"3.9, 3.10, 3.11, 3.12, 3.13 (64-bit)"})]}),e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Operating System"}),e.jsx("span",{className:"text-primary",children:"Linux, macOS, Windows (see current PyPI wheel metadata)"})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"GPU Requirements (Optional)"}),e.jsx("span",{className:"text-primary",children:"Optional and environment-dependent; check the installed release diagnostics"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Install Optional Dependencies"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"Install only the extras required by your workflow:"}),e.jsx(c,{code:`# Stim / Sinter / PyMatching ecosystem - pip install "qector-decoder-v3[stim]" - - # Full optional environment - pip install "qector-decoder-v3[all]"`,filename:"terminal",language:"bash"})]})]});case"quickstart":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Below is a minimal package-only example: create a rotated surface code, generate a syndrome, and verify a Blossom correction against the parity-check matrix."}),e.jsx(c,{filename:"surface_code_decode.py",language:"python",code:`import numpy as np -import qector_decoder_v3 as qector - -# Build a small code and inject one bit error. -code = qector.codes.rotated_surface_code(3) -error = np.zeros(code.n_qubits, dtype=np.uint8) -error[4] = 1 -syndrome = code.syndrome(error) - -# Decode with the graphlike Blossom backend. -correction = qector.BlossomDecoder( - code.check_to_qubits, - n_qubits=code.n_qubits, -).decode(syndrome) - -# The syndrome contract is H c = s (mod 2). -matrix = np.asarray(code.parity_check_matrix(), dtype=np.uint8) -assert np.array_equal((matrix @ correction.astype(int)) % 2, syndrome) -print("Syndrome-faithful correction")`})]});case"decoders":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR includes 17 decoder configurations categorized into stable, workload-sensitive, and experimental/research tiers. Choose based on code type and speed/accuracy tradeoffs:"}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse border border-gridline text-left text-sm rounded-xl overflow-hidden",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 font-semibold",children:[e.jsx("th",{className:"p-3",children:"Decoder"}),e.jsx("th",{className:"p-3",children:"Target Code"}),e.jsx("th",{className:"p-3",children:"Speed"}),e.jsx("th",{className:"p-3",children:"Accuracy"}),e.jsx("th",{className:"p-3",children:"Tier"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:[{name:"Blossom (MWPM)",target:"Graphlike CSS / surface",speed:"Workload-dependent",accuracy:"Minimum-weight matching objective",tier:"Stable"},{name:"Belief-Matching",target:"Correlated-noise research",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"BP-OSD",target:"qLDPC, LDPC",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"Union-Find",target:"Large Surface",speed:"Near-linear O(N)",accuracy:"Approximate",tier:"Production"},{name:"GPU Batch",target:"Supported batch workloads",speed:"Runtime-dependent",accuracy:"Validate locally",tier:"Workload-sensitive"},{name:"Hybrid / Cascade",target:"Degenerate, mixed",speed:"Iterative",accuracy:"High",tier:"Research"},{name:"Colour Code",target:"Triangular colour code",speed:"Moderate",accuracy:"Native",tier:"Research"}].map(s=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-semibold text-primary",children:s.name}),e.jsx("td",{className:"p-3 text-secondary",children:s.target}),e.jsx("td",{className:"p-3 text-secondary",children:s.speed}),e.jsx("td",{className:"p-3 text-secondary",children:s.accuracy}),e.jsx("td",{className:"p-3",children:e.jsx("span",{className:`px-2 py-0.5 rounded text-[10px] uppercase font-bold border ${s.tier==="Production"?"bg-green-400/10 text-green-400 border-green-400/20":"bg-gold-400/10 text-gold-400 border-gold-400/20"}`,children:s.tier})})]},s.name))})]})})]});case"measurement":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Hardware-specific measurements are not published on this site. If your project requires a local measurement, record the code, noise model, decoder configuration, seed, shots, environment, and raw artifact."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Environment Diagnostic"}),e.jsx(c,{code:"qector-doctor",filename:"terminal",language:"bash"}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["15-check diagnostic that reports PASS / WARN / FAIL per check and explains WHY a decoder is unavailable on your machine. Full report via ",e.jsx("code",{className:"text-cyan-300",children:"qector-doctor --json"}),"."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Local measurement via qector bench"}),e.jsx("p",{className:"text-secondary text-xs mb-2",children:"Use the command documented by the installed package release. The result is machine- and workload-specific, not a site claim:"}),e.jsx(c,{code:"qector bench --distance 5 --rounds 5 --shots 10000 --decoder blossom --noise 0.001",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Interactive Sandbox CLI"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"This UI is a command-output demonstration only; it does not execute commands or generate benchmark data:"}),e.jsx(B,{})]})]});case"configuration":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Detailed constructor configuration arguments for QECTOR's primary decoders:"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BlossomDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"adaptive_k"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:"`bool` (Default: `True`). Enable union-find matching pre-filtering to minimize match graph sizing."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"timeout"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:"`float` (Default: `None`). Maximum time (in seconds) allowed to resolve a single syndrome."})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BeliefMatchingDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_iters"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:"`int` (Default: `30`). Maximum number of belief propagation iterations. Higher iterations improve syndrome accuracy."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"max_paths"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:"`int` (Default: `10`). Maximum number of alternative paths generated for matching reweighting calculations."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_method"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:'`str` (Default: `"product_sum"`). Choice of BP update method. Options: `"product_sum"`, `"minimum_sum"`.'})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"GpuBatchDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"backend"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:'`str` (Default: `"cuda"`). Choose GPU compilation framework. Options: `"cuda"`, `"opencl"`.'})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"batch_size"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(d,{children:"`int` (Default: `1000`). Number of parallel syndromes transferred to and calculated in the GPU memory space."})})]})]})]})]});case"troubleshooting":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Solutions for common installation and running issues:"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:e.jsx(d,{children:"Issue: ImportError when importing `qector`"})})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(d,{children:[e.jsx("strong",{children:"Fix:"})," Ensure your Python architecture matches the wheel and reinstall with `python -m pip install --force-reinstall qector-decoder-v3`."]})})]}),e.jsxs("div",{className:"p-4 bg-gold-400/5 border border-gold-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-gold-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: GPU / CUDA is not detected"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(d,{children:[e.jsx("strong",{children:"Fix:"})," Verify drivers by typing `nvidia-smi` in terminal. Ensure CUDA Toolkit 11.8 or higher is installed and environment variable `CUDA_PATH` or `LD_LIBRARY_PATH` points to the CUDA install folder."]})})]}),e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: Out Of Memory (OOM) on GPU batching"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(d,{children:[e.jsx("strong",{children:"Fix:"})," Lower the `batch_size` argument in your `GpuBatchDecoder` instantiation. For exceptionally large code distances (d > 15), prefer the linear-scaling `UnionFindDecoder` which reduces memory demands."]})})]})]})]});case"package-reference":return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl flex items-center justify-between flex-wrap gap-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-bold text-lg",children:"QECTOR Decoder v3: Extended Reference (package only)"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Version: 1.0.1 · PyPI: qector-decoder-v3 · Backend: Rust + PyO3"})]}),e.jsx("a",{href:"/docs/reference.md",target:"_blank",rel:"noopener noreferrer",download:"QECTOR Decoder v3 - Reference (package only).md",className:"btn-cyan text-xs py-2 px-4",children:"Download Reference (.md)"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"1. Installation & Platforms"}),e.jsx(c,{code:`pip install --upgrade "qector-decoder-v3>=1.0.1,<2" -pip install "qector-decoder-v3[stim]" # Stim / Sinter / PyMatching / LDPC ecosystem -pip install "qector-decoder-v3[bench]" # local measurement tools -pip install "qector-decoder-v3[all]" # optional full environment`,language:"bash",filename:"terminal"}),e.jsxs("div",{className:"mt-3 border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary font-mono",children:"3.9 - 3.13"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Platforms"}),e.jsx("span",{className:"text-primary",children:"Linux x86_64 (manylinux), Windows x64, macOS arm64"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License"}),e.jsx("span",{className:"text-primary",children:"Source-available (Free academic / non-commercial)"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Startup Notice"}),e.jsx("span",{className:"text-primary font-mono",children:"Suppressed with QECTOR_SILENT=1"})]}),e.jsxs("div",{className:"p-2.5 flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License Env"}),e.jsx("span",{className:"text-primary font-mono",children:"QECTOR_LICENSE + QECTOR_LICENSE_KEY (Ed25519 token)"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"2. Core Architecture"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1.5 text-secondary text-xs leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Rust Core (compiled extension):"})," Matching, UF, batch CPU/GPU algorithms."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Python Surface:"})," Clean API, Stim/Sinter compat, belief/GNN layers, licensing."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Zero-copy NumPy:"})," Direct memory access; GIL-free parallel decoding paths."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Version Symbol:"})," ",e.jsx("code",{className:"text-cyan-300",children:'qector_decoder_v3.__version__ == "1.0.1"'})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"3. Decoder Families & Incidence Rules"}),e.jsxs("p",{className:"text-muted-foreground text-xs mb-3",children:[e.jsx("strong",{className:"text-cyan-300",children:"Graph-like rule (UF family):"})," Every qubit must participate in at most two checks (participation ≤ 2). Matrices violating this raise a clear error (",e.jsx("code",{className:"text-red-400",children:"-32602"}),"). ",e.jsx("code",{className:"text-cyan-300",children:"BlossomDecoder"}),", ",e.jsx("code",{className:"text-cyan-300",children:"SparseBlossomDecoder"}),", and ",e.jsx("code",{className:"text-cyan-300",children:"BpOsdDecoder"})," accept general hyperedge codes."]}),e.jsx("div",{className:"overflow-x-auto rounded-xl",children:e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 font-bold border-b border-gridline bg-surface/30",children:[e.jsx("span",{children:"Class"}),e.jsx("span",{children:"Best for"}),e.jsx("span",{children:"Status"}),e.jsx("span",{children:"Graph-like?"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"UnionFindDecoder"}),e.jsx("span",{children:"Low-latency approximate"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes (participation ≤ 2)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"FastUnionFindDecoder"}),e.jsx("span",{children:"Faster UF hot path"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BlossomDecoder"}),e.jsx("span",{children:"Exact MWPM"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"SparseBlossomDecoder"}),e.jsx("span",{children:"Near-optimal matching"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BeliefMatching"}),e.jsx("span",{children:"Correlated-noise accuracy"}),e.jsx("span",{children:"Research"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BpOsdDecoder"}),e.jsx("span",{children:"LDPC / qLDPC"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BatchDecoder"}),e.jsx("span",{children:"High-throughput CPU batch"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes for UF batch"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"CUDABatchDecoder"}),e.jsx("span",{children:"GPU batch (NVIDIA)"}),e.jsx("span",{children:"Runtime-dependent"}),e.jsx("span",{children:"N/A"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"AutoDecoder"}),e.jsx("span",{children:"7-tier self-debugging fallback"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"N/A"})]})]})})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"4. Code Generators"}),e.jsx(c,{code:`from qector_decoder_v3 import ( - generate_repetition_code_checks, # (checks, n_qubits) - generate_ring_code_checks, # (checks, n_qubits) - generate_surface_code_checks, # surface-code checks -)`,language:"python",filename:"python"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"5. MCP and General-Matrix Workflows"}),e.jsx(c,{code:`# The standalone library MCP server is documented separately. -# Start it from the plugin package with: -python mcp/mcp_server_library.py - -# Initialize and call tools/list before using a tool.`,language:"python",filename:"mcp_server.py"}),e.jsx("p",{className:"text-muted-foreground text-xs mt-2 mb-3",children:"For general matrices, use the decoder family documented for that workload and verify every returned correction against H c = s (mod 2):"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import BlossomDecoder, SparseBlossomDecoder, BpOsdDecoder - -def decode_hyperedge(checks, n_qubits, syndrome, kind="Blossom", **opts): - syn = np.asarray(syndrome, dtype=np.uint8).ravel() - if kind in ("Blossom", "blossom"): - return BlossomDecoder(checks, n_qubits).decode(syn) - if kind in ("SparseBlossom", "sparse_blossom"): - return SparseBlossomDecoder(checks, n_qubits).decode(syn) - if kind.lower() in ("bposd", "bp_osd"): - H = np.zeros((len(checks), n_qubits), dtype=np.uint8) - for i, c in enumerate(checks): - for q in c: H[i, q] ^= 1 - return BpOsdDecoder(H, error_rate=opts.get("error_rate", 0.05)).decode(syn) - raise ValueError(f"unsupported kind: {kind}")`,language:"python",filename:"hyperedge_workaround.py"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"6. Verified Fallback Pattern"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed mb-3",children:"A fallback is safe only when each candidate is checked against the same parity-check matrix. The following pattern uses the stable Union-Find and Blossom classes and fails closed if a candidate is not syndrome-faithful:"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder - -def faithful_decode(check_to_qubits, n_qubits, syndrome): - syndrome = np.asarray(syndrome, dtype=np.uint8).ravel() - matrix = np.zeros((len(check_to_qubits), n_qubits), dtype=np.uint8) - for check, qubits in enumerate(check_to_qubits): - matrix[check, qubits] = 1 - - for decoder_type in (FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder): - try: - correction = np.asarray( - decoder_type(check_to_qubits, n_qubits=n_qubits).decode(syndrome), - dtype=np.uint8, - ) - if np.array_equal((matrix @ correction.astype(int)) % 2, syndrome): - return correction, decoder_type.__name__ - except Exception: - continue - raise RuntimeError("No syndrome-faithful decoder result")`,language:"python",filename:"cascade_decode.py"})]})]});default:return null}};return e.jsxs(e.Fragment,{children:[e.jsx(N,{title:"User Manual · QECTOR",description:"Complete user manual for QECTOR Decoder v3. Installation, configuration, decoder selection, validation, and troubleshooting."}),e.jsx(w,{data:{"@context":"https://schema.org","@type":"HowTo",name:"How to Install and Run QECTOR Decoder v3",description:"Step-by-step instructions to install QECTOR, verify a syndrome-faithful decode, select a decoder, and review evidence boundaries.",step:[{"@type":"HowToStep",name:"Install the package",text:"Run pip install qector-decoder-v3 in your Python terminal to install the Rust core binary wheels."},{"@type":"HowToStep",name:"Verify the installation",text:'Verify the installation with python -c "import qector_decoder_v3 as qd; print(qd.__version__)" and a small syndrome-faithfulness check.'},{"@type":"HowToStep",name:"Review evidence boundaries",text:"Read the v1.0.0 reference manual and record code, noise model, decoder configuration, seed, environment, and artifact metadata before making a local measurement."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"15 backend families powering 17 decoder configurations · GPU Batch · Stim · Sinter · Qiskit"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(I,{text:"User Manual",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Complete guide to QECTOR Decoder v3: installation, decoder selection, local measurements, diagnostics, and ecosystem integration."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsx("div",{className:"max-w-6xl mx-auto",children:e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-4 gap-8",children:[e.jsx("div",{className:"lg:col-span-1",children:e.jsx("nav",{"aria-label":"Manual sections",className:"sticky top-24 space-y-1 bg-surface/10 p-2 rounded-xl border border-gridline/50",children:n.map(s=>e.jsxs("button",{type:"button",onClick:()=>l(s.id),"aria-current":a===s.id?"true":void 0,className:`w-full text-left px-3.5 py-2.5 rounded-lg text-sm font-medium transition-all duration-200 flex items-center gap-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cyan-300 ${a===s.id?"bg-cyan-300/10 text-cyan-300 border border-cyan-300/20":"text-secondary hover:text-primary hover:bg-white/5 border border-transparent"}`,children:[s.icon,s.title]},s.id))})}),e.jsx("div",{className:"lg:col-span-3",children:e.jsxs("div",{className:"card-surface bg-surface/20 min-h-[500px]",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6 text-primary border-b border-gridline pb-4 flex items-center gap-2",children:n.find(s=>s.id===a)?.title.substring(3)}),e.jsx("div",{className:"transition-all duration-300",children:t()})]})})]})})})]})}function T(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.813 15.904 9 21l-.813-5.096L3 15l5.096-.813L9 9l.813 5.096L15 15l-5.187.904Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19.071 4.929a10 10 0 0 0-14.142 0M12 3v3m0 12v3M3 12h3m12 0h3",opacity:"0.5"})]})}function M(a){return e.jsx("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v5.25c0 .621-.504 1.125-1.125 1.125h-2.25A1.125 1.125 0 0 1 3 18.375v-5.25ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v9.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125v-9.75ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v14.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z"})})}function U(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.324.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.43l-1.003.828c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.954.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.43l1.004-.827c.292-.24.437-.613.43-.991a6.936 6.936 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"})]})}export{W as default}; diff --git a/assets/Manual-oB_C89DR.js b/assets/Manual-oB_C89DR.js deleted file mode 100644 index ed806966..00000000 --- a/assets/Manual-oB_C89DR.js +++ /dev/null @@ -1,67 +0,0 @@ -import{r as p,j as e,R as b}from"./vendor-react-BiHfrq0e.js";import{S as N,J as w,C as c}from"./index-CqAA-ZXu.js";import{T as k,o as _,u as C,I as S,g as q,a as D,C as P,B as R,v as u,i as E}from"./vendor-ui-B0ssGG4c.js";import{N as I}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-gsap-a3sj5zmn.js";function B(){const[a,l]=p.useState(""),[n,t]=p.useState([{text:"QECTOR CLI Terminal Demo (simulation only)",type:"info"},{text:"No command is executed and no external service is contacted.",type:"info"}]),[s,h]=p.useState(!1),g=p.useRef(null),y=()=>{g.current?.scrollIntoView({behavior:"smooth"})};p.useEffect(()=>{y()},[n]);const f=async i=>{const m=i.trim().toLowerCase(),x=[...n,{text:`qector@sandbox:~$ ${i}`,type:"input"}];t(x),l(""),h(!0);const d=r=>new Promise(v=>setTimeout(v,r));m==="help"?(await d(200),t(r=>[...r,{text:"Available commands:",type:"info"},{text:" help - Show this menu",type:"output"},{text:" pip install qector-decoder-v3 - Show the install command",type:"output"},{text:" qector-doctor - Show the diagnostic command",type:"output"},{text:" qector bench -d 5 - Show a local measurement command",type:"output"},{text:" clear - Clear the terminal screen",type:"output"}])):m==="clear"?t([]):m==="pip install qector-decoder-v3"?(await d(300),t(r=>[...r,{text:"Simulation only: no package was downloaded.",type:"output"}]),await d(800),t(r=>[...r,{text:"Simulation only: no package was installed.",type:"output"}]),await d(400),t(r=>[...r,{text:"For a real install, follow the current PyPI and release verification instructions.",type:"output"}]),await d(600),t(r=>[...r,{text:"✓ Demo complete: no network request or filesystem change was made.",type:"success"}])):m==="qector-doctor"?(await d(300),t(r=>[...r,{text:"Simulation only: qector-doctor was not run.",type:"output"}]),await d(500),t(r=>[...r,{text:"Run qector-doctor in your installed environment to obtain real PASS / WARN / FAIL results.",type:"info"}])):m==="qector bench -d 5"||m==="qector bench --distance 5"?(await d(400),t(r=>[...r,{text:"Simulation only: no circuit or measurement was generated.",type:"output"}]),await d(1e3),t(r=>[...r,{text:"Run qector bench on your own declared workload to generate real local evidence.",type:"info"}])):(await d(150),t(r=>[...r,{text:`qector: command not found: ${i}. Type "help" for a list of commands.`,type:"info"}])),h(!1)},j=i=>{i.preventDefault(),!(!a.trim()||s)&&f(a)};return e.jsxs("div",{className:"flex flex-col border border-gridline bg-void/90 rounded-2xl overflow-hidden shadow-2xl",children:[e.jsxs("div",{className:"flex items-center justify-between px-4 py-3 bg-surface border-b border-gridline",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(k,{className:"w-4 h-4 text-cyan-300"}),e.jsx("span",{className:"font-mono text-xs text-secondary font-semibold",children:"interactive-cli.sh"})]}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-red-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-yellow-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-green-500/80"})]})]}),e.jsxs("div",{className:"p-5 font-mono text-xs h-72 overflow-y-auto space-y-2 select-text custom-scrollbar",children:[n.map((i,m)=>{let x="text-secondary";return i.type==="input"?x="text-cyan-300 font-semibold":i.type==="success"?x="text-green-400 font-semibold":i.type==="info"&&(x="text-gold-400"),e.jsx("div",{className:`${x} leading-relaxed whitespace-pre-wrap`,children:i.text},m)}),s&&e.jsxs("div",{className:"text-muted-foreground animate-pulse flex items-center gap-1",children:[e.jsx("span",{className:"w-1.5 h-3 bg-muted-foreground inline-block animate-caret"}),e.jsx("span",{children:"Executing..."})]}),e.jsx("div",{ref:g})]}),e.jsxs("form",{onSubmit:j,className:"flex items-center border-t border-gridline bg-surface/50 px-4 py-2",children:[e.jsx(_,{className:"w-4 h-4 text-cyan-300 shrink-0"}),e.jsx("input",{type:"text",value:a,onChange:i=>l(i.target.value),disabled:s,className:"flex-1 bg-transparent border-none outline-none font-mono text-xs text-cyan-300 px-2 py-1 placeholder-cyan-300/60 focus-visible:ring-2 focus-visible:ring-cyan-300",placeholder:'Type a command (e.g. "help", "pip install qector-decoder-v3")...',"aria-label":"Terminal input"}),e.jsx("button",{type:"submit",disabled:s||!a.trim(),className:"p-1 text-cyan-300 hover:text-cyan-200 disabled:text-muted/20 transition-colors","aria-label":"Run command",children:e.jsx(C,{className:"w-3.5 h-3.5 fill-current"})})]})]})}const L="font-mono text-[11px] bg-cyan-300/10 text-cyan-200 px-1 py-0.5 rounded border border-cyan-300/20";function O(a,l){return a.replace(/\\"/g,'"').split(/(`[^`\n]+`)/g).map((n,t)=>n.length>2&&n.startsWith("`")&&n.endsWith("`")?e.jsx("code",{className:L,children:n.slice(1,-1)},`${l}-${t}`):n)}function o({children:a}){const l=(n,t)=>typeof n=="string"?e.jsx(b.Fragment,{children:O(n,t)},t):Array.isArray(n)?e.jsx(e.Fragment,{children:n.map((s,h)=>e.jsx(b.Fragment,{children:l(s,`${t}-${h}`)},`${t}-${h}`))}):n;return e.jsx(e.Fragment,{children:l(a,"imd")})}function $(){const[a,l]=p.useState("overview"),n=[{id:"overview",title:"1. Overview",icon:e.jsx(S,{className:"w-4 h-4"})},{id:"installation",title:"2. Installation",icon:e.jsx(q,{className:"w-4 h-4"})},{id:"quickstart",title:"3. Quick Start",icon:e.jsx(T,{className:"w-4 h-4"})},{id:"decoders",title:"4. Choosing a Decoder",icon:e.jsx(D,{className:"w-4 h-4"})},{id:"measurement",title:"5. Local Measurements",icon:e.jsx(M,{className:"w-4 h-4"})},{id:"configuration",title:"6. Configuration",icon:e.jsx(U,{className:"w-4 h-4"})},{id:"troubleshooting",title:"7. Troubleshooting",icon:e.jsx(P,{className:"w-4 h-4"})},{id:"package-reference",title:"8. Package Reference (v1.0.0)",icon:e.jsx(R,{className:"w-4 h-4"})}],t=()=>{switch(a){case"overview":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-base leading-relaxed",children:"QECTOR Decoder v3 is a Python library for quantum error correction (QEC) decoding. v1.0.0 is the first stable release: it provides 17 decoder configurations and helpers integrated into a high-performance compiled Rust core with a plug-and-play Python API."}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/10 rounded-xl flex items-start gap-3",children:[e.jsx(E,{className:"w-5 h-5 text-cyan-300 shrink-0 mt-0.5"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Ecosystem Native:"})," Swappable backend design. You can easily plug QECTOR into Stim, PyMatching, Sinter, and Qiskit pipelines with minimal API modifications: v1.0.0 registers Sinter and qiskit-qec entry points so ",e.jsx("code",{className:"text-cyan-300",children:"sinter.collect()"})," works with no ",e.jsx("code",{className:"text-cyan-300",children:"custom_decoders="}),"."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-lg mb-3",children:"Key Highlights"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"v1.0.0: First Stable Release"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"API stability tiers, Relay-BP, CS-OSD(lambda, w), colour-code cluster_bposd, qector CLI + qector-doctor, Sinter/qiskit entry points, pymatching shim."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Validate on Your Hardware"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"Hardware, GPU, and measurement results are device-local. Use the package diagnostic and declared measurement workflow instead of treating site text as performance evidence."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Multi-Algorithm Diversity"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"17 decoder configurations from exact Blossom MWPM to Belief-Matching, BP-OSD, and GPU batch decoding."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Compiled Rust Core"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"A compiled Rust core with a Python API. Exact memory, latency, and throughput behavior depends on the selected workload and environment."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Optional GPU Paths"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"GPU paths are optional and environment-dependent. Read the installed release diagnostics before relying on them."})]})]})]})]});case"installation":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR ships as pre-compiled binary wheels on PyPI. Installing requires Python and pip."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Standard Installation"}),e.jsx(c,{code:"pip install qector-decoder-v3",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"System Requirements"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-sm",children:[e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary",children:"3.9, 3.10, 3.11, 3.12, 3.13 (64-bit)"})]}),e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Operating System"}),e.jsx("span",{className:"text-primary",children:"Linux, macOS, Windows (see current PyPI wheel metadata)"})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"GPU Requirements (Optional)"}),e.jsx("span",{className:"text-primary",children:"Optional and environment-dependent; check the installed release diagnostics"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Install Optional Dependencies"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"Install only the extras required by your workflow:"}),e.jsx(c,{code:`# Stim / Sinter / PyMatching ecosystem - pip install "qector-decoder-v3[stim]" - - # Full optional environment - pip install "qector-decoder-v3[all]"`,filename:"terminal",language:"bash"})]})]});case"quickstart":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Below is a minimal package-only example: create a rotated surface code, generate a syndrome, and verify a Blossom correction against the parity-check matrix."}),e.jsx(c,{filename:"surface_code_decode.py",language:"python",code:`import numpy as np -import qector_decoder_v3 as qector - -# Build a small code and inject one bit error. -code = qector.codes.rotated_surface_code(3) -error = np.zeros(code.n_qubits, dtype=np.uint8) -error[4] = 1 -syndrome = code.syndrome(error) - -# Decode with the graphlike Blossom backend. -correction = qector.BlossomDecoder( - code.check_to_qubits, - n_qubits=code.n_qubits, -).decode(syndrome) - -# The syndrome contract is H c = s (mod 2). -matrix = np.asarray(code.parity_check_matrix(), dtype=np.uint8) -assert np.array_equal((matrix @ correction.astype(int)) % 2, syndrome) -print("Syndrome-faithful correction")`})]});case"decoders":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR includes 17 decoder configurations categorized into stable, workload-sensitive, and experimental/research tiers. Choose based on code type and speed/accuracy tradeoffs:"}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse border border-gridline text-left text-sm rounded-xl overflow-hidden",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 font-semibold",children:[e.jsx("th",{className:"p-3",children:"Decoder"}),e.jsx("th",{className:"p-3",children:"Target Code"}),e.jsx("th",{className:"p-3",children:"Speed"}),e.jsx("th",{className:"p-3",children:"Accuracy"}),e.jsx("th",{className:"p-3",children:"Tier"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:[{name:"Blossom (MWPM)",target:"Graphlike CSS / surface",speed:"Workload-dependent",accuracy:"Minimum-weight matching objective",tier:"Stable"},{name:"Belief-Matching",target:"Correlated-noise research",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"BP-OSD",target:"qLDPC, LDPC",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"Union-Find",target:"Large Surface",speed:"Near-linear O(N)",accuracy:"Approximate",tier:"Production"},{name:"GPU Batch",target:"Supported batch workloads",speed:"Runtime-dependent",accuracy:"Validate locally",tier:"Workload-sensitive"},{name:"Hybrid / Cascade",target:"Degenerate, mixed",speed:"Iterative",accuracy:"High",tier:"Research"},{name:"Colour Code",target:"Triangular colour code",speed:"Moderate",accuracy:"Native",tier:"Research"}].map(s=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-semibold text-primary",children:s.name}),e.jsx("td",{className:"p-3 text-secondary",children:s.target}),e.jsx("td",{className:"p-3 text-secondary",children:s.speed}),e.jsx("td",{className:"p-3 text-secondary",children:s.accuracy}),e.jsx("td",{className:"p-3",children:e.jsx("span",{className:`px-2 py-0.5 rounded text-[10px] uppercase font-bold border ${s.tier==="Production"?"bg-green-400/10 text-green-400 border-green-400/20":"bg-gold-400/10 text-gold-400 border-gold-400/20"}`,children:s.tier})})]},s.name))})]})})]});case"measurement":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Hardware-specific measurements are not published on this site. If your project requires a local measurement, record the code, noise model, decoder configuration, seed, shots, environment, and raw artifact."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Environment Diagnostic"}),e.jsx(c,{code:"qector-doctor",filename:"terminal",language:"bash"}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["15-check diagnostic that reports PASS / WARN / FAIL per check and explains WHY a decoder is unavailable on your machine. Full report via ",e.jsx("code",{className:"text-cyan-300",children:"qector-doctor --json"}),"."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Local measurement via qector bench"}),e.jsx("p",{className:"text-secondary text-xs mb-2",children:"Use the command documented by the installed package release. The result is machine- and workload-specific, not a site claim:"}),e.jsx(c,{code:"qector bench --distance 5 --rounds 5 --shots 10000 --decoder blossom --noise 0.001",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Interactive Sandbox CLI"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"This UI is a command-output demonstration only; it does not execute commands or generate benchmark data:"}),e.jsx(B,{})]})]});case"configuration":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Detailed constructor configuration arguments for QECTOR's primary decoders:"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BlossomDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"adaptive_k"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`bool` (Default: `True`). Enable union-find matching pre-filtering to minimize match graph sizing."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"timeout"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`float` (Default: `None`). Maximum time (in seconds) allowed to resolve a single syndrome."})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BeliefMatchingDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_iters"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `30`). Maximum number of belief propagation iterations. Higher iterations improve syndrome accuracy."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"max_paths"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `10`). Maximum number of alternative paths generated for matching reweighting calculations."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_method"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:'`str` (Default: `"product_sum"`). Choice of BP update method. Options: `"product_sum"`, `"minimum_sum"`.'})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"GpuBatchDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"backend"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:'`str` (Default: `"cuda"`). Choose GPU compilation framework. Options: `"cuda"`, `"opencl"`.'})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"batch_size"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `1000`). Number of parallel syndromes transferred to and calculated in the GPU memory space."})})]})]})]})]});case"troubleshooting":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Solutions for common installation and running issues:"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:e.jsx(o,{children:"Issue: ImportError when importing `qector`"})})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Ensure your Python architecture matches the wheel and reinstall with `python -m pip install --force-reinstall qector-decoder-v3`."]})})]}),e.jsxs("div",{className:"p-4 bg-gold-400/5 border border-gold-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-gold-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: GPU / CUDA is not detected"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Verify drivers by typing `nvidia-smi` in terminal. Ensure CUDA Toolkit 11.8 or higher is installed and environment variable `CUDA_PATH` or `LD_LIBRARY_PATH` points to the CUDA install folder."]})})]}),e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: Out Of Memory (OOM) on GPU batching"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Lower the `batch_size` argument in your `GpuBatchDecoder` instantiation. For exceptionally large code distances (d > 15), prefer the linear-scaling `UnionFindDecoder` which reduces memory demands."]})})]})]})]});case"package-reference":return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl flex items-center justify-between flex-wrap gap-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-bold text-lg",children:"QECTOR Decoder v3: Extended Reference (package only)"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Version: 1.0.0 · PyPI: qector-decoder-v3 · Backend: Rust + PyO3"})]}),e.jsx("a",{href:"/docs/reference.md",target:"_blank",rel:"noopener noreferrer",download:"QECTOR Decoder v3 - Reference (package only).md",className:"btn-cyan text-xs py-2 px-4",children:"Download Reference (.md)"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"1. Installation & Platforms"}),e.jsx(c,{code:`pip install --upgrade "qector-decoder-v3>=1.0,<2" -pip install "qector-decoder-v3[stim]" # Stim / Sinter / PyMatching / LDPC ecosystem -pip install "qector-decoder-v3[bench]" # local measurement tools -pip install "qector-decoder-v3[all]" # optional full environment`,language:"bash",filename:"terminal"}),e.jsxs("div",{className:"mt-3 border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary font-mono",children:"3.9 - 3.13"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Platforms"}),e.jsx("span",{className:"text-primary",children:"Linux x86_64 (manylinux), Windows x64, macOS arm64"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License"}),e.jsx("span",{className:"text-primary",children:"Source-available (Free academic / non-commercial)"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Startup Notice"}),e.jsx("span",{className:"text-primary font-mono",children:"Suppressed with QECTOR_SILENT=1"})]}),e.jsxs("div",{className:"p-2.5 flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License Env"}),e.jsx("span",{className:"text-primary font-mono",children:"QECTOR_LICENSE + QECTOR_LICENSE_KEY (Ed25519 token)"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"2. Core Architecture"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1.5 text-secondary text-xs leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Rust Core (compiled extension):"})," Matching, UF, batch CPU/GPU algorithms."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Python Surface:"})," Clean API, Stim/Sinter compat, belief/GNN layers, licensing."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Zero-copy NumPy:"})," Direct memory access; GIL-free parallel decoding paths."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Version Symbol:"})," ",e.jsx("code",{className:"text-cyan-300",children:'qector_decoder_v3.__version__ == "1.0.0"'})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"3. Decoder Families & Incidence Rules"}),e.jsxs("p",{className:"text-muted-foreground text-xs mb-3",children:[e.jsx("strong",{className:"text-cyan-300",children:"Graph-like rule (UF family):"})," Every qubit must participate in at most two checks (participation ≤ 2). Matrices violating this raise a clear error (",e.jsx("code",{className:"text-red-400",children:"-32602"}),"). ",e.jsx("code",{className:"text-cyan-300",children:"BlossomDecoder"}),", ",e.jsx("code",{className:"text-cyan-300",children:"SparseBlossomDecoder"}),", and ",e.jsx("code",{className:"text-cyan-300",children:"BpOsdDecoder"})," accept general hyperedge codes."]}),e.jsx("div",{className:"overflow-x-auto rounded-xl",children:e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 font-bold border-b border-gridline bg-surface/30",children:[e.jsx("span",{children:"Class"}),e.jsx("span",{children:"Best for"}),e.jsx("span",{children:"Status"}),e.jsx("span",{children:"Graph-like?"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"UnionFindDecoder"}),e.jsx("span",{children:"Low-latency approximate"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes (participation ≤ 2)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"FastUnionFindDecoder"}),e.jsx("span",{children:"Faster UF hot path"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BlossomDecoder"}),e.jsx("span",{children:"Exact MWPM"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"SparseBlossomDecoder"}),e.jsx("span",{children:"Near-optimal matching"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BeliefMatching"}),e.jsx("span",{children:"Correlated-noise accuracy"}),e.jsx("span",{children:"Research"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BpOsdDecoder"}),e.jsx("span",{children:"LDPC / qLDPC"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BatchDecoder"}),e.jsx("span",{children:"High-throughput CPU batch"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes for UF batch"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"CUDABatchDecoder"}),e.jsx("span",{children:"GPU batch (NVIDIA)"}),e.jsx("span",{children:"Runtime-dependent"}),e.jsx("span",{children:"N/A"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"AutoDecoder"}),e.jsx("span",{children:"7-tier self-debugging fallback"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"N/A"})]})]})})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"4. Code Generators"}),e.jsx(c,{code:`from qector_decoder_v3 import ( - generate_repetition_code_checks, # (checks, n_qubits) - generate_ring_code_checks, # (checks, n_qubits) - generate_surface_code_checks, # surface-code checks -)`,language:"python",filename:"python"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"5. MCP and General-Matrix Workflows"}),e.jsx(c,{code:`# The standalone library MCP server is documented separately. -# Start it from the plugin package with: -python mcp/mcp_server_library.py - -# Initialize and call tools/list before using a tool.`,language:"python",filename:"mcp_server.py"}),e.jsx("p",{className:"text-muted-foreground text-xs mt-2 mb-3",children:"For general matrices, use the decoder family documented for that workload and verify every returned correction against H c = s (mod 2):"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import BlossomDecoder, SparseBlossomDecoder, BpOsdDecoder - -def decode_hyperedge(checks, n_qubits, syndrome, kind="Blossom", **opts): - syn = np.asarray(syndrome, dtype=np.uint8).ravel() - if kind in ("Blossom", "blossom"): - return BlossomDecoder(checks, n_qubits).decode(syn) - if kind in ("SparseBlossom", "sparse_blossom"): - return SparseBlossomDecoder(checks, n_qubits).decode(syn) - if kind.lower() in ("bposd", "bp_osd"): - H = np.zeros((len(checks), n_qubits), dtype=np.uint8) - for i, c in enumerate(checks): - for q in c: H[i, q] ^= 1 - return BpOsdDecoder(H, error_rate=opts.get("error_rate", 0.05)).decode(syn) - raise ValueError(f"unsupported kind: {kind}")`,language:"python",filename:"hyperedge_workaround.py"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"6. Verified Fallback Pattern"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed mb-3",children:"A fallback is safe only when each candidate is checked against the same parity-check matrix. The following pattern uses the stable Union-Find and Blossom classes and fails closed if a candidate is not syndrome-faithful:"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder - -def faithful_decode(check_to_qubits, n_qubits, syndrome): - syndrome = np.asarray(syndrome, dtype=np.uint8).ravel() - matrix = np.zeros((len(check_to_qubits), n_qubits), dtype=np.uint8) - for check, qubits in enumerate(check_to_qubits): - matrix[check, qubits] = 1 - - for decoder_type in (FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder): - try: - correction = np.asarray( - decoder_type(check_to_qubits, n_qubits=n_qubits).decode(syndrome), - dtype=np.uint8, - ) - if np.array_equal((matrix @ correction.astype(int)) % 2, syndrome): - return correction, decoder_type.__name__ - except Exception: - continue - raise RuntimeError("No syndrome-faithful decoder result")`,language:"python",filename:"cascade_decode.py"})]})]});default:return null}};return e.jsxs(e.Fragment,{children:[e.jsx(N,{title:"User Manual · QECTOR",description:"Complete user manual for QECTOR Decoder v3. Installation, configuration, decoder selection, validation, and troubleshooting."}),e.jsx(w,{data:{"@context":"https://schema.org","@type":"HowTo",name:"How to Install and Run QECTOR Decoder v3",description:"Step-by-step instructions to install QECTOR, verify a syndrome-faithful decode, select a decoder, and review evidence boundaries.",step:[{"@type":"HowToStep",name:"Install the package",text:"Run pip install qector-decoder-v3 in your Python terminal to install the Rust core binary wheels."},{"@type":"HowToStep",name:"Verify the installation",text:'Verify the installation with python -c "import qector_decoder_v3 as qd; print(qd.__version__)" and a small syndrome-faithfulness check.'},{"@type":"HowToStep",name:"Review evidence boundaries",text:"Read the v1.0.0 reference manual and record code, noise model, decoder configuration, seed, environment, and artifact metadata before making a local measurement."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"15 backend families powering 17 decoder configurations · GPU Batch · Stim · Sinter · Qiskit"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(I,{text:"User Manual",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Complete guide to QECTOR Decoder v3: installation, decoder selection, local measurements, diagnostics, and ecosystem integration."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsx("div",{className:"max-w-6xl mx-auto",children:e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-4 gap-8",children:[e.jsx("div",{className:"lg:col-span-1",children:e.jsx("nav",{"aria-label":"Manual sections",className:"sticky top-24 space-y-1 bg-surface/10 p-2 rounded-xl border border-gridline/50",children:n.map(s=>e.jsxs("button",{type:"button",onClick:()=>l(s.id),"aria-current":a===s.id?"true":void 0,className:`w-full text-left px-3.5 py-2.5 rounded-lg text-sm font-medium transition-all duration-200 flex items-center gap-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cyan-300 ${a===s.id?"bg-cyan-300/10 text-cyan-300 border border-cyan-300/20":"text-secondary hover:text-primary hover:bg-white/5 border border-transparent"}`,children:[s.icon,s.title]},s.id))})}),e.jsx("div",{className:"lg:col-span-3",children:e.jsxs("div",{className:"card-surface bg-surface/20 min-h-[500px]",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6 text-primary border-b border-gridline pb-4 flex items-center gap-2",children:n.find(s=>s.id===a)?.title.substring(3)}),e.jsx("div",{className:"transition-all duration-300",children:t()})]})})]})})})]})}function T(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.813 15.904 9 21l-.813-5.096L3 15l5.096-.813L9 9l.813 5.096L15 15l-5.187.904Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19.071 4.929a10 10 0 0 0-14.142 0M12 3v3m0 12v3M3 12h3m12 0h3",opacity:"0.5"})]})}function M(a){return e.jsx("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v5.25c0 .621-.504 1.125-1.125 1.125h-2.25A1.125 1.125 0 0 1 3 18.375v-5.25ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v9.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125v-9.75ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v14.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z"})})}function U(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.324.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.43l-1.003.828c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.954.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.43l1.004-.827c.292-.24.437-.613.43-.991a6.936 6.936 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"})]})}export{$ as default}; diff --git a/assets/Manual-shHk1ZuH.js b/assets/Manual-shHk1ZuH.js deleted file mode 100644 index d9ba915d..00000000 --- a/assets/Manual-shHk1ZuH.js +++ /dev/null @@ -1,67 +0,0 @@ -import{r as p,j as e,R as b}from"./vendor-react-BiHfrq0e.js";import{S as N,J as w,C as c}from"./index-DlmjLVYe.js";import{T as k,o as _,u as C,I as S,g as q,a as D,C as P,B as R,v as u,i as E}from"./vendor-ui-B0ssGG4c.js";import{N as I}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-gsap-a3sj5zmn.js";function B(){const[a,l]=p.useState(""),[n,t]=p.useState([{text:"QECTOR CLI Terminal Demo (simulation only)",type:"info"},{text:"No command is executed and no external service is contacted.",type:"info"}]),[s,h]=p.useState(!1),g=p.useRef(null),y=()=>{g.current?.scrollIntoView({behavior:"smooth"})};p.useEffect(()=>{y()},[n]);const f=async i=>{const m=i.trim().toLowerCase(),x=[...n,{text:`qector@sandbox:~$ ${i}`,type:"input"}];t(x),l(""),h(!0);const d=r=>new Promise(v=>setTimeout(v,r));m==="help"?(await d(200),t(r=>[...r,{text:"Available commands:",type:"info"},{text:" help - Show this menu",type:"output"},{text:" pip install qector-decoder-v3 - Show the install command",type:"output"},{text:" qector-doctor - Show the diagnostic command",type:"output"},{text:" qector bench -d 5 - Show a local measurement command",type:"output"},{text:" clear - Clear the terminal screen",type:"output"}])):m==="clear"?t([]):m==="pip install qector-decoder-v3"?(await d(300),t(r=>[...r,{text:"Simulation only: no package was downloaded.",type:"output"}]),await d(800),t(r=>[...r,{text:"Simulation only: no package was installed.",type:"output"}]),await d(400),t(r=>[...r,{text:"For a real install, follow the current PyPI and release verification instructions.",type:"output"}]),await d(600),t(r=>[...r,{text:"✓ Demo complete: no network request or filesystem change was made.",type:"success"}])):m==="qector-doctor"?(await d(300),t(r=>[...r,{text:"Simulation only: qector-doctor was not run.",type:"output"}]),await d(500),t(r=>[...r,{text:"Run qector-doctor in your installed environment to obtain real PASS / WARN / FAIL results.",type:"info"}])):m==="qector bench -d 5"||m==="qector bench --distance 5"?(await d(400),t(r=>[...r,{text:"Simulation only: no circuit or measurement was generated.",type:"output"}]),await d(1e3),t(r=>[...r,{text:"Run qector bench on your own declared workload to generate real local evidence.",type:"info"}])):(await d(150),t(r=>[...r,{text:`qector: command not found: ${i}. Type "help" for a list of commands.`,type:"info"}])),h(!1)},j=i=>{i.preventDefault(),!(!a.trim()||s)&&f(a)};return e.jsxs("div",{className:"flex flex-col border border-gridline bg-void/90 rounded-2xl overflow-hidden shadow-2xl",children:[e.jsxs("div",{className:"flex items-center justify-between px-4 py-3 bg-surface border-b border-gridline",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(k,{className:"w-4 h-4 text-cyan-300"}),e.jsx("span",{className:"font-mono text-xs text-secondary font-semibold",children:"interactive-cli.sh"})]}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-red-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-yellow-500/80"}),e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-green-500/80"})]})]}),e.jsxs("div",{className:"p-5 font-mono text-xs h-72 overflow-y-auto space-y-2 select-text custom-scrollbar",children:[n.map((i,m)=>{let x="text-secondary";return i.type==="input"?x="text-cyan-300 font-semibold":i.type==="success"?x="text-green-400 font-semibold":i.type==="info"&&(x="text-gold-400"),e.jsx("div",{className:`${x} leading-relaxed whitespace-pre-wrap`,children:i.text},m)}),s&&e.jsxs("div",{className:"text-muted-foreground animate-pulse flex items-center gap-1",children:[e.jsx("span",{className:"w-1.5 h-3 bg-muted-foreground inline-block animate-caret"}),e.jsx("span",{children:"Executing..."})]}),e.jsx("div",{ref:g})]}),e.jsxs("form",{onSubmit:j,className:"flex items-center border-t border-gridline bg-surface/50 px-4 py-2",children:[e.jsx(_,{className:"w-4 h-4 text-cyan-300 shrink-0"}),e.jsx("input",{type:"text",value:a,onChange:i=>l(i.target.value),disabled:s,className:"flex-1 bg-transparent border-none outline-none font-mono text-xs text-cyan-300 px-2 py-1 placeholder-cyan-300/60 focus-visible:ring-2 focus-visible:ring-cyan-300",placeholder:'Type a command (e.g. "help", "pip install qector-decoder-v3")...',"aria-label":"Terminal input"}),e.jsx("button",{type:"submit",disabled:s||!a.trim(),className:"p-1 text-cyan-300 hover:text-cyan-200 disabled:text-muted/20 transition-colors","aria-label":"Run command",children:e.jsx(C,{className:"w-3.5 h-3.5 fill-current"})})]})]})}const L="font-mono text-[11px] bg-cyan-300/10 text-cyan-200 px-1 py-0.5 rounded border border-cyan-300/20";function O(a,l){return a.replace(/\\"/g,'"').split(/(`[^`\n]+`)/g).map((n,t)=>n.length>2&&n.startsWith("`")&&n.endsWith("`")?e.jsx("code",{className:L,children:n.slice(1,-1)},`${l}-${t}`):n)}function o({children:a}){const l=(n,t)=>typeof n=="string"?e.jsx(b.Fragment,{children:O(n,t)},t):Array.isArray(n)?e.jsx(e.Fragment,{children:n.map((s,h)=>e.jsx(b.Fragment,{children:l(s,`${t}-${h}`)},`${t}-${h}`))}):n;return e.jsx(e.Fragment,{children:l(a,"imd")})}function $(){const[a,l]=p.useState("overview"),n=[{id:"overview",title:"1. Overview",icon:e.jsx(S,{className:"w-4 h-4"})},{id:"installation",title:"2. Installation",icon:e.jsx(q,{className:"w-4 h-4"})},{id:"quickstart",title:"3. Quick Start",icon:e.jsx(T,{className:"w-4 h-4"})},{id:"decoders",title:"4. Choosing a Decoder",icon:e.jsx(D,{className:"w-4 h-4"})},{id:"measurement",title:"5. Local Measurements",icon:e.jsx(M,{className:"w-4 h-4"})},{id:"configuration",title:"6. Configuration",icon:e.jsx(U,{className:"w-4 h-4"})},{id:"troubleshooting",title:"7. Troubleshooting",icon:e.jsx(P,{className:"w-4 h-4"})},{id:"package-reference",title:"8. Package Reference (v1.0.0)",icon:e.jsx(R,{className:"w-4 h-4"})}],t=()=>{switch(a){case"overview":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-base leading-relaxed",children:"QECTOR Decoder v3 is a Python library for quantum error correction (QEC) decoding. v1.0.0 is the first stable release: it provides 17 decoder configurations and helpers integrated into a high-performance compiled Rust core with a plug-and-play Python API."}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/10 rounded-xl flex items-start gap-3",children:[e.jsx(E,{className:"w-5 h-5 text-cyan-300 shrink-0 mt-0.5"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Ecosystem Native:"})," Swappable backend design. You can easily plug QECTOR into Stim, PyMatching, Sinter, and Qiskit pipelines with minimal API modifications: v1.0.0 registers Sinter and qiskit-qec entry points so ",e.jsx("code",{className:"text-cyan-300",children:"sinter.collect()"})," works with no ",e.jsx("code",{className:"text-cyan-300",children:"custom_decoders="}),"."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-lg mb-3",children:"Key Highlights"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"v1.0.0: First Stable Release"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"API stability tiers, Relay-BP, CS-OSD(lambda, w), colour-code cluster_bposd, qector CLI + qector-doctor, Sinter/qiskit entry points, pymatching shim."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Validate on Your Hardware"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"Hardware, GPU, and measurement results are device-local. Use the package diagnostic and declared measurement workflow instead of treating site text as performance evidence."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Multi-Algorithm Diversity"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"17 decoder configurations from exact Blossom MWPM to Belief-Matching, BP-OSD, and GPU batch decoding."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Compiled Rust Core"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"A compiled Rust core with a Python API. Exact memory, latency, and throughput behavior depends on the selected workload and environment."})]}),e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("h4",{className:"text-cyan-300 font-semibold text-sm mb-1",children:"Optional GPU Paths"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"GPU paths are optional and environment-dependent. Read the installed release diagnostics before relying on them."})]})]})]})]});case"installation":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR ships as pre-compiled binary wheels on PyPI. Installing requires Python and pip."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Standard Installation"}),e.jsx(c,{code:"pip install qector-decoder-v3",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"System Requirements"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-sm",children:[e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary",children:"3.9, 3.10, 3.11, 3.12, 3.13 (64-bit)"})]}),e.jsxs("div",{className:"p-3 border-b border-gridline flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"Operating System"}),e.jsx("span",{className:"text-primary",children:"Linux, macOS, Windows (see current PyPI wheel metadata)"})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-3",children:[e.jsx("span",{className:"text-muted-foreground",children:"GPU Requirements (Optional)"}),e.jsx("span",{className:"text-primary",children:"Optional and environment-dependent; check the installed release diagnostics"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Install Optional Dependencies"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"Install only the extras required by your workflow:"}),e.jsx(c,{code:`# Stim / Sinter / PyMatching ecosystem - pip install "qector-decoder-v3[stim]" - - # Full optional environment - pip install "qector-decoder-v3[all]"`,filename:"terminal",language:"bash"})]})]});case"quickstart":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Below is a minimal package-only example: create a rotated surface code, generate a syndrome, and verify a Blossom correction against the parity-check matrix."}),e.jsx(c,{filename:"surface_code_decode.py",language:"python",code:`import numpy as np -import qector_decoder_v3 as qector - -# Build a small code and inject one bit error. -code = qector.codes.rotated_surface_code(3) -error = np.zeros(code.n_qubits, dtype=np.uint8) -error[4] = 1 -syndrome = code.syndrome(error) - -# Decode with the graphlike Blossom backend. -correction = qector.BlossomDecoder( - code.check_to_qubits, - n_qubits=code.n_qubits, -).decode(syndrome) - -# The syndrome contract is H c = s (mod 2). -matrix = np.asarray(code.parity_check_matrix(), dtype=np.uint8) -assert np.array_equal((matrix @ correction.astype(int)) % 2, syndrome) -print("Syndrome-faithful correction")`})]});case"decoders":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR includes 17 decoder configurations categorized into stable, workload-sensitive, and experimental/research tiers. Choose based on code type and speed/accuracy tradeoffs:"}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse border border-gridline text-left text-sm rounded-xl overflow-hidden",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 font-semibold",children:[e.jsx("th",{className:"p-3",children:"Decoder"}),e.jsx("th",{className:"p-3",children:"Target Code"}),e.jsx("th",{className:"p-3",children:"Speed"}),e.jsx("th",{className:"p-3",children:"Accuracy"}),e.jsx("th",{className:"p-3",children:"Tier"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:[{name:"Blossom (MWPM)",target:"Graphlike CSS / surface",speed:"Workload-dependent",accuracy:"Minimum-weight matching objective",tier:"Stable"},{name:"Belief-Matching",target:"Correlated-noise research",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"BP-OSD",target:"qLDPC, LDPC",speed:"Workload-dependent",accuracy:"Evaluate locally",tier:"Research"},{name:"Union-Find",target:"Large Surface",speed:"Near-linear O(N)",accuracy:"Approximate",tier:"Production"},{name:"GPU Batch",target:"Supported batch workloads",speed:"Runtime-dependent",accuracy:"Validate locally",tier:"Workload-sensitive"},{name:"Hybrid / Cascade",target:"Degenerate, mixed",speed:"Iterative",accuracy:"High",tier:"Research"},{name:"Colour Code",target:"Triangular colour code",speed:"Moderate",accuracy:"Native",tier:"Research"}].map(s=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-semibold text-primary",children:s.name}),e.jsx("td",{className:"p-3 text-secondary",children:s.target}),e.jsx("td",{className:"p-3 text-secondary",children:s.speed}),e.jsx("td",{className:"p-3 text-secondary",children:s.accuracy}),e.jsx("td",{className:"p-3",children:e.jsx("span",{className:`px-2 py-0.5 rounded text-[10px] uppercase font-bold border ${s.tier==="Production"?"bg-green-400/10 text-green-400 border-green-400/20":"bg-gold-400/10 text-gold-400 border-gold-400/20"}`,children:s.tier})})]},s.name))})]})})]});case"measurement":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Hardware-specific measurements are not published on this site. If your project requires a local measurement, record the code, noise model, decoder configuration, seed, shots, environment, and raw artifact."}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Environment Diagnostic"}),e.jsx(c,{code:"qector-doctor",filename:"terminal",language:"bash"}),e.jsxs("p",{className:"text-secondary text-xs mt-2",children:["15-check diagnostic that reports PASS / WARN / FAIL per check and explains WHY a decoder is unavailable on your machine. Full report via ",e.jsx("code",{className:"text-cyan-300",children:"qector-doctor --json"}),"."]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Local measurement via qector bench"}),e.jsx("p",{className:"text-secondary text-xs mb-2",children:"Use the command documented by the installed package release. The result is machine- and workload-specific, not a site claim:"}),e.jsx(c,{code:"qector bench --distance 5 --rounds 5 --shots 10000 --decoder blossom --noise 0.001",filename:"terminal",language:"bash"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-sm mb-2",children:"Interactive Sandbox CLI"}),e.jsx("p",{className:"text-secondary text-xs mb-3",children:"This UI is a command-output demonstration only; it does not execute commands or generate benchmark data:"}),e.jsx(B,{})]})]});case"configuration":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Detailed constructor configuration arguments for QECTOR's primary decoders:"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BlossomDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"adaptive_k"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`bool` (Default: `True`). Enable union-find matching pre-filtering to minimize match graph sizing."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"timeout"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`float` (Default: `None`). Maximum time (in seconds) allowed to resolve a single syndrome."})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"BeliefMatchingDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_iters"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `30`). Maximum number of belief propagation iterations. Higher iterations improve syndrome accuracy."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"max_paths"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `10`). Maximum number of alternative paths generated for matching reweighting calculations."})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"bp_method"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:'`str` (Default: `"product_sum"`). Choice of BP update method. Options: `"product_sum"`, `"minimum_sum"`.'})})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:"GpuBatchDecoder"}),e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden divide-y divide-gridline text-sm",children:[e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"backend"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:'`str` (Default: `"cuda"`). Choose GPU compilation framework. Options: `"cuda"`, `"opencl"`.'})})]}),e.jsxs("div",{className:"p-3 flex justify-between gap-4",children:[e.jsx("span",{className:"font-mono text-primary min-w-[120px]",children:"batch_size"}),e.jsx("span",{className:"text-secondary text-xs flex-1",children:e.jsx(o,{children:"`int` (Default: `1000`). Number of parallel syndromes transferred to and calculated in the GPU memory space."})})]})]})]})]});case"troubleshooting":return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Solutions for common installation and running issues:"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:e.jsx(o,{children:"Issue: ImportError when importing `qector`"})})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Ensure your Python architecture matches the wheel and reinstall with `python -m pip install --force-reinstall qector-decoder-v3`."]})})]}),e.jsxs("div",{className:"p-4 bg-gold-400/5 border border-gold-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-gold-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: GPU / CUDA is not detected"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Verify drivers by typing `nvidia-smi` in terminal. Ensure CUDA Toolkit 11.8 or higher is installed and environment variable `CUDA_PATH` or `LD_LIBRARY_PATH` points to the CUDA install folder."]})})]}),e.jsxs("div",{className:"p-4 bg-red-400/5 border border-red-400/20 rounded-xl",children:[e.jsxs("div",{className:"flex items-center gap-2 text-red-400 font-semibold text-sm mb-2",children:[e.jsx(u,{className:"w-4 h-4 shrink-0"}),e.jsx("span",{children:"Issue: Out Of Memory (OOM) on GPU batching"})]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:e.jsxs(o,{children:[e.jsx("strong",{children:"Fix:"})," Lower the `batch_size` argument in your `GpuBatchDecoder` instantiation. For exceptionally large code distances (d > 15), prefer the linear-scaling `UnionFindDecoder` which reduces memory demands."]})})]})]})]});case"package-reference":return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl flex items-center justify-between flex-wrap gap-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-bold text-lg",children:"QECTOR Decoder v3: Extended Reference (package only)"}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Version: 1.0.0 · PyPI: qector-decoder-v3 · Backend: Rust + PyO3"})]}),e.jsx("a",{href:"/docs/reference.md",target:"_blank",rel:"noopener noreferrer",download:"QECTOR Decoder v3 - Reference (package only).md",className:"btn-cyan text-xs py-2 px-4",children:"Download Reference (.md)"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"1. Installation & Platforms"}),e.jsx(c,{code:`pip install --upgrade "qector-decoder-v3>=1.0,<2" -pip install "qector-decoder-v3[stim]" # Stim / Sinter / PyMatching / LDPC ecosystem -pip install "qector-decoder-v3[bench]" # local measurement tools -pip install "qector-decoder-v3[all]" # optional full environment`,language:"bash",filename:"terminal"}),e.jsxs("div",{className:"mt-3 border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Python"}),e.jsx("span",{className:"text-primary font-mono",children:"3.9 - 3.13"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Platforms"}),e.jsx("span",{className:"text-primary",children:"Linux x86_64 (manylinux), Windows x64, macOS arm64"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License"}),e.jsx("span",{className:"text-primary",children:"Source-available (Free academic / non-commercial)"})]}),e.jsxs("div",{className:"p-2.5 border-b border-gridline flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Startup Notice"}),e.jsx("span",{className:"text-primary font-mono",children:"Suppressed with QECTOR_SILENT=1"})]}),e.jsxs("div",{className:"p-2.5 flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"License Env"}),e.jsx("span",{className:"text-primary font-mono",children:"QECTOR_LICENSE + QECTOR_LICENSE_KEY (Ed25519 token)"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"2. Core Architecture"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1.5 text-secondary text-xs leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Rust Core (compiled extension):"})," Matching, UF, batch CPU/GPU algorithms."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Python Surface:"})," Clean API, Stim/Sinter compat, belief/GNN layers, licensing."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Zero-copy NumPy:"})," Direct memory access; GIL-free parallel decoding paths."]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Version Symbol:"})," ",e.jsx("code",{className:"text-cyan-300",children:'qector_decoder_v3.__version__ == "1.0.0"'})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"3. Decoder Families & Incidence Rules"}),e.jsxs("p",{className:"text-muted-foreground text-xs mb-3",children:[e.jsx("strong",{className:"text-cyan-300",children:"Graph-like rule (UF family):"})," Every qubit must participate in at most two checks (participation ≤ 2). Matrices violating this raise a clear error (",e.jsx("code",{className:"text-red-400",children:"-32602"}),"). ",e.jsx("code",{className:"text-cyan-300",children:"BlossomDecoder"}),", ",e.jsx("code",{className:"text-cyan-300",children:"SparseBlossomDecoder"}),", and ",e.jsx("code",{className:"text-cyan-300",children:"BpOsdDecoder"})," accept general hyperedge codes."]}),e.jsx("div",{className:"overflow-x-auto rounded-xl",children:e.jsxs("div",{className:"border border-gridline bg-void/30 rounded-xl overflow-hidden text-xs",children:[e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 font-bold border-b border-gridline bg-surface/30",children:[e.jsx("span",{children:"Class"}),e.jsx("span",{children:"Best for"}),e.jsx("span",{children:"Status"}),e.jsx("span",{children:"Graph-like?"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"UnionFindDecoder"}),e.jsx("span",{children:"Low-latency approximate"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes (participation ≤ 2)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"FastUnionFindDecoder"}),e.jsx("span",{children:"Faster UF hot path"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BlossomDecoder"}),e.jsx("span",{children:"Exact MWPM"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"SparseBlossomDecoder"}),e.jsx("span",{children:"Near-optimal matching"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BeliefMatching"}),e.jsx("span",{children:"Correlated-noise accuracy"}),e.jsx("span",{children:"Research"}),e.jsx("span",{children:"Prefer graph-like"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BpOsdDecoder"}),e.jsx("span",{children:"LDPC / qLDPC"}),e.jsx("span",{children:"Experimental"}),e.jsx("span",{children:"No (Hyperedge OK)"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"BatchDecoder"}),e.jsx("span",{children:"High-throughput CPU batch"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"Yes for UF batch"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5 border-b border-gridline",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"CUDABatchDecoder"}),e.jsx("span",{children:"GPU batch (NVIDIA)"}),e.jsx("span",{children:"Runtime-dependent"}),e.jsx("span",{children:"N/A"})]}),e.jsxs("div",{className:"grid grid-cols-4 min-w-[560px] p-2.5",children:[e.jsx("span",{className:"font-mono text-cyan-300",children:"AutoDecoder"}),e.jsx("span",{children:"7-tier self-debugging fallback"}),e.jsx("span",{children:"Stable"}),e.jsx("span",{children:"N/A"})]})]})})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"4. Code Generators"}),e.jsx(c,{code:`from qector_decoder_v3 import ( - generate_repetition_code_checks, # (checks, n_qubits) - generate_ring_code_checks, # (checks, n_qubits) - generate_surface_code_checks, # surface-code checks -)`,language:"python",filename:"python"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"5. MCP and General-Matrix Workflows"}),e.jsx(c,{code:`# The standalone library MCP server is documented separately. -# Start it from the plugin package with: -python mcp/mcp_server_library.py - -# Initialize and call tools/list before using a tool.`,language:"python",filename:"mcp_server.py"}),e.jsx("p",{className:"text-muted-foreground text-xs mt-2 mb-3",children:"For general matrices, use the decoder family documented for that workload and verify every returned correction against H c = s (mod 2):"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import BlossomDecoder, SparseBlossomDecoder, BpOsdDecoder - -def decode_hyperedge(checks, n_qubits, syndrome, kind="Blossom", **opts): - syn = np.asarray(syndrome, dtype=np.uint8).ravel() - if kind in ("Blossom", "blossom"): - return BlossomDecoder(checks, n_qubits).decode(syn) - if kind in ("SparseBlossom", "sparse_blossom"): - return SparseBlossomDecoder(checks, n_qubits).decode(syn) - if kind.lower() in ("bposd", "bp_osd"): - H = np.zeros((len(checks), n_qubits), dtype=np.uint8) - for i, c in enumerate(checks): - for q in c: H[i, q] ^= 1 - return BpOsdDecoder(H, error_rate=opts.get("error_rate", 0.05)).decode(syn) - raise ValueError(f"unsupported kind: {kind}")`,language:"python",filename:"hyperedge_workaround.py"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-primary font-semibold text-base mb-3",children:"6. Verified Fallback Pattern"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed mb-3",children:"A fallback is safe only when each candidate is checked against the same parity-check matrix. The following pattern uses the stable Union-Find and Blossom classes and fails closed if a candidate is not syndrome-faithful:"}),e.jsx(c,{code:`import numpy as np -from qector_decoder_v3 import FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder - -def faithful_decode(check_to_qubits, n_qubits, syndrome): - syndrome = np.asarray(syndrome, dtype=np.uint8).ravel() - matrix = np.zeros((len(check_to_qubits), n_qubits), dtype=np.uint8) - for check, qubits in enumerate(check_to_qubits): - matrix[check, qubits] = 1 - - for decoder_type in (FastUnionFindDecoder, UnionFindDecoder, BlossomDecoder): - try: - correction = np.asarray( - decoder_type(check_to_qubits, n_qubits=n_qubits).decode(syndrome), - dtype=np.uint8, - ) - if np.array_equal((matrix @ correction.astype(int)) % 2, syndrome): - return correction, decoder_type.__name__ - except Exception: - continue - raise RuntimeError("No syndrome-faithful decoder result")`,language:"python",filename:"cascade_decode.py"})]})]});default:return null}};return e.jsxs(e.Fragment,{children:[e.jsx(N,{title:"User Manual · QECTOR",description:"Complete user manual for QECTOR Decoder v3. Installation, configuration, decoder selection, validation, and troubleshooting."}),e.jsx(w,{data:{"@context":"https://schema.org","@type":"HowTo",name:"How to Install and Run QECTOR Decoder v3",description:"Step-by-step instructions to install QECTOR, verify a syndrome-faithful decode, select a decoder, and review evidence boundaries.",step:[{"@type":"HowToStep",name:"Install the package",text:"Run pip install qector-decoder-v3 in your Python terminal to install the Rust core binary wheels."},{"@type":"HowToStep",name:"Verify the installation",text:'Verify the installation with python -c "import qector_decoder_v3 as qd; print(qd.__version__)" and a small syndrome-faithfulness check.'},{"@type":"HowToStep",name:"Review evidence boundaries",text:"Read the v1.0.0 reference manual and record code, noise model, decoder configuration, seed, environment, and artifact metadata before making a local measurement."}]}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"15 backend families powering 17 decoder configurations · GPU Batch · Stim · Sinter · Qiskit"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(I,{text:"User Manual",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Complete guide to QECTOR Decoder v3: installation, decoder selection, local measurements, diagnostics, and ecosystem integration."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsx("div",{className:"max-w-6xl mx-auto",children:e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-4 gap-8",children:[e.jsx("div",{className:"lg:col-span-1",children:e.jsx("nav",{"aria-label":"Manual sections",className:"sticky top-24 space-y-1 bg-surface/10 p-2 rounded-xl border border-gridline/50",children:n.map(s=>e.jsxs("button",{type:"button",onClick:()=>l(s.id),"aria-current":a===s.id?"true":void 0,className:`w-full text-left px-3.5 py-2.5 rounded-lg text-sm font-medium transition-all duration-200 flex items-center gap-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cyan-300 ${a===s.id?"bg-cyan-300/10 text-cyan-300 border border-cyan-300/20":"text-secondary hover:text-primary hover:bg-white/5 border border-transparent"}`,children:[s.icon,s.title]},s.id))})}),e.jsx("div",{className:"lg:col-span-3",children:e.jsxs("div",{className:"card-surface bg-surface/20 min-h-[500px]",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6 text-primary border-b border-gridline pb-4 flex items-center gap-2",children:n.find(s=>s.id===a)?.title.substring(3)}),e.jsx("div",{className:"transition-all duration-300",children:t()})]})})]})})})]})}function T(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.813 15.904 9 21l-.813-5.096L3 15l5.096-.813L9 9l.813 5.096L15 15l-5.187.904Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19.071 4.929a10 10 0 0 0-14.142 0M12 3v3m0 12v3M3 12h3m12 0h3",opacity:"0.5"})]})}function M(a){return e.jsx("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v5.25c0 .621-.504 1.125-1.125 1.125h-2.25A1.125 1.125 0 0 1 3 18.375v-5.25ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v9.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125v-9.75ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v14.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z"})})}function U(a){return e.jsxs("svg",{...a,fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.324.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.43l-1.003.828c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.954.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.43l1.004-.827c.292-.24.437-.613.43-.991a6.936 6.936 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"})]})}export{$ as default}; diff --git a/assets/McpServer-619DB13w.js b/assets/McpServer-619DB13w.js deleted file mode 100644 index abe3dbff..00000000 --- a/assets/McpServer-619DB13w.js +++ /dev/null @@ -1,31 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,J as i,C as t}from"./index-BN-vOeL2.js";import{N as o}from"./NeuralReveal-BflyZYSb.js";import{L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const n=[{name:"list_code_families",desc:"List the code families available in qector-decoder-v3 1.0.0 with their live availability and graphlike eligibility.",required:[],optional:[],returns:'families map (generator, code_factory, available, description, single_decode), reference_manual DOI, qector_version "1.0.0"'},{name:"list_decoders",desc:"List the five stable decoder classes exposed by the wheel: union_find, fast_union_find, blossom, sparse_blossom, native_auto.",required:[],optional:[],returns:'decoders map (class, status: "stable"), reference_manual DOI'},{name:"get_license_info",desc:"Read the live offline QECTOR license tier and feature gates from the installed wheel.",required:[],optional:[],returns:"license info object, qector_version, reference_manual DOI"},{name:"decode_syndrome",desc:"Decode a binary syndrome against an explicit or family-derived parity-check matrix. Fails unless H c = s (mod 2) (Theorem 1).",required:["syndrome"],optional:["family","size","decoder_name","n_qubits"],returns:"family, size, decoder, backend_used, qector_version, n_checks, n_qubits, syndrome, correction, hamming_weight, syndrome_valid, latency_us"},{name:"decode_single",desc:"Run one seeded code-capacity decode with Theorems 1 and 2 checks. Logical outcomes are coset-scored, not raw correction-equality.",required:[],optional:["family","distance","decoder_name","error_rate","seed"],returns:"family, distance, decoder, backend_used, qector_version, error_rate, seed, n_qubits, n_checks, error, syndrome, correction, error_weight, correction_weight, syndrome_valid, logical_failure, logical_scoring, latency_us"},{name:"threshold_sweep",desc:"Run a code-capacity LER sweep with Wilson 95% intervals and a hashed raw JSON artifact. Not comparable with circuit_level results.",required:[],optional:["family","distances","error_rates","trials","seed","decoder_name","artifact_path"],returns:"family, decoder, qector_version, results (per-point LER + Wilson interval), artifact (path, sha256, metadata), caveat"},{name:"build_code_from_matrix",desc:"Validate and build a binary (n_checks, n_qubits) parity-check matrix for arbitrary CSS/graph codes.",required:["H_matrix"],optional:["family","distance"],returns:"family, distance, matrix_shape, rank, n_checks, n_qubits, logical_observables, graphlike, code_built, qector_version, reference_manual"},{name:"compat_report",desc:"Report live package compatibility and Provisional-surface boundaries (library stdio MCP vs upstream network/batch-GPU/OpenCL surfaces).",required:[],optional:[],returns:"runtime_ok, qector_decoder_v3 (installed, version, expected), numpy, mcp_sdk, pymatching_compat, reference_manual, provisional_surfaces"}],d=[{name:"repetition",desc:"Open 1D chain parity-check code"},{name:"ring",desc:"Periodic ring code"},{name:"surface_legacy",desc:"Legacy toric weight-4 generator; NOT graphlike"},{name:"rotated_surface",desc:"Graphlike rotated surface code"},{name:"unrotated_surface",desc:"Graphlike square-lattice surface code"},{name:"toric",desc:"Graphlike toric code with periodic boundaries"},{name:"heavy_hex",desc:"Graphlike heavy-hex code"},{name:"color_code",desc:"Color code family exposed by the wheel"},{name:"hypergraph_product",desc:"CSS code from two parity-check matrices (requires build_code_from_matrix)"}],l=[{name:"union_find",type:"Graphlike",desc:"Standard cluster-growth Union-Find decoder."},{name:"fast_union_find",type:"Graphlike",desc:"Faster approximate Union-Find variant."},{name:"blossom",type:"Universal",desc:"Weight-optimal exact MWPM matching."},{name:"sparse_blossom",type:"Graphlike",desc:"Region-growing blossom variant for sparse error graphs."},{name:"native_auto",type:"Auto",desc:"Self-selecting heuristic selector (blossom for graphlike, BP-OSD for hypergraph-product)."}],m=`{ - "mcpServers": { - "qector": { - "command": "python", - "args": ["\${CLAUDE_PLUGIN_ROOT}/mcp/mcp_server_library.py"] - } - } -}`,x=`{ - "jsonrpc": "2.0", - "id": 1, - "method": "tools/call", - "params": { - "name": "decode_single", - "arguments": { - "family": "rotated_surface", - "distance": 5, - "decoder_name": "blossom", - "error_rate": 0.05, - "seed": 42 - } - } -}`,h=`{ - "jsonrpc": "2.0", - "id": 1, - "result": { - "content": [{ - "type": "text", - "text": "{\\n \\"family\\": \\"rotated_surface\\",\\n \\"distance\\": 5,\\n \\"decoder\\": \\"blossom\\",\\n \\"syndrome_valid\\": true,\\n \\"logical_scoring\\": \\"logical-observable matrix (Theorem 2)\\",\\n \\"logical_failure\\": false\\n}" - }] - } -}`;function v(){return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Library MCP Server · QECTOR Decoder v3 v1.0.0",description:"App-free Model Context Protocol server for quantum error correction decoding. 8 verified local stdio JSON-RPC 2.0 tools across 9 code families and 5 stable decoders. Ships as a local library; no Workbench or GUI required."}),e.jsx(i,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Library MCP Server",applicationCategory:"DeveloperApplication",operatingSystem:"Windows, macOS, Linux",description:"Local stdio Model Context Protocol server exposing 8 QEC decoding tools. Designed for local stdio use."}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Local stdio · JSON-RPC 2.0 · Protocol 2024-11-05 · qector-decoder-v3 1.0.0"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(o,{text:"Library MCP Server",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["The app-free, library-only MCP server: eight tools covering Union-Find, exact Blossom MWPM, SparseBlossom, and the auto router, with syndrome validation against",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "})," and coset-scored logical outcomes. Runs on ",e.jsx("code",{className:"text-cyan-300",children:"qector-decoder-v3 1.0.x"})," with",e.jsx("code",{className:"text-cyan-300",children:"mcp==1.26.0"}),"; no Workbench or GUI needed. Ships in the",e.jsx("code",{className:"text-cyan-300",children:"qector-claude-plugin"})," repository."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Documentation"}),e.jsx(a,{to:"/workbench",className:"btn-outline",children:"Workbench vs library"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6",children:"Design principles"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[{t:"Deterministic, not generated",d:"The assistant calls a decoder; it does not invent a correction. Results are reproducible and syndrome-faithful."},{t:"Runs locally",d:"Local stdio JSON-RPC. Syndromes are processed locally on the host machine; this library server includes no telemetry."},{t:"App-free",d:"Runs on the published qector-decoder-v3 1.0.x wheel and ships in the qector-claude-plugin repository. No QECTOR Workbench, no GUI, no desktop application required."}].map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:s.t}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.d})]},s.t))}),e.jsxs("div",{className:"card-surface border border-cyan-800/60 bg-gradient-to-r from-cyan-950/40 via-surface to-cyan-950/20 p-6 rounded-2xl flex flex-col md:flex-row items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("span",{className:"inline-block px-2.5 py-0.5 rounded text-[11px] font-mono font-semibold bg-cyan-400 text-slate-950 mb-2",children:"CLAUDE PLUGIN"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-1",children:"Looking for the full Claude Code Plugin?"}),e.jsx("p",{className:"text-slate-300 text-sm leading-relaxed",children:"The Claude Plugin v1.0.6 includes 28 skills, 11 slash commands, 5 agents, and four local MCP servers: 8 stable library tools, 29 opt-in research tools, 3 opt-in admin tools, and a safe Desktop profile. Workbench v1.0.7 remains the largest desktop surface with 85 tools on Windows and Linux."})]}),e.jsx(a,{to:"/claude-plugin",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all whitespace-nowrap shadow-lg shadow-cyan-400/20",children:"Explore Claude Plugin →"})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Connect a client"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["The server speaks JSON-RPC 2.0 over local stdio and identifies itself as",e.jsx("code",{className:"text-cyan-300",children:" qector-decoder-v3-mcp "}),". Add it to Claude Code, Claude Desktop, or any MCP client:"]}),e.jsx(t,{language:"json",code:m}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["In Claude Code, root ",e.jsx("code",{className:"text-cyan-300",children:".mcp.json"})," already references this server via ",e.jsxs("code",{className:"text-cyan-300",children:["$","${CLAUDE_PLUGIN_ROOT}"]}),". Validate with",e.jsx("code",{className:"text-cyan-300",children:' claude plugin validate "" --strict '}),"."]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"8 Tools"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Returned verbatim by ",e.jsx("code",{className:"text-cyan-300",children:"tools/list"}),". The schema is enforced as fail-closed JSON; malformed or resource-exceeding input returns an MCP",e.jsx("code",{className:"text-cyan-300",children:" isError "})," result without leaking tracebacks."]}),e.jsx("div",{className:"space-y-4",children:n.map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("div",{className:"flex flex-wrap items-baseline gap-3 mb-2",children:e.jsx("code",{className:"text-cyan-300 font-semibold text-base",children:s.name})}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:s.desc}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Required"}),e.jsx("div",{className:"text-secondary",children:s.required.length?s.required.map(r=>e.jsx("code",{className:"text-cyan-300 mr-2",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Optional"}),e.jsx("div",{className:"text-secondary",children:s.optional.length?s.optional.map(r=>e.jsx("code",{className:"text-muted-foreground mr-2",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Returns"}),e.jsx("div",{className:"text-secondary",children:s.returns})]})]})]},s.name))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Code families & decoders"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Nine code families (graphlike eligible where marked; non-graphlike inputs route to BP-OSD or require ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "}),") and five stable decoders. No universal benchmark figures are published on the site; run the shipped harness to measure your own hardware."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:d.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("span",{className:"text-cyan-300 font-mono font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1 font-mono",children:["→ ",s.desc]})]},s.name))}),e.jsx("div",{className:"mt-4 overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-2 px-3",children:"Decoder"}),e.jsx("th",{className:"py-2 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-2 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:l.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-2 px-3 font-mono font-semibold text-primary",children:s.name}),e.jsx("td",{className:"py-2 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-2 px-3 text-secondary text-xs",children:s.desc})]},s.name))})]})})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Example call"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:[e.jsx("code",{className:"text-cyan-300",children:" decode_single "})," runs one seeded code-capacity decode with Theorems 1 and 2 enforcement, then returns syndrome_valid and logical_scoring fields."]}),e.jsx(t,{language:"json",code:x}),e.jsx("p",{className:"text-secondary text-sm mt-5 mb-3",children:"Response:"}),e.jsx(t,{language:"json",code:h}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["Tool results are returned as MCP text content containing the JSON payload, per the 2024-11-05 content convention. The ",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "}),"check is enforced before any logical scoring; a failed check raises an MCP error instead of returning a result."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Operational guidance"}),e.jsxs("ul",{className:"space-y-3 text-secondary text-sm leading-relaxed list-disc pl-5 marker:text-cyan-300/60",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Local only."})," The supported transport is local stdio. Network surfaces (REST/gRPC/metrics/SSE) and batch-GPU paths are Provisional and require separate deployment review; they are not part of this public library contract."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Graphlike guard."})," Exact Blossom and SparseBlossom decoders require graphlike check structures (qubit participation ≤ 2). For hyperedge matrices such as ",e.jsx("code",{className:"text-cyan-300",children:" generate_surface_code_checks "}),", use ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "})," or decompose via the documented direct-wheel APIs."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"LER is coset-scored."})," Logical outcomes use the logical coset, never raw correction-vector equality. Wilson 95% intervals and a ",e.jsx("code",{className:"text-cyan-300",children:" code_capacity "})," tag are included; do not compare with ",e.jsx("code",{className:"text-cyan-300",children:" circuit_level "})," results."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Artifacts stay local."})," ",e.jsx("code",{className:"text-cyan-300",children:" threshold_sweep "})," writes a hashed raw JSON artifact with required metadata. Generated artifacts belong outside the plugin and must not be uploaded to external services."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Licensing."})," See ",e.jsx(a,{to:"/pricing",className:"text-cyan-300",children:"Pricing"})," for license-key installation and tier information returned by ",e.jsx("code",{className:"text-cyan-300",children:" get_license_info "}),"."]})]})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(a,{to:"/pricing",className:"btn-cyan",children:"View licensing"})})]})})]})}export{v as default}; diff --git a/assets/McpServer-B66-DjzI.js b/assets/McpServer-B66-DjzI.js deleted file mode 100644 index f8523015..00000000 --- a/assets/McpServer-B66-DjzI.js +++ /dev/null @@ -1,31 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,J as i,C as t}from"./index-WV1aysjN.js";import{N as o}from"./NeuralReveal-BflyZYSb.js";import{L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const n=[{name:"list_code_families",desc:"List the code families available in qector-decoder-v3 1.0.0 with their live availability and graphlike eligibility.",required:[],optional:[],returns:'families map (generator, code_factory, available, description, single_decode), reference_manual DOI, qector_version "1.0.0"'},{name:"list_decoders",desc:"List the five stable decoder classes exposed by the wheel: union_find, fast_union_find, blossom, sparse_blossom, native_auto.",required:[],optional:[],returns:'decoders map (class, status: "stable"), reference_manual DOI'},{name:"get_license_info",desc:"Read the live offline QECTOR license tier and feature gates from the installed wheel.",required:[],optional:[],returns:"license info object, qector_version, reference_manual DOI"},{name:"decode_syndrome",desc:"Decode a binary syndrome against an explicit or family-derived parity-check matrix. Fails unless H c = s (mod 2) (Theorem 1).",required:["syndrome"],optional:["family","size","decoder_name","n_qubits"],returns:"family, size, decoder, backend_used, qector_version, n_checks, n_qubits, syndrome, correction, hamming_weight, syndrome_valid, latency_us"},{name:"decode_single",desc:"Run one seeded code-capacity decode with Theorems 1 and 2 checks. Logical outcomes are coset-scored, not raw correction-equality.",required:[],optional:["family","distance","decoder_name","error_rate","seed"],returns:"family, distance, decoder, backend_used, qector_version, error_rate, seed, n_qubits, n_checks, error, syndrome, correction, error_weight, correction_weight, syndrome_valid, logical_failure, logical_scoring, latency_us"},{name:"threshold_sweep",desc:"Run a code-capacity LER sweep with Wilson 95% intervals and a hashed raw JSON artifact. Not comparable with circuit_level results.",required:[],optional:["family","distances","error_rates","trials","seed","decoder_name","artifact_path"],returns:"family, decoder, qector_version, results (per-point LER + Wilson interval), artifact (path, sha256, metadata), caveat"},{name:"build_code_from_matrix",desc:"Validate and build a binary (n_checks, n_qubits) parity-check matrix for arbitrary CSS/graph codes.",required:["H_matrix"],optional:["family","distance"],returns:"family, distance, matrix_shape, rank, n_checks, n_qubits, logical_observables, graphlike, code_built, qector_version, reference_manual"},{name:"compat_report",desc:"Report live package compatibility and Provisional-surface boundaries (library stdio MCP vs upstream network/batch-GPU/OpenCL surfaces).",required:[],optional:[],returns:"runtime_ok, qector_decoder_v3 (installed, version, expected), numpy, mcp_sdk, pymatching_compat, reference_manual, provisional_surfaces"}],d=[{name:"repetition",desc:"Open 1D chain parity-check code"},{name:"ring",desc:"Periodic ring code"},{name:"surface_legacy",desc:"Legacy toric weight-4 generator; NOT graphlike"},{name:"rotated_surface",desc:"Graphlike rotated surface code"},{name:"unrotated_surface",desc:"Graphlike square-lattice surface code"},{name:"toric",desc:"Graphlike toric code with periodic boundaries"},{name:"heavy_hex",desc:"Graphlike heavy-hex code"},{name:"color_code",desc:"Color code family exposed by the wheel"},{name:"hypergraph_product",desc:"CSS code from two parity-check matrices (requires build_code_from_matrix)"}],l=[{name:"union_find",type:"Graphlike",desc:"Standard cluster-growth Union-Find decoder."},{name:"fast_union_find",type:"Graphlike",desc:"Faster approximate Union-Find variant."},{name:"blossom",type:"Universal",desc:"Weight-optimal exact MWPM matching."},{name:"sparse_blossom",type:"Graphlike",desc:"Region-growing blossom variant for sparse error graphs."},{name:"native_auto",type:"Auto",desc:"Self-selecting heuristic selector (blossom for graphlike, BP-OSD for hypergraph-product)."}],m=`{ - "mcpServers": { - "qector": { - "command": "python", - "args": ["\${CLAUDE_PLUGIN_ROOT}/mcp/mcp_server_library.py"] - } - } -}`,x=`{ - "jsonrpc": "2.0", - "id": 1, - "method": "tools/call", - "params": { - "name": "decode_single", - "arguments": { - "family": "rotated_surface", - "distance": 5, - "decoder_name": "blossom", - "error_rate": 0.05, - "seed": 42 - } - } -}`,h=`{ - "jsonrpc": "2.0", - "id": 1, - "result": { - "content": [{ - "type": "text", - "text": "{\\n \\"family\\": \\"rotated_surface\\",\\n \\"distance\\": 5,\\n \\"decoder\\": \\"blossom\\",\\n \\"syndrome_valid\\": true,\\n \\"logical_scoring\\": \\"logical-observable matrix (Theorem 2)\\",\\n \\"logical_failure\\": false\\n}" - }] - } -}`;function v(){return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Library MCP Server · QECTOR Decoder v3 v1.0.0",description:"App-free Model Context Protocol server for quantum error correction decoding. 8 verified local stdio JSON-RPC 2.0 tools across 9 code families and 5 stable decoders. Ships as a local library; no Workbench or GUI required."}),e.jsx(i,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Library MCP Server",applicationCategory:"DeveloperApplication",operatingSystem:"Windows, macOS, Linux",description:"Local stdio Model Context Protocol server exposing 8 QEC decoding tools. Designed for local stdio use."}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Local stdio · JSON-RPC 2.0 · Protocol 2024-11-05 · qector-decoder-v3 1.0.0"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(o,{text:"Library MCP Server",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["The app-free, library-only MCP server: eight tools covering Union-Find, exact Blossom MWPM, SparseBlossom, and the auto router, with syndrome validation against",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "})," and coset-scored logical outcomes. Runs on ",e.jsx("code",{className:"text-cyan-300",children:"qector-decoder-v3 1.0.x"})," with",e.jsx("code",{className:"text-cyan-300",children:"mcp==1.26.0"}),"; no Workbench or GUI needed. Ships in the",e.jsx("code",{className:"text-cyan-300",children:"qector-claude-plugin"})," repository."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Documentation"}),e.jsx(a,{to:"/workbench",className:"btn-outline",children:"Workbench vs library"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6",children:"Design principles"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[{t:"Deterministic, not generated",d:"The assistant calls a decoder; it does not invent a correction. Results are reproducible and syndrome-faithful."},{t:"Runs locally",d:"Local stdio JSON-RPC. Syndromes are processed locally on the host machine; this library server includes no telemetry."},{t:"App-free",d:"Runs on the published qector-decoder-v3 1.0.x wheel and ships in the qector-claude-plugin repository. No QECTOR Workbench, no GUI, no desktop application required."}].map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:s.t}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.d})]},s.t))}),e.jsxs("div",{className:"card-surface border border-cyan-800/60 bg-gradient-to-r from-cyan-950/40 via-surface to-cyan-950/20 p-6 rounded-2xl flex flex-col md:flex-row items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("span",{className:"inline-block px-2.5 py-0.5 rounded text-[11px] font-mono font-semibold bg-cyan-400 text-slate-950 mb-2",children:"CLAUDE PLUGIN"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-1",children:"Looking for the full Claude Code Plugin?"}),e.jsx("p",{className:"text-slate-300 text-sm leading-relaxed",children:"The Claude Plugin v1.0.6 includes 28 skills, 11 slash commands, 5 agents, and four local MCP servers: 8 stable library tools, 29 opt-in research tools, 3 opt-in admin tools, and a safe Desktop profile. Workbench v1.0.7 remains the largest desktop surface with 85 tools on Windows and Linux."})]}),e.jsx(a,{to:"/claude-plugin",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all whitespace-nowrap shadow-lg shadow-cyan-400/20",children:"Explore Claude Plugin →"})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Connect a client"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["The server speaks JSON-RPC 2.0 over local stdio and identifies itself as",e.jsx("code",{className:"text-cyan-300",children:" qector-decoder-v3-mcp "}),". Add it to Claude Code, Claude Desktop, or any MCP client:"]}),e.jsx(t,{language:"json",code:m}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["In Claude Code, root ",e.jsx("code",{className:"text-cyan-300",children:".mcp.json"})," already references this server via ",e.jsxs("code",{className:"text-cyan-300",children:["$","${CLAUDE_PLUGIN_ROOT}"]}),". Validate with",e.jsx("code",{className:"text-cyan-300",children:' claude plugin validate "" --strict '}),"."]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"8 Tools"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Returned verbatim by ",e.jsx("code",{className:"text-cyan-300",children:"tools/list"}),". The schema is enforced as fail-closed JSON; malformed or resource-exceeding input returns an MCP",e.jsx("code",{className:"text-cyan-300",children:" isError "})," result without leaking tracebacks."]}),e.jsx("div",{className:"space-y-4",children:n.map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("div",{className:"flex flex-wrap items-baseline gap-3 mb-2",children:e.jsx("code",{className:"text-cyan-300 font-semibold text-base",children:s.name})}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:s.desc}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Required"}),e.jsx("div",{className:"text-secondary",children:s.required.length?s.required.map(r=>e.jsx("code",{className:"text-cyan-300 mr-2",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Optional"}),e.jsx("div",{className:"text-secondary",children:s.optional.length?s.optional.map(r=>e.jsx("code",{className:"text-muted-foreground mr-2",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Returns"}),e.jsx("div",{className:"text-secondary",children:s.returns})]})]})]},s.name))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Code families & decoders"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Nine code families (graphlike eligible where marked; non-graphlike inputs route to BP-OSD or require ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "}),") and five stable decoders. No universal benchmark figures are published on the site; run the shipped harness to measure your own hardware."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:d.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("span",{className:"text-cyan-300 font-mono font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1 font-mono",children:["→ ",s.desc]})]},s.name))}),e.jsx("div",{className:"mt-4 overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-2 px-3",children:"Decoder"}),e.jsx("th",{className:"py-2 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-2 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:l.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-2 px-3 font-mono font-semibold text-primary",children:s.name}),e.jsx("td",{className:"py-2 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-2 px-3 text-secondary text-xs",children:s.desc})]},s.name))})]})})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Example call"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:[e.jsx("code",{className:"text-cyan-300",children:" decode_single "})," runs one seeded code-capacity decode with Theorems 1 and 2 enforcement, then returns syndrome_valid and logical_scoring fields."]}),e.jsx(t,{language:"json",code:x}),e.jsx("p",{className:"text-secondary text-sm mt-5 mb-3",children:"Response:"}),e.jsx(t,{language:"json",code:h}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["Tool results are returned as MCP text content containing the JSON payload, per the 2024-11-05 content convention. The ",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "}),"check is enforced before any logical scoring; a failed check raises an MCP error instead of returning a result."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Operational guidance"}),e.jsxs("ul",{className:"space-y-3 text-secondary text-sm leading-relaxed list-disc pl-5 marker:text-cyan-300/60",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Local only."})," The supported transport is local stdio. Network surfaces (REST/gRPC/metrics/SSE) and batch-GPU paths are Provisional and require separate deployment review; they are not part of this public library contract."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Graphlike guard."})," Exact Blossom and SparseBlossom decoders require graphlike check structures (qubit participation ≤ 2). For hyperedge matrices such as ",e.jsx("code",{className:"text-cyan-300",children:" generate_surface_code_checks "}),", use ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "})," or decompose via the documented direct-wheel APIs."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"LER is coset-scored."})," Logical outcomes use the logical coset, never raw correction-vector equality. Wilson 95% intervals and a ",e.jsx("code",{className:"text-cyan-300",children:" code_capacity "})," tag are included; do not compare with ",e.jsx("code",{className:"text-cyan-300",children:" circuit_level "})," results."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Artifacts stay local."})," ",e.jsx("code",{className:"text-cyan-300",children:" threshold_sweep "})," writes a hashed raw JSON artifact with required metadata. Generated artifacts belong outside the plugin and must not be uploaded to external services."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Licensing."})," See ",e.jsx(a,{to:"/pricing",className:"text-cyan-300",children:"Pricing"})," for license-key installation and tier information returned by ",e.jsx("code",{className:"text-cyan-300",children:" get_license_info "}),"."]})]})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(a,{to:"/pricing",className:"btn-cyan",children:"View licensing"})})]})})]})}export{v as default}; diff --git a/assets/McpServer-BQJ_Te-C.js b/assets/McpServer-BQJ_Te-C.js deleted file mode 100644 index a37849eb..00000000 --- a/assets/McpServer-BQJ_Te-C.js +++ /dev/null @@ -1,31 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,J as i,C as t}from"./index-CqAA-ZXu.js";import{N as o}from"./NeuralReveal-BflyZYSb.js";import{L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const n=[{name:"list_code_families",desc:"List the code families available in qector-decoder-v3 1.0.0 with their live availability and graphlike eligibility.",required:[],optional:[],returns:'families map (generator, code_factory, available, description, single_decode), reference_manual DOI, qector_version "1.0.0"'},{name:"list_decoders",desc:"List the five stable decoder classes exposed by the wheel: union_find, fast_union_find, blossom, sparse_blossom, native_auto.",required:[],optional:[],returns:'decoders map (class, status: "stable"), reference_manual DOI'},{name:"get_license_info",desc:"Read the live offline QECTOR license tier and feature gates from the installed wheel.",required:[],optional:[],returns:"license info object, qector_version, reference_manual DOI"},{name:"decode_syndrome",desc:"Decode a binary syndrome against an explicit or family-derived parity-check matrix. Fails unless H c = s (mod 2) (Theorem 1).",required:["syndrome"],optional:["family","size","decoder_name","n_qubits"],returns:"family, size, decoder, backend_used, qector_version, n_checks, n_qubits, syndrome, correction, hamming_weight, syndrome_valid, latency_us"},{name:"decode_single",desc:"Run one seeded code-capacity decode with Theorems 1 and 2 checks. Logical outcomes are coset-scored, not raw correction-equality.",required:[],optional:["family","distance","decoder_name","error_rate","seed"],returns:"family, distance, decoder, backend_used, qector_version, error_rate, seed, n_qubits, n_checks, error, syndrome, correction, error_weight, correction_weight, syndrome_valid, logical_failure, logical_scoring, latency_us"},{name:"threshold_sweep",desc:"Run a code-capacity LER sweep with Wilson 95% intervals and a hashed raw JSON artifact. Not comparable with circuit_level results.",required:[],optional:["family","distances","error_rates","trials","seed","decoder_name","artifact_path"],returns:"family, decoder, qector_version, results (per-point LER + Wilson interval), artifact (path, sha256, metadata), caveat"},{name:"build_code_from_matrix",desc:"Validate and build a binary (n_checks, n_qubits) parity-check matrix for arbitrary CSS/graph codes.",required:["H_matrix"],optional:["family","distance"],returns:"family, distance, matrix_shape, rank, n_checks, n_qubits, logical_observables, graphlike, code_built, qector_version, reference_manual"},{name:"compat_report",desc:"Report live package compatibility and Provisional-surface boundaries (library stdio MCP vs upstream network/batch-GPU/OpenCL surfaces).",required:[],optional:[],returns:"runtime_ok, qector_decoder_v3 (installed, version, expected), numpy, mcp_sdk, pymatching_compat, reference_manual, provisional_surfaces"}],d=[{name:"repetition",desc:"Open 1D chain parity-check code"},{name:"ring",desc:"Periodic ring code"},{name:"surface_legacy",desc:"Legacy toric weight-4 generator; NOT graphlike"},{name:"rotated_surface",desc:"Graphlike rotated surface code"},{name:"unrotated_surface",desc:"Graphlike square-lattice surface code"},{name:"toric",desc:"Graphlike toric code with periodic boundaries"},{name:"heavy_hex",desc:"Graphlike heavy-hex code"},{name:"color_code",desc:"Color code family exposed by the wheel"},{name:"hypergraph_product",desc:"CSS code from two parity-check matrices (requires build_code_from_matrix)"}],l=[{name:"union_find",type:"Graphlike",desc:"Standard cluster-growth Union-Find decoder."},{name:"fast_union_find",type:"Graphlike",desc:"Faster approximate Union-Find variant."},{name:"blossom",type:"Universal",desc:"Weight-optimal exact MWPM matching."},{name:"sparse_blossom",type:"Graphlike",desc:"Region-growing blossom variant for sparse error graphs."},{name:"native_auto",type:"Auto",desc:"Self-selecting heuristic selector (blossom for graphlike, BP-OSD for hypergraph-product)."}],m=`{ - "mcpServers": { - "qector": { - "command": "python", - "args": ["\${CLAUDE_PLUGIN_ROOT}/mcp/mcp_server_library.py"] - } - } -}`,x=`{ - "jsonrpc": "2.0", - "id": 1, - "method": "tools/call", - "params": { - "name": "decode_single", - "arguments": { - "family": "rotated_surface", - "distance": 5, - "decoder_name": "blossom", - "error_rate": 0.05, - "seed": 42 - } - } -}`,h=`{ - "jsonrpc": "2.0", - "id": 1, - "result": { - "content": [{ - "type": "text", - "text": "{\\n \\"family\\": \\"rotated_surface\\",\\n \\"distance\\": 5,\\n \\"decoder\\": \\"blossom\\",\\n \\"syndrome_valid\\": true,\\n \\"logical_scoring\\": \\"logical-observable matrix (Theorem 2)\\",\\n \\"logical_failure\\": false\\n}" - }] - } -}`;function v(){return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Library MCP Server · QECTOR Decoder v3 v1.0.0",description:"App-free Model Context Protocol server for quantum error correction decoding. 8 verified local stdio JSON-RPC 2.0 tools across 9 code families and 5 stable decoders. Ships as a local library; no Workbench or GUI required."}),e.jsx(i,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Library MCP Server",applicationCategory:"DeveloperApplication",operatingSystem:"Windows, macOS, Linux",description:"Local stdio Model Context Protocol server exposing 8 QEC decoding tools. Designed for local stdio use."}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Local stdio · JSON-RPC 2.0 · Protocol 2024-11-05 · qector-decoder-v3 1.0.0"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(o,{text:"Library MCP Server",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["The app-free, library-only MCP server: eight tools covering Union-Find, exact Blossom MWPM, SparseBlossom, and the auto router, with syndrome validation against",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "})," and coset-scored logical outcomes. Runs on ",e.jsx("code",{className:"text-cyan-300",children:"qector-decoder-v3 1.0.x"})," with",e.jsx("code",{className:"text-cyan-300",children:"mcp==1.26.0"}),"; no Workbench or GUI needed. Ships in the",e.jsx("code",{className:"text-cyan-300",children:"qector-claude-plugin"})," repository."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Documentation"}),e.jsx(a,{to:"/workbench",className:"btn-outline",children:"Workbench vs library"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6",children:"Design principles"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[{t:"Deterministic, not generated",d:"The assistant calls a decoder; it does not invent a correction. Results are reproducible and syndrome-faithful."},{t:"Runs locally",d:"Local stdio JSON-RPC. Syndromes are processed locally on the host machine; this library server includes no telemetry."},{t:"App-free",d:"Runs on the published qector-decoder-v3 1.0.x wheel and ships in the qector-claude-plugin repository. No QECTOR Workbench, no GUI, no desktop application required."}].map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:s.t}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.d})]},s.t))}),e.jsxs("div",{className:"card-surface border border-cyan-800/60 bg-gradient-to-r from-cyan-950/40 via-surface to-cyan-950/20 p-6 rounded-2xl flex flex-col md:flex-row items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("span",{className:"inline-block px-2.5 py-0.5 rounded text-[11px] font-mono font-semibold bg-cyan-400 text-slate-950 mb-2",children:"CLAUDE PLUGIN"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-1",children:"Looking for the full Claude Code Plugin?"}),e.jsx("p",{className:"text-slate-300 text-sm leading-relaxed",children:"The Claude Plugin v1.0.6 includes 28 skills, 11 slash commands, 5 agents, and four local MCP servers: 8 stable library tools, 29 opt-in research tools, 3 opt-in admin tools, and a safe Desktop profile. Workbench v1.0.7 remains the largest desktop surface with 85 tools on Windows and Linux."})]}),e.jsx(a,{to:"/claude-plugin",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all whitespace-nowrap shadow-lg shadow-cyan-400/20",children:"Explore Claude Plugin →"})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Connect a client"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["The server speaks JSON-RPC 2.0 over local stdio and identifies itself as",e.jsx("code",{className:"text-cyan-300",children:" qector-decoder-v3-mcp "}),". Add it to Claude Code, Claude Desktop, or any MCP client:"]}),e.jsx(t,{language:"json",code:m}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["In Claude Code, root ",e.jsx("code",{className:"text-cyan-300",children:".mcp.json"})," already references this server via ",e.jsxs("code",{className:"text-cyan-300",children:["$","${CLAUDE_PLUGIN_ROOT}"]}),". Validate with",e.jsx("code",{className:"text-cyan-300",children:' claude plugin validate "" --strict '}),"."]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"8 Tools"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Returned verbatim by ",e.jsx("code",{className:"text-cyan-300",children:"tools/list"}),". The schema is enforced as fail-closed JSON; malformed or resource-exceeding input returns an MCP",e.jsx("code",{className:"text-cyan-300",children:" isError "})," result without leaking tracebacks."]}),e.jsx("div",{className:"space-y-4",children:n.map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("div",{className:"flex flex-wrap items-baseline gap-3 mb-2",children:e.jsx("code",{className:"text-cyan-300 font-semibold text-base",children:s.name})}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:s.desc}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Required"}),e.jsx("div",{className:"text-secondary",children:s.required.length?s.required.map(r=>e.jsx("code",{className:"text-cyan-300 mr-2",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Optional"}),e.jsx("div",{className:"text-secondary",children:s.optional.length?s.optional.map(r=>e.jsx("code",{className:"text-muted-foreground mr-2",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Returns"}),e.jsx("div",{className:"text-secondary",children:s.returns})]})]})]},s.name))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Code families & decoders"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Nine code families (graphlike eligible where marked; non-graphlike inputs route to BP-OSD or require ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "}),") and five stable decoders. No universal benchmark figures are published on the site; run the shipped harness to measure your own hardware."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:d.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("span",{className:"text-cyan-300 font-mono font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1 font-mono",children:["→ ",s.desc]})]},s.name))}),e.jsx("div",{className:"mt-4 overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-2 px-3",children:"Decoder"}),e.jsx("th",{className:"py-2 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-2 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:l.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-2 px-3 font-mono font-semibold text-primary",children:s.name}),e.jsx("td",{className:"py-2 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-2 px-3 text-secondary text-xs",children:s.desc})]},s.name))})]})})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Example call"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:[e.jsx("code",{className:"text-cyan-300",children:" decode_single "})," runs one seeded code-capacity decode with Theorems 1 and 2 enforcement, then returns syndrome_valid and logical_scoring fields."]}),e.jsx(t,{language:"json",code:x}),e.jsx("p",{className:"text-secondary text-sm mt-5 mb-3",children:"Response:"}),e.jsx(t,{language:"json",code:h}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["Tool results are returned as MCP text content containing the JSON payload, per the 2024-11-05 content convention. The ",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "}),"check is enforced before any logical scoring; a failed check raises an MCP error instead of returning a result."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Operational guidance"}),e.jsxs("ul",{className:"space-y-3 text-secondary text-sm leading-relaxed list-disc pl-5 marker:text-cyan-300/60",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Local only."})," The supported transport is local stdio. Network surfaces (REST/gRPC/metrics/SSE) and batch-GPU paths are Provisional and require separate deployment review; they are not part of this public library contract."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Graphlike guard."})," Exact Blossom and SparseBlossom decoders require graphlike check structures (qubit participation ≤ 2). For hyperedge matrices such as ",e.jsx("code",{className:"text-cyan-300",children:" generate_surface_code_checks "}),", use ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "})," or decompose via the documented direct-wheel APIs."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"LER is coset-scored."})," Logical outcomes use the logical coset, never raw correction-vector equality. Wilson 95% intervals and a ",e.jsx("code",{className:"text-cyan-300",children:" code_capacity "})," tag are included; do not compare with ",e.jsx("code",{className:"text-cyan-300",children:" circuit_level "})," results."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Artifacts stay local."})," ",e.jsx("code",{className:"text-cyan-300",children:" threshold_sweep "})," writes a hashed raw JSON artifact with required metadata. Generated artifacts belong outside the plugin and must not be uploaded to external services."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Licensing."})," See ",e.jsx(a,{to:"/pricing",className:"text-cyan-300",children:"Pricing"})," for license-key installation and tier information returned by ",e.jsx("code",{className:"text-cyan-300",children:" get_license_info "}),"."]})]})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(a,{to:"/pricing",className:"btn-cyan",children:"View licensing"})})]})})]})}export{v as default}; diff --git a/assets/McpServer-Be8VQAo_.js b/assets/McpServer-Be8VQAo_.js deleted file mode 100644 index 8fb13043..00000000 --- a/assets/McpServer-Be8VQAo_.js +++ /dev/null @@ -1,31 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,J as i,C as t}from"./index-DkYdPRY7.js";import{N as o}from"./NeuralReveal-BflyZYSb.js";import{L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const n=[{name:"list_code_families",desc:"List the code families available in qector-decoder-v3 1.0.1 with their live availability and graphlike eligibility.",required:[],optional:[],returns:'families map (generator, code_factory, available, description, single_decode), reference_manual DOI, qector_version "1.0.1"'},{name:"list_decoders",desc:"List the five stable decoder classes exposed by the wheel: union_find, fast_union_find, blossom, sparse_blossom, native_auto.",required:[],optional:[],returns:'decoders map (class, status: "stable"), reference_manual DOI'},{name:"get_license_info",desc:"Read the live offline QECTOR license tier and feature gates from the installed wheel.",required:[],optional:[],returns:"license info object, qector_version, reference_manual DOI"},{name:"decode_syndrome",desc:"Decode a binary syndrome against an explicit or family-derived parity-check matrix. Fails unless H c = s (mod 2) (Theorem 1).",required:["syndrome"],optional:["family","size","decoder_name","n_qubits"],returns:"family, size, decoder, backend_used, qector_version, n_checks, n_qubits, syndrome, correction, hamming_weight, syndrome_valid, latency_us"},{name:"decode_single",desc:"Run one seeded code-capacity decode with Theorems 1 and 2 checks. Logical outcomes are coset-scored, not raw correction-equality.",required:[],optional:["family","distance","decoder_name","error_rate","seed"],returns:"family, distance, decoder, backend_used, qector_version, error_rate, seed, n_qubits, n_checks, error, syndrome, correction, error_weight, correction_weight, syndrome_valid, logical_failure, logical_scoring, latency_us"},{name:"threshold_sweep",desc:"Run a code-capacity LER sweep with Wilson 95% intervals and a hashed raw JSON artifact. Not comparable with circuit_level results.",required:[],optional:["family","distances","error_rates","trials","seed","decoder_name","artifact_path"],returns:"family, decoder, qector_version, results (per-point LER + Wilson interval), artifact (path, sha256, metadata), caveat"},{name:"build_code_from_matrix",desc:"Validate and build a binary (n_checks, n_qubits) parity-check matrix for arbitrary CSS/graph codes.",required:["H_matrix"],optional:["family","distance"],returns:"family, distance, matrix_shape, rank, n_checks, n_qubits, logical_observables, graphlike, code_built, qector_version, reference_manual"},{name:"compat_report",desc:"Report live package compatibility and Provisional-surface boundaries (library stdio MCP vs upstream network/batch-GPU/OpenCL surfaces).",required:[],optional:[],returns:"runtime_ok, qector_decoder_v3 (installed, version, expected), numpy, mcp_sdk, pymatching_compat, reference_manual, provisional_surfaces"}],d=[{name:"repetition",desc:"Open 1D chain parity-check code"},{name:"ring",desc:"Periodic ring code"},{name:"surface_legacy",desc:"Legacy toric weight-4 generator; NOT graphlike"},{name:"rotated_surface",desc:"Graphlike rotated surface code"},{name:"unrotated_surface",desc:"Graphlike square-lattice surface code"},{name:"toric",desc:"Graphlike toric code with periodic boundaries"},{name:"heavy_hex",desc:"Graphlike heavy-hex code"},{name:"color_code",desc:"Color code family exposed by the wheel"},{name:"hypergraph_product",desc:"CSS code from two parity-check matrices (requires build_code_from_matrix)"}],l=[{name:"union_find",type:"Graphlike",desc:"Standard cluster-growth Union-Find decoder."},{name:"fast_union_find",type:"Graphlike",desc:"Faster approximate Union-Find variant."},{name:"blossom",type:"Universal",desc:"Weight-optimal exact MWPM matching."},{name:"sparse_blossom",type:"Graphlike",desc:"Region-growing blossom variant for sparse error graphs."},{name:"native_auto",type:"Auto",desc:"Self-selecting heuristic selector (blossom for graphlike, BP-OSD for hypergraph-product)."}],m=`{ - "mcpServers": { - "qector": { - "command": "python", - "args": ["\${CLAUDE_PLUGIN_ROOT}/mcp/mcp_server_library.py"] - } - } -}`,x=`{ - "jsonrpc": "2.0", - "id": 1, - "method": "tools/call", - "params": { - "name": "decode_single", - "arguments": { - "family": "rotated_surface", - "distance": 5, - "decoder_name": "blossom", - "error_rate": 0.05, - "seed": 42 - } - } -}`,h=`{ - "jsonrpc": "2.0", - "id": 1, - "result": { - "content": [{ - "type": "text", - "text": "{\\n \\"family\\": \\"rotated_surface\\",\\n \\"distance\\": 5,\\n \\"decoder\\": \\"blossom\\",\\n \\"syndrome_valid\\": true,\\n \\"logical_scoring\\": \\"logical-observable matrix (Theorem 2)\\",\\n \\"logical_failure\\": false\\n}" - }] - } -}`;function v(){return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Library MCP Server · QECTOR Decoder v3 v1.0.1",description:"App-free Model Context Protocol server for quantum error correction decoding. 8 verified local stdio JSON-RPC 2.0 tools across 9 code families and 5 stable decoders. Ships as a local library; no Workbench or GUI required."}),e.jsx(i,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Library MCP Server",applicationCategory:"DeveloperApplication",operatingSystem:"Windows, macOS, Linux",description:"Local stdio Model Context Protocol server exposing 8 QEC decoding tools. Designed for local stdio use."}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Local stdio · JSON-RPC 2.0 · Protocol 2024-11-05 · qector-decoder-v3 1.0.1"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(o,{text:"Library MCP Server",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["The app-free, library-only MCP server: eight tools covering Union-Find, exact Blossom MWPM, SparseBlossom, and the auto router, with syndrome validation against",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "})," and coset-scored logical outcomes. Runs on ",e.jsx("code",{className:"text-cyan-300",children:"qector-decoder-v3 1.0.x"})," with",e.jsx("code",{className:"text-cyan-300",children:"mcp>=1.30,<3"}),"; no Workbench or GUI needed. Ships in the",e.jsx("code",{className:"text-cyan-300",children:"qector-claude-plugin"})," repository."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Documentation"}),e.jsx(a,{to:"/workbench",className:"btn-outline",children:"Workbench vs library"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6",children:"Design principles"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[{t:"Deterministic, not generated",d:"The assistant calls a decoder; it does not invent a correction. Results are reproducible and syndrome-faithful."},{t:"Runs locally",d:"Local stdio JSON-RPC. Syndromes are processed locally on the host machine; this library server includes no telemetry."},{t:"App-free",d:"Runs on the published qector-decoder-v3 1.0.x wheel and ships in the qector-claude-plugin repository. No QECTOR Workbench, no GUI, no desktop application required."}].map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:s.t}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.d})]},s.t))}),e.jsxs("div",{className:"card-surface border border-cyan-800/60 bg-gradient-to-r from-cyan-950/40 via-surface to-cyan-950/20 p-6 rounded-2xl flex flex-col md:flex-row items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("span",{className:"inline-block px-2.5 py-0.5 rounded text-[11px] font-mono font-semibold bg-cyan-400 text-slate-950 mb-2",children:"CLAUDE PLUGIN"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-1",children:"Looking for the full Claude Code Plugin?"}),e.jsx("p",{className:"text-slate-300 text-sm leading-relaxed",children:"The Claude Plugin v2.0.1 includes 28 skills, 11 slash commands and 5 agents. Its default qector-secure server exposes 12 schema-validated tools and runs air-gapped; 29 research tools and 3 admin tools are opt-in. Workbench v1.0.7 remains the largest desktop surface with 85 tools on Windows and Linux."})]}),e.jsx(a,{to:"/claude-plugin",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all whitespace-nowrap shadow-lg shadow-cyan-400/20",children:"Explore Claude Plugin →"})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Connect a client"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["The server speaks JSON-RPC 2.0 over local stdio and identifies itself as",e.jsx("code",{className:"text-cyan-300",children:" qector-decoder-v3-mcp "}),". Add it to Claude Code, Claude Desktop, or any MCP client:"]}),e.jsx(t,{language:"json",code:m}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["In Claude Code, root ",e.jsx("code",{className:"text-cyan-300",children:".mcp.json"})," already references this server via ",e.jsxs("code",{className:"text-cyan-300",children:["$","${CLAUDE_PLUGIN_ROOT}"]}),". Validate with",e.jsx("code",{className:"text-cyan-300",children:' claude plugin validate "" --strict '}),"."]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"8 Tools"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Returned verbatim by ",e.jsx("code",{className:"text-cyan-300",children:"tools/list"}),". The schema is enforced as fail-closed JSON; malformed or resource-exceeding input returns an MCP",e.jsx("code",{className:"text-cyan-300",children:" isError "})," result without leaking tracebacks."]}),e.jsx("div",{className:"space-y-4",children:n.map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("div",{className:"flex flex-wrap items-baseline gap-3 mb-2",children:e.jsx("code",{className:"text-cyan-300 font-semibold text-base",children:s.name})}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:s.desc}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Required"}),e.jsx("div",{className:"text-secondary",children:s.required.length?s.required.map(r=>e.jsx("code",{className:"text-cyan-300 mr-2",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Optional"}),e.jsx("div",{className:"text-secondary",children:s.optional.length?s.optional.map(r=>e.jsx("code",{className:"text-muted-foreground mr-2",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Returns"}),e.jsx("div",{className:"text-secondary",children:s.returns})]})]})]},s.name))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Code families & decoders"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Nine code families (graphlike eligible where marked; non-graphlike inputs route to BP-OSD or require ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "}),") and five stable decoders. No universal benchmark figures are published on the site; run the shipped harness to measure your own hardware."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:d.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("span",{className:"text-cyan-300 font-mono font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1 font-mono",children:["→ ",s.desc]})]},s.name))}),e.jsx("div",{className:"mt-4 overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-2 px-3",children:"Decoder"}),e.jsx("th",{className:"py-2 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-2 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:l.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-2 px-3 font-mono font-semibold text-primary",children:s.name}),e.jsx("td",{className:"py-2 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-2 px-3 text-secondary text-xs",children:s.desc})]},s.name))})]})})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Example call"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:[e.jsx("code",{className:"text-cyan-300",children:" decode_single "})," runs one seeded code-capacity decode with Theorems 1 and 2 enforcement, then returns syndrome_valid and logical_scoring fields."]}),e.jsx(t,{language:"json",code:x}),e.jsx("p",{className:"text-secondary text-sm mt-5 mb-3",children:"Response:"}),e.jsx(t,{language:"json",code:h}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["Tool results are returned as MCP text content containing the JSON payload, per the 2024-11-05 content convention. The ",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "}),"check is enforced before any logical scoring; a failed check raises an MCP error instead of returning a result."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Operational guidance"}),e.jsxs("ul",{className:"space-y-3 text-secondary text-sm leading-relaxed list-disc pl-5 marker:text-cyan-300/60",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Local only."})," The supported transport is local stdio. Network surfaces (REST/gRPC/metrics/SSE) and batch-GPU paths are Provisional and require separate deployment review; they are not part of this public library contract."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Graphlike guard."})," Exact Blossom and SparseBlossom decoders require graphlike check structures (qubit participation ≤ 2). For hyperedge matrices such as ",e.jsx("code",{className:"text-cyan-300",children:" generate_surface_code_checks "}),", use ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "})," or decompose via the documented direct-wheel APIs."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"LER is coset-scored."})," Logical outcomes use the logical coset, never raw correction-vector equality. Wilson 95% intervals and a ",e.jsx("code",{className:"text-cyan-300",children:" code_capacity "})," tag are included; do not compare with ",e.jsx("code",{className:"text-cyan-300",children:" circuit_level "})," results."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Artifacts stay local."})," ",e.jsx("code",{className:"text-cyan-300",children:" threshold_sweep "})," writes a hashed raw JSON artifact with required metadata. Generated artifacts belong outside the plugin and must not be uploaded to external services."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Licensing."})," See ",e.jsx(a,{to:"/pricing",className:"text-cyan-300",children:"Pricing"})," for license-key installation and tier information returned by ",e.jsx("code",{className:"text-cyan-300",children:" get_license_info "}),"."]})]})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(a,{to:"/pricing",className:"btn-cyan",children:"View licensing"})})]})})]})}export{v as default}; diff --git a/assets/McpServer-Bxt8RVJ9.js b/assets/McpServer-Bxt8RVJ9.js deleted file mode 100644 index 64e40ca7..00000000 --- a/assets/McpServer-Bxt8RVJ9.js +++ /dev/null @@ -1,31 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,J as i,C as t}from"./index-iVST85F-.js";import{N as o}from"./NeuralReveal-BflyZYSb.js";import{L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const n=[{name:"list_code_families",desc:"List the code families available in qector-decoder-v3 1.0.0 with their live availability and graphlike eligibility.",required:[],optional:[],returns:'families map (generator, code_factory, available, description, single_decode), reference_manual DOI, qector_version "1.0.0"'},{name:"list_decoders",desc:"List the five stable decoder classes exposed by the wheel: union_find, fast_union_find, blossom, sparse_blossom, native_auto.",required:[],optional:[],returns:'decoders map (class, status: "stable"), reference_manual DOI'},{name:"get_license_info",desc:"Read the live offline QECTOR license tier and feature gates from the installed wheel.",required:[],optional:[],returns:"license info object, qector_version, reference_manual DOI"},{name:"decode_syndrome",desc:"Decode a binary syndrome against an explicit or family-derived parity-check matrix. Fails unless H c = s (mod 2) (Theorem 1).",required:["syndrome"],optional:["family","size","decoder_name","n_qubits"],returns:"family, size, decoder, backend_used, qector_version, n_checks, n_qubits, syndrome, correction, hamming_weight, syndrome_valid, latency_us"},{name:"decode_single",desc:"Run one seeded code-capacity decode with Theorems 1 and 2 checks. Logical outcomes are coset-scored, not raw correction-equality.",required:[],optional:["family","distance","decoder_name","error_rate","seed"],returns:"family, distance, decoder, backend_used, qector_version, error_rate, seed, n_qubits, n_checks, error, syndrome, correction, error_weight, correction_weight, syndrome_valid, logical_failure, logical_scoring, latency_us"},{name:"threshold_sweep",desc:"Run a code-capacity LER sweep with Wilson 95% intervals and a hashed raw JSON artifact. Not comparable with circuit_level results.",required:[],optional:["family","distances","error_rates","trials","seed","decoder_name","artifact_path"],returns:"family, decoder, qector_version, results (per-point LER + Wilson interval), artifact (path, sha256, metadata), caveat"},{name:"build_code_from_matrix",desc:"Validate and build a binary (n_checks, n_qubits) parity-check matrix for arbitrary CSS/graph codes.",required:["H_matrix"],optional:["family","distance"],returns:"family, distance, matrix_shape, rank, n_checks, n_qubits, logical_observables, graphlike, code_built, qector_version, reference_manual"},{name:"compat_report",desc:"Report live package compatibility and Provisional-surface boundaries (library stdio MCP vs upstream network/batch-GPU/OpenCL surfaces).",required:[],optional:[],returns:"runtime_ok, qector_decoder_v3 (installed, version, expected), numpy, mcp_sdk, pymatching_compat, reference_manual, provisional_surfaces"}],d=[{name:"repetition",desc:"Open 1D chain parity-check code"},{name:"ring",desc:"Periodic ring code"},{name:"surface_legacy",desc:"Legacy toric weight-4 generator; NOT graphlike"},{name:"rotated_surface",desc:"Graphlike rotated surface code"},{name:"unrotated_surface",desc:"Graphlike square-lattice surface code"},{name:"toric",desc:"Graphlike toric code with periodic boundaries"},{name:"heavy_hex",desc:"Graphlike heavy-hex code"},{name:"color_code",desc:"Color code family exposed by the wheel"},{name:"hypergraph_product",desc:"CSS code from two parity-check matrices (requires build_code_from_matrix)"}],l=[{name:"union_find",type:"Graphlike",desc:"Standard cluster-growth Union-Find decoder."},{name:"fast_union_find",type:"Graphlike",desc:"Faster approximate Union-Find variant."},{name:"blossom",type:"Universal",desc:"Weight-optimal exact MWPM matching."},{name:"sparse_blossom",type:"Graphlike",desc:"Region-growing blossom variant for sparse error graphs."},{name:"native_auto",type:"Auto",desc:"Self-selecting heuristic selector (blossom for graphlike, BP-OSD for hypergraph-product)."}],m=`{ - "mcpServers": { - "qector": { - "command": "python", - "args": ["\${CLAUDE_PLUGIN_ROOT}/mcp/mcp_server_library.py"] - } - } -}`,x=`{ - "jsonrpc": "2.0", - "id": 1, - "method": "tools/call", - "params": { - "name": "decode_single", - "arguments": { - "family": "rotated_surface", - "distance": 5, - "decoder_name": "blossom", - "error_rate": 0.05, - "seed": 42 - } - } -}`,h=`{ - "jsonrpc": "2.0", - "id": 1, - "result": { - "content": [{ - "type": "text", - "text": "{\\n \\"family\\": \\"rotated_surface\\",\\n \\"distance\\": 5,\\n \\"decoder\\": \\"blossom\\",\\n \\"syndrome_valid\\": true,\\n \\"logical_scoring\\": \\"logical-observable matrix (Theorem 2)\\",\\n \\"logical_failure\\": false\\n}" - }] - } -}`;function v(){return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Library MCP Server · QECTOR Decoder v3 v1.0.0",description:"App-free Model Context Protocol server for quantum error correction decoding. 8 verified local stdio JSON-RPC 2.0 tools across 9 code families and 5 stable decoders. Ships as a local library; no Workbench or GUI required."}),e.jsx(i,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Library MCP Server",applicationCategory:"DeveloperApplication",operatingSystem:"Windows, macOS, Linux",description:"Local stdio Model Context Protocol server exposing 8 QEC decoding tools. Designed for local stdio use."}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Local stdio · JSON-RPC 2.0 · Protocol 2024-11-05 · qector-decoder-v3 1.0.0"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(o,{text:"Library MCP Server",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["The app-free, library-only MCP server: eight tools covering Union-Find, exact Blossom MWPM, SparseBlossom, and the auto router, with syndrome validation against",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "})," and coset-scored logical outcomes. Runs on ",e.jsx("code",{className:"text-cyan-300",children:"qector-decoder-v3==1.0.0"})," with",e.jsx("code",{className:"text-cyan-300",children:"mcp==1.26.0"}),"; no Workbench or GUI needed. Ships in the",e.jsx("code",{className:"text-cyan-300",children:"qector-claude-plugin"})," repository."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Documentation"}),e.jsx(a,{to:"/workbench",className:"btn-outline",children:"Workbench vs library"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6",children:"Design principles"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[{t:"Deterministic, not generated",d:"The assistant calls a decoder; it does not invent a correction. Results are reproducible and syndrome-faithful."},{t:"Runs locally",d:"Local stdio JSON-RPC. Syndromes are processed locally on the host machine; this library server includes no telemetry."},{t:"App-free",d:"Runs on the published qector-decoder-v3==1.0.0 wheel and ships in the qector-claude-plugin repository. No QECTOR Workbench, no GUI, no desktop application required."}].map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:s.t}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.d})]},s.t))}),e.jsxs("div",{className:"card-surface border border-cyan-800/60 bg-gradient-to-r from-cyan-950/40 via-surface to-cyan-950/20 p-6 rounded-2xl flex flex-col md:flex-row items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("span",{className:"inline-block px-2.5 py-0.5 rounded text-[11px] font-mono font-semibold bg-cyan-400 text-slate-950 mb-2",children:"CLAUDE PLUGIN"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-1",children:"Looking for the full Claude Code Plugin?"}),e.jsx("p",{className:"text-slate-300 text-sm leading-relaxed",children:"The Claude Plugin v1.0.6 includes 28 skills, 11 slash commands, 5 agents, and four local MCP servers: 8 stable library tools, 29 opt-in research tools, 3 opt-in admin tools, and a safe Desktop profile. Workbench v1.0.7 remains the largest desktop surface with 85 tools on Windows and Linux."})]}),e.jsx(a,{to:"/claude-plugin",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all whitespace-nowrap shadow-lg shadow-cyan-400/20",children:"Explore Claude Plugin →"})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Connect a client"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["The server speaks JSON-RPC 2.0 over local stdio and identifies itself as",e.jsx("code",{className:"text-cyan-300",children:" qector-decoder-v3-mcp "}),". Add it to Claude Code, Claude Desktop, or any MCP client:"]}),e.jsx(t,{language:"json",code:m}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["In Claude Code, root ",e.jsx("code",{className:"text-cyan-300",children:".mcp.json"})," already references this server via ",e.jsxs("code",{className:"text-cyan-300",children:["$","${CLAUDE_PLUGIN_ROOT}"]}),". Validate with",e.jsx("code",{className:"text-cyan-300",children:' claude plugin validate "" --strict '}),"."]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"8 Tools"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Returned verbatim by ",e.jsx("code",{className:"text-cyan-300",children:"tools/list"}),". The schema is enforced as fail-closed JSON; malformed or resource-exceeding input returns an MCP",e.jsx("code",{className:"text-cyan-300",children:" isError "})," result without leaking tracebacks."]}),e.jsx("div",{className:"space-y-4",children:n.map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("div",{className:"flex flex-wrap items-baseline gap-3 mb-2",children:e.jsx("code",{className:"text-cyan-300 font-semibold text-base",children:s.name})}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:s.desc}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Required"}),e.jsx("div",{className:"text-secondary",children:s.required.length?s.required.map(r=>e.jsx("code",{className:"text-cyan-300 mr-2",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Optional"}),e.jsx("div",{className:"text-secondary",children:s.optional.length?s.optional.map(r=>e.jsx("code",{className:"text-muted-foreground mr-2",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Returns"}),e.jsx("div",{className:"text-secondary",children:s.returns})]})]})]},s.name))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Code families & decoders"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Nine code families (graphlike eligible where marked; non-graphlike inputs route to BP-OSD or require ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "}),") and five stable decoders. No universal benchmark figures are published on the site; run the shipped harness to measure your own hardware."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:d.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("span",{className:"text-cyan-300 font-mono font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1 font-mono",children:["→ ",s.desc]})]},s.name))}),e.jsx("div",{className:"mt-4 overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-2 px-3",children:"Decoder"}),e.jsx("th",{className:"py-2 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-2 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:l.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-2 px-3 font-mono font-semibold text-primary",children:s.name}),e.jsx("td",{className:"py-2 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-2 px-3 text-secondary text-xs",children:s.desc})]},s.name))})]})})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Example call"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:[e.jsx("code",{className:"text-cyan-300",children:" decode_single "})," runs one seeded code-capacity decode with Theorems 1 and 2 enforcement, then returns syndrome_valid and logical_scoring fields."]}),e.jsx(t,{language:"json",code:x}),e.jsx("p",{className:"text-secondary text-sm mt-5 mb-3",children:"Response:"}),e.jsx(t,{language:"json",code:h}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["Tool results are returned as MCP text content containing the JSON payload, per the 2024-11-05 content convention. The ",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "}),"check is enforced before any logical scoring; a failed check raises an MCP error instead of returning a result."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Operational guidance"}),e.jsxs("ul",{className:"space-y-3 text-secondary text-sm leading-relaxed list-disc pl-5 marker:text-cyan-300/60",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Local only."})," The supported transport is local stdio. Network surfaces (REST/gRPC/metrics/SSE) and batch-GPU paths are Provisional and require separate deployment review; they are not part of this public library contract."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Graphlike guard."})," Exact Blossom and SparseBlossom decoders require graphlike check structures (qubit participation ≤ 2). For hyperedge matrices such as ",e.jsx("code",{className:"text-cyan-300",children:" generate_surface_code_checks "}),", use ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "})," or decompose via the documented direct-wheel APIs."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"LER is coset-scored."})," Logical outcomes use the logical coset, never raw correction-vector equality. Wilson 95% intervals and a ",e.jsx("code",{className:"text-cyan-300",children:" code_capacity "})," tag are included; do not compare with ",e.jsx("code",{className:"text-cyan-300",children:" circuit_level "})," results."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Artifacts stay local."})," ",e.jsx("code",{className:"text-cyan-300",children:" threshold_sweep "})," writes a hashed raw JSON artifact with required metadata. Generated artifacts belong outside the plugin and must not be uploaded to external services."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Licensing."})," See ",e.jsx(a,{to:"/pricing",className:"text-cyan-300",children:"Pricing"})," for license-key installation and tier information returned by ",e.jsx("code",{className:"text-cyan-300",children:" get_license_info "}),"."]})]})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(a,{to:"/pricing",className:"btn-cyan",children:"View licensing"})})]})})]})}export{v as default}; diff --git a/assets/McpServer-C5JtddAJ.js b/assets/McpServer-C5JtddAJ.js deleted file mode 100644 index 2897f473..00000000 --- a/assets/McpServer-C5JtddAJ.js +++ /dev/null @@ -1,31 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,J as i,C as t}from"./index-Bh9DBCb3.js";import{N as o}from"./NeuralReveal-D-EQoOl2.js";import{L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const n=[{name:"list_code_families",desc:"List the code families available in qector-decoder-v3 1.0.1 with their live availability and graphlike eligibility.",required:[],optional:[],returns:'families map (generator, code_factory, available, description, single_decode), reference_manual DOI, qector_version "1.0.1"'},{name:"list_decoders",desc:"List the five stable decoder classes exposed by the wheel: union_find, fast_union_find, blossom, sparse_blossom, native_auto.",required:[],optional:[],returns:'decoders map (class, status: "stable"), reference_manual DOI'},{name:"get_license_info",desc:"Read the live offline QECTOR license tier and feature gates from the installed wheel.",required:[],optional:[],returns:"license info object, qector_version, reference_manual DOI"},{name:"decode_syndrome",desc:"Decode a binary syndrome against an explicit or family-derived parity-check matrix. Fails unless H c = s (mod 2) (Theorem 1).",required:["syndrome"],optional:["family","size","decoder_name","n_qubits"],returns:"family, size, decoder, backend_used, qector_version, n_checks, n_qubits, syndrome, correction, hamming_weight, syndrome_valid, latency_us"},{name:"decode_single",desc:"Run one seeded code-capacity decode with Theorems 1 and 2 checks. Logical outcomes are coset-scored, not raw correction-equality.",required:[],optional:["family","distance","decoder_name","error_rate","seed"],returns:"family, distance, decoder, backend_used, qector_version, error_rate, seed, n_qubits, n_checks, error, syndrome, correction, error_weight, correction_weight, syndrome_valid, logical_failure, logical_scoring, latency_us"},{name:"threshold_sweep",desc:"Run a code-capacity LER sweep with Wilson 95% intervals and a hashed raw JSON artifact. Not comparable with circuit_level results.",required:[],optional:["family","distances","error_rates","trials","seed","decoder_name","artifact_path"],returns:"family, decoder, qector_version, results (per-point LER + Wilson interval), artifact (path, sha256, metadata), caveat"},{name:"build_code_from_matrix",desc:"Validate and build a binary (n_checks, n_qubits) parity-check matrix for arbitrary CSS/graph codes.",required:["H_matrix"],optional:["family","distance"],returns:"family, distance, matrix_shape, rank, n_checks, n_qubits, logical_observables, graphlike, code_built, qector_version, reference_manual"},{name:"compat_report",desc:"Report live package compatibility and Provisional-surface boundaries (library stdio MCP vs upstream network/batch-GPU/OpenCL surfaces).",required:[],optional:[],returns:"runtime_ok, qector_decoder_v3 (installed, version, expected), numpy, mcp_sdk, pymatching_compat, reference_manual, provisional_surfaces"}],d=[{name:"repetition",desc:"Open 1D chain parity-check code"},{name:"ring",desc:"Periodic ring code"},{name:"surface_legacy",desc:"Legacy toric weight-4 generator; NOT graphlike"},{name:"rotated_surface",desc:"Graphlike rotated surface code"},{name:"unrotated_surface",desc:"Graphlike square-lattice surface code"},{name:"toric",desc:"Graphlike toric code with periodic boundaries"},{name:"heavy_hex",desc:"Graphlike heavy-hex code"},{name:"color_code",desc:"Color code family exposed by the wheel"},{name:"hypergraph_product",desc:"CSS code from two parity-check matrices (requires build_code_from_matrix)"}],l=[{name:"union_find",type:"Graphlike",desc:"Standard cluster-growth Union-Find decoder."},{name:"fast_union_find",type:"Graphlike",desc:"Faster approximate Union-Find variant."},{name:"blossom",type:"Universal",desc:"Weight-optimal exact MWPM matching."},{name:"sparse_blossom",type:"Graphlike",desc:"Region-growing blossom variant for sparse error graphs."},{name:"native_auto",type:"Auto",desc:"Self-selecting heuristic selector (blossom for graphlike, BP-OSD for hypergraph-product)."}],m=`{ - "mcpServers": { - "qector": { - "command": "python", - "args": ["\${CLAUDE_PLUGIN_ROOT}/mcp/mcp_server_library.py"] - } - } -}`,x=`{ - "jsonrpc": "2.0", - "id": 1, - "method": "tools/call", - "params": { - "name": "decode_single", - "arguments": { - "family": "rotated_surface", - "distance": 5, - "decoder_name": "blossom", - "error_rate": 0.05, - "seed": 42 - } - } -}`,h=`{ - "jsonrpc": "2.0", - "id": 1, - "result": { - "content": [{ - "type": "text", - "text": "{\\n \\"family\\": \\"rotated_surface\\",\\n \\"distance\\": 5,\\n \\"decoder\\": \\"blossom\\",\\n \\"syndrome_valid\\": true,\\n \\"logical_scoring\\": \\"logical-observable matrix (Theorem 2)\\",\\n \\"logical_failure\\": false\\n}" - }] - } -}`;function v(){return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Library MCP Server · QECTOR Decoder v3 v1.0.1",description:"App-free Model Context Protocol server for quantum error correction decoding. 8 verified local stdio JSON-RPC 2.0 tools across 9 code families and 5 stable decoders. Ships as a local library; no Workbench or GUI required."}),e.jsx(i,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Library MCP Server",applicationCategory:"DeveloperApplication",operatingSystem:"Windows, macOS, Linux",description:"Local stdio Model Context Protocol server exposing 8 QEC decoding tools. Designed for local stdio use."}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Local stdio · JSON-RPC 2.0 · Protocol 2024-11-05 · qector-decoder-v3 1.0.1"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(o,{text:"Library MCP Server",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["The app-free, library-only MCP server: eight tools covering Union-Find, exact Blossom MWPM, SparseBlossom, and the auto router, with syndrome validation against",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "})," and coset-scored logical outcomes. Runs on ",e.jsx("code",{className:"text-cyan-300",children:"qector-decoder-v3 1.0.x"})," with",e.jsx("code",{className:"text-cyan-300",children:"mcp>=1.30,<3"}),"; no Workbench or GUI needed. Ships in the",e.jsx("code",{className:"text-cyan-300",children:"qector-claude-plugin"})," repository."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Documentation"}),e.jsx(a,{to:"/workbench",className:"btn-outline",children:"Workbench vs library"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6",children:"Design principles"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[{t:"Deterministic, not generated",d:"The assistant calls a decoder; it does not invent a correction. Results are reproducible and syndrome-faithful."},{t:"Runs locally",d:"Local stdio JSON-RPC. Syndromes are processed locally on the host machine; this library server includes no telemetry."},{t:"App-free",d:"Runs on the published qector-decoder-v3 1.0.x wheel and ships in the qector-claude-plugin repository. No QECTOR Workbench, no GUI, no desktop application required."}].map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:s.t}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.d})]},s.t))}),e.jsxs("div",{className:"card-surface border border-cyan-800/60 bg-gradient-to-r from-cyan-950/40 via-surface to-cyan-950/20 p-6 rounded-2xl flex flex-col md:flex-row items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("span",{className:"inline-block px-2.5 py-0.5 rounded text-[11px] font-mono font-semibold bg-cyan-400 text-slate-950 mb-2",children:"CLAUDE PLUGIN"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-1",children:"Looking for the full Claude Code Plugin?"}),e.jsx("p",{className:"text-slate-300 text-sm leading-relaxed",children:"The Claude Plugin v2.0.1 includes 28 skills, 11 slash commands and 5 agents. Its default qector-secure server exposes 12 schema-validated tools and runs air-gapped; 29 research tools and 3 admin tools are opt-in. Workbench v1.0.7 remains the largest desktop surface with 85 tools on Windows and Linux."})]}),e.jsx(a,{to:"/claude-plugin",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all whitespace-nowrap shadow-lg shadow-cyan-400/20",children:"Explore Claude Plugin →"})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Connect a client"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["The server speaks JSON-RPC 2.0 over local stdio and identifies itself as",e.jsx("code",{className:"text-cyan-300",children:" qector-decoder-v3-mcp "}),". Add it to Claude Code, Claude Desktop, or any MCP client:"]}),e.jsx(t,{language:"json",code:m}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["In Claude Code, root ",e.jsx("code",{className:"text-cyan-300",children:".mcp.json"})," already references this server via ",e.jsxs("code",{className:"text-cyan-300",children:["$","${CLAUDE_PLUGIN_ROOT}"]}),". Validate with",e.jsx("code",{className:"text-cyan-300",children:' claude plugin validate "" --strict '}),"."]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"8 Tools"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Returned verbatim by ",e.jsx("code",{className:"text-cyan-300",children:"tools/list"}),". The schema is enforced as fail-closed JSON; malformed or resource-exceeding input returns an MCP",e.jsx("code",{className:"text-cyan-300",children:" isError "})," result without leaking tracebacks."]}),e.jsx("div",{className:"space-y-4",children:n.map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("div",{className:"flex flex-wrap items-baseline gap-3 mb-2",children:e.jsx("code",{className:"text-cyan-300 font-semibold text-base",children:s.name})}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:s.desc}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Required"}),e.jsx("div",{className:"text-secondary flex flex-wrap gap-x-2 gap-y-1",children:s.required.length?s.required.map(r=>e.jsx("code",{className:"text-cyan-300 mr-2",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Optional"}),e.jsx("div",{className:"text-secondary flex flex-wrap gap-x-2 gap-y-1",children:s.optional.length?s.optional.map(r=>e.jsx("code",{className:"text-muted-foreground",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Returns"}),e.jsx("div",{className:"text-secondary",children:s.returns})]})]})]},s.name))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Code families & decoders"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Nine code families (graphlike eligible where marked; non-graphlike inputs route to BP-OSD or require ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "}),") and five stable decoders. No universal benchmark figures are published on the site; run the shipped harness to measure your own hardware."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:d.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("span",{className:"text-cyan-300 font-mono font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1 font-mono",children:["→ ",s.desc]})]},s.name))}),e.jsx("div",{className:"mt-4 overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-2 px-3",children:"Decoder"}),e.jsx("th",{className:"py-2 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-2 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:l.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-2 px-3 font-mono font-semibold text-primary",children:s.name}),e.jsx("td",{className:"py-2 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-2 px-3 text-secondary text-xs",children:s.desc})]},s.name))})]})})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Example call"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:[e.jsx("code",{className:"text-cyan-300",children:" decode_single "})," runs one seeded code-capacity decode with Theorems 1 and 2 enforcement, then returns syndrome_valid and logical_scoring fields."]}),e.jsx(t,{language:"json",code:x}),e.jsx("p",{className:"text-secondary text-sm mt-5 mb-3",children:"Response:"}),e.jsx(t,{language:"json",code:h}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["Tool results are returned as MCP text content containing the JSON payload, per the 2024-11-05 content convention. The ",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "}),"check is enforced before any logical scoring; a failed check raises an MCP error instead of returning a result."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Operational guidance"}),e.jsxs("ul",{className:"space-y-3 text-secondary text-sm leading-relaxed list-disc pl-5 marker:text-cyan-300/60",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Local only."})," The supported transport is local stdio. Network surfaces (REST/gRPC/metrics/SSE) and batch-GPU paths are Provisional and require separate deployment review; they are not part of this public library contract."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Graphlike guard."})," Exact Blossom and SparseBlossom decoders require graphlike check structures (qubit participation ≤ 2). For hyperedge matrices such as ",e.jsx("code",{className:"text-cyan-300",children:" generate_surface_code_checks "}),", use ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "})," or decompose via the documented direct-wheel APIs."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"LER is coset-scored."})," Logical outcomes use the logical coset, never raw correction-vector equality. Wilson 95% intervals and a ",e.jsx("code",{className:"text-cyan-300",children:" code_capacity "})," tag are included; do not compare with ",e.jsx("code",{className:"text-cyan-300",children:" circuit_level "})," results."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Artifacts stay local."})," ",e.jsx("code",{className:"text-cyan-300",children:" threshold_sweep "})," writes a hashed raw JSON artifact with required metadata. Generated artifacts belong outside the plugin and must not be uploaded to external services."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Licensing."})," See ",e.jsx(a,{to:"/pricing",className:"text-cyan-300",children:"Pricing"})," for license-key installation and tier information returned by ",e.jsx("code",{className:"text-cyan-300",children:" get_license_info "}),"."]})]})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(a,{to:"/pricing",className:"btn-cyan",children:"View licensing"})})]})})]})}export{v as default}; diff --git a/assets/McpServer-CA7IXDf6.js b/assets/McpServer-CA7IXDf6.js deleted file mode 100644 index 8332abb1..00000000 --- a/assets/McpServer-CA7IXDf6.js +++ /dev/null @@ -1,31 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,J as i,L as a,C as t}from"./index-DayaklK-.js";import{N as n}from"./NeuralReveal-uYarhiMA.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const o=[{name:"list_code_families",desc:"List the code families available in qector-decoder-v3 1.0.1 with their live availability and graphlike eligibility.",required:[],optional:[],returns:'families map (generator, code_factory, available, description, single_decode), reference_manual DOI, qector_version "1.0.1"'},{name:"list_decoders",desc:"List the five stable decoder classes exposed by the wheel: union_find, fast_union_find, blossom, sparse_blossom, native_auto.",required:[],optional:[],returns:'decoders map (class, status: "stable"), reference_manual DOI'},{name:"get_license_info",desc:"Read the live offline QECTOR license tier and feature gates from the installed wheel.",required:[],optional:[],returns:"license info object, qector_version, reference_manual DOI"},{name:"decode_syndrome",desc:"Decode a binary syndrome against an explicit or family-derived parity-check matrix. Fails unless H c = s (mod 2) (Theorem 1).",required:["syndrome"],optional:["family","size","decoder_name","n_qubits"],returns:"family, size, decoder, backend_used, qector_version, n_checks, n_qubits, syndrome, correction, hamming_weight, syndrome_valid, latency_us"},{name:"decode_single",desc:"Run one seeded code-capacity decode with Theorems 1 and 2 checks. Logical outcomes are coset-scored, not raw correction-equality.",required:[],optional:["family","distance","decoder_name","error_rate","seed"],returns:"family, distance, decoder, backend_used, qector_version, error_rate, seed, n_qubits, n_checks, error, syndrome, correction, error_weight, correction_weight, syndrome_valid, logical_failure, logical_scoring, latency_us"},{name:"threshold_sweep",desc:"Run a code-capacity LER sweep with Wilson 95% intervals and a hashed raw JSON artifact. Not comparable with circuit_level results.",required:[],optional:["family","distances","error_rates","trials","seed","decoder_name","artifact_path"],returns:"family, decoder, qector_version, results (per-point LER + Wilson interval), artifact (path, sha256, metadata), caveat"},{name:"build_code_from_matrix",desc:"Validate and build a binary (n_checks, n_qubits) parity-check matrix for arbitrary CSS/graph codes.",required:["H_matrix"],optional:["family","distance"],returns:"family, distance, matrix_shape, rank, n_checks, n_qubits, logical_observables, graphlike, code_built, qector_version, reference_manual"},{name:"compat_report",desc:"Report live package compatibility and Provisional-surface boundaries (library stdio MCP vs upstream network/batch-GPU/OpenCL surfaces).",required:[],optional:[],returns:"runtime_ok, qector_decoder_v3 (installed, version, expected), numpy, mcp_sdk, pymatching_compat, reference_manual, provisional_surfaces"}],d=[{name:"repetition",desc:"Open 1D chain parity-check code"},{name:"ring",desc:"Periodic ring code"},{name:"surface_legacy",desc:"Legacy toric weight-4 generator; NOT graphlike"},{name:"rotated_surface",desc:"Graphlike rotated surface code"},{name:"unrotated_surface",desc:"Graphlike square-lattice surface code"},{name:"toric",desc:"Graphlike toric code with periodic boundaries"},{name:"heavy_hex",desc:"Graphlike heavy-hex code"},{name:"color_code",desc:"Color code family exposed by the wheel"},{name:"hypergraph_product",desc:"CSS code from two parity-check matrices (requires build_code_from_matrix)"}],l=[{name:"union_find",type:"Graphlike",desc:"Standard cluster-growth Union-Find decoder."},{name:"fast_union_find",type:"Graphlike",desc:"Faster approximate Union-Find variant."},{name:"blossom",type:"Universal",desc:"Weight-optimal exact MWPM matching."},{name:"sparse_blossom",type:"Graphlike",desc:"Region-growing blossom variant for sparse error graphs."},{name:"native_auto",type:"Auto",desc:"Self-selecting heuristic selector (blossom for graphlike, BP-OSD for hypergraph-product)."}],m=`{ - "mcpServers": { - "qector": { - "command": "python", - "args": ["\${CLAUDE_PLUGIN_ROOT}/mcp/mcp_server_library.py"] - } - } -}`,x=`{ - "jsonrpc": "2.0", - "id": 1, - "method": "tools/call", - "params": { - "name": "decode_single", - "arguments": { - "family": "rotated_surface", - "distance": 5, - "decoder_name": "blossom", - "error_rate": 0.05, - "seed": 42 - } - } -}`,h=`{ - "jsonrpc": "2.0", - "id": 1, - "result": { - "content": [{ - "type": "text", - "text": "{\\n \\"family\\": \\"rotated_surface\\",\\n \\"distance\\": 5,\\n \\"decoder\\": \\"blossom\\",\\n \\"syndrome_valid\\": true,\\n \\"logical_scoring\\": \\"logical-observable matrix (Theorem 2)\\",\\n \\"logical_failure\\": false\\n}" - }] - } -}`;function b(){return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Library MCP Server · QECTOR Decoder v3 v1.0.1",description:"App-free Model Context Protocol server for quantum error correction decoding. 8 verified local stdio JSON-RPC 2.0 tools across 9 code families and 5 stable decoders. Ships as a local library; no Workbench or GUI required."}),e.jsx(i,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Library MCP Server",applicationCategory:"DeveloperApplication",operatingSystem:"Windows, macOS, Linux",description:"Local stdio Model Context Protocol server exposing 8 QEC decoding tools. Designed for local stdio use."}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Local stdio · JSON-RPC 2.0 · Protocol 2024-11-05 · qector-decoder-v3 1.0.1"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(n,{text:"Library MCP Server",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["The app-free, library-only MCP server: eight tools covering Union-Find, exact Blossom MWPM, SparseBlossom, and the auto router, with syndrome validation against",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "})," and coset-scored logical outcomes. Runs on ",e.jsx("code",{className:"text-cyan-300",children:"qector-decoder-v3 1.0.x"})," with",e.jsx("code",{className:"text-cyan-300",children:"mcp>=1.30,<3"}),"; no Workbench or GUI needed. Ships in the",e.jsx("code",{className:"text-cyan-300",children:"qector-claude-plugin"})," repository."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Documentation"}),e.jsx(a,{to:"/workbench",className:"btn-outline",children:"Workbench vs library"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6",children:"Design principles"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[{t:"Deterministic, not generated",d:"The assistant calls a decoder; it does not invent a correction. Results are reproducible and syndrome-faithful."},{t:"Runs locally",d:"Local stdio JSON-RPC. Syndromes are processed locally on the host machine; this library server includes no telemetry."},{t:"App-free",d:"Runs on the published qector-decoder-v3 1.0.x wheel and ships in the qector-claude-plugin repository. No QECTOR Workbench, no GUI, no desktop application required."}].map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:s.t}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.d})]},s.t))}),e.jsxs("div",{className:"card-surface border border-cyan-800/60 bg-gradient-to-r from-cyan-950/40 via-surface to-cyan-950/20 p-6 rounded-2xl flex flex-col md:flex-row items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("span",{className:"inline-block px-2.5 py-0.5 rounded text-[11px] font-mono font-semibold bg-cyan-400 text-slate-950 mb-2",children:"CLAUDE PLUGIN"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-1",children:"Looking for the full Claude Code Plugin?"}),e.jsx("p",{className:"text-slate-300 text-sm leading-relaxed",children:"The Claude Plugin v2.0.1 includes 28 skills, 11 slash commands and 5 agents. Its default qector-secure server exposes 12 schema-validated tools and runs air-gapped; 29 research tools and 3 admin tools are opt-in. Workbench v1.0.7 remains the largest desktop surface with 85 tools on Windows and Linux."})]}),e.jsx(a,{to:"/claude-plugin",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all whitespace-nowrap shadow-lg shadow-cyan-400/20",children:"Explore Claude Plugin →"})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Connect a client"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["The server speaks JSON-RPC 2.0 over local stdio and identifies itself as",e.jsx("code",{className:"text-cyan-300",children:" qector-decoder-v3-mcp "}),". Add it to Claude Code, Claude Desktop, or any MCP client:"]}),e.jsx(t,{language:"json",code:m}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["In Claude Code, root ",e.jsx("code",{className:"text-cyan-300",children:".mcp.json"})," already references this server via ",e.jsxs("code",{className:"text-cyan-300",children:["$","${CLAUDE_PLUGIN_ROOT}"]}),". Validate with",e.jsx("code",{className:"text-cyan-300",children:' claude plugin validate "" --strict '}),"."]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"8 Tools"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Returned verbatim by ",e.jsx("code",{className:"text-cyan-300",children:"tools/list"}),". The schema is enforced as fail-closed JSON; malformed or resource-exceeding input returns an MCP",e.jsx("code",{className:"text-cyan-300",children:" isError "})," result without leaking tracebacks."]}),e.jsx("div",{className:"space-y-4",children:o.map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("div",{className:"flex flex-wrap items-baseline gap-3 mb-2",children:e.jsx("code",{className:"text-cyan-300 font-semibold text-base",children:s.name})}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:s.desc}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Required"}),e.jsx("div",{className:"text-secondary flex flex-wrap gap-x-2 gap-y-1",children:s.required.length?s.required.map(r=>e.jsx("code",{className:"text-cyan-300 mr-2",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Optional"}),e.jsx("div",{className:"text-secondary flex flex-wrap gap-x-2 gap-y-1",children:s.optional.length?s.optional.map(r=>e.jsx("code",{className:"text-muted-foreground",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Returns"}),e.jsx("div",{className:"text-secondary",children:s.returns})]})]})]},s.name))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Code families & decoders"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Nine code families (graphlike eligible where marked; non-graphlike inputs route to BP-OSD or require ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "}),") and five stable decoders. No universal benchmark figures are published on the site; run the shipped harness to measure your own hardware."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:d.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("span",{className:"text-cyan-300 font-mono font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1 font-mono",children:["→ ",s.desc]})]},s.name))}),e.jsx("div",{className:"mt-4 overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-2 px-3",children:"Decoder"}),e.jsx("th",{className:"py-2 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-2 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:l.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-2 px-3 font-mono font-semibold text-primary",children:s.name}),e.jsx("td",{className:"py-2 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-2 px-3 text-secondary text-xs",children:s.desc})]},s.name))})]})})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Example call"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:[e.jsx("code",{className:"text-cyan-300",children:" decode_single "})," runs one seeded code-capacity decode with Theorems 1 and 2 enforcement, then returns syndrome_valid and logical_scoring fields."]}),e.jsx(t,{language:"json",code:x}),e.jsx("p",{className:"text-secondary text-sm mt-5 mb-3",children:"Response:"}),e.jsx(t,{language:"json",code:h}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["Tool results are returned as MCP text content containing the JSON payload, per the 2024-11-05 content convention. The ",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "}),"check is enforced before any logical scoring; a failed check raises an MCP error instead of returning a result."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Operational guidance"}),e.jsxs("ul",{className:"space-y-3 text-secondary text-sm leading-relaxed list-disc pl-5 marker:text-cyan-300/60",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Local only."})," The supported transport is local stdio. Network surfaces (REST/gRPC/metrics/SSE) and batch-GPU paths are Provisional and require separate deployment review; they are not part of this public library contract."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Graphlike guard."})," Exact Blossom and SparseBlossom decoders require graphlike check structures (qubit participation ≤ 2). For hyperedge matrices such as ",e.jsx("code",{className:"text-cyan-300",children:" generate_surface_code_checks "}),", use ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "})," or decompose via the documented direct-wheel APIs."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"LER is coset-scored."})," Logical outcomes use the logical coset, never raw correction-vector equality. Wilson 95% intervals and a ",e.jsx("code",{className:"text-cyan-300",children:" code_capacity "})," tag are included; do not compare with ",e.jsx("code",{className:"text-cyan-300",children:" circuit_level "})," results."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Artifacts stay local."})," ",e.jsx("code",{className:"text-cyan-300",children:" threshold_sweep "})," writes a hashed raw JSON artifact with required metadata. Generated artifacts belong outside the plugin and must not be uploaded to external services."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Licensing."})," See ",e.jsx(a,{to:"/pricing",className:"text-cyan-300",children:"Pricing"})," for license-key installation and tier information returned by ",e.jsx("code",{className:"text-cyan-300",children:" get_license_info "}),"."]})]})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(a,{to:"/pricing",className:"btn-cyan",children:"View licensing"})})]})})]})}export{b as default}; diff --git a/assets/McpServer-CTaxUaPg.js b/assets/McpServer-CTaxUaPg.js deleted file mode 100644 index d9fec2bc..00000000 --- a/assets/McpServer-CTaxUaPg.js +++ /dev/null @@ -1,31 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,J as i,C as t}from"./index-abfjMTlQ.js";import{N as o}from"./NeuralReveal-D-EQoOl2.js";import{L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const n=[{name:"list_code_families",desc:"List the code families available in qector-decoder-v3 1.0.1 with their live availability and graphlike eligibility.",required:[],optional:[],returns:'families map (generator, code_factory, available, description, single_decode), reference_manual DOI, qector_version "1.0.1"'},{name:"list_decoders",desc:"List the five stable decoder classes exposed by the wheel: union_find, fast_union_find, blossom, sparse_blossom, native_auto.",required:[],optional:[],returns:'decoders map (class, status: "stable"), reference_manual DOI'},{name:"get_license_info",desc:"Read the live offline QECTOR license tier and feature gates from the installed wheel.",required:[],optional:[],returns:"license info object, qector_version, reference_manual DOI"},{name:"decode_syndrome",desc:"Decode a binary syndrome against an explicit or family-derived parity-check matrix. Fails unless H c = s (mod 2) (Theorem 1).",required:["syndrome"],optional:["family","size","decoder_name","n_qubits"],returns:"family, size, decoder, backend_used, qector_version, n_checks, n_qubits, syndrome, correction, hamming_weight, syndrome_valid, latency_us"},{name:"decode_single",desc:"Run one seeded code-capacity decode with Theorems 1 and 2 checks. Logical outcomes are coset-scored, not raw correction-equality.",required:[],optional:["family","distance","decoder_name","error_rate","seed"],returns:"family, distance, decoder, backend_used, qector_version, error_rate, seed, n_qubits, n_checks, error, syndrome, correction, error_weight, correction_weight, syndrome_valid, logical_failure, logical_scoring, latency_us"},{name:"threshold_sweep",desc:"Run a code-capacity LER sweep with Wilson 95% intervals and a hashed raw JSON artifact. Not comparable with circuit_level results.",required:[],optional:["family","distances","error_rates","trials","seed","decoder_name","artifact_path"],returns:"family, decoder, qector_version, results (per-point LER + Wilson interval), artifact (path, sha256, metadata), caveat"},{name:"build_code_from_matrix",desc:"Validate and build a binary (n_checks, n_qubits) parity-check matrix for arbitrary CSS/graph codes.",required:["H_matrix"],optional:["family","distance"],returns:"family, distance, matrix_shape, rank, n_checks, n_qubits, logical_observables, graphlike, code_built, qector_version, reference_manual"},{name:"compat_report",desc:"Report live package compatibility and Provisional-surface boundaries (library stdio MCP vs upstream network/batch-GPU/OpenCL surfaces).",required:[],optional:[],returns:"runtime_ok, qector_decoder_v3 (installed, version, expected), numpy, mcp_sdk, pymatching_compat, reference_manual, provisional_surfaces"}],d=[{name:"repetition",desc:"Open 1D chain parity-check code"},{name:"ring",desc:"Periodic ring code"},{name:"surface_legacy",desc:"Legacy toric weight-4 generator; NOT graphlike"},{name:"rotated_surface",desc:"Graphlike rotated surface code"},{name:"unrotated_surface",desc:"Graphlike square-lattice surface code"},{name:"toric",desc:"Graphlike toric code with periodic boundaries"},{name:"heavy_hex",desc:"Graphlike heavy-hex code"},{name:"color_code",desc:"Color code family exposed by the wheel"},{name:"hypergraph_product",desc:"CSS code from two parity-check matrices (requires build_code_from_matrix)"}],l=[{name:"union_find",type:"Graphlike",desc:"Standard cluster-growth Union-Find decoder."},{name:"fast_union_find",type:"Graphlike",desc:"Faster approximate Union-Find variant."},{name:"blossom",type:"Universal",desc:"Weight-optimal exact MWPM matching."},{name:"sparse_blossom",type:"Graphlike",desc:"Region-growing blossom variant for sparse error graphs."},{name:"native_auto",type:"Auto",desc:"Self-selecting heuristic selector (blossom for graphlike, BP-OSD for hypergraph-product)."}],m=`{ - "mcpServers": { - "qector": { - "command": "python", - "args": ["\${CLAUDE_PLUGIN_ROOT}/mcp/mcp_server_library.py"] - } - } -}`,x=`{ - "jsonrpc": "2.0", - "id": 1, - "method": "tools/call", - "params": { - "name": "decode_single", - "arguments": { - "family": "rotated_surface", - "distance": 5, - "decoder_name": "blossom", - "error_rate": 0.05, - "seed": 42 - } - } -}`,h=`{ - "jsonrpc": "2.0", - "id": 1, - "result": { - "content": [{ - "type": "text", - "text": "{\\n \\"family\\": \\"rotated_surface\\",\\n \\"distance\\": 5,\\n \\"decoder\\": \\"blossom\\",\\n \\"syndrome_valid\\": true,\\n \\"logical_scoring\\": \\"logical-observable matrix (Theorem 2)\\",\\n \\"logical_failure\\": false\\n}" - }] - } -}`;function v(){return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Library MCP Server · QECTOR Decoder v3 v1.0.1",description:"App-free Model Context Protocol server for quantum error correction decoding. 8 verified local stdio JSON-RPC 2.0 tools across 9 code families and 5 stable decoders. Ships as a local library; no Workbench or GUI required."}),e.jsx(i,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Library MCP Server",applicationCategory:"DeveloperApplication",operatingSystem:"Windows, macOS, Linux",description:"Local stdio Model Context Protocol server exposing 8 QEC decoding tools. Designed for local stdio use."}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Local stdio · JSON-RPC 2.0 · Protocol 2024-11-05 · qector-decoder-v3 1.0.1"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(o,{text:"Library MCP Server",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["The app-free, library-only MCP server: eight tools covering Union-Find, exact Blossom MWPM, SparseBlossom, and the auto router, with syndrome validation against",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "})," and coset-scored logical outcomes. Runs on ",e.jsx("code",{className:"text-cyan-300",children:"qector-decoder-v3 1.0.x"})," with",e.jsx("code",{className:"text-cyan-300",children:"mcp>=1.30,<3"}),"; no Workbench or GUI needed. Ships in the",e.jsx("code",{className:"text-cyan-300",children:"qector-claude-plugin"})," repository."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Documentation"}),e.jsx(a,{to:"/workbench",className:"btn-outline",children:"Workbench vs library"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6",children:"Design principles"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[{t:"Deterministic, not generated",d:"The assistant calls a decoder; it does not invent a correction. Results are reproducible and syndrome-faithful."},{t:"Runs locally",d:"Local stdio JSON-RPC. Syndromes are processed locally on the host machine; this library server includes no telemetry."},{t:"App-free",d:"Runs on the published qector-decoder-v3 1.0.x wheel and ships in the qector-claude-plugin repository. No QECTOR Workbench, no GUI, no desktop application required."}].map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:s.t}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.d})]},s.t))}),e.jsxs("div",{className:"card-surface border border-cyan-800/60 bg-gradient-to-r from-cyan-950/40 via-surface to-cyan-950/20 p-6 rounded-2xl flex flex-col md:flex-row items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("span",{className:"inline-block px-2.5 py-0.5 rounded text-[11px] font-mono font-semibold bg-cyan-400 text-slate-950 mb-2",children:"CLAUDE PLUGIN"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-1",children:"Looking for the full Claude Code Plugin?"}),e.jsx("p",{className:"text-slate-300 text-sm leading-relaxed",children:"The Claude Plugin v2.0.1 includes 28 skills, 11 slash commands and 5 agents. Its default qector-secure server exposes 12 schema-validated tools and runs air-gapped; 29 research tools and 3 admin tools are opt-in. Workbench v1.0.7 remains the largest desktop surface with 85 tools on Windows and Linux."})]}),e.jsx(a,{to:"/claude-plugin",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all whitespace-nowrap shadow-lg shadow-cyan-400/20",children:"Explore Claude Plugin →"})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Connect a client"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["The server speaks JSON-RPC 2.0 over local stdio and identifies itself as",e.jsx("code",{className:"text-cyan-300",children:" qector-decoder-v3-mcp "}),". Add it to Claude Code, Claude Desktop, or any MCP client:"]}),e.jsx(t,{language:"json",code:m}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["In Claude Code, root ",e.jsx("code",{className:"text-cyan-300",children:".mcp.json"})," already references this server via ",e.jsxs("code",{className:"text-cyan-300",children:["$","${CLAUDE_PLUGIN_ROOT}"]}),". Validate with",e.jsx("code",{className:"text-cyan-300",children:' claude plugin validate "" --strict '}),"."]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"8 Tools"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Returned verbatim by ",e.jsx("code",{className:"text-cyan-300",children:"tools/list"}),". The schema is enforced as fail-closed JSON; malformed or resource-exceeding input returns an MCP",e.jsx("code",{className:"text-cyan-300",children:" isError "})," result without leaking tracebacks."]}),e.jsx("div",{className:"space-y-4",children:n.map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("div",{className:"flex flex-wrap items-baseline gap-3 mb-2",children:e.jsx("code",{className:"text-cyan-300 font-semibold text-base",children:s.name})}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:s.desc}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Required"}),e.jsx("div",{className:"text-secondary flex flex-wrap gap-x-2 gap-y-1",children:s.required.length?s.required.map(r=>e.jsx("code",{className:"text-cyan-300 mr-2",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Optional"}),e.jsx("div",{className:"text-secondary flex flex-wrap gap-x-2 gap-y-1",children:s.optional.length?s.optional.map(r=>e.jsx("code",{className:"text-muted-foreground",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Returns"}),e.jsx("div",{className:"text-secondary",children:s.returns})]})]})]},s.name))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Code families & decoders"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Nine code families (graphlike eligible where marked; non-graphlike inputs route to BP-OSD or require ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "}),") and five stable decoders. No universal benchmark figures are published on the site; run the shipped harness to measure your own hardware."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:d.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("span",{className:"text-cyan-300 font-mono font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1 font-mono",children:["→ ",s.desc]})]},s.name))}),e.jsx("div",{className:"mt-4 overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-2 px-3",children:"Decoder"}),e.jsx("th",{className:"py-2 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-2 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:l.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-2 px-3 font-mono font-semibold text-primary",children:s.name}),e.jsx("td",{className:"py-2 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-2 px-3 text-secondary text-xs",children:s.desc})]},s.name))})]})})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Example call"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:[e.jsx("code",{className:"text-cyan-300",children:" decode_single "})," runs one seeded code-capacity decode with Theorems 1 and 2 enforcement, then returns syndrome_valid and logical_scoring fields."]}),e.jsx(t,{language:"json",code:x}),e.jsx("p",{className:"text-secondary text-sm mt-5 mb-3",children:"Response:"}),e.jsx(t,{language:"json",code:h}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["Tool results are returned as MCP text content containing the JSON payload, per the 2024-11-05 content convention. The ",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "}),"check is enforced before any logical scoring; a failed check raises an MCP error instead of returning a result."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Operational guidance"}),e.jsxs("ul",{className:"space-y-3 text-secondary text-sm leading-relaxed list-disc pl-5 marker:text-cyan-300/60",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Local only."})," The supported transport is local stdio. Network surfaces (REST/gRPC/metrics/SSE) and batch-GPU paths are Provisional and require separate deployment review; they are not part of this public library contract."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Graphlike guard."})," Exact Blossom and SparseBlossom decoders require graphlike check structures (qubit participation ≤ 2). For hyperedge matrices such as ",e.jsx("code",{className:"text-cyan-300",children:" generate_surface_code_checks "}),", use ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "})," or decompose via the documented direct-wheel APIs."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"LER is coset-scored."})," Logical outcomes use the logical coset, never raw correction-vector equality. Wilson 95% intervals and a ",e.jsx("code",{className:"text-cyan-300",children:" code_capacity "})," tag are included; do not compare with ",e.jsx("code",{className:"text-cyan-300",children:" circuit_level "})," results."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Artifacts stay local."})," ",e.jsx("code",{className:"text-cyan-300",children:" threshold_sweep "})," writes a hashed raw JSON artifact with required metadata. Generated artifacts belong outside the plugin and must not be uploaded to external services."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Licensing."})," See ",e.jsx(a,{to:"/pricing",className:"text-cyan-300",children:"Pricing"})," for license-key installation and tier information returned by ",e.jsx("code",{className:"text-cyan-300",children:" get_license_info "}),"."]})]})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(a,{to:"/pricing",className:"btn-cyan",children:"View licensing"})})]})})]})}export{v as default}; diff --git a/assets/McpServer-CePFSOZJ.js b/assets/McpServer-CePFSOZJ.js deleted file mode 100644 index fb71da8b..00000000 --- a/assets/McpServer-CePFSOZJ.js +++ /dev/null @@ -1,31 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,J as i,C as t}from"./index-CpdATiEY.js";import{N as o}from"./NeuralReveal-BflyZYSb.js";import{L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const n=[{name:"list_code_families",desc:"List the code families available in qector-decoder-v3 1.0.0 with their live availability and graphlike eligibility.",required:[],optional:[],returns:'families map (generator, code_factory, available, description, single_decode), reference_manual DOI, qector_version "1.0.0"'},{name:"list_decoders",desc:"List the five stable decoder classes exposed by the wheel: union_find, fast_union_find, blossom, sparse_blossom, native_auto.",required:[],optional:[],returns:'decoders map (class, status: "stable"), reference_manual DOI'},{name:"get_license_info",desc:"Read the live offline QECTOR license tier and feature gates from the installed wheel.",required:[],optional:[],returns:"license info object, qector_version, reference_manual DOI"},{name:"decode_syndrome",desc:"Decode a binary syndrome against an explicit or family-derived parity-check matrix. Fails unless H c = s (mod 2) (Theorem 1).",required:["syndrome"],optional:["family","size","decoder_name","n_qubits"],returns:"family, size, decoder, backend_used, qector_version, n_checks, n_qubits, syndrome, correction, hamming_weight, syndrome_valid, latency_us"},{name:"decode_single",desc:"Run one seeded code-capacity decode with Theorems 1 and 2 checks. Logical outcomes are coset-scored, not raw correction-equality.",required:[],optional:["family","distance","decoder_name","error_rate","seed"],returns:"family, distance, decoder, backend_used, qector_version, error_rate, seed, n_qubits, n_checks, error, syndrome, correction, error_weight, correction_weight, syndrome_valid, logical_failure, logical_scoring, latency_us"},{name:"threshold_sweep",desc:"Run a code-capacity LER sweep with Wilson 95% intervals and a hashed raw JSON artifact. Not comparable with circuit_level results.",required:[],optional:["family","distances","error_rates","trials","seed","decoder_name","artifact_path"],returns:"family, decoder, qector_version, results (per-point LER + Wilson interval), artifact (path, sha256, metadata), caveat"},{name:"build_code_from_matrix",desc:"Validate and build a binary (n_checks, n_qubits) parity-check matrix for arbitrary CSS/graph codes.",required:["H_matrix"],optional:["family","distance"],returns:"family, distance, matrix_shape, rank, n_checks, n_qubits, logical_observables, graphlike, code_built, qector_version, reference_manual"},{name:"compat_report",desc:"Report live package compatibility and Provisional-surface boundaries (library stdio MCP vs upstream network/batch-GPU/OpenCL surfaces).",required:[],optional:[],returns:"runtime_ok, qector_decoder_v3 (installed, version, expected), numpy, mcp_sdk, pymatching_compat, reference_manual, provisional_surfaces"}],d=[{name:"repetition",desc:"Open 1D chain parity-check code"},{name:"ring",desc:"Periodic ring code"},{name:"surface_legacy",desc:"Legacy toric weight-4 generator; NOT graphlike"},{name:"rotated_surface",desc:"Graphlike rotated surface code"},{name:"unrotated_surface",desc:"Graphlike square-lattice surface code"},{name:"toric",desc:"Graphlike toric code with periodic boundaries"},{name:"heavy_hex",desc:"Graphlike heavy-hex code"},{name:"color_code",desc:"Color code family exposed by the wheel"},{name:"hypergraph_product",desc:"CSS code from two parity-check matrices (requires build_code_from_matrix)"}],l=[{name:"union_find",type:"Graphlike",desc:"Standard cluster-growth Union-Find decoder."},{name:"fast_union_find",type:"Graphlike",desc:"Faster approximate Union-Find variant."},{name:"blossom",type:"Universal",desc:"Weight-optimal exact MWPM matching."},{name:"sparse_blossom",type:"Graphlike",desc:"Region-growing blossom variant for sparse error graphs."},{name:"native_auto",type:"Auto",desc:"Self-selecting heuristic selector (blossom for graphlike, BP-OSD for hypergraph-product)."}],m=`{ - "mcpServers": { - "qector": { - "command": "python", - "args": ["\${CLAUDE_PLUGIN_ROOT}/mcp/mcp_server_library.py"] - } - } -}`,x=`{ - "jsonrpc": "2.0", - "id": 1, - "method": "tools/call", - "params": { - "name": "decode_single", - "arguments": { - "family": "rotated_surface", - "distance": 5, - "decoder_name": "blossom", - "error_rate": 0.05, - "seed": 42 - } - } -}`,h=`{ - "jsonrpc": "2.0", - "id": 1, - "result": { - "content": [{ - "type": "text", - "text": "{\\n \\"family\\": \\"rotated_surface\\",\\n \\"distance\\": 5,\\n \\"decoder\\": \\"blossom\\",\\n \\"syndrome_valid\\": true,\\n \\"logical_scoring\\": \\"logical-observable matrix (Theorem 2)\\",\\n \\"logical_failure\\": false\\n}" - }] - } -}`;function v(){return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Library MCP Server · QECTOR Decoder v3 v1.0.0",description:"App-free Model Context Protocol server for quantum error correction decoding. 8 verified local stdio JSON-RPC 2.0 tools across 9 code families and 5 stable decoders. Ships as a local library; no Workbench or GUI required."}),e.jsx(i,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Library MCP Server",applicationCategory:"DeveloperApplication",operatingSystem:"Windows, macOS, Linux",description:"Local stdio Model Context Protocol server exposing 8 QEC decoding tools. Designed for local stdio use."}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Local stdio · JSON-RPC 2.0 · Protocol 2024-11-05 · qector-decoder-v3 1.0.0"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(o,{text:"Library MCP Server",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["The app-free, library-only MCP server: eight tools covering Union-Find, exact Blossom MWPM, SparseBlossom, and the auto router, with syndrome validation against",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "})," and coset-scored logical outcomes. Runs on ",e.jsx("code",{className:"text-cyan-300",children:"qector-decoder-v3 1.0.x"})," with",e.jsx("code",{className:"text-cyan-300",children:"mcp==1.26.0"}),"; no Workbench or GUI needed. Ships in the",e.jsx("code",{className:"text-cyan-300",children:"qector-claude-plugin"})," repository."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Documentation"}),e.jsx(a,{to:"/workbench",className:"btn-outline",children:"Workbench vs library"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6",children:"Design principles"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[{t:"Deterministic, not generated",d:"The assistant calls a decoder; it does not invent a correction. Results are reproducible and syndrome-faithful."},{t:"Runs locally",d:"Local stdio JSON-RPC. Syndromes are processed locally on the host machine; this library server includes no telemetry."},{t:"App-free",d:"Runs on the published qector-decoder-v3 1.0.x wheel and ships in the qector-claude-plugin repository. No QECTOR Workbench, no GUI, no desktop application required."}].map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:s.t}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.d})]},s.t))}),e.jsxs("div",{className:"card-surface border border-cyan-800/60 bg-gradient-to-r from-cyan-950/40 via-surface to-cyan-950/20 p-6 rounded-2xl flex flex-col md:flex-row items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("span",{className:"inline-block px-2.5 py-0.5 rounded text-[11px] font-mono font-semibold bg-cyan-400 text-slate-950 mb-2",children:"CLAUDE PLUGIN"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-1",children:"Looking for the full Claude Code Plugin?"}),e.jsx("p",{className:"text-slate-300 text-sm leading-relaxed",children:"The Claude Plugin v1.0.6 includes 28 skills, 11 slash commands, 5 agents, and four local MCP servers: 8 stable library tools, 29 opt-in research tools, 3 opt-in admin tools, and a safe Desktop profile. Workbench v1.0.7 remains the largest desktop surface with 85 tools on Windows and Linux."})]}),e.jsx(a,{to:"/claude-plugin",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all whitespace-nowrap shadow-lg shadow-cyan-400/20",children:"Explore Claude Plugin →"})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Connect a client"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["The server speaks JSON-RPC 2.0 over local stdio and identifies itself as",e.jsx("code",{className:"text-cyan-300",children:" qector-decoder-v3-mcp "}),". Add it to Claude Code, Claude Desktop, or any MCP client:"]}),e.jsx(t,{language:"json",code:m}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["In Claude Code, root ",e.jsx("code",{className:"text-cyan-300",children:".mcp.json"})," already references this server via ",e.jsxs("code",{className:"text-cyan-300",children:["$","${CLAUDE_PLUGIN_ROOT}"]}),". Validate with",e.jsx("code",{className:"text-cyan-300",children:' claude plugin validate "" --strict '}),"."]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"8 Tools"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Returned verbatim by ",e.jsx("code",{className:"text-cyan-300",children:"tools/list"}),". The schema is enforced as fail-closed JSON; malformed or resource-exceeding input returns an MCP",e.jsx("code",{className:"text-cyan-300",children:" isError "})," result without leaking tracebacks."]}),e.jsx("div",{className:"space-y-4",children:n.map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("div",{className:"flex flex-wrap items-baseline gap-3 mb-2",children:e.jsx("code",{className:"text-cyan-300 font-semibold text-base",children:s.name})}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:s.desc}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Required"}),e.jsx("div",{className:"text-secondary",children:s.required.length?s.required.map(r=>e.jsx("code",{className:"text-cyan-300 mr-2",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Optional"}),e.jsx("div",{className:"text-secondary",children:s.optional.length?s.optional.map(r=>e.jsx("code",{className:"text-muted-foreground mr-2",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Returns"}),e.jsx("div",{className:"text-secondary",children:s.returns})]})]})]},s.name))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Code families & decoders"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Nine code families (graphlike eligible where marked; non-graphlike inputs route to BP-OSD or require ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "}),") and five stable decoders. No universal benchmark figures are published on the site; run the shipped harness to measure your own hardware."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:d.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("span",{className:"text-cyan-300 font-mono font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1 font-mono",children:["→ ",s.desc]})]},s.name))}),e.jsx("div",{className:"mt-4 overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-2 px-3",children:"Decoder"}),e.jsx("th",{className:"py-2 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-2 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:l.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-2 px-3 font-mono font-semibold text-primary",children:s.name}),e.jsx("td",{className:"py-2 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-2 px-3 text-secondary text-xs",children:s.desc})]},s.name))})]})})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Example call"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:[e.jsx("code",{className:"text-cyan-300",children:" decode_single "})," runs one seeded code-capacity decode with Theorems 1 and 2 enforcement, then returns syndrome_valid and logical_scoring fields."]}),e.jsx(t,{language:"json",code:x}),e.jsx("p",{className:"text-secondary text-sm mt-5 mb-3",children:"Response:"}),e.jsx(t,{language:"json",code:h}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["Tool results are returned as MCP text content containing the JSON payload, per the 2024-11-05 content convention. The ",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "}),"check is enforced before any logical scoring; a failed check raises an MCP error instead of returning a result."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Operational guidance"}),e.jsxs("ul",{className:"space-y-3 text-secondary text-sm leading-relaxed list-disc pl-5 marker:text-cyan-300/60",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Local only."})," The supported transport is local stdio. Network surfaces (REST/gRPC/metrics/SSE) and batch-GPU paths are Provisional and require separate deployment review; they are not part of this public library contract."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Graphlike guard."})," Exact Blossom and SparseBlossom decoders require graphlike check structures (qubit participation ≤ 2). For hyperedge matrices such as ",e.jsx("code",{className:"text-cyan-300",children:" generate_surface_code_checks "}),", use ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "})," or decompose via the documented direct-wheel APIs."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"LER is coset-scored."})," Logical outcomes use the logical coset, never raw correction-vector equality. Wilson 95% intervals and a ",e.jsx("code",{className:"text-cyan-300",children:" code_capacity "})," tag are included; do not compare with ",e.jsx("code",{className:"text-cyan-300",children:" circuit_level "})," results."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Artifacts stay local."})," ",e.jsx("code",{className:"text-cyan-300",children:" threshold_sweep "})," writes a hashed raw JSON artifact with required metadata. Generated artifacts belong outside the plugin and must not be uploaded to external services."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Licensing."})," See ",e.jsx(a,{to:"/pricing",className:"text-cyan-300",children:"Pricing"})," for license-key installation and tier information returned by ",e.jsx("code",{className:"text-cyan-300",children:" get_license_info "}),"."]})]})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(a,{to:"/pricing",className:"btn-cyan",children:"View licensing"})})]})})]})}export{v as default}; diff --git a/assets/McpServer-Co_2_izC.js b/assets/McpServer-Co_2_izC.js deleted file mode 100644 index c724a7a3..00000000 --- a/assets/McpServer-Co_2_izC.js +++ /dev/null @@ -1,31 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,J as i,L as a,C as t}from"./index-CCmwjNGU.js";import{N as n}from"./NeuralReveal-uYarhiMA.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const o=[{name:"list_code_families",desc:"List the code families available in qector-decoder-v3 1.0.1 with their live availability and graphlike eligibility.",required:[],optional:[],returns:'families map (generator, code_factory, available, description, single_decode), reference_manual DOI, qector_version "1.0.1"'},{name:"list_decoders",desc:"List the five stable decoder classes exposed by the wheel: union_find, fast_union_find, blossom, sparse_blossom, native_auto.",required:[],optional:[],returns:'decoders map (class, status: "stable"), reference_manual DOI'},{name:"get_license_info",desc:"Read the live offline QECTOR license tier and feature gates from the installed wheel.",required:[],optional:[],returns:"license info object, qector_version, reference_manual DOI"},{name:"decode_syndrome",desc:"Decode a binary syndrome against an explicit or family-derived parity-check matrix. Fails unless H c = s (mod 2) (Theorem 1).",required:["syndrome"],optional:["family","size","decoder_name","n_qubits"],returns:"family, size, decoder, backend_used, qector_version, n_checks, n_qubits, syndrome, correction, hamming_weight, syndrome_valid, latency_us"},{name:"decode_single",desc:"Run one seeded code-capacity decode with Theorems 1 and 2 checks. Logical outcomes are coset-scored, not raw correction-equality.",required:[],optional:["family","distance","decoder_name","error_rate","seed"],returns:"family, distance, decoder, backend_used, qector_version, error_rate, seed, n_qubits, n_checks, error, syndrome, correction, error_weight, correction_weight, syndrome_valid, logical_failure, logical_scoring, latency_us"},{name:"threshold_sweep",desc:"Run a code-capacity LER sweep with Wilson 95% intervals and a hashed raw JSON artifact. Not comparable with circuit_level results.",required:[],optional:["family","distances","error_rates","trials","seed","decoder_name","artifact_path"],returns:"family, decoder, qector_version, results (per-point LER + Wilson interval), artifact (path, sha256, metadata), caveat"},{name:"build_code_from_matrix",desc:"Validate and build a binary (n_checks, n_qubits) parity-check matrix for arbitrary CSS/graph codes.",required:["H_matrix"],optional:["family","distance"],returns:"family, distance, matrix_shape, rank, n_checks, n_qubits, logical_observables, graphlike, code_built, qector_version, reference_manual"},{name:"compat_report",desc:"Report live package compatibility and Provisional-surface boundaries (library stdio MCP vs upstream network/batch-GPU/OpenCL surfaces).",required:[],optional:[],returns:"runtime_ok, qector_decoder_v3 (installed, version, expected), numpy, mcp_sdk, pymatching_compat, reference_manual, provisional_surfaces"}],d=[{name:"repetition",desc:"Open 1D chain parity-check code"},{name:"ring",desc:"Periodic ring code"},{name:"surface_legacy",desc:"Legacy toric weight-4 generator; NOT graphlike"},{name:"rotated_surface",desc:"Graphlike rotated surface code"},{name:"unrotated_surface",desc:"Graphlike square-lattice surface code"},{name:"toric",desc:"Graphlike toric code with periodic boundaries"},{name:"heavy_hex",desc:"Graphlike heavy-hex code"},{name:"color_code",desc:"Color code family exposed by the wheel"},{name:"hypergraph_product",desc:"CSS code from two parity-check matrices (requires build_code_from_matrix)"}],l=[{name:"union_find",type:"Graphlike",desc:"Standard cluster-growth Union-Find decoder."},{name:"fast_union_find",type:"Graphlike",desc:"Faster approximate Union-Find variant."},{name:"blossom",type:"Universal",desc:"Weight-optimal exact MWPM matching."},{name:"sparse_blossom",type:"Graphlike",desc:"Region-growing blossom variant for sparse error graphs."},{name:"native_auto",type:"Auto",desc:"Self-selecting heuristic selector (blossom for graphlike, BP-OSD for hypergraph-product)."}],m=`{ - "mcpServers": { - "qector": { - "command": "python", - "args": ["\${CLAUDE_PLUGIN_ROOT}/mcp/mcp_server_library.py"] - } - } -}`,x=`{ - "jsonrpc": "2.0", - "id": 1, - "method": "tools/call", - "params": { - "name": "decode_single", - "arguments": { - "family": "rotated_surface", - "distance": 5, - "decoder_name": "blossom", - "error_rate": 0.05, - "seed": 42 - } - } -}`,h=`{ - "jsonrpc": "2.0", - "id": 1, - "result": { - "content": [{ - "type": "text", - "text": "{\\n \\"family\\": \\"rotated_surface\\",\\n \\"distance\\": 5,\\n \\"decoder\\": \\"blossom\\",\\n \\"syndrome_valid\\": true,\\n \\"logical_scoring\\": \\"logical-observable matrix (Theorem 2)\\",\\n \\"logical_failure\\": false\\n}" - }] - } -}`;function b(){return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Library MCP Server · QECTOR Decoder v3 v1.0.1",description:"App-free Model Context Protocol server for quantum error correction decoding. 8 verified local stdio JSON-RPC 2.0 tools across 9 code families and 5 stable decoders. Ships as a local library; no Workbench or GUI required."}),e.jsx(i,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Library MCP Server",applicationCategory:"DeveloperApplication",operatingSystem:"Windows, macOS, Linux",description:"Local stdio Model Context Protocol server exposing 8 QEC decoding tools. Designed for local stdio use."}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Local stdio · JSON-RPC 2.0 · Protocol 2024-11-05 · qector-decoder-v3 1.0.1"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(n,{text:"Library MCP Server",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["The app-free, library-only MCP server: eight tools covering Union-Find, exact Blossom MWPM, SparseBlossom, and the auto router, with syndrome validation against",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "})," and coset-scored logical outcomes. Runs on ",e.jsx("code",{className:"text-cyan-300",children:"qector-decoder-v3 1.0.x"})," with",e.jsx("code",{className:"text-cyan-300",children:"mcp>=1.30,<3"}),"; no Workbench or GUI needed. Ships in the",e.jsx("code",{className:"text-cyan-300",children:"qector-claude-plugin"})," repository."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Documentation"}),e.jsx(a,{to:"/workbench",className:"btn-outline",children:"Workbench vs library"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6",children:"Design principles"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[{t:"Deterministic, not generated",d:"The assistant calls a decoder; it does not invent a correction. Results are reproducible and syndrome-faithful."},{t:"Runs locally",d:"Local stdio JSON-RPC. Syndromes are processed locally on the host machine; this library server includes no telemetry."},{t:"App-free",d:"Runs on the published qector-decoder-v3 1.0.x wheel and ships in the qector-claude-plugin repository. No QECTOR Workbench, no GUI, no desktop application required."}].map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:s.t}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.d})]},s.t))}),e.jsxs("div",{className:"card-surface border border-cyan-800/60 bg-gradient-to-r from-cyan-950/40 via-surface to-cyan-950/20 p-6 rounded-2xl flex flex-col md:flex-row items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("span",{className:"inline-block px-2.5 py-0.5 rounded text-[11px] font-mono font-semibold bg-cyan-400 text-slate-950 mb-2",children:"CLAUDE PLUGIN"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-1",children:"Looking for the full Claude Code Plugin?"}),e.jsx("p",{className:"text-slate-300 text-sm leading-relaxed",children:"The Claude Plugin v2.0.1 includes 28 skills, 11 slash commands and 5 agents. Its default qector-secure server exposes 12 schema-validated tools and runs air-gapped; 29 research tools and 3 admin tools are opt-in. Workbench v1.0.7 remains the largest desktop surface with 85 tools on Windows and Linux."})]}),e.jsx(a,{to:"/claude-plugin",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all whitespace-nowrap shadow-lg shadow-cyan-400/20",children:"Explore Claude Plugin →"})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Connect a client"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["The server speaks JSON-RPC 2.0 over local stdio and identifies itself as",e.jsx("code",{className:"text-cyan-300",children:" qector-decoder-v3-mcp "}),". Add it to Claude Code, Claude Desktop, or any MCP client:"]}),e.jsx(t,{language:"json",code:m}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["In Claude Code, root ",e.jsx("code",{className:"text-cyan-300",children:".mcp.json"})," already references this server via ",e.jsxs("code",{className:"text-cyan-300",children:["$","${CLAUDE_PLUGIN_ROOT}"]}),". Validate with",e.jsx("code",{className:"text-cyan-300",children:' claude plugin validate "" --strict '}),"."]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"8 Tools"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Returned verbatim by ",e.jsx("code",{className:"text-cyan-300",children:"tools/list"}),". The schema is enforced as fail-closed JSON; malformed or resource-exceeding input returns an MCP",e.jsx("code",{className:"text-cyan-300",children:" isError "})," result without leaking tracebacks."]}),e.jsx("div",{className:"space-y-4",children:o.map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("div",{className:"flex flex-wrap items-baseline gap-3 mb-2",children:e.jsx("code",{className:"text-cyan-300 font-semibold text-base",children:s.name})}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:s.desc}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Required"}),e.jsx("div",{className:"text-secondary flex flex-wrap gap-x-2 gap-y-1",children:s.required.length?s.required.map(r=>e.jsx("code",{className:"text-cyan-300 mr-2",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Optional"}),e.jsx("div",{className:"text-secondary flex flex-wrap gap-x-2 gap-y-1",children:s.optional.length?s.optional.map(r=>e.jsx("code",{className:"text-muted-foreground",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Returns"}),e.jsx("div",{className:"text-secondary",children:s.returns})]})]})]},s.name))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Code families & decoders"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Nine code families (graphlike eligible where marked; non-graphlike inputs route to BP-OSD or require ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "}),") and five stable decoders. No universal benchmark figures are published on the site; run the shipped harness to measure your own hardware."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:d.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("span",{className:"text-cyan-300 font-mono font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1 font-mono",children:["→ ",s.desc]})]},s.name))}),e.jsx("div",{className:"mt-4 overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-2 px-3",children:"Decoder"}),e.jsx("th",{className:"py-2 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-2 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:l.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-2 px-3 font-mono font-semibold text-primary",children:s.name}),e.jsx("td",{className:"py-2 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-2 px-3 text-secondary text-xs",children:s.desc})]},s.name))})]})})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Example call"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:[e.jsx("code",{className:"text-cyan-300",children:" decode_single "})," runs one seeded code-capacity decode with Theorems 1 and 2 enforcement, then returns syndrome_valid and logical_scoring fields."]}),e.jsx(t,{language:"json",code:x}),e.jsx("p",{className:"text-secondary text-sm mt-5 mb-3",children:"Response:"}),e.jsx(t,{language:"json",code:h}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["Tool results are returned as MCP text content containing the JSON payload, per the 2024-11-05 content convention. The ",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "}),"check is enforced before any logical scoring; a failed check raises an MCP error instead of returning a result."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Operational guidance"}),e.jsxs("ul",{className:"space-y-3 text-secondary text-sm leading-relaxed list-disc pl-5 marker:text-cyan-300/60",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Local only."})," The supported transport is local stdio. Network surfaces (REST/gRPC/metrics/SSE) and batch-GPU paths are Provisional and require separate deployment review; they are not part of this public library contract."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Graphlike guard."})," Exact Blossom and SparseBlossom decoders require graphlike check structures (qubit participation ≤ 2). For hyperedge matrices such as ",e.jsx("code",{className:"text-cyan-300",children:" generate_surface_code_checks "}),", use ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "})," or decompose via the documented direct-wheel APIs."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"LER is coset-scored."})," Logical outcomes use the logical coset, never raw correction-vector equality. Wilson 95% intervals and a ",e.jsx("code",{className:"text-cyan-300",children:" code_capacity "})," tag are included; do not compare with ",e.jsx("code",{className:"text-cyan-300",children:" circuit_level "})," results."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Artifacts stay local."})," ",e.jsx("code",{className:"text-cyan-300",children:" threshold_sweep "})," writes a hashed raw JSON artifact with required metadata. Generated artifacts belong outside the plugin and must not be uploaded to external services."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Licensing."})," See ",e.jsx(a,{to:"/pricing",className:"text-cyan-300",children:"Pricing"})," for license-key installation and tier information returned by ",e.jsx("code",{className:"text-cyan-300",children:" get_license_info "}),"."]})]})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(a,{to:"/pricing",className:"btn-cyan",children:"View licensing"})})]})})]})}export{b as default}; diff --git a/assets/McpServer-D27l0qru.js b/assets/McpServer-D27l0qru.js deleted file mode 100644 index ec6976f8..00000000 --- a/assets/McpServer-D27l0qru.js +++ /dev/null @@ -1,31 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,J as i,C as t}from"./index-CxWP17m6.js";import{N as o}from"./NeuralReveal-BflyZYSb.js";import{L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const n=[{name:"list_code_families",desc:"List the code families available in qector-decoder-v3 1.0.1 with their live availability and graphlike eligibility.",required:[],optional:[],returns:'families map (generator, code_factory, available, description, single_decode), reference_manual DOI, qector_version "1.0.1"'},{name:"list_decoders",desc:"List the five stable decoder classes exposed by the wheel: union_find, fast_union_find, blossom, sparse_blossom, native_auto.",required:[],optional:[],returns:'decoders map (class, status: "stable"), reference_manual DOI'},{name:"get_license_info",desc:"Read the live offline QECTOR license tier and feature gates from the installed wheel.",required:[],optional:[],returns:"license info object, qector_version, reference_manual DOI"},{name:"decode_syndrome",desc:"Decode a binary syndrome against an explicit or family-derived parity-check matrix. Fails unless H c = s (mod 2) (Theorem 1).",required:["syndrome"],optional:["family","size","decoder_name","n_qubits"],returns:"family, size, decoder, backend_used, qector_version, n_checks, n_qubits, syndrome, correction, hamming_weight, syndrome_valid, latency_us"},{name:"decode_single",desc:"Run one seeded code-capacity decode with Theorems 1 and 2 checks. Logical outcomes are coset-scored, not raw correction-equality.",required:[],optional:["family","distance","decoder_name","error_rate","seed"],returns:"family, distance, decoder, backend_used, qector_version, error_rate, seed, n_qubits, n_checks, error, syndrome, correction, error_weight, correction_weight, syndrome_valid, logical_failure, logical_scoring, latency_us"},{name:"threshold_sweep",desc:"Run a code-capacity LER sweep with Wilson 95% intervals and a hashed raw JSON artifact. Not comparable with circuit_level results.",required:[],optional:["family","distances","error_rates","trials","seed","decoder_name","artifact_path"],returns:"family, decoder, qector_version, results (per-point LER + Wilson interval), artifact (path, sha256, metadata), caveat"},{name:"build_code_from_matrix",desc:"Validate and build a binary (n_checks, n_qubits) parity-check matrix for arbitrary CSS/graph codes.",required:["H_matrix"],optional:["family","distance"],returns:"family, distance, matrix_shape, rank, n_checks, n_qubits, logical_observables, graphlike, code_built, qector_version, reference_manual"},{name:"compat_report",desc:"Report live package compatibility and Provisional-surface boundaries (library stdio MCP vs upstream network/batch-GPU/OpenCL surfaces).",required:[],optional:[],returns:"runtime_ok, qector_decoder_v3 (installed, version, expected), numpy, mcp_sdk, pymatching_compat, reference_manual, provisional_surfaces"}],d=[{name:"repetition",desc:"Open 1D chain parity-check code"},{name:"ring",desc:"Periodic ring code"},{name:"surface_legacy",desc:"Legacy toric weight-4 generator; NOT graphlike"},{name:"rotated_surface",desc:"Graphlike rotated surface code"},{name:"unrotated_surface",desc:"Graphlike square-lattice surface code"},{name:"toric",desc:"Graphlike toric code with periodic boundaries"},{name:"heavy_hex",desc:"Graphlike heavy-hex code"},{name:"color_code",desc:"Color code family exposed by the wheel"},{name:"hypergraph_product",desc:"CSS code from two parity-check matrices (requires build_code_from_matrix)"}],l=[{name:"union_find",type:"Graphlike",desc:"Standard cluster-growth Union-Find decoder."},{name:"fast_union_find",type:"Graphlike",desc:"Faster approximate Union-Find variant."},{name:"blossom",type:"Universal",desc:"Weight-optimal exact MWPM matching."},{name:"sparse_blossom",type:"Graphlike",desc:"Region-growing blossom variant for sparse error graphs."},{name:"native_auto",type:"Auto",desc:"Self-selecting heuristic selector (blossom for graphlike, BP-OSD for hypergraph-product)."}],m=`{ - "mcpServers": { - "qector": { - "command": "python", - "args": ["\${CLAUDE_PLUGIN_ROOT}/mcp/mcp_server_library.py"] - } - } -}`,x=`{ - "jsonrpc": "2.0", - "id": 1, - "method": "tools/call", - "params": { - "name": "decode_single", - "arguments": { - "family": "rotated_surface", - "distance": 5, - "decoder_name": "blossom", - "error_rate": 0.05, - "seed": 42 - } - } -}`,h=`{ - "jsonrpc": "2.0", - "id": 1, - "result": { - "content": [{ - "type": "text", - "text": "{\\n \\"family\\": \\"rotated_surface\\",\\n \\"distance\\": 5,\\n \\"decoder\\": \\"blossom\\",\\n \\"syndrome_valid\\": true,\\n \\"logical_scoring\\": \\"logical-observable matrix (Theorem 2)\\",\\n \\"logical_failure\\": false\\n}" - }] - } -}`;function v(){return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Library MCP Server · QECTOR Decoder v3 v1.0.1",description:"App-free Model Context Protocol server for quantum error correction decoding. 8 verified local stdio JSON-RPC 2.0 tools across 9 code families and 5 stable decoders. Ships as a local library; no Workbench or GUI required."}),e.jsx(i,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Library MCP Server",applicationCategory:"DeveloperApplication",operatingSystem:"Windows, macOS, Linux",description:"Local stdio Model Context Protocol server exposing 8 QEC decoding tools. Designed for local stdio use."}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Local stdio · JSON-RPC 2.0 · Protocol 2024-11-05 · qector-decoder-v3 1.0.1"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(o,{text:"Library MCP Server",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["The app-free, library-only MCP server: eight tools covering Union-Find, exact Blossom MWPM, SparseBlossom, and the auto router, with syndrome validation against",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "})," and coset-scored logical outcomes. Runs on ",e.jsx("code",{className:"text-cyan-300",children:"qector-decoder-v3 1.0.x"})," with",e.jsx("code",{className:"text-cyan-300",children:"mcp>=1.30,<3"}),"; no Workbench or GUI needed. Ships in the",e.jsx("code",{className:"text-cyan-300",children:"qector-claude-plugin"})," repository."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Documentation"}),e.jsx(a,{to:"/workbench",className:"btn-outline",children:"Workbench vs library"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6",children:"Design principles"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[{t:"Deterministic, not generated",d:"The assistant calls a decoder; it does not invent a correction. Results are reproducible and syndrome-faithful."},{t:"Runs locally",d:"Local stdio JSON-RPC. Syndromes are processed locally on the host machine; this library server includes no telemetry."},{t:"App-free",d:"Runs on the published qector-decoder-v3 1.0.x wheel and ships in the qector-claude-plugin repository. No QECTOR Workbench, no GUI, no desktop application required."}].map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:s.t}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.d})]},s.t))}),e.jsxs("div",{className:"card-surface border border-cyan-800/60 bg-gradient-to-r from-cyan-950/40 via-surface to-cyan-950/20 p-6 rounded-2xl flex flex-col md:flex-row items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("span",{className:"inline-block px-2.5 py-0.5 rounded text-[11px] font-mono font-semibold bg-cyan-400 text-slate-950 mb-2",children:"CLAUDE PLUGIN"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-1",children:"Looking for the full Claude Code Plugin?"}),e.jsx("p",{className:"text-slate-300 text-sm leading-relaxed",children:"The Claude Plugin v2.0.1 includes 28 skills, 11 slash commands and 5 agents. Its default qector-secure server exposes 12 schema-validated tools and runs air-gapped; 29 research tools and 3 admin tools are opt-in. Workbench v1.0.7 remains the largest desktop surface with 85 tools on Windows and Linux."})]}),e.jsx(a,{to:"/claude-plugin",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all whitespace-nowrap shadow-lg shadow-cyan-400/20",children:"Explore Claude Plugin →"})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Connect a client"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["The server speaks JSON-RPC 2.0 over local stdio and identifies itself as",e.jsx("code",{className:"text-cyan-300",children:" qector-decoder-v3-mcp "}),". Add it to Claude Code, Claude Desktop, or any MCP client:"]}),e.jsx(t,{language:"json",code:m}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["In Claude Code, root ",e.jsx("code",{className:"text-cyan-300",children:".mcp.json"})," already references this server via ",e.jsxs("code",{className:"text-cyan-300",children:["$","${CLAUDE_PLUGIN_ROOT}"]}),". Validate with",e.jsx("code",{className:"text-cyan-300",children:' claude plugin validate "" --strict '}),"."]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"8 Tools"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Returned verbatim by ",e.jsx("code",{className:"text-cyan-300",children:"tools/list"}),". The schema is enforced as fail-closed JSON; malformed or resource-exceeding input returns an MCP",e.jsx("code",{className:"text-cyan-300",children:" isError "})," result without leaking tracebacks."]}),e.jsx("div",{className:"space-y-4",children:n.map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("div",{className:"flex flex-wrap items-baseline gap-3 mb-2",children:e.jsx("code",{className:"text-cyan-300 font-semibold text-base",children:s.name})}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:s.desc}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Required"}),e.jsx("div",{className:"text-secondary flex flex-wrap gap-x-2 gap-y-1",children:s.required.length?s.required.map(r=>e.jsx("code",{className:"text-cyan-300 mr-2",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Optional"}),e.jsx("div",{className:"text-secondary flex flex-wrap gap-x-2 gap-y-1",children:s.optional.length?s.optional.map(r=>e.jsx("code",{className:"text-muted-foreground",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Returns"}),e.jsx("div",{className:"text-secondary",children:s.returns})]})]})]},s.name))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Code families & decoders"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Nine code families (graphlike eligible where marked; non-graphlike inputs route to BP-OSD or require ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "}),") and five stable decoders. No universal benchmark figures are published on the site; run the shipped harness to measure your own hardware."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:d.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("span",{className:"text-cyan-300 font-mono font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1 font-mono",children:["→ ",s.desc]})]},s.name))}),e.jsx("div",{className:"mt-4 overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-2 px-3",children:"Decoder"}),e.jsx("th",{className:"py-2 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-2 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:l.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-2 px-3 font-mono font-semibold text-primary",children:s.name}),e.jsx("td",{className:"py-2 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-2 px-3 text-secondary text-xs",children:s.desc})]},s.name))})]})})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Example call"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:[e.jsx("code",{className:"text-cyan-300",children:" decode_single "})," runs one seeded code-capacity decode with Theorems 1 and 2 enforcement, then returns syndrome_valid and logical_scoring fields."]}),e.jsx(t,{language:"json",code:x}),e.jsx("p",{className:"text-secondary text-sm mt-5 mb-3",children:"Response:"}),e.jsx(t,{language:"json",code:h}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["Tool results are returned as MCP text content containing the JSON payload, per the 2024-11-05 content convention. The ",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "}),"check is enforced before any logical scoring; a failed check raises an MCP error instead of returning a result."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Operational guidance"}),e.jsxs("ul",{className:"space-y-3 text-secondary text-sm leading-relaxed list-disc pl-5 marker:text-cyan-300/60",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Local only."})," The supported transport is local stdio. Network surfaces (REST/gRPC/metrics/SSE) and batch-GPU paths are Provisional and require separate deployment review; they are not part of this public library contract."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Graphlike guard."})," Exact Blossom and SparseBlossom decoders require graphlike check structures (qubit participation ≤ 2). For hyperedge matrices such as ",e.jsx("code",{className:"text-cyan-300",children:" generate_surface_code_checks "}),", use ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "})," or decompose via the documented direct-wheel APIs."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"LER is coset-scored."})," Logical outcomes use the logical coset, never raw correction-vector equality. Wilson 95% intervals and a ",e.jsx("code",{className:"text-cyan-300",children:" code_capacity "})," tag are included; do not compare with ",e.jsx("code",{className:"text-cyan-300",children:" circuit_level "})," results."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Artifacts stay local."})," ",e.jsx("code",{className:"text-cyan-300",children:" threshold_sweep "})," writes a hashed raw JSON artifact with required metadata. Generated artifacts belong outside the plugin and must not be uploaded to external services."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Licensing."})," See ",e.jsx(a,{to:"/pricing",className:"text-cyan-300",children:"Pricing"})," for license-key installation and tier information returned by ",e.jsx("code",{className:"text-cyan-300",children:" get_license_info "}),"."]})]})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(a,{to:"/pricing",className:"btn-cyan",children:"View licensing"})})]})})]})}export{v as default}; diff --git a/assets/McpServer-DBDf1DXP.js b/assets/McpServer-DBDf1DXP.js deleted file mode 100644 index 561c7585..00000000 --- a/assets/McpServer-DBDf1DXP.js +++ /dev/null @@ -1,31 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,J as i,L as a,C as t}from"./index-c1PDYu0j.js";import{N as n}from"./NeuralReveal-uYarhiMA.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const o=[{name:"list_code_families",desc:"List the code families available in qector-decoder-v3 1.0.1 with their live availability and graphlike eligibility.",required:[],optional:[],returns:'families map (generator, code_factory, available, description, single_decode), reference_manual DOI, qector_version "1.0.1"'},{name:"list_decoders",desc:"List the five stable decoder classes exposed by the wheel: union_find, fast_union_find, blossom, sparse_blossom, native_auto.",required:[],optional:[],returns:'decoders map (class, status: "stable"), reference_manual DOI'},{name:"get_license_info",desc:"Read the live offline QECTOR license tier and feature gates from the installed wheel.",required:[],optional:[],returns:"license info object, qector_version, reference_manual DOI"},{name:"decode_syndrome",desc:"Decode a binary syndrome against an explicit or family-derived parity-check matrix. Fails unless H c = s (mod 2) (Theorem 1).",required:["syndrome"],optional:["family","size","decoder_name","n_qubits"],returns:"family, size, decoder, backend_used, qector_version, n_checks, n_qubits, syndrome, correction, hamming_weight, syndrome_valid, latency_us"},{name:"decode_single",desc:"Run one seeded code-capacity decode with Theorems 1 and 2 checks. Logical outcomes are coset-scored, not raw correction-equality.",required:[],optional:["family","distance","decoder_name","error_rate","seed"],returns:"family, distance, decoder, backend_used, qector_version, error_rate, seed, n_qubits, n_checks, error, syndrome, correction, error_weight, correction_weight, syndrome_valid, logical_failure, logical_scoring, latency_us"},{name:"threshold_sweep",desc:"Run a code-capacity LER sweep with Wilson 95% intervals and a hashed raw JSON artifact. Not comparable with circuit_level results.",required:[],optional:["family","distances","error_rates","trials","seed","decoder_name","artifact_path"],returns:"family, decoder, qector_version, results (per-point LER + Wilson interval), artifact (path, sha256, metadata), caveat"},{name:"build_code_from_matrix",desc:"Validate and build a binary (n_checks, n_qubits) parity-check matrix for arbitrary CSS/graph codes.",required:["H_matrix"],optional:["family","distance"],returns:"family, distance, matrix_shape, rank, n_checks, n_qubits, logical_observables, graphlike, code_built, qector_version, reference_manual"},{name:"compat_report",desc:"Report live package compatibility and Provisional-surface boundaries (library stdio MCP vs upstream network/batch-GPU/OpenCL surfaces).",required:[],optional:[],returns:"runtime_ok, qector_decoder_v3 (installed, version, expected), numpy, mcp_sdk, pymatching_compat, reference_manual, provisional_surfaces"}],d=[{name:"repetition",desc:"Open 1D chain parity-check code"},{name:"ring",desc:"Periodic ring code"},{name:"surface_legacy",desc:"Legacy toric weight-4 generator; NOT graphlike"},{name:"rotated_surface",desc:"Graphlike rotated surface code"},{name:"unrotated_surface",desc:"Graphlike square-lattice surface code"},{name:"toric",desc:"Graphlike toric code with periodic boundaries"},{name:"heavy_hex",desc:"Graphlike heavy-hex code"},{name:"color_code",desc:"Color code family exposed by the wheel"},{name:"hypergraph_product",desc:"CSS code from two parity-check matrices (requires build_code_from_matrix)"}],l=[{name:"union_find",type:"Graphlike",desc:"Standard cluster-growth Union-Find decoder."},{name:"fast_union_find",type:"Graphlike",desc:"Faster approximate Union-Find variant."},{name:"blossom",type:"Universal",desc:"Weight-optimal exact MWPM matching."},{name:"sparse_blossom",type:"Graphlike",desc:"Region-growing blossom variant for sparse error graphs."},{name:"native_auto",type:"Auto",desc:"Self-selecting heuristic selector (blossom for graphlike, BP-OSD for hypergraph-product)."}],m=`{ - "mcpServers": { - "qector": { - "command": "python", - "args": ["\${CLAUDE_PLUGIN_ROOT}/mcp/mcp_server_library.py"] - } - } -}`,x=`{ - "jsonrpc": "2.0", - "id": 1, - "method": "tools/call", - "params": { - "name": "decode_single", - "arguments": { - "family": "rotated_surface", - "distance": 5, - "decoder_name": "blossom", - "error_rate": 0.05, - "seed": 42 - } - } -}`,h=`{ - "jsonrpc": "2.0", - "id": 1, - "result": { - "content": [{ - "type": "text", - "text": "{\\n \\"family\\": \\"rotated_surface\\",\\n \\"distance\\": 5,\\n \\"decoder\\": \\"blossom\\",\\n \\"syndrome_valid\\": true,\\n \\"logical_scoring\\": \\"logical-observable matrix (Theorem 2)\\",\\n \\"logical_failure\\": false\\n}" - }] - } -}`;function b(){return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Library MCP Server · QECTOR Decoder v3 v1.0.1",description:"App-free Model Context Protocol server for quantum error correction decoding. 8 verified local stdio JSON-RPC 2.0 tools across 9 code families and 5 stable decoders. Ships as a local library; no Workbench or GUI required."}),e.jsx(i,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Library MCP Server",applicationCategory:"DeveloperApplication",operatingSystem:"Windows, macOS, Linux",description:"Local stdio Model Context Protocol server exposing 8 QEC decoding tools. Designed for local stdio use."}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Local stdio · JSON-RPC 2.0 · Protocol 2024-11-05 · qector-decoder-v3 1.0.1"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(n,{text:"Library MCP Server",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["The app-free, library-only MCP server: eight tools covering Union-Find, exact Blossom MWPM, SparseBlossom, and the auto router, with syndrome validation against",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "})," and coset-scored logical outcomes. Runs on ",e.jsx("code",{className:"text-cyan-300",children:"qector-decoder-v3 1.0.x"})," with",e.jsx("code",{className:"text-cyan-300",children:"mcp>=1.30,<3"}),"; no Workbench or GUI needed. Ships in the",e.jsx("code",{className:"text-cyan-300",children:"qector-claude-plugin"})," repository."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Documentation"}),e.jsx(a,{to:"/workbench",className:"btn-outline",children:"Workbench vs library"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6",children:"Design principles"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[{t:"Deterministic, not generated",d:"The assistant calls a decoder; it does not invent a correction. Results are reproducible and syndrome-faithful."},{t:"Runs locally",d:"Local stdio JSON-RPC. Syndromes are processed locally on the host machine; this library server includes no telemetry."},{t:"App-free",d:"Runs on the published qector-decoder-v3 1.0.x wheel and ships in the qector-claude-plugin repository. No QECTOR Workbench, no GUI, no desktop application required."}].map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:s.t}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.d})]},s.t))}),e.jsxs("div",{className:"card-surface border border-cyan-800/60 bg-gradient-to-r from-cyan-950/40 via-surface to-cyan-950/20 p-6 rounded-2xl flex flex-col md:flex-row items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("span",{className:"inline-block px-2.5 py-0.5 rounded text-[11px] font-mono font-semibold bg-cyan-400 text-slate-950 mb-2",children:"CLAUDE PLUGIN"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-1",children:"Looking for the full Claude Code Plugin?"}),e.jsx("p",{className:"text-slate-300 text-sm leading-relaxed",children:"The Claude Plugin v2.0.1 includes 28 skills, 11 slash commands and 5 agents. Its default qector-secure server exposes 12 schema-validated tools and runs air-gapped; 29 research tools and 3 admin tools are opt-in. Workbench v1.0.7 remains the largest desktop surface with 85 tools on Windows and Linux."})]}),e.jsx(a,{to:"/claude-plugin",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all whitespace-nowrap shadow-lg shadow-cyan-400/20",children:"Explore Claude Plugin →"})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Connect a client"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["The server speaks JSON-RPC 2.0 over local stdio and identifies itself as",e.jsx("code",{className:"text-cyan-300",children:" qector-decoder-v3-mcp "}),". Add it to Claude Code, Claude Desktop, or any MCP client:"]}),e.jsx(t,{language:"json",code:m}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["In Claude Code, root ",e.jsx("code",{className:"text-cyan-300",children:".mcp.json"})," already references this server via ",e.jsxs("code",{className:"text-cyan-300",children:["$","${CLAUDE_PLUGIN_ROOT}"]}),". Validate with",e.jsx("code",{className:"text-cyan-300",children:' claude plugin validate "" --strict '}),"."]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"8 Tools"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Returned verbatim by ",e.jsx("code",{className:"text-cyan-300",children:"tools/list"}),". The schema is enforced as fail-closed JSON; malformed or resource-exceeding input returns an MCP",e.jsx("code",{className:"text-cyan-300",children:" isError "})," result without leaking tracebacks."]}),e.jsx("div",{className:"space-y-4",children:o.map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("div",{className:"flex flex-wrap items-baseline gap-3 mb-2",children:e.jsx("code",{className:"text-cyan-300 font-semibold text-base",children:s.name})}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:s.desc}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Required"}),e.jsx("div",{className:"text-secondary flex flex-wrap gap-x-2 gap-y-1",children:s.required.length?s.required.map(r=>e.jsx("code",{className:"text-cyan-300 mr-2",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Optional"}),e.jsx("div",{className:"text-secondary flex flex-wrap gap-x-2 gap-y-1",children:s.optional.length?s.optional.map(r=>e.jsx("code",{className:"text-muted-foreground",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Returns"}),e.jsx("div",{className:"text-secondary",children:s.returns})]})]})]},s.name))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Code families & decoders"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Nine code families (graphlike eligible where marked; non-graphlike inputs route to BP-OSD or require ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "}),") and five stable decoders. No universal benchmark figures are published on the site; run the shipped harness to measure your own hardware."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:d.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("span",{className:"text-cyan-300 font-mono font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1 font-mono",children:["→ ",s.desc]})]},s.name))}),e.jsx("div",{className:"mt-4 overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-2 px-3",children:"Decoder"}),e.jsx("th",{className:"py-2 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-2 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:l.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-2 px-3 font-mono font-semibold text-primary",children:s.name}),e.jsx("td",{className:"py-2 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-2 px-3 text-secondary text-xs",children:s.desc})]},s.name))})]})})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Example call"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:[e.jsx("code",{className:"text-cyan-300",children:" decode_single "})," runs one seeded code-capacity decode with Theorems 1 and 2 enforcement, then returns syndrome_valid and logical_scoring fields."]}),e.jsx(t,{language:"json",code:x}),e.jsx("p",{className:"text-secondary text-sm mt-5 mb-3",children:"Response:"}),e.jsx(t,{language:"json",code:h}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["Tool results are returned as MCP text content containing the JSON payload, per the 2024-11-05 content convention. The ",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "}),"check is enforced before any logical scoring; a failed check raises an MCP error instead of returning a result."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Operational guidance"}),e.jsxs("ul",{className:"space-y-3 text-secondary text-sm leading-relaxed list-disc pl-5 marker:text-cyan-300/60",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Local only."})," The supported transport is local stdio. Network surfaces (REST/gRPC/metrics/SSE) and batch-GPU paths are Provisional and require separate deployment review; they are not part of this public library contract."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Graphlike guard."})," Exact Blossom and SparseBlossom decoders require graphlike check structures (qubit participation ≤ 2). For hyperedge matrices such as ",e.jsx("code",{className:"text-cyan-300",children:" generate_surface_code_checks "}),", use ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "})," or decompose via the documented direct-wheel APIs."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"LER is coset-scored."})," Logical outcomes use the logical coset, never raw correction-vector equality. Wilson 95% intervals and a ",e.jsx("code",{className:"text-cyan-300",children:" code_capacity "})," tag are included; do not compare with ",e.jsx("code",{className:"text-cyan-300",children:" circuit_level "})," results."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Artifacts stay local."})," ",e.jsx("code",{className:"text-cyan-300",children:" threshold_sweep "})," writes a hashed raw JSON artifact with required metadata. Generated artifacts belong outside the plugin and must not be uploaded to external services."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Licensing."})," See ",e.jsx(a,{to:"/pricing",className:"text-cyan-300",children:"Pricing"})," for license-key installation and tier information returned by ",e.jsx("code",{className:"text-cyan-300",children:" get_license_info "}),"."]})]})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(a,{to:"/pricing",className:"btn-cyan",children:"View licensing"})})]})})]})}export{b as default}; diff --git a/assets/McpServer-DH6efPKh.js b/assets/McpServer-DH6efPKh.js deleted file mode 100644 index 9f0fade9..00000000 --- a/assets/McpServer-DH6efPKh.js +++ /dev/null @@ -1,31 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,J as i,C as t}from"./index-BcbVjARk.js";import{N as o}from"./NeuralReveal-BflyZYSb.js";import{L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const n=[{name:"list_code_families",desc:"List the code families available in qector-decoder-v3 1.0.0 with their live availability and graphlike eligibility.",required:[],optional:[],returns:'families map (generator, code_factory, available, description, single_decode), reference_manual DOI, qector_version "1.0.0"'},{name:"list_decoders",desc:"List the five stable decoder classes exposed by the wheel: union_find, fast_union_find, blossom, sparse_blossom, native_auto.",required:[],optional:[],returns:'decoders map (class, status: "stable"), reference_manual DOI'},{name:"get_license_info",desc:"Read the live offline QECTOR license tier and feature gates from the installed wheel.",required:[],optional:[],returns:"license info object, qector_version, reference_manual DOI"},{name:"decode_syndrome",desc:"Decode a binary syndrome against an explicit or family-derived parity-check matrix. Fails unless H c = s (mod 2) (Theorem 1).",required:["syndrome"],optional:["family","size","decoder_name","n_qubits"],returns:"family, size, decoder, backend_used, qector_version, n_checks, n_qubits, syndrome, correction, hamming_weight, syndrome_valid, latency_us"},{name:"decode_single",desc:"Run one seeded code-capacity decode with Theorems 1 and 2 checks. Logical outcomes are coset-scored, not raw correction-equality.",required:[],optional:["family","distance","decoder_name","error_rate","seed"],returns:"family, distance, decoder, backend_used, qector_version, error_rate, seed, n_qubits, n_checks, error, syndrome, correction, error_weight, correction_weight, syndrome_valid, logical_failure, logical_scoring, latency_us"},{name:"threshold_sweep",desc:"Run a code-capacity LER sweep with Wilson 95% intervals and a hashed raw JSON artifact. Not comparable with circuit_level results.",required:[],optional:["family","distances","error_rates","trials","seed","decoder_name","artifact_path"],returns:"family, decoder, qector_version, results (per-point LER + Wilson interval), artifact (path, sha256, metadata), caveat"},{name:"build_code_from_matrix",desc:"Validate and build a binary (n_checks, n_qubits) parity-check matrix for arbitrary CSS/graph codes.",required:["H_matrix"],optional:["family","distance"],returns:"family, distance, matrix_shape, rank, n_checks, n_qubits, logical_observables, graphlike, code_built, qector_version, reference_manual"},{name:"compat_report",desc:"Report live package compatibility and Provisional-surface boundaries (library stdio MCP vs upstream network/batch-GPU/OpenCL surfaces).",required:[],optional:[],returns:"runtime_ok, qector_decoder_v3 (installed, version, expected), numpy, mcp_sdk, pymatching_compat, reference_manual, provisional_surfaces"}],d=[{name:"repetition",desc:"Open 1D chain parity-check code"},{name:"ring",desc:"Periodic ring code"},{name:"surface_legacy",desc:"Legacy toric weight-4 generator; NOT graphlike"},{name:"rotated_surface",desc:"Graphlike rotated surface code"},{name:"unrotated_surface",desc:"Graphlike square-lattice surface code"},{name:"toric",desc:"Graphlike toric code with periodic boundaries"},{name:"heavy_hex",desc:"Graphlike heavy-hex code"},{name:"color_code",desc:"Color code family exposed by the wheel"},{name:"hypergraph_product",desc:"CSS code from two parity-check matrices (requires build_code_from_matrix)"}],l=[{name:"union_find",type:"Graphlike",desc:"Standard cluster-growth Union-Find decoder."},{name:"fast_union_find",type:"Graphlike",desc:"Faster approximate Union-Find variant."},{name:"blossom",type:"Universal",desc:"Weight-optimal exact MWPM matching."},{name:"sparse_blossom",type:"Graphlike",desc:"Region-growing blossom variant for sparse error graphs."},{name:"native_auto",type:"Auto",desc:"Self-selecting heuristic selector (blossom for graphlike, BP-OSD for hypergraph-product)."}],m=`{ - "mcpServers": { - "qector": { - "command": "python", - "args": ["\${CLAUDE_PLUGIN_ROOT}/mcp/mcp_server_library.py"] - } - } -}`,x=`{ - "jsonrpc": "2.0", - "id": 1, - "method": "tools/call", - "params": { - "name": "decode_single", - "arguments": { - "family": "rotated_surface", - "distance": 5, - "decoder_name": "blossom", - "error_rate": 0.05, - "seed": 42 - } - } -}`,h=`{ - "jsonrpc": "2.0", - "id": 1, - "result": { - "content": [{ - "type": "text", - "text": "{\\n \\"family\\": \\"rotated_surface\\",\\n \\"distance\\": 5,\\n \\"decoder\\": \\"blossom\\",\\n \\"syndrome_valid\\": true,\\n \\"logical_scoring\\": \\"logical-observable matrix (Theorem 2)\\",\\n \\"logical_failure\\": false\\n}" - }] - } -}`;function v(){return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Library MCP Server · QECTOR Decoder v3 v1.0.0",description:"App-free Model Context Protocol server for quantum error correction decoding. 8 verified local stdio JSON-RPC 2.0 tools across 9 code families and 5 stable decoders. Ships as a local library; no Workbench or GUI required."}),e.jsx(i,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Library MCP Server",applicationCategory:"DeveloperApplication",operatingSystem:"Windows, macOS, Linux",description:"Local stdio Model Context Protocol server exposing 8 QEC decoding tools. Designed for local stdio use."}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Local stdio · JSON-RPC 2.0 · Protocol 2024-11-05 · qector-decoder-v3 1.0.0"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(o,{text:"Library MCP Server",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["The app-free, library-only MCP server: eight tools covering Union-Find, exact Blossom MWPM, SparseBlossom, and the auto router, with syndrome validation against",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "})," and coset-scored logical outcomes. Runs on ",e.jsx("code",{className:"text-cyan-300",children:"qector-decoder-v3==1.0.0"})," with",e.jsx("code",{className:"text-cyan-300",children:"mcp==1.26.0"}),"; no Workbench or GUI needed. Ships in the",e.jsx("code",{className:"text-cyan-300",children:"qector-claude-plugin"})," repository."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Documentation"}),e.jsx(a,{to:"/workbench",className:"btn-outline",children:"Workbench vs library"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6",children:"Design principles"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[{t:"Deterministic, not generated",d:"The assistant calls a decoder; it does not invent a correction. Results are reproducible and syndrome-faithful."},{t:"Runs locally",d:"Local stdio JSON-RPC. Syndromes are processed locally on the host machine; this library server includes no telemetry."},{t:"App-free",d:"Runs on the published qector-decoder-v3==1.0.0 wheel and ships in the qector-claude-plugin repository. No QECTOR Workbench, no GUI, no desktop application required."}].map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:s.t}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.d})]},s.t))}),e.jsxs("div",{className:"card-surface border border-cyan-800/60 bg-gradient-to-r from-cyan-950/40 via-surface to-cyan-950/20 p-6 rounded-2xl flex flex-col md:flex-row items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("span",{className:"inline-block px-2.5 py-0.5 rounded text-[11px] font-mono font-semibold bg-cyan-400 text-slate-950 mb-2",children:"CLAUDE PLUGIN"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-1",children:"Looking for the full Claude Code Plugin?"}),e.jsx("p",{className:"text-slate-300 text-sm leading-relaxed",children:"The Claude Plugin v1.0.6 includes 28 skills, 11 slash commands, 5 agents, and four local MCP servers: 8 stable library tools, 29 opt-in research tools, 3 opt-in admin tools, and a safe Desktop profile. Workbench v1.0.7 remains the largest desktop surface with 85 tools on Windows and Linux."})]}),e.jsx(a,{to:"/claude-plugin",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all whitespace-nowrap shadow-lg shadow-cyan-400/20",children:"Explore Claude Plugin →"})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Connect a client"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["The server speaks JSON-RPC 2.0 over local stdio and identifies itself as",e.jsx("code",{className:"text-cyan-300",children:" qector-decoder-v3-mcp "}),". Add it to Claude Code, Claude Desktop, or any MCP client:"]}),e.jsx(t,{language:"json",code:m}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["In Claude Code, root ",e.jsx("code",{className:"text-cyan-300",children:".mcp.json"})," already references this server via ",e.jsxs("code",{className:"text-cyan-300",children:["$","${CLAUDE_PLUGIN_ROOT}"]}),". Validate with",e.jsx("code",{className:"text-cyan-300",children:' claude plugin validate "" --strict '}),"."]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"8 Tools"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Returned verbatim by ",e.jsx("code",{className:"text-cyan-300",children:"tools/list"}),". The schema is enforced as fail-closed JSON; malformed or resource-exceeding input returns an MCP",e.jsx("code",{className:"text-cyan-300",children:" isError "})," result without leaking tracebacks."]}),e.jsx("div",{className:"space-y-4",children:n.map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("div",{className:"flex flex-wrap items-baseline gap-3 mb-2",children:e.jsx("code",{className:"text-cyan-300 font-semibold text-base",children:s.name})}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:s.desc}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Required"}),e.jsx("div",{className:"text-secondary",children:s.required.length?s.required.map(r=>e.jsx("code",{className:"text-cyan-300 mr-2",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Optional"}),e.jsx("div",{className:"text-secondary",children:s.optional.length?s.optional.map(r=>e.jsx("code",{className:"text-muted-foreground mr-2",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Returns"}),e.jsx("div",{className:"text-secondary",children:s.returns})]})]})]},s.name))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Code families & decoders"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Nine code families (graphlike eligible where marked; non-graphlike inputs route to BP-OSD or require ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "}),") and five stable decoders. No universal benchmark figures are published on the site; run the shipped harness to measure your own hardware."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:d.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("span",{className:"text-cyan-300 font-mono font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1 font-mono",children:["→ ",s.desc]})]},s.name))}),e.jsx("div",{className:"mt-4 overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-2 px-3",children:"Decoder"}),e.jsx("th",{className:"py-2 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-2 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:l.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-2 px-3 font-mono font-semibold text-primary",children:s.name}),e.jsx("td",{className:"py-2 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-2 px-3 text-secondary text-xs",children:s.desc})]},s.name))})]})})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Example call"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:[e.jsx("code",{className:"text-cyan-300",children:" decode_single "})," runs one seeded code-capacity decode with Theorems 1 and 2 enforcement, then returns syndrome_valid and logical_scoring fields."]}),e.jsx(t,{language:"json",code:x}),e.jsx("p",{className:"text-secondary text-sm mt-5 mb-3",children:"Response:"}),e.jsx(t,{language:"json",code:h}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["Tool results are returned as MCP text content containing the JSON payload, per the 2024-11-05 content convention. The ",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "}),"check is enforced before any logical scoring; a failed check raises an MCP error instead of returning a result."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Operational guidance"}),e.jsxs("ul",{className:"space-y-3 text-secondary text-sm leading-relaxed list-disc pl-5 marker:text-cyan-300/60",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Local only."})," The supported transport is local stdio. Network surfaces (REST/gRPC/metrics/SSE) and batch-GPU paths are Provisional and require separate deployment review; they are not part of this public library contract."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Graphlike guard."})," Exact Blossom and SparseBlossom decoders require graphlike check structures (qubit participation ≤ 2). For hyperedge matrices such as ",e.jsx("code",{className:"text-cyan-300",children:" generate_surface_code_checks "}),", use ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "})," or decompose via the documented direct-wheel APIs."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"LER is coset-scored."})," Logical outcomes use the logical coset, never raw correction-vector equality. Wilson 95% intervals and a ",e.jsx("code",{className:"text-cyan-300",children:" code_capacity "})," tag are included; do not compare with ",e.jsx("code",{className:"text-cyan-300",children:" circuit_level "})," results."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Artifacts stay local."})," ",e.jsx("code",{className:"text-cyan-300",children:" threshold_sweep "})," writes a hashed raw JSON artifact with required metadata. Generated artifacts belong outside the plugin and must not be uploaded to external services."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Licensing."})," See ",e.jsx(a,{to:"/pricing",className:"text-cyan-300",children:"Pricing"})," for license-key installation and tier information returned by ",e.jsx("code",{className:"text-cyan-300",children:" get_license_info "}),"."]})]})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(a,{to:"/pricing",className:"btn-cyan",children:"View licensing"})})]})})]})}export{v as default}; diff --git a/assets/McpServer-DVGceqba.js b/assets/McpServer-DVGceqba.js deleted file mode 100644 index c6bf3b72..00000000 --- a/assets/McpServer-DVGceqba.js +++ /dev/null @@ -1,31 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,J as i,C as t}from"./index-B9kEGiWi.js";import{N as o}from"./NeuralReveal-BflyZYSb.js";import{L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const n=[{name:"list_code_families",desc:"List the code families available in qector-decoder-v3 1.0.0 with their live availability and graphlike eligibility.",required:[],optional:[],returns:'families map (generator, code_factory, available, description, single_decode), reference_manual DOI, qector_version "1.0.0"'},{name:"list_decoders",desc:"List the five stable decoder classes exposed by the wheel: union_find, fast_union_find, blossom, sparse_blossom, native_auto.",required:[],optional:[],returns:'decoders map (class, status: "stable"), reference_manual DOI'},{name:"get_license_info",desc:"Read the live offline QECTOR license tier and feature gates from the installed wheel.",required:[],optional:[],returns:"license info object, qector_version, reference_manual DOI"},{name:"decode_syndrome",desc:"Decode a binary syndrome against an explicit or family-derived parity-check matrix. Fails unless H c = s (mod 2) (Theorem 1).",required:["syndrome"],optional:["family","size","decoder_name","n_qubits"],returns:"family, size, decoder, backend_used, qector_version, n_checks, n_qubits, syndrome, correction, hamming_weight, syndrome_valid, latency_us"},{name:"decode_single",desc:"Run one seeded code-capacity decode with Theorems 1 and 2 checks. Logical outcomes are coset-scored, not raw correction-equality.",required:[],optional:["family","distance","decoder_name","error_rate","seed"],returns:"family, distance, decoder, backend_used, qector_version, error_rate, seed, n_qubits, n_checks, error, syndrome, correction, error_weight, correction_weight, syndrome_valid, logical_failure, logical_scoring, latency_us"},{name:"threshold_sweep",desc:"Run a code-capacity LER sweep with Wilson 95% intervals and a hashed raw JSON artifact. Not comparable with circuit_level results.",required:[],optional:["family","distances","error_rates","trials","seed","decoder_name","artifact_path"],returns:"family, decoder, qector_version, results (per-point LER + Wilson interval), artifact (path, sha256, metadata), caveat"},{name:"build_code_from_matrix",desc:"Validate and build a binary (n_checks, n_qubits) parity-check matrix for arbitrary CSS/graph codes.",required:["H_matrix"],optional:["family","distance"],returns:"family, distance, matrix_shape, rank, n_checks, n_qubits, logical_observables, graphlike, code_built, qector_version, reference_manual"},{name:"compat_report",desc:"Report live package compatibility and Provisional-surface boundaries (library stdio MCP vs upstream network/batch-GPU/OpenCL surfaces).",required:[],optional:[],returns:"runtime_ok, qector_decoder_v3 (installed, version, expected), numpy, mcp_sdk, pymatching_compat, reference_manual, provisional_surfaces"}],d=[{name:"repetition",desc:"Open 1D chain parity-check code"},{name:"ring",desc:"Periodic ring code"},{name:"surface_legacy",desc:"Legacy toric weight-4 generator; NOT graphlike"},{name:"rotated_surface",desc:"Graphlike rotated surface code"},{name:"unrotated_surface",desc:"Graphlike square-lattice surface code"},{name:"toric",desc:"Graphlike toric code with periodic boundaries"},{name:"heavy_hex",desc:"Graphlike heavy-hex code"},{name:"color_code",desc:"Color code family exposed by the wheel"},{name:"hypergraph_product",desc:"CSS code from two parity-check matrices (requires build_code_from_matrix)"}],l=[{name:"union_find",type:"Graphlike",desc:"Standard cluster-growth Union-Find decoder."},{name:"fast_union_find",type:"Graphlike",desc:"Faster approximate Union-Find variant."},{name:"blossom",type:"Universal",desc:"Weight-optimal exact MWPM matching."},{name:"sparse_blossom",type:"Graphlike",desc:"Region-growing blossom variant for sparse error graphs."},{name:"native_auto",type:"Auto",desc:"Self-selecting heuristic selector (blossom for graphlike, BP-OSD for hypergraph-product)."}],m=`{ - "mcpServers": { - "qector": { - "command": "python", - "args": ["\${CLAUDE_PLUGIN_ROOT}/mcp/mcp_server_library.py"] - } - } -}`,x=`{ - "jsonrpc": "2.0", - "id": 1, - "method": "tools/call", - "params": { - "name": "decode_single", - "arguments": { - "family": "rotated_surface", - "distance": 5, - "decoder_name": "blossom", - "error_rate": 0.05, - "seed": 42 - } - } -}`,h=`{ - "jsonrpc": "2.0", - "id": 1, - "result": { - "content": [{ - "type": "text", - "text": "{\\n \\"family\\": \\"rotated_surface\\",\\n \\"distance\\": 5,\\n \\"decoder\\": \\"blossom\\",\\n \\"syndrome_valid\\": true,\\n \\"logical_scoring\\": \\"logical-observable matrix (Theorem 2)\\",\\n \\"logical_failure\\": false\\n}" - }] - } -}`;function v(){return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Library MCP Server · QECTOR Decoder v3 v1.0.0",description:"App-free Model Context Protocol server for quantum error correction decoding. 8 verified local stdio JSON-RPC 2.0 tools across 9 code families and 5 stable decoders. Ships as a local library; no Workbench or GUI required."}),e.jsx(i,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Library MCP Server",applicationCategory:"DeveloperApplication",operatingSystem:"Windows, macOS, Linux",description:"Local stdio Model Context Protocol server exposing 8 QEC decoding tools. Designed for local stdio use."}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Local stdio · JSON-RPC 2.0 · Protocol 2024-11-05 · qector-decoder-v3 1.0.0"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(o,{text:"Library MCP Server",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["The app-free, library-only MCP server: eight tools covering Union-Find, exact Blossom MWPM, SparseBlossom, and the auto router, with syndrome validation against",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "})," and coset-scored logical outcomes. Runs on ",e.jsx("code",{className:"text-cyan-300",children:"qector-decoder-v3==1.0.0"})," with",e.jsx("code",{className:"text-cyan-300",children:"mcp==1.26.0"}),"; no Workbench or GUI needed. Ships in the",e.jsx("code",{className:"text-cyan-300",children:"qector-claude-plugin"})," repository."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Documentation"}),e.jsx(a,{to:"/workbench",className:"btn-outline",children:"Workbench vs library"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6",children:"Design principles"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[{t:"Deterministic, not generated",d:"The assistant calls a decoder; it does not invent a correction. Results are reproducible and syndrome-faithful."},{t:"Runs locally",d:"Local stdio JSON-RPC. Syndromes are processed locally on the host machine; this library server includes no telemetry."},{t:"App-free",d:"Runs on the published qector-decoder-v3==1.0.0 wheel and ships in the qector-claude-plugin repository. No QECTOR Workbench, no GUI, no desktop application required."}].map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:s.t}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.d})]},s.t))}),e.jsxs("div",{className:"card-surface border border-cyan-800/60 bg-gradient-to-r from-cyan-950/40 via-surface to-cyan-950/20 p-6 rounded-2xl flex flex-col md:flex-row items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("span",{className:"inline-block px-2.5 py-0.5 rounded text-[11px] font-mono font-semibold bg-cyan-400 text-slate-950 mb-2",children:"CLAUDE PLUGIN"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-1",children:"Looking for the full Claude Code Plugin?"}),e.jsx("p",{className:"text-slate-300 text-sm leading-relaxed",children:"The Claude Plugin v1.0.6 includes 28 skills, 11 slash commands, 5 agents, and four local MCP servers: 8 stable library tools, 29 opt-in research tools, 3 opt-in admin tools, and a safe Desktop profile. Workbench v1.0.7 remains the largest desktop surface with 85 tools on Windows and Linux."})]}),e.jsx(a,{to:"/claude-plugin",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all whitespace-nowrap shadow-lg shadow-cyan-400/20",children:"Explore Claude Plugin →"})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Connect a client"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["The server speaks JSON-RPC 2.0 over local stdio and identifies itself as",e.jsx("code",{className:"text-cyan-300",children:" qector-decoder-v3-mcp "}),". Add it to Claude Code, Claude Desktop, or any MCP client:"]}),e.jsx(t,{language:"json",code:m}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["In Claude Code, root ",e.jsx("code",{className:"text-cyan-300",children:".mcp.json"})," already references this server via ",e.jsxs("code",{className:"text-cyan-300",children:["$","${CLAUDE_PLUGIN_ROOT}"]}),". Validate with",e.jsx("code",{className:"text-cyan-300",children:' claude plugin validate "" --strict '}),"."]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"8 Tools"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Returned verbatim by ",e.jsx("code",{className:"text-cyan-300",children:"tools/list"}),". The schema is enforced as fail-closed JSON; malformed or resource-exceeding input returns an MCP",e.jsx("code",{className:"text-cyan-300",children:" isError "})," result without leaking tracebacks."]}),e.jsx("div",{className:"space-y-4",children:n.map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("div",{className:"flex flex-wrap items-baseline gap-3 mb-2",children:e.jsx("code",{className:"text-cyan-300 font-semibold text-base",children:s.name})}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:s.desc}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Required"}),e.jsx("div",{className:"text-secondary",children:s.required.length?s.required.map(r=>e.jsx("code",{className:"text-cyan-300 mr-2",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Optional"}),e.jsx("div",{className:"text-secondary",children:s.optional.length?s.optional.map(r=>e.jsx("code",{className:"text-muted-foreground mr-2",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Returns"}),e.jsx("div",{className:"text-secondary",children:s.returns})]})]})]},s.name))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Code families & decoders"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Nine code families (graphlike eligible where marked; non-graphlike inputs route to BP-OSD or require ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "}),") and five stable decoders. No universal benchmark figures are published on the site; run the shipped harness to measure your own hardware."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:d.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("span",{className:"text-cyan-300 font-mono font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1 font-mono",children:["→ ",s.desc]})]},s.name))}),e.jsx("div",{className:"mt-4 overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-2 px-3",children:"Decoder"}),e.jsx("th",{className:"py-2 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-2 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:l.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-2 px-3 font-mono font-semibold text-primary",children:s.name}),e.jsx("td",{className:"py-2 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-2 px-3 text-secondary text-xs",children:s.desc})]},s.name))})]})})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Example call"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:[e.jsx("code",{className:"text-cyan-300",children:" decode_single "})," runs one seeded code-capacity decode with Theorems 1 and 2 enforcement, then returns syndrome_valid and logical_scoring fields."]}),e.jsx(t,{language:"json",code:x}),e.jsx("p",{className:"text-secondary text-sm mt-5 mb-3",children:"Response:"}),e.jsx(t,{language:"json",code:h}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["Tool results are returned as MCP text content containing the JSON payload, per the 2024-11-05 content convention. The ",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "}),"check is enforced before any logical scoring; a failed check raises an MCP error instead of returning a result."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Operational guidance"}),e.jsxs("ul",{className:"space-y-3 text-secondary text-sm leading-relaxed list-disc pl-5 marker:text-cyan-300/60",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Local only."})," The supported transport is local stdio. Network surfaces (REST/gRPC/metrics/SSE) and batch-GPU paths are Provisional and require separate deployment review; they are not part of this public library contract."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Graphlike guard."})," Exact Blossom and SparseBlossom decoders require graphlike check structures (qubit participation ≤ 2). For hyperedge matrices such as ",e.jsx("code",{className:"text-cyan-300",children:" generate_surface_code_checks "}),", use ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "})," or decompose via the documented direct-wheel APIs."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"LER is coset-scored."})," Logical outcomes use the logical coset, never raw correction-vector equality. Wilson 95% intervals and a ",e.jsx("code",{className:"text-cyan-300",children:" code_capacity "})," tag are included; do not compare with ",e.jsx("code",{className:"text-cyan-300",children:" circuit_level "})," results."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Artifacts stay local."})," ",e.jsx("code",{className:"text-cyan-300",children:" threshold_sweep "})," writes a hashed raw JSON artifact with required metadata. Generated artifacts belong outside the plugin and must not be uploaded to external services."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Licensing."})," See ",e.jsx(a,{to:"/pricing",className:"text-cyan-300",children:"Pricing"})," for license-key installation and tier information returned by ",e.jsx("code",{className:"text-cyan-300",children:" get_license_info "}),"."]})]})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(a,{to:"/pricing",className:"btn-cyan",children:"View licensing"})})]})})]})}export{v as default}; diff --git a/assets/McpServer-DVuNiJfI.js b/assets/McpServer-DVuNiJfI.js deleted file mode 100644 index 41f83cb0..00000000 --- a/assets/McpServer-DVuNiJfI.js +++ /dev/null @@ -1,31 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,J as i,L as a,C as t}from"./index-CcwlvHYJ.js";import{N as n}from"./NeuralReveal-Bsl9IGCr.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";const o=[{name:"list_code_families",desc:"List the code families available in qector-decoder-v3 1.0.1 with their live availability and graphlike eligibility.",required:[],optional:[],returns:'families map (generator, code_factory, available, description, single_decode), reference_manual DOI, qector_version "1.0.1"'},{name:"list_decoders",desc:"List the five stable decoder classes exposed by the wheel: union_find, fast_union_find, blossom, sparse_blossom, native_auto.",required:[],optional:[],returns:'decoders map (class, status: "stable"), reference_manual DOI'},{name:"get_license_info",desc:"Read the live offline QECTOR license tier and feature gates from the installed wheel.",required:[],optional:[],returns:"license info object, qector_version, reference_manual DOI"},{name:"decode_syndrome",desc:"Decode a binary syndrome against an explicit or family-derived parity-check matrix. Fails unless H c = s (mod 2) (Theorem 1).",required:["syndrome"],optional:["family","size","decoder_name","n_qubits"],returns:"family, size, decoder, backend_used, qector_version, n_checks, n_qubits, syndrome, correction, hamming_weight, syndrome_valid, latency_us"},{name:"decode_single",desc:"Run one seeded code-capacity decode with Theorems 1 and 2 checks. Logical outcomes are coset-scored, not raw correction-equality.",required:[],optional:["family","distance","decoder_name","error_rate","seed"],returns:"family, distance, decoder, backend_used, qector_version, error_rate, seed, n_qubits, n_checks, error, syndrome, correction, error_weight, correction_weight, syndrome_valid, logical_failure, logical_scoring, latency_us"},{name:"threshold_sweep",desc:"Run a code-capacity LER sweep with Wilson 95% intervals and a hashed raw JSON artifact. Not comparable with circuit_level results.",required:[],optional:["family","distances","error_rates","trials","seed","decoder_name","artifact_path"],returns:"family, decoder, qector_version, results (per-point LER + Wilson interval), artifact (path, sha256, metadata), caveat"},{name:"build_code_from_matrix",desc:"Validate and build a binary (n_checks, n_qubits) parity-check matrix for arbitrary CSS/graph codes.",required:["H_matrix"],optional:["family","distance"],returns:"family, distance, matrix_shape, rank, n_checks, n_qubits, logical_observables, graphlike, code_built, qector_version, reference_manual"},{name:"compat_report",desc:"Report live package compatibility and Provisional-surface boundaries (library stdio MCP vs upstream network/batch-GPU/OpenCL surfaces).",required:[],optional:[],returns:"runtime_ok, qector_decoder_v3 (installed, version, expected), numpy, mcp_sdk, pymatching_compat, reference_manual, provisional_surfaces"}],d=[{name:"repetition",desc:"Open 1D chain parity-check code"},{name:"ring",desc:"Periodic ring code"},{name:"surface_legacy",desc:"Legacy toric weight-4 generator; NOT graphlike"},{name:"rotated_surface",desc:"Graphlike rotated surface code"},{name:"unrotated_surface",desc:"Graphlike square-lattice surface code"},{name:"toric",desc:"Graphlike toric code with periodic boundaries"},{name:"heavy_hex",desc:"Graphlike heavy-hex code"},{name:"color_code",desc:"Color code family exposed by the wheel"},{name:"hypergraph_product",desc:"CSS code from two parity-check matrices (requires build_code_from_matrix)"}],l=[{name:"union_find",type:"Graphlike",desc:"Standard cluster-growth Union-Find decoder."},{name:"fast_union_find",type:"Graphlike",desc:"Faster approximate Union-Find variant."},{name:"blossom",type:"Universal",desc:"Weight-optimal exact MWPM matching."},{name:"sparse_blossom",type:"Graphlike",desc:"Region-growing blossom variant for sparse error graphs."},{name:"native_auto",type:"Auto",desc:"Self-selecting heuristic selector (blossom for graphlike, BP-OSD for hypergraph-product)."}],m=`{ - "mcpServers": { - "qector": { - "command": "python", - "args": ["\${CLAUDE_PLUGIN_ROOT}/mcp/mcp_server_library.py"] - } - } -}`,x=`{ - "jsonrpc": "2.0", - "id": 1, - "method": "tools/call", - "params": { - "name": "decode_single", - "arguments": { - "family": "rotated_surface", - "distance": 5, - "decoder_name": "blossom", - "error_rate": 0.05, - "seed": 42 - } - } -}`,h=`{ - "jsonrpc": "2.0", - "id": 1, - "result": { - "content": [{ - "type": "text", - "text": "{\\n \\"family\\": \\"rotated_surface\\",\\n \\"distance\\": 5,\\n \\"decoder\\": \\"blossom\\",\\n \\"syndrome_valid\\": true,\\n \\"logical_scoring\\": \\"logical-observable matrix (Theorem 2)\\",\\n \\"logical_failure\\": false\\n}" - }] - } -}`;function b(){return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Library MCP Server · QECTOR Decoder v3 v1.0.1",description:"App-free Model Context Protocol server for quantum error correction decoding. 8 verified local stdio JSON-RPC 2.0 tools across 9 code families and 5 stable decoders. Ships as a local library; no Workbench or GUI required."}),e.jsx(i,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Library MCP Server",applicationCategory:"DeveloperApplication",operatingSystem:"Windows, macOS, Linux",description:"Local stdio Model Context Protocol server exposing 8 QEC decoding tools. Designed for local stdio use."}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Local stdio · JSON-RPC 2.0 · Protocol 2024-11-05 · qector-decoder-v3 1.0.1"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(n,{text:"Library MCP Server",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["The app-free, library-only MCP server: eight tools covering Union-Find, exact Blossom MWPM, SparseBlossom, and the auto router, with syndrome validation against",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "})," and coset-scored logical outcomes. Runs on ",e.jsx("code",{className:"text-cyan-300",children:"qector-decoder-v3 1.0.x"})," with",e.jsx("code",{className:"text-cyan-300",children:"mcp>=1.30,<3"}),"; no Workbench or GUI needed. Ships in the",e.jsx("code",{className:"text-cyan-300",children:"qector-claude-plugin"})," repository."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Documentation"}),e.jsx(a,{to:"/workbench",className:"btn-outline",children:"Workbench vs library"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6",children:"Design principles"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[{t:"Deterministic, not generated",d:"The assistant calls a decoder; it does not invent a correction. Results are reproducible and syndrome-faithful."},{t:"Runs locally",d:"Local stdio JSON-RPC. Syndromes are processed locally on the host machine; this library server includes no telemetry."},{t:"App-free",d:"Runs on the published qector-decoder-v3 1.0.x wheel and ships in the qector-claude-plugin repository. No QECTOR Workbench, no GUI, no desktop application required."}].map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:s.t}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.d})]},s.t))}),e.jsxs("div",{className:"card-surface border border-cyan-800/60 bg-gradient-to-r from-cyan-950/40 via-surface to-cyan-950/20 p-6 rounded-2xl flex flex-col md:flex-row items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("span",{className:"inline-block px-2.5 py-0.5 rounded text-[11px] font-mono font-semibold bg-cyan-400 text-slate-950 mb-2",children:"CLAUDE PLUGIN"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-1",children:"Looking for the full Claude Code Plugin?"}),e.jsx("p",{className:"text-slate-300 text-sm leading-relaxed",children:"The Claude Plugin v2.0.1 includes 28 skills, 11 slash commands and 5 agents. Its default qector-secure server exposes 12 schema-validated tools and runs air-gapped; 29 research tools and 3 admin tools are opt-in. Workbench v1.0.7 remains the largest desktop surface with 85 tools on Windows and Linux."})]}),e.jsx(a,{to:"/claude-plugin",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all whitespace-nowrap shadow-lg shadow-cyan-400/20",children:"Explore Claude Plugin →"})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Connect a client"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["The server speaks JSON-RPC 2.0 over local stdio and identifies itself as",e.jsx("code",{className:"text-cyan-300",children:" qector-decoder-v3-mcp "}),". Add it to Claude Code, Claude Desktop, or any MCP client:"]}),e.jsx(t,{language:"json",code:m}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["In Claude Code, root ",e.jsx("code",{className:"text-cyan-300",children:".mcp.json"})," already references this server via ",e.jsxs("code",{className:"text-cyan-300",children:["$","${CLAUDE_PLUGIN_ROOT}"]}),". Validate with",e.jsx("code",{className:"text-cyan-300",children:' claude plugin validate "" --strict '}),"."]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"8 Tools"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Returned verbatim by ",e.jsx("code",{className:"text-cyan-300",children:"tools/list"}),". The schema is enforced as fail-closed JSON; malformed or resource-exceeding input returns an MCP",e.jsx("code",{className:"text-cyan-300",children:" isError "})," result without leaking tracebacks."]}),e.jsx("div",{className:"space-y-4",children:o.map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("div",{className:"flex flex-wrap items-baseline gap-3 mb-2",children:e.jsx("code",{className:"text-cyan-300 font-semibold text-base",children:s.name})}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:s.desc}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Required"}),e.jsx("div",{className:"text-secondary flex flex-wrap gap-x-2 gap-y-1",children:s.required.length?s.required.map(r=>e.jsx("code",{className:"text-cyan-300 mr-2",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Optional"}),e.jsx("div",{className:"text-secondary flex flex-wrap gap-x-2 gap-y-1",children:s.optional.length?s.optional.map(r=>e.jsx("code",{className:"text-muted-foreground",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Returns"}),e.jsx("div",{className:"text-secondary",children:s.returns})]})]})]},s.name))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Code families & decoders"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Nine code families (graphlike eligible where marked; non-graphlike inputs route to BP-OSD or require ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "}),") and five stable decoders. No universal benchmark figures are published on the site; run the shipped harness to measure your own hardware."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:d.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("span",{className:"text-cyan-300 font-mono font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1 font-mono",children:["→ ",s.desc]})]},s.name))}),e.jsx("div",{className:"mt-4 overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-2 px-3",children:"Decoder"}),e.jsx("th",{className:"py-2 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-2 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:l.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-2 px-3 font-mono font-semibold text-primary",children:s.name}),e.jsx("td",{className:"py-2 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-2 px-3 text-secondary text-xs",children:s.desc})]},s.name))})]})})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Example call"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:[e.jsx("code",{className:"text-cyan-300",children:" decode_single "})," runs one seeded code-capacity decode with Theorems 1 and 2 enforcement, then returns syndrome_valid and logical_scoring fields."]}),e.jsx(t,{language:"json",code:x}),e.jsx("p",{className:"text-secondary text-sm mt-5 mb-3",children:"Response:"}),e.jsx(t,{language:"json",code:h}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["Tool results are returned as MCP text content containing the JSON payload, per the 2024-11-05 content convention. The ",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "}),"check is enforced before any logical scoring; a failed check raises an MCP error instead of returning a result."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Operational guidance"}),e.jsxs("ul",{className:"space-y-3 text-secondary text-sm leading-relaxed list-disc pl-5 marker:text-cyan-300/60",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Local only."})," The supported transport is local stdio. Network surfaces (REST/gRPC/metrics/SSE) and batch-GPU paths are Provisional and require separate deployment review; they are not part of this public library contract."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Graphlike guard."})," Exact Blossom and SparseBlossom decoders require graphlike check structures (qubit participation ≤ 2). For hyperedge matrices such as ",e.jsx("code",{className:"text-cyan-300",children:" generate_surface_code_checks "}),", use ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "})," or decompose via the documented direct-wheel APIs."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"LER is coset-scored."})," Logical outcomes use the logical coset, never raw correction-vector equality. Wilson 95% intervals and a ",e.jsx("code",{className:"text-cyan-300",children:" code_capacity "})," tag are included; do not compare with ",e.jsx("code",{className:"text-cyan-300",children:" circuit_level "})," results."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Artifacts stay local."})," ",e.jsx("code",{className:"text-cyan-300",children:" threshold_sweep "})," writes a hashed raw JSON artifact with required metadata. Generated artifacts belong outside the plugin and must not be uploaded to external services."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Licensing."})," See ",e.jsx(a,{to:"/pricing",className:"text-cyan-300",children:"Pricing"})," for license-key installation and tier information returned by ",e.jsx("code",{className:"text-cyan-300",children:" get_license_info "}),"."]})]})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(a,{to:"/pricing",className:"btn-cyan",children:"View licensing"})})]})})]})}export{b as default}; diff --git a/assets/McpServer-DYX0yvB3.js b/assets/McpServer-DYX0yvB3.js deleted file mode 100644 index 248ab8a3..00000000 --- a/assets/McpServer-DYX0yvB3.js +++ /dev/null @@ -1,31 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,J as i,C as t}from"./index-BUYYSLdX.js";import{N as o}from"./NeuralReveal-BflyZYSb.js";import{L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const n=[{name:"list_code_families",desc:"List the code families available in qector-decoder-v3 1.0.1 with their live availability and graphlike eligibility.",required:[],optional:[],returns:'families map (generator, code_factory, available, description, single_decode), reference_manual DOI, qector_version "1.0.1"'},{name:"list_decoders",desc:"List the five stable decoder classes exposed by the wheel: union_find, fast_union_find, blossom, sparse_blossom, native_auto.",required:[],optional:[],returns:'decoders map (class, status: "stable"), reference_manual DOI'},{name:"get_license_info",desc:"Read the live offline QECTOR license tier and feature gates from the installed wheel.",required:[],optional:[],returns:"license info object, qector_version, reference_manual DOI"},{name:"decode_syndrome",desc:"Decode a binary syndrome against an explicit or family-derived parity-check matrix. Fails unless H c = s (mod 2) (Theorem 1).",required:["syndrome"],optional:["family","size","decoder_name","n_qubits"],returns:"family, size, decoder, backend_used, qector_version, n_checks, n_qubits, syndrome, correction, hamming_weight, syndrome_valid, latency_us"},{name:"decode_single",desc:"Run one seeded code-capacity decode with Theorems 1 and 2 checks. Logical outcomes are coset-scored, not raw correction-equality.",required:[],optional:["family","distance","decoder_name","error_rate","seed"],returns:"family, distance, decoder, backend_used, qector_version, error_rate, seed, n_qubits, n_checks, error, syndrome, correction, error_weight, correction_weight, syndrome_valid, logical_failure, logical_scoring, latency_us"},{name:"threshold_sweep",desc:"Run a code-capacity LER sweep with Wilson 95% intervals and a hashed raw JSON artifact. Not comparable with circuit_level results.",required:[],optional:["family","distances","error_rates","trials","seed","decoder_name","artifact_path"],returns:"family, decoder, qector_version, results (per-point LER + Wilson interval), artifact (path, sha256, metadata), caveat"},{name:"build_code_from_matrix",desc:"Validate and build a binary (n_checks, n_qubits) parity-check matrix for arbitrary CSS/graph codes.",required:["H_matrix"],optional:["family","distance"],returns:"family, distance, matrix_shape, rank, n_checks, n_qubits, logical_observables, graphlike, code_built, qector_version, reference_manual"},{name:"compat_report",desc:"Report live package compatibility and Provisional-surface boundaries (library stdio MCP vs upstream network/batch-GPU/OpenCL surfaces).",required:[],optional:[],returns:"runtime_ok, qector_decoder_v3 (installed, version, expected), numpy, mcp_sdk, pymatching_compat, reference_manual, provisional_surfaces"}],d=[{name:"repetition",desc:"Open 1D chain parity-check code"},{name:"ring",desc:"Periodic ring code"},{name:"surface_legacy",desc:"Legacy toric weight-4 generator; NOT graphlike"},{name:"rotated_surface",desc:"Graphlike rotated surface code"},{name:"unrotated_surface",desc:"Graphlike square-lattice surface code"},{name:"toric",desc:"Graphlike toric code with periodic boundaries"},{name:"heavy_hex",desc:"Graphlike heavy-hex code"},{name:"color_code",desc:"Color code family exposed by the wheel"},{name:"hypergraph_product",desc:"CSS code from two parity-check matrices (requires build_code_from_matrix)"}],l=[{name:"union_find",type:"Graphlike",desc:"Standard cluster-growth Union-Find decoder."},{name:"fast_union_find",type:"Graphlike",desc:"Faster approximate Union-Find variant."},{name:"blossom",type:"Universal",desc:"Weight-optimal exact MWPM matching."},{name:"sparse_blossom",type:"Graphlike",desc:"Region-growing blossom variant for sparse error graphs."},{name:"native_auto",type:"Auto",desc:"Self-selecting heuristic selector (blossom for graphlike, BP-OSD for hypergraph-product)."}],m=`{ - "mcpServers": { - "qector": { - "command": "python", - "args": ["\${CLAUDE_PLUGIN_ROOT}/mcp/mcp_server_library.py"] - } - } -}`,x=`{ - "jsonrpc": "2.0", - "id": 1, - "method": "tools/call", - "params": { - "name": "decode_single", - "arguments": { - "family": "rotated_surface", - "distance": 5, - "decoder_name": "blossom", - "error_rate": 0.05, - "seed": 42 - } - } -}`,h=`{ - "jsonrpc": "2.0", - "id": 1, - "result": { - "content": [{ - "type": "text", - "text": "{\\n \\"family\\": \\"rotated_surface\\",\\n \\"distance\\": 5,\\n \\"decoder\\": \\"blossom\\",\\n \\"syndrome_valid\\": true,\\n \\"logical_scoring\\": \\"logical-observable matrix (Theorem 2)\\",\\n \\"logical_failure\\": false\\n}" - }] - } -}`;function v(){return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Library MCP Server · QECTOR Decoder v3 v1.0.1",description:"App-free Model Context Protocol server for quantum error correction decoding. 8 verified local stdio JSON-RPC 2.0 tools across 9 code families and 5 stable decoders. Ships as a local library; no Workbench or GUI required."}),e.jsx(i,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Library MCP Server",applicationCategory:"DeveloperApplication",operatingSystem:"Windows, macOS, Linux",description:"Local stdio Model Context Protocol server exposing 8 QEC decoding tools. Designed for local stdio use."}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Local stdio · JSON-RPC 2.0 · Protocol 2024-11-05 · qector-decoder-v3 1.0.1"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(o,{text:"Library MCP Server",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["The app-free, library-only MCP server: eight tools covering Union-Find, exact Blossom MWPM, SparseBlossom, and the auto router, with syndrome validation against",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "})," and coset-scored logical outcomes. Runs on ",e.jsx("code",{className:"text-cyan-300",children:"qector-decoder-v3 1.0.x"})," with",e.jsx("code",{className:"text-cyan-300",children:"mcp>=1.30,<3"}),"; no Workbench or GUI needed. Ships in the",e.jsx("code",{className:"text-cyan-300",children:"qector-claude-plugin"})," repository."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Documentation"}),e.jsx(a,{to:"/workbench",className:"btn-outline",children:"Workbench vs library"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6",children:"Design principles"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[{t:"Deterministic, not generated",d:"The assistant calls a decoder; it does not invent a correction. Results are reproducible and syndrome-faithful."},{t:"Runs locally",d:"Local stdio JSON-RPC. Syndromes are processed locally on the host machine; this library server includes no telemetry."},{t:"App-free",d:"Runs on the published qector-decoder-v3 1.0.x wheel and ships in the qector-claude-plugin repository. No QECTOR Workbench, no GUI, no desktop application required."}].map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:s.t}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.d})]},s.t))}),e.jsxs("div",{className:"card-surface border border-cyan-800/60 bg-gradient-to-r from-cyan-950/40 via-surface to-cyan-950/20 p-6 rounded-2xl flex flex-col md:flex-row items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("span",{className:"inline-block px-2.5 py-0.5 rounded text-[11px] font-mono font-semibold bg-cyan-400 text-slate-950 mb-2",children:"CLAUDE PLUGIN"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-1",children:"Looking for the full Claude Code Plugin?"}),e.jsx("p",{className:"text-slate-300 text-sm leading-relaxed",children:"The Claude Plugin v2.0.1 includes 28 skills, 11 slash commands and 5 agents. Its default qector-secure server exposes 12 schema-validated tools and runs air-gapped; 29 research tools and 3 admin tools are opt-in. Workbench v1.0.7 remains the largest desktop surface with 85 tools on Windows and Linux."})]}),e.jsx(a,{to:"/claude-plugin",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all whitespace-nowrap shadow-lg shadow-cyan-400/20",children:"Explore Claude Plugin →"})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Connect a client"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["The server speaks JSON-RPC 2.0 over local stdio and identifies itself as",e.jsx("code",{className:"text-cyan-300",children:" qector-decoder-v3-mcp "}),". Add it to Claude Code, Claude Desktop, or any MCP client:"]}),e.jsx(t,{language:"json",code:m}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["In Claude Code, root ",e.jsx("code",{className:"text-cyan-300",children:".mcp.json"})," already references this server via ",e.jsxs("code",{className:"text-cyan-300",children:["$","${CLAUDE_PLUGIN_ROOT}"]}),". Validate with",e.jsx("code",{className:"text-cyan-300",children:' claude plugin validate "" --strict '}),"."]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"8 Tools"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Returned verbatim by ",e.jsx("code",{className:"text-cyan-300",children:"tools/list"}),". The schema is enforced as fail-closed JSON; malformed or resource-exceeding input returns an MCP",e.jsx("code",{className:"text-cyan-300",children:" isError "})," result without leaking tracebacks."]}),e.jsx("div",{className:"space-y-4",children:n.map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("div",{className:"flex flex-wrap items-baseline gap-3 mb-2",children:e.jsx("code",{className:"text-cyan-300 font-semibold text-base",children:s.name})}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:s.desc}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Required"}),e.jsx("div",{className:"text-secondary",children:s.required.length?s.required.map(r=>e.jsx("code",{className:"text-cyan-300 mr-2",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Optional"}),e.jsx("div",{className:"text-secondary",children:s.optional.length?s.optional.map(r=>e.jsx("code",{className:"text-muted-foreground mr-2",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Returns"}),e.jsx("div",{className:"text-secondary",children:s.returns})]})]})]},s.name))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Code families & decoders"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Nine code families (graphlike eligible where marked; non-graphlike inputs route to BP-OSD or require ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "}),") and five stable decoders. No universal benchmark figures are published on the site; run the shipped harness to measure your own hardware."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:d.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("span",{className:"text-cyan-300 font-mono font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1 font-mono",children:["→ ",s.desc]})]},s.name))}),e.jsx("div",{className:"mt-4 overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-2 px-3",children:"Decoder"}),e.jsx("th",{className:"py-2 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-2 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:l.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-2 px-3 font-mono font-semibold text-primary",children:s.name}),e.jsx("td",{className:"py-2 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-2 px-3 text-secondary text-xs",children:s.desc})]},s.name))})]})})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Example call"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:[e.jsx("code",{className:"text-cyan-300",children:" decode_single "})," runs one seeded code-capacity decode with Theorems 1 and 2 enforcement, then returns syndrome_valid and logical_scoring fields."]}),e.jsx(t,{language:"json",code:x}),e.jsx("p",{className:"text-secondary text-sm mt-5 mb-3",children:"Response:"}),e.jsx(t,{language:"json",code:h}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["Tool results are returned as MCP text content containing the JSON payload, per the 2024-11-05 content convention. The ",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "}),"check is enforced before any logical scoring; a failed check raises an MCP error instead of returning a result."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Operational guidance"}),e.jsxs("ul",{className:"space-y-3 text-secondary text-sm leading-relaxed list-disc pl-5 marker:text-cyan-300/60",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Local only."})," The supported transport is local stdio. Network surfaces (REST/gRPC/metrics/SSE) and batch-GPU paths are Provisional and require separate deployment review; they are not part of this public library contract."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Graphlike guard."})," Exact Blossom and SparseBlossom decoders require graphlike check structures (qubit participation ≤ 2). For hyperedge matrices such as ",e.jsx("code",{className:"text-cyan-300",children:" generate_surface_code_checks "}),", use ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "})," or decompose via the documented direct-wheel APIs."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"LER is coset-scored."})," Logical outcomes use the logical coset, never raw correction-vector equality. Wilson 95% intervals and a ",e.jsx("code",{className:"text-cyan-300",children:" code_capacity "})," tag are included; do not compare with ",e.jsx("code",{className:"text-cyan-300",children:" circuit_level "})," results."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Artifacts stay local."})," ",e.jsx("code",{className:"text-cyan-300",children:" threshold_sweep "})," writes a hashed raw JSON artifact with required metadata. Generated artifacts belong outside the plugin and must not be uploaded to external services."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Licensing."})," See ",e.jsx(a,{to:"/pricing",className:"text-cyan-300",children:"Pricing"})," for license-key installation and tier information returned by ",e.jsx("code",{className:"text-cyan-300",children:" get_license_info "}),"."]})]})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(a,{to:"/pricing",className:"btn-cyan",children:"View licensing"})})]})})]})}export{v as default}; diff --git a/assets/McpServer-V-tQ2EEs.js b/assets/McpServer-V-tQ2EEs.js deleted file mode 100644 index 617a5734..00000000 --- a/assets/McpServer-V-tQ2EEs.js +++ /dev/null @@ -1,31 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,J as i,C as t}from"./index-DlmjLVYe.js";import{N as o}from"./NeuralReveal-BflyZYSb.js";import{L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const n=[{name:"list_code_families",desc:"List the code families available in qector-decoder-v3 1.0.0 with their live availability and graphlike eligibility.",required:[],optional:[],returns:'families map (generator, code_factory, available, description, single_decode), reference_manual DOI, qector_version "1.0.0"'},{name:"list_decoders",desc:"List the five stable decoder classes exposed by the wheel: union_find, fast_union_find, blossom, sparse_blossom, native_auto.",required:[],optional:[],returns:'decoders map (class, status: "stable"), reference_manual DOI'},{name:"get_license_info",desc:"Read the live offline QECTOR license tier and feature gates from the installed wheel.",required:[],optional:[],returns:"license info object, qector_version, reference_manual DOI"},{name:"decode_syndrome",desc:"Decode a binary syndrome against an explicit or family-derived parity-check matrix. Fails unless H c = s (mod 2) (Theorem 1).",required:["syndrome"],optional:["family","size","decoder_name","n_qubits"],returns:"family, size, decoder, backend_used, qector_version, n_checks, n_qubits, syndrome, correction, hamming_weight, syndrome_valid, latency_us"},{name:"decode_single",desc:"Run one seeded code-capacity decode with Theorems 1 and 2 checks. Logical outcomes are coset-scored, not raw correction-equality.",required:[],optional:["family","distance","decoder_name","error_rate","seed"],returns:"family, distance, decoder, backend_used, qector_version, error_rate, seed, n_qubits, n_checks, error, syndrome, correction, error_weight, correction_weight, syndrome_valid, logical_failure, logical_scoring, latency_us"},{name:"threshold_sweep",desc:"Run a code-capacity LER sweep with Wilson 95% intervals and a hashed raw JSON artifact. Not comparable with circuit_level results.",required:[],optional:["family","distances","error_rates","trials","seed","decoder_name","artifact_path"],returns:"family, decoder, qector_version, results (per-point LER + Wilson interval), artifact (path, sha256, metadata), caveat"},{name:"build_code_from_matrix",desc:"Validate and build a binary (n_checks, n_qubits) parity-check matrix for arbitrary CSS/graph codes.",required:["H_matrix"],optional:["family","distance"],returns:"family, distance, matrix_shape, rank, n_checks, n_qubits, logical_observables, graphlike, code_built, qector_version, reference_manual"},{name:"compat_report",desc:"Report live package compatibility and Provisional-surface boundaries (library stdio MCP vs upstream network/batch-GPU/OpenCL surfaces).",required:[],optional:[],returns:"runtime_ok, qector_decoder_v3 (installed, version, expected), numpy, mcp_sdk, pymatching_compat, reference_manual, provisional_surfaces"}],d=[{name:"repetition",desc:"Open 1D chain parity-check code"},{name:"ring",desc:"Periodic ring code"},{name:"surface_legacy",desc:"Legacy toric weight-4 generator; NOT graphlike"},{name:"rotated_surface",desc:"Graphlike rotated surface code"},{name:"unrotated_surface",desc:"Graphlike square-lattice surface code"},{name:"toric",desc:"Graphlike toric code with periodic boundaries"},{name:"heavy_hex",desc:"Graphlike heavy-hex code"},{name:"color_code",desc:"Color code family exposed by the wheel"},{name:"hypergraph_product",desc:"CSS code from two parity-check matrices (requires build_code_from_matrix)"}],l=[{name:"union_find",type:"Graphlike",desc:"Standard cluster-growth Union-Find decoder."},{name:"fast_union_find",type:"Graphlike",desc:"Faster approximate Union-Find variant."},{name:"blossom",type:"Universal",desc:"Weight-optimal exact MWPM matching."},{name:"sparse_blossom",type:"Graphlike",desc:"Region-growing blossom variant for sparse error graphs."},{name:"native_auto",type:"Auto",desc:"Self-selecting heuristic selector (blossom for graphlike, BP-OSD for hypergraph-product)."}],m=`{ - "mcpServers": { - "qector": { - "command": "python", - "args": ["\${CLAUDE_PLUGIN_ROOT}/mcp/mcp_server_library.py"] - } - } -}`,x=`{ - "jsonrpc": "2.0", - "id": 1, - "method": "tools/call", - "params": { - "name": "decode_single", - "arguments": { - "family": "rotated_surface", - "distance": 5, - "decoder_name": "blossom", - "error_rate": 0.05, - "seed": 42 - } - } -}`,h=`{ - "jsonrpc": "2.0", - "id": 1, - "result": { - "content": [{ - "type": "text", - "text": "{\\n \\"family\\": \\"rotated_surface\\",\\n \\"distance\\": 5,\\n \\"decoder\\": \\"blossom\\",\\n \\"syndrome_valid\\": true,\\n \\"logical_scoring\\": \\"logical-observable matrix (Theorem 2)\\",\\n \\"logical_failure\\": false\\n}" - }] - } -}`;function v(){return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Library MCP Server · QECTOR Decoder v3 v1.0.0",description:"App-free Model Context Protocol server for quantum error correction decoding. 8 verified local stdio JSON-RPC 2.0 tools across 9 code families and 5 stable decoders. Ships as a local library; no Workbench or GUI required."}),e.jsx(i,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Library MCP Server",applicationCategory:"DeveloperApplication",operatingSystem:"Windows, macOS, Linux",description:"Local stdio Model Context Protocol server exposing 8 QEC decoding tools. Designed for local stdio use."}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Local stdio · JSON-RPC 2.0 · Protocol 2024-11-05 · qector-decoder-v3 1.0.0"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(o,{text:"Library MCP Server",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["The app-free, library-only MCP server: eight tools covering Union-Find, exact Blossom MWPM, SparseBlossom, and the auto router, with syndrome validation against",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "})," and coset-scored logical outcomes. Runs on ",e.jsx("code",{className:"text-cyan-300",children:"qector-decoder-v3 1.0.x"})," with",e.jsx("code",{className:"text-cyan-300",children:"mcp==1.26.0"}),"; no Workbench or GUI needed. Ships in the",e.jsx("code",{className:"text-cyan-300",children:"qector-claude-plugin"})," repository."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Documentation"}),e.jsx(a,{to:"/workbench",className:"btn-outline",children:"Workbench vs library"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6",children:"Design principles"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[{t:"Deterministic, not generated",d:"The assistant calls a decoder; it does not invent a correction. Results are reproducible and syndrome-faithful."},{t:"Runs locally",d:"Local stdio JSON-RPC. Syndromes are processed locally on the host machine; this library server includes no telemetry."},{t:"App-free",d:"Runs on the published qector-decoder-v3 1.0.x wheel and ships in the qector-claude-plugin repository. No QECTOR Workbench, no GUI, no desktop application required."}].map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:s.t}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.d})]},s.t))}),e.jsxs("div",{className:"card-surface border border-cyan-800/60 bg-gradient-to-r from-cyan-950/40 via-surface to-cyan-950/20 p-6 rounded-2xl flex flex-col md:flex-row items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("span",{className:"inline-block px-2.5 py-0.5 rounded text-[11px] font-mono font-semibold bg-cyan-400 text-slate-950 mb-2",children:"CLAUDE PLUGIN"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-1",children:"Looking for the full Claude Code Plugin?"}),e.jsx("p",{className:"text-slate-300 text-sm leading-relaxed",children:"The Claude Plugin v1.0.6 includes 28 skills, 11 slash commands, 5 agents, and four local MCP servers: 8 stable library tools, 29 opt-in research tools, 3 opt-in admin tools, and a safe Desktop profile. Workbench v1.0.7 remains the largest desktop surface with 85 tools on Windows and Linux."})]}),e.jsx(a,{to:"/claude-plugin",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all whitespace-nowrap shadow-lg shadow-cyan-400/20",children:"Explore Claude Plugin →"})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Connect a client"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["The server speaks JSON-RPC 2.0 over local stdio and identifies itself as",e.jsx("code",{className:"text-cyan-300",children:" qector-decoder-v3-mcp "}),". Add it to Claude Code, Claude Desktop, or any MCP client:"]}),e.jsx(t,{language:"json",code:m}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["In Claude Code, root ",e.jsx("code",{className:"text-cyan-300",children:".mcp.json"})," already references this server via ",e.jsxs("code",{className:"text-cyan-300",children:["$","${CLAUDE_PLUGIN_ROOT}"]}),". Validate with",e.jsx("code",{className:"text-cyan-300",children:' claude plugin validate "" --strict '}),"."]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"8 Tools"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Returned verbatim by ",e.jsx("code",{className:"text-cyan-300",children:"tools/list"}),". The schema is enforced as fail-closed JSON; malformed or resource-exceeding input returns an MCP",e.jsx("code",{className:"text-cyan-300",children:" isError "})," result without leaking tracebacks."]}),e.jsx("div",{className:"space-y-4",children:n.map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("div",{className:"flex flex-wrap items-baseline gap-3 mb-2",children:e.jsx("code",{className:"text-cyan-300 font-semibold text-base",children:s.name})}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:s.desc}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Required"}),e.jsx("div",{className:"text-secondary",children:s.required.length?s.required.map(r=>e.jsx("code",{className:"text-cyan-300 mr-2",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Optional"}),e.jsx("div",{className:"text-secondary",children:s.optional.length?s.optional.map(r=>e.jsx("code",{className:"text-muted-foreground mr-2",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Returns"}),e.jsx("div",{className:"text-secondary",children:s.returns})]})]})]},s.name))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Code families & decoders"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Nine code families (graphlike eligible where marked; non-graphlike inputs route to BP-OSD or require ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "}),") and five stable decoders. No universal benchmark figures are published on the site; run the shipped harness to measure your own hardware."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:d.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("span",{className:"text-cyan-300 font-mono font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1 font-mono",children:["→ ",s.desc]})]},s.name))}),e.jsx("div",{className:"mt-4 overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-2 px-3",children:"Decoder"}),e.jsx("th",{className:"py-2 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-2 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:l.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-2 px-3 font-mono font-semibold text-primary",children:s.name}),e.jsx("td",{className:"py-2 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-2 px-3 text-secondary text-xs",children:s.desc})]},s.name))})]})})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Example call"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:[e.jsx("code",{className:"text-cyan-300",children:" decode_single "})," runs one seeded code-capacity decode with Theorems 1 and 2 enforcement, then returns syndrome_valid and logical_scoring fields."]}),e.jsx(t,{language:"json",code:x}),e.jsx("p",{className:"text-secondary text-sm mt-5 mb-3",children:"Response:"}),e.jsx(t,{language:"json",code:h}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["Tool results are returned as MCP text content containing the JSON payload, per the 2024-11-05 content convention. The ",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "}),"check is enforced before any logical scoring; a failed check raises an MCP error instead of returning a result."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Operational guidance"}),e.jsxs("ul",{className:"space-y-3 text-secondary text-sm leading-relaxed list-disc pl-5 marker:text-cyan-300/60",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Local only."})," The supported transport is local stdio. Network surfaces (REST/gRPC/metrics/SSE) and batch-GPU paths are Provisional and require separate deployment review; they are not part of this public library contract."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Graphlike guard."})," Exact Blossom and SparseBlossom decoders require graphlike check structures (qubit participation ≤ 2). For hyperedge matrices such as ",e.jsx("code",{className:"text-cyan-300",children:" generate_surface_code_checks "}),", use ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "})," or decompose via the documented direct-wheel APIs."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"LER is coset-scored."})," Logical outcomes use the logical coset, never raw correction-vector equality. Wilson 95% intervals and a ",e.jsx("code",{className:"text-cyan-300",children:" code_capacity "})," tag are included; do not compare with ",e.jsx("code",{className:"text-cyan-300",children:" circuit_level "})," results."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Artifacts stay local."})," ",e.jsx("code",{className:"text-cyan-300",children:" threshold_sweep "})," writes a hashed raw JSON artifact with required metadata. Generated artifacts belong outside the plugin and must not be uploaded to external services."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Licensing."})," See ",e.jsx(a,{to:"/pricing",className:"text-cyan-300",children:"Pricing"})," for license-key installation and tier information returned by ",e.jsx("code",{className:"text-cyan-300",children:" get_license_info "}),"."]})]})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(a,{to:"/pricing",className:"btn-cyan",children:"View licensing"})})]})})]})}export{v as default}; diff --git a/assets/McpServer-m4zxJ7m1.js b/assets/McpServer-m4zxJ7m1.js deleted file mode 100644 index 019f015d..00000000 --- a/assets/McpServer-m4zxJ7m1.js +++ /dev/null @@ -1,31 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,J as i,C as t}from"./index-_BpMZhV3.js";import{N as o}from"./NeuralReveal-BflyZYSb.js";import{L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const n=[{name:"list_code_families",desc:"List the code families available in qector-decoder-v3 1.0.0 with their live availability and graphlike eligibility.",required:[],optional:[],returns:'families map (generator, code_factory, available, description, single_decode), reference_manual DOI, qector_version "1.0.0"'},{name:"list_decoders",desc:"List the five stable decoder classes exposed by the wheel: union_find, fast_union_find, blossom, sparse_blossom, native_auto.",required:[],optional:[],returns:'decoders map (class, status: "stable"), reference_manual DOI'},{name:"get_license_info",desc:"Read the live offline QECTOR license tier and feature gates from the installed wheel.",required:[],optional:[],returns:"license info object, qector_version, reference_manual DOI"},{name:"decode_syndrome",desc:"Decode a binary syndrome against an explicit or family-derived parity-check matrix. Fails unless H c = s (mod 2) (Theorem 1).",required:["syndrome"],optional:["family","size","decoder_name","n_qubits"],returns:"family, size, decoder, backend_used, qector_version, n_checks, n_qubits, syndrome, correction, hamming_weight, syndrome_valid, latency_us"},{name:"decode_single",desc:"Run one seeded code-capacity decode with Theorems 1 and 2 checks. Logical outcomes are coset-scored, not raw correction-equality.",required:[],optional:["family","distance","decoder_name","error_rate","seed"],returns:"family, distance, decoder, backend_used, qector_version, error_rate, seed, n_qubits, n_checks, error, syndrome, correction, error_weight, correction_weight, syndrome_valid, logical_failure, logical_scoring, latency_us"},{name:"threshold_sweep",desc:"Run a code-capacity LER sweep with Wilson 95% intervals and a hashed raw JSON artifact. Not comparable with circuit_level results.",required:[],optional:["family","distances","error_rates","trials","seed","decoder_name","artifact_path"],returns:"family, decoder, qector_version, results (per-point LER + Wilson interval), artifact (path, sha256, metadata), caveat"},{name:"build_code_from_matrix",desc:"Validate and build a binary (n_checks, n_qubits) parity-check matrix for arbitrary CSS/graph codes.",required:["H_matrix"],optional:["family","distance"],returns:"family, distance, matrix_shape, rank, n_checks, n_qubits, logical_observables, graphlike, code_built, qector_version, reference_manual"},{name:"compat_report",desc:"Report live package compatibility and Provisional-surface boundaries (library stdio MCP vs upstream network/batch-GPU/OpenCL surfaces).",required:[],optional:[],returns:"runtime_ok, qector_decoder_v3 (installed, version, expected), numpy, mcp_sdk, pymatching_compat, reference_manual, provisional_surfaces"}],d=[{name:"repetition",desc:"Open 1D chain parity-check code"},{name:"ring",desc:"Periodic ring code"},{name:"surface_legacy",desc:"Legacy toric weight-4 generator; NOT graphlike"},{name:"rotated_surface",desc:"Graphlike rotated surface code"},{name:"unrotated_surface",desc:"Graphlike square-lattice surface code"},{name:"toric",desc:"Graphlike toric code with periodic boundaries"},{name:"heavy_hex",desc:"Graphlike heavy-hex code"},{name:"color_code",desc:"Color code family exposed by the wheel"},{name:"hypergraph_product",desc:"CSS code from two parity-check matrices (requires build_code_from_matrix)"}],l=[{name:"union_find",type:"Graphlike",desc:"Standard cluster-growth Union-Find decoder."},{name:"fast_union_find",type:"Graphlike",desc:"Faster approximate Union-Find variant."},{name:"blossom",type:"Universal",desc:"Weight-optimal exact MWPM matching."},{name:"sparse_blossom",type:"Graphlike",desc:"Region-growing blossom variant for sparse error graphs."},{name:"native_auto",type:"Auto",desc:"Self-selecting heuristic selector (blossom for graphlike, BP-OSD for hypergraph-product)."}],m=`{ - "mcpServers": { - "qector": { - "command": "python", - "args": ["\${CLAUDE_PLUGIN_ROOT}/mcp/mcp_server_library.py"] - } - } -}`,x=`{ - "jsonrpc": "2.0", - "id": 1, - "method": "tools/call", - "params": { - "name": "decode_single", - "arguments": { - "family": "rotated_surface", - "distance": 5, - "decoder_name": "blossom", - "error_rate": 0.05, - "seed": 42 - } - } -}`,h=`{ - "jsonrpc": "2.0", - "id": 1, - "result": { - "content": [{ - "type": "text", - "text": "{\\n \\"family\\": \\"rotated_surface\\",\\n \\"distance\\": 5,\\n \\"decoder\\": \\"blossom\\",\\n \\"syndrome_valid\\": true,\\n \\"logical_scoring\\": \\"logical-observable matrix (Theorem 2)\\",\\n \\"logical_failure\\": false\\n}" - }] - } -}`;function v(){return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Library MCP Server · QECTOR Decoder v3 v1.0.0",description:"App-free Model Context Protocol server for quantum error correction decoding. 8 verified local stdio JSON-RPC 2.0 tools across 9 code families and 5 stable decoders. Ships as a local library; no Workbench or GUI required."}),e.jsx(i,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Library MCP Server",applicationCategory:"DeveloperApplication",operatingSystem:"Windows, macOS, Linux",description:"Local stdio Model Context Protocol server exposing 8 QEC decoding tools. Designed for local stdio use."}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Local stdio · JSON-RPC 2.0 · Protocol 2024-11-05 · qector-decoder-v3 1.0.0"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(o,{text:"Library MCP Server",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["The app-free, library-only MCP server: eight tools covering Union-Find, exact Blossom MWPM, SparseBlossom, and the auto router, with syndrome validation against",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "})," and coset-scored logical outcomes. Runs on ",e.jsx("code",{className:"text-cyan-300",children:"qector-decoder-v3==1.0.0"})," with",e.jsx("code",{className:"text-cyan-300",children:"mcp==1.26.0"}),"; no Workbench or GUI needed. Ships in the",e.jsx("code",{className:"text-cyan-300",children:"qector-claude-plugin"})," repository."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Documentation"}),e.jsx(a,{to:"/workbench",className:"btn-outline",children:"Workbench vs library"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6",children:"Design principles"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[{t:"Deterministic, not generated",d:"The assistant calls a decoder; it does not invent a correction. Results are reproducible and syndrome-faithful."},{t:"Runs locally",d:"Local stdio JSON-RPC. Syndromes are processed locally on the host machine; this library server includes no telemetry."},{t:"App-free",d:"Runs on the published qector-decoder-v3==1.0.0 wheel and ships in the qector-claude-plugin repository. No QECTOR Workbench, no GUI, no desktop application required."}].map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:s.t}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.d})]},s.t))}),e.jsxs("div",{className:"card-surface border border-cyan-800/60 bg-gradient-to-r from-cyan-950/40 via-surface to-cyan-950/20 p-6 rounded-2xl flex flex-col md:flex-row items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("span",{className:"inline-block px-2.5 py-0.5 rounded text-[11px] font-mono font-semibold bg-cyan-400 text-slate-950 mb-2",children:"CLAUDE PLUGIN"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-1",children:"Looking for the full Claude Code Plugin?"}),e.jsx("p",{className:"text-slate-300 text-sm leading-relaxed",children:"The Claude Plugin v1.0.6 includes 28 skills, 11 slash commands, 5 agents, and four local MCP servers: 8 stable library tools, 29 opt-in research tools, 3 opt-in admin tools, and a safe Desktop profile. Workbench v1.0.7 remains the largest desktop surface with 85 tools on Windows and Linux."})]}),e.jsx(a,{to:"/claude-plugin",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all whitespace-nowrap shadow-lg shadow-cyan-400/20",children:"Explore Claude Plugin →"})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Connect a client"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["The server speaks JSON-RPC 2.0 over local stdio and identifies itself as",e.jsx("code",{className:"text-cyan-300",children:" qector-decoder-v3-mcp "}),". Add it to Claude Code, Claude Desktop, or any MCP client:"]}),e.jsx(t,{language:"json",code:m}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["In Claude Code, root ",e.jsx("code",{className:"text-cyan-300",children:".mcp.json"})," already references this server via ",e.jsxs("code",{className:"text-cyan-300",children:["$","${CLAUDE_PLUGIN_ROOT}"]}),". Validate with",e.jsx("code",{className:"text-cyan-300",children:' claude plugin validate "" --strict '}),"."]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"8 Tools"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Returned verbatim by ",e.jsx("code",{className:"text-cyan-300",children:"tools/list"}),". The schema is enforced as fail-closed JSON; malformed or resource-exceeding input returns an MCP",e.jsx("code",{className:"text-cyan-300",children:" isError "})," result without leaking tracebacks."]}),e.jsx("div",{className:"space-y-4",children:n.map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("div",{className:"flex flex-wrap items-baseline gap-3 mb-2",children:e.jsx("code",{className:"text-cyan-300 font-semibold text-base",children:s.name})}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:s.desc}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Required"}),e.jsx("div",{className:"text-secondary",children:s.required.length?s.required.map(r=>e.jsx("code",{className:"text-cyan-300 mr-2",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Optional"}),e.jsx("div",{className:"text-secondary",children:s.optional.length?s.optional.map(r=>e.jsx("code",{className:"text-muted-foreground mr-2",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Returns"}),e.jsx("div",{className:"text-secondary",children:s.returns})]})]})]},s.name))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Code families & decoders"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Nine code families (graphlike eligible where marked; non-graphlike inputs route to BP-OSD or require ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "}),") and five stable decoders. No universal benchmark figures are published on the site; run the shipped harness to measure your own hardware."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:d.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("span",{className:"text-cyan-300 font-mono font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1 font-mono",children:["→ ",s.desc]})]},s.name))}),e.jsx("div",{className:"mt-4 overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-2 px-3",children:"Decoder"}),e.jsx("th",{className:"py-2 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-2 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:l.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-2 px-3 font-mono font-semibold text-primary",children:s.name}),e.jsx("td",{className:"py-2 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-2 px-3 text-secondary text-xs",children:s.desc})]},s.name))})]})})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Example call"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:[e.jsx("code",{className:"text-cyan-300",children:" decode_single "})," runs one seeded code-capacity decode with Theorems 1 and 2 enforcement, then returns syndrome_valid and logical_scoring fields."]}),e.jsx(t,{language:"json",code:x}),e.jsx("p",{className:"text-secondary text-sm mt-5 mb-3",children:"Response:"}),e.jsx(t,{language:"json",code:h}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["Tool results are returned as MCP text content containing the JSON payload, per the 2024-11-05 content convention. The ",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "}),"check is enforced before any logical scoring; a failed check raises an MCP error instead of returning a result."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Operational guidance"}),e.jsxs("ul",{className:"space-y-3 text-secondary text-sm leading-relaxed list-disc pl-5 marker:text-cyan-300/60",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Local only."})," The supported transport is local stdio. Network surfaces (REST/gRPC/metrics/SSE) and batch-GPU paths are Provisional and require separate deployment review; they are not part of this public library contract."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Graphlike guard."})," Exact Blossom and SparseBlossom decoders require graphlike check structures (qubit participation ≤ 2). For hyperedge matrices such as ",e.jsx("code",{className:"text-cyan-300",children:" generate_surface_code_checks "}),", use ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "})," or decompose via the documented direct-wheel APIs."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"LER is coset-scored."})," Logical outcomes use the logical coset, never raw correction-vector equality. Wilson 95% intervals and a ",e.jsx("code",{className:"text-cyan-300",children:" code_capacity "})," tag are included; do not compare with ",e.jsx("code",{className:"text-cyan-300",children:" circuit_level "})," results."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Artifacts stay local."})," ",e.jsx("code",{className:"text-cyan-300",children:" threshold_sweep "})," writes a hashed raw JSON artifact with required metadata. Generated artifacts belong outside the plugin and must not be uploaded to external services."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Licensing."})," See ",e.jsx(a,{to:"/pricing",className:"text-cyan-300",children:"Pricing"})," for license-key installation and tier information returned by ",e.jsx("code",{className:"text-cyan-300",children:" get_license_info "}),"."]})]})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(a,{to:"/pricing",className:"btn-cyan",children:"View licensing"})})]})})]})}export{v as default}; diff --git a/assets/McpServer-vBOicFuG.js b/assets/McpServer-vBOicFuG.js deleted file mode 100644 index 20382380..00000000 --- a/assets/McpServer-vBOicFuG.js +++ /dev/null @@ -1,31 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,J as i,C as t}from"./index-DRAXObZB.js";import{N as o}from"./NeuralReveal-BflyZYSb.js";import{L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const n=[{name:"list_code_families",desc:"List the code families available in qector-decoder-v3 1.0.0 with their live availability and graphlike eligibility.",required:[],optional:[],returns:'families map (generator, code_factory, available, description, single_decode), reference_manual DOI, qector_version "1.0.0"'},{name:"list_decoders",desc:"List the five stable decoder classes exposed by the wheel: union_find, fast_union_find, blossom, sparse_blossom, native_auto.",required:[],optional:[],returns:'decoders map (class, status: "stable"), reference_manual DOI'},{name:"get_license_info",desc:"Read the live offline QECTOR license tier and feature gates from the installed wheel.",required:[],optional:[],returns:"license info object, qector_version, reference_manual DOI"},{name:"decode_syndrome",desc:"Decode a binary syndrome against an explicit or family-derived parity-check matrix. Fails unless H c = s (mod 2) (Theorem 1).",required:["syndrome"],optional:["family","size","decoder_name","n_qubits"],returns:"family, size, decoder, backend_used, qector_version, n_checks, n_qubits, syndrome, correction, hamming_weight, syndrome_valid, latency_us"},{name:"decode_single",desc:"Run one seeded code-capacity decode with Theorems 1 and 2 checks. Logical outcomes are coset-scored, not raw correction-equality.",required:[],optional:["family","distance","decoder_name","error_rate","seed"],returns:"family, distance, decoder, backend_used, qector_version, error_rate, seed, n_qubits, n_checks, error, syndrome, correction, error_weight, correction_weight, syndrome_valid, logical_failure, logical_scoring, latency_us"},{name:"threshold_sweep",desc:"Run a code-capacity LER sweep with Wilson 95% intervals and a hashed raw JSON artifact. Not comparable with circuit_level results.",required:[],optional:["family","distances","error_rates","trials","seed","decoder_name","artifact_path"],returns:"family, decoder, qector_version, results (per-point LER + Wilson interval), artifact (path, sha256, metadata), caveat"},{name:"build_code_from_matrix",desc:"Validate and build a binary (n_checks, n_qubits) parity-check matrix for arbitrary CSS/graph codes.",required:["H_matrix"],optional:["family","distance"],returns:"family, distance, matrix_shape, rank, n_checks, n_qubits, logical_observables, graphlike, code_built, qector_version, reference_manual"},{name:"compat_report",desc:"Report live package compatibility and Provisional-surface boundaries (library stdio MCP vs upstream network/batch-GPU/OpenCL surfaces).",required:[],optional:[],returns:"runtime_ok, qector_decoder_v3 (installed, version, expected), numpy, mcp_sdk, pymatching_compat, reference_manual, provisional_surfaces"}],d=[{name:"repetition",desc:"Open 1D chain parity-check code"},{name:"ring",desc:"Periodic ring code"},{name:"surface_legacy",desc:"Legacy toric weight-4 generator; NOT graphlike"},{name:"rotated_surface",desc:"Graphlike rotated surface code"},{name:"unrotated_surface",desc:"Graphlike square-lattice surface code"},{name:"toric",desc:"Graphlike toric code with periodic boundaries"},{name:"heavy_hex",desc:"Graphlike heavy-hex code"},{name:"color_code",desc:"Color code family exposed by the wheel"},{name:"hypergraph_product",desc:"CSS code from two parity-check matrices (requires build_code_from_matrix)"}],l=[{name:"union_find",type:"Graphlike",desc:"Standard cluster-growth Union-Find decoder."},{name:"fast_union_find",type:"Graphlike",desc:"Faster approximate Union-Find variant."},{name:"blossom",type:"Universal",desc:"Weight-optimal exact MWPM matching."},{name:"sparse_blossom",type:"Graphlike",desc:"Region-growing blossom variant for sparse error graphs."},{name:"native_auto",type:"Auto",desc:"Self-selecting heuristic selector (blossom for graphlike, BP-OSD for hypergraph-product)."}],m=`{ - "mcpServers": { - "qector": { - "command": "python", - "args": ["\${CLAUDE_PLUGIN_ROOT}/mcp/mcp_server_library.py"] - } - } -}`,x=`{ - "jsonrpc": "2.0", - "id": 1, - "method": "tools/call", - "params": { - "name": "decode_single", - "arguments": { - "family": "rotated_surface", - "distance": 5, - "decoder_name": "blossom", - "error_rate": 0.05, - "seed": 42 - } - } -}`,h=`{ - "jsonrpc": "2.0", - "id": 1, - "result": { - "content": [{ - "type": "text", - "text": "{\\n \\"family\\": \\"rotated_surface\\",\\n \\"distance\\": 5,\\n \\"decoder\\": \\"blossom\\",\\n \\"syndrome_valid\\": true,\\n \\"logical_scoring\\": \\"logical-observable matrix (Theorem 2)\\",\\n \\"logical_failure\\": false\\n}" - }] - } -}`;function v(){return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Library MCP Server · QECTOR Decoder v3 v1.0.0",description:"App-free Model Context Protocol server for quantum error correction decoding. 8 verified local stdio JSON-RPC 2.0 tools across 9 code families and 5 stable decoders. Ships as a local library; no Workbench or GUI required."}),e.jsx(i,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Library MCP Server",applicationCategory:"DeveloperApplication",operatingSystem:"Windows, macOS, Linux",description:"Local stdio Model Context Protocol server exposing 8 QEC decoding tools. Designed for local stdio use."}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Local stdio · JSON-RPC 2.0 · Protocol 2024-11-05 · qector-decoder-v3 1.0.0"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(o,{text:"Library MCP Server",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["The app-free, library-only MCP server: eight tools covering Union-Find, exact Blossom MWPM, SparseBlossom, and the auto router, with syndrome validation against",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "})," and coset-scored logical outcomes. Runs on ",e.jsx("code",{className:"text-cyan-300",children:"qector-decoder-v3 1.0.x"})," with",e.jsx("code",{className:"text-cyan-300",children:"mcp==1.26.0"}),"; no Workbench or GUI needed. Ships in the",e.jsx("code",{className:"text-cyan-300",children:"qector-claude-plugin"})," repository."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Documentation"}),e.jsx(a,{to:"/workbench",className:"btn-outline",children:"Workbench vs library"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6",children:"Design principles"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[{t:"Deterministic, not generated",d:"The assistant calls a decoder; it does not invent a correction. Results are reproducible and syndrome-faithful."},{t:"Runs locally",d:"Local stdio JSON-RPC. Syndromes are processed locally on the host machine; this library server includes no telemetry."},{t:"App-free",d:"Runs on the published qector-decoder-v3 1.0.x wheel and ships in the qector-claude-plugin repository. No QECTOR Workbench, no GUI, no desktop application required."}].map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:s.t}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.d})]},s.t))}),e.jsxs("div",{className:"card-surface border border-cyan-800/60 bg-gradient-to-r from-cyan-950/40 via-surface to-cyan-950/20 p-6 rounded-2xl flex flex-col md:flex-row items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("span",{className:"inline-block px-2.5 py-0.5 rounded text-[11px] font-mono font-semibold bg-cyan-400 text-slate-950 mb-2",children:"CLAUDE PLUGIN"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-1",children:"Looking for the full Claude Code Plugin?"}),e.jsx("p",{className:"text-slate-300 text-sm leading-relaxed",children:"The Claude Plugin v1.0.6 includes 28 skills, 11 slash commands, 5 agents, and four local MCP servers: 8 stable library tools, 29 opt-in research tools, 3 opt-in admin tools, and a safe Desktop profile. Workbench v1.0.7 remains the largest desktop surface with 85 tools on Windows and Linux."})]}),e.jsx(a,{to:"/claude-plugin",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all whitespace-nowrap shadow-lg shadow-cyan-400/20",children:"Explore Claude Plugin →"})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Connect a client"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["The server speaks JSON-RPC 2.0 over local stdio and identifies itself as",e.jsx("code",{className:"text-cyan-300",children:" qector-decoder-v3-mcp "}),". Add it to Claude Code, Claude Desktop, or any MCP client:"]}),e.jsx(t,{language:"json",code:m}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["In Claude Code, root ",e.jsx("code",{className:"text-cyan-300",children:".mcp.json"})," already references this server via ",e.jsxs("code",{className:"text-cyan-300",children:["$","${CLAUDE_PLUGIN_ROOT}"]}),". Validate with",e.jsx("code",{className:"text-cyan-300",children:' claude plugin validate "" --strict '}),"."]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"8 Tools"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Returned verbatim by ",e.jsx("code",{className:"text-cyan-300",children:"tools/list"}),". The schema is enforced as fail-closed JSON; malformed or resource-exceeding input returns an MCP",e.jsx("code",{className:"text-cyan-300",children:" isError "})," result without leaking tracebacks."]}),e.jsx("div",{className:"space-y-4",children:n.map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("div",{className:"flex flex-wrap items-baseline gap-3 mb-2",children:e.jsx("code",{className:"text-cyan-300 font-semibold text-base",children:s.name})}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:s.desc}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Required"}),e.jsx("div",{className:"text-secondary",children:s.required.length?s.required.map(r=>e.jsx("code",{className:"text-cyan-300 mr-2",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Optional"}),e.jsx("div",{className:"text-secondary",children:s.optional.length?s.optional.map(r=>e.jsx("code",{className:"text-muted-foreground mr-2",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Returns"}),e.jsx("div",{className:"text-secondary",children:s.returns})]})]})]},s.name))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Code families & decoders"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Nine code families (graphlike eligible where marked; non-graphlike inputs route to BP-OSD or require ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "}),") and five stable decoders. No universal benchmark figures are published on the site; run the shipped harness to measure your own hardware."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:d.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("span",{className:"text-cyan-300 font-mono font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1 font-mono",children:["→ ",s.desc]})]},s.name))}),e.jsx("div",{className:"mt-4 overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-2 px-3",children:"Decoder"}),e.jsx("th",{className:"py-2 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-2 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:l.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-2 px-3 font-mono font-semibold text-primary",children:s.name}),e.jsx("td",{className:"py-2 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-2 px-3 text-secondary text-xs",children:s.desc})]},s.name))})]})})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Example call"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:[e.jsx("code",{className:"text-cyan-300",children:" decode_single "})," runs one seeded code-capacity decode with Theorems 1 and 2 enforcement, then returns syndrome_valid and logical_scoring fields."]}),e.jsx(t,{language:"json",code:x}),e.jsx("p",{className:"text-secondary text-sm mt-5 mb-3",children:"Response:"}),e.jsx(t,{language:"json",code:h}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["Tool results are returned as MCP text content containing the JSON payload, per the 2024-11-05 content convention. The ",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "}),"check is enforced before any logical scoring; a failed check raises an MCP error instead of returning a result."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Operational guidance"}),e.jsxs("ul",{className:"space-y-3 text-secondary text-sm leading-relaxed list-disc pl-5 marker:text-cyan-300/60",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Local only."})," The supported transport is local stdio. Network surfaces (REST/gRPC/metrics/SSE) and batch-GPU paths are Provisional and require separate deployment review; they are not part of this public library contract."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Graphlike guard."})," Exact Blossom and SparseBlossom decoders require graphlike check structures (qubit participation ≤ 2). For hyperedge matrices such as ",e.jsx("code",{className:"text-cyan-300",children:" generate_surface_code_checks "}),", use ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "})," or decompose via the documented direct-wheel APIs."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"LER is coset-scored."})," Logical outcomes use the logical coset, never raw correction-vector equality. Wilson 95% intervals and a ",e.jsx("code",{className:"text-cyan-300",children:" code_capacity "})," tag are included; do not compare with ",e.jsx("code",{className:"text-cyan-300",children:" circuit_level "})," results."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Artifacts stay local."})," ",e.jsx("code",{className:"text-cyan-300",children:" threshold_sweep "})," writes a hashed raw JSON artifact with required metadata. Generated artifacts belong outside the plugin and must not be uploaded to external services."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Licensing."})," See ",e.jsx(a,{to:"/pricing",className:"text-cyan-300",children:"Pricing"})," for license-key installation and tier information returned by ",e.jsx("code",{className:"text-cyan-300",children:" get_license_info "}),"."]})]})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(a,{to:"/pricing",className:"btn-cyan",children:"View licensing"})})]})})]})}export{v as default}; diff --git a/assets/McpServer-y-T_ds_x.js b/assets/McpServer-y-T_ds_x.js deleted file mode 100644 index 6e1efa3d..00000000 --- a/assets/McpServer-y-T_ds_x.js +++ /dev/null @@ -1,31 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as c,J as i,L as a,C as t}from"./index-PdoH5kLF.js";import{N as n}from"./NeuralReveal-Bsl9IGCr.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const o=[{name:"list_code_families",desc:"List the code families available in qector-decoder-v3 1.0.1 with their live availability and graphlike eligibility.",required:[],optional:[],returns:'families map (generator, code_factory, available, description, single_decode), reference_manual DOI, qector_version "1.0.1"'},{name:"list_decoders",desc:"List the five stable decoder classes exposed by the wheel: union_find, fast_union_find, blossom, sparse_blossom, native_auto.",required:[],optional:[],returns:'decoders map (class, status: "stable"), reference_manual DOI'},{name:"get_license_info",desc:"Read the live offline QECTOR license tier and feature gates from the installed wheel.",required:[],optional:[],returns:"license info object, qector_version, reference_manual DOI"},{name:"decode_syndrome",desc:"Decode a binary syndrome against an explicit or family-derived parity-check matrix. Fails unless H c = s (mod 2) (Theorem 1).",required:["syndrome"],optional:["family","size","decoder_name","n_qubits"],returns:"family, size, decoder, backend_used, qector_version, n_checks, n_qubits, syndrome, correction, hamming_weight, syndrome_valid, latency_us"},{name:"decode_single",desc:"Run one seeded code-capacity decode with Theorems 1 and 2 checks. Logical outcomes are coset-scored, not raw correction-equality.",required:[],optional:["family","distance","decoder_name","error_rate","seed"],returns:"family, distance, decoder, backend_used, qector_version, error_rate, seed, n_qubits, n_checks, error, syndrome, correction, error_weight, correction_weight, syndrome_valid, logical_failure, logical_scoring, latency_us"},{name:"threshold_sweep",desc:"Run a code-capacity LER sweep with Wilson 95% intervals and a hashed raw JSON artifact. Not comparable with circuit_level results.",required:[],optional:["family","distances","error_rates","trials","seed","decoder_name","artifact_path"],returns:"family, decoder, qector_version, results (per-point LER + Wilson interval), artifact (path, sha256, metadata), caveat"},{name:"build_code_from_matrix",desc:"Validate and build a binary (n_checks, n_qubits) parity-check matrix for arbitrary CSS/graph codes.",required:["H_matrix"],optional:["family","distance"],returns:"family, distance, matrix_shape, rank, n_checks, n_qubits, logical_observables, graphlike, code_built, qector_version, reference_manual"},{name:"compat_report",desc:"Report live package compatibility and Provisional-surface boundaries (library stdio MCP vs upstream network/batch-GPU/OpenCL surfaces).",required:[],optional:[],returns:"runtime_ok, qector_decoder_v3 (installed, version, expected), numpy, mcp_sdk, pymatching_compat, reference_manual, provisional_surfaces"}],d=[{name:"repetition",desc:"Open 1D chain parity-check code"},{name:"ring",desc:"Periodic ring code"},{name:"surface_legacy",desc:"Legacy toric weight-4 generator; NOT graphlike"},{name:"rotated_surface",desc:"Graphlike rotated surface code"},{name:"unrotated_surface",desc:"Graphlike square-lattice surface code"},{name:"toric",desc:"Graphlike toric code with periodic boundaries"},{name:"heavy_hex",desc:"Graphlike heavy-hex code"},{name:"color_code",desc:"Color code family exposed by the wheel"},{name:"hypergraph_product",desc:"CSS code from two parity-check matrices (requires build_code_from_matrix)"}],l=[{name:"union_find",type:"Graphlike",desc:"Standard cluster-growth Union-Find decoder."},{name:"fast_union_find",type:"Graphlike",desc:"Faster approximate Union-Find variant."},{name:"blossom",type:"Universal",desc:"Weight-optimal exact MWPM matching."},{name:"sparse_blossom",type:"Graphlike",desc:"Region-growing blossom variant for sparse error graphs."},{name:"native_auto",type:"Auto",desc:"Self-selecting heuristic selector (blossom for graphlike, BP-OSD for hypergraph-product)."}],m=`{ - "mcpServers": { - "qector": { - "command": "python", - "args": ["\${CLAUDE_PLUGIN_ROOT}/mcp/mcp_server_library.py"] - } - } -}`,x=`{ - "jsonrpc": "2.0", - "id": 1, - "method": "tools/call", - "params": { - "name": "decode_single", - "arguments": { - "family": "rotated_surface", - "distance": 5, - "decoder_name": "blossom", - "error_rate": 0.05, - "seed": 42 - } - } -}`,h=`{ - "jsonrpc": "2.0", - "id": 1, - "result": { - "content": [{ - "type": "text", - "text": "{\\n \\"family\\": \\"rotated_surface\\",\\n \\"distance\\": 5,\\n \\"decoder\\": \\"blossom\\",\\n \\"syndrome_valid\\": true,\\n \\"logical_scoring\\": \\"logical-observable matrix (Theorem 2)\\",\\n \\"logical_failure\\": false\\n}" - }] - } -}`;function b(){return e.jsxs(e.Fragment,{children:[e.jsx(c,{title:"Library MCP Server · QECTOR Decoder v3 v1.0.1",description:"App-free Model Context Protocol server for quantum error correction decoding. 8 verified local stdio JSON-RPC 2.0 tools across 9 code families and 5 stable decoders. Ships as a local library; no Workbench or GUI required."}),e.jsx(i,{data:{"@context":"https://schema.org","@type":"SoftwareApplication",name:"QECTOR Library MCP Server",applicationCategory:"DeveloperApplication",operatingSystem:"Windows, macOS, Linux",description:"Local stdio Model Context Protocol server exposing 8 QEC decoding tools. Designed for local stdio use."}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Local stdio · JSON-RPC 2.0 · Protocol 2024-11-05 · qector-decoder-v3 1.0.1"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(n,{text:"Library MCP Server",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-3xl mx-auto leading-relaxed mb-8",children:["The app-free, library-only MCP server: eight tools covering Union-Find, exact Blossom MWPM, SparseBlossom, and the auto router, with syndrome validation against",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "})," and coset-scored logical outcomes. Runs on ",e.jsx("code",{className:"text-cyan-300",children:"qector-decoder-v3 1.0.x"})," with",e.jsx("code",{className:"text-cyan-300",children:"mcp>=1.30,<3"}),"; no Workbench or GUI needed. Ships in the",e.jsx("code",{className:"text-cyan-300",children:"qector-claude-plugin"})," repository."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Documentation"}),e.jsx(a,{to:"/workbench",className:"btn-outline",children:"Workbench vs library"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-4xl mx-auto space-y-10",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6",children:"Design principles"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[{t:"Deterministic, not generated",d:"The assistant calls a decoder; it does not invent a correction. Results are reproducible and syndrome-faithful."},{t:"Runs locally",d:"Local stdio JSON-RPC. Syndromes are processed locally on the host machine; this library server includes no telemetry."},{t:"App-free",d:"Runs on the published qector-decoder-v3 1.0.x wheel and ships in the qector-claude-plugin repository. No QECTOR Workbench, no GUI, no desktop application required."}].map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-sm mb-2",children:s.t}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.d})]},s.t))}),e.jsxs("div",{className:"card-surface border border-cyan-800/60 bg-gradient-to-r from-cyan-950/40 via-surface to-cyan-950/20 p-6 rounded-2xl flex flex-col md:flex-row items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("span",{className:"inline-block px-2.5 py-0.5 rounded text-[11px] font-mono font-semibold bg-cyan-400 text-slate-950 mb-2",children:"CLAUDE PLUGIN"}),e.jsx("h3",{className:"text-lg font-bold text-slate-100 mb-1",children:"Looking for the full Claude Code Plugin?"}),e.jsx("p",{className:"text-slate-300 text-sm leading-relaxed",children:"The Claude Plugin v2.0.1 includes 28 skills, 11 slash commands and 5 agents. Its default qector-secure server exposes 12 schema-validated tools and runs air-gapped; 29 research tools and 3 admin tools are opt-in. Workbench v1.0.7 remains the largest desktop surface with 85 tools on Windows and Linux."})]}),e.jsx(a,{to:"/claude-plugin",className:"px-5 py-2.5 rounded-xl bg-cyan-400 hover:bg-cyan-300 text-slate-950 font-semibold text-xs font-mono transition-all whitespace-nowrap shadow-lg shadow-cyan-400/20",children:"Explore Claude Plugin →"})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Connect a client"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["The server speaks JSON-RPC 2.0 over local stdio and identifies itself as",e.jsx("code",{className:"text-cyan-300",children:" qector-decoder-v3-mcp "}),". Add it to Claude Code, Claude Desktop, or any MCP client:"]}),e.jsx(t,{language:"json",code:m}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["In Claude Code, root ",e.jsx("code",{className:"text-cyan-300",children:".mcp.json"})," already references this server via ",e.jsxs("code",{className:"text-cyan-300",children:["$","${CLAUDE_PLUGIN_ROOT}"]}),". Validate with",e.jsx("code",{className:"text-cyan-300",children:' claude plugin validate "" --strict '}),"."]})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"8 Tools"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Returned verbatim by ",e.jsx("code",{className:"text-cyan-300",children:"tools/list"}),". The schema is enforced as fail-closed JSON; malformed or resource-exceeding input returns an MCP",e.jsx("code",{className:"text-cyan-300",children:" isError "})," result without leaking tracebacks."]}),e.jsx("div",{className:"space-y-4",children:o.map(s=>e.jsxs("div",{className:"card-surface",children:[e.jsx("div",{className:"flex flex-wrap items-baseline gap-3 mb-2",children:e.jsx("code",{className:"text-cyan-300 font-semibold text-base",children:s.name})}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:s.desc}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 text-xs",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Required"}),e.jsx("div",{className:"text-secondary flex flex-wrap gap-x-2 gap-y-1",children:s.required.length?s.required.map(r=>e.jsx("code",{className:"text-cyan-300 mr-2",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Optional"}),e.jsx("div",{className:"text-secondary flex flex-wrap gap-x-2 gap-y-1",children:s.optional.length?s.optional.map(r=>e.jsx("code",{className:"text-muted-foreground",children:r},r)):e.jsx("span",{className:"text-muted-foreground",children:"none"})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-muted-foreground uppercase tracking-wider mb-1",children:"Returns"}),e.jsx("div",{className:"text-secondary",children:s.returns})]})]})]},s.name))})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Code families & decoders"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Nine code families (graphlike eligible where marked; non-graphlike inputs route to BP-OSD or require ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "}),") and five stable decoders. No universal benchmark figures are published on the site; run the shipped harness to measure your own hardware."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:d.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl",children:[e.jsx("span",{className:"text-cyan-300 font-mono font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1 font-mono",children:["→ ",s.desc]})]},s.name))}),e.jsx("div",{className:"mt-4 overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-2 px-3",children:"Decoder"}),e.jsx("th",{className:"py-2 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-2 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:l.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-2 px-3 font-mono font-semibold text-primary",children:s.name}),e.jsx("td",{className:"py-2 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-2 px-3 text-secondary text-xs",children:s.desc})]},s.name))})]})})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"Example call"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:[e.jsx("code",{className:"text-cyan-300",children:" decode_single "})," runs one seeded code-capacity decode with Theorems 1 and 2 enforcement, then returns syndrome_valid and logical_scoring fields."]}),e.jsx(t,{language:"json",code:x}),e.jsx("p",{className:"text-secondary text-sm mt-5 mb-3",children:"Response:"}),e.jsx(t,{language:"json",code:h}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-3",children:["Tool results are returned as MCP text content containing the JSON payload, per the 2024-11-05 content convention. The ",e.jsx("code",{className:"text-cyan-300",children:" H c = s (mod 2) "}),"check is enforced before any logical scoring; a failed check raises an MCP error instead of returning a result."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-2xl font-bold mb-4",children:"Operational guidance"}),e.jsxs("ul",{className:"space-y-3 text-secondary text-sm leading-relaxed list-disc pl-5 marker:text-cyan-300/60",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Local only."})," The supported transport is local stdio. Network surfaces (REST/gRPC/metrics/SSE) and batch-GPU paths are Provisional and require separate deployment review; they are not part of this public library contract."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Graphlike guard."})," Exact Blossom and SparseBlossom decoders require graphlike check structures (qubit participation ≤ 2). For hyperedge matrices such as ",e.jsx("code",{className:"text-cyan-300",children:" generate_surface_code_checks "}),", use ",e.jsx("code",{className:"text-cyan-300",children:" build_code_from_matrix "})," or decompose via the documented direct-wheel APIs."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"LER is coset-scored."})," Logical outcomes use the logical coset, never raw correction-vector equality. Wilson 95% intervals and a ",e.jsx("code",{className:"text-cyan-300",children:" code_capacity "})," tag are included; do not compare with ",e.jsx("code",{className:"text-cyan-300",children:" circuit_level "})," results."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Artifacts stay local."})," ",e.jsx("code",{className:"text-cyan-300",children:" threshold_sweep "})," writes a hashed raw JSON artifact with required metadata. Generated artifacts belong outside the plugin and must not be uploaded to external services."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Licensing."})," See ",e.jsx(a,{to:"/pricing",className:"text-cyan-300",children:"Pricing"})," for license-key installation and tier information returned by ",e.jsx("code",{className:"text-cyan-300",children:" get_license_info "}),"."]})]})]}),e.jsx("div",{className:"text-center pt-2",children:e.jsx(a,{to:"/pricing",className:"btn-cyan",children:"View licensing"})})]})})]})}export{b as default}; diff --git a/assets/MetricCard-BJ0ePioZ.js b/assets/MetricCard-BJ0ePioZ.js deleted file mode 100644 index b97d2d6b..00000000 --- a/assets/MetricCard-BJ0ePioZ.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";function m({label:t,value:r,desc:s,icon:n,variant:a="default",centered:c=!1,className:d=""}){const i=a==="compact",x=a==="gold"?"text-gold-400":"text-green-400",o=c?"text-center":"";return r?e.jsxs("div",{className:`card-surface ${o} ${d}`,children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-1",children:t}),e.jsx("div",{className:"text-primary font-bold text-2xl mb-2",children:r}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:s})]}):e.jsxs("div",{className:`${i?"p-4":"p-5"} bg-void border border-gridline rounded-xl transition-colors duration-300 hover:border-cyan-300/30 ${d}`,children:[e.jsxs("div",{className:`${x} font-bold text-sm mb-2 flex items-center gap-2`,children:[n&&e.jsx("span",{"aria-hidden":"true",children:n}),e.jsx("span",{children:t})]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s})]})}export{m as M}; diff --git a/assets/NeuralReveal-BflyZYSb.js b/assets/NeuralReveal-BflyZYSb.js deleted file mode 100644 index d6ecb08c..00000000 --- a/assets/NeuralReveal-BflyZYSb.js +++ /dev/null @@ -1 +0,0 @@ -import{r as s,j as f}from"./vendor-react-BiHfrq0e.js";const C="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#$%&*";function w({text:t,triggerOnView:M=!0,scrambleDuration:d=1500,className:I="",as:k="span"}){const[E,p]=s.useState(t.split("")),[h,m]=s.useState(t.split("").map(()=>!0)),N=s.useRef(!1),R=s.useRef(null),i=s.useRef(null),v=s.useRef([]),l=s.useRef(t.split("").map(()=>!0)),j=s.useCallback(()=>{if(N.current||(N.current=!0,typeof window<"u"&&window.matchMedia?.("(prefers-reduced-motion: reduce)").matches))return;const n=t.split("").map(()=>!1);m(n),l.current=n,p(t.split("").map(()=>"_"));const c=t.length,b=d/c;i.current=setInterval(()=>{p(e=>{const r=[...e],a=r.map((y,S)=>S).filter(y=>!l.current[y]&&t[y]!==" ");if(a.length===0)return i.current&&clearInterval(i.current),r;const o=a[Math.floor(Math.random()*a.length)];return r[o]=C[Math.floor(Math.random()*C.length)],r})},20);for(let e=0;e{const o=[...a];return o[e]=" ",o});continue}const r=setTimeout(()=>{l.current[e]=!0,m([...l.current]),p(a=>{const o=[...a];return o[e]=t[e],o})},e*b+100);v.current.push(r)}const g=setTimeout(()=>{i.current&&clearInterval(i.current)},d+500);v.current.push(g)},[t,d]);return s.useEffect(()=>{if(!M){j();return}const u=new IntersectionObserver(([n])=>{n.isIntersecting&&(j(),u.disconnect())},{threshold:.3});return R.current&&u.observe(R.current),()=>{u.disconnect();const n=i.current,c=v.current;n&&clearInterval(n),c.forEach(clearTimeout)}},[M,j]),f.jsx("span",{ref:R,className:`inline-block ${I}`,children:f.jsx(k,{className:"font-mono","aria-label":t,children:f.jsx("span",{"aria-hidden":"true",children:t.split(" ").map((u,n,c)=>{const b=c.slice(0,n).join(" ").length+(n>0?1:0);return f.jsxs("span",{className:"inline-block whitespace-nowrap",children:[u.split("").map((g,e)=>{const r=b+e;return f.jsx("span",{className:`inline-block transition-opacity duration-100 ${h[r]?"opacity-100":"opacity-70"}`,style:{color:h[r]?void 0:"#67e8f9",textShadow:h[r]?void 0:"0 0 8px rgba(103, 232, 249, 0.5)"},children:E[r]},r)}),n!0)),M=r.useRef(!1),R=r.useRef(null),o=r.useRef(null),y=r.useRef([]),i=r.useRef(t.split("").map(()=>!0)),g=r.useCallback(()=>{if(M.current||(M.current=!0,typeof window<"u"&&window.matchMedia?.("(prefers-reduced-motion: reduce)").matches))return;const n=`qector-reveal:${t}`;try{if(window.sessionStorage.getItem(n))return;window.sessionStorage.setItem(n,"1")}catch{}const s=t.split("").map(()=>!1);v(s),i.current=s,p(t.split("").map(()=>"_"));const d=t.length,w=h/d;o.current=setInterval(()=>{p(e=>{const u=[...e],c=u.map((b,E)=>E).filter(b=>!i.current[b]&&t[b]!==" ");if(c.length===0)return o.current&&clearInterval(o.current),u;const a=c[Math.floor(Math.random()*c.length)];return u[a]=N[Math.floor(Math.random()*N.length)],u})},20);for(let e=0;e{const a=[...c];return a[e]=" ",a});continue}const u=setTimeout(()=>{i.current[e]=!0,v([...i.current]),p(c=>{const a=[...c];return a[e]=t[e],a})},e*w+30);y.current.push(u)}const j=setTimeout(()=>{o.current&&clearInterval(o.current)},h+200);y.current.push(j)},[t,h]);return r.useEffect(()=>{if(!I){g();return}const l=new IntersectionObserver(([n])=>{n.isIntersecting&&(g(),l.disconnect())},{threshold:.3});return R.current&&l.observe(R.current),()=>{l.disconnect();const n=o.current,s=y.current;n&&clearInterval(n),s.forEach(clearTimeout)}},[I,g]),f.jsx("span",{ref:R,className:`inline-block ${S}`,children:f.jsx(C,{"aria-label":t,"data-reveal-text":t,children:f.jsx("span",{"aria-hidden":"true",children:t.split(" ").map((l,n,s)=>{const d=s.slice(0,n).join(" ").length+(n>0?1:0);return f.jsxs("span",{className:"inline-block whitespace-nowrap",children:[l.split("").map((w,j)=>{const e=d+j;return f.jsx("span",{className:`inline-block transition-opacity duration-100 ${m[e]?"opacity-100":"opacity-70"}`,style:{color:m[e]?void 0:"#67e8f9",textShadow:m[e]?void 0:"0 0 8px rgba(103, 232, 249, 0.5)"},children:k[e]},e)}),n!0)),N=s.useRef(!1),v=s.useRef(null),i=s.useRef(null),R=s.useRef([]),l=s.useRef(e.split("").map(()=>!0)),j=s.useCallback(()=>{if(N.current||(N.current=!0,typeof window<"u"&&window.matchMedia?.("(prefers-reduced-motion: reduce)").matches))return;const n=e.split("").map(()=>!1);m(n),l.current=n,p(e.split("").map(()=>"_"));const c=e.length,b=d/c;i.current=setInterval(()=>{p(t=>{const r=[...t],a=r.map((y,S)=>S).filter(y=>!l.current[y]&&e[y]!==" ");if(a.length===0)return i.current&&clearInterval(i.current),r;const o=a[Math.floor(Math.random()*a.length)];return r[o]=C[Math.floor(Math.random()*C.length)],r})},20);for(let t=0;t{const o=[...a];return o[t]=" ",o});continue}const r=setTimeout(()=>{l.current[t]=!0,m([...l.current]),p(a=>{const o=[...a];return o[t]=e[t],o})},t*b+100);R.current.push(r)}const g=setTimeout(()=>{i.current&&clearInterval(i.current)},d+500);R.current.push(g)},[e,d]);return s.useEffect(()=>{if(!M){j();return}const u=new IntersectionObserver(([n])=>{n.isIntersecting&&(j(),u.disconnect())},{threshold:.3});return v.current&&u.observe(v.current),()=>{u.disconnect();const n=i.current,c=R.current;n&&clearInterval(n),c.forEach(clearTimeout)}},[M,j]),f.jsx("span",{ref:v,className:`inline-block ${I}`,children:f.jsx(k,{className:"font-mono","aria-label":e,"data-reveal-text":e,children:f.jsx("span",{"aria-hidden":"true",children:e.split(" ").map((u,n,c)=>{const b=c.slice(0,n).join(" ").length+(n>0?1:0);return f.jsxs("span",{className:"inline-block whitespace-nowrap",children:[u.split("").map((g,t)=>{const r=b+t;return f.jsx("span",{className:`inline-block transition-opacity duration-100 ${h[r]?"opacity-100":"opacity-70"}`,style:{color:h[r]?void 0:"#67e8f9",textShadow:h[r]?void 0:"0 0 8px rgba(103, 232, 249, 0.5)"},children:E[r]},r)}),n!0)),N=r.useRef(!1),R=r.useRef(null),i=r.useRef(null),y=r.useRef([]),l=r.useRef(t.split("").map(()=>!0)),j=r.useCallback(()=>{if(N.current||(N.current=!0,typeof window<"u"&&window.matchMedia?.("(prefers-reduced-motion: reduce)").matches))return;const n=`qector-reveal:${t}`;try{if(window.sessionStorage.getItem(n))return;window.sessionStorage.setItem(n,"1")}catch{}const s=t.split("").map(()=>!1);v(s),l.current=s,f(t.split("").map(()=>"_"));const d=t.length,b=h/d;i.current=setInterval(()=>{f(e=>{const p=[...e],c=p.map((I,E)=>E).filter(I=>!l.current[I]&&t[I]!==" ");if(c.length===0)return i.current&&clearInterval(i.current),p;const o=c[Math.floor(Math.random()*c.length)];return p[o]=w[Math.floor(Math.random()*w.length)],p})},20);for(let e=0;e{const o=[...c];return o[e]=" ",o});continue}const p=setTimeout(()=>{l.current[e]=!0,v([...l.current]),f(c=>{const o=[...c];return o[e]=t[e],o})},e*b+30);y.current.push(p)}const g=setTimeout(()=>{i.current&&clearInterval(i.current)},h+200);y.current.push(g)},[t,h]);return r.useEffect(()=>{if(!M){j();return}const u=new IntersectionObserver(([n])=>{n.isIntersecting&&(j(),u.disconnect())},{threshold:.3});return R.current&&u.observe(R.current),()=>{u.disconnect();const n=i.current,s=y.current;n&&clearInterval(n),s.forEach(clearTimeout)}},[M,j]),a.jsx("span",{ref:R,className:`inline-block ${S}`,children:a.jsxs(C,{"data-reveal-text":t,children:[a.jsx("span",{className:"sr-only",children:t}),a.jsx("span",{"aria-hidden":"true",children:t.split(" ").map((u,n,s)=>{const d=s.slice(0,n).join(" ").length+(n>0?1:0);return a.jsxs("span",{className:"inline-block whitespace-nowrap",children:[u.split("").map((b,g)=>{const e=d+g;return a.jsx("span",{className:`inline-block transition-opacity duration-100 ${m[e]?"opacity-100":"opacity-70"}`,style:{color:m[e]?void 0:"#67e8f9",textShadow:m[e]?void 0:"0 0 8px rgba(103, 232, 249, 0.5)"},children:k[e]},e)}),ne.jsxs(t,{to:s,className:"card-surface group flex items-center gap-4 !p-5 text-left",children:[e.jsx("span",{className:"shrink-0 w-10 h-10 rounded-xl bg-cyan-300/10 border border-cyan-300/20 flex items-center justify-center text-cyan-300 group-hover:bg-cyan-300/20 transition-colors duration-200",children:e.jsx(a,{size:18,"aria-hidden":"true"})}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"block text-sm font-semibold text-primary group-hover:text-cyan-200 transition-colors duration-200",children:n}),e.jsx("span",{className:"block text-xs text-muted-foreground leading-relaxed",children:o})]}),e.jsx(u,{size:16,"aria-hidden":"true",className:"shrink-0 text-muted-foreground group-hover:text-cyan-300 group-hover:translate-x-1 transition-all duration-200"})]},s))})]})]})]})]})}export{y as default}; diff --git a/assets/NotFound-2w75ETv5.js b/assets/NotFound-2w75ETv5.js deleted file mode 100644 index 33e7ad4c..00000000 --- a/assets/NotFound-2w75ETv5.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as r}from"./index-abfjMTlQ.js";import{N as i}from"./NeuralReveal-D-EQoOl2.js";import{L as t}from"./vendor-PiU4YGcH.js";import{H as l,g as c,B as d,w as x,x as m,l as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const p=[{to:"/decoder",icon:c,title:"QECTOR Decoder v3",desc:"17 decoder configurations for Python"},{to:"/docs",icon:d,title:"Documentation Hub",desc:"Guides, manuals, and references"},{to:"/evidence",icon:x,title:"Evidence & Reports",desc:"Contracts, methodology, artifacts"},{to:"/contact",icon:m,title:"Contact Engineering",desc:"Talk to the team behind QECTOR"}];function y(){return e.jsxs(e.Fragment,{children:[e.jsx(r,{title:"Page Not Found · QECTOR",description:"The requested page could not be found.",noindex:!0}),e.jsxs("section",{className:"relative min-h-[80vh] flex items-center justify-center section-padding py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-transparent to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/3 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[36rem] h-[36rem] bg-cyan-400/5 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"relative z-10 w-full min-w-0 text-center max-w-2xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill mb-6",children:"404 · Not found"}),e.jsx("div",{className:"text-8xl md:text-9xl font-extrabold tracking-tight leading-none mb-6",children:e.jsx("span",{className:"text-transparent bg-clip-text bg-gradient-to-b from-cyan-300/80 to-cyan-300/10 select-none","aria-hidden":"true",children:"404"})}),e.jsx("h1",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-4",children:e.jsx(i,{text:"Page Not Found",className:"text-3xl md:text-4xl font-bold"})}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed max-w-prose mx-auto mb-10",children:"The page you are looking for does not exist or has been moved. The links below will get you back on track."}),e.jsxs("div",{className:"flex flex-wrap gap-4 justify-center mb-14",children:[e.jsxs(t,{to:"/",className:"btn-cyan inline-flex items-center gap-2",children:[e.jsx(l,{size:16,"aria-hidden":"true"}),"Back to Home"]}),e.jsx(t,{to:"/docs",className:"btn-outline",children:"Documentation"})]}),e.jsxs("div",{className:"text-left",children:[e.jsx("p",{className:"text-xs font-semibold uppercase tracking-widest text-muted-foreground mb-4 text-center",children:"You might be looking for"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:p.map(({to:s,icon:n,title:a,desc:o})=>e.jsxs(t,{to:s,className:"card-surface group flex items-center gap-4 !p-5 text-left",children:[e.jsx("span",{className:"shrink-0 w-10 h-10 rounded-xl bg-cyan-300/10 border border-cyan-300/20 flex items-center justify-center text-cyan-300 group-hover:bg-cyan-300/20 transition-colors duration-200",children:e.jsx(n,{size:18,"aria-hidden":"true"})}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"block text-sm font-semibold text-primary group-hover:text-cyan-200 transition-colors duration-200",children:a}),e.jsx("span",{className:"block text-xs text-muted-foreground leading-relaxed",children:o})]}),e.jsx(u,{size:16,"aria-hidden":"true",className:"shrink-0 text-muted-foreground group-hover:text-cyan-300 group-hover:translate-x-1 transition-all duration-200"})]},s))})]})]})]})]})}export{y as default}; diff --git a/assets/NotFound-B9aHRzOY.js b/assets/NotFound-B9aHRzOY.js deleted file mode 100644 index 232f9ac0..00000000 --- a/assets/NotFound-B9aHRzOY.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as r}from"./index-DlmjLVYe.js";import{N as i}from"./NeuralReveal-BflyZYSb.js";import{L as t}from"./vendor-PiU4YGcH.js";import{H as l,g as c,B as d,w as x,x as m,l as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const p=[{to:"/decoder",icon:c,title:"QECTOR Decoder v3",desc:"17 decoder configurations for Python"},{to:"/docs",icon:d,title:"Documentation Hub",desc:"Guides, manuals, and references"},{to:"/evidence",icon:x,title:"Evidence & Reports",desc:"Contracts, methodology, artifacts"},{to:"/contact",icon:m,title:"Contact Engineering",desc:"Talk to the team behind QECTOR"}];function y(){return e.jsxs(e.Fragment,{children:[e.jsx(r,{title:"Page Not Found · QECTOR",description:"The requested page could not be found.",noindex:!0}),e.jsxs("section",{className:"relative min-h-[80vh] flex items-center justify-center section-padding py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-transparent to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/3 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[36rem] h-[36rem] bg-cyan-400/5 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"relative z-10 w-full min-w-0 text-center max-w-2xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill mb-6",children:"404 · Not found"}),e.jsx("div",{className:"text-8xl md:text-9xl font-extrabold tracking-tight leading-none mb-6",children:e.jsx("span",{className:"text-transparent bg-clip-text bg-gradient-to-b from-cyan-300/80 to-cyan-300/10 select-none","aria-hidden":"true",children:"404"})}),e.jsx("h1",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-4",children:e.jsx(i,{text:"Page Not Found",className:"text-3xl md:text-4xl font-bold"})}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed max-w-prose mx-auto mb-10",children:"The page you are looking for does not exist or has been moved. The links below will get you back on track."}),e.jsxs("div",{className:"flex flex-wrap gap-4 justify-center mb-14",children:[e.jsxs(t,{to:"/",className:"btn-cyan inline-flex items-center gap-2",children:[e.jsx(l,{size:16,"aria-hidden":"true"}),"Back to Home"]}),e.jsx(t,{to:"/docs",className:"btn-outline",children:"Documentation"})]}),e.jsxs("div",{className:"text-left",children:[e.jsx("p",{className:"text-xs font-semibold uppercase tracking-widest text-muted-foreground mb-4 text-center",children:"You might be looking for"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:p.map(({to:s,icon:n,title:a,desc:o})=>e.jsxs(t,{to:s,className:"card-surface group flex items-center gap-4 !p-5 text-left",children:[e.jsx("span",{className:"shrink-0 w-10 h-10 rounded-xl bg-cyan-300/10 border border-cyan-300/20 flex items-center justify-center text-cyan-300 group-hover:bg-cyan-300/20 transition-colors duration-200",children:e.jsx(n,{size:18,"aria-hidden":"true"})}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"block text-sm font-semibold text-primary group-hover:text-cyan-200 transition-colors duration-200",children:a}),e.jsx("span",{className:"block text-xs text-muted-foreground leading-relaxed",children:o})]}),e.jsx(u,{size:16,"aria-hidden":"true",className:"shrink-0 text-muted-foreground group-hover:text-cyan-300 group-hover:translate-x-1 transition-all duration-200"})]},s))})]})]})]})]})}export{y as default}; diff --git a/assets/NotFound-BY-iDbPF.js b/assets/NotFound-BY-iDbPF.js deleted file mode 100644 index 71eea8a8..00000000 --- a/assets/NotFound-BY-iDbPF.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as r,L as t}from"./index-c1PDYu0j.js";import{N as i}from"./NeuralReveal-uYarhiMA.js";import{H as l,g as c,B as d,w as x,x as m,l as u}from"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const g=[{to:"/decoder",icon:c,title:"QECTOR Decoder v3",desc:"17 decoder configurations for Python"},{to:"/docs",icon:d,title:"Documentation Hub",desc:"Guides, manuals, and references"},{to:"/evidence",icon:x,title:"Evidence & Reports",desc:"Contracts, methodology, artifacts"},{to:"/contact",icon:m,title:"Contact Engineering",desc:"Talk to the team behind QECTOR"}];function N(){return e.jsxs(e.Fragment,{children:[e.jsx(r,{title:"Page Not Found · QECTOR",description:"The requested page could not be found.",noindex:!0}),e.jsxs("section",{className:"relative min-h-[80vh] flex items-center justify-center section-padding py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-transparent to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/3 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[36rem] h-[36rem] bg-cyan-400/5 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"relative z-10 w-full min-w-0 text-center max-w-2xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill mb-6",children:"404 · Not found"}),e.jsx("div",{className:"text-8xl md:text-9xl font-extrabold tracking-tight leading-none mb-6",children:e.jsx("span",{className:"text-transparent bg-clip-text bg-gradient-to-b from-cyan-300/80 to-cyan-300/10 select-none","aria-hidden":"true",children:"404"})}),e.jsx("h1",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-4",children:e.jsx(i,{text:"Page Not Found",className:"text-3xl md:text-4xl font-bold"})}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed max-w-prose mx-auto mb-10",children:"The page you are looking for does not exist or has been moved. The links below will get you back on track."}),e.jsxs("div",{className:"flex flex-wrap gap-4 justify-center mb-14",children:[e.jsxs(t,{to:"/",className:"btn-cyan inline-flex items-center gap-2",children:[e.jsx(l,{size:16,"aria-hidden":"true"}),"Back to Home"]}),e.jsx(t,{to:"/docs",className:"btn-outline",children:"Documentation"})]}),e.jsxs("div",{className:"text-left",children:[e.jsx("p",{className:"text-xs font-semibold uppercase tracking-widest text-muted-foreground mb-4 text-center",children:"You might be looking for"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:g.map(({to:s,icon:n,title:a,desc:o})=>e.jsxs(t,{to:s,className:"card-surface group flex items-center gap-4 !p-5 text-left",children:[e.jsx("span",{className:"shrink-0 w-10 h-10 rounded-xl bg-cyan-300/10 border border-cyan-300/20 flex items-center justify-center text-cyan-300 group-hover:bg-cyan-300/20 transition-colors duration-200",children:e.jsx(n,{size:18,"aria-hidden":"true"})}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"block text-sm font-semibold text-primary group-hover:text-cyan-200 transition-colors duration-200",children:a}),e.jsx("span",{className:"block text-xs text-muted-foreground leading-relaxed",children:o})]}),e.jsx(u,{size:16,"aria-hidden":"true",className:"shrink-0 text-muted-foreground group-hover:text-cyan-300 group-hover:translate-x-1 transition-all duration-200"})]},s))})]})]})]})]})}export{N as default}; diff --git a/assets/NotFound-BizOSXTq.js b/assets/NotFound-BizOSXTq.js deleted file mode 100644 index 7115a323..00000000 --- a/assets/NotFound-BizOSXTq.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as r}from"./index-CpdATiEY.js";import{N as i}from"./NeuralReveal-BflyZYSb.js";import{L as t}from"./vendor-PiU4YGcH.js";import{H as l,g as c,B as d,w as x,x as m,l as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const p=[{to:"/decoder",icon:c,title:"QECTOR Decoder v3",desc:"17 decoder configurations for Python"},{to:"/docs",icon:d,title:"Documentation Hub",desc:"Guides, manuals, and references"},{to:"/evidence",icon:x,title:"Evidence & Reports",desc:"Contracts, methodology, artifacts"},{to:"/contact",icon:m,title:"Contact Engineering",desc:"Talk to the team behind QECTOR"}];function y(){return e.jsxs(e.Fragment,{children:[e.jsx(r,{title:"Page Not Found · QECTOR",description:"The requested page could not be found.",noindex:!0}),e.jsxs("section",{className:"relative min-h-[80vh] flex items-center justify-center section-padding py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-transparent to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/3 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[36rem] h-[36rem] bg-cyan-400/5 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"relative z-10 w-full min-w-0 text-center max-w-2xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill mb-6",children:"404 · Not found"}),e.jsx("div",{className:"text-8xl md:text-9xl font-extrabold tracking-tight leading-none mb-6",children:e.jsx("span",{className:"text-transparent bg-clip-text bg-gradient-to-b from-cyan-300/80 to-cyan-300/10 select-none","aria-hidden":"true",children:"404"})}),e.jsx("h1",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-4",children:e.jsx(i,{text:"Page Not Found",className:"text-3xl md:text-4xl font-bold"})}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed max-w-prose mx-auto mb-10",children:"The page you are looking for does not exist or has been moved. The links below will get you back on track."}),e.jsxs("div",{className:"flex flex-wrap gap-4 justify-center mb-14",children:[e.jsxs(t,{to:"/",className:"btn-cyan inline-flex items-center gap-2",children:[e.jsx(l,{size:16,"aria-hidden":"true"}),"Back to Home"]}),e.jsx(t,{to:"/docs",className:"btn-outline",children:"Documentation"})]}),e.jsxs("div",{className:"text-left",children:[e.jsx("p",{className:"text-xs font-semibold uppercase tracking-widest text-muted-foreground mb-4 text-center",children:"You might be looking for"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:p.map(({to:s,icon:n,title:a,desc:o})=>e.jsxs(t,{to:s,className:"card-surface group flex items-center gap-4 !p-5 text-left",children:[e.jsx("span",{className:"shrink-0 w-10 h-10 rounded-xl bg-cyan-300/10 border border-cyan-300/20 flex items-center justify-center text-cyan-300 group-hover:bg-cyan-300/20 transition-colors duration-200",children:e.jsx(n,{size:18,"aria-hidden":"true"})}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"block text-sm font-semibold text-primary group-hover:text-cyan-200 transition-colors duration-200",children:a}),e.jsx("span",{className:"block text-xs text-muted-foreground leading-relaxed",children:o})]}),e.jsx(u,{size:16,"aria-hidden":"true",className:"shrink-0 text-muted-foreground group-hover:text-cyan-300 group-hover:translate-x-1 transition-all duration-200"})]},s))})]})]})]})]})}export{y as default}; diff --git a/assets/NotFound-BqfnwVjo.js b/assets/NotFound-BqfnwVjo.js deleted file mode 100644 index 4d8088f4..00000000 --- a/assets/NotFound-BqfnwVjo.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as r}from"./index-DkYdPRY7.js";import{N as i}from"./NeuralReveal-BflyZYSb.js";import{L as t}from"./vendor-PiU4YGcH.js";import{H as l,g as c,B as d,w as x,x as m,l as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const p=[{to:"/decoder",icon:c,title:"QECTOR Decoder v3",desc:"17 decoder configurations for Python"},{to:"/docs",icon:d,title:"Documentation Hub",desc:"Guides, manuals, and references"},{to:"/evidence",icon:x,title:"Evidence & Reports",desc:"Contracts, methodology, artifacts"},{to:"/contact",icon:m,title:"Contact Engineering",desc:"Talk to the team behind QECTOR"}];function y(){return e.jsxs(e.Fragment,{children:[e.jsx(r,{title:"Page Not Found · QECTOR",description:"The requested page could not be found.",noindex:!0}),e.jsxs("section",{className:"relative min-h-[80vh] flex items-center justify-center section-padding py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-transparent to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/3 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[36rem] h-[36rem] bg-cyan-400/5 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"relative z-10 w-full min-w-0 text-center max-w-2xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill mb-6",children:"404 · Not found"}),e.jsx("div",{className:"text-8xl md:text-9xl font-extrabold tracking-tight leading-none mb-6",children:e.jsx("span",{className:"text-transparent bg-clip-text bg-gradient-to-b from-cyan-300/80 to-cyan-300/10 select-none","aria-hidden":"true",children:"404"})}),e.jsx("h1",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-4",children:e.jsx(i,{text:"Page Not Found",className:"text-3xl md:text-4xl font-bold"})}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed max-w-prose mx-auto mb-10",children:"The page you are looking for does not exist or has been moved. The links below will get you back on track."}),e.jsxs("div",{className:"flex flex-wrap gap-4 justify-center mb-14",children:[e.jsxs(t,{to:"/",className:"btn-cyan inline-flex items-center gap-2",children:[e.jsx(l,{size:16,"aria-hidden":"true"}),"Back to Home"]}),e.jsx(t,{to:"/docs",className:"btn-outline",children:"Documentation"})]}),e.jsxs("div",{className:"text-left",children:[e.jsx("p",{className:"text-xs font-semibold uppercase tracking-widest text-muted-foreground mb-4 text-center",children:"You might be looking for"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:p.map(({to:s,icon:n,title:a,desc:o})=>e.jsxs(t,{to:s,className:"card-surface group flex items-center gap-4 !p-5 text-left",children:[e.jsx("span",{className:"shrink-0 w-10 h-10 rounded-xl bg-cyan-300/10 border border-cyan-300/20 flex items-center justify-center text-cyan-300 group-hover:bg-cyan-300/20 transition-colors duration-200",children:e.jsx(n,{size:18,"aria-hidden":"true"})}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"block text-sm font-semibold text-primary group-hover:text-cyan-200 transition-colors duration-200",children:a}),e.jsx("span",{className:"block text-xs text-muted-foreground leading-relaxed",children:o})]}),e.jsx(u,{size:16,"aria-hidden":"true",className:"shrink-0 text-muted-foreground group-hover:text-cyan-300 group-hover:translate-x-1 transition-all duration-200"})]},s))})]})]})]})]})}export{y as default}; diff --git a/assets/NotFound-BvmxweJ_.js b/assets/NotFound-BvmxweJ_.js deleted file mode 100644 index 190fd779..00000000 --- a/assets/NotFound-BvmxweJ_.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as r}from"./index-BUYYSLdX.js";import{N as i}from"./NeuralReveal-BflyZYSb.js";import{L as t}from"./vendor-PiU4YGcH.js";import{H as l,g as c,B as d,w as x,x as m,l as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const p=[{to:"/decoder",icon:c,title:"QECTOR Decoder v3",desc:"17 decoder configurations for Python"},{to:"/docs",icon:d,title:"Documentation Hub",desc:"Guides, manuals, and references"},{to:"/evidence",icon:x,title:"Evidence & Reports",desc:"Contracts, methodology, artifacts"},{to:"/contact",icon:m,title:"Contact Engineering",desc:"Talk to the team behind QECTOR"}];function y(){return e.jsxs(e.Fragment,{children:[e.jsx(r,{title:"Page Not Found · QECTOR",description:"The requested page could not be found.",noindex:!0}),e.jsxs("section",{className:"relative min-h-[80vh] flex items-center justify-center section-padding py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-transparent to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/3 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[36rem] h-[36rem] bg-cyan-400/5 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"relative z-10 w-full min-w-0 text-center max-w-2xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill mb-6",children:"404 · Not found"}),e.jsx("div",{className:"text-8xl md:text-9xl font-extrabold tracking-tight leading-none mb-6",children:e.jsx("span",{className:"text-transparent bg-clip-text bg-gradient-to-b from-cyan-300/80 to-cyan-300/10 select-none","aria-hidden":"true",children:"404"})}),e.jsx("h1",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-4",children:e.jsx(i,{text:"Page Not Found",className:"text-3xl md:text-4xl font-bold"})}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed max-w-prose mx-auto mb-10",children:"The page you are looking for does not exist or has been moved. The links below will get you back on track."}),e.jsxs("div",{className:"flex flex-wrap gap-4 justify-center mb-14",children:[e.jsxs(t,{to:"/",className:"btn-cyan inline-flex items-center gap-2",children:[e.jsx(l,{size:16,"aria-hidden":"true"}),"Back to Home"]}),e.jsx(t,{to:"/docs",className:"btn-outline",children:"Documentation"})]}),e.jsxs("div",{className:"text-left",children:[e.jsx("p",{className:"text-xs font-semibold uppercase tracking-widest text-muted-foreground mb-4 text-center",children:"You might be looking for"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:p.map(({to:s,icon:n,title:a,desc:o})=>e.jsxs(t,{to:s,className:"card-surface group flex items-center gap-4 !p-5 text-left",children:[e.jsx("span",{className:"shrink-0 w-10 h-10 rounded-xl bg-cyan-300/10 border border-cyan-300/20 flex items-center justify-center text-cyan-300 group-hover:bg-cyan-300/20 transition-colors duration-200",children:e.jsx(n,{size:18,"aria-hidden":"true"})}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"block text-sm font-semibold text-primary group-hover:text-cyan-200 transition-colors duration-200",children:a}),e.jsx("span",{className:"block text-xs text-muted-foreground leading-relaxed",children:o})]}),e.jsx(u,{size:16,"aria-hidden":"true",className:"shrink-0 text-muted-foreground group-hover:text-cyan-300 group-hover:translate-x-1 transition-all duration-200"})]},s))})]})]})]})]})}export{y as default}; diff --git a/assets/NotFound-BxTs_LlH.js b/assets/NotFound-BxTs_LlH.js deleted file mode 100644 index 8e3d72f4..00000000 --- a/assets/NotFound-BxTs_LlH.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as r}from"./index-WV1aysjN.js";import{N as i}from"./NeuralReveal-BflyZYSb.js";import{L as t}from"./vendor-PiU4YGcH.js";import{H as l,g as c,B as d,w as x,x as m,l as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const p=[{to:"/decoder",icon:c,title:"QECTOR Decoder v3",desc:"17 decoder configurations for Python"},{to:"/docs",icon:d,title:"Documentation Hub",desc:"Guides, manuals, and references"},{to:"/evidence",icon:x,title:"Evidence & Reports",desc:"Contracts, methodology, artifacts"},{to:"/contact",icon:m,title:"Contact Engineering",desc:"Talk to the team behind QECTOR"}];function y(){return e.jsxs(e.Fragment,{children:[e.jsx(r,{title:"Page Not Found · QECTOR",description:"The requested page could not be found.",noindex:!0}),e.jsxs("section",{className:"relative min-h-[80vh] flex items-center justify-center section-padding py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-transparent to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/3 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[36rem] h-[36rem] bg-cyan-400/5 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"relative z-10 w-full min-w-0 text-center max-w-2xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill mb-6",children:"404 · Not found"}),e.jsx("div",{className:"text-8xl md:text-9xl font-extrabold tracking-tight leading-none mb-6",children:e.jsx("span",{className:"text-transparent bg-clip-text bg-gradient-to-b from-cyan-300/80 to-cyan-300/10 select-none","aria-hidden":"true",children:"404"})}),e.jsx("h1",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-4",children:e.jsx(i,{text:"Page Not Found",className:"text-3xl md:text-4xl font-bold"})}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed max-w-prose mx-auto mb-10",children:"The page you are looking for does not exist or has been moved. The links below will get you back on track."}),e.jsxs("div",{className:"flex flex-wrap gap-4 justify-center mb-14",children:[e.jsxs(t,{to:"/",className:"btn-cyan inline-flex items-center gap-2",children:[e.jsx(l,{size:16,"aria-hidden":"true"}),"Back to Home"]}),e.jsx(t,{to:"/docs",className:"btn-outline",children:"Documentation"})]}),e.jsxs("div",{className:"text-left",children:[e.jsx("p",{className:"text-xs font-semibold uppercase tracking-widest text-muted-foreground mb-4 text-center",children:"You might be looking for"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:p.map(({to:s,icon:n,title:a,desc:o})=>e.jsxs(t,{to:s,className:"card-surface group flex items-center gap-4 !p-5 text-left",children:[e.jsx("span",{className:"shrink-0 w-10 h-10 rounded-xl bg-cyan-300/10 border border-cyan-300/20 flex items-center justify-center text-cyan-300 group-hover:bg-cyan-300/20 transition-colors duration-200",children:e.jsx(n,{size:18,"aria-hidden":"true"})}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"block text-sm font-semibold text-primary group-hover:text-cyan-200 transition-colors duration-200",children:a}),e.jsx("span",{className:"block text-xs text-muted-foreground leading-relaxed",children:o})]}),e.jsx(u,{size:16,"aria-hidden":"true",className:"shrink-0 text-muted-foreground group-hover:text-cyan-300 group-hover:translate-x-1 transition-all duration-200"})]},s))})]})]})]})]})}export{y as default}; diff --git a/assets/NotFound-C-HGJzn4.js b/assets/NotFound-C-HGJzn4.js deleted file mode 100644 index c99293aa..00000000 --- a/assets/NotFound-C-HGJzn4.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as r}from"./index-BcbVjARk.js";import{N as i}from"./NeuralReveal-BflyZYSb.js";import{L as t}from"./vendor-PiU4YGcH.js";import{H as l,g as c,B as d,w as x,x as m,l as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const p=[{to:"/decoder",icon:c,title:"QECTOR Decoder v3",desc:"17 decoder configurations for Python"},{to:"/docs",icon:d,title:"Documentation Hub",desc:"Guides, manuals, and references"},{to:"/evidence",icon:x,title:"Evidence & Reports",desc:"Contracts, methodology, artifacts"},{to:"/contact",icon:m,title:"Contact Engineering",desc:"Talk to the team behind QECTOR"}];function y(){return e.jsxs(e.Fragment,{children:[e.jsx(r,{title:"Page Not Found · QECTOR",description:"The requested page could not be found.",noindex:!0}),e.jsxs("section",{className:"relative min-h-[80vh] flex items-center justify-center section-padding py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-transparent to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/3 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[36rem] h-[36rem] bg-cyan-400/5 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"relative z-10 w-full min-w-0 text-center max-w-2xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill mb-6",children:"404 · Not found"}),e.jsx("div",{className:"text-8xl md:text-9xl font-extrabold tracking-tight leading-none mb-6",children:e.jsx("span",{className:"text-transparent bg-clip-text bg-gradient-to-b from-cyan-300/80 to-cyan-300/10 select-none","aria-hidden":"true",children:"404"})}),e.jsx("h1",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-4",children:e.jsx(i,{text:"Page Not Found",className:"text-3xl md:text-4xl font-bold"})}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed max-w-prose mx-auto mb-10",children:"The page you are looking for does not exist or has been moved. The links below will get you back on track."}),e.jsxs("div",{className:"flex flex-wrap gap-4 justify-center mb-14",children:[e.jsxs(t,{to:"/",className:"btn-cyan inline-flex items-center gap-2",children:[e.jsx(l,{size:16,"aria-hidden":"true"}),"Back to Home"]}),e.jsx(t,{to:"/docs",className:"btn-outline",children:"Documentation"})]}),e.jsxs("div",{className:"text-left",children:[e.jsx("p",{className:"text-xs font-semibold uppercase tracking-widest text-muted-foreground mb-4 text-center",children:"You might be looking for"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:p.map(({to:s,icon:n,title:a,desc:o})=>e.jsxs(t,{to:s,className:"card-surface group flex items-center gap-4 !p-5 text-left",children:[e.jsx("span",{className:"shrink-0 w-10 h-10 rounded-xl bg-cyan-300/10 border border-cyan-300/20 flex items-center justify-center text-cyan-300 group-hover:bg-cyan-300/20 transition-colors duration-200",children:e.jsx(n,{size:18,"aria-hidden":"true"})}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"block text-sm font-semibold text-primary group-hover:text-cyan-200 transition-colors duration-200",children:a}),e.jsx("span",{className:"block text-xs text-muted-foreground leading-relaxed",children:o})]}),e.jsx(u,{size:16,"aria-hidden":"true",className:"shrink-0 text-muted-foreground group-hover:text-cyan-300 group-hover:translate-x-1 transition-all duration-200"})]},s))})]})]})]})]})}export{y as default}; diff --git a/assets/NotFound-COhWWTle.js b/assets/NotFound-COhWWTle.js deleted file mode 100644 index de28bf6b..00000000 --- a/assets/NotFound-COhWWTle.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as r}from"./index-CxWP17m6.js";import{N as i}from"./NeuralReveal-BflyZYSb.js";import{L as t}from"./vendor-PiU4YGcH.js";import{H as l,g as c,B as d,w as x,x as m,l as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const p=[{to:"/decoder",icon:c,title:"QECTOR Decoder v3",desc:"17 decoder configurations for Python"},{to:"/docs",icon:d,title:"Documentation Hub",desc:"Guides, manuals, and references"},{to:"/evidence",icon:x,title:"Evidence & Reports",desc:"Contracts, methodology, artifacts"},{to:"/contact",icon:m,title:"Contact Engineering",desc:"Talk to the team behind QECTOR"}];function y(){return e.jsxs(e.Fragment,{children:[e.jsx(r,{title:"Page Not Found · QECTOR",description:"The requested page could not be found.",noindex:!0}),e.jsxs("section",{className:"relative min-h-[80vh] flex items-center justify-center section-padding py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-transparent to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/3 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[36rem] h-[36rem] bg-cyan-400/5 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"relative z-10 w-full min-w-0 text-center max-w-2xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill mb-6",children:"404 · Not found"}),e.jsx("div",{className:"text-8xl md:text-9xl font-extrabold tracking-tight leading-none mb-6",children:e.jsx("span",{className:"text-transparent bg-clip-text bg-gradient-to-b from-cyan-300/80 to-cyan-300/10 select-none","aria-hidden":"true",children:"404"})}),e.jsx("h1",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-4",children:e.jsx(i,{text:"Page Not Found",className:"text-3xl md:text-4xl font-bold"})}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed max-w-prose mx-auto mb-10",children:"The page you are looking for does not exist or has been moved. The links below will get you back on track."}),e.jsxs("div",{className:"flex flex-wrap gap-4 justify-center mb-14",children:[e.jsxs(t,{to:"/",className:"btn-cyan inline-flex items-center gap-2",children:[e.jsx(l,{size:16,"aria-hidden":"true"}),"Back to Home"]}),e.jsx(t,{to:"/docs",className:"btn-outline",children:"Documentation"})]}),e.jsxs("div",{className:"text-left",children:[e.jsx("p",{className:"text-xs font-semibold uppercase tracking-widest text-muted-foreground mb-4 text-center",children:"You might be looking for"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:p.map(({to:s,icon:n,title:a,desc:o})=>e.jsxs(t,{to:s,className:"card-surface group flex items-center gap-4 !p-5 text-left",children:[e.jsx("span",{className:"shrink-0 w-10 h-10 rounded-xl bg-cyan-300/10 border border-cyan-300/20 flex items-center justify-center text-cyan-300 group-hover:bg-cyan-300/20 transition-colors duration-200",children:e.jsx(n,{size:18,"aria-hidden":"true"})}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"block text-sm font-semibold text-primary group-hover:text-cyan-200 transition-colors duration-200",children:a}),e.jsx("span",{className:"block text-xs text-muted-foreground leading-relaxed",children:o})]}),e.jsx(u,{size:16,"aria-hidden":"true",className:"shrink-0 text-muted-foreground group-hover:text-cyan-300 group-hover:translate-x-1 transition-all duration-200"})]},s))})]})]})]})]})}export{y as default}; diff --git a/assets/NotFound-CYYBlHH3.js b/assets/NotFound-CYYBlHH3.js deleted file mode 100644 index f95cadd5..00000000 --- a/assets/NotFound-CYYBlHH3.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as r,L as t}from"./index-CcwlvHYJ.js";import{N as i}from"./NeuralReveal-Bsl9IGCr.js";import{H as l,g as c,B as d,w as x,x as m,l as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";const g=[{to:"/decoder",icon:c,title:"QECTOR Decoder v3",desc:"17 decoder configurations for Python"},{to:"/docs",icon:d,title:"Documentation Hub",desc:"Guides, manuals, and references"},{to:"/evidence",icon:x,title:"Evidence & Reports",desc:"Contracts, methodology, artifacts"},{to:"/contact",icon:m,title:"Contact Engineering",desc:"Talk to the team behind QECTOR"}];function N(){return e.jsxs(e.Fragment,{children:[e.jsx(r,{title:"Page Not Found · QECTOR",description:"The requested page could not be found.",noindex:!0}),e.jsxs("section",{className:"relative min-h-[80vh] flex items-center justify-center section-padding py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-transparent to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/3 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[36rem] h-[36rem] bg-cyan-400/5 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"relative z-10 w-full min-w-0 text-center max-w-2xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill mb-6",children:"404 · Not found"}),e.jsx("div",{className:"text-8xl md:text-9xl font-extrabold tracking-tight leading-none mb-6",children:e.jsx("span",{className:"text-transparent bg-clip-text bg-gradient-to-b from-cyan-300/80 to-cyan-300/10 select-none","aria-hidden":"true",children:"404"})}),e.jsx("h1",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-4",children:e.jsx(i,{text:"Page Not Found",className:"text-3xl md:text-4xl font-bold"})}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed max-w-prose mx-auto mb-10",children:"The page you are looking for does not exist or has been moved. The links below will get you back on track."}),e.jsxs("div",{className:"flex flex-wrap gap-4 justify-center mb-14",children:[e.jsxs(t,{to:"/",className:"btn-cyan inline-flex items-center gap-2",children:[e.jsx(l,{size:16,"aria-hidden":"true"}),"Back to Home"]}),e.jsx(t,{to:"/docs",className:"btn-outline",children:"Documentation"})]}),e.jsxs("div",{className:"text-left",children:[e.jsx("p",{className:"text-xs font-semibold uppercase tracking-widest text-muted-foreground mb-4 text-center",children:"You might be looking for"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:g.map(({to:s,icon:n,title:a,desc:o})=>e.jsxs(t,{to:s,className:"card-surface group flex items-center gap-4 !p-5 text-left",children:[e.jsx("span",{className:"shrink-0 w-10 h-10 rounded-xl bg-cyan-300/10 border border-cyan-300/20 flex items-center justify-center text-cyan-300 group-hover:bg-cyan-300/20 transition-colors duration-200",children:e.jsx(n,{size:18,"aria-hidden":"true"})}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"block text-sm font-semibold text-primary group-hover:text-cyan-200 transition-colors duration-200",children:a}),e.jsx("span",{className:"block text-xs text-muted-foreground leading-relaxed",children:o})]}),e.jsx(u,{size:16,"aria-hidden":"true",className:"shrink-0 text-muted-foreground group-hover:text-cyan-300 group-hover:translate-x-1 transition-all duration-200"})]},s))})]})]})]})]})}export{N as default}; diff --git a/assets/NotFound-Ceu7jCqq.js b/assets/NotFound-Ceu7jCqq.js deleted file mode 100644 index 62090961..00000000 --- a/assets/NotFound-Ceu7jCqq.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as r}from"./index-B9kEGiWi.js";import{N as i}from"./NeuralReveal-BflyZYSb.js";import{L as t}from"./vendor-PiU4YGcH.js";import{H as l,g as c,B as d,w as x,x as m,l as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const p=[{to:"/decoder",icon:c,title:"QECTOR Decoder v3",desc:"17 decoder configurations for Python"},{to:"/docs",icon:d,title:"Documentation Hub",desc:"Guides, manuals, and references"},{to:"/evidence",icon:x,title:"Evidence & Reports",desc:"Contracts, methodology, artifacts"},{to:"/contact",icon:m,title:"Contact Engineering",desc:"Talk to the team behind QECTOR"}];function y(){return e.jsxs(e.Fragment,{children:[e.jsx(r,{title:"Page Not Found · QECTOR",description:"The requested page could not be found.",noindex:!0}),e.jsxs("section",{className:"relative min-h-[80vh] flex items-center justify-center section-padding py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-transparent to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/3 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[36rem] h-[36rem] bg-cyan-400/5 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"relative z-10 w-full min-w-0 text-center max-w-2xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill mb-6",children:"404 · Not found"}),e.jsx("div",{className:"text-8xl md:text-9xl font-extrabold tracking-tight leading-none mb-6",children:e.jsx("span",{className:"text-transparent bg-clip-text bg-gradient-to-b from-cyan-300/80 to-cyan-300/10 select-none","aria-hidden":"true",children:"404"})}),e.jsx("h1",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-4",children:e.jsx(i,{text:"Page Not Found",className:"text-3xl md:text-4xl font-bold"})}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed max-w-prose mx-auto mb-10",children:"The page you are looking for does not exist or has been moved. The links below will get you back on track."}),e.jsxs("div",{className:"flex flex-wrap gap-4 justify-center mb-14",children:[e.jsxs(t,{to:"/",className:"btn-cyan inline-flex items-center gap-2",children:[e.jsx(l,{size:16,"aria-hidden":"true"}),"Back to Home"]}),e.jsx(t,{to:"/docs",className:"btn-outline",children:"Documentation"})]}),e.jsxs("div",{className:"text-left",children:[e.jsx("p",{className:"text-xs font-semibold uppercase tracking-widest text-muted-foreground mb-4 text-center",children:"You might be looking for"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:p.map(({to:s,icon:n,title:a,desc:o})=>e.jsxs(t,{to:s,className:"card-surface group flex items-center gap-4 !p-5 text-left",children:[e.jsx("span",{className:"shrink-0 w-10 h-10 rounded-xl bg-cyan-300/10 border border-cyan-300/20 flex items-center justify-center text-cyan-300 group-hover:bg-cyan-300/20 transition-colors duration-200",children:e.jsx(n,{size:18,"aria-hidden":"true"})}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"block text-sm font-semibold text-primary group-hover:text-cyan-200 transition-colors duration-200",children:a}),e.jsx("span",{className:"block text-xs text-muted-foreground leading-relaxed",children:o})]}),e.jsx(u,{size:16,"aria-hidden":"true",className:"shrink-0 text-muted-foreground group-hover:text-cyan-300 group-hover:translate-x-1 transition-all duration-200"})]},s))})]})]})]})]})}export{y as default}; diff --git a/assets/NotFound-Cn29WaZX.js b/assets/NotFound-Cn29WaZX.js deleted file mode 100644 index 4bc7fc50..00000000 --- a/assets/NotFound-Cn29WaZX.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as r}from"./index-CqAA-ZXu.js";import{N as i}from"./NeuralReveal-BflyZYSb.js";import{L as t}from"./vendor-PiU4YGcH.js";import{H as l,g as c,B as d,w as x,x as m,l as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const p=[{to:"/decoder",icon:c,title:"QECTOR Decoder v3",desc:"17 decoder configurations for Python"},{to:"/docs",icon:d,title:"Documentation Hub",desc:"Guides, manuals, and references"},{to:"/evidence",icon:x,title:"Evidence & Reports",desc:"Contracts, methodology, artifacts"},{to:"/contact",icon:m,title:"Contact Engineering",desc:"Talk to the team behind QECTOR"}];function y(){return e.jsxs(e.Fragment,{children:[e.jsx(r,{title:"Page Not Found · QECTOR",description:"The requested page could not be found.",noindex:!0}),e.jsxs("section",{className:"relative min-h-[80vh] flex items-center justify-center section-padding py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-transparent to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/3 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[36rem] h-[36rem] bg-cyan-400/5 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"relative z-10 w-full min-w-0 text-center max-w-2xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill mb-6",children:"404 · Not found"}),e.jsx("div",{className:"text-8xl md:text-9xl font-extrabold tracking-tight leading-none mb-6",children:e.jsx("span",{className:"text-transparent bg-clip-text bg-gradient-to-b from-cyan-300/80 to-cyan-300/10 select-none","aria-hidden":"true",children:"404"})}),e.jsx("h1",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-4",children:e.jsx(i,{text:"Page Not Found",className:"text-3xl md:text-4xl font-bold"})}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed max-w-prose mx-auto mb-10",children:"The page you are looking for does not exist or has been moved. The links below will get you back on track."}),e.jsxs("div",{className:"flex flex-wrap gap-4 justify-center mb-14",children:[e.jsxs(t,{to:"/",className:"btn-cyan inline-flex items-center gap-2",children:[e.jsx(l,{size:16,"aria-hidden":"true"}),"Back to Home"]}),e.jsx(t,{to:"/docs",className:"btn-outline",children:"Documentation"})]}),e.jsxs("div",{className:"text-left",children:[e.jsx("p",{className:"text-xs font-semibold uppercase tracking-widest text-muted-foreground mb-4 text-center",children:"You might be looking for"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:p.map(({to:s,icon:n,title:a,desc:o})=>e.jsxs(t,{to:s,className:"card-surface group flex items-center gap-4 !p-5 text-left",children:[e.jsx("span",{className:"shrink-0 w-10 h-10 rounded-xl bg-cyan-300/10 border border-cyan-300/20 flex items-center justify-center text-cyan-300 group-hover:bg-cyan-300/20 transition-colors duration-200",children:e.jsx(n,{size:18,"aria-hidden":"true"})}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"block text-sm font-semibold text-primary group-hover:text-cyan-200 transition-colors duration-200",children:a}),e.jsx("span",{className:"block text-xs text-muted-foreground leading-relaxed",children:o})]}),e.jsx(u,{size:16,"aria-hidden":"true",className:"shrink-0 text-muted-foreground group-hover:text-cyan-300 group-hover:translate-x-1 transition-all duration-200"})]},s))})]})]})]})]})}export{y as default}; diff --git a/assets/NotFound-D-ACnmyk.js b/assets/NotFound-D-ACnmyk.js deleted file mode 100644 index a87fba83..00000000 --- a/assets/NotFound-D-ACnmyk.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as r}from"./index-Bh9DBCb3.js";import{N as i}from"./NeuralReveal-D-EQoOl2.js";import{L as t}from"./vendor-PiU4YGcH.js";import{H as l,g as c,B as d,w as x,x as m,l as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const p=[{to:"/decoder",icon:c,title:"QECTOR Decoder v3",desc:"17 decoder configurations for Python"},{to:"/docs",icon:d,title:"Documentation Hub",desc:"Guides, manuals, and references"},{to:"/evidence",icon:x,title:"Evidence & Reports",desc:"Contracts, methodology, artifacts"},{to:"/contact",icon:m,title:"Contact Engineering",desc:"Talk to the team behind QECTOR"}];function y(){return e.jsxs(e.Fragment,{children:[e.jsx(r,{title:"Page Not Found · QECTOR",description:"The requested page could not be found.",noindex:!0}),e.jsxs("section",{className:"relative min-h-[80vh] flex items-center justify-center section-padding py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-transparent to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/3 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[36rem] h-[36rem] bg-cyan-400/5 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"relative z-10 w-full min-w-0 text-center max-w-2xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill mb-6",children:"404 · Not found"}),e.jsx("div",{className:"text-8xl md:text-9xl font-extrabold tracking-tight leading-none mb-6",children:e.jsx("span",{className:"text-transparent bg-clip-text bg-gradient-to-b from-cyan-300/80 to-cyan-300/10 select-none","aria-hidden":"true",children:"404"})}),e.jsx("h1",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-4",children:e.jsx(i,{text:"Page Not Found",className:"text-3xl md:text-4xl font-bold"})}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed max-w-prose mx-auto mb-10",children:"The page you are looking for does not exist or has been moved. The links below will get you back on track."}),e.jsxs("div",{className:"flex flex-wrap gap-4 justify-center mb-14",children:[e.jsxs(t,{to:"/",className:"btn-cyan inline-flex items-center gap-2",children:[e.jsx(l,{size:16,"aria-hidden":"true"}),"Back to Home"]}),e.jsx(t,{to:"/docs",className:"btn-outline",children:"Documentation"})]}),e.jsxs("div",{className:"text-left",children:[e.jsx("p",{className:"text-xs font-semibold uppercase tracking-widest text-muted-foreground mb-4 text-center",children:"You might be looking for"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:p.map(({to:s,icon:n,title:a,desc:o})=>e.jsxs(t,{to:s,className:"card-surface group flex items-center gap-4 !p-5 text-left",children:[e.jsx("span",{className:"shrink-0 w-10 h-10 rounded-xl bg-cyan-300/10 border border-cyan-300/20 flex items-center justify-center text-cyan-300 group-hover:bg-cyan-300/20 transition-colors duration-200",children:e.jsx(n,{size:18,"aria-hidden":"true"})}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"block text-sm font-semibold text-primary group-hover:text-cyan-200 transition-colors duration-200",children:a}),e.jsx("span",{className:"block text-xs text-muted-foreground leading-relaxed",children:o})]}),e.jsx(u,{size:16,"aria-hidden":"true",className:"shrink-0 text-muted-foreground group-hover:text-cyan-300 group-hover:translate-x-1 transition-all duration-200"})]},s))})]})]})]})]})}export{y as default}; diff --git a/assets/NotFound-DF9dH9QN.js b/assets/NotFound-DF9dH9QN.js deleted file mode 100644 index 1c35b05b..00000000 --- a/assets/NotFound-DF9dH9QN.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as r,L as t}from"./index-DayaklK-.js";import{N as i}from"./NeuralReveal-uYarhiMA.js";import{H as l,g as c,B as d,w as x,x as m,l as u}from"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const g=[{to:"/decoder",icon:c,title:"QECTOR Decoder v3",desc:"17 decoder configurations for Python"},{to:"/docs",icon:d,title:"Documentation Hub",desc:"Guides, manuals, and references"},{to:"/evidence",icon:x,title:"Evidence & Reports",desc:"Contracts, methodology, artifacts"},{to:"/contact",icon:m,title:"Contact Engineering",desc:"Talk to the team behind QECTOR"}];function N(){return e.jsxs(e.Fragment,{children:[e.jsx(r,{title:"Page Not Found · QECTOR",description:"The requested page could not be found.",noindex:!0}),e.jsxs("section",{className:"relative min-h-[80vh] flex items-center justify-center section-padding py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-transparent to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/3 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[36rem] h-[36rem] bg-cyan-400/5 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"relative z-10 w-full min-w-0 text-center max-w-2xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill mb-6",children:"404 · Not found"}),e.jsx("div",{className:"text-8xl md:text-9xl font-extrabold tracking-tight leading-none mb-6",children:e.jsx("span",{className:"text-transparent bg-clip-text bg-gradient-to-b from-cyan-300/80 to-cyan-300/10 select-none","aria-hidden":"true",children:"404"})}),e.jsx("h1",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-4",children:e.jsx(i,{text:"Page Not Found",className:"text-3xl md:text-4xl font-bold"})}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed max-w-prose mx-auto mb-10",children:"The page you are looking for does not exist or has been moved. The links below will get you back on track."}),e.jsxs("div",{className:"flex flex-wrap gap-4 justify-center mb-14",children:[e.jsxs(t,{to:"/",className:"btn-cyan inline-flex items-center gap-2",children:[e.jsx(l,{size:16,"aria-hidden":"true"}),"Back to Home"]}),e.jsx(t,{to:"/docs",className:"btn-outline",children:"Documentation"})]}),e.jsxs("div",{className:"text-left",children:[e.jsx("p",{className:"text-xs font-semibold uppercase tracking-widest text-muted-foreground mb-4 text-center",children:"You might be looking for"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:g.map(({to:s,icon:n,title:a,desc:o})=>e.jsxs(t,{to:s,className:"card-surface group flex items-center gap-4 !p-5 text-left",children:[e.jsx("span",{className:"shrink-0 w-10 h-10 rounded-xl bg-cyan-300/10 border border-cyan-300/20 flex items-center justify-center text-cyan-300 group-hover:bg-cyan-300/20 transition-colors duration-200",children:e.jsx(n,{size:18,"aria-hidden":"true"})}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"block text-sm font-semibold text-primary group-hover:text-cyan-200 transition-colors duration-200",children:a}),e.jsx("span",{className:"block text-xs text-muted-foreground leading-relaxed",children:o})]}),e.jsx(u,{size:16,"aria-hidden":"true",className:"shrink-0 text-muted-foreground group-hover:text-cyan-300 group-hover:translate-x-1 transition-all duration-200"})]},s))})]})]})]})]})}export{N as default}; diff --git a/assets/NotFound-DY5xxcSZ.js b/assets/NotFound-DY5xxcSZ.js deleted file mode 100644 index f83cac04..00000000 --- a/assets/NotFound-DY5xxcSZ.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as r}from"./index-_BpMZhV3.js";import{N as i}from"./NeuralReveal-BflyZYSb.js";import{L as t}from"./vendor-PiU4YGcH.js";import{H as l,g as c,B as d,w as x,x as m,l as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const p=[{to:"/decoder",icon:c,title:"QECTOR Decoder v3",desc:"17 decoder configurations for Python"},{to:"/docs",icon:d,title:"Documentation Hub",desc:"Guides, manuals, and references"},{to:"/evidence",icon:x,title:"Evidence & Reports",desc:"Contracts, methodology, artifacts"},{to:"/contact",icon:m,title:"Contact Engineering",desc:"Talk to the team behind QECTOR"}];function y(){return e.jsxs(e.Fragment,{children:[e.jsx(r,{title:"Page Not Found · QECTOR",description:"The requested page could not be found.",noindex:!0}),e.jsxs("section",{className:"relative min-h-[80vh] flex items-center justify-center section-padding py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-transparent to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/3 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[36rem] h-[36rem] bg-cyan-400/5 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"relative z-10 w-full min-w-0 text-center max-w-2xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill mb-6",children:"404 · Not found"}),e.jsx("div",{className:"text-8xl md:text-9xl font-extrabold tracking-tight leading-none mb-6",children:e.jsx("span",{className:"text-transparent bg-clip-text bg-gradient-to-b from-cyan-300/80 to-cyan-300/10 select-none","aria-hidden":"true",children:"404"})}),e.jsx("h1",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-4",children:e.jsx(i,{text:"Page Not Found",className:"text-3xl md:text-4xl font-bold"})}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed max-w-prose mx-auto mb-10",children:"The page you are looking for does not exist or has been moved. The links below will get you back on track."}),e.jsxs("div",{className:"flex flex-wrap gap-4 justify-center mb-14",children:[e.jsxs(t,{to:"/",className:"btn-cyan inline-flex items-center gap-2",children:[e.jsx(l,{size:16,"aria-hidden":"true"}),"Back to Home"]}),e.jsx(t,{to:"/docs",className:"btn-outline",children:"Documentation"})]}),e.jsxs("div",{className:"text-left",children:[e.jsx("p",{className:"text-xs font-semibold uppercase tracking-widest text-muted-foreground mb-4 text-center",children:"You might be looking for"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:p.map(({to:s,icon:n,title:a,desc:o})=>e.jsxs(t,{to:s,className:"card-surface group flex items-center gap-4 !p-5 text-left",children:[e.jsx("span",{className:"shrink-0 w-10 h-10 rounded-xl bg-cyan-300/10 border border-cyan-300/20 flex items-center justify-center text-cyan-300 group-hover:bg-cyan-300/20 transition-colors duration-200",children:e.jsx(n,{size:18,"aria-hidden":"true"})}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"block text-sm font-semibold text-primary group-hover:text-cyan-200 transition-colors duration-200",children:a}),e.jsx("span",{className:"block text-xs text-muted-foreground leading-relaxed",children:o})]}),e.jsx(u,{size:16,"aria-hidden":"true",className:"shrink-0 text-muted-foreground group-hover:text-cyan-300 group-hover:translate-x-1 transition-all duration-200"})]},s))})]})]})]})]})}export{y as default}; diff --git a/assets/NotFound-DYyGE5rS.js b/assets/NotFound-DYyGE5rS.js deleted file mode 100644 index 1bf71a16..00000000 --- a/assets/NotFound-DYyGE5rS.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as r}from"./index-DRAXObZB.js";import{N as i}from"./NeuralReveal-BflyZYSb.js";import{L as t}from"./vendor-PiU4YGcH.js";import{H as l,g as c,B as d,w as x,x as m,l as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const p=[{to:"/decoder",icon:c,title:"QECTOR Decoder v3",desc:"17 decoder configurations for Python"},{to:"/docs",icon:d,title:"Documentation Hub",desc:"Guides, manuals, and references"},{to:"/evidence",icon:x,title:"Evidence & Reports",desc:"Contracts, methodology, artifacts"},{to:"/contact",icon:m,title:"Contact Engineering",desc:"Talk to the team behind QECTOR"}];function y(){return e.jsxs(e.Fragment,{children:[e.jsx(r,{title:"Page Not Found · QECTOR",description:"The requested page could not be found.",noindex:!0}),e.jsxs("section",{className:"relative min-h-[80vh] flex items-center justify-center section-padding py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-transparent to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/3 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[36rem] h-[36rem] bg-cyan-400/5 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"relative z-10 w-full min-w-0 text-center max-w-2xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill mb-6",children:"404 · Not found"}),e.jsx("div",{className:"text-8xl md:text-9xl font-extrabold tracking-tight leading-none mb-6",children:e.jsx("span",{className:"text-transparent bg-clip-text bg-gradient-to-b from-cyan-300/80 to-cyan-300/10 select-none","aria-hidden":"true",children:"404"})}),e.jsx("h1",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-4",children:e.jsx(i,{text:"Page Not Found",className:"text-3xl md:text-4xl font-bold"})}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed max-w-prose mx-auto mb-10",children:"The page you are looking for does not exist or has been moved. The links below will get you back on track."}),e.jsxs("div",{className:"flex flex-wrap gap-4 justify-center mb-14",children:[e.jsxs(t,{to:"/",className:"btn-cyan inline-flex items-center gap-2",children:[e.jsx(l,{size:16,"aria-hidden":"true"}),"Back to Home"]}),e.jsx(t,{to:"/docs",className:"btn-outline",children:"Documentation"})]}),e.jsxs("div",{className:"text-left",children:[e.jsx("p",{className:"text-xs font-semibold uppercase tracking-widest text-muted-foreground mb-4 text-center",children:"You might be looking for"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:p.map(({to:s,icon:n,title:a,desc:o})=>e.jsxs(t,{to:s,className:"card-surface group flex items-center gap-4 !p-5 text-left",children:[e.jsx("span",{className:"shrink-0 w-10 h-10 rounded-xl bg-cyan-300/10 border border-cyan-300/20 flex items-center justify-center text-cyan-300 group-hover:bg-cyan-300/20 transition-colors duration-200",children:e.jsx(n,{size:18,"aria-hidden":"true"})}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"block text-sm font-semibold text-primary group-hover:text-cyan-200 transition-colors duration-200",children:a}),e.jsx("span",{className:"block text-xs text-muted-foreground leading-relaxed",children:o})]}),e.jsx(u,{size:16,"aria-hidden":"true",className:"shrink-0 text-muted-foreground group-hover:text-cyan-300 group-hover:translate-x-1 transition-all duration-200"})]},s))})]})]})]})]})}export{y as default}; diff --git a/assets/NotFound-Gl-W94M8.js b/assets/NotFound-Gl-W94M8.js deleted file mode 100644 index 30cb97bc..00000000 --- a/assets/NotFound-Gl-W94M8.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as r,L as t}from"./index-PdoH5kLF.js";import{N as i}from"./NeuralReveal-Bsl9IGCr.js";import{H as l,g as c,B as d,w as x,x as m,l as u}from"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const g=[{to:"/decoder",icon:c,title:"QECTOR Decoder v3",desc:"17 decoder configurations for Python"},{to:"/docs",icon:d,title:"Documentation Hub",desc:"Guides, manuals, and references"},{to:"/evidence",icon:x,title:"Evidence & Reports",desc:"Contracts, methodology, artifacts"},{to:"/contact",icon:m,title:"Contact Engineering",desc:"Talk to the team behind QECTOR"}];function N(){return e.jsxs(e.Fragment,{children:[e.jsx(r,{title:"Page Not Found · QECTOR",description:"The requested page could not be found.",noindex:!0}),e.jsxs("section",{className:"relative min-h-[80vh] flex items-center justify-center section-padding py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-transparent to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/3 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[36rem] h-[36rem] bg-cyan-400/5 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"relative z-10 w-full min-w-0 text-center max-w-2xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill mb-6",children:"404 · Not found"}),e.jsx("div",{className:"text-8xl md:text-9xl font-extrabold tracking-tight leading-none mb-6",children:e.jsx("span",{className:"text-transparent bg-clip-text bg-gradient-to-b from-cyan-300/80 to-cyan-300/10 select-none","aria-hidden":"true",children:"404"})}),e.jsx("h1",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-4",children:e.jsx(i,{text:"Page Not Found",className:"text-3xl md:text-4xl font-bold"})}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed max-w-prose mx-auto mb-10",children:"The page you are looking for does not exist or has been moved. The links below will get you back on track."}),e.jsxs("div",{className:"flex flex-wrap gap-4 justify-center mb-14",children:[e.jsxs(t,{to:"/",className:"btn-cyan inline-flex items-center gap-2",children:[e.jsx(l,{size:16,"aria-hidden":"true"}),"Back to Home"]}),e.jsx(t,{to:"/docs",className:"btn-outline",children:"Documentation"})]}),e.jsxs("div",{className:"text-left",children:[e.jsx("p",{className:"text-xs font-semibold uppercase tracking-widest text-muted-foreground mb-4 text-center",children:"You might be looking for"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:g.map(({to:s,icon:n,title:a,desc:o})=>e.jsxs(t,{to:s,className:"card-surface group flex items-center gap-4 !p-5 text-left",children:[e.jsx("span",{className:"shrink-0 w-10 h-10 rounded-xl bg-cyan-300/10 border border-cyan-300/20 flex items-center justify-center text-cyan-300 group-hover:bg-cyan-300/20 transition-colors duration-200",children:e.jsx(n,{size:18,"aria-hidden":"true"})}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"block text-sm font-semibold text-primary group-hover:text-cyan-200 transition-colors duration-200",children:a}),e.jsx("span",{className:"block text-xs text-muted-foreground leading-relaxed",children:o})]}),e.jsx(u,{size:16,"aria-hidden":"true",className:"shrink-0 text-muted-foreground group-hover:text-cyan-300 group-hover:translate-x-1 transition-all duration-200"})]},s))})]})]})]})]})}export{N as default}; diff --git a/assets/NotFound-LmmZglSu.js b/assets/NotFound-LmmZglSu.js deleted file mode 100644 index 2639e87d..00000000 --- a/assets/NotFound-LmmZglSu.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as r,L as t}from"./index-CCmwjNGU.js";import{N as i}from"./NeuralReveal-uYarhiMA.js";import{H as l,g as c,B as d,w as x,x as m,l as u}from"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const g=[{to:"/decoder",icon:c,title:"QECTOR Decoder v3",desc:"17 decoder configurations for Python"},{to:"/docs",icon:d,title:"Documentation Hub",desc:"Guides, manuals, and references"},{to:"/evidence",icon:x,title:"Evidence & Reports",desc:"Contracts, methodology, artifacts"},{to:"/contact",icon:m,title:"Contact Engineering",desc:"Talk to the team behind QECTOR"}];function N(){return e.jsxs(e.Fragment,{children:[e.jsx(r,{title:"Page Not Found · QECTOR",description:"The requested page could not be found.",noindex:!0}),e.jsxs("section",{className:"relative min-h-[80vh] flex items-center justify-center section-padding py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-transparent to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/3 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[36rem] h-[36rem] bg-cyan-400/5 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"relative z-10 w-full min-w-0 text-center max-w-2xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill mb-6",children:"404 · Not found"}),e.jsx("div",{className:"text-8xl md:text-9xl font-extrabold tracking-tight leading-none mb-6",children:e.jsx("span",{className:"text-transparent bg-clip-text bg-gradient-to-b from-cyan-300/80 to-cyan-300/10 select-none","aria-hidden":"true",children:"404"})}),e.jsx("h1",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-4",children:e.jsx(i,{text:"Page Not Found",className:"text-3xl md:text-4xl font-bold"})}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed max-w-prose mx-auto mb-10",children:"The page you are looking for does not exist or has been moved. The links below will get you back on track."}),e.jsxs("div",{className:"flex flex-wrap gap-4 justify-center mb-14",children:[e.jsxs(t,{to:"/",className:"btn-cyan inline-flex items-center gap-2",children:[e.jsx(l,{size:16,"aria-hidden":"true"}),"Back to Home"]}),e.jsx(t,{to:"/docs",className:"btn-outline",children:"Documentation"})]}),e.jsxs("div",{className:"text-left",children:[e.jsx("p",{className:"text-xs font-semibold uppercase tracking-widest text-muted-foreground mb-4 text-center",children:"You might be looking for"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:g.map(({to:s,icon:n,title:a,desc:o})=>e.jsxs(t,{to:s,className:"card-surface group flex items-center gap-4 !p-5 text-left",children:[e.jsx("span",{className:"shrink-0 w-10 h-10 rounded-xl bg-cyan-300/10 border border-cyan-300/20 flex items-center justify-center text-cyan-300 group-hover:bg-cyan-300/20 transition-colors duration-200",children:e.jsx(n,{size:18,"aria-hidden":"true"})}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"block text-sm font-semibold text-primary group-hover:text-cyan-200 transition-colors duration-200",children:a}),e.jsx("span",{className:"block text-xs text-muted-foreground leading-relaxed",children:o})]}),e.jsx(u,{size:16,"aria-hidden":"true",className:"shrink-0 text-muted-foreground group-hover:text-cyan-300 group-hover:translate-x-1 transition-all duration-200"})]},s))})]})]})]})]})}export{N as default}; diff --git a/assets/NotFound-Xb_C85Aw.js b/assets/NotFound-Xb_C85Aw.js deleted file mode 100644 index f53c687a..00000000 --- a/assets/NotFound-Xb_C85Aw.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as r}from"./index-BN-vOeL2.js";import{N as i}from"./NeuralReveal-BflyZYSb.js";import{L as t}from"./vendor-PiU4YGcH.js";import{H as l,g as c,B as d,w as x,x as m,l as u}from"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const p=[{to:"/decoder",icon:c,title:"QECTOR Decoder v3",desc:"17 decoder configurations for Python"},{to:"/docs",icon:d,title:"Documentation Hub",desc:"Guides, manuals, and references"},{to:"/evidence",icon:x,title:"Evidence & Reports",desc:"Contracts, methodology, artifacts"},{to:"/contact",icon:m,title:"Contact Engineering",desc:"Talk to the team behind QECTOR"}];function y(){return e.jsxs(e.Fragment,{children:[e.jsx(r,{title:"Page Not Found · QECTOR",description:"The requested page could not be found.",noindex:!0}),e.jsxs("section",{className:"relative min-h-[80vh] flex items-center justify-center section-padding py-24 md:py-32 overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-transparent to-void pointer-events-none"}),e.jsx("div",{className:"absolute top-1/3 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[36rem] h-[36rem] bg-cyan-400/5 rounded-full blur-3xl pointer-events-none"}),e.jsxs("div",{className:"relative z-10 w-full min-w-0 text-center max-w-2xl mx-auto",children:[e.jsx("span",{className:"eyebrow-pill mb-6",children:"404 · Not found"}),e.jsx("div",{className:"text-8xl md:text-9xl font-extrabold tracking-tight leading-none mb-6",children:e.jsx("span",{className:"text-transparent bg-clip-text bg-gradient-to-b from-cyan-300/80 to-cyan-300/10 select-none","aria-hidden":"true",children:"404"})}),e.jsx("h1",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-4",children:e.jsx(i,{text:"Page Not Found",className:"text-3xl md:text-4xl font-bold"})}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed max-w-prose mx-auto mb-10",children:"The page you are looking for does not exist or has been moved. The links below will get you back on track."}),e.jsxs("div",{className:"flex flex-wrap gap-4 justify-center mb-14",children:[e.jsxs(t,{to:"/",className:"btn-cyan inline-flex items-center gap-2",children:[e.jsx(l,{size:16,"aria-hidden":"true"}),"Back to Home"]}),e.jsx(t,{to:"/docs",className:"btn-outline",children:"Documentation"})]}),e.jsxs("div",{className:"text-left",children:[e.jsx("p",{className:"text-xs font-semibold uppercase tracking-widest text-muted-foreground mb-4 text-center",children:"You might be looking for"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:p.map(({to:s,icon:n,title:a,desc:o})=>e.jsxs(t,{to:s,className:"card-surface group flex items-center gap-4 !p-5 text-left",children:[e.jsx("span",{className:"shrink-0 w-10 h-10 rounded-xl bg-cyan-300/10 border border-cyan-300/20 flex items-center justify-center text-cyan-300 group-hover:bg-cyan-300/20 transition-colors duration-200",children:e.jsx(n,{size:18,"aria-hidden":"true"})}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"block text-sm font-semibold text-primary group-hover:text-cyan-200 transition-colors duration-200",children:a}),e.jsx("span",{className:"block text-xs text-muted-foreground leading-relaxed",children:o})]}),e.jsx(u,{size:16,"aria-hidden":"true",className:"shrink-0 text-muted-foreground group-hover:text-cyan-300 group-hover:translate-x-1 transition-all duration-200"})]},s))})]})]})]})]})}export{y as default}; diff --git a/assets/Pricing-01bd34ST.js b/assets/Pricing-01bd34ST.js deleted file mode 100644 index 542ad412..00000000 --- a/assets/Pricing-01bd34ST.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as h,P as a,b as s,J as u,L as n,C as f}from"./index-DlmjLVYe.js";import{F as p,T as y,P as l}from"./TrialForm-BEDfCuvx.js";import{N as b}from"./NeuralReveal-BflyZYSb.js";import{g as o,S as g}from"./vendor-gsap-a3sj5zmn.js";import{G as j}from"./vendor-ui-B0ssGG4c.js";import{L as c}from"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";o.registerPlugin(g);function L(){const d=x.useRef([]);x.useEffect(()=>{const r=document.createElement("script");if(r.src="https://js.stripe.com/v3/buy-button.js",r.async=!0,document.body.appendChild(r),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const i=o.context(()=>{d.current.filter(Boolean).forEach(m=>{o.fromTo(m,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:m,start:"top 85%",once:!0}})})});return()=>{i.revert(),r.parentNode===document.body&&document.body.removeChild(r)}},[]);const t=(r,i)=>{r&&(d.current[i]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(h,{title:"Pricing · QECTOR",description:`QECTOR Decoder v3 commercial licensing. Free ${a.trialDays}-day commercial trial. Pro from ${s(a.proMonthly)}/month, Team ${s(a.team)}/yr, Lab ${s(a.lab)}/yr, Enterprise and OEM from ${s(a.enterpriseFrom)}/yr. ${a.refundDays}-day money-back. Prices in USD; tax added at checkout where applicable.`,lang:"en",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsx(u,{data:{"@context":"https://schema.org","@type":"FAQPage",mainEntity:p.map(r=>({"@type":"Question",name:r.q,acceptedAnswer:{"@type":"Answer",text:r.a}}))}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Clear, Transparent Commercial Licensing"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(b,{text:"License QECTOR for Production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:["Free for academic and non-commercial research. For commercial use, start a free"," ",a.trialDays,"-day trial, then pick a plan: cancel any time, ",a.refundDays,"-day money-back on your first payment."]})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsx("div",{ref:r=>t(r,0),id:"trial",className:"scroll-mt-32",children:e.jsx("div",{className:"relative p-1 rounded-3xl bg-gradient-to-r from-cyan-400 via-cyan-500 to-gold-400 animate-gradient-xy",children:e.jsxs("div",{className:"bg-void/90 backdrop-blur-xl rounded-[23px] p-8 md:p-12 border border-white/5 flex flex-col md:flex-row items-center justify-between gap-8",children:[e.jsxs("div",{className:"flex-1 text-left",children:[e.jsx("div",{className:"inline-block px-3 py-1 bg-cyan-500/20 text-cyan-300 text-xs font-bold uppercase tracking-wider rounded-full mb-4",children:"Free · No card · Token by e-mail"}),e.jsxs("h2",{className:"text-3xl md:text-4xl font-extrabold text-white mb-4",children:[a.trialDays,"-Day Commercial Trial"]}),e.jsx("p",{className:"text-secondary text-base leading-relaxed max-w-xl",children:"Evaluate QECTOR on your own workloads with full commercial evaluation rights: every decoder family, CPU and GPU (CUDA/OpenCL) batch decoding, offline licence verification."}),e.jsxs("div",{className:"mt-6 flex flex-wrap gap-4 text-sm text-cyan-100/70",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Up to 5 internal users"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Expires on its own: nothing to cancel"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," One trial per address per year"]})]})]}),e.jsx("div",{className:"w-full md:w-auto flex flex-col items-center",children:e.jsx(y,{lang:"en"})})]})})}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Commercial Plans"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Production rights for internal use. Plans renew automatically until cancelled."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(j,{size:14,className:"shrink-0","aria-hidden":"true"})," ",a.academicDiscountPct,"% off Team and Lab for academic institutions. Non-commercial research is free."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsx(l,{name:"Pro",price:s(a.proMonthly),period:"/ month",desc:`One named user. Or ${s(a.proAnnual)}/year (2 months free).`,features:["Commercial internal use","All decoder families","CPU + GPU (CUDA/OpenCL) batch","Email support (2 business days)"],ctaLabel:"Buy monthly",ctaHref:n.proMonthly}),e.jsx(l,{name:"Team",price:s(a.team),period:"/ year",desc:"Up to 10 named users.",featured:!0,featuredLabel:"Best for startups",features:["Everything in Pro","Up to 10 named users","Priority support (1 business day)","2-hour onboarding call"],ctaLabel:"Buy Team",ctaHref:n.team}),e.jsx(l,{name:"Lab",price:s(a.lab),period:"/ year",desc:"Up to 25 named users. Enterprise licence tier.",features:["Everything in Team","Code distances up to 63","Support SLA","One Validation Report ($5,000 value)"],ctaLabel:"Buy Lab",ctaHref:n.lab}),e.jsx(l,{name:"Enterprise & OEM",price:`$${a.enterpriseFrom/1e3}k+`,period:"/ year",desc:"Redistribution, SaaS, OEM and custom terms.",accent:"gold",features:["Unlimited seats","SaaS and customer-facing APIs","OEM and hardware bundling","Named support engineer"],ctaLabel:"Contact Sales",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center space-y-2",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Pro billed yearly: ",e.jsxs("a",{href:n.proAnnual,className:"text-cyan-400 hover:underline",rel:"noopener",children:[s(a.proAnnual)," / year"]}),"."," ","Prefer to own it? ",e.jsx("a",{href:n.proPerpetual,className:"text-cyan-400 hover:underline",rel:"noopener",children:e.jsxs("strong",{children:["Pro Perpetual: ",s(a.proPerpetual)," one-time"]})})," ","(every 3.x release, 12 months of support)."]})})]}),e.jsxs("div",{ref:r=>t(r,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"$3,750 one-time · 10-20 days delivery"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"The recommended fast-track for teams seeking immediate, defensible proof of workflow value. We execute up to 3 standard benchmark workloads using QECTOR and deliver reproducible artifact bundles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Includes a ",a.pilotDays,"-day Pilot licence"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Comparative analysis vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," 60-minute results review call"]})]}),e.jsx(c,{to:"/contact",className:"btn-gold block text-center",children:"Request Validation Sprint"}),e.jsxs("p",{className:"text-xs text-gold-200/60 mt-6",children:["Need only the licence and a call? The ",e.jsxs("a",{href:n.pilot,className:"text-gold-400 hover:underline",rel:"noopener",children:[a.pilotDays,"-day Pilot is ",s(a.pilot)]}),":"," ","a 1-hour integration call and a written validation memo, 100% creditable toward Team or Lab within 90 days."]})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activating Your License"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Everyone installs the same wheel from PyPI: there is no separate commercial build. Your token unlocks the paid features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and code distances up to 63 on Lab and Enterprise. CPU decoding is never blocked; distance caps are enforced only when you set QECTOR_ENFORCE=1."}),e.jsx(f,{language:"bash",className:"mb-6",code:`pip install --upgrade "qector-decoder-v3>=1.0,<2" -export QECTOR_LICENSE_KEY="" -export QECTOR_LICENSE="" - -# Verify offline: prints Pro or Enterprise -python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Tokens are verified offline against a public key embedded in the package: no license server, no phone-home, works completely air-gapped."})]})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Why License QECTOR?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Free (Source-Available)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licensed (Commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Non-commercial research use only"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Internal R&D and production rights"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Community support (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Priority email support & SLAs"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (Free)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Validation artifact reproduction harnesses"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"PolyForm Noncommercial License"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Written Commercial License Agreement"})]})]})]})})})]}),e.jsxs("div",{ref:r=>t(r,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Frequently Asked Questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:p.map((r,i)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:r.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:r.a})]},i))})]}),e.jsxs("div",{ref:r=>t(r,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"What is not included:"})," Unless explicitly granted, no tier includes redistribution, OEM, SaaS hosting, or sublicensing rights. Contact sales for Custom terms."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Procurement:"})," All prices are in USD; applicable taxes are added at checkout. Monthly and annual plans renew automatically until cancelled, with a reminder before each annual renewal."," ",a.refundDays,"-day money-back guarantee on your first payment of any plan. Tokens are emailed within minutes."]}),e.jsxs("div",{className:"flex justify-center gap-6 pt-4",children:[e.jsx(c,{to:"/refund",className:"hover:text-cyan-300 transition-colors",children:"Refund Policy"}),e.jsx(c,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contact Engineering"})]})]})]})]})}export{L as default}; diff --git a/assets/Pricing-BMbyXkw2.js b/assets/Pricing-BMbyXkw2.js deleted file mode 100644 index c948483b..00000000 --- a/assets/Pricing-BMbyXkw2.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as h,P as s,c as a,J as u,d as i,M as f,L as l,C as y}from"./index-CCmwjNGU.js";import{F as p,P as o}from"./faqData-De1eOWz0.js";import{N as g}from"./NeuralReveal-uYarhiMA.js";import{g as c,S as b}from"./vendor-gsap-a3sj5zmn.js";import{G as j}from"./vendor-ui-B8TlNU4J.js";c.registerPlugin(b);function k(){const d=x.useRef([]);x.useEffect(()=>{const r=document.createElement("script");if(r.src="https://js.stripe.com/v3/buy-button.js",r.async=!0,document.body.appendChild(r),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const n=c.context(()=>{d.current.filter(Boolean).forEach(m=>{c.fromTo(m,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:m,start:"top 85%",once:!0}})})});return()=>{n.revert(),r.parentNode===document.body&&document.body.removeChild(r)}},[]);const t=(r,n)=>{r&&(d.current[n]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(h,{title:"Pricing · QECTOR",description:`QECTOR Decoder v3 commercial licensing. Pro from ${a(s.proMonthly)}/month, Lab ${a(s.lab)}/yr, Enterprise and OEM from ${a(s.enterpriseFrom)}/yr. ${s.refundDays}-day money-back. Prices in USD; tax added at checkout where applicable.`,lang:"en",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsx(u,{data:{"@context":"https://schema.org","@type":"FAQPage",mainEntity:p.map(r=>({"@type":"Question",name:r.q,acceptedAnswer:{"@type":"Answer",text:r.a}}))}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Clear, Transparent Commercial Licensing"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(g,{text:"License QECTOR for Production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:["Free for academic and non-commercial research. For commercial use, pick a plan: licences are verified offline and work fully air-gapped, cancel any time, ",s.refundDays,"-day money-back on your first payment."]})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsxs("div",{ref:r=>t(r,0),className:"grid grid-cols-1 sm:grid-cols-3 gap-4 text-center",children:[e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Air-gapped"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Signed token, verified offline. No licence server, no phone-home."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsxs("p",{className:"text-cyan-300 font-bold",children:[s.refundDays,"-day money-back"]}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Full refund on your first payment of any plan, no questions asked."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Cancel any time"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Your licence stays valid to the end of the period you paid for."})]})]}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Commercial Plans"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Production rights for your organisation's internal use. Subscriptions renew automatically until cancelled."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(j,{size:14,className:"shrink-0","aria-hidden":"true"})," ",s.academicDiscountPct,"% off Lab for academic institutions. Non-commercial research is free."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 max-w-5xl mx-auto",children:[e.jsx(o,{name:"Pro",price:a(s.proMonthly),period:"/ month",desc:`Or ${a(s.proAnnual)}/year (2 months free). Pro licence tier.`,featured:!0,featuredLabel:"Most popular",features:["Commercial internal use","All decoder families","CPU + GPU (CUDA/OpenCL) batch","Code distances up to 19","Email support (2 business days)"],ctaLabel:"Buy monthly",ctaHref:i.proMonthly}),e.jsx(o,{name:"Lab",price:a(s.lab),period:"/ year",desc:"Enterprise licence tier, for research groups and labs.",features:["Everything in Pro","Code distances up to 63","Priority support with SLA","2-hour onboarding call","One Validation Report ($5,000 value)"],ctaLabel:"Buy Lab",ctaHref:i.lab}),e.jsx(o,{name:"Enterprise & OEM",price:`$${s.enterpriseFrom/1e3}k+`,period:"/ year",desc:"Redistribution, SaaS, OEM and custom terms.",accent:"gold",features:["Signed agreement, custom terms","SaaS and customer-facing APIs","OEM and hardware bundling","Named support engineer"],ctaLabel:"Contact Sales",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center space-y-2",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Pro billed yearly: ",e.jsxs("a",{href:i.proAnnual,className:"text-cyan-400 hover:underline",rel:"noopener",children:[a(s.proAnnual)," / year"]}),"."," ","Prefer to own it? ",e.jsx("a",{href:i.proPerpetual,className:"text-cyan-400 hover:underline",rel:"noopener",children:e.jsxs("strong",{children:["Pro Perpetual: ",a(s.proPerpetual)," one-time"]})})," ","(every 1.x release, 12 months of support)."]})})]}),e.jsx(f,{more:"Validation Sprint and activation",children:e.jsxs("div",{ref:r=>t(r,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"$3,750 one-time · 10-20 days delivery"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"The recommended fast-track for teams seeking immediate, defensible proof of workflow value. We execute up to 3 standard benchmark workloads using QECTOR and deliver reproducible artifact bundles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Includes a ",s.pilotDays,"-day Pilot licence"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Comparative analysis vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," 60-minute results review call"]})]}),e.jsx(l,{to:"/contact",className:"btn-gold block text-center",children:"Request Validation Sprint"}),e.jsxs("p",{className:"text-xs text-gold-200/60 mt-6",children:["Need only the licence and a call? The ",e.jsxs("a",{href:i.pilot,className:"text-gold-400 hover:underline",rel:"noopener",children:[s.pilotDays,"-day Pilot is ",a(s.pilot)]}),":"," ","a 1-hour integration call and a written validation memo, 100% creditable toward Lab within 90 days."]})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activating Your License"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Everyone installs the same wheel from PyPI: there is no separate commercial build. Your token unlocks the paid features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and code distances up to 63 on Lab and Enterprise. CPU decoding is never blocked; distance caps are enforced only when you set QECTOR_ENFORCE=1."}),e.jsx(y,{language:"bash",className:"mb-6",code:`pip install --upgrade "qector-decoder-v3>=1.0.1,<2" -export QECTOR_LICENSE_KEY="" -export QECTOR_LICENSE="" - -# Verify offline: prints Pro or Enterprise -python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Tokens are verified offline against a public key embedded in the package: no license server, no phone-home, works completely air-gapped."})]})]})}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Why License QECTOR?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Free (Source-Available)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licensed (Commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Non-commercial research use only"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Internal R&D and production rights"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Community support (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Priority email support & SLAs"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (Free)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Validation artifact reproduction harnesses"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"PolyForm Noncommercial License"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Written Commercial License Agreement"})]})]})]})})})]}),e.jsxs("div",{ref:r=>t(r,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Frequently Asked Questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 items-start",children:p.map((r,n)=>e.jsxs("details",{className:"faq-item group bg-surface/30 border border-gridline/40 rounded-2xl hover:bg-surface/60 transition-colors",children:[e.jsxs("summary",{className:"cursor-pointer list-none flex items-start justify-between gap-4 p-5 min-h-[44px] text-base font-bold text-cyan-300",children:[e.jsx("h3",{className:"text-base font-bold",children:r.q}),e.jsx("span",{"aria-hidden":"true",className:"shrink-0 text-muted-foreground transition-transform group-open:rotate-45 text-xl leading-none",children:"+"})]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed px-5 pb-5",children:r.a})]},n))})]}),e.jsxs("div",{ref:r=>t(r,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"What is not included:"})," Unless explicitly granted, no tier includes redistribution, OEM, SaaS hosting, or sublicensing rights. Contact sales for Custom terms."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Procurement:"})," All prices are in USD; applicable taxes are added at checkout. Monthly and annual plans renew automatically until cancelled, with a reminder before each annual renewal."," ",s.refundDays,"-day money-back guarantee on your first payment of any plan. Tokens are emailed within minutes."]}),e.jsxs("p",{children:["By purchasing, you accept the ",e.jsx(l,{to:"/license-agreement",className:"text-cyan-300 hover:underline",children:"Commercial Licence Agreement"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-x-6 gap-y-2 pt-4",children:[e.jsx(l,{to:"/license-agreement",className:"hover:text-cyan-300 transition-colors",children:"Licence Agreement"}),e.jsx(l,{to:"/refund",className:"hover:text-cyan-300 transition-colors",children:"Refund Policy"}),e.jsx("a",{href:"https://billing.stripe.com/p/login/7sY9AVdwlgoyfse9bYeUU00",target:"_blank",rel:"noopener noreferrer",className:"hover:text-cyan-300 transition-colors",children:"Manage subscription"}),e.jsx(l,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contact Engineering"})]})]})]})]})}export{k as default}; diff --git a/assets/Pricing-BbPwznPI.js b/assets/Pricing-BbPwznPI.js deleted file mode 100644 index 97eafe51..00000000 --- a/assets/Pricing-BbPwznPI.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as m,J as x,C as p}from"./index-_BpMZhV3.js";import{F as d,P as r}from"./faqData-gdKKGDcm.js";import{N as u}from"./NeuralReveal-BflyZYSb.js";import{g as l,S as h}from"./vendor-gsap-a3sj5zmn.js";import{G as g}from"./vendor-ui-B0ssGG4c.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";l.registerPlugin(h);function E(){const n=o.useRef([]);o.useEffect(()=>{const t=document.createElement("script");if(t.src="https://js.stripe.com/v3/buy-button.js",t.async=!0,document.body.appendChild(t),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const a=l.context(()=>{n.current.filter(Boolean).forEach(c=>{l.fromTo(c,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:c,start:"top 85%",once:!0}})})});return()=>{a.revert(),t.parentNode===document.body&&document.body.removeChild(t)}},[]);const s=(t,a)=>{t&&(n.current[a]=t)};return e.jsxs(e.Fragment,{children:[e.jsx(m,{title:"Pricing · QECTOR",description:"QECTOR Decoder v3 commercial licensing. $499 one-time 60-day evaluation, fully creditable. Annual production tiers from $1,299/yr. Enterprise and OEM custom pricing. Prices in USD, exclusive of tax.",lang:"en",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsx(x,{data:{"@context":"https://schema.org","@type":"FAQPage",mainEntity:d.map(t=>({"@type":"Question",name:t.q,acceptedAnswer:{"@type":"Answer",text:t.a}}))}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Clear, Transparent Commercial Licensing"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(u,{text:"License QECTOR for Production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:"QECTOR Decoder v3 is Source-Available for academic and non-commercial research. For internal R&D, pilot programs, and commercial deployment, select a license below."})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsx("div",{ref:t=>s(t,0),id:"evaluation",className:"scroll-mt-32",children:e.jsx("div",{className:"relative p-1 rounded-3xl bg-gradient-to-r from-cyan-400 via-cyan-500 to-gold-400 animate-gradient-xy",children:e.jsxs("div",{className:"bg-void/90 backdrop-blur-xl rounded-[23px] p-8 md:p-12 border border-white/5 flex flex-col md:flex-row items-center justify-between gap-8",children:[e.jsxs("div",{className:"flex-1 text-left",children:[e.jsx("div",{className:"inline-block px-3 py-1 bg-cyan-500/20 text-cyan-300 text-xs font-bold uppercase tracking-wider rounded-full mb-4",children:"Self-Serve · Instant Clearance"}),e.jsx("h2",{className:"text-3xl md:text-4xl font-extrabold text-white mb-4",children:"Commercial Evaluation"}),e.jsx("p",{className:"text-secondary text-base leading-relaxed max-w-xl",children:"A 60-day full-access pilot designed for serious QEC research teams. Includes CPU + CUDA batch decoding, written license agreement, benchmark artifact package, and priority support."}),e.jsxs("div",{className:"mt-6 flex flex-wrap gap-4 text-sm text-cyan-100/70",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," 100% creditable toward any annual license purchased within 90 days of your evaluation start"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Unlimited internal seats"]})]})]}),e.jsxs("div",{className:"w-full md:w-auto flex flex-col items-center",children:[e.jsx("div",{className:"text-4xl font-black text-white mb-1",children:"$499"}),e.jsx("div",{className:"text-secondary text-sm mb-6",children:"One-time flat fee"}),e.jsx("a",{href:"https://buy.stripe.com/6oU00l77Xc8ifsegEqeUU07",className:"btn-cyan w-full text-center py-4 px-8 font-bold shadow-[0_0_30px_rgba(34,211,238,0.3)]",target:"_blank",rel:"noopener noreferrer",children:"Start 60-Day Pilot"})]})]})})}),e.jsxs("div",{ref:t=>s(t,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Annual Production Tiers"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"For teams deploying QECTOR internally or integrating into private SaaS infrastructure."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(g,{size:14,className:"shrink-0","aria-hidden":"true"})," 40% Academic Discount available on all annual tiers. Contact sales."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsx(r,{name:"Solo / Indie",price:"$1,299",period:"/ year",desc:"Production rights for a single named user.",features:["Full v3 decoders","Commercial R&D rights","Single named user","Priority email support"],ctaLabel:"Buy Now",ctaHref:"https://buy.stripe.com/cNi9AV63TfkubbY87UeUU09"}),e.jsx(r,{name:"Startup / Growth",price:"$4,499",period:"/ year",desc:"Up to 10 named users. Advanced BP-OSD/LDPC workflows.",featured:!0,featuredLabel:"Most Popular",features:["Up to 10 named users","Advanced BP-OSD/LDPC","CPU + CUDA batch","Support SLA + 2hr integration"],ctaLabel:"Buy Now",ctaHref:"https://buy.stripe.com/14A5kF4ZP5JU7ZMdseeUU0c"}),e.jsx(r,{name:"Professional",price:"$11,500",period:"/ year",desc:"Up to 25 named users. Validation Report Package credit.",features:["Up to 25 named users","All advanced workflows","Dedicated integration","Validation Report credit"],ctaLabel:"Buy Now",ctaHref:"https://buy.stripe.com/28EeVf1ND0pA6VIewieUU0d"}),e.jsx(r,{name:"Enterprise & OEM",price:"Custom",period:"",desc:"Unlimited seats, custom builds, and SaaS/OEM distribution.",accent:"gold",features:["Unlimited logical qubits","SaaS hosting rights","OEM bundling rights","Dedicated support engineer"],ctaLabel:"Contact Sales",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Prefer to own it outright? ",e.jsx("strong",{className:"text-cyan-300",children:"Solo / Indie Perpetual is $3,299 one-time."})," ",e.jsx(i,{to:"/contact",className:"text-cyan-400 hover:underline",children:"Contact sales to activate"})]})})]}),e.jsxs("div",{ref:t=>s(t,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"$3,750 one-time · 10-20 days delivery"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"The recommended fast-track for teams seeking immediate, defensible proof of workflow value. We execute up to 3 standard benchmark workloads using QECTOR and deliver reproducible artifact bundles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Includes 60-day Commercial Evaluation"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Comparative analysis vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," 60-minute results review call"]})]}),e.jsx(i,{to:"/contact",className:"btn-gold block text-center",children:"Request Validation Sprint"})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activating Your License"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Everyone installs the same wheel from PyPI: there is no separate commercial build. Setting your license token simply disables the non-commercial usage notice."}),e.jsx(p,{language:"bash",className:"mb-6",code:`# Commercial use: activate with the Ed25519 token -export QECTOR_LICENSE="" -export QECTOR_LICENSE_KEY="" - -# Optional: suppress the licensing notice in CI logs -export QECTOR_SILENT=1`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Tokens are verified offline against a public key embedded in the package: no license server, no phone-home, works completely air-gapped."})]})]}),e.jsxs("div",{ref:t=>s(t,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Why License QECTOR?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Free (Source-Available)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licensed (Commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Non-commercial research use only"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Internal R&D and production rights"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Community support (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Priority email support & SLAs"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (Free)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Validation artifact reproduction harnesses"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"PolyForm Noncommercial License"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Written Commercial License Agreement"})]})]})]})})})]}),e.jsxs("div",{ref:t=>s(t,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Frequently Asked Questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:d.map((t,a)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:t.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t.a})]},a))})]}),e.jsxs("div",{ref:t=>s(t,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"What is not included:"})," Unless explicitly granted, no tier includes redistribution, OEM, SaaS hosting, or sublicensing rights. Contact sales for Custom terms."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Procurement:"})," All prices are USD and exclude tax. Stripe handles local taxes automatically. Tokens are delivered instantly via email. Due to instant delivery, sales are final. Please use the $499 Evaluation to test suitability before annual commitment."]}),e.jsxs("div",{className:"flex justify-center gap-6 pt-4",children:[e.jsx(i,{to:"/refund",className:"hover:text-cyan-300 transition-colors",children:"Refund Policy"}),e.jsx(i,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contact Engineering"})]})]})]})]})}export{E as default}; diff --git a/assets/Pricing-Bqb9jgZa.js b/assets/Pricing-Bqb9jgZa.js deleted file mode 100644 index 6707115f..00000000 --- a/assets/Pricing-Bqb9jgZa.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as h,P as a,b as s,J as u,L as n,C as f}from"./index-WV1aysjN.js";import{F as p,T as y,P as l}from"./TrialForm-CC5CTQMP.js";import{N as b}from"./NeuralReveal-BflyZYSb.js";import{g as o,S as g}from"./vendor-gsap-a3sj5zmn.js";import{G as j}from"./vendor-ui-B0ssGG4c.js";import{L as c}from"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";o.registerPlugin(g);function L(){const d=x.useRef([]);x.useEffect(()=>{const r=document.createElement("script");if(r.src="https://js.stripe.com/v3/buy-button.js",r.async=!0,document.body.appendChild(r),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const i=o.context(()=>{d.current.filter(Boolean).forEach(m=>{o.fromTo(m,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:m,start:"top 85%",once:!0}})})});return()=>{i.revert(),r.parentNode===document.body&&document.body.removeChild(r)}},[]);const t=(r,i)=>{r&&(d.current[i]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(h,{title:"Pricing · QECTOR",description:`QECTOR Decoder v3 commercial licensing. Free ${a.trialDays}-day commercial trial. Pro from ${s(a.proMonthly)}/month, Team ${s(a.team)}/yr, Lab ${s(a.lab)}/yr, Enterprise and OEM from ${s(a.enterpriseFrom)}/yr. ${a.refundDays}-day money-back. Prices in USD; tax added at checkout where applicable.`,lang:"en",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsx(u,{data:{"@context":"https://schema.org","@type":"FAQPage",mainEntity:p.map(r=>({"@type":"Question",name:r.q,acceptedAnswer:{"@type":"Answer",text:r.a}}))}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Clear, Transparent Commercial Licensing"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(b,{text:"License QECTOR for Production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:["Free for academic and non-commercial research. For commercial use, start a free"," ",a.trialDays,"-day trial, then pick a plan: cancel any time, ",a.refundDays,"-day money-back on your first payment."]})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsx("div",{ref:r=>t(r,0),id:"trial",className:"scroll-mt-32",children:e.jsx("div",{className:"relative p-1 rounded-3xl bg-gradient-to-r from-cyan-400 via-cyan-500 to-gold-400 animate-gradient-xy",children:e.jsxs("div",{className:"bg-void/90 backdrop-blur-xl rounded-[23px] p-8 md:p-12 border border-white/5 flex flex-col md:flex-row items-center justify-between gap-8",children:[e.jsxs("div",{className:"flex-1 text-left",children:[e.jsx("div",{className:"inline-block px-3 py-1 bg-cyan-500/20 text-cyan-300 text-xs font-bold uppercase tracking-wider rounded-full mb-4",children:"Free · No card · Token by e-mail"}),e.jsxs("h2",{className:"text-3xl md:text-4xl font-extrabold text-white mb-4",children:[a.trialDays,"-Day Commercial Trial"]}),e.jsx("p",{className:"text-secondary text-base leading-relaxed max-w-xl",children:"Evaluate QECTOR on your own workloads with full commercial evaluation rights: every decoder family, CPU and GPU (CUDA/OpenCL) batch decoding, offline licence verification."}),e.jsxs("div",{className:"mt-6 flex flex-wrap gap-4 text-sm text-cyan-100/70",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Up to 5 internal users"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Expires on its own: nothing to cancel"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," One trial per address per year"]})]})]}),e.jsx("div",{className:"w-full md:w-auto flex flex-col items-center",children:e.jsx(y,{lang:"en"})})]})})}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Commercial Plans"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Production rights for internal use. Plans renew automatically until cancelled."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(j,{size:14,className:"shrink-0","aria-hidden":"true"})," ",a.academicDiscountPct,"% off Team and Lab for industry-funded university projects. Non-commercial research is free."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsx(l,{name:"Pro",price:s(a.proMonthly),period:"/ month",desc:`One named user. Or ${s(a.proAnnual)}/year (2 months free).`,features:["Commercial internal use","All decoder families","CPU + GPU (CUDA/OpenCL) batch","Email support (2 business days)"],ctaLabel:"Buy monthly",ctaHref:n.proMonthly}),e.jsx(l,{name:"Team",price:s(a.team),period:"/ year",desc:"Up to 10 named users.",featured:!0,featuredLabel:"Best for startups",features:["Everything in Pro","Up to 10 named users","Priority support (1 business day)","2-hour onboarding call"],ctaLabel:"Buy Team",ctaHref:n.team}),e.jsx(l,{name:"Lab",price:s(a.lab),period:"/ year",desc:"Up to 25 named users. Enterprise licence tier.",features:["Everything in Team","Code distances up to 63","Support SLA","One Validation Report ($5,000 value)"],ctaLabel:"Buy Lab",ctaHref:n.lab}),e.jsx(l,{name:"Enterprise & OEM",price:`from ${s(a.enterpriseFrom)}`,period:"/ year",desc:"Redistribution, SaaS, OEM and custom terms.",accent:"gold",features:["Unlimited seats","SaaS and customer-facing APIs","OEM and hardware bundling","Named support engineer"],ctaLabel:"Contact Sales",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center space-y-2",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Pro billed yearly: ",e.jsxs("a",{href:n.proAnnual,className:"text-cyan-400 hover:underline",rel:"noopener",children:[s(a.proAnnual)," / year"]}),"."," ","Prefer to own it? ",e.jsx("a",{href:n.proPerpetual,className:"text-cyan-400 hover:underline",rel:"noopener",children:e.jsxs("strong",{children:["Pro Perpetual: ",s(a.proPerpetual)," one-time"]})})," ","(every 3.x release, 12 months of support)."]})})]}),e.jsxs("div",{ref:r=>t(r,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"$3,750 one-time · 10-20 days delivery"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"The recommended fast-track for teams seeking immediate, defensible proof of workflow value. We execute up to 3 standard benchmark workloads using QECTOR and deliver reproducible artifact bundles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Includes a ",a.pilotDays,"-day Pilot licence"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Comparative analysis vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," 60-minute results review call"]})]}),e.jsx(c,{to:"/contact",className:"btn-gold block text-center",children:"Request Validation Sprint"}),e.jsxs("p",{className:"text-xs text-gold-200/60 mt-6",children:["Need only the licence and a call? The ",e.jsxs("a",{href:n.pilot,className:"text-gold-400 hover:underline",rel:"noopener",children:[a.pilotDays,"-day Pilot is ",s(a.pilot)]}),":"," ","a 1-hour integration call and a written validation memo, 100% creditable toward Team or Lab within 90 days."]})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activating Your License"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Everyone installs the same wheel from PyPI: there is no separate commercial build. Your token unlocks the paid features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and code distances up to 63 on Lab and Enterprise. CPU decoding is never blocked; distance caps are enforced only when you set QECTOR_ENFORCE=1."}),e.jsx(f,{language:"bash",className:"mb-6",code:`pip install --upgrade "qector-decoder-v3>=1.0,<2" -export QECTOR_LICENSE_KEY="" -export QECTOR_LICENSE="" - -# Verify offline: prints Pro or Enterprise -python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Tokens are verified offline against a public key embedded in the package: no license server, no phone-home, works completely air-gapped."})]})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Why License QECTOR?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Free (Source-Available)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licensed (Commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Non-commercial research use only"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Internal R&D and production rights"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Community support (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Priority email support & SLAs"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (Free)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Validation artifact reproduction harnesses"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"PolyForm Noncommercial License"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Written Commercial License Agreement"})]})]})]})})})]}),e.jsxs("div",{ref:r=>t(r,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Frequently Asked Questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:p.map((r,i)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:r.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:r.a})]},i))})]}),e.jsxs("div",{ref:r=>t(r,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"What is not included:"})," Unless explicitly granted, no tier includes redistribution, OEM, SaaS hosting, or sublicensing rights. Contact sales for Custom terms."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Procurement:"})," All prices are in USD; applicable taxes are added at checkout. Monthly and annual plans renew automatically until cancelled, with a reminder before each annual renewal."," ",a.refundDays,"-day money-back guarantee on your first payment of any plan. Tokens are emailed within minutes."]}),e.jsxs("div",{className:"flex justify-center gap-6 pt-4",children:[e.jsx(c,{to:"/refund",className:"hover:text-cyan-300 transition-colors",children:"Refund Policy"}),e.jsx(c,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contact Engineering"})]})]})]})]})}export{L as default}; diff --git a/assets/Pricing-CL6UmMkO.js b/assets/Pricing-CL6UmMkO.js deleted file mode 100644 index 8147a5dd..00000000 --- a/assets/Pricing-CL6UmMkO.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as h,P as a,c as s,J as u,d as i,L as l,C as y}from"./index-PdoH5kLF.js";import{F as p,P as c}from"./faqData-IO8c0Ufu.js";import{N as f}from"./NeuralReveal-Bsl9IGCr.js";import{g as o,S as g}from"./vendor-gsap-a3sj5zmn.js";import{G as b}from"./vendor-ui-B8TlNU4J.js";o.registerPlugin(g);function P(){const d=x.useRef([]);x.useEffect(()=>{const r=document.createElement("script");if(r.src="https://js.stripe.com/v3/buy-button.js",r.async=!0,document.body.appendChild(r),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const n=o.context(()=>{d.current.filter(Boolean).forEach(m=>{o.fromTo(m,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:m,start:"top 85%",once:!0}})})});return()=>{n.revert(),r.parentNode===document.body&&document.body.removeChild(r)}},[]);const t=(r,n)=>{r&&(d.current[n]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(h,{title:"Pricing · QECTOR",description:`QECTOR Decoder v3 commercial licensing. Pro from ${s(a.proMonthly)}/month, Lab ${s(a.lab)}/yr, Enterprise and OEM from ${s(a.enterpriseFrom)}/yr. ${a.refundDays}-day money-back. Prices in USD; tax added at checkout where applicable.`,lang:"en",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsx(u,{data:{"@context":"https://schema.org","@type":"FAQPage",mainEntity:p.map(r=>({"@type":"Question",name:r.q,acceptedAnswer:{"@type":"Answer",text:r.a}}))}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Clear, Transparent Commercial Licensing"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(f,{text:"License QECTOR for Production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:["Free for academic and non-commercial research. For commercial use, pick a plan: licences are verified offline and work fully air-gapped, cancel any time, ",a.refundDays,"-day money-back on your first payment."]})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsxs("div",{ref:r=>t(r,0),className:"grid grid-cols-1 sm:grid-cols-3 gap-4 text-center",children:[e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Air-gapped"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Signed token, verified offline. No licence server, no phone-home."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsxs("p",{className:"text-cyan-300 font-bold",children:[a.refundDays,"-day money-back"]}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Full refund on your first payment of any plan, no questions asked."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Cancel any time"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Your licence stays valid to the end of the period you paid for."})]})]}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Commercial Plans"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Production rights for your organisation's internal use. Subscriptions renew automatically until cancelled."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(b,{size:14,className:"shrink-0","aria-hidden":"true"})," ",a.academicDiscountPct,"% off Lab for academic institutions. Non-commercial research is free."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 max-w-5xl mx-auto",children:[e.jsx(c,{name:"Pro",price:s(a.proMonthly),period:"/ month",desc:`Or ${s(a.proAnnual)}/year (2 months free). Pro licence tier.`,featured:!0,featuredLabel:"Most popular",features:["Commercial internal use","All decoder families","CPU + GPU (CUDA/OpenCL) batch","Code distances up to 19","Email support (2 business days)"],ctaLabel:"Buy monthly",ctaHref:i.proMonthly}),e.jsx(c,{name:"Lab",price:s(a.lab),period:"/ year",desc:"Enterprise licence tier, for research groups and labs.",features:["Everything in Pro","Code distances up to 63","Priority support with SLA","2-hour onboarding call","One Validation Report ($5,000 value)"],ctaLabel:"Buy Lab",ctaHref:i.lab}),e.jsx(c,{name:"Enterprise & OEM",price:`$${a.enterpriseFrom/1e3}k+`,period:"/ year",desc:"Redistribution, SaaS, OEM and custom terms.",accent:"gold",features:["Signed agreement, custom terms","SaaS and customer-facing APIs","OEM and hardware bundling","Named support engineer"],ctaLabel:"Contact Sales",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center space-y-2",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Pro billed yearly: ",e.jsxs("a",{href:i.proAnnual,className:"text-cyan-400 hover:underline",rel:"noopener",children:[s(a.proAnnual)," / year"]}),"."," ","Prefer to own it? ",e.jsx("a",{href:i.proPerpetual,className:"text-cyan-400 hover:underline",rel:"noopener",children:e.jsxs("strong",{children:["Pro Perpetual: ",s(a.proPerpetual)," one-time"]})})," ","(every 1.x release, 12 months of support)."]})})]}),e.jsxs("div",{ref:r=>t(r,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"$3,750 one-time · 10-20 days delivery"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"The recommended fast-track for teams seeking immediate, defensible proof of workflow value. We execute up to 3 standard benchmark workloads using QECTOR and deliver reproducible artifact bundles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Includes a ",a.pilotDays,"-day Pilot licence"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Comparative analysis vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," 60-minute results review call"]})]}),e.jsx(l,{to:"/contact",className:"btn-gold block text-center",children:"Request Validation Sprint"}),e.jsxs("p",{className:"text-xs text-gold-200/60 mt-6",children:["Need only the licence and a call? The ",e.jsxs("a",{href:i.pilot,className:"text-gold-400 hover:underline",rel:"noopener",children:[a.pilotDays,"-day Pilot is ",s(a.pilot)]}),":"," ","a 1-hour integration call and a written validation memo, 100% creditable toward Lab within 90 days."]})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activating Your License"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Everyone installs the same wheel from PyPI: there is no separate commercial build. Your token unlocks the paid features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and code distances up to 63 on Lab and Enterprise. CPU decoding is never blocked; distance caps are enforced only when you set QECTOR_ENFORCE=1."}),e.jsx(y,{language:"bash",className:"mb-6",code:`pip install --upgrade "qector-decoder-v3>=1.0.1,<2" -export QECTOR_LICENSE_KEY="" -export QECTOR_LICENSE="" - -# Verify offline: prints Pro or Enterprise -python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Tokens are verified offline against a public key embedded in the package: no license server, no phone-home, works completely air-gapped."})]})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Why License QECTOR?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Free (Source-Available)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licensed (Commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Non-commercial research use only"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Internal R&D and production rights"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Community support (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Priority email support & SLAs"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (Free)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Validation artifact reproduction harnesses"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"PolyForm Noncommercial License"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Written Commercial License Agreement"})]})]})]})})})]}),e.jsxs("div",{ref:r=>t(r,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Frequently Asked Questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:p.map((r,n)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:r.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:r.a})]},n))})]}),e.jsxs("div",{ref:r=>t(r,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"What is not included:"})," Unless explicitly granted, no tier includes redistribution, OEM, SaaS hosting, or sublicensing rights. Contact sales for Custom terms."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Procurement:"})," All prices are in USD; applicable taxes are added at checkout. Monthly and annual plans renew automatically until cancelled, with a reminder before each annual renewal."," ",a.refundDays,"-day money-back guarantee on your first payment of any plan. Tokens are emailed within minutes."]}),e.jsxs("p",{children:["By purchasing, you accept the ",e.jsx(l,{to:"/license-agreement",className:"text-cyan-300 hover:underline",children:"Commercial Licence Agreement"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-x-6 gap-y-2 pt-4",children:[e.jsx(l,{to:"/license-agreement",className:"hover:text-cyan-300 transition-colors",children:"Licence Agreement"}),e.jsx(l,{to:"/refund",className:"hover:text-cyan-300 transition-colors",children:"Refund Policy"}),e.jsx("a",{href:"https://billing.stripe.com/p/login/7sY9AVdwlgoyfse9bYeUU00",target:"_blank",rel:"noopener noreferrer",className:"hover:text-cyan-300 transition-colors",children:"Manage subscription"}),e.jsx(l,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contact Engineering"})]})]})]})]})}export{P as default}; diff --git a/assets/Pricing-CZj0aLPH.js b/assets/Pricing-CZj0aLPH.js deleted file mode 100644 index 5c91a104..00000000 --- a/assets/Pricing-CZj0aLPH.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as m,J as x,C as p}from"./index-BcbVjARk.js";import{F as d,P as a}from"./faqData-CCPvMSkf.js";import{N as u}from"./NeuralReveal-BflyZYSb.js";import{g as n,S as h}from"./vendor-gsap-a3sj5zmn.js";import{G as g}from"./vendor-ui-B0ssGG4c.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";n.registerPlugin(h);function E(){const l=o.useRef([]);o.useEffect(()=>{const t=document.createElement("script");if(t.src="https://js.stripe.com/v3/buy-button.js",t.async=!0,document.body.appendChild(t),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=n.context(()=>{l.current.filter(Boolean).forEach(c=>{n.fromTo(c,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:c,start:"top 85%",once:!0}})})});return()=>{r.revert(),t.parentNode===document.body&&document.body.removeChild(t)}},[]);const s=(t,r)=>{t&&(l.current[r]=t)};return e.jsxs(e.Fragment,{children:[e.jsx(m,{title:"Pricing · QECTOR",description:"QECTOR Decoder v3 commercial licensing. $499 one-time 60-day evaluation, fully creditable. Annual production tiers from $1,299/yr. Enterprise and OEM custom pricing. Prices in USD, exclusive of tax.",lang:"en",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsx(x,{data:{"@context":"https://schema.org","@type":"FAQPage",mainEntity:d.map(t=>({"@type":"Question",name:t.q,acceptedAnswer:{"@type":"Answer",text:t.a}}))}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Clear, Transparent Commercial Licensing"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(u,{text:"License QECTOR for Production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:"QECTOR Decoder v3 is Source-Available for academic and non-commercial research. For internal R&D, pilot programs, and commercial deployment, select a license below."})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsx("div",{ref:t=>s(t,0),id:"evaluation",className:"scroll-mt-32",children:e.jsx("div",{className:"relative p-1 rounded-3xl bg-gradient-to-r from-cyan-400 via-cyan-500 to-gold-400 animate-gradient-xy",children:e.jsxs("div",{className:"bg-void/90 backdrop-blur-xl rounded-[23px] p-8 md:p-12 border border-white/5 flex flex-col md:flex-row items-center justify-between gap-8",children:[e.jsxs("div",{className:"flex-1 text-left",children:[e.jsx("div",{className:"inline-block px-3 py-1 bg-cyan-500/20 text-cyan-300 text-xs font-bold uppercase tracking-wider rounded-full mb-4",children:"Self-Serve · Instant Clearance"}),e.jsx("h2",{className:"text-3xl md:text-4xl font-extrabold text-white mb-4",children:"Commercial Evaluation"}),e.jsx("p",{className:"text-secondary text-base leading-relaxed max-w-xl",children:"A 60-day full-access pilot designed for serious QEC research teams. Includes CPU + CUDA batch decoding, written license agreement, benchmark artifact package, and priority support."}),e.jsxs("div",{className:"mt-6 flex flex-wrap gap-4 text-sm text-cyan-100/70",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," 100% creditable toward any annual license purchased within 90 days of your evaluation start"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Unlimited internal seats"]})]})]}),e.jsxs("div",{className:"w-full md:w-auto flex flex-col items-center",children:[e.jsx("div",{className:"text-4xl font-black text-white mb-1",children:"$499"}),e.jsx("div",{className:"text-secondary text-sm mb-6",children:"One-time flat fee"}),e.jsx("a",{href:"https://buy.stripe.com/6oU00l77Xc8ifsegEqeUU07",className:"btn-cyan w-full text-center py-4 px-8 font-bold shadow-[0_0_30px_rgba(34,211,238,0.3)]",target:"_blank",rel:"noopener noreferrer",children:"Start 60-Day Pilot"})]})]})})}),e.jsxs("div",{ref:t=>s(t,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Annual Production Tiers"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"For teams deploying QECTOR internally or integrating into private SaaS infrastructure."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(g,{size:14,className:"shrink-0","aria-hidden":"true"})," 40% Academic Discount available on all annual tiers. Contact sales."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsx(a,{name:"Solo / Indie",price:"$1,299",period:"/ year",desc:"Production rights for a single named user.",features:["Full v3 decoders","Commercial R&D rights","Single named user","Priority email support"],ctaLabel:"Buy Now",ctaHref:"https://buy.stripe.com/cNi9AV63TfkubbY87UeUU09"}),e.jsx(a,{name:"Startup / Growth",price:"$4,499",period:"/ year",desc:"Up to 10 named users. Advanced BP-OSD/LDPC workflows.",featured:!0,featuredLabel:"Most Popular",features:["Up to 10 named users","Advanced BP-OSD/LDPC","CPU + CUDA batch","Support SLA + 2hr integration"],ctaLabel:"Buy Now",ctaHref:"https://buy.stripe.com/14A5kF4ZP5JU7ZMdseeUU0c"}),e.jsx(a,{name:"Professional",price:"$11,500",period:"/ year",desc:"Up to 25 named users. Validation Report Package credit.",features:["Up to 25 named users","All advanced workflows","Dedicated integration","Validation Report credit"],ctaLabel:"Buy Now",ctaHref:"https://buy.stripe.com/28EeVf1ND0pA6VIewieUU0d"}),e.jsx(a,{name:"Enterprise & OEM",price:"Custom",period:"",desc:"Unlimited seats, custom builds, and SaaS/OEM distribution.",accent:"gold",features:["Unlimited logical qubits","SaaS hosting rights","OEM bundling rights","Dedicated support engineer"],ctaLabel:"Contact Sales",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Prefer to own it outright? ",e.jsx("strong",{className:"text-cyan-300",children:"Solo / Indie Perpetual is $3,299 one-time."})," ",e.jsx(i,{to:"/contact",className:"text-cyan-400 hover:underline",children:"Contact sales to activate"})]})})]}),e.jsxs("div",{ref:t=>s(t,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"$3,750 one-time · 10-20 days delivery"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"The recommended fast-track for teams seeking immediate, defensible proof of workflow value. We execute up to 3 standard benchmark workloads using QECTOR and deliver reproducible artifact bundles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Includes 60-day Commercial Evaluation"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Comparative analysis vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," 60-minute results review call"]})]}),e.jsx(i,{to:"/contact",className:"btn-gold block text-center",children:"Request Validation Sprint"})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activating Your License"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Everyone installs the same wheel from PyPI: there is no separate commercial build. Setting your license token disables the non-commercial usage notice and unlocks your tier's runtime features: distance caps of 7, 19, or 63 depending on tier, and GPU batch paths on Pro and Enterprise tiers."}),e.jsx(p,{language:"bash",className:"mb-6",code:`# Commercial use: activate with the Ed25519 token -export QECTOR_LICENSE="" -export QECTOR_LICENSE_KEY="" - -# Optional: suppress the licensing notice in CI logs -export QECTOR_SILENT=1`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Tokens are verified offline against a public key embedded in the package: no license server, no phone-home, works completely air-gapped."})]})]}),e.jsxs("div",{ref:t=>s(t,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Why License QECTOR?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Free (Source-Available)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licensed (Commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Non-commercial research use only"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Internal R&D and production rights"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Community support (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Priority email support & SLAs"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (Free)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Validation artifact reproduction harnesses"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"PolyForm Noncommercial License"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Written Commercial License Agreement"})]})]})]})})})]}),e.jsxs("div",{ref:t=>s(t,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Frequently Asked Questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:d.map((t,r)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:t.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t.a})]},r))})]}),e.jsxs("div",{ref:t=>s(t,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"What is not included:"})," Unless explicitly granted, no tier includes redistribution, OEM, SaaS hosting, or sublicensing rights. Contact sales for Custom terms."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Procurement:"})," All prices are USD and exclude tax. Stripe handles local taxes automatically. Tokens are delivered instantly via email. Due to instant delivery, sales are final. Please use the $499 Evaluation to test suitability before annual commitment."]}),e.jsxs("div",{className:"flex justify-center gap-6 pt-4",children:[e.jsx(i,{to:"/refund",className:"hover:text-cyan-300 transition-colors",children:"Refund Policy"}),e.jsx(i,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contact Engineering"})]})]})]})]})}export{E as default}; diff --git a/assets/Pricing-Cn8Zecmp.js b/assets/Pricing-Cn8Zecmp.js deleted file mode 100644 index 8a76eca8..00000000 --- a/assets/Pricing-Cn8Zecmp.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as h,P as a,b as s,J as u,L as i,C as y}from"./index-Bh9DBCb3.js";import{F as p,P as c}from"./faqData-D7ZwBN6k.js";import{N as f}from"./NeuralReveal-D-EQoOl2.js";import{g as o,S as g}from"./vendor-gsap-a3sj5zmn.js";import{G as b}from"./vendor-ui-B0ssGG4c.js";import{L as l}from"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";o.registerPlugin(g);function L(){const d=x.useRef([]);x.useEffect(()=>{const r=document.createElement("script");if(r.src="https://js.stripe.com/v3/buy-button.js",r.async=!0,document.body.appendChild(r),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const n=o.context(()=>{d.current.filter(Boolean).forEach(m=>{o.fromTo(m,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:m,start:"top 85%",once:!0}})})});return()=>{n.revert(),r.parentNode===document.body&&document.body.removeChild(r)}},[]);const t=(r,n)=>{r&&(d.current[n]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(h,{title:"Pricing · QECTOR",description:`QECTOR Decoder v3 commercial licensing. Pro from ${s(a.proMonthly)}/month, Lab ${s(a.lab)}/yr, Enterprise and OEM from ${s(a.enterpriseFrom)}/yr. ${a.refundDays}-day money-back. Prices in USD; tax added at checkout where applicable.`,lang:"en",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsx(u,{data:{"@context":"https://schema.org","@type":"FAQPage",mainEntity:p.map(r=>({"@type":"Question",name:r.q,acceptedAnswer:{"@type":"Answer",text:r.a}}))}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Clear, Transparent Commercial Licensing"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(f,{text:"License QECTOR for Production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:["Free for academic and non-commercial research. For commercial use, pick a plan: licences are verified offline and work fully air-gapped, cancel any time, ",a.refundDays,"-day money-back on your first payment."]})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsxs("div",{ref:r=>t(r,0),className:"grid grid-cols-1 sm:grid-cols-3 gap-4 text-center",children:[e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Air-gapped"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Signed token, verified offline. No licence server, no phone-home."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsxs("p",{className:"text-cyan-300 font-bold",children:[a.refundDays,"-day money-back"]}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Full refund on your first payment of any plan, no questions asked."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Cancel any time"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Your licence stays valid to the end of the period you paid for."})]})]}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Commercial Plans"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Production rights for your organisation's internal use. Subscriptions renew automatically until cancelled."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(b,{size:14,className:"shrink-0","aria-hidden":"true"})," ",a.academicDiscountPct,"% off Lab for academic institutions. Non-commercial research is free."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 max-w-5xl mx-auto",children:[e.jsx(c,{name:"Pro",price:s(a.proMonthly),period:"/ month",desc:`Or ${s(a.proAnnual)}/year (2 months free). Pro licence tier.`,featured:!0,featuredLabel:"Most popular",features:["Commercial internal use","All decoder families","CPU + GPU (CUDA/OpenCL) batch","Code distances up to 19","Email support (2 business days)"],ctaLabel:"Buy monthly",ctaHref:i.proMonthly}),e.jsx(c,{name:"Lab",price:s(a.lab),period:"/ year",desc:"Enterprise licence tier, for research groups and labs.",features:["Everything in Pro","Code distances up to 63","Priority support with SLA","2-hour onboarding call","One Validation Report ($5,000 value)"],ctaLabel:"Buy Lab",ctaHref:i.lab}),e.jsx(c,{name:"Enterprise & OEM",price:`$${a.enterpriseFrom/1e3}k+`,period:"/ year",desc:"Redistribution, SaaS, OEM and custom terms.",accent:"gold",features:["Signed agreement, custom terms","SaaS and customer-facing APIs","OEM and hardware bundling","Named support engineer"],ctaLabel:"Contact Sales",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center space-y-2",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Pro billed yearly: ",e.jsxs("a",{href:i.proAnnual,className:"text-cyan-400 hover:underline",rel:"noopener",children:[s(a.proAnnual)," / year"]}),"."," ","Prefer to own it? ",e.jsx("a",{href:i.proPerpetual,className:"text-cyan-400 hover:underline",rel:"noopener",children:e.jsxs("strong",{children:["Pro Perpetual: ",s(a.proPerpetual)," one-time"]})})," ","(every 1.x release, 12 months of support)."]})})]}),e.jsxs("div",{ref:r=>t(r,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"$3,750 one-time · 10-20 days delivery"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"The recommended fast-track for teams seeking immediate, defensible proof of workflow value. We execute up to 3 standard benchmark workloads using QECTOR and deliver reproducible artifact bundles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Includes a ",a.pilotDays,"-day Pilot licence"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Comparative analysis vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," 60-minute results review call"]})]}),e.jsx(l,{to:"/contact",className:"btn-gold block text-center",children:"Request Validation Sprint"}),e.jsxs("p",{className:"text-xs text-gold-200/60 mt-6",children:["Need only the licence and a call? The ",e.jsxs("a",{href:i.pilot,className:"text-gold-400 hover:underline",rel:"noopener",children:[a.pilotDays,"-day Pilot is ",s(a.pilot)]}),":"," ","a 1-hour integration call and a written validation memo, 100% creditable toward Lab within 90 days."]})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activating Your License"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Everyone installs the same wheel from PyPI: there is no separate commercial build. Your token unlocks the paid features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and code distances up to 63 on Lab and Enterprise. CPU decoding is never blocked; distance caps are enforced only when you set QECTOR_ENFORCE=1."}),e.jsx(y,{language:"bash",className:"mb-6",code:`pip install --upgrade "qector-decoder-v3>=1.0.1,<2" -export QECTOR_LICENSE_KEY="" -export QECTOR_LICENSE="" - -# Verify offline: prints Pro or Enterprise -python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Tokens are verified offline against a public key embedded in the package: no license server, no phone-home, works completely air-gapped."})]})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Why License QECTOR?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Free (Source-Available)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licensed (Commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Non-commercial research use only"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Internal R&D and production rights"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Community support (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Priority email support & SLAs"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (Free)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Validation artifact reproduction harnesses"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"PolyForm Noncommercial License"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Written Commercial License Agreement"})]})]})]})})})]}),e.jsxs("div",{ref:r=>t(r,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Frequently Asked Questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:p.map((r,n)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:r.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:r.a})]},n))})]}),e.jsxs("div",{ref:r=>t(r,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"What is not included:"})," Unless explicitly granted, no tier includes redistribution, OEM, SaaS hosting, or sublicensing rights. Contact sales for Custom terms."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Procurement:"})," All prices are in USD; applicable taxes are added at checkout. Monthly and annual plans renew automatically until cancelled, with a reminder before each annual renewal."," ",a.refundDays,"-day money-back guarantee on your first payment of any plan. Tokens are emailed within minutes."]}),e.jsxs("p",{children:["By purchasing, you accept the ",e.jsx(l,{to:"/license-agreement",className:"text-cyan-300 hover:underline",children:"Commercial Licence Agreement"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-x-6 gap-y-2 pt-4",children:[e.jsx(l,{to:"/license-agreement",className:"hover:text-cyan-300 transition-colors",children:"Licence Agreement"}),e.jsx(l,{to:"/refund",className:"hover:text-cyan-300 transition-colors",children:"Refund Policy"}),e.jsx("a",{href:"https://billing.stripe.com/p/login/7sY9AVdwlgoyfse9bYeUU00",target:"_blank",rel:"noopener noreferrer",className:"hover:text-cyan-300 transition-colors",children:"Manage subscription"}),e.jsx(l,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contact Engineering"})]})]})]})]})}export{L as default}; diff --git a/assets/Pricing-D2yXl8FX.js b/assets/Pricing-D2yXl8FX.js deleted file mode 100644 index 065e3ab9..00000000 --- a/assets/Pricing-D2yXl8FX.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as h,P as a,c as s,J as u,d as i,L as l,C as y}from"./index-CcwlvHYJ.js";import{F as p,P as c}from"./faqData-DUePwhCA.js";import{N as f}from"./NeuralReveal-Bsl9IGCr.js";import{g as o,S as g}from"./vendor-gsap-a3sj5zmn.js";import{G as b}from"./vendor-ui-B0ssGG4c.js";o.registerPlugin(g);function P(){const d=x.useRef([]);x.useEffect(()=>{const r=document.createElement("script");if(r.src="https://js.stripe.com/v3/buy-button.js",r.async=!0,document.body.appendChild(r),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const n=o.context(()=>{d.current.filter(Boolean).forEach(m=>{o.fromTo(m,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:m,start:"top 85%",once:!0}})})});return()=>{n.revert(),r.parentNode===document.body&&document.body.removeChild(r)}},[]);const t=(r,n)=>{r&&(d.current[n]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(h,{title:"Pricing · QECTOR",description:`QECTOR Decoder v3 commercial licensing. Pro from ${s(a.proMonthly)}/month, Lab ${s(a.lab)}/yr, Enterprise and OEM from ${s(a.enterpriseFrom)}/yr. ${a.refundDays}-day money-back. Prices in USD; tax added at checkout where applicable.`,lang:"en",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsx(u,{data:{"@context":"https://schema.org","@type":"FAQPage",mainEntity:p.map(r=>({"@type":"Question",name:r.q,acceptedAnswer:{"@type":"Answer",text:r.a}}))}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Clear, Transparent Commercial Licensing"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(f,{text:"License QECTOR for Production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:["Free for academic and non-commercial research. For commercial use, pick a plan: licences are verified offline and work fully air-gapped, cancel any time, ",a.refundDays,"-day money-back on your first payment."]})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsxs("div",{ref:r=>t(r,0),className:"grid grid-cols-1 sm:grid-cols-3 gap-4 text-center",children:[e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Air-gapped"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Signed token, verified offline. No licence server, no phone-home."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsxs("p",{className:"text-cyan-300 font-bold",children:[a.refundDays,"-day money-back"]}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Full refund on your first payment of any plan, no questions asked."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Cancel any time"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Your licence stays valid to the end of the period you paid for."})]})]}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Commercial Plans"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Production rights for your organisation's internal use. Subscriptions renew automatically until cancelled."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(b,{size:14,className:"shrink-0","aria-hidden":"true"})," ",a.academicDiscountPct,"% off Lab for academic institutions. Non-commercial research is free."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 max-w-5xl mx-auto",children:[e.jsx(c,{name:"Pro",price:s(a.proMonthly),period:"/ month",desc:`Or ${s(a.proAnnual)}/year (2 months free). Pro licence tier.`,featured:!0,featuredLabel:"Most popular",features:["Commercial internal use","All decoder families","CPU + GPU (CUDA/OpenCL) batch","Code distances up to 19","Email support (2 business days)"],ctaLabel:"Buy monthly",ctaHref:i.proMonthly}),e.jsx(c,{name:"Lab",price:s(a.lab),period:"/ year",desc:"Enterprise licence tier, for research groups and labs.",features:["Everything in Pro","Code distances up to 63","Priority support with SLA","2-hour onboarding call","One Validation Report ($5,000 value)"],ctaLabel:"Buy Lab",ctaHref:i.lab}),e.jsx(c,{name:"Enterprise & OEM",price:`$${a.enterpriseFrom/1e3}k+`,period:"/ year",desc:"Redistribution, SaaS, OEM and custom terms.",accent:"gold",features:["Signed agreement, custom terms","SaaS and customer-facing APIs","OEM and hardware bundling","Named support engineer"],ctaLabel:"Contact Sales",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center space-y-2",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Pro billed yearly: ",e.jsxs("a",{href:i.proAnnual,className:"text-cyan-400 hover:underline",rel:"noopener",children:[s(a.proAnnual)," / year"]}),"."," ","Prefer to own it? ",e.jsx("a",{href:i.proPerpetual,className:"text-cyan-400 hover:underline",rel:"noopener",children:e.jsxs("strong",{children:["Pro Perpetual: ",s(a.proPerpetual)," one-time"]})})," ","(every 1.x release, 12 months of support)."]})})]}),e.jsxs("div",{ref:r=>t(r,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"$3,750 one-time · 10-20 days delivery"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"The recommended fast-track for teams seeking immediate, defensible proof of workflow value. We execute up to 3 standard benchmark workloads using QECTOR and deliver reproducible artifact bundles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Includes a ",a.pilotDays,"-day Pilot licence"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Comparative analysis vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," 60-minute results review call"]})]}),e.jsx(l,{to:"/contact",className:"btn-gold block text-center",children:"Request Validation Sprint"}),e.jsxs("p",{className:"text-xs text-gold-200/60 mt-6",children:["Need only the licence and a call? The ",e.jsxs("a",{href:i.pilot,className:"text-gold-400 hover:underline",rel:"noopener",children:[a.pilotDays,"-day Pilot is ",s(a.pilot)]}),":"," ","a 1-hour integration call and a written validation memo, 100% creditable toward Lab within 90 days."]})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activating Your License"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Everyone installs the same wheel from PyPI: there is no separate commercial build. Your token unlocks the paid features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and code distances up to 63 on Lab and Enterprise. CPU decoding is never blocked; distance caps are enforced only when you set QECTOR_ENFORCE=1."}),e.jsx(y,{language:"bash",className:"mb-6",code:`pip install --upgrade "qector-decoder-v3>=1.0.1,<2" -export QECTOR_LICENSE_KEY="" -export QECTOR_LICENSE="" - -# Verify offline: prints Pro or Enterprise -python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Tokens are verified offline against a public key embedded in the package: no license server, no phone-home, works completely air-gapped."})]})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Why License QECTOR?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Free (Source-Available)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licensed (Commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Non-commercial research use only"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Internal R&D and production rights"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Community support (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Priority email support & SLAs"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (Free)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Validation artifact reproduction harnesses"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"PolyForm Noncommercial License"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Written Commercial License Agreement"})]})]})]})})})]}),e.jsxs("div",{ref:r=>t(r,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Frequently Asked Questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:p.map((r,n)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:r.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:r.a})]},n))})]}),e.jsxs("div",{ref:r=>t(r,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"What is not included:"})," Unless explicitly granted, no tier includes redistribution, OEM, SaaS hosting, or sublicensing rights. Contact sales for Custom terms."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Procurement:"})," All prices are in USD; applicable taxes are added at checkout. Monthly and annual plans renew automatically until cancelled, with a reminder before each annual renewal."," ",a.refundDays,"-day money-back guarantee on your first payment of any plan. Tokens are emailed within minutes."]}),e.jsxs("p",{children:["By purchasing, you accept the ",e.jsx(l,{to:"/license-agreement",className:"text-cyan-300 hover:underline",children:"Commercial Licence Agreement"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-x-6 gap-y-2 pt-4",children:[e.jsx(l,{to:"/license-agreement",className:"hover:text-cyan-300 transition-colors",children:"Licence Agreement"}),e.jsx(l,{to:"/refund",className:"hover:text-cyan-300 transition-colors",children:"Refund Policy"}),e.jsx("a",{href:"https://billing.stripe.com/p/login/7sY9AVdwlgoyfse9bYeUU00",target:"_blank",rel:"noopener noreferrer",className:"hover:text-cyan-300 transition-colors",children:"Manage subscription"}),e.jsx(l,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contact Engineering"})]})]})]})]})}export{P as default}; diff --git a/assets/Pricing-D3uoCnYX.js b/assets/Pricing-D3uoCnYX.js deleted file mode 100644 index 1a64af5b..00000000 --- a/assets/Pricing-D3uoCnYX.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,P as a,b as s,J as h,L as i,C as f}from"./index-DRAXObZB.js";import{F as p,P as l}from"./faqData-CHsSn8s2.js";import{N as y}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as b}from"./vendor-gsap-a3sj5zmn.js";import{G as g}from"./vendor-ui-B0ssGG4c.js";import{L as o}from"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";c.registerPlugin(b);function S(){const d=x.useRef([]);x.useEffect(()=>{const r=document.createElement("script");if(r.src="https://js.stripe.com/v3/buy-button.js",r.async=!0,document.body.appendChild(r),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const n=c.context(()=>{d.current.filter(Boolean).forEach(m=>{c.fromTo(m,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:m,start:"top 85%",once:!0}})})});return()=>{n.revert(),r.parentNode===document.body&&document.body.removeChild(r)}},[]);const t=(r,n)=>{r&&(d.current[n]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"Pricing · QECTOR",description:`QECTOR Decoder v3 commercial licensing. Pro from ${s(a.proMonthly)}/month, Lab ${s(a.lab)}/yr, Enterprise and OEM from ${s(a.enterpriseFrom)}/yr. ${a.refundDays}-day money-back. Prices in USD; tax added at checkout where applicable.`,lang:"en",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsx(h,{data:{"@context":"https://schema.org","@type":"FAQPage",mainEntity:p.map(r=>({"@type":"Question",name:r.q,acceptedAnswer:{"@type":"Answer",text:r.a}}))}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Clear, Transparent Commercial Licensing"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(y,{text:"License QECTOR for Production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:["Free for academic and non-commercial research. For commercial use, pick a plan: licences are verified offline and work fully air-gapped, cancel any time, ",a.refundDays,"-day money-back on your first payment."]})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsxs("div",{ref:r=>t(r,0),className:"grid grid-cols-1 sm:grid-cols-3 gap-4 text-center",children:[e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Air-gapped"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Signed token, verified offline. No licence server, no phone-home."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsxs("p",{className:"text-cyan-300 font-bold",children:[a.refundDays,"-day money-back"]}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Full refund on your first payment of any plan, no questions asked."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Cancel any time"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Your licence stays valid to the end of the period you paid for."})]})]}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Commercial Plans"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Production rights for your organisation's internal use. Subscriptions renew automatically until cancelled."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(g,{size:14,className:"shrink-0","aria-hidden":"true"})," ",a.academicDiscountPct,"% off Lab for academic institutions. Non-commercial research is free."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 max-w-5xl mx-auto",children:[e.jsx(l,{name:"Pro",price:s(a.proMonthly),period:"/ month",desc:`Or ${s(a.proAnnual)}/year (2 months free). Pro licence tier.`,featured:!0,featuredLabel:"Most popular",features:["Commercial internal use","All decoder families","CPU + GPU (CUDA/OpenCL) batch","Code distances up to 19","Email support (2 business days)"],ctaLabel:"Buy monthly",ctaHref:i.proMonthly}),e.jsx(l,{name:"Lab",price:s(a.lab),period:"/ year",desc:"Enterprise licence tier, for research groups and labs.",features:["Everything in Pro","Code distances up to 63","Priority support with SLA","2-hour onboarding call","One Validation Report ($5,000 value)"],ctaLabel:"Buy Lab",ctaHref:i.lab}),e.jsx(l,{name:"Enterprise & OEM",price:`$${a.enterpriseFrom/1e3}k+`,period:"/ year",desc:"Redistribution, SaaS, OEM and custom terms.",accent:"gold",features:["Signed agreement, custom terms","SaaS and customer-facing APIs","OEM and hardware bundling","Named support engineer"],ctaLabel:"Contact Sales",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center space-y-2",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Pro billed yearly: ",e.jsxs("a",{href:i.proAnnual,className:"text-cyan-400 hover:underline",rel:"noopener",children:[s(a.proAnnual)," / year"]}),"."," ","Prefer to own it? ",e.jsx("a",{href:i.proPerpetual,className:"text-cyan-400 hover:underline",rel:"noopener",children:e.jsxs("strong",{children:["Pro Perpetual: ",s(a.proPerpetual)," one-time"]})})," ","(every 3.x release, 12 months of support)."]})})]}),e.jsxs("div",{ref:r=>t(r,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"$3,750 one-time · 10-20 days delivery"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"The recommended fast-track for teams seeking immediate, defensible proof of workflow value. We execute up to 3 standard benchmark workloads using QECTOR and deliver reproducible artifact bundles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Includes a ",a.pilotDays,"-day Pilot licence"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Comparative analysis vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," 60-minute results review call"]})]}),e.jsx(o,{to:"/contact",className:"btn-gold block text-center",children:"Request Validation Sprint"}),e.jsxs("p",{className:"text-xs text-gold-200/60 mt-6",children:["Need only the licence and a call? The ",e.jsxs("a",{href:i.pilot,className:"text-gold-400 hover:underline",rel:"noopener",children:[a.pilotDays,"-day Pilot is ",s(a.pilot)]}),":"," ","a 1-hour integration call and a written validation memo, 100% creditable toward Lab within 90 days."]})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activating Your License"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Everyone installs the same wheel from PyPI: there is no separate commercial build. Your token unlocks the paid features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and code distances up to 63 on Lab and Enterprise. CPU decoding is never blocked; distance caps are enforced only when you set QECTOR_ENFORCE=1."}),e.jsx(f,{language:"bash",className:"mb-6",code:`pip install --upgrade "qector-decoder-v3>=1.0,<2" -export QECTOR_LICENSE_KEY="" -export QECTOR_LICENSE="" - -# Verify offline: prints Pro or Enterprise -python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Tokens are verified offline against a public key embedded in the package: no license server, no phone-home, works completely air-gapped."})]})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Why License QECTOR?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Free (Source-Available)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licensed (Commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Non-commercial research use only"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Internal R&D and production rights"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Community support (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Priority email support & SLAs"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (Free)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Validation artifact reproduction harnesses"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"PolyForm Noncommercial License"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Written Commercial License Agreement"})]})]})]})})})]}),e.jsxs("div",{ref:r=>t(r,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Frequently Asked Questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:p.map((r,n)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:r.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:r.a})]},n))})]}),e.jsxs("div",{ref:r=>t(r,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"What is not included:"})," Unless explicitly granted, no tier includes redistribution, OEM, SaaS hosting, or sublicensing rights. Contact sales for Custom terms."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Procurement:"})," All prices are in USD; applicable taxes are added at checkout. Monthly and annual plans renew automatically until cancelled, with a reminder before each annual renewal."," ",a.refundDays,"-day money-back guarantee on your first payment of any plan. Tokens are emailed within minutes."]}),e.jsxs("div",{className:"flex justify-center gap-6 pt-4",children:[e.jsx(o,{to:"/refund",className:"hover:text-cyan-300 transition-colors",children:"Refund Policy"}),e.jsx(o,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contact Engineering"})]})]})]})]})}export{S as default}; diff --git a/assets/Pricing-DIy3-kFX.js b/assets/Pricing-DIy3-kFX.js deleted file mode 100644 index a564e8e3..00000000 --- a/assets/Pricing-DIy3-kFX.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as m,J as x,C as p}from"./index-B9kEGiWi.js";import{F as d,P as r}from"./faqData-CCPvMSkf.js";import{N as u}from"./NeuralReveal-BflyZYSb.js";import{g as l,S as h}from"./vendor-gsap-a3sj5zmn.js";import{G as g}from"./vendor-ui-B0ssGG4c.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";l.registerPlugin(h);function E(){const n=o.useRef([]);o.useEffect(()=>{const t=document.createElement("script");if(t.src="https://js.stripe.com/v3/buy-button.js",t.async=!0,document.body.appendChild(t),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const a=l.context(()=>{n.current.filter(Boolean).forEach(c=>{l.fromTo(c,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:c,start:"top 85%",once:!0}})})});return()=>{a.revert(),t.parentNode===document.body&&document.body.removeChild(t)}},[]);const s=(t,a)=>{t&&(n.current[a]=t)};return e.jsxs(e.Fragment,{children:[e.jsx(m,{title:"Pricing · QECTOR",description:"QECTOR Decoder v3 commercial licensing. $499 one-time 60-day evaluation, fully creditable. Annual production tiers from $1,299/yr. Enterprise and OEM custom pricing. Prices in USD, exclusive of tax.",lang:"en",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsx(x,{data:{"@context":"https://schema.org","@type":"FAQPage",mainEntity:d.map(t=>({"@type":"Question",name:t.q,acceptedAnswer:{"@type":"Answer",text:t.a}}))}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Clear, Transparent Commercial Licensing"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(u,{text:"License QECTOR for Production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:"QECTOR Decoder v3 is Source-Available for academic and non-commercial research. For internal R&D, pilot programs, and commercial deployment, select a license below."})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsx("div",{ref:t=>s(t,0),id:"evaluation",className:"scroll-mt-32",children:e.jsx("div",{className:"relative p-1 rounded-3xl bg-gradient-to-r from-cyan-400 via-cyan-500 to-gold-400 animate-gradient-xy",children:e.jsxs("div",{className:"bg-void/90 backdrop-blur-xl rounded-[23px] p-8 md:p-12 border border-white/5 flex flex-col md:flex-row items-center justify-between gap-8",children:[e.jsxs("div",{className:"flex-1 text-left",children:[e.jsx("div",{className:"inline-block px-3 py-1 bg-cyan-500/20 text-cyan-300 text-xs font-bold uppercase tracking-wider rounded-full mb-4",children:"Self-Serve · Instant Clearance"}),e.jsx("h2",{className:"text-3xl md:text-4xl font-extrabold text-white mb-4",children:"Commercial Evaluation"}),e.jsx("p",{className:"text-secondary text-base leading-relaxed max-w-xl",children:"A 60-day full-access pilot designed for serious QEC research teams. Includes CPU + CUDA batch decoding, written license agreement, benchmark artifact package, and priority support."}),e.jsxs("div",{className:"mt-6 flex flex-wrap gap-4 text-sm text-cyan-100/70",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," 100% creditable toward any annual license purchased within 90 days of your evaluation start"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Unlimited internal seats"]})]})]}),e.jsxs("div",{className:"w-full md:w-auto flex flex-col items-center",children:[e.jsx("div",{className:"text-4xl font-black text-white mb-1",children:"$499"}),e.jsx("div",{className:"text-secondary text-sm mb-6",children:"One-time flat fee"}),e.jsx("a",{href:"https://buy.stripe.com/6oU00l77Xc8ifsegEqeUU07",className:"btn-cyan w-full text-center py-4 px-8 font-bold shadow-[0_0_30px_rgba(34,211,238,0.3)]",target:"_blank",rel:"noopener noreferrer",children:"Start 60-Day Pilot"})]})]})})}),e.jsxs("div",{ref:t=>s(t,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Annual Production Tiers"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"For teams deploying QECTOR internally or integrating into private SaaS infrastructure."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(g,{size:14,className:"shrink-0","aria-hidden":"true"})," 40% Academic Discount available on all annual tiers. Contact sales."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsx(r,{name:"Solo / Indie",price:"$1,299",period:"/ year",desc:"Production rights for a single named user.",features:["Full v3 decoders","Commercial R&D rights","Single named user","Priority email support"],ctaLabel:"Buy Now",ctaHref:"https://buy.stripe.com/cNi9AV63TfkubbY87UeUU09"}),e.jsx(r,{name:"Startup / Growth",price:"$4,499",period:"/ year",desc:"Up to 10 named users. Advanced BP-OSD/LDPC workflows.",featured:!0,featuredLabel:"Most Popular",features:["Up to 10 named users","Advanced BP-OSD/LDPC","CPU + CUDA batch","Support SLA + 2hr integration"],ctaLabel:"Buy Now",ctaHref:"https://buy.stripe.com/14A5kF4ZP5JU7ZMdseeUU0c"}),e.jsx(r,{name:"Professional",price:"$11,500",period:"/ year",desc:"Up to 25 named users. Validation Report Package credit.",features:["Up to 25 named users","All advanced workflows","Dedicated integration","Validation Report credit"],ctaLabel:"Buy Now",ctaHref:"https://buy.stripe.com/28EeVf1ND0pA6VIewieUU0d"}),e.jsx(r,{name:"Enterprise & OEM",price:"Custom",period:"",desc:"Unlimited seats, custom builds, and SaaS/OEM distribution.",accent:"gold",features:["Unlimited logical qubits","SaaS hosting rights","OEM bundling rights","Dedicated support engineer"],ctaLabel:"Contact Sales",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Prefer to own it outright? ",e.jsx("strong",{className:"text-cyan-300",children:"Solo / Indie Perpetual is $3,299 one-time."})," ",e.jsx(i,{to:"/contact",className:"text-cyan-400 hover:underline",children:"Contact sales to activate"})]})})]}),e.jsxs("div",{ref:t=>s(t,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"$3,750 one-time · 10-20 days delivery"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"The recommended fast-track for teams seeking immediate, defensible proof of workflow value. We execute up to 3 standard benchmark workloads using QECTOR and deliver reproducible artifact bundles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Includes 60-day Commercial Evaluation"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Comparative analysis vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," 60-minute results review call"]})]}),e.jsx(i,{to:"/contact",className:"btn-gold block text-center",children:"Request Validation Sprint"})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activating Your License"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Everyone installs the same wheel from PyPI: there is no separate commercial build. Setting your license token simply disables the non-commercial usage notice."}),e.jsx(p,{language:"bash",className:"mb-6",code:`# Commercial use: activate with the Ed25519 token -export QECTOR_LICENSE="" -export QECTOR_LICENSE_KEY="" - -# Optional: suppress the licensing notice in CI logs -export QECTOR_SILENT=1`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Tokens are verified offline against a public key embedded in the package: no license server, no phone-home, works completely air-gapped."})]})]}),e.jsxs("div",{ref:t=>s(t,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Why License QECTOR?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Free (Source-Available)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licensed (Commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Non-commercial research use only"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Internal R&D and production rights"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Community support (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Priority email support & SLAs"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (Free)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Validation artifact reproduction harnesses"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"PolyForm Noncommercial License"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Written Commercial License Agreement"})]})]})]})})})]}),e.jsxs("div",{ref:t=>s(t,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Frequently Asked Questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:d.map((t,a)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:t.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t.a})]},a))})]}),e.jsxs("div",{ref:t=>s(t,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"What is not included:"})," Unless explicitly granted, no tier includes redistribution, OEM, SaaS hosting, or sublicensing rights. Contact sales for Custom terms."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Procurement:"})," All prices are USD and exclude tax. Stripe handles local taxes automatically. Tokens are delivered instantly via email. Due to instant delivery, sales are final. Please use the $499 Evaluation to test suitability before annual commitment."]}),e.jsxs("div",{className:"flex justify-center gap-6 pt-4",children:[e.jsx(i,{to:"/refund",className:"hover:text-cyan-300 transition-colors",children:"Refund Policy"}),e.jsx(i,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contact Engineering"})]})]})]})]})}export{E as default}; diff --git a/assets/Pricing-DJJSKVoA.js b/assets/Pricing-DJJSKVoA.js deleted file mode 100644 index d240045e..00000000 --- a/assets/Pricing-DJJSKVoA.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as h,P as a,b as s,J as u,L as n,C as f}from"./index-BN-vOeL2.js";import{F as p,T as y,P as l}from"./TrialForm-BIjatKya.js";import{N as b}from"./NeuralReveal-BflyZYSb.js";import{g as o,S as g}from"./vendor-gsap-a3sj5zmn.js";import{G as j}from"./vendor-ui-B0ssGG4c.js";import{L as c}from"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";o.registerPlugin(g);function L(){const d=x.useRef([]);x.useEffect(()=>{const r=document.createElement("script");if(r.src="https://js.stripe.com/v3/buy-button.js",r.async=!0,document.body.appendChild(r),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const i=o.context(()=>{d.current.filter(Boolean).forEach(m=>{o.fromTo(m,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:m,start:"top 85%",once:!0}})})});return()=>{i.revert(),r.parentNode===document.body&&document.body.removeChild(r)}},[]);const t=(r,i)=>{r&&(d.current[i]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(h,{title:"Pricing · QECTOR",description:`QECTOR Decoder v3 commercial licensing. Free ${a.trialDays}-day commercial trial. Pro from ${s(a.proMonthly)}/month, Team ${s(a.team)}/yr, Lab ${s(a.lab)}/yr, Enterprise and OEM from ${s(a.enterpriseFrom)}/yr. ${a.refundDays}-day money-back. Prices in USD; tax added at checkout where applicable.`,lang:"en",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsx(u,{data:{"@context":"https://schema.org","@type":"FAQPage",mainEntity:p.map(r=>({"@type":"Question",name:r.q,acceptedAnswer:{"@type":"Answer",text:r.a}}))}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Clear, Transparent Commercial Licensing"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(b,{text:"License QECTOR for Production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:["Free for academic and non-commercial research. For commercial use, start a free"," ",a.trialDays,"-day trial, then pick a plan: cancel any time, ",a.refundDays,"-day money-back on your first payment."]})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsx("div",{ref:r=>t(r,0),id:"trial",className:"scroll-mt-32",children:e.jsx("div",{className:"relative p-1 rounded-3xl bg-gradient-to-r from-cyan-400 via-cyan-500 to-gold-400 animate-gradient-xy",children:e.jsxs("div",{className:"bg-void/90 backdrop-blur-xl rounded-[23px] p-8 md:p-12 border border-white/5 flex flex-col md:flex-row items-center justify-between gap-8",children:[e.jsxs("div",{className:"flex-1 text-left",children:[e.jsx("div",{className:"inline-block px-3 py-1 bg-cyan-500/20 text-cyan-300 text-xs font-bold uppercase tracking-wider rounded-full mb-4",children:"Free · No card · Token by e-mail"}),e.jsxs("h2",{className:"text-3xl md:text-4xl font-extrabold text-white mb-4",children:[a.trialDays,"-Day Commercial Trial"]}),e.jsx("p",{className:"text-secondary text-base leading-relaxed max-w-xl",children:"Evaluate QECTOR on your own workloads with full commercial evaluation rights: every decoder family, CPU and GPU (CUDA/OpenCL) batch decoding, offline licence verification."}),e.jsxs("div",{className:"mt-6 flex flex-wrap gap-4 text-sm text-cyan-100/70",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Up to 5 internal users"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Expires on its own: nothing to cancel"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," One trial per address per year"]})]})]}),e.jsx("div",{className:"w-full md:w-auto flex flex-col items-center",children:e.jsx(y,{lang:"en"})})]})})}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Commercial Plans"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Production rights for internal use. Plans renew automatically until cancelled."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(j,{size:14,className:"shrink-0","aria-hidden":"true"})," ",a.academicDiscountPct,"% off Team and Lab for industry-funded university projects. Non-commercial research is free."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsx(l,{name:"Pro",price:s(a.proMonthly),period:"/ month",desc:`One named user. Or ${s(a.proAnnual)}/year (2 months free).`,features:["Commercial internal use","All decoder families","CPU + GPU (CUDA/OpenCL) batch","Email support (2 business days)"],ctaLabel:"Buy monthly",ctaHref:n.proMonthly}),e.jsx(l,{name:"Team",price:s(a.team),period:"/ year",desc:"Up to 10 named users.",featured:!0,featuredLabel:"Best for startups",features:["Everything in Pro","Up to 10 named users","Priority support (1 business day)","2-hour onboarding call"],ctaLabel:"Buy Team",ctaHref:n.team}),e.jsx(l,{name:"Lab",price:s(a.lab),period:"/ year",desc:"Up to 25 named users. Enterprise licence tier.",features:["Everything in Team","Code distances up to 63","Support SLA","One Validation Report ($5,000 value)"],ctaLabel:"Buy Lab",ctaHref:n.lab}),e.jsx(l,{name:"Enterprise & OEM",price:`$${a.enterpriseFrom/1e3}k+`,period:"/ year",desc:"Redistribution, SaaS, OEM and custom terms.",accent:"gold",features:["Unlimited seats","SaaS and customer-facing APIs","OEM and hardware bundling","Named support engineer"],ctaLabel:"Contact Sales",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center space-y-2",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Pro billed yearly: ",e.jsxs("a",{href:n.proAnnual,className:"text-cyan-400 hover:underline",rel:"noopener",children:[s(a.proAnnual)," / year"]}),"."," ","Prefer to own it? ",e.jsx("a",{href:n.proPerpetual,className:"text-cyan-400 hover:underline",rel:"noopener",children:e.jsxs("strong",{children:["Pro Perpetual: ",s(a.proPerpetual)," one-time"]})})," ","(every 3.x release, 12 months of support)."]})})]}),e.jsxs("div",{ref:r=>t(r,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"$3,750 one-time · 10-20 days delivery"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"The recommended fast-track for teams seeking immediate, defensible proof of workflow value. We execute up to 3 standard benchmark workloads using QECTOR and deliver reproducible artifact bundles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Includes a ",a.pilotDays,"-day Pilot licence"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Comparative analysis vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," 60-minute results review call"]})]}),e.jsx(c,{to:"/contact",className:"btn-gold block text-center",children:"Request Validation Sprint"}),e.jsxs("p",{className:"text-xs text-gold-200/60 mt-6",children:["Need only the licence and a call? The ",e.jsxs("a",{href:n.pilot,className:"text-gold-400 hover:underline",rel:"noopener",children:[a.pilotDays,"-day Pilot is ",s(a.pilot)]}),":"," ","a 1-hour integration call and a written validation memo, 100% creditable toward Team or Lab within 90 days."]})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activating Your License"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Everyone installs the same wheel from PyPI: there is no separate commercial build. Your token unlocks the paid features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and code distances up to 63 on Lab and Enterprise. CPU decoding is never blocked; distance caps are enforced only when you set QECTOR_ENFORCE=1."}),e.jsx(f,{language:"bash",className:"mb-6",code:`pip install --upgrade "qector-decoder-v3>=1.0,<2" -export QECTOR_LICENSE_KEY="" -export QECTOR_LICENSE="" - -# Verify offline: prints Pro or Enterprise -python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Tokens are verified offline against a public key embedded in the package: no license server, no phone-home, works completely air-gapped."})]})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Why License QECTOR?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Free (Source-Available)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licensed (Commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Non-commercial research use only"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Internal R&D and production rights"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Community support (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Priority email support & SLAs"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (Free)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Validation artifact reproduction harnesses"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"PolyForm Noncommercial License"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Written Commercial License Agreement"})]})]})]})})})]}),e.jsxs("div",{ref:r=>t(r,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Frequently Asked Questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:p.map((r,i)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:r.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:r.a})]},i))})]}),e.jsxs("div",{ref:r=>t(r,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"What is not included:"})," Unless explicitly granted, no tier includes redistribution, OEM, SaaS hosting, or sublicensing rights. Contact sales for Custom terms."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Procurement:"})," All prices are in USD; applicable taxes are added at checkout. Monthly and annual plans renew automatically until cancelled, with a reminder before each annual renewal."," ",a.refundDays,"-day money-back guarantee on your first payment of any plan. Tokens are emailed within minutes."]}),e.jsxs("div",{className:"flex justify-center gap-6 pt-4",children:[e.jsx(c,{to:"/refund",className:"hover:text-cyan-300 transition-colors",children:"Refund Policy"}),e.jsx(c,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contact Engineering"})]})]})]})]})}export{L as default}; diff --git a/assets/Pricing-DMwpPJSq.js b/assets/Pricing-DMwpPJSq.js deleted file mode 100644 index 6a76766c..00000000 --- a/assets/Pricing-DMwpPJSq.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as m,J as x,C as p}from"./index-iVST85F-.js";import{F as d,P as r}from"./faqData-CYz7igrM.js";import{N as u}from"./NeuralReveal-BflyZYSb.js";import{g as l,S as h}from"./vendor-gsap-a3sj5zmn.js";import{G as g}from"./vendor-ui-B0ssGG4c.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";l.registerPlugin(h);function E(){const n=o.useRef([]);o.useEffect(()=>{const t=document.createElement("script");if(t.src="https://js.stripe.com/v3/buy-button.js",t.async=!0,document.body.appendChild(t),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const a=l.context(()=>{n.current.filter(Boolean).forEach(c=>{l.fromTo(c,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:c,start:"top 85%",once:!0}})})});return()=>{a.revert(),t.parentNode===document.body&&document.body.removeChild(t)}},[]);const s=(t,a)=>{t&&(n.current[a]=t)};return e.jsxs(e.Fragment,{children:[e.jsx(m,{title:"Pricing · QECTOR",description:"QECTOR Decoder v3 commercial licensing. $499 one-time 60-day evaluation, fully creditable. Annual production tiers from $1,299/yr. Enterprise and OEM custom pricing. Prices in USD, exclusive of tax.",lang:"en",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsx(x,{data:{"@context":"https://schema.org","@type":"FAQPage",mainEntity:d.map(t=>({"@type":"Question",name:t.q,acceptedAnswer:{"@type":"Answer",text:t.a}}))}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Clear, Transparent Commercial Licensing"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(u,{text:"License QECTOR for Production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:"QECTOR Decoder v3 is Source-Available for academic and non-commercial research. For internal R&D, pilot programs, and commercial deployment, select a license below."})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsx("div",{ref:t=>s(t,0),id:"evaluation",className:"scroll-mt-32",children:e.jsx("div",{className:"relative p-1 rounded-3xl bg-gradient-to-r from-cyan-400 via-cyan-500 to-gold-400 animate-gradient-xy",children:e.jsxs("div",{className:"bg-void/90 backdrop-blur-xl rounded-[23px] p-8 md:p-12 border border-white/5 flex flex-col md:flex-row items-center justify-between gap-8",children:[e.jsxs("div",{className:"flex-1 text-left",children:[e.jsx("div",{className:"inline-block px-3 py-1 bg-cyan-500/20 text-cyan-300 text-xs font-bold uppercase tracking-wider rounded-full mb-4",children:"Self-Serve · Instant Clearance"}),e.jsx("h2",{className:"text-3xl md:text-4xl font-extrabold text-white mb-4",children:"Commercial Evaluation"}),e.jsx("p",{className:"text-secondary text-base leading-relaxed max-w-xl",children:"A 60-day full-access pilot designed for serious QEC research teams. Includes CPU + CUDA batch decoding, written license agreement, benchmark artifact package, and priority support."}),e.jsxs("div",{className:"mt-6 flex flex-wrap gap-4 text-sm text-cyan-100/70",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," 100% creditable toward any annual license purchased within 90 days of your evaluation start"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Unlimited internal seats"]})]})]}),e.jsxs("div",{className:"w-full md:w-auto flex flex-col items-center",children:[e.jsx("div",{className:"text-4xl font-black text-white mb-1",children:"$499"}),e.jsx("div",{className:"text-secondary text-sm mb-6",children:"One-time flat fee"}),e.jsx("a",{href:"https://buy.stripe.com/6oU00l77Xc8ifsegEqeUU07",className:"btn-cyan w-full text-center py-4 px-8 font-bold shadow-[0_0_30px_rgba(34,211,238,0.3)]",target:"_blank",rel:"noopener noreferrer",children:"Start 60-Day Pilot"})]})]})})}),e.jsxs("div",{ref:t=>s(t,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Annual Production Tiers"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"For teams deploying QECTOR internally or integrating into private SaaS infrastructure."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(g,{size:14,className:"shrink-0","aria-hidden":"true"})," 40% Academic Discount available on all annual tiers. Contact sales."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsx(r,{name:"Solo / Indie",price:"$1,299",period:"/ year",desc:"Production rights for a single named user.",features:["Full v3 decoders","Commercial R&D rights","Single named user","Priority email support"],ctaLabel:"Buy Now",ctaHref:"https://buy.stripe.com/cNi9AV63TfkubbY87UeUU09"}),e.jsx(r,{name:"Startup / Growth",price:"$4,499",period:"/ year",desc:"Up to 10 named users. Advanced BP-OSD/LDPC workflows.",featured:!0,featuredLabel:"Most Popular",features:["Up to 10 named users","Advanced BP-OSD/LDPC","CPU + CUDA batch","Support SLA + 2hr integration"],ctaLabel:"Buy Now",ctaHref:"https://buy.stripe.com/14A5kF4ZP5JU7ZMdseeUU0c"}),e.jsx(r,{name:"Professional",price:"$11,500",period:"/ year",desc:"Up to 25 named users. Validation Report Package credit.",features:["Up to 25 named users","All advanced workflows","Dedicated integration","Validation Report credit"],ctaLabel:"Buy Now",ctaHref:"https://buy.stripe.com/28EeVf1ND0pA6VIewieUU0d"}),e.jsx(r,{name:"Enterprise & OEM",price:"Custom",period:"",desc:"Unlimited seats, custom builds, and SaaS/OEM distribution.",accent:"gold",features:["Unlimited logical qubits","SaaS hosting rights","OEM bundling rights","Dedicated support engineer"],ctaLabel:"Contact Sales",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Prefer to own it outright? ",e.jsx("strong",{className:"text-cyan-300",children:"Solo / Indie Perpetual is $3,299 one-time."})," ",e.jsx(i,{to:"/contact",className:"text-cyan-400 hover:underline",children:"Contact sales to activate"})]})})]}),e.jsxs("div",{ref:t=>s(t,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"$3,750 one-time · 10-20 days delivery"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"The recommended fast-track for teams seeking immediate, defensible proof of workflow value. We execute up to 3 standard benchmark workloads using QECTOR and deliver reproducible artifact bundles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Includes 60-day Commercial Evaluation"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Comparative analysis vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," 60-minute results review call"]})]}),e.jsx(i,{to:"/contact",className:"btn-gold block text-center",children:"Request Validation Sprint"})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activating Your License"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Everyone installs the same wheel from PyPI: there is no separate commercial build. Setting your license token simply disables the non-commercial usage notice."}),e.jsx(p,{language:"bash",className:"mb-6",code:`# Commercial use: activate with the Ed25519 token -export QECTOR_LICENSE="" -export QECTOR_LICENSE_KEY="" - -# Optional: suppress the licensing notice in CI logs -export QECTOR_SILENT=1`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Tokens are verified offline against a public key embedded in the package: no license server, no phone-home, works completely air-gapped."})]})]}),e.jsxs("div",{ref:t=>s(t,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Why License QECTOR?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Free (Source-Available)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licensed (Commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Non-commercial research use only"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Internal R&D and production rights"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Community support (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Priority email support & SLAs"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (Free)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Validation artifact reproduction harnesses"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"PolyForm Noncommercial License"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Written Commercial License Agreement"})]})]})]})})})]}),e.jsxs("div",{ref:t=>s(t,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Frequently Asked Questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:d.map((t,a)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:t.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:t.a})]},a))})]}),e.jsxs("div",{ref:t=>s(t,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"What is not included:"})," Unless explicitly granted, no tier includes redistribution, OEM, SaaS hosting, or sublicensing rights. Contact sales for Custom terms."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Procurement:"})," All prices are USD and exclude tax. Stripe handles local taxes automatically. Tokens are delivered instantly via email. Due to instant delivery, sales are final. Please use the $499 Evaluation to test suitability before annual commitment."]}),e.jsxs("div",{className:"flex justify-center gap-6 pt-4",children:[e.jsx(i,{to:"/refund",className:"hover:text-cyan-300 transition-colors",children:"Refund Policy"}),e.jsx(i,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contact Engineering"})]})]})]})]})}export{E as default}; diff --git a/assets/Pricing-Ddy-FPVH.js b/assets/Pricing-Ddy-FPVH.js deleted file mode 100644 index 976bf03a..00000000 --- a/assets/Pricing-Ddy-FPVH.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,P as a,b as s,J as h,L as i,C as f}from"./index-CxWP17m6.js";import{F as p,P as l}from"./faqData-CHsSn8s2.js";import{N as y}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as b}from"./vendor-gsap-a3sj5zmn.js";import{G as g}from"./vendor-ui-B0ssGG4c.js";import{L as o}from"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";c.registerPlugin(b);function S(){const d=x.useRef([]);x.useEffect(()=>{const r=document.createElement("script");if(r.src="https://js.stripe.com/v3/buy-button.js",r.async=!0,document.body.appendChild(r),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const n=c.context(()=>{d.current.filter(Boolean).forEach(m=>{c.fromTo(m,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:m,start:"top 85%",once:!0}})})});return()=>{n.revert(),r.parentNode===document.body&&document.body.removeChild(r)}},[]);const t=(r,n)=>{r&&(d.current[n]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"Pricing · QECTOR",description:`QECTOR Decoder v3 commercial licensing. Pro from ${s(a.proMonthly)}/month, Lab ${s(a.lab)}/yr, Enterprise and OEM from ${s(a.enterpriseFrom)}/yr. ${a.refundDays}-day money-back. Prices in USD; tax added at checkout where applicable.`,lang:"en",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsx(h,{data:{"@context":"https://schema.org","@type":"FAQPage",mainEntity:p.map(r=>({"@type":"Question",name:r.q,acceptedAnswer:{"@type":"Answer",text:r.a}}))}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Clear, Transparent Commercial Licensing"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(y,{text:"License QECTOR for Production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:["Free for academic and non-commercial research. For commercial use, pick a plan: licences are verified offline and work fully air-gapped, cancel any time, ",a.refundDays,"-day money-back on your first payment."]})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsxs("div",{ref:r=>t(r,0),className:"grid grid-cols-1 sm:grid-cols-3 gap-4 text-center",children:[e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Air-gapped"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Signed token, verified offline. No licence server, no phone-home."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsxs("p",{className:"text-cyan-300 font-bold",children:[a.refundDays,"-day money-back"]}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Full refund on your first payment of any plan, no questions asked."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Cancel any time"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Your licence stays valid to the end of the period you paid for."})]})]}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Commercial Plans"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Production rights for your organisation's internal use. Subscriptions renew automatically until cancelled."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(g,{size:14,className:"shrink-0","aria-hidden":"true"})," ",a.academicDiscountPct,"% off Lab for academic institutions. Non-commercial research is free."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 max-w-5xl mx-auto",children:[e.jsx(l,{name:"Pro",price:s(a.proMonthly),period:"/ month",desc:`Or ${s(a.proAnnual)}/year (2 months free). Pro licence tier.`,featured:!0,featuredLabel:"Most popular",features:["Commercial internal use","All decoder families","CPU + GPU (CUDA/OpenCL) batch","Code distances up to 19","Email support (2 business days)"],ctaLabel:"Buy monthly",ctaHref:i.proMonthly}),e.jsx(l,{name:"Lab",price:s(a.lab),period:"/ year",desc:"Enterprise licence tier, for research groups and labs.",features:["Everything in Pro","Code distances up to 63","Priority support with SLA","2-hour onboarding call","One Validation Report ($5,000 value)"],ctaLabel:"Buy Lab",ctaHref:i.lab}),e.jsx(l,{name:"Enterprise & OEM",price:`$${a.enterpriseFrom/1e3}k+`,period:"/ year",desc:"Redistribution, SaaS, OEM and custom terms.",accent:"gold",features:["Signed agreement, custom terms","SaaS and customer-facing APIs","OEM and hardware bundling","Named support engineer"],ctaLabel:"Contact Sales",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center space-y-2",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Pro billed yearly: ",e.jsxs("a",{href:i.proAnnual,className:"text-cyan-400 hover:underline",rel:"noopener",children:[s(a.proAnnual)," / year"]}),"."," ","Prefer to own it? ",e.jsx("a",{href:i.proPerpetual,className:"text-cyan-400 hover:underline",rel:"noopener",children:e.jsxs("strong",{children:["Pro Perpetual: ",s(a.proPerpetual)," one-time"]})})," ","(every 3.x release, 12 months of support)."]})})]}),e.jsxs("div",{ref:r=>t(r,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"$3,750 one-time · 10-20 days delivery"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"The recommended fast-track for teams seeking immediate, defensible proof of workflow value. We execute up to 3 standard benchmark workloads using QECTOR and deliver reproducible artifact bundles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Includes a ",a.pilotDays,"-day Pilot licence"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Comparative analysis vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," 60-minute results review call"]})]}),e.jsx(o,{to:"/contact",className:"btn-gold block text-center",children:"Request Validation Sprint"}),e.jsxs("p",{className:"text-xs text-gold-200/60 mt-6",children:["Need only the licence and a call? The ",e.jsxs("a",{href:i.pilot,className:"text-gold-400 hover:underline",rel:"noopener",children:[a.pilotDays,"-day Pilot is ",s(a.pilot)]}),":"," ","a 1-hour integration call and a written validation memo, 100% creditable toward Lab within 90 days."]})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activating Your License"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Everyone installs the same wheel from PyPI: there is no separate commercial build. Your token unlocks the paid features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and code distances up to 63 on Lab and Enterprise. CPU decoding is never blocked; distance caps are enforced only when you set QECTOR_ENFORCE=1."}),e.jsx(f,{language:"bash",className:"mb-6",code:`pip install --upgrade "qector-decoder-v3>=1.0,<2" -export QECTOR_LICENSE_KEY="" -export QECTOR_LICENSE="" - -# Verify offline: prints Pro or Enterprise -python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Tokens are verified offline against a public key embedded in the package: no license server, no phone-home, works completely air-gapped."})]})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Why License QECTOR?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Free (Source-Available)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licensed (Commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Non-commercial research use only"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Internal R&D and production rights"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Community support (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Priority email support & SLAs"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (Free)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Validation artifact reproduction harnesses"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"PolyForm Noncommercial License"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Written Commercial License Agreement"})]})]})]})})})]}),e.jsxs("div",{ref:r=>t(r,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Frequently Asked Questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:p.map((r,n)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:r.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:r.a})]},n))})]}),e.jsxs("div",{ref:r=>t(r,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"What is not included:"})," Unless explicitly granted, no tier includes redistribution, OEM, SaaS hosting, or sublicensing rights. Contact sales for Custom terms."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Procurement:"})," All prices are in USD; applicable taxes are added at checkout. Monthly and annual plans renew automatically until cancelled, with a reminder before each annual renewal."," ",a.refundDays,"-day money-back guarantee on your first payment of any plan. Tokens are emailed within minutes."]}),e.jsxs("div",{className:"flex justify-center gap-6 pt-4",children:[e.jsx(o,{to:"/refund",className:"hover:text-cyan-300 transition-colors",children:"Refund Policy"}),e.jsx(o,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contact Engineering"})]})]})]})]})}export{S as default}; diff --git a/assets/Pricing-Deid2xWF.js b/assets/Pricing-Deid2xWF.js deleted file mode 100644 index deb761bc..00000000 --- a/assets/Pricing-Deid2xWF.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as h,P as a,b as s,J as u,L as n,C as f}from"./index-CpdATiEY.js";import{F as p,T as y,P as l}from"./TrialForm-D2xU-ZBp.js";import{N as b}from"./NeuralReveal-BflyZYSb.js";import{g as o,S as g}from"./vendor-gsap-a3sj5zmn.js";import{G as j}from"./vendor-ui-B0ssGG4c.js";import{L as c}from"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";o.registerPlugin(g);function L(){const d=x.useRef([]);x.useEffect(()=>{const r=document.createElement("script");if(r.src="https://js.stripe.com/v3/buy-button.js",r.async=!0,document.body.appendChild(r),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const i=o.context(()=>{d.current.filter(Boolean).forEach(m=>{o.fromTo(m,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:m,start:"top 85%",once:!0}})})});return()=>{i.revert(),r.parentNode===document.body&&document.body.removeChild(r)}},[]);const t=(r,i)=>{r&&(d.current[i]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(h,{title:"Pricing · QECTOR",description:`QECTOR Decoder v3 commercial licensing. Free ${a.trialDays}-day commercial trial. Pro from ${s(a.proMonthly)}/month, Team ${s(a.team)}/yr, Lab ${s(a.lab)}/yr, Enterprise and OEM from ${s(a.enterpriseFrom)}/yr. ${a.refundDays}-day money-back. Prices in USD; tax added at checkout where applicable.`,lang:"en",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsx(u,{data:{"@context":"https://schema.org","@type":"FAQPage",mainEntity:p.map(r=>({"@type":"Question",name:r.q,acceptedAnswer:{"@type":"Answer",text:r.a}}))}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Clear, Transparent Commercial Licensing"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(b,{text:"License QECTOR for Production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:["Free for academic and non-commercial research. For commercial use, start a free"," ",a.trialDays,"-day trial, then pick a plan: cancel any time, ",a.refundDays,"-day money-back on your first payment."]})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsx("div",{ref:r=>t(r,0),id:"trial",className:"scroll-mt-32",children:e.jsx("div",{className:"relative p-1 rounded-3xl bg-gradient-to-r from-cyan-400 via-cyan-500 to-gold-400 animate-gradient-xy",children:e.jsxs("div",{className:"bg-void/90 backdrop-blur-xl rounded-[23px] p-8 md:p-12 border border-white/5 flex flex-col md:flex-row items-center justify-between gap-8",children:[e.jsxs("div",{className:"flex-1 text-left",children:[e.jsx("div",{className:"inline-block px-3 py-1 bg-cyan-500/20 text-cyan-300 text-xs font-bold uppercase tracking-wider rounded-full mb-4",children:"Free · No card · Token by e-mail"}),e.jsxs("h2",{className:"text-3xl md:text-4xl font-extrabold text-white mb-4",children:[a.trialDays,"-Day Commercial Trial"]}),e.jsx("p",{className:"text-secondary text-base leading-relaxed max-w-xl",children:"Evaluate QECTOR on your own workloads with full commercial evaluation rights: every decoder family, CPU and GPU (CUDA/OpenCL) batch decoding, offline licence verification."}),e.jsxs("div",{className:"mt-6 flex flex-wrap gap-4 text-sm text-cyan-100/70",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Up to 5 internal users"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Expires on its own: nothing to cancel"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," One trial per address per year"]})]})]}),e.jsx("div",{className:"w-full md:w-auto flex flex-col items-center",children:e.jsx(y,{lang:"en"})})]})})}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Commercial Plans"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Production rights for internal use. Plans renew automatically until cancelled."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(j,{size:14,className:"shrink-0","aria-hidden":"true"})," ",a.academicDiscountPct,"% off Team and Lab for industry-funded university projects. Non-commercial research is free."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsx(l,{name:"Pro",price:s(a.proMonthly),period:"/ month",desc:`One named user. Or ${s(a.proAnnual)}/year (2 months free).`,features:["Commercial internal use","All decoder families","CPU + GPU (CUDA/OpenCL) batch","Email support (2 business days)"],ctaLabel:"Buy monthly",ctaHref:n.proMonthly}),e.jsx(l,{name:"Team",price:s(a.team),period:"/ year",desc:"Up to 10 named users.",featured:!0,featuredLabel:"Best for startups",features:["Everything in Pro","Up to 10 named users","Priority support (1 business day)","2-hour onboarding call"],ctaLabel:"Buy Team",ctaHref:n.team}),e.jsx(l,{name:"Lab",price:s(a.lab),period:"/ year",desc:"Up to 25 named users. Enterprise licence tier.",features:["Everything in Team","Code distances up to 63","Support SLA","One Validation Report ($5,000 value)"],ctaLabel:"Buy Lab",ctaHref:n.lab}),e.jsx(l,{name:"Enterprise & OEM",price:`$${a.enterpriseFrom/1e3}k+`,period:"/ year",desc:"Redistribution, SaaS, OEM and custom terms.",accent:"gold",features:["Unlimited seats","SaaS and customer-facing APIs","OEM and hardware bundling","Named support engineer"],ctaLabel:"Contact Sales",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center space-y-2",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Pro billed yearly: ",e.jsxs("a",{href:n.proAnnual,className:"text-cyan-400 hover:underline",rel:"noopener",children:[s(a.proAnnual)," / year"]}),"."," ","Prefer to own it? ",e.jsx("a",{href:n.proPerpetual,className:"text-cyan-400 hover:underline",rel:"noopener",children:e.jsxs("strong",{children:["Pro Perpetual: ",s(a.proPerpetual)," one-time"]})})," ","(every 3.x release, 12 months of support)."]})})]}),e.jsxs("div",{ref:r=>t(r,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"$3,750 one-time · 10-20 days delivery"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"The recommended fast-track for teams seeking immediate, defensible proof of workflow value. We execute up to 3 standard benchmark workloads using QECTOR and deliver reproducible artifact bundles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Includes a ",a.pilotDays,"-day Pilot licence"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Comparative analysis vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," 60-minute results review call"]})]}),e.jsx(c,{to:"/contact",className:"btn-gold block text-center",children:"Request Validation Sprint"}),e.jsxs("p",{className:"text-xs text-gold-200/60 mt-6",children:["Need only the licence and a call? The ",e.jsxs("a",{href:n.pilot,className:"text-gold-400 hover:underline",rel:"noopener",children:[a.pilotDays,"-day Pilot is ",s(a.pilot)]}),":"," ","a 1-hour integration call and a written validation memo, 100% creditable toward Team or Lab within 90 days."]})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activating Your License"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Everyone installs the same wheel from PyPI: there is no separate commercial build. Your token unlocks the paid features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and code distances up to 63 on Lab and Enterprise. CPU decoding is never blocked; distance caps are enforced only when you set QECTOR_ENFORCE=1."}),e.jsx(f,{language:"bash",className:"mb-6",code:`pip install --upgrade "qector-decoder-v3>=1.0,<2" -export QECTOR_LICENSE_KEY="" -export QECTOR_LICENSE="" - -# Verify offline: prints Pro or Enterprise -python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Tokens are verified offline against a public key embedded in the package: no license server, no phone-home, works completely air-gapped."})]})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Why License QECTOR?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Free (Source-Available)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licensed (Commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Non-commercial research use only"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Internal R&D and production rights"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Community support (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Priority email support & SLAs"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (Free)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Validation artifact reproduction harnesses"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"PolyForm Noncommercial License"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Written Commercial License Agreement"})]})]})]})})})]}),e.jsxs("div",{ref:r=>t(r,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Frequently Asked Questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:p.map((r,i)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:r.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:r.a})]},i))})]}),e.jsxs("div",{ref:r=>t(r,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"What is not included:"})," Unless explicitly granted, no tier includes redistribution, OEM, SaaS hosting, or sublicensing rights. Contact sales for Custom terms."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Procurement:"})," All prices are in USD; applicable taxes are added at checkout. Monthly and annual plans renew automatically until cancelled, with a reminder before each annual renewal."," ",a.refundDays,"-day money-back guarantee on your first payment of any plan. Tokens are emailed within minutes."]}),e.jsxs("div",{className:"flex justify-center gap-6 pt-4",children:[e.jsx(c,{to:"/refund",className:"hover:text-cyan-300 transition-colors",children:"Refund Policy"}),e.jsx(c,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contact Engineering"})]})]})]})]})}export{L as default}; diff --git a/assets/Pricing-DkKSNR_L.js b/assets/Pricing-DkKSNR_L.js deleted file mode 100644 index 6ca9a409..00000000 --- a/assets/Pricing-DkKSNR_L.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,P as a,b as s,J as h,L as i,C as f}from"./index-DkYdPRY7.js";import{F as p,P as l}from"./faqData-CHsSn8s2.js";import{N as y}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as b}from"./vendor-gsap-a3sj5zmn.js";import{G as g}from"./vendor-ui-B0ssGG4c.js";import{L as o}from"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";c.registerPlugin(b);function S(){const d=x.useRef([]);x.useEffect(()=>{const r=document.createElement("script");if(r.src="https://js.stripe.com/v3/buy-button.js",r.async=!0,document.body.appendChild(r),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const n=c.context(()=>{d.current.filter(Boolean).forEach(m=>{c.fromTo(m,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:m,start:"top 85%",once:!0}})})});return()=>{n.revert(),r.parentNode===document.body&&document.body.removeChild(r)}},[]);const t=(r,n)=>{r&&(d.current[n]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"Pricing · QECTOR",description:`QECTOR Decoder v3 commercial licensing. Pro from ${s(a.proMonthly)}/month, Lab ${s(a.lab)}/yr, Enterprise and OEM from ${s(a.enterpriseFrom)}/yr. ${a.refundDays}-day money-back. Prices in USD; tax added at checkout where applicable.`,lang:"en",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsx(h,{data:{"@context":"https://schema.org","@type":"FAQPage",mainEntity:p.map(r=>({"@type":"Question",name:r.q,acceptedAnswer:{"@type":"Answer",text:r.a}}))}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Clear, Transparent Commercial Licensing"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(y,{text:"License QECTOR for Production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:["Free for academic and non-commercial research. For commercial use, pick a plan: licences are verified offline and work fully air-gapped, cancel any time, ",a.refundDays,"-day money-back on your first payment."]})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsxs("div",{ref:r=>t(r,0),className:"grid grid-cols-1 sm:grid-cols-3 gap-4 text-center",children:[e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Air-gapped"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Signed token, verified offline. No licence server, no phone-home."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsxs("p",{className:"text-cyan-300 font-bold",children:[a.refundDays,"-day money-back"]}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Full refund on your first payment of any plan, no questions asked."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Cancel any time"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Your licence stays valid to the end of the period you paid for."})]})]}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Commercial Plans"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Production rights for your organisation's internal use. Subscriptions renew automatically until cancelled."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(g,{size:14,className:"shrink-0","aria-hidden":"true"})," ",a.academicDiscountPct,"% off Lab for academic institutions. Non-commercial research is free."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 max-w-5xl mx-auto",children:[e.jsx(l,{name:"Pro",price:s(a.proMonthly),period:"/ month",desc:`Or ${s(a.proAnnual)}/year (2 months free). Pro licence tier.`,featured:!0,featuredLabel:"Most popular",features:["Commercial internal use","All decoder families","CPU + GPU (CUDA/OpenCL) batch","Code distances up to 19","Email support (2 business days)"],ctaLabel:"Buy monthly",ctaHref:i.proMonthly}),e.jsx(l,{name:"Lab",price:s(a.lab),period:"/ year",desc:"Enterprise licence tier, for research groups and labs.",features:["Everything in Pro","Code distances up to 63","Priority support with SLA","2-hour onboarding call","One Validation Report ($5,000 value)"],ctaLabel:"Buy Lab",ctaHref:i.lab}),e.jsx(l,{name:"Enterprise & OEM",price:`$${a.enterpriseFrom/1e3}k+`,period:"/ year",desc:"Redistribution, SaaS, OEM and custom terms.",accent:"gold",features:["Signed agreement, custom terms","SaaS and customer-facing APIs","OEM and hardware bundling","Named support engineer"],ctaLabel:"Contact Sales",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center space-y-2",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Pro billed yearly: ",e.jsxs("a",{href:i.proAnnual,className:"text-cyan-400 hover:underline",rel:"noopener",children:[s(a.proAnnual)," / year"]}),"."," ","Prefer to own it? ",e.jsx("a",{href:i.proPerpetual,className:"text-cyan-400 hover:underline",rel:"noopener",children:e.jsxs("strong",{children:["Pro Perpetual: ",s(a.proPerpetual)," one-time"]})})," ","(every 3.x release, 12 months of support)."]})})]}),e.jsxs("div",{ref:r=>t(r,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"$3,750 one-time · 10-20 days delivery"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"The recommended fast-track for teams seeking immediate, defensible proof of workflow value. We execute up to 3 standard benchmark workloads using QECTOR and deliver reproducible artifact bundles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Includes a ",a.pilotDays,"-day Pilot licence"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Comparative analysis vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," 60-minute results review call"]})]}),e.jsx(o,{to:"/contact",className:"btn-gold block text-center",children:"Request Validation Sprint"}),e.jsxs("p",{className:"text-xs text-gold-200/60 mt-6",children:["Need only the licence and a call? The ",e.jsxs("a",{href:i.pilot,className:"text-gold-400 hover:underline",rel:"noopener",children:[a.pilotDays,"-day Pilot is ",s(a.pilot)]}),":"," ","a 1-hour integration call and a written validation memo, 100% creditable toward Lab within 90 days."]})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activating Your License"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Everyone installs the same wheel from PyPI: there is no separate commercial build. Your token unlocks the paid features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and code distances up to 63 on Lab and Enterprise. CPU decoding is never blocked; distance caps are enforced only when you set QECTOR_ENFORCE=1."}),e.jsx(f,{language:"bash",className:"mb-6",code:`pip install --upgrade "qector-decoder-v3>=1.0,<2" -export QECTOR_LICENSE_KEY="" -export QECTOR_LICENSE="" - -# Verify offline: prints Pro or Enterprise -python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Tokens are verified offline against a public key embedded in the package: no license server, no phone-home, works completely air-gapped."})]})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Why License QECTOR?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Free (Source-Available)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licensed (Commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Non-commercial research use only"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Internal R&D and production rights"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Community support (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Priority email support & SLAs"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (Free)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Validation artifact reproduction harnesses"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"PolyForm Noncommercial License"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Written Commercial License Agreement"})]})]})]})})})]}),e.jsxs("div",{ref:r=>t(r,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Frequently Asked Questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:p.map((r,n)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:r.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:r.a})]},n))})]}),e.jsxs("div",{ref:r=>t(r,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"What is not included:"})," Unless explicitly granted, no tier includes redistribution, OEM, SaaS hosting, or sublicensing rights. Contact sales for Custom terms."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Procurement:"})," All prices are in USD; applicable taxes are added at checkout. Monthly and annual plans renew automatically until cancelled, with a reminder before each annual renewal."," ",a.refundDays,"-day money-back guarantee on your first payment of any plan. Tokens are emailed within minutes."]}),e.jsxs("div",{className:"flex justify-center gap-6 pt-4",children:[e.jsx(o,{to:"/refund",className:"hover:text-cyan-300 transition-colors",children:"Refund Policy"}),e.jsx(o,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contact Engineering"})]})]})]})]})}export{S as default}; diff --git a/assets/Pricing-DpB7aYgZ.js b/assets/Pricing-DpB7aYgZ.js deleted file mode 100644 index 267ece16..00000000 --- a/assets/Pricing-DpB7aYgZ.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as h,P as a,c as s,J as u,d as i,L as l,C as y}from"./index-DayaklK-.js";import{F as p,P as c}from"./faqData-CvhYJZQK.js";import{N as f}from"./NeuralReveal-uYarhiMA.js";import{g as o,S as g}from"./vendor-gsap-a3sj5zmn.js";import{G as b}from"./vendor-ui-B8TlNU4J.js";o.registerPlugin(g);function P(){const d=x.useRef([]);x.useEffect(()=>{const r=document.createElement("script");if(r.src="https://js.stripe.com/v3/buy-button.js",r.async=!0,document.body.appendChild(r),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const n=o.context(()=>{d.current.filter(Boolean).forEach(m=>{o.fromTo(m,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:m,start:"top 85%",once:!0}})})});return()=>{n.revert(),r.parentNode===document.body&&document.body.removeChild(r)}},[]);const t=(r,n)=>{r&&(d.current[n]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(h,{title:"Pricing · QECTOR",description:`QECTOR Decoder v3 commercial licensing. Pro from ${s(a.proMonthly)}/month, Lab ${s(a.lab)}/yr, Enterprise and OEM from ${s(a.enterpriseFrom)}/yr. ${a.refundDays}-day money-back. Prices in USD; tax added at checkout where applicable.`,lang:"en",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsx(u,{data:{"@context":"https://schema.org","@type":"FAQPage",mainEntity:p.map(r=>({"@type":"Question",name:r.q,acceptedAnswer:{"@type":"Answer",text:r.a}}))}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Clear, Transparent Commercial Licensing"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(f,{text:"License QECTOR for Production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:["Free for academic and non-commercial research. For commercial use, pick a plan: licences are verified offline and work fully air-gapped, cancel any time, ",a.refundDays,"-day money-back on your first payment."]})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsxs("div",{ref:r=>t(r,0),className:"grid grid-cols-1 sm:grid-cols-3 gap-4 text-center",children:[e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Air-gapped"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Signed token, verified offline. No licence server, no phone-home."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsxs("p",{className:"text-cyan-300 font-bold",children:[a.refundDays,"-day money-back"]}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Full refund on your first payment of any plan, no questions asked."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Cancel any time"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Your licence stays valid to the end of the period you paid for."})]})]}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Commercial Plans"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Production rights for your organisation's internal use. Subscriptions renew automatically until cancelled."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(b,{size:14,className:"shrink-0","aria-hidden":"true"})," ",a.academicDiscountPct,"% off Lab for academic institutions. Non-commercial research is free."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 max-w-5xl mx-auto",children:[e.jsx(c,{name:"Pro",price:s(a.proMonthly),period:"/ month",desc:`Or ${s(a.proAnnual)}/year (2 months free). Pro licence tier.`,featured:!0,featuredLabel:"Most popular",features:["Commercial internal use","All decoder families","CPU + GPU (CUDA/OpenCL) batch","Code distances up to 19","Email support (2 business days)"],ctaLabel:"Buy monthly",ctaHref:i.proMonthly}),e.jsx(c,{name:"Lab",price:s(a.lab),period:"/ year",desc:"Enterprise licence tier, for research groups and labs.",features:["Everything in Pro","Code distances up to 63","Priority support with SLA","2-hour onboarding call","One Validation Report ($5,000 value)"],ctaLabel:"Buy Lab",ctaHref:i.lab}),e.jsx(c,{name:"Enterprise & OEM",price:`$${a.enterpriseFrom/1e3}k+`,period:"/ year",desc:"Redistribution, SaaS, OEM and custom terms.",accent:"gold",features:["Signed agreement, custom terms","SaaS and customer-facing APIs","OEM and hardware bundling","Named support engineer"],ctaLabel:"Contact Sales",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center space-y-2",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Pro billed yearly: ",e.jsxs("a",{href:i.proAnnual,className:"text-cyan-400 hover:underline",rel:"noopener",children:[s(a.proAnnual)," / year"]}),"."," ","Prefer to own it? ",e.jsx("a",{href:i.proPerpetual,className:"text-cyan-400 hover:underline",rel:"noopener",children:e.jsxs("strong",{children:["Pro Perpetual: ",s(a.proPerpetual)," one-time"]})})," ","(every 1.x release, 12 months of support)."]})})]}),e.jsxs("div",{ref:r=>t(r,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"$3,750 one-time · 10-20 days delivery"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"The recommended fast-track for teams seeking immediate, defensible proof of workflow value. We execute up to 3 standard benchmark workloads using QECTOR and deliver reproducible artifact bundles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Includes a ",a.pilotDays,"-day Pilot licence"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Comparative analysis vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," 60-minute results review call"]})]}),e.jsx(l,{to:"/contact",className:"btn-gold block text-center",children:"Request Validation Sprint"}),e.jsxs("p",{className:"text-xs text-gold-200/60 mt-6",children:["Need only the licence and a call? The ",e.jsxs("a",{href:i.pilot,className:"text-gold-400 hover:underline",rel:"noopener",children:[a.pilotDays,"-day Pilot is ",s(a.pilot)]}),":"," ","a 1-hour integration call and a written validation memo, 100% creditable toward Lab within 90 days."]})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activating Your License"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Everyone installs the same wheel from PyPI: there is no separate commercial build. Your token unlocks the paid features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and code distances up to 63 on Lab and Enterprise. CPU decoding is never blocked; distance caps are enforced only when you set QECTOR_ENFORCE=1."}),e.jsx(y,{language:"bash",className:"mb-6",code:`pip install --upgrade "qector-decoder-v3>=1.0.1,<2" -export QECTOR_LICENSE_KEY="" -export QECTOR_LICENSE="" - -# Verify offline: prints Pro or Enterprise -python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Tokens are verified offline against a public key embedded in the package: no license server, no phone-home, works completely air-gapped."})]})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Why License QECTOR?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Free (Source-Available)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licensed (Commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Non-commercial research use only"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Internal R&D and production rights"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Community support (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Priority email support & SLAs"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (Free)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Validation artifact reproduction harnesses"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"PolyForm Noncommercial License"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Written Commercial License Agreement"})]})]})]})})})]}),e.jsxs("div",{ref:r=>t(r,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Frequently Asked Questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:p.map((r,n)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:r.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:r.a})]},n))})]}),e.jsxs("div",{ref:r=>t(r,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"What is not included:"})," Unless explicitly granted, no tier includes redistribution, OEM, SaaS hosting, or sublicensing rights. Contact sales for Custom terms."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Procurement:"})," All prices are in USD; applicable taxes are added at checkout. Monthly and annual plans renew automatically until cancelled, with a reminder before each annual renewal."," ",a.refundDays,"-day money-back guarantee on your first payment of any plan. Tokens are emailed within minutes."]}),e.jsxs("p",{children:["By purchasing, you accept the ",e.jsx(l,{to:"/license-agreement",className:"text-cyan-300 hover:underline",children:"Commercial Licence Agreement"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-x-6 gap-y-2 pt-4",children:[e.jsx(l,{to:"/license-agreement",className:"hover:text-cyan-300 transition-colors",children:"Licence Agreement"}),e.jsx(l,{to:"/refund",className:"hover:text-cyan-300 transition-colors",children:"Refund Policy"}),e.jsx("a",{href:"https://billing.stripe.com/p/login/7sY9AVdwlgoyfse9bYeUU00",target:"_blank",rel:"noopener noreferrer",className:"hover:text-cyan-300 transition-colors",children:"Manage subscription"}),e.jsx(l,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contact Engineering"})]})]})]})]})}export{P as default}; diff --git a/assets/Pricing-DtCO08jL.js b/assets/Pricing-DtCO08jL.js deleted file mode 100644 index 1c469ee9..00000000 --- a/assets/Pricing-DtCO08jL.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as h,P as a,c as s,J as u,d as i,L as l,C as y}from"./index-c1PDYu0j.js";import{F as p,P as c}from"./faqData-B9kvzm8o.js";import{N as f}from"./NeuralReveal-uYarhiMA.js";import{g as o,S as g}from"./vendor-gsap-a3sj5zmn.js";import{G as b}from"./vendor-ui-B8TlNU4J.js";o.registerPlugin(g);function P(){const d=x.useRef([]);x.useEffect(()=>{const r=document.createElement("script");if(r.src="https://js.stripe.com/v3/buy-button.js",r.async=!0,document.body.appendChild(r),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const n=o.context(()=>{d.current.filter(Boolean).forEach(m=>{o.fromTo(m,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:m,start:"top 85%",once:!0}})})});return()=>{n.revert(),r.parentNode===document.body&&document.body.removeChild(r)}},[]);const t=(r,n)=>{r&&(d.current[n]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(h,{title:"Pricing · QECTOR",description:`QECTOR Decoder v3 commercial licensing. Pro from ${s(a.proMonthly)}/month, Lab ${s(a.lab)}/yr, Enterprise and OEM from ${s(a.enterpriseFrom)}/yr. ${a.refundDays}-day money-back. Prices in USD; tax added at checkout where applicable.`,lang:"en",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsx(u,{data:{"@context":"https://schema.org","@type":"FAQPage",mainEntity:p.map(r=>({"@type":"Question",name:r.q,acceptedAnswer:{"@type":"Answer",text:r.a}}))}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Clear, Transparent Commercial Licensing"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(f,{text:"License QECTOR for Production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:["Free for academic and non-commercial research. For commercial use, pick a plan: licences are verified offline and work fully air-gapped, cancel any time, ",a.refundDays,"-day money-back on your first payment."]})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsxs("div",{ref:r=>t(r,0),className:"grid grid-cols-1 sm:grid-cols-3 gap-4 text-center",children:[e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Air-gapped"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Signed token, verified offline. No licence server, no phone-home."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsxs("p",{className:"text-cyan-300 font-bold",children:[a.refundDays,"-day money-back"]}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Full refund on your first payment of any plan, no questions asked."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Cancel any time"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Your licence stays valid to the end of the period you paid for."})]})]}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Commercial Plans"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Production rights for your organisation's internal use. Subscriptions renew automatically until cancelled."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(b,{size:14,className:"shrink-0","aria-hidden":"true"})," ",a.academicDiscountPct,"% off Lab for academic institutions. Non-commercial research is free."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 max-w-5xl mx-auto",children:[e.jsx(c,{name:"Pro",price:s(a.proMonthly),period:"/ month",desc:`Or ${s(a.proAnnual)}/year (2 months free). Pro licence tier.`,featured:!0,featuredLabel:"Most popular",features:["Commercial internal use","All decoder families","CPU + GPU (CUDA/OpenCL) batch","Code distances up to 19","Email support (2 business days)"],ctaLabel:"Buy monthly",ctaHref:i.proMonthly}),e.jsx(c,{name:"Lab",price:s(a.lab),period:"/ year",desc:"Enterprise licence tier, for research groups and labs.",features:["Everything in Pro","Code distances up to 63","Priority support with SLA","2-hour onboarding call","One Validation Report ($5,000 value)"],ctaLabel:"Buy Lab",ctaHref:i.lab}),e.jsx(c,{name:"Enterprise & OEM",price:`$${a.enterpriseFrom/1e3}k+`,period:"/ year",desc:"Redistribution, SaaS, OEM and custom terms.",accent:"gold",features:["Signed agreement, custom terms","SaaS and customer-facing APIs","OEM and hardware bundling","Named support engineer"],ctaLabel:"Contact Sales",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center space-y-2",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Pro billed yearly: ",e.jsxs("a",{href:i.proAnnual,className:"text-cyan-400 hover:underline",rel:"noopener",children:[s(a.proAnnual)," / year"]}),"."," ","Prefer to own it? ",e.jsx("a",{href:i.proPerpetual,className:"text-cyan-400 hover:underline",rel:"noopener",children:e.jsxs("strong",{children:["Pro Perpetual: ",s(a.proPerpetual)," one-time"]})})," ","(every 1.x release, 12 months of support)."]})})]}),e.jsxs("div",{ref:r=>t(r,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"$3,750 one-time · 10-20 days delivery"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"The recommended fast-track for teams seeking immediate, defensible proof of workflow value. We execute up to 3 standard benchmark workloads using QECTOR and deliver reproducible artifact bundles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Includes a ",a.pilotDays,"-day Pilot licence"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Comparative analysis vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," 60-minute results review call"]})]}),e.jsx(l,{to:"/contact",className:"btn-gold block text-center",children:"Request Validation Sprint"}),e.jsxs("p",{className:"text-xs text-gold-200/60 mt-6",children:["Need only the licence and a call? The ",e.jsxs("a",{href:i.pilot,className:"text-gold-400 hover:underline",rel:"noopener",children:[a.pilotDays,"-day Pilot is ",s(a.pilot)]}),":"," ","a 1-hour integration call and a written validation memo, 100% creditable toward Lab within 90 days."]})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activating Your License"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Everyone installs the same wheel from PyPI: there is no separate commercial build. Your token unlocks the paid features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and code distances up to 63 on Lab and Enterprise. CPU decoding is never blocked; distance caps are enforced only when you set QECTOR_ENFORCE=1."}),e.jsx(y,{language:"bash",className:"mb-6",code:`pip install --upgrade "qector-decoder-v3>=1.0.1,<2" -export QECTOR_LICENSE_KEY="" -export QECTOR_LICENSE="" - -# Verify offline: prints Pro or Enterprise -python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Tokens are verified offline against a public key embedded in the package: no license server, no phone-home, works completely air-gapped."})]})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Why License QECTOR?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Free (Source-Available)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licensed (Commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Non-commercial research use only"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Internal R&D and production rights"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Community support (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Priority email support & SLAs"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (Free)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Validation artifact reproduction harnesses"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"PolyForm Noncommercial License"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Written Commercial License Agreement"})]})]})]})})})]}),e.jsxs("div",{ref:r=>t(r,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Frequently Asked Questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:p.map((r,n)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:r.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:r.a})]},n))})]}),e.jsxs("div",{ref:r=>t(r,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"What is not included:"})," Unless explicitly granted, no tier includes redistribution, OEM, SaaS hosting, or sublicensing rights. Contact sales for Custom terms."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Procurement:"})," All prices are in USD; applicable taxes are added at checkout. Monthly and annual plans renew automatically until cancelled, with a reminder before each annual renewal."," ",a.refundDays,"-day money-back guarantee on your first payment of any plan. Tokens are emailed within minutes."]}),e.jsxs("p",{children:["By purchasing, you accept the ",e.jsx(l,{to:"/license-agreement",className:"text-cyan-300 hover:underline",children:"Commercial Licence Agreement"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-x-6 gap-y-2 pt-4",children:[e.jsx(l,{to:"/license-agreement",className:"hover:text-cyan-300 transition-colors",children:"Licence Agreement"}),e.jsx(l,{to:"/refund",className:"hover:text-cyan-300 transition-colors",children:"Refund Policy"}),e.jsx("a",{href:"https://billing.stripe.com/p/login/7sY9AVdwlgoyfse9bYeUU00",target:"_blank",rel:"noopener noreferrer",className:"hover:text-cyan-300 transition-colors",children:"Manage subscription"}),e.jsx(l,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contact Engineering"})]})]})]})]})}export{P as default}; diff --git a/assets/Pricing-VNXAJmmp.js b/assets/Pricing-VNXAJmmp.js deleted file mode 100644 index 0d4554cb..00000000 --- a/assets/Pricing-VNXAJmmp.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as h,P as a,b as s,J as u,L as i,C as y}from"./index-abfjMTlQ.js";import{F as p,P as c}from"./faqData-D7ZwBN6k.js";import{N as f}from"./NeuralReveal-D-EQoOl2.js";import{g as o,S as g}from"./vendor-gsap-a3sj5zmn.js";import{G as b}from"./vendor-ui-B0ssGG4c.js";import{L as l}from"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";o.registerPlugin(g);function L(){const d=x.useRef([]);x.useEffect(()=>{const r=document.createElement("script");if(r.src="https://js.stripe.com/v3/buy-button.js",r.async=!0,document.body.appendChild(r),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const n=o.context(()=>{d.current.filter(Boolean).forEach(m=>{o.fromTo(m,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:m,start:"top 85%",once:!0}})})});return()=>{n.revert(),r.parentNode===document.body&&document.body.removeChild(r)}},[]);const t=(r,n)=>{r&&(d.current[n]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(h,{title:"Pricing · QECTOR",description:`QECTOR Decoder v3 commercial licensing. Pro from ${s(a.proMonthly)}/month, Lab ${s(a.lab)}/yr, Enterprise and OEM from ${s(a.enterpriseFrom)}/yr. ${a.refundDays}-day money-back. Prices in USD; tax added at checkout where applicable.`,lang:"en",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsx(u,{data:{"@context":"https://schema.org","@type":"FAQPage",mainEntity:p.map(r=>({"@type":"Question",name:r.q,acceptedAnswer:{"@type":"Answer",text:r.a}}))}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Clear, Transparent Commercial Licensing"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(f,{text:"License QECTOR for Production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:["Free for academic and non-commercial research. For commercial use, pick a plan: licences are verified offline and work fully air-gapped, cancel any time, ",a.refundDays,"-day money-back on your first payment."]})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsxs("div",{ref:r=>t(r,0),className:"grid grid-cols-1 sm:grid-cols-3 gap-4 text-center",children:[e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Air-gapped"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Signed token, verified offline. No licence server, no phone-home."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsxs("p",{className:"text-cyan-300 font-bold",children:[a.refundDays,"-day money-back"]}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Full refund on your first payment of any plan, no questions asked."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Cancel any time"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Your licence stays valid to the end of the period you paid for."})]})]}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Commercial Plans"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Production rights for your organisation's internal use. Subscriptions renew automatically until cancelled."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(b,{size:14,className:"shrink-0","aria-hidden":"true"})," ",a.academicDiscountPct,"% off Lab for academic institutions. Non-commercial research is free."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 max-w-5xl mx-auto",children:[e.jsx(c,{name:"Pro",price:s(a.proMonthly),period:"/ month",desc:`Or ${s(a.proAnnual)}/year (2 months free). Pro licence tier.`,featured:!0,featuredLabel:"Most popular",features:["Commercial internal use","All decoder families","CPU + GPU (CUDA/OpenCL) batch","Code distances up to 19","Email support (2 business days)"],ctaLabel:"Buy monthly",ctaHref:i.proMonthly}),e.jsx(c,{name:"Lab",price:s(a.lab),period:"/ year",desc:"Enterprise licence tier, for research groups and labs.",features:["Everything in Pro","Code distances up to 63","Priority support with SLA","2-hour onboarding call","One Validation Report ($5,000 value)"],ctaLabel:"Buy Lab",ctaHref:i.lab}),e.jsx(c,{name:"Enterprise & OEM",price:`$${a.enterpriseFrom/1e3}k+`,period:"/ year",desc:"Redistribution, SaaS, OEM and custom terms.",accent:"gold",features:["Signed agreement, custom terms","SaaS and customer-facing APIs","OEM and hardware bundling","Named support engineer"],ctaLabel:"Contact Sales",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center space-y-2",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Pro billed yearly: ",e.jsxs("a",{href:i.proAnnual,className:"text-cyan-400 hover:underline",rel:"noopener",children:[s(a.proAnnual)," / year"]}),"."," ","Prefer to own it? ",e.jsx("a",{href:i.proPerpetual,className:"text-cyan-400 hover:underline",rel:"noopener",children:e.jsxs("strong",{children:["Pro Perpetual: ",s(a.proPerpetual)," one-time"]})})," ","(every 1.x release, 12 months of support)."]})})]}),e.jsxs("div",{ref:r=>t(r,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"$3,750 one-time · 10-20 days delivery"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"The recommended fast-track for teams seeking immediate, defensible proof of workflow value. We execute up to 3 standard benchmark workloads using QECTOR and deliver reproducible artifact bundles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Includes a ",a.pilotDays,"-day Pilot licence"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Comparative analysis vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," 60-minute results review call"]})]}),e.jsx(l,{to:"/contact",className:"btn-gold block text-center",children:"Request Validation Sprint"}),e.jsxs("p",{className:"text-xs text-gold-200/60 mt-6",children:["Need only the licence and a call? The ",e.jsxs("a",{href:i.pilot,className:"text-gold-400 hover:underline",rel:"noopener",children:[a.pilotDays,"-day Pilot is ",s(a.pilot)]}),":"," ","a 1-hour integration call and a written validation memo, 100% creditable toward Lab within 90 days."]})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activating Your License"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Everyone installs the same wheel from PyPI: there is no separate commercial build. Your token unlocks the paid features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and code distances up to 63 on Lab and Enterprise. CPU decoding is never blocked; distance caps are enforced only when you set QECTOR_ENFORCE=1."}),e.jsx(y,{language:"bash",className:"mb-6",code:`pip install --upgrade "qector-decoder-v3>=1.0.1,<2" -export QECTOR_LICENSE_KEY="" -export QECTOR_LICENSE="" - -# Verify offline: prints Pro or Enterprise -python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Tokens are verified offline against a public key embedded in the package: no license server, no phone-home, works completely air-gapped."})]})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Why License QECTOR?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Free (Source-Available)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licensed (Commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Non-commercial research use only"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Internal R&D and production rights"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Community support (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Priority email support & SLAs"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (Free)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Validation artifact reproduction harnesses"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"PolyForm Noncommercial License"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Written Commercial License Agreement"})]})]})]})})})]}),e.jsxs("div",{ref:r=>t(r,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Frequently Asked Questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:p.map((r,n)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:r.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:r.a})]},n))})]}),e.jsxs("div",{ref:r=>t(r,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"What is not included:"})," Unless explicitly granted, no tier includes redistribution, OEM, SaaS hosting, or sublicensing rights. Contact sales for Custom terms."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Procurement:"})," All prices are in USD; applicable taxes are added at checkout. Monthly and annual plans renew automatically until cancelled, with a reminder before each annual renewal."," ",a.refundDays,"-day money-back guarantee on your first payment of any plan. Tokens are emailed within minutes."]}),e.jsxs("p",{children:["By purchasing, you accept the ",e.jsx(l,{to:"/license-agreement",className:"text-cyan-300 hover:underline",children:"Commercial Licence Agreement"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-x-6 gap-y-2 pt-4",children:[e.jsx(l,{to:"/license-agreement",className:"hover:text-cyan-300 transition-colors",children:"Licence Agreement"}),e.jsx(l,{to:"/refund",className:"hover:text-cyan-300 transition-colors",children:"Refund Policy"}),e.jsx(l,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contact Engineering"})]})]})]})]})}export{L as default}; diff --git a/assets/Pricing-b_XG04Ml.js b/assets/Pricing-b_XG04Ml.js deleted file mode 100644 index 1e6088c4..00000000 --- a/assets/Pricing-b_XG04Ml.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as h,P as a,b as s,J as u,L as n,C as f}from"./index-CqAA-ZXu.js";import{F as p,T as y,P as l}from"./TrialForm-CpW40uwE.js";import{N as b}from"./NeuralReveal-BflyZYSb.js";import{g as o,S as g}from"./vendor-gsap-a3sj5zmn.js";import{G as j}from"./vendor-ui-B0ssGG4c.js";import{L as c}from"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";o.registerPlugin(g);function L(){const d=x.useRef([]);x.useEffect(()=>{const r=document.createElement("script");if(r.src="https://js.stripe.com/v3/buy-button.js",r.async=!0,document.body.appendChild(r),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const i=o.context(()=>{d.current.filter(Boolean).forEach(m=>{o.fromTo(m,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:m,start:"top 85%",once:!0}})})});return()=>{i.revert(),r.parentNode===document.body&&document.body.removeChild(r)}},[]);const t=(r,i)=>{r&&(d.current[i]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(h,{title:"Pricing · QECTOR",description:`QECTOR Decoder v3 commercial licensing. Free ${a.trialDays}-day commercial trial. Pro from ${s(a.proMonthly)}/month, Team ${s(a.team)}/yr, Lab ${s(a.lab)}/yr, Enterprise and OEM from ${s(a.enterpriseFrom)}/yr. ${a.refundDays}-day money-back. Prices in USD; tax added at checkout where applicable.`,lang:"en",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsx(u,{data:{"@context":"https://schema.org","@type":"FAQPage",mainEntity:p.map(r=>({"@type":"Question",name:r.q,acceptedAnswer:{"@type":"Answer",text:r.a}}))}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Clear, Transparent Commercial Licensing"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(b,{text:"License QECTOR for Production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:["Free for academic and non-commercial research. For commercial use, start a free"," ",a.trialDays,"-day trial, then pick a plan: cancel any time, ",a.refundDays,"-day money-back on your first payment."]})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsx("div",{ref:r=>t(r,0),id:"trial",className:"scroll-mt-32",children:e.jsx("div",{className:"relative p-1 rounded-3xl bg-gradient-to-r from-cyan-400 via-cyan-500 to-gold-400 animate-gradient-xy",children:e.jsxs("div",{className:"bg-void/90 backdrop-blur-xl rounded-[23px] p-8 md:p-12 border border-white/5 flex flex-col md:flex-row items-center justify-between gap-8",children:[e.jsxs("div",{className:"flex-1 text-left",children:[e.jsx("div",{className:"inline-block px-3 py-1 bg-cyan-500/20 text-cyan-300 text-xs font-bold uppercase tracking-wider rounded-full mb-4",children:"Free · No card · Token by e-mail"}),e.jsxs("h2",{className:"text-3xl md:text-4xl font-extrabold text-white mb-4",children:[a.trialDays,"-Day Commercial Trial"]}),e.jsx("p",{className:"text-secondary text-base leading-relaxed max-w-xl",children:"Evaluate QECTOR on your own workloads with full commercial evaluation rights: every decoder family, CPU and GPU (CUDA/OpenCL) batch decoding, offline licence verification."}),e.jsxs("div",{className:"mt-6 flex flex-wrap gap-4 text-sm text-cyan-100/70",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Up to 5 internal users"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Expires on its own: nothing to cancel"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," One trial per address per year"]})]})]}),e.jsx("div",{className:"w-full md:w-auto flex flex-col items-center",children:e.jsx(y,{lang:"en"})})]})})}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Commercial Plans"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Production rights for internal use. Plans renew automatically until cancelled."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(j,{size:14,className:"shrink-0","aria-hidden":"true"})," ",a.academicDiscountPct,"% off Team and Lab for academic institutions. Non-commercial research is free."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsx(l,{name:"Pro",price:s(a.proMonthly),period:"/ month",desc:`One named user. Or ${s(a.proAnnual)}/year (2 months free).`,features:["Commercial internal use","All decoder families","CPU + GPU (CUDA/OpenCL) batch","Email support (2 business days)"],ctaLabel:"Buy monthly",ctaHref:n.proMonthly}),e.jsx(l,{name:"Team",price:s(a.team),period:"/ year",desc:"Up to 10 named users.",featured:!0,featuredLabel:"Best for startups",features:["Everything in Pro","Up to 10 named users","Priority support (1 business day)","2-hour onboarding call"],ctaLabel:"Buy Team",ctaHref:n.team}),e.jsx(l,{name:"Lab",price:s(a.lab),period:"/ year",desc:"Up to 25 named users. Enterprise licence tier.",features:["Everything in Team","Code distances up to 63","Support SLA","One Validation Report ($5,000 value)"],ctaLabel:"Buy Lab",ctaHref:n.lab}),e.jsx(l,{name:"Enterprise & OEM",price:`$${a.enterpriseFrom/1e3}k+`,period:"/ year",desc:"Redistribution, SaaS, OEM and custom terms.",accent:"gold",features:["Unlimited seats","SaaS and customer-facing APIs","OEM and hardware bundling","Named support engineer"],ctaLabel:"Contact Sales",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center space-y-2",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Pro billed yearly: ",e.jsxs("a",{href:n.proAnnual,className:"text-cyan-400 hover:underline",rel:"noopener",children:[s(a.proAnnual)," / year"]}),"."," ","Prefer to own it? ",e.jsx("a",{href:n.proPerpetual,className:"text-cyan-400 hover:underline",rel:"noopener",children:e.jsxs("strong",{children:["Pro Perpetual: ",s(a.proPerpetual)," one-time"]})})," ","(every 3.x release, 12 months of support)."]})})]}),e.jsxs("div",{ref:r=>t(r,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"$3,750 one-time · 10-20 days delivery"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"The recommended fast-track for teams seeking immediate, defensible proof of workflow value. We execute up to 3 standard benchmark workloads using QECTOR and deliver reproducible artifact bundles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Includes a ",a.pilotDays,"-day Pilot licence"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Comparative analysis vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," 60-minute results review call"]})]}),e.jsx(c,{to:"/contact",className:"btn-gold block text-center",children:"Request Validation Sprint"}),e.jsxs("p",{className:"text-xs text-gold-200/60 mt-6",children:["Need only the licence and a call? The ",e.jsxs("a",{href:n.pilot,className:"text-gold-400 hover:underline",rel:"noopener",children:[a.pilotDays,"-day Pilot is ",s(a.pilot)]}),":"," ","a 1-hour integration call and a written validation memo, 100% creditable toward Team or Lab within 90 days."]})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activating Your License"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Everyone installs the same wheel from PyPI: there is no separate commercial build. Your token unlocks the paid features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and code distances up to 63 on Lab and Enterprise. CPU decoding is never blocked; distance caps are enforced only when you set QECTOR_ENFORCE=1."}),e.jsx(f,{language:"bash",className:"mb-6",code:`pip install --upgrade "qector-decoder-v3>=1.0,<2" -export QECTOR_LICENSE_KEY="" -export QECTOR_LICENSE="" - -# Verify offline: prints Pro or Enterprise -python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Tokens are verified offline against a public key embedded in the package: no license server, no phone-home, works completely air-gapped."})]})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Why License QECTOR?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Free (Source-Available)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licensed (Commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Non-commercial research use only"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Internal R&D and production rights"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Community support (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Priority email support & SLAs"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (Free)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Validation artifact reproduction harnesses"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"PolyForm Noncommercial License"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Written Commercial License Agreement"})]})]})]})})})]}),e.jsxs("div",{ref:r=>t(r,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Frequently Asked Questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:p.map((r,i)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:r.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:r.a})]},i))})]}),e.jsxs("div",{ref:r=>t(r,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"What is not included:"})," Unless explicitly granted, no tier includes redistribution, OEM, SaaS hosting, or sublicensing rights. Contact sales for Custom terms."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Procurement:"})," All prices are in USD; applicable taxes are added at checkout. Monthly and annual plans renew automatically until cancelled, with a reminder before each annual renewal."," ",a.refundDays,"-day money-back guarantee on your first payment of any plan. Tokens are emailed within minutes."]}),e.jsxs("div",{className:"flex justify-center gap-6 pt-4",children:[e.jsx(c,{to:"/refund",className:"hover:text-cyan-300 transition-colors",children:"Refund Policy"}),e.jsx(c,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contact Engineering"})]})]})]})]})}export{L as default}; diff --git a/assets/Pricing-xevqAEll.js b/assets/Pricing-xevqAEll.js deleted file mode 100644 index 02cf129a..00000000 --- a/assets/Pricing-xevqAEll.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,P as a,b as s,J as h,L as i,C as f}from"./index-BUYYSLdX.js";import{F as p,P as l}from"./faqData-CHsSn8s2.js";import{N as y}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as b}from"./vendor-gsap-a3sj5zmn.js";import{G as g}from"./vendor-ui-B0ssGG4c.js";import{L as o}from"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";c.registerPlugin(b);function S(){const d=x.useRef([]);x.useEffect(()=>{const r=document.createElement("script");if(r.src="https://js.stripe.com/v3/buy-button.js",r.async=!0,document.body.appendChild(r),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const n=c.context(()=>{d.current.filter(Boolean).forEach(m=>{c.fromTo(m,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:m,start:"top 85%",once:!0}})})});return()=>{n.revert(),r.parentNode===document.body&&document.body.removeChild(r)}},[]);const t=(r,n)=>{r&&(d.current[n]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"Pricing · QECTOR",description:`QECTOR Decoder v3 commercial licensing. Pro from ${s(a.proMonthly)}/month, Lab ${s(a.lab)}/yr, Enterprise and OEM from ${s(a.enterpriseFrom)}/yr. ${a.refundDays}-day money-back. Prices in USD; tax added at checkout where applicable.`,lang:"en",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsx(h,{data:{"@context":"https://schema.org","@type":"FAQPage",mainEntity:p.map(r=>({"@type":"Question",name:r.q,acceptedAnswer:{"@type":"Answer",text:r.a}}))}}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Clear, Transparent Commercial Licensing"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(y,{text:"License QECTOR for Production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:["Free for academic and non-commercial research. For commercial use, pick a plan: licences are verified offline and work fully air-gapped, cancel any time, ",a.refundDays,"-day money-back on your first payment."]})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsxs("div",{ref:r=>t(r,0),className:"grid grid-cols-1 sm:grid-cols-3 gap-4 text-center",children:[e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Air-gapped"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Signed token, verified offline. No licence server, no phone-home."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsxs("p",{className:"text-cyan-300 font-bold",children:[a.refundDays,"-day money-back"]}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Full refund on your first payment of any plan, no questions asked."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Cancel any time"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Your licence stays valid to the end of the period you paid for."})]})]}),e.jsxs("div",{ref:r=>t(r,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Commercial Plans"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Production rights for your organisation's internal use. Subscriptions renew automatically until cancelled."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(g,{size:14,className:"shrink-0","aria-hidden":"true"})," ",a.academicDiscountPct,"% off Lab for academic institutions. Non-commercial research is free."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 max-w-5xl mx-auto",children:[e.jsx(l,{name:"Pro",price:s(a.proMonthly),period:"/ month",desc:`Or ${s(a.proAnnual)}/year (2 months free). Pro licence tier.`,featured:!0,featuredLabel:"Most popular",features:["Commercial internal use","All decoder families","CPU + GPU (CUDA/OpenCL) batch","Code distances up to 19","Email support (2 business days)"],ctaLabel:"Buy monthly",ctaHref:i.proMonthly}),e.jsx(l,{name:"Lab",price:s(a.lab),period:"/ year",desc:"Enterprise licence tier, for research groups and labs.",features:["Everything in Pro","Code distances up to 63","Priority support with SLA","2-hour onboarding call","One Validation Report ($5,000 value)"],ctaLabel:"Buy Lab",ctaHref:i.lab}),e.jsx(l,{name:"Enterprise & OEM",price:`$${a.enterpriseFrom/1e3}k+`,period:"/ year",desc:"Redistribution, SaaS, OEM and custom terms.",accent:"gold",features:["Signed agreement, custom terms","SaaS and customer-facing APIs","OEM and hardware bundling","Named support engineer"],ctaLabel:"Contact Sales",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center space-y-2",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Pro billed yearly: ",e.jsxs("a",{href:i.proAnnual,className:"text-cyan-400 hover:underline",rel:"noopener",children:[s(a.proAnnual)," / year"]}),"."," ","Prefer to own it? ",e.jsx("a",{href:i.proPerpetual,className:"text-cyan-400 hover:underline",rel:"noopener",children:e.jsxs("strong",{children:["Pro Perpetual: ",s(a.proPerpetual)," one-time"]})})," ","(every 3.x release, 12 months of support)."]})})]}),e.jsxs("div",{ref:r=>t(r,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"$3,750 one-time · 10-20 days delivery"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"The recommended fast-track for teams seeking immediate, defensible proof of workflow value. We execute up to 3 standard benchmark workloads using QECTOR and deliver reproducible artifact bundles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Includes a ",a.pilotDays,"-day Pilot licence"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Comparative analysis vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," 60-minute results review call"]})]}),e.jsx(o,{to:"/contact",className:"btn-gold block text-center",children:"Request Validation Sprint"}),e.jsxs("p",{className:"text-xs text-gold-200/60 mt-6",children:["Need only the licence and a call? The ",e.jsxs("a",{href:i.pilot,className:"text-gold-400 hover:underline",rel:"noopener",children:[a.pilotDays,"-day Pilot is ",s(a.pilot)]}),":"," ","a 1-hour integration call and a written validation memo, 100% creditable toward Lab within 90 days."]})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activating Your License"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Everyone installs the same wheel from PyPI: there is no separate commercial build. Your token unlocks the paid features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and code distances up to 63 on Lab and Enterprise. CPU decoding is never blocked; distance caps are enforced only when you set QECTOR_ENFORCE=1."}),e.jsx(f,{language:"bash",className:"mb-6",code:`pip install --upgrade "qector-decoder-v3>=1.0,<2" -export QECTOR_LICENSE_KEY="" -export QECTOR_LICENSE="" - -# Verify offline: prints Pro or Enterprise -python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Tokens are verified offline against a public key embedded in the package: no license server, no phone-home, works completely air-gapped."})]})]}),e.jsxs("div",{ref:r=>t(r,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Why License QECTOR?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Free (Source-Available)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licensed (Commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Non-commercial research use only"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Internal R&D and production rights"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Community support (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Priority email support & SLAs"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (Free)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Validation artifact reproduction harnesses"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"PolyForm Noncommercial License"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Written Commercial License Agreement"})]})]})]})})})]}),e.jsxs("div",{ref:r=>t(r,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Frequently Asked Questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:p.map((r,n)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:r.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:r.a})]},n))})]}),e.jsxs("div",{ref:r=>t(r,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"What is not included:"})," Unless explicitly granted, no tier includes redistribution, OEM, SaaS hosting, or sublicensing rights. Contact sales for Custom terms."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Procurement:"})," All prices are in USD; applicable taxes are added at checkout. Monthly and annual plans renew automatically until cancelled, with a reminder before each annual renewal."," ",a.refundDays,"-day money-back guarantee on your first payment of any plan. Tokens are emailed within minutes."]}),e.jsxs("div",{className:"flex justify-center gap-6 pt-4",children:[e.jsx(o,{to:"/refund",className:"hover:text-cyan-300 transition-colors",children:"Refund Policy"}),e.jsx(o,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contact Engineering"})]})]})]})]})}export{S as default}; diff --git a/assets/PricingFR-1AsUzYak.js b/assets/PricingFR-1AsUzYak.js deleted file mode 100644 index c44b95e3..00000000 --- a/assets/PricingFR-1AsUzYak.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as d,C as m}from"./index-_BpMZhV3.js";import{P as a,a as x}from"./faqData-gdKKGDcm.js";import{N as u}from"./NeuralReveal-BflyZYSb.js";import{g as l,S as p}from"./vendor-gsap-a3sj5zmn.js";import{G as h}from"./vendor-ui-B0ssGG4c.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";l.registerPlugin(p);function E(){const n=o.useRef([]);o.useEffect(()=>{const s=document.createElement("script");if(s.src="https://js.stripe.com/v3/buy-button.js",s.async=!0,document.body.appendChild(s),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=l.context(()=>{n.current.filter(Boolean).forEach(c=>{l.fromTo(c,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:c,start:"top 85%",once:!0}})})});return()=>{r.revert(),s.parentNode===document.body&&document.body.removeChild(s)}},[]);const t=(s,r)=>{s&&(n.current[r]=s)};return e.jsxs(e.Fragment,{children:[e.jsx(d,{title:"Tarifs · QECTOR",description:"Licences commerciales QECTOR Decoder v3. Évaluation de 60 jours à 499 $, entièrement créditable. Paliers de production annuels à partir de 1 299 $/an. Entreprise et OEM sur mesure. Prix en USD, hors taxes.",lang:"fr",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Licences commerciales claires et transparentes"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(u,{text:"Licenciez QECTOR pour la production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:"QECTOR Decoder v3 est disponible en source pour la recherche académique et non commerciale. Pour la R&D interne, les programmes pilotes et le déploiement commercial, choisissez une licence ci-dessous."})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsx("div",{ref:s=>t(s,0),id:"evaluation",className:"scroll-mt-32",children:e.jsx("div",{className:"relative p-1 rounded-3xl bg-gradient-to-r from-cyan-400 via-cyan-500 to-gold-400 animate-gradient-xy",children:e.jsxs("div",{className:"bg-void/90 backdrop-blur-xl rounded-[23px] p-8 md:p-12 border border-white/5 flex flex-col md:flex-row items-center justify-between gap-8",children:[e.jsxs("div",{className:"flex-1 text-left",children:[e.jsx("div",{className:"inline-block px-3 py-1 bg-cyan-500/20 text-cyan-300 text-xs font-bold uppercase tracking-wider rounded-full mb-4",children:"Libre-service · Activation instantanée"}),e.jsx("h2",{className:"text-3xl md:text-4xl font-extrabold text-white mb-4",children:"Évaluation commerciale"}),e.jsx("p",{className:"text-secondary text-base leading-relaxed max-w-xl",children:"Un pilote de 60 jours avec accès complet, conçu pour les équipes sérieuses de recherche QEC. Inclut le décodage batch CPU + CUDA, un contrat de licence écrit, un lot d’artefacts de référence et un support prioritaire."}),e.jsxs("div",{className:"mt-6 flex flex-wrap gap-4 text-sm text-cyan-100/70",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Crédit de 100 % vers une licence annuelle achetée dans les 90 jours suivant le début de votre évaluation"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Sièges internes illimités"]})]})]}),e.jsxs("div",{className:"w-full md:w-auto flex flex-col items-center",children:[e.jsx("div",{className:"text-4xl font-black text-white mb-1",children:"499 $"}),e.jsx("div",{className:"text-secondary text-sm mb-6",children:"Frais uniques"}),e.jsx("a",{href:"https://buy.stripe.com/6oU00l77Xc8ifsegEqeUU07",className:"btn-cyan w-full text-center py-4 px-8 font-bold shadow-[0_0_30px_rgba(34,211,238,0.3)]",target:"_blank",rel:"noopener noreferrer",children:"Lancer le pilote de 60 jours"})]})]})})}),e.jsxs("div",{ref:s=>t(s,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Paliers de production annuels"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Pour les équipes qui déploient QECTOR en interne ou l’intègrent à une infrastructure SaaS privée."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(h,{size:14,className:"shrink-0","aria-hidden":"true"})," 40 % de rabais académique disponible sur tous les paliers annuels. Contactez notre équipe commerciale."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsx(a,{name:"Solo / Indie",price:"1 299 $",period:"/ an",desc:"Droits de production pour un seul utilisateur nommé.",features:["Tous les décodeurs v3","Droits commerciaux de R&D","Un seul utilisateur nommé","Support courriel prioritaire"],ctaLabel:"Acheter",ctaHref:"https://buy.stripe.com/cNi9AV63TfkubbY87UeUU09"}),e.jsx(a,{name:"Startup / Growth",price:"4 499 $",period:"/ an",desc:"Jusqu’à 10 utilisateurs nommés. Flux BP-OSD/LDPC avancés.",featured:!0,featuredLabel:"Le plus populaire",features:["Jusqu’à 10 utilisateurs nommés","BP-OSD/LDPC avancé","Batch CPU + CUDA","SLA de support + intégration 2 h"],ctaLabel:"Acheter",ctaHref:"https://buy.stripe.com/14A5kF4ZP5JU7ZMdseeUU0c"}),e.jsx(a,{name:"Professional",price:"11 500 $",period:"/ an",desc:"Jusqu’à 25 utilisateurs nommés. Crédit pour le lot de rapports de validation.",features:["Jusqu’à 25 utilisateurs nommés","Tous les flux avancés","Intégration dédiée","Crédit rapport de validation"],ctaLabel:"Acheter",ctaHref:"https://buy.stripe.com/28EeVf1ND0pA6VIewieUU0d"}),e.jsx(a,{name:"Enterprise & OEM",price:"Sur mesure",period:"",desc:"Sièges illimités, versions personnalisées et distribution SaaS/OEM.",accent:"gold",features:["Qubits logiques illimités","Droits d’hébergement SaaS","Droits de regroupement OEM","Ingénieur de support dédié"],ctaLabel:"Contacter l’équipe commerciale",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Vous préférez l’acheter définitivement ? ",e.jsx("strong",{className:"text-cyan-300",children:"Solo / Indie Perpétuelle à 3 299 $ paiement unique."})," ",e.jsx(i,{to:"/contact",className:"text-cyan-400 hover:underline",children:"Contactez notre équipe commerciale pour l’activer"})]})})]}),e.jsxs("div",{ref:s=>t(s,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"3 750 $ paiement unique · Livraison en 10-20 jours"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"La voie rapide recommandée pour les équipes qui veulent une preuve immédiate et défendable de la valeur sur leur flux de travail. Nous exécutons jusqu’à 3 charges de référence standard avec QECTOR et livrons des lots d’artefacts reproductibles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Inclut l’évaluation commerciale de 60 jours"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Analyse comparative vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Appel de révision des résultats de 60 minutes"]})]}),e.jsx(i,{to:"/contact",className:"btn-gold block text-center",children:"Demander un sprint de validation"})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activer votre licence"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Tout le monde installe la même wheel depuis PyPI : il n’existe pas de build commercial séparé. Définir votre jeton de licence désactive simplement l’avis d’usage non commercial."}),e.jsx(m,{language:"bash",className:"mb-6",code:`# Usage commercial : activer avec le jeton Ed25519 -export QECTOR_LICENSE="" -export QECTOR_LICENSE_KEY="" - -# Optionnel : désactiver l'avis de licence dans les journaux CI -export QECTOR_SILENT=1`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Les jetons sont vérifiés hors ligne contre une clé publique embarquée dans le paquet : aucun serveur de licence, aucun appel maison, fonctionne complètement hors réseau."})]})]}),e.jsxs("div",{ref:s=>t(s,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Pourquoi licencier QECTOR ?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Gratuit (source disponible)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licencié (commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Usage de recherche non commerciale seulement"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Droits internes de R&D et de production"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Support communautaire (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Support courriel prioritaire et SLA"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (gratuit)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Harnais de reproduction d’artefacts de validation"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Licence PolyForm Noncommercial"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Contrat de licence commerciale écrit"})]})]})]})})})]}),e.jsxs("div",{ref:s=>t(s,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Foire aux questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:x.map((s,r)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:s.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.a})]},r))})]}),e.jsxs("div",{ref:s=>t(s,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"Ce qui n’est pas inclus :"})," sauf mention explicite, aucun palier n’inclut la redistribution, l’OEM, l’hébergement SaaS ni les droits de sous-licence. Contactez notre équipe commerciale pour des conditions sur mesure."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Approvisionnement :"})," tous les prix sont en USD et hors taxes. Stripe gère les taxes locales automatiquement. Les jetons sont livrés instantanément par courriel. En raison de la livraison instantanée, les ventes sont finales. Utilisez l’évaluation à 499 $ pour tester l’adéquation avant un engagement annuel."]}),e.jsxs("div",{className:"flex justify-center gap-6 pt-4",children:[e.jsx(i,{to:"/refund",className:"hover:text-cyan-300 transition-colors",children:"Politique de remboursement"}),e.jsx(i,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contacter l’ingénierie"})]})]})]})]})}export{E as default}; diff --git a/assets/PricingFR-BLb3E3Pu.js b/assets/PricingFR-BLb3E3Pu.js deleted file mode 100644 index 9afd1c53..00000000 --- a/assets/PricingFR-BLb3E3Pu.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as m,j as e}from"./vendor-react-BiHfrq0e.js";import{S as x,P as r,c as t,L as i,C as p}from"./index-DRAXObZB.js";import{P as o,a as h}from"./faqData-CHsSn8s2.js";import{N as f}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as b}from"./vendor-gsap-a3sj5zmn.js";import{G as g}from"./vendor-ui-B0ssGG4c.js";import{L as l}from"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";c.registerPlugin(b);function C(){const d=m.useRef([]);m.useEffect(()=>{const s=document.createElement("script");if(s.src="https://js.stripe.com/v3/buy-button.js",s.async=!0,document.body.appendChild(s),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const n=c.context(()=>{d.current.filter(Boolean).forEach(u=>{c.fromTo(u,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:u,start:"top 85%",once:!0}})})});return()=>{n.revert(),s.parentNode===document.body&&document.body.removeChild(s)}},[]);const a=(s,n)=>{s&&(d.current[n]=s)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"Tarifs · QECTOR",description:`Licences commerciales QECTOR Decoder v3. Pro dès ${t(r.proMonthly)}/mois, Labo ${t(r.lab)}/an, Entreprise et OEM dès ${t(r.enterpriseFrom)}/an. Satisfait ou remboursé ${r.refundDays} jours. Prix en USD; taxes ajoutées au paiement s’il y a lieu.`,lang:"fr",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Licences commerciales claires et transparentes"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(f,{text:"Licenciez QECTOR pour la production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:["Gratuit pour la recherche académique et non commerciale. Pour un usage commercial, choisissez un forfait : licences vérifiées hors ligne, entièrement hors réseau, annulables en tout temps, satisfait ou remboursé ",r.refundDays," jours sur votre premier paiement."]})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsxs("div",{ref:s=>a(s,0),className:"grid grid-cols-1 sm:grid-cols-3 gap-4 text-center",children:[e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Hors réseau"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Jeton signé, vérifié hors ligne. Aucun serveur de licence, aucun appel réseau."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsxs("p",{className:"text-cyan-300 font-bold",children:["Remboursé ",r.refundDays," jours"]}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Remboursement complet de votre premier paiement de tout forfait, sans question."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Annulable en tout temps"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Votre licence reste valide jusqu’à la fin de la période payée."})]})]}),e.jsxs("div",{ref:s=>a(s,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Forfaits commerciaux"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Droits de production pour l’usage interne de votre organisation. Les abonnements se renouvellent automatiquement jusqu’à annulation."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(g,{size:14,className:"shrink-0","aria-hidden":"true"})," ",r.academicDiscountPct," % de rabais sur Labo pour les établissements d’enseignement. La recherche non commerciale est gratuite."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 max-w-5xl mx-auto",children:[e.jsx(o,{name:"Pro",price:t(r.proMonthly),period:"/ mois",desc:`Ou ${t(r.proAnnual)}/an (2 mois offerts). Palier de licence Pro.`,featured:!0,featuredLabel:"Le plus populaire",features:["Usage commercial interne","Toutes les familles de décodeurs","Lots CPU + GPU (CUDA/OpenCL)","Distances de code jusqu’à 19","Support courriel (2 jours ouvrables)"],ctaLabel:"Acheter au mois",ctaHref:i.proMonthly}),e.jsx(o,{name:"Labo",price:t(r.lab),period:"/ an",desc:"Palier de licence Entreprise, pour les groupes de recherche et laboratoires.",features:["Tout Pro","Distances de code jusqu’à 63","Support prioritaire avec SLA","Appel d’intégration de 2 h","Un rapport de validation (valeur 5 000 $)"],ctaLabel:"Acheter Labo",ctaHref:i.lab}),e.jsx(o,{name:"Entreprise & OEM",price:`${r.enterpriseFrom/1e3} k$+`,period:"/ an",desc:"Redistribution, SaaS, OEM et conditions sur mesure.",accent:"gold",features:["Contrat signé, conditions sur mesure","SaaS et API offertes aux clients","OEM et regroupement matériel","Ingénieur de support attitré"],ctaLabel:"Contacter l’équipe commerciale",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center space-y-2",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Pro facturé à l’année : ",e.jsxs("a",{href:i.proAnnual,className:"text-cyan-400 hover:underline",rel:"noopener",children:[t(r.proAnnual)," / an"]}),"."," ","Vous préférez l’acheter définitivement ? ",e.jsx("a",{href:i.proPerpetual,className:"text-cyan-400 hover:underline",rel:"noopener",children:e.jsxs("strong",{children:["Pro Perpétuel : ",t(r.proPerpetual)," paiement unique"]})})," ","(toutes les versions 3.x, 12 mois de support)."]})})]}),e.jsxs("div",{ref:s=>a(s,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"3 750 $ paiement unique · Livraison en 10-20 jours"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"La voie rapide recommandée pour les équipes qui veulent une preuve immédiate et défendable de la valeur sur leur flux de travail. Nous exécutons jusqu’à 3 charges de référence standard avec QECTOR et livrons des lots d’artefacts reproductibles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Inclut une licence Pilote de ",r.pilotDays," jours"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Analyse comparative vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Appel de révision des résultats de 60 minutes"]})]}),e.jsx(l,{to:"/contact",className:"btn-gold block text-center",children:"Demander un sprint de validation"}),e.jsxs("p",{className:"text-xs text-gold-200/60 mt-6",children:["Seulement la licence et un appel ? Le ",e.jsxs("a",{href:i.pilot,className:"text-gold-400 hover:underline",rel:"noopener",children:["Pilote de ",r.pilotDays," jours est à ",t(r.pilot)]})," :"," ","un appel d’intégration d’une heure et une note de validation écrite, crédités à 100 % sur Labo dans les 90 jours."]})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activer votre licence"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Tout le monde installe la même wheel depuis PyPI : il n’existe pas de build commercial séparé. Votre jeton déverrouille les fonctionnalités payantes : décodage GPU (CUDA/OpenCL) par lots sur tous les forfaits payants, et distances de code jusqu’à 63 sur Labo et Entreprise. Le décodage CPU n’est jamais bloqué; les plafonds de distance ne s’appliquent que si QECTOR_ENFORCE=1."}),e.jsx(p,{language:"bash",className:"mb-6",code:`pip install --upgrade "qector-decoder-v3>=1.0,<2" -export QECTOR_LICENSE_KEY="" -export QECTOR_LICENSE="" - -# Vérifier hors ligne : affiche Pro ou Enterprise -python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Les jetons sont vérifiés hors ligne contre une clé publique embarquée dans le paquet : aucun serveur de licence, aucun appel maison, fonctionne complètement hors réseau."})]})]}),e.jsxs("div",{ref:s=>a(s,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Pourquoi licencier QECTOR ?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Gratuit (source disponible)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licencié (commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Usage de recherche non commerciale seulement"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Droits internes de R&D et de production"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Support communautaire (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Support courriel prioritaire et SLA"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (gratuit)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Harnais de reproduction d’artefacts de validation"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Licence PolyForm Noncommercial"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Contrat de licence commerciale écrit"})]})]})]})})})]}),e.jsxs("div",{ref:s=>a(s,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Foire aux questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:h.map((s,n)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:s.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.a})]},n))})]}),e.jsxs("div",{ref:s=>a(s,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"Ce qui n’est pas inclus :"})," sauf mention explicite, aucun palier n’inclut la redistribution, l’OEM, l’hébergement SaaS ni les droits de sous-licence. Contactez notre équipe commerciale pour des conditions sur mesure."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Approvisionnement :"})," tous les prix sont en USD; les taxes applicables sont ajoutées au paiement. Les forfaits mensuels et annuels se renouvellent automatiquement jusqu’à annulation, avec un rappel avant chaque renouvellement annuel."," ","Satisfait ou remboursé ",r.refundDays," jours sur votre premier paiement de tout forfait. Les jetons sont envoyés par courriel en quelques minutes."]}),e.jsxs("div",{className:"flex justify-center gap-6 pt-4",children:[e.jsx(l,{to:"/refund",className:"hover:text-cyan-300 transition-colors",children:"Politique de remboursement"}),e.jsx(l,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contacter l’ingénierie"})]})]})]})]})}export{C as default}; diff --git a/assets/PricingFR-BMDt_ie4.js b/assets/PricingFR-BMDt_ie4.js deleted file mode 100644 index aa11f38b..00000000 --- a/assets/PricingFR-BMDt_ie4.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as m,j as e}from"./vendor-react-BiHfrq0e.js";import{S as x,P as r,c as t,L as i,C as p}from"./index-DkYdPRY7.js";import{P as o,a as h}from"./faqData-CHsSn8s2.js";import{N as f}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as b}from"./vendor-gsap-a3sj5zmn.js";import{G as g}from"./vendor-ui-B0ssGG4c.js";import{L as l}from"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";c.registerPlugin(b);function C(){const d=m.useRef([]);m.useEffect(()=>{const s=document.createElement("script");if(s.src="https://js.stripe.com/v3/buy-button.js",s.async=!0,document.body.appendChild(s),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const n=c.context(()=>{d.current.filter(Boolean).forEach(u=>{c.fromTo(u,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:u,start:"top 85%",once:!0}})})});return()=>{n.revert(),s.parentNode===document.body&&document.body.removeChild(s)}},[]);const a=(s,n)=>{s&&(d.current[n]=s)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"Tarifs · QECTOR",description:`Licences commerciales QECTOR Decoder v3. Pro dès ${t(r.proMonthly)}/mois, Labo ${t(r.lab)}/an, Entreprise et OEM dès ${t(r.enterpriseFrom)}/an. Satisfait ou remboursé ${r.refundDays} jours. Prix en USD; taxes ajoutées au paiement s’il y a lieu.`,lang:"fr",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Licences commerciales claires et transparentes"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(f,{text:"Licenciez QECTOR pour la production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:["Gratuit pour la recherche académique et non commerciale. Pour un usage commercial, choisissez un forfait : licences vérifiées hors ligne, entièrement hors réseau, annulables en tout temps, satisfait ou remboursé ",r.refundDays," jours sur votre premier paiement."]})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsxs("div",{ref:s=>a(s,0),className:"grid grid-cols-1 sm:grid-cols-3 gap-4 text-center",children:[e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Hors réseau"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Jeton signé, vérifié hors ligne. Aucun serveur de licence, aucun appel réseau."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsxs("p",{className:"text-cyan-300 font-bold",children:["Remboursé ",r.refundDays," jours"]}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Remboursement complet de votre premier paiement de tout forfait, sans question."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Annulable en tout temps"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Votre licence reste valide jusqu’à la fin de la période payée."})]})]}),e.jsxs("div",{ref:s=>a(s,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Forfaits commerciaux"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Droits de production pour l’usage interne de votre organisation. Les abonnements se renouvellent automatiquement jusqu’à annulation."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(g,{size:14,className:"shrink-0","aria-hidden":"true"})," ",r.academicDiscountPct," % de rabais sur Labo pour les établissements d’enseignement. La recherche non commerciale est gratuite."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 max-w-5xl mx-auto",children:[e.jsx(o,{name:"Pro",price:t(r.proMonthly),period:"/ mois",desc:`Ou ${t(r.proAnnual)}/an (2 mois offerts). Palier de licence Pro.`,featured:!0,featuredLabel:"Le plus populaire",features:["Usage commercial interne","Toutes les familles de décodeurs","Lots CPU + GPU (CUDA/OpenCL)","Distances de code jusqu’à 19","Support courriel (2 jours ouvrables)"],ctaLabel:"Acheter au mois",ctaHref:i.proMonthly}),e.jsx(o,{name:"Labo",price:t(r.lab),period:"/ an",desc:"Palier de licence Entreprise, pour les groupes de recherche et laboratoires.",features:["Tout Pro","Distances de code jusqu’à 63","Support prioritaire avec SLA","Appel d’intégration de 2 h","Un rapport de validation (valeur 5 000 $)"],ctaLabel:"Acheter Labo",ctaHref:i.lab}),e.jsx(o,{name:"Entreprise & OEM",price:`${r.enterpriseFrom/1e3} k$+`,period:"/ an",desc:"Redistribution, SaaS, OEM et conditions sur mesure.",accent:"gold",features:["Contrat signé, conditions sur mesure","SaaS et API offertes aux clients","OEM et regroupement matériel","Ingénieur de support attitré"],ctaLabel:"Contacter l’équipe commerciale",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center space-y-2",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Pro facturé à l’année : ",e.jsxs("a",{href:i.proAnnual,className:"text-cyan-400 hover:underline",rel:"noopener",children:[t(r.proAnnual)," / an"]}),"."," ","Vous préférez l’acheter définitivement ? ",e.jsx("a",{href:i.proPerpetual,className:"text-cyan-400 hover:underline",rel:"noopener",children:e.jsxs("strong",{children:["Pro Perpétuel : ",t(r.proPerpetual)," paiement unique"]})})," ","(toutes les versions 3.x, 12 mois de support)."]})})]}),e.jsxs("div",{ref:s=>a(s,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"3 750 $ paiement unique · Livraison en 10-20 jours"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"La voie rapide recommandée pour les équipes qui veulent une preuve immédiate et défendable de la valeur sur leur flux de travail. Nous exécutons jusqu’à 3 charges de référence standard avec QECTOR et livrons des lots d’artefacts reproductibles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Inclut une licence Pilote de ",r.pilotDays," jours"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Analyse comparative vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Appel de révision des résultats de 60 minutes"]})]}),e.jsx(l,{to:"/contact",className:"btn-gold block text-center",children:"Demander un sprint de validation"}),e.jsxs("p",{className:"text-xs text-gold-200/60 mt-6",children:["Seulement la licence et un appel ? Le ",e.jsxs("a",{href:i.pilot,className:"text-gold-400 hover:underline",rel:"noopener",children:["Pilote de ",r.pilotDays," jours est à ",t(r.pilot)]})," :"," ","un appel d’intégration d’une heure et une note de validation écrite, crédités à 100 % sur Labo dans les 90 jours."]})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activer votre licence"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Tout le monde installe la même wheel depuis PyPI : il n’existe pas de build commercial séparé. Votre jeton déverrouille les fonctionnalités payantes : décodage GPU (CUDA/OpenCL) par lots sur tous les forfaits payants, et distances de code jusqu’à 63 sur Labo et Entreprise. Le décodage CPU n’est jamais bloqué; les plafonds de distance ne s’appliquent que si QECTOR_ENFORCE=1."}),e.jsx(p,{language:"bash",className:"mb-6",code:`pip install --upgrade "qector-decoder-v3>=1.0,<2" -export QECTOR_LICENSE_KEY="" -export QECTOR_LICENSE="" - -# Vérifier hors ligne : affiche Pro ou Enterprise -python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Les jetons sont vérifiés hors ligne contre une clé publique embarquée dans le paquet : aucun serveur de licence, aucun appel maison, fonctionne complètement hors réseau."})]})]}),e.jsxs("div",{ref:s=>a(s,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Pourquoi licencier QECTOR ?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Gratuit (source disponible)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licencié (commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Usage de recherche non commerciale seulement"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Droits internes de R&D et de production"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Support communautaire (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Support courriel prioritaire et SLA"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (gratuit)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Harnais de reproduction d’artefacts de validation"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Licence PolyForm Noncommercial"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Contrat de licence commerciale écrit"})]})]})]})})})]}),e.jsxs("div",{ref:s=>a(s,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Foire aux questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:h.map((s,n)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:s.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.a})]},n))})]}),e.jsxs("div",{ref:s=>a(s,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"Ce qui n’est pas inclus :"})," sauf mention explicite, aucun palier n’inclut la redistribution, l’OEM, l’hébergement SaaS ni les droits de sous-licence. Contactez notre équipe commerciale pour des conditions sur mesure."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Approvisionnement :"})," tous les prix sont en USD; les taxes applicables sont ajoutées au paiement. Les forfaits mensuels et annuels se renouvellent automatiquement jusqu’à annulation, avec un rappel avant chaque renouvellement annuel."," ","Satisfait ou remboursé ",r.refundDays," jours sur votre premier paiement de tout forfait. Les jetons sont envoyés par courriel en quelques minutes."]}),e.jsxs("div",{className:"flex justify-center gap-6 pt-4",children:[e.jsx(l,{to:"/refund",className:"hover:text-cyan-300 transition-colors",children:"Politique de remboursement"}),e.jsx(l,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contacter l’ingénierie"})]})]})]})]})}export{C as default}; diff --git a/assets/PricingFR-BTMd2o9u.js b/assets/PricingFR-BTMd2o9u.js deleted file mode 100644 index 624d8a15..00000000 --- a/assets/PricingFR-BTMd2o9u.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as u,j as e}from"./vendor-react-BiHfrq0e.js";import{S as x,P as s,e as t,d as i,L as l,C as p}from"./index-PdoH5kLF.js";import{P as o,a as h}from"./faqData-IO8c0Ufu.js";import{N as f}from"./NeuralReveal-Bsl9IGCr.js";import{g as c,S as b}from"./vendor-gsap-a3sj5zmn.js";import{G as g}from"./vendor-ui-B8TlNU4J.js";c.registerPlugin(b);function C(){const d=u.useRef([]);u.useEffect(()=>{const r=document.createElement("script");if(r.src="https://js.stripe.com/v3/buy-button.js",r.async=!0,document.body.appendChild(r),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const n=c.context(()=>{d.current.filter(Boolean).forEach(m=>{c.fromTo(m,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:m,start:"top 85%",once:!0}})})});return()=>{n.revert(),r.parentNode===document.body&&document.body.removeChild(r)}},[]);const a=(r,n)=>{r&&(d.current[n]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"Tarifs · QECTOR",description:`Licences commerciales QECTOR Decoder v3. Pro dès ${t(s.proMonthly)}/mois, Labo ${t(s.lab)}/an, Entreprise et OEM dès ${t(s.enterpriseFrom)}/an. Satisfait ou remboursé ${s.refundDays} jours. Prix en USD; taxes ajoutées au paiement s’il y a lieu.`,lang:"fr",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Licences commerciales claires et transparentes"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(f,{text:"Licenciez QECTOR pour la production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:["Gratuit pour la recherche académique et non commerciale. Pour un usage commercial, choisissez un forfait : licences vérifiées hors ligne, entièrement hors réseau, annulables en tout temps, satisfait ou remboursé ",s.refundDays," jours sur votre premier paiement."]})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsxs("div",{ref:r=>a(r,0),className:"grid grid-cols-1 sm:grid-cols-3 gap-4 text-center",children:[e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Hors réseau"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Jeton signé, vérifié hors ligne. Aucun serveur de licence, aucun appel réseau."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsxs("p",{className:"text-cyan-300 font-bold",children:["Remboursé ",s.refundDays," jours"]}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Remboursement complet de votre premier paiement de tout forfait, sans question."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Annulable en tout temps"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Votre licence reste valide jusqu’à la fin de la période payée."})]})]}),e.jsxs("div",{ref:r=>a(r,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Forfaits commerciaux"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Droits de production pour l’usage interne de votre organisation. Les abonnements se renouvellent automatiquement jusqu’à annulation."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(g,{size:14,className:"shrink-0","aria-hidden":"true"})," ",s.academicDiscountPct," % de rabais sur Labo pour les établissements d’enseignement. La recherche non commerciale est gratuite."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 max-w-5xl mx-auto",children:[e.jsx(o,{name:"Pro",price:t(s.proMonthly),period:"/ mois",desc:`Ou ${t(s.proAnnual)}/an (2 mois offerts). Palier de licence Pro.`,featured:!0,featuredLabel:"Le plus populaire",features:["Usage commercial interne","Toutes les familles de décodeurs","Lots CPU + GPU (CUDA/OpenCL)","Distances de code jusqu’à 19","Support courriel (2 jours ouvrables)"],ctaLabel:"Acheter au mois",ctaHref:i.proMonthly}),e.jsx(o,{name:"Labo",price:t(s.lab),period:"/ an",desc:"Palier de licence Entreprise, pour les groupes de recherche et laboratoires.",features:["Tout Pro","Distances de code jusqu’à 63","Support prioritaire avec SLA","Appel d’intégration de 2 h","Un rapport de validation (valeur 5 000 $)"],ctaLabel:"Acheter Labo",ctaHref:i.lab}),e.jsx(o,{name:"Entreprise & OEM",price:`${s.enterpriseFrom/1e3} k$+`,period:"/ an",desc:"Redistribution, SaaS, OEM et conditions sur mesure.",accent:"gold",features:["Contrat signé, conditions sur mesure","SaaS et API offertes aux clients","OEM et regroupement matériel","Ingénieur de support attitré"],ctaLabel:"Contacter l’équipe commerciale",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center space-y-2",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Pro facturé à l’année : ",e.jsxs("a",{href:i.proAnnual,className:"text-cyan-400 hover:underline",rel:"noopener",children:[t(s.proAnnual)," / an"]}),"."," ","Vous préférez l’acheter définitivement ? ",e.jsx("a",{href:i.proPerpetual,className:"text-cyan-400 hover:underline",rel:"noopener",children:e.jsxs("strong",{children:["Pro Perpétuel : ",t(s.proPerpetual)," paiement unique"]})})," ","(toutes les versions 1.x, 12 mois de support)."]})})]}),e.jsxs("div",{ref:r=>a(r,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"3 750 $ paiement unique · Livraison en 10-20 jours"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"La voie rapide recommandée pour les équipes qui veulent une preuve immédiate et défendable de la valeur sur leur flux de travail. Nous exécutons jusqu’à 3 charges de référence standard avec QECTOR et livrons des lots d’artefacts reproductibles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Inclut une licence Pilote de ",s.pilotDays," jours"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Analyse comparative vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Appel de révision des résultats de 60 minutes"]})]}),e.jsx(l,{to:"/contact",className:"btn-gold block text-center",children:"Demander un sprint de validation"}),e.jsxs("p",{className:"text-xs text-gold-200/60 mt-6",children:["Seulement la licence et un appel ? Le ",e.jsxs("a",{href:i.pilot,className:"text-gold-400 hover:underline",rel:"noopener",children:["Pilote de ",s.pilotDays," jours est à ",t(s.pilot)]})," :"," ","un appel d’intégration d’une heure et une note de validation écrite, crédités à 100 % sur Labo dans les 90 jours."]})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activer votre licence"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Tout le monde installe la même wheel depuis PyPI : il n’existe pas de build commercial séparé. Votre jeton déverrouille les fonctionnalités payantes : décodage GPU (CUDA/OpenCL) par lots sur tous les forfaits payants, et distances de code jusqu’à 63 sur Labo et Entreprise. Le décodage CPU n’est jamais bloqué; les plafonds de distance ne s’appliquent que si QECTOR_ENFORCE=1."}),e.jsx(p,{language:"bash",className:"mb-6",code:`pip install --upgrade "qector-decoder-v3>=1.0.1,<2" -export QECTOR_LICENSE_KEY="" -export QECTOR_LICENSE="" - -# Vérifier hors ligne : affiche Pro ou Enterprise -python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Les jetons sont vérifiés hors ligne contre une clé publique embarquée dans le paquet : aucun serveur de licence, aucun appel maison, fonctionne complètement hors réseau."})]})]}),e.jsxs("div",{ref:r=>a(r,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Pourquoi licencier QECTOR ?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Gratuit (source disponible)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licencié (commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Usage de recherche non commerciale seulement"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Droits internes de R&D et de production"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Support communautaire (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Support courriel prioritaire et SLA"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (gratuit)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Harnais de reproduction d’artefacts de validation"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Licence PolyForm Noncommercial"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Contrat de licence commerciale écrit"})]})]})]})})})]}),e.jsxs("div",{ref:r=>a(r,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Foire aux questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:h.map((r,n)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:r.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:r.a})]},n))})]}),e.jsxs("div",{ref:r=>a(r,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"Ce qui n’est pas inclus :"})," sauf mention explicite, aucun palier n’inclut la redistribution, l’OEM, l’hébergement SaaS ni les droits de sous-licence. Contactez notre équipe commerciale pour des conditions sur mesure."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Approvisionnement :"})," tous les prix sont en USD; les taxes applicables sont ajoutées au paiement. Les forfaits mensuels et annuels se renouvellent automatiquement jusqu’à annulation, avec un rappel avant chaque renouvellement annuel."," ","Satisfait ou remboursé ",s.refundDays," jours sur votre premier paiement de tout forfait. Les jetons sont envoyés par courriel en quelques minutes."]}),e.jsxs("p",{children:["En achetant, vous acceptez le ",e.jsx(l,{to:"/fr/license-agreement",className:"text-cyan-300 hover:underline",children:"Contrat de licence commerciale"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-x-6 gap-y-2 pt-4",children:[e.jsx(l,{to:"/fr/license-agreement",className:"hover:text-cyan-300 transition-colors",children:"Contrat de licence"}),e.jsx(l,{to:"/fr/refund",className:"hover:text-cyan-300 transition-colors",children:"Politique de remboursement"}),e.jsx("a",{href:"https://billing.stripe.com/p/login/7sY9AVdwlgoyfse9bYeUU00",target:"_blank",rel:"noopener noreferrer",className:"hover:text-cyan-300 transition-colors",children:"Gérer l’abonnement"}),e.jsx(l,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contacter l’ingénierie"})]})]})]})]})}export{C as default}; diff --git a/assets/PricingFR-B_0EkGv3.js b/assets/PricingFR-B_0EkGv3.js deleted file mode 100644 index 8f39b099..00000000 --- a/assets/PricingFR-B_0EkGv3.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as d,C as m}from"./index-iVST85F-.js";import{P as a,a as x}from"./faqData-CYz7igrM.js";import{N as u}from"./NeuralReveal-BflyZYSb.js";import{g as l,S as p}from"./vendor-gsap-a3sj5zmn.js";import{G as h}from"./vendor-ui-B0ssGG4c.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";l.registerPlugin(p);function E(){const n=o.useRef([]);o.useEffect(()=>{const s=document.createElement("script");if(s.src="https://js.stripe.com/v3/buy-button.js",s.async=!0,document.body.appendChild(s),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=l.context(()=>{n.current.filter(Boolean).forEach(c=>{l.fromTo(c,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:c,start:"top 85%",once:!0}})})});return()=>{r.revert(),s.parentNode===document.body&&document.body.removeChild(s)}},[]);const t=(s,r)=>{s&&(n.current[r]=s)};return e.jsxs(e.Fragment,{children:[e.jsx(d,{title:"Tarifs · QECTOR",description:"Licences commerciales QECTOR Decoder v3. Évaluation de 60 jours à 499 $, entièrement créditable. Paliers de production annuels à partir de 1 299 $/an. Entreprise et OEM sur mesure. Prix en USD, hors taxes.",lang:"fr",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Licences commerciales claires et transparentes"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(u,{text:"Licenciez QECTOR pour la production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:"QECTOR Decoder v3 est disponible en source pour la recherche académique et non commerciale. Pour la R&D interne, les programmes pilotes et le déploiement commercial, choisissez une licence ci-dessous."})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsx("div",{ref:s=>t(s,0),id:"evaluation",className:"scroll-mt-32",children:e.jsx("div",{className:"relative p-1 rounded-3xl bg-gradient-to-r from-cyan-400 via-cyan-500 to-gold-400 animate-gradient-xy",children:e.jsxs("div",{className:"bg-void/90 backdrop-blur-xl rounded-[23px] p-8 md:p-12 border border-white/5 flex flex-col md:flex-row items-center justify-between gap-8",children:[e.jsxs("div",{className:"flex-1 text-left",children:[e.jsx("div",{className:"inline-block px-3 py-1 bg-cyan-500/20 text-cyan-300 text-xs font-bold uppercase tracking-wider rounded-full mb-4",children:"Libre-service · Activation instantanée"}),e.jsx("h2",{className:"text-3xl md:text-4xl font-extrabold text-white mb-4",children:"Évaluation commerciale"}),e.jsx("p",{className:"text-secondary text-base leading-relaxed max-w-xl",children:"Un pilote de 60 jours avec accès complet, conçu pour les équipes sérieuses de recherche QEC. Inclut le décodage batch CPU + CUDA, un contrat de licence écrit, un lot d’artefacts de référence et un support prioritaire."}),e.jsxs("div",{className:"mt-6 flex flex-wrap gap-4 text-sm text-cyan-100/70",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Crédit de 100 % vers une licence annuelle achetée dans les 90 jours suivant le début de votre évaluation"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Sièges internes illimités"]})]})]}),e.jsxs("div",{className:"w-full md:w-auto flex flex-col items-center",children:[e.jsx("div",{className:"text-4xl font-black text-white mb-1",children:"499 $"}),e.jsx("div",{className:"text-secondary text-sm mb-6",children:"Frais uniques"}),e.jsx("a",{href:"https://buy.stripe.com/6oU00l77Xc8ifsegEqeUU07",className:"btn-cyan w-full text-center py-4 px-8 font-bold shadow-[0_0_30px_rgba(34,211,238,0.3)]",target:"_blank",rel:"noopener noreferrer",children:"Lancer le pilote de 60 jours"})]})]})})}),e.jsxs("div",{ref:s=>t(s,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Paliers de production annuels"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Pour les équipes qui déploient QECTOR en interne ou l’intègrent à une infrastructure SaaS privée."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(h,{size:14,className:"shrink-0","aria-hidden":"true"})," 40 % de rabais académique disponible sur tous les paliers annuels. Contactez notre équipe commerciale."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsx(a,{name:"Solo / Indie",price:"1 299 $",period:"/ an",desc:"Droits de production pour un seul utilisateur nommé.",features:["Tous les décodeurs v3","Droits commerciaux de R&D","Un seul utilisateur nommé","Support courriel prioritaire"],ctaLabel:"Acheter",ctaHref:"https://buy.stripe.com/cNi9AV63TfkubbY87UeUU09"}),e.jsx(a,{name:"Startup / Growth",price:"4 499 $",period:"/ an",desc:"Jusqu’à 10 utilisateurs nommés. Flux BP-OSD/LDPC avancés.",featured:!0,featuredLabel:"Le plus populaire",features:["Jusqu’à 10 utilisateurs nommés","BP-OSD/LDPC avancé","Batch CPU + CUDA","SLA de support + intégration 2 h"],ctaLabel:"Acheter",ctaHref:"https://buy.stripe.com/14A5kF4ZP5JU7ZMdseeUU0c"}),e.jsx(a,{name:"Professional",price:"11 500 $",period:"/ an",desc:"Jusqu’à 25 utilisateurs nommés. Crédit pour le lot de rapports de validation.",features:["Jusqu’à 25 utilisateurs nommés","Tous les flux avancés","Intégration dédiée","Crédit rapport de validation"],ctaLabel:"Acheter",ctaHref:"https://buy.stripe.com/28EeVf1ND0pA6VIewieUU0d"}),e.jsx(a,{name:"Enterprise & OEM",price:"Sur mesure",period:"",desc:"Sièges illimités, versions personnalisées et distribution SaaS/OEM.",accent:"gold",features:["Qubits logiques illimités","Droits d’hébergement SaaS","Droits de regroupement OEM","Ingénieur de support dédié"],ctaLabel:"Contacter l’équipe commerciale",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Vous préférez l’acheter définitivement ? ",e.jsx("strong",{className:"text-cyan-300",children:"Solo / Indie Perpétuelle à 3 299 $ paiement unique."})," ",e.jsx(i,{to:"/contact",className:"text-cyan-400 hover:underline",children:"Contactez notre équipe commerciale pour l’activer"})]})})]}),e.jsxs("div",{ref:s=>t(s,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"3 750 $ paiement unique · Livraison en 10-20 jours"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"La voie rapide recommandée pour les équipes qui veulent une preuve immédiate et défendable de la valeur sur leur flux de travail. Nous exécutons jusqu’à 3 charges de référence standard avec QECTOR et livrons des lots d’artefacts reproductibles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Inclut l’évaluation commerciale de 60 jours"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Analyse comparative vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Appel de révision des résultats de 60 minutes"]})]}),e.jsx(i,{to:"/contact",className:"btn-gold block text-center",children:"Demander un sprint de validation"})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activer votre licence"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Tout le monde installe la même wheel depuis PyPI : il n’existe pas de build commercial séparé. Définir votre jeton de licence désactive simplement l’avis d’usage non commercial."}),e.jsx(m,{language:"bash",className:"mb-6",code:`# Usage commercial : activer avec le jeton Ed25519 -export QECTOR_LICENSE="" -export QECTOR_LICENSE_KEY="" - -# Optionnel : désactiver l'avis de licence dans les journaux CI -export QECTOR_SILENT=1`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Les jetons sont vérifiés hors ligne contre une clé publique embarquée dans le paquet : aucun serveur de licence, aucun appel maison, fonctionne complètement hors réseau."})]})]}),e.jsxs("div",{ref:s=>t(s,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Pourquoi licencier QECTOR ?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Gratuit (source disponible)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licencié (commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Usage de recherche non commerciale seulement"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Droits internes de R&D et de production"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Support communautaire (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Support courriel prioritaire et SLA"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (gratuit)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Harnais de reproduction d’artefacts de validation"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Licence PolyForm Noncommercial"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Contrat de licence commerciale écrit"})]})]})]})})})]}),e.jsxs("div",{ref:s=>t(s,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Foire aux questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:x.map((s,r)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:s.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.a})]},r))})]}),e.jsxs("div",{ref:s=>t(s,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"Ce qui n’est pas inclus :"})," sauf mention explicite, aucun palier n’inclut la redistribution, l’OEM, l’hébergement SaaS ni les droits de sous-licence. Contactez notre équipe commerciale pour des conditions sur mesure."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Approvisionnement :"})," tous les prix sont en USD et hors taxes. Stripe gère les taxes locales automatiquement. Les jetons sont livrés instantanément par courriel. En raison de la livraison instantanée, les ventes sont finales. Utilisez l’évaluation à 499 $ pour tester l’adéquation avant un engagement annuel."]}),e.jsxs("div",{className:"flex justify-center gap-6 pt-4",children:[e.jsx(i,{to:"/refund",className:"hover:text-cyan-300 transition-colors",children:"Politique de remboursement"}),e.jsx(i,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contacter l’ingénierie"})]})]})]})]})}export{E as default}; diff --git a/assets/PricingFR-B_DF8Sg3.js b/assets/PricingFR-B_DF8Sg3.js deleted file mode 100644 index dc3fbac0..00000000 --- a/assets/PricingFR-B_DF8Sg3.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as u,j as e}from"./vendor-react-BiHfrq0e.js";import{S as x,P as s,c as t,L as i,C as p}from"./index-Bh9DBCb3.js";import{P as l,a as h}from"./faqData-D7ZwBN6k.js";import{N as f}from"./NeuralReveal-D-EQoOl2.js";import{g as c,S as b}from"./vendor-gsap-a3sj5zmn.js";import{G as g}from"./vendor-ui-B0ssGG4c.js";import{L as o}from"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";c.registerPlugin(b);function P(){const d=u.useRef([]);u.useEffect(()=>{const r=document.createElement("script");if(r.src="https://js.stripe.com/v3/buy-button.js",r.async=!0,document.body.appendChild(r),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const n=c.context(()=>{d.current.filter(Boolean).forEach(m=>{c.fromTo(m,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:m,start:"top 85%",once:!0}})})});return()=>{n.revert(),r.parentNode===document.body&&document.body.removeChild(r)}},[]);const a=(r,n)=>{r&&(d.current[n]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"Tarifs · QECTOR",description:`Licences commerciales QECTOR Decoder v3. Pro dès ${t(s.proMonthly)}/mois, Labo ${t(s.lab)}/an, Entreprise et OEM dès ${t(s.enterpriseFrom)}/an. Satisfait ou remboursé ${s.refundDays} jours. Prix en USD; taxes ajoutées au paiement s’il y a lieu.`,lang:"fr",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Licences commerciales claires et transparentes"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(f,{text:"Licenciez QECTOR pour la production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:["Gratuit pour la recherche académique et non commerciale. Pour un usage commercial, choisissez un forfait : licences vérifiées hors ligne, entièrement hors réseau, annulables en tout temps, satisfait ou remboursé ",s.refundDays," jours sur votre premier paiement."]})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsxs("div",{ref:r=>a(r,0),className:"grid grid-cols-1 sm:grid-cols-3 gap-4 text-center",children:[e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Hors réseau"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Jeton signé, vérifié hors ligne. Aucun serveur de licence, aucun appel réseau."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsxs("p",{className:"text-cyan-300 font-bold",children:["Remboursé ",s.refundDays," jours"]}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Remboursement complet de votre premier paiement de tout forfait, sans question."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Annulable en tout temps"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Votre licence reste valide jusqu’à la fin de la période payée."})]})]}),e.jsxs("div",{ref:r=>a(r,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Forfaits commerciaux"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Droits de production pour l’usage interne de votre organisation. Les abonnements se renouvellent automatiquement jusqu’à annulation."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(g,{size:14,className:"shrink-0","aria-hidden":"true"})," ",s.academicDiscountPct," % de rabais sur Labo pour les établissements d’enseignement. La recherche non commerciale est gratuite."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 max-w-5xl mx-auto",children:[e.jsx(l,{name:"Pro",price:t(s.proMonthly),period:"/ mois",desc:`Ou ${t(s.proAnnual)}/an (2 mois offerts). Palier de licence Pro.`,featured:!0,featuredLabel:"Le plus populaire",features:["Usage commercial interne","Toutes les familles de décodeurs","Lots CPU + GPU (CUDA/OpenCL)","Distances de code jusqu’à 19","Support courriel (2 jours ouvrables)"],ctaLabel:"Acheter au mois",ctaHref:i.proMonthly}),e.jsx(l,{name:"Labo",price:t(s.lab),period:"/ an",desc:"Palier de licence Entreprise, pour les groupes de recherche et laboratoires.",features:["Tout Pro","Distances de code jusqu’à 63","Support prioritaire avec SLA","Appel d’intégration de 2 h","Un rapport de validation (valeur 5 000 $)"],ctaLabel:"Acheter Labo",ctaHref:i.lab}),e.jsx(l,{name:"Entreprise & OEM",price:`${s.enterpriseFrom/1e3} k$+`,period:"/ an",desc:"Redistribution, SaaS, OEM et conditions sur mesure.",accent:"gold",features:["Contrat signé, conditions sur mesure","SaaS et API offertes aux clients","OEM et regroupement matériel","Ingénieur de support attitré"],ctaLabel:"Contacter l’équipe commerciale",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center space-y-2",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Pro facturé à l’année : ",e.jsxs("a",{href:i.proAnnual,className:"text-cyan-400 hover:underline",rel:"noopener",children:[t(s.proAnnual)," / an"]}),"."," ","Vous préférez l’acheter définitivement ? ",e.jsx("a",{href:i.proPerpetual,className:"text-cyan-400 hover:underline",rel:"noopener",children:e.jsxs("strong",{children:["Pro Perpétuel : ",t(s.proPerpetual)," paiement unique"]})})," ","(toutes les versions 1.x, 12 mois de support)."]})})]}),e.jsxs("div",{ref:r=>a(r,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"3 750 $ paiement unique · Livraison en 10-20 jours"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"La voie rapide recommandée pour les équipes qui veulent une preuve immédiate et défendable de la valeur sur leur flux de travail. Nous exécutons jusqu’à 3 charges de référence standard avec QECTOR et livrons des lots d’artefacts reproductibles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Inclut une licence Pilote de ",s.pilotDays," jours"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Analyse comparative vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Appel de révision des résultats de 60 minutes"]})]}),e.jsx(o,{to:"/contact",className:"btn-gold block text-center",children:"Demander un sprint de validation"}),e.jsxs("p",{className:"text-xs text-gold-200/60 mt-6",children:["Seulement la licence et un appel ? Le ",e.jsxs("a",{href:i.pilot,className:"text-gold-400 hover:underline",rel:"noopener",children:["Pilote de ",s.pilotDays," jours est à ",t(s.pilot)]})," :"," ","un appel d’intégration d’une heure et une note de validation écrite, crédités à 100 % sur Labo dans les 90 jours."]})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activer votre licence"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Tout le monde installe la même wheel depuis PyPI : il n’existe pas de build commercial séparé. Votre jeton déverrouille les fonctionnalités payantes : décodage GPU (CUDA/OpenCL) par lots sur tous les forfaits payants, et distances de code jusqu’à 63 sur Labo et Entreprise. Le décodage CPU n’est jamais bloqué; les plafonds de distance ne s’appliquent que si QECTOR_ENFORCE=1."}),e.jsx(p,{language:"bash",className:"mb-6",code:`pip install --upgrade "qector-decoder-v3>=1.0.1,<2" -export QECTOR_LICENSE_KEY="" -export QECTOR_LICENSE="" - -# Vérifier hors ligne : affiche Pro ou Enterprise -python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Les jetons sont vérifiés hors ligne contre une clé publique embarquée dans le paquet : aucun serveur de licence, aucun appel maison, fonctionne complètement hors réseau."})]})]}),e.jsxs("div",{ref:r=>a(r,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Pourquoi licencier QECTOR ?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Gratuit (source disponible)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licencié (commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Usage de recherche non commerciale seulement"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Droits internes de R&D et de production"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Support communautaire (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Support courriel prioritaire et SLA"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (gratuit)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Harnais de reproduction d’artefacts de validation"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Licence PolyForm Noncommercial"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Contrat de licence commerciale écrit"})]})]})]})})})]}),e.jsxs("div",{ref:r=>a(r,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Foire aux questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:h.map((r,n)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:r.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:r.a})]},n))})]}),e.jsxs("div",{ref:r=>a(r,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"Ce qui n’est pas inclus :"})," sauf mention explicite, aucun palier n’inclut la redistribution, l’OEM, l’hébergement SaaS ni les droits de sous-licence. Contactez notre équipe commerciale pour des conditions sur mesure."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Approvisionnement :"})," tous les prix sont en USD; les taxes applicables sont ajoutées au paiement. Les forfaits mensuels et annuels se renouvellent automatiquement jusqu’à annulation, avec un rappel avant chaque renouvellement annuel."," ","Satisfait ou remboursé ",s.refundDays," jours sur votre premier paiement de tout forfait. Les jetons sont envoyés par courriel en quelques minutes."]}),e.jsxs("p",{children:["En achetant, vous acceptez le ",e.jsx(o,{to:"/fr/license-agreement",className:"text-cyan-300 hover:underline",children:"Contrat de licence commerciale"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-x-6 gap-y-2 pt-4",children:[e.jsx(o,{to:"/fr/license-agreement",className:"hover:text-cyan-300 transition-colors",children:"Contrat de licence"}),e.jsx(o,{to:"/fr/refund",className:"hover:text-cyan-300 transition-colors",children:"Politique de remboursement"}),e.jsx("a",{href:"https://billing.stripe.com/p/login/7sY9AVdwlgoyfse9bYeUU00",target:"_blank",rel:"noopener noreferrer",className:"hover:text-cyan-300 transition-colors",children:"Gérer l’abonnement"}),e.jsx(o,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contacter l’ingénierie"})]})]})]})]})}export{P as default}; diff --git a/assets/PricingFR-Ba1mTi8-.js b/assets/PricingFR-Ba1mTi8-.js deleted file mode 100644 index 4248ed2b..00000000 --- a/assets/PricingFR-Ba1mTi8-.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as u,j as e}from"./vendor-react-BiHfrq0e.js";import{S as x,P as s,e as t,d as i,L as l,C as p}from"./index-DayaklK-.js";import{P as o,a as h}from"./faqData-CvhYJZQK.js";import{N as f}from"./NeuralReveal-uYarhiMA.js";import{g as c,S as b}from"./vendor-gsap-a3sj5zmn.js";import{G as g}from"./vendor-ui-B8TlNU4J.js";c.registerPlugin(b);function C(){const d=u.useRef([]);u.useEffect(()=>{const r=document.createElement("script");if(r.src="https://js.stripe.com/v3/buy-button.js",r.async=!0,document.body.appendChild(r),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const n=c.context(()=>{d.current.filter(Boolean).forEach(m=>{c.fromTo(m,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:m,start:"top 85%",once:!0}})})});return()=>{n.revert(),r.parentNode===document.body&&document.body.removeChild(r)}},[]);const a=(r,n)=>{r&&(d.current[n]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"Tarifs · QECTOR",description:`Licences commerciales QECTOR Decoder v3. Pro dès ${t(s.proMonthly)}/mois, Labo ${t(s.lab)}/an, Entreprise et OEM dès ${t(s.enterpriseFrom)}/an. Satisfait ou remboursé ${s.refundDays} jours. Prix en USD; taxes ajoutées au paiement s’il y a lieu.`,lang:"fr",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Licences commerciales claires et transparentes"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(f,{text:"Licenciez QECTOR pour la production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:["Gratuit pour la recherche académique et non commerciale. Pour un usage commercial, choisissez un forfait : licences vérifiées hors ligne, entièrement hors réseau, annulables en tout temps, satisfait ou remboursé ",s.refundDays," jours sur votre premier paiement."]})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsxs("div",{ref:r=>a(r,0),className:"grid grid-cols-1 sm:grid-cols-3 gap-4 text-center",children:[e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Hors réseau"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Jeton signé, vérifié hors ligne. Aucun serveur de licence, aucun appel réseau."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsxs("p",{className:"text-cyan-300 font-bold",children:["Remboursé ",s.refundDays," jours"]}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Remboursement complet de votre premier paiement de tout forfait, sans question."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Annulable en tout temps"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Votre licence reste valide jusqu’à la fin de la période payée."})]})]}),e.jsxs("div",{ref:r=>a(r,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Forfaits commerciaux"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Droits de production pour l’usage interne de votre organisation. Les abonnements se renouvellent automatiquement jusqu’à annulation."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(g,{size:14,className:"shrink-0","aria-hidden":"true"})," ",s.academicDiscountPct," % de rabais sur Labo pour les établissements d’enseignement. La recherche non commerciale est gratuite."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 max-w-5xl mx-auto",children:[e.jsx(o,{name:"Pro",price:t(s.proMonthly),period:"/ mois",desc:`Ou ${t(s.proAnnual)}/an (2 mois offerts). Palier de licence Pro.`,featured:!0,featuredLabel:"Le plus populaire",features:["Usage commercial interne","Toutes les familles de décodeurs","Lots CPU + GPU (CUDA/OpenCL)","Distances de code jusqu’à 19","Support courriel (2 jours ouvrables)"],ctaLabel:"Acheter au mois",ctaHref:i.proMonthly}),e.jsx(o,{name:"Labo",price:t(s.lab),period:"/ an",desc:"Palier de licence Entreprise, pour les groupes de recherche et laboratoires.",features:["Tout Pro","Distances de code jusqu’à 63","Support prioritaire avec SLA","Appel d’intégration de 2 h","Un rapport de validation (valeur 5 000 $)"],ctaLabel:"Acheter Labo",ctaHref:i.lab}),e.jsx(o,{name:"Entreprise & OEM",price:`${s.enterpriseFrom/1e3} k$+`,period:"/ an",desc:"Redistribution, SaaS, OEM et conditions sur mesure.",accent:"gold",features:["Contrat signé, conditions sur mesure","SaaS et API offertes aux clients","OEM et regroupement matériel","Ingénieur de support attitré"],ctaLabel:"Contacter l’équipe commerciale",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center space-y-2",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Pro facturé à l’année : ",e.jsxs("a",{href:i.proAnnual,className:"text-cyan-400 hover:underline",rel:"noopener",children:[t(s.proAnnual)," / an"]}),"."," ","Vous préférez l’acheter définitivement ? ",e.jsx("a",{href:i.proPerpetual,className:"text-cyan-400 hover:underline",rel:"noopener",children:e.jsxs("strong",{children:["Pro Perpétuel : ",t(s.proPerpetual)," paiement unique"]})})," ","(toutes les versions 1.x, 12 mois de support)."]})})]}),e.jsxs("div",{ref:r=>a(r,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"3 750 $ paiement unique · Livraison en 10-20 jours"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"La voie rapide recommandée pour les équipes qui veulent une preuve immédiate et défendable de la valeur sur leur flux de travail. Nous exécutons jusqu’à 3 charges de référence standard avec QECTOR et livrons des lots d’artefacts reproductibles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Inclut une licence Pilote de ",s.pilotDays," jours"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Analyse comparative vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Appel de révision des résultats de 60 minutes"]})]}),e.jsx(l,{to:"/contact",className:"btn-gold block text-center",children:"Demander un sprint de validation"}),e.jsxs("p",{className:"text-xs text-gold-200/60 mt-6",children:["Seulement la licence et un appel ? Le ",e.jsxs("a",{href:i.pilot,className:"text-gold-400 hover:underline",rel:"noopener",children:["Pilote de ",s.pilotDays," jours est à ",t(s.pilot)]})," :"," ","un appel d’intégration d’une heure et une note de validation écrite, crédités à 100 % sur Labo dans les 90 jours."]})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activer votre licence"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Tout le monde installe la même wheel depuis PyPI : il n’existe pas de build commercial séparé. Votre jeton déverrouille les fonctionnalités payantes : décodage GPU (CUDA/OpenCL) par lots sur tous les forfaits payants, et distances de code jusqu’à 63 sur Labo et Entreprise. Le décodage CPU n’est jamais bloqué; les plafonds de distance ne s’appliquent que si QECTOR_ENFORCE=1."}),e.jsx(p,{language:"bash",className:"mb-6",code:`pip install --upgrade "qector-decoder-v3>=1.0.1,<2" -export QECTOR_LICENSE_KEY="" -export QECTOR_LICENSE="" - -# Vérifier hors ligne : affiche Pro ou Enterprise -python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Les jetons sont vérifiés hors ligne contre une clé publique embarquée dans le paquet : aucun serveur de licence, aucun appel maison, fonctionne complètement hors réseau."})]})]}),e.jsxs("div",{ref:r=>a(r,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Pourquoi licencier QECTOR ?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Gratuit (source disponible)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licencié (commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Usage de recherche non commerciale seulement"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Droits internes de R&D et de production"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Support communautaire (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Support courriel prioritaire et SLA"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (gratuit)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Harnais de reproduction d’artefacts de validation"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Licence PolyForm Noncommercial"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Contrat de licence commerciale écrit"})]})]})]})})})]}),e.jsxs("div",{ref:r=>a(r,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Foire aux questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:h.map((r,n)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:r.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:r.a})]},n))})]}),e.jsxs("div",{ref:r=>a(r,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"Ce qui n’est pas inclus :"})," sauf mention explicite, aucun palier n’inclut la redistribution, l’OEM, l’hébergement SaaS ni les droits de sous-licence. Contactez notre équipe commerciale pour des conditions sur mesure."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Approvisionnement :"})," tous les prix sont en USD; les taxes applicables sont ajoutées au paiement. Les forfaits mensuels et annuels se renouvellent automatiquement jusqu’à annulation, avec un rappel avant chaque renouvellement annuel."," ","Satisfait ou remboursé ",s.refundDays," jours sur votre premier paiement de tout forfait. Les jetons sont envoyés par courriel en quelques minutes."]}),e.jsxs("p",{children:["En achetant, vous acceptez le ",e.jsx(l,{to:"/fr/license-agreement",className:"text-cyan-300 hover:underline",children:"Contrat de licence commerciale"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-x-6 gap-y-2 pt-4",children:[e.jsx(l,{to:"/fr/license-agreement",className:"hover:text-cyan-300 transition-colors",children:"Contrat de licence"}),e.jsx(l,{to:"/fr/refund",className:"hover:text-cyan-300 transition-colors",children:"Politique de remboursement"}),e.jsx("a",{href:"https://billing.stripe.com/p/login/7sY9AVdwlgoyfse9bYeUU00",target:"_blank",rel:"noopener noreferrer",className:"hover:text-cyan-300 transition-colors",children:"Gérer l’abonnement"}),e.jsx(l,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contacter l’ingénierie"})]})]})]})]})}export{C as default}; diff --git a/assets/PricingFR-BkwLcQqV.js b/assets/PricingFR-BkwLcQqV.js deleted file mode 100644 index 1f8f13b0..00000000 --- a/assets/PricingFR-BkwLcQqV.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as u,j as e}from"./vendor-react-BiHfrq0e.js";import{S as x,P as r,c as t,L as i,C as p}from"./index-CqAA-ZXu.js";import{T as h,P as l,a as f}from"./TrialForm-CpW40uwE.js";import{N as b}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as g}from"./vendor-gsap-a3sj5zmn.js";import{G as j}from"./vendor-ui-B0ssGG4c.js";import{L as o}from"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";c.registerPlugin(g);function S(){const d=u.useRef([]);u.useEffect(()=>{const s=document.createElement("script");if(s.src="https://js.stripe.com/v3/buy-button.js",s.async=!0,document.body.appendChild(s),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const n=c.context(()=>{d.current.filter(Boolean).forEach(m=>{c.fromTo(m,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:m,start:"top 85%",once:!0}})})});return()=>{n.revert(),s.parentNode===document.body&&document.body.removeChild(s)}},[]);const a=(s,n)=>{s&&(d.current[n]=s)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"Tarifs · QECTOR",description:`Licences commerciales QECTOR Decoder v3. Essai commercial gratuit de ${r.trialDays} jours. Pro dès ${t(r.proMonthly)}/mois, Équipe ${t(r.team)}/an, Labo ${t(r.lab)}/an, Entreprise et OEM dès ${t(r.enterpriseFrom)}/an. Satisfait ou remboursé ${r.refundDays} jours. Prix en USD; taxes ajoutées au paiement s’il y a lieu.`,lang:"fr",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Licences commerciales claires et transparentes"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(b,{text:"Licenciez QECTOR pour la production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:["Gratuit pour la recherche académique et non commerciale. Pour un usage commercial, commencez un essai gratuit de ",r.trialDays," jours, puis choisissez un forfait : annulable en tout temps, satisfait ou remboursé ",r.refundDays," jours sur votre premier paiement."]})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsx("div",{ref:s=>a(s,0),id:"trial",className:"scroll-mt-32",children:e.jsx("div",{className:"relative p-1 rounded-3xl bg-gradient-to-r from-cyan-400 via-cyan-500 to-gold-400 animate-gradient-xy",children:e.jsxs("div",{className:"bg-void/90 backdrop-blur-xl rounded-[23px] p-8 md:p-12 border border-white/5 flex flex-col md:flex-row items-center justify-between gap-8",children:[e.jsxs("div",{className:"flex-1 text-left",children:[e.jsx("div",{className:"inline-block px-3 py-1 bg-cyan-500/20 text-cyan-300 text-xs font-bold uppercase tracking-wider rounded-full mb-4",children:"Gratuit · Sans carte · Jeton par courriel"}),e.jsxs("h2",{className:"text-3xl md:text-4xl font-extrabold text-white mb-4",children:["Essai commercial de ",r.trialDays," jours"]}),e.jsx("p",{className:"text-secondary text-base leading-relaxed max-w-xl",children:"Évaluez QECTOR sur vos propres charges de travail avec des droits d’évaluation commerciale complets : toutes les familles de décodeurs, décodage par lots CPU et GPU (CUDA/OpenCL), vérification de licence hors ligne."}),e.jsxs("div",{className:"mt-6 flex flex-wrap gap-4 text-sm text-cyan-100/70",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Jusqu’à 5 utilisateurs internes"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Expire de lui-même : rien à annuler"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Un essai par adresse par année"]})]})]}),e.jsx("div",{className:"w-full md:w-auto flex flex-col items-center",children:e.jsx(h,{lang:"fr"})})]})})}),e.jsxs("div",{ref:s=>a(s,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Forfaits commerciaux"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Droits de production pour usage interne. Les forfaits se renouvellent automatiquement jusqu’à annulation."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(j,{size:14,className:"shrink-0","aria-hidden":"true"})," ",r.academicDiscountPct," % de rabais sur Équipe et Labo pour les établissements d’enseignement. La recherche non commerciale est gratuite."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsx(l,{name:"Pro",price:t(r.proMonthly),period:"/ mois",desc:`Un utilisateur nommé. Ou ${t(r.proAnnual)}/an (2 mois offerts).`,features:["Usage commercial interne","Toutes les familles de décodeurs","Lots CPU + GPU (CUDA/OpenCL)","Support courriel (2 jours ouvrables)"],ctaLabel:"Acheter au mois",ctaHref:i.proMonthly}),e.jsx(l,{name:"Équipe",price:t(r.team),period:"/ an",desc:"Jusqu’à 10 utilisateurs nommés.",featured:!0,featuredLabel:"Idéal pour les startups",features:["Tout Pro","Jusqu’à 10 utilisateurs nommés","Support prioritaire (1 jour ouvrable)","Appel d’intégration de 2 h"],ctaLabel:"Acheter Équipe",ctaHref:i.team}),e.jsx(l,{name:"Labo",price:t(r.lab),period:"/ an",desc:"Jusqu’à 25 utilisateurs nommés. Palier de licence Entreprise.",features:["Tout Équipe","Distances de code jusqu’à 63","SLA de support","Un rapport de validation (valeur 5 000 $)"],ctaLabel:"Acheter Labo",ctaHref:i.lab}),e.jsx(l,{name:"Entreprise & OEM",price:`${r.enterpriseFrom/1e3} k$+`,period:"/ an",desc:"Redistribution, SaaS, OEM et conditions sur mesure.",accent:"gold",features:["Sièges illimités","SaaS et API offertes aux clients","OEM et regroupement matériel","Ingénieur de support attitré"],ctaLabel:"Contacter l’équipe commerciale",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center space-y-2",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Pro facturé à l’année : ",e.jsxs("a",{href:i.proAnnual,className:"text-cyan-400 hover:underline",rel:"noopener",children:[t(r.proAnnual)," / an"]}),"."," ","Vous préférez l’acheter définitivement ? ",e.jsx("a",{href:i.proPerpetual,className:"text-cyan-400 hover:underline",rel:"noopener",children:e.jsxs("strong",{children:["Pro Perpétuel : ",t(r.proPerpetual)," paiement unique"]})})," ","(toutes les versions 3.x, 12 mois de support)."]})})]}),e.jsxs("div",{ref:s=>a(s,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"3 750 $ paiement unique · Livraison en 10-20 jours"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"La voie rapide recommandée pour les équipes qui veulent une preuve immédiate et défendable de la valeur sur leur flux de travail. Nous exécutons jusqu’à 3 charges de référence standard avec QECTOR et livrons des lots d’artefacts reproductibles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Inclut une licence Pilote de ",r.pilotDays," jours"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Analyse comparative vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Appel de révision des résultats de 60 minutes"]})]}),e.jsx(o,{to:"/contact",className:"btn-gold block text-center",children:"Demander un sprint de validation"}),e.jsxs("p",{className:"text-xs text-gold-200/60 mt-6",children:["Seulement la licence et un appel ? Le ",e.jsxs("a",{href:i.pilot,className:"text-gold-400 hover:underline",rel:"noopener",children:["Pilote de ",r.pilotDays," jours est à ",t(r.pilot)]})," :"," ","un appel d’intégration d’une heure et une note de validation écrite, crédités à 100 % sur Équipe ou Labo dans les 90 jours."]})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activer votre licence"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Tout le monde installe la même wheel depuis PyPI : il n’existe pas de build commercial séparé. Votre jeton déverrouille les fonctionnalités payantes : décodage GPU (CUDA/OpenCL) par lots sur tous les forfaits payants, et distances de code jusqu’à 63 sur Labo et Entreprise. Le décodage CPU n’est jamais bloqué; les plafonds de distance ne s’appliquent que si QECTOR_ENFORCE=1."}),e.jsx(p,{language:"bash",className:"mb-6",code:`pip install --upgrade "qector-decoder-v3>=1.0,<2" -export QECTOR_LICENSE_KEY="" -export QECTOR_LICENSE="" - -# Vérifier hors ligne : affiche Pro ou Enterprise -python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Les jetons sont vérifiés hors ligne contre une clé publique embarquée dans le paquet : aucun serveur de licence, aucun appel maison, fonctionne complètement hors réseau."})]})]}),e.jsxs("div",{ref:s=>a(s,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Pourquoi licencier QECTOR ?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Gratuit (source disponible)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licencié (commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Usage de recherche non commerciale seulement"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Droits internes de R&D et de production"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Support communautaire (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Support courriel prioritaire et SLA"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (gratuit)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Harnais de reproduction d’artefacts de validation"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Licence PolyForm Noncommercial"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Contrat de licence commerciale écrit"})]})]})]})})})]}),e.jsxs("div",{ref:s=>a(s,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Foire aux questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:f.map((s,n)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:s.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.a})]},n))})]}),e.jsxs("div",{ref:s=>a(s,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"Ce qui n’est pas inclus :"})," sauf mention explicite, aucun palier n’inclut la redistribution, l’OEM, l’hébergement SaaS ni les droits de sous-licence. Contactez notre équipe commerciale pour des conditions sur mesure."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Approvisionnement :"})," tous les prix sont en USD; les taxes applicables sont ajoutées au paiement. Les forfaits mensuels et annuels se renouvellent automatiquement jusqu’à annulation, avec un rappel avant chaque renouvellement annuel."," ","Satisfait ou remboursé ",r.refundDays," jours sur votre premier paiement de tout forfait. Les jetons sont envoyés par courriel en quelques minutes."]}),e.jsxs("div",{className:"flex justify-center gap-6 pt-4",children:[e.jsx(o,{to:"/refund",className:"hover:text-cyan-300 transition-colors",children:"Politique de remboursement"}),e.jsx(o,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contacter l’ingénierie"})]})]})]})]})}export{S as default}; diff --git a/assets/PricingFR-Bq3K4m2D.js b/assets/PricingFR-Bq3K4m2D.js deleted file mode 100644 index e6ed7870..00000000 --- a/assets/PricingFR-Bq3K4m2D.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as m,j as e}from"./vendor-react-BiHfrq0e.js";import{S as x,P as r,c as t,L as i,C as p}from"./index-WV1aysjN.js";import{T as h,P as l,a as f}from"./TrialForm-CC5CTQMP.js";import{N as b}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as g}from"./vendor-gsap-a3sj5zmn.js";import{G as j}from"./vendor-ui-B0ssGG4c.js";import{L as o}from"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";c.registerPlugin(g);function S(){const d=m.useRef([]);m.useEffect(()=>{const s=document.createElement("script");if(s.src="https://js.stripe.com/v3/buy-button.js",s.async=!0,document.body.appendChild(s),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const n=c.context(()=>{d.current.filter(Boolean).forEach(u=>{c.fromTo(u,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:u,start:"top 85%",once:!0}})})});return()=>{n.revert(),s.parentNode===document.body&&document.body.removeChild(s)}},[]);const a=(s,n)=>{s&&(d.current[n]=s)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"Tarifs · QECTOR",description:`Licences commerciales QECTOR Decoder v3. Essai commercial gratuit de ${r.trialDays} jours. Pro dès ${t(r.proMonthly)}/mois, Équipe ${t(r.team)}/an, Labo ${t(r.lab)}/an, Entreprise et OEM dès ${t(r.enterpriseFrom)}/an. Satisfait ou remboursé ${r.refundDays} jours. Prix en USD; taxes ajoutées au paiement s’il y a lieu.`,lang:"fr",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Licences commerciales claires et transparentes"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(b,{text:"Licenciez QECTOR pour la production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:["Gratuit pour la recherche académique et non commerciale. Pour un usage commercial, commencez un essai gratuit de ",r.trialDays," jours, puis choisissez un forfait : annulable en tout temps, satisfait ou remboursé ",r.refundDays," jours sur votre premier paiement."]})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsx("div",{ref:s=>a(s,0),id:"trial",className:"scroll-mt-32",children:e.jsx("div",{className:"relative p-1 rounded-3xl bg-gradient-to-r from-cyan-400 via-cyan-500 to-gold-400 animate-gradient-xy",children:e.jsxs("div",{className:"bg-void/90 backdrop-blur-xl rounded-[23px] p-8 md:p-12 border border-white/5 flex flex-col md:flex-row items-center justify-between gap-8",children:[e.jsxs("div",{className:"flex-1 text-left",children:[e.jsx("div",{className:"inline-block px-3 py-1 bg-cyan-500/20 text-cyan-300 text-xs font-bold uppercase tracking-wider rounded-full mb-4",children:"Gratuit · Sans carte · Jeton par courriel"}),e.jsxs("h2",{className:"text-3xl md:text-4xl font-extrabold text-white mb-4",children:["Essai commercial de ",r.trialDays," jours"]}),e.jsx("p",{className:"text-secondary text-base leading-relaxed max-w-xl",children:"Évaluez QECTOR sur vos propres charges de travail avec des droits d’évaluation commerciale complets : toutes les familles de décodeurs, décodage par lots CPU et GPU (CUDA/OpenCL), vérification de licence hors ligne."}),e.jsxs("div",{className:"mt-6 flex flex-wrap gap-4 text-sm text-cyan-100/70",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Jusqu’à 5 utilisateurs internes"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Expire de lui-même : rien à annuler"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Un essai par adresse par année"]})]})]}),e.jsx("div",{className:"w-full md:w-auto flex flex-col items-center",children:e.jsx(h,{lang:"fr"})})]})})}),e.jsxs("div",{ref:s=>a(s,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Forfaits commerciaux"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Droits de production pour usage interne. Les forfaits se renouvellent automatiquement jusqu’à annulation."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(j,{size:14,className:"shrink-0","aria-hidden":"true"})," ",r.academicDiscountPct," % de rabais sur Équipe et Labo pour les projets universitaires financés par l’industrie. La recherche non commerciale est gratuite."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsx(l,{name:"Pro",price:t(r.proMonthly),period:"/ mois",desc:`Un utilisateur nommé. Ou ${t(r.proAnnual)}/an (2 mois offerts).`,features:["Usage commercial interne","Toutes les familles de décodeurs","Lots CPU + GPU (CUDA/OpenCL)","Support courriel (2 jours ouvrables)"],ctaLabel:"Acheter au mois",ctaHref:i.proMonthly}),e.jsx(l,{name:"Équipe",price:t(r.team),period:"/ an",desc:"Jusqu’à 10 utilisateurs nommés.",featured:!0,featuredLabel:"Idéal pour les startups",features:["Tout Pro","Jusqu’à 10 utilisateurs nommés","Support prioritaire (1 jour ouvrable)","Appel d’intégration de 2 h"],ctaLabel:"Acheter Équipe",ctaHref:i.team}),e.jsx(l,{name:"Labo",price:t(r.lab),period:"/ an",desc:"Jusqu’à 25 utilisateurs nommés. Palier de licence Entreprise.",features:["Tout Équipe","Distances de code jusqu’à 63","SLA de support","Un rapport de validation (valeur 5 000 $)"],ctaLabel:"Acheter Labo",ctaHref:i.lab}),e.jsx(l,{name:"Entreprise & OEM",price:`dès ${t(r.enterpriseFrom)}`,period:"/ an",desc:"Redistribution, SaaS, OEM et conditions sur mesure.",accent:"gold",features:["Sièges illimités","SaaS et API offertes aux clients","OEM et regroupement matériel","Ingénieur de support attitré"],ctaLabel:"Contacter l’équipe commerciale",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center space-y-2",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Pro facturé à l’année : ",e.jsxs("a",{href:i.proAnnual,className:"text-cyan-400 hover:underline",rel:"noopener",children:[t(r.proAnnual)," / an"]}),"."," ","Vous préférez l’acheter définitivement ? ",e.jsx("a",{href:i.proPerpetual,className:"text-cyan-400 hover:underline",rel:"noopener",children:e.jsxs("strong",{children:["Pro Perpétuel : ",t(r.proPerpetual)," paiement unique"]})})," ","(toutes les versions 3.x, 12 mois de support)."]})})]}),e.jsxs("div",{ref:s=>a(s,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"3 750 $ paiement unique · Livraison en 10-20 jours"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"La voie rapide recommandée pour les équipes qui veulent une preuve immédiate et défendable de la valeur sur leur flux de travail. Nous exécutons jusqu’à 3 charges de référence standard avec QECTOR et livrons des lots d’artefacts reproductibles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Inclut une licence Pilote de ",r.pilotDays," jours"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Analyse comparative vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Appel de révision des résultats de 60 minutes"]})]}),e.jsx(o,{to:"/contact",className:"btn-gold block text-center",children:"Demander un sprint de validation"}),e.jsxs("p",{className:"text-xs text-gold-200/60 mt-6",children:["Seulement la licence et un appel ? Le ",e.jsxs("a",{href:i.pilot,className:"text-gold-400 hover:underline",rel:"noopener",children:["Pilote de ",r.pilotDays," jours est à ",t(r.pilot)]})," :"," ","un appel d’intégration d’une heure et une note de validation écrite, crédités à 100 % sur Équipe ou Labo dans les 90 jours."]})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activer votre licence"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Tout le monde installe la même wheel depuis PyPI : il n’existe pas de build commercial séparé. Votre jeton déverrouille les fonctionnalités payantes : décodage GPU (CUDA/OpenCL) par lots sur tous les forfaits payants, et distances de code jusqu’à 63 sur Labo et Entreprise. Le décodage CPU n’est jamais bloqué; les plafonds de distance ne s’appliquent que si QECTOR_ENFORCE=1."}),e.jsx(p,{language:"bash",className:"mb-6",code:`pip install --upgrade "qector-decoder-v3>=1.0,<2" -export QECTOR_LICENSE_KEY="" -export QECTOR_LICENSE="" - -# Vérifier hors ligne : affiche Pro ou Enterprise -python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Les jetons sont vérifiés hors ligne contre une clé publique embarquée dans le paquet : aucun serveur de licence, aucun appel maison, fonctionne complètement hors réseau."})]})]}),e.jsxs("div",{ref:s=>a(s,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Pourquoi licencier QECTOR ?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Gratuit (source disponible)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licencié (commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Usage de recherche non commerciale seulement"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Droits internes de R&D et de production"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Support communautaire (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Support courriel prioritaire et SLA"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (gratuit)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Harnais de reproduction d’artefacts de validation"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Licence PolyForm Noncommercial"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Contrat de licence commerciale écrit"})]})]})]})})})]}),e.jsxs("div",{ref:s=>a(s,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Foire aux questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:f.map((s,n)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:s.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.a})]},n))})]}),e.jsxs("div",{ref:s=>a(s,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"Ce qui n’est pas inclus :"})," sauf mention explicite, aucun palier n’inclut la redistribution, l’OEM, l’hébergement SaaS ni les droits de sous-licence. Contactez notre équipe commerciale pour des conditions sur mesure."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Approvisionnement :"})," tous les prix sont en USD; les taxes applicables sont ajoutées au paiement. Les forfaits mensuels et annuels se renouvellent automatiquement jusqu’à annulation, avec un rappel avant chaque renouvellement annuel."," ","Satisfait ou remboursé ",r.refundDays," jours sur votre premier paiement de tout forfait. Les jetons sont envoyés par courriel en quelques minutes."]}),e.jsxs("div",{className:"flex justify-center gap-6 pt-4",children:[e.jsx(o,{to:"/refund",className:"hover:text-cyan-300 transition-colors",children:"Politique de remboursement"}),e.jsx(o,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contacter l’ingénierie"})]})]})]})]})}export{S as default}; diff --git a/assets/PricingFR-C1a9eh_h.js b/assets/PricingFR-C1a9eh_h.js deleted file mode 100644 index 3cb77700..00000000 --- a/assets/PricingFR-C1a9eh_h.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as u,j as e}from"./vendor-react-BiHfrq0e.js";import{S as x,P as s,e as t,d as i,L as l,C as p}from"./index-CcwlvHYJ.js";import{P as o,a as h}from"./faqData-DUePwhCA.js";import{N as f}from"./NeuralReveal-Bsl9IGCr.js";import{g as c,S as b}from"./vendor-gsap-a3sj5zmn.js";import{G as g}from"./vendor-ui-B0ssGG4c.js";c.registerPlugin(b);function C(){const d=u.useRef([]);u.useEffect(()=>{const r=document.createElement("script");if(r.src="https://js.stripe.com/v3/buy-button.js",r.async=!0,document.body.appendChild(r),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const n=c.context(()=>{d.current.filter(Boolean).forEach(m=>{c.fromTo(m,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:m,start:"top 85%",once:!0}})})});return()=>{n.revert(),r.parentNode===document.body&&document.body.removeChild(r)}},[]);const a=(r,n)=>{r&&(d.current[n]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"Tarifs · QECTOR",description:`Licences commerciales QECTOR Decoder v3. Pro dès ${t(s.proMonthly)}/mois, Labo ${t(s.lab)}/an, Entreprise et OEM dès ${t(s.enterpriseFrom)}/an. Satisfait ou remboursé ${s.refundDays} jours. Prix en USD; taxes ajoutées au paiement s’il y a lieu.`,lang:"fr",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Licences commerciales claires et transparentes"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(f,{text:"Licenciez QECTOR pour la production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:["Gratuit pour la recherche académique et non commerciale. Pour un usage commercial, choisissez un forfait : licences vérifiées hors ligne, entièrement hors réseau, annulables en tout temps, satisfait ou remboursé ",s.refundDays," jours sur votre premier paiement."]})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsxs("div",{ref:r=>a(r,0),className:"grid grid-cols-1 sm:grid-cols-3 gap-4 text-center",children:[e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Hors réseau"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Jeton signé, vérifié hors ligne. Aucun serveur de licence, aucun appel réseau."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsxs("p",{className:"text-cyan-300 font-bold",children:["Remboursé ",s.refundDays," jours"]}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Remboursement complet de votre premier paiement de tout forfait, sans question."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Annulable en tout temps"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Votre licence reste valide jusqu’à la fin de la période payée."})]})]}),e.jsxs("div",{ref:r=>a(r,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Forfaits commerciaux"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Droits de production pour l’usage interne de votre organisation. Les abonnements se renouvellent automatiquement jusqu’à annulation."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(g,{size:14,className:"shrink-0","aria-hidden":"true"})," ",s.academicDiscountPct," % de rabais sur Labo pour les établissements d’enseignement. La recherche non commerciale est gratuite."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 max-w-5xl mx-auto",children:[e.jsx(o,{name:"Pro",price:t(s.proMonthly),period:"/ mois",desc:`Ou ${t(s.proAnnual)}/an (2 mois offerts). Palier de licence Pro.`,featured:!0,featuredLabel:"Le plus populaire",features:["Usage commercial interne","Toutes les familles de décodeurs","Lots CPU + GPU (CUDA/OpenCL)","Distances de code jusqu’à 19","Support courriel (2 jours ouvrables)"],ctaLabel:"Acheter au mois",ctaHref:i.proMonthly}),e.jsx(o,{name:"Labo",price:t(s.lab),period:"/ an",desc:"Palier de licence Entreprise, pour les groupes de recherche et laboratoires.",features:["Tout Pro","Distances de code jusqu’à 63","Support prioritaire avec SLA","Appel d’intégration de 2 h","Un rapport de validation (valeur 5 000 $)"],ctaLabel:"Acheter Labo",ctaHref:i.lab}),e.jsx(o,{name:"Entreprise & OEM",price:`${s.enterpriseFrom/1e3} k$+`,period:"/ an",desc:"Redistribution, SaaS, OEM et conditions sur mesure.",accent:"gold",features:["Contrat signé, conditions sur mesure","SaaS et API offertes aux clients","OEM et regroupement matériel","Ingénieur de support attitré"],ctaLabel:"Contacter l’équipe commerciale",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center space-y-2",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Pro facturé à l’année : ",e.jsxs("a",{href:i.proAnnual,className:"text-cyan-400 hover:underline",rel:"noopener",children:[t(s.proAnnual)," / an"]}),"."," ","Vous préférez l’acheter définitivement ? ",e.jsx("a",{href:i.proPerpetual,className:"text-cyan-400 hover:underline",rel:"noopener",children:e.jsxs("strong",{children:["Pro Perpétuel : ",t(s.proPerpetual)," paiement unique"]})})," ","(toutes les versions 1.x, 12 mois de support)."]})})]}),e.jsxs("div",{ref:r=>a(r,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"3 750 $ paiement unique · Livraison en 10-20 jours"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"La voie rapide recommandée pour les équipes qui veulent une preuve immédiate et défendable de la valeur sur leur flux de travail. Nous exécutons jusqu’à 3 charges de référence standard avec QECTOR et livrons des lots d’artefacts reproductibles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Inclut une licence Pilote de ",s.pilotDays," jours"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Analyse comparative vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Appel de révision des résultats de 60 minutes"]})]}),e.jsx(l,{to:"/contact",className:"btn-gold block text-center",children:"Demander un sprint de validation"}),e.jsxs("p",{className:"text-xs text-gold-200/60 mt-6",children:["Seulement la licence et un appel ? Le ",e.jsxs("a",{href:i.pilot,className:"text-gold-400 hover:underline",rel:"noopener",children:["Pilote de ",s.pilotDays," jours est à ",t(s.pilot)]})," :"," ","un appel d’intégration d’une heure et une note de validation écrite, crédités à 100 % sur Labo dans les 90 jours."]})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activer votre licence"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Tout le monde installe la même wheel depuis PyPI : il n’existe pas de build commercial séparé. Votre jeton déverrouille les fonctionnalités payantes : décodage GPU (CUDA/OpenCL) par lots sur tous les forfaits payants, et distances de code jusqu’à 63 sur Labo et Entreprise. Le décodage CPU n’est jamais bloqué; les plafonds de distance ne s’appliquent que si QECTOR_ENFORCE=1."}),e.jsx(p,{language:"bash",className:"mb-6",code:`pip install --upgrade "qector-decoder-v3>=1.0.1,<2" -export QECTOR_LICENSE_KEY="" -export QECTOR_LICENSE="" - -# Vérifier hors ligne : affiche Pro ou Enterprise -python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Les jetons sont vérifiés hors ligne contre une clé publique embarquée dans le paquet : aucun serveur de licence, aucun appel maison, fonctionne complètement hors réseau."})]})]}),e.jsxs("div",{ref:r=>a(r,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Pourquoi licencier QECTOR ?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Gratuit (source disponible)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licencié (commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Usage de recherche non commerciale seulement"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Droits internes de R&D et de production"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Support communautaire (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Support courriel prioritaire et SLA"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (gratuit)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Harnais de reproduction d’artefacts de validation"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Licence PolyForm Noncommercial"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Contrat de licence commerciale écrit"})]})]})]})})})]}),e.jsxs("div",{ref:r=>a(r,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Foire aux questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:h.map((r,n)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:r.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:r.a})]},n))})]}),e.jsxs("div",{ref:r=>a(r,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"Ce qui n’est pas inclus :"})," sauf mention explicite, aucun palier n’inclut la redistribution, l’OEM, l’hébergement SaaS ni les droits de sous-licence. Contactez notre équipe commerciale pour des conditions sur mesure."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Approvisionnement :"})," tous les prix sont en USD; les taxes applicables sont ajoutées au paiement. Les forfaits mensuels et annuels se renouvellent automatiquement jusqu’à annulation, avec un rappel avant chaque renouvellement annuel."," ","Satisfait ou remboursé ",s.refundDays," jours sur votre premier paiement de tout forfait. Les jetons sont envoyés par courriel en quelques minutes."]}),e.jsxs("p",{children:["En achetant, vous acceptez le ",e.jsx(l,{to:"/fr/license-agreement",className:"text-cyan-300 hover:underline",children:"Contrat de licence commerciale"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-x-6 gap-y-2 pt-4",children:[e.jsx(l,{to:"/fr/license-agreement",className:"hover:text-cyan-300 transition-colors",children:"Contrat de licence"}),e.jsx(l,{to:"/fr/refund",className:"hover:text-cyan-300 transition-colors",children:"Politique de remboursement"}),e.jsx("a",{href:"https://billing.stripe.com/p/login/7sY9AVdwlgoyfse9bYeUU00",target:"_blank",rel:"noopener noreferrer",className:"hover:text-cyan-300 transition-colors",children:"Gérer l’abonnement"}),e.jsx(l,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contacter l’ingénierie"})]})]})]})]})}export{C as default}; diff --git a/assets/PricingFR-C5Yr9nMm.js b/assets/PricingFR-C5Yr9nMm.js deleted file mode 100644 index d1e5685a..00000000 --- a/assets/PricingFR-C5Yr9nMm.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as u,j as e}from"./vendor-react-BiHfrq0e.js";import{S as x,P as r,c as t,L as i,C as p}from"./index-abfjMTlQ.js";import{P as l,a as h}from"./faqData-D7ZwBN6k.js";import{N as f}from"./NeuralReveal-D-EQoOl2.js";import{g as c,S as b}from"./vendor-gsap-a3sj5zmn.js";import{G as g}from"./vendor-ui-B0ssGG4c.js";import{L as o}from"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";c.registerPlugin(b);function P(){const d=u.useRef([]);u.useEffect(()=>{const s=document.createElement("script");if(s.src="https://js.stripe.com/v3/buy-button.js",s.async=!0,document.body.appendChild(s),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const n=c.context(()=>{d.current.filter(Boolean).forEach(m=>{c.fromTo(m,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:m,start:"top 85%",once:!0}})})});return()=>{n.revert(),s.parentNode===document.body&&document.body.removeChild(s)}},[]);const a=(s,n)=>{s&&(d.current[n]=s)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"Tarifs · QECTOR",description:`Licences commerciales QECTOR Decoder v3. Pro dès ${t(r.proMonthly)}/mois, Labo ${t(r.lab)}/an, Entreprise et OEM dès ${t(r.enterpriseFrom)}/an. Satisfait ou remboursé ${r.refundDays} jours. Prix en USD; taxes ajoutées au paiement s’il y a lieu.`,lang:"fr",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Licences commerciales claires et transparentes"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(f,{text:"Licenciez QECTOR pour la production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:["Gratuit pour la recherche académique et non commerciale. Pour un usage commercial, choisissez un forfait : licences vérifiées hors ligne, entièrement hors réseau, annulables en tout temps, satisfait ou remboursé ",r.refundDays," jours sur votre premier paiement."]})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsxs("div",{ref:s=>a(s,0),className:"grid grid-cols-1 sm:grid-cols-3 gap-4 text-center",children:[e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Hors réseau"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Jeton signé, vérifié hors ligne. Aucun serveur de licence, aucun appel réseau."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsxs("p",{className:"text-cyan-300 font-bold",children:["Remboursé ",r.refundDays," jours"]}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Remboursement complet de votre premier paiement de tout forfait, sans question."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Annulable en tout temps"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Votre licence reste valide jusqu’à la fin de la période payée."})]})]}),e.jsxs("div",{ref:s=>a(s,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Forfaits commerciaux"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Droits de production pour l’usage interne de votre organisation. Les abonnements se renouvellent automatiquement jusqu’à annulation."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(g,{size:14,className:"shrink-0","aria-hidden":"true"})," ",r.academicDiscountPct," % de rabais sur Labo pour les établissements d’enseignement. La recherche non commerciale est gratuite."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 max-w-5xl mx-auto",children:[e.jsx(l,{name:"Pro",price:t(r.proMonthly),period:"/ mois",desc:`Ou ${t(r.proAnnual)}/an (2 mois offerts). Palier de licence Pro.`,featured:!0,featuredLabel:"Le plus populaire",features:["Usage commercial interne","Toutes les familles de décodeurs","Lots CPU + GPU (CUDA/OpenCL)","Distances de code jusqu’à 19","Support courriel (2 jours ouvrables)"],ctaLabel:"Acheter au mois",ctaHref:i.proMonthly}),e.jsx(l,{name:"Labo",price:t(r.lab),period:"/ an",desc:"Palier de licence Entreprise, pour les groupes de recherche et laboratoires.",features:["Tout Pro","Distances de code jusqu’à 63","Support prioritaire avec SLA","Appel d’intégration de 2 h","Un rapport de validation (valeur 5 000 $)"],ctaLabel:"Acheter Labo",ctaHref:i.lab}),e.jsx(l,{name:"Entreprise & OEM",price:`${r.enterpriseFrom/1e3} k$+`,period:"/ an",desc:"Redistribution, SaaS, OEM et conditions sur mesure.",accent:"gold",features:["Contrat signé, conditions sur mesure","SaaS et API offertes aux clients","OEM et regroupement matériel","Ingénieur de support attitré"],ctaLabel:"Contacter l’équipe commerciale",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center space-y-2",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Pro facturé à l’année : ",e.jsxs("a",{href:i.proAnnual,className:"text-cyan-400 hover:underline",rel:"noopener",children:[t(r.proAnnual)," / an"]}),"."," ","Vous préférez l’acheter définitivement ? ",e.jsx("a",{href:i.proPerpetual,className:"text-cyan-400 hover:underline",rel:"noopener",children:e.jsxs("strong",{children:["Pro Perpétuel : ",t(r.proPerpetual)," paiement unique"]})})," ","(toutes les versions 1.x, 12 mois de support)."]})})]}),e.jsxs("div",{ref:s=>a(s,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"3 750 $ paiement unique · Livraison en 10-20 jours"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"La voie rapide recommandée pour les équipes qui veulent une preuve immédiate et défendable de la valeur sur leur flux de travail. Nous exécutons jusqu’à 3 charges de référence standard avec QECTOR et livrons des lots d’artefacts reproductibles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Inclut une licence Pilote de ",r.pilotDays," jours"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Analyse comparative vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Appel de révision des résultats de 60 minutes"]})]}),e.jsx(o,{to:"/contact",className:"btn-gold block text-center",children:"Demander un sprint de validation"}),e.jsxs("p",{className:"text-xs text-gold-200/60 mt-6",children:["Seulement la licence et un appel ? Le ",e.jsxs("a",{href:i.pilot,className:"text-gold-400 hover:underline",rel:"noopener",children:["Pilote de ",r.pilotDays," jours est à ",t(r.pilot)]})," :"," ","un appel d’intégration d’une heure et une note de validation écrite, crédités à 100 % sur Labo dans les 90 jours."]})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activer votre licence"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Tout le monde installe la même wheel depuis PyPI : il n’existe pas de build commercial séparé. Votre jeton déverrouille les fonctionnalités payantes : décodage GPU (CUDA/OpenCL) par lots sur tous les forfaits payants, et distances de code jusqu’à 63 sur Labo et Entreprise. Le décodage CPU n’est jamais bloqué; les plafonds de distance ne s’appliquent que si QECTOR_ENFORCE=1."}),e.jsx(p,{language:"bash",className:"mb-6",code:`pip install --upgrade "qector-decoder-v3>=1.0.1,<2" -export QECTOR_LICENSE_KEY="" -export QECTOR_LICENSE="" - -# Vérifier hors ligne : affiche Pro ou Enterprise -python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Les jetons sont vérifiés hors ligne contre une clé publique embarquée dans le paquet : aucun serveur de licence, aucun appel maison, fonctionne complètement hors réseau."})]})]}),e.jsxs("div",{ref:s=>a(s,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Pourquoi licencier QECTOR ?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Gratuit (source disponible)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licencié (commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Usage de recherche non commerciale seulement"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Droits internes de R&D et de production"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Support communautaire (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Support courriel prioritaire et SLA"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (gratuit)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Harnais de reproduction d’artefacts de validation"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Licence PolyForm Noncommercial"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Contrat de licence commerciale écrit"})]})]})]})})})]}),e.jsxs("div",{ref:s=>a(s,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Foire aux questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:h.map((s,n)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:s.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.a})]},n))})]}),e.jsxs("div",{ref:s=>a(s,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"Ce qui n’est pas inclus :"})," sauf mention explicite, aucun palier n’inclut la redistribution, l’OEM, l’hébergement SaaS ni les droits de sous-licence. Contactez notre équipe commerciale pour des conditions sur mesure."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Approvisionnement :"})," tous les prix sont en USD; les taxes applicables sont ajoutées au paiement. Les forfaits mensuels et annuels se renouvellent automatiquement jusqu’à annulation, avec un rappel avant chaque renouvellement annuel."," ","Satisfait ou remboursé ",r.refundDays," jours sur votre premier paiement de tout forfait. Les jetons sont envoyés par courriel en quelques minutes."]}),e.jsxs("p",{children:["En achetant, vous acceptez le ",e.jsx(o,{to:"/fr/license-agreement",className:"text-cyan-300 hover:underline",children:"Contrat de licence commerciale"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-x-6 gap-y-2 pt-4",children:[e.jsx(o,{to:"/fr/license-agreement",className:"hover:text-cyan-300 transition-colors",children:"Contrat de licence"}),e.jsx(o,{to:"/fr/refund",className:"hover:text-cyan-300 transition-colors",children:"Politique de remboursement"}),e.jsx(o,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contacter l’ingénierie"})]})]})]})]})}export{P as default}; diff --git a/assets/PricingFR-C6K3hXax.js b/assets/PricingFR-C6K3hXax.js deleted file mode 100644 index 677c0180..00000000 --- a/assets/PricingFR-C6K3hXax.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as u,j as e}from"./vendor-react-BiHfrq0e.js";import{S as x,P as s,e as t,d as i,L as l,C as p}from"./index-c1PDYu0j.js";import{P as o,a as h}from"./faqData-B9kvzm8o.js";import{N as f}from"./NeuralReveal-uYarhiMA.js";import{g as c,S as b}from"./vendor-gsap-a3sj5zmn.js";import{G as g}from"./vendor-ui-B8TlNU4J.js";c.registerPlugin(b);function C(){const d=u.useRef([]);u.useEffect(()=>{const r=document.createElement("script");if(r.src="https://js.stripe.com/v3/buy-button.js",r.async=!0,document.body.appendChild(r),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const n=c.context(()=>{d.current.filter(Boolean).forEach(m=>{c.fromTo(m,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:m,start:"top 85%",once:!0}})})});return()=>{n.revert(),r.parentNode===document.body&&document.body.removeChild(r)}},[]);const a=(r,n)=>{r&&(d.current[n]=r)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"Tarifs · QECTOR",description:`Licences commerciales QECTOR Decoder v3. Pro dès ${t(s.proMonthly)}/mois, Labo ${t(s.lab)}/an, Entreprise et OEM dès ${t(s.enterpriseFrom)}/an. Satisfait ou remboursé ${s.refundDays} jours. Prix en USD; taxes ajoutées au paiement s’il y a lieu.`,lang:"fr",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Licences commerciales claires et transparentes"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(f,{text:"Licenciez QECTOR pour la production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:["Gratuit pour la recherche académique et non commerciale. Pour un usage commercial, choisissez un forfait : licences vérifiées hors ligne, entièrement hors réseau, annulables en tout temps, satisfait ou remboursé ",s.refundDays," jours sur votre premier paiement."]})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsxs("div",{ref:r=>a(r,0),className:"grid grid-cols-1 sm:grid-cols-3 gap-4 text-center",children:[e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Hors réseau"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Jeton signé, vérifié hors ligne. Aucun serveur de licence, aucun appel réseau."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsxs("p",{className:"text-cyan-300 font-bold",children:["Remboursé ",s.refundDays," jours"]}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Remboursement complet de votre premier paiement de tout forfait, sans question."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Annulable en tout temps"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Votre licence reste valide jusqu’à la fin de la période payée."})]})]}),e.jsxs("div",{ref:r=>a(r,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Forfaits commerciaux"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Droits de production pour l’usage interne de votre organisation. Les abonnements se renouvellent automatiquement jusqu’à annulation."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(g,{size:14,className:"shrink-0","aria-hidden":"true"})," ",s.academicDiscountPct," % de rabais sur Labo pour les établissements d’enseignement. La recherche non commerciale est gratuite."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 max-w-5xl mx-auto",children:[e.jsx(o,{name:"Pro",price:t(s.proMonthly),period:"/ mois",desc:`Ou ${t(s.proAnnual)}/an (2 mois offerts). Palier de licence Pro.`,featured:!0,featuredLabel:"Le plus populaire",features:["Usage commercial interne","Toutes les familles de décodeurs","Lots CPU + GPU (CUDA/OpenCL)","Distances de code jusqu’à 19","Support courriel (2 jours ouvrables)"],ctaLabel:"Acheter au mois",ctaHref:i.proMonthly}),e.jsx(o,{name:"Labo",price:t(s.lab),period:"/ an",desc:"Palier de licence Entreprise, pour les groupes de recherche et laboratoires.",features:["Tout Pro","Distances de code jusqu’à 63","Support prioritaire avec SLA","Appel d’intégration de 2 h","Un rapport de validation (valeur 5 000 $)"],ctaLabel:"Acheter Labo",ctaHref:i.lab}),e.jsx(o,{name:"Entreprise & OEM",price:`${s.enterpriseFrom/1e3} k$+`,period:"/ an",desc:"Redistribution, SaaS, OEM et conditions sur mesure.",accent:"gold",features:["Contrat signé, conditions sur mesure","SaaS et API offertes aux clients","OEM et regroupement matériel","Ingénieur de support attitré"],ctaLabel:"Contacter l’équipe commerciale",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center space-y-2",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Pro facturé à l’année : ",e.jsxs("a",{href:i.proAnnual,className:"text-cyan-400 hover:underline",rel:"noopener",children:[t(s.proAnnual)," / an"]}),"."," ","Vous préférez l’acheter définitivement ? ",e.jsx("a",{href:i.proPerpetual,className:"text-cyan-400 hover:underline",rel:"noopener",children:e.jsxs("strong",{children:["Pro Perpétuel : ",t(s.proPerpetual)," paiement unique"]})})," ","(toutes les versions 1.x, 12 mois de support)."]})})]}),e.jsxs("div",{ref:r=>a(r,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"3 750 $ paiement unique · Livraison en 10-20 jours"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"La voie rapide recommandée pour les équipes qui veulent une preuve immédiate et défendable de la valeur sur leur flux de travail. Nous exécutons jusqu’à 3 charges de référence standard avec QECTOR et livrons des lots d’artefacts reproductibles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Inclut une licence Pilote de ",s.pilotDays," jours"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Analyse comparative vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Appel de révision des résultats de 60 minutes"]})]}),e.jsx(l,{to:"/contact",className:"btn-gold block text-center",children:"Demander un sprint de validation"}),e.jsxs("p",{className:"text-xs text-gold-200/60 mt-6",children:["Seulement la licence et un appel ? Le ",e.jsxs("a",{href:i.pilot,className:"text-gold-400 hover:underline",rel:"noopener",children:["Pilote de ",s.pilotDays," jours est à ",t(s.pilot)]})," :"," ","un appel d’intégration d’une heure et une note de validation écrite, crédités à 100 % sur Labo dans les 90 jours."]})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activer votre licence"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Tout le monde installe la même wheel depuis PyPI : il n’existe pas de build commercial séparé. Votre jeton déverrouille les fonctionnalités payantes : décodage GPU (CUDA/OpenCL) par lots sur tous les forfaits payants, et distances de code jusqu’à 63 sur Labo et Entreprise. Le décodage CPU n’est jamais bloqué; les plafonds de distance ne s’appliquent que si QECTOR_ENFORCE=1."}),e.jsx(p,{language:"bash",className:"mb-6",code:`pip install --upgrade "qector-decoder-v3>=1.0.1,<2" -export QECTOR_LICENSE_KEY="" -export QECTOR_LICENSE="" - -# Vérifier hors ligne : affiche Pro ou Enterprise -python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Les jetons sont vérifiés hors ligne contre une clé publique embarquée dans le paquet : aucun serveur de licence, aucun appel maison, fonctionne complètement hors réseau."})]})]}),e.jsxs("div",{ref:r=>a(r,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Pourquoi licencier QECTOR ?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Gratuit (source disponible)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licencié (commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Usage de recherche non commerciale seulement"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Droits internes de R&D et de production"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Support communautaire (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Support courriel prioritaire et SLA"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (gratuit)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Harnais de reproduction d’artefacts de validation"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Licence PolyForm Noncommercial"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Contrat de licence commerciale écrit"})]})]})]})})})]}),e.jsxs("div",{ref:r=>a(r,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Foire aux questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:h.map((r,n)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:r.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:r.a})]},n))})]}),e.jsxs("div",{ref:r=>a(r,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"Ce qui n’est pas inclus :"})," sauf mention explicite, aucun palier n’inclut la redistribution, l’OEM, l’hébergement SaaS ni les droits de sous-licence. Contactez notre équipe commerciale pour des conditions sur mesure."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Approvisionnement :"})," tous les prix sont en USD; les taxes applicables sont ajoutées au paiement. Les forfaits mensuels et annuels se renouvellent automatiquement jusqu’à annulation, avec un rappel avant chaque renouvellement annuel."," ","Satisfait ou remboursé ",s.refundDays," jours sur votre premier paiement de tout forfait. Les jetons sont envoyés par courriel en quelques minutes."]}),e.jsxs("p",{children:["En achetant, vous acceptez le ",e.jsx(l,{to:"/fr/license-agreement",className:"text-cyan-300 hover:underline",children:"Contrat de licence commerciale"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-x-6 gap-y-2 pt-4",children:[e.jsx(l,{to:"/fr/license-agreement",className:"hover:text-cyan-300 transition-colors",children:"Contrat de licence"}),e.jsx(l,{to:"/fr/refund",className:"hover:text-cyan-300 transition-colors",children:"Politique de remboursement"}),e.jsx("a",{href:"https://billing.stripe.com/p/login/7sY9AVdwlgoyfse9bYeUU00",target:"_blank",rel:"noopener noreferrer",className:"hover:text-cyan-300 transition-colors",children:"Gérer l’abonnement"}),e.jsx(l,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contacter l’ingénierie"})]})]})]})]})}export{C as default}; diff --git a/assets/PricingFR-C6aJLaoB.js b/assets/PricingFR-C6aJLaoB.js deleted file mode 100644 index 1ab306b6..00000000 --- a/assets/PricingFR-C6aJLaoB.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as m,j as e}from"./vendor-react-BiHfrq0e.js";import{S as x,P as r,c as t,L as i,C as p}from"./index-BN-vOeL2.js";import{T as h,P as l,a as f}from"./TrialForm-BIjatKya.js";import{N as b}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as g}from"./vendor-gsap-a3sj5zmn.js";import{G as j}from"./vendor-ui-B0ssGG4c.js";import{L as o}from"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";c.registerPlugin(g);function S(){const d=m.useRef([]);m.useEffect(()=>{const s=document.createElement("script");if(s.src="https://js.stripe.com/v3/buy-button.js",s.async=!0,document.body.appendChild(s),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const n=c.context(()=>{d.current.filter(Boolean).forEach(u=>{c.fromTo(u,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:u,start:"top 85%",once:!0}})})});return()=>{n.revert(),s.parentNode===document.body&&document.body.removeChild(s)}},[]);const a=(s,n)=>{s&&(d.current[n]=s)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"Tarifs · QECTOR",description:`Licences commerciales QECTOR Decoder v3. Essai commercial gratuit de ${r.trialDays} jours. Pro dès ${t(r.proMonthly)}/mois, Équipe ${t(r.team)}/an, Labo ${t(r.lab)}/an, Entreprise et OEM dès ${t(r.enterpriseFrom)}/an. Satisfait ou remboursé ${r.refundDays} jours. Prix en USD; taxes ajoutées au paiement s’il y a lieu.`,lang:"fr",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Licences commerciales claires et transparentes"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(b,{text:"Licenciez QECTOR pour la production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:["Gratuit pour la recherche académique et non commerciale. Pour un usage commercial, commencez un essai gratuit de ",r.trialDays," jours, puis choisissez un forfait : annulable en tout temps, satisfait ou remboursé ",r.refundDays," jours sur votre premier paiement."]})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsx("div",{ref:s=>a(s,0),id:"trial",className:"scroll-mt-32",children:e.jsx("div",{className:"relative p-1 rounded-3xl bg-gradient-to-r from-cyan-400 via-cyan-500 to-gold-400 animate-gradient-xy",children:e.jsxs("div",{className:"bg-void/90 backdrop-blur-xl rounded-[23px] p-8 md:p-12 border border-white/5 flex flex-col md:flex-row items-center justify-between gap-8",children:[e.jsxs("div",{className:"flex-1 text-left",children:[e.jsx("div",{className:"inline-block px-3 py-1 bg-cyan-500/20 text-cyan-300 text-xs font-bold uppercase tracking-wider rounded-full mb-4",children:"Gratuit · Sans carte · Jeton par courriel"}),e.jsxs("h2",{className:"text-3xl md:text-4xl font-extrabold text-white mb-4",children:["Essai commercial de ",r.trialDays," jours"]}),e.jsx("p",{className:"text-secondary text-base leading-relaxed max-w-xl",children:"Évaluez QECTOR sur vos propres charges de travail avec des droits d’évaluation commerciale complets : toutes les familles de décodeurs, décodage par lots CPU et GPU (CUDA/OpenCL), vérification de licence hors ligne."}),e.jsxs("div",{className:"mt-6 flex flex-wrap gap-4 text-sm text-cyan-100/70",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Jusqu’à 5 utilisateurs internes"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Expire de lui-même : rien à annuler"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Un essai par adresse par année"]})]})]}),e.jsx("div",{className:"w-full md:w-auto flex flex-col items-center",children:e.jsx(h,{lang:"fr"})})]})})}),e.jsxs("div",{ref:s=>a(s,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Forfaits commerciaux"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Droits de production pour usage interne. Les forfaits se renouvellent automatiquement jusqu’à annulation."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(j,{size:14,className:"shrink-0","aria-hidden":"true"})," ",r.academicDiscountPct," % de rabais sur Équipe et Labo pour les projets universitaires financés par l’industrie. La recherche non commerciale est gratuite."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsx(l,{name:"Pro",price:t(r.proMonthly),period:"/ mois",desc:`Un utilisateur nommé. Ou ${t(r.proAnnual)}/an (2 mois offerts).`,features:["Usage commercial interne","Toutes les familles de décodeurs","Lots CPU + GPU (CUDA/OpenCL)","Support courriel (2 jours ouvrables)"],ctaLabel:"Acheter au mois",ctaHref:i.proMonthly}),e.jsx(l,{name:"Équipe",price:t(r.team),period:"/ an",desc:"Jusqu’à 10 utilisateurs nommés.",featured:!0,featuredLabel:"Idéal pour les startups",features:["Tout Pro","Jusqu’à 10 utilisateurs nommés","Support prioritaire (1 jour ouvrable)","Appel d’intégration de 2 h"],ctaLabel:"Acheter Équipe",ctaHref:i.team}),e.jsx(l,{name:"Labo",price:t(r.lab),period:"/ an",desc:"Jusqu’à 25 utilisateurs nommés. Palier de licence Entreprise.",features:["Tout Équipe","Distances de code jusqu’à 63","SLA de support","Un rapport de validation (valeur 5 000 $)"],ctaLabel:"Acheter Labo",ctaHref:i.lab}),e.jsx(l,{name:"Entreprise & OEM",price:`${r.enterpriseFrom/1e3} k$+`,period:"/ an",desc:"Redistribution, SaaS, OEM et conditions sur mesure.",accent:"gold",features:["Sièges illimités","SaaS et API offertes aux clients","OEM et regroupement matériel","Ingénieur de support attitré"],ctaLabel:"Contacter l’équipe commerciale",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center space-y-2",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Pro facturé à l’année : ",e.jsxs("a",{href:i.proAnnual,className:"text-cyan-400 hover:underline",rel:"noopener",children:[t(r.proAnnual)," / an"]}),"."," ","Vous préférez l’acheter définitivement ? ",e.jsx("a",{href:i.proPerpetual,className:"text-cyan-400 hover:underline",rel:"noopener",children:e.jsxs("strong",{children:["Pro Perpétuel : ",t(r.proPerpetual)," paiement unique"]})})," ","(toutes les versions 3.x, 12 mois de support)."]})})]}),e.jsxs("div",{ref:s=>a(s,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"3 750 $ paiement unique · Livraison en 10-20 jours"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"La voie rapide recommandée pour les équipes qui veulent une preuve immédiate et défendable de la valeur sur leur flux de travail. Nous exécutons jusqu’à 3 charges de référence standard avec QECTOR et livrons des lots d’artefacts reproductibles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Inclut une licence Pilote de ",r.pilotDays," jours"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Analyse comparative vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Appel de révision des résultats de 60 minutes"]})]}),e.jsx(o,{to:"/contact",className:"btn-gold block text-center",children:"Demander un sprint de validation"}),e.jsxs("p",{className:"text-xs text-gold-200/60 mt-6",children:["Seulement la licence et un appel ? Le ",e.jsxs("a",{href:i.pilot,className:"text-gold-400 hover:underline",rel:"noopener",children:["Pilote de ",r.pilotDays," jours est à ",t(r.pilot)]})," :"," ","un appel d’intégration d’une heure et une note de validation écrite, crédités à 100 % sur Équipe ou Labo dans les 90 jours."]})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activer votre licence"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Tout le monde installe la même wheel depuis PyPI : il n’existe pas de build commercial séparé. Votre jeton déverrouille les fonctionnalités payantes : décodage GPU (CUDA/OpenCL) par lots sur tous les forfaits payants, et distances de code jusqu’à 63 sur Labo et Entreprise. Le décodage CPU n’est jamais bloqué; les plafonds de distance ne s’appliquent que si QECTOR_ENFORCE=1."}),e.jsx(p,{language:"bash",className:"mb-6",code:`pip install --upgrade "qector-decoder-v3>=1.0,<2" -export QECTOR_LICENSE_KEY="" -export QECTOR_LICENSE="" - -# Vérifier hors ligne : affiche Pro ou Enterprise -python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Les jetons sont vérifiés hors ligne contre une clé publique embarquée dans le paquet : aucun serveur de licence, aucun appel maison, fonctionne complètement hors réseau."})]})]}),e.jsxs("div",{ref:s=>a(s,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Pourquoi licencier QECTOR ?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Gratuit (source disponible)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licencié (commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Usage de recherche non commerciale seulement"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Droits internes de R&D et de production"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Support communautaire (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Support courriel prioritaire et SLA"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (gratuit)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Harnais de reproduction d’artefacts de validation"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Licence PolyForm Noncommercial"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Contrat de licence commerciale écrit"})]})]})]})})})]}),e.jsxs("div",{ref:s=>a(s,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Foire aux questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:f.map((s,n)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:s.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.a})]},n))})]}),e.jsxs("div",{ref:s=>a(s,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"Ce qui n’est pas inclus :"})," sauf mention explicite, aucun palier n’inclut la redistribution, l’OEM, l’hébergement SaaS ni les droits de sous-licence. Contactez notre équipe commerciale pour des conditions sur mesure."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Approvisionnement :"})," tous les prix sont en USD; les taxes applicables sont ajoutées au paiement. Les forfaits mensuels et annuels se renouvellent automatiquement jusqu’à annulation, avec un rappel avant chaque renouvellement annuel."," ","Satisfait ou remboursé ",r.refundDays," jours sur votre premier paiement de tout forfait. Les jetons sont envoyés par courriel en quelques minutes."]}),e.jsxs("div",{className:"flex justify-center gap-6 pt-4",children:[e.jsx(o,{to:"/refund",className:"hover:text-cyan-300 transition-colors",children:"Politique de remboursement"}),e.jsx(o,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contacter l’ingénierie"})]})]})]})]})}export{S as default}; diff --git a/assets/PricingFR-C8Es19li.js b/assets/PricingFR-C8Es19li.js deleted file mode 100644 index d4535883..00000000 --- a/assets/PricingFR-C8Es19li.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as m,j as e}from"./vendor-react-BiHfrq0e.js";import{S as x,P as r,c as t,L as i,C as p}from"./index-BUYYSLdX.js";import{P as o,a as h}from"./faqData-CHsSn8s2.js";import{N as f}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as b}from"./vendor-gsap-a3sj5zmn.js";import{G as g}from"./vendor-ui-B0ssGG4c.js";import{L as l}from"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";c.registerPlugin(b);function C(){const d=m.useRef([]);m.useEffect(()=>{const s=document.createElement("script");if(s.src="https://js.stripe.com/v3/buy-button.js",s.async=!0,document.body.appendChild(s),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const n=c.context(()=>{d.current.filter(Boolean).forEach(u=>{c.fromTo(u,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:u,start:"top 85%",once:!0}})})});return()=>{n.revert(),s.parentNode===document.body&&document.body.removeChild(s)}},[]);const a=(s,n)=>{s&&(d.current[n]=s)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"Tarifs · QECTOR",description:`Licences commerciales QECTOR Decoder v3. Pro dès ${t(r.proMonthly)}/mois, Labo ${t(r.lab)}/an, Entreprise et OEM dès ${t(r.enterpriseFrom)}/an. Satisfait ou remboursé ${r.refundDays} jours. Prix en USD; taxes ajoutées au paiement s’il y a lieu.`,lang:"fr",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Licences commerciales claires et transparentes"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(f,{text:"Licenciez QECTOR pour la production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:["Gratuit pour la recherche académique et non commerciale. Pour un usage commercial, choisissez un forfait : licences vérifiées hors ligne, entièrement hors réseau, annulables en tout temps, satisfait ou remboursé ",r.refundDays," jours sur votre premier paiement."]})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsxs("div",{ref:s=>a(s,0),className:"grid grid-cols-1 sm:grid-cols-3 gap-4 text-center",children:[e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Hors réseau"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Jeton signé, vérifié hors ligne. Aucun serveur de licence, aucun appel réseau."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsxs("p",{className:"text-cyan-300 font-bold",children:["Remboursé ",r.refundDays," jours"]}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Remboursement complet de votre premier paiement de tout forfait, sans question."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Annulable en tout temps"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Votre licence reste valide jusqu’à la fin de la période payée."})]})]}),e.jsxs("div",{ref:s=>a(s,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Forfaits commerciaux"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Droits de production pour l’usage interne de votre organisation. Les abonnements se renouvellent automatiquement jusqu’à annulation."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(g,{size:14,className:"shrink-0","aria-hidden":"true"})," ",r.academicDiscountPct," % de rabais sur Labo pour les établissements d’enseignement. La recherche non commerciale est gratuite."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 max-w-5xl mx-auto",children:[e.jsx(o,{name:"Pro",price:t(r.proMonthly),period:"/ mois",desc:`Ou ${t(r.proAnnual)}/an (2 mois offerts). Palier de licence Pro.`,featured:!0,featuredLabel:"Le plus populaire",features:["Usage commercial interne","Toutes les familles de décodeurs","Lots CPU + GPU (CUDA/OpenCL)","Distances de code jusqu’à 19","Support courriel (2 jours ouvrables)"],ctaLabel:"Acheter au mois",ctaHref:i.proMonthly}),e.jsx(o,{name:"Labo",price:t(r.lab),period:"/ an",desc:"Palier de licence Entreprise, pour les groupes de recherche et laboratoires.",features:["Tout Pro","Distances de code jusqu’à 63","Support prioritaire avec SLA","Appel d’intégration de 2 h","Un rapport de validation (valeur 5 000 $)"],ctaLabel:"Acheter Labo",ctaHref:i.lab}),e.jsx(o,{name:"Entreprise & OEM",price:`${r.enterpriseFrom/1e3} k$+`,period:"/ an",desc:"Redistribution, SaaS, OEM et conditions sur mesure.",accent:"gold",features:["Contrat signé, conditions sur mesure","SaaS et API offertes aux clients","OEM et regroupement matériel","Ingénieur de support attitré"],ctaLabel:"Contacter l’équipe commerciale",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center space-y-2",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Pro facturé à l’année : ",e.jsxs("a",{href:i.proAnnual,className:"text-cyan-400 hover:underline",rel:"noopener",children:[t(r.proAnnual)," / an"]}),"."," ","Vous préférez l’acheter définitivement ? ",e.jsx("a",{href:i.proPerpetual,className:"text-cyan-400 hover:underline",rel:"noopener",children:e.jsxs("strong",{children:["Pro Perpétuel : ",t(r.proPerpetual)," paiement unique"]})})," ","(toutes les versions 3.x, 12 mois de support)."]})})]}),e.jsxs("div",{ref:s=>a(s,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"3 750 $ paiement unique · Livraison en 10-20 jours"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"La voie rapide recommandée pour les équipes qui veulent une preuve immédiate et défendable de la valeur sur leur flux de travail. Nous exécutons jusqu’à 3 charges de référence standard avec QECTOR et livrons des lots d’artefacts reproductibles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Inclut une licence Pilote de ",r.pilotDays," jours"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Analyse comparative vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Appel de révision des résultats de 60 minutes"]})]}),e.jsx(l,{to:"/contact",className:"btn-gold block text-center",children:"Demander un sprint de validation"}),e.jsxs("p",{className:"text-xs text-gold-200/60 mt-6",children:["Seulement la licence et un appel ? Le ",e.jsxs("a",{href:i.pilot,className:"text-gold-400 hover:underline",rel:"noopener",children:["Pilote de ",r.pilotDays," jours est à ",t(r.pilot)]})," :"," ","un appel d’intégration d’une heure et une note de validation écrite, crédités à 100 % sur Labo dans les 90 jours."]})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activer votre licence"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Tout le monde installe la même wheel depuis PyPI : il n’existe pas de build commercial séparé. Votre jeton déverrouille les fonctionnalités payantes : décodage GPU (CUDA/OpenCL) par lots sur tous les forfaits payants, et distances de code jusqu’à 63 sur Labo et Entreprise. Le décodage CPU n’est jamais bloqué; les plafonds de distance ne s’appliquent que si QECTOR_ENFORCE=1."}),e.jsx(p,{language:"bash",className:"mb-6",code:`pip install --upgrade "qector-decoder-v3>=1.0,<2" -export QECTOR_LICENSE_KEY="" -export QECTOR_LICENSE="" - -# Vérifier hors ligne : affiche Pro ou Enterprise -python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Les jetons sont vérifiés hors ligne contre une clé publique embarquée dans le paquet : aucun serveur de licence, aucun appel maison, fonctionne complètement hors réseau."})]})]}),e.jsxs("div",{ref:s=>a(s,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Pourquoi licencier QECTOR ?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Gratuit (source disponible)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licencié (commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Usage de recherche non commerciale seulement"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Droits internes de R&D et de production"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Support communautaire (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Support courriel prioritaire et SLA"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (gratuit)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Harnais de reproduction d’artefacts de validation"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Licence PolyForm Noncommercial"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Contrat de licence commerciale écrit"})]})]})]})})})]}),e.jsxs("div",{ref:s=>a(s,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Foire aux questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:h.map((s,n)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:s.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.a})]},n))})]}),e.jsxs("div",{ref:s=>a(s,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"Ce qui n’est pas inclus :"})," sauf mention explicite, aucun palier n’inclut la redistribution, l’OEM, l’hébergement SaaS ni les droits de sous-licence. Contactez notre équipe commerciale pour des conditions sur mesure."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Approvisionnement :"})," tous les prix sont en USD; les taxes applicables sont ajoutées au paiement. Les forfaits mensuels et annuels se renouvellent automatiquement jusqu’à annulation, avec un rappel avant chaque renouvellement annuel."," ","Satisfait ou remboursé ",r.refundDays," jours sur votre premier paiement de tout forfait. Les jetons sont envoyés par courriel en quelques minutes."]}),e.jsxs("div",{className:"flex justify-center gap-6 pt-4",children:[e.jsx(l,{to:"/refund",className:"hover:text-cyan-300 transition-colors",children:"Politique de remboursement"}),e.jsx(l,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contacter l’ingénierie"})]})]})]})]})}export{C as default}; diff --git a/assets/PricingFR-CtzmHxI3.js b/assets/PricingFR-CtzmHxI3.js deleted file mode 100644 index d4f3c77f..00000000 --- a/assets/PricingFR-CtzmHxI3.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as m,j as e}from"./vendor-react-BiHfrq0e.js";import{S as x,P as r,c as t,L as i,C as p}from"./index-CxWP17m6.js";import{P as o,a as h}from"./faqData-CHsSn8s2.js";import{N as f}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as b}from"./vendor-gsap-a3sj5zmn.js";import{G as g}from"./vendor-ui-B0ssGG4c.js";import{L as l}from"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";c.registerPlugin(b);function C(){const d=m.useRef([]);m.useEffect(()=>{const s=document.createElement("script");if(s.src="https://js.stripe.com/v3/buy-button.js",s.async=!0,document.body.appendChild(s),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const n=c.context(()=>{d.current.filter(Boolean).forEach(u=>{c.fromTo(u,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:u,start:"top 85%",once:!0}})})});return()=>{n.revert(),s.parentNode===document.body&&document.body.removeChild(s)}},[]);const a=(s,n)=>{s&&(d.current[n]=s)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"Tarifs · QECTOR",description:`Licences commerciales QECTOR Decoder v3. Pro dès ${t(r.proMonthly)}/mois, Labo ${t(r.lab)}/an, Entreprise et OEM dès ${t(r.enterpriseFrom)}/an. Satisfait ou remboursé ${r.refundDays} jours. Prix en USD; taxes ajoutées au paiement s’il y a lieu.`,lang:"fr",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Licences commerciales claires et transparentes"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(f,{text:"Licenciez QECTOR pour la production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:["Gratuit pour la recherche académique et non commerciale. Pour un usage commercial, choisissez un forfait : licences vérifiées hors ligne, entièrement hors réseau, annulables en tout temps, satisfait ou remboursé ",r.refundDays," jours sur votre premier paiement."]})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsxs("div",{ref:s=>a(s,0),className:"grid grid-cols-1 sm:grid-cols-3 gap-4 text-center",children:[e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Hors réseau"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Jeton signé, vérifié hors ligne. Aucun serveur de licence, aucun appel réseau."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsxs("p",{className:"text-cyan-300 font-bold",children:["Remboursé ",r.refundDays," jours"]}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Remboursement complet de votre premier paiement de tout forfait, sans question."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Annulable en tout temps"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Votre licence reste valide jusqu’à la fin de la période payée."})]})]}),e.jsxs("div",{ref:s=>a(s,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Forfaits commerciaux"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Droits de production pour l’usage interne de votre organisation. Les abonnements se renouvellent automatiquement jusqu’à annulation."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(g,{size:14,className:"shrink-0","aria-hidden":"true"})," ",r.academicDiscountPct," % de rabais sur Labo pour les établissements d’enseignement. La recherche non commerciale est gratuite."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 max-w-5xl mx-auto",children:[e.jsx(o,{name:"Pro",price:t(r.proMonthly),period:"/ mois",desc:`Ou ${t(r.proAnnual)}/an (2 mois offerts). Palier de licence Pro.`,featured:!0,featuredLabel:"Le plus populaire",features:["Usage commercial interne","Toutes les familles de décodeurs","Lots CPU + GPU (CUDA/OpenCL)","Distances de code jusqu’à 19","Support courriel (2 jours ouvrables)"],ctaLabel:"Acheter au mois",ctaHref:i.proMonthly}),e.jsx(o,{name:"Labo",price:t(r.lab),period:"/ an",desc:"Palier de licence Entreprise, pour les groupes de recherche et laboratoires.",features:["Tout Pro","Distances de code jusqu’à 63","Support prioritaire avec SLA","Appel d’intégration de 2 h","Un rapport de validation (valeur 5 000 $)"],ctaLabel:"Acheter Labo",ctaHref:i.lab}),e.jsx(o,{name:"Entreprise & OEM",price:`${r.enterpriseFrom/1e3} k$+`,period:"/ an",desc:"Redistribution, SaaS, OEM et conditions sur mesure.",accent:"gold",features:["Contrat signé, conditions sur mesure","SaaS et API offertes aux clients","OEM et regroupement matériel","Ingénieur de support attitré"],ctaLabel:"Contacter l’équipe commerciale",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center space-y-2",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Pro facturé à l’année : ",e.jsxs("a",{href:i.proAnnual,className:"text-cyan-400 hover:underline",rel:"noopener",children:[t(r.proAnnual)," / an"]}),"."," ","Vous préférez l’acheter définitivement ? ",e.jsx("a",{href:i.proPerpetual,className:"text-cyan-400 hover:underline",rel:"noopener",children:e.jsxs("strong",{children:["Pro Perpétuel : ",t(r.proPerpetual)," paiement unique"]})})," ","(toutes les versions 3.x, 12 mois de support)."]})})]}),e.jsxs("div",{ref:s=>a(s,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"3 750 $ paiement unique · Livraison en 10-20 jours"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"La voie rapide recommandée pour les équipes qui veulent une preuve immédiate et défendable de la valeur sur leur flux de travail. Nous exécutons jusqu’à 3 charges de référence standard avec QECTOR et livrons des lots d’artefacts reproductibles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Inclut une licence Pilote de ",r.pilotDays," jours"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Analyse comparative vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Appel de révision des résultats de 60 minutes"]})]}),e.jsx(l,{to:"/contact",className:"btn-gold block text-center",children:"Demander un sprint de validation"}),e.jsxs("p",{className:"text-xs text-gold-200/60 mt-6",children:["Seulement la licence et un appel ? Le ",e.jsxs("a",{href:i.pilot,className:"text-gold-400 hover:underline",rel:"noopener",children:["Pilote de ",r.pilotDays," jours est à ",t(r.pilot)]})," :"," ","un appel d’intégration d’une heure et une note de validation écrite, crédités à 100 % sur Labo dans les 90 jours."]})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activer votre licence"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Tout le monde installe la même wheel depuis PyPI : il n’existe pas de build commercial séparé. Votre jeton déverrouille les fonctionnalités payantes : décodage GPU (CUDA/OpenCL) par lots sur tous les forfaits payants, et distances de code jusqu’à 63 sur Labo et Entreprise. Le décodage CPU n’est jamais bloqué; les plafonds de distance ne s’appliquent que si QECTOR_ENFORCE=1."}),e.jsx(p,{language:"bash",className:"mb-6",code:`pip install --upgrade "qector-decoder-v3>=1.0,<2" -export QECTOR_LICENSE_KEY="" -export QECTOR_LICENSE="" - -# Vérifier hors ligne : affiche Pro ou Enterprise -python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Les jetons sont vérifiés hors ligne contre une clé publique embarquée dans le paquet : aucun serveur de licence, aucun appel maison, fonctionne complètement hors réseau."})]})]}),e.jsxs("div",{ref:s=>a(s,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Pourquoi licencier QECTOR ?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Gratuit (source disponible)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licencié (commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Usage de recherche non commerciale seulement"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Droits internes de R&D et de production"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Support communautaire (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Support courriel prioritaire et SLA"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (gratuit)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Harnais de reproduction d’artefacts de validation"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Licence PolyForm Noncommercial"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Contrat de licence commerciale écrit"})]})]})]})})})]}),e.jsxs("div",{ref:s=>a(s,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Foire aux questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:h.map((s,n)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:s.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.a})]},n))})]}),e.jsxs("div",{ref:s=>a(s,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"Ce qui n’est pas inclus :"})," sauf mention explicite, aucun palier n’inclut la redistribution, l’OEM, l’hébergement SaaS ni les droits de sous-licence. Contactez notre équipe commerciale pour des conditions sur mesure."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Approvisionnement :"})," tous les prix sont en USD; les taxes applicables sont ajoutées au paiement. Les forfaits mensuels et annuels se renouvellent automatiquement jusqu’à annulation, avec un rappel avant chaque renouvellement annuel."," ","Satisfait ou remboursé ",r.refundDays," jours sur votre premier paiement de tout forfait. Les jetons sont envoyés par courriel en quelques minutes."]}),e.jsxs("div",{className:"flex justify-center gap-6 pt-4",children:[e.jsx(l,{to:"/refund",className:"hover:text-cyan-300 transition-colors",children:"Politique de remboursement"}),e.jsx(l,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contacter l’ingénierie"})]})]})]})]})}export{C as default}; diff --git a/assets/PricingFR-D89gbHS7.js b/assets/PricingFR-D89gbHS7.js deleted file mode 100644 index f28a364b..00000000 --- a/assets/PricingFR-D89gbHS7.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as u,j as e}from"./vendor-react-BiHfrq0e.js";import{S as x,P as r,c as t,L as i,C as p}from"./index-DlmjLVYe.js";import{T as h,P as l,a as f}from"./TrialForm-BEDfCuvx.js";import{N as b}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as g}from"./vendor-gsap-a3sj5zmn.js";import{G as j}from"./vendor-ui-B0ssGG4c.js";import{L as o}from"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";c.registerPlugin(g);function S(){const d=u.useRef([]);u.useEffect(()=>{const s=document.createElement("script");if(s.src="https://js.stripe.com/v3/buy-button.js",s.async=!0,document.body.appendChild(s),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const n=c.context(()=>{d.current.filter(Boolean).forEach(m=>{c.fromTo(m,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:m,start:"top 85%",once:!0}})})});return()=>{n.revert(),s.parentNode===document.body&&document.body.removeChild(s)}},[]);const a=(s,n)=>{s&&(d.current[n]=s)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"Tarifs · QECTOR",description:`Licences commerciales QECTOR Decoder v3. Essai commercial gratuit de ${r.trialDays} jours. Pro dès ${t(r.proMonthly)}/mois, Équipe ${t(r.team)}/an, Labo ${t(r.lab)}/an, Entreprise et OEM dès ${t(r.enterpriseFrom)}/an. Satisfait ou remboursé ${r.refundDays} jours. Prix en USD; taxes ajoutées au paiement s’il y a lieu.`,lang:"fr",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Licences commerciales claires et transparentes"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(b,{text:"Licenciez QECTOR pour la production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:["Gratuit pour la recherche académique et non commerciale. Pour un usage commercial, commencez un essai gratuit de ",r.trialDays," jours, puis choisissez un forfait : annulable en tout temps, satisfait ou remboursé ",r.refundDays," jours sur votre premier paiement."]})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsx("div",{ref:s=>a(s,0),id:"trial",className:"scroll-mt-32",children:e.jsx("div",{className:"relative p-1 rounded-3xl bg-gradient-to-r from-cyan-400 via-cyan-500 to-gold-400 animate-gradient-xy",children:e.jsxs("div",{className:"bg-void/90 backdrop-blur-xl rounded-[23px] p-8 md:p-12 border border-white/5 flex flex-col md:flex-row items-center justify-between gap-8",children:[e.jsxs("div",{className:"flex-1 text-left",children:[e.jsx("div",{className:"inline-block px-3 py-1 bg-cyan-500/20 text-cyan-300 text-xs font-bold uppercase tracking-wider rounded-full mb-4",children:"Gratuit · Sans carte · Jeton par courriel"}),e.jsxs("h2",{className:"text-3xl md:text-4xl font-extrabold text-white mb-4",children:["Essai commercial de ",r.trialDays," jours"]}),e.jsx("p",{className:"text-secondary text-base leading-relaxed max-w-xl",children:"Évaluez QECTOR sur vos propres charges de travail avec des droits d’évaluation commerciale complets : toutes les familles de décodeurs, décodage par lots CPU et GPU (CUDA/OpenCL), vérification de licence hors ligne."}),e.jsxs("div",{className:"mt-6 flex flex-wrap gap-4 text-sm text-cyan-100/70",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Jusqu’à 5 utilisateurs internes"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Expire de lui-même : rien à annuler"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Un essai par adresse par année"]})]})]}),e.jsx("div",{className:"w-full md:w-auto flex flex-col items-center",children:e.jsx(h,{lang:"fr"})})]})})}),e.jsxs("div",{ref:s=>a(s,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Forfaits commerciaux"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Droits de production pour usage interne. Les forfaits se renouvellent automatiquement jusqu’à annulation."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(j,{size:14,className:"shrink-0","aria-hidden":"true"})," ",r.academicDiscountPct," % de rabais sur Équipe et Labo pour les établissements d’enseignement. La recherche non commerciale est gratuite."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsx(l,{name:"Pro",price:t(r.proMonthly),period:"/ mois",desc:`Un utilisateur nommé. Ou ${t(r.proAnnual)}/an (2 mois offerts).`,features:["Usage commercial interne","Toutes les familles de décodeurs","Lots CPU + GPU (CUDA/OpenCL)","Support courriel (2 jours ouvrables)"],ctaLabel:"Acheter au mois",ctaHref:i.proMonthly}),e.jsx(l,{name:"Équipe",price:t(r.team),period:"/ an",desc:"Jusqu’à 10 utilisateurs nommés.",featured:!0,featuredLabel:"Idéal pour les startups",features:["Tout Pro","Jusqu’à 10 utilisateurs nommés","Support prioritaire (1 jour ouvrable)","Appel d’intégration de 2 h"],ctaLabel:"Acheter Équipe",ctaHref:i.team}),e.jsx(l,{name:"Labo",price:t(r.lab),period:"/ an",desc:"Jusqu’à 25 utilisateurs nommés. Palier de licence Entreprise.",features:["Tout Équipe","Distances de code jusqu’à 63","SLA de support","Un rapport de validation (valeur 5 000 $)"],ctaLabel:"Acheter Labo",ctaHref:i.lab}),e.jsx(l,{name:"Entreprise & OEM",price:`${r.enterpriseFrom/1e3} k$+`,period:"/ an",desc:"Redistribution, SaaS, OEM et conditions sur mesure.",accent:"gold",features:["Sièges illimités","SaaS et API offertes aux clients","OEM et regroupement matériel","Ingénieur de support attitré"],ctaLabel:"Contacter l’équipe commerciale",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center space-y-2",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Pro facturé à l’année : ",e.jsxs("a",{href:i.proAnnual,className:"text-cyan-400 hover:underline",rel:"noopener",children:[t(r.proAnnual)," / an"]}),"."," ","Vous préférez l’acheter définitivement ? ",e.jsx("a",{href:i.proPerpetual,className:"text-cyan-400 hover:underline",rel:"noopener",children:e.jsxs("strong",{children:["Pro Perpétuel : ",t(r.proPerpetual)," paiement unique"]})})," ","(toutes les versions 3.x, 12 mois de support)."]})})]}),e.jsxs("div",{ref:s=>a(s,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"3 750 $ paiement unique · Livraison en 10-20 jours"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"La voie rapide recommandée pour les équipes qui veulent une preuve immédiate et défendable de la valeur sur leur flux de travail. Nous exécutons jusqu’à 3 charges de référence standard avec QECTOR et livrons des lots d’artefacts reproductibles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Inclut une licence Pilote de ",r.pilotDays," jours"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Analyse comparative vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Appel de révision des résultats de 60 minutes"]})]}),e.jsx(o,{to:"/contact",className:"btn-gold block text-center",children:"Demander un sprint de validation"}),e.jsxs("p",{className:"text-xs text-gold-200/60 mt-6",children:["Seulement la licence et un appel ? Le ",e.jsxs("a",{href:i.pilot,className:"text-gold-400 hover:underline",rel:"noopener",children:["Pilote de ",r.pilotDays," jours est à ",t(r.pilot)]})," :"," ","un appel d’intégration d’une heure et une note de validation écrite, crédités à 100 % sur Équipe ou Labo dans les 90 jours."]})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activer votre licence"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Tout le monde installe la même wheel depuis PyPI : il n’existe pas de build commercial séparé. Votre jeton déverrouille les fonctionnalités payantes : décodage GPU (CUDA/OpenCL) par lots sur tous les forfaits payants, et distances de code jusqu’à 63 sur Labo et Entreprise. Le décodage CPU n’est jamais bloqué; les plafonds de distance ne s’appliquent que si QECTOR_ENFORCE=1."}),e.jsx(p,{language:"bash",className:"mb-6",code:`pip install --upgrade "qector-decoder-v3>=1.0,<2" -export QECTOR_LICENSE_KEY="" -export QECTOR_LICENSE="" - -# Vérifier hors ligne : affiche Pro ou Enterprise -python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Les jetons sont vérifiés hors ligne contre une clé publique embarquée dans le paquet : aucun serveur de licence, aucun appel maison, fonctionne complètement hors réseau."})]})]}),e.jsxs("div",{ref:s=>a(s,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Pourquoi licencier QECTOR ?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Gratuit (source disponible)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licencié (commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Usage de recherche non commerciale seulement"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Droits internes de R&D et de production"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Support communautaire (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Support courriel prioritaire et SLA"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (gratuit)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Harnais de reproduction d’artefacts de validation"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Licence PolyForm Noncommercial"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Contrat de licence commerciale écrit"})]})]})]})})})]}),e.jsxs("div",{ref:s=>a(s,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Foire aux questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:f.map((s,n)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:s.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.a})]},n))})]}),e.jsxs("div",{ref:s=>a(s,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"Ce qui n’est pas inclus :"})," sauf mention explicite, aucun palier n’inclut la redistribution, l’OEM, l’hébergement SaaS ni les droits de sous-licence. Contactez notre équipe commerciale pour des conditions sur mesure."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Approvisionnement :"})," tous les prix sont en USD; les taxes applicables sont ajoutées au paiement. Les forfaits mensuels et annuels se renouvellent automatiquement jusqu’à annulation, avec un rappel avant chaque renouvellement annuel."," ","Satisfait ou remboursé ",r.refundDays," jours sur votre premier paiement de tout forfait. Les jetons sont envoyés par courriel en quelques minutes."]}),e.jsxs("div",{className:"flex justify-center gap-6 pt-4",children:[e.jsx(o,{to:"/refund",className:"hover:text-cyan-300 transition-colors",children:"Politique de remboursement"}),e.jsx(o,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contacter l’ingénierie"})]})]})]})]})}export{S as default}; diff --git a/assets/PricingFR-DVFFUe5q.js b/assets/PricingFR-DVFFUe5q.js deleted file mode 100644 index a331cfe0..00000000 --- a/assets/PricingFR-DVFFUe5q.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as d,C as m}from"./index-B9kEGiWi.js";import{P as a,a as x}from"./faqData-CCPvMSkf.js";import{N as u}from"./NeuralReveal-BflyZYSb.js";import{g as l,S as p}from"./vendor-gsap-a3sj5zmn.js";import{G as h}from"./vendor-ui-B0ssGG4c.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";l.registerPlugin(p);function E(){const n=o.useRef([]);o.useEffect(()=>{const s=document.createElement("script");if(s.src="https://js.stripe.com/v3/buy-button.js",s.async=!0,document.body.appendChild(s),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=l.context(()=>{n.current.filter(Boolean).forEach(c=>{l.fromTo(c,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:c,start:"top 85%",once:!0}})})});return()=>{r.revert(),s.parentNode===document.body&&document.body.removeChild(s)}},[]);const t=(s,r)=>{s&&(n.current[r]=s)};return e.jsxs(e.Fragment,{children:[e.jsx(d,{title:"Tarifs · QECTOR",description:"Licences commerciales QECTOR Decoder v3. Évaluation de 60 jours à 499 $, entièrement créditable. Paliers de production annuels à partir de 1 299 $/an. Entreprise et OEM sur mesure. Prix en USD, hors taxes.",lang:"fr",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Licences commerciales claires et transparentes"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(u,{text:"Licenciez QECTOR pour la production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:"QECTOR Decoder v3 est disponible en source pour la recherche académique et non commerciale. Pour la R&D interne, les programmes pilotes et le déploiement commercial, choisissez une licence ci-dessous."})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsx("div",{ref:s=>t(s,0),id:"evaluation",className:"scroll-mt-32",children:e.jsx("div",{className:"relative p-1 rounded-3xl bg-gradient-to-r from-cyan-400 via-cyan-500 to-gold-400 animate-gradient-xy",children:e.jsxs("div",{className:"bg-void/90 backdrop-blur-xl rounded-[23px] p-8 md:p-12 border border-white/5 flex flex-col md:flex-row items-center justify-between gap-8",children:[e.jsxs("div",{className:"flex-1 text-left",children:[e.jsx("div",{className:"inline-block px-3 py-1 bg-cyan-500/20 text-cyan-300 text-xs font-bold uppercase tracking-wider rounded-full mb-4",children:"Libre-service · Activation instantanée"}),e.jsx("h2",{className:"text-3xl md:text-4xl font-extrabold text-white mb-4",children:"Évaluation commerciale"}),e.jsx("p",{className:"text-secondary text-base leading-relaxed max-w-xl",children:"Un pilote de 60 jours avec accès complet, conçu pour les équipes sérieuses de recherche QEC. Inclut le décodage batch CPU + CUDA, un contrat de licence écrit, un lot d’artefacts de référence et un support prioritaire."}),e.jsxs("div",{className:"mt-6 flex flex-wrap gap-4 text-sm text-cyan-100/70",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Crédit de 100 % vers une licence annuelle achetée dans les 90 jours suivant le début de votre évaluation"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Sièges internes illimités"]})]})]}),e.jsxs("div",{className:"w-full md:w-auto flex flex-col items-center",children:[e.jsx("div",{className:"text-4xl font-black text-white mb-1",children:"499 $"}),e.jsx("div",{className:"text-secondary text-sm mb-6",children:"Frais uniques"}),e.jsx("a",{href:"https://buy.stripe.com/6oU00l77Xc8ifsegEqeUU07",className:"btn-cyan w-full text-center py-4 px-8 font-bold shadow-[0_0_30px_rgba(34,211,238,0.3)]",target:"_blank",rel:"noopener noreferrer",children:"Lancer le pilote de 60 jours"})]})]})})}),e.jsxs("div",{ref:s=>t(s,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Paliers de production annuels"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Pour les équipes qui déploient QECTOR en interne ou l’intègrent à une infrastructure SaaS privée."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(h,{size:14,className:"shrink-0","aria-hidden":"true"})," 40 % de rabais académique disponible sur tous les paliers annuels. Contactez notre équipe commerciale."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsx(a,{name:"Solo / Indie",price:"1 299 $",period:"/ an",desc:"Droits de production pour un seul utilisateur nommé.",features:["Tous les décodeurs v3","Droits commerciaux de R&D","Un seul utilisateur nommé","Support courriel prioritaire"],ctaLabel:"Acheter",ctaHref:"https://buy.stripe.com/cNi9AV63TfkubbY87UeUU09"}),e.jsx(a,{name:"Startup / Growth",price:"4 499 $",period:"/ an",desc:"Jusqu’à 10 utilisateurs nommés. Flux BP-OSD/LDPC avancés.",featured:!0,featuredLabel:"Le plus populaire",features:["Jusqu’à 10 utilisateurs nommés","BP-OSD/LDPC avancé","Batch CPU + CUDA","SLA de support + intégration 2 h"],ctaLabel:"Acheter",ctaHref:"https://buy.stripe.com/14A5kF4ZP5JU7ZMdseeUU0c"}),e.jsx(a,{name:"Professional",price:"11 500 $",period:"/ an",desc:"Jusqu’à 25 utilisateurs nommés. Crédit pour le lot de rapports de validation.",features:["Jusqu’à 25 utilisateurs nommés","Tous les flux avancés","Intégration dédiée","Crédit rapport de validation"],ctaLabel:"Acheter",ctaHref:"https://buy.stripe.com/28EeVf1ND0pA6VIewieUU0d"}),e.jsx(a,{name:"Enterprise & OEM",price:"Sur mesure",period:"",desc:"Sièges illimités, versions personnalisées et distribution SaaS/OEM.",accent:"gold",features:["Qubits logiques illimités","Droits d’hébergement SaaS","Droits de regroupement OEM","Ingénieur de support dédié"],ctaLabel:"Contacter l’équipe commerciale",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Vous préférez l’acheter définitivement ? ",e.jsx("strong",{className:"text-cyan-300",children:"Solo / Indie Perpétuelle à 3 299 $ paiement unique."})," ",e.jsx(i,{to:"/contact",className:"text-cyan-400 hover:underline",children:"Contactez notre équipe commerciale pour l’activer"})]})})]}),e.jsxs("div",{ref:s=>t(s,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"3 750 $ paiement unique · Livraison en 10-20 jours"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"La voie rapide recommandée pour les équipes qui veulent une preuve immédiate et défendable de la valeur sur leur flux de travail. Nous exécutons jusqu’à 3 charges de référence standard avec QECTOR et livrons des lots d’artefacts reproductibles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Inclut l’évaluation commerciale de 60 jours"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Analyse comparative vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Appel de révision des résultats de 60 minutes"]})]}),e.jsx(i,{to:"/contact",className:"btn-gold block text-center",children:"Demander un sprint de validation"})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activer votre licence"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Tout le monde installe la même wheel depuis PyPI : il n’existe pas de build commercial séparé. Définir votre jeton de licence désactive simplement l’avis d’usage non commercial."}),e.jsx(m,{language:"bash",className:"mb-6",code:`# Usage commercial : activer avec le jeton Ed25519 -export QECTOR_LICENSE="" -export QECTOR_LICENSE_KEY="" - -# Optionnel : désactiver l'avis de licence dans les journaux CI -export QECTOR_SILENT=1`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Les jetons sont vérifiés hors ligne contre une clé publique embarquée dans le paquet : aucun serveur de licence, aucun appel maison, fonctionne complètement hors réseau."})]})]}),e.jsxs("div",{ref:s=>t(s,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Pourquoi licencier QECTOR ?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Gratuit (source disponible)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licencié (commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Usage de recherche non commerciale seulement"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Droits internes de R&D et de production"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Support communautaire (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Support courriel prioritaire et SLA"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (gratuit)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Harnais de reproduction d’artefacts de validation"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Licence PolyForm Noncommercial"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Contrat de licence commerciale écrit"})]})]})]})})})]}),e.jsxs("div",{ref:s=>t(s,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Foire aux questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:x.map((s,r)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:s.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.a})]},r))})]}),e.jsxs("div",{ref:s=>t(s,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"Ce qui n’est pas inclus :"})," sauf mention explicite, aucun palier n’inclut la redistribution, l’OEM, l’hébergement SaaS ni les droits de sous-licence. Contactez notre équipe commerciale pour des conditions sur mesure."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Approvisionnement :"})," tous les prix sont en USD et hors taxes. Stripe gère les taxes locales automatiquement. Les jetons sont livrés instantanément par courriel. En raison de la livraison instantanée, les ventes sont finales. Utilisez l’évaluation à 499 $ pour tester l’adéquation avant un engagement annuel."]}),e.jsxs("div",{className:"flex justify-center gap-6 pt-4",children:[e.jsx(i,{to:"/refund",className:"hover:text-cyan-300 transition-colors",children:"Politique de remboursement"}),e.jsx(i,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contacter l’ingénierie"})]})]})]})]})}export{E as default}; diff --git a/assets/PricingFR-DYCR87D8.js b/assets/PricingFR-DYCR87D8.js deleted file mode 100644 index 1305222f..00000000 --- a/assets/PricingFR-DYCR87D8.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as u,j as e}from"./vendor-react-BiHfrq0e.js";import{S as x,P as r,e as t,d as i,L as o,C as p}from"./index-CCmwjNGU.js";import{P as l,a as h}from"./faqData-De1eOWz0.js";import{N as f}from"./NeuralReveal-uYarhiMA.js";import{g as c,S as b}from"./vendor-gsap-a3sj5zmn.js";import{G as g}from"./vendor-ui-B8TlNU4J.js";c.registerPlugin(b);function C(){const d=u.useRef([]);u.useEffect(()=>{const s=document.createElement("script");if(s.src="https://js.stripe.com/v3/buy-button.js",s.async=!0,document.body.appendChild(s),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const n=c.context(()=>{d.current.filter(Boolean).forEach(m=>{c.fromTo(m,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:m,start:"top 85%",once:!0}})})});return()=>{n.revert(),s.parentNode===document.body&&document.body.removeChild(s)}},[]);const a=(s,n)=>{s&&(d.current[n]=s)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"Tarifs · QECTOR",description:`Licences commerciales QECTOR Decoder v3. Pro dès ${t(r.proMonthly)}/mois, Labo ${t(r.lab)}/an, Entreprise et OEM dès ${t(r.enterpriseFrom)}/an. Satisfait ou remboursé ${r.refundDays} jours. Prix en USD; taxes ajoutées au paiement s’il y a lieu.`,lang:"fr",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Licences commerciales claires et transparentes"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(f,{text:"Licenciez QECTOR pour la production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:["Gratuit pour la recherche académique et non commerciale. Pour un usage commercial, choisissez un forfait : licences vérifiées hors ligne, entièrement hors réseau, annulables en tout temps, satisfait ou remboursé ",r.refundDays," jours sur votre premier paiement."]})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsxs("div",{ref:s=>a(s,0),className:"grid grid-cols-1 sm:grid-cols-3 gap-4 text-center",children:[e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Hors réseau"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Jeton signé, vérifié hors ligne. Aucun serveur de licence, aucun appel réseau."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsxs("p",{className:"text-cyan-300 font-bold",children:["Remboursé ",r.refundDays," jours"]}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Remboursement complet de votre premier paiement de tout forfait, sans question."})]}),e.jsxs("div",{className:"card-surface py-6",children:[e.jsx("p",{className:"text-cyan-300 font-bold",children:"Annulable en tout temps"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"Votre licence reste valide jusqu’à la fin de la période payée."})]})]}),e.jsxs("div",{ref:s=>a(s,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Forfaits commerciaux"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Droits de production pour l’usage interne de votre organisation. Les abonnements se renouvellent automatiquement jusqu’à annulation."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(g,{size:14,className:"shrink-0","aria-hidden":"true"})," ",r.academicDiscountPct," % de rabais sur Labo pour les établissements d’enseignement. La recherche non commerciale est gratuite."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 max-w-5xl mx-auto",children:[e.jsx(l,{name:"Pro",price:t(r.proMonthly),period:"/ mois",desc:`Ou ${t(r.proAnnual)}/an (2 mois offerts). Palier de licence Pro.`,featured:!0,featuredLabel:"Le plus populaire",features:["Usage commercial interne","Toutes les familles de décodeurs","Lots CPU + GPU (CUDA/OpenCL)","Distances de code jusqu’à 19","Support courriel (2 jours ouvrables)"],ctaLabel:"Acheter au mois",ctaHref:i.proMonthly}),e.jsx(l,{name:"Labo",price:t(r.lab),period:"/ an",desc:"Palier de licence Entreprise, pour les groupes de recherche et laboratoires.",features:["Tout Pro","Distances de code jusqu’à 63","Support prioritaire avec SLA","Appel d’intégration de 2 h","Un rapport de validation (valeur 5 000 $)"],ctaLabel:"Acheter Labo",ctaHref:i.lab}),e.jsx(l,{name:"Entreprise & OEM",price:`${r.enterpriseFrom/1e3} k$+`,period:"/ an",desc:"Redistribution, SaaS, OEM et conditions sur mesure.",accent:"gold",features:["Contrat signé, conditions sur mesure","SaaS et API offertes aux clients","OEM et regroupement matériel","Ingénieur de support attitré"],ctaLabel:"Contacter l’équipe commerciale",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center space-y-2",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Pro facturé à l’année : ",e.jsxs("a",{href:i.proAnnual,className:"text-cyan-400 hover:underline",rel:"noopener",children:[t(r.proAnnual)," / an"]}),"."," ","Vous préférez l’acheter définitivement ? ",e.jsx("a",{href:i.proPerpetual,className:"text-cyan-400 hover:underline",rel:"noopener",children:e.jsxs("strong",{children:["Pro Perpétuel : ",t(r.proPerpetual)," paiement unique"]})})," ","(toutes les versions 1.x, 12 mois de support)."]})})]}),e.jsxs("div",{ref:s=>a(s,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"3 750 $ paiement unique · Livraison en 10-20 jours"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"La voie rapide recommandée pour les équipes qui veulent une preuve immédiate et défendable de la valeur sur leur flux de travail. Nous exécutons jusqu’à 3 charges de référence standard avec QECTOR et livrons des lots d’artefacts reproductibles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Inclut une licence Pilote de ",r.pilotDays," jours"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Analyse comparative vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Appel de révision des résultats de 60 minutes"]})]}),e.jsx(o,{to:"/contact",className:"btn-gold block text-center",children:"Demander un sprint de validation"}),e.jsxs("p",{className:"text-xs text-gold-200/60 mt-6",children:["Seulement la licence et un appel ? Le ",e.jsxs("a",{href:i.pilot,className:"text-gold-400 hover:underline",rel:"noopener",children:["Pilote de ",r.pilotDays," jours est à ",t(r.pilot)]})," :"," ","un appel d’intégration d’une heure et une note de validation écrite, crédités à 100 % sur Labo dans les 90 jours."]})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activer votre licence"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Tout le monde installe la même wheel depuis PyPI : il n’existe pas de build commercial séparé. Votre jeton déverrouille les fonctionnalités payantes : décodage GPU (CUDA/OpenCL) par lots sur tous les forfaits payants, et distances de code jusqu’à 63 sur Labo et Entreprise. Le décodage CPU n’est jamais bloqué; les plafonds de distance ne s’appliquent que si QECTOR_ENFORCE=1."}),e.jsx(p,{language:"bash",className:"mb-6",code:`pip install --upgrade "qector-decoder-v3>=1.0.1,<2" -export QECTOR_LICENSE_KEY="" -export QECTOR_LICENSE="" - -# Vérifier hors ligne : affiche Pro ou Enterprise -python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Les jetons sont vérifiés hors ligne contre une clé publique embarquée dans le paquet : aucun serveur de licence, aucun appel maison, fonctionne complètement hors réseau."})]})]}),e.jsxs("div",{ref:s=>a(s,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Pourquoi licencier QECTOR ?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Gratuit (source disponible)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licencié (commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Usage de recherche non commerciale seulement"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Droits internes de R&D et de production"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Support communautaire (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Support courriel prioritaire et SLA"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (gratuit)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Harnais de reproduction d’artefacts de validation"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Licence PolyForm Noncommercial"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Contrat de licence commerciale écrit"})]})]})]})})})]}),e.jsxs("div",{ref:s=>a(s,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Foire aux questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 items-start",children:h.map((s,n)=>e.jsxs("details",{className:"faq-item group bg-surface/30 border border-gridline/40 rounded-2xl hover:bg-surface/60 transition-colors",children:[e.jsxs("summary",{className:"cursor-pointer list-none flex items-start justify-between gap-4 p-5 min-h-[44px] text-base font-bold text-cyan-300",children:[e.jsx("h3",{className:"text-base font-bold",children:s.q}),e.jsx("span",{"aria-hidden":"true",className:"shrink-0 text-muted-foreground transition-transform group-open:rotate-45 text-xl leading-none",children:"+"})]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed px-5 pb-5",children:s.a})]},n))})]}),e.jsxs("div",{ref:s=>a(s,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"Ce qui n’est pas inclus :"})," sauf mention explicite, aucun palier n’inclut la redistribution, l’OEM, l’hébergement SaaS ni les droits de sous-licence. Contactez notre équipe commerciale pour des conditions sur mesure."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Approvisionnement :"})," tous les prix sont en USD; les taxes applicables sont ajoutées au paiement. Les forfaits mensuels et annuels se renouvellent automatiquement jusqu’à annulation, avec un rappel avant chaque renouvellement annuel."," ","Satisfait ou remboursé ",r.refundDays," jours sur votre premier paiement de tout forfait. Les jetons sont envoyés par courriel en quelques minutes."]}),e.jsxs("p",{children:["En achetant, vous acceptez le ",e.jsx(o,{to:"/fr/license-agreement",className:"text-cyan-300 hover:underline",children:"Contrat de licence commerciale"}),"."]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-x-6 gap-y-2 pt-4",children:[e.jsx(o,{to:"/fr/license-agreement",className:"hover:text-cyan-300 transition-colors",children:"Contrat de licence"}),e.jsx(o,{to:"/fr/refund",className:"hover:text-cyan-300 transition-colors",children:"Politique de remboursement"}),e.jsx("a",{href:"https://billing.stripe.com/p/login/7sY9AVdwlgoyfse9bYeUU00",target:"_blank",rel:"noopener noreferrer",className:"hover:text-cyan-300 transition-colors",children:"Gérer l’abonnement"}),e.jsx(o,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contacter l’ingénierie"})]})]})]})]})}export{C as default}; diff --git a/assets/PricingFR-Dj13kvWH.js b/assets/PricingFR-Dj13kvWH.js deleted file mode 100644 index 93c3fc92..00000000 --- a/assets/PricingFR-Dj13kvWH.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as m,j as e}from"./vendor-react-BiHfrq0e.js";import{S as x,P as r,c as t,L as i,C as p}from"./index-CpdATiEY.js";import{T as h,P as l,a as f}from"./TrialForm-D2xU-ZBp.js";import{N as b}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as g}from"./vendor-gsap-a3sj5zmn.js";import{G as j}from"./vendor-ui-B0ssGG4c.js";import{L as o}from"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";c.registerPlugin(g);function S(){const d=m.useRef([]);m.useEffect(()=>{const s=document.createElement("script");if(s.src="https://js.stripe.com/v3/buy-button.js",s.async=!0,document.body.appendChild(s),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const n=c.context(()=>{d.current.filter(Boolean).forEach(u=>{c.fromTo(u,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:u,start:"top 85%",once:!0}})})});return()=>{n.revert(),s.parentNode===document.body&&document.body.removeChild(s)}},[]);const a=(s,n)=>{s&&(d.current[n]=s)};return e.jsxs(e.Fragment,{children:[e.jsx(x,{title:"Tarifs · QECTOR",description:`Licences commerciales QECTOR Decoder v3. Essai commercial gratuit de ${r.trialDays} jours. Pro dès ${t(r.proMonthly)}/mois, Équipe ${t(r.team)}/an, Labo ${t(r.lab)}/an, Entreprise et OEM dès ${t(r.enterpriseFrom)}/an. Satisfait ou remboursé ${r.refundDays} jours. Prix en USD; taxes ajoutées au paiement s’il y a lieu.`,lang:"fr",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Licences commerciales claires et transparentes"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(b,{text:"Licenciez QECTOR pour la production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:["Gratuit pour la recherche académique et non commerciale. Pour un usage commercial, commencez un essai gratuit de ",r.trialDays," jours, puis choisissez un forfait : annulable en tout temps, satisfait ou remboursé ",r.refundDays," jours sur votre premier paiement."]})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsx("div",{ref:s=>a(s,0),id:"trial",className:"scroll-mt-32",children:e.jsx("div",{className:"relative p-1 rounded-3xl bg-gradient-to-r from-cyan-400 via-cyan-500 to-gold-400 animate-gradient-xy",children:e.jsxs("div",{className:"bg-void/90 backdrop-blur-xl rounded-[23px] p-8 md:p-12 border border-white/5 flex flex-col md:flex-row items-center justify-between gap-8",children:[e.jsxs("div",{className:"flex-1 text-left",children:[e.jsx("div",{className:"inline-block px-3 py-1 bg-cyan-500/20 text-cyan-300 text-xs font-bold uppercase tracking-wider rounded-full mb-4",children:"Gratuit · Sans carte · Jeton par courriel"}),e.jsxs("h2",{className:"text-3xl md:text-4xl font-extrabold text-white mb-4",children:["Essai commercial de ",r.trialDays," jours"]}),e.jsx("p",{className:"text-secondary text-base leading-relaxed max-w-xl",children:"Évaluez QECTOR sur vos propres charges de travail avec des droits d’évaluation commerciale complets : toutes les familles de décodeurs, décodage par lots CPU et GPU (CUDA/OpenCL), vérification de licence hors ligne."}),e.jsxs("div",{className:"mt-6 flex flex-wrap gap-4 text-sm text-cyan-100/70",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Jusqu’à 5 utilisateurs internes"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Expire de lui-même : rien à annuler"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Un essai par adresse par année"]})]})]}),e.jsx("div",{className:"w-full md:w-auto flex flex-col items-center",children:e.jsx(h,{lang:"fr"})})]})})}),e.jsxs("div",{ref:s=>a(s,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Forfaits commerciaux"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Droits de production pour usage interne. Les forfaits se renouvellent automatiquement jusqu’à annulation."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(j,{size:14,className:"shrink-0","aria-hidden":"true"})," ",r.academicDiscountPct," % de rabais sur Équipe et Labo pour les projets universitaires financés par l’industrie. La recherche non commerciale est gratuite."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsx(l,{name:"Pro",price:t(r.proMonthly),period:"/ mois",desc:`Un utilisateur nommé. Ou ${t(r.proAnnual)}/an (2 mois offerts).`,features:["Usage commercial interne","Toutes les familles de décodeurs","Lots CPU + GPU (CUDA/OpenCL)","Support courriel (2 jours ouvrables)"],ctaLabel:"Acheter au mois",ctaHref:i.proMonthly}),e.jsx(l,{name:"Équipe",price:t(r.team),period:"/ an",desc:"Jusqu’à 10 utilisateurs nommés.",featured:!0,featuredLabel:"Idéal pour les startups",features:["Tout Pro","Jusqu’à 10 utilisateurs nommés","Support prioritaire (1 jour ouvrable)","Appel d’intégration de 2 h"],ctaLabel:"Acheter Équipe",ctaHref:i.team}),e.jsx(l,{name:"Labo",price:t(r.lab),period:"/ an",desc:"Jusqu’à 25 utilisateurs nommés. Palier de licence Entreprise.",features:["Tout Équipe","Distances de code jusqu’à 63","SLA de support","Un rapport de validation (valeur 5 000 $)"],ctaLabel:"Acheter Labo",ctaHref:i.lab}),e.jsx(l,{name:"Entreprise & OEM",price:`${r.enterpriseFrom/1e3} k$+`,period:"/ an",desc:"Redistribution, SaaS, OEM et conditions sur mesure.",accent:"gold",features:["Sièges illimités","SaaS et API offertes aux clients","OEM et regroupement matériel","Ingénieur de support attitré"],ctaLabel:"Contacter l’équipe commerciale",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center space-y-2",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Pro facturé à l’année : ",e.jsxs("a",{href:i.proAnnual,className:"text-cyan-400 hover:underline",rel:"noopener",children:[t(r.proAnnual)," / an"]}),"."," ","Vous préférez l’acheter définitivement ? ",e.jsx("a",{href:i.proPerpetual,className:"text-cyan-400 hover:underline",rel:"noopener",children:e.jsxs("strong",{children:["Pro Perpétuel : ",t(r.proPerpetual)," paiement unique"]})})," ","(toutes les versions 3.x, 12 mois de support)."]})})]}),e.jsxs("div",{ref:s=>a(s,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"3 750 $ paiement unique · Livraison en 10-20 jours"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"La voie rapide recommandée pour les équipes qui veulent une preuve immédiate et défendable de la valeur sur leur flux de travail. Nous exécutons jusqu’à 3 charges de référence standard avec QECTOR et livrons des lots d’artefacts reproductibles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Inclut une licence Pilote de ",r.pilotDays," jours"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Analyse comparative vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Appel de révision des résultats de 60 minutes"]})]}),e.jsx(o,{to:"/contact",className:"btn-gold block text-center",children:"Demander un sprint de validation"}),e.jsxs("p",{className:"text-xs text-gold-200/60 mt-6",children:["Seulement la licence et un appel ? Le ",e.jsxs("a",{href:i.pilot,className:"text-gold-400 hover:underline",rel:"noopener",children:["Pilote de ",r.pilotDays," jours est à ",t(r.pilot)]})," :"," ","un appel d’intégration d’une heure et une note de validation écrite, crédités à 100 % sur Équipe ou Labo dans les 90 jours."]})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activer votre licence"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Tout le monde installe la même wheel depuis PyPI : il n’existe pas de build commercial séparé. Votre jeton déverrouille les fonctionnalités payantes : décodage GPU (CUDA/OpenCL) par lots sur tous les forfaits payants, et distances de code jusqu’à 63 sur Labo et Entreprise. Le décodage CPU n’est jamais bloqué; les plafonds de distance ne s’appliquent que si QECTOR_ENFORCE=1."}),e.jsx(p,{language:"bash",className:"mb-6",code:`pip install --upgrade "qector-decoder-v3>=1.0,<2" -export QECTOR_LICENSE_KEY="" -export QECTOR_LICENSE="" - -# Vérifier hors ligne : affiche Pro ou Enterprise -python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Les jetons sont vérifiés hors ligne contre une clé publique embarquée dans le paquet : aucun serveur de licence, aucun appel maison, fonctionne complètement hors réseau."})]})]}),e.jsxs("div",{ref:s=>a(s,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Pourquoi licencier QECTOR ?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Gratuit (source disponible)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licencié (commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Usage de recherche non commerciale seulement"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Droits internes de R&D et de production"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Support communautaire (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Support courriel prioritaire et SLA"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (gratuit)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Harnais de reproduction d’artefacts de validation"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Licence PolyForm Noncommercial"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Contrat de licence commerciale écrit"})]})]})]})})})]}),e.jsxs("div",{ref:s=>a(s,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Foire aux questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:f.map((s,n)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:s.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.a})]},n))})]}),e.jsxs("div",{ref:s=>a(s,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"Ce qui n’est pas inclus :"})," sauf mention explicite, aucun palier n’inclut la redistribution, l’OEM, l’hébergement SaaS ni les droits de sous-licence. Contactez notre équipe commerciale pour des conditions sur mesure."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Approvisionnement :"})," tous les prix sont en USD; les taxes applicables sont ajoutées au paiement. Les forfaits mensuels et annuels se renouvellent automatiquement jusqu’à annulation, avec un rappel avant chaque renouvellement annuel."," ","Satisfait ou remboursé ",r.refundDays," jours sur votre premier paiement de tout forfait. Les jetons sont envoyés par courriel en quelques minutes."]}),e.jsxs("div",{className:"flex justify-center gap-6 pt-4",children:[e.jsx(o,{to:"/refund",className:"hover:text-cyan-300 transition-colors",children:"Politique de remboursement"}),e.jsx(o,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contacter l’ingénierie"})]})]})]})]})}export{S as default}; diff --git a/assets/PricingFR-Dx93rO3U.js b/assets/PricingFR-Dx93rO3U.js deleted file mode 100644 index 8f6a7cc9..00000000 --- a/assets/PricingFR-Dx93rO3U.js +++ /dev/null @@ -1,6 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as d,C as m}from"./index-BcbVjARk.js";import{P as a,a as x}from"./faqData-CCPvMSkf.js";import{N as u}from"./NeuralReveal-BflyZYSb.js";import{g as l,S as p}from"./vendor-gsap-a3sj5zmn.js";import{G as h}from"./vendor-ui-B0ssGG4c.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";l.registerPlugin(p);function E(){const n=o.useRef([]);o.useEffect(()=>{const s=document.createElement("script");if(s.src="https://js.stripe.com/v3/buy-button.js",s.async=!0,document.body.appendChild(s),window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=l.context(()=>{n.current.filter(Boolean).forEach(c=>{l.fromTo(c,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power3.out",scrollTrigger:{trigger:c,start:"top 85%",once:!0}})})});return()=>{r.revert(),s.parentNode===document.body&&document.body.removeChild(s)}},[]);const t=(s,r)=>{s&&(n.current[r]=s)};return e.jsxs(e.Fragment,{children:[e.jsx(d,{title:"Tarifs · QECTOR",description:"Licences commerciales QECTOR Decoder v3. Évaluation de 60 jours à 499 $, entièrement créditable. Paliers de production annuels à partir de 1 299 $/an. Entreprise et OEM sur mesure. Prix en USD, hors taxes.",lang:"fr",alternates:[{lang:"en",href:"https://qector.store/pricing/"},{lang:"fr",href:"https://qector.store/fr/pricing/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/10 via-surface/30 to-void"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-cyan-900/20 via-void to-void pointer-events-none"}),e.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto px-6",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-cyan-300/10 border border-cyan-300/20 rounded-full text-xs font-bold text-cyan-300 uppercase tracking-widest mb-8 backdrop-blur-md",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-cyan-300 animate-pulse-dot"}),"Licences commerciales claires et transparentes"]}),e.jsx("h1",{className:"text-4xl sm:text-5xl md:text-7xl font-extrabold tracking-tight leading-tight mb-6",children:e.jsx(u,{text:"Licenciez QECTOR pour la production",className:"text-4xl sm:text-5xl md:text-7xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl leading-relaxed mb-10 max-w-2xl mx-auto",children:"QECTOR Decoder v3 est disponible en source pour la recherche académique et non commerciale. Pour la R&D interne, les programmes pilotes et le déploiement commercial, choisissez une licence ci-dessous."})]})]}),e.jsxs("div",{className:"px-6 pb-24 max-w-6xl mx-auto space-y-20 relative z-10",children:[e.jsx("div",{ref:s=>t(s,0),id:"evaluation",className:"scroll-mt-32",children:e.jsx("div",{className:"relative p-1 rounded-3xl bg-gradient-to-r from-cyan-400 via-cyan-500 to-gold-400 animate-gradient-xy",children:e.jsxs("div",{className:"bg-void/90 backdrop-blur-xl rounded-[23px] p-8 md:p-12 border border-white/5 flex flex-col md:flex-row items-center justify-between gap-8",children:[e.jsxs("div",{className:"flex-1 text-left",children:[e.jsx("div",{className:"inline-block px-3 py-1 bg-cyan-500/20 text-cyan-300 text-xs font-bold uppercase tracking-wider rounded-full mb-4",children:"Libre-service · Activation instantanée"}),e.jsx("h2",{className:"text-3xl md:text-4xl font-extrabold text-white mb-4",children:"Évaluation commerciale"}),e.jsx("p",{className:"text-secondary text-base leading-relaxed max-w-xl",children:"Un pilote de 60 jours avec accès complet, conçu pour les équipes sérieuses de recherche QEC. Inclut le décodage batch CPU + CUDA, un contrat de licence écrit, un lot d’artefacts de référence et un support prioritaire."}),e.jsxs("div",{className:"mt-6 flex flex-wrap gap-4 text-sm text-cyan-100/70",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Crédit de 100 % vers une licence annuelle achetée dans les 90 jours suivant le début de votre évaluation"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-cyan-400",children:"✓"})," Sièges internes illimités"]})]})]}),e.jsxs("div",{className:"w-full md:w-auto flex flex-col items-center",children:[e.jsx("div",{className:"text-4xl font-black text-white mb-1",children:"499 $"}),e.jsx("div",{className:"text-secondary text-sm mb-6",children:"Frais uniques"}),e.jsx("a",{href:"https://buy.stripe.com/6oU00l77Xc8ifsegEqeUU07",className:"btn-cyan w-full text-center py-4 px-8 font-bold shadow-[0_0_30px_rgba(34,211,238,0.3)]",target:"_blank",rel:"noopener noreferrer",children:"Lancer le pilote de 60 jours"})]})]})})}),e.jsxs("div",{ref:s=>t(s,1),children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Paliers de production annuels"}),e.jsx("p",{className:"text-secondary text-lg mb-4",children:"Pour les équipes qui déploient QECTOR en interne ou l’intègrent à une infrastructure SaaS privée."}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-blue-500/10 border border-blue-400/30 rounded-full text-xs font-semibold text-blue-300",children:[e.jsx(h,{size:14,className:"shrink-0","aria-hidden":"true"})," 40 % de rabais académique disponible sur tous les paliers annuels. Contactez notre équipe commerciale."]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6",children:[e.jsx(a,{name:"Solo / Indie",price:"1 299 $",period:"/ an",desc:"Droits de production pour un seul utilisateur nommé.",features:["Tous les décodeurs v3","Droits commerciaux de R&D","Un seul utilisateur nommé","Support courriel prioritaire"],ctaLabel:"Acheter",ctaHref:"https://buy.stripe.com/cNi9AV63TfkubbY87UeUU09"}),e.jsx(a,{name:"Startup / Growth",price:"4 499 $",period:"/ an",desc:"Jusqu’à 10 utilisateurs nommés. Flux BP-OSD/LDPC avancés.",featured:!0,featuredLabel:"Le plus populaire",features:["Jusqu’à 10 utilisateurs nommés","BP-OSD/LDPC avancé","Batch CPU + CUDA","SLA de support + intégration 2 h"],ctaLabel:"Acheter",ctaHref:"https://buy.stripe.com/14A5kF4ZP5JU7ZMdseeUU0c"}),e.jsx(a,{name:"Professional",price:"11 500 $",period:"/ an",desc:"Jusqu’à 25 utilisateurs nommés. Crédit pour le lot de rapports de validation.",features:["Jusqu’à 25 utilisateurs nommés","Tous les flux avancés","Intégration dédiée","Crédit rapport de validation"],ctaLabel:"Acheter",ctaHref:"https://buy.stripe.com/28EeVf1ND0pA6VIewieUU0d"}),e.jsx(a,{name:"Enterprise & OEM",price:"Sur mesure",period:"",desc:"Sièges illimités, versions personnalisées et distribution SaaS/OEM.",accent:"gold",features:["Qubits logiques illimités","Droits d’hébergement SaaS","Droits de regroupement OEM","Ingénieur de support dédié"],ctaLabel:"Contacter l’équipe commerciale",ctaHref:"/contact"})]}),e.jsx("div",{className:"mt-8 text-center",children:e.jsxs("p",{className:"text-sm text-secondary",children:["Vous préférez l’acheter définitivement ? ",e.jsx("strong",{className:"text-cyan-300",children:"Solo / Indie Perpétuelle à 3 299 $ paiement unique."})," ",e.jsx(i,{to:"/contact",className:"text-cyan-400 hover:underline",children:"Contactez notre équipe commerciale pour l’activer"})]})})]}),e.jsxs("div",{ref:s=>t(s,2),className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"card-surface border-gold-400/20 bg-gold-400/5",children:[e.jsx("h3",{className:"text-2xl font-bold text-gold-400 mb-2",children:"QECTOR Validation Sprint"}),e.jsx("p",{className:"text-sm text-gold-200/60 mb-4",children:"3 750 $ paiement unique · Livraison en 10-20 jours"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"La voie rapide recommandée pour les équipes qui veulent une preuve immédiate et défendable de la valeur sur leur flux de travail. Nous exécutons jusqu’à 3 charges de référence standard avec QECTOR et livrons des lots d’artefacts reproductibles."}),e.jsxs("ul",{className:"text-secondary text-sm space-y-2 mb-8",children:[e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Inclut l’évaluation commerciale de 60 jours"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Analyse comparative vs PyMatching/Stim"]}),e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"text-gold-400",children:"✓"})," Appel de révision des résultats de 60 minutes"]})]}),e.jsx(i,{to:"/contact",className:"btn-gold block text-center",children:"Demander un sprint de validation"})]}),e.jsxs("div",{className:"card-surface bg-surface border-gridline",children:[e.jsx("h3",{className:"text-2xl font-bold mb-4",children:"Activer votre licence"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"Tout le monde installe la même wheel depuis PyPI : il n’existe pas de build commercial séparé. Définir votre jeton de licence désactive l’avis d’usage non commercial et déverrouille les fonctionnalités de votre palier : plafonds de distance de 7, 19 ou 63 selon le palier, et chemins GPU batch sur les paliers Pro et Entreprise."}),e.jsx(m,{language:"bash",className:"mb-6",code:`# Usage commercial : activer avec le jeton Ed25519 -export QECTOR_LICENSE="" -export QECTOR_LICENSE_KEY="" - -# Optionnel : désactiver l'avis de licence dans les journaux CI -export QECTOR_SILENT=1`}),e.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Les jetons sont vérifiés hors ligne contre une clé publique embarquée dans le paquet : aucun serveur de licence, aucun appel maison, fonctionne complètement hors réseau."})]})]}),e.jsxs("div",{ref:s=>t(s,3),children:[e.jsx("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Pourquoi licencier QECTOR ?"}),e.jsx("div",{className:"card-surface bg-surface/50 border border-gridline",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline/50",children:[e.jsx("th",{className:"text-left py-4 px-6 text-cyan-300 font-semibold text-sm",children:"Gratuit (source disponible)"}),e.jsx("th",{className:"text-left py-4 px-6 text-gold-400 font-semibold text-sm",children:"Licencié (commercial)"})]})}),e.jsxs("tbody",{className:"text-sm",children:[e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Usage de recherche non commerciale seulement"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Droits internes de R&D et de production"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Support communautaire (GitHub Issues)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Support courriel prioritaire et SLA"})]}),e.jsxs("tr",{className:"border-b border-gridline/30",children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"QECTOR Workbench GUI (gratuit)"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Harnais de reproduction d’artefacts de validation"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"py-4 px-6 text-secondary border-r border-gridline/30",children:"Licence PolyForm Noncommercial"}),e.jsx("td",{className:"py-4 px-6 text-primary font-medium",children:"Contrat de licence commerciale écrit"})]})]})]})})})]}),e.jsxs("div",{ref:s=>t(s,4),className:"pt-12",children:[e.jsx("div",{className:"text-center mb-12",children:e.jsx("h2",{className:"text-3xl font-bold mb-4",children:"Foire aux questions"})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:x.map((s,r)=>e.jsxs("div",{className:"card-surface bg-surface/30 border-gridline/40 hover:bg-surface/60 transition-colors p-6 rounded-2xl",children:[e.jsx("h3",{className:"text-base font-bold text-primary mb-3 text-cyan-300",children:s.q}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:s.a})]},r))})]}),e.jsxs("div",{ref:s=>t(s,5),className:"border-t border-gridline/40 pt-12 text-center text-xs text-muted-foreground max-w-3xl mx-auto space-y-4",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"Ce qui n’est pas inclus :"})," sauf mention explicite, aucun palier n’inclut la redistribution, l’OEM, l’hébergement SaaS ni les droits de sous-licence. Contactez notre équipe commerciale pour des conditions sur mesure."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Approvisionnement :"})," tous les prix sont en USD et hors taxes. Stripe gère les taxes locales automatiquement. Les jetons sont livrés instantanément par courriel. En raison de la livraison instantanée, les ventes sont finales. Utilisez l’évaluation à 499 $ pour tester l’adéquation avant un engagement annuel."]}),e.jsxs("div",{className:"flex justify-center gap-6 pt-4",children:[e.jsx(i,{to:"/refund",className:"hover:text-cyan-300 transition-colors",children:"Politique de remboursement"}),e.jsx(i,{to:"/contact",className:"hover:text-cyan-300 transition-colors",children:"Contacter l’ingénierie"})]})]})]})]})}export{E as default}; diff --git a/assets/Privacy-1UpnFJMn.js b/assets/Privacy-1UpnFJMn.js deleted file mode 100644 index 6c6c2080..00000000 --- a/assets/Privacy-1UpnFJMn.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-BXZvemzZ.js";import{p as t}from"./privacy-KnN4Rr90.js";import"./index-CcwlvHYJ.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-Bsl9IGCr.js";function n(){return r.jsx(o,{doc:t})}export{n as default}; diff --git a/assets/Privacy-B3SNe1nk.js b/assets/Privacy-B3SNe1nk.js deleted file mode 100644 index 1761ed4c..00000000 --- a/assets/Privacy-B3SNe1nk.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-WV1aysjN.js";import{N as t}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Privacy Policy · QECTOR",description:"Privacy policy for QECTOR website and services."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"No ad networks · No data sold · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(t,{text:"Privacy Policy",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"We collect only what's needed to respond to your inquiry. No third-party ad networks. We do not sell your personal information. If this ever changes, we will update this policy and obtain your consent first."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Overview"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR (operated by iD01t Productions) respects your privacy. This policy explains what data we collect, how we use it, and your rights. We minimize data collection and do not sell your personal information."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data controller"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Data controller: Guillaume Lessard, sole proprietor trading as iD01t Productions, 2004 De Lorimier, Longueuil, Quebec, Canada, J4K 3H7. Privacy contact:"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data We Collect"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Contact form:"})," Name, email, organization, referral source, evaluation timeline, message - stored only to respond to your inquiry."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Usage analytics:"})," Standard server access logs only (no first-party analytics, no advertising). Third-party scripts loaded on this site (the Stripe buy-button script on pricing pages, the Calendly scheduling widget on the contact page) and third-party services you use directly (Stripe checkout) operate under their own privacy policies."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Technical logs:"})," Standard server logs (IP address, user agent) retained for a limited period for security purposes."]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Cookies and third-party trackers"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:"We do not run ad networks and we do not set advertising cookies. Two third-party integrations load their own scripts on this site:"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Stripe buy-button script"})," (js.stripe.com), loaded automatically on the pricing pages. Purpose: payment processing. See the ",e.jsx("a",{href:"https://stripe.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"Stripe Privacy Policy"}),"."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Calendly scheduling widget"}),", loaded on the contact page. Purpose: booking appointments. See the ",e.jsx("a",{href:"https://calendly.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"Calendly Privacy Policy"}),"."]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"How We Use Data"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Respond to inquiries and support requests"}),e.jsx("li",{children:"Improve website and product experience"}),e.jsx("li",{children:"Send product updates you have opted into"}),e.jsx("li",{children:"Detect and prevent abuse"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data retention"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Technical access logs are retained for a maximum of 12 months. Contact inquiries are retained for 3 years."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data Sharing"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We do not sell, rent, or trade your personal information. Data is only shared with:"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5 mt-3",children:[e.jsx("li",{children:"Service providers necessary for operation (hosting, email delivery, scheduling, payment processing)"}),e.jsx("li",{children:"When required by law or to protect our rights"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"International transfers and payments"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Some data is processed outside Canada by our providers (Stripe in the United States for payments, Calendly in the United States for scheduling). Card details are handled solely by Stripe and never touch our servers."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Your Rights"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["You have the right to access, correct, or delete your personal data. You also have the right to data portability, to object to or restrict processing, and to withdraw consent at any time. You may lodge a complaint with your data protection authority (Commission d'accès à l'information du Québec, or your EU supervisory authority). Contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," to exercise these rights."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["For privacy-related questions, contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/Privacy-BIGgflNy.js b/assets/Privacy-BIGgflNy.js deleted file mode 100644 index 2e0b695c..00000000 --- a/assets/Privacy-BIGgflNy.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-CxWP17m6.js";import{N as t}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Privacy Policy · QECTOR",description:"Privacy policy for QECTOR website and services."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"No ad networks · No data sold · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(t,{text:"Privacy Policy",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"We collect only what's needed to respond to your inquiry. No third-party ad networks. We do not sell your personal information. If this ever changes, we will update this policy and obtain your consent first."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Overview"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR (operated by iD01t Productions) respects your privacy. This policy explains what data we collect, how we use it, and your rights. We minimize data collection and do not sell your personal information."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data controller"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Data controller: Guillaume Lessard, sole proprietor trading as iD01t Productions, 2004 De Lorimier, Longueuil, Quebec, Canada, J4K 3H7. Privacy contact:"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data We Collect"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Contact form:"})," Name, email, organization, referral source, evaluation timeline, message - stored only to respond to your inquiry."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Usage analytics:"})," Standard server access logs only (no first-party analytics, no advertising). Third-party scripts loaded on this site (the Stripe buy-button script on pricing pages, the Calendly scheduling widget on the contact page) and third-party services you use directly (Stripe checkout) operate under their own privacy policies."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Technical logs:"})," Standard server logs (IP address, user agent) retained for a limited period for security purposes."]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Cookies and third-party trackers"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:"We do not run ad networks and we do not set advertising cookies. Two third-party integrations load their own scripts on this site:"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Stripe buy-button script"})," (js.stripe.com), loaded automatically on the pricing pages. Purpose: payment processing. See the ",e.jsx("a",{href:"https://stripe.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"Stripe Privacy Policy"}),"."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Calendly scheduling widget"}),", loaded on the contact page. Purpose: booking appointments. See the ",e.jsx("a",{href:"https://calendly.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"Calendly Privacy Policy"}),"."]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"How We Use Data"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Respond to inquiries and support requests"}),e.jsx("li",{children:"Improve website and product experience"}),e.jsx("li",{children:"Send product updates you have opted into"}),e.jsx("li",{children:"Detect and prevent abuse"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data retention"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Technical access logs are retained for a maximum of 12 months. Contact inquiries are retained for 3 years."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data Sharing"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We do not sell, rent, or trade your personal information. Data is only shared with:"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5 mt-3",children:[e.jsx("li",{children:"Service providers necessary for operation (hosting, email delivery, scheduling, payment processing)"}),e.jsx("li",{children:"When required by law or to protect our rights"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"International transfers and payments"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Some data is processed outside Canada by our providers (Stripe in the United States for payments, Calendly in the United States for scheduling). Card details are handled solely by Stripe and never touch our servers."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Your Rights"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["You have the right to access, correct, or delete your personal data. You also have the right to data portability, to object to or restrict processing, and to withdraw consent at any time. You may lodge a complaint with your data protection authority (Commission d'accès à l'information du Québec, or your EU supervisory authority). Contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," to exercise these rights."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["For privacy-related questions, contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/Privacy-Blbnjvv1.js b/assets/Privacy-Blbnjvv1.js deleted file mode 100644 index 7ff9fe3f..00000000 --- a/assets/Privacy-Blbnjvv1.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-OlrhtE5C.js";import{p as t}from"./privacy-KnN4Rr90.js";import"./index-PdoH5kLF.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-Bsl9IGCr.js";function n(){return r.jsx(o,{doc:t})}export{n as default}; diff --git a/assets/Privacy-Bw56_mFe.js b/assets/Privacy-Bw56_mFe.js deleted file mode 100644 index 050a205a..00000000 --- a/assets/Privacy-Bw56_mFe.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-DkYdPRY7.js";import{N as t}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Privacy Policy · QECTOR",description:"Privacy policy for QECTOR website and services."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"No ad networks · No data sold · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(t,{text:"Privacy Policy",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"We collect only what's needed to respond to your inquiry. No third-party ad networks. We do not sell your personal information. If this ever changes, we will update this policy and obtain your consent first."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Overview"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR (operated by iD01t Productions) respects your privacy. This policy explains what data we collect, how we use it, and your rights. We minimize data collection and do not sell your personal information."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data controller"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Data controller: Guillaume Lessard, sole proprietor trading as iD01t Productions, 2004 De Lorimier, Longueuil, Quebec, Canada, J4K 3H7. Privacy contact:"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data We Collect"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Contact form:"})," Name, email, organization, referral source, evaluation timeline, message - stored only to respond to your inquiry."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Usage analytics:"})," Standard server access logs only (no first-party analytics, no advertising). Third-party scripts loaded on this site (the Stripe buy-button script on pricing pages, the Calendly scheduling widget on the contact page) and third-party services you use directly (Stripe checkout) operate under their own privacy policies."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Technical logs:"})," Standard server logs (IP address, user agent) retained for a limited period for security purposes."]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Cookies and third-party trackers"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:"We do not run ad networks and we do not set advertising cookies. Two third-party integrations load their own scripts on this site:"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Stripe buy-button script"})," (js.stripe.com), loaded automatically on the pricing pages. Purpose: payment processing. See the ",e.jsx("a",{href:"https://stripe.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"Stripe Privacy Policy"}),"."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Calendly scheduling widget"}),", loaded on the contact page. Purpose: booking appointments. See the ",e.jsx("a",{href:"https://calendly.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"Calendly Privacy Policy"}),"."]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"How We Use Data"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Respond to inquiries and support requests"}),e.jsx("li",{children:"Improve website and product experience"}),e.jsx("li",{children:"Send product updates you have opted into"}),e.jsx("li",{children:"Detect and prevent abuse"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data retention"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Technical access logs are retained for a maximum of 12 months. Contact inquiries are retained for 3 years."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data Sharing"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We do not sell, rent, or trade your personal information. Data is only shared with:"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5 mt-3",children:[e.jsx("li",{children:"Service providers necessary for operation (hosting, email delivery, scheduling, payment processing)"}),e.jsx("li",{children:"When required by law or to protect our rights"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"International transfers and payments"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Some data is processed outside Canada by our providers (Stripe in the United States for payments, Calendly in the United States for scheduling). Card details are handled solely by Stripe and never touch our servers."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Your Rights"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["You have the right to access, correct, or delete your personal data. You also have the right to data portability, to object to or restrict processing, and to withdraw consent at any time. You may lodge a complaint with your data protection authority (Commission d'accès à l'information du Québec, or your EU supervisory authority). Contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," to exercise these rights."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["For privacy-related questions, contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/Privacy-Bxhj-CUV.js b/assets/Privacy-Bxhj-CUV.js deleted file mode 100644 index fd46cb40..00000000 --- a/assets/Privacy-Bxhj-CUV.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-DRAXObZB.js";import{N as t}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Privacy Policy · QECTOR",description:"Privacy policy for QECTOR website and services."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"No ad networks · No data sold · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(t,{text:"Privacy Policy",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"We collect only what's needed to respond to your inquiry. No third-party ad networks. We do not sell your personal information. If this ever changes, we will update this policy and obtain your consent first."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Overview"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR (operated by iD01t Productions) respects your privacy. This policy explains what data we collect, how we use it, and your rights. We minimize data collection and do not sell your personal information."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data controller"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Data controller: Guillaume Lessard, sole proprietor trading as iD01t Productions, 2004 De Lorimier, Longueuil, Quebec, Canada, J4K 3H7. Privacy contact:"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data We Collect"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Contact form:"})," Name, email, organization, referral source, evaluation timeline, message - stored only to respond to your inquiry."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Usage analytics:"})," Standard server access logs only (no first-party analytics, no advertising). Third-party scripts loaded on this site (the Stripe buy-button script on pricing pages, the Calendly scheduling widget on the contact page) and third-party services you use directly (Stripe checkout) operate under their own privacy policies."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Technical logs:"})," Standard server logs (IP address, user agent) retained for a limited period for security purposes."]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Cookies and third-party trackers"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:"We do not run ad networks and we do not set advertising cookies. Two third-party integrations load their own scripts on this site:"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Stripe buy-button script"})," (js.stripe.com), loaded automatically on the pricing pages. Purpose: payment processing. See the ",e.jsx("a",{href:"https://stripe.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"Stripe Privacy Policy"}),"."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Calendly scheduling widget"}),", loaded on the contact page. Purpose: booking appointments. See the ",e.jsx("a",{href:"https://calendly.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"Calendly Privacy Policy"}),"."]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"How We Use Data"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Respond to inquiries and support requests"}),e.jsx("li",{children:"Improve website and product experience"}),e.jsx("li",{children:"Send product updates you have opted into"}),e.jsx("li",{children:"Detect and prevent abuse"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data retention"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Technical access logs are retained for a maximum of 12 months. Contact inquiries are retained for 3 years."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data Sharing"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We do not sell, rent, or trade your personal information. Data is only shared with:"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5 mt-3",children:[e.jsx("li",{children:"Service providers necessary for operation (hosting, email delivery, scheduling, payment processing)"}),e.jsx("li",{children:"When required by law or to protect our rights"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"International transfers and payments"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Some data is processed outside Canada by our providers (Stripe in the United States for payments, Calendly in the United States for scheduling). Card details are handled solely by Stripe and never touch our servers."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Your Rights"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["You have the right to access, correct, or delete your personal data. You also have the right to data portability, to object to or restrict processing, and to withdraw consent at any time. You may lodge a complaint with your data protection authority (Commission d'accès à l'information du Québec, or your EU supervisory authority). Contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," to exercise these rights."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["For privacy-related questions, contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/Privacy-C1rLQMC9.js b/assets/Privacy-C1rLQMC9.js deleted file mode 100644 index b9d98790..00000000 --- a/assets/Privacy-C1rLQMC9.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-B9kEGiWi.js";import{N as t}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Privacy Policy · QECTOR",description:"Privacy policy for QECTOR website and services."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"No ad networks · No data sold · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(t,{text:"Privacy Policy",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"We collect only what's needed to respond to your inquiry. No third-party ad networks. We do not sell your personal information. If this ever changes, we will update this policy and obtain your consent first."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Overview"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR (operated by iD01t Productions) respects your privacy. This policy explains what data we collect, how we use it, and your rights. We minimize data collection and do not sell your personal information."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data controller"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Data controller: Guillaume Lessard, sole proprietor trading as iD01t Productions, 2004 De Lorimier, Longueuil, Quebec, Canada, J4K 3H7. Privacy contact:"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data We Collect"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Contact form:"})," Name, email, organization, referral source, evaluation timeline, message - stored only to respond to your inquiry."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Usage analytics:"})," Standard server access logs only (no first-party analytics, no advertising). Third-party scripts loaded on this site (the Stripe buy-button script on pricing pages, the Calendly scheduling widget on the contact page) and third-party services you use directly (Stripe checkout) operate under their own privacy policies."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Technical logs:"})," Standard server logs (IP address, user agent) retained for a limited period for security purposes."]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Cookies and third-party trackers"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:"We do not run ad networks and we do not set advertising cookies. Two third-party integrations load their own scripts on this site:"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Stripe buy-button script"})," (js.stripe.com), loaded automatically on the pricing pages. Purpose: payment processing. See the ",e.jsx("a",{href:"https://stripe.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"Stripe Privacy Policy"}),"."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Calendly scheduling widget"}),", loaded on the contact page. Purpose: booking appointments. See the ",e.jsx("a",{href:"https://calendly.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"Calendly Privacy Policy"}),"."]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"How We Use Data"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Respond to inquiries and support requests"}),e.jsx("li",{children:"Improve website and product experience"}),e.jsx("li",{children:"Send product updates you have opted into"}),e.jsx("li",{children:"Detect and prevent abuse"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data retention"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Technical access logs are retained for a maximum of 12 months. Contact inquiries are retained for 3 years."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data Sharing"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We do not sell, rent, or trade your personal information. Data is only shared with:"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5 mt-3",children:[e.jsx("li",{children:"Service providers necessary for operation (hosting, email delivery, scheduling, payment processing)"}),e.jsx("li",{children:"When required by law or to protect our rights"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"International transfers and payments"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Some data is processed outside Canada by our providers (Stripe in the United States for payments, Calendly in the United States for scheduling). Card details are handled solely by Stripe and never touch our servers."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Your Rights"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["You have the right to access, correct, or delete your personal data. You also have the right to data portability, to object to or restrict processing, and to withdraw consent at any time. You may lodge a complaint with your data protection authority (Commission d'accès à l'information du Québec, or your EU supervisory authority). Contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," to exercise these rights."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["For privacy-related questions, contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/Privacy-C4c3BcJK.js b/assets/Privacy-C4c3BcJK.js deleted file mode 100644 index f87d8ab8..00000000 --- a/assets/Privacy-C4c3BcJK.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-BN-vOeL2.js";import{N as t}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Privacy Policy · QECTOR",description:"Privacy policy for QECTOR website and services."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"No ad networks · No data sold · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(t,{text:"Privacy Policy",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"We collect only what's needed to respond to your inquiry. No third-party ad networks. We do not sell your personal information. If this ever changes, we will update this policy and obtain your consent first."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Overview"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR (operated by iD01t Productions) respects your privacy. This policy explains what data we collect, how we use it, and your rights. We minimize data collection and do not sell your personal information."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data controller"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Data controller: Guillaume Lessard, sole proprietor trading as iD01t Productions, 2004 De Lorimier, Longueuil, Quebec, Canada, J4K 3H7. Privacy contact:"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data We Collect"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Contact form:"})," Name, email, organization, referral source, evaluation timeline, message - stored only to respond to your inquiry."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Usage analytics:"})," Standard server access logs only (no first-party analytics, no advertising). Third-party scripts loaded on this site (the Stripe buy-button script on pricing pages, the Calendly scheduling widget on the contact page) and third-party services you use directly (Stripe checkout) operate under their own privacy policies."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Technical logs:"})," Standard server logs (IP address, user agent) retained for a limited period for security purposes."]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Cookies and third-party trackers"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:"We do not run ad networks and we do not set advertising cookies. Two third-party integrations load their own scripts on this site:"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Stripe buy-button script"})," (js.stripe.com), loaded automatically on the pricing pages. Purpose: payment processing. See the ",e.jsx("a",{href:"https://stripe.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"Stripe Privacy Policy"}),"."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Calendly scheduling widget"}),", loaded on the contact page. Purpose: booking appointments. See the ",e.jsx("a",{href:"https://calendly.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"Calendly Privacy Policy"}),"."]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"How We Use Data"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Respond to inquiries and support requests"}),e.jsx("li",{children:"Improve website and product experience"}),e.jsx("li",{children:"Send product updates you have opted into"}),e.jsx("li",{children:"Detect and prevent abuse"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data retention"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Technical access logs are retained for a maximum of 12 months. Contact inquiries are retained for 3 years."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data Sharing"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We do not sell, rent, or trade your personal information. Data is only shared with:"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5 mt-3",children:[e.jsx("li",{children:"Service providers necessary for operation (hosting, email delivery, scheduling, payment processing)"}),e.jsx("li",{children:"When required by law or to protect our rights"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"International transfers and payments"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Some data is processed outside Canada by our providers (Stripe in the United States for payments, Calendly in the United States for scheduling). Card details are handled solely by Stripe and never touch our servers."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Your Rights"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["You have the right to access, correct, or delete your personal data. You also have the right to data portability, to object to or restrict processing, and to withdraw consent at any time. You may lodge a complaint with your data protection authority (Commission d'accès à l'information du Québec, or your EU supervisory authority). Contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," to exercise these rights."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["For privacy-related questions, contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/Privacy-CAKpuiQ_.js b/assets/Privacy-CAKpuiQ_.js deleted file mode 100644 index 6399f94b..00000000 --- a/assets/Privacy-CAKpuiQ_.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-DvyIDT6j.js";import{p as t}from"./privacy-CyCxpbsd.js";import"./index-Bh9DBCb3.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-D-EQoOl2.js";function u(){return r.jsx(o,{doc:t})}export{u as default}; diff --git a/assets/Privacy-CSC4E5Sx.js b/assets/Privacy-CSC4E5Sx.js deleted file mode 100644 index ef0646e1..00000000 --- a/assets/Privacy-CSC4E5Sx.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-CpdATiEY.js";import{N as t}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Privacy Policy · QECTOR",description:"Privacy policy for QECTOR website and services."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"No ad networks · No data sold · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(t,{text:"Privacy Policy",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"We collect only what's needed to respond to your inquiry. No third-party ad networks. We do not sell your personal information. If this ever changes, we will update this policy and obtain your consent first."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Overview"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR (operated by iD01t Productions) respects your privacy. This policy explains what data we collect, how we use it, and your rights. We minimize data collection and do not sell your personal information."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data controller"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Data controller: Guillaume Lessard, sole proprietor trading as iD01t Productions, 2004 De Lorimier, Longueuil, Quebec, Canada, J4K 3H7. Privacy contact:"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data We Collect"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Contact form:"})," Name, email, organization, referral source, evaluation timeline, message - stored only to respond to your inquiry."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Usage analytics:"})," Standard server access logs only (no first-party analytics, no advertising). Third-party scripts loaded on this site (the Stripe buy-button script on pricing pages, the Calendly scheduling widget on the contact page) and third-party services you use directly (Stripe checkout) operate under their own privacy policies."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Technical logs:"})," Standard server logs (IP address, user agent) retained for a limited period for security purposes."]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Cookies and third-party trackers"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:"We do not run ad networks and we do not set advertising cookies. Two third-party integrations load their own scripts on this site:"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Stripe buy-button script"})," (js.stripe.com), loaded automatically on the pricing pages. Purpose: payment processing. See the ",e.jsx("a",{href:"https://stripe.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"Stripe Privacy Policy"}),"."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Calendly scheduling widget"}),", loaded on the contact page. Purpose: booking appointments. See the ",e.jsx("a",{href:"https://calendly.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"Calendly Privacy Policy"}),"."]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"How We Use Data"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Respond to inquiries and support requests"}),e.jsx("li",{children:"Improve website and product experience"}),e.jsx("li",{children:"Send product updates you have opted into"}),e.jsx("li",{children:"Detect and prevent abuse"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data retention"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Technical access logs are retained for a maximum of 12 months. Contact inquiries are retained for 3 years."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data Sharing"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We do not sell, rent, or trade your personal information. Data is only shared with:"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5 mt-3",children:[e.jsx("li",{children:"Service providers necessary for operation (hosting, email delivery, scheduling, payment processing)"}),e.jsx("li",{children:"When required by law or to protect our rights"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"International transfers and payments"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Some data is processed outside Canada by our providers (Stripe in the United States for payments, Calendly in the United States for scheduling). Card details are handled solely by Stripe and never touch our servers."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Your Rights"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["You have the right to access, correct, or delete your personal data. You also have the right to data portability, to object to or restrict processing, and to withdraw consent at any time. You may lodge a complaint with your data protection authority (Commission d'accès à l'information du Québec, or your EU supervisory authority). Contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," to exercise these rights."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["For privacy-related questions, contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/Privacy-ChjFFsO0.js b/assets/Privacy-ChjFFsO0.js deleted file mode 100644 index a2ab1744..00000000 --- a/assets/Privacy-ChjFFsO0.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-iVST85F-.js";import{N as t}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Privacy Policy · QECTOR",description:"Privacy policy for QECTOR website and services."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"No ad networks · No data sold · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(t,{text:"Privacy Policy",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"We collect only what's needed to respond to your inquiry. No third-party ad networks. We do not sell your personal information. If this ever changes, we will update this policy and obtain your consent first."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Overview"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR (operated by iD01t Productions) respects your privacy. This policy explains what data we collect, how we use it, and your rights. We minimize data collection and do not sell your personal information."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data controller"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Data controller: Guillaume Lessard, sole proprietor trading as iD01t Productions, 2004 De Lorimier, Longueuil, Quebec, Canada, J4K 3H7. Privacy contact:"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data We Collect"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Contact form:"})," Name, email, organization, referral source, evaluation timeline, message - stored only to respond to your inquiry."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Usage analytics:"})," Standard server access logs only (no first-party analytics, no advertising). Third-party scripts loaded on this site (the Stripe buy-button script on pricing pages, the Calendly scheduling widget on the contact page) and third-party services you use directly (Stripe checkout) operate under their own privacy policies."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Technical logs:"})," Standard server logs (IP address, user agent) retained for a limited period for security purposes."]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Cookies and third-party trackers"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:"We do not run ad networks and we do not set advertising cookies. Two third-party integrations load their own scripts on this site:"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Stripe buy-button script"})," (js.stripe.com), loaded automatically on the pricing pages. Purpose: payment processing. See the ",e.jsx("a",{href:"https://stripe.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"Stripe Privacy Policy"}),"."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Calendly scheduling widget"}),", loaded on the contact page. Purpose: booking appointments. See the ",e.jsx("a",{href:"https://calendly.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"Calendly Privacy Policy"}),"."]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"How We Use Data"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Respond to inquiries and support requests"}),e.jsx("li",{children:"Improve website and product experience"}),e.jsx("li",{children:"Send product updates you have opted into"}),e.jsx("li",{children:"Detect and prevent abuse"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data retention"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Technical access logs are retained for a maximum of 12 months. Contact inquiries are retained for 3 years."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data Sharing"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We do not sell, rent, or trade your personal information. Data is only shared with:"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5 mt-3",children:[e.jsx("li",{children:"Service providers necessary for operation (hosting, email delivery, scheduling, payment processing)"}),e.jsx("li",{children:"When required by law or to protect our rights"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"International transfers and payments"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Some data is processed outside Canada by our providers (Stripe in the United States for payments, Calendly in the United States for scheduling). Card details are handled solely by Stripe and never touch our servers."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Your Rights"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["You have the right to access, correct, or delete your personal data. You also have the right to data portability, to object to or restrict processing, and to withdraw consent at any time. You may lodge a complaint with your data protection authority (Commission d'accès à l'information du Québec, or your EU supervisory authority). Contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," to exercise these rights."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["For privacy-related questions, contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/Privacy-CsJ5OCPq.js b/assets/Privacy-CsJ5OCPq.js deleted file mode 100644 index bef4acf6..00000000 --- a/assets/Privacy-CsJ5OCPq.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-DlmjLVYe.js";import{N as t}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Privacy Policy · QECTOR",description:"Privacy policy for QECTOR website and services."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"No ad networks · No data sold · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(t,{text:"Privacy Policy",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"We collect only what's needed to respond to your inquiry. No third-party ad networks. We do not sell your personal information. If this ever changes, we will update this policy and obtain your consent first."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Overview"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR (operated by iD01t Productions) respects your privacy. This policy explains what data we collect, how we use it, and your rights. We minimize data collection and do not sell your personal information."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data controller"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Data controller: Guillaume Lessard, sole proprietor trading as iD01t Productions, 2004 De Lorimier, Longueuil, Quebec, Canada, J4K 3H7. Privacy contact:"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data We Collect"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Contact form:"})," Name, email, organization, referral source, evaluation timeline, message - stored only to respond to your inquiry."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Usage analytics:"})," Standard server access logs only (no first-party analytics, no advertising). Third-party scripts loaded on this site (the Stripe buy-button script on pricing pages, the Calendly scheduling widget on the contact page) and third-party services you use directly (Stripe checkout) operate under their own privacy policies."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Technical logs:"})," Standard server logs (IP address, user agent) retained for a limited period for security purposes."]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Cookies and third-party trackers"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:"We do not run ad networks and we do not set advertising cookies. Two third-party integrations load their own scripts on this site:"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Stripe buy-button script"})," (js.stripe.com), loaded automatically on the pricing pages. Purpose: payment processing. See the ",e.jsx("a",{href:"https://stripe.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"Stripe Privacy Policy"}),"."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Calendly scheduling widget"}),", loaded on the contact page. Purpose: booking appointments. See the ",e.jsx("a",{href:"https://calendly.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"Calendly Privacy Policy"}),"."]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"How We Use Data"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Respond to inquiries and support requests"}),e.jsx("li",{children:"Improve website and product experience"}),e.jsx("li",{children:"Send product updates you have opted into"}),e.jsx("li",{children:"Detect and prevent abuse"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data retention"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Technical access logs are retained for a maximum of 12 months. Contact inquiries are retained for 3 years."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data Sharing"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We do not sell, rent, or trade your personal information. Data is only shared with:"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5 mt-3",children:[e.jsx("li",{children:"Service providers necessary for operation (hosting, email delivery, scheduling, payment processing)"}),e.jsx("li",{children:"When required by law or to protect our rights"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"International transfers and payments"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Some data is processed outside Canada by our providers (Stripe in the United States for payments, Calendly in the United States for scheduling). Card details are handled solely by Stripe and never touch our servers."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Your Rights"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["You have the right to access, correct, or delete your personal data. You also have the right to data portability, to object to or restrict processing, and to withdraw consent at any time. You may lodge a complaint with your data protection authority (Commission d'accès à l'information du Québec, or your EU supervisory authority). Contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," to exercise these rights."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["For privacy-related questions, contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/Privacy-CwHcJhDF.js b/assets/Privacy-CwHcJhDF.js deleted file mode 100644 index f8131515..00000000 --- a/assets/Privacy-CwHcJhDF.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-BUYYSLdX.js";import{N as t}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Privacy Policy · QECTOR",description:"Privacy policy for QECTOR website and services."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"No ad networks · No data sold · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(t,{text:"Privacy Policy",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"We collect only what's needed to respond to your inquiry. No third-party ad networks. We do not sell your personal information. If this ever changes, we will update this policy and obtain your consent first."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Overview"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR (operated by iD01t Productions) respects your privacy. This policy explains what data we collect, how we use it, and your rights. We minimize data collection and do not sell your personal information."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data controller"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Data controller: Guillaume Lessard, sole proprietor trading as iD01t Productions, 2004 De Lorimier, Longueuil, Quebec, Canada, J4K 3H7. Privacy contact:"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data We Collect"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Contact form:"})," Name, email, organization, referral source, evaluation timeline, message - stored only to respond to your inquiry."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Usage analytics:"})," Standard server access logs only (no first-party analytics, no advertising). Third-party scripts loaded on this site (the Stripe buy-button script on pricing pages, the Calendly scheduling widget on the contact page) and third-party services you use directly (Stripe checkout) operate under their own privacy policies."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Technical logs:"})," Standard server logs (IP address, user agent) retained for a limited period for security purposes."]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Cookies and third-party trackers"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:"We do not run ad networks and we do not set advertising cookies. Two third-party integrations load their own scripts on this site:"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Stripe buy-button script"})," (js.stripe.com), loaded automatically on the pricing pages. Purpose: payment processing. See the ",e.jsx("a",{href:"https://stripe.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"Stripe Privacy Policy"}),"."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Calendly scheduling widget"}),", loaded on the contact page. Purpose: booking appointments. See the ",e.jsx("a",{href:"https://calendly.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"Calendly Privacy Policy"}),"."]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"How We Use Data"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Respond to inquiries and support requests"}),e.jsx("li",{children:"Improve website and product experience"}),e.jsx("li",{children:"Send product updates you have opted into"}),e.jsx("li",{children:"Detect and prevent abuse"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data retention"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Technical access logs are retained for a maximum of 12 months. Contact inquiries are retained for 3 years."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data Sharing"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We do not sell, rent, or trade your personal information. Data is only shared with:"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5 mt-3",children:[e.jsx("li",{children:"Service providers necessary for operation (hosting, email delivery, scheduling, payment processing)"}),e.jsx("li",{children:"When required by law or to protect our rights"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"International transfers and payments"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Some data is processed outside Canada by our providers (Stripe in the United States for payments, Calendly in the United States for scheduling). Card details are handled solely by Stripe and never touch our servers."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Your Rights"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["You have the right to access, correct, or delete your personal data. You also have the right to data portability, to object to or restrict processing, and to withdraw consent at any time. You may lodge a complaint with your data protection authority (Commission d'accès à l'information du Québec, or your EU supervisory authority). Contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," to exercise these rights."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["For privacy-related questions, contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/Privacy-D7vLEBoi.js b/assets/Privacy-D7vLEBoi.js deleted file mode 100644 index dd513f10..00000000 --- a/assets/Privacy-D7vLEBoi.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-CqAA-ZXu.js";import{N as t}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Privacy Policy · QECTOR",description:"Privacy policy for QECTOR website and services."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"No ad networks · No data sold · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(t,{text:"Privacy Policy",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"We collect only what's needed to respond to your inquiry. No third-party ad networks. We do not sell your personal information. If this ever changes, we will update this policy and obtain your consent first."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Overview"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR (operated by iD01t Productions) respects your privacy. This policy explains what data we collect, how we use it, and your rights. We minimize data collection and do not sell your personal information."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data controller"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Data controller: Guillaume Lessard, sole proprietor trading as iD01t Productions, 2004 De Lorimier, Longueuil, Quebec, Canada, J4K 3H7. Privacy contact:"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data We Collect"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Contact form:"})," Name, email, organization, referral source, evaluation timeline, message - stored only to respond to your inquiry."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Usage analytics:"})," Standard server access logs only (no first-party analytics, no advertising). Third-party scripts loaded on this site (the Stripe buy-button script on pricing pages, the Calendly scheduling widget on the contact page) and third-party services you use directly (Stripe checkout) operate under their own privacy policies."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Technical logs:"})," Standard server logs (IP address, user agent) retained for a limited period for security purposes."]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Cookies and third-party trackers"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:"We do not run ad networks and we do not set advertising cookies. Two third-party integrations load their own scripts on this site:"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Stripe buy-button script"})," (js.stripe.com), loaded automatically on the pricing pages. Purpose: payment processing. See the ",e.jsx("a",{href:"https://stripe.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"Stripe Privacy Policy"}),"."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Calendly scheduling widget"}),", loaded on the contact page. Purpose: booking appointments. See the ",e.jsx("a",{href:"https://calendly.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"Calendly Privacy Policy"}),"."]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"How We Use Data"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Respond to inquiries and support requests"}),e.jsx("li",{children:"Improve website and product experience"}),e.jsx("li",{children:"Send product updates you have opted into"}),e.jsx("li",{children:"Detect and prevent abuse"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data retention"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Technical access logs are retained for a maximum of 12 months. Contact inquiries are retained for 3 years."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data Sharing"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We do not sell, rent, or trade your personal information. Data is only shared with:"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5 mt-3",children:[e.jsx("li",{children:"Service providers necessary for operation (hosting, email delivery, scheduling, payment processing)"}),e.jsx("li",{children:"When required by law or to protect our rights"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"International transfers and payments"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Some data is processed outside Canada by our providers (Stripe in the United States for payments, Calendly in the United States for scheduling). Card details are handled solely by Stripe and never touch our servers."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Your Rights"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["You have the right to access, correct, or delete your personal data. You also have the right to data portability, to object to or restrict processing, and to withdraw consent at any time. You may lodge a complaint with your data protection authority (Commission d'accès à l'information du Québec, or your EU supervisory authority). Contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," to exercise these rights."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["For privacy-related questions, contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/Privacy-DA_dioZX.js b/assets/Privacy-DA_dioZX.js deleted file mode 100644 index 15ef514b..00000000 --- a/assets/Privacy-DA_dioZX.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-D-Mi7GTG.js";import{p as t}from"./privacy-CP9bp7X-.js";import"./index-c1PDYu0j.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-uYarhiMA.js";function n(){return r.jsx(o,{doc:t})}export{n as default}; diff --git a/assets/Privacy-DHw_SEtf.js b/assets/Privacy-DHw_SEtf.js deleted file mode 100644 index 68ceee07..00000000 --- a/assets/Privacy-DHw_SEtf.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-_BpMZhV3.js";import{N as t}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Privacy Policy · QECTOR",description:"Privacy policy for QECTOR website and services."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"No ad networks · No data sold · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(t,{text:"Privacy Policy",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"We collect only what's needed to respond to your inquiry. No third-party ad networks. We do not sell your personal information. If this ever changes, we will update this policy and obtain your consent first."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Overview"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR (operated by iD01t Productions) respects your privacy. This policy explains what data we collect, how we use it, and your rights. We minimize data collection and do not sell your personal information."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data controller"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Data controller: Guillaume Lessard, sole proprietor trading as iD01t Productions, 2004 De Lorimier, Longueuil, Quebec, Canada, J4K 3H7. Privacy contact:"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data We Collect"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Contact form:"})," Name, email, organization, referral source, evaluation timeline, message - stored only to respond to your inquiry."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Usage analytics:"})," Standard server access logs only (no first-party analytics, no advertising). Third-party scripts loaded on this site (the Stripe buy-button script on pricing pages, the Calendly scheduling widget on the contact page) and third-party services you use directly (Stripe checkout) operate under their own privacy policies."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Technical logs:"})," Standard server logs (IP address, user agent) retained for a limited period for security purposes."]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Cookies and third-party trackers"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:"We do not run ad networks and we do not set advertising cookies. Two third-party integrations load their own scripts on this site:"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Stripe buy-button script"})," (js.stripe.com), loaded automatically on the pricing pages. Purpose: payment processing. See the ",e.jsx("a",{href:"https://stripe.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"Stripe Privacy Policy"}),"."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Calendly scheduling widget"}),", loaded on the contact page. Purpose: booking appointments. See the ",e.jsx("a",{href:"https://calendly.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"Calendly Privacy Policy"}),"."]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"How We Use Data"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Respond to inquiries and support requests"}),e.jsx("li",{children:"Improve website and product experience"}),e.jsx("li",{children:"Send product updates you have opted into"}),e.jsx("li",{children:"Detect and prevent abuse"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data retention"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Technical access logs are retained for a maximum of 12 months. Contact inquiries are retained for 3 years."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data Sharing"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We do not sell, rent, or trade your personal information. Data is only shared with:"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5 mt-3",children:[e.jsx("li",{children:"Service providers necessary for operation (hosting, email delivery, scheduling, payment processing)"}),e.jsx("li",{children:"When required by law or to protect our rights"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"International transfers and payments"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Some data is processed outside Canada by our providers (Stripe in the United States for payments, Calendly in the United States for scheduling). Card details are handled solely by Stripe and never touch our servers."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Your Rights"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["You have the right to access, correct, or delete your personal data. You also have the right to data portability, to object to or restrict processing, and to withdraw consent at any time. You may lodge a complaint with your data protection authority (Commission d'accès à l'information du Québec, or your EU supervisory authority). Contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," to exercise these rights."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["For privacy-related questions, contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/Privacy-DPO_GrhI.js b/assets/Privacy-DPO_GrhI.js deleted file mode 100644 index 7c5a33fd..00000000 --- a/assets/Privacy-DPO_GrhI.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-CclXHnEm.js";import{p as t}from"./privacy-CyCxpbsd.js";import"./index-abfjMTlQ.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-D-EQoOl2.js";function u(){return r.jsx(o,{doc:t})}export{u as default}; diff --git a/assets/Privacy-DTWyxh_E.js b/assets/Privacy-DTWyxh_E.js deleted file mode 100644 index 0861491d..00000000 --- a/assets/Privacy-DTWyxh_E.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-k7aoVn24.js";import{p as t}from"./privacy-C_JimZhu.js";import"./index-CCmwjNGU.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-uYarhiMA.js";function n(){return r.jsx(o,{doc:t})}export{n as default}; diff --git a/assets/Privacy-DZfev8WZ.js b/assets/Privacy-DZfev8WZ.js deleted file mode 100644 index 10be8d30..00000000 --- a/assets/Privacy-DZfev8WZ.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-BcbVjARk.js";import{N as t}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Privacy Policy · QECTOR",description:"Privacy policy for QECTOR website and services."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"No ad networks · No data sold · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(t,{text:"Privacy Policy",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"We collect only what's needed to respond to your inquiry. No third-party ad networks. We do not sell your personal information. If this ever changes, we will update this policy and obtain your consent first."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Overview"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"QECTOR (operated by iD01t Productions) respects your privacy. This policy explains what data we collect, how we use it, and your rights. We minimize data collection and do not sell your personal information."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data controller"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Data controller: Guillaume Lessard, sole proprietor trading as iD01t Productions, 2004 De Lorimier, Longueuil, Quebec, Canada, J4K 3H7. Privacy contact:"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data We Collect"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Contact form:"})," Name, email, organization, referral source, evaluation timeline, message - stored only to respond to your inquiry."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Usage analytics:"})," Standard server access logs only (no first-party analytics, no advertising). Third-party scripts loaded on this site (the Stripe buy-button script on pricing pages, the Calendly scheduling widget on the contact page) and third-party services you use directly (Stripe checkout) operate under their own privacy policies."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Technical logs:"})," Standard server logs (IP address, user agent) retained for a limited period for security purposes."]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Cookies and third-party trackers"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:"We do not run ad networks and we do not set advertising cookies. Two third-party integrations load their own scripts on this site:"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Stripe buy-button script"})," (js.stripe.com), loaded automatically on the pricing pages. Purpose: payment processing. See the ",e.jsx("a",{href:"https://stripe.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"Stripe Privacy Policy"}),"."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Calendly scheduling widget"}),", loaded on the contact page. Purpose: booking appointments. See the ",e.jsx("a",{href:"https://calendly.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline",children:"Calendly Privacy Policy"}),"."]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"How We Use Data"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5",children:[e.jsx("li",{children:"Respond to inquiries and support requests"}),e.jsx("li",{children:"Improve website and product experience"}),e.jsx("li",{children:"Send product updates you have opted into"}),e.jsx("li",{children:"Detect and prevent abuse"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data retention"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Technical access logs are retained for a maximum of 12 months. Contact inquiries are retained for 3 years."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Data Sharing"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We do not sell, rent, or trade your personal information. Data is only shared with:"}),e.jsxs("ul",{className:"space-y-2 text-secondary text-sm leading-relaxed list-disc pl-5 mt-3",children:[e.jsx("li",{children:"Service providers necessary for operation (hosting, email delivery, scheduling, payment processing)"}),e.jsx("li",{children:"When required by law or to protect our rights"})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"International transfers and payments"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Some data is processed outside Canada by our providers (Stripe in the United States for payments, Calendly in the United States for scheduling). Card details are handled solely by Stripe and never touch our servers."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Your Rights"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["You have the right to access, correct, or delete your personal data. You also have the right to data portability, to object to or restrict processing, and to withdraw consent at any time. You may lodge a complaint with your data protection authority (Commission d'accès à l'information du Québec, or your EU supervisory authority). Contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," to exercise these rights."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["For privacy-related questions, contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/Privacy-QF8StmXn.js b/assets/Privacy-QF8StmXn.js deleted file mode 100644 index 5231645c..00000000 --- a/assets/Privacy-QF8StmXn.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-CFP-uSSS.js";import{p as t}from"./privacy-CP9bp7X-.js";import"./index-DayaklK-.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-uYarhiMA.js";function n(){return r.jsx(o,{doc:t})}export{n as default}; diff --git a/assets/PrivacyFR-BAX39_oh.js b/assets/PrivacyFR-BAX39_oh.js deleted file mode 100644 index c24b64b1..00000000 --- a/assets/PrivacyFR-BAX39_oh.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-CFP-uSSS.js";import{a as t}from"./privacy-CP9bp7X-.js";import"./index-DayaklK-.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-uYarhiMA.js";function c(){return r.jsx(o,{doc:t})}export{c as default}; diff --git a/assets/PrivacyFR-Bhng6Sji.js b/assets/PrivacyFR-Bhng6Sji.js deleted file mode 100644 index a24c52e2..00000000 --- a/assets/PrivacyFR-Bhng6Sji.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-k7aoVn24.js";import{a as t}from"./privacy-C_JimZhu.js";import"./index-CCmwjNGU.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-uYarhiMA.js";function c(){return r.jsx(o,{doc:t})}export{c as default}; diff --git a/assets/PrivacyFR-CCMtsUS3.js b/assets/PrivacyFR-CCMtsUS3.js deleted file mode 100644 index ea84ce6f..00000000 --- a/assets/PrivacyFR-CCMtsUS3.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-BXZvemzZ.js";import{a as t}from"./privacy-KnN4Rr90.js";import"./index-CcwlvHYJ.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-Bsl9IGCr.js";function c(){return r.jsx(o,{doc:t})}export{c as default}; diff --git a/assets/PrivacyFR-DI_0o-iC.js b/assets/PrivacyFR-DI_0o-iC.js deleted file mode 100644 index e7752ef8..00000000 --- a/assets/PrivacyFR-DI_0o-iC.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-CclXHnEm.js";import{a as t}from"./privacy-CyCxpbsd.js";import"./index-abfjMTlQ.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-D-EQoOl2.js";function u(){return r.jsx(o,{doc:t})}export{u as default}; diff --git a/assets/PrivacyFR-H5T4viaB.js b/assets/PrivacyFR-H5T4viaB.js deleted file mode 100644 index 72ca5913..00000000 --- a/assets/PrivacyFR-H5T4viaB.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-OlrhtE5C.js";import{a as t}from"./privacy-KnN4Rr90.js";import"./index-PdoH5kLF.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-Bsl9IGCr.js";function c(){return r.jsx(o,{doc:t})}export{c as default}; diff --git a/assets/PrivacyFR-fW9Yt675.js b/assets/PrivacyFR-fW9Yt675.js deleted file mode 100644 index 67f5583b..00000000 --- a/assets/PrivacyFR-fW9Yt675.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-D-Mi7GTG.js";import{a as t}from"./privacy-CP9bp7X-.js";import"./index-c1PDYu0j.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-uYarhiMA.js";function c(){return r.jsx(o,{doc:t})}export{c as default}; diff --git a/assets/PrivacyFR-yruEp8O3.js b/assets/PrivacyFR-yruEp8O3.js deleted file mode 100644 index b350a773..00000000 --- a/assets/PrivacyFR-yruEp8O3.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-DvyIDT6j.js";import{a as t}from"./privacy-CyCxpbsd.js";import"./index-Bh9DBCb3.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-D-EQoOl2.js";function u(){return r.jsx(o,{doc:t})}export{u as default}; diff --git a/assets/Refund-4zHoAwwi.js b/assets/Refund-4zHoAwwi.js deleted file mode 100644 index 0fea693b..00000000 --- a/assets/Refund-4zHoAwwi.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s,P as a}from"./index-CpdATiEY.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{L as t}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function x(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Refund Policy · QECTOR",description:`QECTOR Decoder v3 refund policy: ${a.refundDays}-day money-back guarantee on your first payment of any plan, cancel renewals any time, free ${a.trialDays}-day trial before you buy.`}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"All prices in USD · Instant digital delivery · Last updated November 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"Refund Policy",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["Try it free for ",a.trialDays," days, then buy with a ",a.refundDays,"-day money-back guarantee. Plans renew automatically and you can cancel at any time. See"," ",e.jsx(t,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing"}),"."]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsxs("h2",{className:"text-xl font-bold mb-4",children:[a.refundDays,"-day money-back guarantee"]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["If QECTOR is not right for you, email"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with your Stripe receipt within ",a.refundDays," days of your ",e.jsx("strong",{className:"text-primary",children:"first payment"})," of any plan (Pro monthly or annual, Pro Perpetual, Team, Lab or the Pilot). We refund it in full, no questions asked, and revoke the licence token."]}),e.jsxs("ul",{className:"text-secondary text-sm space-y-1.5",children:[e.jsx("li",{children:"• One guarantee per organisation; it applies to the first purchase, not to later renewals."}),e.jsx("li",{children:"• Refunds go back to the original payment method through Stripe, usually within 5–10 business days."}),e.jsx("li",{children:"• Once refunded, the licence ends and the token must no longer be used."})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsxs("h2",{className:"text-xl font-bold mb-4",children:["Try before you buy: free ",a.trialDays,"-day trial"]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Request a free ",a.trialDays,"-day commercial trial on the"," ",e.jsx(t,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"pricing page"}),". No card is needed and the token simply expires, so there is nothing to cancel or refund. Larger evaluations can use the"," ",a.pilotDays,"-day Pilot, which is covered by the same money-back guarantee."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Renewals and cancelling"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Pro (monthly or annual), Team and Lab are subscriptions and ",e.jsx("strong",{className:"text-primary",children:"renew automatically"})," ","until cancelled. We email a reminder 14 days before each annual renewal. Cancel any time from the link in your Stripe receipt or by emailing admin@qector.store; your licence stays valid until the end of the period you paid for."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Renewal payments are not refunded pro rata. If a renewal went through that you meant to cancel and you have not used the renewed term, write to us within 7 days and we will refund it. Pro Perpetual and the Pilot are one-time payments and never renew."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Delivery problems are not refund matters: we fix them"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["If your token never arrives, arrives corrupted, is tied to the wrong email, or fails offline verification, that is a delivery fault on our side. Do not open a dispute: email"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with your Stripe receipt and we will reissue or correct it, at no cost and with no expiry on that obligation."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Tokens are issued and emailed within minutes of successful payment (usually under 10 minutes). If it has been longer, check your spam folder first: automated licence mail is a common false positive."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Duplicate and mistaken charges"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Accidental duplicate purchases of the same plan for the same organisation, and charges made in obvious error, are always refunded in full. Email admin@qector.store with both Stripe receipts within 30 days of the charge."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Statutory rights"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nothing in this policy limits or waives rights that cannot be waived under the consumer-protection law that applies to you, including the Québec Consumer Protection Act where it applies."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Currency and tax"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All prices are quoted and charged in ",e.jsx("strong",{className:"text-primary",children:"US dollars (USD)"}),", exclusive of tax. Any applicable sales tax, GST/HST or VAT is calculated and added at checkout from your billing address, and is refunded together with the price when a payment is refunded. Businesses can enter a VAT/GST number at checkout."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Seller and contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Licences are sold by ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", sole proprietor, trading as iD01t Productions, Québec, Canada. Payments are processed by Stripe; card details never reach QECTOR systems."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:"Registered address: 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7."}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Refund and billing questions:"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),". Typical response time is 1 business day. See also"," ",e.jsx(t,{to:"/terms",className:"text-cyan-300 hover:underline",children:"Terms"})," and"," ",e.jsx(t,{to:"/license",className:"text-cyan-300 hover:underline",children:"License"}),"."]})]})]})})]})}export{x as default}; diff --git a/assets/Refund-7XZ4VkKd.js b/assets/Refund-7XZ4VkKd.js deleted file mode 100644 index c4e8d42e..00000000 --- a/assets/Refund-7XZ4VkKd.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-k7aoVn24.js";import{r as t}from"./terms-DgnSX4e_.js";import"./index-CCmwjNGU.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-uYarhiMA.js";function s(){return r.jsx(o,{doc:t})}export{s as default}; diff --git a/assets/Refund-Brla-rHu.js b/assets/Refund-Brla-rHu.js deleted file mode 100644 index 547ffc78..00000000 --- a/assets/Refund-Brla-rHu.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s,P as a}from"./index-DRAXObZB.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{L as t}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function x(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Refund Policy · QECTOR",description:`QECTOR Decoder v3 refund policy: ${a.refundDays}-day money-back guarantee on your first payment of any plan, cancel renewals any time.`}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"All prices in USD · Instant digital delivery · Last updated November 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"Refund Policy",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["Every plan has a ",a.refundDays,"-day money-back guarantee on the first payment. Subscriptions renew automatically and you can cancel at any time. See"," ",e.jsx(t,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing"}),"."]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsxs("h2",{className:"text-xl font-bold mb-4",children:[a.refundDays,"-day money-back guarantee"]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["If QECTOR is not right for you, email"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with your Stripe receipt within ",a.refundDays," days of your ",e.jsx("strong",{className:"text-primary",children:"first payment"})," of any plan (Pro monthly or annual, Pro Perpetual, Lab or the Pilot). We refund it in full, no questions asked, and revoke the licence token."]}),e.jsxs("ul",{className:"text-secondary text-sm space-y-1.5",children:[e.jsx("li",{children:"• One guarantee per organisation; it applies to the first purchase, not to later renewals."}),e.jsx("li",{children:"• Refunds go back to the original payment method through Stripe, usually within 5–10 business days."}),e.jsx("li",{children:"• Once refunded, the licence ends and the token must no longer be used."})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Renewals and cancelling"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Pro (monthly or annual) and Lab are subscriptions and ",e.jsx("strong",{className:"text-primary",children:"renew automatically"})," ","until cancelled. We email a reminder 14 days before each annual renewal. Cancel any time from the link in your Stripe receipt or by emailing admin@qector.store; your licence stays valid until the end of the period you paid for."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Renewal payments are not refunded pro rata. If a renewal went through that you meant to cancel and you have not used the renewed term, write to us within 7 days and we will refund it. Pro Perpetual and the Pilot are one-time payments and never renew."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Delivery problems are not refund matters: we fix them"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["If your token never arrives, arrives corrupted, is tied to the wrong email, or fails offline verification, that is a delivery fault on our side. Do not open a dispute: email"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with your Stripe receipt and we will reissue or correct it, at no cost and with no expiry on that obligation."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Tokens are issued and emailed within minutes of successful payment (usually under 10 minutes). If it has been longer, check your spam folder first: automated licence mail is a common false positive."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Duplicate and mistaken charges"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Accidental duplicate purchases of the same plan for the same organisation, and charges made in obvious error, are always refunded in full. Email admin@qector.store with both Stripe receipts within 30 days of the charge."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Statutory rights"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nothing in this policy limits or waives rights that cannot be waived under the consumer-protection law that applies to you, including the Québec Consumer Protection Act where it applies."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Currency and tax"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All prices are quoted and charged in ",e.jsx("strong",{className:"text-primary",children:"US dollars (USD)"}),", exclusive of tax. Any applicable sales tax, GST/HST or VAT is calculated and added at checkout from your billing address, and is refunded together with the price when a payment is refunded. Businesses can enter a VAT/GST number at checkout."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Seller and contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Licences are sold by ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", sole proprietor, trading as iD01t Productions, Québec, Canada. Payments are processed by Stripe; card details never reach QECTOR systems."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:"Registered address: 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7."}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Refund and billing questions:"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),". Typical response time is 1 business day. See also"," ",e.jsx(t,{to:"/terms",className:"text-cyan-300 hover:underline",children:"Terms"})," and"," ",e.jsx(t,{to:"/license",className:"text-cyan-300 hover:underline",children:"License"}),"."]})]})]})})]})}export{x as default}; diff --git a/assets/Refund-C9DAd5MZ.js b/assets/Refund-C9DAd5MZ.js deleted file mode 100644 index 117e71ab..00000000 --- a/assets/Refund-C9DAd5MZ.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-OlrhtE5C.js";import{r as t}from"./terms-LnOasveG.js";import"./index-PdoH5kLF.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-Bsl9IGCr.js";function s(){return r.jsx(o,{doc:t})}export{s as default}; diff --git a/assets/Refund-CRV_Z2o3.js b/assets/Refund-CRV_Z2o3.js deleted file mode 100644 index f95eab8a..00000000 --- a/assets/Refund-CRV_Z2o3.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-CFP-uSSS.js";import{r as t}from"./terms-LnOasveG.js";import"./index-DayaklK-.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-uYarhiMA.js";function s(){return r.jsx(o,{doc:t})}export{s as default}; diff --git a/assets/Refund-CRy_OFTy.js b/assets/Refund-CRy_OFTy.js deleted file mode 100644 index 9340cea6..00000000 --- a/assets/Refund-CRy_OFTy.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-DvyIDT6j.js";import{r as t}from"./terms-LnOasveG.js";import"./index-Bh9DBCb3.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-D-EQoOl2.js";function d(){return r.jsx(o,{doc:t})}export{d as default}; diff --git a/assets/Refund-CTEPp265.js b/assets/Refund-CTEPp265.js deleted file mode 100644 index 19615eb8..00000000 --- a/assets/Refund-CTEPp265.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s,P as a}from"./index-BN-vOeL2.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{L as t}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function x(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Refund Policy · QECTOR",description:`QECTOR Decoder v3 refund policy: ${a.refundDays}-day money-back guarantee on your first payment of any plan, cancel renewals any time, free ${a.trialDays}-day trial before you buy.`}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"All prices in USD · Instant digital delivery · Last updated November 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"Refund Policy",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["Try it free for ",a.trialDays," days, then buy with a ",a.refundDays,"-day money-back guarantee. Plans renew automatically and you can cancel at any time. See"," ",e.jsx(t,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing"}),"."]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsxs("h2",{className:"text-xl font-bold mb-4",children:[a.refundDays,"-day money-back guarantee"]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["If QECTOR is not right for you, email"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with your Stripe receipt within ",a.refundDays," days of your ",e.jsx("strong",{className:"text-primary",children:"first payment"})," of any plan (Pro monthly or annual, Pro Perpetual, Team, Lab or the Pilot). We refund it in full, no questions asked, and revoke the licence token."]}),e.jsxs("ul",{className:"text-secondary text-sm space-y-1.5",children:[e.jsx("li",{children:"• One guarantee per organisation; it applies to the first purchase, not to later renewals."}),e.jsx("li",{children:"• Refunds go back to the original payment method through Stripe, usually within 5–10 business days."}),e.jsx("li",{children:"• Once refunded, the licence ends and the token must no longer be used."})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsxs("h2",{className:"text-xl font-bold mb-4",children:["Try before you buy: free ",a.trialDays,"-day trial"]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Request a free ",a.trialDays,"-day commercial trial on the"," ",e.jsx(t,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"pricing page"}),". No card is needed and the token simply expires, so there is nothing to cancel or refund. Larger evaluations can use the"," ",a.pilotDays,"-day Pilot, which is covered by the same money-back guarantee."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Renewals and cancelling"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Pro (monthly or annual), Team and Lab are subscriptions and ",e.jsx("strong",{className:"text-primary",children:"renew automatically"})," ","until cancelled. We email a reminder 14 days before each annual renewal. Cancel any time from the link in your Stripe receipt or by emailing admin@qector.store; your licence stays valid until the end of the period you paid for."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Renewal payments are not refunded pro rata. If a renewal went through that you meant to cancel and you have not used the renewed term, write to us within 7 days and we will refund it. Pro Perpetual and the Pilot are one-time payments and never renew."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Delivery problems are not refund matters: we fix them"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["If your token never arrives, arrives corrupted, is tied to the wrong email, or fails offline verification, that is a delivery fault on our side. Do not open a dispute: email"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with your Stripe receipt and we will reissue or correct it, at no cost and with no expiry on that obligation."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Tokens are issued and emailed within minutes of successful payment (usually under 10 minutes). If it has been longer, check your spam folder first: automated licence mail is a common false positive."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Duplicate and mistaken charges"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Accidental duplicate purchases of the same plan for the same organisation, and charges made in obvious error, are always refunded in full. Email admin@qector.store with both Stripe receipts within 30 days of the charge."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Statutory rights"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nothing in this policy limits or waives rights that cannot be waived under the consumer-protection law that applies to you, including the Québec Consumer Protection Act where it applies."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Currency and tax"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All prices are quoted and charged in ",e.jsx("strong",{className:"text-primary",children:"US dollars (USD)"}),", exclusive of tax. Any applicable sales tax, GST/HST or VAT is calculated and added at checkout from your billing address, and is refunded together with the price when a payment is refunded. Businesses can enter a VAT/GST number at checkout."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Seller and contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Licences are sold by ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", sole proprietor, trading as iD01t Productions, Québec, Canada. Payments are processed by Stripe; card details never reach QECTOR systems."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:"Registered address: 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7."}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Refund and billing questions:"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),". Typical response time is 1 business day. See also"," ",e.jsx(t,{to:"/terms",className:"text-cyan-300 hover:underline",children:"Terms"})," and"," ",e.jsx(t,{to:"/license",className:"text-cyan-300 hover:underline",children:"License"}),"."]})]})]})})]})}export{x as default}; diff --git a/assets/Refund-CrMuzabH.js b/assets/Refund-CrMuzabH.js deleted file mode 100644 index 2c0c16e7..00000000 --- a/assets/Refund-CrMuzabH.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s,P as a}from"./index-WV1aysjN.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{L as t}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function x(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Refund Policy · QECTOR",description:`QECTOR Decoder v3 refund policy: ${a.refundDays}-day money-back guarantee on your first payment of any plan, cancel renewals any time, free ${a.trialDays}-day trial before you buy.`}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"All prices in USD · Instant digital delivery · Last updated November 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"Refund Policy",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["Try it free for ",a.trialDays," days, then buy with a ",a.refundDays,"-day money-back guarantee. Plans renew automatically and you can cancel at any time. See"," ",e.jsx(t,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing"}),"."]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsxs("h2",{className:"text-xl font-bold mb-4",children:[a.refundDays,"-day money-back guarantee"]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["If QECTOR is not right for you, email"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with your Stripe receipt within ",a.refundDays," days of your ",e.jsx("strong",{className:"text-primary",children:"first payment"})," of any plan (Pro monthly or annual, Pro Perpetual, Team, Lab or the Pilot). We refund it in full, no questions asked, and revoke the licence token."]}),e.jsxs("ul",{className:"text-secondary text-sm space-y-1.5",children:[e.jsx("li",{children:"• One guarantee per organisation; it applies to the first purchase, not to later renewals."}),e.jsx("li",{children:"• Refunds go back to the original payment method through Stripe, usually within 5–10 business days."}),e.jsx("li",{children:"• Once refunded, the licence ends and the token must no longer be used."})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsxs("h2",{className:"text-xl font-bold mb-4",children:["Try before you buy: free ",a.trialDays,"-day trial"]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Request a free ",a.trialDays,"-day commercial trial on the"," ",e.jsx(t,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"pricing page"}),". No card is needed and the token simply expires, so there is nothing to cancel or refund. Larger evaluations can use the"," ",a.pilotDays,"-day Pilot, which is covered by the same money-back guarantee."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Renewals and cancelling"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Pro (monthly or annual), Team and Lab are subscriptions and ",e.jsx("strong",{className:"text-primary",children:"renew automatically"})," ","until cancelled. We email a reminder 14 days before each annual renewal. Cancel any time from the link in your Stripe receipt or by emailing admin@qector.store; your licence stays valid until the end of the period you paid for."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Renewal payments are not refunded pro rata. If a renewal went through that you meant to cancel and you have not used the renewed term, write to us within 7 days and we will refund it. Pro Perpetual and the Pilot are one-time payments and never renew."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Delivery problems are not refund matters: we fix them"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["If your token never arrives, arrives corrupted, is tied to the wrong email, or fails offline verification, that is a delivery fault on our side. Do not open a dispute: email"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with your Stripe receipt and we will reissue or correct it, at no cost and with no expiry on that obligation."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Tokens are issued and emailed within minutes of successful payment (usually under 10 minutes). If it has been longer, check your spam folder first: automated licence mail is a common false positive."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Duplicate and mistaken charges"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Accidental duplicate purchases of the same plan for the same organisation, and charges made in obvious error, are always refunded in full. Email admin@qector.store with both Stripe receipts within 30 days of the charge."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Statutory rights"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nothing in this policy limits or waives rights that cannot be waived under the consumer-protection law that applies to you, including the Québec Consumer Protection Act where it applies."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Currency and tax"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All prices are quoted and charged in ",e.jsx("strong",{className:"text-primary",children:"US dollars (USD)"}),", exclusive of tax. Any applicable sales tax, GST/HST or VAT is calculated and added at checkout from your billing address, and is refunded together with the price when a payment is refunded. Businesses can enter a VAT/GST number at checkout."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Seller and contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Licences are sold by ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", sole proprietor, trading as iD01t Productions, Québec, Canada. Payments are processed by Stripe; card details never reach QECTOR systems."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:"Registered address: 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7."}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Refund and billing questions:"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),". Typical response time is 1 business day. See also"," ",e.jsx(t,{to:"/terms",className:"text-cyan-300 hover:underline",children:"Terms"})," and"," ",e.jsx(t,{to:"/license",className:"text-cyan-300 hover:underline",children:"License"}),"."]})]})]})})]})}export{x as default}; diff --git a/assets/Refund-CtROPxer.js b/assets/Refund-CtROPxer.js deleted file mode 100644 index 70c484a4..00000000 --- a/assets/Refund-CtROPxer.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-D-Mi7GTG.js";import{r as t}from"./terms-LnOasveG.js";import"./index-c1PDYu0j.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-uYarhiMA.js";function s(){return r.jsx(o,{doc:t})}export{s as default}; diff --git a/assets/Refund-CzUjP8UP.js b/assets/Refund-CzUjP8UP.js deleted file mode 100644 index c199c38e..00000000 --- a/assets/Refund-CzUjP8UP.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s,P as a}from"./index-CqAA-ZXu.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{L as t}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function x(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Refund Policy · QECTOR",description:`QECTOR Decoder v3 refund policy: ${a.refundDays}-day money-back guarantee on your first payment of any plan, cancel renewals any time, free ${a.trialDays}-day trial before you buy.`}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"All prices in USD · Instant digital delivery · Last updated November 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"Refund Policy",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["Try it free for ",a.trialDays," days, then buy with a ",a.refundDays,"-day money-back guarantee. Plans renew automatically and you can cancel at any time. See"," ",e.jsx(t,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing"}),"."]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsxs("h2",{className:"text-xl font-bold mb-4",children:[a.refundDays,"-day money-back guarantee"]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["If QECTOR is not right for you, email"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with your Stripe receipt within ",a.refundDays," days of your ",e.jsx("strong",{className:"text-primary",children:"first payment"})," of any plan (Pro monthly or annual, Pro Perpetual, Team, Lab or the Pilot). We refund it in full, no questions asked, and revoke the licence token."]}),e.jsxs("ul",{className:"text-secondary text-sm space-y-1.5",children:[e.jsx("li",{children:"• One guarantee per organisation; it applies to the first purchase, not to later renewals."}),e.jsx("li",{children:"• Refunds go back to the original payment method through Stripe, usually within 5–10 business days."}),e.jsx("li",{children:"• Once refunded, the licence ends and the token must no longer be used."})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsxs("h2",{className:"text-xl font-bold mb-4",children:["Try before you buy: free ",a.trialDays,"-day trial"]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Request a free ",a.trialDays,"-day commercial trial on the"," ",e.jsx(t,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"pricing page"}),". No card is needed and the token simply expires, so there is nothing to cancel or refund. Larger evaluations can use the"," ",a.pilotDays,"-day Pilot, which is covered by the same money-back guarantee."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Renewals and cancelling"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Pro (monthly or annual), Team and Lab are subscriptions and ",e.jsx("strong",{className:"text-primary",children:"renew automatically"})," ","until cancelled. We email a reminder 14 days before each annual renewal. Cancel any time from the link in your Stripe receipt or by emailing admin@qector.store; your licence stays valid until the end of the period you paid for."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Renewal payments are not refunded pro rata. If a renewal went through that you meant to cancel and you have not used the renewed term, write to us within 7 days and we will refund it. Pro Perpetual and the Pilot are one-time payments and never renew."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Delivery problems are not refund matters: we fix them"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["If your token never arrives, arrives corrupted, is tied to the wrong email, or fails offline verification, that is a delivery fault on our side. Do not open a dispute: email"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with your Stripe receipt and we will reissue or correct it, at no cost and with no expiry on that obligation."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Tokens are issued and emailed within minutes of successful payment (usually under 10 minutes). If it has been longer, check your spam folder first: automated licence mail is a common false positive."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Duplicate and mistaken charges"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Accidental duplicate purchases of the same plan for the same organisation, and charges made in obvious error, are always refunded in full. Email admin@qector.store with both Stripe receipts within 30 days of the charge."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Statutory rights"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nothing in this policy limits or waives rights that cannot be waived under the consumer-protection law that applies to you, including the Québec Consumer Protection Act where it applies."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Currency and tax"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All prices are quoted and charged in ",e.jsx("strong",{className:"text-primary",children:"US dollars (USD)"}),", exclusive of tax. Any applicable sales tax, GST/HST or VAT is calculated and added at checkout from your billing address, and is refunded together with the price when a payment is refunded. Businesses can enter a VAT/GST number at checkout."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Seller and contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Licences are sold by ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", sole proprietor, trading as iD01t Productions, Québec, Canada. Payments are processed by Stripe; card details never reach QECTOR systems."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:"Registered address: 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7."}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Refund and billing questions:"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),". Typical response time is 1 business day. See also"," ",e.jsx(t,{to:"/terms",className:"text-cyan-300 hover:underline",children:"Terms"})," and"," ",e.jsx(t,{to:"/license",className:"text-cyan-300 hover:underline",children:"License"}),"."]})]})]})})]})}export{x as default}; diff --git a/assets/Refund-D6csSD1J.js b/assets/Refund-D6csSD1J.js deleted file mode 100644 index 8f71bb2e..00000000 --- a/assets/Refund-D6csSD1J.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s,P as a}from"./index-BUYYSLdX.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{L as t}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function x(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Refund Policy · QECTOR",description:`QECTOR Decoder v3 refund policy: ${a.refundDays}-day money-back guarantee on your first payment of any plan, cancel renewals any time.`}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"All prices in USD · Instant digital delivery · Last updated November 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"Refund Policy",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["Every plan has a ",a.refundDays,"-day money-back guarantee on the first payment. Subscriptions renew automatically and you can cancel at any time. See"," ",e.jsx(t,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing"}),"."]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsxs("h2",{className:"text-xl font-bold mb-4",children:[a.refundDays,"-day money-back guarantee"]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["If QECTOR is not right for you, email"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with your Stripe receipt within ",a.refundDays," days of your ",e.jsx("strong",{className:"text-primary",children:"first payment"})," of any plan (Pro monthly or annual, Pro Perpetual, Lab or the Pilot). We refund it in full, no questions asked, and revoke the licence token."]}),e.jsxs("ul",{className:"text-secondary text-sm space-y-1.5",children:[e.jsx("li",{children:"• One guarantee per organisation; it applies to the first purchase, not to later renewals."}),e.jsx("li",{children:"• Refunds go back to the original payment method through Stripe, usually within 5–10 business days."}),e.jsx("li",{children:"• Once refunded, the licence ends and the token must no longer be used."})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Renewals and cancelling"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Pro (monthly or annual) and Lab are subscriptions and ",e.jsx("strong",{className:"text-primary",children:"renew automatically"})," ","until cancelled. We email a reminder 14 days before each annual renewal. Cancel any time from the link in your Stripe receipt or by emailing admin@qector.store; your licence stays valid until the end of the period you paid for."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Renewal payments are not refunded pro rata. If a renewal went through that you meant to cancel and you have not used the renewed term, write to us within 7 days and we will refund it. Pro Perpetual and the Pilot are one-time payments and never renew."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Delivery problems are not refund matters: we fix them"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["If your token never arrives, arrives corrupted, is tied to the wrong email, or fails offline verification, that is a delivery fault on our side. Do not open a dispute: email"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with your Stripe receipt and we will reissue or correct it, at no cost and with no expiry on that obligation."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Tokens are issued and emailed within minutes of successful payment (usually under 10 minutes). If it has been longer, check your spam folder first: automated licence mail is a common false positive."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Duplicate and mistaken charges"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Accidental duplicate purchases of the same plan for the same organisation, and charges made in obvious error, are always refunded in full. Email admin@qector.store with both Stripe receipts within 30 days of the charge."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Statutory rights"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nothing in this policy limits or waives rights that cannot be waived under the consumer-protection law that applies to you, including the Québec Consumer Protection Act where it applies."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Currency and tax"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All prices are quoted and charged in ",e.jsx("strong",{className:"text-primary",children:"US dollars (USD)"}),", exclusive of tax. Any applicable sales tax, GST/HST or VAT is calculated and added at checkout from your billing address, and is refunded together with the price when a payment is refunded. Businesses can enter a VAT/GST number at checkout."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Seller and contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Licences are sold by ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", sole proprietor, trading as iD01t Productions, Québec, Canada. Payments are processed by Stripe; card details never reach QECTOR systems."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:"Registered address: 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7."}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Refund and billing questions:"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),". Typical response time is 1 business day. See also"," ",e.jsx(t,{to:"/terms",className:"text-cyan-300 hover:underline",children:"Terms"})," and"," ",e.jsx(t,{to:"/license",className:"text-cyan-300 hover:underline",children:"License"}),"."]})]})]})})]})}export{x as default}; diff --git a/assets/Refund-DJWm-f08.js b/assets/Refund-DJWm-f08.js deleted file mode 100644 index 48476b5b..00000000 --- a/assets/Refund-DJWm-f08.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as t}from"./index-BcbVjARk.js";import{N as s}from"./NeuralReveal-BflyZYSb.js";import{L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function m(){return e.jsxs(e.Fragment,{children:[e.jsx(t,{title:"Refund Policy · QECTOR",description:"QECTOR Decoder v3 refund policy. License tokens are delivered instantly and are non-refundable; the $499 60-day evaluation is the creditable way to evaluate before committing."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"All prices in USD · Instant digital delivery · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(s,{text:"Refund Policy",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["QECTOR commercial licenses are digital goods delivered immediately on payment. All sales are final. The ",e.jsx(a,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"$499 evaluation"})," exists so you can validate QECTOR before committing to an annual tier."]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"All sales are final"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Every commercial license is an Ed25519-signed token issued and emailed within minutes of successful payment (usually under 10 minutes). Because the licensed rights and the token are delivered in full and immediately, and cannot be returned or revoked once received, commercial licenses are ",e.jsx("strong",{className:"text-primary",children:"non-refundable"}),". This applies to the Commercial Evaluation License, all annual tiers, and the perpetual license."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"By completing checkout you acknowledge that delivery begins immediately and that you are purchasing a non-refundable digital license."})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Evaluate first: that is what the $499 tier is for"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["We would rather you test than request a refund. The Commercial Evaluation License is a flat, non-recurring",e.jsx("strong",{className:"text-primary",children:" $499"})," for 60 days with unlimited internal seats, intended for benchmarking, integration testing, and architecture assessment against your own workloads."]}),e.jsxs("ul",{className:"text-secondary text-sm space-y-1.5",children:[e.jsx("li",{children:"• It does not auto-renew and is not a subscription."}),e.jsx("li",{children:"• It is 100% creditable toward any annual tier purchased within 90 days of your evaluation start."}),e.jsx("li",{children:"• Example: $499 evaluation, then Solo/Indie within the window: you pay $800, not $1,299."}),e.jsx("li",{children:"• To claim the credit, email your Stripe invoice number to admin@qector.store and we invoice the difference."})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Delivery problems are not refund matters: we fix them"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["If your token never arrives, arrives corrupted, is tied to the wrong email, or fails offline verification, that is a delivery fault on our side. Do not open a dispute: email"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with your Stripe invoice number and we will reissue or correct it, at no cost and with no expiry on that obligation."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Tokens are issued and emailed within minutes of successful payment (usually under 10 minutes). If it has been longer, check your spam folder first: automated license mail is a common false positive."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Duplicate and mistaken charges"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Accidental duplicate purchases of the same tier for the same organization, and charges made in obvious error, are refunded in full on request. Email admin@qector.store with both Stripe invoice numbers within 30 days of the charge."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Cancelling an annual license"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Annual licenses are term licenses, not recurring subscriptions: they do not auto-renew, so there is nothing to cancel. Your rights simply run for the term you paid for, and we contact you before the term ends. Stopping use partway through a term does not generate a partial refund."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Statutory rights"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nothing in this policy limits or waives rights that cannot be waived under the consumer-protection law that applies to you. Where a non-waivable right to cancel a digital purchase exists and you have not yet been issued or used a license token, contact us and we will honour it."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Currency and tax"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All prices are quoted and charged in ",e.jsx("strong",{className:"text-primary",children:"US dollars (USD)"}),", exclusive of tax. Stripe adds any applicable sales tax, GST/HST, or VAT at checkout based on your billing location. Tax collected on a completed sale is remitted to the relevant authority and is refundable only where that authority allows it; tax-exempt organizations should provide a registration number at checkout rather than seek a refund afterward."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Seller and contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Licenses are sold by ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", sole proprietor, trading as iD01t Productions, Québec, Canada. Payments are processed by Stripe; card details never reach QECTOR systems."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:"Registered address: 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7."}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Refund and billing questions:"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),". Typical response time is 1 business day. See also"," ",e.jsx(a,{to:"/terms",className:"text-cyan-300 hover:underline",children:"Terms"})," and"," ",e.jsx(a,{to:"/license",className:"text-cyan-300 hover:underline",children:"License"}),"."]})]})]})})]})}export{m as default}; diff --git a/assets/Refund-DOxk_DuC.js b/assets/Refund-DOxk_DuC.js deleted file mode 100644 index fe9cbe34..00000000 --- a/assets/Refund-DOxk_DuC.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as t}from"./index-iVST85F-.js";import{N as s}from"./NeuralReveal-BflyZYSb.js";import{L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function m(){return e.jsxs(e.Fragment,{children:[e.jsx(t,{title:"Refund Policy · QECTOR",description:"QECTOR Decoder v3 refund policy. License tokens are delivered instantly and are non-refundable; the $499 60-day evaluation is the creditable way to evaluate before committing."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"All prices in USD · Instant digital delivery · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(s,{text:"Refund Policy",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["QECTOR commercial licenses are digital goods delivered immediately on payment. All sales are final. The ",e.jsx(a,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"$499 evaluation"})," exists so you can validate QECTOR before committing to an annual tier."]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"All sales are final"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Every commercial license is an Ed25519-signed token issued and emailed within minutes of successful payment (usually under 10 minutes). Because the licensed rights and the token are delivered in full and immediately, and cannot be returned or revoked once received, commercial licenses are ",e.jsx("strong",{className:"text-primary",children:"non-refundable"}),". This applies to the Commercial Evaluation License, all annual tiers, and the perpetual license."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"By completing checkout you acknowledge that delivery begins immediately and that you are purchasing a non-refundable digital license."})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Evaluate first: that is what the $499 tier is for"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["We would rather you test than request a refund. The Commercial Evaluation License is a flat, non-recurring",e.jsx("strong",{className:"text-primary",children:" $499"})," for 60 days with unlimited internal seats, intended for benchmarking, integration testing, and architecture assessment against your own workloads."]}),e.jsxs("ul",{className:"text-secondary text-sm space-y-1.5",children:[e.jsx("li",{children:"• It does not auto-renew and is not a subscription."}),e.jsx("li",{children:"• It is 100% creditable toward any annual tier purchased within 90 days of your evaluation start."}),e.jsx("li",{children:"• Example: $499 evaluation, then Solo/Indie within the window: you pay $800, not $1,299."}),e.jsx("li",{children:"• To claim the credit, email your Stripe invoice number to admin@qector.store and we invoice the difference."})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Delivery problems are not refund matters: we fix them"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["If your token never arrives, arrives corrupted, is tied to the wrong email, or fails offline verification, that is a delivery fault on our side. Do not open a dispute: email"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with your Stripe invoice number and we will reissue or correct it, at no cost and with no expiry on that obligation."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Tokens are issued and emailed within minutes of successful payment (usually under 10 minutes). If it has been longer, check your spam folder first: automated license mail is a common false positive."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Duplicate and mistaken charges"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Accidental duplicate purchases of the same tier for the same organization, and charges made in obvious error, are refunded in full on request. Email admin@qector.store with both Stripe invoice numbers within 30 days of the charge."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Cancelling an annual license"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Annual licenses are term licenses, not recurring subscriptions: they do not auto-renew, so there is nothing to cancel. Your rights simply run for the term you paid for, and we contact you before the term ends. Stopping use partway through a term does not generate a partial refund."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Statutory rights"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nothing in this policy limits or waives rights that cannot be waived under the consumer-protection law that applies to you. Where a non-waivable right to cancel a digital purchase exists and you have not yet been issued or used a license token, contact us and we will honour it."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Currency and tax"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All prices are quoted and charged in ",e.jsx("strong",{className:"text-primary",children:"US dollars (USD)"}),", exclusive of tax. Stripe adds any applicable sales tax, GST/HST, or VAT at checkout based on your billing location. Tax collected on a completed sale is remitted to the relevant authority and is refundable only where that authority allows it; tax-exempt organizations should provide a registration number at checkout rather than seek a refund afterward."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Seller and contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Licenses are sold by ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", sole proprietor, trading as iD01t Productions, Québec, Canada. Payments are processed by Stripe; card details never reach QECTOR systems."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:"Registered address: 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7."}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Refund and billing questions:"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),". Typical response time is 1 business day. See also"," ",e.jsx(a,{to:"/terms",className:"text-cyan-300 hover:underline",children:"Terms"})," and"," ",e.jsx(a,{to:"/license",className:"text-cyan-300 hover:underline",children:"License"}),"."]})]})]})})]})}export{m as default}; diff --git a/assets/Refund-DahbRJTv.js b/assets/Refund-DahbRJTv.js deleted file mode 100644 index c37c08f7..00000000 --- a/assets/Refund-DahbRJTv.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-BXZvemzZ.js";import{r as t}from"./terms-LnOasveG.js";import"./index-CcwlvHYJ.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-Bsl9IGCr.js";function s(){return r.jsx(o,{doc:t})}export{s as default}; diff --git a/assets/Refund-DehBoW1l.js b/assets/Refund-DehBoW1l.js deleted file mode 100644 index 462dabdc..00000000 --- a/assets/Refund-DehBoW1l.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as t}from"./index-_BpMZhV3.js";import{N as s}from"./NeuralReveal-BflyZYSb.js";import{L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function m(){return e.jsxs(e.Fragment,{children:[e.jsx(t,{title:"Refund Policy · QECTOR",description:"QECTOR Decoder v3 refund policy. License tokens are delivered instantly and are non-refundable; the $499 60-day evaluation is the creditable way to evaluate before committing."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"All prices in USD · Instant digital delivery · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(s,{text:"Refund Policy",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["QECTOR commercial licenses are digital goods delivered immediately on payment. All sales are final. The ",e.jsx(a,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"$499 evaluation"})," exists so you can validate QECTOR before committing to an annual tier."]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"All sales are final"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Every commercial license is an Ed25519-signed token issued and emailed within minutes of successful payment (usually under 10 minutes). Because the licensed rights and the token are delivered in full and immediately, and cannot be returned or revoked once received, commercial licenses are ",e.jsx("strong",{className:"text-primary",children:"non-refundable"}),". This applies to the Commercial Evaluation License, all annual tiers, and the perpetual license."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"By completing checkout you acknowledge that delivery begins immediately and that you are purchasing a non-refundable digital license."})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Evaluate first: that is what the $499 tier is for"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["We would rather you test than request a refund. The Commercial Evaluation License is a flat, non-recurring",e.jsx("strong",{className:"text-primary",children:" $499"})," for 60 days with unlimited internal seats, intended for benchmarking, integration testing, and architecture assessment against your own workloads."]}),e.jsxs("ul",{className:"text-secondary text-sm space-y-1.5",children:[e.jsx("li",{children:"• It does not auto-renew and is not a subscription."}),e.jsx("li",{children:"• It is 100% creditable toward any annual tier purchased within 90 days of your evaluation start."}),e.jsx("li",{children:"• Example: $499 evaluation, then Solo/Indie within the window: you pay $800, not $1,299."}),e.jsx("li",{children:"• To claim the credit, email your Stripe invoice number to admin@qector.store and we invoice the difference."})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Delivery problems are not refund matters: we fix them"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["If your token never arrives, arrives corrupted, is tied to the wrong email, or fails offline verification, that is a delivery fault on our side. Do not open a dispute: email"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with your Stripe invoice number and we will reissue or correct it, at no cost and with no expiry on that obligation."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Tokens are issued and emailed within minutes of successful payment (usually under 10 minutes). If it has been longer, check your spam folder first: automated license mail is a common false positive."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Duplicate and mistaken charges"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Accidental duplicate purchases of the same tier for the same organization, and charges made in obvious error, are refunded in full on request. Email admin@qector.store with both Stripe invoice numbers within 30 days of the charge."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Cancelling an annual license"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Annual licenses are term licenses, not recurring subscriptions: they do not auto-renew, so there is nothing to cancel. Your rights simply run for the term you paid for, and we contact you before the term ends. Stopping use partway through a term does not generate a partial refund."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Statutory rights"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nothing in this policy limits or waives rights that cannot be waived under the consumer-protection law that applies to you. Where a non-waivable right to cancel a digital purchase exists and you have not yet been issued or used a license token, contact us and we will honour it."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Currency and tax"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All prices are quoted and charged in ",e.jsx("strong",{className:"text-primary",children:"US dollars (USD)"}),", exclusive of tax. Stripe adds any applicable sales tax, GST/HST, or VAT at checkout based on your billing location. Tax collected on a completed sale is remitted to the relevant authority and is refundable only where that authority allows it; tax-exempt organizations should provide a registration number at checkout rather than seek a refund afterward."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Seller and contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Licenses are sold by ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", sole proprietor, trading as iD01t Productions, Québec, Canada. Payments are processed by Stripe; card details never reach QECTOR systems."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:"Registered address: 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7."}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Refund and billing questions:"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),". Typical response time is 1 business day. See also"," ",e.jsx(a,{to:"/terms",className:"text-cyan-300 hover:underline",children:"Terms"})," and"," ",e.jsx(a,{to:"/license",className:"text-cyan-300 hover:underline",children:"License"}),"."]})]})]})})]})}export{m as default}; diff --git a/assets/Refund-DgWFKD0E.js b/assets/Refund-DgWFKD0E.js deleted file mode 100644 index d0b07554..00000000 --- a/assets/Refund-DgWFKD0E.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as t}from"./index-B9kEGiWi.js";import{N as s}from"./NeuralReveal-BflyZYSb.js";import{L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function m(){return e.jsxs(e.Fragment,{children:[e.jsx(t,{title:"Refund Policy · QECTOR",description:"QECTOR Decoder v3 refund policy. License tokens are delivered instantly and are non-refundable; the $499 60-day evaluation is the creditable way to evaluate before committing."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"All prices in USD · Instant digital delivery · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(s,{text:"Refund Policy",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["QECTOR commercial licenses are digital goods delivered immediately on payment. All sales are final. The ",e.jsx(a,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"$499 evaluation"})," exists so you can validate QECTOR before committing to an annual tier."]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"All sales are final"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Every commercial license is an Ed25519-signed token issued and emailed within minutes of successful payment (usually under 10 minutes). Because the licensed rights and the token are delivered in full and immediately, and cannot be returned or revoked once received, commercial licenses are ",e.jsx("strong",{className:"text-primary",children:"non-refundable"}),". This applies to the Commercial Evaluation License, all annual tiers, and the perpetual license."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"By completing checkout you acknowledge that delivery begins immediately and that you are purchasing a non-refundable digital license."})]}),e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Evaluate first: that is what the $499 tier is for"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["We would rather you test than request a refund. The Commercial Evaluation License is a flat, non-recurring",e.jsx("strong",{className:"text-primary",children:" $499"})," for 60 days with unlimited internal seats, intended for benchmarking, integration testing, and architecture assessment against your own workloads."]}),e.jsxs("ul",{className:"text-secondary text-sm space-y-1.5",children:[e.jsx("li",{children:"• It does not auto-renew and is not a subscription."}),e.jsx("li",{children:"• It is 100% creditable toward any annual tier purchased within 90 days of your evaluation start."}),e.jsx("li",{children:"• Example: $499 evaluation, then Solo/Indie within the window: you pay $800, not $1,299."}),e.jsx("li",{children:"• To claim the credit, email your Stripe invoice number to admin@qector.store and we invoice the difference."})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Delivery problems are not refund matters: we fix them"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["If your token never arrives, arrives corrupted, is tied to the wrong email, or fails offline verification, that is a delivery fault on our side. Do not open a dispute: email"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with your Stripe invoice number and we will reissue or correct it, at no cost and with no expiry on that obligation."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Tokens are issued and emailed within minutes of successful payment (usually under 10 minutes). If it has been longer, check your spam folder first: automated license mail is a common false positive."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Duplicate and mistaken charges"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Accidental duplicate purchases of the same tier for the same organization, and charges made in obvious error, are refunded in full on request. Email admin@qector.store with both Stripe invoice numbers within 30 days of the charge."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Cancelling an annual license"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Annual licenses are term licenses, not recurring subscriptions: they do not auto-renew, so there is nothing to cancel. Your rights simply run for the term you paid for, and we contact you before the term ends. Stopping use partway through a term does not generate a partial refund."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Statutory rights"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nothing in this policy limits or waives rights that cannot be waived under the consumer-protection law that applies to you. Where a non-waivable right to cancel a digital purchase exists and you have not yet been issued or used a license token, contact us and we will honour it."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Currency and tax"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All prices are quoted and charged in ",e.jsx("strong",{className:"text-primary",children:"US dollars (USD)"}),", exclusive of tax. Stripe adds any applicable sales tax, GST/HST, or VAT at checkout based on your billing location. Tax collected on a completed sale is remitted to the relevant authority and is refundable only where that authority allows it; tax-exempt organizations should provide a registration number at checkout rather than seek a refund afterward."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Seller and contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Licenses are sold by ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", sole proprietor, trading as iD01t Productions, Québec, Canada. Payments are processed by Stripe; card details never reach QECTOR systems."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:"Registered address: 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7."}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Refund and billing questions:"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),". Typical response time is 1 business day. See also"," ",e.jsx(a,{to:"/terms",className:"text-cyan-300 hover:underline",children:"Terms"})," and"," ",e.jsx(a,{to:"/license",className:"text-cyan-300 hover:underline",children:"License"}),"."]})]})]})})]})}export{m as default}; diff --git a/assets/Refund-Dogk61Pr.js b/assets/Refund-Dogk61Pr.js deleted file mode 100644 index 6888d6a6..00000000 --- a/assets/Refund-Dogk61Pr.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-CclXHnEm.js";import{r as t}from"./terms-B2iKgo_y.js";import"./index-abfjMTlQ.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-D-EQoOl2.js";function d(){return r.jsx(o,{doc:t})}export{d as default}; diff --git a/assets/Refund-M3lrlUb1.js b/assets/Refund-M3lrlUb1.js deleted file mode 100644 index 31f021a0..00000000 --- a/assets/Refund-M3lrlUb1.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s,P as a}from"./index-CxWP17m6.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{L as t}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function x(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Refund Policy · QECTOR",description:`QECTOR Decoder v3 refund policy: ${a.refundDays}-day money-back guarantee on your first payment of any plan, cancel renewals any time.`}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"All prices in USD · Instant digital delivery · Last updated November 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"Refund Policy",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["Every plan has a ",a.refundDays,"-day money-back guarantee on the first payment. Subscriptions renew automatically and you can cancel at any time. See"," ",e.jsx(t,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing"}),"."]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsxs("h2",{className:"text-xl font-bold mb-4",children:[a.refundDays,"-day money-back guarantee"]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["If QECTOR is not right for you, email"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with your Stripe receipt within ",a.refundDays," days of your ",e.jsx("strong",{className:"text-primary",children:"first payment"})," of any plan (Pro monthly or annual, Pro Perpetual, Lab or the Pilot). We refund it in full, no questions asked, and revoke the licence token."]}),e.jsxs("ul",{className:"text-secondary text-sm space-y-1.5",children:[e.jsx("li",{children:"• One guarantee per organisation; it applies to the first purchase, not to later renewals."}),e.jsx("li",{children:"• Refunds go back to the original payment method through Stripe, usually within 5–10 business days."}),e.jsx("li",{children:"• Once refunded, the licence ends and the token must no longer be used."})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Renewals and cancelling"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Pro (monthly or annual) and Lab are subscriptions and ",e.jsx("strong",{className:"text-primary",children:"renew automatically"})," ","until cancelled. We email a reminder 14 days before each annual renewal. Cancel any time from the link in your Stripe receipt or by emailing admin@qector.store; your licence stays valid until the end of the period you paid for."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Renewal payments are not refunded pro rata. If a renewal went through that you meant to cancel and you have not used the renewed term, write to us within 7 days and we will refund it. Pro Perpetual and the Pilot are one-time payments and never renew."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Delivery problems are not refund matters: we fix them"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["If your token never arrives, arrives corrupted, is tied to the wrong email, or fails offline verification, that is a delivery fault on our side. Do not open a dispute: email"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with your Stripe receipt and we will reissue or correct it, at no cost and with no expiry on that obligation."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Tokens are issued and emailed within minutes of successful payment (usually under 10 minutes). If it has been longer, check your spam folder first: automated licence mail is a common false positive."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Duplicate and mistaken charges"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Accidental duplicate purchases of the same plan for the same organisation, and charges made in obvious error, are always refunded in full. Email admin@qector.store with both Stripe receipts within 30 days of the charge."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Statutory rights"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nothing in this policy limits or waives rights that cannot be waived under the consumer-protection law that applies to you, including the Québec Consumer Protection Act where it applies."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Currency and tax"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All prices are quoted and charged in ",e.jsx("strong",{className:"text-primary",children:"US dollars (USD)"}),", exclusive of tax. Any applicable sales tax, GST/HST or VAT is calculated and added at checkout from your billing address, and is refunded together with the price when a payment is refunded. Businesses can enter a VAT/GST number at checkout."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Seller and contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Licences are sold by ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", sole proprietor, trading as iD01t Productions, Québec, Canada. Payments are processed by Stripe; card details never reach QECTOR systems."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:"Registered address: 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7."}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Refund and billing questions:"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),". Typical response time is 1 business day. See also"," ",e.jsx(t,{to:"/terms",className:"text-cyan-300 hover:underline",children:"Terms"})," and"," ",e.jsx(t,{to:"/license",className:"text-cyan-300 hover:underline",children:"License"}),"."]})]})]})})]})}export{x as default}; diff --git a/assets/Refund-Maay4b_R.js b/assets/Refund-Maay4b_R.js deleted file mode 100644 index 156cbda6..00000000 --- a/assets/Refund-Maay4b_R.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s,P as a}from"./index-DlmjLVYe.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{L as t}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function x(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Refund Policy · QECTOR",description:`QECTOR Decoder v3 refund policy: ${a.refundDays}-day money-back guarantee on your first payment of any plan, cancel renewals any time, free ${a.trialDays}-day trial before you buy.`}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"All prices in USD · Instant digital delivery · Last updated November 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"Refund Policy",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["Try it free for ",a.trialDays," days, then buy with a ",a.refundDays,"-day money-back guarantee. Plans renew automatically and you can cancel at any time. See"," ",e.jsx(t,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing"}),"."]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsxs("h2",{className:"text-xl font-bold mb-4",children:[a.refundDays,"-day money-back guarantee"]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["If QECTOR is not right for you, email"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with your Stripe receipt within ",a.refundDays," days of your ",e.jsx("strong",{className:"text-primary",children:"first payment"})," of any plan (Pro monthly or annual, Pro Perpetual, Team, Lab or the Pilot). We refund it in full, no questions asked, and revoke the licence token."]}),e.jsxs("ul",{className:"text-secondary text-sm space-y-1.5",children:[e.jsx("li",{children:"• One guarantee per organisation; it applies to the first purchase, not to later renewals."}),e.jsx("li",{children:"• Refunds go back to the original payment method through Stripe, usually within 5–10 business days."}),e.jsx("li",{children:"• Once refunded, the licence ends and the token must no longer be used."})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsxs("h2",{className:"text-xl font-bold mb-4",children:["Try before you buy: free ",a.trialDays,"-day trial"]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Request a free ",a.trialDays,"-day commercial trial on the"," ",e.jsx(t,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"pricing page"}),". No card is needed and the token simply expires, so there is nothing to cancel or refund. Larger evaluations can use the"," ",a.pilotDays,"-day Pilot, which is covered by the same money-back guarantee."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Renewals and cancelling"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Pro (monthly or annual), Team and Lab are subscriptions and ",e.jsx("strong",{className:"text-primary",children:"renew automatically"})," ","until cancelled. We email a reminder 14 days before each annual renewal. Cancel any time from the link in your Stripe receipt or by emailing admin@qector.store; your licence stays valid until the end of the period you paid for."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Renewal payments are not refunded pro rata. If a renewal went through that you meant to cancel and you have not used the renewed term, write to us within 7 days and we will refund it. Pro Perpetual and the Pilot are one-time payments and never renew."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Delivery problems are not refund matters: we fix them"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["If your token never arrives, arrives corrupted, is tied to the wrong email, or fails offline verification, that is a delivery fault on our side. Do not open a dispute: email"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with your Stripe receipt and we will reissue or correct it, at no cost and with no expiry on that obligation."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Tokens are issued and emailed within minutes of successful payment (usually under 10 minutes). If it has been longer, check your spam folder first: automated licence mail is a common false positive."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Duplicate and mistaken charges"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Accidental duplicate purchases of the same plan for the same organisation, and charges made in obvious error, are always refunded in full. Email admin@qector.store with both Stripe receipts within 30 days of the charge."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Statutory rights"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nothing in this policy limits or waives rights that cannot be waived under the consumer-protection law that applies to you, including the Québec Consumer Protection Act where it applies."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Currency and tax"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All prices are quoted and charged in ",e.jsx("strong",{className:"text-primary",children:"US dollars (USD)"}),", exclusive of tax. Any applicable sales tax, GST/HST or VAT is calculated and added at checkout from your billing address, and is refunded together with the price when a payment is refunded. Businesses can enter a VAT/GST number at checkout."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Seller and contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Licences are sold by ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", sole proprietor, trading as iD01t Productions, Québec, Canada. Payments are processed by Stripe; card details never reach QECTOR systems."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:"Registered address: 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7."}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Refund and billing questions:"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),". Typical response time is 1 business day. See also"," ",e.jsx(t,{to:"/terms",className:"text-cyan-300 hover:underline",children:"Terms"})," and"," ",e.jsx(t,{to:"/license",className:"text-cyan-300 hover:underline",children:"License"}),"."]})]})]})})]})}export{x as default}; diff --git a/assets/Refund-wy-XPTpv.js b/assets/Refund-wy-XPTpv.js deleted file mode 100644 index c98e63c0..00000000 --- a/assets/Refund-wy-XPTpv.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s,P as a}from"./index-DkYdPRY7.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{L as t}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function x(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Refund Policy · QECTOR",description:`QECTOR Decoder v3 refund policy: ${a.refundDays}-day money-back guarantee on your first payment of any plan, cancel renewals any time.`}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"All prices in USD · Instant digital delivery · Last updated November 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"Refund Policy",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["Every plan has a ",a.refundDays,"-day money-back guarantee on the first payment. Subscriptions renew automatically and you can cancel at any time. See"," ",e.jsx(t,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"Pricing"}),"."]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsxs("h2",{className:"text-xl font-bold mb-4",children:[a.refundDays,"-day money-back guarantee"]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["If QECTOR is not right for you, email"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with your Stripe receipt within ",a.refundDays," days of your ",e.jsx("strong",{className:"text-primary",children:"first payment"})," of any plan (Pro monthly or annual, Pro Perpetual, Lab or the Pilot). We refund it in full, no questions asked, and revoke the licence token."]}),e.jsxs("ul",{className:"text-secondary text-sm space-y-1.5",children:[e.jsx("li",{children:"• One guarantee per organisation; it applies to the first purchase, not to later renewals."}),e.jsx("li",{children:"• Refunds go back to the original payment method through Stripe, usually within 5–10 business days."}),e.jsx("li",{children:"• Once refunded, the licence ends and the token must no longer be used."})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Renewals and cancelling"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Pro (monthly or annual) and Lab are subscriptions and ",e.jsx("strong",{className:"text-primary",children:"renew automatically"})," ","until cancelled. We email a reminder 14 days before each annual renewal. Cancel any time from the link in your Stripe receipt or by emailing admin@qector.store; your licence stays valid until the end of the period you paid for."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Renewal payments are not refunded pro rata. If a renewal went through that you meant to cancel and you have not used the renewed term, write to us within 7 days and we will refund it. Pro Perpetual and the Pilot are one-time payments and never renew."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Delivery problems are not refund matters: we fix them"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["If your token never arrives, arrives corrupted, is tied to the wrong email, or fails offline verification, that is a delivery fault on our side. Do not open a dispute: email"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with your Stripe receipt and we will reissue or correct it, at no cost and with no expiry on that obligation."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Tokens are issued and emailed within minutes of successful payment (usually under 10 minutes). If it has been longer, check your spam folder first: automated licence mail is a common false positive."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Duplicate and mistaken charges"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Accidental duplicate purchases of the same plan for the same organisation, and charges made in obvious error, are always refunded in full. Email admin@qector.store with both Stripe receipts within 30 days of the charge."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Statutory rights"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nothing in this policy limits or waives rights that cannot be waived under the consumer-protection law that applies to you, including the Québec Consumer Protection Act where it applies."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Currency and tax"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All prices are quoted and charged in ",e.jsx("strong",{className:"text-primary",children:"US dollars (USD)"}),", exclusive of tax. Any applicable sales tax, GST/HST or VAT is calculated and added at checkout from your billing address, and is refunded together with the price when a payment is refunded. Businesses can enter a VAT/GST number at checkout."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Seller and contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Licences are sold by ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", sole proprietor, trading as iD01t Productions, Québec, Canada. Payments are processed by Stripe; card details never reach QECTOR systems."]}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:"Registered address: 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7."}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Refund and billing questions:"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),". Typical response time is 1 business day. See also"," ",e.jsx(t,{to:"/terms",className:"text-cyan-300 hover:underline",children:"Terms"})," and"," ",e.jsx(t,{to:"/license",className:"text-cyan-300 hover:underline",children:"License"}),"."]})]})]})})]})}export{x as default}; diff --git a/assets/RefundFR-8Zk51nsW.js b/assets/RefundFR-8Zk51nsW.js deleted file mode 100644 index a343078a..00000000 --- a/assets/RefundFR-8Zk51nsW.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-BXZvemzZ.js";import{b as t}from"./terms-LnOasveG.js";import"./index-CcwlvHYJ.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-Bsl9IGCr.js";function n(){return r.jsx(o,{doc:t})}export{n as default}; diff --git a/assets/RefundFR-Bvjoj9dF.js b/assets/RefundFR-Bvjoj9dF.js deleted file mode 100644 index 90c520c6..00000000 --- a/assets/RefundFR-Bvjoj9dF.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-OlrhtE5C.js";import{b as t}from"./terms-LnOasveG.js";import"./index-PdoH5kLF.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-Bsl9IGCr.js";function n(){return r.jsx(o,{doc:t})}export{n as default}; diff --git a/assets/RefundFR-Bw4xCJhz.js b/assets/RefundFR-Bw4xCJhz.js deleted file mode 100644 index b146f179..00000000 --- a/assets/RefundFR-Bw4xCJhz.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-D-Mi7GTG.js";import{b as t}from"./terms-LnOasveG.js";import"./index-c1PDYu0j.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-uYarhiMA.js";function n(){return r.jsx(o,{doc:t})}export{n as default}; diff --git a/assets/RefundFR-Di2o3oj1.js b/assets/RefundFR-Di2o3oj1.js deleted file mode 100644 index 4ef685e3..00000000 --- a/assets/RefundFR-Di2o3oj1.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-CclXHnEm.js";import{b as t}from"./terms-B2iKgo_y.js";import"./index-abfjMTlQ.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-D-EQoOl2.js";function d(){return r.jsx(o,{doc:t})}export{d as default}; diff --git a/assets/RefundFR-KUCUHxUI.js b/assets/RefundFR-KUCUHxUI.js deleted file mode 100644 index 11cba67c..00000000 --- a/assets/RefundFR-KUCUHxUI.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-DvyIDT6j.js";import{b as t}from"./terms-LnOasveG.js";import"./index-Bh9DBCb3.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-D-EQoOl2.js";function d(){return r.jsx(o,{doc:t})}export{d as default}; diff --git a/assets/RefundFR-a4_cfmuo.js b/assets/RefundFR-a4_cfmuo.js deleted file mode 100644 index 7ce5bed9..00000000 --- a/assets/RefundFR-a4_cfmuo.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-CFP-uSSS.js";import{b as t}from"./terms-LnOasveG.js";import"./index-DayaklK-.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-uYarhiMA.js";function n(){return r.jsx(o,{doc:t})}export{n as default}; diff --git a/assets/RefundFR-i_PP-hSK.js b/assets/RefundFR-i_PP-hSK.js deleted file mode 100644 index 7ab79492..00000000 --- a/assets/RefundFR-i_PP-hSK.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-k7aoVn24.js";import{b as t}from"./terms-DgnSX4e_.js";import"./index-CCmwjNGU.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-uYarhiMA.js";function n(){return r.jsx(o,{doc:t})}export{n as default}; diff --git a/assets/Security-BIDsFI0G.js b/assets/Security-BIDsFI0G.js deleted file mode 100644 index a063d4a9..00000000 --- a/assets/Security-BIDsFI0G.js +++ /dev/null @@ -1,5 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as o,C as i,L as t}from"./index-CcwlvHYJ.js";import{N as d}from"./NeuralReveal-Bsl9IGCr.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";const h="https://github.com/GuillaumeLessard/qector-decoder/releases/tag/v1.0.1",x="https://github.com/GuillaumeLessard/qector-claude-plugin/releases/tag/v2.0.1",a="kYwkMApz4zMgQmJsOya1UZuByvnuikzlxQkQiA8NOJg=",m="MCowBQYDK2VwAyEAQh9t19EZ4KWZEYjY3EwHCUzUIehZBlovaMtrpLQXeGA=";function s({title:n,children:l,accent:c}){return e.jsxs("div",{className:`card-surface ${c?"border-cyan-300/25":""}`,children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:n}),e.jsx("div",{className:"text-secondary text-sm leading-relaxed space-y-3",children:l})]})}const r={target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline [overflow-wrap:anywhere]"};function f(){return e.jsxs(e.Fragment,{children:[e.jsx(o,{title:"Security & Trust · QECTOR",description:"QECTOR security and procurement pack: no telemetry, offline licence verification, Sigstore provenance on every wheel, signed releases, SBOM, vulnerability disclosure and data handling."}),e.jsxs("section",{className:"relative py-24 md:py-28 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex flex-wrap justify-center items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"No telemetry · Offline licensing · Signed releases"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Security & Trust",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Everything a security or procurement review needs, published. Every claim on this page links to an artefact you can check yourself."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsx(s,{title:"At a glance",accent:!0,children:e.jsxs("ul",{className:"space-y-2 list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"No telemetry."})," The decoder, plugin and Workbench send nothing to QECTOR: no usage data, syndromes, matrices or circuits."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Air-gapped licensing."})," Licence tokens are Ed25519 signatures verified offline against a key in the package. No licence server, no activation call."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Verified builds."})," All 18 decoder wheels are built in GitHub Actions, carry Sigstore build provenance and PEP 740 attestations, and are published with Trusted Publishing (no API token)."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Tested before release."})," Each wheel is installed on its own OS and checked against the syndrome before publishing; the receipts ship as ",e.jsx("code",{className:"font-mono text-cyan-200",children:"platform-proof.json"}),"."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Dependency gate."})," Releases are blocked while a RustSec advisory or licence-policy violation is open."]})]})}),e.jsxs(s,{title:"Verify a decoder wheel",children:[e.jsxs("p",{children:["Download from PyPI or the ",e.jsx("a",{href:h,...r,children:"v1.0.1 GitHub release"}),", then check its checksum and provenance with the GitHub CLI:"]}),e.jsx(i,{language:"bash",filename:"verify",code:`sha256sum -c SHA256SUMS --ignore-missing -gh attestation verify qector_decoder_v3-1.0.1-*.whl \\ - --repo GuillaumeLessard/qector-decoder`}),e.jsx("p",{children:`PyPI also shows each file's attestations under "Verified details".`})]}),e.jsxs(s,{title:"Verify the Claude plugin",children:[e.jsxs("p",{children:["The ",e.jsx("a",{href:x,...r,children:"plugin v2.0.1 release"})," ships ",e.jsx("code",{className:"font-mono text-cyan-200",children:"SHA256SUMS"}),", an Ed25519 signature over it, an SPDX 2.3 SBOM, a release manifest and provenance. Verify with the release-signing public key:"]}),e.jsx(i,{language:"bash",filename:"verify",code:`sha256sum -c SHA256SUMS -python scripts/sign_release.py --verify . \\ - --pubkey ${a}`}),e.jsxs("p",{children:["Every Python dependency of the plugin is pinned by SHA-256 in ",e.jsx("code",{className:"font-mono text-cyan-200",children:"requirements.lock"})," and installed with ",e.jsx("code",{className:"font-mono text-cyan-200",children:"--require-hashes"}),"."]})]}),e.jsxs(s,{title:"Public keys",children:[e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full text-left",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline",children:[e.jsx("th",{className:"py-2 pr-4 text-primary",children:"Key"}),e.jsx("th",{className:"py-2 text-primary",children:"Value"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{className:"border-b border-gridline/50 align-top",children:[e.jsx("td",{className:"py-2 pr-4 text-primary",children:"Plugin release signing (Ed25519, raw base64)"}),e.jsx("td",{className:"py-2 font-mono text-xs break-all",children:a})]}),e.jsxs("tr",{className:"align-top",children:[e.jsx("td",{className:"py-2 pr-4 text-primary",children:"Decoder licence verification (Ed25519, SPKI DER base64)"}),e.jsx("td",{className:"py-2 font-mono text-xs break-all",children:m})]})]})]})}),e.jsx("p",{children:"The licence key is embedded in the package; it only verifies tokens and cannot issue them."})]}),e.jsxs(s,{title:"Data handling",children:[e.jsxs("p",{children:["We hold only purchase and licence records (organisation, e-mail, plan, receipt, token) and support messages. Card data stays with Stripe. Details, providers and retention are in the"," ",e.jsx(t,{to:"/privacy",className:"text-cyan-300 hover:underline",children:"Privacy Policy"}),", written for Québec's Law 25."]}),e.jsxs("p",{children:["Revoked licences are published at"," ",e.jsx("a",{href:"https://qector.store/stripe/revoked.txt",...r,children:"qector.store/stripe/revoked.txt"}),"; air-gapped sites can copy it to ",e.jsx("code",{className:"font-mono text-cyan-200",children:"~/.qector/revoked.txt"}),"."]})]}),e.jsxs(s,{title:"Report a vulnerability",children:[e.jsxs("p",{children:["E-mail ",e.jsx("a",{href:"mailto:admin@qector.store?subject=%5BSECURITY%5D%20QECTOR%20disclosure",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with the subject ",e.jsx("code",{className:"font-mono text-cyan-200",children:"[SECURITY] QECTOR disclosure"}),". Include the component, version, platform, reproduction steps and impact. Please do not publish details before a fix is available."]}),e.jsxs("p",{children:["We acknowledge reports within 5 business days and coordinate disclosure with you. Supported versions: decoder 1.0.x and Claude plugin 2.0.x. Full policy:"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder/blob/main/SECURITY.md",...r,children:"decoder SECURITY.md"}),","," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin/blob/main/SECURITY.md",...r,children:"plugin SECURITY.md"}),", and"," ",e.jsx("a",{href:"/.well-known/security.txt",className:"text-cyan-300 hover:underline",children:"security.txt"}),"."]})]}),e.jsx(s,{title:"Procurement",children:e.jsxs("ul",{className:"space-y-2 list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Seller:"})," Guillaume Lessard, sole proprietor trading as iD01t Productions, 2004 De Lorimier, Longueuil, Québec, Canada J4K 3H7."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Contract:"})," the ",e.jsx(t,{to:"/license-agreement",className:"text-cyan-300 hover:underline",children:"Commercial Licence Agreement"})," (",e.jsx(t,{to:"/fr/license-agreement",className:"text-cyan-300 hover:underline",children:"français"}),"); Enterprise deals use a signed agreement."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Payment:"})," card or invoice through Stripe, in USD; tax numbers accepted at checkout."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"On request:"})," W-8BEN for US customers, completed security questionnaires, and a call with the developer. Write to ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})})]})})]})}export{f as default}; diff --git a/assets/Security-CHoU1bHv.js b/assets/Security-CHoU1bHv.js deleted file mode 100644 index 0f164e38..00000000 --- a/assets/Security-CHoU1bHv.js +++ /dev/null @@ -1,5 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as o,C as i,L as t}from"./index-PdoH5kLF.js";import{N as d}from"./NeuralReveal-Bsl9IGCr.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const h="https://github.com/GuillaumeLessard/qector-decoder/releases/tag/v1.0.1",x="https://github.com/GuillaumeLessard/qector-claude-plugin/releases/tag/v2.0.1",a="kYwkMApz4zMgQmJsOya1UZuByvnuikzlxQkQiA8NOJg=",m="MCowBQYDK2VwAyEAQh9t19EZ4KWZEYjY3EwHCUzUIehZBlovaMtrpLQXeGA=";function s({title:n,children:l,accent:c}){return e.jsxs("div",{className:`card-surface ${c?"border-cyan-300/25":""}`,children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:n}),e.jsx("div",{className:"text-secondary text-sm leading-relaxed space-y-3",children:l})]})}const r={target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline [overflow-wrap:anywhere]"};function f(){return e.jsxs(e.Fragment,{children:[e.jsx(o,{title:"Security & Trust · QECTOR",description:"QECTOR security and procurement pack: no telemetry, offline licence verification, Sigstore provenance on every wheel, signed releases, SBOM, vulnerability disclosure and data handling."}),e.jsxs("section",{className:"relative py-24 md:py-28 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex flex-wrap justify-center items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"No telemetry · Offline licensing · Signed releases"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Security & Trust",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Everything a security or procurement review needs, published. Every claim on this page links to an artefact you can check yourself."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsx(s,{title:"At a glance",accent:!0,children:e.jsxs("ul",{className:"space-y-2 list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"No telemetry."})," The decoder, plugin and Workbench send nothing to QECTOR: no usage data, syndromes, matrices or circuits."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Air-gapped licensing."})," Licence tokens are Ed25519 signatures verified offline against a key in the package. No licence server, no activation call."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Verified builds."})," All 18 decoder wheels are built in GitHub Actions, carry Sigstore build provenance and PEP 740 attestations, and are published with Trusted Publishing (no API token)."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Tested before release."})," Each wheel is installed on its own OS and checked against the syndrome before publishing; the receipts ship as ",e.jsx("code",{className:"font-mono text-cyan-200",children:"platform-proof.json"}),"."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Dependency gate."})," Releases are blocked while a RustSec advisory or licence-policy violation is open."]})]})}),e.jsxs(s,{title:"Verify a decoder wheel",children:[e.jsxs("p",{children:["Download from PyPI or the ",e.jsx("a",{href:h,...r,children:"v1.0.1 GitHub release"}),", then check its checksum and provenance with the GitHub CLI:"]}),e.jsx(i,{language:"bash",filename:"verify",code:`sha256sum -c SHA256SUMS --ignore-missing -gh attestation verify qector_decoder_v3-1.0.1-*.whl \\ - --repo GuillaumeLessard/qector-decoder`}),e.jsx("p",{children:`PyPI also shows each file's attestations under "Verified details".`})]}),e.jsxs(s,{title:"Verify the Claude plugin",children:[e.jsxs("p",{children:["The ",e.jsx("a",{href:x,...r,children:"plugin v2.0.1 release"})," ships ",e.jsx("code",{className:"font-mono text-cyan-200",children:"SHA256SUMS"}),", an Ed25519 signature over it, an SPDX 2.3 SBOM, a release manifest and provenance. Verify with the release-signing public key:"]}),e.jsx(i,{language:"bash",filename:"verify",code:`sha256sum -c SHA256SUMS -python scripts/sign_release.py --verify . \\ - --pubkey ${a}`}),e.jsxs("p",{children:["Every Python dependency of the plugin is pinned by SHA-256 in ",e.jsx("code",{className:"font-mono text-cyan-200",children:"requirements.lock"})," and installed with ",e.jsx("code",{className:"font-mono text-cyan-200",children:"--require-hashes"}),"."]})]}),e.jsxs(s,{title:"Public keys",children:[e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full text-left",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline",children:[e.jsx("th",{className:"py-2 pr-4 text-primary",children:"Key"}),e.jsx("th",{className:"py-2 text-primary",children:"Value"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{className:"border-b border-gridline/50 align-top",children:[e.jsx("td",{className:"py-2 pr-4 text-primary",children:"Plugin release signing (Ed25519, raw base64)"}),e.jsx("td",{className:"py-2 font-mono text-xs break-all",children:a})]}),e.jsxs("tr",{className:"align-top",children:[e.jsx("td",{className:"py-2 pr-4 text-primary",children:"Decoder licence verification (Ed25519, SPKI DER base64)"}),e.jsx("td",{className:"py-2 font-mono text-xs break-all",children:m})]})]})]})}),e.jsx("p",{children:"The licence key is embedded in the package; it only verifies tokens and cannot issue them."})]}),e.jsxs(s,{title:"Data handling",children:[e.jsxs("p",{children:["We hold only purchase and licence records (organisation, e-mail, plan, receipt, token) and support messages. Card data stays with Stripe. Details, providers and retention are in the"," ",e.jsx(t,{to:"/privacy",className:"text-cyan-300 hover:underline",children:"Privacy Policy"}),", written for Québec's Law 25."]}),e.jsxs("p",{children:["Revoked licences are published at"," ",e.jsx("a",{href:"https://qector.store/stripe/revoked.txt",...r,children:"qector.store/stripe/revoked.txt"}),"; air-gapped sites can copy it to ",e.jsx("code",{className:"font-mono text-cyan-200",children:"~/.qector/revoked.txt"}),"."]})]}),e.jsxs(s,{title:"Report a vulnerability",children:[e.jsxs("p",{children:["E-mail ",e.jsx("a",{href:"mailto:admin@qector.store?subject=%5BSECURITY%5D%20QECTOR%20disclosure",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with the subject ",e.jsx("code",{className:"font-mono text-cyan-200",children:"[SECURITY] QECTOR disclosure"}),". Include the component, version, platform, reproduction steps and impact. Please do not publish details before a fix is available."]}),e.jsxs("p",{children:["We acknowledge reports within 5 business days and coordinate disclosure with you. Supported versions: decoder 1.0.x and Claude plugin 2.0.x. Full policy:"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder/blob/main/SECURITY.md",...r,children:"decoder SECURITY.md"}),","," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin/blob/main/SECURITY.md",...r,children:"plugin SECURITY.md"}),", and"," ",e.jsx("a",{href:"/.well-known/security.txt",className:"text-cyan-300 hover:underline",children:"security.txt"}),"."]})]}),e.jsx(s,{title:"Procurement",children:e.jsxs("ul",{className:"space-y-2 list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Seller:"})," Guillaume Lessard, sole proprietor trading as iD01t Productions, 2004 De Lorimier, Longueuil, Québec, Canada J4K 3H7."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Contract:"})," the ",e.jsx(t,{to:"/license-agreement",className:"text-cyan-300 hover:underline",children:"Commercial Licence Agreement"})," (",e.jsx(t,{to:"/fr/license-agreement",className:"text-cyan-300 hover:underline",children:"français"}),"); Enterprise deals use a signed agreement."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Payment:"})," card or invoice through Stripe, in USD; tax numbers accepted at checkout."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"On request:"})," W-8BEN for US customers, completed security questionnaires, and a call with the developer. Write to ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})})]})})]})}export{f as default}; diff --git a/assets/Security-CMQacbrM.js b/assets/Security-CMQacbrM.js deleted file mode 100644 index 850cac86..00000000 --- a/assets/Security-CMQacbrM.js +++ /dev/null @@ -1,5 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as o,C as i}from"./index-Bh9DBCb3.js";import{N as d}from"./NeuralReveal-D-EQoOl2.js";import{L as t}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const h="https://github.com/GuillaumeLessard/qector-decoder/releases/tag/v1.0.1",x="https://github.com/GuillaumeLessard/qector-claude-plugin/releases/tag/v2.0.1",a="kYwkMApz4zMgQmJsOya1UZuByvnuikzlxQkQiA8NOJg=",m="MCowBQYDK2VwAyEAQh9t19EZ4KWZEYjY3EwHCUzUIehZBlovaMtrpLQXeGA=";function s({title:n,children:l,accent:c}){return e.jsxs("div",{className:`card-surface ${c?"border-cyan-300/25":""}`,children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:n}),e.jsx("div",{className:"text-secondary text-sm leading-relaxed space-y-3",children:l})]})}const r={target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline [overflow-wrap:anywhere]"};function v(){return e.jsxs(e.Fragment,{children:[e.jsx(o,{title:"Security & Trust · QECTOR",description:"QECTOR security and procurement pack: no telemetry, offline licence verification, Sigstore provenance on every wheel, signed releases, SBOM, vulnerability disclosure and data handling."}),e.jsxs("section",{className:"relative py-24 md:py-28 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex flex-wrap justify-center items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"No telemetry · Offline licensing · Signed releases"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Security & Trust",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Everything a security or procurement review needs, published. Every claim on this page links to an artefact you can check yourself."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsx(s,{title:"At a glance",accent:!0,children:e.jsxs("ul",{className:"space-y-2 list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"No telemetry."})," The decoder, plugin and Workbench send nothing to QECTOR: no usage data, syndromes, matrices or circuits."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Air-gapped licensing."})," Licence tokens are Ed25519 signatures verified offline against a key in the package. No licence server, no activation call."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Verified builds."})," All 18 decoder wheels are built in GitHub Actions, carry Sigstore build provenance and PEP 740 attestations, and are published with Trusted Publishing (no API token)."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Tested before release."})," Each wheel is installed on its own OS and checked against the syndrome before publishing; the receipts ship as ",e.jsx("code",{className:"font-mono text-cyan-200",children:"platform-proof.json"}),"."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Dependency gate."})," Releases are blocked while a RustSec advisory or licence-policy violation is open."]})]})}),e.jsxs(s,{title:"Verify a decoder wheel",children:[e.jsxs("p",{children:["Download from PyPI or the ",e.jsx("a",{href:h,...r,children:"v1.0.1 GitHub release"}),", then check its checksum and provenance with the GitHub CLI:"]}),e.jsx(i,{language:"bash",filename:"verify",code:`sha256sum -c SHA256SUMS --ignore-missing -gh attestation verify qector_decoder_v3-1.0.1-*.whl \\ - --repo GuillaumeLessard/qector-decoder`}),e.jsx("p",{children:`PyPI also shows each file's attestations under "Verified details".`})]}),e.jsxs(s,{title:"Verify the Claude plugin",children:[e.jsxs("p",{children:["The ",e.jsx("a",{href:x,...r,children:"plugin v2.0.1 release"})," ships ",e.jsx("code",{className:"font-mono text-cyan-200",children:"SHA256SUMS"}),", an Ed25519 signature over it, an SPDX 2.3 SBOM, a release manifest and provenance. Verify with the release-signing public key:"]}),e.jsx(i,{language:"bash",filename:"verify",code:`sha256sum -c SHA256SUMS -python scripts/sign_release.py --verify . \\ - --pubkey ${a}`}),e.jsxs("p",{children:["Every Python dependency of the plugin is pinned by SHA-256 in ",e.jsx("code",{className:"font-mono text-cyan-200",children:"requirements.lock"})," and installed with ",e.jsx("code",{className:"font-mono text-cyan-200",children:"--require-hashes"}),"."]})]}),e.jsxs(s,{title:"Public keys",children:[e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full text-left",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline",children:[e.jsx("th",{className:"py-2 pr-4 text-primary",children:"Key"}),e.jsx("th",{className:"py-2 text-primary",children:"Value"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{className:"border-b border-gridline/50 align-top",children:[e.jsx("td",{className:"py-2 pr-4 text-primary",children:"Plugin release signing (Ed25519, raw base64)"}),e.jsx("td",{className:"py-2 font-mono text-xs break-all",children:a})]}),e.jsxs("tr",{className:"align-top",children:[e.jsx("td",{className:"py-2 pr-4 text-primary",children:"Decoder licence verification (Ed25519, SPKI DER base64)"}),e.jsx("td",{className:"py-2 font-mono text-xs break-all",children:m})]})]})]})}),e.jsx("p",{children:"The licence key is embedded in the package; it only verifies tokens and cannot issue them."})]}),e.jsxs(s,{title:"Data handling",children:[e.jsxs("p",{children:["We hold only purchase and licence records (organisation, e-mail, plan, receipt, token) and support messages. Card data stays with Stripe. Details, providers and retention are in the"," ",e.jsx(t,{to:"/privacy",className:"text-cyan-300 hover:underline",children:"Privacy Policy"}),", written for Québec's Law 25."]}),e.jsxs("p",{children:["Revoked licences are published at"," ",e.jsx("a",{href:"https://qector.store/stripe/revoked.txt",...r,children:"qector.store/stripe/revoked.txt"}),"; air-gapped sites can copy it to ",e.jsx("code",{className:"font-mono text-cyan-200",children:"~/.qector/revoked.txt"}),"."]})]}),e.jsxs(s,{title:"Report a vulnerability",children:[e.jsxs("p",{children:["E-mail ",e.jsx("a",{href:"mailto:admin@qector.store?subject=%5BSECURITY%5D%20QECTOR%20disclosure",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with the subject ",e.jsx("code",{className:"font-mono text-cyan-200",children:"[SECURITY] QECTOR disclosure"}),". Include the component, version, platform, reproduction steps and impact. Please do not publish details before a fix is available."]}),e.jsxs("p",{children:["We acknowledge reports within 5 business days and coordinate disclosure with you. Supported versions: decoder 1.0.x and Claude plugin 2.0.x. Full policy:"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder/blob/main/SECURITY.md",...r,children:"decoder SECURITY.md"}),","," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin/blob/main/SECURITY.md",...r,children:"plugin SECURITY.md"}),", and"," ",e.jsx("a",{href:"/.well-known/security.txt",className:"text-cyan-300 hover:underline",children:"security.txt"}),"."]})]}),e.jsx(s,{title:"Procurement",children:e.jsxs("ul",{className:"space-y-2 list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Seller:"})," Guillaume Lessard, sole proprietor trading as iD01t Productions, 2004 De Lorimier, Longueuil, Québec, Canada J4K 3H7."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Contract:"})," the ",e.jsx(t,{to:"/license-agreement",className:"text-cyan-300 hover:underline",children:"Commercial Licence Agreement"})," (",e.jsx(t,{to:"/fr/license-agreement",className:"text-cyan-300 hover:underline",children:"français"}),"); Enterprise deals use a signed agreement."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Payment:"})," card or invoice through Stripe, in USD; tax numbers accepted at checkout."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"On request:"})," W-8BEN for US customers, completed security questionnaires, and a call with the developer. Write to ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})})]})})]})}export{v as default}; diff --git a/assets/Security-Cazz61L-.js b/assets/Security-Cazz61L-.js deleted file mode 100644 index e37c98e4..00000000 --- a/assets/Security-Cazz61L-.js +++ /dev/null @@ -1,5 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as o,C as i,L as t}from"./index-DayaklK-.js";import{N as d}from"./NeuralReveal-uYarhiMA.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const h="https://github.com/GuillaumeLessard/qector-decoder/releases/tag/v1.0.1",x="https://github.com/GuillaumeLessard/qector-claude-plugin/releases/tag/v2.0.1",a="kYwkMApz4zMgQmJsOya1UZuByvnuikzlxQkQiA8NOJg=",m="MCowBQYDK2VwAyEAQh9t19EZ4KWZEYjY3EwHCUzUIehZBlovaMtrpLQXeGA=";function s({title:n,children:l,accent:c}){return e.jsxs("div",{className:`card-surface ${c?"border-cyan-300/25":""}`,children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:n}),e.jsx("div",{className:"text-secondary text-sm leading-relaxed space-y-3",children:l})]})}const r={target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline [overflow-wrap:anywhere]"};function f(){return e.jsxs(e.Fragment,{children:[e.jsx(o,{title:"Security & Trust · QECTOR",description:"QECTOR security and procurement pack: no telemetry, offline licence verification, Sigstore provenance on every wheel, signed releases, SBOM, vulnerability disclosure and data handling."}),e.jsxs("section",{className:"relative py-24 md:py-28 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex flex-wrap justify-center items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"No telemetry · Offline licensing · Signed releases"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Security & Trust",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Everything a security or procurement review needs, published. Every claim on this page links to an artefact you can check yourself."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsx(s,{title:"At a glance",accent:!0,children:e.jsxs("ul",{className:"space-y-2 list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"No telemetry."})," The decoder, plugin and Workbench send nothing to QECTOR: no usage data, syndromes, matrices or circuits."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Air-gapped licensing."})," Licence tokens are Ed25519 signatures verified offline against a key in the package. No licence server, no activation call."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Verified builds."})," All 18 decoder wheels are built in GitHub Actions, carry Sigstore build provenance and PEP 740 attestations, and are published with Trusted Publishing (no API token)."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Tested before release."})," Each wheel is installed on its own OS and checked against the syndrome before publishing; the receipts ship as ",e.jsx("code",{className:"font-mono text-cyan-200",children:"platform-proof.json"}),"."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Dependency gate."})," Releases are blocked while a RustSec advisory or licence-policy violation is open."]})]})}),e.jsxs(s,{title:"Verify a decoder wheel",children:[e.jsxs("p",{children:["Download from PyPI or the ",e.jsx("a",{href:h,...r,children:"v1.0.1 GitHub release"}),", then check its checksum and provenance with the GitHub CLI:"]}),e.jsx(i,{language:"bash",filename:"verify",code:`sha256sum -c SHA256SUMS --ignore-missing -gh attestation verify qector_decoder_v3-1.0.1-*.whl \\ - --repo GuillaumeLessard/qector-decoder`}),e.jsx("p",{children:`PyPI also shows each file's attestations under "Verified details".`})]}),e.jsxs(s,{title:"Verify the Claude plugin",children:[e.jsxs("p",{children:["The ",e.jsx("a",{href:x,...r,children:"plugin v2.0.1 release"})," ships ",e.jsx("code",{className:"font-mono text-cyan-200",children:"SHA256SUMS"}),", an Ed25519 signature over it, an SPDX 2.3 SBOM, a release manifest and provenance. Verify with the release-signing public key:"]}),e.jsx(i,{language:"bash",filename:"verify",code:`sha256sum -c SHA256SUMS -python scripts/sign_release.py --verify . \\ - --pubkey ${a}`}),e.jsxs("p",{children:["Every Python dependency of the plugin is pinned by SHA-256 in ",e.jsx("code",{className:"font-mono text-cyan-200",children:"requirements.lock"})," and installed with ",e.jsx("code",{className:"font-mono text-cyan-200",children:"--require-hashes"}),"."]})]}),e.jsxs(s,{title:"Public keys",children:[e.jsx("div",{className:"overflow-x-auto",tabIndex:0,role:"region","aria-label":"Public keys",children:e.jsxs("table",{className:"w-full text-left",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline",children:[e.jsx("th",{className:"py-2 pr-4 text-primary",children:"Key"}),e.jsx("th",{className:"py-2 text-primary",children:"Value"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{className:"border-b border-gridline/50 align-top",children:[e.jsx("td",{className:"py-2 pr-4 text-primary",children:"Plugin release signing (Ed25519, raw base64)"}),e.jsx("td",{className:"py-2 font-mono text-xs break-all",children:a})]}),e.jsxs("tr",{className:"align-top",children:[e.jsx("td",{className:"py-2 pr-4 text-primary",children:"Decoder licence verification (Ed25519, SPKI DER base64)"}),e.jsx("td",{className:"py-2 font-mono text-xs break-all",children:m})]})]})]})}),e.jsx("p",{children:"The licence key is embedded in the package; it only verifies tokens and cannot issue them."})]}),e.jsxs(s,{title:"Data handling",children:[e.jsxs("p",{children:["We hold only purchase and licence records (organisation, e-mail, plan, receipt, token) and support messages. Card data stays with Stripe. Details, providers and retention are in the"," ",e.jsx(t,{to:"/privacy",className:"text-cyan-300 hover:underline",children:"Privacy Policy"}),", written for Québec's Law 25."]}),e.jsxs("p",{children:["Revoked licences are published at"," ",e.jsx("a",{href:"https://qector.store/stripe/revoked.txt",...r,children:"qector.store/stripe/revoked.txt"}),"; air-gapped sites can copy it to ",e.jsx("code",{className:"font-mono text-cyan-200",children:"~/.qector/revoked.txt"}),"."]})]}),e.jsxs(s,{title:"Report a vulnerability",children:[e.jsxs("p",{children:["E-mail ",e.jsx("a",{href:"mailto:admin@qector.store?subject=%5BSECURITY%5D%20QECTOR%20disclosure",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with the subject ",e.jsx("code",{className:"font-mono text-cyan-200",children:"[SECURITY] QECTOR disclosure"}),". Include the component, version, platform, reproduction steps and impact. Please do not publish details before a fix is available."]}),e.jsxs("p",{children:["We acknowledge reports within 5 business days and coordinate disclosure with you. Supported versions: decoder 1.0.x and Claude plugin 2.0.x. Full policy:"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder/blob/main/SECURITY.md",...r,children:"decoder SECURITY.md"}),","," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin/blob/main/SECURITY.md",...r,children:"plugin SECURITY.md"}),", and"," ",e.jsx("a",{href:"/.well-known/security.txt",className:"text-cyan-300 hover:underline",children:"security.txt"}),"."]})]}),e.jsx(s,{title:"Procurement",children:e.jsxs("ul",{className:"space-y-2 list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Seller:"})," Guillaume Lessard, sole proprietor trading as iD01t Productions, 2004 De Lorimier, Longueuil, Québec, Canada J4K 3H7."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Contract:"})," the ",e.jsx(t,{to:"/license-agreement",className:"text-cyan-300 hover:underline",children:"Commercial Licence Agreement"})," (",e.jsx(t,{to:"/fr/license-agreement",className:"text-cyan-300 hover:underline",children:"français"}),"); Enterprise deals use a signed agreement."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Payment:"})," card or invoice through Stripe, in USD; tax numbers accepted at checkout."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"On request:"})," W-8BEN for US customers, completed security questionnaires, and a call with the developer. Write to ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})})]})})]})}export{f as default}; diff --git a/assets/Security-NaiOZQL5.js b/assets/Security-NaiOZQL5.js deleted file mode 100644 index 4903684f..00000000 --- a/assets/Security-NaiOZQL5.js +++ /dev/null @@ -1,5 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as o,C as i,L as t}from"./index-c1PDYu0j.js";import{N as d}from"./NeuralReveal-uYarhiMA.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const h="https://github.com/GuillaumeLessard/qector-decoder/releases/tag/v1.0.1",x="https://github.com/GuillaumeLessard/qector-claude-plugin/releases/tag/v2.0.1",a="kYwkMApz4zMgQmJsOya1UZuByvnuikzlxQkQiA8NOJg=",m="MCowBQYDK2VwAyEAQh9t19EZ4KWZEYjY3EwHCUzUIehZBlovaMtrpLQXeGA=";function s({title:n,children:l,accent:c}){return e.jsxs("div",{className:`card-surface ${c?"border-cyan-300/25":""}`,children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:n}),e.jsx("div",{className:"text-secondary text-sm leading-relaxed space-y-3",children:l})]})}const r={target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline [overflow-wrap:anywhere]"};function f(){return e.jsxs(e.Fragment,{children:[e.jsx(o,{title:"Security & Trust · QECTOR",description:"QECTOR security and procurement pack: no telemetry, offline licence verification, Sigstore provenance on every wheel, signed releases, SBOM, vulnerability disclosure and data handling."}),e.jsxs("section",{className:"relative py-24 md:py-28 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex flex-wrap justify-center items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"No telemetry · Offline licensing · Signed releases"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Security & Trust",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Everything a security or procurement review needs, published. Every claim on this page links to an artefact you can check yourself."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsx(s,{title:"At a glance",accent:!0,children:e.jsxs("ul",{className:"space-y-2 list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"No telemetry."})," The decoder, plugin and Workbench send nothing to QECTOR: no usage data, syndromes, matrices or circuits."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Air-gapped licensing."})," Licence tokens are Ed25519 signatures verified offline against a key in the package. No licence server, no activation call."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Verified builds."})," All 18 decoder wheels are built in GitHub Actions, carry Sigstore build provenance and PEP 740 attestations, and are published with Trusted Publishing (no API token)."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Tested before release."})," Each wheel is installed on its own OS and checked against the syndrome before publishing; the receipts ship as ",e.jsx("code",{className:"font-mono text-cyan-200",children:"platform-proof.json"}),"."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Dependency gate."})," Releases are blocked while a RustSec advisory or licence-policy violation is open."]})]})}),e.jsxs(s,{title:"Verify a decoder wheel",children:[e.jsxs("p",{children:["Download from PyPI or the ",e.jsx("a",{href:h,...r,children:"v1.0.1 GitHub release"}),", then check its checksum and provenance with the GitHub CLI:"]}),e.jsx(i,{language:"bash",filename:"verify",code:`sha256sum -c SHA256SUMS --ignore-missing -gh attestation verify qector_decoder_v3-1.0.1-*.whl \\ - --repo GuillaumeLessard/qector-decoder`}),e.jsx("p",{children:`PyPI also shows each file's attestations under "Verified details".`})]}),e.jsxs(s,{title:"Verify the Claude plugin",children:[e.jsxs("p",{children:["The ",e.jsx("a",{href:x,...r,children:"plugin v2.0.1 release"})," ships ",e.jsx("code",{className:"font-mono text-cyan-200",children:"SHA256SUMS"}),", an Ed25519 signature over it, an SPDX 2.3 SBOM, a release manifest and provenance. Verify with the release-signing public key:"]}),e.jsx(i,{language:"bash",filename:"verify",code:`sha256sum -c SHA256SUMS -python scripts/sign_release.py --verify . \\ - --pubkey ${a}`}),e.jsxs("p",{children:["Every Python dependency of the plugin is pinned by SHA-256 in ",e.jsx("code",{className:"font-mono text-cyan-200",children:"requirements.lock"})," and installed with ",e.jsx("code",{className:"font-mono text-cyan-200",children:"--require-hashes"}),"."]})]}),e.jsxs(s,{title:"Public keys",children:[e.jsx("div",{className:"overflow-x-auto",tabIndex:0,role:"region","aria-label":"Public keys",children:e.jsxs("table",{className:"w-full text-left",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline",children:[e.jsx("th",{className:"py-2 pr-4 text-primary",children:"Key"}),e.jsx("th",{className:"py-2 text-primary",children:"Value"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{className:"border-b border-gridline/50 align-top",children:[e.jsx("td",{className:"py-2 pr-4 text-primary",children:"Plugin release signing (Ed25519, raw base64)"}),e.jsx("td",{className:"py-2 font-mono text-xs break-all",children:a})]}),e.jsxs("tr",{className:"align-top",children:[e.jsx("td",{className:"py-2 pr-4 text-primary",children:"Decoder licence verification (Ed25519, SPKI DER base64)"}),e.jsx("td",{className:"py-2 font-mono text-xs break-all",children:m})]})]})]})}),e.jsx("p",{children:"The licence key is embedded in the package; it only verifies tokens and cannot issue them."})]}),e.jsxs(s,{title:"Data handling",children:[e.jsxs("p",{children:["We hold only purchase and licence records (organisation, e-mail, plan, receipt, token) and support messages. Card data stays with Stripe. Details, providers and retention are in the"," ",e.jsx(t,{to:"/privacy",className:"text-cyan-300 hover:underline",children:"Privacy Policy"}),", written for Québec's Law 25."]}),e.jsxs("p",{children:["Revoked licences are published at"," ",e.jsx("a",{href:"https://qector.store/stripe/revoked.txt",...r,children:"qector.store/stripe/revoked.txt"}),"; air-gapped sites can copy it to ",e.jsx("code",{className:"font-mono text-cyan-200",children:"~/.qector/revoked.txt"}),"."]})]}),e.jsxs(s,{title:"Report a vulnerability",children:[e.jsxs("p",{children:["E-mail ",e.jsx("a",{href:"mailto:admin@qector.store?subject=%5BSECURITY%5D%20QECTOR%20disclosure",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with the subject ",e.jsx("code",{className:"font-mono text-cyan-200",children:"[SECURITY] QECTOR disclosure"}),". Include the component, version, platform, reproduction steps and impact. Please do not publish details before a fix is available."]}),e.jsxs("p",{children:["We acknowledge reports within 5 business days and coordinate disclosure with you. Supported versions: decoder 1.0.x and Claude plugin 2.0.x. Full policy:"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder/blob/main/SECURITY.md",...r,children:"decoder SECURITY.md"}),","," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin/blob/main/SECURITY.md",...r,children:"plugin SECURITY.md"}),", and"," ",e.jsx("a",{href:"/.well-known/security.txt",className:"text-cyan-300 hover:underline",children:"security.txt"}),"."]})]}),e.jsx(s,{title:"Procurement",children:e.jsxs("ul",{className:"space-y-2 list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Seller:"})," Guillaume Lessard, sole proprietor trading as iD01t Productions, 2004 De Lorimier, Longueuil, Québec, Canada J4K 3H7."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Contract:"})," the ",e.jsx(t,{to:"/license-agreement",className:"text-cyan-300 hover:underline",children:"Commercial Licence Agreement"})," (",e.jsx(t,{to:"/fr/license-agreement",className:"text-cyan-300 hover:underline",children:"français"}),"); Enterprise deals use a signed agreement."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Payment:"})," card or invoice through Stripe, in USD; tax numbers accepted at checkout."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"On request:"})," W-8BEN for US customers, completed security questionnaires, and a call with the developer. Write to ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})})]})})]})}export{f as default}; diff --git a/assets/Security-_EeEi6gF.js b/assets/Security-_EeEi6gF.js deleted file mode 100644 index 69bece86..00000000 --- a/assets/Security-_EeEi6gF.js +++ /dev/null @@ -1,5 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as o,C as a,L as t}from"./index-CCmwjNGU.js";import{N as d}from"./NeuralReveal-uYarhiMA.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const h="https://github.com/GuillaumeLessard/qector-decoder/releases/tag/v1.0.1",x="https://github.com/GuillaumeLessard/qector-claude-plugin/releases/tag/v2.0.1",i="kYwkMApz4zMgQmJsOya1UZuByvnuikzlxQkQiA8NOJg=",m="MCowBQYDK2VwAyEAQh9t19EZ4KWZEYjY3EwHCUzUIehZBlovaMtrpLQXeGA=";function s({title:n,children:l,accent:c}){return e.jsxs("div",{className:`card-surface ${c?"border-cyan-300/25":""}`,children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:n}),e.jsx("div",{className:"text-secondary text-sm leading-relaxed space-y-3",children:l})]})}const r={target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline [overflow-wrap:anywhere]"};function f(){return e.jsxs(e.Fragment,{children:[e.jsx(o,{title:"Security & Trust · QECTOR",description:"QECTOR security and procurement pack: no telemetry, offline licence verification, Sigstore provenance on every wheel, signed releases, SBOM, vulnerability disclosure and data handling."}),e.jsxs("section",{className:"relative py-24 md:py-28 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex flex-wrap justify-center items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"No telemetry · Offline licensing · Signed releases"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Security & Trust",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Everything a security or procurement review needs, published. Every claim on this page links to an artefact you can check yourself."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsx(s,{title:"At a glance",accent:!0,children:e.jsxs("ul",{className:"space-y-2 list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"No telemetry."})," The decoder, plugin and Workbench send nothing to QECTOR: no usage data, syndromes, matrices or circuits."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Air-gapped licensing."})," Licence tokens are Ed25519 signatures verified offline against a key in the package. No licence server, no activation call."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Verified builds."})," All 18 decoder wheels are built in GitHub Actions, carry Sigstore build provenance and PEP 740 attestations, and are published with Trusted Publishing (no API token)."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Tested before release."})," Each wheel is installed on its own OS and checked against the syndrome before publishing; the receipts ship as ",e.jsx("code",{className:"font-mono text-cyan-200",children:"platform-proof.json"}),"."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Dependency gate."})," Releases are blocked while a RustSec advisory or licence-policy violation is open."]})]})}),e.jsxs(s,{title:"Verify a decoder wheel",children:[e.jsxs("p",{children:["Download from PyPI or the ",e.jsx("a",{href:h,...r,children:"v1.0.1 GitHub release"}),", then check its checksum and provenance with the GitHub CLI:"]}),e.jsx(a,{language:"bash",filename:"verify",code:`sha256sum -c SHA256SUMS --ignore-missing -gh attestation verify qector_decoder_v3-1.0.1-*.whl \\ - --repo GuillaumeLessard/qector-decoder`}),e.jsx("p",{children:`PyPI also shows each file's attestations under "Verified details".`})]}),e.jsxs(s,{title:"Verify the Claude plugin",children:[e.jsxs("p",{children:["The ",e.jsx("a",{href:x,...r,children:"plugin v2.0.1 release"})," ships ",e.jsx("code",{className:"font-mono text-cyan-200",children:"SHA256SUMS"}),", an Ed25519 signature over it, an SPDX 2.3 SBOM, a release manifest and provenance. Verify with the release-signing public key:"]}),e.jsx(a,{language:"bash",filename:"verify",code:`sha256sum -c SHA256SUMS -python scripts/sign_release.py --verify . \\ - --pubkey ${i}`}),e.jsxs("p",{children:["Every Python dependency of the plugin is pinned by SHA-256 in ",e.jsx("code",{className:"font-mono text-cyan-200",children:"requirements.lock"})," and installed with ",e.jsx("code",{className:"font-mono text-cyan-200",children:"--require-hashes"}),"."]})]}),e.jsxs(s,{title:"Public keys",children:[e.jsx("div",{className:"overflow-x-auto",tabIndex:0,role:"region","aria-label":"Public keys",children:e.jsxs("table",{className:"w-full text-left",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline",children:[e.jsx("th",{className:"py-2 pr-4 text-primary",children:"Key"}),e.jsx("th",{className:"py-2 text-primary",children:"Value"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{className:"border-b border-gridline/50 align-top",children:[e.jsx("td",{className:"py-2 pr-4 text-primary",children:"Plugin release signing (Ed25519, raw base64)"}),e.jsx("td",{className:"py-2 font-mono text-xs break-all",children:i})]}),e.jsxs("tr",{className:"align-top",children:[e.jsx("td",{className:"py-2 pr-4 text-primary",children:"Decoder licence verification (Ed25519, SPKI DER base64)"}),e.jsx("td",{className:"py-2 font-mono text-xs break-all",children:m})]})]})]})}),e.jsx("p",{children:"The licence key is embedded in the package; it only verifies tokens and cannot issue them."})]}),e.jsxs(s,{title:"Data handling",children:[e.jsxs("p",{children:["We hold only purchase and licence records (organisation, e-mail, plan, receipt, token) and support messages. Card data stays with Stripe. Details, providers and retention are in the"," ",e.jsx(t,{to:"/privacy",className:"text-cyan-300 hover:underline",children:"Privacy Policy"}),", written for Québec's Law 25."]}),e.jsxs("p",{children:["Revoked licences are published at"," ",e.jsx("a",{href:"https://qector.store/stripe/revoked.txt",...r,children:"qector.store/stripe/revoked.txt"}),"; air-gapped sites can copy it to ",e.jsx("code",{className:"font-mono text-cyan-200",children:"~/.qector/revoked.txt"}),"."]})]}),e.jsxs(s,{title:"Report a vulnerability",children:[e.jsxs("p",{children:["E-mail ",e.jsx("a",{href:"mailto:admin@qector.store?subject=%5BSECURITY%5D%20QECTOR%20disclosure",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with the subject ",e.jsx("code",{className:"font-mono text-cyan-200",children:"[SECURITY] QECTOR disclosure"}),". Include the component, version, platform, reproduction steps and impact. Please do not publish details before a fix is available."]}),e.jsxs("p",{children:["We acknowledge reports within 5 business days and coordinate disclosure with you. Supported versions: decoder 1.0.x and Claude plugin 2.0.x. Full policy:"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder/blob/main/SECURITY.md",...r,children:"decoder SECURITY.md"}),","," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin/blob/main/SECURITY.md",...r,children:"plugin SECURITY.md"}),", and"," ",e.jsx("a",{href:"/.well-known/security.txt",className:"text-cyan-300 hover:underline",children:"security.txt"}),"."]})]}),e.jsx(s,{title:"Procurement",children:e.jsxs("ul",{className:"space-y-2 list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Seller:"})," Guillaume Lessard, sole proprietor trading as iD01t Productions, 288 boul. des Ormeaux, Longueuil, Québec, Canada J4L 1J4."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Contract:"})," the ",e.jsx(t,{to:"/license-agreement",className:"text-cyan-300 hover:underline",children:"Commercial Licence Agreement"})," (",e.jsx(t,{to:"/fr/license-agreement",className:"text-cyan-300 hover:underline",children:"français"}),"); Enterprise deals use a signed agreement."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Payment:"})," card or invoice through Stripe, in USD; tax numbers accepted at checkout."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"On request:"})," W-8BEN for US customers, completed security questionnaires, and a call with the developer. Write to ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})})]})})]})}export{f as default}; diff --git a/assets/Security-nZQ-1_Kq.js b/assets/Security-nZQ-1_Kq.js deleted file mode 100644 index 87447a7a..00000000 --- a/assets/Security-nZQ-1_Kq.js +++ /dev/null @@ -1,5 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as o,C as i}from"./index-abfjMTlQ.js";import{N as d}from"./NeuralReveal-D-EQoOl2.js";import{L as t}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";const h="https://github.com/GuillaumeLessard/qector-decoder/releases/tag/v1.0.1",x="https://github.com/GuillaumeLessard/qector-claude-plugin/releases/tag/v2.0.1",a="kYwkMApz4zMgQmJsOya1UZuByvnuikzlxQkQiA8NOJg=",m="MCowBQYDK2VwAyEAQh9t19EZ4KWZEYjY3EwHCUzUIehZBlovaMtrpLQXeGA=";function s({title:n,children:l,accent:c}){return e.jsxs("div",{className:`card-surface ${c?"border-cyan-300/25":""}`,children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:n}),e.jsx("div",{className:"text-secondary text-sm leading-relaxed space-y-3",children:l})]})}const r={target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 hover:underline [overflow-wrap:anywhere]"};function v(){return e.jsxs(e.Fragment,{children:[e.jsx(o,{title:"Security & Trust · QECTOR",description:"QECTOR security and procurement pack: no telemetry, offline licence verification, Sigstore provenance on every wheel, signed releases, SBOM, vulnerability disclosure and data handling."}),e.jsxs("section",{className:"relative py-24 md:py-28 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex flex-wrap justify-center items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"No telemetry · Offline licensing · Signed releases"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(d,{text:"Security & Trust",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"Everything a security or procurement review needs, published. Every claim on this page links to an artefact you can check yourself."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsx(s,{title:"At a glance",accent:!0,children:e.jsxs("ul",{className:"space-y-2 list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"No telemetry."})," The decoder, plugin and Workbench send nothing to QECTOR: no usage data, syndromes, matrices or circuits."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Air-gapped licensing."})," Licence tokens are Ed25519 signatures verified offline against a key in the package. No licence server, no activation call."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Verified builds."})," All 18 decoder wheels are built in GitHub Actions, carry Sigstore build provenance and PEP 740 attestations, and are published with Trusted Publishing (no API token)."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Tested before release."})," Each wheel is installed on its own OS and checked against the syndrome before publishing; the receipts ship as ",e.jsx("code",{className:"font-mono text-cyan-200",children:"platform-proof.json"}),"."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Dependency gate."})," Releases are blocked while a RustSec advisory or licence-policy violation is open."]})]})}),e.jsxs(s,{title:"Verify a decoder wheel",children:[e.jsxs("p",{children:["Download from PyPI or the ",e.jsx("a",{href:h,...r,children:"v1.0.1 GitHub release"}),", then check its checksum and provenance with the GitHub CLI:"]}),e.jsx(i,{language:"bash",filename:"verify",code:`sha256sum -c SHA256SUMS --ignore-missing -gh attestation verify qector_decoder_v3-1.0.1-*.whl \\ - --repo GuillaumeLessard/qector-decoder`}),e.jsx("p",{children:`PyPI also shows each file's attestations under "Verified details".`})]}),e.jsxs(s,{title:"Verify the Claude plugin",children:[e.jsxs("p",{children:["The ",e.jsx("a",{href:x,...r,children:"plugin v2.0.1 release"})," ships ",e.jsx("code",{className:"font-mono text-cyan-200",children:"SHA256SUMS"}),", an Ed25519 signature over it, an SPDX 2.3 SBOM, a release manifest and provenance. Verify with the release-signing public key:"]}),e.jsx(i,{language:"bash",filename:"verify",code:`sha256sum -c SHA256SUMS -python scripts/sign_release.py --verify . \\ - --pubkey ${a}`}),e.jsxs("p",{children:["Every Python dependency of the plugin is pinned by SHA-256 in ",e.jsx("code",{className:"font-mono text-cyan-200",children:"requirements.lock"})," and installed with ",e.jsx("code",{className:"font-mono text-cyan-200",children:"--require-hashes"}),"."]})]}),e.jsxs(s,{title:"Public keys",children:[e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full text-left",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline",children:[e.jsx("th",{className:"py-2 pr-4 text-primary",children:"Key"}),e.jsx("th",{className:"py-2 text-primary",children:"Value"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{className:"border-b border-gridline/50 align-top",children:[e.jsx("td",{className:"py-2 pr-4 text-primary",children:"Plugin release signing (Ed25519, raw base64)"}),e.jsx("td",{className:"py-2 font-mono text-xs break-all",children:a})]}),e.jsxs("tr",{className:"align-top",children:[e.jsx("td",{className:"py-2 pr-4 text-primary",children:"Decoder licence verification (Ed25519, SPKI DER base64)"}),e.jsx("td",{className:"py-2 font-mono text-xs break-all",children:m})]})]})]})}),e.jsx("p",{children:"The licence key is embedded in the package; it only verifies tokens and cannot issue them."})]}),e.jsxs(s,{title:"Data handling",children:[e.jsxs("p",{children:["We hold only purchase and licence records (organisation, e-mail, plan, receipt, token) and support messages. Card data stays with Stripe. Details, providers and retention are in the"," ",e.jsx(t,{to:"/privacy",className:"text-cyan-300 hover:underline",children:"Privacy Policy"}),", written for Québec's Law 25."]}),e.jsxs("p",{children:["Revoked licences are published at"," ",e.jsx("a",{href:"https://qector.store/stripe/revoked.txt",...r,children:"qector.store/stripe/revoked.txt"}),"; air-gapped sites can copy it to ",e.jsx("code",{className:"font-mono text-cyan-200",children:"~/.qector/revoked.txt"}),"."]})]}),e.jsxs(s,{title:"Report a vulnerability",children:[e.jsxs("p",{children:["E-mail ",e.jsx("a",{href:"mailto:admin@qector.store?subject=%5BSECURITY%5D%20QECTOR%20disclosure",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," with the subject ",e.jsx("code",{className:"font-mono text-cyan-200",children:"[SECURITY] QECTOR disclosure"}),". Include the component, version, platform, reproduction steps and impact. Please do not publish details before a fix is available."]}),e.jsxs("p",{children:["We acknowledge reports within 5 business days and coordinate disclosure with you. Supported versions: decoder 1.0.x and Claude plugin 2.0.x. Full policy:"," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder/blob/main/SECURITY.md",...r,children:"decoder SECURITY.md"}),","," ",e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-claude-plugin/blob/main/SECURITY.md",...r,children:"plugin SECURITY.md"}),", and"," ",e.jsx("a",{href:"/.well-known/security.txt",className:"text-cyan-300 hover:underline",children:"security.txt"}),"."]})]}),e.jsx(s,{title:"Procurement",children:e.jsxs("ul",{className:"space-y-2 list-disc pl-5",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Seller:"})," Guillaume Lessard, sole proprietor trading as iD01t Productions, 2004 De Lorimier, Longueuil, Québec, Canada J4K 3H7."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Contract:"})," the ",e.jsx(t,{to:"/license-agreement",className:"text-cyan-300 hover:underline",children:"Commercial Licence Agreement"})," (",e.jsx(t,{to:"/fr/license-agreement",className:"text-cyan-300 hover:underline",children:"français"}),"); Enterprise deals use a signed agreement."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"Payment:"})," card or invoice through Stripe, in USD; tax numbers accepted at checkout."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"On request:"})," W-8BEN for US customers, completed security questionnaires, and a call with the developer. Write to ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})})]})})]})}export{v as default}; diff --git a/assets/Status-9pqPpc0_.js b/assets/Status-9pqPpc0_.js deleted file mode 100644 index f9add5fc..00000000 --- a/assets/Status-9pqPpc0_.js +++ /dev/null @@ -1,2 +0,0 @@ -import{r as m,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,L as u}from"./index-DayaklK-.js";import{P as y,C as k}from"./releases--9GgxpSb.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const v={checking:"Checking…",ok:"Operational",degraded:"Degraded",down:"Unavailable"},x={checking:"bg-slate-500",ok:"bg-green-400",degraded:"bg-amber-400",down:"bg-red-400"};async function h(o){const d=performance.now();return[await o(),Math.round(performance.now()-d)]}function S(){const[o,d]=m.useState([{name:"Licence fulfilment",detail:"Issues licence tokens after payment",state:"checking"},{name:"Package index (PyPI)",detail:"qector-decoder-v3 downloads",state:"checking"},{name:"Revocation list",detail:"Published list of revoked licences",state:"checking"}]),[l,g]=m.useState("");m.useEffect(()=>{if(window.__PRERENDER__)return;const t=new AbortController,r=(s,n)=>d(a=>a.map((i,f)=>f===s?{...i,...n}:i));return(async()=>{try{const[s,n]=await h(async()=>(await fetch("/stripe/health",{signal:t.signal,cache:"no-store"})).json()),a=s?.ok&&s?.key_matches_decoder!==!1&&s?.signing_key;r(0,{state:a?"ok":"degraded",note:`v${s?.version??"?"} · ${n} ms${s?.key_matches_decoder?" · signing key matches the decoder":""}`})}catch{t.signal.aborted||r(0,{state:"down",note:"No response. Payments are kept and fulfilled when it recovers."})}try{const[s,n]=await h(async()=>(await fetch("https://pypi.org/pypi/qector-decoder-v3/json",{signal:t.signal})).json()),a=s?.info?.version;r(1,{state:a?"ok":"degraded",note:`latest ${a??"?"} · ${n} ms`})}catch{t.signal.aborted||r(1,{state:"down",note:"PyPI did not respond from your network."})}try{const[s,n]=await h(async()=>(await fetch("/stripe/revoked.txt",{signal:t.signal,cache:"no-store"})).text()),a=s.split(` -`).filter(i=>i.trim()&&!i.startsWith("#")).length;r(2,{state:s.startsWith("#")?"ok":"degraded",note:`${a} revoked · ${n} ms`})}catch{t.signal.aborted||r(2,{state:"down"})}t.signal.aborted||g(new Date().toLocaleString())})(),()=>t.abort()},[]);const c=o.some(t=>t.state==="checking")?"checking":o.every(t=>t.state==="ok")?"ok":o.some(t=>t.state==="down")?"down":"degraded";return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"Status · QECTOR",description:"Live status of QECTOR's licence fulfilment, package index and revocation list. Installed software never depends on these: licences verify offline."}),e.jsxs("section",{className:"relative pt-32 pb-12 md:pt-36 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding max-w-3xl mx-auto",children:[e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.08] mb-6",children:"Status"}),e.jsxs("p",{className:"inline-flex items-center gap-3 px-4 py-2 rounded-full border border-gridline bg-surface text-primary",role:"status","aria-live":"polite",children:[e.jsx("span",{className:`w-2.5 h-2.5 rounded-full ${x[c]}`,"aria-hidden":"true"}),c==="ok"?"All systems operational":c==="checking"?"Checking…":c==="down"?"Some systems unavailable":"Some systems degraded"]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-6",children:[e.jsx("ul",{className:"bg-[#0b1329]/40 border border-slate-800/80 rounded-2xl divide-y divide-slate-800/80",children:o.map(t=>e.jsxs("li",{className:"flex items-start justify-between gap-4 p-5",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-primary font-semibold",children:t.name}),e.jsx("p",{className:"text-secondary text-sm",children:t.detail}),t.note&&e.jsx("p",{className:"text-muted-foreground text-xs mt-1 font-mono",children:t.note})]}),e.jsxs("span",{className:"inline-flex items-center gap-2 text-sm text-secondary whitespace-nowrap",children:[e.jsx("span",{className:`w-2 h-2 rounded-full ${x[t.state]}`,"aria-hidden":"true"}),v[t.state]]})]},t.name))}),e.jsxs("p",{className:"text-muted-foreground text-xs text-center",children:[l?`Checked from your browser at ${l}.`:"Checking from your browser…"," Reload to check again."]}),e.jsxs("div",{className:"bg-[#0b1329]/40 border border-slate-800/80 rounded-2xl p-6",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Your installed software is not affected by outages"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Licence tokens are verified offline against a key inside the package, so decoding never waits on any service on this page. If fulfilment is down when you pay, Stripe keeps the payment event and the token is issued as soon as the service recovers. Current releases: decoder ",e.jsx("span",{className:"font-mono text-cyan-300",children:y}),", Claude plugin"," ",e.jsx("span",{className:"font-mono text-cyan-300",children:k.version}),". Problems? E-mail"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," or see ",e.jsx(u,{to:"/security",className:"text-cyan-300 hover:underline",children:"Security"}),"."]})]})]})})]})}export{S as default}; diff --git a/assets/Status-DCgeKAmb.js b/assets/Status-DCgeKAmb.js deleted file mode 100644 index 30e65bff..00000000 --- a/assets/Status-DCgeKAmb.js +++ /dev/null @@ -1,2 +0,0 @@ -import{r as m,j as e}from"./vendor-react-BiHfrq0e.js";import{S as f,L as u}from"./index-c1PDYu0j.js";import{P as y,C as k}from"./releases--9GgxpSb.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const v={checking:"Checking…",ok:"Operational",degraded:"Degraded",down:"Unavailable"},x={checking:"bg-slate-500",ok:"bg-green-400",degraded:"bg-amber-400",down:"bg-red-400"};async function h(o){const d=performance.now();return[await o(),Math.round(performance.now()-d)]}function C(){const[o,d]=m.useState([{name:"Licence fulfilment",detail:"Issues licence tokens after payment",state:"checking"},{name:"Package index (PyPI)",detail:"qector-decoder-v3 downloads",state:"checking"},{name:"Revocation list",detail:"Published list of revoked licences",state:"checking"}]),[l,g]=m.useState("");m.useEffect(()=>{const t=new AbortController,r=(s,n)=>d(a=>a.map((i,p)=>p===s?{...i,...n}:i));return(async()=>{try{const[s,n]=await h(async()=>(await fetch("/stripe/health",{signal:t.signal,cache:"no-store"})).json()),a=s?.ok&&s?.key_matches_decoder!==!1&&s?.signing_key;r(0,{state:a?"ok":"degraded",note:`v${s?.version??"?"} · ${n} ms${s?.key_matches_decoder?" · signing key matches the decoder":""}`})}catch{t.signal.aborted||r(0,{state:"down",note:"No response. Payments are kept and fulfilled when it recovers."})}try{const[s,n]=await h(async()=>(await fetch("https://pypi.org/pypi/qector-decoder-v3/json",{signal:t.signal})).json()),a=s?.info?.version;r(1,{state:a?"ok":"degraded",note:`latest ${a??"?"} · ${n} ms`})}catch{t.signal.aborted||r(1,{state:"down",note:"PyPI did not respond from your network."})}try{const[s,n]=await h(async()=>(await fetch("/stripe/revoked.txt",{signal:t.signal,cache:"no-store"})).text()),a=s.split(` -`).filter(i=>i.trim()&&!i.startsWith("#")).length;r(2,{state:s.startsWith("#")?"ok":"degraded",note:`${a} revoked · ${n} ms`})}catch{t.signal.aborted||r(2,{state:"down"})}t.signal.aborted||g(new Date().toLocaleString())})(),()=>t.abort()},[]);const c=o.some(t=>t.state==="checking")?"checking":o.every(t=>t.state==="ok")?"ok":o.some(t=>t.state==="down")?"down":"degraded";return e.jsxs(e.Fragment,{children:[e.jsx(f,{title:"Status · QECTOR",description:"Live status of QECTOR's licence fulfilment, package index and revocation list. Installed software never depends on these: licences verify offline."}),e.jsxs("section",{className:"relative pt-32 pb-12 md:pt-36 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding max-w-3xl mx-auto",children:[e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.08] mb-6",children:"Status"}),e.jsxs("p",{className:"inline-flex items-center gap-3 px-4 py-2 rounded-full border border-gridline bg-surface text-primary",role:"status","aria-live":"polite",children:[e.jsx("span",{className:`w-2.5 h-2.5 rounded-full ${x[c]}`,"aria-hidden":"true"}),c==="ok"?"All systems operational":c==="checking"?"Checking…":c==="down"?"Some systems unavailable":"Some systems degraded"]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-6",children:[e.jsx("ul",{className:"bg-[#0b1329]/40 border border-slate-800/80 rounded-2xl divide-y divide-slate-800/80",children:o.map(t=>e.jsxs("li",{className:"flex items-start justify-between gap-4 p-5",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-primary font-semibold",children:t.name}),e.jsx("p",{className:"text-secondary text-sm",children:t.detail}),t.note&&e.jsx("p",{className:"text-muted-foreground text-xs mt-1 font-mono",children:t.note})]}),e.jsxs("span",{className:"inline-flex items-center gap-2 text-sm text-secondary whitespace-nowrap",children:[e.jsx("span",{className:`w-2 h-2 rounded-full ${x[t.state]}`,"aria-hidden":"true"}),v[t.state]]})]},t.name))}),e.jsxs("p",{className:"text-muted-foreground text-xs text-center",children:[l?`Checked from your browser at ${l}.`:"Checking from your browser…"," Reload to check again."]}),e.jsxs("div",{className:"bg-[#0b1329]/40 border border-slate-800/80 rounded-2xl p-6",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Your installed software is not affected by outages"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Licence tokens are verified offline against a key inside the package, so decoding never waits on any service on this page. If fulfilment is down when you pay, Stripe keeps the payment event and the token is issued as soon as the service recovers. Current releases: decoder ",e.jsx("span",{className:"font-mono text-cyan-300",children:y}),", Claude plugin"," ",e.jsx("span",{className:"font-mono text-cyan-300",children:k.version}),". Problems? E-mail"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," or see ",e.jsx(u,{to:"/security",className:"text-cyan-300 hover:underline",children:"Security"}),"."]})]})]})})]})}export{C as default}; diff --git a/assets/Status-TwBfNKPu.js b/assets/Status-TwBfNKPu.js deleted file mode 100644 index f5166c71..00000000 --- a/assets/Status-TwBfNKPu.js +++ /dev/null @@ -1,2 +0,0 @@ -import{r as m,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,L as u}from"./index-CCmwjNGU.js";import{P as y,C as k}from"./releases--9GgxpSb.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const v={checking:"Checking…",ok:"Operational",degraded:"Degraded",down:"Unavailable"},x={checking:"bg-slate-500",ok:"bg-green-400",degraded:"bg-amber-400",down:"bg-red-400"};async function h(o){const d=performance.now();return[await o(),Math.round(performance.now()-d)]}function S(){const[o,d]=m.useState([{name:"Licence fulfilment",detail:"Issues licence tokens after payment",state:"checking"},{name:"Package index (PyPI)",detail:"qector-decoder-v3 downloads",state:"checking"},{name:"Revocation list",detail:"Published list of revoked licences",state:"checking"}]),[l,g]=m.useState("");m.useEffect(()=>{if(window.__PRERENDER__)return;const t=new AbortController,r=(s,n)=>d(a=>a.map((i,f)=>f===s?{...i,...n}:i));return(async()=>{try{const[s,n]=await h(async()=>(await fetch("/stripe/health",{signal:t.signal,cache:"no-store"})).json()),a=s?.ok&&s?.key_matches_decoder!==!1&&s?.signing_key;r(0,{state:a?"ok":"degraded",note:`v${s?.version??"?"} · ${n} ms${s?.key_matches_decoder?" · signing key matches the decoder":""}`})}catch{t.signal.aborted||r(0,{state:"down",note:"No response. Payments are kept and fulfilled when it recovers."})}try{const[s,n]=await h(async()=>(await fetch("https://pypi.org/pypi/qector-decoder-v3/json",{signal:t.signal})).json()),a=s?.info?.version;r(1,{state:a?"ok":"degraded",note:`latest ${a??"?"} · ${n} ms`})}catch{t.signal.aborted||r(1,{state:"down",note:"PyPI did not respond from your network."})}try{const[s,n]=await h(async()=>(await fetch("/stripe/revoked.txt",{signal:t.signal,cache:"no-store"})).text()),a=s.split(` -`).filter(i=>i.trim()&&!i.startsWith("#")).length;r(2,{state:s.startsWith("#")?"ok":"degraded",note:`${a} revoked · ${n} ms`})}catch{t.signal.aborted||r(2,{state:"down"})}t.signal.aborted||g(new Date().toLocaleString())})(),()=>t.abort()},[]);const c=o.some(t=>t.state==="checking")?"checking":o.every(t=>t.state==="ok")?"ok":o.some(t=>t.state==="down")?"down":"degraded";return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"Status · QECTOR",description:"Live status of QECTOR's licence fulfilment, package index and revocation list. Installed software never depends on these: licences verify offline."}),e.jsxs("section",{className:"relative pt-32 pb-12 md:pt-36 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding max-w-3xl mx-auto",children:[e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.08] mb-6",children:"Status"}),e.jsxs("p",{className:"inline-flex items-center gap-3 px-4 py-2 rounded-full border border-gridline bg-surface text-primary",role:"status","aria-live":"polite",children:[e.jsx("span",{className:`w-2.5 h-2.5 rounded-full ${x[c]}`,"aria-hidden":"true"}),c==="ok"?"All systems operational":c==="checking"?"Checking…":c==="down"?"Some systems unavailable":"Some systems degraded"]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-6",children:[e.jsx("ul",{className:"bg-[#0b1329]/40 border border-slate-800/80 rounded-2xl divide-y divide-slate-800/80",children:o.map(t=>e.jsxs("li",{className:"flex items-start justify-between gap-4 p-5",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-primary font-semibold",children:t.name}),e.jsx("p",{className:"text-secondary text-sm",children:t.detail}),t.note&&e.jsx("p",{className:"text-muted-foreground text-xs mt-1 font-mono",children:t.note})]}),e.jsxs("span",{className:"inline-flex items-center gap-2 text-sm text-secondary whitespace-nowrap",children:[e.jsx("span",{className:`w-2 h-2 rounded-full ${x[t.state]}`,"aria-hidden":"true"}),v[t.state]]})]},t.name))}),e.jsxs("p",{className:"text-muted-foreground text-xs text-center",children:[l?`Checked from your browser at ${l}.`:"Checking from your browser…"," Reload to check again."]}),e.jsxs("div",{className:"bg-[#0b1329]/40 border border-slate-800/80 rounded-2xl p-6",children:[e.jsx("h2",{className:"text-xl font-bold mb-3",children:"Your installed software is not affected by outages"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Licence tokens are verified offline against a key inside the package, so decoding never waits on any service on this page. If fulfilment is down when you pay, Stripe keeps the payment event and the token is issued as soon as the service recovers. Current releases: decoder ",e.jsx("span",{className:"font-mono text-cyan-300",children:y}),", Claude plugin"," ",e.jsx("span",{className:"font-mono text-cyan-300",children:k.version}),". Problems? E-mail"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})," or see ",e.jsx(u,{to:"/security",className:"text-cyan-300 hover:underline",children:"Security"}),"."]})]})]})})]})}export{S as default}; diff --git a/assets/Success-91MT9Ucy.js b/assets/Success-91MT9Ucy.js deleted file mode 100644 index a56aba4f..00000000 --- a/assets/Success-91MT9Ucy.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{g as r,S as i,L as t}from"./index-PdoH5kLF.js";import{N as l}from"./NeuralReveal-Bsl9IGCr.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";function h(){const[n]=r(),a=n.get("session_id")??"",s=/^cs_(live|test)_[A-Za-z0-9]{10,}$/.test(a)?a:"";return s?e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Purchase complete · QECTOR",description:"Your QECTOR Decoder v3 license is being issued. Activation instructions and your Stripe reference.",noindex:!0}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Payment received"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(l,{text:"Thank you",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Stripe has confirmed your payment. Your"," ",e.jsx("span",{className:"text-primary font-semibold",children:"Ed25519-signed license token"})," ","is issued automatically and sent to the email address you used at checkout."]}),s&&e.jsxs("div",{className:"max-w-2xl mx-auto p-4 bg-void rounded-xl text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold text-xs uppercase tracking-wider mb-2",children:"Stripe reference"}),e.jsx("code",{className:"text-secondary text-sm break-all",children:s})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"What happens next"}),e.jsxs("ol",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Check your email."})," The license token arrives within a few minutes. If nothing has appeared after 15 minutes, check spam, then contact us with the reference above."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Activate it."})," Set the token as both licence environment variables:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsxs("code",{className:"text-cyan-300 text-sm break-all",children:['export QECTOR_LICENSE=""',e.jsx("br",{}),'export QECTOR_LICENSE_KEY=""']})}),e.jsxs("span",{className:"block mt-2",children:["Windows PowerShell:"," ",e.jsx("code",{className:"text-cyan-300",children:'$env:QECTOR_LICENSE = ""; $env:QECTOR_LICENSE_KEY = ""'})]})]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Verify."})," Confirm the signature validates: this makes no network call:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsx("code",{className:"text-cyan-300 text-sm break-all",children:`python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`})}),e.jsxs("span",{className:"block mt-2",children:["This should print your paid tier (for example ",e.jsx("code",{className:"text-cyan-300",children:"Pro"})," or ",e.jsx("code",{className:"text-cyan-300",children:"Enterprise"}),"), not ",e.jsx("code",{className:"text-cyan-300",children:"Community"}),"."]})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Keep the token safe"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Your token is tied to your checkout email and verifies offline against a public key embedded in the package. There is no license server and no phone-home, so it keeps working on air-gapped machines and inside CI."})]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(t,{to:"/installer",className:"btn-cyan",children:"Install QECTOR"}),e.jsx(t,{to:"/docs",className:"btn-outline",children:"Read the docs"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact support"})]})]})})]}):e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Your QECTOR licence · QECTOR",description:"Where to find your QECTOR licence token, manage your subscription or get help.",noindex:!0}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding max-w-2xl mx-auto",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Licence help"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"Looking for your licence?"}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed mb-8",children:"This page confirms a purchase right after Stripe checkout. If you bought a plan, your licence token is in the e-mail you used at checkout, usually within 10 minutes (check spam)."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[e.jsx(t,{to:"/pricing",className:"btn-gold",children:"View plans"}),e.jsx("a",{href:"https://billing.stripe.com/p/login/7sY9AVdwlgoyfse9bYeUU00",className:"btn-cyan",target:"_blank",rel:"noopener noreferrer",children:"Manage subscription"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"E-mail support"})]})]})]})]})}export{h as default}; diff --git a/assets/Success-B1zul-Er.js b/assets/Success-B1zul-Er.js deleted file mode 100644 index 7da57110..00000000 --- a/assets/Success-B1zul-Er.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{g as r,S as i,L as t}from"./index-DayaklK-.js";import{N as l}from"./NeuralReveal-uYarhiMA.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";function h(){const[n]=r(),a=n.get("session_id")??"",s=/^cs_(live|test)_[A-Za-z0-9]{10,}$/.test(a)?a:"";return s?e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Purchase complete · QECTOR",description:"Your QECTOR Decoder v3 license is being issued. Activation instructions and your Stripe reference.",noindex:!0}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Payment received"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(l,{text:"Thank you",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Stripe has confirmed your payment. Your"," ",e.jsx("span",{className:"text-primary font-semibold",children:"Ed25519-signed license token"})," ","is issued automatically and sent to the email address you used at checkout."]}),s&&e.jsxs("div",{className:"max-w-2xl mx-auto p-4 bg-void rounded-xl text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold text-xs uppercase tracking-wider mb-2",children:"Stripe reference"}),e.jsx("code",{className:"text-secondary text-sm break-all",children:s})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"What happens next"}),e.jsxs("ol",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Check your email."})," The license token arrives within a few minutes. If nothing has appeared after 15 minutes, check spam, then contact us with the reference above."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Activate it."})," Set the token as both licence environment variables:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsxs("code",{className:"text-cyan-300 text-sm break-all",children:['export QECTOR_LICENSE=""',e.jsx("br",{}),'export QECTOR_LICENSE_KEY=""']})}),e.jsxs("span",{className:"block mt-2",children:["Windows PowerShell:"," ",e.jsx("code",{className:"text-cyan-300",children:'$env:QECTOR_LICENSE = ""; $env:QECTOR_LICENSE_KEY = ""'})]})]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Verify."})," Confirm the signature validates: this makes no network call:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsx("code",{className:"text-cyan-300 text-sm break-all",children:`python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`})}),e.jsxs("span",{className:"block mt-2",children:["This should print your paid tier (for example ",e.jsx("code",{className:"text-cyan-300",children:"Pro"})," or ",e.jsx("code",{className:"text-cyan-300",children:"Enterprise"}),"), not ",e.jsx("code",{className:"text-cyan-300",children:"Community"}),"."]})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Keep the token safe"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Your token is tied to your checkout email and verifies offline against a public key embedded in the package. There is no license server and no phone-home, so it keeps working on air-gapped machines and inside CI."})]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(t,{to:"/installer",className:"btn-cyan",children:"Install QECTOR"}),e.jsx(t,{to:"/docs",className:"btn-outline",children:"Read the docs"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact support"})]})]})})]}):e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Your QECTOR licence · QECTOR",description:"Where to find your QECTOR licence token, manage your subscription or get help.",noindex:!0}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding max-w-2xl mx-auto",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Licence help"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"Looking for your licence?"}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed mb-8",children:"This page confirms a purchase right after Stripe checkout. If you bought a plan, your licence token is in the e-mail you used at checkout, usually within 10 minutes (check spam)."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[e.jsx(t,{to:"/pricing",className:"btn-gold",children:"View plans"}),e.jsx("a",{href:"https://billing.stripe.com/p/login/7sY9AVdwlgoyfse9bYeUU00",className:"btn-cyan",target:"_blank",rel:"noopener noreferrer",children:"Manage subscription"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"E-mail support"})]})]})]})]})}export{h as default}; diff --git a/assets/Success-B8_Hgbq9.js b/assets/Success-B8_Hgbq9.js deleted file mode 100644 index af0ef0e6..00000000 --- a/assets/Success-B8_Hgbq9.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as i}from"./index-Bh9DBCb3.js";import{N as r}from"./NeuralReveal-D-EQoOl2.js";import{D as c,L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function u(){const[n]=c(),s=n.get("session_id")??"",t=s&&s!=="{CHECKOUT_SESSION_ID}"?s:"";return e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Purchase complete · QECTOR",description:"Your QECTOR Decoder v3 license is being issued. Activation instructions and your Stripe reference.",noindex:!0}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Payment received"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"Thank you",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Stripe has confirmed your payment. Your"," ",e.jsx("span",{className:"text-primary font-semibold",children:"Ed25519-signed license token"})," ","is issued automatically and sent to the email address you used at checkout."]}),t&&e.jsxs("div",{className:"max-w-2xl mx-auto p-4 bg-void rounded-xl text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold text-xs uppercase tracking-wider mb-2",children:"Stripe reference"}),e.jsx("code",{className:"text-secondary text-sm break-all",children:t})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"What happens next"}),e.jsxs("ol",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Check your email."})," The license token arrives within a few minutes. If nothing has appeared after 15 minutes, check spam, then contact us with the reference above."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Activate it."})," Set the token as both licence environment variables:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsxs("code",{className:"text-cyan-300 text-sm break-all",children:['export QECTOR_LICENSE=""',e.jsx("br",{}),'export QECTOR_LICENSE_KEY=""']})}),e.jsxs("span",{className:"block mt-2",children:["Windows PowerShell:"," ",e.jsx("code",{className:"text-cyan-300",children:'$env:QECTOR_LICENSE = ""; $env:QECTOR_LICENSE_KEY = ""'})]})]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Verify."})," Confirm the signature validates: this makes no network call:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsx("code",{className:"text-cyan-300 text-sm break-all",children:`python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`})}),e.jsxs("span",{className:"block mt-2",children:["This should print your paid tier (for example ",e.jsx("code",{className:"text-cyan-300",children:"Pro"})," or ",e.jsx("code",{className:"text-cyan-300",children:"Enterprise"}),"), not ",e.jsx("code",{className:"text-cyan-300",children:"Community"}),"."]})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Keep the token safe"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Your token is tied to your checkout email and verifies offline against a public key embedded in the package. There is no license server and no phone-home, so it keeps working on air-gapped machines and inside CI."})]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install QECTOR"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Read the docs"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact support"})]})]})})]})}export{u as default}; diff --git a/assets/Success-BHRL8Fta.js b/assets/Success-BHRL8Fta.js deleted file mode 100644 index 4db27373..00000000 --- a/assets/Success-BHRL8Fta.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as n}from"./index-_BpMZhV3.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{D as c,L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function u(){const[i]=c(),s=i.get("session_id")??"",t=s&&s!=="{CHECKOUT_SESSION_ID}"?s:"";return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Purchase complete · QECTOR",description:"Your QECTOR Decoder v3 license is being issued. Activation instructions and your Stripe reference.",noindex:!0}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Payment received"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"Thank you",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Stripe has confirmed your payment. Your"," ",e.jsx("span",{className:"text-primary font-semibold",children:"Ed25519-signed license token"})," ","is issued automatically and sent to the email address you used at checkout."]}),t&&e.jsxs("div",{className:"max-w-2xl mx-auto p-4 bg-void rounded-xl text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold text-xs uppercase tracking-wider mb-2",children:"Stripe reference"}),e.jsx("code",{className:"text-secondary text-sm break-all",children:t})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"What happens next"}),e.jsxs("ol",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Check your email."})," The license token arrives within a few minutes. If nothing has appeared after 15 minutes, check spam, then contact us with the reference above."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Activate it."})," Set the token as both v1.0.0 license environment variables:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsxs("code",{className:"text-cyan-300 text-sm break-all",children:['export QECTOR_LICENSE=""',e.jsx("br",{}),'export QECTOR_LICENSE_KEY=""']})}),e.jsxs("span",{className:"block mt-2",children:["Windows PowerShell:"," ",e.jsx("code",{className:"text-cyan-300",children:'$env:QECTOR_LICENSE = ""; $env:QECTOR_LICENSE_KEY = ""'})]})]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Verify."})," Confirm the signature validates: this makes no network call:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsx("code",{className:"text-cyan-300 text-sm break-all",children:'python -c "import qector_decoder_v3 as q; print(q._is_license_active())"'})}),e.jsxs("span",{className:"block mt-2",children:["This should print ",e.jsx("code",{className:"text-cyan-300",children:"True"}),"."]})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Keep the token safe"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Your token is tied to your checkout email and verifies offline against a public key embedded in the package. There is no license server and no phone-home, so it keeps working on air-gapped machines and inside CI."})]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install QECTOR"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Read the docs"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact support"})]})]})})]})}export{u as default}; diff --git a/assets/Success-BhHxkaUv.js b/assets/Success-BhHxkaUv.js deleted file mode 100644 index 333eac41..00000000 --- a/assets/Success-BhHxkaUv.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{g as r,S as i,L as t}from"./index-CCmwjNGU.js";import{N as l}from"./NeuralReveal-uYarhiMA.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";function h(){const[n]=r(),a=n.get("session_id")??"",s=/^cs_(live|test)_[A-Za-z0-9]{10,}$/.test(a)?a:"";return s?e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Purchase complete · QECTOR",description:"Your QECTOR Decoder v3 license is being issued. Activation instructions and your Stripe reference.",noindex:!0}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Payment received"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(l,{text:"Thank you",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Stripe has confirmed your payment. Your"," ",e.jsx("span",{className:"text-primary font-semibold",children:"Ed25519-signed license token"})," ","is issued automatically and sent to the email address you used at checkout."]}),s&&e.jsxs("div",{className:"max-w-2xl mx-auto p-4 bg-void rounded-xl text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold text-xs uppercase tracking-wider mb-2",children:"Stripe reference"}),e.jsx("code",{className:"text-secondary text-sm break-all",children:s})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"What happens next"}),e.jsxs("ol",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Check your email."})," The license token arrives within a few minutes. If nothing has appeared after 15 minutes, check spam, then contact us with the reference above."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Activate it."})," Set the token as both licence environment variables:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsxs("code",{className:"text-cyan-300 text-sm break-all",children:['export QECTOR_LICENSE=""',e.jsx("br",{}),'export QECTOR_LICENSE_KEY=""']})}),e.jsxs("span",{className:"block mt-2",children:["Windows PowerShell:"," ",e.jsx("code",{className:"text-cyan-300",children:'$env:QECTOR_LICENSE = ""; $env:QECTOR_LICENSE_KEY = ""'})]})]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Verify."})," Confirm the signature validates: this makes no network call:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsx("code",{className:"text-cyan-300 text-sm break-all",children:`python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`})}),e.jsxs("span",{className:"block mt-2",children:["This should print your paid tier (for example ",e.jsx("code",{className:"text-cyan-300",children:"Pro"})," or ",e.jsx("code",{className:"text-cyan-300",children:"Enterprise"}),"), not ",e.jsx("code",{className:"text-cyan-300",children:"Community"}),"."]})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Keep the token safe"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Your token is tied to your checkout email and verifies offline against a public key embedded in the package. There is no license server and no phone-home, so it keeps working on air-gapped machines and inside CI."})]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(t,{to:"/installer",className:"btn-cyan",children:"Install QECTOR"}),e.jsx(t,{to:"/docs",className:"btn-outline",children:"Read the docs"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact support"})]})]})})]}):e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Your QECTOR licence · QECTOR",description:"Where to find your QECTOR licence token, manage your subscription or get help.",noindex:!0}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding max-w-2xl mx-auto",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Licence help"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"Looking for your licence?"}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed mb-8",children:"This page confirms a purchase right after Stripe checkout. If you bought a plan, your licence token is in the e-mail you used at checkout, usually within 10 minutes (check spam)."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[e.jsx(t,{to:"/pricing",className:"btn-gold",children:"View plans"}),e.jsx("a",{href:"https://billing.stripe.com/p/login/7sY9AVdwlgoyfse9bYeUU00",className:"btn-cyan",target:"_blank",rel:"noopener noreferrer",children:"Manage subscription"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"E-mail support"})]})]})]})]})}export{h as default}; diff --git a/assets/Success-Birxz6hb.js b/assets/Success-Birxz6hb.js deleted file mode 100644 index 7a7b571f..00000000 --- a/assets/Success-Birxz6hb.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as n}from"./index-iVST85F-.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{D as c,L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function u(){const[i]=c(),s=i.get("session_id")??"",t=s&&s!=="{CHECKOUT_SESSION_ID}"?s:"";return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Purchase complete · QECTOR",description:"Your QECTOR Decoder v3 license is being issued. Activation instructions and your Stripe reference.",noindex:!0}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Payment received"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"Thank you",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Stripe has confirmed your payment. Your"," ",e.jsx("span",{className:"text-primary font-semibold",children:"Ed25519-signed license token"})," ","is issued automatically and sent to the email address you used at checkout."]}),t&&e.jsxs("div",{className:"max-w-2xl mx-auto p-4 bg-void rounded-xl text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold text-xs uppercase tracking-wider mb-2",children:"Stripe reference"}),e.jsx("code",{className:"text-secondary text-sm break-all",children:t})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"What happens next"}),e.jsxs("ol",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Check your email."})," The license token arrives within a few minutes. If nothing has appeared after 15 minutes, check spam, then contact us with the reference above."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Activate it."})," Set the token as both v1.0.0 license environment variables:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsxs("code",{className:"text-cyan-300 text-sm break-all",children:['export QECTOR_LICENSE=""',e.jsx("br",{}),'export QECTOR_LICENSE_KEY=""']})}),e.jsxs("span",{className:"block mt-2",children:["Windows PowerShell:"," ",e.jsx("code",{className:"text-cyan-300",children:'$env:QECTOR_LICENSE = ""; $env:QECTOR_LICENSE_KEY = ""'})]})]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Verify."})," Confirm the signature validates: this makes no network call:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsx("code",{className:"text-cyan-300 text-sm break-all",children:'python -c "import qector_decoder_v3 as q; print(q._is_license_active())"'})}),e.jsxs("span",{className:"block mt-2",children:["This should print ",e.jsx("code",{className:"text-cyan-300",children:"True"}),"."]})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Keep the token safe"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Your token is tied to your checkout email and verifies offline against a public key embedded in the package. There is no license server and no phone-home, so it keeps working on air-gapped machines and inside CI."})]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install QECTOR"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Read the docs"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact support"})]})]})})]})}export{u as default}; diff --git a/assets/Success-Bv54wCpg.js b/assets/Success-Bv54wCpg.js deleted file mode 100644 index 86cbab85..00000000 --- a/assets/Success-Bv54wCpg.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as i}from"./index-BN-vOeL2.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{D as c,L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function u(){const[n]=c(),s=n.get("session_id")??"",t=s&&s!=="{CHECKOUT_SESSION_ID}"?s:"";return e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Purchase complete · QECTOR",description:"Your QECTOR Decoder v3 license is being issued. Activation instructions and your Stripe reference.",noindex:!0}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Payment received"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"Thank you",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Stripe has confirmed your payment. Your"," ",e.jsx("span",{className:"text-primary font-semibold",children:"Ed25519-signed license token"})," ","is issued automatically and sent to the email address you used at checkout."]}),t&&e.jsxs("div",{className:"max-w-2xl mx-auto p-4 bg-void rounded-xl text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold text-xs uppercase tracking-wider mb-2",children:"Stripe reference"}),e.jsx("code",{className:"text-secondary text-sm break-all",children:t})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"What happens next"}),e.jsxs("ol",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Check your email."})," The license token arrives within a few minutes. If nothing has appeared after 15 minutes, check spam, then contact us with the reference above."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Activate it."})," Set the token as both v1.0.0 license environment variables:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsxs("code",{className:"text-cyan-300 text-sm break-all",children:['export QECTOR_LICENSE=""',e.jsx("br",{}),'export QECTOR_LICENSE_KEY=""']})}),e.jsxs("span",{className:"block mt-2",children:["Windows PowerShell:"," ",e.jsx("code",{className:"text-cyan-300",children:'$env:QECTOR_LICENSE = ""; $env:QECTOR_LICENSE_KEY = ""'})]})]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Verify."})," Confirm the signature validates: this makes no network call:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsx("code",{className:"text-cyan-300 text-sm break-all",children:`python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`})}),e.jsxs("span",{className:"block mt-2",children:["This should print your paid tier (for example ",e.jsx("code",{className:"text-cyan-300",children:"pro"})," or ",e.jsx("code",{className:"text-cyan-300",children:"enterprise"}),"), not ",e.jsx("code",{className:"text-cyan-300",children:"community"}),"."]})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Keep the token safe"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Your token is tied to your checkout email and verifies offline against a public key embedded in the package. There is no license server and no phone-home, so it keeps working on air-gapped machines and inside CI."})]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install QECTOR"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Read the docs"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact support"})]})]})})]})}export{u as default}; diff --git a/assets/Success-C-DQgAO-.js b/assets/Success-C-DQgAO-.js deleted file mode 100644 index 545d2535..00000000 --- a/assets/Success-C-DQgAO-.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as i}from"./index-abfjMTlQ.js";import{N as r}from"./NeuralReveal-D-EQoOl2.js";import{D as c,L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function u(){const[n]=c(),s=n.get("session_id")??"",t=s&&s!=="{CHECKOUT_SESSION_ID}"?s:"";return e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Purchase complete · QECTOR",description:"Your QECTOR Decoder v3 license is being issued. Activation instructions and your Stripe reference.",noindex:!0}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Payment received"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"Thank you",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Stripe has confirmed your payment. Your"," ",e.jsx("span",{className:"text-primary font-semibold",children:"Ed25519-signed license token"})," ","is issued automatically and sent to the email address you used at checkout."]}),t&&e.jsxs("div",{className:"max-w-2xl mx-auto p-4 bg-void rounded-xl text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold text-xs uppercase tracking-wider mb-2",children:"Stripe reference"}),e.jsx("code",{className:"text-secondary text-sm break-all",children:t})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"What happens next"}),e.jsxs("ol",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Check your email."})," The license token arrives within a few minutes. If nothing has appeared after 15 minutes, check spam, then contact us with the reference above."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Activate it."})," Set the token as both licence environment variables:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsxs("code",{className:"text-cyan-300 text-sm break-all",children:['export QECTOR_LICENSE=""',e.jsx("br",{}),'export QECTOR_LICENSE_KEY=""']})}),e.jsxs("span",{className:"block mt-2",children:["Windows PowerShell:"," ",e.jsx("code",{className:"text-cyan-300",children:'$env:QECTOR_LICENSE = ""; $env:QECTOR_LICENSE_KEY = ""'})]})]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Verify."})," Confirm the signature validates: this makes no network call:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsx("code",{className:"text-cyan-300 text-sm break-all",children:`python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`})}),e.jsxs("span",{className:"block mt-2",children:["This should print your paid tier (for example ",e.jsx("code",{className:"text-cyan-300",children:"Pro"})," or ",e.jsx("code",{className:"text-cyan-300",children:"Enterprise"}),"), not ",e.jsx("code",{className:"text-cyan-300",children:"Community"}),"."]})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Keep the token safe"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Your token is tied to your checkout email and verifies offline against a public key embedded in the package. There is no license server and no phone-home, so it keeps working on air-gapped machines and inside CI."})]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install QECTOR"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Read the docs"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact support"})]})]})})]})}export{u as default}; diff --git a/assets/Success-CPXIGHaJ.js b/assets/Success-CPXIGHaJ.js deleted file mode 100644 index 87023bb8..00000000 --- a/assets/Success-CPXIGHaJ.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as i}from"./index-CpdATiEY.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{D as c,L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function u(){const[n]=c(),s=n.get("session_id")??"",t=s&&s!=="{CHECKOUT_SESSION_ID}"?s:"";return e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Purchase complete · QECTOR",description:"Your QECTOR Decoder v3 license is being issued. Activation instructions and your Stripe reference.",noindex:!0}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Payment received"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"Thank you",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Stripe has confirmed your payment. Your"," ",e.jsx("span",{className:"text-primary font-semibold",children:"Ed25519-signed license token"})," ","is issued automatically and sent to the email address you used at checkout."]}),t&&e.jsxs("div",{className:"max-w-2xl mx-auto p-4 bg-void rounded-xl text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold text-xs uppercase tracking-wider mb-2",children:"Stripe reference"}),e.jsx("code",{className:"text-secondary text-sm break-all",children:t})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"What happens next"}),e.jsxs("ol",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Check your email."})," The license token arrives within a few minutes. If nothing has appeared after 15 minutes, check spam, then contact us with the reference above."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Activate it."})," Set the token as both v1.0.0 license environment variables:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsxs("code",{className:"text-cyan-300 text-sm break-all",children:['export QECTOR_LICENSE=""',e.jsx("br",{}),'export QECTOR_LICENSE_KEY=""']})}),e.jsxs("span",{className:"block mt-2",children:["Windows PowerShell:"," ",e.jsx("code",{className:"text-cyan-300",children:'$env:QECTOR_LICENSE = ""; $env:QECTOR_LICENSE_KEY = ""'})]})]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Verify."})," Confirm the signature validates: this makes no network call:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsx("code",{className:"text-cyan-300 text-sm break-all",children:`python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`})}),e.jsxs("span",{className:"block mt-2",children:["This should print your paid tier (for example ",e.jsx("code",{className:"text-cyan-300",children:"pro"})," or ",e.jsx("code",{className:"text-cyan-300",children:"enterprise"}),"), not ",e.jsx("code",{className:"text-cyan-300",children:"community"}),"."]})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Keep the token safe"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Your token is tied to your checkout email and verifies offline against a public key embedded in the package. There is no license server and no phone-home, so it keeps working on air-gapped machines and inside CI."})]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install QECTOR"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Read the docs"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact support"})]})]})})]})}export{u as default}; diff --git a/assets/Success-Ceeso_PI.js b/assets/Success-Ceeso_PI.js deleted file mode 100644 index 29848f55..00000000 --- a/assets/Success-Ceeso_PI.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{g as r,S as i,L as t}from"./index-c1PDYu0j.js";import{N as l}from"./NeuralReveal-uYarhiMA.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";function h(){const[n]=r(),a=n.get("session_id")??"",s=/^cs_(live|test)_[A-Za-z0-9]{10,}$/.test(a)?a:"";return s?e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Purchase complete · QECTOR",description:"Your QECTOR Decoder v3 license is being issued. Activation instructions and your Stripe reference.",noindex:!0}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Payment received"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(l,{text:"Thank you",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Stripe has confirmed your payment. Your"," ",e.jsx("span",{className:"text-primary font-semibold",children:"Ed25519-signed license token"})," ","is issued automatically and sent to the email address you used at checkout."]}),s&&e.jsxs("div",{className:"max-w-2xl mx-auto p-4 bg-void rounded-xl text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold text-xs uppercase tracking-wider mb-2",children:"Stripe reference"}),e.jsx("code",{className:"text-secondary text-sm break-all",children:s})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"What happens next"}),e.jsxs("ol",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Check your email."})," The license token arrives within a few minutes. If nothing has appeared after 15 minutes, check spam, then contact us with the reference above."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Activate it."})," Set the token as both licence environment variables:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsxs("code",{className:"text-cyan-300 text-sm break-all",children:['export QECTOR_LICENSE=""',e.jsx("br",{}),'export QECTOR_LICENSE_KEY=""']})}),e.jsxs("span",{className:"block mt-2",children:["Windows PowerShell:"," ",e.jsx("code",{className:"text-cyan-300",children:'$env:QECTOR_LICENSE = ""; $env:QECTOR_LICENSE_KEY = ""'})]})]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Verify."})," Confirm the signature validates: this makes no network call:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsx("code",{className:"text-cyan-300 text-sm break-all",children:`python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`})}),e.jsxs("span",{className:"block mt-2",children:["This should print your paid tier (for example ",e.jsx("code",{className:"text-cyan-300",children:"Pro"})," or ",e.jsx("code",{className:"text-cyan-300",children:"Enterprise"}),"), not ",e.jsx("code",{className:"text-cyan-300",children:"Community"}),"."]})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Keep the token safe"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Your token is tied to your checkout email and verifies offline against a public key embedded in the package. There is no license server and no phone-home, so it keeps working on air-gapped machines and inside CI."})]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(t,{to:"/installer",className:"btn-cyan",children:"Install QECTOR"}),e.jsx(t,{to:"/docs",className:"btn-outline",children:"Read the docs"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact support"})]})]})})]}):e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Your QECTOR licence · QECTOR",description:"Where to find your QECTOR licence token, manage your subscription or get help.",noindex:!0}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding max-w-2xl mx-auto",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Licence help"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"Looking for your licence?"}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed mb-8",children:"This page confirms a purchase right after Stripe checkout. If you bought a plan, your licence token is in the e-mail you used at checkout, usually within 10 minutes (check spam)."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[e.jsx(t,{to:"/pricing",className:"btn-gold",children:"View plans"}),e.jsx("a",{href:"https://billing.stripe.com/p/login/7sY9AVdwlgoyfse9bYeUU00",className:"btn-cyan",target:"_blank",rel:"noopener noreferrer",children:"Manage subscription"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"E-mail support"})]})]})]})]})}export{h as default}; diff --git a/assets/Success-CysFhypv.js b/assets/Success-CysFhypv.js deleted file mode 100644 index c72f012f..00000000 --- a/assets/Success-CysFhypv.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as n}from"./index-B9kEGiWi.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{D as c,L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function u(){const[i]=c(),s=i.get("session_id")??"",t=s&&s!=="{CHECKOUT_SESSION_ID}"?s:"";return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Purchase complete · QECTOR",description:"Your QECTOR Decoder v3 license is being issued. Activation instructions and your Stripe reference.",noindex:!0}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Payment received"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"Thank you",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Stripe has confirmed your payment. Your"," ",e.jsx("span",{className:"text-primary font-semibold",children:"Ed25519-signed license token"})," ","is issued automatically and sent to the email address you used at checkout."]}),t&&e.jsxs("div",{className:"max-w-2xl mx-auto p-4 bg-void rounded-xl text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold text-xs uppercase tracking-wider mb-2",children:"Stripe reference"}),e.jsx("code",{className:"text-secondary text-sm break-all",children:t})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"What happens next"}),e.jsxs("ol",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Check your email."})," The license token arrives within a few minutes. If nothing has appeared after 15 minutes, check spam, then contact us with the reference above."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Activate it."})," Set the token as both v1.0.0 license environment variables:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsxs("code",{className:"text-cyan-300 text-sm break-all",children:['export QECTOR_LICENSE=""',e.jsx("br",{}),'export QECTOR_LICENSE_KEY=""']})}),e.jsxs("span",{className:"block mt-2",children:["Windows PowerShell:"," ",e.jsx("code",{className:"text-cyan-300",children:'$env:QECTOR_LICENSE = ""; $env:QECTOR_LICENSE_KEY = ""'})]})]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Verify."})," Confirm the signature validates: this makes no network call:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsx("code",{className:"text-cyan-300 text-sm break-all",children:'python -c "import qector_decoder_v3 as q; print(q._is_license_active())"'})}),e.jsxs("span",{className:"block mt-2",children:["This should print ",e.jsx("code",{className:"text-cyan-300",children:"True"}),"."]})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Keep the token safe"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Your token is tied to your checkout email and verifies offline against a public key embedded in the package. There is no license server and no phone-home, so it keeps working on air-gapped machines and inside CI."})]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install QECTOR"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Read the docs"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact support"})]})]})})]})}export{u as default}; diff --git a/assets/Success-D4idHMxj.js b/assets/Success-D4idHMxj.js deleted file mode 100644 index c6086750..00000000 --- a/assets/Success-D4idHMxj.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as i}from"./index-DRAXObZB.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{D as c,L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function u(){const[n]=c(),s=n.get("session_id")??"",t=s&&s!=="{CHECKOUT_SESSION_ID}"?s:"";return e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Purchase complete · QECTOR",description:"Your QECTOR Decoder v3 license is being issued. Activation instructions and your Stripe reference.",noindex:!0}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Payment received"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"Thank you",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Stripe has confirmed your payment. Your"," ",e.jsx("span",{className:"text-primary font-semibold",children:"Ed25519-signed license token"})," ","is issued automatically and sent to the email address you used at checkout."]}),t&&e.jsxs("div",{className:"max-w-2xl mx-auto p-4 bg-void rounded-xl text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold text-xs uppercase tracking-wider mb-2",children:"Stripe reference"}),e.jsx("code",{className:"text-secondary text-sm break-all",children:t})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"What happens next"}),e.jsxs("ol",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Check your email."})," The license token arrives within a few minutes. If nothing has appeared after 15 minutes, check spam, then contact us with the reference above."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Activate it."})," Set the token as both v1.0.0 license environment variables:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsxs("code",{className:"text-cyan-300 text-sm break-all",children:['export QECTOR_LICENSE=""',e.jsx("br",{}),'export QECTOR_LICENSE_KEY=""']})}),e.jsxs("span",{className:"block mt-2",children:["Windows PowerShell:"," ",e.jsx("code",{className:"text-cyan-300",children:'$env:QECTOR_LICENSE = ""; $env:QECTOR_LICENSE_KEY = ""'})]})]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Verify."})," Confirm the signature validates: this makes no network call:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsx("code",{className:"text-cyan-300 text-sm break-all",children:`python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`})}),e.jsxs("span",{className:"block mt-2",children:["This should print your paid tier (for example ",e.jsx("code",{className:"text-cyan-300",children:"Pro"})," or ",e.jsx("code",{className:"text-cyan-300",children:"Enterprise"}),"), not ",e.jsx("code",{className:"text-cyan-300",children:"Community"}),"."]})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Keep the token safe"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Your token is tied to your checkout email and verifies offline against a public key embedded in the package. There is no license server and no phone-home, so it keeps working on air-gapped machines and inside CI."})]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install QECTOR"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Read the docs"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact support"})]})]})})]})}export{u as default}; diff --git a/assets/Success-DoyGmHi-.js b/assets/Success-DoyGmHi-.js deleted file mode 100644 index 19df2a84..00000000 --- a/assets/Success-DoyGmHi-.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as i}from"./index-DkYdPRY7.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{D as c,L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function u(){const[n]=c(),s=n.get("session_id")??"",t=s&&s!=="{CHECKOUT_SESSION_ID}"?s:"";return e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Purchase complete · QECTOR",description:"Your QECTOR Decoder v3 license is being issued. Activation instructions and your Stripe reference.",noindex:!0}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Payment received"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"Thank you",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Stripe has confirmed your payment. Your"," ",e.jsx("span",{className:"text-primary font-semibold",children:"Ed25519-signed license token"})," ","is issued automatically and sent to the email address you used at checkout."]}),t&&e.jsxs("div",{className:"max-w-2xl mx-auto p-4 bg-void rounded-xl text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold text-xs uppercase tracking-wider mb-2",children:"Stripe reference"}),e.jsx("code",{className:"text-secondary text-sm break-all",children:t})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"What happens next"}),e.jsxs("ol",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Check your email."})," The license token arrives within a few minutes. If nothing has appeared after 15 minutes, check spam, then contact us with the reference above."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Activate it."})," Set the token as both licence environment variables:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsxs("code",{className:"text-cyan-300 text-sm break-all",children:['export QECTOR_LICENSE=""',e.jsx("br",{}),'export QECTOR_LICENSE_KEY=""']})}),e.jsxs("span",{className:"block mt-2",children:["Windows PowerShell:"," ",e.jsx("code",{className:"text-cyan-300",children:'$env:QECTOR_LICENSE = ""; $env:QECTOR_LICENSE_KEY = ""'})]})]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Verify."})," Confirm the signature validates: this makes no network call:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsx("code",{className:"text-cyan-300 text-sm break-all",children:`python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`})}),e.jsxs("span",{className:"block mt-2",children:["This should print your paid tier (for example ",e.jsx("code",{className:"text-cyan-300",children:"Pro"})," or ",e.jsx("code",{className:"text-cyan-300",children:"Enterprise"}),"), not ",e.jsx("code",{className:"text-cyan-300",children:"Community"}),"."]})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Keep the token safe"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Your token is tied to your checkout email and verifies offline against a public key embedded in the package. There is no license server and no phone-home, so it keeps working on air-gapped machines and inside CI."})]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install QECTOR"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Read the docs"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact support"})]})]})})]})}export{u as default}; diff --git a/assets/Success-DyK9JNg3.js b/assets/Success-DyK9JNg3.js deleted file mode 100644 index 15641a76..00000000 --- a/assets/Success-DyK9JNg3.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as n}from"./index-BcbVjARk.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{D as c,L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function u(){const[i]=c(),s=i.get("session_id")??"",t=s&&s!=="{CHECKOUT_SESSION_ID}"?s:"";return e.jsxs(e.Fragment,{children:[e.jsx(n,{title:"Purchase complete · QECTOR",description:"Your QECTOR Decoder v3 license is being issued. Activation instructions and your Stripe reference.",noindex:!0}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Payment received"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"Thank you",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Stripe has confirmed your payment. Your"," ",e.jsx("span",{className:"text-primary font-semibold",children:"Ed25519-signed license token"})," ","is issued automatically and sent to the email address you used at checkout."]}),t&&e.jsxs("div",{className:"max-w-2xl mx-auto p-4 bg-void rounded-xl text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold text-xs uppercase tracking-wider mb-2",children:"Stripe reference"}),e.jsx("code",{className:"text-secondary text-sm break-all",children:t})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"What happens next"}),e.jsxs("ol",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Check your email."})," The license token arrives within a few minutes. If nothing has appeared after 15 minutes, check spam, then contact us with the reference above."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Activate it."})," Set the token as both v1.0.0 license environment variables:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsxs("code",{className:"text-cyan-300 text-sm break-all",children:['export QECTOR_LICENSE=""',e.jsx("br",{}),'export QECTOR_LICENSE_KEY=""']})}),e.jsxs("span",{className:"block mt-2",children:["Windows PowerShell:"," ",e.jsx("code",{className:"text-cyan-300",children:'$env:QECTOR_LICENSE = ""; $env:QECTOR_LICENSE_KEY = ""'})]})]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Verify."})," Confirm the signature validates: this makes no network call:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsx("code",{className:"text-cyan-300 text-sm break-all",children:'python -c "import qector_decoder_v3 as q; print(q._is_license_active())"'})}),e.jsxs("span",{className:"block mt-2",children:["This should print ",e.jsx("code",{className:"text-cyan-300",children:"True"}),"."]})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Keep the token safe"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Your token is tied to your checkout email and verifies offline against a public key embedded in the package. There is no license server and no phone-home, so it keeps working on air-gapped machines and inside CI."})]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install QECTOR"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Read the docs"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact support"})]})]})})]})}export{u as default}; diff --git a/assets/Success-DzdWYiHw.js b/assets/Success-DzdWYiHw.js deleted file mode 100644 index 8d519559..00000000 --- a/assets/Success-DzdWYiHw.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as i}from"./index-CxWP17m6.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{D as c,L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function u(){const[n]=c(),s=n.get("session_id")??"",t=s&&s!=="{CHECKOUT_SESSION_ID}"?s:"";return e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Purchase complete · QECTOR",description:"Your QECTOR Decoder v3 license is being issued. Activation instructions and your Stripe reference.",noindex:!0}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Payment received"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"Thank you",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Stripe has confirmed your payment. Your"," ",e.jsx("span",{className:"text-primary font-semibold",children:"Ed25519-signed license token"})," ","is issued automatically and sent to the email address you used at checkout."]}),t&&e.jsxs("div",{className:"max-w-2xl mx-auto p-4 bg-void rounded-xl text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold text-xs uppercase tracking-wider mb-2",children:"Stripe reference"}),e.jsx("code",{className:"text-secondary text-sm break-all",children:t})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"What happens next"}),e.jsxs("ol",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Check your email."})," The license token arrives within a few minutes. If nothing has appeared after 15 minutes, check spam, then contact us with the reference above."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Activate it."})," Set the token as both licence environment variables:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsxs("code",{className:"text-cyan-300 text-sm break-all",children:['export QECTOR_LICENSE=""',e.jsx("br",{}),'export QECTOR_LICENSE_KEY=""']})}),e.jsxs("span",{className:"block mt-2",children:["Windows PowerShell:"," ",e.jsx("code",{className:"text-cyan-300",children:'$env:QECTOR_LICENSE = ""; $env:QECTOR_LICENSE_KEY = ""'})]})]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Verify."})," Confirm the signature validates: this makes no network call:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsx("code",{className:"text-cyan-300 text-sm break-all",children:`python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`})}),e.jsxs("span",{className:"block mt-2",children:["This should print your paid tier (for example ",e.jsx("code",{className:"text-cyan-300",children:"Pro"})," or ",e.jsx("code",{className:"text-cyan-300",children:"Enterprise"}),"), not ",e.jsx("code",{className:"text-cyan-300",children:"Community"}),"."]})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Keep the token safe"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Your token is tied to your checkout email and verifies offline against a public key embedded in the package. There is no license server and no phone-home, so it keeps working on air-gapped machines and inside CI."})]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install QECTOR"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Read the docs"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact support"})]})]})})]})}export{u as default}; diff --git a/assets/Success-Gvo6K55X.js b/assets/Success-Gvo6K55X.js deleted file mode 100644 index 97a3d8d5..00000000 --- a/assets/Success-Gvo6K55X.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as i}from"./index-BUYYSLdX.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{D as c,L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function u(){const[n]=c(),s=n.get("session_id")??"",t=s&&s!=="{CHECKOUT_SESSION_ID}"?s:"";return e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Purchase complete · QECTOR",description:"Your QECTOR Decoder v3 license is being issued. Activation instructions and your Stripe reference.",noindex:!0}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Payment received"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"Thank you",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Stripe has confirmed your payment. Your"," ",e.jsx("span",{className:"text-primary font-semibold",children:"Ed25519-signed license token"})," ","is issued automatically and sent to the email address you used at checkout."]}),t&&e.jsxs("div",{className:"max-w-2xl mx-auto p-4 bg-void rounded-xl text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold text-xs uppercase tracking-wider mb-2",children:"Stripe reference"}),e.jsx("code",{className:"text-secondary text-sm break-all",children:t})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"What happens next"}),e.jsxs("ol",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Check your email."})," The license token arrives within a few minutes. If nothing has appeared after 15 minutes, check spam, then contact us with the reference above."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Activate it."})," Set the token as both licence environment variables:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsxs("code",{className:"text-cyan-300 text-sm break-all",children:['export QECTOR_LICENSE=""',e.jsx("br",{}),'export QECTOR_LICENSE_KEY=""']})}),e.jsxs("span",{className:"block mt-2",children:["Windows PowerShell:"," ",e.jsx("code",{className:"text-cyan-300",children:'$env:QECTOR_LICENSE = ""; $env:QECTOR_LICENSE_KEY = ""'})]})]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Verify."})," Confirm the signature validates: this makes no network call:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsx("code",{className:"text-cyan-300 text-sm break-all",children:`python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`})}),e.jsxs("span",{className:"block mt-2",children:["This should print your paid tier (for example ",e.jsx("code",{className:"text-cyan-300",children:"Pro"})," or ",e.jsx("code",{className:"text-cyan-300",children:"Enterprise"}),"), not ",e.jsx("code",{className:"text-cyan-300",children:"Community"}),"."]})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Keep the token safe"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Your token is tied to your checkout email and verifies offline against a public key embedded in the package. There is no license server and no phone-home, so it keeps working on air-gapped machines and inside CI."})]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install QECTOR"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Read the docs"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact support"})]})]})})]})}export{u as default}; diff --git a/assets/Success-HcGQP6Ks.js b/assets/Success-HcGQP6Ks.js deleted file mode 100644 index 5504d0f7..00000000 --- a/assets/Success-HcGQP6Ks.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{g as r,S as i,L as t}from"./index-CcwlvHYJ.js";import{N as l}from"./NeuralReveal-Bsl9IGCr.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function h(){const[n]=r(),a=n.get("session_id")??"",s=/^cs_(live|test)_[A-Za-z0-9]{10,}$/.test(a)?a:"";return s?e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Purchase complete · QECTOR",description:"Your QECTOR Decoder v3 license is being issued. Activation instructions and your Stripe reference.",noindex:!0}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Payment received"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(l,{text:"Thank you",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Stripe has confirmed your payment. Your"," ",e.jsx("span",{className:"text-primary font-semibold",children:"Ed25519-signed license token"})," ","is issued automatically and sent to the email address you used at checkout."]}),s&&e.jsxs("div",{className:"max-w-2xl mx-auto p-4 bg-void rounded-xl text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold text-xs uppercase tracking-wider mb-2",children:"Stripe reference"}),e.jsx("code",{className:"text-secondary text-sm break-all",children:s})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"What happens next"}),e.jsxs("ol",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Check your email."})," The license token arrives within a few minutes. If nothing has appeared after 15 minutes, check spam, then contact us with the reference above."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Activate it."})," Set the token as both licence environment variables:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsxs("code",{className:"text-cyan-300 text-sm break-all",children:['export QECTOR_LICENSE=""',e.jsx("br",{}),'export QECTOR_LICENSE_KEY=""']})}),e.jsxs("span",{className:"block mt-2",children:["Windows PowerShell:"," ",e.jsx("code",{className:"text-cyan-300",children:'$env:QECTOR_LICENSE = ""; $env:QECTOR_LICENSE_KEY = ""'})]})]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Verify."})," Confirm the signature validates: this makes no network call:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsx("code",{className:"text-cyan-300 text-sm break-all",children:`python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`})}),e.jsxs("span",{className:"block mt-2",children:["This should print your paid tier (for example ",e.jsx("code",{className:"text-cyan-300",children:"Pro"})," or ",e.jsx("code",{className:"text-cyan-300",children:"Enterprise"}),"), not ",e.jsx("code",{className:"text-cyan-300",children:"Community"}),"."]})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Keep the token safe"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Your token is tied to your checkout email and verifies offline against a public key embedded in the package. There is no license server and no phone-home, so it keeps working on air-gapped machines and inside CI."})]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(t,{to:"/installer",className:"btn-cyan",children:"Install QECTOR"}),e.jsx(t,{to:"/docs",className:"btn-outline",children:"Read the docs"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact support"})]})]})})]}):e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Your QECTOR licence · QECTOR",description:"Where to find your QECTOR licence token, manage your subscription or get help.",noindex:!0}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding max-w-2xl mx-auto",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Licence help"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:"Looking for your licence?"}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed mb-8",children:"This page confirms a purchase right after Stripe checkout. If you bought a plan, your licence token is in the e-mail you used at checkout, usually within 10 minutes (check spam)."}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-4",children:[e.jsx(t,{to:"/pricing",className:"btn-gold",children:"View plans"}),e.jsx("a",{href:"https://billing.stripe.com/p/login/7sY9AVdwlgoyfse9bYeUU00",className:"btn-cyan",target:"_blank",rel:"noopener noreferrer",children:"Manage subscription"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"E-mail support"})]})]})]})]})}export{h as default}; diff --git a/assets/Success-S_Pp6vUv.js b/assets/Success-S_Pp6vUv.js deleted file mode 100644 index c31fd16e..00000000 --- a/assets/Success-S_Pp6vUv.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as i}from"./index-CqAA-ZXu.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{D as c,L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function u(){const[n]=c(),s=n.get("session_id")??"",t=s&&s!=="{CHECKOUT_SESSION_ID}"?s:"";return e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Purchase complete · QECTOR",description:"Your QECTOR Decoder v3 license is being issued. Activation instructions and your Stripe reference.",noindex:!0}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Payment received"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"Thank you",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Stripe has confirmed your payment. Your"," ",e.jsx("span",{className:"text-primary font-semibold",children:"Ed25519-signed license token"})," ","is issued automatically and sent to the email address you used at checkout."]}),t&&e.jsxs("div",{className:"max-w-2xl mx-auto p-4 bg-void rounded-xl text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold text-xs uppercase tracking-wider mb-2",children:"Stripe reference"}),e.jsx("code",{className:"text-secondary text-sm break-all",children:t})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"What happens next"}),e.jsxs("ol",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Check your email."})," The license token arrives within a few minutes. If nothing has appeared after 15 minutes, check spam, then contact us with the reference above."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Activate it."})," Set the token as both v1.0.0 license environment variables:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsxs("code",{className:"text-cyan-300 text-sm break-all",children:['export QECTOR_LICENSE=""',e.jsx("br",{}),'export QECTOR_LICENSE_KEY=""']})}),e.jsxs("span",{className:"block mt-2",children:["Windows PowerShell:"," ",e.jsx("code",{className:"text-cyan-300",children:'$env:QECTOR_LICENSE = ""; $env:QECTOR_LICENSE_KEY = ""'})]})]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Verify."})," Confirm the signature validates: this makes no network call:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsx("code",{className:"text-cyan-300 text-sm break-all",children:`python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`})}),e.jsxs("span",{className:"block mt-2",children:["This should print your paid tier (for example ",e.jsx("code",{className:"text-cyan-300",children:"Pro"})," or ",e.jsx("code",{className:"text-cyan-300",children:"Enterprise"}),"), not ",e.jsx("code",{className:"text-cyan-300",children:"Community"}),"."]})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Keep the token safe"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Your token is tied to your checkout email and verifies offline against a public key embedded in the package. There is no license server and no phone-home, so it keeps working on air-gapped machines and inside CI."})]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install QECTOR"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Read the docs"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact support"})]})]})})]})}export{u as default}; diff --git a/assets/Success-VMONhcQ1.js b/assets/Success-VMONhcQ1.js deleted file mode 100644 index 4d655799..00000000 --- a/assets/Success-VMONhcQ1.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as i}from"./index-WV1aysjN.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{D as c,L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function u(){const[n]=c(),s=n.get("session_id")??"",t=s&&s!=="{CHECKOUT_SESSION_ID}"?s:"";return e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Purchase complete · QECTOR",description:"Your QECTOR Decoder v3 license is being issued. Activation instructions and your Stripe reference.",noindex:!0}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Payment received"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"Thank you",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Stripe has confirmed your payment. Your"," ",e.jsx("span",{className:"text-primary font-semibold",children:"Ed25519-signed license token"})," ","is issued automatically and sent to the email address you used at checkout."]}),t&&e.jsxs("div",{className:"max-w-2xl mx-auto p-4 bg-void rounded-xl text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold text-xs uppercase tracking-wider mb-2",children:"Stripe reference"}),e.jsx("code",{className:"text-secondary text-sm break-all",children:t})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"What happens next"}),e.jsxs("ol",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Check your email."})," The license token arrives within a few minutes. If nothing has appeared after 15 minutes, check spam, then contact us with the reference above."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Activate it."})," Set the token as both v1.0.0 license environment variables:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsxs("code",{className:"text-cyan-300 text-sm break-all",children:['export QECTOR_LICENSE=""',e.jsx("br",{}),'export QECTOR_LICENSE_KEY=""']})}),e.jsxs("span",{className:"block mt-2",children:["Windows PowerShell:"," ",e.jsx("code",{className:"text-cyan-300",children:'$env:QECTOR_LICENSE = ""; $env:QECTOR_LICENSE_KEY = ""'})]})]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Verify."})," Confirm the signature validates: this makes no network call:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsx("code",{className:"text-cyan-300 text-sm break-all",children:`python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`})}),e.jsxs("span",{className:"block mt-2",children:["This should print your paid tier (for example ",e.jsx("code",{className:"text-cyan-300",children:"pro"})," or ",e.jsx("code",{className:"text-cyan-300",children:"enterprise"}),"), not ",e.jsx("code",{className:"text-cyan-300",children:"community"}),"."]})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Keep the token safe"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Your token is tied to your checkout email and verifies offline against a public key embedded in the package. There is no license server and no phone-home, so it keeps working on air-gapped machines and inside CI."})]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install QECTOR"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Read the docs"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact support"})]})]})})]})}export{u as default}; diff --git a/assets/Success-oU7-xJRu.js b/assets/Success-oU7-xJRu.js deleted file mode 100644 index b93113d4..00000000 --- a/assets/Success-oU7-xJRu.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as i}from"./index-DlmjLVYe.js";import{N as r}from"./NeuralReveal-BflyZYSb.js";import{D as c,L as a}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";function u(){const[n]=c(),s=n.get("session_id")??"",t=s&&s!=="{CHECKOUT_SESSION_ID}"?s:"";return e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Purchase complete · QECTOR",description:"Your QECTOR Decoder v3 license is being issued. Activation instructions and your Stripe reference.",noindex:!0}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"Payment received"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(r,{text:"Thank you",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-8",children:["Stripe has confirmed your payment. Your"," ",e.jsx("span",{className:"text-primary font-semibold",children:"Ed25519-signed license token"})," ","is issued automatically and sent to the email address you used at checkout."]}),t&&e.jsxs("div",{className:"max-w-2xl mx-auto p-4 bg-void rounded-xl text-left",children:[e.jsx("div",{className:"text-cyan-300 font-semibold text-xs uppercase tracking-wider mb-2",children:"Stripe reference"}),e.jsx("code",{className:"text-secondary text-sm break-all",children:t})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"What happens next"}),e.jsxs("ol",{className:"space-y-4 text-secondary text-sm leading-relaxed",children:[e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"1. Check your email."})," The license token arrives within a few minutes. If nothing has appeared after 15 minutes, check spam, then contact us with the reference above."]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"2. Activate it."})," Set the token as both v1.0.0 license environment variables:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsxs("code",{className:"text-cyan-300 text-sm break-all",children:['export QECTOR_LICENSE=""',e.jsx("br",{}),'export QECTOR_LICENSE_KEY=""']})}),e.jsxs("span",{className:"block mt-2",children:["Windows PowerShell:"," ",e.jsx("code",{className:"text-cyan-300",children:'$env:QECTOR_LICENSE = ""; $env:QECTOR_LICENSE_KEY = ""'})]})]}),e.jsxs("li",{children:[e.jsx("strong",{className:"text-primary",children:"3. Verify."})," Confirm the signature validates: this makes no network call:",e.jsx("div",{className:"mt-2 p-4 bg-void rounded-xl",children:e.jsx("code",{className:"text-cyan-300 text-sm break-all",children:`python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"`})}),e.jsxs("span",{className:"block mt-2",children:["This should print your paid tier (for example ",e.jsx("code",{className:"text-cyan-300",children:"pro"})," or ",e.jsx("code",{className:"text-cyan-300",children:"enterprise"}),"), not ",e.jsx("code",{className:"text-cyan-300",children:"community"}),"."]})]})]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Keep the token safe"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Your token is tied to your checkout email and verifies offline against a public key embedded in the package. There is no license server and no phone-home, so it keeps working on air-gapped machines and inside CI."})]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-3",children:[e.jsx(a,{to:"/installer",className:"btn-cyan",children:"Install QECTOR"}),e.jsx(a,{to:"/docs",className:"btn-outline",children:"Read the docs"}),e.jsx("a",{href:"mailto:admin@qector.store",className:"btn-outline",children:"Contact support"})]})]})})]})}export{u as default}; diff --git a/assets/TechnicalReference-0kYOhnhq.js b/assets/TechnicalReference-0kYOhnhq.js deleted file mode 100644 index d4ced2ee..00000000 --- a/assets/TechnicalReference-0kYOhnhq.js +++ /dev/null @@ -1,30 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,C as n}from"./index-DRAXObZB.js";import{N as h}from"./NeuralReveal-BflyZYSb.js";import{g as f}from"./vendor-gsap-a3sj5zmn.js";import{r as x,h as g,s as b,o as y,T as _,B as v}from"./vendor-ui-B0ssGG4c.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";function R(){const[a,l]=o.useState(""),[t,m]=o.useState("BlossomDecoder"),s=o.useRef(null),c=[{name:"BlossomDecoder",signature:"BlossomDecoder(dem: stim.DetectorErrorModel, *, adaptive_k: bool = True, timeout: Optional[float] = None)",desc:"Minimum-weight perfect matching (MWPM) decoder for CSS stabilizer codes. Uses an exact matching solver to pair syndrome checks.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"adaptive_k",type:"bool",default:"True",desc:"Enable Union-Find pre-filtering to compress graph"},{name:"timeout",type:"float",default:"None",desc:"Max seconds allowed to match a syndrome"}],example:`import qector_decoder_v3 as qd -decoder = qd.BlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"BeliefMatchingDecoder",signature:'BeliefMatchingDecoder(dem: stim.DetectorErrorModel, *, bp_iters: int = 30, max_paths: int = 10, bp_method: str = "product_sum")',desc:"Accuracy-oriented decoder. Uses Belief Propagation (BP) preprocessing to compute edge probabilities, and then runs matching on a reweighted Blossom graph. Use when accuracy matters more than latency.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"bp_iters",type:"int",default:"30",desc:"Max iterations for Belief Propagation"},{name:"max_paths",type:"int",default:"10",desc:"Max alternative paths for match reweighting"},{name:"bp_method",type:"str",default:'"product_sum"',desc:"BP update equation to resolve constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.BeliefMatchingDecoder(dem, bp_iters=30) -correction = decoder.decode(syndrome)`},{name:"BpOsdDecoder",signature:'BpOsdDecoder(dem: stim.DetectorErrorModel, *, osd_order: int = 40, osd_method: str = "osd_cs")',desc:"Belief Propagation + Ordered Statistics Decoding. A common approach for qLDPC codes, where matching graphs are undefined. Handles non-CSS stabilizer layouts.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"osd_order",type:"int",default:"40",desc:"OSD search order limit"},{name:"osd_method",type:"str",default:'"osd_cs"',desc:"OSD resolution method"}],example:`import qector_decoder_v3 as qd -decoder = qd.BpOsdDecoder(dem, osd_order=40) -correction = decoder.decode(syndrome)`},{name:"UnionFindDecoder",signature:"UnionFindDecoder(dem: stim.DetectorErrorModel, *, use_combined: bool = True)",desc:"Near-linear time approximate decoder. Resolves syndromes by cluster growth and path compression. Scaling is O(N), making it ideal for large distance offline simulations.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"use_combined",type:"bool",default:"True",desc:"Enable combined cluster growth constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.UnionFindDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"CPUBatchDecoder",signature:"CPUBatchDecoder(dem: stim.DetectorErrorModel, *, num_threads: int = 0)",desc:"Multi-threaded CPU batch decoder. Leverages Rayon parallelism across CPU cores to decode thousands of syndromes concurrently.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"num_threads",type:"int",default:"0",desc:"Number of worker threads (0 = auto-detect physical cores)"}],example:`import qector_decoder_v3 as qd -decoder = qd.CPUBatchDecoder(dem, num_threads=8) -corrections = decoder.decode_batch(syndromes_matrix)`},{name:"GpuBatchDecoder / CUDABatchDecoder / OpenCLBatchDecoder",signature:"CUDABatchDecoder(dem: stim.DetectorErrorModel, *, batch_size: int = 2048)",desc:"Native GPU batch decoders. Implements CUDA and OpenCL device pipelines to solve thousands of syndromes in parallel. Check availability with CUDABatchDecoder.is_available().",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"batch_size",type:"int",default:"2048",desc:"Parallel batch sizing in GPU VRAM"}],example:`import qector_decoder_v3 as qd -if qd.CUDABatchDecoder.is_available(): - decoder = qd.CUDABatchDecoder(dem, batch_size=4096) - corrections = decoder.decode_batch(syndromes_array)`},{name:"SparseBlossomDecoder",signature:"SparseBlossomDecoder(dem: stim.DetectorErrorModel)",desc:"Low-latency region growing blossom variant optimized for ring-like and sparse detector error graphs.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -decoder = qd.SparseBlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"get_decoder / clear_decoder_cache",signature:'get_decoder(dem_or_h, decoder_type: str = "auto", **kwargs)',desc:"Cached decoder factory for instantiating and caching decoders by error model hash to avoid redundant graph construction.",parameters:[{name:"dem_or_h",type:"Union[stim.DetectorErrorModel, np.ndarray]",default:"Required",desc:"Detector model or H matrix"},{name:"decoder_type",type:"str",default:'"auto"',desc:"Target decoder family name"}],example:`import qector_decoder_v3 as qd -decoder = qd.get_decoder(dem, decoder_type="blossom") -qd.clear_decoder_cache()`},{name:"decode_mmap / decode_with_diagnostics",signature:"decode_mmap(decoder, input_filepath: str, output_filepath: str)",desc:"Out-of-core memory-mapped file decoder for processing gigabyte-scale syndrome files on disk without loading entire matrices into RAM. Returns structured DecodeResult.",parameters:[{name:"decoder",type:"DecoderInstance",default:"Required",desc:"Initialized decoder instance"},{name:"input_filepath",type:"str",default:"Required",desc:"Path to binary syndrome file"},{name:"output_filepath",type:"str",default:"Required",desc:"Path to write binary correction results"}],example:`import qector_decoder_v3 as qd -res = qd.decode_mmap(decoder, "syndromes.bin", "corrections.bin") -print(res.shots_processed, res.latency_seconds)`},{name:"Workbench API",signature:"Workbench(config: Optional[dict] = None)",desc:"High-level orchestration and benchmarking engine for configuring decoding pipelines, running multi-decoder comparative sweeps, and exporting performance reports.",parameters:[{name:"config",type:"dict",default:"None",desc:"Workbench configuration dictionary"}],example:`import qector_decoder_v3 as qd -wb = qd.Workbench() -results = wb.benchmark(dem, shots=100000)`},{name:"stim_compat & sinter_compat",signature:"sinter_compat.qector_sinter_decoders()",desc:"Ecosystem integration helpers providing native compatibility with Stim circuits and Sinter benchmarking harnesses.",parameters:[{name:"sinter_decoders",type:"dict",default:"Required",desc:"Sinter compiled decoder mapping"}],example:`import sinter -from qector_decoder_v3.sinter_compat import qector_sinter_decoders -decoders = qector_sinter_decoders()`},{name:"license.verify_license_token",signature:"license.verify_license_token(token: str) -> bool",desc:"Offline Ed25519 cryptographic signature verification function for commercial evaluation and production license tokens.",parameters:[{name:"token",type:"str",default:"Required",desc:"Signed JWT/Ed25519 license token string"}],example:`from qector_decoder_v3.license import verify_license_token -is_valid = verify_license_token(token_str)`},{name:"HybridDecoder & HybridCascadeDecoder",signature:"HybridCascadeDecoder(dem: stim.DetectorErrorModel) # Feature-gated / source build",desc:"Experimental decoders combining fast Union-Find pre-filtering with exact Blossom fallback for ambiguous clusters. Note: HybridCascadeDecoder requires full-feature source build and may raise unavailable in standard pre-compiled wheels.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -# Research / full-feature build required -decoder = qd.HybridDecoder(dem)`},{name:"PredecodedDecoder & LookupTableDecoder",signature:"LookupTableDecoder(code_matrix: np.ndarray)",desc:"Research decoders for lookup-table fast matching on small stabilizer codes and wrapping pre-calculated decoding results for pipeline benchmarking.",parameters:[{name:"code_matrix",type:"np.ndarray",default:"Required",desc:"Parity check matrix"}],example:`import qector_decoder_v3 as qd -decoder = qd.LookupTableDecoder(H_matrix)`},{name:"ColourCodeDecoder, TwoStageDecoder & AmbiguityClusterDecoder",signature:"ColourCodeDecoder(dem: stim.DetectorErrorModel)",desc:"Research decoders: native colour-code decoding over undecomposed detector error models (color_code family), two-stage decoding pipelines, and ambiguity-cluster resolution.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"}],example:`import qector_decoder_v3 as qd -decoder = qd.ColourCodeDecoder(dem)`},{name:"GNNBeliefMatcher",signature:"GNNBeliefMatcher(dem: stim.DetectorErrorModel, model_path: str)",desc:"Research-stage graph neural network enhanced belief propagation module. Not validated for production use.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"},{name:"model_path",type:"str",default:"Required",desc:"Path to trained GNN weights file"}],example:`import qector_decoder_v3 as qd -matcher = qd.GNNBeliefMatcher(dem, "weights.pt")`}],i=c.filter(r=>r.name.toLowerCase().includes(a.toLowerCase())),p=r=>{m(t===r?null:r)};return o.useEffect(()=>{window.matchMedia("(prefers-reduced-motion: reduce)").matches||t&&s.current&&f.fromTo(s.current,{opacity:0,y:10},{opacity:1,y:0,duration:.3,ease:"power2.out"})},[t]),e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"Technical Reference · QECTOR",description:"API reference, decoder parameters, and technical documentation for QECTOR quantum error correction decoder."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"16 Decoder APIs · Stim DEM · Signatures Are Examples"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(h,{text:"Technical Reference",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"API overview for QECTOR's decoders. Signatures, defaults, and snippets below are illustrative examples; treat the installed package as the authoritative reference."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"relative mb-8 max-w-md mx-auto md:mx-0",children:[e.jsx("label",{htmlFor:"decoder-search",className:"sr-only",children:"Search decoders"}),e.jsx("input",{id:"decoder-search",type:"search",placeholder:"Search decoders...",value:a,onChange:r=>l(r.target.value),className:"w-full px-10 py-3 bg-surface/50 border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors"}),e.jsx(x,{className:"w-5 h-5 text-muted-foreground absolute left-3 top-3.5"})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-12 gap-8",children:[e.jsxs("div",{className:"lg:col-span-4 space-y-2",children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider px-2 mb-2 flex items-center gap-1.5",children:[e.jsx(g,{className:"w-3.5 h-3.5"}),"Decoder Classes"]}),e.jsxs("div",{className:"space-y-1",children:[i.map(r=>e.jsxs("button",{"aria-expanded":t===r.name,onClick:()=>p(r.name),className:`w-full flex items-center justify-between p-3.5 rounded-xl border text-sm transition-all duration-200 ${t===r.name?"bg-cyan-300/10 text-cyan-300 border-cyan-300/20 shadow-xs":"bg-surface/20 text-secondary hover:text-primary hover:bg-surface/40 border-gridline/50"}`,children:[e.jsx("span",{className:"font-mono font-semibold",children:r.name}),t===r.name?e.jsx(b,{className:"w-4 h-4"}):e.jsx(y,{className:"w-4 h-4 text-muted-foreground"})]},r.name)),i.length===0&&e.jsxs("div",{className:"p-4 text-center text-xs text-muted-foreground italic border border-dashed border-gridline rounded-xl",children:['No decoders matching "',a,'"']})]})]}),e.jsx("div",{className:"lg:col-span-8",children:t?(()=>{const r=c.find(d=>d.name===t);return r?e.jsxs("div",{ref:s,className:"card-surface bg-surface/10 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold text-primary font-mono",children:r.name}),e.jsx("p",{className:"text-secondary text-sm mt-3 leading-relaxed",children:r.desc})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),"Signature"]}),e.jsx(n,{code:r.signature,language:"python",className:"!my-0 bg-void/70"})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(v,{className:"w-3.5 h-3.5"}),"Parameters"]}),e.jsx("div",{className:"overflow-x-auto border border-gridline rounded-xl",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse text-left text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 text-xs font-semibold uppercase tracking-wider",children:[e.jsx("th",{className:"p-3",children:"Name"}),e.jsx("th",{className:"p-3",children:"Type"}),e.jsx("th",{className:"p-3",children:"Default"}),e.jsx("th",{className:"p-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:r.parameters.map(d=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-mono font-semibold text-primary",children:d.name}),e.jsx("td",{className:"p-3 font-mono text-xs text-secondary",children:d.type}),e.jsx("td",{className:"p-3 font-mono text-xs text-cyan-300",children:d.default}),e.jsx("td",{className:"p-3 text-xs text-secondary leading-relaxed",children:d.desc})]},d.name))})]})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2",children:"Usage Example"}),e.jsx(n,{code:r.example,language:"python",filename:`${r.name.toLowerCase()}_usage.py`})]})]}):null})():e.jsx("div",{className:"h-full flex items-center justify-center border border-dashed border-gridline rounded-2xl p-12 text-center text-muted-foreground italic text-sm",children:"Select a decoder class from the sidebar to inspect parameters and example usage."})})]})]})})]})}export{R as default}; diff --git a/assets/TechnicalReference-2CV7Djeo.js b/assets/TechnicalReference-2CV7Djeo.js deleted file mode 100644 index 07a4e668..00000000 --- a/assets/TechnicalReference-2CV7Djeo.js +++ /dev/null @@ -1,30 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,C as n}from"./index-abfjMTlQ.js";import{N as h}from"./NeuralReveal-D-EQoOl2.js";import{g as f}from"./vendor-gsap-a3sj5zmn.js";import{r as x,h as g,s as b,o as y,T as _,B as v}from"./vendor-ui-B0ssGG4c.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";function R(){const[a,l]=o.useState(""),[t,m]=o.useState("BlossomDecoder"),s=o.useRef(null),c=[{name:"BlossomDecoder",signature:"BlossomDecoder(dem: stim.DetectorErrorModel, *, adaptive_k: bool = True, timeout: Optional[float] = None)",desc:"Minimum-weight perfect matching (MWPM) decoder for CSS stabilizer codes. Uses an exact matching solver to pair syndrome checks.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"adaptive_k",type:"bool",default:"True",desc:"Enable Union-Find pre-filtering to compress graph"},{name:"timeout",type:"float",default:"None",desc:"Max seconds allowed to match a syndrome"}],example:`import qector_decoder_v3 as qd -decoder = qd.BlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"BeliefMatchingDecoder",signature:'BeliefMatchingDecoder(dem: stim.DetectorErrorModel, *, bp_iters: int = 30, max_paths: int = 10, bp_method: str = "product_sum")',desc:"Accuracy-oriented decoder. Uses Belief Propagation (BP) preprocessing to compute edge probabilities, and then runs matching on a reweighted Blossom graph. Use when accuracy matters more than latency.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"bp_iters",type:"int",default:"30",desc:"Max iterations for Belief Propagation"},{name:"max_paths",type:"int",default:"10",desc:"Max alternative paths for match reweighting"},{name:"bp_method",type:"str",default:'"product_sum"',desc:"BP update equation to resolve constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.BeliefMatchingDecoder(dem, bp_iters=30) -correction = decoder.decode(syndrome)`},{name:"BpOsdDecoder",signature:'BpOsdDecoder(dem: stim.DetectorErrorModel, *, osd_order: int = 40, osd_method: str = "osd_cs")',desc:"Belief Propagation + Ordered Statistics Decoding. A common approach for qLDPC codes, where matching graphs are undefined. Handles non-CSS stabilizer layouts.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"osd_order",type:"int",default:"40",desc:"OSD search order limit"},{name:"osd_method",type:"str",default:'"osd_cs"',desc:"OSD resolution method"}],example:`import qector_decoder_v3 as qd -decoder = qd.BpOsdDecoder(dem, osd_order=40) -correction = decoder.decode(syndrome)`},{name:"UnionFindDecoder",signature:"UnionFindDecoder(dem: stim.DetectorErrorModel, *, use_combined: bool = True)",desc:"Near-linear time approximate decoder. Resolves syndromes by cluster growth and path compression. Scaling is O(N), making it ideal for large distance offline simulations.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"use_combined",type:"bool",default:"True",desc:"Enable combined cluster growth constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.UnionFindDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"CPUBatchDecoder",signature:"CPUBatchDecoder(dem: stim.DetectorErrorModel, *, num_threads: int = 0)",desc:"Multi-threaded CPU batch decoder. Leverages Rayon parallelism across CPU cores to decode thousands of syndromes concurrently.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"num_threads",type:"int",default:"0",desc:"Number of worker threads (0 = auto-detect physical cores)"}],example:`import qector_decoder_v3 as qd -decoder = qd.CPUBatchDecoder(dem, num_threads=8) -corrections = decoder.decode_batch(syndromes_matrix)`},{name:"GpuBatchDecoder / CUDABatchDecoder / OpenCLBatchDecoder",signature:"CUDABatchDecoder(dem: stim.DetectorErrorModel, *, batch_size: int = 2048)",desc:"Native GPU batch decoders. Implements CUDA and OpenCL device pipelines to solve thousands of syndromes in parallel. Check availability with CUDABatchDecoder.is_available().",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"batch_size",type:"int",default:"2048",desc:"Parallel batch sizing in GPU VRAM"}],example:`import qector_decoder_v3 as qd -if qd.CUDABatchDecoder.is_available(): - decoder = qd.CUDABatchDecoder(dem, batch_size=4096) - corrections = decoder.decode_batch(syndromes_array)`},{name:"SparseBlossomDecoder",signature:"SparseBlossomDecoder(dem: stim.DetectorErrorModel)",desc:"Low-latency region growing blossom variant optimized for ring-like and sparse detector error graphs.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -decoder = qd.SparseBlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"get_decoder / clear_decoder_cache",signature:'get_decoder(dem_or_h, decoder_type: str = "auto", **kwargs)',desc:"Cached decoder factory for instantiating and caching decoders by error model hash to avoid redundant graph construction.",parameters:[{name:"dem_or_h",type:"Union[stim.DetectorErrorModel, np.ndarray]",default:"Required",desc:"Detector model or H matrix"},{name:"decoder_type",type:"str",default:'"auto"',desc:"Target decoder family name"}],example:`import qector_decoder_v3 as qd -decoder = qd.get_decoder(dem, decoder_type="blossom") -qd.clear_decoder_cache()`},{name:"decode_mmap / decode_with_diagnostics",signature:"decode_mmap(decoder, input_filepath: str, output_filepath: str)",desc:"Out-of-core memory-mapped file decoder for processing gigabyte-scale syndrome files on disk without loading entire matrices into RAM. Returns structured DecodeResult.",parameters:[{name:"decoder",type:"DecoderInstance",default:"Required",desc:"Initialized decoder instance"},{name:"input_filepath",type:"str",default:"Required",desc:"Path to binary syndrome file"},{name:"output_filepath",type:"str",default:"Required",desc:"Path to write binary correction results"}],example:`import qector_decoder_v3 as qd -res = qd.decode_mmap(decoder, "syndromes.bin", "corrections.bin") -print(res.shots_processed, res.latency_seconds)`},{name:"Workbench API",signature:"Workbench(config: Optional[dict] = None)",desc:"High-level orchestration and benchmarking engine for configuring decoding pipelines, running multi-decoder comparative sweeps, and exporting performance reports.",parameters:[{name:"config",type:"dict",default:"None",desc:"Workbench configuration dictionary"}],example:`import qector_decoder_v3 as qd -wb = qd.Workbench() -results = wb.benchmark(dem, shots=100000)`},{name:"stim_compat & sinter_compat",signature:"sinter_compat.qector_sinter_decoders()",desc:"Ecosystem integration helpers providing native compatibility with Stim circuits and Sinter benchmarking harnesses.",parameters:[{name:"sinter_decoders",type:"dict",default:"Required",desc:"Sinter compiled decoder mapping"}],example:`import sinter -from qector_decoder_v3.sinter_compat import qector_sinter_decoders -decoders = qector_sinter_decoders()`},{name:"license.verify_license_token",signature:"license.verify_license_token(token: str) -> bool",desc:"Offline Ed25519 cryptographic signature verification function for commercial evaluation and production license tokens.",parameters:[{name:"token",type:"str",default:"Required",desc:"Signed JWT/Ed25519 license token string"}],example:`from qector_decoder_v3.license import verify_license_token -is_valid = verify_license_token(token_str)`},{name:"HybridDecoder & HybridCascadeDecoder",signature:"HybridCascadeDecoder(dem: stim.DetectorErrorModel) # Feature-gated / source build",desc:"Experimental decoders combining fast Union-Find pre-filtering with exact Blossom fallback for ambiguous clusters. Note: HybridCascadeDecoder requires full-feature source build and may raise unavailable in standard pre-compiled wheels.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -# Research / full-feature build required -decoder = qd.HybridDecoder(dem)`},{name:"PredecodedDecoder & LookupTableDecoder",signature:"LookupTableDecoder(code_matrix: np.ndarray)",desc:"Research decoders for lookup-table fast matching on small stabilizer codes and wrapping pre-calculated decoding results for pipeline benchmarking.",parameters:[{name:"code_matrix",type:"np.ndarray",default:"Required",desc:"Parity check matrix"}],example:`import qector_decoder_v3 as qd -decoder = qd.LookupTableDecoder(H_matrix)`},{name:"ColourCodeDecoder, TwoStageDecoder & AmbiguityClusterDecoder",signature:"ColourCodeDecoder(dem: stim.DetectorErrorModel)",desc:"Research decoders: native colour-code decoding over undecomposed detector error models (color_code family), two-stage decoding pipelines, and ambiguity-cluster resolution.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"}],example:`import qector_decoder_v3 as qd -decoder = qd.ColourCodeDecoder(dem)`},{name:"GNNBeliefMatcher",signature:"GNNBeliefMatcher(dem: stim.DetectorErrorModel, model_path: str)",desc:"Research-stage graph neural network enhanced belief propagation module. Not validated for production use.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"},{name:"model_path",type:"str",default:"Required",desc:"Path to trained GNN weights file"}],example:`import qector_decoder_v3 as qd -matcher = qd.GNNBeliefMatcher(dem, "weights.pt")`}],i=c.filter(r=>r.name.toLowerCase().includes(a.toLowerCase())),p=r=>{m(t===r?null:r)};return o.useEffect(()=>{window.matchMedia("(prefers-reduced-motion: reduce)").matches||t&&s.current&&f.fromTo(s.current,{opacity:0,y:10},{opacity:1,y:0,duration:.3,ease:"power2.out"})},[t]),e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"Technical Reference · QECTOR",description:"API reference, decoder parameters, and technical documentation for QECTOR quantum error correction decoder."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"16 Decoder APIs · Stim DEM · Signatures Are Examples"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(h,{text:"Technical Reference",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"API overview for QECTOR's decoders. Signatures, defaults, and snippets below are illustrative examples; treat the installed package as the authoritative reference."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"relative mb-8 max-w-md mx-auto md:mx-0",children:[e.jsx("label",{htmlFor:"decoder-search",className:"sr-only",children:"Search decoders"}),e.jsx("input",{id:"decoder-search",type:"search",placeholder:"Search decoders...",value:a,onChange:r=>l(r.target.value),className:"w-full px-10 py-3 bg-surface/50 border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors"}),e.jsx(x,{className:"w-5 h-5 text-muted-foreground absolute left-3 top-3.5"})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-12 gap-8",children:[e.jsxs("div",{className:"lg:col-span-4 space-y-2",children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider px-2 mb-2 flex items-center gap-1.5",children:[e.jsx(g,{className:"w-3.5 h-3.5"}),"Decoder Classes"]}),e.jsxs("div",{className:"space-y-1",children:[i.map(r=>e.jsxs("button",{"aria-expanded":t===r.name,onClick:()=>p(r.name),className:`w-full flex items-center justify-between p-3.5 rounded-xl border text-sm transition-all duration-200 ${t===r.name?"bg-cyan-300/10 text-cyan-300 border-cyan-300/20 shadow-xs":"bg-surface/20 text-secondary hover:text-primary hover:bg-surface/40 border-gridline/50"}`,children:[e.jsx("span",{className:"font-mono font-semibold",children:r.name}),t===r.name?e.jsx(b,{className:"w-4 h-4"}):e.jsx(y,{className:"w-4 h-4 text-muted-foreground"})]},r.name)),i.length===0&&e.jsxs("div",{className:"p-4 text-center text-xs text-muted-foreground italic border border-dashed border-gridline rounded-xl",children:['No decoders matching "',a,'"']})]})]}),e.jsx("div",{className:"lg:col-span-8",children:t?(()=>{const r=c.find(d=>d.name===t);return r?e.jsxs("div",{ref:s,className:"card-surface bg-surface/10 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold text-primary font-mono",children:r.name}),e.jsx("p",{className:"text-secondary text-sm mt-3 leading-relaxed",children:r.desc})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),"Signature"]}),e.jsx(n,{code:r.signature,language:"python",className:"!my-0 bg-void/70"})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(v,{className:"w-3.5 h-3.5"}),"Parameters"]}),e.jsx("div",{className:"overflow-x-auto border border-gridline rounded-xl",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse text-left text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 text-xs font-semibold uppercase tracking-wider",children:[e.jsx("th",{className:"p-3",children:"Name"}),e.jsx("th",{className:"p-3",children:"Type"}),e.jsx("th",{className:"p-3",children:"Default"}),e.jsx("th",{className:"p-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:r.parameters.map(d=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-mono font-semibold text-primary",children:d.name}),e.jsx("td",{className:"p-3 font-mono text-xs text-secondary",children:d.type}),e.jsx("td",{className:"p-3 font-mono text-xs text-cyan-300",children:d.default}),e.jsx("td",{className:"p-3 text-xs text-secondary leading-relaxed",children:d.desc})]},d.name))})]})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2",children:"Usage Example"}),e.jsx(n,{code:r.example,language:"python",filename:`${r.name.toLowerCase()}_usage.py`})]})]}):null})():e.jsx("div",{className:"h-full flex items-center justify-center border border-dashed border-gridline rounded-2xl p-12 text-center text-muted-foreground italic text-sm",children:"Select a decoder class from the sidebar to inspect parameters and example usage."})})]})]})})]})}export{R as default}; diff --git a/assets/TechnicalReference-6OShAOCc.js b/assets/TechnicalReference-6OShAOCc.js deleted file mode 100644 index dfe4b8a8..00000000 --- a/assets/TechnicalReference-6OShAOCc.js +++ /dev/null @@ -1,30 +0,0 @@ -import{r as i,j as e}from"./vendor-react-BiHfrq0e.js";import{S as h,C as _}from"./index-CCmwjNGU.js";import{N as g}from"./NeuralReveal-uYarhiMA.js";import{g as p}from"./vendor-gsap-a3sj5zmn.js";import{q as f,h as y,r as b,s as x,T as N,B as k}from"./vendor-ui-B8TlNU4J.js";const v="1.0.1",w="2026-11-06",q=JSON.parse(`[{"name":"AmbiguityClusterDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, error_rate=0.05, ambig_threshold=0.5, max_cluster_size=12)","summary":"C1-02: BP + ambiguity-clustered exact decoding for qLDPC codes.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"}]},{"name":"AutoDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, config: 'BackendConfig | None' = None)","summary":"Workload-aware, self-debugging decoder that routes to CUDA / OpenCL / Rayon / CPU / Fallback.","methods":[{"name":"auto_select","signature":"(checks, n_qubits, batch_size=1)"},{"name":"available_backends","signature":"(self) -> 'list[str]'"},{"name":"batch_decode","signature":"(self, syndromes) -> 'np.ndarray'"},{"name":"calibrate","signature":"(self, sizes=(64, 256, 1024, 4096, 16384), repeats: 'int' = 3, seed: 'int' = 0)"},{"name":"decode","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"diagnostics","signature":"(self) -> 'dict'"},{"name":"reset_backend_health","signature":"(self) -> 'None'"},{"name":"select","signature":"(self, batch_size: 'int') -> 'str'"}]},{"name":"AutoRouter","kind":"class","signature":"(*, priority: 'str' = 'balanced', hardware: 'HardwareLike' = None, error_rate: 'float' = 0.05, code_family: 'Any' = None, use_native_auto: 'bool' = True) -> 'None'","summary":"Construct, cache, and dispatch the policy-selected decoder for a problem.","methods":[{"name":"decode","signature":"(self, checks_or_H: 'Any', syndromes: 'Any', **ctx: 'Any') -> 'np.ndarray'"},{"name":"explain","signature":"(self, checks_or_H: 'Any' = None, syndromes: 'Any' = None, **ctx: 'Any') -> 'dict[str, Any]'"}]},{"name":"BPOSDDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, error_rate=0.1, bp_method=None, osd_order=None)","summary":"Belief Propagation + Ordered Statistics Decoding.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"bp_decode","signature":"(self, syndrome, max_iterations=20)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_batch_flat","signature":"(self, flat_syndromes, num_shots, stride=None)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"decode_timed","signature":"(self, syndrome, max_latency_ms=10.0)"}]},{"name":"Backend","kind":"class","signature":"()","summary":"Backend identifiers & Fallback Tiers.","methods":[]},{"name":"BackendConfig","kind":"class","signature":"(rayon_threshold: 'int' = 8, gpu_threshold: 'int' = 4096, allow_gpu: 'bool' = True, prefer: 'str' = 'cuda', force: 'str | None' = None, enable_auto_debug: 'bool' = True) -> None","summary":"Tunable thresholds and policy for :class:\`AutoDecoder\`.","methods":[]},{"name":"BatchDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None)","summary":"Parallel batch decoder using Rayon (Rust data parallelism).","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"parallel_batch_decode","signature":"(self, syndromes)"}]},{"name":"BatchedBpDecoder","kind":"class","signature":"(H: 'Any', *, error_rate: 'float' = 0.05, priors: 'Any' = None, max_iter: 'int' = 30, alpha: 'float' = 1.0, bp_method: 'str' = 'min_sum', prefer_gpu: 'bool' = True) -> 'None'","summary":"Batched belief-propagation decoder over a fixed GF(2) check matrix \`\`H\`\`.","methods":[{"name":"decode_batch","signature":"(self, syndromes: 'Any', *, return_llr: 'bool' = False, early_stop: 'bool' = True) -> 'tuple[np.ndarray, np.ndarray] | tuple[np.ndarray, np.ndarray, np.ndarray]'"}]},{"name":"BeliefMatching","kind":"class","signature":"(matrices: '_Matrices', max_iter: 'int' = 30, bp_shortcut: 'bool' = False)","summary":"Belief-propagation + minimum-weight perfect matching decoder.","methods":[{"name":"decode","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"decode_batch","signature":"(self, shots) -> 'np.ndarray'"},{"name":"decode_correction","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"decode_observables","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"from_detector_error_model","signature":"(dem: 'Any', max_iter: 'int' = 20) -> 'BeliefMatching'"},{"name":"from_numpy_h","signature":"(H, error_rate: 'float' = 0.05, max_iter: 'int' = 20) -> 'BeliefMatching'"},{"name":"from_stim_circuit","signature":"(circuit, max_iter: 'int' = 20) -> 'BeliefMatching'"}]},{"name":"BenchmarkSuite","kind":"class","signature":"(check_to_qubits, n_qubits=None, n_samples=10000, seed=42)","summary":"Production benchmark suite. Wraps Rust-native benchmarking.","methods":[{"name":"run","signature":"(self)"},{"name":"save","signature":"(self, path, results)"}]},{"name":"BlossomDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, edge_weights=None)","summary":"Minimum-Weight Perfect Matching (MWPM) decoder via Edmonds' Blossom algorithm.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"batch_decode_weighted","signature":"(self, syndromes, weights)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"set_edge_weights","signature":"(self, weights)"}]},{"name":"BpOsdDecoder","kind":"class","signature":"(H: 'Any', error_rate: 'float' = 0.05, priors: 'Any' = None, max_iter: 'int' = 30, ms_scale: 'float' = 1.0, osd_order: 'int' = 0, bp_method: 'str' = 'sum_product', use_gpu: 'Any' = None, max_latency_ms: 'float | None' = None, damping: 'float' = 0.0, osd_lambda: 'Any' = None)","summary":"BP + ordered-statistics decoder for general GF(2) check matrices.","methods":[{"name":"batch_decode","signature":"(self, syndromes) -> 'np.ndarray'"},{"name":"decode","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"decode_correction","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix: 'Any' = None) -> 'np.ndarray'"}]},{"name":"CPUBatchDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None)","summary":"SIMD-friendly CPU batch decoder with pooled buffers and SoA transposition.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"batch_decode_par","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"}]},{"name":"CUDABatchDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, edge_weights=None)","summary":"","methods":[{"name":"batch_decode","signature":"(self, /, syndromes)"},{"name":"is_available","signature":"()"},{"name":"reset","signature":"(self, /)"}]},{"name":"CUDABpOsdDecoder","kind":"class","signature":"(check_to_qubits, n_qubits, error_rate)","summary":"","methods":[{"name":"batch_decode","signature":"(self, /, syndromes)"}]},{"name":"ColourCodeDecoder","kind":"class","signature":"(dem: 'Any', max_iter: 'int' = 30, osd_order: 'int' = 0, method: 'str' = 'bposd')","summary":"Colour-code decoder: BP-OSD over the undecomposed hypergraph DEM.","methods":[{"name":"decode","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"decode_batch","signature":"(self, syndromes) -> 'np.ndarray'"},{"name":"decode_correction","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"decode_observables","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"from_detector_error_model","signature":"(dem: 'Any', max_iter: 'int' = 30, osd_order: 'int' = 0) -> 'ColourCodeDecoder'"},{"name":"from_stim_circuit","signature":"(circuit: 'Any', max_iter: 'int' = 30, osd_order: 'int' = 0) -> 'ColourCodeDecoder'"}]},{"name":"DecodeResult","kind":"class","signature":"(correction: 'np.ndarray', syndrome: 'np.ndarray', n_qubits: 'int', n_checks: 'int', weight: 'float | None' = None, logical_flips: 'np.ndarray | None' = None, decode_seconds: 'float | None' = None, backend: 'str' = 'cpu', fallback: 'bool' = False, fallback_reason: 'str' = '', syndrome_valid: 'bool | None' = None, metadata: 'dict' = ) -> None","summary":"Result of decoding a single syndrome, with diagnostics and metadata.","methods":[{"name":"as_uint8","signature":"(self) -> 'np.ndarray'"},{"name":"explain","signature":"(self) -> 'str'"},{"name":"to_dict","signature":"(self) -> 'dict'"},{"name":"to_json","signature":"(self, indent: 'int' = 2) -> 'str'"},{"name":"verify","signature":"(self, H: 'np.ndarray') -> 'bool'"}]},{"name":"DecoderName","kind":"class","signature":"()","summary":"String identifiers for the routable decoders.","methods":[]},{"name":"DecoderPool","kind":"class","signature":"(check_to_qubits=None, n_qubits=None, decoder_type: 'str' = 'fast_union_find', n_workers: 'int | None' = None, num_threads: 'int | None' = None)","summary":"Multi-process decoder pool for parallel syndrome decoding.","methods":[{"name":"close","signature":"(self)"},{"name":"decode","signature":"(self, syndromes) -> 'np.ndarray'"}]},{"name":"DetectorGraph","kind":"class","signature":"(check_to_qubits, syndrome, check_positions=None, check_types=None, base_weights=None, n_qubits=None)","summary":"Detector graph used by the GNN and hybrid decoder paths.","methods":[{"name":"update_syndrome","signature":"(self, syndrome)"}]},{"name":"FastUnionFindDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, edge_weights=None)","summary":"Union-Find with a zero-allocation hot path, reusable buffers and a C ABI.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_batch_flat","signature":"(self, flat_syndromes, num_shots, stride=None)"},{"name":"decode_batch_into_flat","signature":"(self, flat_syndromes, num_shots, corrections, stride=None)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"set_edge_weights","signature":"(self, edge_weights)"}]},{"name":"GNNBeliefMatcher","kind":"class","signature":"(check_to_qubits, n_qubits=None, *, gnn=None, hidden_size: 'int' = 32, n_layers: 'int' = 2, train_samples: 'int' = 0, error_rate: 'float' = 0.05, train_epochs: 'int' = 3, seed=None)","summary":"End-to-end GNN-guided minimum-weight perfect matching decoder.","methods":[{"name":"batch_decode","signature":"(self, syndromes) -> 'np.ndarray'"},{"name":"decode","signature":"(self, syndrome) -> 'np.ndarray'"}]},{"name":"GNNPredecoder","kind":"class","signature":"(node_feat_dim=None, edge_feat_dim=None, hidden_size=16, n_layers=2)","summary":"Graph Neural Network Pre-Decoder for dynamic edge weight prediction.","methods":[{"name":"forward","signature":"(self, graph)"},{"name":"load_weights","signature":"(self, path)"},{"name":"new_standard","signature":"(hidden_size=16, n_layers=2)"},{"name":"predict_with_node_probs","signature":"(self, graph)"},{"name":"save_weights","signature":"(self, path)"},{"name":"train","signature":"(self, graphs, targets, n_epochs)"}]},{"name":"GNNTrainer","kind":"class","signature":"(check_to_qubits, n_qubits, error_rate=0.1)","summary":"End-to-end GNN training pipeline with Blossom teacher model.","methods":[{"name":"generate_dataset","signature":"(self, n_samples)"},{"name":"train","signature":"(self, gnn, n_samples, n_epochs)"},{"name":"train_bp","signature":"(self, gnn, n_samples, n_epochs, max_bp_iter=20)"}]},{"name":"HardwareProfile","kind":"class","signature":"(cuda_rust: 'bool' = False, gpu: 'bool' = False) -> None","summary":"Resolved view of the GPU capability the policy should assume.","methods":[{"name":"as_dict","signature":"(self) -> 'dict[str, bool]'"},{"name":"detect","signature":"() -> 'HardwareProfile'"}]},{"name":"HybridCascadeDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, edge_weights=None, max_accept_weight=None, escalation=None, error_rate=None)","summary":"Hybrid cascading decoder: Union-Find pre-filter + Blossom/BP-OSD escalation.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"batch_decode_timed","signature":"(self, syndromes, max_latency_ms=10.0)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"decode_timed","signature":"(self, syndrome, max_latency_ms=10.0)"}]},{"name":"HybridDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, check_positions=None, check_types=None, base_weights=None, gnn_hidden_size=64, gnn_n_layers=3)","summary":"GNN Pre-Decoder + SparseBlossom hybrid decoder.","methods":[{"name":"batch_decode_hybrid","signature":"(self, syndromes)"},{"name":"batch_decode_standard","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_heuristic","signature":"(self, syndrome)"},{"name":"decode_hybrid","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"decode_standard","signature":"(self, syndrome)"},{"name":"load_weights","signature":"(self, path)"},{"name":"save_weights","signature":"(self, path)"},{"name":"train","signature":"(self, n_samples, n_epochs, error_rate=0.1)"},{"name":"train_bp","signature":"(self, n_samples, n_epochs, error_rate=0.1, max_bp_iter=20)"}]},{"name":"LERBenchmark","kind":"class","signature":"()","summary":"Logical Error Rate benchmark suite.","methods":[{"name":"run_all","signature":"(self)"}]},{"name":"LookupTableDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None)","summary":"Exact lookup-table decoder with UnionFind fallback.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"build_table","signature":"(self, max_entries)"},{"name":"decode","signature":"(self, syndrome)"}]},{"name":"MAX_WORKERS","kind":"constant","signature":"","summary":"","methods":[]},{"name":"Matching","kind":"class","signature":"(H: 'Any' = None, weights: 'Any' = None, faults_matrix: 'Any' = None)","summary":"Minimum-weight perfect-matching decoder with a PyMatching-style API.","methods":[{"name":"add_boundary_edge","signature":"(self, node: 'int', fault_ids: 'Any' = None, weight: 'float' = 1.0, **_: 'Any') -> 'None'"},{"name":"add_edge","signature":"(self, node1: 'int', node2: 'int', fault_ids: 'Any' = None, weight: 'float' = 1.0, **_: 'Any') -> 'None'"},{"name":"check_matrix","signature":"(self) -> 'np.ndarray'"},{"name":"decode","signature":"(self, syndrome: 'Sequence[int]') -> 'np.ndarray'"},{"name":"decode_batch","signature":"(self, shots: 'Any') -> 'np.ndarray'"},{"name":"decode_to_edges_array","signature":"(self, syndrome: 'Sequence[int]') -> 'np.ndarray'"},{"name":"edges","signature":"(self) -> 'list[tuple[int | None, int | None, dict]]'"},{"name":"from_check_matrix","signature":"(H: 'Any', weights: 'Any' = None, faults_matrix: 'Any' = None, **_: 'Any') -> 'Matching'"},{"name":"from_detector_error_model","signature":"(dem: 'Any') -> 'Matching'"},{"name":"from_stim_dem","signature":"(dem: 'Any') -> 'Matching'"}]},{"name":"NativeAutoDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, distance=5, noise_rate=0.01, batch_size=1, is_qldpc=False)","summary":"","methods":[{"name":"batch_decode","signature":"(self, /, syndromes)"},{"name":"batch_decode_strided","signature":"(self, /, syndromes, stride=None, require_alignment=False)"},{"name":"decode","signature":"(self, /, syndrome)"}]},{"name":"NeuralPredecoder","kind":"class","signature":"(n_input, n_output, n_hidden1=None, n_hidden2=None)","summary":"Lightweight MLP pre-decoder with Xavier initialization and SGD training.","methods":[{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"predict","signature":"(self, syndrome)"},{"name":"train","signature":"(self, syndromes, corrections, n_epochs, learning_rate=0.01)"}]},{"name":"OpenCLBatchDecoder","kind":"class","signature":"(*a, **k)","summary":"OpenCL batch decoder - requires source build with --features opencl.","methods":[{"name":"is_available","signature":"()"}]},{"name":"PredecodedDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, backend: 'str' = 'blossom')","summary":"Local-matching predecoder + exact/fast residual decoder.","methods":[{"name":"batch_decode","signature":"(self, syndromes) -> 'np.ndarray'"},{"name":"decode","signature":"(self, syndrome) -> 'np.ndarray'"}]},{"name":"Recommendation","kind":"class","signature":"(decoder: 'str', reason: 'str', family: 'str', priority: 'str', batch_size: 'int', hardware: 'dict[str, bool]', gpu_batched_bp: 'bool' = False, forced: 'bool' = False, graphlike: 'bool | None' = None, distance: 'int | None' = None, n_qubits: 'int | None' = None) -> None","summary":"A decoder choice plus the reasoning and inputs that produced it.","methods":[{"name":"as_dict","signature":"(self) -> 'dict[str, Any]'"}]},{"name":"SlidingWindowDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, window_size=10, decay_factor=0.8, check_types=None, p_data=None, p_meas=None)","summary":"Sliding-window decoder with exponential decay weighting or fault-tolerant space-time decoding.","methods":[{"name":"decode","signature":"(self, syndrome=None)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"detector_history","signature":"(self)"},{"name":"flush","signature":"(self)"},{"name":"update","signature":"(self, round_syndrome)"}]},{"name":"SpaceTimeDecoder","kind":"class","signature":"(check_to_qubits, check_types, n_rounds, p_data, p_meas, n_qubits=None)","summary":"PyO3 wrapper for [\`SpaceTimeDecoder\`]: fault-tolerant temporal decoding via XOR-of-consecutive-rounds detectors matched on a 3D (space x time) graph, as opposed to [\`crate::sliding_window::PySlidingWindowDecoder\`] /…","methods":[{"name":"decode_history","signature":"(self, /)"},{"name":"reset","signature":"(self, /)"},{"name":"update","signature":"(self, /, round_syndrome)"}]},{"name":"SparseBlossomDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, edge_weights=None)","summary":"Region-growing Sparse Blossom decoder with RadixHeap.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"decode_with_weights","signature":"(self, syndrome, weights)"}]},{"name":"StreamingDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, history_size=10, check_types=None, p_data=None, p_meas=None)","summary":"Streaming decoder that accumulates syndromes over multiple rounds.","methods":[{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"decode_rounds","signature":"(self, rounds)"},{"name":"detector_history","signature":"(self)"},{"name":"flush","signature":"(self)"},{"name":"update","signature":"(self, round_syndrome)"}]},{"name":"StreamingResult","kind":"class","signature":"(corrections: 'np.ndarray', syndromes: 'np.ndarray', telemetry: 'StreamingTelemetry', logical_flips: 'np.ndarray | None' = None) -> None","summary":"Outcome of a full streaming decode.","methods":[{"name":"is_valid","signature":"(self, H: 'Any', *, prefer_gpu: 'bool' = True) -> 'bool'"}]},{"name":"StreamingSession","kind":"class","signature":"(code_or_checks: 'Any', n_qubits: 'int | None' = None, *, window_size: 'int' = 8, decoder: 'Any | None' = None, logicals: 'Any' = None, prefer_gpu: 'bool | None' = None) -> 'None'","summary":"Incremental multi-round decode with a sliding commit buffer.","methods":[{"name":"committed_corrections","signature":"(self) -> 'np.ndarray'"},{"name":"committed_syndromes","signature":"(self) -> 'np.ndarray'"},{"name":"flush","signature":"(self) -> 'list[np.ndarray]'"},{"name":"push_round","signature":"(self, syndrome: 'Any') -> 'list[np.ndarray]'"},{"name":"reset","signature":"(self) -> 'None'"},{"name":"run","signature":"(self, syndrome_rounds: 'Any') -> 'StreamingResult'"}]},{"name":"StreamingTelemetry","kind":"class","signature":"(rounds: 'int' = 0, windows: 'int' = 0, committed: 'int' = 0, decode_seconds: 'float' = 0.0, per_window_seconds: 'list[float]' = , gpu: 'dict[str, int]' = , backend: 'dict[str, Any]' = , rounds_valid: 'int | None' = None) -> None","summary":"Real, measured counters for a streaming decode run.","methods":[{"name":"as_dict","signature":"(self) -> 'dict[str, Any]'"},{"name":"record_window","signature":"(self, seconds: 'float', rounds: 'int' = 1) -> 'None'"}]},{"name":"TwoStageDecoder","kind":"class","signature":"(check_to_qubits, check_types, n_qubits=None, x_decoder='blossom', z_decoder='blossom')","summary":"C1-03: Correlated two-stage matching for CSS codes.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"}]},{"name":"UnionFindDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, edge_weights=None)","summary":"Production-ready Union-Find quantum error correction decoder.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_batch_flat","signature":"(self, flat_syndromes, num_shots, stride=None)"},{"name":"decode_batch_into_flat","signature":"(self, flat_syndromes, num_shots, corrections, stride=None)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"set_edge_weights","signature":"(self, edge_weights)"}]},{"name":"Workbench","kind":"class","signature":"() -> 'None'","summary":"Controller for the QECTOR Workbench (load → benchmark → export).","methods":[{"name":"cancel_job","signature":"(self, job_id: 'str') -> 'str'"},{"name":"detect_backends","signature":"(self) -> 'dict'"},{"name":"environment_snapshot","signature":"(self) -> 'dict'"},{"name":"export_csv","signature":"(self, artifact: 'dict', path: 'str') -> 'str'"},{"name":"export_json","signature":"(self, artifact: 'dict', path: 'str') -> 'str'"},{"name":"export_pdf","signature":"(self, artifact: 'dict', path: 'str') -> 'str'"},{"name":"get_job","signature":"(self, job_id: 'str') -> 'dict'"},{"name":"get_license_info","signature":"(self) -> 'dict'"},{"name":"job_artifact","signature":"(self, job_id: 'str') -> 'dict | None'"},{"name":"list_jobs","signature":"(self) -> 'list[dict]'"},{"name":"load_dem","signature":"(self, source: 'Any') -> 'dict'"},{"name":"load_stim","signature":"(self, source: 'Any') -> 'dict'"},{"name":"run_benchmark","signature":"(self, spec: 'dict', job: 'Job | None' = None) -> 'dict'"},{"name":"set_license_key","signature":"(self, key: 'str') -> 'None'"},{"name":"shutdown","signature":"(self) -> 'None'"},{"name":"submit_job","signature":"(self, spec: 'dict') -> 'str'"},{"name":"wait","signature":"(self, job_id: 'str', timeout: 'float | None' = None) -> 'dict'"}]},{"name":"backend","kind":"module","signature":"","summary":"qector_decoder_v3.backend - Workload-Aware AutoDecoder with Self-Auto-Debug & Multi-Tier Fallback.","methods":[]},{"name":"batched_bp_decode","kind":"function","signature":"(H: 'Any', syndromes: 'Any', *, error_rate: 'float' = 0.05, priors: 'Any' = None, max_iter: 'int' = 30, alpha: 'float' = 1.0, bp_method: 'str' = 'min_sum', prefer_gpu: 'bool' = True, early_stop: 'bool' = True, return_llr: 'bool' = False) -> 'tuple[np.ndarray, np.ndarray] | tuple[np.ndarray, np.ndarray, np.ndarray]'","summary":"Decode a stack of syndromes with batched belief propagation.","methods":[]},{"name":"belief_matching","kind":"module","signature":"","summary":"qector_decoder_v3.belief_matching - belief-propagation + MWPM (belief-matching).","methods":[]},{"name":"benchmarking","kind":"module","signature":"","summary":"qector_decoder_v3.benchmarking - reproducible, statistically-honest benchmarks.","methods":[]},{"name":"bp_cupy","kind":"module","signature":"","summary":"qector_decoder_v3.bp_cupy - batched, GPU-resident belief propagation.","methods":[]},{"name":"bposd","kind":"module","signature":"","summary":"qector_decoder_v3.bposd - belief propagation + ordered-statistics decoding.","methods":[]},{"name":"changelog","kind":"function","signature":"() -> str","summary":"Return a human-readable changelog string for the loaded package.","methods":[]},{"name":"check_to_edges","kind":"function","signature":"(check_to_qubits)","summary":"Convert check_to_qubits to edge list.","methods":[]},{"name":"clear_decoder_cache","kind":"function","signature":"()","summary":"Clear the in-memory decoder and decoder pool LRU caches.","methods":[]},{"name":"codes","kind":"module","signature":"","summary":"qector_decoder_v3.codes - Code-family helpers.","methods":[]},{"name":"colour_code","kind":"module","signature":"","summary":"C1-04: Colour-code decoder.","methods":[]},{"name":"compute_detector_differences","kind":"function","signature":"(history)","summary":"Computes XOR detector differences across consecutive syndrome rounds: detector_t = raw_t ^ raw_{t-1}.","methods":[]},{"name":"cuda_is_available","kind":"function","signature":"()","summary":"","methods":[]},{"name":"decode_mmap","kind":"function","signature":"(syndrome_path: 'str', output_path: 'str', check_to_qubits, n_qubits: 'int', decoder_type: 'str' = 'cpu_batch', batch_size: 'int' = 65536, n_shots: 'int | None' = None, dtype: '_np.dtype' = dtype('uint8'), verbose: 'bool' = False)","summary":"Out-of-core batch decoding via memory-mapped arrays.","methods":[]},{"name":"decode_with_diagnostics","kind":"function","signature":"(code: 'Any', syndrome: 'Sequence[int]', kind: 'str' = 'blossom', decoder: 'Any' = None, logicals: 'np.ndarray | None' = None) -> 'DecodeResult'","summary":"Decode one syndrome and return a fully-populated :class:\`DecodeResult\`.","methods":[]},{"name":"decode_with_gnn","kind":"function","signature":"(check_to_qubits, n_qubits, syndrome, **kwargs) -> 'np.ndarray'","summary":"One-shot GNN-guided MWPM decode (see :class:\`GNNBeliefMatcher\`).","methods":[]},{"name":"decoder_cache","kind":"module","signature":"","summary":"qector_decoder_v3.decoder_cache - LRU-decoder cache and factory functions.","methods":[]},{"name":"decoder_pool","kind":"module","signature":"","summary":"qector_decoder_v3.decoder_pool - Multi-process decoder pool.","methods":[]},{"name":"dem","kind":"module","signature":"","summary":"qector_decoder_v3.dem - Stim Detector Error Model (DEM) loader.","methods":[]},{"name":"detect_hardware","kind":"function","signature":"() -> 'HardwareProfile'","summary":"Return the live :class:\`HardwareProfile\` (alias for \`\`HardwareProfile.detect\`\`).","methods":[]},{"name":"enforce_distance_cap","kind":"function","signature":"(distance) -> None","summary":"Enforce that *distance* does not exceed the active tier's cap.","methods":[]},{"name":"enforce_unlocked","kind":"function","signature":"() -> None","summary":"Hard-gate decode path when no valid license is active (QECTOR_ENFORCE=1).","methods":[]},{"name":"estimate_distance","kind":"function","signature":"(check_to_qubits, n_qubits=None)","summary":"Python wrapper for estimate_distance.","methods":[]},{"name":"flush_usage","kind":"function","signature":"(customer_id: 'str | None' = None, api_key: 'str | None' = None) -> dict","summary":"Flush accumulated decode shots to the Stripe Billing Meter Events API.","methods":[]},{"name":"from_circuit","kind":"function","signature":"(circuit, decoder_type='blossom', **kwargs)","summary":"Build a decoder from a Stim circuit in one call.","methods":[]},{"name":"generate_biconnected_qldpc_checks","kind":"function","signature":"(n_qubits, degree)","summary":"Generate a bipolar / biconnected qLDPC Tanner graph parity check matrix.","methods":[]},{"name":"generate_parity_check_matrix","kind":"function","signature":"(check_to_qubits, n_qubits=None)","summary":"Return the binary parity-check matrix \`\`H\`\` for *check_to_qubits*.","methods":[]},{"name":"generate_repetition_code_checks","kind":"function","signature":"(distance)","summary":"Generate a 1D repetition/chain code for testing.","methods":[]},{"name":"generate_ring_code_checks","kind":"function","signature":"(distance)","summary":"Generate a simple 1D ring code for testing.","methods":[]},{"name":"generate_space_time_surface_code_checks","kind":"function","signature":"(distance, rounds)","summary":"Generate 3D space-time surface code checks across multiple rounds.","methods":[]},{"name":"generate_surface_code_checks","kind":"function","signature":"(distance)","summary":"Generate compact periodic (toric) surface-code checks.","methods":[]},{"name":"generate_toy_code_checks","kind":"function","signature":"(distance)","summary":"Generate a toy code (not a proper quantum code) with d*d qubits for backward compatibility.","methods":[]},{"name":"generate_triangular_color_code_4_8_8_checks","kind":"function","signature":"(distance)","summary":"Generate 4.8.8 triangular color code parity check matrix.","methods":[]},{"name":"get_accumulated_shots","kind":"function","signature":"() -> int","summary":"Get total accumulated decode shots.","methods":[]},{"name":"get_backend","kind":"function","signature":"() -> 'GpuBackend'","summary":"Return the cached :class:\`GpuBackend\` capability snapshot (built once).","methods":[]},{"name":"get_decoder","kind":"function","signature":"(checks_tuple: 'tuple[tuple[int, ...]]', n_qubits: 'int', decoder_type: 'str' = 'union_find')","summary":"Get a decoder, constructing it once and caching for reuse.","methods":[]},{"name":"get_decoder_pool","kind":"function","signature":"(checks_tuple: 'tuple[tuple[int, ...]]', n_qubits: 'int', decoder_type: 'str' = 'union_find', n_workers: 'int | None' = None)","summary":"Get a multi-process :class:\`DecoderPool\`, constructed once and cached.","methods":[]},{"name":"get_latency_quantiles","kind":"function","signature":"()","summary":"\`get_latency_quantiles() -> tuple[float, float, float] | None\`","methods":[]},{"name":"get_license_info","kind":"function","signature":"() -> dict","summary":"Get active license info dictionary.","methods":[]},{"name":"gpu_available","kind":"function","signature":"() -> 'bool'","summary":"Return \`\`True\`\` iff CuPy is importable **and** a CUDA device is usable.","methods":[]},{"name":"gpu_backend","kind":"module","signature":"","summary":"qector_decoder_v3.gpu_backend - the CuPy GPU backend abstraction.","methods":[]},{"name":"has_cuda_rust","kind":"function","signature":"() -> 'bool'","summary":"Return \`\`True\`\` iff the Rust \`\`CUDABatchDecoder\`\` reports a usable device.","methods":[]},{"name":"has_cupy","kind":"function","signature":"() -> 'bool'","summary":"Return \`\`True\`\` if the \`\`cupy\`\` module can be imported.","methods":[]},{"name":"license","kind":"module","signature":"","summary":"","methods":[]},{"name":"opencl_is_available","kind":"function","signature":"()","summary":"","methods":[]},{"name":"predecoder","kind":"module","signature":"","summary":"qector_decoder_v3.predecoder - a fast, faithful matching predecoder.","methods":[]},{"name":"pymatching","kind":"module","signature":"","summary":"qector_decoder_v3.pymatching_compat - a PyMatching-compatible \`\`Matching\`\` API.","methods":[]},{"name":"pymatching_compat","kind":"module","signature":"","summary":"qector_decoder_v3.pymatching_compat - a PyMatching-compatible \`\`Matching\`\` API.","methods":[]},{"name":"qiskit_plugin","kind":"module","signature":"","summary":"QECTOR Qiskit Plugin - optional integration with the Qiskit ecosystem.","methods":[]},{"name":"recommend","kind":"function","signature":"(code_family: 'Any' = None, distance: 'int | None' = None, n_qubits: 'int | None' = None, batch_size: 'int' = 1, priority: 'str' = 'balanced', hardware: 'HardwareLike' = None, *, graphlike: 'bool | None' = None) -> 'Recommendation'","summary":"Return a rich :class:\`Recommendation\` for a decoding problem.","methods":[]},{"name":"recommend_decoder","kind":"function","signature":"(code_family: 'Any' = None, distance: 'int | None' = None, n_qubits: 'int | None' = None, batch_size: 'int' = 1, priority: 'str' = 'balanced', hardware: 'HardwareLike' = None) -> 'str'","summary":"Return the *name* of the recommended decoder class (see :func:\`recommend\`).","methods":[]},{"name":"record_shots","kind":"function","signature":"(count: int) -> None","summary":"Record decoding shots into telemetry buffer.","methods":[]},{"name":"rest_api","kind":"module","signature":"","summary":"Minimal REST API for QECTOR.","methods":[]},{"name":"result","kind":"module","signature":"","summary":"qector_decoder_v3.result - Rich decode results, diagnostics and debug output.","methods":[]},{"name":"routing","kind":"module","signature":"","summary":"qector_decoder_v3.routing - intelligent decoder router / auto-selection.","methods":[]},{"name":"run_mcp_server","kind":"function","signature":"()","summary":"Python signature: \`\`\`python run_mcp_server() \`\`\`","methods":[]},{"name":"set_license_key","kind":"function","signature":"(key: str) -> None","summary":"Set the global QECTOR license key for tier enforcement.","methods":[]},{"name":"set_license_key_file","kind":"function","signature":"(path) -> None","summary":"Load a license key from *path* and activate it.","methods":[]},{"name":"sinter_compat","kind":"module","signature":"","summary":"qector_decoder_v3.sinter_compat - plug QECTOR into Sinter.","methods":[]},{"name":"sliding_window_decode","kind":"function","signature":"(syndrome_rounds: 'Any', code: 'Any' = None, *, check_to_qubits: 'Sequence[Sequence[int]] | None' = None, n_qubits: 'int | None' = None, window_size: 'int' = 8, decoder: 'Any | None' = None, logicals: 'Any' = None, prefer_gpu: 'bool | None' = None) -> 'StreamingResult'","summary":"Decode a whole multi-round syndrome stream window-by-window.","methods":[]},{"name":"sparse_blossom_radix_neighbors","kind":"function","signature":"(decoder, defects, k=8)","summary":"Return the k-nearest candidate edges (sorted by distance) for \`defects\`.","methods":[]},{"name":"start_metrics_server","kind":"function","signature":"(addr='127.0.0.1:9090')","summary":"Start the Prometheus metrics HTTP server.","methods":[]},{"name":"stim_compat","kind":"module","signature":"","summary":"Stim compatibility layer - Conversion and wrappers for the Stim ecosystem.","methods":[]},{"name":"streaming","kind":"module","signature":"","summary":"qector_decoder_v3.streaming - a higher-level Python streaming / multi-round decode *orchestration* layer.","methods":[]},{"name":"stripe_integration","kind":"module","signature":"","summary":"QECTOR Decoder v3 - Full Stripe API & Webhook License Fulfillment Integration","methods":[]},{"name":"verify_license_token","kind":"function","signature":"(token: 'str', customer_email: 'str' = '') -> 'bool'","summary":"Verifies the license token signature completely offline using Ed25519.","methods":[]},{"name":"workbench","kind":"module","signature":"","summary":"qector_decoder_v3.workbench - the QECTOR Workbench application controller.","methods":[]}]`),m={package:"qector-decoder-v3",version:v,generated:w,items:q},D=["class","function","module"];function C(){const[a,l]=i.useState(""),[t,u]=i.useState("all"),o=m.items,c=i.useMemo(()=>{const r=a.trim().toLowerCase();return o.filter(s=>(t==="all"||s.kind===t)&&(!r||s.name.toLowerCase().includes(r)||s.summary.toLowerCase().includes(r)))},[o,a,t]);return e.jsx("section",{className:"section-padding pb-24","aria-labelledby":"api-index",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsx("h2",{id:"api-index",className:"text-3xl font-bold mb-2",children:"API index"}),e.jsxs("p",{className:"text-secondary text-sm mb-6 max-w-3xl",children:["Generated from the published ",e.jsxs("code",{className:"font-mono text-cyan-200",children:[m.package," ",m.version]})," wheel on ",m.generated,": every public name in ",e.jsx("code",{className:"font-mono text-cyan-200",children:"qector_decoder_v3"}),", with the signature Python reports and the first paragraph of its docstring."," ",o.length," names."]}),e.jsxs("div",{className:"flex flex-wrap gap-3 mb-6",children:[e.jsx("label",{className:"sr-only",htmlFor:"api-q",children:"Filter the API index"}),e.jsx("input",{id:"api-q",type:"search",value:a,onChange:r=>l(r.target.value),placeholder:"Filter by name or description",className:"flex-1 min-w-[14rem] bg-surface border border-gridline rounded-lg px-3 py-2 text-sm text-primary placeholder:text-muted-foreground focus:outline-none focus:border-cyan-300/50"}),e.jsx("div",{className:"flex gap-1",role:"group","aria-label":"Kind",children:["all",...D].map(r=>e.jsx("button",{type:"button","aria-pressed":t===r,onClick:()=>u(r),className:`px-3 py-2 rounded-lg text-xs font-semibold capitalize border ${t===r?"border-cyan-300/50 text-cyan-300 bg-cyan-300/10":"border-gridline text-secondary hover:text-primary"}`,children:{all:"All",class:"Classes",function:"Functions",module:"Modules"}[r]},r))})]}),e.jsxs("ul",{className:"space-y-3",children:[c.map(r=>e.jsxs("li",{className:"bg-[#0b1329]/40 border border-slate-800/80 rounded-2xl p-4",children:[e.jsxs("div",{className:"flex flex-wrap items-baseline gap-x-3 gap-y-1",children:[e.jsx("span",{className:"text-[10px] uppercase tracking-wider font-semibold text-muted-foreground",children:r.kind}),e.jsxs("code",{className:"font-mono text-cyan-300 text-sm break-all",children:[r.name,e.jsx("span",{className:"text-secondary",children:r.signature})]})]}),r.summary&&e.jsx("p",{className:"text-secondary text-sm mt-2 leading-relaxed",children:r.summary}),r.methods.length>0&&e.jsxs("details",{className:"mt-2",children:[e.jsxs("summary",{className:"text-xs text-muted-foreground cursor-pointer hover:text-cyan-300",children:[r.methods.length," public methods"]}),e.jsx("ul",{className:"mt-2 grid md:grid-cols-2 gap-x-6 gap-y-1",children:r.methods.map(s=>e.jsx("li",{children:e.jsxs("code",{className:"font-mono text-xs text-primary break-all",children:[s.name,e.jsx("span",{className:"text-muted-foreground",children:s.signature})]})},s.name))})]})]},r.name)),c.length===0&&e.jsx("li",{className:"text-muted-foreground text-sm",children:"No names match."})]})]})})}function B(){const[a,l]=i.useState(""),[t,u]=i.useState("BlossomDecoder"),o=i.useRef(null),c=[{name:"BlossomDecoder",signature:"BlossomDecoder(dem: stim.DetectorErrorModel, *, adaptive_k: bool = True, timeout: Optional[float] = None)",desc:"Minimum-weight perfect matching (MWPM) decoder for CSS stabilizer codes. Uses an exact matching solver to pair syndrome checks.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"adaptive_k",type:"bool",default:"True",desc:"Enable Union-Find pre-filtering to compress graph"},{name:"timeout",type:"float",default:"None",desc:"Max seconds allowed to match a syndrome"}],example:`import qector_decoder_v3 as qd -decoder = qd.BlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"BeliefMatchingDecoder",signature:'BeliefMatchingDecoder(dem: stim.DetectorErrorModel, *, bp_iters: int = 30, max_paths: int = 10, bp_method: str = "product_sum")',desc:"Accuracy-oriented decoder. Uses Belief Propagation (BP) preprocessing to compute edge probabilities, and then runs matching on a reweighted Blossom graph. Use when accuracy matters more than latency.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"bp_iters",type:"int",default:"30",desc:"Max iterations for Belief Propagation"},{name:"max_paths",type:"int",default:"10",desc:"Max alternative paths for match reweighting"},{name:"bp_method",type:"str",default:'"product_sum"',desc:"BP update equation to resolve constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.BeliefMatchingDecoder(dem, bp_iters=30) -correction = decoder.decode(syndrome)`},{name:"BpOsdDecoder",signature:'BpOsdDecoder(dem: stim.DetectorErrorModel, *, osd_order: int = 40, osd_method: str = "osd_cs")',desc:"Belief Propagation + Ordered Statistics Decoding. A common approach for qLDPC codes, where matching graphs are undefined. Handles non-CSS stabilizer layouts.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"osd_order",type:"int",default:"40",desc:"OSD search order limit"},{name:"osd_method",type:"str",default:'"osd_cs"',desc:"OSD resolution method"}],example:`import qector_decoder_v3 as qd -decoder = qd.BpOsdDecoder(dem, osd_order=40) -correction = decoder.decode(syndrome)`},{name:"UnionFindDecoder",signature:"UnionFindDecoder(dem: stim.DetectorErrorModel, *, use_combined: bool = True)",desc:"Near-linear time approximate decoder. Resolves syndromes by cluster growth and path compression. Scaling is O(N), making it ideal for large distance offline simulations.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"use_combined",type:"bool",default:"True",desc:"Enable combined cluster growth constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.UnionFindDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"CPUBatchDecoder",signature:"CPUBatchDecoder(dem: stim.DetectorErrorModel, *, num_threads: int = 0)",desc:"Multi-threaded CPU batch decoder. Leverages Rayon parallelism across CPU cores to decode thousands of syndromes concurrently.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"num_threads",type:"int",default:"0",desc:"Number of worker threads (0 = auto-detect physical cores)"}],example:`import qector_decoder_v3 as qd -decoder = qd.CPUBatchDecoder(dem, num_threads=8) -corrections = decoder.decode_batch(syndromes_matrix)`},{name:"GpuBatchDecoder / CUDABatchDecoder / OpenCLBatchDecoder",signature:"CUDABatchDecoder(dem: stim.DetectorErrorModel, *, batch_size: int = 2048)",desc:"Native GPU batch decoders. Implements CUDA and OpenCL device pipelines to solve thousands of syndromes in parallel. Check availability with CUDABatchDecoder.is_available().",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"batch_size",type:"int",default:"2048",desc:"Parallel batch sizing in GPU VRAM"}],example:`import qector_decoder_v3 as qd -if qd.CUDABatchDecoder.is_available(): - decoder = qd.CUDABatchDecoder(dem, batch_size=4096) - corrections = decoder.decode_batch(syndromes_array)`},{name:"SparseBlossomDecoder",signature:"SparseBlossomDecoder(dem: stim.DetectorErrorModel)",desc:"Low-latency region growing blossom variant optimized for ring-like and sparse detector error graphs.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -decoder = qd.SparseBlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"get_decoder / clear_decoder_cache",signature:'get_decoder(dem_or_h, decoder_type: str = "auto", **kwargs)',desc:"Cached decoder factory for instantiating and caching decoders by error model hash to avoid redundant graph construction.",parameters:[{name:"dem_or_h",type:"Union[stim.DetectorErrorModel, np.ndarray]",default:"Required",desc:"Detector model or H matrix"},{name:"decoder_type",type:"str",default:'"auto"',desc:"Target decoder family name"}],example:`import qector_decoder_v3 as qd -decoder = qd.get_decoder(dem, decoder_type="blossom") -qd.clear_decoder_cache()`},{name:"decode_mmap / decode_with_diagnostics",signature:"decode_mmap(decoder, input_filepath: str, output_filepath: str)",desc:"Out-of-core memory-mapped file decoder for processing gigabyte-scale syndrome files on disk without loading entire matrices into RAM. Returns structured DecodeResult.",parameters:[{name:"decoder",type:"DecoderInstance",default:"Required",desc:"Initialized decoder instance"},{name:"input_filepath",type:"str",default:"Required",desc:"Path to binary syndrome file"},{name:"output_filepath",type:"str",default:"Required",desc:"Path to write binary correction results"}],example:`import qector_decoder_v3 as qd -res = qd.decode_mmap(decoder, "syndromes.bin", "corrections.bin") -print(res.shots_processed, res.latency_seconds)`},{name:"Workbench API",signature:"Workbench(config: Optional[dict] = None)",desc:"High-level orchestration and benchmarking engine for configuring decoding pipelines, running multi-decoder comparative sweeps, and exporting performance reports.",parameters:[{name:"config",type:"dict",default:"None",desc:"Workbench configuration dictionary"}],example:`import qector_decoder_v3 as qd -wb = qd.Workbench() -results = wb.benchmark(dem, shots=100000)`},{name:"stim_compat & sinter_compat",signature:"sinter_compat.qector_sinter_decoders()",desc:"Ecosystem integration helpers providing native compatibility with Stim circuits and Sinter benchmarking harnesses.",parameters:[{name:"sinter_decoders",type:"dict",default:"Required",desc:"Sinter compiled decoder mapping"}],example:`import sinter -from qector_decoder_v3.sinter_compat import qector_sinter_decoders -decoders = qector_sinter_decoders()`},{name:"license.verify_license_token",signature:"license.verify_license_token(token: str) -> bool",desc:"Offline Ed25519 cryptographic signature verification function for commercial evaluation and production license tokens.",parameters:[{name:"token",type:"str",default:"Required",desc:"Signed JWT/Ed25519 license token string"}],example:`from qector_decoder_v3.license import verify_license_token -is_valid = verify_license_token(token_str)`},{name:"HybridDecoder & HybridCascadeDecoder",signature:"HybridCascadeDecoder(dem: stim.DetectorErrorModel) # Feature-gated / source build",desc:"Experimental decoders combining fast Union-Find pre-filtering with exact Blossom fallback for ambiguous clusters. Note: HybridCascadeDecoder requires full-feature source build and may raise unavailable in standard pre-compiled wheels.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -# Research / full-feature build required -decoder = qd.HybridDecoder(dem)`},{name:"PredecodedDecoder & LookupTableDecoder",signature:"LookupTableDecoder(code_matrix: np.ndarray)",desc:"Research decoders for lookup-table fast matching on small stabilizer codes and wrapping pre-calculated decoding results for pipeline benchmarking.",parameters:[{name:"code_matrix",type:"np.ndarray",default:"Required",desc:"Parity check matrix"}],example:`import qector_decoder_v3 as qd -decoder = qd.LookupTableDecoder(H_matrix)`},{name:"ColourCodeDecoder, TwoStageDecoder & AmbiguityClusterDecoder",signature:"ColourCodeDecoder(dem: stim.DetectorErrorModel)",desc:"Research decoders: native colour-code decoding over undecomposed detector error models (color_code family), two-stage decoding pipelines, and ambiguity-cluster resolution.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"}],example:`import qector_decoder_v3 as qd -decoder = qd.ColourCodeDecoder(dem)`},{name:"GNNBeliefMatcher",signature:"GNNBeliefMatcher(dem: stim.DetectorErrorModel, model_path: str)",desc:"Research-stage graph neural network enhanced belief propagation module. Not validated for production use.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"},{name:"model_path",type:"str",default:"Required",desc:"Path to trained GNN weights file"}],example:`import qector_decoder_v3 as qd -matcher = qd.GNNBeliefMatcher(dem, "weights.pt")`}],r=c.filter(n=>n.name.toLowerCase().includes(a.toLowerCase())),s=n=>{u(t===n?null:n)};return i.useEffect(()=>{window.matchMedia("(prefers-reduced-motion: reduce)").matches||t&&o.current&&p.fromTo(o.current,{opacity:0,y:10},{opacity:1,y:0,duration:.3,ease:"power2.out"})},[t]),e.jsxs(e.Fragment,{children:[e.jsx(h,{title:"Technical Reference · QECTOR",description:"API reference, decoder parameters, and technical documentation for QECTOR quantum error correction decoder."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"17 Decoder Configurations · Stim DEM · Generated API Index"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(g,{text:"Technical Reference",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"API overview for QECTOR's decoders. The guided examples below are illustrative; the API index at the end of this page is generated from the published 1.0.1 package."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"relative mb-8 max-w-md mx-auto md:mx-0",children:[e.jsx("label",{htmlFor:"decoder-search",className:"sr-only",children:"Search decoders"}),e.jsx("input",{id:"decoder-search",type:"search",placeholder:"Search decoders...",value:a,onChange:n=>l(n.target.value),className:"w-full px-10 py-3 bg-surface/50 border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors"}),e.jsx(f,{className:"w-5 h-5 text-muted-foreground absolute left-3 top-3.5"})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-12 gap-8",children:[e.jsxs("div",{className:"lg:col-span-4 space-y-2",children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider px-2 mb-2 flex items-center gap-1.5",children:[e.jsx(y,{className:"w-3.5 h-3.5"}),"Decoder Classes"]}),e.jsxs("div",{className:"space-y-1",children:[r.map(n=>e.jsxs("button",{"aria-expanded":t===n.name,onClick:()=>s(n.name),className:`w-full flex items-center justify-between p-3.5 rounded-xl border text-sm transition-all duration-200 ${t===n.name?"bg-cyan-300/10 text-cyan-300 border-cyan-300/20 shadow-xs":"bg-surface/20 text-secondary hover:text-primary hover:bg-surface/40 border-gridline/50"}`,children:[e.jsx("span",{className:"font-mono font-semibold",children:n.name}),t===n.name?e.jsx(b,{className:"w-4 h-4"}):e.jsx(x,{className:"w-4 h-4 text-muted-foreground"})]},n.name)),r.length===0&&e.jsxs("div",{className:"p-4 text-center text-xs text-muted-foreground italic border border-dashed border-gridline rounded-xl",children:['No decoders matching "',a,'"']})]})]}),e.jsx("div",{className:"lg:col-span-8",children:t?(()=>{const n=c.find(d=>d.name===t);return n?e.jsxs("div",{ref:o,className:"card-surface bg-surface/10 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold text-primary font-mono",children:n.name}),e.jsx("p",{className:"text-secondary text-sm mt-3 leading-relaxed",children:n.desc})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(N,{className:"w-3.5 h-3.5"}),"Signature"]}),e.jsx(_,{code:n.signature,language:"python",className:"!my-0 bg-void/70"})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(k,{className:"w-3.5 h-3.5"}),"Parameters"]}),e.jsx("div",{className:"overflow-x-auto border border-gridline rounded-xl",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse text-left text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 text-xs font-semibold uppercase tracking-wider",children:[e.jsx("th",{className:"p-3",children:"Name"}),e.jsx("th",{className:"p-3",children:"Type"}),e.jsx("th",{className:"p-3",children:"Default"}),e.jsx("th",{className:"p-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:n.parameters.map(d=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-mono font-semibold text-primary",children:d.name}),e.jsx("td",{className:"p-3 font-mono text-xs text-secondary",children:d.type}),e.jsx("td",{className:"p-3 font-mono text-xs text-cyan-300",children:d.default}),e.jsx("td",{className:"p-3 text-xs text-secondary leading-relaxed",children:d.desc})]},d.name))})]})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2",children:"Usage Example"}),e.jsx(_,{code:n.example,language:"python",filename:`${n.name.toLowerCase()}_usage.py`})]})]}):null})():e.jsx("div",{className:"h-full flex items-center justify-center border border-dashed border-gridline rounded-2xl p-12 text-center text-muted-foreground italic text-sm",children:"Select a decoder class from the sidebar to inspect parameters and example usage."})})]})]})}),e.jsx(C,{})]})}export{B as default}; diff --git a/assets/TechnicalReference-B02NOFbc.js b/assets/TechnicalReference-B02NOFbc.js deleted file mode 100644 index e89c571f..00000000 --- a/assets/TechnicalReference-B02NOFbc.js +++ /dev/null @@ -1,30 +0,0 @@ -import{r as i,j as e}from"./vendor-react-BiHfrq0e.js";import{S as h,C as _}from"./index-CcwlvHYJ.js";import{N as g}from"./NeuralReveal-Bsl9IGCr.js";import{g as p}from"./vendor-gsap-a3sj5zmn.js";import{r as f,h as y,s as b,o as x,T as N,B as k}from"./vendor-ui-B0ssGG4c.js";const v="1.0.1",w="2026-11-06",q=JSON.parse(`[{"name":"AmbiguityClusterDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, error_rate=0.05, ambig_threshold=0.5, max_cluster_size=12)","summary":"C1-02: BP + ambiguity-clustered exact decoding for qLDPC codes.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"}]},{"name":"AutoDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, config: 'BackendConfig | None' = None)","summary":"Workload-aware, self-debugging decoder that routes to CUDA / OpenCL / Rayon / CPU / Fallback.","methods":[{"name":"auto_select","signature":"(checks, n_qubits, batch_size=1)"},{"name":"available_backends","signature":"(self) -> 'list[str]'"},{"name":"batch_decode","signature":"(self, syndromes) -> 'np.ndarray'"},{"name":"calibrate","signature":"(self, sizes=(64, 256, 1024, 4096, 16384), repeats: 'int' = 3, seed: 'int' = 0)"},{"name":"decode","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"diagnostics","signature":"(self) -> 'dict'"},{"name":"reset_backend_health","signature":"(self) -> 'None'"},{"name":"select","signature":"(self, batch_size: 'int') -> 'str'"}]},{"name":"AutoRouter","kind":"class","signature":"(*, priority: 'str' = 'balanced', hardware: 'HardwareLike' = None, error_rate: 'float' = 0.05, code_family: 'Any' = None, use_native_auto: 'bool' = True) -> 'None'","summary":"Construct, cache, and dispatch the policy-selected decoder for a problem.","methods":[{"name":"decode","signature":"(self, checks_or_H: 'Any', syndromes: 'Any', **ctx: 'Any') -> 'np.ndarray'"},{"name":"explain","signature":"(self, checks_or_H: 'Any' = None, syndromes: 'Any' = None, **ctx: 'Any') -> 'dict[str, Any]'"}]},{"name":"BPOSDDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, error_rate=0.1, bp_method=None, osd_order=None)","summary":"Belief Propagation + Ordered Statistics Decoding.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"bp_decode","signature":"(self, syndrome, max_iterations=20)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_batch_flat","signature":"(self, flat_syndromes, num_shots, stride=None)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"decode_timed","signature":"(self, syndrome, max_latency_ms=10.0)"}]},{"name":"Backend","kind":"class","signature":"()","summary":"Backend identifiers & Fallback Tiers.","methods":[]},{"name":"BackendConfig","kind":"class","signature":"(rayon_threshold: 'int' = 8, gpu_threshold: 'int' = 4096, allow_gpu: 'bool' = True, prefer: 'str' = 'cuda', force: 'str | None' = None, enable_auto_debug: 'bool' = True) -> None","summary":"Tunable thresholds and policy for :class:\`AutoDecoder\`.","methods":[]},{"name":"BatchDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None)","summary":"Parallel batch decoder using Rayon (Rust data parallelism).","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"parallel_batch_decode","signature":"(self, syndromes)"}]},{"name":"BatchedBpDecoder","kind":"class","signature":"(H: 'Any', *, error_rate: 'float' = 0.05, priors: 'Any' = None, max_iter: 'int' = 30, alpha: 'float' = 1.0, bp_method: 'str' = 'min_sum', prefer_gpu: 'bool' = True) -> 'None'","summary":"Batched belief-propagation decoder over a fixed GF(2) check matrix \`\`H\`\`.","methods":[{"name":"decode_batch","signature":"(self, syndromes: 'Any', *, return_llr: 'bool' = False, early_stop: 'bool' = True) -> 'tuple[np.ndarray, np.ndarray] | tuple[np.ndarray, np.ndarray, np.ndarray]'"}]},{"name":"BeliefMatching","kind":"class","signature":"(matrices: '_Matrices', max_iter: 'int' = 30, bp_shortcut: 'bool' = False)","summary":"Belief-propagation + minimum-weight perfect matching decoder.","methods":[{"name":"decode","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"decode_batch","signature":"(self, shots) -> 'np.ndarray'"},{"name":"decode_correction","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"decode_observables","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"from_detector_error_model","signature":"(dem: 'Any', max_iter: 'int' = 20) -> 'BeliefMatching'"},{"name":"from_numpy_h","signature":"(H, error_rate: 'float' = 0.05, max_iter: 'int' = 20) -> 'BeliefMatching'"},{"name":"from_stim_circuit","signature":"(circuit, max_iter: 'int' = 20) -> 'BeliefMatching'"}]},{"name":"BenchmarkSuite","kind":"class","signature":"(check_to_qubits, n_qubits=None, n_samples=10000, seed=42)","summary":"Production benchmark suite. Wraps Rust-native benchmarking.","methods":[{"name":"run","signature":"(self)"},{"name":"save","signature":"(self, path, results)"}]},{"name":"BlossomDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, edge_weights=None)","summary":"Minimum-Weight Perfect Matching (MWPM) decoder via Edmonds' Blossom algorithm.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"batch_decode_weighted","signature":"(self, syndromes, weights)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"set_edge_weights","signature":"(self, weights)"}]},{"name":"BpOsdDecoder","kind":"class","signature":"(H: 'Any', error_rate: 'float' = 0.05, priors: 'Any' = None, max_iter: 'int' = 30, ms_scale: 'float' = 1.0, osd_order: 'int' = 0, bp_method: 'str' = 'sum_product', use_gpu: 'Any' = None, max_latency_ms: 'float | None' = None, damping: 'float' = 0.0, osd_lambda: 'Any' = None)","summary":"BP + ordered-statistics decoder for general GF(2) check matrices.","methods":[{"name":"batch_decode","signature":"(self, syndromes) -> 'np.ndarray'"},{"name":"decode","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"decode_correction","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix: 'Any' = None) -> 'np.ndarray'"}]},{"name":"CPUBatchDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None)","summary":"SIMD-friendly CPU batch decoder with pooled buffers and SoA transposition.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"batch_decode_par","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"}]},{"name":"CUDABatchDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, edge_weights=None)","summary":"","methods":[{"name":"batch_decode","signature":"(self, /, syndromes)"},{"name":"is_available","signature":"()"},{"name":"reset","signature":"(self, /)"}]},{"name":"CUDABpOsdDecoder","kind":"class","signature":"(check_to_qubits, n_qubits, error_rate)","summary":"","methods":[{"name":"batch_decode","signature":"(self, /, syndromes)"}]},{"name":"ColourCodeDecoder","kind":"class","signature":"(dem: 'Any', max_iter: 'int' = 30, osd_order: 'int' = 0, method: 'str' = 'bposd')","summary":"Colour-code decoder: BP-OSD over the undecomposed hypergraph DEM.","methods":[{"name":"decode","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"decode_batch","signature":"(self, syndromes) -> 'np.ndarray'"},{"name":"decode_correction","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"decode_observables","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"from_detector_error_model","signature":"(dem: 'Any', max_iter: 'int' = 30, osd_order: 'int' = 0) -> 'ColourCodeDecoder'"},{"name":"from_stim_circuit","signature":"(circuit: 'Any', max_iter: 'int' = 30, osd_order: 'int' = 0) -> 'ColourCodeDecoder'"}]},{"name":"DecodeResult","kind":"class","signature":"(correction: 'np.ndarray', syndrome: 'np.ndarray', n_qubits: 'int', n_checks: 'int', weight: 'float | None' = None, logical_flips: 'np.ndarray | None' = None, decode_seconds: 'float | None' = None, backend: 'str' = 'cpu', fallback: 'bool' = False, fallback_reason: 'str' = '', syndrome_valid: 'bool | None' = None, metadata: 'dict' = ) -> None","summary":"Result of decoding a single syndrome, with diagnostics and metadata.","methods":[{"name":"as_uint8","signature":"(self) -> 'np.ndarray'"},{"name":"explain","signature":"(self) -> 'str'"},{"name":"to_dict","signature":"(self) -> 'dict'"},{"name":"to_json","signature":"(self, indent: 'int' = 2) -> 'str'"},{"name":"verify","signature":"(self, H: 'np.ndarray') -> 'bool'"}]},{"name":"DecoderName","kind":"class","signature":"()","summary":"String identifiers for the routable decoders.","methods":[]},{"name":"DecoderPool","kind":"class","signature":"(check_to_qubits=None, n_qubits=None, decoder_type: 'str' = 'fast_union_find', n_workers: 'int | None' = None, num_threads: 'int | None' = None)","summary":"Multi-process decoder pool for parallel syndrome decoding.","methods":[{"name":"close","signature":"(self)"},{"name":"decode","signature":"(self, syndromes) -> 'np.ndarray'"}]},{"name":"DetectorGraph","kind":"class","signature":"(check_to_qubits, syndrome, check_positions=None, check_types=None, base_weights=None, n_qubits=None)","summary":"Detector graph used by the GNN and hybrid decoder paths.","methods":[{"name":"update_syndrome","signature":"(self, syndrome)"}]},{"name":"FastUnionFindDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, edge_weights=None)","summary":"Union-Find with a zero-allocation hot path, reusable buffers and a C ABI.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_batch_flat","signature":"(self, flat_syndromes, num_shots, stride=None)"},{"name":"decode_batch_into_flat","signature":"(self, flat_syndromes, num_shots, corrections, stride=None)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"set_edge_weights","signature":"(self, edge_weights)"}]},{"name":"GNNBeliefMatcher","kind":"class","signature":"(check_to_qubits, n_qubits=None, *, gnn=None, hidden_size: 'int' = 32, n_layers: 'int' = 2, train_samples: 'int' = 0, error_rate: 'float' = 0.05, train_epochs: 'int' = 3, seed=None)","summary":"End-to-end GNN-guided minimum-weight perfect matching decoder.","methods":[{"name":"batch_decode","signature":"(self, syndromes) -> 'np.ndarray'"},{"name":"decode","signature":"(self, syndrome) -> 'np.ndarray'"}]},{"name":"GNNPredecoder","kind":"class","signature":"(node_feat_dim=None, edge_feat_dim=None, hidden_size=16, n_layers=2)","summary":"Graph Neural Network Pre-Decoder for dynamic edge weight prediction.","methods":[{"name":"forward","signature":"(self, graph)"},{"name":"load_weights","signature":"(self, path)"},{"name":"new_standard","signature":"(hidden_size=16, n_layers=2)"},{"name":"predict_with_node_probs","signature":"(self, graph)"},{"name":"save_weights","signature":"(self, path)"},{"name":"train","signature":"(self, graphs, targets, n_epochs)"}]},{"name":"GNNTrainer","kind":"class","signature":"(check_to_qubits, n_qubits, error_rate=0.1)","summary":"End-to-end GNN training pipeline with Blossom teacher model.","methods":[{"name":"generate_dataset","signature":"(self, n_samples)"},{"name":"train","signature":"(self, gnn, n_samples, n_epochs)"},{"name":"train_bp","signature":"(self, gnn, n_samples, n_epochs, max_bp_iter=20)"}]},{"name":"HardwareProfile","kind":"class","signature":"(cuda_rust: 'bool' = False, gpu: 'bool' = False) -> None","summary":"Resolved view of the GPU capability the policy should assume.","methods":[{"name":"as_dict","signature":"(self) -> 'dict[str, bool]'"},{"name":"detect","signature":"() -> 'HardwareProfile'"}]},{"name":"HybridCascadeDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, edge_weights=None, max_accept_weight=None, escalation=None, error_rate=None)","summary":"Hybrid cascading decoder: Union-Find pre-filter + Blossom/BP-OSD escalation.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"batch_decode_timed","signature":"(self, syndromes, max_latency_ms=10.0)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"decode_timed","signature":"(self, syndrome, max_latency_ms=10.0)"}]},{"name":"HybridDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, check_positions=None, check_types=None, base_weights=None, gnn_hidden_size=64, gnn_n_layers=3)","summary":"GNN Pre-Decoder + SparseBlossom hybrid decoder.","methods":[{"name":"batch_decode_hybrid","signature":"(self, syndromes)"},{"name":"batch_decode_standard","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_heuristic","signature":"(self, syndrome)"},{"name":"decode_hybrid","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"decode_standard","signature":"(self, syndrome)"},{"name":"load_weights","signature":"(self, path)"},{"name":"save_weights","signature":"(self, path)"},{"name":"train","signature":"(self, n_samples, n_epochs, error_rate=0.1)"},{"name":"train_bp","signature":"(self, n_samples, n_epochs, error_rate=0.1, max_bp_iter=20)"}]},{"name":"LERBenchmark","kind":"class","signature":"()","summary":"Logical Error Rate benchmark suite.","methods":[{"name":"run_all","signature":"(self)"}]},{"name":"LookupTableDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None)","summary":"Exact lookup-table decoder with UnionFind fallback.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"build_table","signature":"(self, max_entries)"},{"name":"decode","signature":"(self, syndrome)"}]},{"name":"MAX_WORKERS","kind":"constant","signature":"","summary":"","methods":[]},{"name":"Matching","kind":"class","signature":"(H: 'Any' = None, weights: 'Any' = None, faults_matrix: 'Any' = None)","summary":"Minimum-weight perfect-matching decoder with a PyMatching-style API.","methods":[{"name":"add_boundary_edge","signature":"(self, node: 'int', fault_ids: 'Any' = None, weight: 'float' = 1.0, **_: 'Any') -> 'None'"},{"name":"add_edge","signature":"(self, node1: 'int', node2: 'int', fault_ids: 'Any' = None, weight: 'float' = 1.0, **_: 'Any') -> 'None'"},{"name":"check_matrix","signature":"(self) -> 'np.ndarray'"},{"name":"decode","signature":"(self, syndrome: 'Sequence[int]') -> 'np.ndarray'"},{"name":"decode_batch","signature":"(self, shots: 'Any') -> 'np.ndarray'"},{"name":"decode_to_edges_array","signature":"(self, syndrome: 'Sequence[int]') -> 'np.ndarray'"},{"name":"edges","signature":"(self) -> 'list[tuple[int | None, int | None, dict]]'"},{"name":"from_check_matrix","signature":"(H: 'Any', weights: 'Any' = None, faults_matrix: 'Any' = None, **_: 'Any') -> 'Matching'"},{"name":"from_detector_error_model","signature":"(dem: 'Any') -> 'Matching'"},{"name":"from_stim_dem","signature":"(dem: 'Any') -> 'Matching'"}]},{"name":"NativeAutoDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, distance=5, noise_rate=0.01, batch_size=1, is_qldpc=False)","summary":"","methods":[{"name":"batch_decode","signature":"(self, /, syndromes)"},{"name":"batch_decode_strided","signature":"(self, /, syndromes, stride=None, require_alignment=False)"},{"name":"decode","signature":"(self, /, syndrome)"}]},{"name":"NeuralPredecoder","kind":"class","signature":"(n_input, n_output, n_hidden1=None, n_hidden2=None)","summary":"Lightweight MLP pre-decoder with Xavier initialization and SGD training.","methods":[{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"predict","signature":"(self, syndrome)"},{"name":"train","signature":"(self, syndromes, corrections, n_epochs, learning_rate=0.01)"}]},{"name":"OpenCLBatchDecoder","kind":"class","signature":"(*a, **k)","summary":"OpenCL batch decoder - requires source build with --features opencl.","methods":[{"name":"is_available","signature":"()"}]},{"name":"PredecodedDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, backend: 'str' = 'blossom')","summary":"Local-matching predecoder + exact/fast residual decoder.","methods":[{"name":"batch_decode","signature":"(self, syndromes) -> 'np.ndarray'"},{"name":"decode","signature":"(self, syndrome) -> 'np.ndarray'"}]},{"name":"Recommendation","kind":"class","signature":"(decoder: 'str', reason: 'str', family: 'str', priority: 'str', batch_size: 'int', hardware: 'dict[str, bool]', gpu_batched_bp: 'bool' = False, forced: 'bool' = False, graphlike: 'bool | None' = None, distance: 'int | None' = None, n_qubits: 'int | None' = None) -> None","summary":"A decoder choice plus the reasoning and inputs that produced it.","methods":[{"name":"as_dict","signature":"(self) -> 'dict[str, Any]'"}]},{"name":"SlidingWindowDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, window_size=10, decay_factor=0.8, check_types=None, p_data=None, p_meas=None)","summary":"Sliding-window decoder with exponential decay weighting or fault-tolerant space-time decoding.","methods":[{"name":"decode","signature":"(self, syndrome=None)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"detector_history","signature":"(self)"},{"name":"flush","signature":"(self)"},{"name":"update","signature":"(self, round_syndrome)"}]},{"name":"SpaceTimeDecoder","kind":"class","signature":"(check_to_qubits, check_types, n_rounds, p_data, p_meas, n_qubits=None)","summary":"PyO3 wrapper for [\`SpaceTimeDecoder\`]: fault-tolerant temporal decoding via XOR-of-consecutive-rounds detectors matched on a 3D (space x time) graph, as opposed to [\`crate::sliding_window::PySlidingWindowDecoder\`] /…","methods":[{"name":"decode_history","signature":"(self, /)"},{"name":"reset","signature":"(self, /)"},{"name":"update","signature":"(self, /, round_syndrome)"}]},{"name":"SparseBlossomDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, edge_weights=None)","summary":"Region-growing Sparse Blossom decoder with RadixHeap.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"decode_with_weights","signature":"(self, syndrome, weights)"}]},{"name":"StreamingDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, history_size=10, check_types=None, p_data=None, p_meas=None)","summary":"Streaming decoder that accumulates syndromes over multiple rounds.","methods":[{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"decode_rounds","signature":"(self, rounds)"},{"name":"detector_history","signature":"(self)"},{"name":"flush","signature":"(self)"},{"name":"update","signature":"(self, round_syndrome)"}]},{"name":"StreamingResult","kind":"class","signature":"(corrections: 'np.ndarray', syndromes: 'np.ndarray', telemetry: 'StreamingTelemetry', logical_flips: 'np.ndarray | None' = None) -> None","summary":"Outcome of a full streaming decode.","methods":[{"name":"is_valid","signature":"(self, H: 'Any', *, prefer_gpu: 'bool' = True) -> 'bool'"}]},{"name":"StreamingSession","kind":"class","signature":"(code_or_checks: 'Any', n_qubits: 'int | None' = None, *, window_size: 'int' = 8, decoder: 'Any | None' = None, logicals: 'Any' = None, prefer_gpu: 'bool | None' = None) -> 'None'","summary":"Incremental multi-round decode with a sliding commit buffer.","methods":[{"name":"committed_corrections","signature":"(self) -> 'np.ndarray'"},{"name":"committed_syndromes","signature":"(self) -> 'np.ndarray'"},{"name":"flush","signature":"(self) -> 'list[np.ndarray]'"},{"name":"push_round","signature":"(self, syndrome: 'Any') -> 'list[np.ndarray]'"},{"name":"reset","signature":"(self) -> 'None'"},{"name":"run","signature":"(self, syndrome_rounds: 'Any') -> 'StreamingResult'"}]},{"name":"StreamingTelemetry","kind":"class","signature":"(rounds: 'int' = 0, windows: 'int' = 0, committed: 'int' = 0, decode_seconds: 'float' = 0.0, per_window_seconds: 'list[float]' = , gpu: 'dict[str, int]' = , backend: 'dict[str, Any]' = , rounds_valid: 'int | None' = None) -> None","summary":"Real, measured counters for a streaming decode run.","methods":[{"name":"as_dict","signature":"(self) -> 'dict[str, Any]'"},{"name":"record_window","signature":"(self, seconds: 'float', rounds: 'int' = 1) -> 'None'"}]},{"name":"TwoStageDecoder","kind":"class","signature":"(check_to_qubits, check_types, n_qubits=None, x_decoder='blossom', z_decoder='blossom')","summary":"C1-03: Correlated two-stage matching for CSS codes.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"}]},{"name":"UnionFindDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, edge_weights=None)","summary":"Production-ready Union-Find quantum error correction decoder.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_batch_flat","signature":"(self, flat_syndromes, num_shots, stride=None)"},{"name":"decode_batch_into_flat","signature":"(self, flat_syndromes, num_shots, corrections, stride=None)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"set_edge_weights","signature":"(self, edge_weights)"}]},{"name":"Workbench","kind":"class","signature":"() -> 'None'","summary":"Controller for the QECTOR Workbench (load → benchmark → export).","methods":[{"name":"cancel_job","signature":"(self, job_id: 'str') -> 'str'"},{"name":"detect_backends","signature":"(self) -> 'dict'"},{"name":"environment_snapshot","signature":"(self) -> 'dict'"},{"name":"export_csv","signature":"(self, artifact: 'dict', path: 'str') -> 'str'"},{"name":"export_json","signature":"(self, artifact: 'dict', path: 'str') -> 'str'"},{"name":"export_pdf","signature":"(self, artifact: 'dict', path: 'str') -> 'str'"},{"name":"get_job","signature":"(self, job_id: 'str') -> 'dict'"},{"name":"get_license_info","signature":"(self) -> 'dict'"},{"name":"job_artifact","signature":"(self, job_id: 'str') -> 'dict | None'"},{"name":"list_jobs","signature":"(self) -> 'list[dict]'"},{"name":"load_dem","signature":"(self, source: 'Any') -> 'dict'"},{"name":"load_stim","signature":"(self, source: 'Any') -> 'dict'"},{"name":"run_benchmark","signature":"(self, spec: 'dict', job: 'Job | None' = None) -> 'dict'"},{"name":"set_license_key","signature":"(self, key: 'str') -> 'None'"},{"name":"shutdown","signature":"(self) -> 'None'"},{"name":"submit_job","signature":"(self, spec: 'dict') -> 'str'"},{"name":"wait","signature":"(self, job_id: 'str', timeout: 'float | None' = None) -> 'dict'"}]},{"name":"backend","kind":"module","signature":"","summary":"qector_decoder_v3.backend - Workload-Aware AutoDecoder with Self-Auto-Debug & Multi-Tier Fallback.","methods":[]},{"name":"batched_bp_decode","kind":"function","signature":"(H: 'Any', syndromes: 'Any', *, error_rate: 'float' = 0.05, priors: 'Any' = None, max_iter: 'int' = 30, alpha: 'float' = 1.0, bp_method: 'str' = 'min_sum', prefer_gpu: 'bool' = True, early_stop: 'bool' = True, return_llr: 'bool' = False) -> 'tuple[np.ndarray, np.ndarray] | tuple[np.ndarray, np.ndarray, np.ndarray]'","summary":"Decode a stack of syndromes with batched belief propagation.","methods":[]},{"name":"belief_matching","kind":"module","signature":"","summary":"qector_decoder_v3.belief_matching - belief-propagation + MWPM (belief-matching).","methods":[]},{"name":"benchmarking","kind":"module","signature":"","summary":"qector_decoder_v3.benchmarking - reproducible, statistically-honest benchmarks.","methods":[]},{"name":"bp_cupy","kind":"module","signature":"","summary":"qector_decoder_v3.bp_cupy - batched, GPU-resident belief propagation.","methods":[]},{"name":"bposd","kind":"module","signature":"","summary":"qector_decoder_v3.bposd - belief propagation + ordered-statistics decoding.","methods":[]},{"name":"changelog","kind":"function","signature":"() -> str","summary":"Return a human-readable changelog string for the loaded package.","methods":[]},{"name":"check_to_edges","kind":"function","signature":"(check_to_qubits)","summary":"Convert check_to_qubits to edge list.","methods":[]},{"name":"clear_decoder_cache","kind":"function","signature":"()","summary":"Clear the in-memory decoder and decoder pool LRU caches.","methods":[]},{"name":"codes","kind":"module","signature":"","summary":"qector_decoder_v3.codes - Code-family helpers.","methods":[]},{"name":"colour_code","kind":"module","signature":"","summary":"C1-04: Colour-code decoder.","methods":[]},{"name":"compute_detector_differences","kind":"function","signature":"(history)","summary":"Computes XOR detector differences across consecutive syndrome rounds: detector_t = raw_t ^ raw_{t-1}.","methods":[]},{"name":"cuda_is_available","kind":"function","signature":"()","summary":"","methods":[]},{"name":"decode_mmap","kind":"function","signature":"(syndrome_path: 'str', output_path: 'str', check_to_qubits, n_qubits: 'int', decoder_type: 'str' = 'cpu_batch', batch_size: 'int' = 65536, n_shots: 'int | None' = None, dtype: '_np.dtype' = dtype('uint8'), verbose: 'bool' = False)","summary":"Out-of-core batch decoding via memory-mapped arrays.","methods":[]},{"name":"decode_with_diagnostics","kind":"function","signature":"(code: 'Any', syndrome: 'Sequence[int]', kind: 'str' = 'blossom', decoder: 'Any' = None, logicals: 'np.ndarray | None' = None) -> 'DecodeResult'","summary":"Decode one syndrome and return a fully-populated :class:\`DecodeResult\`.","methods":[]},{"name":"decode_with_gnn","kind":"function","signature":"(check_to_qubits, n_qubits, syndrome, **kwargs) -> 'np.ndarray'","summary":"One-shot GNN-guided MWPM decode (see :class:\`GNNBeliefMatcher\`).","methods":[]},{"name":"decoder_cache","kind":"module","signature":"","summary":"qector_decoder_v3.decoder_cache - LRU-decoder cache and factory functions.","methods":[]},{"name":"decoder_pool","kind":"module","signature":"","summary":"qector_decoder_v3.decoder_pool - Multi-process decoder pool.","methods":[]},{"name":"dem","kind":"module","signature":"","summary":"qector_decoder_v3.dem - Stim Detector Error Model (DEM) loader.","methods":[]},{"name":"detect_hardware","kind":"function","signature":"() -> 'HardwareProfile'","summary":"Return the live :class:\`HardwareProfile\` (alias for \`\`HardwareProfile.detect\`\`).","methods":[]},{"name":"enforce_distance_cap","kind":"function","signature":"(distance) -> None","summary":"Enforce that *distance* does not exceed the active tier's cap.","methods":[]},{"name":"enforce_unlocked","kind":"function","signature":"() -> None","summary":"Hard-gate decode path when no valid license is active (QECTOR_ENFORCE=1).","methods":[]},{"name":"estimate_distance","kind":"function","signature":"(check_to_qubits, n_qubits=None)","summary":"Python wrapper for estimate_distance.","methods":[]},{"name":"flush_usage","kind":"function","signature":"(customer_id: 'str | None' = None, api_key: 'str | None' = None) -> dict","summary":"Flush accumulated decode shots to the Stripe Billing Meter Events API.","methods":[]},{"name":"from_circuit","kind":"function","signature":"(circuit, decoder_type='blossom', **kwargs)","summary":"Build a decoder from a Stim circuit in one call.","methods":[]},{"name":"generate_biconnected_qldpc_checks","kind":"function","signature":"(n_qubits, degree)","summary":"Generate a bipolar / biconnected qLDPC Tanner graph parity check matrix.","methods":[]},{"name":"generate_parity_check_matrix","kind":"function","signature":"(check_to_qubits, n_qubits=None)","summary":"Return the binary parity-check matrix \`\`H\`\` for *check_to_qubits*.","methods":[]},{"name":"generate_repetition_code_checks","kind":"function","signature":"(distance)","summary":"Generate a 1D repetition/chain code for testing.","methods":[]},{"name":"generate_ring_code_checks","kind":"function","signature":"(distance)","summary":"Generate a simple 1D ring code for testing.","methods":[]},{"name":"generate_space_time_surface_code_checks","kind":"function","signature":"(distance, rounds)","summary":"Generate 3D space-time surface code checks across multiple rounds.","methods":[]},{"name":"generate_surface_code_checks","kind":"function","signature":"(distance)","summary":"Generate compact periodic (toric) surface-code checks.","methods":[]},{"name":"generate_toy_code_checks","kind":"function","signature":"(distance)","summary":"Generate a toy code (not a proper quantum code) with d*d qubits for backward compatibility.","methods":[]},{"name":"generate_triangular_color_code_4_8_8_checks","kind":"function","signature":"(distance)","summary":"Generate 4.8.8 triangular color code parity check matrix.","methods":[]},{"name":"get_accumulated_shots","kind":"function","signature":"() -> int","summary":"Get total accumulated decode shots.","methods":[]},{"name":"get_backend","kind":"function","signature":"() -> 'GpuBackend'","summary":"Return the cached :class:\`GpuBackend\` capability snapshot (built once).","methods":[]},{"name":"get_decoder","kind":"function","signature":"(checks_tuple: 'tuple[tuple[int, ...]]', n_qubits: 'int', decoder_type: 'str' = 'union_find')","summary":"Get a decoder, constructing it once and caching for reuse.","methods":[]},{"name":"get_decoder_pool","kind":"function","signature":"(checks_tuple: 'tuple[tuple[int, ...]]', n_qubits: 'int', decoder_type: 'str' = 'union_find', n_workers: 'int | None' = None)","summary":"Get a multi-process :class:\`DecoderPool\`, constructed once and cached.","methods":[]},{"name":"get_latency_quantiles","kind":"function","signature":"()","summary":"\`get_latency_quantiles() -> tuple[float, float, float] | None\`","methods":[]},{"name":"get_license_info","kind":"function","signature":"() -> dict","summary":"Get active license info dictionary.","methods":[]},{"name":"gpu_available","kind":"function","signature":"() -> 'bool'","summary":"Return \`\`True\`\` iff CuPy is importable **and** a CUDA device is usable.","methods":[]},{"name":"gpu_backend","kind":"module","signature":"","summary":"qector_decoder_v3.gpu_backend - the CuPy GPU backend abstraction.","methods":[]},{"name":"has_cuda_rust","kind":"function","signature":"() -> 'bool'","summary":"Return \`\`True\`\` iff the Rust \`\`CUDABatchDecoder\`\` reports a usable device.","methods":[]},{"name":"has_cupy","kind":"function","signature":"() -> 'bool'","summary":"Return \`\`True\`\` if the \`\`cupy\`\` module can be imported.","methods":[]},{"name":"license","kind":"module","signature":"","summary":"","methods":[]},{"name":"opencl_is_available","kind":"function","signature":"()","summary":"","methods":[]},{"name":"predecoder","kind":"module","signature":"","summary":"qector_decoder_v3.predecoder - a fast, faithful matching predecoder.","methods":[]},{"name":"pymatching","kind":"module","signature":"","summary":"qector_decoder_v3.pymatching_compat - a PyMatching-compatible \`\`Matching\`\` API.","methods":[]},{"name":"pymatching_compat","kind":"module","signature":"","summary":"qector_decoder_v3.pymatching_compat - a PyMatching-compatible \`\`Matching\`\` API.","methods":[]},{"name":"qiskit_plugin","kind":"module","signature":"","summary":"QECTOR Qiskit Plugin - optional integration with the Qiskit ecosystem.","methods":[]},{"name":"recommend","kind":"function","signature":"(code_family: 'Any' = None, distance: 'int | None' = None, n_qubits: 'int | None' = None, batch_size: 'int' = 1, priority: 'str' = 'balanced', hardware: 'HardwareLike' = None, *, graphlike: 'bool | None' = None) -> 'Recommendation'","summary":"Return a rich :class:\`Recommendation\` for a decoding problem.","methods":[]},{"name":"recommend_decoder","kind":"function","signature":"(code_family: 'Any' = None, distance: 'int | None' = None, n_qubits: 'int | None' = None, batch_size: 'int' = 1, priority: 'str' = 'balanced', hardware: 'HardwareLike' = None) -> 'str'","summary":"Return the *name* of the recommended decoder class (see :func:\`recommend\`).","methods":[]},{"name":"record_shots","kind":"function","signature":"(count: int) -> None","summary":"Record decoding shots into telemetry buffer.","methods":[]},{"name":"rest_api","kind":"module","signature":"","summary":"Minimal REST API for QECTOR.","methods":[]},{"name":"result","kind":"module","signature":"","summary":"qector_decoder_v3.result - Rich decode results, diagnostics and debug output.","methods":[]},{"name":"routing","kind":"module","signature":"","summary":"qector_decoder_v3.routing - intelligent decoder router / auto-selection.","methods":[]},{"name":"run_mcp_server","kind":"function","signature":"()","summary":"Python signature: \`\`\`python run_mcp_server() \`\`\`","methods":[]},{"name":"set_license_key","kind":"function","signature":"(key: str) -> None","summary":"Set the global QECTOR license key for tier enforcement.","methods":[]},{"name":"set_license_key_file","kind":"function","signature":"(path) -> None","summary":"Load a license key from *path* and activate it.","methods":[]},{"name":"sinter_compat","kind":"module","signature":"","summary":"qector_decoder_v3.sinter_compat - plug QECTOR into Sinter.","methods":[]},{"name":"sliding_window_decode","kind":"function","signature":"(syndrome_rounds: 'Any', code: 'Any' = None, *, check_to_qubits: 'Sequence[Sequence[int]] | None' = None, n_qubits: 'int | None' = None, window_size: 'int' = 8, decoder: 'Any | None' = None, logicals: 'Any' = None, prefer_gpu: 'bool | None' = None) -> 'StreamingResult'","summary":"Decode a whole multi-round syndrome stream window-by-window.","methods":[]},{"name":"sparse_blossom_radix_neighbors","kind":"function","signature":"(decoder, defects, k=8)","summary":"Return the k-nearest candidate edges (sorted by distance) for \`defects\`.","methods":[]},{"name":"start_metrics_server","kind":"function","signature":"(addr='127.0.0.1:9090')","summary":"Start the Prometheus metrics HTTP server.","methods":[]},{"name":"stim_compat","kind":"module","signature":"","summary":"Stim compatibility layer - Conversion and wrappers for the Stim ecosystem.","methods":[]},{"name":"streaming","kind":"module","signature":"","summary":"qector_decoder_v3.streaming - a higher-level Python streaming / multi-round decode *orchestration* layer.","methods":[]},{"name":"stripe_integration","kind":"module","signature":"","summary":"QECTOR Decoder v3 - Full Stripe API & Webhook License Fulfillment Integration","methods":[]},{"name":"verify_license_token","kind":"function","signature":"(token: 'str', customer_email: 'str' = '') -> 'bool'","summary":"Verifies the license token signature completely offline using Ed25519.","methods":[]},{"name":"workbench","kind":"module","signature":"","summary":"qector_decoder_v3.workbench - the QECTOR Workbench application controller.","methods":[]}]`),m={package:"qector-decoder-v3",version:v,generated:w,items:q},D=["class","function","module"];function C(){const[a,l]=i.useState(""),[t,u]=i.useState("all"),o=m.items,c=i.useMemo(()=>{const r=a.trim().toLowerCase();return o.filter(s=>(t==="all"||s.kind===t)&&(!r||s.name.toLowerCase().includes(r)||s.summary.toLowerCase().includes(r)))},[o,a,t]);return e.jsx("section",{className:"section-padding pb-24","aria-labelledby":"api-index",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsx("h2",{id:"api-index",className:"text-3xl font-bold mb-2",children:"API index"}),e.jsxs("p",{className:"text-secondary text-sm mb-6 max-w-3xl",children:["Generated from the published ",e.jsxs("code",{className:"font-mono text-cyan-200",children:[m.package," ",m.version]})," wheel on ",m.generated,": every public name in ",e.jsx("code",{className:"font-mono text-cyan-200",children:"qector_decoder_v3"}),", with the signature Python reports and the first paragraph of its docstring."," ",o.length," names."]}),e.jsxs("div",{className:"flex flex-wrap gap-3 mb-6",children:[e.jsx("label",{className:"sr-only",htmlFor:"api-q",children:"Filter the API index"}),e.jsx("input",{id:"api-q",type:"search",value:a,onChange:r=>l(r.target.value),placeholder:"Filter by name or description",className:"flex-1 min-w-[14rem] bg-surface border border-gridline rounded-lg px-3 py-2 text-sm text-primary placeholder:text-muted-foreground focus:outline-none focus:border-cyan-300/50"}),e.jsx("div",{className:"flex gap-1",role:"group","aria-label":"Kind",children:["all",...D].map(r=>e.jsx("button",{type:"button","aria-pressed":t===r,onClick:()=>u(r),className:`px-3 py-2 rounded-lg text-xs font-semibold capitalize border ${t===r?"border-cyan-300/50 text-cyan-300 bg-cyan-300/10":"border-gridline text-secondary hover:text-primary"}`,children:{all:"All",class:"Classes",function:"Functions",module:"Modules"}[r]},r))})]}),e.jsxs("ul",{className:"space-y-3",children:[c.map(r=>e.jsxs("li",{className:"bg-[#0b1329]/40 border border-slate-800/80 rounded-2xl p-4",children:[e.jsxs("div",{className:"flex flex-wrap items-baseline gap-x-3 gap-y-1",children:[e.jsx("span",{className:"text-[10px] uppercase tracking-wider font-semibold text-muted-foreground",children:r.kind}),e.jsxs("code",{className:"font-mono text-cyan-300 text-sm break-all",children:[r.name,e.jsx("span",{className:"text-secondary",children:r.signature})]})]}),r.summary&&e.jsx("p",{className:"text-secondary text-sm mt-2 leading-relaxed",children:r.summary}),r.methods.length>0&&e.jsxs("details",{className:"mt-2",children:[e.jsxs("summary",{className:"text-xs text-muted-foreground cursor-pointer hover:text-cyan-300",children:[r.methods.length," public methods"]}),e.jsx("ul",{className:"mt-2 grid md:grid-cols-2 gap-x-6 gap-y-1",children:r.methods.map(s=>e.jsx("li",{children:e.jsxs("code",{className:"font-mono text-xs text-primary break-all",children:[s.name,e.jsx("span",{className:"text-muted-foreground",children:s.signature})]})},s.name))})]})]},r.name)),c.length===0&&e.jsx("li",{className:"text-muted-foreground text-sm",children:"No names match."})]})]})})}function B(){const[a,l]=i.useState(""),[t,u]=i.useState("BlossomDecoder"),o=i.useRef(null),c=[{name:"BlossomDecoder",signature:"BlossomDecoder(dem: stim.DetectorErrorModel, *, adaptive_k: bool = True, timeout: Optional[float] = None)",desc:"Minimum-weight perfect matching (MWPM) decoder for CSS stabilizer codes. Uses an exact matching solver to pair syndrome checks.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"adaptive_k",type:"bool",default:"True",desc:"Enable Union-Find pre-filtering to compress graph"},{name:"timeout",type:"float",default:"None",desc:"Max seconds allowed to match a syndrome"}],example:`import qector_decoder_v3 as qd -decoder = qd.BlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"BeliefMatchingDecoder",signature:'BeliefMatchingDecoder(dem: stim.DetectorErrorModel, *, bp_iters: int = 30, max_paths: int = 10, bp_method: str = "product_sum")',desc:"Accuracy-oriented decoder. Uses Belief Propagation (BP) preprocessing to compute edge probabilities, and then runs matching on a reweighted Blossom graph. Use when accuracy matters more than latency.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"bp_iters",type:"int",default:"30",desc:"Max iterations for Belief Propagation"},{name:"max_paths",type:"int",default:"10",desc:"Max alternative paths for match reweighting"},{name:"bp_method",type:"str",default:'"product_sum"',desc:"BP update equation to resolve constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.BeliefMatchingDecoder(dem, bp_iters=30) -correction = decoder.decode(syndrome)`},{name:"BpOsdDecoder",signature:'BpOsdDecoder(dem: stim.DetectorErrorModel, *, osd_order: int = 40, osd_method: str = "osd_cs")',desc:"Belief Propagation + Ordered Statistics Decoding. A common approach for qLDPC codes, where matching graphs are undefined. Handles non-CSS stabilizer layouts.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"osd_order",type:"int",default:"40",desc:"OSD search order limit"},{name:"osd_method",type:"str",default:'"osd_cs"',desc:"OSD resolution method"}],example:`import qector_decoder_v3 as qd -decoder = qd.BpOsdDecoder(dem, osd_order=40) -correction = decoder.decode(syndrome)`},{name:"UnionFindDecoder",signature:"UnionFindDecoder(dem: stim.DetectorErrorModel, *, use_combined: bool = True)",desc:"Near-linear time approximate decoder. Resolves syndromes by cluster growth and path compression. Scaling is O(N), making it ideal for large distance offline simulations.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"use_combined",type:"bool",default:"True",desc:"Enable combined cluster growth constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.UnionFindDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"CPUBatchDecoder",signature:"CPUBatchDecoder(dem: stim.DetectorErrorModel, *, num_threads: int = 0)",desc:"Multi-threaded CPU batch decoder. Leverages Rayon parallelism across CPU cores to decode thousands of syndromes concurrently.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"num_threads",type:"int",default:"0",desc:"Number of worker threads (0 = auto-detect physical cores)"}],example:`import qector_decoder_v3 as qd -decoder = qd.CPUBatchDecoder(dem, num_threads=8) -corrections = decoder.decode_batch(syndromes_matrix)`},{name:"GpuBatchDecoder / CUDABatchDecoder / OpenCLBatchDecoder",signature:"CUDABatchDecoder(dem: stim.DetectorErrorModel, *, batch_size: int = 2048)",desc:"Native GPU batch decoders. Implements CUDA and OpenCL device pipelines to solve thousands of syndromes in parallel. Check availability with CUDABatchDecoder.is_available().",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"batch_size",type:"int",default:"2048",desc:"Parallel batch sizing in GPU VRAM"}],example:`import qector_decoder_v3 as qd -if qd.CUDABatchDecoder.is_available(): - decoder = qd.CUDABatchDecoder(dem, batch_size=4096) - corrections = decoder.decode_batch(syndromes_array)`},{name:"SparseBlossomDecoder",signature:"SparseBlossomDecoder(dem: stim.DetectorErrorModel)",desc:"Low-latency region growing blossom variant optimized for ring-like and sparse detector error graphs.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -decoder = qd.SparseBlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"get_decoder / clear_decoder_cache",signature:'get_decoder(dem_or_h, decoder_type: str = "auto", **kwargs)',desc:"Cached decoder factory for instantiating and caching decoders by error model hash to avoid redundant graph construction.",parameters:[{name:"dem_or_h",type:"Union[stim.DetectorErrorModel, np.ndarray]",default:"Required",desc:"Detector model or H matrix"},{name:"decoder_type",type:"str",default:'"auto"',desc:"Target decoder family name"}],example:`import qector_decoder_v3 as qd -decoder = qd.get_decoder(dem, decoder_type="blossom") -qd.clear_decoder_cache()`},{name:"decode_mmap / decode_with_diagnostics",signature:"decode_mmap(decoder, input_filepath: str, output_filepath: str)",desc:"Out-of-core memory-mapped file decoder for processing gigabyte-scale syndrome files on disk without loading entire matrices into RAM. Returns structured DecodeResult.",parameters:[{name:"decoder",type:"DecoderInstance",default:"Required",desc:"Initialized decoder instance"},{name:"input_filepath",type:"str",default:"Required",desc:"Path to binary syndrome file"},{name:"output_filepath",type:"str",default:"Required",desc:"Path to write binary correction results"}],example:`import qector_decoder_v3 as qd -res = qd.decode_mmap(decoder, "syndromes.bin", "corrections.bin") -print(res.shots_processed, res.latency_seconds)`},{name:"Workbench API",signature:"Workbench(config: Optional[dict] = None)",desc:"High-level orchestration and benchmarking engine for configuring decoding pipelines, running multi-decoder comparative sweeps, and exporting performance reports.",parameters:[{name:"config",type:"dict",default:"None",desc:"Workbench configuration dictionary"}],example:`import qector_decoder_v3 as qd -wb = qd.Workbench() -results = wb.benchmark(dem, shots=100000)`},{name:"stim_compat & sinter_compat",signature:"sinter_compat.qector_sinter_decoders()",desc:"Ecosystem integration helpers providing native compatibility with Stim circuits and Sinter benchmarking harnesses.",parameters:[{name:"sinter_decoders",type:"dict",default:"Required",desc:"Sinter compiled decoder mapping"}],example:`import sinter -from qector_decoder_v3.sinter_compat import qector_sinter_decoders -decoders = qector_sinter_decoders()`},{name:"license.verify_license_token",signature:"license.verify_license_token(token: str) -> bool",desc:"Offline Ed25519 cryptographic signature verification function for commercial evaluation and production license tokens.",parameters:[{name:"token",type:"str",default:"Required",desc:"Signed JWT/Ed25519 license token string"}],example:`from qector_decoder_v3.license import verify_license_token -is_valid = verify_license_token(token_str)`},{name:"HybridDecoder & HybridCascadeDecoder",signature:"HybridCascadeDecoder(dem: stim.DetectorErrorModel) # Feature-gated / source build",desc:"Experimental decoders combining fast Union-Find pre-filtering with exact Blossom fallback for ambiguous clusters. Note: HybridCascadeDecoder requires full-feature source build and may raise unavailable in standard pre-compiled wheels.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -# Research / full-feature build required -decoder = qd.HybridDecoder(dem)`},{name:"PredecodedDecoder & LookupTableDecoder",signature:"LookupTableDecoder(code_matrix: np.ndarray)",desc:"Research decoders for lookup-table fast matching on small stabilizer codes and wrapping pre-calculated decoding results for pipeline benchmarking.",parameters:[{name:"code_matrix",type:"np.ndarray",default:"Required",desc:"Parity check matrix"}],example:`import qector_decoder_v3 as qd -decoder = qd.LookupTableDecoder(H_matrix)`},{name:"ColourCodeDecoder, TwoStageDecoder & AmbiguityClusterDecoder",signature:"ColourCodeDecoder(dem: stim.DetectorErrorModel)",desc:"Research decoders: native colour-code decoding over undecomposed detector error models (color_code family), two-stage decoding pipelines, and ambiguity-cluster resolution.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"}],example:`import qector_decoder_v3 as qd -decoder = qd.ColourCodeDecoder(dem)`},{name:"GNNBeliefMatcher",signature:"GNNBeliefMatcher(dem: stim.DetectorErrorModel, model_path: str)",desc:"Research-stage graph neural network enhanced belief propagation module. Not validated for production use.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"},{name:"model_path",type:"str",default:"Required",desc:"Path to trained GNN weights file"}],example:`import qector_decoder_v3 as qd -matcher = qd.GNNBeliefMatcher(dem, "weights.pt")`}],r=c.filter(n=>n.name.toLowerCase().includes(a.toLowerCase())),s=n=>{u(t===n?null:n)};return i.useEffect(()=>{window.matchMedia("(prefers-reduced-motion: reduce)").matches||t&&o.current&&p.fromTo(o.current,{opacity:0,y:10},{opacity:1,y:0,duration:.3,ease:"power2.out"})},[t]),e.jsxs(e.Fragment,{children:[e.jsx(h,{title:"Technical Reference · QECTOR",description:"API reference, decoder parameters, and technical documentation for QECTOR quantum error correction decoder."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"17 Decoder Configurations · Stim DEM · Generated API Index"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(g,{text:"Technical Reference",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"API overview for QECTOR's decoders. The guided examples below are illustrative; the API index at the end of this page is generated from the published 1.0.1 package."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"relative mb-8 max-w-md mx-auto md:mx-0",children:[e.jsx("label",{htmlFor:"decoder-search",className:"sr-only",children:"Search decoders"}),e.jsx("input",{id:"decoder-search",type:"search",placeholder:"Search decoders...",value:a,onChange:n=>l(n.target.value),className:"w-full px-10 py-3 bg-surface/50 border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors"}),e.jsx(f,{className:"w-5 h-5 text-muted-foreground absolute left-3 top-3.5"})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-12 gap-8",children:[e.jsxs("div",{className:"lg:col-span-4 space-y-2",children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider px-2 mb-2 flex items-center gap-1.5",children:[e.jsx(y,{className:"w-3.5 h-3.5"}),"Decoder Classes"]}),e.jsxs("div",{className:"space-y-1",children:[r.map(n=>e.jsxs("button",{"aria-expanded":t===n.name,onClick:()=>s(n.name),className:`w-full flex items-center justify-between p-3.5 rounded-xl border text-sm transition-all duration-200 ${t===n.name?"bg-cyan-300/10 text-cyan-300 border-cyan-300/20 shadow-xs":"bg-surface/20 text-secondary hover:text-primary hover:bg-surface/40 border-gridline/50"}`,children:[e.jsx("span",{className:"font-mono font-semibold",children:n.name}),t===n.name?e.jsx(b,{className:"w-4 h-4"}):e.jsx(x,{className:"w-4 h-4 text-muted-foreground"})]},n.name)),r.length===0&&e.jsxs("div",{className:"p-4 text-center text-xs text-muted-foreground italic border border-dashed border-gridline rounded-xl",children:['No decoders matching "',a,'"']})]})]}),e.jsx("div",{className:"lg:col-span-8",children:t?(()=>{const n=c.find(d=>d.name===t);return n?e.jsxs("div",{ref:o,className:"card-surface bg-surface/10 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold text-primary font-mono",children:n.name}),e.jsx("p",{className:"text-secondary text-sm mt-3 leading-relaxed",children:n.desc})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(N,{className:"w-3.5 h-3.5"}),"Signature"]}),e.jsx(_,{code:n.signature,language:"python",className:"!my-0 bg-void/70"})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(k,{className:"w-3.5 h-3.5"}),"Parameters"]}),e.jsx("div",{className:"overflow-x-auto border border-gridline rounded-xl",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse text-left text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 text-xs font-semibold uppercase tracking-wider",children:[e.jsx("th",{className:"p-3",children:"Name"}),e.jsx("th",{className:"p-3",children:"Type"}),e.jsx("th",{className:"p-3",children:"Default"}),e.jsx("th",{className:"p-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:n.parameters.map(d=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-mono font-semibold text-primary",children:d.name}),e.jsx("td",{className:"p-3 font-mono text-xs text-secondary",children:d.type}),e.jsx("td",{className:"p-3 font-mono text-xs text-cyan-300",children:d.default}),e.jsx("td",{className:"p-3 text-xs text-secondary leading-relaxed",children:d.desc})]},d.name))})]})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2",children:"Usage Example"}),e.jsx(_,{code:n.example,language:"python",filename:`${n.name.toLowerCase()}_usage.py`})]})]}):null})():e.jsx("div",{className:"h-full flex items-center justify-center border border-dashed border-gridline rounded-2xl p-12 text-center text-muted-foreground italic text-sm",children:"Select a decoder class from the sidebar to inspect parameters and example usage."})})]})]})}),e.jsx(C,{})]})}export{B as default}; diff --git a/assets/TechnicalReference-BKOcLLqZ.js b/assets/TechnicalReference-BKOcLLqZ.js deleted file mode 100644 index 25415456..00000000 --- a/assets/TechnicalReference-BKOcLLqZ.js +++ /dev/null @@ -1,30 +0,0 @@ -import{r as i,j as e}from"./vendor-react-BiHfrq0e.js";import{S as h,C as _}from"./index-c1PDYu0j.js";import{N as g}from"./NeuralReveal-uYarhiMA.js";import{g as p}from"./vendor-gsap-a3sj5zmn.js";import{q as f,h as y,r as b,s as x,T as N,B as k}from"./vendor-ui-B8TlNU4J.js";const v="1.0.1",w="2026-11-06",q=JSON.parse(`[{"name":"AmbiguityClusterDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, error_rate=0.05, ambig_threshold=0.5, max_cluster_size=12)","summary":"C1-02: BP + ambiguity-clustered exact decoding for qLDPC codes.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"}]},{"name":"AutoDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, config: 'BackendConfig | None' = None)","summary":"Workload-aware, self-debugging decoder that routes to CUDA / OpenCL / Rayon / CPU / Fallback.","methods":[{"name":"auto_select","signature":"(checks, n_qubits, batch_size=1)"},{"name":"available_backends","signature":"(self) -> 'list[str]'"},{"name":"batch_decode","signature":"(self, syndromes) -> 'np.ndarray'"},{"name":"calibrate","signature":"(self, sizes=(64, 256, 1024, 4096, 16384), repeats: 'int' = 3, seed: 'int' = 0)"},{"name":"decode","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"diagnostics","signature":"(self) -> 'dict'"},{"name":"reset_backend_health","signature":"(self) -> 'None'"},{"name":"select","signature":"(self, batch_size: 'int') -> 'str'"}]},{"name":"AutoRouter","kind":"class","signature":"(*, priority: 'str' = 'balanced', hardware: 'HardwareLike' = None, error_rate: 'float' = 0.05, code_family: 'Any' = None, use_native_auto: 'bool' = True) -> 'None'","summary":"Construct, cache, and dispatch the policy-selected decoder for a problem.","methods":[{"name":"decode","signature":"(self, checks_or_H: 'Any', syndromes: 'Any', **ctx: 'Any') -> 'np.ndarray'"},{"name":"explain","signature":"(self, checks_or_H: 'Any' = None, syndromes: 'Any' = None, **ctx: 'Any') -> 'dict[str, Any]'"}]},{"name":"BPOSDDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, error_rate=0.1, bp_method=None, osd_order=None)","summary":"Belief Propagation + Ordered Statistics Decoding.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"bp_decode","signature":"(self, syndrome, max_iterations=20)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_batch_flat","signature":"(self, flat_syndromes, num_shots, stride=None)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"decode_timed","signature":"(self, syndrome, max_latency_ms=10.0)"}]},{"name":"Backend","kind":"class","signature":"()","summary":"Backend identifiers & Fallback Tiers.","methods":[]},{"name":"BackendConfig","kind":"class","signature":"(rayon_threshold: 'int' = 8, gpu_threshold: 'int' = 4096, allow_gpu: 'bool' = True, prefer: 'str' = 'cuda', force: 'str | None' = None, enable_auto_debug: 'bool' = True) -> None","summary":"Tunable thresholds and policy for :class:\`AutoDecoder\`.","methods":[]},{"name":"BatchDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None)","summary":"Parallel batch decoder using Rayon (Rust data parallelism).","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"parallel_batch_decode","signature":"(self, syndromes)"}]},{"name":"BatchedBpDecoder","kind":"class","signature":"(H: 'Any', *, error_rate: 'float' = 0.05, priors: 'Any' = None, max_iter: 'int' = 30, alpha: 'float' = 1.0, bp_method: 'str' = 'min_sum', prefer_gpu: 'bool' = True) -> 'None'","summary":"Batched belief-propagation decoder over a fixed GF(2) check matrix \`\`H\`\`.","methods":[{"name":"decode_batch","signature":"(self, syndromes: 'Any', *, return_llr: 'bool' = False, early_stop: 'bool' = True) -> 'tuple[np.ndarray, np.ndarray] | tuple[np.ndarray, np.ndarray, np.ndarray]'"}]},{"name":"BeliefMatching","kind":"class","signature":"(matrices: '_Matrices', max_iter: 'int' = 30, bp_shortcut: 'bool' = False)","summary":"Belief-propagation + minimum-weight perfect matching decoder.","methods":[{"name":"decode","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"decode_batch","signature":"(self, shots) -> 'np.ndarray'"},{"name":"decode_correction","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"decode_observables","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"from_detector_error_model","signature":"(dem: 'Any', max_iter: 'int' = 20) -> 'BeliefMatching'"},{"name":"from_numpy_h","signature":"(H, error_rate: 'float' = 0.05, max_iter: 'int' = 20) -> 'BeliefMatching'"},{"name":"from_stim_circuit","signature":"(circuit, max_iter: 'int' = 20) -> 'BeliefMatching'"}]},{"name":"BenchmarkSuite","kind":"class","signature":"(check_to_qubits, n_qubits=None, n_samples=10000, seed=42)","summary":"Production benchmark suite. Wraps Rust-native benchmarking.","methods":[{"name":"run","signature":"(self)"},{"name":"save","signature":"(self, path, results)"}]},{"name":"BlossomDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, edge_weights=None)","summary":"Minimum-Weight Perfect Matching (MWPM) decoder via Edmonds' Blossom algorithm.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"batch_decode_weighted","signature":"(self, syndromes, weights)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"set_edge_weights","signature":"(self, weights)"}]},{"name":"BpOsdDecoder","kind":"class","signature":"(H: 'Any', error_rate: 'float' = 0.05, priors: 'Any' = None, max_iter: 'int' = 30, ms_scale: 'float' = 1.0, osd_order: 'int' = 0, bp_method: 'str' = 'sum_product', use_gpu: 'Any' = None, max_latency_ms: 'float | None' = None, damping: 'float' = 0.0, osd_lambda: 'Any' = None)","summary":"BP + ordered-statistics decoder for general GF(2) check matrices.","methods":[{"name":"batch_decode","signature":"(self, syndromes) -> 'np.ndarray'"},{"name":"decode","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"decode_correction","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix: 'Any' = None) -> 'np.ndarray'"}]},{"name":"CPUBatchDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None)","summary":"SIMD-friendly CPU batch decoder with pooled buffers and SoA transposition.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"batch_decode_par","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"}]},{"name":"CUDABatchDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, edge_weights=None)","summary":"","methods":[{"name":"batch_decode","signature":"(self, /, syndromes)"},{"name":"is_available","signature":"()"},{"name":"reset","signature":"(self, /)"}]},{"name":"CUDABpOsdDecoder","kind":"class","signature":"(check_to_qubits, n_qubits, error_rate)","summary":"","methods":[{"name":"batch_decode","signature":"(self, /, syndromes)"}]},{"name":"ColourCodeDecoder","kind":"class","signature":"(dem: 'Any', max_iter: 'int' = 30, osd_order: 'int' = 0, method: 'str' = 'bposd')","summary":"Colour-code decoder: BP-OSD over the undecomposed hypergraph DEM.","methods":[{"name":"decode","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"decode_batch","signature":"(self, syndromes) -> 'np.ndarray'"},{"name":"decode_correction","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"decode_observables","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"from_detector_error_model","signature":"(dem: 'Any', max_iter: 'int' = 30, osd_order: 'int' = 0) -> 'ColourCodeDecoder'"},{"name":"from_stim_circuit","signature":"(circuit: 'Any', max_iter: 'int' = 30, osd_order: 'int' = 0) -> 'ColourCodeDecoder'"}]},{"name":"DecodeResult","kind":"class","signature":"(correction: 'np.ndarray', syndrome: 'np.ndarray', n_qubits: 'int', n_checks: 'int', weight: 'float | None' = None, logical_flips: 'np.ndarray | None' = None, decode_seconds: 'float | None' = None, backend: 'str' = 'cpu', fallback: 'bool' = False, fallback_reason: 'str' = '', syndrome_valid: 'bool | None' = None, metadata: 'dict' = ) -> None","summary":"Result of decoding a single syndrome, with diagnostics and metadata.","methods":[{"name":"as_uint8","signature":"(self) -> 'np.ndarray'"},{"name":"explain","signature":"(self) -> 'str'"},{"name":"to_dict","signature":"(self) -> 'dict'"},{"name":"to_json","signature":"(self, indent: 'int' = 2) -> 'str'"},{"name":"verify","signature":"(self, H: 'np.ndarray') -> 'bool'"}]},{"name":"DecoderName","kind":"class","signature":"()","summary":"String identifiers for the routable decoders.","methods":[]},{"name":"DecoderPool","kind":"class","signature":"(check_to_qubits=None, n_qubits=None, decoder_type: 'str' = 'fast_union_find', n_workers: 'int | None' = None, num_threads: 'int | None' = None)","summary":"Multi-process decoder pool for parallel syndrome decoding.","methods":[{"name":"close","signature":"(self)"},{"name":"decode","signature":"(self, syndromes) -> 'np.ndarray'"}]},{"name":"DetectorGraph","kind":"class","signature":"(check_to_qubits, syndrome, check_positions=None, check_types=None, base_weights=None, n_qubits=None)","summary":"Detector graph used by the GNN and hybrid decoder paths.","methods":[{"name":"update_syndrome","signature":"(self, syndrome)"}]},{"name":"FastUnionFindDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, edge_weights=None)","summary":"Union-Find with a zero-allocation hot path, reusable buffers and a C ABI.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_batch_flat","signature":"(self, flat_syndromes, num_shots, stride=None)"},{"name":"decode_batch_into_flat","signature":"(self, flat_syndromes, num_shots, corrections, stride=None)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"set_edge_weights","signature":"(self, edge_weights)"}]},{"name":"GNNBeliefMatcher","kind":"class","signature":"(check_to_qubits, n_qubits=None, *, gnn=None, hidden_size: 'int' = 32, n_layers: 'int' = 2, train_samples: 'int' = 0, error_rate: 'float' = 0.05, train_epochs: 'int' = 3, seed=None)","summary":"End-to-end GNN-guided minimum-weight perfect matching decoder.","methods":[{"name":"batch_decode","signature":"(self, syndromes) -> 'np.ndarray'"},{"name":"decode","signature":"(self, syndrome) -> 'np.ndarray'"}]},{"name":"GNNPredecoder","kind":"class","signature":"(node_feat_dim=None, edge_feat_dim=None, hidden_size=16, n_layers=2)","summary":"Graph Neural Network Pre-Decoder for dynamic edge weight prediction.","methods":[{"name":"forward","signature":"(self, graph)"},{"name":"load_weights","signature":"(self, path)"},{"name":"new_standard","signature":"(hidden_size=16, n_layers=2)"},{"name":"predict_with_node_probs","signature":"(self, graph)"},{"name":"save_weights","signature":"(self, path)"},{"name":"train","signature":"(self, graphs, targets, n_epochs)"}]},{"name":"GNNTrainer","kind":"class","signature":"(check_to_qubits, n_qubits, error_rate=0.1)","summary":"End-to-end GNN training pipeline with Blossom teacher model.","methods":[{"name":"generate_dataset","signature":"(self, n_samples)"},{"name":"train","signature":"(self, gnn, n_samples, n_epochs)"},{"name":"train_bp","signature":"(self, gnn, n_samples, n_epochs, max_bp_iter=20)"}]},{"name":"HardwareProfile","kind":"class","signature":"(cuda_rust: 'bool' = False, gpu: 'bool' = False) -> None","summary":"Resolved view of the GPU capability the policy should assume.","methods":[{"name":"as_dict","signature":"(self) -> 'dict[str, bool]'"},{"name":"detect","signature":"() -> 'HardwareProfile'"}]},{"name":"HybridCascadeDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, edge_weights=None, max_accept_weight=None, escalation=None, error_rate=None)","summary":"Hybrid cascading decoder: Union-Find pre-filter + Blossom/BP-OSD escalation.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"batch_decode_timed","signature":"(self, syndromes, max_latency_ms=10.0)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"decode_timed","signature":"(self, syndrome, max_latency_ms=10.0)"}]},{"name":"HybridDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, check_positions=None, check_types=None, base_weights=None, gnn_hidden_size=64, gnn_n_layers=3)","summary":"GNN Pre-Decoder + SparseBlossom hybrid decoder.","methods":[{"name":"batch_decode_hybrid","signature":"(self, syndromes)"},{"name":"batch_decode_standard","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_heuristic","signature":"(self, syndrome)"},{"name":"decode_hybrid","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"decode_standard","signature":"(self, syndrome)"},{"name":"load_weights","signature":"(self, path)"},{"name":"save_weights","signature":"(self, path)"},{"name":"train","signature":"(self, n_samples, n_epochs, error_rate=0.1)"},{"name":"train_bp","signature":"(self, n_samples, n_epochs, error_rate=0.1, max_bp_iter=20)"}]},{"name":"LERBenchmark","kind":"class","signature":"()","summary":"Logical Error Rate benchmark suite.","methods":[{"name":"run_all","signature":"(self)"}]},{"name":"LookupTableDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None)","summary":"Exact lookup-table decoder with UnionFind fallback.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"build_table","signature":"(self, max_entries)"},{"name":"decode","signature":"(self, syndrome)"}]},{"name":"MAX_WORKERS","kind":"constant","signature":"","summary":"","methods":[]},{"name":"Matching","kind":"class","signature":"(H: 'Any' = None, weights: 'Any' = None, faults_matrix: 'Any' = None)","summary":"Minimum-weight perfect-matching decoder with a PyMatching-style API.","methods":[{"name":"add_boundary_edge","signature":"(self, node: 'int', fault_ids: 'Any' = None, weight: 'float' = 1.0, **_: 'Any') -> 'None'"},{"name":"add_edge","signature":"(self, node1: 'int', node2: 'int', fault_ids: 'Any' = None, weight: 'float' = 1.0, **_: 'Any') -> 'None'"},{"name":"check_matrix","signature":"(self) -> 'np.ndarray'"},{"name":"decode","signature":"(self, syndrome: 'Sequence[int]') -> 'np.ndarray'"},{"name":"decode_batch","signature":"(self, shots: 'Any') -> 'np.ndarray'"},{"name":"decode_to_edges_array","signature":"(self, syndrome: 'Sequence[int]') -> 'np.ndarray'"},{"name":"edges","signature":"(self) -> 'list[tuple[int | None, int | None, dict]]'"},{"name":"from_check_matrix","signature":"(H: 'Any', weights: 'Any' = None, faults_matrix: 'Any' = None, **_: 'Any') -> 'Matching'"},{"name":"from_detector_error_model","signature":"(dem: 'Any') -> 'Matching'"},{"name":"from_stim_dem","signature":"(dem: 'Any') -> 'Matching'"}]},{"name":"NativeAutoDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, distance=5, noise_rate=0.01, batch_size=1, is_qldpc=False)","summary":"","methods":[{"name":"batch_decode","signature":"(self, /, syndromes)"},{"name":"batch_decode_strided","signature":"(self, /, syndromes, stride=None, require_alignment=False)"},{"name":"decode","signature":"(self, /, syndrome)"}]},{"name":"NeuralPredecoder","kind":"class","signature":"(n_input, n_output, n_hidden1=None, n_hidden2=None)","summary":"Lightweight MLP pre-decoder with Xavier initialization and SGD training.","methods":[{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"predict","signature":"(self, syndrome)"},{"name":"train","signature":"(self, syndromes, corrections, n_epochs, learning_rate=0.01)"}]},{"name":"OpenCLBatchDecoder","kind":"class","signature":"(*a, **k)","summary":"OpenCL batch decoder - requires source build with --features opencl.","methods":[{"name":"is_available","signature":"()"}]},{"name":"PredecodedDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, backend: 'str' = 'blossom')","summary":"Local-matching predecoder + exact/fast residual decoder.","methods":[{"name":"batch_decode","signature":"(self, syndromes) -> 'np.ndarray'"},{"name":"decode","signature":"(self, syndrome) -> 'np.ndarray'"}]},{"name":"Recommendation","kind":"class","signature":"(decoder: 'str', reason: 'str', family: 'str', priority: 'str', batch_size: 'int', hardware: 'dict[str, bool]', gpu_batched_bp: 'bool' = False, forced: 'bool' = False, graphlike: 'bool | None' = None, distance: 'int | None' = None, n_qubits: 'int | None' = None) -> None","summary":"A decoder choice plus the reasoning and inputs that produced it.","methods":[{"name":"as_dict","signature":"(self) -> 'dict[str, Any]'"}]},{"name":"SlidingWindowDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, window_size=10, decay_factor=0.8, check_types=None, p_data=None, p_meas=None)","summary":"Sliding-window decoder with exponential decay weighting or fault-tolerant space-time decoding.","methods":[{"name":"decode","signature":"(self, syndrome=None)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"detector_history","signature":"(self)"},{"name":"flush","signature":"(self)"},{"name":"update","signature":"(self, round_syndrome)"}]},{"name":"SpaceTimeDecoder","kind":"class","signature":"(check_to_qubits, check_types, n_rounds, p_data, p_meas, n_qubits=None)","summary":"PyO3 wrapper for [\`SpaceTimeDecoder\`]: fault-tolerant temporal decoding via XOR-of-consecutive-rounds detectors matched on a 3D (space x time) graph, as opposed to [\`crate::sliding_window::PySlidingWindowDecoder\`] /…","methods":[{"name":"decode_history","signature":"(self, /)"},{"name":"reset","signature":"(self, /)"},{"name":"update","signature":"(self, /, round_syndrome)"}]},{"name":"SparseBlossomDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, edge_weights=None)","summary":"Region-growing Sparse Blossom decoder with RadixHeap.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"decode_with_weights","signature":"(self, syndrome, weights)"}]},{"name":"StreamingDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, history_size=10, check_types=None, p_data=None, p_meas=None)","summary":"Streaming decoder that accumulates syndromes over multiple rounds.","methods":[{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"decode_rounds","signature":"(self, rounds)"},{"name":"detector_history","signature":"(self)"},{"name":"flush","signature":"(self)"},{"name":"update","signature":"(self, round_syndrome)"}]},{"name":"StreamingResult","kind":"class","signature":"(corrections: 'np.ndarray', syndromes: 'np.ndarray', telemetry: 'StreamingTelemetry', logical_flips: 'np.ndarray | None' = None) -> None","summary":"Outcome of a full streaming decode.","methods":[{"name":"is_valid","signature":"(self, H: 'Any', *, prefer_gpu: 'bool' = True) -> 'bool'"}]},{"name":"StreamingSession","kind":"class","signature":"(code_or_checks: 'Any', n_qubits: 'int | None' = None, *, window_size: 'int' = 8, decoder: 'Any | None' = None, logicals: 'Any' = None, prefer_gpu: 'bool | None' = None) -> 'None'","summary":"Incremental multi-round decode with a sliding commit buffer.","methods":[{"name":"committed_corrections","signature":"(self) -> 'np.ndarray'"},{"name":"committed_syndromes","signature":"(self) -> 'np.ndarray'"},{"name":"flush","signature":"(self) -> 'list[np.ndarray]'"},{"name":"push_round","signature":"(self, syndrome: 'Any') -> 'list[np.ndarray]'"},{"name":"reset","signature":"(self) -> 'None'"},{"name":"run","signature":"(self, syndrome_rounds: 'Any') -> 'StreamingResult'"}]},{"name":"StreamingTelemetry","kind":"class","signature":"(rounds: 'int' = 0, windows: 'int' = 0, committed: 'int' = 0, decode_seconds: 'float' = 0.0, per_window_seconds: 'list[float]' = , gpu: 'dict[str, int]' = , backend: 'dict[str, Any]' = , rounds_valid: 'int | None' = None) -> None","summary":"Real, measured counters for a streaming decode run.","methods":[{"name":"as_dict","signature":"(self) -> 'dict[str, Any]'"},{"name":"record_window","signature":"(self, seconds: 'float', rounds: 'int' = 1) -> 'None'"}]},{"name":"TwoStageDecoder","kind":"class","signature":"(check_to_qubits, check_types, n_qubits=None, x_decoder='blossom', z_decoder='blossom')","summary":"C1-03: Correlated two-stage matching for CSS codes.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"}]},{"name":"UnionFindDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, edge_weights=None)","summary":"Production-ready Union-Find quantum error correction decoder.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_batch_flat","signature":"(self, flat_syndromes, num_shots, stride=None)"},{"name":"decode_batch_into_flat","signature":"(self, flat_syndromes, num_shots, corrections, stride=None)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"set_edge_weights","signature":"(self, edge_weights)"}]},{"name":"Workbench","kind":"class","signature":"() -> 'None'","summary":"Controller for the QECTOR Workbench (load → benchmark → export).","methods":[{"name":"cancel_job","signature":"(self, job_id: 'str') -> 'str'"},{"name":"detect_backends","signature":"(self) -> 'dict'"},{"name":"environment_snapshot","signature":"(self) -> 'dict'"},{"name":"export_csv","signature":"(self, artifact: 'dict', path: 'str') -> 'str'"},{"name":"export_json","signature":"(self, artifact: 'dict', path: 'str') -> 'str'"},{"name":"export_pdf","signature":"(self, artifact: 'dict', path: 'str') -> 'str'"},{"name":"get_job","signature":"(self, job_id: 'str') -> 'dict'"},{"name":"get_license_info","signature":"(self) -> 'dict'"},{"name":"job_artifact","signature":"(self, job_id: 'str') -> 'dict | None'"},{"name":"list_jobs","signature":"(self) -> 'list[dict]'"},{"name":"load_dem","signature":"(self, source: 'Any') -> 'dict'"},{"name":"load_stim","signature":"(self, source: 'Any') -> 'dict'"},{"name":"run_benchmark","signature":"(self, spec: 'dict', job: 'Job | None' = None) -> 'dict'"},{"name":"set_license_key","signature":"(self, key: 'str') -> 'None'"},{"name":"shutdown","signature":"(self) -> 'None'"},{"name":"submit_job","signature":"(self, spec: 'dict') -> 'str'"},{"name":"wait","signature":"(self, job_id: 'str', timeout: 'float | None' = None) -> 'dict'"}]},{"name":"backend","kind":"module","signature":"","summary":"qector_decoder_v3.backend - Workload-Aware AutoDecoder with Self-Auto-Debug & Multi-Tier Fallback.","methods":[]},{"name":"batched_bp_decode","kind":"function","signature":"(H: 'Any', syndromes: 'Any', *, error_rate: 'float' = 0.05, priors: 'Any' = None, max_iter: 'int' = 30, alpha: 'float' = 1.0, bp_method: 'str' = 'min_sum', prefer_gpu: 'bool' = True, early_stop: 'bool' = True, return_llr: 'bool' = False) -> 'tuple[np.ndarray, np.ndarray] | tuple[np.ndarray, np.ndarray, np.ndarray]'","summary":"Decode a stack of syndromes with batched belief propagation.","methods":[]},{"name":"belief_matching","kind":"module","signature":"","summary":"qector_decoder_v3.belief_matching - belief-propagation + MWPM (belief-matching).","methods":[]},{"name":"benchmarking","kind":"module","signature":"","summary":"qector_decoder_v3.benchmarking - reproducible, statistically-honest benchmarks.","methods":[]},{"name":"bp_cupy","kind":"module","signature":"","summary":"qector_decoder_v3.bp_cupy - batched, GPU-resident belief propagation.","methods":[]},{"name":"bposd","kind":"module","signature":"","summary":"qector_decoder_v3.bposd - belief propagation + ordered-statistics decoding.","methods":[]},{"name":"changelog","kind":"function","signature":"() -> str","summary":"Return a human-readable changelog string for the loaded package.","methods":[]},{"name":"check_to_edges","kind":"function","signature":"(check_to_qubits)","summary":"Convert check_to_qubits to edge list.","methods":[]},{"name":"clear_decoder_cache","kind":"function","signature":"()","summary":"Clear the in-memory decoder and decoder pool LRU caches.","methods":[]},{"name":"codes","kind":"module","signature":"","summary":"qector_decoder_v3.codes - Code-family helpers.","methods":[]},{"name":"colour_code","kind":"module","signature":"","summary":"C1-04: Colour-code decoder.","methods":[]},{"name":"compute_detector_differences","kind":"function","signature":"(history)","summary":"Computes XOR detector differences across consecutive syndrome rounds: detector_t = raw_t ^ raw_{t-1}.","methods":[]},{"name":"cuda_is_available","kind":"function","signature":"()","summary":"","methods":[]},{"name":"decode_mmap","kind":"function","signature":"(syndrome_path: 'str', output_path: 'str', check_to_qubits, n_qubits: 'int', decoder_type: 'str' = 'cpu_batch', batch_size: 'int' = 65536, n_shots: 'int | None' = None, dtype: '_np.dtype' = dtype('uint8'), verbose: 'bool' = False)","summary":"Out-of-core batch decoding via memory-mapped arrays.","methods":[]},{"name":"decode_with_diagnostics","kind":"function","signature":"(code: 'Any', syndrome: 'Sequence[int]', kind: 'str' = 'blossom', decoder: 'Any' = None, logicals: 'np.ndarray | None' = None) -> 'DecodeResult'","summary":"Decode one syndrome and return a fully-populated :class:\`DecodeResult\`.","methods":[]},{"name":"decode_with_gnn","kind":"function","signature":"(check_to_qubits, n_qubits, syndrome, **kwargs) -> 'np.ndarray'","summary":"One-shot GNN-guided MWPM decode (see :class:\`GNNBeliefMatcher\`).","methods":[]},{"name":"decoder_cache","kind":"module","signature":"","summary":"qector_decoder_v3.decoder_cache - LRU-decoder cache and factory functions.","methods":[]},{"name":"decoder_pool","kind":"module","signature":"","summary":"qector_decoder_v3.decoder_pool - Multi-process decoder pool.","methods":[]},{"name":"dem","kind":"module","signature":"","summary":"qector_decoder_v3.dem - Stim Detector Error Model (DEM) loader.","methods":[]},{"name":"detect_hardware","kind":"function","signature":"() -> 'HardwareProfile'","summary":"Return the live :class:\`HardwareProfile\` (alias for \`\`HardwareProfile.detect\`\`).","methods":[]},{"name":"enforce_distance_cap","kind":"function","signature":"(distance) -> None","summary":"Enforce that *distance* does not exceed the active tier's cap.","methods":[]},{"name":"enforce_unlocked","kind":"function","signature":"() -> None","summary":"Hard-gate decode path when no valid license is active (QECTOR_ENFORCE=1).","methods":[]},{"name":"estimate_distance","kind":"function","signature":"(check_to_qubits, n_qubits=None)","summary":"Python wrapper for estimate_distance.","methods":[]},{"name":"flush_usage","kind":"function","signature":"(customer_id: 'str | None' = None, api_key: 'str | None' = None) -> dict","summary":"Flush accumulated decode shots to the Stripe Billing Meter Events API.","methods":[]},{"name":"from_circuit","kind":"function","signature":"(circuit, decoder_type='blossom', **kwargs)","summary":"Build a decoder from a Stim circuit in one call.","methods":[]},{"name":"generate_biconnected_qldpc_checks","kind":"function","signature":"(n_qubits, degree)","summary":"Generate a bipolar / biconnected qLDPC Tanner graph parity check matrix.","methods":[]},{"name":"generate_parity_check_matrix","kind":"function","signature":"(check_to_qubits, n_qubits=None)","summary":"Return the binary parity-check matrix \`\`H\`\` for *check_to_qubits*.","methods":[]},{"name":"generate_repetition_code_checks","kind":"function","signature":"(distance)","summary":"Generate a 1D repetition/chain code for testing.","methods":[]},{"name":"generate_ring_code_checks","kind":"function","signature":"(distance)","summary":"Generate a simple 1D ring code for testing.","methods":[]},{"name":"generate_space_time_surface_code_checks","kind":"function","signature":"(distance, rounds)","summary":"Generate 3D space-time surface code checks across multiple rounds.","methods":[]},{"name":"generate_surface_code_checks","kind":"function","signature":"(distance)","summary":"Generate compact periodic (toric) surface-code checks.","methods":[]},{"name":"generate_toy_code_checks","kind":"function","signature":"(distance)","summary":"Generate a toy code (not a proper quantum code) with d*d qubits for backward compatibility.","methods":[]},{"name":"generate_triangular_color_code_4_8_8_checks","kind":"function","signature":"(distance)","summary":"Generate 4.8.8 triangular color code parity check matrix.","methods":[]},{"name":"get_accumulated_shots","kind":"function","signature":"() -> int","summary":"Get total accumulated decode shots.","methods":[]},{"name":"get_backend","kind":"function","signature":"() -> 'GpuBackend'","summary":"Return the cached :class:\`GpuBackend\` capability snapshot (built once).","methods":[]},{"name":"get_decoder","kind":"function","signature":"(checks_tuple: 'tuple[tuple[int, ...]]', n_qubits: 'int', decoder_type: 'str' = 'union_find')","summary":"Get a decoder, constructing it once and caching for reuse.","methods":[]},{"name":"get_decoder_pool","kind":"function","signature":"(checks_tuple: 'tuple[tuple[int, ...]]', n_qubits: 'int', decoder_type: 'str' = 'union_find', n_workers: 'int | None' = None)","summary":"Get a multi-process :class:\`DecoderPool\`, constructed once and cached.","methods":[]},{"name":"get_latency_quantiles","kind":"function","signature":"()","summary":"\`get_latency_quantiles() -> tuple[float, float, float] | None\`","methods":[]},{"name":"get_license_info","kind":"function","signature":"() -> dict","summary":"Get active license info dictionary.","methods":[]},{"name":"gpu_available","kind":"function","signature":"() -> 'bool'","summary":"Return \`\`True\`\` iff CuPy is importable **and** a CUDA device is usable.","methods":[]},{"name":"gpu_backend","kind":"module","signature":"","summary":"qector_decoder_v3.gpu_backend - the CuPy GPU backend abstraction.","methods":[]},{"name":"has_cuda_rust","kind":"function","signature":"() -> 'bool'","summary":"Return \`\`True\`\` iff the Rust \`\`CUDABatchDecoder\`\` reports a usable device.","methods":[]},{"name":"has_cupy","kind":"function","signature":"() -> 'bool'","summary":"Return \`\`True\`\` if the \`\`cupy\`\` module can be imported.","methods":[]},{"name":"license","kind":"module","signature":"","summary":"","methods":[]},{"name":"opencl_is_available","kind":"function","signature":"()","summary":"","methods":[]},{"name":"predecoder","kind":"module","signature":"","summary":"qector_decoder_v3.predecoder - a fast, faithful matching predecoder.","methods":[]},{"name":"pymatching","kind":"module","signature":"","summary":"qector_decoder_v3.pymatching_compat - a PyMatching-compatible \`\`Matching\`\` API.","methods":[]},{"name":"pymatching_compat","kind":"module","signature":"","summary":"qector_decoder_v3.pymatching_compat - a PyMatching-compatible \`\`Matching\`\` API.","methods":[]},{"name":"qiskit_plugin","kind":"module","signature":"","summary":"QECTOR Qiskit Plugin - optional integration with the Qiskit ecosystem.","methods":[]},{"name":"recommend","kind":"function","signature":"(code_family: 'Any' = None, distance: 'int | None' = None, n_qubits: 'int | None' = None, batch_size: 'int' = 1, priority: 'str' = 'balanced', hardware: 'HardwareLike' = None, *, graphlike: 'bool | None' = None) -> 'Recommendation'","summary":"Return a rich :class:\`Recommendation\` for a decoding problem.","methods":[]},{"name":"recommend_decoder","kind":"function","signature":"(code_family: 'Any' = None, distance: 'int | None' = None, n_qubits: 'int | None' = None, batch_size: 'int' = 1, priority: 'str' = 'balanced', hardware: 'HardwareLike' = None) -> 'str'","summary":"Return the *name* of the recommended decoder class (see :func:\`recommend\`).","methods":[]},{"name":"record_shots","kind":"function","signature":"(count: int) -> None","summary":"Record decoding shots into telemetry buffer.","methods":[]},{"name":"rest_api","kind":"module","signature":"","summary":"Minimal REST API for QECTOR.","methods":[]},{"name":"result","kind":"module","signature":"","summary":"qector_decoder_v3.result - Rich decode results, diagnostics and debug output.","methods":[]},{"name":"routing","kind":"module","signature":"","summary":"qector_decoder_v3.routing - intelligent decoder router / auto-selection.","methods":[]},{"name":"run_mcp_server","kind":"function","signature":"()","summary":"Python signature: \`\`\`python run_mcp_server() \`\`\`","methods":[]},{"name":"set_license_key","kind":"function","signature":"(key: str) -> None","summary":"Set the global QECTOR license key for tier enforcement.","methods":[]},{"name":"set_license_key_file","kind":"function","signature":"(path) -> None","summary":"Load a license key from *path* and activate it.","methods":[]},{"name":"sinter_compat","kind":"module","signature":"","summary":"qector_decoder_v3.sinter_compat - plug QECTOR into Sinter.","methods":[]},{"name":"sliding_window_decode","kind":"function","signature":"(syndrome_rounds: 'Any', code: 'Any' = None, *, check_to_qubits: 'Sequence[Sequence[int]] | None' = None, n_qubits: 'int | None' = None, window_size: 'int' = 8, decoder: 'Any | None' = None, logicals: 'Any' = None, prefer_gpu: 'bool | None' = None) -> 'StreamingResult'","summary":"Decode a whole multi-round syndrome stream window-by-window.","methods":[]},{"name":"sparse_blossom_radix_neighbors","kind":"function","signature":"(decoder, defects, k=8)","summary":"Return the k-nearest candidate edges (sorted by distance) for \`defects\`.","methods":[]},{"name":"start_metrics_server","kind":"function","signature":"(addr='127.0.0.1:9090')","summary":"Start the Prometheus metrics HTTP server.","methods":[]},{"name":"stim_compat","kind":"module","signature":"","summary":"Stim compatibility layer - Conversion and wrappers for the Stim ecosystem.","methods":[]},{"name":"streaming","kind":"module","signature":"","summary":"qector_decoder_v3.streaming - a higher-level Python streaming / multi-round decode *orchestration* layer.","methods":[]},{"name":"stripe_integration","kind":"module","signature":"","summary":"QECTOR Decoder v3 - Full Stripe API & Webhook License Fulfillment Integration","methods":[]},{"name":"verify_license_token","kind":"function","signature":"(token: 'str', customer_email: 'str' = '') -> 'bool'","summary":"Verifies the license token signature completely offline using Ed25519.","methods":[]},{"name":"workbench","kind":"module","signature":"","summary":"qector_decoder_v3.workbench - the QECTOR Workbench application controller.","methods":[]}]`),m={package:"qector-decoder-v3",version:v,generated:w,items:q},D=["class","function","module"];function C(){const[a,l]=i.useState(""),[t,u]=i.useState("all"),o=m.items,c=i.useMemo(()=>{const r=a.trim().toLowerCase();return o.filter(s=>(t==="all"||s.kind===t)&&(!r||s.name.toLowerCase().includes(r)||s.summary.toLowerCase().includes(r)))},[o,a,t]);return e.jsx("section",{className:"section-padding pb-24","aria-labelledby":"api-index",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsx("h2",{id:"api-index",className:"text-3xl font-bold mb-2",children:"API index"}),e.jsxs("p",{className:"text-secondary text-sm mb-6 max-w-3xl",children:["Generated from the published ",e.jsxs("code",{className:"font-mono text-cyan-200",children:[m.package," ",m.version]})," wheel on ",m.generated,": every public name in ",e.jsx("code",{className:"font-mono text-cyan-200",children:"qector_decoder_v3"}),", with the signature Python reports and the first paragraph of its docstring."," ",o.length," names."]}),e.jsxs("div",{className:"flex flex-wrap gap-3 mb-6",children:[e.jsx("label",{className:"sr-only",htmlFor:"api-q",children:"Filter the API index"}),e.jsx("input",{id:"api-q",type:"search",value:a,onChange:r=>l(r.target.value),placeholder:"Filter by name or description",className:"flex-1 min-w-[14rem] bg-surface border border-gridline rounded-lg px-3 py-2 text-sm text-primary placeholder:text-muted-foreground focus:outline-none focus:border-cyan-300/50"}),e.jsx("div",{className:"flex gap-1",role:"group","aria-label":"Kind",children:["all",...D].map(r=>e.jsx("button",{type:"button","aria-pressed":t===r,onClick:()=>u(r),className:`px-3 py-2 rounded-lg text-xs font-semibold capitalize border ${t===r?"border-cyan-300/50 text-cyan-300 bg-cyan-300/10":"border-gridline text-secondary hover:text-primary"}`,children:{all:"All",class:"Classes",function:"Functions",module:"Modules"}[r]},r))})]}),e.jsxs("ul",{className:"space-y-3",children:[c.map(r=>e.jsxs("li",{className:"bg-[#0b1329]/40 border border-slate-800/80 rounded-2xl p-4",children:[e.jsxs("div",{className:"flex flex-wrap items-baseline gap-x-3 gap-y-1",children:[e.jsx("span",{className:"text-[10px] uppercase tracking-wider font-semibold text-muted-foreground",children:r.kind}),e.jsxs("code",{className:"font-mono text-cyan-300 text-sm break-all",children:[r.name,e.jsx("span",{className:"text-secondary",children:r.signature})]})]}),r.summary&&e.jsx("p",{className:"text-secondary text-sm mt-2 leading-relaxed",children:r.summary}),r.methods.length>0&&e.jsxs("details",{className:"mt-2",children:[e.jsxs("summary",{className:"text-xs text-muted-foreground cursor-pointer hover:text-cyan-300",children:[r.methods.length," public methods"]}),e.jsx("ul",{className:"mt-2 grid md:grid-cols-2 gap-x-6 gap-y-1",children:r.methods.map(s=>e.jsx("li",{children:e.jsxs("code",{className:"font-mono text-xs text-primary break-all",children:[s.name,e.jsx("span",{className:"text-muted-foreground",children:s.signature})]})},s.name))})]})]},r.name)),c.length===0&&e.jsx("li",{className:"text-muted-foreground text-sm",children:"No names match."})]})]})})}function B(){const[a,l]=i.useState(""),[t,u]=i.useState("BlossomDecoder"),o=i.useRef(null),c=[{name:"BlossomDecoder",signature:"BlossomDecoder(dem: stim.DetectorErrorModel, *, adaptive_k: bool = True, timeout: Optional[float] = None)",desc:"Minimum-weight perfect matching (MWPM) decoder for CSS stabilizer codes. Uses an exact matching solver to pair syndrome checks.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"adaptive_k",type:"bool",default:"True",desc:"Enable Union-Find pre-filtering to compress graph"},{name:"timeout",type:"float",default:"None",desc:"Max seconds allowed to match a syndrome"}],example:`import qector_decoder_v3 as qd -decoder = qd.BlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"BeliefMatchingDecoder",signature:'BeliefMatchingDecoder(dem: stim.DetectorErrorModel, *, bp_iters: int = 30, max_paths: int = 10, bp_method: str = "product_sum")',desc:"Accuracy-oriented decoder. Uses Belief Propagation (BP) preprocessing to compute edge probabilities, and then runs matching on a reweighted Blossom graph. Use when accuracy matters more than latency.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"bp_iters",type:"int",default:"30",desc:"Max iterations for Belief Propagation"},{name:"max_paths",type:"int",default:"10",desc:"Max alternative paths for match reweighting"},{name:"bp_method",type:"str",default:'"product_sum"',desc:"BP update equation to resolve constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.BeliefMatchingDecoder(dem, bp_iters=30) -correction = decoder.decode(syndrome)`},{name:"BpOsdDecoder",signature:'BpOsdDecoder(dem: stim.DetectorErrorModel, *, osd_order: int = 40, osd_method: str = "osd_cs")',desc:"Belief Propagation + Ordered Statistics Decoding. A common approach for qLDPC codes, where matching graphs are undefined. Handles non-CSS stabilizer layouts.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"osd_order",type:"int",default:"40",desc:"OSD search order limit"},{name:"osd_method",type:"str",default:'"osd_cs"',desc:"OSD resolution method"}],example:`import qector_decoder_v3 as qd -decoder = qd.BpOsdDecoder(dem, osd_order=40) -correction = decoder.decode(syndrome)`},{name:"UnionFindDecoder",signature:"UnionFindDecoder(dem: stim.DetectorErrorModel, *, use_combined: bool = True)",desc:"Near-linear time approximate decoder. Resolves syndromes by cluster growth and path compression. Scaling is O(N), making it ideal for large distance offline simulations.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"use_combined",type:"bool",default:"True",desc:"Enable combined cluster growth constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.UnionFindDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"CPUBatchDecoder",signature:"CPUBatchDecoder(dem: stim.DetectorErrorModel, *, num_threads: int = 0)",desc:"Multi-threaded CPU batch decoder. Leverages Rayon parallelism across CPU cores to decode thousands of syndromes concurrently.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"num_threads",type:"int",default:"0",desc:"Number of worker threads (0 = auto-detect physical cores)"}],example:`import qector_decoder_v3 as qd -decoder = qd.CPUBatchDecoder(dem, num_threads=8) -corrections = decoder.decode_batch(syndromes_matrix)`},{name:"GpuBatchDecoder / CUDABatchDecoder / OpenCLBatchDecoder",signature:"CUDABatchDecoder(dem: stim.DetectorErrorModel, *, batch_size: int = 2048)",desc:"Native GPU batch decoders. Implements CUDA and OpenCL device pipelines to solve thousands of syndromes in parallel. Check availability with CUDABatchDecoder.is_available().",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"batch_size",type:"int",default:"2048",desc:"Parallel batch sizing in GPU VRAM"}],example:`import qector_decoder_v3 as qd -if qd.CUDABatchDecoder.is_available(): - decoder = qd.CUDABatchDecoder(dem, batch_size=4096) - corrections = decoder.decode_batch(syndromes_array)`},{name:"SparseBlossomDecoder",signature:"SparseBlossomDecoder(dem: stim.DetectorErrorModel)",desc:"Low-latency region growing blossom variant optimized for ring-like and sparse detector error graphs.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -decoder = qd.SparseBlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"get_decoder / clear_decoder_cache",signature:'get_decoder(dem_or_h, decoder_type: str = "auto", **kwargs)',desc:"Cached decoder factory for instantiating and caching decoders by error model hash to avoid redundant graph construction.",parameters:[{name:"dem_or_h",type:"Union[stim.DetectorErrorModel, np.ndarray]",default:"Required",desc:"Detector model or H matrix"},{name:"decoder_type",type:"str",default:'"auto"',desc:"Target decoder family name"}],example:`import qector_decoder_v3 as qd -decoder = qd.get_decoder(dem, decoder_type="blossom") -qd.clear_decoder_cache()`},{name:"decode_mmap / decode_with_diagnostics",signature:"decode_mmap(decoder, input_filepath: str, output_filepath: str)",desc:"Out-of-core memory-mapped file decoder for processing gigabyte-scale syndrome files on disk without loading entire matrices into RAM. Returns structured DecodeResult.",parameters:[{name:"decoder",type:"DecoderInstance",default:"Required",desc:"Initialized decoder instance"},{name:"input_filepath",type:"str",default:"Required",desc:"Path to binary syndrome file"},{name:"output_filepath",type:"str",default:"Required",desc:"Path to write binary correction results"}],example:`import qector_decoder_v3 as qd -res = qd.decode_mmap(decoder, "syndromes.bin", "corrections.bin") -print(res.shots_processed, res.latency_seconds)`},{name:"Workbench API",signature:"Workbench(config: Optional[dict] = None)",desc:"High-level orchestration and benchmarking engine for configuring decoding pipelines, running multi-decoder comparative sweeps, and exporting performance reports.",parameters:[{name:"config",type:"dict",default:"None",desc:"Workbench configuration dictionary"}],example:`import qector_decoder_v3 as qd -wb = qd.Workbench() -results = wb.benchmark(dem, shots=100000)`},{name:"stim_compat & sinter_compat",signature:"sinter_compat.qector_sinter_decoders()",desc:"Ecosystem integration helpers providing native compatibility with Stim circuits and Sinter benchmarking harnesses.",parameters:[{name:"sinter_decoders",type:"dict",default:"Required",desc:"Sinter compiled decoder mapping"}],example:`import sinter -from qector_decoder_v3.sinter_compat import qector_sinter_decoders -decoders = qector_sinter_decoders()`},{name:"license.verify_license_token",signature:"license.verify_license_token(token: str) -> bool",desc:"Offline Ed25519 cryptographic signature verification function for commercial evaluation and production license tokens.",parameters:[{name:"token",type:"str",default:"Required",desc:"Signed JWT/Ed25519 license token string"}],example:`from qector_decoder_v3.license import verify_license_token -is_valid = verify_license_token(token_str)`},{name:"HybridDecoder & HybridCascadeDecoder",signature:"HybridCascadeDecoder(dem: stim.DetectorErrorModel) # Feature-gated / source build",desc:"Experimental decoders combining fast Union-Find pre-filtering with exact Blossom fallback for ambiguous clusters. Note: HybridCascadeDecoder requires full-feature source build and may raise unavailable in standard pre-compiled wheels.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -# Research / full-feature build required -decoder = qd.HybridDecoder(dem)`},{name:"PredecodedDecoder & LookupTableDecoder",signature:"LookupTableDecoder(code_matrix: np.ndarray)",desc:"Research decoders for lookup-table fast matching on small stabilizer codes and wrapping pre-calculated decoding results for pipeline benchmarking.",parameters:[{name:"code_matrix",type:"np.ndarray",default:"Required",desc:"Parity check matrix"}],example:`import qector_decoder_v3 as qd -decoder = qd.LookupTableDecoder(H_matrix)`},{name:"ColourCodeDecoder, TwoStageDecoder & AmbiguityClusterDecoder",signature:"ColourCodeDecoder(dem: stim.DetectorErrorModel)",desc:"Research decoders: native colour-code decoding over undecomposed detector error models (color_code family), two-stage decoding pipelines, and ambiguity-cluster resolution.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"}],example:`import qector_decoder_v3 as qd -decoder = qd.ColourCodeDecoder(dem)`},{name:"GNNBeliefMatcher",signature:"GNNBeliefMatcher(dem: stim.DetectorErrorModel, model_path: str)",desc:"Research-stage graph neural network enhanced belief propagation module. Not validated for production use.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"},{name:"model_path",type:"str",default:"Required",desc:"Path to trained GNN weights file"}],example:`import qector_decoder_v3 as qd -matcher = qd.GNNBeliefMatcher(dem, "weights.pt")`}],r=c.filter(n=>n.name.toLowerCase().includes(a.toLowerCase())),s=n=>{u(t===n?null:n)};return i.useEffect(()=>{window.matchMedia("(prefers-reduced-motion: reduce)").matches||t&&o.current&&p.fromTo(o.current,{opacity:0,y:10},{opacity:1,y:0,duration:.3,ease:"power2.out"})},[t]),e.jsxs(e.Fragment,{children:[e.jsx(h,{title:"Technical Reference · QECTOR",description:"API reference, decoder parameters, and technical documentation for QECTOR quantum error correction decoder."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"17 Decoder Configurations · Stim DEM · Generated API Index"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(g,{text:"Technical Reference",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"API overview for QECTOR's decoders. The guided examples below are illustrative; the API index at the end of this page is generated from the published 1.0.1 package."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"relative mb-8 max-w-md mx-auto md:mx-0",children:[e.jsx("label",{htmlFor:"decoder-search",className:"sr-only",children:"Search decoders"}),e.jsx("input",{id:"decoder-search",type:"search",placeholder:"Search decoders...",value:a,onChange:n=>l(n.target.value),className:"w-full px-10 py-3 bg-surface/50 border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors"}),e.jsx(f,{className:"w-5 h-5 text-muted-foreground absolute left-3 top-3.5"})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-12 gap-8",children:[e.jsxs("div",{className:"lg:col-span-4 space-y-2",children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider px-2 mb-2 flex items-center gap-1.5",children:[e.jsx(y,{className:"w-3.5 h-3.5"}),"Decoder Classes"]}),e.jsxs("div",{className:"space-y-1",children:[r.map(n=>e.jsxs("button",{"aria-expanded":t===n.name,onClick:()=>s(n.name),className:`w-full flex items-center justify-between p-3.5 rounded-xl border text-sm transition-all duration-200 ${t===n.name?"bg-cyan-300/10 text-cyan-300 border-cyan-300/20 shadow-xs":"bg-surface/20 text-secondary hover:text-primary hover:bg-surface/40 border-gridline/50"}`,children:[e.jsx("span",{className:"font-mono font-semibold",children:n.name}),t===n.name?e.jsx(b,{className:"w-4 h-4"}):e.jsx(x,{className:"w-4 h-4 text-muted-foreground"})]},n.name)),r.length===0&&e.jsxs("div",{className:"p-4 text-center text-xs text-muted-foreground italic border border-dashed border-gridline rounded-xl",children:['No decoders matching "',a,'"']})]})]}),e.jsx("div",{className:"lg:col-span-8",children:t?(()=>{const n=c.find(d=>d.name===t);return n?e.jsxs("div",{ref:o,className:"card-surface bg-surface/10 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold text-primary font-mono",children:n.name}),e.jsx("p",{className:"text-secondary text-sm mt-3 leading-relaxed",children:n.desc})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(N,{className:"w-3.5 h-3.5"}),"Signature"]}),e.jsx(_,{code:n.signature,language:"python",className:"!my-0 bg-void/70"})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(k,{className:"w-3.5 h-3.5"}),"Parameters"]}),e.jsx("div",{className:"overflow-x-auto border border-gridline rounded-xl",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse text-left text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 text-xs font-semibold uppercase tracking-wider",children:[e.jsx("th",{className:"p-3",children:"Name"}),e.jsx("th",{className:"p-3",children:"Type"}),e.jsx("th",{className:"p-3",children:"Default"}),e.jsx("th",{className:"p-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:n.parameters.map(d=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-mono font-semibold text-primary",children:d.name}),e.jsx("td",{className:"p-3 font-mono text-xs text-secondary",children:d.type}),e.jsx("td",{className:"p-3 font-mono text-xs text-cyan-300",children:d.default}),e.jsx("td",{className:"p-3 text-xs text-secondary leading-relaxed",children:d.desc})]},d.name))})]})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2",children:"Usage Example"}),e.jsx(_,{code:n.example,language:"python",filename:`${n.name.toLowerCase()}_usage.py`})]})]}):null})():e.jsx("div",{className:"h-full flex items-center justify-center border border-dashed border-gridline rounded-2xl p-12 text-center text-muted-foreground italic text-sm",children:"Select a decoder class from the sidebar to inspect parameters and example usage."})})]})]})}),e.jsx(C,{})]})}export{B as default}; diff --git a/assets/TechnicalReference-BV2uErpt.js b/assets/TechnicalReference-BV2uErpt.js deleted file mode 100644 index e29812a8..00000000 --- a/assets/TechnicalReference-BV2uErpt.js +++ /dev/null @@ -1,30 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,C as n}from"./index-CpdATiEY.js";import{N as h}from"./NeuralReveal-BflyZYSb.js";import{g as f}from"./vendor-gsap-a3sj5zmn.js";import{r as x,h as g,s as b,o as y,T as _,B as v}from"./vendor-ui-B0ssGG4c.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";function R(){const[a,l]=o.useState(""),[t,m]=o.useState("BlossomDecoder"),s=o.useRef(null),c=[{name:"BlossomDecoder",signature:"BlossomDecoder(dem: stim.DetectorErrorModel, *, adaptive_k: bool = True, timeout: Optional[float] = None)",desc:"Minimum-weight perfect matching (MWPM) decoder for CSS stabilizer codes. Uses an exact matching solver to pair syndrome checks.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"adaptive_k",type:"bool",default:"True",desc:"Enable Union-Find pre-filtering to compress graph"},{name:"timeout",type:"float",default:"None",desc:"Max seconds allowed to match a syndrome"}],example:`import qector_decoder_v3 as qd -decoder = qd.BlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"BeliefMatchingDecoder",signature:'BeliefMatchingDecoder(dem: stim.DetectorErrorModel, *, bp_iters: int = 30, max_paths: int = 10, bp_method: str = "product_sum")',desc:"Accuracy-oriented decoder. Uses Belief Propagation (BP) preprocessing to compute edge probabilities, and then runs matching on a reweighted Blossom graph. Use when accuracy matters more than latency.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"bp_iters",type:"int",default:"30",desc:"Max iterations for Belief Propagation"},{name:"max_paths",type:"int",default:"10",desc:"Max alternative paths for match reweighting"},{name:"bp_method",type:"str",default:'"product_sum"',desc:"BP update equation to resolve constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.BeliefMatchingDecoder(dem, bp_iters=30) -correction = decoder.decode(syndrome)`},{name:"BpOsdDecoder",signature:'BpOsdDecoder(dem: stim.DetectorErrorModel, *, osd_order: int = 40, osd_method: str = "osd_cs")',desc:"Belief Propagation + Ordered Statistics Decoding. A common approach for qLDPC codes, where matching graphs are undefined. Handles non-CSS stabilizer layouts.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"osd_order",type:"int",default:"40",desc:"OSD search order limit"},{name:"osd_method",type:"str",default:'"osd_cs"',desc:"OSD resolution method"}],example:`import qector_decoder_v3 as qd -decoder = qd.BpOsdDecoder(dem, osd_order=40) -correction = decoder.decode(syndrome)`},{name:"UnionFindDecoder",signature:"UnionFindDecoder(dem: stim.DetectorErrorModel, *, use_combined: bool = True)",desc:"Near-linear time approximate decoder. Resolves syndromes by cluster growth and path compression. Scaling is O(N), making it ideal for large distance offline simulations.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"use_combined",type:"bool",default:"True",desc:"Enable combined cluster growth constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.UnionFindDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"CPUBatchDecoder",signature:"CPUBatchDecoder(dem: stim.DetectorErrorModel, *, num_threads: int = 0)",desc:"Multi-threaded CPU batch decoder. Leverages Rayon parallelism across CPU cores to decode thousands of syndromes concurrently.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"num_threads",type:"int",default:"0",desc:"Number of worker threads (0 = auto-detect physical cores)"}],example:`import qector_decoder_v3 as qd -decoder = qd.CPUBatchDecoder(dem, num_threads=8) -corrections = decoder.decode_batch(syndromes_matrix)`},{name:"GpuBatchDecoder / CUDABatchDecoder / OpenCLBatchDecoder",signature:"CUDABatchDecoder(dem: stim.DetectorErrorModel, *, batch_size: int = 2048)",desc:"Native GPU batch decoders. Implements CUDA and OpenCL device pipelines to solve thousands of syndromes in parallel. Check availability with CUDABatchDecoder.is_available().",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"batch_size",type:"int",default:"2048",desc:"Parallel batch sizing in GPU VRAM"}],example:`import qector_decoder_v3 as qd -if qd.CUDABatchDecoder.is_available(): - decoder = qd.CUDABatchDecoder(dem, batch_size=4096) - corrections = decoder.decode_batch(syndromes_array)`},{name:"SparseBlossomDecoder",signature:"SparseBlossomDecoder(dem: stim.DetectorErrorModel)",desc:"Low-latency region growing blossom variant optimized for ring-like and sparse detector error graphs.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -decoder = qd.SparseBlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"get_decoder / clear_decoder_cache",signature:'get_decoder(dem_or_h, decoder_type: str = "auto", **kwargs)',desc:"Cached decoder factory for instantiating and caching decoders by error model hash to avoid redundant graph construction.",parameters:[{name:"dem_or_h",type:"Union[stim.DetectorErrorModel, np.ndarray]",default:"Required",desc:"Detector model or H matrix"},{name:"decoder_type",type:"str",default:'"auto"',desc:"Target decoder family name"}],example:`import qector_decoder_v3 as qd -decoder = qd.get_decoder(dem, decoder_type="blossom") -qd.clear_decoder_cache()`},{name:"decode_mmap / decode_with_diagnostics",signature:"decode_mmap(decoder, input_filepath: str, output_filepath: str)",desc:"Out-of-core memory-mapped file decoder for processing gigabyte-scale syndrome files on disk without loading entire matrices into RAM. Returns structured DecodeResult.",parameters:[{name:"decoder",type:"DecoderInstance",default:"Required",desc:"Initialized decoder instance"},{name:"input_filepath",type:"str",default:"Required",desc:"Path to binary syndrome file"},{name:"output_filepath",type:"str",default:"Required",desc:"Path to write binary correction results"}],example:`import qector_decoder_v3 as qd -res = qd.decode_mmap(decoder, "syndromes.bin", "corrections.bin") -print(res.shots_processed, res.latency_seconds)`},{name:"Workbench API",signature:"Workbench(config: Optional[dict] = None)",desc:"High-level orchestration and benchmarking engine for configuring decoding pipelines, running multi-decoder comparative sweeps, and exporting performance reports.",parameters:[{name:"config",type:"dict",default:"None",desc:"Workbench configuration dictionary"}],example:`import qector_decoder_v3 as qd -wb = qd.Workbench() -results = wb.benchmark(dem, shots=100000)`},{name:"stim_compat & sinter_compat",signature:"sinter_compat.qector_sinter_decoders()",desc:"Ecosystem integration helpers providing native compatibility with Stim circuits and Sinter benchmarking harnesses.",parameters:[{name:"sinter_decoders",type:"dict",default:"Required",desc:"Sinter compiled decoder mapping"}],example:`import sinter -from qector_decoder_v3.sinter_compat import qector_sinter_decoders -decoders = qector_sinter_decoders()`},{name:"license.verify_license_token",signature:"license.verify_license_token(token: str) -> bool",desc:"Offline Ed25519 cryptographic signature verification function for commercial evaluation and production license tokens.",parameters:[{name:"token",type:"str",default:"Required",desc:"Signed JWT/Ed25519 license token string"}],example:`from qector_decoder_v3.license import verify_license_token -is_valid = verify_license_token(token_str)`},{name:"HybridDecoder & HybridCascadeDecoder",signature:"HybridCascadeDecoder(dem: stim.DetectorErrorModel) # Feature-gated / source build",desc:"Experimental decoders combining fast Union-Find pre-filtering with exact Blossom fallback for ambiguous clusters. Note: HybridCascadeDecoder requires full-feature source build and may raise unavailable in standard pre-compiled wheels.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -# Research / full-feature build required -decoder = qd.HybridDecoder(dem)`},{name:"PredecodedDecoder & LookupTableDecoder",signature:"LookupTableDecoder(code_matrix: np.ndarray)",desc:"Research decoders for lookup-table fast matching on small stabilizer codes and wrapping pre-calculated decoding results for pipeline benchmarking.",parameters:[{name:"code_matrix",type:"np.ndarray",default:"Required",desc:"Parity check matrix"}],example:`import qector_decoder_v3 as qd -decoder = qd.LookupTableDecoder(H_matrix)`},{name:"ColourCodeDecoder, TwoStageDecoder & AmbiguityClusterDecoder",signature:"ColourCodeDecoder(dem: stim.DetectorErrorModel)",desc:"Research decoders: native colour-code decoding over undecomposed detector error models (color_code family), two-stage decoding pipelines, and ambiguity-cluster resolution.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"}],example:`import qector_decoder_v3 as qd -decoder = qd.ColourCodeDecoder(dem)`},{name:"GNNBeliefMatcher",signature:"GNNBeliefMatcher(dem: stim.DetectorErrorModel, model_path: str)",desc:"Research-stage graph neural network enhanced belief propagation module. Not validated for production use.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"},{name:"model_path",type:"str",default:"Required",desc:"Path to trained GNN weights file"}],example:`import qector_decoder_v3 as qd -matcher = qd.GNNBeliefMatcher(dem, "weights.pt")`}],i=c.filter(r=>r.name.toLowerCase().includes(a.toLowerCase())),p=r=>{m(t===r?null:r)};return o.useEffect(()=>{window.matchMedia("(prefers-reduced-motion: reduce)").matches||t&&s.current&&f.fromTo(s.current,{opacity:0,y:10},{opacity:1,y:0,duration:.3,ease:"power2.out"})},[t]),e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"Technical Reference · QECTOR",description:"API reference, decoder parameters, and technical documentation for QECTOR quantum error correction decoder."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"16 Decoder APIs · Stim DEM · Signatures Are Examples"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(h,{text:"Technical Reference",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"API overview for QECTOR's decoders. Signatures, defaults, and snippets below are illustrative examples; treat the installed package as the authoritative reference."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"relative mb-8 max-w-md mx-auto md:mx-0",children:[e.jsx("label",{htmlFor:"decoder-search",className:"sr-only",children:"Search decoders"}),e.jsx("input",{id:"decoder-search",type:"search",placeholder:"Search decoders...",value:a,onChange:r=>l(r.target.value),className:"w-full px-10 py-3 bg-surface/50 border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors"}),e.jsx(x,{className:"w-5 h-5 text-muted-foreground absolute left-3 top-3.5"})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-12 gap-8",children:[e.jsxs("div",{className:"lg:col-span-4 space-y-2",children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider px-2 mb-2 flex items-center gap-1.5",children:[e.jsx(g,{className:"w-3.5 h-3.5"}),"Decoder Classes"]}),e.jsxs("div",{className:"space-y-1",children:[i.map(r=>e.jsxs("button",{"aria-expanded":t===r.name,onClick:()=>p(r.name),className:`w-full flex items-center justify-between p-3.5 rounded-xl border text-sm transition-all duration-200 ${t===r.name?"bg-cyan-300/10 text-cyan-300 border-cyan-300/20 shadow-xs":"bg-surface/20 text-secondary hover:text-primary hover:bg-surface/40 border-gridline/50"}`,children:[e.jsx("span",{className:"font-mono font-semibold",children:r.name}),t===r.name?e.jsx(b,{className:"w-4 h-4"}):e.jsx(y,{className:"w-4 h-4 text-muted-foreground"})]},r.name)),i.length===0&&e.jsxs("div",{className:"p-4 text-center text-xs text-muted-foreground italic border border-dashed border-gridline rounded-xl",children:['No decoders matching "',a,'"']})]})]}),e.jsx("div",{className:"lg:col-span-8",children:t?(()=>{const r=c.find(d=>d.name===t);return r?e.jsxs("div",{ref:s,className:"card-surface bg-surface/10 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold text-primary font-mono",children:r.name}),e.jsx("p",{className:"text-secondary text-sm mt-3 leading-relaxed",children:r.desc})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),"Signature"]}),e.jsx(n,{code:r.signature,language:"python",className:"!my-0 bg-void/70"})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(v,{className:"w-3.5 h-3.5"}),"Parameters"]}),e.jsx("div",{className:"overflow-x-auto border border-gridline rounded-xl",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse text-left text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 text-xs font-semibold uppercase tracking-wider",children:[e.jsx("th",{className:"p-3",children:"Name"}),e.jsx("th",{className:"p-3",children:"Type"}),e.jsx("th",{className:"p-3",children:"Default"}),e.jsx("th",{className:"p-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:r.parameters.map(d=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-mono font-semibold text-primary",children:d.name}),e.jsx("td",{className:"p-3 font-mono text-xs text-secondary",children:d.type}),e.jsx("td",{className:"p-3 font-mono text-xs text-cyan-300",children:d.default}),e.jsx("td",{className:"p-3 text-xs text-secondary leading-relaxed",children:d.desc})]},d.name))})]})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2",children:"Usage Example"}),e.jsx(n,{code:r.example,language:"python",filename:`${r.name.toLowerCase()}_usage.py`})]})]}):null})():e.jsx("div",{className:"h-full flex items-center justify-center border border-dashed border-gridline rounded-2xl p-12 text-center text-muted-foreground italic text-sm",children:"Select a decoder class from the sidebar to inspect parameters and example usage."})})]})]})})]})}export{R as default}; diff --git a/assets/TechnicalReference-BcuWSg0l.js b/assets/TechnicalReference-BcuWSg0l.js deleted file mode 100644 index cc0df46f..00000000 --- a/assets/TechnicalReference-BcuWSg0l.js +++ /dev/null @@ -1,30 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,C as n}from"./index-Bh9DBCb3.js";import{N as h}from"./NeuralReveal-D-EQoOl2.js";import{g as f}from"./vendor-gsap-a3sj5zmn.js";import{r as x,h as g,s as b,o as y,T as _,B as v}from"./vendor-ui-B0ssGG4c.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";function R(){const[a,l]=o.useState(""),[t,m]=o.useState("BlossomDecoder"),s=o.useRef(null),c=[{name:"BlossomDecoder",signature:"BlossomDecoder(dem: stim.DetectorErrorModel, *, adaptive_k: bool = True, timeout: Optional[float] = None)",desc:"Minimum-weight perfect matching (MWPM) decoder for CSS stabilizer codes. Uses an exact matching solver to pair syndrome checks.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"adaptive_k",type:"bool",default:"True",desc:"Enable Union-Find pre-filtering to compress graph"},{name:"timeout",type:"float",default:"None",desc:"Max seconds allowed to match a syndrome"}],example:`import qector_decoder_v3 as qd -decoder = qd.BlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"BeliefMatchingDecoder",signature:'BeliefMatchingDecoder(dem: stim.DetectorErrorModel, *, bp_iters: int = 30, max_paths: int = 10, bp_method: str = "product_sum")',desc:"Accuracy-oriented decoder. Uses Belief Propagation (BP) preprocessing to compute edge probabilities, and then runs matching on a reweighted Blossom graph. Use when accuracy matters more than latency.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"bp_iters",type:"int",default:"30",desc:"Max iterations for Belief Propagation"},{name:"max_paths",type:"int",default:"10",desc:"Max alternative paths for match reweighting"},{name:"bp_method",type:"str",default:'"product_sum"',desc:"BP update equation to resolve constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.BeliefMatchingDecoder(dem, bp_iters=30) -correction = decoder.decode(syndrome)`},{name:"BpOsdDecoder",signature:'BpOsdDecoder(dem: stim.DetectorErrorModel, *, osd_order: int = 40, osd_method: str = "osd_cs")',desc:"Belief Propagation + Ordered Statistics Decoding. A common approach for qLDPC codes, where matching graphs are undefined. Handles non-CSS stabilizer layouts.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"osd_order",type:"int",default:"40",desc:"OSD search order limit"},{name:"osd_method",type:"str",default:'"osd_cs"',desc:"OSD resolution method"}],example:`import qector_decoder_v3 as qd -decoder = qd.BpOsdDecoder(dem, osd_order=40) -correction = decoder.decode(syndrome)`},{name:"UnionFindDecoder",signature:"UnionFindDecoder(dem: stim.DetectorErrorModel, *, use_combined: bool = True)",desc:"Near-linear time approximate decoder. Resolves syndromes by cluster growth and path compression. Scaling is O(N), making it ideal for large distance offline simulations.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"use_combined",type:"bool",default:"True",desc:"Enable combined cluster growth constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.UnionFindDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"CPUBatchDecoder",signature:"CPUBatchDecoder(dem: stim.DetectorErrorModel, *, num_threads: int = 0)",desc:"Multi-threaded CPU batch decoder. Leverages Rayon parallelism across CPU cores to decode thousands of syndromes concurrently.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"num_threads",type:"int",default:"0",desc:"Number of worker threads (0 = auto-detect physical cores)"}],example:`import qector_decoder_v3 as qd -decoder = qd.CPUBatchDecoder(dem, num_threads=8) -corrections = decoder.decode_batch(syndromes_matrix)`},{name:"GpuBatchDecoder / CUDABatchDecoder / OpenCLBatchDecoder",signature:"CUDABatchDecoder(dem: stim.DetectorErrorModel, *, batch_size: int = 2048)",desc:"Native GPU batch decoders. Implements CUDA and OpenCL device pipelines to solve thousands of syndromes in parallel. Check availability with CUDABatchDecoder.is_available().",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"batch_size",type:"int",default:"2048",desc:"Parallel batch sizing in GPU VRAM"}],example:`import qector_decoder_v3 as qd -if qd.CUDABatchDecoder.is_available(): - decoder = qd.CUDABatchDecoder(dem, batch_size=4096) - corrections = decoder.decode_batch(syndromes_array)`},{name:"SparseBlossomDecoder",signature:"SparseBlossomDecoder(dem: stim.DetectorErrorModel)",desc:"Low-latency region growing blossom variant optimized for ring-like and sparse detector error graphs.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -decoder = qd.SparseBlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"get_decoder / clear_decoder_cache",signature:'get_decoder(dem_or_h, decoder_type: str = "auto", **kwargs)',desc:"Cached decoder factory for instantiating and caching decoders by error model hash to avoid redundant graph construction.",parameters:[{name:"dem_or_h",type:"Union[stim.DetectorErrorModel, np.ndarray]",default:"Required",desc:"Detector model or H matrix"},{name:"decoder_type",type:"str",default:'"auto"',desc:"Target decoder family name"}],example:`import qector_decoder_v3 as qd -decoder = qd.get_decoder(dem, decoder_type="blossom") -qd.clear_decoder_cache()`},{name:"decode_mmap / decode_with_diagnostics",signature:"decode_mmap(decoder, input_filepath: str, output_filepath: str)",desc:"Out-of-core memory-mapped file decoder for processing gigabyte-scale syndrome files on disk without loading entire matrices into RAM. Returns structured DecodeResult.",parameters:[{name:"decoder",type:"DecoderInstance",default:"Required",desc:"Initialized decoder instance"},{name:"input_filepath",type:"str",default:"Required",desc:"Path to binary syndrome file"},{name:"output_filepath",type:"str",default:"Required",desc:"Path to write binary correction results"}],example:`import qector_decoder_v3 as qd -res = qd.decode_mmap(decoder, "syndromes.bin", "corrections.bin") -print(res.shots_processed, res.latency_seconds)`},{name:"Workbench API",signature:"Workbench(config: Optional[dict] = None)",desc:"High-level orchestration and benchmarking engine for configuring decoding pipelines, running multi-decoder comparative sweeps, and exporting performance reports.",parameters:[{name:"config",type:"dict",default:"None",desc:"Workbench configuration dictionary"}],example:`import qector_decoder_v3 as qd -wb = qd.Workbench() -results = wb.benchmark(dem, shots=100000)`},{name:"stim_compat & sinter_compat",signature:"sinter_compat.qector_sinter_decoders()",desc:"Ecosystem integration helpers providing native compatibility with Stim circuits and Sinter benchmarking harnesses.",parameters:[{name:"sinter_decoders",type:"dict",default:"Required",desc:"Sinter compiled decoder mapping"}],example:`import sinter -from qector_decoder_v3.sinter_compat import qector_sinter_decoders -decoders = qector_sinter_decoders()`},{name:"license.verify_license_token",signature:"license.verify_license_token(token: str) -> bool",desc:"Offline Ed25519 cryptographic signature verification function for commercial evaluation and production license tokens.",parameters:[{name:"token",type:"str",default:"Required",desc:"Signed JWT/Ed25519 license token string"}],example:`from qector_decoder_v3.license import verify_license_token -is_valid = verify_license_token(token_str)`},{name:"HybridDecoder & HybridCascadeDecoder",signature:"HybridCascadeDecoder(dem: stim.DetectorErrorModel) # Feature-gated / source build",desc:"Experimental decoders combining fast Union-Find pre-filtering with exact Blossom fallback for ambiguous clusters. Note: HybridCascadeDecoder requires full-feature source build and may raise unavailable in standard pre-compiled wheels.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -# Research / full-feature build required -decoder = qd.HybridDecoder(dem)`},{name:"PredecodedDecoder & LookupTableDecoder",signature:"LookupTableDecoder(code_matrix: np.ndarray)",desc:"Research decoders for lookup-table fast matching on small stabilizer codes and wrapping pre-calculated decoding results for pipeline benchmarking.",parameters:[{name:"code_matrix",type:"np.ndarray",default:"Required",desc:"Parity check matrix"}],example:`import qector_decoder_v3 as qd -decoder = qd.LookupTableDecoder(H_matrix)`},{name:"ColourCodeDecoder, TwoStageDecoder & AmbiguityClusterDecoder",signature:"ColourCodeDecoder(dem: stim.DetectorErrorModel)",desc:"Research decoders: native colour-code decoding over undecomposed detector error models (color_code family), two-stage decoding pipelines, and ambiguity-cluster resolution.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"}],example:`import qector_decoder_v3 as qd -decoder = qd.ColourCodeDecoder(dem)`},{name:"GNNBeliefMatcher",signature:"GNNBeliefMatcher(dem: stim.DetectorErrorModel, model_path: str)",desc:"Research-stage graph neural network enhanced belief propagation module. Not validated for production use.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"},{name:"model_path",type:"str",default:"Required",desc:"Path to trained GNN weights file"}],example:`import qector_decoder_v3 as qd -matcher = qd.GNNBeliefMatcher(dem, "weights.pt")`}],i=c.filter(r=>r.name.toLowerCase().includes(a.toLowerCase())),p=r=>{m(t===r?null:r)};return o.useEffect(()=>{window.matchMedia("(prefers-reduced-motion: reduce)").matches||t&&s.current&&f.fromTo(s.current,{opacity:0,y:10},{opacity:1,y:0,duration:.3,ease:"power2.out"})},[t]),e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"Technical Reference · QECTOR",description:"API reference, decoder parameters, and technical documentation for QECTOR quantum error correction decoder."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"16 Decoder APIs · Stim DEM · Signatures Are Examples"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(h,{text:"Technical Reference",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"API overview for QECTOR's decoders. Signatures, defaults, and snippets below are illustrative examples; treat the installed package as the authoritative reference."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"relative mb-8 max-w-md mx-auto md:mx-0",children:[e.jsx("label",{htmlFor:"decoder-search",className:"sr-only",children:"Search decoders"}),e.jsx("input",{id:"decoder-search",type:"search",placeholder:"Search decoders...",value:a,onChange:r=>l(r.target.value),className:"w-full px-10 py-3 bg-surface/50 border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors"}),e.jsx(x,{className:"w-5 h-5 text-muted-foreground absolute left-3 top-3.5"})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-12 gap-8",children:[e.jsxs("div",{className:"lg:col-span-4 space-y-2",children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider px-2 mb-2 flex items-center gap-1.5",children:[e.jsx(g,{className:"w-3.5 h-3.5"}),"Decoder Classes"]}),e.jsxs("div",{className:"space-y-1",children:[i.map(r=>e.jsxs("button",{"aria-expanded":t===r.name,onClick:()=>p(r.name),className:`w-full flex items-center justify-between p-3.5 rounded-xl border text-sm transition-all duration-200 ${t===r.name?"bg-cyan-300/10 text-cyan-300 border-cyan-300/20 shadow-xs":"bg-surface/20 text-secondary hover:text-primary hover:bg-surface/40 border-gridline/50"}`,children:[e.jsx("span",{className:"font-mono font-semibold",children:r.name}),t===r.name?e.jsx(b,{className:"w-4 h-4"}):e.jsx(y,{className:"w-4 h-4 text-muted-foreground"})]},r.name)),i.length===0&&e.jsxs("div",{className:"p-4 text-center text-xs text-muted-foreground italic border border-dashed border-gridline rounded-xl",children:['No decoders matching "',a,'"']})]})]}),e.jsx("div",{className:"lg:col-span-8",children:t?(()=>{const r=c.find(d=>d.name===t);return r?e.jsxs("div",{ref:s,className:"card-surface bg-surface/10 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold text-primary font-mono",children:r.name}),e.jsx("p",{className:"text-secondary text-sm mt-3 leading-relaxed",children:r.desc})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),"Signature"]}),e.jsx(n,{code:r.signature,language:"python",className:"!my-0 bg-void/70"})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(v,{className:"w-3.5 h-3.5"}),"Parameters"]}),e.jsx("div",{className:"overflow-x-auto border border-gridline rounded-xl",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse text-left text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 text-xs font-semibold uppercase tracking-wider",children:[e.jsx("th",{className:"p-3",children:"Name"}),e.jsx("th",{className:"p-3",children:"Type"}),e.jsx("th",{className:"p-3",children:"Default"}),e.jsx("th",{className:"p-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:r.parameters.map(d=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-mono font-semibold text-primary",children:d.name}),e.jsx("td",{className:"p-3 font-mono text-xs text-secondary",children:d.type}),e.jsx("td",{className:"p-3 font-mono text-xs text-cyan-300",children:d.default}),e.jsx("td",{className:"p-3 text-xs text-secondary leading-relaxed",children:d.desc})]},d.name))})]})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2",children:"Usage Example"}),e.jsx(n,{code:r.example,language:"python",filename:`${r.name.toLowerCase()}_usage.py`})]})]}):null})():e.jsx("div",{className:"h-full flex items-center justify-center border border-dashed border-gridline rounded-2xl p-12 text-center text-muted-foreground italic text-sm",children:"Select a decoder class from the sidebar to inspect parameters and example usage."})})]})]})})]})}export{R as default}; diff --git a/assets/TechnicalReference-BgUx638a.js b/assets/TechnicalReference-BgUx638a.js deleted file mode 100644 index c63e787e..00000000 --- a/assets/TechnicalReference-BgUx638a.js +++ /dev/null @@ -1,30 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,C as n}from"./index-DlmjLVYe.js";import{N as h}from"./NeuralReveal-BflyZYSb.js";import{g as f}from"./vendor-gsap-a3sj5zmn.js";import{r as x,h as g,s as b,o as y,T as _,B as v}from"./vendor-ui-B0ssGG4c.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";function R(){const[a,l]=o.useState(""),[t,m]=o.useState("BlossomDecoder"),s=o.useRef(null),c=[{name:"BlossomDecoder",signature:"BlossomDecoder(dem: stim.DetectorErrorModel, *, adaptive_k: bool = True, timeout: Optional[float] = None)",desc:"Minimum-weight perfect matching (MWPM) decoder for CSS stabilizer codes. Uses an exact matching solver to pair syndrome checks.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"adaptive_k",type:"bool",default:"True",desc:"Enable Union-Find pre-filtering to compress graph"},{name:"timeout",type:"float",default:"None",desc:"Max seconds allowed to match a syndrome"}],example:`import qector_decoder_v3 as qd -decoder = qd.BlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"BeliefMatchingDecoder",signature:'BeliefMatchingDecoder(dem: stim.DetectorErrorModel, *, bp_iters: int = 30, max_paths: int = 10, bp_method: str = "product_sum")',desc:"Accuracy-oriented decoder. Uses Belief Propagation (BP) preprocessing to compute edge probabilities, and then runs matching on a reweighted Blossom graph. Use when accuracy matters more than latency.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"bp_iters",type:"int",default:"30",desc:"Max iterations for Belief Propagation"},{name:"max_paths",type:"int",default:"10",desc:"Max alternative paths for match reweighting"},{name:"bp_method",type:"str",default:'"product_sum"',desc:"BP update equation to resolve constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.BeliefMatchingDecoder(dem, bp_iters=30) -correction = decoder.decode(syndrome)`},{name:"BpOsdDecoder",signature:'BpOsdDecoder(dem: stim.DetectorErrorModel, *, osd_order: int = 40, osd_method: str = "osd_cs")',desc:"Belief Propagation + Ordered Statistics Decoding. A common approach for qLDPC codes, where matching graphs are undefined. Handles non-CSS stabilizer layouts.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"osd_order",type:"int",default:"40",desc:"OSD search order limit"},{name:"osd_method",type:"str",default:'"osd_cs"',desc:"OSD resolution method"}],example:`import qector_decoder_v3 as qd -decoder = qd.BpOsdDecoder(dem, osd_order=40) -correction = decoder.decode(syndrome)`},{name:"UnionFindDecoder",signature:"UnionFindDecoder(dem: stim.DetectorErrorModel, *, use_combined: bool = True)",desc:"Near-linear time approximate decoder. Resolves syndromes by cluster growth and path compression. Scaling is O(N), making it ideal for large distance offline simulations.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"use_combined",type:"bool",default:"True",desc:"Enable combined cluster growth constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.UnionFindDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"CPUBatchDecoder",signature:"CPUBatchDecoder(dem: stim.DetectorErrorModel, *, num_threads: int = 0)",desc:"Multi-threaded CPU batch decoder. Leverages Rayon parallelism across CPU cores to decode thousands of syndromes concurrently.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"num_threads",type:"int",default:"0",desc:"Number of worker threads (0 = auto-detect physical cores)"}],example:`import qector_decoder_v3 as qd -decoder = qd.CPUBatchDecoder(dem, num_threads=8) -corrections = decoder.decode_batch(syndromes_matrix)`},{name:"GpuBatchDecoder / CUDABatchDecoder / OpenCLBatchDecoder",signature:"CUDABatchDecoder(dem: stim.DetectorErrorModel, *, batch_size: int = 2048)",desc:"Native GPU batch decoders. Implements CUDA and OpenCL device pipelines to solve thousands of syndromes in parallel. Check availability with CUDABatchDecoder.is_available().",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"batch_size",type:"int",default:"2048",desc:"Parallel batch sizing in GPU VRAM"}],example:`import qector_decoder_v3 as qd -if qd.CUDABatchDecoder.is_available(): - decoder = qd.CUDABatchDecoder(dem, batch_size=4096) - corrections = decoder.decode_batch(syndromes_array)`},{name:"SparseBlossomDecoder",signature:"SparseBlossomDecoder(dem: stim.DetectorErrorModel)",desc:"Low-latency region growing blossom variant optimized for ring-like and sparse detector error graphs.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -decoder = qd.SparseBlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"get_decoder / clear_decoder_cache",signature:'get_decoder(dem_or_h, decoder_type: str = "auto", **kwargs)',desc:"Cached decoder factory for instantiating and caching decoders by error model hash to avoid redundant graph construction.",parameters:[{name:"dem_or_h",type:"Union[stim.DetectorErrorModel, np.ndarray]",default:"Required",desc:"Detector model or H matrix"},{name:"decoder_type",type:"str",default:'"auto"',desc:"Target decoder family name"}],example:`import qector_decoder_v3 as qd -decoder = qd.get_decoder(dem, decoder_type="blossom") -qd.clear_decoder_cache()`},{name:"decode_mmap / decode_with_diagnostics",signature:"decode_mmap(decoder, input_filepath: str, output_filepath: str)",desc:"Out-of-core memory-mapped file decoder for processing gigabyte-scale syndrome files on disk without loading entire matrices into RAM. Returns structured DecodeResult.",parameters:[{name:"decoder",type:"DecoderInstance",default:"Required",desc:"Initialized decoder instance"},{name:"input_filepath",type:"str",default:"Required",desc:"Path to binary syndrome file"},{name:"output_filepath",type:"str",default:"Required",desc:"Path to write binary correction results"}],example:`import qector_decoder_v3 as qd -res = qd.decode_mmap(decoder, "syndromes.bin", "corrections.bin") -print(res.shots_processed, res.latency_seconds)`},{name:"Workbench API",signature:"Workbench(config: Optional[dict] = None)",desc:"High-level orchestration and benchmarking engine for configuring decoding pipelines, running multi-decoder comparative sweeps, and exporting performance reports.",parameters:[{name:"config",type:"dict",default:"None",desc:"Workbench configuration dictionary"}],example:`import qector_decoder_v3 as qd -wb = qd.Workbench() -results = wb.benchmark(dem, shots=100000)`},{name:"stim_compat & sinter_compat",signature:"sinter_compat.qector_sinter_decoders()",desc:"Ecosystem integration helpers providing native compatibility with Stim circuits and Sinter benchmarking harnesses.",parameters:[{name:"sinter_decoders",type:"dict",default:"Required",desc:"Sinter compiled decoder mapping"}],example:`import sinter -from qector_decoder_v3.sinter_compat import qector_sinter_decoders -decoders = qector_sinter_decoders()`},{name:"license.verify_license_token",signature:"license.verify_license_token(token: str) -> bool",desc:"Offline Ed25519 cryptographic signature verification function for commercial evaluation and production license tokens.",parameters:[{name:"token",type:"str",default:"Required",desc:"Signed JWT/Ed25519 license token string"}],example:`from qector_decoder_v3.license import verify_license_token -is_valid = verify_license_token(token_str)`},{name:"HybridDecoder & HybridCascadeDecoder",signature:"HybridCascadeDecoder(dem: stim.DetectorErrorModel) # Feature-gated / source build",desc:"Experimental decoders combining fast Union-Find pre-filtering with exact Blossom fallback for ambiguous clusters. Note: HybridCascadeDecoder requires full-feature source build and may raise unavailable in standard pre-compiled wheels.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -# Research / full-feature build required -decoder = qd.HybridDecoder(dem)`},{name:"PredecodedDecoder & LookupTableDecoder",signature:"LookupTableDecoder(code_matrix: np.ndarray)",desc:"Research decoders for lookup-table fast matching on small stabilizer codes and wrapping pre-calculated decoding results for pipeline benchmarking.",parameters:[{name:"code_matrix",type:"np.ndarray",default:"Required",desc:"Parity check matrix"}],example:`import qector_decoder_v3 as qd -decoder = qd.LookupTableDecoder(H_matrix)`},{name:"ColourCodeDecoder, TwoStageDecoder & AmbiguityClusterDecoder",signature:"ColourCodeDecoder(dem: stim.DetectorErrorModel)",desc:"Research decoders: native colour-code decoding over undecomposed detector error models (color_code family), two-stage decoding pipelines, and ambiguity-cluster resolution.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"}],example:`import qector_decoder_v3 as qd -decoder = qd.ColourCodeDecoder(dem)`},{name:"GNNBeliefMatcher",signature:"GNNBeliefMatcher(dem: stim.DetectorErrorModel, model_path: str)",desc:"Research-stage graph neural network enhanced belief propagation module. Not validated for production use.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"},{name:"model_path",type:"str",default:"Required",desc:"Path to trained GNN weights file"}],example:`import qector_decoder_v3 as qd -matcher = qd.GNNBeliefMatcher(dem, "weights.pt")`}],i=c.filter(r=>r.name.toLowerCase().includes(a.toLowerCase())),p=r=>{m(t===r?null:r)};return o.useEffect(()=>{window.matchMedia("(prefers-reduced-motion: reduce)").matches||t&&s.current&&f.fromTo(s.current,{opacity:0,y:10},{opacity:1,y:0,duration:.3,ease:"power2.out"})},[t]),e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"Technical Reference · QECTOR",description:"API reference, decoder parameters, and technical documentation for QECTOR quantum error correction decoder."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"16 Decoder APIs · Stim DEM · Signatures Are Examples"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(h,{text:"Technical Reference",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"API overview for QECTOR's decoders. Signatures, defaults, and snippets below are illustrative examples; treat the installed package as the authoritative reference."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"relative mb-8 max-w-md mx-auto md:mx-0",children:[e.jsx("label",{htmlFor:"decoder-search",className:"sr-only",children:"Search decoders"}),e.jsx("input",{id:"decoder-search",type:"search",placeholder:"Search decoders...",value:a,onChange:r=>l(r.target.value),className:"w-full px-10 py-3 bg-surface/50 border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors"}),e.jsx(x,{className:"w-5 h-5 text-muted-foreground absolute left-3 top-3.5"})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-12 gap-8",children:[e.jsxs("div",{className:"lg:col-span-4 space-y-2",children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider px-2 mb-2 flex items-center gap-1.5",children:[e.jsx(g,{className:"w-3.5 h-3.5"}),"Decoder Classes"]}),e.jsxs("div",{className:"space-y-1",children:[i.map(r=>e.jsxs("button",{"aria-expanded":t===r.name,onClick:()=>p(r.name),className:`w-full flex items-center justify-between p-3.5 rounded-xl border text-sm transition-all duration-200 ${t===r.name?"bg-cyan-300/10 text-cyan-300 border-cyan-300/20 shadow-xs":"bg-surface/20 text-secondary hover:text-primary hover:bg-surface/40 border-gridline/50"}`,children:[e.jsx("span",{className:"font-mono font-semibold",children:r.name}),t===r.name?e.jsx(b,{className:"w-4 h-4"}):e.jsx(y,{className:"w-4 h-4 text-muted-foreground"})]},r.name)),i.length===0&&e.jsxs("div",{className:"p-4 text-center text-xs text-muted-foreground italic border border-dashed border-gridline rounded-xl",children:['No decoders matching "',a,'"']})]})]}),e.jsx("div",{className:"lg:col-span-8",children:t?(()=>{const r=c.find(d=>d.name===t);return r?e.jsxs("div",{ref:s,className:"card-surface bg-surface/10 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold text-primary font-mono",children:r.name}),e.jsx("p",{className:"text-secondary text-sm mt-3 leading-relaxed",children:r.desc})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),"Signature"]}),e.jsx(n,{code:r.signature,language:"python",className:"!my-0 bg-void/70"})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(v,{className:"w-3.5 h-3.5"}),"Parameters"]}),e.jsx("div",{className:"overflow-x-auto border border-gridline rounded-xl",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse text-left text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 text-xs font-semibold uppercase tracking-wider",children:[e.jsx("th",{className:"p-3",children:"Name"}),e.jsx("th",{className:"p-3",children:"Type"}),e.jsx("th",{className:"p-3",children:"Default"}),e.jsx("th",{className:"p-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:r.parameters.map(d=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-mono font-semibold text-primary",children:d.name}),e.jsx("td",{className:"p-3 font-mono text-xs text-secondary",children:d.type}),e.jsx("td",{className:"p-3 font-mono text-xs text-cyan-300",children:d.default}),e.jsx("td",{className:"p-3 text-xs text-secondary leading-relaxed",children:d.desc})]},d.name))})]})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2",children:"Usage Example"}),e.jsx(n,{code:r.example,language:"python",filename:`${r.name.toLowerCase()}_usage.py`})]})]}):null})():e.jsx("div",{className:"h-full flex items-center justify-center border border-dashed border-gridline rounded-2xl p-12 text-center text-muted-foreground italic text-sm",children:"Select a decoder class from the sidebar to inspect parameters and example usage."})})]})]})})]})}export{R as default}; diff --git a/assets/TechnicalReference-Bu46t5Vm.js b/assets/TechnicalReference-Bu46t5Vm.js deleted file mode 100644 index f29840b0..00000000 --- a/assets/TechnicalReference-Bu46t5Vm.js +++ /dev/null @@ -1,30 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,C as n}from"./index-DkYdPRY7.js";import{N as h}from"./NeuralReveal-BflyZYSb.js";import{g as f}from"./vendor-gsap-a3sj5zmn.js";import{r as x,h as g,s as b,o as y,T as _,B as v}from"./vendor-ui-B0ssGG4c.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";function R(){const[a,l]=o.useState(""),[t,m]=o.useState("BlossomDecoder"),s=o.useRef(null),c=[{name:"BlossomDecoder",signature:"BlossomDecoder(dem: stim.DetectorErrorModel, *, adaptive_k: bool = True, timeout: Optional[float] = None)",desc:"Minimum-weight perfect matching (MWPM) decoder for CSS stabilizer codes. Uses an exact matching solver to pair syndrome checks.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"adaptive_k",type:"bool",default:"True",desc:"Enable Union-Find pre-filtering to compress graph"},{name:"timeout",type:"float",default:"None",desc:"Max seconds allowed to match a syndrome"}],example:`import qector_decoder_v3 as qd -decoder = qd.BlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"BeliefMatchingDecoder",signature:'BeliefMatchingDecoder(dem: stim.DetectorErrorModel, *, bp_iters: int = 30, max_paths: int = 10, bp_method: str = "product_sum")',desc:"Accuracy-oriented decoder. Uses Belief Propagation (BP) preprocessing to compute edge probabilities, and then runs matching on a reweighted Blossom graph. Use when accuracy matters more than latency.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"bp_iters",type:"int",default:"30",desc:"Max iterations for Belief Propagation"},{name:"max_paths",type:"int",default:"10",desc:"Max alternative paths for match reweighting"},{name:"bp_method",type:"str",default:'"product_sum"',desc:"BP update equation to resolve constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.BeliefMatchingDecoder(dem, bp_iters=30) -correction = decoder.decode(syndrome)`},{name:"BpOsdDecoder",signature:'BpOsdDecoder(dem: stim.DetectorErrorModel, *, osd_order: int = 40, osd_method: str = "osd_cs")',desc:"Belief Propagation + Ordered Statistics Decoding. A common approach for qLDPC codes, where matching graphs are undefined. Handles non-CSS stabilizer layouts.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"osd_order",type:"int",default:"40",desc:"OSD search order limit"},{name:"osd_method",type:"str",default:'"osd_cs"',desc:"OSD resolution method"}],example:`import qector_decoder_v3 as qd -decoder = qd.BpOsdDecoder(dem, osd_order=40) -correction = decoder.decode(syndrome)`},{name:"UnionFindDecoder",signature:"UnionFindDecoder(dem: stim.DetectorErrorModel, *, use_combined: bool = True)",desc:"Near-linear time approximate decoder. Resolves syndromes by cluster growth and path compression. Scaling is O(N), making it ideal for large distance offline simulations.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"use_combined",type:"bool",default:"True",desc:"Enable combined cluster growth constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.UnionFindDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"CPUBatchDecoder",signature:"CPUBatchDecoder(dem: stim.DetectorErrorModel, *, num_threads: int = 0)",desc:"Multi-threaded CPU batch decoder. Leverages Rayon parallelism across CPU cores to decode thousands of syndromes concurrently.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"num_threads",type:"int",default:"0",desc:"Number of worker threads (0 = auto-detect physical cores)"}],example:`import qector_decoder_v3 as qd -decoder = qd.CPUBatchDecoder(dem, num_threads=8) -corrections = decoder.decode_batch(syndromes_matrix)`},{name:"GpuBatchDecoder / CUDABatchDecoder / OpenCLBatchDecoder",signature:"CUDABatchDecoder(dem: stim.DetectorErrorModel, *, batch_size: int = 2048)",desc:"Native GPU batch decoders. Implements CUDA and OpenCL device pipelines to solve thousands of syndromes in parallel. Check availability with CUDABatchDecoder.is_available().",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"batch_size",type:"int",default:"2048",desc:"Parallel batch sizing in GPU VRAM"}],example:`import qector_decoder_v3 as qd -if qd.CUDABatchDecoder.is_available(): - decoder = qd.CUDABatchDecoder(dem, batch_size=4096) - corrections = decoder.decode_batch(syndromes_array)`},{name:"SparseBlossomDecoder",signature:"SparseBlossomDecoder(dem: stim.DetectorErrorModel)",desc:"Low-latency region growing blossom variant optimized for ring-like and sparse detector error graphs.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -decoder = qd.SparseBlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"get_decoder / clear_decoder_cache",signature:'get_decoder(dem_or_h, decoder_type: str = "auto", **kwargs)',desc:"Cached decoder factory for instantiating and caching decoders by error model hash to avoid redundant graph construction.",parameters:[{name:"dem_or_h",type:"Union[stim.DetectorErrorModel, np.ndarray]",default:"Required",desc:"Detector model or H matrix"},{name:"decoder_type",type:"str",default:'"auto"',desc:"Target decoder family name"}],example:`import qector_decoder_v3 as qd -decoder = qd.get_decoder(dem, decoder_type="blossom") -qd.clear_decoder_cache()`},{name:"decode_mmap / decode_with_diagnostics",signature:"decode_mmap(decoder, input_filepath: str, output_filepath: str)",desc:"Out-of-core memory-mapped file decoder for processing gigabyte-scale syndrome files on disk without loading entire matrices into RAM. Returns structured DecodeResult.",parameters:[{name:"decoder",type:"DecoderInstance",default:"Required",desc:"Initialized decoder instance"},{name:"input_filepath",type:"str",default:"Required",desc:"Path to binary syndrome file"},{name:"output_filepath",type:"str",default:"Required",desc:"Path to write binary correction results"}],example:`import qector_decoder_v3 as qd -res = qd.decode_mmap(decoder, "syndromes.bin", "corrections.bin") -print(res.shots_processed, res.latency_seconds)`},{name:"Workbench API",signature:"Workbench(config: Optional[dict] = None)",desc:"High-level orchestration and benchmarking engine for configuring decoding pipelines, running multi-decoder comparative sweeps, and exporting performance reports.",parameters:[{name:"config",type:"dict",default:"None",desc:"Workbench configuration dictionary"}],example:`import qector_decoder_v3 as qd -wb = qd.Workbench() -results = wb.benchmark(dem, shots=100000)`},{name:"stim_compat & sinter_compat",signature:"sinter_compat.qector_sinter_decoders()",desc:"Ecosystem integration helpers providing native compatibility with Stim circuits and Sinter benchmarking harnesses.",parameters:[{name:"sinter_decoders",type:"dict",default:"Required",desc:"Sinter compiled decoder mapping"}],example:`import sinter -from qector_decoder_v3.sinter_compat import qector_sinter_decoders -decoders = qector_sinter_decoders()`},{name:"license.verify_license_token",signature:"license.verify_license_token(token: str) -> bool",desc:"Offline Ed25519 cryptographic signature verification function for commercial evaluation and production license tokens.",parameters:[{name:"token",type:"str",default:"Required",desc:"Signed JWT/Ed25519 license token string"}],example:`from qector_decoder_v3.license import verify_license_token -is_valid = verify_license_token(token_str)`},{name:"HybridDecoder & HybridCascadeDecoder",signature:"HybridCascadeDecoder(dem: stim.DetectorErrorModel) # Feature-gated / source build",desc:"Experimental decoders combining fast Union-Find pre-filtering with exact Blossom fallback for ambiguous clusters. Note: HybridCascadeDecoder requires full-feature source build and may raise unavailable in standard pre-compiled wheels.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -# Research / full-feature build required -decoder = qd.HybridDecoder(dem)`},{name:"PredecodedDecoder & LookupTableDecoder",signature:"LookupTableDecoder(code_matrix: np.ndarray)",desc:"Research decoders for lookup-table fast matching on small stabilizer codes and wrapping pre-calculated decoding results for pipeline benchmarking.",parameters:[{name:"code_matrix",type:"np.ndarray",default:"Required",desc:"Parity check matrix"}],example:`import qector_decoder_v3 as qd -decoder = qd.LookupTableDecoder(H_matrix)`},{name:"ColourCodeDecoder, TwoStageDecoder & AmbiguityClusterDecoder",signature:"ColourCodeDecoder(dem: stim.DetectorErrorModel)",desc:"Research decoders: native colour-code decoding over undecomposed detector error models (color_code family), two-stage decoding pipelines, and ambiguity-cluster resolution.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"}],example:`import qector_decoder_v3 as qd -decoder = qd.ColourCodeDecoder(dem)`},{name:"GNNBeliefMatcher",signature:"GNNBeliefMatcher(dem: stim.DetectorErrorModel, model_path: str)",desc:"Research-stage graph neural network enhanced belief propagation module. Not validated for production use.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"},{name:"model_path",type:"str",default:"Required",desc:"Path to trained GNN weights file"}],example:`import qector_decoder_v3 as qd -matcher = qd.GNNBeliefMatcher(dem, "weights.pt")`}],i=c.filter(r=>r.name.toLowerCase().includes(a.toLowerCase())),p=r=>{m(t===r?null:r)};return o.useEffect(()=>{window.matchMedia("(prefers-reduced-motion: reduce)").matches||t&&s.current&&f.fromTo(s.current,{opacity:0,y:10},{opacity:1,y:0,duration:.3,ease:"power2.out"})},[t]),e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"Technical Reference · QECTOR",description:"API reference, decoder parameters, and technical documentation for QECTOR quantum error correction decoder."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"16 Decoder APIs · Stim DEM · Signatures Are Examples"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(h,{text:"Technical Reference",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"API overview for QECTOR's decoders. Signatures, defaults, and snippets below are illustrative examples; treat the installed package as the authoritative reference."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"relative mb-8 max-w-md mx-auto md:mx-0",children:[e.jsx("label",{htmlFor:"decoder-search",className:"sr-only",children:"Search decoders"}),e.jsx("input",{id:"decoder-search",type:"search",placeholder:"Search decoders...",value:a,onChange:r=>l(r.target.value),className:"w-full px-10 py-3 bg-surface/50 border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors"}),e.jsx(x,{className:"w-5 h-5 text-muted-foreground absolute left-3 top-3.5"})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-12 gap-8",children:[e.jsxs("div",{className:"lg:col-span-4 space-y-2",children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider px-2 mb-2 flex items-center gap-1.5",children:[e.jsx(g,{className:"w-3.5 h-3.5"}),"Decoder Classes"]}),e.jsxs("div",{className:"space-y-1",children:[i.map(r=>e.jsxs("button",{"aria-expanded":t===r.name,onClick:()=>p(r.name),className:`w-full flex items-center justify-between p-3.5 rounded-xl border text-sm transition-all duration-200 ${t===r.name?"bg-cyan-300/10 text-cyan-300 border-cyan-300/20 shadow-xs":"bg-surface/20 text-secondary hover:text-primary hover:bg-surface/40 border-gridline/50"}`,children:[e.jsx("span",{className:"font-mono font-semibold",children:r.name}),t===r.name?e.jsx(b,{className:"w-4 h-4"}):e.jsx(y,{className:"w-4 h-4 text-muted-foreground"})]},r.name)),i.length===0&&e.jsxs("div",{className:"p-4 text-center text-xs text-muted-foreground italic border border-dashed border-gridline rounded-xl",children:['No decoders matching "',a,'"']})]})]}),e.jsx("div",{className:"lg:col-span-8",children:t?(()=>{const r=c.find(d=>d.name===t);return r?e.jsxs("div",{ref:s,className:"card-surface bg-surface/10 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold text-primary font-mono",children:r.name}),e.jsx("p",{className:"text-secondary text-sm mt-3 leading-relaxed",children:r.desc})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),"Signature"]}),e.jsx(n,{code:r.signature,language:"python",className:"!my-0 bg-void/70"})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(v,{className:"w-3.5 h-3.5"}),"Parameters"]}),e.jsx("div",{className:"overflow-x-auto border border-gridline rounded-xl",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse text-left text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 text-xs font-semibold uppercase tracking-wider",children:[e.jsx("th",{className:"p-3",children:"Name"}),e.jsx("th",{className:"p-3",children:"Type"}),e.jsx("th",{className:"p-3",children:"Default"}),e.jsx("th",{className:"p-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:r.parameters.map(d=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-mono font-semibold text-primary",children:d.name}),e.jsx("td",{className:"p-3 font-mono text-xs text-secondary",children:d.type}),e.jsx("td",{className:"p-3 font-mono text-xs text-cyan-300",children:d.default}),e.jsx("td",{className:"p-3 text-xs text-secondary leading-relaxed",children:d.desc})]},d.name))})]})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2",children:"Usage Example"}),e.jsx(n,{code:r.example,language:"python",filename:`${r.name.toLowerCase()}_usage.py`})]})]}):null})():e.jsx("div",{className:"h-full flex items-center justify-center border border-dashed border-gridline rounded-2xl p-12 text-center text-muted-foreground italic text-sm",children:"Select a decoder class from the sidebar to inspect parameters and example usage."})})]})]})})]})}export{R as default}; diff --git a/assets/TechnicalReference-C9HpEUdH.js b/assets/TechnicalReference-C9HpEUdH.js deleted file mode 100644 index 5d6ded99..00000000 --- a/assets/TechnicalReference-C9HpEUdH.js +++ /dev/null @@ -1,30 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,C as n}from"./index-BcbVjARk.js";import{N as h}from"./NeuralReveal-BflyZYSb.js";import{g as f}from"./vendor-gsap-a3sj5zmn.js";import{r as x,h as g,s as b,o as y,T as _,B as v}from"./vendor-ui-B0ssGG4c.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";function R(){const[a,l]=o.useState(""),[t,m]=o.useState("BlossomDecoder"),s=o.useRef(null),c=[{name:"BlossomDecoder",signature:"BlossomDecoder(dem: stim.DetectorErrorModel, *, adaptive_k: bool = True, timeout: Optional[float] = None)",desc:"Minimum-weight perfect matching (MWPM) decoder for CSS stabilizer codes. Uses an exact matching solver to pair syndrome checks.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"adaptive_k",type:"bool",default:"True",desc:"Enable Union-Find pre-filtering to compress graph"},{name:"timeout",type:"float",default:"None",desc:"Max seconds allowed to match a syndrome"}],example:`import qector_decoder_v3 as qd -decoder = qd.BlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"BeliefMatchingDecoder",signature:'BeliefMatchingDecoder(dem: stim.DetectorErrorModel, *, bp_iters: int = 30, max_paths: int = 10, bp_method: str = "product_sum")',desc:"Accuracy-oriented decoder. Uses Belief Propagation (BP) preprocessing to compute edge probabilities, and then runs matching on a reweighted Blossom graph. Use when accuracy matters more than latency.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"bp_iters",type:"int",default:"30",desc:"Max iterations for Belief Propagation"},{name:"max_paths",type:"int",default:"10",desc:"Max alternative paths for match reweighting"},{name:"bp_method",type:"str",default:'"product_sum"',desc:"BP update equation to resolve constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.BeliefMatchingDecoder(dem, bp_iters=30) -correction = decoder.decode(syndrome)`},{name:"BpOsdDecoder",signature:'BpOsdDecoder(dem: stim.DetectorErrorModel, *, osd_order: int = 40, osd_method: str = "osd_cs")',desc:"Belief Propagation + Ordered Statistics Decoding. A common approach for qLDPC codes, where matching graphs are undefined. Handles non-CSS stabilizer layouts.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"osd_order",type:"int",default:"40",desc:"OSD search order limit"},{name:"osd_method",type:"str",default:'"osd_cs"',desc:"OSD resolution method"}],example:`import qector_decoder_v3 as qd -decoder = qd.BpOsdDecoder(dem, osd_order=40) -correction = decoder.decode(syndrome)`},{name:"UnionFindDecoder",signature:"UnionFindDecoder(dem: stim.DetectorErrorModel, *, use_combined: bool = True)",desc:"Near-linear time approximate decoder. Resolves syndromes by cluster growth and path compression. Scaling is O(N), making it ideal for large distance offline simulations.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"use_combined",type:"bool",default:"True",desc:"Enable combined cluster growth constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.UnionFindDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"CPUBatchDecoder",signature:"CPUBatchDecoder(dem: stim.DetectorErrorModel, *, num_threads: int = 0)",desc:"Multi-threaded CPU batch decoder. Leverages Rayon parallelism across CPU cores to decode thousands of syndromes concurrently.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"num_threads",type:"int",default:"0",desc:"Number of worker threads (0 = auto-detect physical cores)"}],example:`import qector_decoder_v3 as qd -decoder = qd.CPUBatchDecoder(dem, num_threads=8) -corrections = decoder.decode_batch(syndromes_matrix)`},{name:"GpuBatchDecoder / CUDABatchDecoder / OpenCLBatchDecoder",signature:"CUDABatchDecoder(dem: stim.DetectorErrorModel, *, batch_size: int = 2048)",desc:"Native GPU batch decoders. Implements CUDA and OpenCL device pipelines to solve thousands of syndromes in parallel. Check availability with CUDABatchDecoder.is_available().",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"batch_size",type:"int",default:"2048",desc:"Parallel batch sizing in GPU VRAM"}],example:`import qector_decoder_v3 as qd -if qd.CUDABatchDecoder.is_available(): - decoder = qd.CUDABatchDecoder(dem, batch_size=4096) - corrections = decoder.decode_batch(syndromes_array)`},{name:"SparseBlossomDecoder",signature:"SparseBlossomDecoder(dem: stim.DetectorErrorModel)",desc:"Low-latency region growing blossom variant optimized for ring-like and sparse detector error graphs.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -decoder = qd.SparseBlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"get_decoder / clear_decoder_cache",signature:'get_decoder(dem_or_h, decoder_type: str = "auto", **kwargs)',desc:"Cached decoder factory for instantiating and caching decoders by error model hash to avoid redundant graph construction.",parameters:[{name:"dem_or_h",type:"Union[stim.DetectorErrorModel, np.ndarray]",default:"Required",desc:"Detector model or H matrix"},{name:"decoder_type",type:"str",default:'"auto"',desc:"Target decoder family name"}],example:`import qector_decoder_v3 as qd -decoder = qd.get_decoder(dem, decoder_type="blossom") -qd.clear_decoder_cache()`},{name:"decode_mmap / decode_with_diagnostics",signature:"decode_mmap(decoder, input_filepath: str, output_filepath: str)",desc:"Out-of-core memory-mapped file decoder for processing gigabyte-scale syndrome files on disk without loading entire matrices into RAM. Returns structured DecodeResult.",parameters:[{name:"decoder",type:"DecoderInstance",default:"Required",desc:"Initialized decoder instance"},{name:"input_filepath",type:"str",default:"Required",desc:"Path to binary syndrome file"},{name:"output_filepath",type:"str",default:"Required",desc:"Path to write binary correction results"}],example:`import qector_decoder_v3 as qd -res = qd.decode_mmap(decoder, "syndromes.bin", "corrections.bin") -print(res.shots_processed, res.latency_seconds)`},{name:"Workbench API",signature:"Workbench(config: Optional[dict] = None)",desc:"High-level orchestration and benchmarking engine for configuring decoding pipelines, running multi-decoder comparative sweeps, and exporting performance reports.",parameters:[{name:"config",type:"dict",default:"None",desc:"Workbench configuration dictionary"}],example:`import qector_decoder_v3 as qd -wb = qd.Workbench() -results = wb.benchmark(dem, shots=100000)`},{name:"stim_compat & sinter_compat",signature:"sinter_compat.qector_sinter_decoders()",desc:"Ecosystem integration helpers providing native compatibility with Stim circuits and Sinter benchmarking harnesses.",parameters:[{name:"sinter_decoders",type:"dict",default:"Required",desc:"Sinter compiled decoder mapping"}],example:`import sinter -from qector_decoder_v3.sinter_compat import qector_sinter_decoders -decoders = qector_sinter_decoders()`},{name:"license.verify_license_token",signature:"license.verify_license_token(token: str) -> bool",desc:"Offline Ed25519 cryptographic signature verification function for commercial evaluation and production license tokens.",parameters:[{name:"token",type:"str",default:"Required",desc:"Signed JWT/Ed25519 license token string"}],example:`from qector_decoder_v3.license import verify_license_token -is_valid = verify_license_token(token_str)`},{name:"HybridDecoder & HybridCascadeDecoder",signature:"HybridCascadeDecoder(dem: stim.DetectorErrorModel) # Feature-gated / source build",desc:"Experimental decoders combining fast Union-Find pre-filtering with exact Blossom fallback for ambiguous clusters. Note: HybridCascadeDecoder requires full-feature source build and may raise unavailable in standard pre-compiled wheels.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -# Research / full-feature build required -decoder = qd.HybridDecoder(dem)`},{name:"PredecodedDecoder & LookupTableDecoder",signature:"LookupTableDecoder(code_matrix: np.ndarray)",desc:"Research decoders for lookup-table fast matching on small stabilizer codes and wrapping pre-calculated decoding results for pipeline benchmarking.",parameters:[{name:"code_matrix",type:"np.ndarray",default:"Required",desc:"Parity check matrix"}],example:`import qector_decoder_v3 as qd -decoder = qd.LookupTableDecoder(H_matrix)`},{name:"ColourCodeDecoder, TwoStageDecoder & AmbiguityClusterDecoder",signature:"ColourCodeDecoder(dem: stim.DetectorErrorModel)",desc:"Research decoders: native colour-code decoding over undecomposed detector error models (color_code family), two-stage decoding pipelines, and ambiguity-cluster resolution.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"}],example:`import qector_decoder_v3 as qd -decoder = qd.ColourCodeDecoder(dem)`},{name:"GNNBeliefMatcher",signature:"GNNBeliefMatcher(dem: stim.DetectorErrorModel, model_path: str)",desc:"Research-stage graph neural network enhanced belief propagation module. Not validated for production use.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"},{name:"model_path",type:"str",default:"Required",desc:"Path to trained GNN weights file"}],example:`import qector_decoder_v3 as qd -matcher = qd.GNNBeliefMatcher(dem, "weights.pt")`}],i=c.filter(r=>r.name.toLowerCase().includes(a.toLowerCase())),p=r=>{m(t===r?null:r)};return o.useEffect(()=>{window.matchMedia("(prefers-reduced-motion: reduce)").matches||t&&s.current&&f.fromTo(s.current,{opacity:0,y:10},{opacity:1,y:0,duration:.3,ease:"power2.out"})},[t]),e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"Technical Reference · QECTOR",description:"API reference, decoder parameters, and technical documentation for QECTOR quantum error correction decoder."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"16 Decoder APIs · Stim DEM · Signatures Are Examples"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(h,{text:"Technical Reference",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"API overview for QECTOR's decoders. Signatures, defaults, and snippets below are illustrative examples; treat the installed package as the authoritative reference."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"relative mb-8 max-w-md mx-auto md:mx-0",children:[e.jsx("label",{htmlFor:"decoder-search",className:"sr-only",children:"Search decoders"}),e.jsx("input",{id:"decoder-search",type:"search",placeholder:"Search decoders...",value:a,onChange:r=>l(r.target.value),className:"w-full px-10 py-3 bg-surface/50 border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors"}),e.jsx(x,{className:"w-5 h-5 text-muted-foreground absolute left-3 top-3.5"})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-12 gap-8",children:[e.jsxs("div",{className:"lg:col-span-4 space-y-2",children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider px-2 mb-2 flex items-center gap-1.5",children:[e.jsx(g,{className:"w-3.5 h-3.5"}),"Decoder Classes"]}),e.jsxs("div",{className:"space-y-1",children:[i.map(r=>e.jsxs("button",{"aria-expanded":t===r.name,onClick:()=>p(r.name),className:`w-full flex items-center justify-between p-3.5 rounded-xl border text-sm transition-all duration-200 ${t===r.name?"bg-cyan-300/10 text-cyan-300 border-cyan-300/20 shadow-xs":"bg-surface/20 text-secondary hover:text-primary hover:bg-surface/40 border-gridline/50"}`,children:[e.jsx("span",{className:"font-mono font-semibold",children:r.name}),t===r.name?e.jsx(b,{className:"w-4 h-4"}):e.jsx(y,{className:"w-4 h-4 text-muted-foreground"})]},r.name)),i.length===0&&e.jsxs("div",{className:"p-4 text-center text-xs text-muted-foreground italic border border-dashed border-gridline rounded-xl",children:['No decoders matching "',a,'"']})]})]}),e.jsx("div",{className:"lg:col-span-8",children:t?(()=>{const r=c.find(d=>d.name===t);return r?e.jsxs("div",{ref:s,className:"card-surface bg-surface/10 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold text-primary font-mono",children:r.name}),e.jsx("p",{className:"text-secondary text-sm mt-3 leading-relaxed",children:r.desc})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),"Signature"]}),e.jsx(n,{code:r.signature,language:"python",className:"!my-0 bg-void/70"})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(v,{className:"w-3.5 h-3.5"}),"Parameters"]}),e.jsx("div",{className:"overflow-x-auto border border-gridline rounded-xl",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse text-left text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 text-xs font-semibold uppercase tracking-wider",children:[e.jsx("th",{className:"p-3",children:"Name"}),e.jsx("th",{className:"p-3",children:"Type"}),e.jsx("th",{className:"p-3",children:"Default"}),e.jsx("th",{className:"p-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:r.parameters.map(d=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-mono font-semibold text-primary",children:d.name}),e.jsx("td",{className:"p-3 font-mono text-xs text-secondary",children:d.type}),e.jsx("td",{className:"p-3 font-mono text-xs text-cyan-300",children:d.default}),e.jsx("td",{className:"p-3 text-xs text-secondary leading-relaxed",children:d.desc})]},d.name))})]})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2",children:"Usage Example"}),e.jsx(n,{code:r.example,language:"python",filename:`${r.name.toLowerCase()}_usage.py`})]})]}):null})():e.jsx("div",{className:"h-full flex items-center justify-center border border-dashed border-gridline rounded-2xl p-12 text-center text-muted-foreground italic text-sm",children:"Select a decoder class from the sidebar to inspect parameters and example usage."})})]})]})})]})}export{R as default}; diff --git a/assets/TechnicalReference-CBJ6Ke79.js b/assets/TechnicalReference-CBJ6Ke79.js deleted file mode 100644 index f7a7f860..00000000 --- a/assets/TechnicalReference-CBJ6Ke79.js +++ /dev/null @@ -1,30 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,C as n}from"./index-BN-vOeL2.js";import{N as h}from"./NeuralReveal-BflyZYSb.js";import{g as f}from"./vendor-gsap-a3sj5zmn.js";import{r as x,h as g,s as b,o as y,T as _,B as v}from"./vendor-ui-B0ssGG4c.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";function R(){const[a,l]=o.useState(""),[t,m]=o.useState("BlossomDecoder"),s=o.useRef(null),c=[{name:"BlossomDecoder",signature:"BlossomDecoder(dem: stim.DetectorErrorModel, *, adaptive_k: bool = True, timeout: Optional[float] = None)",desc:"Minimum-weight perfect matching (MWPM) decoder for CSS stabilizer codes. Uses an exact matching solver to pair syndrome checks.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"adaptive_k",type:"bool",default:"True",desc:"Enable Union-Find pre-filtering to compress graph"},{name:"timeout",type:"float",default:"None",desc:"Max seconds allowed to match a syndrome"}],example:`import qector_decoder_v3 as qd -decoder = qd.BlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"BeliefMatchingDecoder",signature:'BeliefMatchingDecoder(dem: stim.DetectorErrorModel, *, bp_iters: int = 30, max_paths: int = 10, bp_method: str = "product_sum")',desc:"Accuracy-oriented decoder. Uses Belief Propagation (BP) preprocessing to compute edge probabilities, and then runs matching on a reweighted Blossom graph. Use when accuracy matters more than latency.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"bp_iters",type:"int",default:"30",desc:"Max iterations for Belief Propagation"},{name:"max_paths",type:"int",default:"10",desc:"Max alternative paths for match reweighting"},{name:"bp_method",type:"str",default:'"product_sum"',desc:"BP update equation to resolve constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.BeliefMatchingDecoder(dem, bp_iters=30) -correction = decoder.decode(syndrome)`},{name:"BpOsdDecoder",signature:'BpOsdDecoder(dem: stim.DetectorErrorModel, *, osd_order: int = 40, osd_method: str = "osd_cs")',desc:"Belief Propagation + Ordered Statistics Decoding. A common approach for qLDPC codes, where matching graphs are undefined. Handles non-CSS stabilizer layouts.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"osd_order",type:"int",default:"40",desc:"OSD search order limit"},{name:"osd_method",type:"str",default:'"osd_cs"',desc:"OSD resolution method"}],example:`import qector_decoder_v3 as qd -decoder = qd.BpOsdDecoder(dem, osd_order=40) -correction = decoder.decode(syndrome)`},{name:"UnionFindDecoder",signature:"UnionFindDecoder(dem: stim.DetectorErrorModel, *, use_combined: bool = True)",desc:"Near-linear time approximate decoder. Resolves syndromes by cluster growth and path compression. Scaling is O(N), making it ideal for large distance offline simulations.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"use_combined",type:"bool",default:"True",desc:"Enable combined cluster growth constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.UnionFindDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"CPUBatchDecoder",signature:"CPUBatchDecoder(dem: stim.DetectorErrorModel, *, num_threads: int = 0)",desc:"Multi-threaded CPU batch decoder. Leverages Rayon parallelism across CPU cores to decode thousands of syndromes concurrently.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"num_threads",type:"int",default:"0",desc:"Number of worker threads (0 = auto-detect physical cores)"}],example:`import qector_decoder_v3 as qd -decoder = qd.CPUBatchDecoder(dem, num_threads=8) -corrections = decoder.decode_batch(syndromes_matrix)`},{name:"GpuBatchDecoder / CUDABatchDecoder / OpenCLBatchDecoder",signature:"CUDABatchDecoder(dem: stim.DetectorErrorModel, *, batch_size: int = 2048)",desc:"Native GPU batch decoders. Implements CUDA and OpenCL device pipelines to solve thousands of syndromes in parallel. Check availability with CUDABatchDecoder.is_available().",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"batch_size",type:"int",default:"2048",desc:"Parallel batch sizing in GPU VRAM"}],example:`import qector_decoder_v3 as qd -if qd.CUDABatchDecoder.is_available(): - decoder = qd.CUDABatchDecoder(dem, batch_size=4096) - corrections = decoder.decode_batch(syndromes_array)`},{name:"SparseBlossomDecoder",signature:"SparseBlossomDecoder(dem: stim.DetectorErrorModel)",desc:"Low-latency region growing blossom variant optimized for ring-like and sparse detector error graphs.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -decoder = qd.SparseBlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"get_decoder / clear_decoder_cache",signature:'get_decoder(dem_or_h, decoder_type: str = "auto", **kwargs)',desc:"Cached decoder factory for instantiating and caching decoders by error model hash to avoid redundant graph construction.",parameters:[{name:"dem_or_h",type:"Union[stim.DetectorErrorModel, np.ndarray]",default:"Required",desc:"Detector model or H matrix"},{name:"decoder_type",type:"str",default:'"auto"',desc:"Target decoder family name"}],example:`import qector_decoder_v3 as qd -decoder = qd.get_decoder(dem, decoder_type="blossom") -qd.clear_decoder_cache()`},{name:"decode_mmap / decode_with_diagnostics",signature:"decode_mmap(decoder, input_filepath: str, output_filepath: str)",desc:"Out-of-core memory-mapped file decoder for processing gigabyte-scale syndrome files on disk without loading entire matrices into RAM. Returns structured DecodeResult.",parameters:[{name:"decoder",type:"DecoderInstance",default:"Required",desc:"Initialized decoder instance"},{name:"input_filepath",type:"str",default:"Required",desc:"Path to binary syndrome file"},{name:"output_filepath",type:"str",default:"Required",desc:"Path to write binary correction results"}],example:`import qector_decoder_v3 as qd -res = qd.decode_mmap(decoder, "syndromes.bin", "corrections.bin") -print(res.shots_processed, res.latency_seconds)`},{name:"Workbench API",signature:"Workbench(config: Optional[dict] = None)",desc:"High-level orchestration and benchmarking engine for configuring decoding pipelines, running multi-decoder comparative sweeps, and exporting performance reports.",parameters:[{name:"config",type:"dict",default:"None",desc:"Workbench configuration dictionary"}],example:`import qector_decoder_v3 as qd -wb = qd.Workbench() -results = wb.benchmark(dem, shots=100000)`},{name:"stim_compat & sinter_compat",signature:"sinter_compat.qector_sinter_decoders()",desc:"Ecosystem integration helpers providing native compatibility with Stim circuits and Sinter benchmarking harnesses.",parameters:[{name:"sinter_decoders",type:"dict",default:"Required",desc:"Sinter compiled decoder mapping"}],example:`import sinter -from qector_decoder_v3.sinter_compat import qector_sinter_decoders -decoders = qector_sinter_decoders()`},{name:"license.verify_license_token",signature:"license.verify_license_token(token: str) -> bool",desc:"Offline Ed25519 cryptographic signature verification function for commercial evaluation and production license tokens.",parameters:[{name:"token",type:"str",default:"Required",desc:"Signed JWT/Ed25519 license token string"}],example:`from qector_decoder_v3.license import verify_license_token -is_valid = verify_license_token(token_str)`},{name:"HybridDecoder & HybridCascadeDecoder",signature:"HybridCascadeDecoder(dem: stim.DetectorErrorModel) # Feature-gated / source build",desc:"Experimental decoders combining fast Union-Find pre-filtering with exact Blossom fallback for ambiguous clusters. Note: HybridCascadeDecoder requires full-feature source build and may raise unavailable in standard pre-compiled wheels.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -# Research / full-feature build required -decoder = qd.HybridDecoder(dem)`},{name:"PredecodedDecoder & LookupTableDecoder",signature:"LookupTableDecoder(code_matrix: np.ndarray)",desc:"Research decoders for lookup-table fast matching on small stabilizer codes and wrapping pre-calculated decoding results for pipeline benchmarking.",parameters:[{name:"code_matrix",type:"np.ndarray",default:"Required",desc:"Parity check matrix"}],example:`import qector_decoder_v3 as qd -decoder = qd.LookupTableDecoder(H_matrix)`},{name:"ColourCodeDecoder, TwoStageDecoder & AmbiguityClusterDecoder",signature:"ColourCodeDecoder(dem: stim.DetectorErrorModel)",desc:"Research decoders: native colour-code decoding over undecomposed detector error models (color_code family), two-stage decoding pipelines, and ambiguity-cluster resolution.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"}],example:`import qector_decoder_v3 as qd -decoder = qd.ColourCodeDecoder(dem)`},{name:"GNNBeliefMatcher",signature:"GNNBeliefMatcher(dem: stim.DetectorErrorModel, model_path: str)",desc:"Research-stage graph neural network enhanced belief propagation module. Not validated for production use.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"},{name:"model_path",type:"str",default:"Required",desc:"Path to trained GNN weights file"}],example:`import qector_decoder_v3 as qd -matcher = qd.GNNBeliefMatcher(dem, "weights.pt")`}],i=c.filter(r=>r.name.toLowerCase().includes(a.toLowerCase())),p=r=>{m(t===r?null:r)};return o.useEffect(()=>{window.matchMedia("(prefers-reduced-motion: reduce)").matches||t&&s.current&&f.fromTo(s.current,{opacity:0,y:10},{opacity:1,y:0,duration:.3,ease:"power2.out"})},[t]),e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"Technical Reference · QECTOR",description:"API reference, decoder parameters, and technical documentation for QECTOR quantum error correction decoder."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"16 Decoder APIs · Stim DEM · Signatures Are Examples"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(h,{text:"Technical Reference",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"API overview for QECTOR's decoders. Signatures, defaults, and snippets below are illustrative examples; treat the installed package as the authoritative reference."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"relative mb-8 max-w-md mx-auto md:mx-0",children:[e.jsx("label",{htmlFor:"decoder-search",className:"sr-only",children:"Search decoders"}),e.jsx("input",{id:"decoder-search",type:"search",placeholder:"Search decoders...",value:a,onChange:r=>l(r.target.value),className:"w-full px-10 py-3 bg-surface/50 border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors"}),e.jsx(x,{className:"w-5 h-5 text-muted-foreground absolute left-3 top-3.5"})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-12 gap-8",children:[e.jsxs("div",{className:"lg:col-span-4 space-y-2",children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider px-2 mb-2 flex items-center gap-1.5",children:[e.jsx(g,{className:"w-3.5 h-3.5"}),"Decoder Classes"]}),e.jsxs("div",{className:"space-y-1",children:[i.map(r=>e.jsxs("button",{"aria-expanded":t===r.name,onClick:()=>p(r.name),className:`w-full flex items-center justify-between p-3.5 rounded-xl border text-sm transition-all duration-200 ${t===r.name?"bg-cyan-300/10 text-cyan-300 border-cyan-300/20 shadow-xs":"bg-surface/20 text-secondary hover:text-primary hover:bg-surface/40 border-gridline/50"}`,children:[e.jsx("span",{className:"font-mono font-semibold",children:r.name}),t===r.name?e.jsx(b,{className:"w-4 h-4"}):e.jsx(y,{className:"w-4 h-4 text-muted-foreground"})]},r.name)),i.length===0&&e.jsxs("div",{className:"p-4 text-center text-xs text-muted-foreground italic border border-dashed border-gridline rounded-xl",children:['No decoders matching "',a,'"']})]})]}),e.jsx("div",{className:"lg:col-span-8",children:t?(()=>{const r=c.find(d=>d.name===t);return r?e.jsxs("div",{ref:s,className:"card-surface bg-surface/10 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold text-primary font-mono",children:r.name}),e.jsx("p",{className:"text-secondary text-sm mt-3 leading-relaxed",children:r.desc})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),"Signature"]}),e.jsx(n,{code:r.signature,language:"python",className:"!my-0 bg-void/70"})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(v,{className:"w-3.5 h-3.5"}),"Parameters"]}),e.jsx("div",{className:"overflow-x-auto border border-gridline rounded-xl",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse text-left text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 text-xs font-semibold uppercase tracking-wider",children:[e.jsx("th",{className:"p-3",children:"Name"}),e.jsx("th",{className:"p-3",children:"Type"}),e.jsx("th",{className:"p-3",children:"Default"}),e.jsx("th",{className:"p-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:r.parameters.map(d=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-mono font-semibold text-primary",children:d.name}),e.jsx("td",{className:"p-3 font-mono text-xs text-secondary",children:d.type}),e.jsx("td",{className:"p-3 font-mono text-xs text-cyan-300",children:d.default}),e.jsx("td",{className:"p-3 text-xs text-secondary leading-relaxed",children:d.desc})]},d.name))})]})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2",children:"Usage Example"}),e.jsx(n,{code:r.example,language:"python",filename:`${r.name.toLowerCase()}_usage.py`})]})]}):null})():e.jsx("div",{className:"h-full flex items-center justify-center border border-dashed border-gridline rounded-2xl p-12 text-center text-muted-foreground italic text-sm",children:"Select a decoder class from the sidebar to inspect parameters and example usage."})})]})]})})]})}export{R as default}; diff --git a/assets/TechnicalReference-CGYLPxss.js b/assets/TechnicalReference-CGYLPxss.js deleted file mode 100644 index 59be61dc..00000000 --- a/assets/TechnicalReference-CGYLPxss.js +++ /dev/null @@ -1,30 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,C as n}from"./index-BUYYSLdX.js";import{N as h}from"./NeuralReveal-BflyZYSb.js";import{g as f}from"./vendor-gsap-a3sj5zmn.js";import{r as x,h as g,s as b,o as y,T as _,B as v}from"./vendor-ui-B0ssGG4c.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";function R(){const[a,l]=o.useState(""),[t,m]=o.useState("BlossomDecoder"),s=o.useRef(null),c=[{name:"BlossomDecoder",signature:"BlossomDecoder(dem: stim.DetectorErrorModel, *, adaptive_k: bool = True, timeout: Optional[float] = None)",desc:"Minimum-weight perfect matching (MWPM) decoder for CSS stabilizer codes. Uses an exact matching solver to pair syndrome checks.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"adaptive_k",type:"bool",default:"True",desc:"Enable Union-Find pre-filtering to compress graph"},{name:"timeout",type:"float",default:"None",desc:"Max seconds allowed to match a syndrome"}],example:`import qector_decoder_v3 as qd -decoder = qd.BlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"BeliefMatchingDecoder",signature:'BeliefMatchingDecoder(dem: stim.DetectorErrorModel, *, bp_iters: int = 30, max_paths: int = 10, bp_method: str = "product_sum")',desc:"Accuracy-oriented decoder. Uses Belief Propagation (BP) preprocessing to compute edge probabilities, and then runs matching on a reweighted Blossom graph. Use when accuracy matters more than latency.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"bp_iters",type:"int",default:"30",desc:"Max iterations for Belief Propagation"},{name:"max_paths",type:"int",default:"10",desc:"Max alternative paths for match reweighting"},{name:"bp_method",type:"str",default:'"product_sum"',desc:"BP update equation to resolve constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.BeliefMatchingDecoder(dem, bp_iters=30) -correction = decoder.decode(syndrome)`},{name:"BpOsdDecoder",signature:'BpOsdDecoder(dem: stim.DetectorErrorModel, *, osd_order: int = 40, osd_method: str = "osd_cs")',desc:"Belief Propagation + Ordered Statistics Decoding. A common approach for qLDPC codes, where matching graphs are undefined. Handles non-CSS stabilizer layouts.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"osd_order",type:"int",default:"40",desc:"OSD search order limit"},{name:"osd_method",type:"str",default:'"osd_cs"',desc:"OSD resolution method"}],example:`import qector_decoder_v3 as qd -decoder = qd.BpOsdDecoder(dem, osd_order=40) -correction = decoder.decode(syndrome)`},{name:"UnionFindDecoder",signature:"UnionFindDecoder(dem: stim.DetectorErrorModel, *, use_combined: bool = True)",desc:"Near-linear time approximate decoder. Resolves syndromes by cluster growth and path compression. Scaling is O(N), making it ideal for large distance offline simulations.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"use_combined",type:"bool",default:"True",desc:"Enable combined cluster growth constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.UnionFindDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"CPUBatchDecoder",signature:"CPUBatchDecoder(dem: stim.DetectorErrorModel, *, num_threads: int = 0)",desc:"Multi-threaded CPU batch decoder. Leverages Rayon parallelism across CPU cores to decode thousands of syndromes concurrently.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"num_threads",type:"int",default:"0",desc:"Number of worker threads (0 = auto-detect physical cores)"}],example:`import qector_decoder_v3 as qd -decoder = qd.CPUBatchDecoder(dem, num_threads=8) -corrections = decoder.decode_batch(syndromes_matrix)`},{name:"GpuBatchDecoder / CUDABatchDecoder / OpenCLBatchDecoder",signature:"CUDABatchDecoder(dem: stim.DetectorErrorModel, *, batch_size: int = 2048)",desc:"Native GPU batch decoders. Implements CUDA and OpenCL device pipelines to solve thousands of syndromes in parallel. Check availability with CUDABatchDecoder.is_available().",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"batch_size",type:"int",default:"2048",desc:"Parallel batch sizing in GPU VRAM"}],example:`import qector_decoder_v3 as qd -if qd.CUDABatchDecoder.is_available(): - decoder = qd.CUDABatchDecoder(dem, batch_size=4096) - corrections = decoder.decode_batch(syndromes_array)`},{name:"SparseBlossomDecoder",signature:"SparseBlossomDecoder(dem: stim.DetectorErrorModel)",desc:"Low-latency region growing blossom variant optimized for ring-like and sparse detector error graphs.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -decoder = qd.SparseBlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"get_decoder / clear_decoder_cache",signature:'get_decoder(dem_or_h, decoder_type: str = "auto", **kwargs)',desc:"Cached decoder factory for instantiating and caching decoders by error model hash to avoid redundant graph construction.",parameters:[{name:"dem_or_h",type:"Union[stim.DetectorErrorModel, np.ndarray]",default:"Required",desc:"Detector model or H matrix"},{name:"decoder_type",type:"str",default:'"auto"',desc:"Target decoder family name"}],example:`import qector_decoder_v3 as qd -decoder = qd.get_decoder(dem, decoder_type="blossom") -qd.clear_decoder_cache()`},{name:"decode_mmap / decode_with_diagnostics",signature:"decode_mmap(decoder, input_filepath: str, output_filepath: str)",desc:"Out-of-core memory-mapped file decoder for processing gigabyte-scale syndrome files on disk without loading entire matrices into RAM. Returns structured DecodeResult.",parameters:[{name:"decoder",type:"DecoderInstance",default:"Required",desc:"Initialized decoder instance"},{name:"input_filepath",type:"str",default:"Required",desc:"Path to binary syndrome file"},{name:"output_filepath",type:"str",default:"Required",desc:"Path to write binary correction results"}],example:`import qector_decoder_v3 as qd -res = qd.decode_mmap(decoder, "syndromes.bin", "corrections.bin") -print(res.shots_processed, res.latency_seconds)`},{name:"Workbench API",signature:"Workbench(config: Optional[dict] = None)",desc:"High-level orchestration and benchmarking engine for configuring decoding pipelines, running multi-decoder comparative sweeps, and exporting performance reports.",parameters:[{name:"config",type:"dict",default:"None",desc:"Workbench configuration dictionary"}],example:`import qector_decoder_v3 as qd -wb = qd.Workbench() -results = wb.benchmark(dem, shots=100000)`},{name:"stim_compat & sinter_compat",signature:"sinter_compat.qector_sinter_decoders()",desc:"Ecosystem integration helpers providing native compatibility with Stim circuits and Sinter benchmarking harnesses.",parameters:[{name:"sinter_decoders",type:"dict",default:"Required",desc:"Sinter compiled decoder mapping"}],example:`import sinter -from qector_decoder_v3.sinter_compat import qector_sinter_decoders -decoders = qector_sinter_decoders()`},{name:"license.verify_license_token",signature:"license.verify_license_token(token: str) -> bool",desc:"Offline Ed25519 cryptographic signature verification function for commercial evaluation and production license tokens.",parameters:[{name:"token",type:"str",default:"Required",desc:"Signed JWT/Ed25519 license token string"}],example:`from qector_decoder_v3.license import verify_license_token -is_valid = verify_license_token(token_str)`},{name:"HybridDecoder & HybridCascadeDecoder",signature:"HybridCascadeDecoder(dem: stim.DetectorErrorModel) # Feature-gated / source build",desc:"Experimental decoders combining fast Union-Find pre-filtering with exact Blossom fallback for ambiguous clusters. Note: HybridCascadeDecoder requires full-feature source build and may raise unavailable in standard pre-compiled wheels.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -# Research / full-feature build required -decoder = qd.HybridDecoder(dem)`},{name:"PredecodedDecoder & LookupTableDecoder",signature:"LookupTableDecoder(code_matrix: np.ndarray)",desc:"Research decoders for lookup-table fast matching on small stabilizer codes and wrapping pre-calculated decoding results for pipeline benchmarking.",parameters:[{name:"code_matrix",type:"np.ndarray",default:"Required",desc:"Parity check matrix"}],example:`import qector_decoder_v3 as qd -decoder = qd.LookupTableDecoder(H_matrix)`},{name:"ColourCodeDecoder, TwoStageDecoder & AmbiguityClusterDecoder",signature:"ColourCodeDecoder(dem: stim.DetectorErrorModel)",desc:"Research decoders: native colour-code decoding over undecomposed detector error models (color_code family), two-stage decoding pipelines, and ambiguity-cluster resolution.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"}],example:`import qector_decoder_v3 as qd -decoder = qd.ColourCodeDecoder(dem)`},{name:"GNNBeliefMatcher",signature:"GNNBeliefMatcher(dem: stim.DetectorErrorModel, model_path: str)",desc:"Research-stage graph neural network enhanced belief propagation module. Not validated for production use.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"},{name:"model_path",type:"str",default:"Required",desc:"Path to trained GNN weights file"}],example:`import qector_decoder_v3 as qd -matcher = qd.GNNBeliefMatcher(dem, "weights.pt")`}],i=c.filter(r=>r.name.toLowerCase().includes(a.toLowerCase())),p=r=>{m(t===r?null:r)};return o.useEffect(()=>{window.matchMedia("(prefers-reduced-motion: reduce)").matches||t&&s.current&&f.fromTo(s.current,{opacity:0,y:10},{opacity:1,y:0,duration:.3,ease:"power2.out"})},[t]),e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"Technical Reference · QECTOR",description:"API reference, decoder parameters, and technical documentation for QECTOR quantum error correction decoder."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"16 Decoder APIs · Stim DEM · Signatures Are Examples"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(h,{text:"Technical Reference",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"API overview for QECTOR's decoders. Signatures, defaults, and snippets below are illustrative examples; treat the installed package as the authoritative reference."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"relative mb-8 max-w-md mx-auto md:mx-0",children:[e.jsx("label",{htmlFor:"decoder-search",className:"sr-only",children:"Search decoders"}),e.jsx("input",{id:"decoder-search",type:"search",placeholder:"Search decoders...",value:a,onChange:r=>l(r.target.value),className:"w-full px-10 py-3 bg-surface/50 border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors"}),e.jsx(x,{className:"w-5 h-5 text-muted-foreground absolute left-3 top-3.5"})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-12 gap-8",children:[e.jsxs("div",{className:"lg:col-span-4 space-y-2",children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider px-2 mb-2 flex items-center gap-1.5",children:[e.jsx(g,{className:"w-3.5 h-3.5"}),"Decoder Classes"]}),e.jsxs("div",{className:"space-y-1",children:[i.map(r=>e.jsxs("button",{"aria-expanded":t===r.name,onClick:()=>p(r.name),className:`w-full flex items-center justify-between p-3.5 rounded-xl border text-sm transition-all duration-200 ${t===r.name?"bg-cyan-300/10 text-cyan-300 border-cyan-300/20 shadow-xs":"bg-surface/20 text-secondary hover:text-primary hover:bg-surface/40 border-gridline/50"}`,children:[e.jsx("span",{className:"font-mono font-semibold",children:r.name}),t===r.name?e.jsx(b,{className:"w-4 h-4"}):e.jsx(y,{className:"w-4 h-4 text-muted-foreground"})]},r.name)),i.length===0&&e.jsxs("div",{className:"p-4 text-center text-xs text-muted-foreground italic border border-dashed border-gridline rounded-xl",children:['No decoders matching "',a,'"']})]})]}),e.jsx("div",{className:"lg:col-span-8",children:t?(()=>{const r=c.find(d=>d.name===t);return r?e.jsxs("div",{ref:s,className:"card-surface bg-surface/10 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold text-primary font-mono",children:r.name}),e.jsx("p",{className:"text-secondary text-sm mt-3 leading-relaxed",children:r.desc})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),"Signature"]}),e.jsx(n,{code:r.signature,language:"python",className:"!my-0 bg-void/70"})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(v,{className:"w-3.5 h-3.5"}),"Parameters"]}),e.jsx("div",{className:"overflow-x-auto border border-gridline rounded-xl",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse text-left text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 text-xs font-semibold uppercase tracking-wider",children:[e.jsx("th",{className:"p-3",children:"Name"}),e.jsx("th",{className:"p-3",children:"Type"}),e.jsx("th",{className:"p-3",children:"Default"}),e.jsx("th",{className:"p-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:r.parameters.map(d=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-mono font-semibold text-primary",children:d.name}),e.jsx("td",{className:"p-3 font-mono text-xs text-secondary",children:d.type}),e.jsx("td",{className:"p-3 font-mono text-xs text-cyan-300",children:d.default}),e.jsx("td",{className:"p-3 text-xs text-secondary leading-relaxed",children:d.desc})]},d.name))})]})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2",children:"Usage Example"}),e.jsx(n,{code:r.example,language:"python",filename:`${r.name.toLowerCase()}_usage.py`})]})]}):null})():e.jsx("div",{className:"h-full flex items-center justify-center border border-dashed border-gridline rounded-2xl p-12 text-center text-muted-foreground italic text-sm",children:"Select a decoder class from the sidebar to inspect parameters and example usage."})})]})]})})]})}export{R as default}; diff --git a/assets/TechnicalReference-CSIZ4Dc5.js b/assets/TechnicalReference-CSIZ4Dc5.js deleted file mode 100644 index 0f1f7fec..00000000 --- a/assets/TechnicalReference-CSIZ4Dc5.js +++ /dev/null @@ -1,30 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,C as n}from"./index-CxWP17m6.js";import{N as h}from"./NeuralReveal-BflyZYSb.js";import{g as f}from"./vendor-gsap-a3sj5zmn.js";import{r as x,h as g,s as b,o as y,T as _,B as v}from"./vendor-ui-B0ssGG4c.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";function R(){const[a,l]=o.useState(""),[t,m]=o.useState("BlossomDecoder"),s=o.useRef(null),c=[{name:"BlossomDecoder",signature:"BlossomDecoder(dem: stim.DetectorErrorModel, *, adaptive_k: bool = True, timeout: Optional[float] = None)",desc:"Minimum-weight perfect matching (MWPM) decoder for CSS stabilizer codes. Uses an exact matching solver to pair syndrome checks.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"adaptive_k",type:"bool",default:"True",desc:"Enable Union-Find pre-filtering to compress graph"},{name:"timeout",type:"float",default:"None",desc:"Max seconds allowed to match a syndrome"}],example:`import qector_decoder_v3 as qd -decoder = qd.BlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"BeliefMatchingDecoder",signature:'BeliefMatchingDecoder(dem: stim.DetectorErrorModel, *, bp_iters: int = 30, max_paths: int = 10, bp_method: str = "product_sum")',desc:"Accuracy-oriented decoder. Uses Belief Propagation (BP) preprocessing to compute edge probabilities, and then runs matching on a reweighted Blossom graph. Use when accuracy matters more than latency.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"bp_iters",type:"int",default:"30",desc:"Max iterations for Belief Propagation"},{name:"max_paths",type:"int",default:"10",desc:"Max alternative paths for match reweighting"},{name:"bp_method",type:"str",default:'"product_sum"',desc:"BP update equation to resolve constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.BeliefMatchingDecoder(dem, bp_iters=30) -correction = decoder.decode(syndrome)`},{name:"BpOsdDecoder",signature:'BpOsdDecoder(dem: stim.DetectorErrorModel, *, osd_order: int = 40, osd_method: str = "osd_cs")',desc:"Belief Propagation + Ordered Statistics Decoding. A common approach for qLDPC codes, where matching graphs are undefined. Handles non-CSS stabilizer layouts.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"osd_order",type:"int",default:"40",desc:"OSD search order limit"},{name:"osd_method",type:"str",default:'"osd_cs"',desc:"OSD resolution method"}],example:`import qector_decoder_v3 as qd -decoder = qd.BpOsdDecoder(dem, osd_order=40) -correction = decoder.decode(syndrome)`},{name:"UnionFindDecoder",signature:"UnionFindDecoder(dem: stim.DetectorErrorModel, *, use_combined: bool = True)",desc:"Near-linear time approximate decoder. Resolves syndromes by cluster growth and path compression. Scaling is O(N), making it ideal for large distance offline simulations.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"use_combined",type:"bool",default:"True",desc:"Enable combined cluster growth constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.UnionFindDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"CPUBatchDecoder",signature:"CPUBatchDecoder(dem: stim.DetectorErrorModel, *, num_threads: int = 0)",desc:"Multi-threaded CPU batch decoder. Leverages Rayon parallelism across CPU cores to decode thousands of syndromes concurrently.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"num_threads",type:"int",default:"0",desc:"Number of worker threads (0 = auto-detect physical cores)"}],example:`import qector_decoder_v3 as qd -decoder = qd.CPUBatchDecoder(dem, num_threads=8) -corrections = decoder.decode_batch(syndromes_matrix)`},{name:"GpuBatchDecoder / CUDABatchDecoder / OpenCLBatchDecoder",signature:"CUDABatchDecoder(dem: stim.DetectorErrorModel, *, batch_size: int = 2048)",desc:"Native GPU batch decoders. Implements CUDA and OpenCL device pipelines to solve thousands of syndromes in parallel. Check availability with CUDABatchDecoder.is_available().",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"batch_size",type:"int",default:"2048",desc:"Parallel batch sizing in GPU VRAM"}],example:`import qector_decoder_v3 as qd -if qd.CUDABatchDecoder.is_available(): - decoder = qd.CUDABatchDecoder(dem, batch_size=4096) - corrections = decoder.decode_batch(syndromes_array)`},{name:"SparseBlossomDecoder",signature:"SparseBlossomDecoder(dem: stim.DetectorErrorModel)",desc:"Low-latency region growing blossom variant optimized for ring-like and sparse detector error graphs.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -decoder = qd.SparseBlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"get_decoder / clear_decoder_cache",signature:'get_decoder(dem_or_h, decoder_type: str = "auto", **kwargs)',desc:"Cached decoder factory for instantiating and caching decoders by error model hash to avoid redundant graph construction.",parameters:[{name:"dem_or_h",type:"Union[stim.DetectorErrorModel, np.ndarray]",default:"Required",desc:"Detector model or H matrix"},{name:"decoder_type",type:"str",default:'"auto"',desc:"Target decoder family name"}],example:`import qector_decoder_v3 as qd -decoder = qd.get_decoder(dem, decoder_type="blossom") -qd.clear_decoder_cache()`},{name:"decode_mmap / decode_with_diagnostics",signature:"decode_mmap(decoder, input_filepath: str, output_filepath: str)",desc:"Out-of-core memory-mapped file decoder for processing gigabyte-scale syndrome files on disk without loading entire matrices into RAM. Returns structured DecodeResult.",parameters:[{name:"decoder",type:"DecoderInstance",default:"Required",desc:"Initialized decoder instance"},{name:"input_filepath",type:"str",default:"Required",desc:"Path to binary syndrome file"},{name:"output_filepath",type:"str",default:"Required",desc:"Path to write binary correction results"}],example:`import qector_decoder_v3 as qd -res = qd.decode_mmap(decoder, "syndromes.bin", "corrections.bin") -print(res.shots_processed, res.latency_seconds)`},{name:"Workbench API",signature:"Workbench(config: Optional[dict] = None)",desc:"High-level orchestration and benchmarking engine for configuring decoding pipelines, running multi-decoder comparative sweeps, and exporting performance reports.",parameters:[{name:"config",type:"dict",default:"None",desc:"Workbench configuration dictionary"}],example:`import qector_decoder_v3 as qd -wb = qd.Workbench() -results = wb.benchmark(dem, shots=100000)`},{name:"stim_compat & sinter_compat",signature:"sinter_compat.qector_sinter_decoders()",desc:"Ecosystem integration helpers providing native compatibility with Stim circuits and Sinter benchmarking harnesses.",parameters:[{name:"sinter_decoders",type:"dict",default:"Required",desc:"Sinter compiled decoder mapping"}],example:`import sinter -from qector_decoder_v3.sinter_compat import qector_sinter_decoders -decoders = qector_sinter_decoders()`},{name:"license.verify_license_token",signature:"license.verify_license_token(token: str) -> bool",desc:"Offline Ed25519 cryptographic signature verification function for commercial evaluation and production license tokens.",parameters:[{name:"token",type:"str",default:"Required",desc:"Signed JWT/Ed25519 license token string"}],example:`from qector_decoder_v3.license import verify_license_token -is_valid = verify_license_token(token_str)`},{name:"HybridDecoder & HybridCascadeDecoder",signature:"HybridCascadeDecoder(dem: stim.DetectorErrorModel) # Feature-gated / source build",desc:"Experimental decoders combining fast Union-Find pre-filtering with exact Blossom fallback for ambiguous clusters. Note: HybridCascadeDecoder requires full-feature source build and may raise unavailable in standard pre-compiled wheels.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -# Research / full-feature build required -decoder = qd.HybridDecoder(dem)`},{name:"PredecodedDecoder & LookupTableDecoder",signature:"LookupTableDecoder(code_matrix: np.ndarray)",desc:"Research decoders for lookup-table fast matching on small stabilizer codes and wrapping pre-calculated decoding results for pipeline benchmarking.",parameters:[{name:"code_matrix",type:"np.ndarray",default:"Required",desc:"Parity check matrix"}],example:`import qector_decoder_v3 as qd -decoder = qd.LookupTableDecoder(H_matrix)`},{name:"ColourCodeDecoder, TwoStageDecoder & AmbiguityClusterDecoder",signature:"ColourCodeDecoder(dem: stim.DetectorErrorModel)",desc:"Research decoders: native colour-code decoding over undecomposed detector error models (color_code family), two-stage decoding pipelines, and ambiguity-cluster resolution.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"}],example:`import qector_decoder_v3 as qd -decoder = qd.ColourCodeDecoder(dem)`},{name:"GNNBeliefMatcher",signature:"GNNBeliefMatcher(dem: stim.DetectorErrorModel, model_path: str)",desc:"Research-stage graph neural network enhanced belief propagation module. Not validated for production use.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"},{name:"model_path",type:"str",default:"Required",desc:"Path to trained GNN weights file"}],example:`import qector_decoder_v3 as qd -matcher = qd.GNNBeliefMatcher(dem, "weights.pt")`}],i=c.filter(r=>r.name.toLowerCase().includes(a.toLowerCase())),p=r=>{m(t===r?null:r)};return o.useEffect(()=>{window.matchMedia("(prefers-reduced-motion: reduce)").matches||t&&s.current&&f.fromTo(s.current,{opacity:0,y:10},{opacity:1,y:0,duration:.3,ease:"power2.out"})},[t]),e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"Technical Reference · QECTOR",description:"API reference, decoder parameters, and technical documentation for QECTOR quantum error correction decoder."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"16 Decoder APIs · Stim DEM · Signatures Are Examples"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(h,{text:"Technical Reference",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"API overview for QECTOR's decoders. Signatures, defaults, and snippets below are illustrative examples; treat the installed package as the authoritative reference."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"relative mb-8 max-w-md mx-auto md:mx-0",children:[e.jsx("label",{htmlFor:"decoder-search",className:"sr-only",children:"Search decoders"}),e.jsx("input",{id:"decoder-search",type:"search",placeholder:"Search decoders...",value:a,onChange:r=>l(r.target.value),className:"w-full px-10 py-3 bg-surface/50 border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors"}),e.jsx(x,{className:"w-5 h-5 text-muted-foreground absolute left-3 top-3.5"})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-12 gap-8",children:[e.jsxs("div",{className:"lg:col-span-4 space-y-2",children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider px-2 mb-2 flex items-center gap-1.5",children:[e.jsx(g,{className:"w-3.5 h-3.5"}),"Decoder Classes"]}),e.jsxs("div",{className:"space-y-1",children:[i.map(r=>e.jsxs("button",{"aria-expanded":t===r.name,onClick:()=>p(r.name),className:`w-full flex items-center justify-between p-3.5 rounded-xl border text-sm transition-all duration-200 ${t===r.name?"bg-cyan-300/10 text-cyan-300 border-cyan-300/20 shadow-xs":"bg-surface/20 text-secondary hover:text-primary hover:bg-surface/40 border-gridline/50"}`,children:[e.jsx("span",{className:"font-mono font-semibold",children:r.name}),t===r.name?e.jsx(b,{className:"w-4 h-4"}):e.jsx(y,{className:"w-4 h-4 text-muted-foreground"})]},r.name)),i.length===0&&e.jsxs("div",{className:"p-4 text-center text-xs text-muted-foreground italic border border-dashed border-gridline rounded-xl",children:['No decoders matching "',a,'"']})]})]}),e.jsx("div",{className:"lg:col-span-8",children:t?(()=>{const r=c.find(d=>d.name===t);return r?e.jsxs("div",{ref:s,className:"card-surface bg-surface/10 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold text-primary font-mono",children:r.name}),e.jsx("p",{className:"text-secondary text-sm mt-3 leading-relaxed",children:r.desc})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),"Signature"]}),e.jsx(n,{code:r.signature,language:"python",className:"!my-0 bg-void/70"})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(v,{className:"w-3.5 h-3.5"}),"Parameters"]}),e.jsx("div",{className:"overflow-x-auto border border-gridline rounded-xl",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse text-left text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 text-xs font-semibold uppercase tracking-wider",children:[e.jsx("th",{className:"p-3",children:"Name"}),e.jsx("th",{className:"p-3",children:"Type"}),e.jsx("th",{className:"p-3",children:"Default"}),e.jsx("th",{className:"p-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:r.parameters.map(d=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-mono font-semibold text-primary",children:d.name}),e.jsx("td",{className:"p-3 font-mono text-xs text-secondary",children:d.type}),e.jsx("td",{className:"p-3 font-mono text-xs text-cyan-300",children:d.default}),e.jsx("td",{className:"p-3 text-xs text-secondary leading-relaxed",children:d.desc})]},d.name))})]})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2",children:"Usage Example"}),e.jsx(n,{code:r.example,language:"python",filename:`${r.name.toLowerCase()}_usage.py`})]})]}):null})():e.jsx("div",{className:"h-full flex items-center justify-center border border-dashed border-gridline rounded-2xl p-12 text-center text-muted-foreground italic text-sm",children:"Select a decoder class from the sidebar to inspect parameters and example usage."})})]})]})})]})}export{R as default}; diff --git a/assets/TechnicalReference-CUtSwYSY.js b/assets/TechnicalReference-CUtSwYSY.js deleted file mode 100644 index 9f39f54a..00000000 --- a/assets/TechnicalReference-CUtSwYSY.js +++ /dev/null @@ -1,30 +0,0 @@ -import{r as i,j as e}from"./vendor-react-BiHfrq0e.js";import{S as h,C as _}from"./index-DayaklK-.js";import{N as g}from"./NeuralReveal-uYarhiMA.js";import{g as p}from"./vendor-gsap-a3sj5zmn.js";import{q as f,h as y,r as b,s as x,T as N,B as k}from"./vendor-ui-B8TlNU4J.js";const v="1.0.1",w="2026-11-06",q=JSON.parse(`[{"name":"AmbiguityClusterDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, error_rate=0.05, ambig_threshold=0.5, max_cluster_size=12)","summary":"C1-02: BP + ambiguity-clustered exact decoding for qLDPC codes.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"}]},{"name":"AutoDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, config: 'BackendConfig | None' = None)","summary":"Workload-aware, self-debugging decoder that routes to CUDA / OpenCL / Rayon / CPU / Fallback.","methods":[{"name":"auto_select","signature":"(checks, n_qubits, batch_size=1)"},{"name":"available_backends","signature":"(self) -> 'list[str]'"},{"name":"batch_decode","signature":"(self, syndromes) -> 'np.ndarray'"},{"name":"calibrate","signature":"(self, sizes=(64, 256, 1024, 4096, 16384), repeats: 'int' = 3, seed: 'int' = 0)"},{"name":"decode","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"diagnostics","signature":"(self) -> 'dict'"},{"name":"reset_backend_health","signature":"(self) -> 'None'"},{"name":"select","signature":"(self, batch_size: 'int') -> 'str'"}]},{"name":"AutoRouter","kind":"class","signature":"(*, priority: 'str' = 'balanced', hardware: 'HardwareLike' = None, error_rate: 'float' = 0.05, code_family: 'Any' = None, use_native_auto: 'bool' = True) -> 'None'","summary":"Construct, cache, and dispatch the policy-selected decoder for a problem.","methods":[{"name":"decode","signature":"(self, checks_or_H: 'Any', syndromes: 'Any', **ctx: 'Any') -> 'np.ndarray'"},{"name":"explain","signature":"(self, checks_or_H: 'Any' = None, syndromes: 'Any' = None, **ctx: 'Any') -> 'dict[str, Any]'"}]},{"name":"BPOSDDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, error_rate=0.1, bp_method=None, osd_order=None)","summary":"Belief Propagation + Ordered Statistics Decoding.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"bp_decode","signature":"(self, syndrome, max_iterations=20)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_batch_flat","signature":"(self, flat_syndromes, num_shots, stride=None)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"decode_timed","signature":"(self, syndrome, max_latency_ms=10.0)"}]},{"name":"Backend","kind":"class","signature":"()","summary":"Backend identifiers & Fallback Tiers.","methods":[]},{"name":"BackendConfig","kind":"class","signature":"(rayon_threshold: 'int' = 8, gpu_threshold: 'int' = 4096, allow_gpu: 'bool' = True, prefer: 'str' = 'cuda', force: 'str | None' = None, enable_auto_debug: 'bool' = True) -> None","summary":"Tunable thresholds and policy for :class:\`AutoDecoder\`.","methods":[]},{"name":"BatchDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None)","summary":"Parallel batch decoder using Rayon (Rust data parallelism).","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"parallel_batch_decode","signature":"(self, syndromes)"}]},{"name":"BatchedBpDecoder","kind":"class","signature":"(H: 'Any', *, error_rate: 'float' = 0.05, priors: 'Any' = None, max_iter: 'int' = 30, alpha: 'float' = 1.0, bp_method: 'str' = 'min_sum', prefer_gpu: 'bool' = True) -> 'None'","summary":"Batched belief-propagation decoder over a fixed GF(2) check matrix \`\`H\`\`.","methods":[{"name":"decode_batch","signature":"(self, syndromes: 'Any', *, return_llr: 'bool' = False, early_stop: 'bool' = True) -> 'tuple[np.ndarray, np.ndarray] | tuple[np.ndarray, np.ndarray, np.ndarray]'"}]},{"name":"BeliefMatching","kind":"class","signature":"(matrices: '_Matrices', max_iter: 'int' = 30, bp_shortcut: 'bool' = False)","summary":"Belief-propagation + minimum-weight perfect matching decoder.","methods":[{"name":"decode","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"decode_batch","signature":"(self, shots) -> 'np.ndarray'"},{"name":"decode_correction","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"decode_observables","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"from_detector_error_model","signature":"(dem: 'Any', max_iter: 'int' = 20) -> 'BeliefMatching'"},{"name":"from_numpy_h","signature":"(H, error_rate: 'float' = 0.05, max_iter: 'int' = 20) -> 'BeliefMatching'"},{"name":"from_stim_circuit","signature":"(circuit, max_iter: 'int' = 20) -> 'BeliefMatching'"}]},{"name":"BenchmarkSuite","kind":"class","signature":"(check_to_qubits, n_qubits=None, n_samples=10000, seed=42)","summary":"Production benchmark suite. Wraps Rust-native benchmarking.","methods":[{"name":"run","signature":"(self)"},{"name":"save","signature":"(self, path, results)"}]},{"name":"BlossomDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, edge_weights=None)","summary":"Minimum-Weight Perfect Matching (MWPM) decoder via Edmonds' Blossom algorithm.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"batch_decode_weighted","signature":"(self, syndromes, weights)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"set_edge_weights","signature":"(self, weights)"}]},{"name":"BpOsdDecoder","kind":"class","signature":"(H: 'Any', error_rate: 'float' = 0.05, priors: 'Any' = None, max_iter: 'int' = 30, ms_scale: 'float' = 1.0, osd_order: 'int' = 0, bp_method: 'str' = 'sum_product', use_gpu: 'Any' = None, max_latency_ms: 'float | None' = None, damping: 'float' = 0.0, osd_lambda: 'Any' = None)","summary":"BP + ordered-statistics decoder for general GF(2) check matrices.","methods":[{"name":"batch_decode","signature":"(self, syndromes) -> 'np.ndarray'"},{"name":"decode","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"decode_correction","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix: 'Any' = None) -> 'np.ndarray'"}]},{"name":"CPUBatchDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None)","summary":"SIMD-friendly CPU batch decoder with pooled buffers and SoA transposition.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"batch_decode_par","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"}]},{"name":"CUDABatchDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, edge_weights=None)","summary":"","methods":[{"name":"batch_decode","signature":"(self, /, syndromes)"},{"name":"is_available","signature":"()"},{"name":"reset","signature":"(self, /)"}]},{"name":"CUDABpOsdDecoder","kind":"class","signature":"(check_to_qubits, n_qubits, error_rate)","summary":"","methods":[{"name":"batch_decode","signature":"(self, /, syndromes)"}]},{"name":"ColourCodeDecoder","kind":"class","signature":"(dem: 'Any', max_iter: 'int' = 30, osd_order: 'int' = 0, method: 'str' = 'bposd')","summary":"Colour-code decoder: BP-OSD over the undecomposed hypergraph DEM.","methods":[{"name":"decode","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"decode_batch","signature":"(self, syndromes) -> 'np.ndarray'"},{"name":"decode_correction","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"decode_observables","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"from_detector_error_model","signature":"(dem: 'Any', max_iter: 'int' = 30, osd_order: 'int' = 0) -> 'ColourCodeDecoder'"},{"name":"from_stim_circuit","signature":"(circuit: 'Any', max_iter: 'int' = 30, osd_order: 'int' = 0) -> 'ColourCodeDecoder'"}]},{"name":"DecodeResult","kind":"class","signature":"(correction: 'np.ndarray', syndrome: 'np.ndarray', n_qubits: 'int', n_checks: 'int', weight: 'float | None' = None, logical_flips: 'np.ndarray | None' = None, decode_seconds: 'float | None' = None, backend: 'str' = 'cpu', fallback: 'bool' = False, fallback_reason: 'str' = '', syndrome_valid: 'bool | None' = None, metadata: 'dict' = ) -> None","summary":"Result of decoding a single syndrome, with diagnostics and metadata.","methods":[{"name":"as_uint8","signature":"(self) -> 'np.ndarray'"},{"name":"explain","signature":"(self) -> 'str'"},{"name":"to_dict","signature":"(self) -> 'dict'"},{"name":"to_json","signature":"(self, indent: 'int' = 2) -> 'str'"},{"name":"verify","signature":"(self, H: 'np.ndarray') -> 'bool'"}]},{"name":"DecoderName","kind":"class","signature":"()","summary":"String identifiers for the routable decoders.","methods":[]},{"name":"DecoderPool","kind":"class","signature":"(check_to_qubits=None, n_qubits=None, decoder_type: 'str' = 'fast_union_find', n_workers: 'int | None' = None, num_threads: 'int | None' = None)","summary":"Multi-process decoder pool for parallel syndrome decoding.","methods":[{"name":"close","signature":"(self)"},{"name":"decode","signature":"(self, syndromes) -> 'np.ndarray'"}]},{"name":"DetectorGraph","kind":"class","signature":"(check_to_qubits, syndrome, check_positions=None, check_types=None, base_weights=None, n_qubits=None)","summary":"Detector graph used by the GNN and hybrid decoder paths.","methods":[{"name":"update_syndrome","signature":"(self, syndrome)"}]},{"name":"FastUnionFindDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, edge_weights=None)","summary":"Union-Find with a zero-allocation hot path, reusable buffers and a C ABI.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_batch_flat","signature":"(self, flat_syndromes, num_shots, stride=None)"},{"name":"decode_batch_into_flat","signature":"(self, flat_syndromes, num_shots, corrections, stride=None)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"set_edge_weights","signature":"(self, edge_weights)"}]},{"name":"GNNBeliefMatcher","kind":"class","signature":"(check_to_qubits, n_qubits=None, *, gnn=None, hidden_size: 'int' = 32, n_layers: 'int' = 2, train_samples: 'int' = 0, error_rate: 'float' = 0.05, train_epochs: 'int' = 3, seed=None)","summary":"End-to-end GNN-guided minimum-weight perfect matching decoder.","methods":[{"name":"batch_decode","signature":"(self, syndromes) -> 'np.ndarray'"},{"name":"decode","signature":"(self, syndrome) -> 'np.ndarray'"}]},{"name":"GNNPredecoder","kind":"class","signature":"(node_feat_dim=None, edge_feat_dim=None, hidden_size=16, n_layers=2)","summary":"Graph Neural Network Pre-Decoder for dynamic edge weight prediction.","methods":[{"name":"forward","signature":"(self, graph)"},{"name":"load_weights","signature":"(self, path)"},{"name":"new_standard","signature":"(hidden_size=16, n_layers=2)"},{"name":"predict_with_node_probs","signature":"(self, graph)"},{"name":"save_weights","signature":"(self, path)"},{"name":"train","signature":"(self, graphs, targets, n_epochs)"}]},{"name":"GNNTrainer","kind":"class","signature":"(check_to_qubits, n_qubits, error_rate=0.1)","summary":"End-to-end GNN training pipeline with Blossom teacher model.","methods":[{"name":"generate_dataset","signature":"(self, n_samples)"},{"name":"train","signature":"(self, gnn, n_samples, n_epochs)"},{"name":"train_bp","signature":"(self, gnn, n_samples, n_epochs, max_bp_iter=20)"}]},{"name":"HardwareProfile","kind":"class","signature":"(cuda_rust: 'bool' = False, gpu: 'bool' = False) -> None","summary":"Resolved view of the GPU capability the policy should assume.","methods":[{"name":"as_dict","signature":"(self) -> 'dict[str, bool]'"},{"name":"detect","signature":"() -> 'HardwareProfile'"}]},{"name":"HybridCascadeDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, edge_weights=None, max_accept_weight=None, escalation=None, error_rate=None)","summary":"Hybrid cascading decoder: Union-Find pre-filter + Blossom/BP-OSD escalation.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"batch_decode_timed","signature":"(self, syndromes, max_latency_ms=10.0)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"decode_timed","signature":"(self, syndrome, max_latency_ms=10.0)"}]},{"name":"HybridDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, check_positions=None, check_types=None, base_weights=None, gnn_hidden_size=64, gnn_n_layers=3)","summary":"GNN Pre-Decoder + SparseBlossom hybrid decoder.","methods":[{"name":"batch_decode_hybrid","signature":"(self, syndromes)"},{"name":"batch_decode_standard","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_heuristic","signature":"(self, syndrome)"},{"name":"decode_hybrid","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"decode_standard","signature":"(self, syndrome)"},{"name":"load_weights","signature":"(self, path)"},{"name":"save_weights","signature":"(self, path)"},{"name":"train","signature":"(self, n_samples, n_epochs, error_rate=0.1)"},{"name":"train_bp","signature":"(self, n_samples, n_epochs, error_rate=0.1, max_bp_iter=20)"}]},{"name":"LERBenchmark","kind":"class","signature":"()","summary":"Logical Error Rate benchmark suite.","methods":[{"name":"run_all","signature":"(self)"}]},{"name":"LookupTableDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None)","summary":"Exact lookup-table decoder with UnionFind fallback.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"build_table","signature":"(self, max_entries)"},{"name":"decode","signature":"(self, syndrome)"}]},{"name":"MAX_WORKERS","kind":"constant","signature":"","summary":"","methods":[]},{"name":"Matching","kind":"class","signature":"(H: 'Any' = None, weights: 'Any' = None, faults_matrix: 'Any' = None)","summary":"Minimum-weight perfect-matching decoder with a PyMatching-style API.","methods":[{"name":"add_boundary_edge","signature":"(self, node: 'int', fault_ids: 'Any' = None, weight: 'float' = 1.0, **_: 'Any') -> 'None'"},{"name":"add_edge","signature":"(self, node1: 'int', node2: 'int', fault_ids: 'Any' = None, weight: 'float' = 1.0, **_: 'Any') -> 'None'"},{"name":"check_matrix","signature":"(self) -> 'np.ndarray'"},{"name":"decode","signature":"(self, syndrome: 'Sequence[int]') -> 'np.ndarray'"},{"name":"decode_batch","signature":"(self, shots: 'Any') -> 'np.ndarray'"},{"name":"decode_to_edges_array","signature":"(self, syndrome: 'Sequence[int]') -> 'np.ndarray'"},{"name":"edges","signature":"(self) -> 'list[tuple[int | None, int | None, dict]]'"},{"name":"from_check_matrix","signature":"(H: 'Any', weights: 'Any' = None, faults_matrix: 'Any' = None, **_: 'Any') -> 'Matching'"},{"name":"from_detector_error_model","signature":"(dem: 'Any') -> 'Matching'"},{"name":"from_stim_dem","signature":"(dem: 'Any') -> 'Matching'"}]},{"name":"NativeAutoDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, distance=5, noise_rate=0.01, batch_size=1, is_qldpc=False)","summary":"","methods":[{"name":"batch_decode","signature":"(self, /, syndromes)"},{"name":"batch_decode_strided","signature":"(self, /, syndromes, stride=None, require_alignment=False)"},{"name":"decode","signature":"(self, /, syndrome)"}]},{"name":"NeuralPredecoder","kind":"class","signature":"(n_input, n_output, n_hidden1=None, n_hidden2=None)","summary":"Lightweight MLP pre-decoder with Xavier initialization and SGD training.","methods":[{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"predict","signature":"(self, syndrome)"},{"name":"train","signature":"(self, syndromes, corrections, n_epochs, learning_rate=0.01)"}]},{"name":"OpenCLBatchDecoder","kind":"class","signature":"(*a, **k)","summary":"OpenCL batch decoder - requires source build with --features opencl.","methods":[{"name":"is_available","signature":"()"}]},{"name":"PredecodedDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, backend: 'str' = 'blossom')","summary":"Local-matching predecoder + exact/fast residual decoder.","methods":[{"name":"batch_decode","signature":"(self, syndromes) -> 'np.ndarray'"},{"name":"decode","signature":"(self, syndrome) -> 'np.ndarray'"}]},{"name":"Recommendation","kind":"class","signature":"(decoder: 'str', reason: 'str', family: 'str', priority: 'str', batch_size: 'int', hardware: 'dict[str, bool]', gpu_batched_bp: 'bool' = False, forced: 'bool' = False, graphlike: 'bool | None' = None, distance: 'int | None' = None, n_qubits: 'int | None' = None) -> None","summary":"A decoder choice plus the reasoning and inputs that produced it.","methods":[{"name":"as_dict","signature":"(self) -> 'dict[str, Any]'"}]},{"name":"SlidingWindowDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, window_size=10, decay_factor=0.8, check_types=None, p_data=None, p_meas=None)","summary":"Sliding-window decoder with exponential decay weighting or fault-tolerant space-time decoding.","methods":[{"name":"decode","signature":"(self, syndrome=None)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"detector_history","signature":"(self)"},{"name":"flush","signature":"(self)"},{"name":"update","signature":"(self, round_syndrome)"}]},{"name":"SpaceTimeDecoder","kind":"class","signature":"(check_to_qubits, check_types, n_rounds, p_data, p_meas, n_qubits=None)","summary":"PyO3 wrapper for [\`SpaceTimeDecoder\`]: fault-tolerant temporal decoding via XOR-of-consecutive-rounds detectors matched on a 3D (space x time) graph, as opposed to [\`crate::sliding_window::PySlidingWindowDecoder\`] /…","methods":[{"name":"decode_history","signature":"(self, /)"},{"name":"reset","signature":"(self, /)"},{"name":"update","signature":"(self, /, round_syndrome)"}]},{"name":"SparseBlossomDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, edge_weights=None)","summary":"Region-growing Sparse Blossom decoder with RadixHeap.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"decode_with_weights","signature":"(self, syndrome, weights)"}]},{"name":"StreamingDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, history_size=10, check_types=None, p_data=None, p_meas=None)","summary":"Streaming decoder that accumulates syndromes over multiple rounds.","methods":[{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"decode_rounds","signature":"(self, rounds)"},{"name":"detector_history","signature":"(self)"},{"name":"flush","signature":"(self)"},{"name":"update","signature":"(self, round_syndrome)"}]},{"name":"StreamingResult","kind":"class","signature":"(corrections: 'np.ndarray', syndromes: 'np.ndarray', telemetry: 'StreamingTelemetry', logical_flips: 'np.ndarray | None' = None) -> None","summary":"Outcome of a full streaming decode.","methods":[{"name":"is_valid","signature":"(self, H: 'Any', *, prefer_gpu: 'bool' = True) -> 'bool'"}]},{"name":"StreamingSession","kind":"class","signature":"(code_or_checks: 'Any', n_qubits: 'int | None' = None, *, window_size: 'int' = 8, decoder: 'Any | None' = None, logicals: 'Any' = None, prefer_gpu: 'bool | None' = None) -> 'None'","summary":"Incremental multi-round decode with a sliding commit buffer.","methods":[{"name":"committed_corrections","signature":"(self) -> 'np.ndarray'"},{"name":"committed_syndromes","signature":"(self) -> 'np.ndarray'"},{"name":"flush","signature":"(self) -> 'list[np.ndarray]'"},{"name":"push_round","signature":"(self, syndrome: 'Any') -> 'list[np.ndarray]'"},{"name":"reset","signature":"(self) -> 'None'"},{"name":"run","signature":"(self, syndrome_rounds: 'Any') -> 'StreamingResult'"}]},{"name":"StreamingTelemetry","kind":"class","signature":"(rounds: 'int' = 0, windows: 'int' = 0, committed: 'int' = 0, decode_seconds: 'float' = 0.0, per_window_seconds: 'list[float]' = , gpu: 'dict[str, int]' = , backend: 'dict[str, Any]' = , rounds_valid: 'int | None' = None) -> None","summary":"Real, measured counters for a streaming decode run.","methods":[{"name":"as_dict","signature":"(self) -> 'dict[str, Any]'"},{"name":"record_window","signature":"(self, seconds: 'float', rounds: 'int' = 1) -> 'None'"}]},{"name":"TwoStageDecoder","kind":"class","signature":"(check_to_qubits, check_types, n_qubits=None, x_decoder='blossom', z_decoder='blossom')","summary":"C1-03: Correlated two-stage matching for CSS codes.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"}]},{"name":"UnionFindDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, edge_weights=None)","summary":"Production-ready Union-Find quantum error correction decoder.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_batch_flat","signature":"(self, flat_syndromes, num_shots, stride=None)"},{"name":"decode_batch_into_flat","signature":"(self, flat_syndromes, num_shots, corrections, stride=None)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"set_edge_weights","signature":"(self, edge_weights)"}]},{"name":"Workbench","kind":"class","signature":"() -> 'None'","summary":"Controller for the QECTOR Workbench (load → benchmark → export).","methods":[{"name":"cancel_job","signature":"(self, job_id: 'str') -> 'str'"},{"name":"detect_backends","signature":"(self) -> 'dict'"},{"name":"environment_snapshot","signature":"(self) -> 'dict'"},{"name":"export_csv","signature":"(self, artifact: 'dict', path: 'str') -> 'str'"},{"name":"export_json","signature":"(self, artifact: 'dict', path: 'str') -> 'str'"},{"name":"export_pdf","signature":"(self, artifact: 'dict', path: 'str') -> 'str'"},{"name":"get_job","signature":"(self, job_id: 'str') -> 'dict'"},{"name":"get_license_info","signature":"(self) -> 'dict'"},{"name":"job_artifact","signature":"(self, job_id: 'str') -> 'dict | None'"},{"name":"list_jobs","signature":"(self) -> 'list[dict]'"},{"name":"load_dem","signature":"(self, source: 'Any') -> 'dict'"},{"name":"load_stim","signature":"(self, source: 'Any') -> 'dict'"},{"name":"run_benchmark","signature":"(self, spec: 'dict', job: 'Job | None' = None) -> 'dict'"},{"name":"set_license_key","signature":"(self, key: 'str') -> 'None'"},{"name":"shutdown","signature":"(self) -> 'None'"},{"name":"submit_job","signature":"(self, spec: 'dict') -> 'str'"},{"name":"wait","signature":"(self, job_id: 'str', timeout: 'float | None' = None) -> 'dict'"}]},{"name":"backend","kind":"module","signature":"","summary":"qector_decoder_v3.backend - Workload-Aware AutoDecoder with Self-Auto-Debug & Multi-Tier Fallback.","methods":[]},{"name":"batched_bp_decode","kind":"function","signature":"(H: 'Any', syndromes: 'Any', *, error_rate: 'float' = 0.05, priors: 'Any' = None, max_iter: 'int' = 30, alpha: 'float' = 1.0, bp_method: 'str' = 'min_sum', prefer_gpu: 'bool' = True, early_stop: 'bool' = True, return_llr: 'bool' = False) -> 'tuple[np.ndarray, np.ndarray] | tuple[np.ndarray, np.ndarray, np.ndarray]'","summary":"Decode a stack of syndromes with batched belief propagation.","methods":[]},{"name":"belief_matching","kind":"module","signature":"","summary":"qector_decoder_v3.belief_matching - belief-propagation + MWPM (belief-matching).","methods":[]},{"name":"benchmarking","kind":"module","signature":"","summary":"qector_decoder_v3.benchmarking - reproducible, statistically-honest benchmarks.","methods":[]},{"name":"bp_cupy","kind":"module","signature":"","summary":"qector_decoder_v3.bp_cupy - batched, GPU-resident belief propagation.","methods":[]},{"name":"bposd","kind":"module","signature":"","summary":"qector_decoder_v3.bposd - belief propagation + ordered-statistics decoding.","methods":[]},{"name":"changelog","kind":"function","signature":"() -> str","summary":"Return a human-readable changelog string for the loaded package.","methods":[]},{"name":"check_to_edges","kind":"function","signature":"(check_to_qubits)","summary":"Convert check_to_qubits to edge list.","methods":[]},{"name":"clear_decoder_cache","kind":"function","signature":"()","summary":"Clear the in-memory decoder and decoder pool LRU caches.","methods":[]},{"name":"codes","kind":"module","signature":"","summary":"qector_decoder_v3.codes - Code-family helpers.","methods":[]},{"name":"colour_code","kind":"module","signature":"","summary":"C1-04: Colour-code decoder.","methods":[]},{"name":"compute_detector_differences","kind":"function","signature":"(history)","summary":"Computes XOR detector differences across consecutive syndrome rounds: detector_t = raw_t ^ raw_{t-1}.","methods":[]},{"name":"cuda_is_available","kind":"function","signature":"()","summary":"","methods":[]},{"name":"decode_mmap","kind":"function","signature":"(syndrome_path: 'str', output_path: 'str', check_to_qubits, n_qubits: 'int', decoder_type: 'str' = 'cpu_batch', batch_size: 'int' = 65536, n_shots: 'int | None' = None, dtype: '_np.dtype' = dtype('uint8'), verbose: 'bool' = False)","summary":"Out-of-core batch decoding via memory-mapped arrays.","methods":[]},{"name":"decode_with_diagnostics","kind":"function","signature":"(code: 'Any', syndrome: 'Sequence[int]', kind: 'str' = 'blossom', decoder: 'Any' = None, logicals: 'np.ndarray | None' = None) -> 'DecodeResult'","summary":"Decode one syndrome and return a fully-populated :class:\`DecodeResult\`.","methods":[]},{"name":"decode_with_gnn","kind":"function","signature":"(check_to_qubits, n_qubits, syndrome, **kwargs) -> 'np.ndarray'","summary":"One-shot GNN-guided MWPM decode (see :class:\`GNNBeliefMatcher\`).","methods":[]},{"name":"decoder_cache","kind":"module","signature":"","summary":"qector_decoder_v3.decoder_cache - LRU-decoder cache and factory functions.","methods":[]},{"name":"decoder_pool","kind":"module","signature":"","summary":"qector_decoder_v3.decoder_pool - Multi-process decoder pool.","methods":[]},{"name":"dem","kind":"module","signature":"","summary":"qector_decoder_v3.dem - Stim Detector Error Model (DEM) loader.","methods":[]},{"name":"detect_hardware","kind":"function","signature":"() -> 'HardwareProfile'","summary":"Return the live :class:\`HardwareProfile\` (alias for \`\`HardwareProfile.detect\`\`).","methods":[]},{"name":"enforce_distance_cap","kind":"function","signature":"(distance) -> None","summary":"Enforce that *distance* does not exceed the active tier's cap.","methods":[]},{"name":"enforce_unlocked","kind":"function","signature":"() -> None","summary":"Hard-gate decode path when no valid license is active (QECTOR_ENFORCE=1).","methods":[]},{"name":"estimate_distance","kind":"function","signature":"(check_to_qubits, n_qubits=None)","summary":"Python wrapper for estimate_distance.","methods":[]},{"name":"flush_usage","kind":"function","signature":"(customer_id: 'str | None' = None, api_key: 'str | None' = None) -> dict","summary":"Flush accumulated decode shots to the Stripe Billing Meter Events API.","methods":[]},{"name":"from_circuit","kind":"function","signature":"(circuit, decoder_type='blossom', **kwargs)","summary":"Build a decoder from a Stim circuit in one call.","methods":[]},{"name":"generate_biconnected_qldpc_checks","kind":"function","signature":"(n_qubits, degree)","summary":"Generate a bipolar / biconnected qLDPC Tanner graph parity check matrix.","methods":[]},{"name":"generate_parity_check_matrix","kind":"function","signature":"(check_to_qubits, n_qubits=None)","summary":"Return the binary parity-check matrix \`\`H\`\` for *check_to_qubits*.","methods":[]},{"name":"generate_repetition_code_checks","kind":"function","signature":"(distance)","summary":"Generate a 1D repetition/chain code for testing.","methods":[]},{"name":"generate_ring_code_checks","kind":"function","signature":"(distance)","summary":"Generate a simple 1D ring code for testing.","methods":[]},{"name":"generate_space_time_surface_code_checks","kind":"function","signature":"(distance, rounds)","summary":"Generate 3D space-time surface code checks across multiple rounds.","methods":[]},{"name":"generate_surface_code_checks","kind":"function","signature":"(distance)","summary":"Generate compact periodic (toric) surface-code checks.","methods":[]},{"name":"generate_toy_code_checks","kind":"function","signature":"(distance)","summary":"Generate a toy code (not a proper quantum code) with d*d qubits for backward compatibility.","methods":[]},{"name":"generate_triangular_color_code_4_8_8_checks","kind":"function","signature":"(distance)","summary":"Generate 4.8.8 triangular color code parity check matrix.","methods":[]},{"name":"get_accumulated_shots","kind":"function","signature":"() -> int","summary":"Get total accumulated decode shots.","methods":[]},{"name":"get_backend","kind":"function","signature":"() -> 'GpuBackend'","summary":"Return the cached :class:\`GpuBackend\` capability snapshot (built once).","methods":[]},{"name":"get_decoder","kind":"function","signature":"(checks_tuple: 'tuple[tuple[int, ...]]', n_qubits: 'int', decoder_type: 'str' = 'union_find')","summary":"Get a decoder, constructing it once and caching for reuse.","methods":[]},{"name":"get_decoder_pool","kind":"function","signature":"(checks_tuple: 'tuple[tuple[int, ...]]', n_qubits: 'int', decoder_type: 'str' = 'union_find', n_workers: 'int | None' = None)","summary":"Get a multi-process :class:\`DecoderPool\`, constructed once and cached.","methods":[]},{"name":"get_latency_quantiles","kind":"function","signature":"()","summary":"\`get_latency_quantiles() -> tuple[float, float, float] | None\`","methods":[]},{"name":"get_license_info","kind":"function","signature":"() -> dict","summary":"Get active license info dictionary.","methods":[]},{"name":"gpu_available","kind":"function","signature":"() -> 'bool'","summary":"Return \`\`True\`\` iff CuPy is importable **and** a CUDA device is usable.","methods":[]},{"name":"gpu_backend","kind":"module","signature":"","summary":"qector_decoder_v3.gpu_backend - the CuPy GPU backend abstraction.","methods":[]},{"name":"has_cuda_rust","kind":"function","signature":"() -> 'bool'","summary":"Return \`\`True\`\` iff the Rust \`\`CUDABatchDecoder\`\` reports a usable device.","methods":[]},{"name":"has_cupy","kind":"function","signature":"() -> 'bool'","summary":"Return \`\`True\`\` if the \`\`cupy\`\` module can be imported.","methods":[]},{"name":"license","kind":"module","signature":"","summary":"","methods":[]},{"name":"opencl_is_available","kind":"function","signature":"()","summary":"","methods":[]},{"name":"predecoder","kind":"module","signature":"","summary":"qector_decoder_v3.predecoder - a fast, faithful matching predecoder.","methods":[]},{"name":"pymatching","kind":"module","signature":"","summary":"qector_decoder_v3.pymatching_compat - a PyMatching-compatible \`\`Matching\`\` API.","methods":[]},{"name":"pymatching_compat","kind":"module","signature":"","summary":"qector_decoder_v3.pymatching_compat - a PyMatching-compatible \`\`Matching\`\` API.","methods":[]},{"name":"qiskit_plugin","kind":"module","signature":"","summary":"QECTOR Qiskit Plugin - optional integration with the Qiskit ecosystem.","methods":[]},{"name":"recommend","kind":"function","signature":"(code_family: 'Any' = None, distance: 'int | None' = None, n_qubits: 'int | None' = None, batch_size: 'int' = 1, priority: 'str' = 'balanced', hardware: 'HardwareLike' = None, *, graphlike: 'bool | None' = None) -> 'Recommendation'","summary":"Return a rich :class:\`Recommendation\` for a decoding problem.","methods":[]},{"name":"recommend_decoder","kind":"function","signature":"(code_family: 'Any' = None, distance: 'int | None' = None, n_qubits: 'int | None' = None, batch_size: 'int' = 1, priority: 'str' = 'balanced', hardware: 'HardwareLike' = None) -> 'str'","summary":"Return the *name* of the recommended decoder class (see :func:\`recommend\`).","methods":[]},{"name":"record_shots","kind":"function","signature":"(count: int) -> None","summary":"Record decoding shots into telemetry buffer.","methods":[]},{"name":"rest_api","kind":"module","signature":"","summary":"Minimal REST API for QECTOR.","methods":[]},{"name":"result","kind":"module","signature":"","summary":"qector_decoder_v3.result - Rich decode results, diagnostics and debug output.","methods":[]},{"name":"routing","kind":"module","signature":"","summary":"qector_decoder_v3.routing - intelligent decoder router / auto-selection.","methods":[]},{"name":"run_mcp_server","kind":"function","signature":"()","summary":"Python signature: \`\`\`python run_mcp_server() \`\`\`","methods":[]},{"name":"set_license_key","kind":"function","signature":"(key: str) -> None","summary":"Set the global QECTOR license key for tier enforcement.","methods":[]},{"name":"set_license_key_file","kind":"function","signature":"(path) -> None","summary":"Load a license key from *path* and activate it.","methods":[]},{"name":"sinter_compat","kind":"module","signature":"","summary":"qector_decoder_v3.sinter_compat - plug QECTOR into Sinter.","methods":[]},{"name":"sliding_window_decode","kind":"function","signature":"(syndrome_rounds: 'Any', code: 'Any' = None, *, check_to_qubits: 'Sequence[Sequence[int]] | None' = None, n_qubits: 'int | None' = None, window_size: 'int' = 8, decoder: 'Any | None' = None, logicals: 'Any' = None, prefer_gpu: 'bool | None' = None) -> 'StreamingResult'","summary":"Decode a whole multi-round syndrome stream window-by-window.","methods":[]},{"name":"sparse_blossom_radix_neighbors","kind":"function","signature":"(decoder, defects, k=8)","summary":"Return the k-nearest candidate edges (sorted by distance) for \`defects\`.","methods":[]},{"name":"start_metrics_server","kind":"function","signature":"(addr='127.0.0.1:9090')","summary":"Start the Prometheus metrics HTTP server.","methods":[]},{"name":"stim_compat","kind":"module","signature":"","summary":"Stim compatibility layer - Conversion and wrappers for the Stim ecosystem.","methods":[]},{"name":"streaming","kind":"module","signature":"","summary":"qector_decoder_v3.streaming - a higher-level Python streaming / multi-round decode *orchestration* layer.","methods":[]},{"name":"stripe_integration","kind":"module","signature":"","summary":"QECTOR Decoder v3 - Full Stripe API & Webhook License Fulfillment Integration","methods":[]},{"name":"verify_license_token","kind":"function","signature":"(token: 'str', customer_email: 'str' = '') -> 'bool'","summary":"Verifies the license token signature completely offline using Ed25519.","methods":[]},{"name":"workbench","kind":"module","signature":"","summary":"qector_decoder_v3.workbench - the QECTOR Workbench application controller.","methods":[]}]`),m={package:"qector-decoder-v3",version:v,generated:w,items:q},D=["class","function","module"];function C(){const[a,l]=i.useState(""),[t,u]=i.useState("all"),o=m.items,c=i.useMemo(()=>{const r=a.trim().toLowerCase();return o.filter(s=>(t==="all"||s.kind===t)&&(!r||s.name.toLowerCase().includes(r)||s.summary.toLowerCase().includes(r)))},[o,a,t]);return e.jsx("section",{className:"section-padding pb-24","aria-labelledby":"api-index",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsx("h2",{id:"api-index",className:"text-3xl font-bold mb-2",children:"API index"}),e.jsxs("p",{className:"text-secondary text-sm mb-6 max-w-3xl",children:["Generated from the published ",e.jsxs("code",{className:"font-mono text-cyan-200",children:[m.package," ",m.version]})," wheel on ",m.generated,": every public name in ",e.jsx("code",{className:"font-mono text-cyan-200",children:"qector_decoder_v3"}),", with the signature Python reports and the first paragraph of its docstring."," ",o.length," names."]}),e.jsxs("div",{className:"flex flex-wrap gap-3 mb-6",children:[e.jsx("label",{className:"sr-only",htmlFor:"api-q",children:"Filter the API index"}),e.jsx("input",{id:"api-q",type:"search",value:a,onChange:r=>l(r.target.value),placeholder:"Filter by name or description",className:"flex-1 min-w-[14rem] bg-surface border border-gridline rounded-lg px-3 py-2 text-sm text-primary placeholder:text-muted-foreground focus:outline-none focus:border-cyan-300/50"}),e.jsx("div",{className:"flex gap-1",role:"group","aria-label":"Kind",children:["all",...D].map(r=>e.jsx("button",{type:"button","aria-pressed":t===r,onClick:()=>u(r),className:`px-3 py-2 rounded-lg text-xs font-semibold capitalize border ${t===r?"border-cyan-300/50 text-cyan-300 bg-cyan-300/10":"border-gridline text-secondary hover:text-primary"}`,children:{all:"All",class:"Classes",function:"Functions",module:"Modules"}[r]},r))})]}),e.jsxs("ul",{className:"space-y-3",children:[c.map(r=>e.jsxs("li",{className:"bg-[#0b1329]/40 border border-slate-800/80 rounded-2xl p-4",children:[e.jsxs("div",{className:"flex flex-wrap items-baseline gap-x-3 gap-y-1",children:[e.jsx("span",{className:"text-[10px] uppercase tracking-wider font-semibold text-muted-foreground",children:r.kind}),e.jsxs("code",{className:"font-mono text-cyan-300 text-sm break-all",children:[r.name,e.jsx("span",{className:"text-secondary",children:r.signature})]})]}),r.summary&&e.jsx("p",{className:"text-secondary text-sm mt-2 leading-relaxed",children:r.summary}),r.methods.length>0&&e.jsxs("details",{className:"mt-2",children:[e.jsxs("summary",{className:"text-xs text-muted-foreground cursor-pointer hover:text-cyan-300",children:[r.methods.length," public methods"]}),e.jsx("ul",{className:"mt-2 grid md:grid-cols-2 gap-x-6 gap-y-1",children:r.methods.map(s=>e.jsx("li",{children:e.jsxs("code",{className:"font-mono text-xs text-primary break-all",children:[s.name,e.jsx("span",{className:"text-muted-foreground",children:s.signature})]})},s.name))})]})]},r.name)),c.length===0&&e.jsx("li",{className:"text-muted-foreground text-sm",children:"No names match."})]})]})})}function B(){const[a,l]=i.useState(""),[t,u]=i.useState("BlossomDecoder"),o=i.useRef(null),c=[{name:"BlossomDecoder",signature:"BlossomDecoder(dem: stim.DetectorErrorModel, *, adaptive_k: bool = True, timeout: Optional[float] = None)",desc:"Minimum-weight perfect matching (MWPM) decoder for CSS stabilizer codes. Uses an exact matching solver to pair syndrome checks.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"adaptive_k",type:"bool",default:"True",desc:"Enable Union-Find pre-filtering to compress graph"},{name:"timeout",type:"float",default:"None",desc:"Max seconds allowed to match a syndrome"}],example:`import qector_decoder_v3 as qd -decoder = qd.BlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"BeliefMatchingDecoder",signature:'BeliefMatchingDecoder(dem: stim.DetectorErrorModel, *, bp_iters: int = 30, max_paths: int = 10, bp_method: str = "product_sum")',desc:"Accuracy-oriented decoder. Uses Belief Propagation (BP) preprocessing to compute edge probabilities, and then runs matching on a reweighted Blossom graph. Use when accuracy matters more than latency.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"bp_iters",type:"int",default:"30",desc:"Max iterations for Belief Propagation"},{name:"max_paths",type:"int",default:"10",desc:"Max alternative paths for match reweighting"},{name:"bp_method",type:"str",default:'"product_sum"',desc:"BP update equation to resolve constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.BeliefMatchingDecoder(dem, bp_iters=30) -correction = decoder.decode(syndrome)`},{name:"BpOsdDecoder",signature:'BpOsdDecoder(dem: stim.DetectorErrorModel, *, osd_order: int = 40, osd_method: str = "osd_cs")',desc:"Belief Propagation + Ordered Statistics Decoding. A common approach for qLDPC codes, where matching graphs are undefined. Handles non-CSS stabilizer layouts.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"osd_order",type:"int",default:"40",desc:"OSD search order limit"},{name:"osd_method",type:"str",default:'"osd_cs"',desc:"OSD resolution method"}],example:`import qector_decoder_v3 as qd -decoder = qd.BpOsdDecoder(dem, osd_order=40) -correction = decoder.decode(syndrome)`},{name:"UnionFindDecoder",signature:"UnionFindDecoder(dem: stim.DetectorErrorModel, *, use_combined: bool = True)",desc:"Near-linear time approximate decoder. Resolves syndromes by cluster growth and path compression. Scaling is O(N), making it ideal for large distance offline simulations.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"use_combined",type:"bool",default:"True",desc:"Enable combined cluster growth constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.UnionFindDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"CPUBatchDecoder",signature:"CPUBatchDecoder(dem: stim.DetectorErrorModel, *, num_threads: int = 0)",desc:"Multi-threaded CPU batch decoder. Leverages Rayon parallelism across CPU cores to decode thousands of syndromes concurrently.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"num_threads",type:"int",default:"0",desc:"Number of worker threads (0 = auto-detect physical cores)"}],example:`import qector_decoder_v3 as qd -decoder = qd.CPUBatchDecoder(dem, num_threads=8) -corrections = decoder.decode_batch(syndromes_matrix)`},{name:"GpuBatchDecoder / CUDABatchDecoder / OpenCLBatchDecoder",signature:"CUDABatchDecoder(dem: stim.DetectorErrorModel, *, batch_size: int = 2048)",desc:"Native GPU batch decoders. Implements CUDA and OpenCL device pipelines to solve thousands of syndromes in parallel. Check availability with CUDABatchDecoder.is_available().",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"batch_size",type:"int",default:"2048",desc:"Parallel batch sizing in GPU VRAM"}],example:`import qector_decoder_v3 as qd -if qd.CUDABatchDecoder.is_available(): - decoder = qd.CUDABatchDecoder(dem, batch_size=4096) - corrections = decoder.decode_batch(syndromes_array)`},{name:"SparseBlossomDecoder",signature:"SparseBlossomDecoder(dem: stim.DetectorErrorModel)",desc:"Low-latency region growing blossom variant optimized for ring-like and sparse detector error graphs.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -decoder = qd.SparseBlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"get_decoder / clear_decoder_cache",signature:'get_decoder(dem_or_h, decoder_type: str = "auto", **kwargs)',desc:"Cached decoder factory for instantiating and caching decoders by error model hash to avoid redundant graph construction.",parameters:[{name:"dem_or_h",type:"Union[stim.DetectorErrorModel, np.ndarray]",default:"Required",desc:"Detector model or H matrix"},{name:"decoder_type",type:"str",default:'"auto"',desc:"Target decoder family name"}],example:`import qector_decoder_v3 as qd -decoder = qd.get_decoder(dem, decoder_type="blossom") -qd.clear_decoder_cache()`},{name:"decode_mmap / decode_with_diagnostics",signature:"decode_mmap(decoder, input_filepath: str, output_filepath: str)",desc:"Out-of-core memory-mapped file decoder for processing gigabyte-scale syndrome files on disk without loading entire matrices into RAM. Returns structured DecodeResult.",parameters:[{name:"decoder",type:"DecoderInstance",default:"Required",desc:"Initialized decoder instance"},{name:"input_filepath",type:"str",default:"Required",desc:"Path to binary syndrome file"},{name:"output_filepath",type:"str",default:"Required",desc:"Path to write binary correction results"}],example:`import qector_decoder_v3 as qd -res = qd.decode_mmap(decoder, "syndromes.bin", "corrections.bin") -print(res.shots_processed, res.latency_seconds)`},{name:"Workbench API",signature:"Workbench(config: Optional[dict] = None)",desc:"High-level orchestration and benchmarking engine for configuring decoding pipelines, running multi-decoder comparative sweeps, and exporting performance reports.",parameters:[{name:"config",type:"dict",default:"None",desc:"Workbench configuration dictionary"}],example:`import qector_decoder_v3 as qd -wb = qd.Workbench() -results = wb.benchmark(dem, shots=100000)`},{name:"stim_compat & sinter_compat",signature:"sinter_compat.qector_sinter_decoders()",desc:"Ecosystem integration helpers providing native compatibility with Stim circuits and Sinter benchmarking harnesses.",parameters:[{name:"sinter_decoders",type:"dict",default:"Required",desc:"Sinter compiled decoder mapping"}],example:`import sinter -from qector_decoder_v3.sinter_compat import qector_sinter_decoders -decoders = qector_sinter_decoders()`},{name:"license.verify_license_token",signature:"license.verify_license_token(token: str) -> bool",desc:"Offline Ed25519 cryptographic signature verification function for commercial evaluation and production license tokens.",parameters:[{name:"token",type:"str",default:"Required",desc:"Signed JWT/Ed25519 license token string"}],example:`from qector_decoder_v3.license import verify_license_token -is_valid = verify_license_token(token_str)`},{name:"HybridDecoder & HybridCascadeDecoder",signature:"HybridCascadeDecoder(dem: stim.DetectorErrorModel) # Feature-gated / source build",desc:"Experimental decoders combining fast Union-Find pre-filtering with exact Blossom fallback for ambiguous clusters. Note: HybridCascadeDecoder requires full-feature source build and may raise unavailable in standard pre-compiled wheels.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -# Research / full-feature build required -decoder = qd.HybridDecoder(dem)`},{name:"PredecodedDecoder & LookupTableDecoder",signature:"LookupTableDecoder(code_matrix: np.ndarray)",desc:"Research decoders for lookup-table fast matching on small stabilizer codes and wrapping pre-calculated decoding results for pipeline benchmarking.",parameters:[{name:"code_matrix",type:"np.ndarray",default:"Required",desc:"Parity check matrix"}],example:`import qector_decoder_v3 as qd -decoder = qd.LookupTableDecoder(H_matrix)`},{name:"ColourCodeDecoder, TwoStageDecoder & AmbiguityClusterDecoder",signature:"ColourCodeDecoder(dem: stim.DetectorErrorModel)",desc:"Research decoders: native colour-code decoding over undecomposed detector error models (color_code family), two-stage decoding pipelines, and ambiguity-cluster resolution.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"}],example:`import qector_decoder_v3 as qd -decoder = qd.ColourCodeDecoder(dem)`},{name:"GNNBeliefMatcher",signature:"GNNBeliefMatcher(dem: stim.DetectorErrorModel, model_path: str)",desc:"Research-stage graph neural network enhanced belief propagation module. Not validated for production use.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"},{name:"model_path",type:"str",default:"Required",desc:"Path to trained GNN weights file"}],example:`import qector_decoder_v3 as qd -matcher = qd.GNNBeliefMatcher(dem, "weights.pt")`}],r=c.filter(n=>n.name.toLowerCase().includes(a.toLowerCase())),s=n=>{u(t===n?null:n)};return i.useEffect(()=>{window.matchMedia("(prefers-reduced-motion: reduce)").matches||t&&o.current&&p.fromTo(o.current,{opacity:0,y:10},{opacity:1,y:0,duration:.3,ease:"power2.out"})},[t]),e.jsxs(e.Fragment,{children:[e.jsx(h,{title:"Technical Reference · QECTOR",description:"API reference, decoder parameters, and technical documentation for QECTOR quantum error correction decoder."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"17 Decoder Configurations · Stim DEM · Generated API Index"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(g,{text:"Technical Reference",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"API overview for QECTOR's decoders. The guided examples below are illustrative; the API index at the end of this page is generated from the published 1.0.1 package."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"relative mb-8 max-w-md mx-auto md:mx-0",children:[e.jsx("label",{htmlFor:"decoder-search",className:"sr-only",children:"Search decoders"}),e.jsx("input",{id:"decoder-search",type:"search",placeholder:"Search decoders...",value:a,onChange:n=>l(n.target.value),className:"w-full px-10 py-3 bg-surface/50 border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors"}),e.jsx(f,{className:"w-5 h-5 text-muted-foreground absolute left-3 top-3.5"})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-12 gap-8",children:[e.jsxs("div",{className:"lg:col-span-4 space-y-2",children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider px-2 mb-2 flex items-center gap-1.5",children:[e.jsx(y,{className:"w-3.5 h-3.5"}),"Decoder Classes"]}),e.jsxs("div",{className:"space-y-1",children:[r.map(n=>e.jsxs("button",{"aria-expanded":t===n.name,onClick:()=>s(n.name),className:`w-full flex items-center justify-between p-3.5 rounded-xl border text-sm transition-all duration-200 ${t===n.name?"bg-cyan-300/10 text-cyan-300 border-cyan-300/20 shadow-xs":"bg-surface/20 text-secondary hover:text-primary hover:bg-surface/40 border-gridline/50"}`,children:[e.jsx("span",{className:"font-mono font-semibold",children:n.name}),t===n.name?e.jsx(b,{className:"w-4 h-4"}):e.jsx(x,{className:"w-4 h-4 text-muted-foreground"})]},n.name)),r.length===0&&e.jsxs("div",{className:"p-4 text-center text-xs text-muted-foreground italic border border-dashed border-gridline rounded-xl",children:['No decoders matching "',a,'"']})]})]}),e.jsx("div",{className:"lg:col-span-8",children:t?(()=>{const n=c.find(d=>d.name===t);return n?e.jsxs("div",{ref:o,className:"card-surface bg-surface/10 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold text-primary font-mono",children:n.name}),e.jsx("p",{className:"text-secondary text-sm mt-3 leading-relaxed",children:n.desc})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(N,{className:"w-3.5 h-3.5"}),"Signature"]}),e.jsx(_,{code:n.signature,language:"python",className:"!my-0 bg-void/70"})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(k,{className:"w-3.5 h-3.5"}),"Parameters"]}),e.jsx("div",{className:"overflow-x-auto border border-gridline rounded-xl",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse text-left text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 text-xs font-semibold uppercase tracking-wider",children:[e.jsx("th",{className:"p-3",children:"Name"}),e.jsx("th",{className:"p-3",children:"Type"}),e.jsx("th",{className:"p-3",children:"Default"}),e.jsx("th",{className:"p-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:n.parameters.map(d=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-mono font-semibold text-primary",children:d.name}),e.jsx("td",{className:"p-3 font-mono text-xs text-secondary",children:d.type}),e.jsx("td",{className:"p-3 font-mono text-xs text-cyan-300",children:d.default}),e.jsx("td",{className:"p-3 text-xs text-secondary leading-relaxed",children:d.desc})]},d.name))})]})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2",children:"Usage Example"}),e.jsx(_,{code:n.example,language:"python",filename:`${n.name.toLowerCase()}_usage.py`})]})]}):null})():e.jsx("div",{className:"h-full flex items-center justify-center border border-dashed border-gridline rounded-2xl p-12 text-center text-muted-foreground italic text-sm",children:"Select a decoder class from the sidebar to inspect parameters and example usage."})})]})]})}),e.jsx(C,{})]})}export{B as default}; diff --git a/assets/TechnicalReference-CXFs7c1x.js b/assets/TechnicalReference-CXFs7c1x.js deleted file mode 100644 index a1893e98..00000000 --- a/assets/TechnicalReference-CXFs7c1x.js +++ /dev/null @@ -1,30 +0,0 @@ -import{r as i,j as e}from"./vendor-react-BiHfrq0e.js";import{S as h,C as _}from"./index-PdoH5kLF.js";import{N as g}from"./NeuralReveal-Bsl9IGCr.js";import{g as p}from"./vendor-gsap-a3sj5zmn.js";import{q as f,h as y,r as b,s as x,T as N,B as k}from"./vendor-ui-B8TlNU4J.js";const v="1.0.1",w="2026-11-06",q=JSON.parse(`[{"name":"AmbiguityClusterDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, error_rate=0.05, ambig_threshold=0.5, max_cluster_size=12)","summary":"C1-02: BP + ambiguity-clustered exact decoding for qLDPC codes.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"}]},{"name":"AutoDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, config: 'BackendConfig | None' = None)","summary":"Workload-aware, self-debugging decoder that routes to CUDA / OpenCL / Rayon / CPU / Fallback.","methods":[{"name":"auto_select","signature":"(checks, n_qubits, batch_size=1)"},{"name":"available_backends","signature":"(self) -> 'list[str]'"},{"name":"batch_decode","signature":"(self, syndromes) -> 'np.ndarray'"},{"name":"calibrate","signature":"(self, sizes=(64, 256, 1024, 4096, 16384), repeats: 'int' = 3, seed: 'int' = 0)"},{"name":"decode","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"diagnostics","signature":"(self) -> 'dict'"},{"name":"reset_backend_health","signature":"(self) -> 'None'"},{"name":"select","signature":"(self, batch_size: 'int') -> 'str'"}]},{"name":"AutoRouter","kind":"class","signature":"(*, priority: 'str' = 'balanced', hardware: 'HardwareLike' = None, error_rate: 'float' = 0.05, code_family: 'Any' = None, use_native_auto: 'bool' = True) -> 'None'","summary":"Construct, cache, and dispatch the policy-selected decoder for a problem.","methods":[{"name":"decode","signature":"(self, checks_or_H: 'Any', syndromes: 'Any', **ctx: 'Any') -> 'np.ndarray'"},{"name":"explain","signature":"(self, checks_or_H: 'Any' = None, syndromes: 'Any' = None, **ctx: 'Any') -> 'dict[str, Any]'"}]},{"name":"BPOSDDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, error_rate=0.1, bp_method=None, osd_order=None)","summary":"Belief Propagation + Ordered Statistics Decoding.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"bp_decode","signature":"(self, syndrome, max_iterations=20)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_batch_flat","signature":"(self, flat_syndromes, num_shots, stride=None)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"decode_timed","signature":"(self, syndrome, max_latency_ms=10.0)"}]},{"name":"Backend","kind":"class","signature":"()","summary":"Backend identifiers & Fallback Tiers.","methods":[]},{"name":"BackendConfig","kind":"class","signature":"(rayon_threshold: 'int' = 8, gpu_threshold: 'int' = 4096, allow_gpu: 'bool' = True, prefer: 'str' = 'cuda', force: 'str | None' = None, enable_auto_debug: 'bool' = True) -> None","summary":"Tunable thresholds and policy for :class:\`AutoDecoder\`.","methods":[]},{"name":"BatchDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None)","summary":"Parallel batch decoder using Rayon (Rust data parallelism).","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"parallel_batch_decode","signature":"(self, syndromes)"}]},{"name":"BatchedBpDecoder","kind":"class","signature":"(H: 'Any', *, error_rate: 'float' = 0.05, priors: 'Any' = None, max_iter: 'int' = 30, alpha: 'float' = 1.0, bp_method: 'str' = 'min_sum', prefer_gpu: 'bool' = True) -> 'None'","summary":"Batched belief-propagation decoder over a fixed GF(2) check matrix \`\`H\`\`.","methods":[{"name":"decode_batch","signature":"(self, syndromes: 'Any', *, return_llr: 'bool' = False, early_stop: 'bool' = True) -> 'tuple[np.ndarray, np.ndarray] | tuple[np.ndarray, np.ndarray, np.ndarray]'"}]},{"name":"BeliefMatching","kind":"class","signature":"(matrices: '_Matrices', max_iter: 'int' = 30, bp_shortcut: 'bool' = False)","summary":"Belief-propagation + minimum-weight perfect matching decoder.","methods":[{"name":"decode","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"decode_batch","signature":"(self, shots) -> 'np.ndarray'"},{"name":"decode_correction","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"decode_observables","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"from_detector_error_model","signature":"(dem: 'Any', max_iter: 'int' = 20) -> 'BeliefMatching'"},{"name":"from_numpy_h","signature":"(H, error_rate: 'float' = 0.05, max_iter: 'int' = 20) -> 'BeliefMatching'"},{"name":"from_stim_circuit","signature":"(circuit, max_iter: 'int' = 20) -> 'BeliefMatching'"}]},{"name":"BenchmarkSuite","kind":"class","signature":"(check_to_qubits, n_qubits=None, n_samples=10000, seed=42)","summary":"Production benchmark suite. Wraps Rust-native benchmarking.","methods":[{"name":"run","signature":"(self)"},{"name":"save","signature":"(self, path, results)"}]},{"name":"BlossomDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, edge_weights=None)","summary":"Minimum-Weight Perfect Matching (MWPM) decoder via Edmonds' Blossom algorithm.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"batch_decode_weighted","signature":"(self, syndromes, weights)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"set_edge_weights","signature":"(self, weights)"}]},{"name":"BpOsdDecoder","kind":"class","signature":"(H: 'Any', error_rate: 'float' = 0.05, priors: 'Any' = None, max_iter: 'int' = 30, ms_scale: 'float' = 1.0, osd_order: 'int' = 0, bp_method: 'str' = 'sum_product', use_gpu: 'Any' = None, max_latency_ms: 'float | None' = None, damping: 'float' = 0.0, osd_lambda: 'Any' = None)","summary":"BP + ordered-statistics decoder for general GF(2) check matrices.","methods":[{"name":"batch_decode","signature":"(self, syndromes) -> 'np.ndarray'"},{"name":"decode","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"decode_correction","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix: 'Any' = None) -> 'np.ndarray'"}]},{"name":"CPUBatchDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None)","summary":"SIMD-friendly CPU batch decoder with pooled buffers and SoA transposition.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"batch_decode_par","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"}]},{"name":"CUDABatchDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, edge_weights=None)","summary":"","methods":[{"name":"batch_decode","signature":"(self, /, syndromes)"},{"name":"is_available","signature":"()"},{"name":"reset","signature":"(self, /)"}]},{"name":"CUDABpOsdDecoder","kind":"class","signature":"(check_to_qubits, n_qubits, error_rate)","summary":"","methods":[{"name":"batch_decode","signature":"(self, /, syndromes)"}]},{"name":"ColourCodeDecoder","kind":"class","signature":"(dem: 'Any', max_iter: 'int' = 30, osd_order: 'int' = 0, method: 'str' = 'bposd')","summary":"Colour-code decoder: BP-OSD over the undecomposed hypergraph DEM.","methods":[{"name":"decode","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"decode_batch","signature":"(self, syndromes) -> 'np.ndarray'"},{"name":"decode_correction","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"decode_observables","signature":"(self, syndrome) -> 'np.ndarray'"},{"name":"from_detector_error_model","signature":"(dem: 'Any', max_iter: 'int' = 30, osd_order: 'int' = 0) -> 'ColourCodeDecoder'"},{"name":"from_stim_circuit","signature":"(circuit: 'Any', max_iter: 'int' = 30, osd_order: 'int' = 0) -> 'ColourCodeDecoder'"}]},{"name":"DecodeResult","kind":"class","signature":"(correction: 'np.ndarray', syndrome: 'np.ndarray', n_qubits: 'int', n_checks: 'int', weight: 'float | None' = None, logical_flips: 'np.ndarray | None' = None, decode_seconds: 'float | None' = None, backend: 'str' = 'cpu', fallback: 'bool' = False, fallback_reason: 'str' = '', syndrome_valid: 'bool | None' = None, metadata: 'dict' = ) -> None","summary":"Result of decoding a single syndrome, with diagnostics and metadata.","methods":[{"name":"as_uint8","signature":"(self) -> 'np.ndarray'"},{"name":"explain","signature":"(self) -> 'str'"},{"name":"to_dict","signature":"(self) -> 'dict'"},{"name":"to_json","signature":"(self, indent: 'int' = 2) -> 'str'"},{"name":"verify","signature":"(self, H: 'np.ndarray') -> 'bool'"}]},{"name":"DecoderName","kind":"class","signature":"()","summary":"String identifiers for the routable decoders.","methods":[]},{"name":"DecoderPool","kind":"class","signature":"(check_to_qubits=None, n_qubits=None, decoder_type: 'str' = 'fast_union_find', n_workers: 'int | None' = None, num_threads: 'int | None' = None)","summary":"Multi-process decoder pool for parallel syndrome decoding.","methods":[{"name":"close","signature":"(self)"},{"name":"decode","signature":"(self, syndromes) -> 'np.ndarray'"}]},{"name":"DetectorGraph","kind":"class","signature":"(check_to_qubits, syndrome, check_positions=None, check_types=None, base_weights=None, n_qubits=None)","summary":"Detector graph used by the GNN and hybrid decoder paths.","methods":[{"name":"update_syndrome","signature":"(self, syndrome)"}]},{"name":"FastUnionFindDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, edge_weights=None)","summary":"Union-Find with a zero-allocation hot path, reusable buffers and a C ABI.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_batch_flat","signature":"(self, flat_syndromes, num_shots, stride=None)"},{"name":"decode_batch_into_flat","signature":"(self, flat_syndromes, num_shots, corrections, stride=None)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"set_edge_weights","signature":"(self, edge_weights)"}]},{"name":"GNNBeliefMatcher","kind":"class","signature":"(check_to_qubits, n_qubits=None, *, gnn=None, hidden_size: 'int' = 32, n_layers: 'int' = 2, train_samples: 'int' = 0, error_rate: 'float' = 0.05, train_epochs: 'int' = 3, seed=None)","summary":"End-to-end GNN-guided minimum-weight perfect matching decoder.","methods":[{"name":"batch_decode","signature":"(self, syndromes) -> 'np.ndarray'"},{"name":"decode","signature":"(self, syndrome) -> 'np.ndarray'"}]},{"name":"GNNPredecoder","kind":"class","signature":"(node_feat_dim=None, edge_feat_dim=None, hidden_size=16, n_layers=2)","summary":"Graph Neural Network Pre-Decoder for dynamic edge weight prediction.","methods":[{"name":"forward","signature":"(self, graph)"},{"name":"load_weights","signature":"(self, path)"},{"name":"new_standard","signature":"(hidden_size=16, n_layers=2)"},{"name":"predict_with_node_probs","signature":"(self, graph)"},{"name":"save_weights","signature":"(self, path)"},{"name":"train","signature":"(self, graphs, targets, n_epochs)"}]},{"name":"GNNTrainer","kind":"class","signature":"(check_to_qubits, n_qubits, error_rate=0.1)","summary":"End-to-end GNN training pipeline with Blossom teacher model.","methods":[{"name":"generate_dataset","signature":"(self, n_samples)"},{"name":"train","signature":"(self, gnn, n_samples, n_epochs)"},{"name":"train_bp","signature":"(self, gnn, n_samples, n_epochs, max_bp_iter=20)"}]},{"name":"HardwareProfile","kind":"class","signature":"(cuda_rust: 'bool' = False, gpu: 'bool' = False) -> None","summary":"Resolved view of the GPU capability the policy should assume.","methods":[{"name":"as_dict","signature":"(self) -> 'dict[str, bool]'"},{"name":"detect","signature":"() -> 'HardwareProfile'"}]},{"name":"HybridCascadeDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, edge_weights=None, max_accept_weight=None, escalation=None, error_rate=None)","summary":"Hybrid cascading decoder: Union-Find pre-filter + Blossom/BP-OSD escalation.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"batch_decode_timed","signature":"(self, syndromes, max_latency_ms=10.0)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"decode_timed","signature":"(self, syndrome, max_latency_ms=10.0)"}]},{"name":"HybridDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, check_positions=None, check_types=None, base_weights=None, gnn_hidden_size=64, gnn_n_layers=3)","summary":"GNN Pre-Decoder + SparseBlossom hybrid decoder.","methods":[{"name":"batch_decode_hybrid","signature":"(self, syndromes)"},{"name":"batch_decode_standard","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_heuristic","signature":"(self, syndrome)"},{"name":"decode_hybrid","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"decode_standard","signature":"(self, syndrome)"},{"name":"load_weights","signature":"(self, path)"},{"name":"save_weights","signature":"(self, path)"},{"name":"train","signature":"(self, n_samples, n_epochs, error_rate=0.1)"},{"name":"train_bp","signature":"(self, n_samples, n_epochs, error_rate=0.1, max_bp_iter=20)"}]},{"name":"LERBenchmark","kind":"class","signature":"()","summary":"Logical Error Rate benchmark suite.","methods":[{"name":"run_all","signature":"(self)"}]},{"name":"LookupTableDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None)","summary":"Exact lookup-table decoder with UnionFind fallback.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"build_table","signature":"(self, max_entries)"},{"name":"decode","signature":"(self, syndrome)"}]},{"name":"MAX_WORKERS","kind":"constant","signature":"","summary":"","methods":[]},{"name":"Matching","kind":"class","signature":"(H: 'Any' = None, weights: 'Any' = None, faults_matrix: 'Any' = None)","summary":"Minimum-weight perfect-matching decoder with a PyMatching-style API.","methods":[{"name":"add_boundary_edge","signature":"(self, node: 'int', fault_ids: 'Any' = None, weight: 'float' = 1.0, **_: 'Any') -> 'None'"},{"name":"add_edge","signature":"(self, node1: 'int', node2: 'int', fault_ids: 'Any' = None, weight: 'float' = 1.0, **_: 'Any') -> 'None'"},{"name":"check_matrix","signature":"(self) -> 'np.ndarray'"},{"name":"decode","signature":"(self, syndrome: 'Sequence[int]') -> 'np.ndarray'"},{"name":"decode_batch","signature":"(self, shots: 'Any') -> 'np.ndarray'"},{"name":"decode_to_edges_array","signature":"(self, syndrome: 'Sequence[int]') -> 'np.ndarray'"},{"name":"edges","signature":"(self) -> 'list[tuple[int | None, int | None, dict]]'"},{"name":"from_check_matrix","signature":"(H: 'Any', weights: 'Any' = None, faults_matrix: 'Any' = None, **_: 'Any') -> 'Matching'"},{"name":"from_detector_error_model","signature":"(dem: 'Any') -> 'Matching'"},{"name":"from_stim_dem","signature":"(dem: 'Any') -> 'Matching'"}]},{"name":"NativeAutoDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, distance=5, noise_rate=0.01, batch_size=1, is_qldpc=False)","summary":"","methods":[{"name":"batch_decode","signature":"(self, /, syndromes)"},{"name":"batch_decode_strided","signature":"(self, /, syndromes, stride=None, require_alignment=False)"},{"name":"decode","signature":"(self, /, syndrome)"}]},{"name":"NeuralPredecoder","kind":"class","signature":"(n_input, n_output, n_hidden1=None, n_hidden2=None)","summary":"Lightweight MLP pre-decoder with Xavier initialization and SGD training.","methods":[{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"predict","signature":"(self, syndrome)"},{"name":"train","signature":"(self, syndromes, corrections, n_epochs, learning_rate=0.01)"}]},{"name":"OpenCLBatchDecoder","kind":"class","signature":"(*a, **k)","summary":"OpenCL batch decoder - requires source build with --features opencl.","methods":[{"name":"is_available","signature":"()"}]},{"name":"PredecodedDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, backend: 'str' = 'blossom')","summary":"Local-matching predecoder + exact/fast residual decoder.","methods":[{"name":"batch_decode","signature":"(self, syndromes) -> 'np.ndarray'"},{"name":"decode","signature":"(self, syndrome) -> 'np.ndarray'"}]},{"name":"Recommendation","kind":"class","signature":"(decoder: 'str', reason: 'str', family: 'str', priority: 'str', batch_size: 'int', hardware: 'dict[str, bool]', gpu_batched_bp: 'bool' = False, forced: 'bool' = False, graphlike: 'bool | None' = None, distance: 'int | None' = None, n_qubits: 'int | None' = None) -> None","summary":"A decoder choice plus the reasoning and inputs that produced it.","methods":[{"name":"as_dict","signature":"(self) -> 'dict[str, Any]'"}]},{"name":"SlidingWindowDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, window_size=10, decay_factor=0.8, check_types=None, p_data=None, p_meas=None)","summary":"Sliding-window decoder with exponential decay weighting or fault-tolerant space-time decoding.","methods":[{"name":"decode","signature":"(self, syndrome=None)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"detector_history","signature":"(self)"},{"name":"flush","signature":"(self)"},{"name":"update","signature":"(self, round_syndrome)"}]},{"name":"SpaceTimeDecoder","kind":"class","signature":"(check_to_qubits, check_types, n_rounds, p_data, p_meas, n_qubits=None)","summary":"PyO3 wrapper for [\`SpaceTimeDecoder\`]: fault-tolerant temporal decoding via XOR-of-consecutive-rounds detectors matched on a 3D (space x time) graph, as opposed to [\`crate::sliding_window::PySlidingWindowDecoder\`] /…","methods":[{"name":"decode_history","signature":"(self, /)"},{"name":"reset","signature":"(self, /)"},{"name":"update","signature":"(self, /, round_syndrome)"}]},{"name":"SparseBlossomDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, edge_weights=None)","summary":"Region-growing Sparse Blossom decoder with RadixHeap.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"decode_with_weights","signature":"(self, syndrome, weights)"}]},{"name":"StreamingDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, history_size=10, check_types=None, p_data=None, p_meas=None)","summary":"Streaming decoder that accumulates syndromes over multiple rounds.","methods":[{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"decode_rounds","signature":"(self, rounds)"},{"name":"detector_history","signature":"(self)"},{"name":"flush","signature":"(self)"},{"name":"update","signature":"(self, round_syndrome)"}]},{"name":"StreamingResult","kind":"class","signature":"(corrections: 'np.ndarray', syndromes: 'np.ndarray', telemetry: 'StreamingTelemetry', logical_flips: 'np.ndarray | None' = None) -> None","summary":"Outcome of a full streaming decode.","methods":[{"name":"is_valid","signature":"(self, H: 'Any', *, prefer_gpu: 'bool' = True) -> 'bool'"}]},{"name":"StreamingSession","kind":"class","signature":"(code_or_checks: 'Any', n_qubits: 'int | None' = None, *, window_size: 'int' = 8, decoder: 'Any | None' = None, logicals: 'Any' = None, prefer_gpu: 'bool | None' = None) -> 'None'","summary":"Incremental multi-round decode with a sliding commit buffer.","methods":[{"name":"committed_corrections","signature":"(self) -> 'np.ndarray'"},{"name":"committed_syndromes","signature":"(self) -> 'np.ndarray'"},{"name":"flush","signature":"(self) -> 'list[np.ndarray]'"},{"name":"push_round","signature":"(self, syndrome: 'Any') -> 'list[np.ndarray]'"},{"name":"reset","signature":"(self) -> 'None'"},{"name":"run","signature":"(self, syndrome_rounds: 'Any') -> 'StreamingResult'"}]},{"name":"StreamingTelemetry","kind":"class","signature":"(rounds: 'int' = 0, windows: 'int' = 0, committed: 'int' = 0, decode_seconds: 'float' = 0.0, per_window_seconds: 'list[float]' = , gpu: 'dict[str, int]' = , backend: 'dict[str, Any]' = , rounds_valid: 'int | None' = None) -> None","summary":"Real, measured counters for a streaming decode run.","methods":[{"name":"as_dict","signature":"(self) -> 'dict[str, Any]'"},{"name":"record_window","signature":"(self, seconds: 'float', rounds: 'int' = 1) -> 'None'"}]},{"name":"TwoStageDecoder","kind":"class","signature":"(check_to_qubits, check_types, n_qubits=None, x_decoder='blossom', z_decoder='blossom')","summary":"C1-03: Correlated two-stage matching for CSS codes.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"}]},{"name":"UnionFindDecoder","kind":"class","signature":"(check_to_qubits, n_qubits=None, edge_weights=None)","summary":"Production-ready Union-Find quantum error correction decoder.","methods":[{"name":"batch_decode","signature":"(self, syndromes)"},{"name":"decode","signature":"(self, syndrome)"},{"name":"decode_batch_flat","signature":"(self, flat_syndromes, num_shots, stride=None)"},{"name":"decode_batch_into_flat","signature":"(self, flat_syndromes, num_shots, corrections, stride=None)"},{"name":"decode_correction","signature":"(self, syndrome)"},{"name":"decode_observables","signature":"(self, syndrome, observables_matrix=None)"},{"name":"set_edge_weights","signature":"(self, edge_weights)"}]},{"name":"Workbench","kind":"class","signature":"() -> 'None'","summary":"Controller for the QECTOR Workbench (load → benchmark → export).","methods":[{"name":"cancel_job","signature":"(self, job_id: 'str') -> 'str'"},{"name":"detect_backends","signature":"(self) -> 'dict'"},{"name":"environment_snapshot","signature":"(self) -> 'dict'"},{"name":"export_csv","signature":"(self, artifact: 'dict', path: 'str') -> 'str'"},{"name":"export_json","signature":"(self, artifact: 'dict', path: 'str') -> 'str'"},{"name":"export_pdf","signature":"(self, artifact: 'dict', path: 'str') -> 'str'"},{"name":"get_job","signature":"(self, job_id: 'str') -> 'dict'"},{"name":"get_license_info","signature":"(self) -> 'dict'"},{"name":"job_artifact","signature":"(self, job_id: 'str') -> 'dict | None'"},{"name":"list_jobs","signature":"(self) -> 'list[dict]'"},{"name":"load_dem","signature":"(self, source: 'Any') -> 'dict'"},{"name":"load_stim","signature":"(self, source: 'Any') -> 'dict'"},{"name":"run_benchmark","signature":"(self, spec: 'dict', job: 'Job | None' = None) -> 'dict'"},{"name":"set_license_key","signature":"(self, key: 'str') -> 'None'"},{"name":"shutdown","signature":"(self) -> 'None'"},{"name":"submit_job","signature":"(self, spec: 'dict') -> 'str'"},{"name":"wait","signature":"(self, job_id: 'str', timeout: 'float | None' = None) -> 'dict'"}]},{"name":"backend","kind":"module","signature":"","summary":"qector_decoder_v3.backend - Workload-Aware AutoDecoder with Self-Auto-Debug & Multi-Tier Fallback.","methods":[]},{"name":"batched_bp_decode","kind":"function","signature":"(H: 'Any', syndromes: 'Any', *, error_rate: 'float' = 0.05, priors: 'Any' = None, max_iter: 'int' = 30, alpha: 'float' = 1.0, bp_method: 'str' = 'min_sum', prefer_gpu: 'bool' = True, early_stop: 'bool' = True, return_llr: 'bool' = False) -> 'tuple[np.ndarray, np.ndarray] | tuple[np.ndarray, np.ndarray, np.ndarray]'","summary":"Decode a stack of syndromes with batched belief propagation.","methods":[]},{"name":"belief_matching","kind":"module","signature":"","summary":"qector_decoder_v3.belief_matching - belief-propagation + MWPM (belief-matching).","methods":[]},{"name":"benchmarking","kind":"module","signature":"","summary":"qector_decoder_v3.benchmarking - reproducible, statistically-honest benchmarks.","methods":[]},{"name":"bp_cupy","kind":"module","signature":"","summary":"qector_decoder_v3.bp_cupy - batched, GPU-resident belief propagation.","methods":[]},{"name":"bposd","kind":"module","signature":"","summary":"qector_decoder_v3.bposd - belief propagation + ordered-statistics decoding.","methods":[]},{"name":"changelog","kind":"function","signature":"() -> str","summary":"Return a human-readable changelog string for the loaded package.","methods":[]},{"name":"check_to_edges","kind":"function","signature":"(check_to_qubits)","summary":"Convert check_to_qubits to edge list.","methods":[]},{"name":"clear_decoder_cache","kind":"function","signature":"()","summary":"Clear the in-memory decoder and decoder pool LRU caches.","methods":[]},{"name":"codes","kind":"module","signature":"","summary":"qector_decoder_v3.codes - Code-family helpers.","methods":[]},{"name":"colour_code","kind":"module","signature":"","summary":"C1-04: Colour-code decoder.","methods":[]},{"name":"compute_detector_differences","kind":"function","signature":"(history)","summary":"Computes XOR detector differences across consecutive syndrome rounds: detector_t = raw_t ^ raw_{t-1}.","methods":[]},{"name":"cuda_is_available","kind":"function","signature":"()","summary":"","methods":[]},{"name":"decode_mmap","kind":"function","signature":"(syndrome_path: 'str', output_path: 'str', check_to_qubits, n_qubits: 'int', decoder_type: 'str' = 'cpu_batch', batch_size: 'int' = 65536, n_shots: 'int | None' = None, dtype: '_np.dtype' = dtype('uint8'), verbose: 'bool' = False)","summary":"Out-of-core batch decoding via memory-mapped arrays.","methods":[]},{"name":"decode_with_diagnostics","kind":"function","signature":"(code: 'Any', syndrome: 'Sequence[int]', kind: 'str' = 'blossom', decoder: 'Any' = None, logicals: 'np.ndarray | None' = None) -> 'DecodeResult'","summary":"Decode one syndrome and return a fully-populated :class:\`DecodeResult\`.","methods":[]},{"name":"decode_with_gnn","kind":"function","signature":"(check_to_qubits, n_qubits, syndrome, **kwargs) -> 'np.ndarray'","summary":"One-shot GNN-guided MWPM decode (see :class:\`GNNBeliefMatcher\`).","methods":[]},{"name":"decoder_cache","kind":"module","signature":"","summary":"qector_decoder_v3.decoder_cache - LRU-decoder cache and factory functions.","methods":[]},{"name":"decoder_pool","kind":"module","signature":"","summary":"qector_decoder_v3.decoder_pool - Multi-process decoder pool.","methods":[]},{"name":"dem","kind":"module","signature":"","summary":"qector_decoder_v3.dem - Stim Detector Error Model (DEM) loader.","methods":[]},{"name":"detect_hardware","kind":"function","signature":"() -> 'HardwareProfile'","summary":"Return the live :class:\`HardwareProfile\` (alias for \`\`HardwareProfile.detect\`\`).","methods":[]},{"name":"enforce_distance_cap","kind":"function","signature":"(distance) -> None","summary":"Enforce that *distance* does not exceed the active tier's cap.","methods":[]},{"name":"enforce_unlocked","kind":"function","signature":"() -> None","summary":"Hard-gate decode path when no valid license is active (QECTOR_ENFORCE=1).","methods":[]},{"name":"estimate_distance","kind":"function","signature":"(check_to_qubits, n_qubits=None)","summary":"Python wrapper for estimate_distance.","methods":[]},{"name":"flush_usage","kind":"function","signature":"(customer_id: 'str | None' = None, api_key: 'str | None' = None) -> dict","summary":"Flush accumulated decode shots to the Stripe Billing Meter Events API.","methods":[]},{"name":"from_circuit","kind":"function","signature":"(circuit, decoder_type='blossom', **kwargs)","summary":"Build a decoder from a Stim circuit in one call.","methods":[]},{"name":"generate_biconnected_qldpc_checks","kind":"function","signature":"(n_qubits, degree)","summary":"Generate a bipolar / biconnected qLDPC Tanner graph parity check matrix.","methods":[]},{"name":"generate_parity_check_matrix","kind":"function","signature":"(check_to_qubits, n_qubits=None)","summary":"Return the binary parity-check matrix \`\`H\`\` for *check_to_qubits*.","methods":[]},{"name":"generate_repetition_code_checks","kind":"function","signature":"(distance)","summary":"Generate a 1D repetition/chain code for testing.","methods":[]},{"name":"generate_ring_code_checks","kind":"function","signature":"(distance)","summary":"Generate a simple 1D ring code for testing.","methods":[]},{"name":"generate_space_time_surface_code_checks","kind":"function","signature":"(distance, rounds)","summary":"Generate 3D space-time surface code checks across multiple rounds.","methods":[]},{"name":"generate_surface_code_checks","kind":"function","signature":"(distance)","summary":"Generate compact periodic (toric) surface-code checks.","methods":[]},{"name":"generate_toy_code_checks","kind":"function","signature":"(distance)","summary":"Generate a toy code (not a proper quantum code) with d*d qubits for backward compatibility.","methods":[]},{"name":"generate_triangular_color_code_4_8_8_checks","kind":"function","signature":"(distance)","summary":"Generate 4.8.8 triangular color code parity check matrix.","methods":[]},{"name":"get_accumulated_shots","kind":"function","signature":"() -> int","summary":"Get total accumulated decode shots.","methods":[]},{"name":"get_backend","kind":"function","signature":"() -> 'GpuBackend'","summary":"Return the cached :class:\`GpuBackend\` capability snapshot (built once).","methods":[]},{"name":"get_decoder","kind":"function","signature":"(checks_tuple: 'tuple[tuple[int, ...]]', n_qubits: 'int', decoder_type: 'str' = 'union_find')","summary":"Get a decoder, constructing it once and caching for reuse.","methods":[]},{"name":"get_decoder_pool","kind":"function","signature":"(checks_tuple: 'tuple[tuple[int, ...]]', n_qubits: 'int', decoder_type: 'str' = 'union_find', n_workers: 'int | None' = None)","summary":"Get a multi-process :class:\`DecoderPool\`, constructed once and cached.","methods":[]},{"name":"get_latency_quantiles","kind":"function","signature":"()","summary":"\`get_latency_quantiles() -> tuple[float, float, float] | None\`","methods":[]},{"name":"get_license_info","kind":"function","signature":"() -> dict","summary":"Get active license info dictionary.","methods":[]},{"name":"gpu_available","kind":"function","signature":"() -> 'bool'","summary":"Return \`\`True\`\` iff CuPy is importable **and** a CUDA device is usable.","methods":[]},{"name":"gpu_backend","kind":"module","signature":"","summary":"qector_decoder_v3.gpu_backend - the CuPy GPU backend abstraction.","methods":[]},{"name":"has_cuda_rust","kind":"function","signature":"() -> 'bool'","summary":"Return \`\`True\`\` iff the Rust \`\`CUDABatchDecoder\`\` reports a usable device.","methods":[]},{"name":"has_cupy","kind":"function","signature":"() -> 'bool'","summary":"Return \`\`True\`\` if the \`\`cupy\`\` module can be imported.","methods":[]},{"name":"license","kind":"module","signature":"","summary":"","methods":[]},{"name":"opencl_is_available","kind":"function","signature":"()","summary":"","methods":[]},{"name":"predecoder","kind":"module","signature":"","summary":"qector_decoder_v3.predecoder - a fast, faithful matching predecoder.","methods":[]},{"name":"pymatching","kind":"module","signature":"","summary":"qector_decoder_v3.pymatching_compat - a PyMatching-compatible \`\`Matching\`\` API.","methods":[]},{"name":"pymatching_compat","kind":"module","signature":"","summary":"qector_decoder_v3.pymatching_compat - a PyMatching-compatible \`\`Matching\`\` API.","methods":[]},{"name":"qiskit_plugin","kind":"module","signature":"","summary":"QECTOR Qiskit Plugin - optional integration with the Qiskit ecosystem.","methods":[]},{"name":"recommend","kind":"function","signature":"(code_family: 'Any' = None, distance: 'int | None' = None, n_qubits: 'int | None' = None, batch_size: 'int' = 1, priority: 'str' = 'balanced', hardware: 'HardwareLike' = None, *, graphlike: 'bool | None' = None) -> 'Recommendation'","summary":"Return a rich :class:\`Recommendation\` for a decoding problem.","methods":[]},{"name":"recommend_decoder","kind":"function","signature":"(code_family: 'Any' = None, distance: 'int | None' = None, n_qubits: 'int | None' = None, batch_size: 'int' = 1, priority: 'str' = 'balanced', hardware: 'HardwareLike' = None) -> 'str'","summary":"Return the *name* of the recommended decoder class (see :func:\`recommend\`).","methods":[]},{"name":"record_shots","kind":"function","signature":"(count: int) -> None","summary":"Record decoding shots into telemetry buffer.","methods":[]},{"name":"rest_api","kind":"module","signature":"","summary":"Minimal REST API for QECTOR.","methods":[]},{"name":"result","kind":"module","signature":"","summary":"qector_decoder_v3.result - Rich decode results, diagnostics and debug output.","methods":[]},{"name":"routing","kind":"module","signature":"","summary":"qector_decoder_v3.routing - intelligent decoder router / auto-selection.","methods":[]},{"name":"run_mcp_server","kind":"function","signature":"()","summary":"Python signature: \`\`\`python run_mcp_server() \`\`\`","methods":[]},{"name":"set_license_key","kind":"function","signature":"(key: str) -> None","summary":"Set the global QECTOR license key for tier enforcement.","methods":[]},{"name":"set_license_key_file","kind":"function","signature":"(path) -> None","summary":"Load a license key from *path* and activate it.","methods":[]},{"name":"sinter_compat","kind":"module","signature":"","summary":"qector_decoder_v3.sinter_compat - plug QECTOR into Sinter.","methods":[]},{"name":"sliding_window_decode","kind":"function","signature":"(syndrome_rounds: 'Any', code: 'Any' = None, *, check_to_qubits: 'Sequence[Sequence[int]] | None' = None, n_qubits: 'int | None' = None, window_size: 'int' = 8, decoder: 'Any | None' = None, logicals: 'Any' = None, prefer_gpu: 'bool | None' = None) -> 'StreamingResult'","summary":"Decode a whole multi-round syndrome stream window-by-window.","methods":[]},{"name":"sparse_blossom_radix_neighbors","kind":"function","signature":"(decoder, defects, k=8)","summary":"Return the k-nearest candidate edges (sorted by distance) for \`defects\`.","methods":[]},{"name":"start_metrics_server","kind":"function","signature":"(addr='127.0.0.1:9090')","summary":"Start the Prometheus metrics HTTP server.","methods":[]},{"name":"stim_compat","kind":"module","signature":"","summary":"Stim compatibility layer - Conversion and wrappers for the Stim ecosystem.","methods":[]},{"name":"streaming","kind":"module","signature":"","summary":"qector_decoder_v3.streaming - a higher-level Python streaming / multi-round decode *orchestration* layer.","methods":[]},{"name":"stripe_integration","kind":"module","signature":"","summary":"QECTOR Decoder v3 - Full Stripe API & Webhook License Fulfillment Integration","methods":[]},{"name":"verify_license_token","kind":"function","signature":"(token: 'str', customer_email: 'str' = '') -> 'bool'","summary":"Verifies the license token signature completely offline using Ed25519.","methods":[]},{"name":"workbench","kind":"module","signature":"","summary":"qector_decoder_v3.workbench - the QECTOR Workbench application controller.","methods":[]}]`),m={package:"qector-decoder-v3",version:v,generated:w,items:q},D=["class","function","module"];function C(){const[a,l]=i.useState(""),[t,u]=i.useState("all"),o=m.items,c=i.useMemo(()=>{const r=a.trim().toLowerCase();return o.filter(s=>(t==="all"||s.kind===t)&&(!r||s.name.toLowerCase().includes(r)||s.summary.toLowerCase().includes(r)))},[o,a,t]);return e.jsx("section",{className:"section-padding pb-24","aria-labelledby":"api-index",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsx("h2",{id:"api-index",className:"text-3xl font-bold mb-2",children:"API index"}),e.jsxs("p",{className:"text-secondary text-sm mb-6 max-w-3xl",children:["Generated from the published ",e.jsxs("code",{className:"font-mono text-cyan-200",children:[m.package," ",m.version]})," wheel on ",m.generated,": every public name in ",e.jsx("code",{className:"font-mono text-cyan-200",children:"qector_decoder_v3"}),", with the signature Python reports and the first paragraph of its docstring."," ",o.length," names."]}),e.jsxs("div",{className:"flex flex-wrap gap-3 mb-6",children:[e.jsx("label",{className:"sr-only",htmlFor:"api-q",children:"Filter the API index"}),e.jsx("input",{id:"api-q",type:"search",value:a,onChange:r=>l(r.target.value),placeholder:"Filter by name or description",className:"flex-1 min-w-[14rem] bg-surface border border-gridline rounded-lg px-3 py-2 text-sm text-primary placeholder:text-muted-foreground focus:outline-none focus:border-cyan-300/50"}),e.jsx("div",{className:"flex gap-1",role:"group","aria-label":"Kind",children:["all",...D].map(r=>e.jsx("button",{type:"button","aria-pressed":t===r,onClick:()=>u(r),className:`px-3 py-2 rounded-lg text-xs font-semibold capitalize border ${t===r?"border-cyan-300/50 text-cyan-300 bg-cyan-300/10":"border-gridline text-secondary hover:text-primary"}`,children:{all:"All",class:"Classes",function:"Functions",module:"Modules"}[r]},r))})]}),e.jsxs("ul",{className:"space-y-3",children:[c.map(r=>e.jsxs("li",{className:"bg-[#0b1329]/40 border border-slate-800/80 rounded-2xl p-4",children:[e.jsxs("div",{className:"flex flex-wrap items-baseline gap-x-3 gap-y-1",children:[e.jsx("span",{className:"text-[10px] uppercase tracking-wider font-semibold text-muted-foreground",children:r.kind}),e.jsxs("code",{className:"font-mono text-cyan-300 text-sm break-all",children:[r.name,e.jsx("span",{className:"text-secondary",children:r.signature})]})]}),r.summary&&e.jsx("p",{className:"text-secondary text-sm mt-2 leading-relaxed",children:r.summary}),r.methods.length>0&&e.jsxs("details",{className:"mt-2",children:[e.jsxs("summary",{className:"text-xs text-muted-foreground cursor-pointer hover:text-cyan-300",children:[r.methods.length," public methods"]}),e.jsx("ul",{className:"mt-2 grid md:grid-cols-2 gap-x-6 gap-y-1",children:r.methods.map(s=>e.jsx("li",{children:e.jsxs("code",{className:"font-mono text-xs text-primary break-all",children:[s.name,e.jsx("span",{className:"text-muted-foreground",children:s.signature})]})},s.name))})]})]},r.name)),c.length===0&&e.jsx("li",{className:"text-muted-foreground text-sm",children:"No names match."})]})]})})}function B(){const[a,l]=i.useState(""),[t,u]=i.useState("BlossomDecoder"),o=i.useRef(null),c=[{name:"BlossomDecoder",signature:"BlossomDecoder(dem: stim.DetectorErrorModel, *, adaptive_k: bool = True, timeout: Optional[float] = None)",desc:"Minimum-weight perfect matching (MWPM) decoder for CSS stabilizer codes. Uses an exact matching solver to pair syndrome checks.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"adaptive_k",type:"bool",default:"True",desc:"Enable Union-Find pre-filtering to compress graph"},{name:"timeout",type:"float",default:"None",desc:"Max seconds allowed to match a syndrome"}],example:`import qector_decoder_v3 as qd -decoder = qd.BlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"BeliefMatchingDecoder",signature:'BeliefMatchingDecoder(dem: stim.DetectorErrorModel, *, bp_iters: int = 30, max_paths: int = 10, bp_method: str = "product_sum")',desc:"Accuracy-oriented decoder. Uses Belief Propagation (BP) preprocessing to compute edge probabilities, and then runs matching on a reweighted Blossom graph. Use when accuracy matters more than latency.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"bp_iters",type:"int",default:"30",desc:"Max iterations for Belief Propagation"},{name:"max_paths",type:"int",default:"10",desc:"Max alternative paths for match reweighting"},{name:"bp_method",type:"str",default:'"product_sum"',desc:"BP update equation to resolve constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.BeliefMatchingDecoder(dem, bp_iters=30) -correction = decoder.decode(syndrome)`},{name:"BpOsdDecoder",signature:'BpOsdDecoder(dem: stim.DetectorErrorModel, *, osd_order: int = 40, osd_method: str = "osd_cs")',desc:"Belief Propagation + Ordered Statistics Decoding. A common approach for qLDPC codes, where matching graphs are undefined. Handles non-CSS stabilizer layouts.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"osd_order",type:"int",default:"40",desc:"OSD search order limit"},{name:"osd_method",type:"str",default:'"osd_cs"',desc:"OSD resolution method"}],example:`import qector_decoder_v3 as qd -decoder = qd.BpOsdDecoder(dem, osd_order=40) -correction = decoder.decode(syndrome)`},{name:"UnionFindDecoder",signature:"UnionFindDecoder(dem: stim.DetectorErrorModel, *, use_combined: bool = True)",desc:"Near-linear time approximate decoder. Resolves syndromes by cluster growth and path compression. Scaling is O(N), making it ideal for large distance offline simulations.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"use_combined",type:"bool",default:"True",desc:"Enable combined cluster growth constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.UnionFindDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"CPUBatchDecoder",signature:"CPUBatchDecoder(dem: stim.DetectorErrorModel, *, num_threads: int = 0)",desc:"Multi-threaded CPU batch decoder. Leverages Rayon parallelism across CPU cores to decode thousands of syndromes concurrently.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"num_threads",type:"int",default:"0",desc:"Number of worker threads (0 = auto-detect physical cores)"}],example:`import qector_decoder_v3 as qd -decoder = qd.CPUBatchDecoder(dem, num_threads=8) -corrections = decoder.decode_batch(syndromes_matrix)`},{name:"GpuBatchDecoder / CUDABatchDecoder / OpenCLBatchDecoder",signature:"CUDABatchDecoder(dem: stim.DetectorErrorModel, *, batch_size: int = 2048)",desc:"Native GPU batch decoders. Implements CUDA and OpenCL device pipelines to solve thousands of syndromes in parallel. Check availability with CUDABatchDecoder.is_available().",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"batch_size",type:"int",default:"2048",desc:"Parallel batch sizing in GPU VRAM"}],example:`import qector_decoder_v3 as qd -if qd.CUDABatchDecoder.is_available(): - decoder = qd.CUDABatchDecoder(dem, batch_size=4096) - corrections = decoder.decode_batch(syndromes_array)`},{name:"SparseBlossomDecoder",signature:"SparseBlossomDecoder(dem: stim.DetectorErrorModel)",desc:"Low-latency region growing blossom variant optimized for ring-like and sparse detector error graphs.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -decoder = qd.SparseBlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"get_decoder / clear_decoder_cache",signature:'get_decoder(dem_or_h, decoder_type: str = "auto", **kwargs)',desc:"Cached decoder factory for instantiating and caching decoders by error model hash to avoid redundant graph construction.",parameters:[{name:"dem_or_h",type:"Union[stim.DetectorErrorModel, np.ndarray]",default:"Required",desc:"Detector model or H matrix"},{name:"decoder_type",type:"str",default:'"auto"',desc:"Target decoder family name"}],example:`import qector_decoder_v3 as qd -decoder = qd.get_decoder(dem, decoder_type="blossom") -qd.clear_decoder_cache()`},{name:"decode_mmap / decode_with_diagnostics",signature:"decode_mmap(decoder, input_filepath: str, output_filepath: str)",desc:"Out-of-core memory-mapped file decoder for processing gigabyte-scale syndrome files on disk without loading entire matrices into RAM. Returns structured DecodeResult.",parameters:[{name:"decoder",type:"DecoderInstance",default:"Required",desc:"Initialized decoder instance"},{name:"input_filepath",type:"str",default:"Required",desc:"Path to binary syndrome file"},{name:"output_filepath",type:"str",default:"Required",desc:"Path to write binary correction results"}],example:`import qector_decoder_v3 as qd -res = qd.decode_mmap(decoder, "syndromes.bin", "corrections.bin") -print(res.shots_processed, res.latency_seconds)`},{name:"Workbench API",signature:"Workbench(config: Optional[dict] = None)",desc:"High-level orchestration and benchmarking engine for configuring decoding pipelines, running multi-decoder comparative sweeps, and exporting performance reports.",parameters:[{name:"config",type:"dict",default:"None",desc:"Workbench configuration dictionary"}],example:`import qector_decoder_v3 as qd -wb = qd.Workbench() -results = wb.benchmark(dem, shots=100000)`},{name:"stim_compat & sinter_compat",signature:"sinter_compat.qector_sinter_decoders()",desc:"Ecosystem integration helpers providing native compatibility with Stim circuits and Sinter benchmarking harnesses.",parameters:[{name:"sinter_decoders",type:"dict",default:"Required",desc:"Sinter compiled decoder mapping"}],example:`import sinter -from qector_decoder_v3.sinter_compat import qector_sinter_decoders -decoders = qector_sinter_decoders()`},{name:"license.verify_license_token",signature:"license.verify_license_token(token: str) -> bool",desc:"Offline Ed25519 cryptographic signature verification function for commercial evaluation and production license tokens.",parameters:[{name:"token",type:"str",default:"Required",desc:"Signed JWT/Ed25519 license token string"}],example:`from qector_decoder_v3.license import verify_license_token -is_valid = verify_license_token(token_str)`},{name:"HybridDecoder & HybridCascadeDecoder",signature:"HybridCascadeDecoder(dem: stim.DetectorErrorModel) # Feature-gated / source build",desc:"Experimental decoders combining fast Union-Find pre-filtering with exact Blossom fallback for ambiguous clusters. Note: HybridCascadeDecoder requires full-feature source build and may raise unavailable in standard pre-compiled wheels.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -# Research / full-feature build required -decoder = qd.HybridDecoder(dem)`},{name:"PredecodedDecoder & LookupTableDecoder",signature:"LookupTableDecoder(code_matrix: np.ndarray)",desc:"Research decoders for lookup-table fast matching on small stabilizer codes and wrapping pre-calculated decoding results for pipeline benchmarking.",parameters:[{name:"code_matrix",type:"np.ndarray",default:"Required",desc:"Parity check matrix"}],example:`import qector_decoder_v3 as qd -decoder = qd.LookupTableDecoder(H_matrix)`},{name:"ColourCodeDecoder, TwoStageDecoder & AmbiguityClusterDecoder",signature:"ColourCodeDecoder(dem: stim.DetectorErrorModel)",desc:"Research decoders: native colour-code decoding over undecomposed detector error models (color_code family), two-stage decoding pipelines, and ambiguity-cluster resolution.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"}],example:`import qector_decoder_v3 as qd -decoder = qd.ColourCodeDecoder(dem)`},{name:"GNNBeliefMatcher",signature:"GNNBeliefMatcher(dem: stim.DetectorErrorModel, model_path: str)",desc:"Research-stage graph neural network enhanced belief propagation module. Not validated for production use.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"},{name:"model_path",type:"str",default:"Required",desc:"Path to trained GNN weights file"}],example:`import qector_decoder_v3 as qd -matcher = qd.GNNBeliefMatcher(dem, "weights.pt")`}],r=c.filter(n=>n.name.toLowerCase().includes(a.toLowerCase())),s=n=>{u(t===n?null:n)};return i.useEffect(()=>{window.matchMedia("(prefers-reduced-motion: reduce)").matches||t&&o.current&&p.fromTo(o.current,{opacity:0,y:10},{opacity:1,y:0,duration:.3,ease:"power2.out"})},[t]),e.jsxs(e.Fragment,{children:[e.jsx(h,{title:"Technical Reference · QECTOR",description:"API reference, decoder parameters, and technical documentation for QECTOR quantum error correction decoder."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"17 Decoder Configurations · Stim DEM · Generated API Index"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(g,{text:"Technical Reference",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"API overview for QECTOR's decoders. The guided examples below are illustrative; the API index at the end of this page is generated from the published 1.0.1 package."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"relative mb-8 max-w-md mx-auto md:mx-0",children:[e.jsx("label",{htmlFor:"decoder-search",className:"sr-only",children:"Search decoders"}),e.jsx("input",{id:"decoder-search",type:"search",placeholder:"Search decoders...",value:a,onChange:n=>l(n.target.value),className:"w-full px-10 py-3 bg-surface/50 border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors"}),e.jsx(f,{className:"w-5 h-5 text-muted-foreground absolute left-3 top-3.5"})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-12 gap-8",children:[e.jsxs("div",{className:"lg:col-span-4 space-y-2",children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider px-2 mb-2 flex items-center gap-1.5",children:[e.jsx(y,{className:"w-3.5 h-3.5"}),"Decoder Classes"]}),e.jsxs("div",{className:"space-y-1",children:[r.map(n=>e.jsxs("button",{"aria-expanded":t===n.name,onClick:()=>s(n.name),className:`w-full flex items-center justify-between p-3.5 rounded-xl border text-sm transition-all duration-200 ${t===n.name?"bg-cyan-300/10 text-cyan-300 border-cyan-300/20 shadow-xs":"bg-surface/20 text-secondary hover:text-primary hover:bg-surface/40 border-gridline/50"}`,children:[e.jsx("span",{className:"font-mono font-semibold",children:n.name}),t===n.name?e.jsx(b,{className:"w-4 h-4"}):e.jsx(x,{className:"w-4 h-4 text-muted-foreground"})]},n.name)),r.length===0&&e.jsxs("div",{className:"p-4 text-center text-xs text-muted-foreground italic border border-dashed border-gridline rounded-xl",children:['No decoders matching "',a,'"']})]})]}),e.jsx("div",{className:"lg:col-span-8",children:t?(()=>{const n=c.find(d=>d.name===t);return n?e.jsxs("div",{ref:o,className:"card-surface bg-surface/10 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold text-primary font-mono",children:n.name}),e.jsx("p",{className:"text-secondary text-sm mt-3 leading-relaxed",children:n.desc})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(N,{className:"w-3.5 h-3.5"}),"Signature"]}),e.jsx(_,{code:n.signature,language:"python",className:"!my-0 bg-void/70"})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(k,{className:"w-3.5 h-3.5"}),"Parameters"]}),e.jsx("div",{className:"overflow-x-auto border border-gridline rounded-xl",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse text-left text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 text-xs font-semibold uppercase tracking-wider",children:[e.jsx("th",{className:"p-3",children:"Name"}),e.jsx("th",{className:"p-3",children:"Type"}),e.jsx("th",{className:"p-3",children:"Default"}),e.jsx("th",{className:"p-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:n.parameters.map(d=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-mono font-semibold text-primary",children:d.name}),e.jsx("td",{className:"p-3 font-mono text-xs text-secondary",children:d.type}),e.jsx("td",{className:"p-3 font-mono text-xs text-cyan-300",children:d.default}),e.jsx("td",{className:"p-3 text-xs text-secondary leading-relaxed",children:d.desc})]},d.name))})]})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2",children:"Usage Example"}),e.jsx(_,{code:n.example,language:"python",filename:`${n.name.toLowerCase()}_usage.py`})]})]}):null})():e.jsx("div",{className:"h-full flex items-center justify-center border border-dashed border-gridline rounded-2xl p-12 text-center text-muted-foreground italic text-sm",children:"Select a decoder class from the sidebar to inspect parameters and example usage."})})]})]})}),e.jsx(C,{})]})}export{B as default}; diff --git a/assets/TechnicalReference-D9UxbEdI.js b/assets/TechnicalReference-D9UxbEdI.js deleted file mode 100644 index 3c40c45d..00000000 --- a/assets/TechnicalReference-D9UxbEdI.js +++ /dev/null @@ -1,30 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,C as n}from"./index-WV1aysjN.js";import{N as h}from"./NeuralReveal-BflyZYSb.js";import{g as f}from"./vendor-gsap-a3sj5zmn.js";import{r as x,h as g,s as b,o as y,T as _,B as v}from"./vendor-ui-B0ssGG4c.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";function R(){const[a,l]=o.useState(""),[t,m]=o.useState("BlossomDecoder"),s=o.useRef(null),c=[{name:"BlossomDecoder",signature:"BlossomDecoder(dem: stim.DetectorErrorModel, *, adaptive_k: bool = True, timeout: Optional[float] = None)",desc:"Minimum-weight perfect matching (MWPM) decoder for CSS stabilizer codes. Uses an exact matching solver to pair syndrome checks.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"adaptive_k",type:"bool",default:"True",desc:"Enable Union-Find pre-filtering to compress graph"},{name:"timeout",type:"float",default:"None",desc:"Max seconds allowed to match a syndrome"}],example:`import qector_decoder_v3 as qd -decoder = qd.BlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"BeliefMatchingDecoder",signature:'BeliefMatchingDecoder(dem: stim.DetectorErrorModel, *, bp_iters: int = 30, max_paths: int = 10, bp_method: str = "product_sum")',desc:"Accuracy-oriented decoder. Uses Belief Propagation (BP) preprocessing to compute edge probabilities, and then runs matching on a reweighted Blossom graph. Use when accuracy matters more than latency.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"bp_iters",type:"int",default:"30",desc:"Max iterations for Belief Propagation"},{name:"max_paths",type:"int",default:"10",desc:"Max alternative paths for match reweighting"},{name:"bp_method",type:"str",default:'"product_sum"',desc:"BP update equation to resolve constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.BeliefMatchingDecoder(dem, bp_iters=30) -correction = decoder.decode(syndrome)`},{name:"BpOsdDecoder",signature:'BpOsdDecoder(dem: stim.DetectorErrorModel, *, osd_order: int = 40, osd_method: str = "osd_cs")',desc:"Belief Propagation + Ordered Statistics Decoding. A common approach for qLDPC codes, where matching graphs are undefined. Handles non-CSS stabilizer layouts.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"osd_order",type:"int",default:"40",desc:"OSD search order limit"},{name:"osd_method",type:"str",default:'"osd_cs"',desc:"OSD resolution method"}],example:`import qector_decoder_v3 as qd -decoder = qd.BpOsdDecoder(dem, osd_order=40) -correction = decoder.decode(syndrome)`},{name:"UnionFindDecoder",signature:"UnionFindDecoder(dem: stim.DetectorErrorModel, *, use_combined: bool = True)",desc:"Near-linear time approximate decoder. Resolves syndromes by cluster growth and path compression. Scaling is O(N), making it ideal for large distance offline simulations.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"use_combined",type:"bool",default:"True",desc:"Enable combined cluster growth constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.UnionFindDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"CPUBatchDecoder",signature:"CPUBatchDecoder(dem: stim.DetectorErrorModel, *, num_threads: int = 0)",desc:"Multi-threaded CPU batch decoder. Leverages Rayon parallelism across CPU cores to decode thousands of syndromes concurrently.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"num_threads",type:"int",default:"0",desc:"Number of worker threads (0 = auto-detect physical cores)"}],example:`import qector_decoder_v3 as qd -decoder = qd.CPUBatchDecoder(dem, num_threads=8) -corrections = decoder.decode_batch(syndromes_matrix)`},{name:"GpuBatchDecoder / CUDABatchDecoder / OpenCLBatchDecoder",signature:"CUDABatchDecoder(dem: stim.DetectorErrorModel, *, batch_size: int = 2048)",desc:"Native GPU batch decoders. Implements CUDA and OpenCL device pipelines to solve thousands of syndromes in parallel. Check availability with CUDABatchDecoder.is_available().",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"batch_size",type:"int",default:"2048",desc:"Parallel batch sizing in GPU VRAM"}],example:`import qector_decoder_v3 as qd -if qd.CUDABatchDecoder.is_available(): - decoder = qd.CUDABatchDecoder(dem, batch_size=4096) - corrections = decoder.decode_batch(syndromes_array)`},{name:"SparseBlossomDecoder",signature:"SparseBlossomDecoder(dem: stim.DetectorErrorModel)",desc:"Low-latency region growing blossom variant optimized for ring-like and sparse detector error graphs.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -decoder = qd.SparseBlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"get_decoder / clear_decoder_cache",signature:'get_decoder(dem_or_h, decoder_type: str = "auto", **kwargs)',desc:"Cached decoder factory for instantiating and caching decoders by error model hash to avoid redundant graph construction.",parameters:[{name:"dem_or_h",type:"Union[stim.DetectorErrorModel, np.ndarray]",default:"Required",desc:"Detector model or H matrix"},{name:"decoder_type",type:"str",default:'"auto"',desc:"Target decoder family name"}],example:`import qector_decoder_v3 as qd -decoder = qd.get_decoder(dem, decoder_type="blossom") -qd.clear_decoder_cache()`},{name:"decode_mmap / decode_with_diagnostics",signature:"decode_mmap(decoder, input_filepath: str, output_filepath: str)",desc:"Out-of-core memory-mapped file decoder for processing gigabyte-scale syndrome files on disk without loading entire matrices into RAM. Returns structured DecodeResult.",parameters:[{name:"decoder",type:"DecoderInstance",default:"Required",desc:"Initialized decoder instance"},{name:"input_filepath",type:"str",default:"Required",desc:"Path to binary syndrome file"},{name:"output_filepath",type:"str",default:"Required",desc:"Path to write binary correction results"}],example:`import qector_decoder_v3 as qd -res = qd.decode_mmap(decoder, "syndromes.bin", "corrections.bin") -print(res.shots_processed, res.latency_seconds)`},{name:"Workbench API",signature:"Workbench(config: Optional[dict] = None)",desc:"High-level orchestration and benchmarking engine for configuring decoding pipelines, running multi-decoder comparative sweeps, and exporting performance reports.",parameters:[{name:"config",type:"dict",default:"None",desc:"Workbench configuration dictionary"}],example:`import qector_decoder_v3 as qd -wb = qd.Workbench() -results = wb.benchmark(dem, shots=100000)`},{name:"stim_compat & sinter_compat",signature:"sinter_compat.qector_sinter_decoders()",desc:"Ecosystem integration helpers providing native compatibility with Stim circuits and Sinter benchmarking harnesses.",parameters:[{name:"sinter_decoders",type:"dict",default:"Required",desc:"Sinter compiled decoder mapping"}],example:`import sinter -from qector_decoder_v3.sinter_compat import qector_sinter_decoders -decoders = qector_sinter_decoders()`},{name:"license.verify_license_token",signature:"license.verify_license_token(token: str) -> bool",desc:"Offline Ed25519 cryptographic signature verification function for commercial evaluation and production license tokens.",parameters:[{name:"token",type:"str",default:"Required",desc:"Signed JWT/Ed25519 license token string"}],example:`from qector_decoder_v3.license import verify_license_token -is_valid = verify_license_token(token_str)`},{name:"HybridDecoder & HybridCascadeDecoder",signature:"HybridCascadeDecoder(dem: stim.DetectorErrorModel) # Feature-gated / source build",desc:"Experimental decoders combining fast Union-Find pre-filtering with exact Blossom fallback for ambiguous clusters. Note: HybridCascadeDecoder requires full-feature source build and may raise unavailable in standard pre-compiled wheels.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -# Research / full-feature build required -decoder = qd.HybridDecoder(dem)`},{name:"PredecodedDecoder & LookupTableDecoder",signature:"LookupTableDecoder(code_matrix: np.ndarray)",desc:"Research decoders for lookup-table fast matching on small stabilizer codes and wrapping pre-calculated decoding results for pipeline benchmarking.",parameters:[{name:"code_matrix",type:"np.ndarray",default:"Required",desc:"Parity check matrix"}],example:`import qector_decoder_v3 as qd -decoder = qd.LookupTableDecoder(H_matrix)`},{name:"ColourCodeDecoder, TwoStageDecoder & AmbiguityClusterDecoder",signature:"ColourCodeDecoder(dem: stim.DetectorErrorModel)",desc:"Research decoders: native colour-code decoding over undecomposed detector error models (color_code family), two-stage decoding pipelines, and ambiguity-cluster resolution.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"}],example:`import qector_decoder_v3 as qd -decoder = qd.ColourCodeDecoder(dem)`},{name:"GNNBeliefMatcher",signature:"GNNBeliefMatcher(dem: stim.DetectorErrorModel, model_path: str)",desc:"Research-stage graph neural network enhanced belief propagation module. Not validated for production use.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"},{name:"model_path",type:"str",default:"Required",desc:"Path to trained GNN weights file"}],example:`import qector_decoder_v3 as qd -matcher = qd.GNNBeliefMatcher(dem, "weights.pt")`}],i=c.filter(r=>r.name.toLowerCase().includes(a.toLowerCase())),p=r=>{m(t===r?null:r)};return o.useEffect(()=>{window.matchMedia("(prefers-reduced-motion: reduce)").matches||t&&s.current&&f.fromTo(s.current,{opacity:0,y:10},{opacity:1,y:0,duration:.3,ease:"power2.out"})},[t]),e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"Technical Reference · QECTOR",description:"API reference, decoder parameters, and technical documentation for QECTOR quantum error correction decoder."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"16 Decoder APIs · Stim DEM · Signatures Are Examples"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(h,{text:"Technical Reference",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"API overview for QECTOR's decoders. Signatures, defaults, and snippets below are illustrative examples; treat the installed package as the authoritative reference."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"relative mb-8 max-w-md mx-auto md:mx-0",children:[e.jsx("label",{htmlFor:"decoder-search",className:"sr-only",children:"Search decoders"}),e.jsx("input",{id:"decoder-search",type:"search",placeholder:"Search decoders...",value:a,onChange:r=>l(r.target.value),className:"w-full px-10 py-3 bg-surface/50 border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors"}),e.jsx(x,{className:"w-5 h-5 text-muted-foreground absolute left-3 top-3.5"})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-12 gap-8",children:[e.jsxs("div",{className:"lg:col-span-4 space-y-2",children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider px-2 mb-2 flex items-center gap-1.5",children:[e.jsx(g,{className:"w-3.5 h-3.5"}),"Decoder Classes"]}),e.jsxs("div",{className:"space-y-1",children:[i.map(r=>e.jsxs("button",{"aria-expanded":t===r.name,onClick:()=>p(r.name),className:`w-full flex items-center justify-between p-3.5 rounded-xl border text-sm transition-all duration-200 ${t===r.name?"bg-cyan-300/10 text-cyan-300 border-cyan-300/20 shadow-xs":"bg-surface/20 text-secondary hover:text-primary hover:bg-surface/40 border-gridline/50"}`,children:[e.jsx("span",{className:"font-mono font-semibold",children:r.name}),t===r.name?e.jsx(b,{className:"w-4 h-4"}):e.jsx(y,{className:"w-4 h-4 text-muted-foreground"})]},r.name)),i.length===0&&e.jsxs("div",{className:"p-4 text-center text-xs text-muted-foreground italic border border-dashed border-gridline rounded-xl",children:['No decoders matching "',a,'"']})]})]}),e.jsx("div",{className:"lg:col-span-8",children:t?(()=>{const r=c.find(d=>d.name===t);return r?e.jsxs("div",{ref:s,className:"card-surface bg-surface/10 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold text-primary font-mono",children:r.name}),e.jsx("p",{className:"text-secondary text-sm mt-3 leading-relaxed",children:r.desc})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),"Signature"]}),e.jsx(n,{code:r.signature,language:"python",className:"!my-0 bg-void/70"})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(v,{className:"w-3.5 h-3.5"}),"Parameters"]}),e.jsx("div",{className:"overflow-x-auto border border-gridline rounded-xl",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse text-left text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 text-xs font-semibold uppercase tracking-wider",children:[e.jsx("th",{className:"p-3",children:"Name"}),e.jsx("th",{className:"p-3",children:"Type"}),e.jsx("th",{className:"p-3",children:"Default"}),e.jsx("th",{className:"p-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:r.parameters.map(d=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-mono font-semibold text-primary",children:d.name}),e.jsx("td",{className:"p-3 font-mono text-xs text-secondary",children:d.type}),e.jsx("td",{className:"p-3 font-mono text-xs text-cyan-300",children:d.default}),e.jsx("td",{className:"p-3 text-xs text-secondary leading-relaxed",children:d.desc})]},d.name))})]})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2",children:"Usage Example"}),e.jsx(n,{code:r.example,language:"python",filename:`${r.name.toLowerCase()}_usage.py`})]})]}):null})():e.jsx("div",{className:"h-full flex items-center justify-center border border-dashed border-gridline rounded-2xl p-12 text-center text-muted-foreground italic text-sm",children:"Select a decoder class from the sidebar to inspect parameters and example usage."})})]})]})})]})}export{R as default}; diff --git a/assets/TechnicalReference-DNqYMsCV.js b/assets/TechnicalReference-DNqYMsCV.js deleted file mode 100644 index a77ac141..00000000 --- a/assets/TechnicalReference-DNqYMsCV.js +++ /dev/null @@ -1,30 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,C as n}from"./index-B9kEGiWi.js";import{N as h}from"./NeuralReveal-BflyZYSb.js";import{g as f}from"./vendor-gsap-a3sj5zmn.js";import{r as x,h as g,s as b,o as y,T as _,B as v}from"./vendor-ui-B0ssGG4c.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";function R(){const[a,l]=o.useState(""),[t,m]=o.useState("BlossomDecoder"),s=o.useRef(null),c=[{name:"BlossomDecoder",signature:"BlossomDecoder(dem: stim.DetectorErrorModel, *, adaptive_k: bool = True, timeout: Optional[float] = None)",desc:"Minimum-weight perfect matching (MWPM) decoder for CSS stabilizer codes. Uses an exact matching solver to pair syndrome checks.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"adaptive_k",type:"bool",default:"True",desc:"Enable Union-Find pre-filtering to compress graph"},{name:"timeout",type:"float",default:"None",desc:"Max seconds allowed to match a syndrome"}],example:`import qector_decoder_v3 as qd -decoder = qd.BlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"BeliefMatchingDecoder",signature:'BeliefMatchingDecoder(dem: stim.DetectorErrorModel, *, bp_iters: int = 30, max_paths: int = 10, bp_method: str = "product_sum")',desc:"Accuracy-oriented decoder. Uses Belief Propagation (BP) preprocessing to compute edge probabilities, and then runs matching on a reweighted Blossom graph. Use when accuracy matters more than latency.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"bp_iters",type:"int",default:"30",desc:"Max iterations for Belief Propagation"},{name:"max_paths",type:"int",default:"10",desc:"Max alternative paths for match reweighting"},{name:"bp_method",type:"str",default:'"product_sum"',desc:"BP update equation to resolve constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.BeliefMatchingDecoder(dem, bp_iters=30) -correction = decoder.decode(syndrome)`},{name:"BpOsdDecoder",signature:'BpOsdDecoder(dem: stim.DetectorErrorModel, *, osd_order: int = 40, osd_method: str = "osd_cs")',desc:"Belief Propagation + Ordered Statistics Decoding. A common approach for qLDPC codes, where matching graphs are undefined. Handles non-CSS stabilizer layouts.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"osd_order",type:"int",default:"40",desc:"OSD search order limit"},{name:"osd_method",type:"str",default:'"osd_cs"',desc:"OSD resolution method"}],example:`import qector_decoder_v3 as qd -decoder = qd.BpOsdDecoder(dem, osd_order=40) -correction = decoder.decode(syndrome)`},{name:"UnionFindDecoder",signature:"UnionFindDecoder(dem: stim.DetectorErrorModel, *, use_combined: bool = True)",desc:"Near-linear time approximate decoder. Resolves syndromes by cluster growth and path compression. Scaling is O(N), making it ideal for large distance offline simulations.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"use_combined",type:"bool",default:"True",desc:"Enable combined cluster growth constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.UnionFindDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"CPUBatchDecoder",signature:"CPUBatchDecoder(dem: stim.DetectorErrorModel, *, num_threads: int = 0)",desc:"Multi-threaded CPU batch decoder. Leverages Rayon parallelism across CPU cores to decode thousands of syndromes concurrently.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"num_threads",type:"int",default:"0",desc:"Number of worker threads (0 = auto-detect physical cores)"}],example:`import qector_decoder_v3 as qd -decoder = qd.CPUBatchDecoder(dem, num_threads=8) -corrections = decoder.decode_batch(syndromes_matrix)`},{name:"GpuBatchDecoder / CUDABatchDecoder / OpenCLBatchDecoder",signature:"CUDABatchDecoder(dem: stim.DetectorErrorModel, *, batch_size: int = 2048)",desc:"Native GPU batch decoders. Implements CUDA and OpenCL device pipelines to solve thousands of syndromes in parallel. Check availability with CUDABatchDecoder.is_available().",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"batch_size",type:"int",default:"2048",desc:"Parallel batch sizing in GPU VRAM"}],example:`import qector_decoder_v3 as qd -if qd.CUDABatchDecoder.is_available(): - decoder = qd.CUDABatchDecoder(dem, batch_size=4096) - corrections = decoder.decode_batch(syndromes_array)`},{name:"SparseBlossomDecoder",signature:"SparseBlossomDecoder(dem: stim.DetectorErrorModel)",desc:"Low-latency region growing blossom variant optimized for ring-like and sparse detector error graphs.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -decoder = qd.SparseBlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"get_decoder / clear_decoder_cache",signature:'get_decoder(dem_or_h, decoder_type: str = "auto", **kwargs)',desc:"Cached decoder factory for instantiating and caching decoders by error model hash to avoid redundant graph construction.",parameters:[{name:"dem_or_h",type:"Union[stim.DetectorErrorModel, np.ndarray]",default:"Required",desc:"Detector model or H matrix"},{name:"decoder_type",type:"str",default:'"auto"',desc:"Target decoder family name"}],example:`import qector_decoder_v3 as qd -decoder = qd.get_decoder(dem, decoder_type="blossom") -qd.clear_decoder_cache()`},{name:"decode_mmap / decode_with_diagnostics",signature:"decode_mmap(decoder, input_filepath: str, output_filepath: str)",desc:"Out-of-core memory-mapped file decoder for processing gigabyte-scale syndrome files on disk without loading entire matrices into RAM. Returns structured DecodeResult.",parameters:[{name:"decoder",type:"DecoderInstance",default:"Required",desc:"Initialized decoder instance"},{name:"input_filepath",type:"str",default:"Required",desc:"Path to binary syndrome file"},{name:"output_filepath",type:"str",default:"Required",desc:"Path to write binary correction results"}],example:`import qector_decoder_v3 as qd -res = qd.decode_mmap(decoder, "syndromes.bin", "corrections.bin") -print(res.shots_processed, res.latency_seconds)`},{name:"Workbench API",signature:"Workbench(config: Optional[dict] = None)",desc:"High-level orchestration and benchmarking engine for configuring decoding pipelines, running multi-decoder comparative sweeps, and exporting performance reports.",parameters:[{name:"config",type:"dict",default:"None",desc:"Workbench configuration dictionary"}],example:`import qector_decoder_v3 as qd -wb = qd.Workbench() -results = wb.benchmark(dem, shots=100000)`},{name:"stim_compat & sinter_compat",signature:"sinter_compat.qector_sinter_decoders()",desc:"Ecosystem integration helpers providing native compatibility with Stim circuits and Sinter benchmarking harnesses.",parameters:[{name:"sinter_decoders",type:"dict",default:"Required",desc:"Sinter compiled decoder mapping"}],example:`import sinter -from qector_decoder_v3.sinter_compat import qector_sinter_decoders -decoders = qector_sinter_decoders()`},{name:"license.verify_license_token",signature:"license.verify_license_token(token: str) -> bool",desc:"Offline Ed25519 cryptographic signature verification function for commercial evaluation and production license tokens.",parameters:[{name:"token",type:"str",default:"Required",desc:"Signed JWT/Ed25519 license token string"}],example:`from qector_decoder_v3.license import verify_license_token -is_valid = verify_license_token(token_str)`},{name:"HybridDecoder & HybridCascadeDecoder",signature:"HybridCascadeDecoder(dem: stim.DetectorErrorModel) # Feature-gated / source build",desc:"Experimental decoders combining fast Union-Find pre-filtering with exact Blossom fallback for ambiguous clusters. Note: HybridCascadeDecoder requires full-feature source build and may raise unavailable in standard pre-compiled wheels.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -# Research / full-feature build required -decoder = qd.HybridDecoder(dem)`},{name:"PredecodedDecoder & LookupTableDecoder",signature:"LookupTableDecoder(code_matrix: np.ndarray)",desc:"Research decoders for lookup-table fast matching on small stabilizer codes and wrapping pre-calculated decoding results for pipeline benchmarking.",parameters:[{name:"code_matrix",type:"np.ndarray",default:"Required",desc:"Parity check matrix"}],example:`import qector_decoder_v3 as qd -decoder = qd.LookupTableDecoder(H_matrix)`},{name:"ColourCodeDecoder, TwoStageDecoder & AmbiguityClusterDecoder",signature:"ColourCodeDecoder(dem: stim.DetectorErrorModel)",desc:"Research decoders: native colour-code decoding over undecomposed detector error models (color_code family), two-stage decoding pipelines, and ambiguity-cluster resolution.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"}],example:`import qector_decoder_v3 as qd -decoder = qd.ColourCodeDecoder(dem)`},{name:"GNNBeliefMatcher",signature:"GNNBeliefMatcher(dem: stim.DetectorErrorModel, model_path: str)",desc:"Research-stage graph neural network enhanced belief propagation module. Not validated for production use.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"},{name:"model_path",type:"str",default:"Required",desc:"Path to trained GNN weights file"}],example:`import qector_decoder_v3 as qd -matcher = qd.GNNBeliefMatcher(dem, "weights.pt")`}],i=c.filter(r=>r.name.toLowerCase().includes(a.toLowerCase())),p=r=>{m(t===r?null:r)};return o.useEffect(()=>{window.matchMedia("(prefers-reduced-motion: reduce)").matches||t&&s.current&&f.fromTo(s.current,{opacity:0,y:10},{opacity:1,y:0,duration:.3,ease:"power2.out"})},[t]),e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"Technical Reference · QECTOR",description:"API reference, decoder parameters, and technical documentation for QECTOR quantum error correction decoder."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"16 Decoder APIs · Stim DEM · Signatures Are Examples"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(h,{text:"Technical Reference",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"API overview for QECTOR's decoders. Signatures, defaults, and snippets below are illustrative examples; treat the installed package as the authoritative reference."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"relative mb-8 max-w-md mx-auto md:mx-0",children:[e.jsx("label",{htmlFor:"decoder-search",className:"sr-only",children:"Search decoders"}),e.jsx("input",{id:"decoder-search",type:"search",placeholder:"Search decoders...",value:a,onChange:r=>l(r.target.value),className:"w-full px-10 py-3 bg-surface/50 border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors"}),e.jsx(x,{className:"w-5 h-5 text-muted-foreground absolute left-3 top-3.5"})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-12 gap-8",children:[e.jsxs("div",{className:"lg:col-span-4 space-y-2",children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider px-2 mb-2 flex items-center gap-1.5",children:[e.jsx(g,{className:"w-3.5 h-3.5"}),"Decoder Classes"]}),e.jsxs("div",{className:"space-y-1",children:[i.map(r=>e.jsxs("button",{"aria-expanded":t===r.name,onClick:()=>p(r.name),className:`w-full flex items-center justify-between p-3.5 rounded-xl border text-sm transition-all duration-200 ${t===r.name?"bg-cyan-300/10 text-cyan-300 border-cyan-300/20 shadow-xs":"bg-surface/20 text-secondary hover:text-primary hover:bg-surface/40 border-gridline/50"}`,children:[e.jsx("span",{className:"font-mono font-semibold",children:r.name}),t===r.name?e.jsx(b,{className:"w-4 h-4"}):e.jsx(y,{className:"w-4 h-4 text-muted-foreground"})]},r.name)),i.length===0&&e.jsxs("div",{className:"p-4 text-center text-xs text-muted-foreground italic border border-dashed border-gridline rounded-xl",children:['No decoders matching "',a,'"']})]})]}),e.jsx("div",{className:"lg:col-span-8",children:t?(()=>{const r=c.find(d=>d.name===t);return r?e.jsxs("div",{ref:s,className:"card-surface bg-surface/10 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold text-primary font-mono",children:r.name}),e.jsx("p",{className:"text-secondary text-sm mt-3 leading-relaxed",children:r.desc})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),"Signature"]}),e.jsx(n,{code:r.signature,language:"python",className:"!my-0 bg-void/70"})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(v,{className:"w-3.5 h-3.5"}),"Parameters"]}),e.jsx("div",{className:"overflow-x-auto border border-gridline rounded-xl",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse text-left text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 text-xs font-semibold uppercase tracking-wider",children:[e.jsx("th",{className:"p-3",children:"Name"}),e.jsx("th",{className:"p-3",children:"Type"}),e.jsx("th",{className:"p-3",children:"Default"}),e.jsx("th",{className:"p-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:r.parameters.map(d=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-mono font-semibold text-primary",children:d.name}),e.jsx("td",{className:"p-3 font-mono text-xs text-secondary",children:d.type}),e.jsx("td",{className:"p-3 font-mono text-xs text-cyan-300",children:d.default}),e.jsx("td",{className:"p-3 text-xs text-secondary leading-relaxed",children:d.desc})]},d.name))})]})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2",children:"Usage Example"}),e.jsx(n,{code:r.example,language:"python",filename:`${r.name.toLowerCase()}_usage.py`})]})]}):null})():e.jsx("div",{className:"h-full flex items-center justify-center border border-dashed border-gridline rounded-2xl p-12 text-center text-muted-foreground italic text-sm",children:"Select a decoder class from the sidebar to inspect parameters and example usage."})})]})]})})]})}export{R as default}; diff --git a/assets/TechnicalReference-eXSmTrhC.js b/assets/TechnicalReference-eXSmTrhC.js deleted file mode 100644 index 68b68616..00000000 --- a/assets/TechnicalReference-eXSmTrhC.js +++ /dev/null @@ -1,30 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,C as n}from"./index-CqAA-ZXu.js";import{N as h}from"./NeuralReveal-BflyZYSb.js";import{g as f}from"./vendor-gsap-a3sj5zmn.js";import{r as x,h as g,s as b,o as y,T as _,B as v}from"./vendor-ui-B0ssGG4c.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";function R(){const[a,l]=o.useState(""),[t,m]=o.useState("BlossomDecoder"),s=o.useRef(null),c=[{name:"BlossomDecoder",signature:"BlossomDecoder(dem: stim.DetectorErrorModel, *, adaptive_k: bool = True, timeout: Optional[float] = None)",desc:"Minimum-weight perfect matching (MWPM) decoder for CSS stabilizer codes. Uses an exact matching solver to pair syndrome checks.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"adaptive_k",type:"bool",default:"True",desc:"Enable Union-Find pre-filtering to compress graph"},{name:"timeout",type:"float",default:"None",desc:"Max seconds allowed to match a syndrome"}],example:`import qector_decoder_v3 as qd -decoder = qd.BlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"BeliefMatchingDecoder",signature:'BeliefMatchingDecoder(dem: stim.DetectorErrorModel, *, bp_iters: int = 30, max_paths: int = 10, bp_method: str = "product_sum")',desc:"Accuracy-oriented decoder. Uses Belief Propagation (BP) preprocessing to compute edge probabilities, and then runs matching on a reweighted Blossom graph. Use when accuracy matters more than latency.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"bp_iters",type:"int",default:"30",desc:"Max iterations for Belief Propagation"},{name:"max_paths",type:"int",default:"10",desc:"Max alternative paths for match reweighting"},{name:"bp_method",type:"str",default:'"product_sum"',desc:"BP update equation to resolve constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.BeliefMatchingDecoder(dem, bp_iters=30) -correction = decoder.decode(syndrome)`},{name:"BpOsdDecoder",signature:'BpOsdDecoder(dem: stim.DetectorErrorModel, *, osd_order: int = 40, osd_method: str = "osd_cs")',desc:"Belief Propagation + Ordered Statistics Decoding. A common approach for qLDPC codes, where matching graphs are undefined. Handles non-CSS stabilizer layouts.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"osd_order",type:"int",default:"40",desc:"OSD search order limit"},{name:"osd_method",type:"str",default:'"osd_cs"',desc:"OSD resolution method"}],example:`import qector_decoder_v3 as qd -decoder = qd.BpOsdDecoder(dem, osd_order=40) -correction = decoder.decode(syndrome)`},{name:"UnionFindDecoder",signature:"UnionFindDecoder(dem: stim.DetectorErrorModel, *, use_combined: bool = True)",desc:"Near-linear time approximate decoder. Resolves syndromes by cluster growth and path compression. Scaling is O(N), making it ideal for large distance offline simulations.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"use_combined",type:"bool",default:"True",desc:"Enable combined cluster growth constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.UnionFindDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"CPUBatchDecoder",signature:"CPUBatchDecoder(dem: stim.DetectorErrorModel, *, num_threads: int = 0)",desc:"Multi-threaded CPU batch decoder. Leverages Rayon parallelism across CPU cores to decode thousands of syndromes concurrently.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"num_threads",type:"int",default:"0",desc:"Number of worker threads (0 = auto-detect physical cores)"}],example:`import qector_decoder_v3 as qd -decoder = qd.CPUBatchDecoder(dem, num_threads=8) -corrections = decoder.decode_batch(syndromes_matrix)`},{name:"GpuBatchDecoder / CUDABatchDecoder / OpenCLBatchDecoder",signature:"CUDABatchDecoder(dem: stim.DetectorErrorModel, *, batch_size: int = 2048)",desc:"Native GPU batch decoders. Implements CUDA and OpenCL device pipelines to solve thousands of syndromes in parallel. Check availability with CUDABatchDecoder.is_available().",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"batch_size",type:"int",default:"2048",desc:"Parallel batch sizing in GPU VRAM"}],example:`import qector_decoder_v3 as qd -if qd.CUDABatchDecoder.is_available(): - decoder = qd.CUDABatchDecoder(dem, batch_size=4096) - corrections = decoder.decode_batch(syndromes_array)`},{name:"SparseBlossomDecoder",signature:"SparseBlossomDecoder(dem: stim.DetectorErrorModel)",desc:"Low-latency region growing blossom variant optimized for ring-like and sparse detector error graphs.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -decoder = qd.SparseBlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"get_decoder / clear_decoder_cache",signature:'get_decoder(dem_or_h, decoder_type: str = "auto", **kwargs)',desc:"Cached decoder factory for instantiating and caching decoders by error model hash to avoid redundant graph construction.",parameters:[{name:"dem_or_h",type:"Union[stim.DetectorErrorModel, np.ndarray]",default:"Required",desc:"Detector model or H matrix"},{name:"decoder_type",type:"str",default:'"auto"',desc:"Target decoder family name"}],example:`import qector_decoder_v3 as qd -decoder = qd.get_decoder(dem, decoder_type="blossom") -qd.clear_decoder_cache()`},{name:"decode_mmap / decode_with_diagnostics",signature:"decode_mmap(decoder, input_filepath: str, output_filepath: str)",desc:"Out-of-core memory-mapped file decoder for processing gigabyte-scale syndrome files on disk without loading entire matrices into RAM. Returns structured DecodeResult.",parameters:[{name:"decoder",type:"DecoderInstance",default:"Required",desc:"Initialized decoder instance"},{name:"input_filepath",type:"str",default:"Required",desc:"Path to binary syndrome file"},{name:"output_filepath",type:"str",default:"Required",desc:"Path to write binary correction results"}],example:`import qector_decoder_v3 as qd -res = qd.decode_mmap(decoder, "syndromes.bin", "corrections.bin") -print(res.shots_processed, res.latency_seconds)`},{name:"Workbench API",signature:"Workbench(config: Optional[dict] = None)",desc:"High-level orchestration and benchmarking engine for configuring decoding pipelines, running multi-decoder comparative sweeps, and exporting performance reports.",parameters:[{name:"config",type:"dict",default:"None",desc:"Workbench configuration dictionary"}],example:`import qector_decoder_v3 as qd -wb = qd.Workbench() -results = wb.benchmark(dem, shots=100000)`},{name:"stim_compat & sinter_compat",signature:"sinter_compat.qector_sinter_decoders()",desc:"Ecosystem integration helpers providing native compatibility with Stim circuits and Sinter benchmarking harnesses.",parameters:[{name:"sinter_decoders",type:"dict",default:"Required",desc:"Sinter compiled decoder mapping"}],example:`import sinter -from qector_decoder_v3.sinter_compat import qector_sinter_decoders -decoders = qector_sinter_decoders()`},{name:"license.verify_license_token",signature:"license.verify_license_token(token: str) -> bool",desc:"Offline Ed25519 cryptographic signature verification function for commercial evaluation and production license tokens.",parameters:[{name:"token",type:"str",default:"Required",desc:"Signed JWT/Ed25519 license token string"}],example:`from qector_decoder_v3.license import verify_license_token -is_valid = verify_license_token(token_str)`},{name:"HybridDecoder & HybridCascadeDecoder",signature:"HybridCascadeDecoder(dem: stim.DetectorErrorModel) # Feature-gated / source build",desc:"Experimental decoders combining fast Union-Find pre-filtering with exact Blossom fallback for ambiguous clusters. Note: HybridCascadeDecoder requires full-feature source build and may raise unavailable in standard pre-compiled wheels.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -# Research / full-feature build required -decoder = qd.HybridDecoder(dem)`},{name:"PredecodedDecoder & LookupTableDecoder",signature:"LookupTableDecoder(code_matrix: np.ndarray)",desc:"Research decoders for lookup-table fast matching on small stabilizer codes and wrapping pre-calculated decoding results for pipeline benchmarking.",parameters:[{name:"code_matrix",type:"np.ndarray",default:"Required",desc:"Parity check matrix"}],example:`import qector_decoder_v3 as qd -decoder = qd.LookupTableDecoder(H_matrix)`},{name:"ColourCodeDecoder, TwoStageDecoder & AmbiguityClusterDecoder",signature:"ColourCodeDecoder(dem: stim.DetectorErrorModel)",desc:"Research decoders: native colour-code decoding over undecomposed detector error models (color_code family), two-stage decoding pipelines, and ambiguity-cluster resolution.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"}],example:`import qector_decoder_v3 as qd -decoder = qd.ColourCodeDecoder(dem)`},{name:"GNNBeliefMatcher",signature:"GNNBeliefMatcher(dem: stim.DetectorErrorModel, model_path: str)",desc:"Research-stage graph neural network enhanced belief propagation module. Not validated for production use.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"},{name:"model_path",type:"str",default:"Required",desc:"Path to trained GNN weights file"}],example:`import qector_decoder_v3 as qd -matcher = qd.GNNBeliefMatcher(dem, "weights.pt")`}],i=c.filter(r=>r.name.toLowerCase().includes(a.toLowerCase())),p=r=>{m(t===r?null:r)};return o.useEffect(()=>{window.matchMedia("(prefers-reduced-motion: reduce)").matches||t&&s.current&&f.fromTo(s.current,{opacity:0,y:10},{opacity:1,y:0,duration:.3,ease:"power2.out"})},[t]),e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"Technical Reference · QECTOR",description:"API reference, decoder parameters, and technical documentation for QECTOR quantum error correction decoder."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"16 Decoder APIs · Stim DEM · Signatures Are Examples"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(h,{text:"Technical Reference",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"API overview for QECTOR's decoders. Signatures, defaults, and snippets below are illustrative examples; treat the installed package as the authoritative reference."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"relative mb-8 max-w-md mx-auto md:mx-0",children:[e.jsx("label",{htmlFor:"decoder-search",className:"sr-only",children:"Search decoders"}),e.jsx("input",{id:"decoder-search",type:"search",placeholder:"Search decoders...",value:a,onChange:r=>l(r.target.value),className:"w-full px-10 py-3 bg-surface/50 border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors"}),e.jsx(x,{className:"w-5 h-5 text-muted-foreground absolute left-3 top-3.5"})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-12 gap-8",children:[e.jsxs("div",{className:"lg:col-span-4 space-y-2",children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider px-2 mb-2 flex items-center gap-1.5",children:[e.jsx(g,{className:"w-3.5 h-3.5"}),"Decoder Classes"]}),e.jsxs("div",{className:"space-y-1",children:[i.map(r=>e.jsxs("button",{"aria-expanded":t===r.name,onClick:()=>p(r.name),className:`w-full flex items-center justify-between p-3.5 rounded-xl border text-sm transition-all duration-200 ${t===r.name?"bg-cyan-300/10 text-cyan-300 border-cyan-300/20 shadow-xs":"bg-surface/20 text-secondary hover:text-primary hover:bg-surface/40 border-gridline/50"}`,children:[e.jsx("span",{className:"font-mono font-semibold",children:r.name}),t===r.name?e.jsx(b,{className:"w-4 h-4"}):e.jsx(y,{className:"w-4 h-4 text-muted-foreground"})]},r.name)),i.length===0&&e.jsxs("div",{className:"p-4 text-center text-xs text-muted-foreground italic border border-dashed border-gridline rounded-xl",children:['No decoders matching "',a,'"']})]})]}),e.jsx("div",{className:"lg:col-span-8",children:t?(()=>{const r=c.find(d=>d.name===t);return r?e.jsxs("div",{ref:s,className:"card-surface bg-surface/10 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold text-primary font-mono",children:r.name}),e.jsx("p",{className:"text-secondary text-sm mt-3 leading-relaxed",children:r.desc})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),"Signature"]}),e.jsx(n,{code:r.signature,language:"python",className:"!my-0 bg-void/70"})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(v,{className:"w-3.5 h-3.5"}),"Parameters"]}),e.jsx("div",{className:"overflow-x-auto border border-gridline rounded-xl",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse text-left text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 text-xs font-semibold uppercase tracking-wider",children:[e.jsx("th",{className:"p-3",children:"Name"}),e.jsx("th",{className:"p-3",children:"Type"}),e.jsx("th",{className:"p-3",children:"Default"}),e.jsx("th",{className:"p-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:r.parameters.map(d=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-mono font-semibold text-primary",children:d.name}),e.jsx("td",{className:"p-3 font-mono text-xs text-secondary",children:d.type}),e.jsx("td",{className:"p-3 font-mono text-xs text-cyan-300",children:d.default}),e.jsx("td",{className:"p-3 text-xs text-secondary leading-relaxed",children:d.desc})]},d.name))})]})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2",children:"Usage Example"}),e.jsx(n,{code:r.example,language:"python",filename:`${r.name.toLowerCase()}_usage.py`})]})]}):null})():e.jsx("div",{className:"h-full flex items-center justify-center border border-dashed border-gridline rounded-2xl p-12 text-center text-muted-foreground italic text-sm",children:"Select a decoder class from the sidebar to inspect parameters and example usage."})})]})]})})]})}export{R as default}; diff --git a/assets/TechnicalReference-jpw-R7Cj.js b/assets/TechnicalReference-jpw-R7Cj.js deleted file mode 100644 index 88b1b5c4..00000000 --- a/assets/TechnicalReference-jpw-R7Cj.js +++ /dev/null @@ -1,30 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,C as n}from"./index-iVST85F-.js";import{N as h}from"./NeuralReveal-BflyZYSb.js";import{g as f}from"./vendor-gsap-a3sj5zmn.js";import{r as x,h as g,s as b,o as y,T as _,B as v}from"./vendor-ui-B0ssGG4c.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";function R(){const[a,l]=o.useState(""),[t,m]=o.useState("BlossomDecoder"),s=o.useRef(null),c=[{name:"BlossomDecoder",signature:"BlossomDecoder(dem: stim.DetectorErrorModel, *, adaptive_k: bool = True, timeout: Optional[float] = None)",desc:"Minimum-weight perfect matching (MWPM) decoder for CSS stabilizer codes. Uses an exact matching solver to pair syndrome checks.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"adaptive_k",type:"bool",default:"True",desc:"Enable Union-Find pre-filtering to compress graph"},{name:"timeout",type:"float",default:"None",desc:"Max seconds allowed to match a syndrome"}],example:`import qector_decoder_v3 as qd -decoder = qd.BlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"BeliefMatchingDecoder",signature:'BeliefMatchingDecoder(dem: stim.DetectorErrorModel, *, bp_iters: int = 30, max_paths: int = 10, bp_method: str = "product_sum")',desc:"Accuracy-oriented decoder. Uses Belief Propagation (BP) preprocessing to compute edge probabilities, and then runs matching on a reweighted Blossom graph. Use when accuracy matters more than latency.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"bp_iters",type:"int",default:"30",desc:"Max iterations for Belief Propagation"},{name:"max_paths",type:"int",default:"10",desc:"Max alternative paths for match reweighting"},{name:"bp_method",type:"str",default:'"product_sum"',desc:"BP update equation to resolve constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.BeliefMatchingDecoder(dem, bp_iters=30) -correction = decoder.decode(syndrome)`},{name:"BpOsdDecoder",signature:'BpOsdDecoder(dem: stim.DetectorErrorModel, *, osd_order: int = 40, osd_method: str = "osd_cs")',desc:"Belief Propagation + Ordered Statistics Decoding. A common approach for qLDPC codes, where matching graphs are undefined. Handles non-CSS stabilizer layouts.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"osd_order",type:"int",default:"40",desc:"OSD search order limit"},{name:"osd_method",type:"str",default:'"osd_cs"',desc:"OSD resolution method"}],example:`import qector_decoder_v3 as qd -decoder = qd.BpOsdDecoder(dem, osd_order=40) -correction = decoder.decode(syndrome)`},{name:"UnionFindDecoder",signature:"UnionFindDecoder(dem: stim.DetectorErrorModel, *, use_combined: bool = True)",desc:"Near-linear time approximate decoder. Resolves syndromes by cluster growth and path compression. Scaling is O(N), making it ideal for large distance offline simulations.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"use_combined",type:"bool",default:"True",desc:"Enable combined cluster growth constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.UnionFindDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"CPUBatchDecoder",signature:"CPUBatchDecoder(dem: stim.DetectorErrorModel, *, num_threads: int = 0)",desc:"Multi-threaded CPU batch decoder. Leverages Rayon parallelism across CPU cores to decode thousands of syndromes concurrently.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"num_threads",type:"int",default:"0",desc:"Number of worker threads (0 = auto-detect physical cores)"}],example:`import qector_decoder_v3 as qd -decoder = qd.CPUBatchDecoder(dem, num_threads=8) -corrections = decoder.decode_batch(syndromes_matrix)`},{name:"GpuBatchDecoder / CUDABatchDecoder / OpenCLBatchDecoder",signature:"CUDABatchDecoder(dem: stim.DetectorErrorModel, *, batch_size: int = 2048)",desc:"Native GPU batch decoders. Implements CUDA and OpenCL device pipelines to solve thousands of syndromes in parallel. Check availability with CUDABatchDecoder.is_available().",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"batch_size",type:"int",default:"2048",desc:"Parallel batch sizing in GPU VRAM"}],example:`import qector_decoder_v3 as qd -if qd.CUDABatchDecoder.is_available(): - decoder = qd.CUDABatchDecoder(dem, batch_size=4096) - corrections = decoder.decode_batch(syndromes_array)`},{name:"SparseBlossomDecoder",signature:"SparseBlossomDecoder(dem: stim.DetectorErrorModel)",desc:"Low-latency region growing blossom variant optimized for ring-like and sparse detector error graphs.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -decoder = qd.SparseBlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"get_decoder / clear_decoder_cache",signature:'get_decoder(dem_or_h, decoder_type: str = "auto", **kwargs)',desc:"Cached decoder factory for instantiating and caching decoders by error model hash to avoid redundant graph construction.",parameters:[{name:"dem_or_h",type:"Union[stim.DetectorErrorModel, np.ndarray]",default:"Required",desc:"Detector model or H matrix"},{name:"decoder_type",type:"str",default:'"auto"',desc:"Target decoder family name"}],example:`import qector_decoder_v3 as qd -decoder = qd.get_decoder(dem, decoder_type="blossom") -qd.clear_decoder_cache()`},{name:"decode_mmap / decode_with_diagnostics",signature:"decode_mmap(decoder, input_filepath: str, output_filepath: str)",desc:"Out-of-core memory-mapped file decoder for processing gigabyte-scale syndrome files on disk without loading entire matrices into RAM. Returns structured DecodeResult.",parameters:[{name:"decoder",type:"DecoderInstance",default:"Required",desc:"Initialized decoder instance"},{name:"input_filepath",type:"str",default:"Required",desc:"Path to binary syndrome file"},{name:"output_filepath",type:"str",default:"Required",desc:"Path to write binary correction results"}],example:`import qector_decoder_v3 as qd -res = qd.decode_mmap(decoder, "syndromes.bin", "corrections.bin") -print(res.shots_processed, res.latency_seconds)`},{name:"Workbench API",signature:"Workbench(config: Optional[dict] = None)",desc:"High-level orchestration and benchmarking engine for configuring decoding pipelines, running multi-decoder comparative sweeps, and exporting performance reports.",parameters:[{name:"config",type:"dict",default:"None",desc:"Workbench configuration dictionary"}],example:`import qector_decoder_v3 as qd -wb = qd.Workbench() -results = wb.benchmark(dem, shots=100000)`},{name:"stim_compat & sinter_compat",signature:"sinter_compat.qector_sinter_decoders()",desc:"Ecosystem integration helpers providing native compatibility with Stim circuits and Sinter benchmarking harnesses.",parameters:[{name:"sinter_decoders",type:"dict",default:"Required",desc:"Sinter compiled decoder mapping"}],example:`import sinter -from qector_decoder_v3.sinter_compat import qector_sinter_decoders -decoders = qector_sinter_decoders()`},{name:"license.verify_license_token",signature:"license.verify_license_token(token: str) -> bool",desc:"Offline Ed25519 cryptographic signature verification function for commercial evaluation and production license tokens.",parameters:[{name:"token",type:"str",default:"Required",desc:"Signed JWT/Ed25519 license token string"}],example:`from qector_decoder_v3.license import verify_license_token -is_valid = verify_license_token(token_str)`},{name:"HybridDecoder & HybridCascadeDecoder",signature:"HybridCascadeDecoder(dem: stim.DetectorErrorModel) # Feature-gated / source build",desc:"Experimental decoders combining fast Union-Find pre-filtering with exact Blossom fallback for ambiguous clusters. Note: HybridCascadeDecoder requires full-feature source build and may raise unavailable in standard pre-compiled wheels.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -# Research / full-feature build required -decoder = qd.HybridDecoder(dem)`},{name:"PredecodedDecoder & LookupTableDecoder",signature:"LookupTableDecoder(code_matrix: np.ndarray)",desc:"Research decoders for lookup-table fast matching on small stabilizer codes and wrapping pre-calculated decoding results for pipeline benchmarking.",parameters:[{name:"code_matrix",type:"np.ndarray",default:"Required",desc:"Parity check matrix"}],example:`import qector_decoder_v3 as qd -decoder = qd.LookupTableDecoder(H_matrix)`},{name:"ColourCodeDecoder, TwoStageDecoder & AmbiguityClusterDecoder",signature:"ColourCodeDecoder(dem: stim.DetectorErrorModel)",desc:"Research decoders: native colour-code decoding over undecomposed detector error models (color_code family), two-stage decoding pipelines, and ambiguity-cluster resolution.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"}],example:`import qector_decoder_v3 as qd -decoder = qd.ColourCodeDecoder(dem)`},{name:"GNNBeliefMatcher",signature:"GNNBeliefMatcher(dem: stim.DetectorErrorModel, model_path: str)",desc:"Research-stage graph neural network enhanced belief propagation module. Not validated for production use.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"},{name:"model_path",type:"str",default:"Required",desc:"Path to trained GNN weights file"}],example:`import qector_decoder_v3 as qd -matcher = qd.GNNBeliefMatcher(dem, "weights.pt")`}],i=c.filter(r=>r.name.toLowerCase().includes(a.toLowerCase())),p=r=>{m(t===r?null:r)};return o.useEffect(()=>{window.matchMedia("(prefers-reduced-motion: reduce)").matches||t&&s.current&&f.fromTo(s.current,{opacity:0,y:10},{opacity:1,y:0,duration:.3,ease:"power2.out"})},[t]),e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"Technical Reference · QECTOR",description:"API reference, decoder parameters, and technical documentation for QECTOR quantum error correction decoder."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"16 Decoder APIs · Stim DEM · Signatures Are Examples"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(h,{text:"Technical Reference",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"API overview for QECTOR's decoders. Signatures, defaults, and snippets below are illustrative examples; treat the installed package as the authoritative reference."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"relative mb-8 max-w-md mx-auto md:mx-0",children:[e.jsx("label",{htmlFor:"decoder-search",className:"sr-only",children:"Search decoders"}),e.jsx("input",{id:"decoder-search",type:"search",placeholder:"Search decoders...",value:a,onChange:r=>l(r.target.value),className:"w-full px-10 py-3 bg-surface/50 border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors"}),e.jsx(x,{className:"w-5 h-5 text-muted-foreground absolute left-3 top-3.5"})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-12 gap-8",children:[e.jsxs("div",{className:"lg:col-span-4 space-y-2",children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider px-2 mb-2 flex items-center gap-1.5",children:[e.jsx(g,{className:"w-3.5 h-3.5"}),"Decoder Classes"]}),e.jsxs("div",{className:"space-y-1",children:[i.map(r=>e.jsxs("button",{"aria-expanded":t===r.name,onClick:()=>p(r.name),className:`w-full flex items-center justify-between p-3.5 rounded-xl border text-sm transition-all duration-200 ${t===r.name?"bg-cyan-300/10 text-cyan-300 border-cyan-300/20 shadow-xs":"bg-surface/20 text-secondary hover:text-primary hover:bg-surface/40 border-gridline/50"}`,children:[e.jsx("span",{className:"font-mono font-semibold",children:r.name}),t===r.name?e.jsx(b,{className:"w-4 h-4"}):e.jsx(y,{className:"w-4 h-4 text-muted-foreground"})]},r.name)),i.length===0&&e.jsxs("div",{className:"p-4 text-center text-xs text-muted-foreground italic border border-dashed border-gridline rounded-xl",children:['No decoders matching "',a,'"']})]})]}),e.jsx("div",{className:"lg:col-span-8",children:t?(()=>{const r=c.find(d=>d.name===t);return r?e.jsxs("div",{ref:s,className:"card-surface bg-surface/10 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold text-primary font-mono",children:r.name}),e.jsx("p",{className:"text-secondary text-sm mt-3 leading-relaxed",children:r.desc})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),"Signature"]}),e.jsx(n,{code:r.signature,language:"python",className:"!my-0 bg-void/70"})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(v,{className:"w-3.5 h-3.5"}),"Parameters"]}),e.jsx("div",{className:"overflow-x-auto border border-gridline rounded-xl",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse text-left text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 text-xs font-semibold uppercase tracking-wider",children:[e.jsx("th",{className:"p-3",children:"Name"}),e.jsx("th",{className:"p-3",children:"Type"}),e.jsx("th",{className:"p-3",children:"Default"}),e.jsx("th",{className:"p-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:r.parameters.map(d=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-mono font-semibold text-primary",children:d.name}),e.jsx("td",{className:"p-3 font-mono text-xs text-secondary",children:d.type}),e.jsx("td",{className:"p-3 font-mono text-xs text-cyan-300",children:d.default}),e.jsx("td",{className:"p-3 text-xs text-secondary leading-relaxed",children:d.desc})]},d.name))})]})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2",children:"Usage Example"}),e.jsx(n,{code:r.example,language:"python",filename:`${r.name.toLowerCase()}_usage.py`})]})]}):null})():e.jsx("div",{className:"h-full flex items-center justify-center border border-dashed border-gridline rounded-2xl p-12 text-center text-muted-foreground italic text-sm",children:"Select a decoder class from the sidebar to inspect parameters and example usage."})})]})]})})]})}export{R as default}; diff --git a/assets/TechnicalReference-p4g91Uag.js b/assets/TechnicalReference-p4g91Uag.js deleted file mode 100644 index 98a20ee1..00000000 --- a/assets/TechnicalReference-p4g91Uag.js +++ /dev/null @@ -1,30 +0,0 @@ -import{r as o,j as e}from"./vendor-react-BiHfrq0e.js";import{S as u,C as n}from"./index-_BpMZhV3.js";import{N as h}from"./NeuralReveal-BflyZYSb.js";import{g as f}from"./vendor-gsap-a3sj5zmn.js";import{r as x,h as g,s as b,o as y,T as _,B as v}from"./vendor-ui-B0ssGG4c.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";function R(){const[a,l]=o.useState(""),[t,m]=o.useState("BlossomDecoder"),s=o.useRef(null),c=[{name:"BlossomDecoder",signature:"BlossomDecoder(dem: stim.DetectorErrorModel, *, adaptive_k: bool = True, timeout: Optional[float] = None)",desc:"Minimum-weight perfect matching (MWPM) decoder for CSS stabilizer codes. Uses an exact matching solver to pair syndrome checks.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"adaptive_k",type:"bool",default:"True",desc:"Enable Union-Find pre-filtering to compress graph"},{name:"timeout",type:"float",default:"None",desc:"Max seconds allowed to match a syndrome"}],example:`import qector_decoder_v3 as qd -decoder = qd.BlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"BeliefMatchingDecoder",signature:'BeliefMatchingDecoder(dem: stim.DetectorErrorModel, *, bp_iters: int = 30, max_paths: int = 10, bp_method: str = "product_sum")',desc:"Accuracy-oriented decoder. Uses Belief Propagation (BP) preprocessing to compute edge probabilities, and then runs matching on a reweighted Blossom graph. Use when accuracy matters more than latency.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"bp_iters",type:"int",default:"30",desc:"Max iterations for Belief Propagation"},{name:"max_paths",type:"int",default:"10",desc:"Max alternative paths for match reweighting"},{name:"bp_method",type:"str",default:'"product_sum"',desc:"BP update equation to resolve constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.BeliefMatchingDecoder(dem, bp_iters=30) -correction = decoder.decode(syndrome)`},{name:"BpOsdDecoder",signature:'BpOsdDecoder(dem: stim.DetectorErrorModel, *, osd_order: int = 40, osd_method: str = "osd_cs")',desc:"Belief Propagation + Ordered Statistics Decoding. A common approach for qLDPC codes, where matching graphs are undefined. Handles non-CSS stabilizer layouts.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"osd_order",type:"int",default:"40",desc:"OSD search order limit"},{name:"osd_method",type:"str",default:'"osd_cs"',desc:"OSD resolution method"}],example:`import qector_decoder_v3 as qd -decoder = qd.BpOsdDecoder(dem, osd_order=40) -correction = decoder.decode(syndrome)`},{name:"UnionFindDecoder",signature:"UnionFindDecoder(dem: stim.DetectorErrorModel, *, use_combined: bool = True)",desc:"Near-linear time approximate decoder. Resolves syndromes by cluster growth and path compression. Scaling is O(N), making it ideal for large distance offline simulations.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"use_combined",type:"bool",default:"True",desc:"Enable combined cluster growth constraints"}],example:`import qector_decoder_v3 as qd -decoder = qd.UnionFindDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"CPUBatchDecoder",signature:"CPUBatchDecoder(dem: stim.DetectorErrorModel, *, num_threads: int = 0)",desc:"Multi-threaded CPU batch decoder. Leverages Rayon parallelism across CPU cores to decode thousands of syndromes concurrently.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"num_threads",type:"int",default:"0",desc:"Number of worker threads (0 = auto-detect physical cores)"}],example:`import qector_decoder_v3 as qd -decoder = qd.CPUBatchDecoder(dem, num_threads=8) -corrections = decoder.decode_batch(syndromes_matrix)`},{name:"GpuBatchDecoder / CUDABatchDecoder / OpenCLBatchDecoder",signature:"CUDABatchDecoder(dem: stim.DetectorErrorModel, *, batch_size: int = 2048)",desc:"Native GPU batch decoders. Implements CUDA and OpenCL device pipelines to solve thousands of syndromes in parallel. Check availability with CUDABatchDecoder.is_available().",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"},{name:"batch_size",type:"int",default:"2048",desc:"Parallel batch sizing in GPU VRAM"}],example:`import qector_decoder_v3 as qd -if qd.CUDABatchDecoder.is_available(): - decoder = qd.CUDABatchDecoder(dem, batch_size=4096) - corrections = decoder.decode_batch(syndromes_array)`},{name:"SparseBlossomDecoder",signature:"SparseBlossomDecoder(dem: stim.DetectorErrorModel)",desc:"Low-latency region growing blossom variant optimized for ring-like and sparse detector error graphs.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -decoder = qd.SparseBlossomDecoder(dem) -correction = decoder.decode(syndrome)`},{name:"get_decoder / clear_decoder_cache",signature:'get_decoder(dem_or_h, decoder_type: str = "auto", **kwargs)',desc:"Cached decoder factory for instantiating and caching decoders by error model hash to avoid redundant graph construction.",parameters:[{name:"dem_or_h",type:"Union[stim.DetectorErrorModel, np.ndarray]",default:"Required",desc:"Detector model or H matrix"},{name:"decoder_type",type:"str",default:'"auto"',desc:"Target decoder family name"}],example:`import qector_decoder_v3 as qd -decoder = qd.get_decoder(dem, decoder_type="blossom") -qd.clear_decoder_cache()`},{name:"decode_mmap / decode_with_diagnostics",signature:"decode_mmap(decoder, input_filepath: str, output_filepath: str)",desc:"Out-of-core memory-mapped file decoder for processing gigabyte-scale syndrome files on disk without loading entire matrices into RAM. Returns structured DecodeResult.",parameters:[{name:"decoder",type:"DecoderInstance",default:"Required",desc:"Initialized decoder instance"},{name:"input_filepath",type:"str",default:"Required",desc:"Path to binary syndrome file"},{name:"output_filepath",type:"str",default:"Required",desc:"Path to write binary correction results"}],example:`import qector_decoder_v3 as qd -res = qd.decode_mmap(decoder, "syndromes.bin", "corrections.bin") -print(res.shots_processed, res.latency_seconds)`},{name:"Workbench API",signature:"Workbench(config: Optional[dict] = None)",desc:"High-level orchestration and benchmarking engine for configuring decoding pipelines, running multi-decoder comparative sweeps, and exporting performance reports.",parameters:[{name:"config",type:"dict",default:"None",desc:"Workbench configuration dictionary"}],example:`import qector_decoder_v3 as qd -wb = qd.Workbench() -results = wb.benchmark(dem, shots=100000)`},{name:"stim_compat & sinter_compat",signature:"sinter_compat.qector_sinter_decoders()",desc:"Ecosystem integration helpers providing native compatibility with Stim circuits and Sinter benchmarking harnesses.",parameters:[{name:"sinter_decoders",type:"dict",default:"Required",desc:"Sinter compiled decoder mapping"}],example:`import sinter -from qector_decoder_v3.sinter_compat import qector_sinter_decoders -decoders = qector_sinter_decoders()`},{name:"license.verify_license_token",signature:"license.verify_license_token(token: str) -> bool",desc:"Offline Ed25519 cryptographic signature verification function for commercial evaluation and production license tokens.",parameters:[{name:"token",type:"str",default:"Required",desc:"Signed JWT/Ed25519 license token string"}],example:`from qector_decoder_v3.license import verify_license_token -is_valid = verify_license_token(token_str)`},{name:"HybridDecoder & HybridCascadeDecoder",signature:"HybridCascadeDecoder(dem: stim.DetectorErrorModel) # Feature-gated / source build",desc:"Experimental decoders combining fast Union-Find pre-filtering with exact Blossom fallback for ambiguous clusters. Note: HybridCascadeDecoder requires full-feature source build and may raise unavailable in standard pre-compiled wheels.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model of the circuit"}],example:`import qector_decoder_v3 as qd -# Research / full-feature build required -decoder = qd.HybridDecoder(dem)`},{name:"PredecodedDecoder & LookupTableDecoder",signature:"LookupTableDecoder(code_matrix: np.ndarray)",desc:"Research decoders for lookup-table fast matching on small stabilizer codes and wrapping pre-calculated decoding results for pipeline benchmarking.",parameters:[{name:"code_matrix",type:"np.ndarray",default:"Required",desc:"Parity check matrix"}],example:`import qector_decoder_v3 as qd -decoder = qd.LookupTableDecoder(H_matrix)`},{name:"ColourCodeDecoder, TwoStageDecoder & AmbiguityClusterDecoder",signature:"ColourCodeDecoder(dem: stim.DetectorErrorModel)",desc:"Research decoders: native colour-code decoding over undecomposed detector error models (color_code family), two-stage decoding pipelines, and ambiguity-cluster resolution.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"}],example:`import qector_decoder_v3 as qd -decoder = qd.ColourCodeDecoder(dem)`},{name:"GNNBeliefMatcher",signature:"GNNBeliefMatcher(dem: stim.DetectorErrorModel, model_path: str)",desc:"Research-stage graph neural network enhanced belief propagation module. Not validated for production use.",parameters:[{name:"dem",type:"stim.DetectorErrorModel",default:"Required",desc:"Detector error model"},{name:"model_path",type:"str",default:"Required",desc:"Path to trained GNN weights file"}],example:`import qector_decoder_v3 as qd -matcher = qd.GNNBeliefMatcher(dem, "weights.pt")`}],i=c.filter(r=>r.name.toLowerCase().includes(a.toLowerCase())),p=r=>{m(t===r?null:r)};return o.useEffect(()=>{window.matchMedia("(prefers-reduced-motion: reduce)").matches||t&&s.current&&f.fromTo(s.current,{opacity:0,y:10},{opacity:1,y:0,duration:.3,ease:"power2.out"})},[t]),e.jsxs(e.Fragment,{children:[e.jsx(u,{title:"Technical Reference · QECTOR",description:"API reference, decoder parameters, and technical documentation for QECTOR quantum error correction decoder."}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"eyebrow-pill mb-6",children:"16 Decoder APIs · Stim DEM · Signatures Are Examples"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(h,{text:"Technical Reference",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsx("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:"API overview for QECTOR's decoders. Signatures, defaults, and snippets below are illustrative examples; treat the installed package as the authoritative reference."})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{className:"relative mb-8 max-w-md mx-auto md:mx-0",children:[e.jsx("label",{htmlFor:"decoder-search",className:"sr-only",children:"Search decoders"}),e.jsx("input",{id:"decoder-search",type:"search",placeholder:"Search decoders...",value:a,onChange:r=>l(r.target.value),className:"w-full px-10 py-3 bg-surface/50 border border-gridline rounded-xl text-primary text-sm focus:border-cyan-300/50 focus-visible:ring-2 focus-visible:ring-cyan-300 transition-colors"}),e.jsx(x,{className:"w-5 h-5 text-muted-foreground absolute left-3 top-3.5"})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-12 gap-8",children:[e.jsxs("div",{className:"lg:col-span-4 space-y-2",children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider px-2 mb-2 flex items-center gap-1.5",children:[e.jsx(g,{className:"w-3.5 h-3.5"}),"Decoder Classes"]}),e.jsxs("div",{className:"space-y-1",children:[i.map(r=>e.jsxs("button",{"aria-expanded":t===r.name,onClick:()=>p(r.name),className:`w-full flex items-center justify-between p-3.5 rounded-xl border text-sm transition-all duration-200 ${t===r.name?"bg-cyan-300/10 text-cyan-300 border-cyan-300/20 shadow-xs":"bg-surface/20 text-secondary hover:text-primary hover:bg-surface/40 border-gridline/50"}`,children:[e.jsx("span",{className:"font-mono font-semibold",children:r.name}),t===r.name?e.jsx(b,{className:"w-4 h-4"}):e.jsx(y,{className:"w-4 h-4 text-muted-foreground"})]},r.name)),i.length===0&&e.jsxs("div",{className:"p-4 text-center text-xs text-muted-foreground italic border border-dashed border-gridline rounded-xl",children:['No decoders matching "',a,'"']})]})]}),e.jsx("div",{className:"lg:col-span-8",children:t?(()=>{const r=c.find(d=>d.name===t);return r?e.jsxs("div",{ref:s,className:"card-surface bg-surface/10 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold text-primary font-mono",children:r.name}),e.jsx("p",{className:"text-secondary text-sm mt-3 leading-relaxed",children:r.desc})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(_,{className:"w-3.5 h-3.5"}),"Signature"]}),e.jsx(n,{code:r.signature,language:"python",className:"!my-0 bg-void/70"})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2 flex items-center gap-1.5",children:[e.jsx(v,{className:"w-3.5 h-3.5"}),"Parameters"]}),e.jsx("div",{className:"overflow-x-auto border border-gridline rounded-xl",children:e.jsxs("table",{className:"w-full min-w-[640px] border-collapse text-left text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-surface/50 border-b border-gridline text-cyan-300 text-xs font-semibold uppercase tracking-wider",children:[e.jsx("th",{className:"p-3",children:"Name"}),e.jsx("th",{className:"p-3",children:"Type"}),e.jsx("th",{className:"p-3",children:"Default"}),e.jsx("th",{className:"p-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline",children:r.parameters.map(d=>e.jsxs("tr",{className:"hover:bg-surface/20 transition-colors",children:[e.jsx("td",{className:"p-3 font-mono font-semibold text-primary",children:d.name}),e.jsx("td",{className:"p-3 font-mono text-xs text-secondary",children:d.type}),e.jsx("td",{className:"p-3 font-mono text-xs text-cyan-300",children:d.default}),e.jsx("td",{className:"p-3 text-xs text-secondary leading-relaxed",children:d.desc})]},d.name))})]})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2",children:"Usage Example"}),e.jsx(n,{code:r.example,language:"python",filename:`${r.name.toLowerCase()}_usage.py`})]})]}):null})():e.jsx("div",{className:"h-full flex items-center justify-center border border-dashed border-gridline rounded-2xl p-12 text-center text-muted-foreground italic text-sm",children:"Select a decoder class from the sidebar to inspect parameters and example usage."})})]})]})})]})}export{R as default}; diff --git a/assets/Terms-76bOmhZP.js b/assets/Terms-76bOmhZP.js deleted file mode 100644 index dc3431f2..00000000 --- a/assets/Terms-76bOmhZP.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-DlmjLVYe.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Terms of Service · QECTOR",description:"Terms of service for QECTOR website and software.",lang:"en",alternates:[{lang:"en",href:"https://qector.store/terms/"},{lang:"fr",href:"https://qector.store/fr/terms/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"Governing Law: Québec, Canada · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Terms of Service",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["By using QECTOR software or this website, you agree to these terms. Questions? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Who You Are Buying From"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["QECTOR software and commercial licenses are sold by"," ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", sole proprietor, trading as iD01t Productions, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Registered address: 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7.",e.jsx("br",{}),"Contact: ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All prices are quoted and charged in ",e.jsx("strong",{className:"text-primary",children:"US dollars (USD)"}),", exclusive of tax. Stripe processes all payments and adds applicable sales tax, GST/HST, or VAT at checkout based on your billing location; card details never reach QECTOR systems. License tokens are issued and emailed within minutes of successful payment (usually under 10 minutes). Subscriptions (Pro monthly or annual, Team, Lab) renew automatically until cancelled and can be cancelled at any time; the first payment of every plan carries a 14-day money-back guarantee: see the"," ",e.jsx("a",{href:"/refund",className:"text-cyan-300 hover:underline",children:"Refund Policy"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Acceptance of Terms"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"By accessing or using the QECTOR website, software, or services, you agree to be bound by these Terms of Service. If you do not agree, do not use our services."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Software License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR Decoder v3 is licensed under the PolyForm Noncommercial License 1.0.0 for non-commercial use. Commercial use requires a separate commercial license agreement. See the"," ",e.jsx("a",{href:"/license",className:"text-cyan-300 hover:underline",children:"License page"})," for details."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Disclaimer of Warranties"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:'THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. QECTOR Decoder v3 is source available (PolyForm Noncommercial for community / research use; commercial license required for commercial use). It is simulation-validated software, not a production fault-tolerance stack.'})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Limitation of Liability"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Termination"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We may suspend or terminate your license for material breach (including breach of the non-commercial/commercial use boundaries) after written notice and a 15-day cure period. On termination, you must stop commercial use and delete tokens; no refund is due for the elapsed term."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Governing Law"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"These terms shall be governed by and construed in accordance with the laws of Québec, Canada. Any disputes shall be resolved in the courts of Montréal, Québec. If you are an EU/UK consumer, this does not deprive you of the protection of the mandatory laws of your country of residence."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Changes to Terms"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We reserve the right to modify these terms at any time. Changes will be effective immediately upon posting. Continued use of the services constitutes acceptance of the modified terms. For material changes affecting paid licenses, we will give at least 30 days notice by email; changes apply to renewals and new purchases, not retroactively to the current paid term."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Questions about these terms? Contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/Terms-77QLsgfs.js b/assets/Terms-77QLsgfs.js deleted file mode 100644 index 0ff710fd..00000000 --- a/assets/Terms-77QLsgfs.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as t}from"./LegalPage-CclXHnEm.js";import{t as o}from"./terms-B2iKgo_y.js";import"./index-abfjMTlQ.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-D-EQoOl2.js";function x(){return r.jsx(t,{doc:o})}export{x as default}; diff --git a/assets/Terms-BCAJnAzZ.js b/assets/Terms-BCAJnAzZ.js deleted file mode 100644 index b9681121..00000000 --- a/assets/Terms-BCAJnAzZ.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-DkYdPRY7.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Terms of Service · QECTOR",description:"Terms of service for QECTOR website and software.",lang:"en",alternates:[{lang:"en",href:"https://qector.store/terms/"},{lang:"fr",href:"https://qector.store/fr/terms/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"Governing Law: Québec, Canada · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Terms of Service",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["By using QECTOR software or this website, you agree to these terms. Questions? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Who You Are Buying From"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["QECTOR software and commercial licenses are sold by"," ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", sole proprietor, trading as iD01t Productions, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Registered address: 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7.",e.jsx("br",{}),"Contact: ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All prices are quoted and charged in ",e.jsx("strong",{className:"text-primary",children:"US dollars (USD)"}),", exclusive of tax. Stripe processes all payments and adds applicable sales tax, GST/HST, or VAT at checkout based on your billing location; card details never reach QECTOR systems. License tokens are issued and emailed within minutes of successful payment (usually under 10 minutes). Subscriptions (Pro monthly or annual, Lab) renew automatically until cancelled and can be cancelled at any time; the first payment of every plan carries a 14-day money-back guarantee: see the"," ",e.jsx("a",{href:"/refund",className:"text-cyan-300 hover:underline",children:"Refund Policy"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Acceptance of Terms"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"By accessing or using the QECTOR website, software, or services, you agree to be bound by these Terms of Service. If you do not agree, do not use our services."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Software License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR Decoder v3 is licensed under the PolyForm Noncommercial License 1.0.0 for non-commercial use. Commercial use requires a separate commercial license agreement. See the"," ",e.jsx("a",{href:"/license",className:"text-cyan-300 hover:underline",children:"License page"})," for details."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Disclaimer of Warranties"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:'THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. QECTOR Decoder v3 is source available (PolyForm Noncommercial for community / research use; commercial license required for commercial use). It is simulation-validated software, not a production fault-tolerance stack.'})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Limitation of Liability"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Termination"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We may suspend or terminate your license for material breach (including breach of the non-commercial/commercial use boundaries) after written notice and a 15-day cure period. On termination, you must stop commercial use and delete tokens; no refund is due for the elapsed term."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Governing Law"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"These terms shall be governed by and construed in accordance with the laws of Québec, Canada. Any disputes shall be resolved in the courts of Montréal, Québec. If you are an EU/UK consumer, this does not deprive you of the protection of the mandatory laws of your country of residence."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Changes to Terms"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We reserve the right to modify these terms at any time. Changes will be effective immediately upon posting. Continued use of the services constitutes acceptance of the modified terms. For material changes affecting paid licenses, we will give at least 30 days notice by email; changes apply to renewals and new purchases, not retroactively to the current paid term."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Questions about these terms? Contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/Terms-BM0r7Vh2.js b/assets/Terms-BM0r7Vh2.js deleted file mode 100644 index dacf5ef3..00000000 --- a/assets/Terms-BM0r7Vh2.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as t}from"./LegalPage-D-Mi7GTG.js";import{t as o}from"./terms-LnOasveG.js";import"./index-c1PDYu0j.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-uYarhiMA.js";function n(){return r.jsx(t,{doc:o})}export{n as default}; diff --git a/assets/Terms-BMvqN1Ou.js b/assets/Terms-BMvqN1Ou.js deleted file mode 100644 index 048dd7e8..00000000 --- a/assets/Terms-BMvqN1Ou.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as t}from"./LegalPage-CFP-uSSS.js";import{t as o}from"./terms-LnOasveG.js";import"./index-DayaklK-.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-uYarhiMA.js";function n(){return r.jsx(t,{doc:o})}export{n as default}; diff --git a/assets/Terms-BQl40Nln.js b/assets/Terms-BQl40Nln.js deleted file mode 100644 index 3389bdcd..00000000 --- a/assets/Terms-BQl40Nln.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as t}from"./LegalPage-k7aoVn24.js";import{t as o}from"./terms-DgnSX4e_.js";import"./index-CCmwjNGU.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-uYarhiMA.js";function n(){return r.jsx(t,{doc:o})}export{n as default}; diff --git a/assets/Terms-BSR2RP9l.js b/assets/Terms-BSR2RP9l.js deleted file mode 100644 index 0818a7e6..00000000 --- a/assets/Terms-BSR2RP9l.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-BUYYSLdX.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Terms of Service · QECTOR",description:"Terms of service for QECTOR website and software.",lang:"en",alternates:[{lang:"en",href:"https://qector.store/terms/"},{lang:"fr",href:"https://qector.store/fr/terms/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"Governing Law: Québec, Canada · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Terms of Service",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["By using QECTOR software or this website, you agree to these terms. Questions? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Who You Are Buying From"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["QECTOR software and commercial licenses are sold by"," ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", sole proprietor, trading as iD01t Productions, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Registered address: 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7.",e.jsx("br",{}),"Contact: ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All prices are quoted and charged in ",e.jsx("strong",{className:"text-primary",children:"US dollars (USD)"}),", exclusive of tax. Stripe processes all payments and adds applicable sales tax, GST/HST, or VAT at checkout based on your billing location; card details never reach QECTOR systems. License tokens are issued and emailed within minutes of successful payment (usually under 10 minutes). Subscriptions (Pro monthly or annual, Lab) renew automatically until cancelled and can be cancelled at any time; the first payment of every plan carries a 14-day money-back guarantee: see the"," ",e.jsx("a",{href:"/refund",className:"text-cyan-300 hover:underline",children:"Refund Policy"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Acceptance of Terms"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"By accessing or using the QECTOR website, software, or services, you agree to be bound by these Terms of Service. If you do not agree, do not use our services."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Software License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR Decoder v3 is licensed under the PolyForm Noncommercial License 1.0.0 for non-commercial use. Commercial use requires a separate commercial license agreement. See the"," ",e.jsx("a",{href:"/license",className:"text-cyan-300 hover:underline",children:"License page"})," for details."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Disclaimer of Warranties"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:'THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. QECTOR Decoder v3 is source available (PolyForm Noncommercial for community / research use; commercial license required for commercial use). It is simulation-validated software, not a production fault-tolerance stack.'})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Limitation of Liability"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Termination"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We may suspend or terminate your license for material breach (including breach of the non-commercial/commercial use boundaries) after written notice and a 15-day cure period. On termination, you must stop commercial use and delete tokens; no refund is due for the elapsed term."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Governing Law"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"These terms shall be governed by and construed in accordance with the laws of Québec, Canada. Any disputes shall be resolved in the courts of Montréal, Québec. If you are an EU/UK consumer, this does not deprive you of the protection of the mandatory laws of your country of residence."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Changes to Terms"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We reserve the right to modify these terms at any time. Changes will be effective immediately upon posting. Continued use of the services constitutes acceptance of the modified terms. For material changes affecting paid licenses, we will give at least 30 days notice by email; changes apply to renewals and new purchases, not retroactively to the current paid term."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Questions about these terms? Contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/Terms-BWWtoPuP.js b/assets/Terms-BWWtoPuP.js deleted file mode 100644 index 3a27a2c4..00000000 --- a/assets/Terms-BWWtoPuP.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-CpdATiEY.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Terms of Service · QECTOR",description:"Terms of service for QECTOR website and software.",lang:"en",alternates:[{lang:"en",href:"https://qector.store/terms/"},{lang:"fr",href:"https://qector.store/fr/terms/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"Governing Law: Québec, Canada · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Terms of Service",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["By using QECTOR software or this website, you agree to these terms. Questions? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Who You Are Buying From"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["QECTOR software and commercial licenses are sold by"," ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", sole proprietor, trading as iD01t Productions, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Registered address: 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7.",e.jsx("br",{}),"Contact: ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All prices are quoted and charged in ",e.jsx("strong",{className:"text-primary",children:"US dollars (USD)"}),", exclusive of tax. Stripe processes all payments and adds applicable sales tax, GST/HST, or VAT at checkout based on your billing location; card details never reach QECTOR systems. License tokens are issued and emailed within minutes of successful payment (usually under 10 minutes). Subscriptions (Pro monthly or annual, Team, Lab) renew automatically until cancelled and can be cancelled at any time; the first payment of every plan carries a 14-day money-back guarantee: see the"," ",e.jsx("a",{href:"/refund",className:"text-cyan-300 hover:underline",children:"Refund Policy"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Acceptance of Terms"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"By accessing or using the QECTOR website, software, or services, you agree to be bound by these Terms of Service. If you do not agree, do not use our services."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Software License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR Decoder v3 is licensed under the PolyForm Noncommercial License 1.0.0 for non-commercial use. Commercial use requires a separate commercial license agreement. See the"," ",e.jsx("a",{href:"/license",className:"text-cyan-300 hover:underline",children:"License page"})," for details."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Disclaimer of Warranties"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:'THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. QECTOR Decoder v3 is source available (PolyForm Noncommercial for community / research use; commercial license required for commercial use). It is simulation-validated software, not a production fault-tolerance stack.'})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Limitation of Liability"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Termination"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We may suspend or terminate your license for material breach (including breach of the non-commercial/commercial use boundaries) after written notice and a 15-day cure period. On termination, you must stop commercial use and delete tokens; no refund is due for the elapsed term."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Governing Law"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"These terms shall be governed by and construed in accordance with the laws of Québec, Canada. Any disputes shall be resolved in the courts of Montréal, Québec. If you are an EU/UK consumer, this does not deprive you of the protection of the mandatory laws of your country of residence."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Changes to Terms"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We reserve the right to modify these terms at any time. Changes will be effective immediately upon posting. Continued use of the services constitutes acceptance of the modified terms. For material changes affecting paid licenses, we will give at least 30 days notice by email; changes apply to renewals and new purchases, not retroactively to the current paid term."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Questions about these terms? Contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/Terms-C28kGJxx.js b/assets/Terms-C28kGJxx.js deleted file mode 100644 index d754c8b7..00000000 --- a/assets/Terms-C28kGJxx.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-BN-vOeL2.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Terms of Service · QECTOR",description:"Terms of service for QECTOR website and software.",lang:"en",alternates:[{lang:"en",href:"https://qector.store/terms/"},{lang:"fr",href:"https://qector.store/fr/terms/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"Governing Law: Québec, Canada · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Terms of Service",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["By using QECTOR software or this website, you agree to these terms. Questions? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Who You Are Buying From"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["QECTOR software and commercial licenses are sold by"," ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", sole proprietor, trading as iD01t Productions, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Registered address: 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7.",e.jsx("br",{}),"Contact: ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All prices are quoted and charged in ",e.jsx("strong",{className:"text-primary",children:"US dollars (USD)"}),", exclusive of tax. Stripe processes all payments and adds applicable sales tax, GST/HST, or VAT at checkout based on your billing location; card details never reach QECTOR systems. License tokens are issued and emailed within minutes of successful payment (usually under 10 minutes). Subscriptions (Pro monthly or annual, Team, Lab) renew automatically until cancelled and can be cancelled at any time; the first payment of every plan carries a 14-day money-back guarantee: see the"," ",e.jsx("a",{href:"/refund",className:"text-cyan-300 hover:underline",children:"Refund Policy"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Acceptance of Terms"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"By accessing or using the QECTOR website, software, or services, you agree to be bound by these Terms of Service. If you do not agree, do not use our services."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Software License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR Decoder v3 is licensed under the PolyForm Noncommercial License 1.0.0 for non-commercial use. Commercial use requires a separate commercial license agreement. See the"," ",e.jsx("a",{href:"/license",className:"text-cyan-300 hover:underline",children:"License page"})," for details."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Disclaimer of Warranties"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:'THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. QECTOR Decoder v3 is source available (PolyForm Noncommercial for community / research use; commercial license required for commercial use). It is simulation-validated software, not a production fault-tolerance stack.'})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Limitation of Liability"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Termination"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We may suspend or terminate your license for material breach (including breach of the non-commercial/commercial use boundaries) after written notice and a 15-day cure period. On termination, you must stop commercial use and delete tokens; no refund is due for the elapsed term."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Governing Law"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"These terms shall be governed by and construed in accordance with the laws of Québec, Canada. Any disputes shall be resolved in the courts of Montréal, Québec. If you are an EU/UK consumer, this does not deprive you of the protection of the mandatory laws of your country of residence."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Changes to Terms"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We reserve the right to modify these terms at any time. Changes will be effective immediately upon posting. Continued use of the services constitutes acceptance of the modified terms. For material changes affecting paid licenses, we will give at least 30 days notice by email; changes apply to renewals and new purchases, not retroactively to the current paid term."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Questions about these terms? Contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/Terms-C4cY4y3Q.js b/assets/Terms-C4cY4y3Q.js deleted file mode 100644 index c93b0d75..00000000 --- a/assets/Terms-C4cY4y3Q.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as t}from"./LegalPage-OlrhtE5C.js";import{t as o}from"./terms-LnOasveG.js";import"./index-PdoH5kLF.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-Bsl9IGCr.js";function n(){return r.jsx(t,{doc:o})}export{n as default}; diff --git a/assets/Terms-CBCTDevc.js b/assets/Terms-CBCTDevc.js deleted file mode 100644 index 4271f3da..00000000 --- a/assets/Terms-CBCTDevc.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as t}from"./LegalPage-DvyIDT6j.js";import{t as o}from"./terms-LnOasveG.js";import"./index-Bh9DBCb3.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-D-EQoOl2.js";function x(){return r.jsx(t,{doc:o})}export{x as default}; diff --git a/assets/Terms-CGsSEgCq.js b/assets/Terms-CGsSEgCq.js deleted file mode 100644 index be968278..00000000 --- a/assets/Terms-CGsSEgCq.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-_BpMZhV3.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Terms of Service · QECTOR",description:"Terms of service for QECTOR website and software.",lang:"en",alternates:[{lang:"en",href:"https://qector.store/terms/"},{lang:"fr",href:"https://qector.store/fr/terms/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"Governing Law: Québec, Canada · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Terms of Service",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["By using QECTOR software or this website, you agree to these terms. Questions? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Who You Are Buying From"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["QECTOR software and commercial licenses are sold by"," ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", sole proprietor, trading as iD01t Productions, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Registered address: 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7.",e.jsx("br",{}),"Contact: ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All prices are quoted and charged in ",e.jsx("strong",{className:"text-primary",children:"US dollars (USD)"}),", exclusive of tax. Stripe processes all payments and adds applicable sales tax, GST/HST, or VAT at checkout based on your billing location; card details never reach QECTOR systems. License tokens are issued and emailed within minutes of successful payment (usually under 10 minutes) and all sales are final: see the ",e.jsx("a",{href:"/refund",className:"text-cyan-300 hover:underline",children:"Refund Policy"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Acceptance of Terms"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"By accessing or using the QECTOR website, software, or services, you agree to be bound by these Terms of Service. If you do not agree, do not use our services."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Software License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR Decoder v3 is licensed under the PolyForm Noncommercial License 1.0.0 for non-commercial use. Commercial use requires a separate commercial license agreement. See the"," ",e.jsx("a",{href:"/license",className:"text-cyan-300 hover:underline",children:"License page"})," for details."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Disclaimer of Warranties"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:'THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. QECTOR Decoder v3 is source available (PolyForm Noncommercial for community / research use; commercial license required for commercial use). It is simulation-validated software, not a production fault-tolerance stack.'})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Limitation of Liability"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Termination"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We may suspend or terminate your license for material breach (including breach of the non-commercial/commercial use boundaries) after written notice and a 15-day cure period. On termination, you must stop commercial use and delete tokens; no refund is due for the elapsed term."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Governing Law"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"These terms shall be governed by and construed in accordance with the laws of Québec, Canada. Any disputes shall be resolved in the courts of Montréal, Québec. If you are an EU/UK consumer, this does not deprive you of the protection of the mandatory laws of your country of residence."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Changes to Terms"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We reserve the right to modify these terms at any time. Changes will be effective immediately upon posting. Continued use of the services constitutes acceptance of the modified terms. For material changes affecting paid licenses, we will give at least 30 days notice by email; changes apply to renewals and new purchases, not retroactively to the current paid term."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Questions about these terms? Contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/Terms-CLjJSdI4.js b/assets/Terms-CLjJSdI4.js deleted file mode 100644 index d664924d..00000000 --- a/assets/Terms-CLjJSdI4.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-iVST85F-.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Terms of Service · QECTOR",description:"Terms of service for QECTOR website and software.",lang:"en",alternates:[{lang:"en",href:"https://qector.store/terms/"},{lang:"fr",href:"https://qector.store/fr/terms/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"Governing Law: Québec, Canada · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Terms of Service",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["By using QECTOR software or this website, you agree to these terms. Questions? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Who You Are Buying From"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["QECTOR software and commercial licenses are sold by"," ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", sole proprietor, trading as iD01t Productions, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Registered address: 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7.",e.jsx("br",{}),"Contact: ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All prices are quoted and charged in ",e.jsx("strong",{className:"text-primary",children:"US dollars (USD)"}),", exclusive of tax. Stripe processes all payments and adds applicable sales tax, GST/HST, or VAT at checkout based on your billing location; card details never reach QECTOR systems. License tokens are issued and emailed within minutes of successful payment (usually under 10 minutes) and all sales are final: see the ",e.jsx("a",{href:"/refund",className:"text-cyan-300 hover:underline",children:"Refund Policy"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Acceptance of Terms"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"By accessing or using the QECTOR website, software, or services, you agree to be bound by these Terms of Service. If you do not agree, do not use our services."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Software License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR Decoder v3 is licensed under the PolyForm Noncommercial License 1.0.0 for non-commercial use. Commercial use requires a separate commercial license agreement. See the"," ",e.jsx("a",{href:"/license",className:"text-cyan-300 hover:underline",children:"License page"})," for details."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Disclaimer of Warranties"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:'THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. QECTOR Decoder v3 is source available (PolyForm Noncommercial for community / research use; commercial license required for commercial use). It is simulation-validated software, not a production fault-tolerance stack.'})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Limitation of Liability"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Termination"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We may suspend or terminate your license for material breach (including breach of the non-commercial/commercial use boundaries) after written notice and a 15-day cure period. On termination, you must stop commercial use and delete tokens; no refund is due for the elapsed term."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Governing Law"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"These terms shall be governed by and construed in accordance with the laws of Québec, Canada. Any disputes shall be resolved in the courts of Montréal, Québec. If you are an EU/UK consumer, this does not deprive you of the protection of the mandatory laws of your country of residence."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Changes to Terms"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We reserve the right to modify these terms at any time. Changes will be effective immediately upon posting. Continued use of the services constitutes acceptance of the modified terms. For material changes affecting paid licenses, we will give at least 30 days notice by email; changes apply to renewals and new purchases, not retroactively to the current paid term."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Questions about these terms? Contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/Terms-CVZRlSgU.js b/assets/Terms-CVZRlSgU.js deleted file mode 100644 index 591de1ea..00000000 --- a/assets/Terms-CVZRlSgU.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-WV1aysjN.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Terms of Service · QECTOR",description:"Terms of service for QECTOR website and software.",lang:"en",alternates:[{lang:"en",href:"https://qector.store/terms/"},{lang:"fr",href:"https://qector.store/fr/terms/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"Governing Law: Québec, Canada · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Terms of Service",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["By using QECTOR software or this website, you agree to these terms. Questions? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Who You Are Buying From"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["QECTOR software and commercial licenses are sold by"," ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", sole proprietor, trading as iD01t Productions, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Registered address: 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7.",e.jsx("br",{}),"Contact: ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All prices are quoted and charged in ",e.jsx("strong",{className:"text-primary",children:"US dollars (USD)"}),", exclusive of tax. Stripe processes all payments and adds applicable sales tax, GST/HST, or VAT at checkout based on your billing location; card details never reach QECTOR systems. License tokens are issued and emailed within minutes of successful payment (usually under 10 minutes). Subscriptions (Pro monthly or annual, Team, Lab) renew automatically until cancelled and can be cancelled at any time; the first payment of every plan carries a 14-day money-back guarantee: see the"," ",e.jsx("a",{href:"/refund",className:"text-cyan-300 hover:underline",children:"Refund Policy"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Acceptance of Terms"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"By accessing or using the QECTOR website, software, or services, you agree to be bound by these Terms of Service. If you do not agree, do not use our services."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Software License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR Decoder v3 is licensed under the PolyForm Noncommercial License 1.0.0 for non-commercial use. Commercial use requires a separate commercial license agreement. See the"," ",e.jsx("a",{href:"/license",className:"text-cyan-300 hover:underline",children:"License page"})," for details."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Disclaimer of Warranties"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:'THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. QECTOR Decoder v3 is source available (PolyForm Noncommercial for community / research use; commercial license required for commercial use). It is simulation-validated software, not a production fault-tolerance stack.'})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Limitation of Liability"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Termination"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We may suspend or terminate your license for material breach (including breach of the non-commercial/commercial use boundaries) after written notice and a 15-day cure period. On termination, you must stop commercial use and delete tokens; no refund is due for the elapsed term."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Governing Law"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"These terms shall be governed by and construed in accordance with the laws of Québec, Canada. Any disputes shall be resolved in the courts of Montréal, Québec. If you are an EU/UK consumer, this does not deprive you of the protection of the mandatory laws of your country of residence."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Changes to Terms"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We reserve the right to modify these terms at any time. Changes will be effective immediately upon posting. Continued use of the services constitutes acceptance of the modified terms. For material changes affecting paid licenses, we will give at least 30 days notice by email; changes apply to renewals and new purchases, not retroactively to the current paid term."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Questions about these terms? Contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/Terms-DPSf-TPz.js b/assets/Terms-DPSf-TPz.js deleted file mode 100644 index 86fbc990..00000000 --- a/assets/Terms-DPSf-TPz.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-DRAXObZB.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Terms of Service · QECTOR",description:"Terms of service for QECTOR website and software.",lang:"en",alternates:[{lang:"en",href:"https://qector.store/terms/"},{lang:"fr",href:"https://qector.store/fr/terms/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"Governing Law: Québec, Canada · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Terms of Service",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["By using QECTOR software or this website, you agree to these terms. Questions? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Who You Are Buying From"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["QECTOR software and commercial licenses are sold by"," ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", sole proprietor, trading as iD01t Productions, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Registered address: 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7.",e.jsx("br",{}),"Contact: ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All prices are quoted and charged in ",e.jsx("strong",{className:"text-primary",children:"US dollars (USD)"}),", exclusive of tax. Stripe processes all payments and adds applicable sales tax, GST/HST, or VAT at checkout based on your billing location; card details never reach QECTOR systems. License tokens are issued and emailed within minutes of successful payment (usually under 10 minutes). Subscriptions (Pro monthly or annual, Lab) renew automatically until cancelled and can be cancelled at any time; the first payment of every plan carries a 14-day money-back guarantee: see the"," ",e.jsx("a",{href:"/refund",className:"text-cyan-300 hover:underline",children:"Refund Policy"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Acceptance of Terms"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"By accessing or using the QECTOR website, software, or services, you agree to be bound by these Terms of Service. If you do not agree, do not use our services."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Software License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR Decoder v3 is licensed under the PolyForm Noncommercial License 1.0.0 for non-commercial use. Commercial use requires a separate commercial license agreement. See the"," ",e.jsx("a",{href:"/license",className:"text-cyan-300 hover:underline",children:"License page"})," for details."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Disclaimer of Warranties"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:'THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. QECTOR Decoder v3 is source available (PolyForm Noncommercial for community / research use; commercial license required for commercial use). It is simulation-validated software, not a production fault-tolerance stack.'})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Limitation of Liability"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Termination"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We may suspend or terminate your license for material breach (including breach of the non-commercial/commercial use boundaries) after written notice and a 15-day cure period. On termination, you must stop commercial use and delete tokens; no refund is due for the elapsed term."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Governing Law"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"These terms shall be governed by and construed in accordance with the laws of Québec, Canada. Any disputes shall be resolved in the courts of Montréal, Québec. If you are an EU/UK consumer, this does not deprive you of the protection of the mandatory laws of your country of residence."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Changes to Terms"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We reserve the right to modify these terms at any time. Changes will be effective immediately upon posting. Continued use of the services constitutes acceptance of the modified terms. For material changes affecting paid licenses, we will give at least 30 days notice by email; changes apply to renewals and new purchases, not retroactively to the current paid term."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Questions about these terms? Contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/Terms-DY-DzE_C.js b/assets/Terms-DY-DzE_C.js deleted file mode 100644 index b20865da..00000000 --- a/assets/Terms-DY-DzE_C.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-CqAA-ZXu.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Terms of Service · QECTOR",description:"Terms of service for QECTOR website and software.",lang:"en",alternates:[{lang:"en",href:"https://qector.store/terms/"},{lang:"fr",href:"https://qector.store/fr/terms/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"Governing Law: Québec, Canada · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Terms of Service",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["By using QECTOR software or this website, you agree to these terms. Questions? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Who You Are Buying From"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["QECTOR software and commercial licenses are sold by"," ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", sole proprietor, trading as iD01t Productions, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Registered address: 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7.",e.jsx("br",{}),"Contact: ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All prices are quoted and charged in ",e.jsx("strong",{className:"text-primary",children:"US dollars (USD)"}),", exclusive of tax. Stripe processes all payments and adds applicable sales tax, GST/HST, or VAT at checkout based on your billing location; card details never reach QECTOR systems. License tokens are issued and emailed within minutes of successful payment (usually under 10 minutes). Subscriptions (Pro monthly or annual, Team, Lab) renew automatically until cancelled and can be cancelled at any time; the first payment of every plan carries a 14-day money-back guarantee: see the"," ",e.jsx("a",{href:"/refund",className:"text-cyan-300 hover:underline",children:"Refund Policy"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Acceptance of Terms"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"By accessing or using the QECTOR website, software, or services, you agree to be bound by these Terms of Service. If you do not agree, do not use our services."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Software License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR Decoder v3 is licensed under the PolyForm Noncommercial License 1.0.0 for non-commercial use. Commercial use requires a separate commercial license agreement. See the"," ",e.jsx("a",{href:"/license",className:"text-cyan-300 hover:underline",children:"License page"})," for details."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Disclaimer of Warranties"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:'THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. QECTOR Decoder v3 is source available (PolyForm Noncommercial for community / research use; commercial license required for commercial use). It is simulation-validated software, not a production fault-tolerance stack.'})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Limitation of Liability"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Termination"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We may suspend or terminate your license for material breach (including breach of the non-commercial/commercial use boundaries) after written notice and a 15-day cure period. On termination, you must stop commercial use and delete tokens; no refund is due for the elapsed term."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Governing Law"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"These terms shall be governed by and construed in accordance with the laws of Québec, Canada. Any disputes shall be resolved in the courts of Montréal, Québec. If you are an EU/UK consumer, this does not deprive you of the protection of the mandatory laws of your country of residence."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Changes to Terms"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We reserve the right to modify these terms at any time. Changes will be effective immediately upon posting. Continued use of the services constitutes acceptance of the modified terms. For material changes affecting paid licenses, we will give at least 30 days notice by email; changes apply to renewals and new purchases, not retroactively to the current paid term."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Questions about these terms? Contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/Terms-Drxk6W26.js b/assets/Terms-Drxk6W26.js deleted file mode 100644 index ca965c7a..00000000 --- a/assets/Terms-Drxk6W26.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-BcbVjARk.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Terms of Service · QECTOR",description:"Terms of service for QECTOR website and software.",lang:"en",alternates:[{lang:"en",href:"https://qector.store/terms/"},{lang:"fr",href:"https://qector.store/fr/terms/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"Governing Law: Québec, Canada · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Terms of Service",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["By using QECTOR software or this website, you agree to these terms. Questions? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Who You Are Buying From"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["QECTOR software and commercial licenses are sold by"," ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", sole proprietor, trading as iD01t Productions, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Registered address: 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7.",e.jsx("br",{}),"Contact: ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All prices are quoted and charged in ",e.jsx("strong",{className:"text-primary",children:"US dollars (USD)"}),", exclusive of tax. Stripe processes all payments and adds applicable sales tax, GST/HST, or VAT at checkout based on your billing location; card details never reach QECTOR systems. License tokens are issued and emailed within minutes of successful payment (usually under 10 minutes) and all sales are final: see the ",e.jsx("a",{href:"/refund",className:"text-cyan-300 hover:underline",children:"Refund Policy"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Acceptance of Terms"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"By accessing or using the QECTOR website, software, or services, you agree to be bound by these Terms of Service. If you do not agree, do not use our services."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Software License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR Decoder v3 is licensed under the PolyForm Noncommercial License 1.0.0 for non-commercial use. Commercial use requires a separate commercial license agreement. See the"," ",e.jsx("a",{href:"/license",className:"text-cyan-300 hover:underline",children:"License page"})," for details."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Disclaimer of Warranties"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:'THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. QECTOR Decoder v3 is source available (PolyForm Noncommercial for community / research use; commercial license required for commercial use). It is simulation-validated software, not a production fault-tolerance stack.'})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Limitation of Liability"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Termination"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We may suspend or terminate your license for material breach (including breach of the non-commercial/commercial use boundaries) after written notice and a 15-day cure period. On termination, you must stop commercial use and delete tokens; no refund is due for the elapsed term."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Governing Law"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"These terms shall be governed by and construed in accordance with the laws of Québec, Canada. Any disputes shall be resolved in the courts of Montréal, Québec. If you are an EU/UK consumer, this does not deprive you of the protection of the mandatory laws of your country of residence."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Changes to Terms"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We reserve the right to modify these terms at any time. Changes will be effective immediately upon posting. Continued use of the services constitutes acceptance of the modified terms. For material changes affecting paid licenses, we will give at least 30 days notice by email; changes apply to renewals and new purchases, not retroactively to the current paid term."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Questions about these terms? Contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/Terms-DxyQtSpQ.js b/assets/Terms-DxyQtSpQ.js deleted file mode 100644 index 45807512..00000000 --- a/assets/Terms-DxyQtSpQ.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-B9kEGiWi.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Terms of Service · QECTOR",description:"Terms of service for QECTOR website and software.",lang:"en",alternates:[{lang:"en",href:"https://qector.store/terms/"},{lang:"fr",href:"https://qector.store/fr/terms/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"Governing Law: Québec, Canada · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Terms of Service",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["By using QECTOR software or this website, you agree to these terms. Questions? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Who You Are Buying From"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["QECTOR software and commercial licenses are sold by"," ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", sole proprietor, trading as iD01t Productions, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Registered address: 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7.",e.jsx("br",{}),"Contact: ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All prices are quoted and charged in ",e.jsx("strong",{className:"text-primary",children:"US dollars (USD)"}),", exclusive of tax. Stripe processes all payments and adds applicable sales tax, GST/HST, or VAT at checkout based on your billing location; card details never reach QECTOR systems. License tokens are issued and emailed within minutes of successful payment (usually under 10 minutes) and all sales are final: see the ",e.jsx("a",{href:"/refund",className:"text-cyan-300 hover:underline",children:"Refund Policy"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Acceptance of Terms"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"By accessing or using the QECTOR website, software, or services, you agree to be bound by these Terms of Service. If you do not agree, do not use our services."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Software License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR Decoder v3 is licensed under the PolyForm Noncommercial License 1.0.0 for non-commercial use. Commercial use requires a separate commercial license agreement. See the"," ",e.jsx("a",{href:"/license",className:"text-cyan-300 hover:underline",children:"License page"})," for details."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Disclaimer of Warranties"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:'THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. QECTOR Decoder v3 is source available (PolyForm Noncommercial for community / research use; commercial license required for commercial use). It is simulation-validated software, not a production fault-tolerance stack.'})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Limitation of Liability"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Termination"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We may suspend or terminate your license for material breach (including breach of the non-commercial/commercial use boundaries) after written notice and a 15-day cure period. On termination, you must stop commercial use and delete tokens; no refund is due for the elapsed term."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Governing Law"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"These terms shall be governed by and construed in accordance with the laws of Québec, Canada. Any disputes shall be resolved in the courts of Montréal, Québec. If you are an EU/UK consumer, this does not deprive you of the protection of the mandatory laws of your country of residence."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Changes to Terms"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We reserve the right to modify these terms at any time. Changes will be effective immediately upon posting. Continued use of the services constitutes acceptance of the modified terms. For material changes affecting paid licenses, we will give at least 30 days notice by email; changes apply to renewals and new purchases, not retroactively to the current paid term."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Questions about these terms? Contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/Terms-QBjW5d1V.js b/assets/Terms-QBjW5d1V.js deleted file mode 100644 index 0e73bdf0..00000000 --- a/assets/Terms-QBjW5d1V.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-CxWP17m6.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Terms of Service · QECTOR",description:"Terms of service for QECTOR website and software.",lang:"en",alternates:[{lang:"en",href:"https://qector.store/terms/"},{lang:"fr",href:"https://qector.store/fr/terms/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"Governing Law: Québec, Canada · Last updated September 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Terms of Service",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["By using QECTOR software or this website, you agree to these terms. Questions? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Who You Are Buying From"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["QECTOR software and commercial licenses are sold by"," ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", sole proprietor, trading as iD01t Productions, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Registered address: 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7.",e.jsx("br",{}),"Contact: ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["All prices are quoted and charged in ",e.jsx("strong",{className:"text-primary",children:"US dollars (USD)"}),", exclusive of tax. Stripe processes all payments and adds applicable sales tax, GST/HST, or VAT at checkout based on your billing location; card details never reach QECTOR systems. License tokens are issued and emailed within minutes of successful payment (usually under 10 minutes). Subscriptions (Pro monthly or annual, Lab) renew automatically until cancelled and can be cancelled at any time; the first payment of every plan carries a 14-day money-back guarantee: see the"," ",e.jsx("a",{href:"/refund",className:"text-cyan-300 hover:underline",children:"Refund Policy"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Acceptance of Terms"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"By accessing or using the QECTOR website, software, or services, you agree to be bound by these Terms of Service. If you do not agree, do not use our services."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Software License"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR Decoder v3 is licensed under the PolyForm Noncommercial License 1.0.0 for non-commercial use. Commercial use requires a separate commercial license agreement. See the"," ",e.jsx("a",{href:"/license",className:"text-cyan-300 hover:underline",children:"License page"})," for details."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Disclaimer of Warranties"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:'THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. QECTOR Decoder v3 is source available (PolyForm Noncommercial for community / research use; commercial license required for commercial use). It is simulation-validated software, not a production fault-tolerance stack.'})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Limitation of Liability"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Termination"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We may suspend or terminate your license for material breach (including breach of the non-commercial/commercial use boundaries) after written notice and a 15-day cure period. On termination, you must stop commercial use and delete tokens; no refund is due for the elapsed term."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Governing Law"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"These terms shall be governed by and construed in accordance with the laws of Québec, Canada. Any disputes shall be resolved in the courts of Montréal, Québec. If you are an EU/UK consumer, this does not deprive you of the protection of the mandatory laws of your country of residence."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Changes to Terms"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"We reserve the right to modify these terms at any time. Changes will be effective immediately upon posting. Continued use of the services constitutes acceptance of the modified terms. For material changes affecting paid licenses, we will give at least 30 days notice by email; changes apply to renewals and new purchases, not retroactively to the current paid term."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Questions about these terms? Contact us at"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/Terms-Yn4kZj_3.js b/assets/Terms-Yn4kZj_3.js deleted file mode 100644 index b31d6e82..00000000 --- a/assets/Terms-Yn4kZj_3.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as t}from"./LegalPage-BXZvemzZ.js";import{t as o}from"./terms-LnOasveG.js";import"./index-CcwlvHYJ.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-Bsl9IGCr.js";function n(){return r.jsx(t,{doc:o})}export{n as default}; diff --git a/assets/TermsFR-B3qetcJS.js b/assets/TermsFR-B3qetcJS.js deleted file mode 100644 index 24a6d0ee..00000000 --- a/assets/TermsFR-B3qetcJS.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-OlrhtE5C.js";import{a as t}from"./terms-LnOasveG.js";import"./index-PdoH5kLF.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-Bsl9IGCr.js";function n(){return r.jsx(o,{doc:t})}export{n as default}; diff --git a/assets/TermsFR-BL-VfMSd.js b/assets/TermsFR-BL-VfMSd.js deleted file mode 100644 index d07d73ca..00000000 --- a/assets/TermsFR-BL-VfMSd.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-BcbVjARk.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Conditions générales · QECTOR",description:"Conditions d’utilisation du site et du logiciel QECTOR.",lang:"fr",alternates:[{lang:"en",href:"https://qector.store/terms/"},{lang:"fr",href:"https://qector.store/fr/terms/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"Droit applicable : Québec, Canada · Dernière mise à jour : septembre 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Conditions générales",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["En utilisant le logiciel QECTOR ou ce site web, vous acceptez ces conditions. Questions ? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Votre vendeur"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Le logiciel QECTOR et les licences commerciales sont vendus par"," ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", entrepreneur individuel, exploitant sous le nom iD01t Productions, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Adresse enregistrée : 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7.",e.jsx("br",{}),"Contact : ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Tous les prix sont affichés et facturés en ",e.jsx("strong",{className:"text-primary",children:"dollars américains (USD)"}),", hors taxes. Stripe traite tous les paiements et ajoute la taxe de vente, la TPS/TVH ou la TVA applicable au paiement selon votre adresse de facturation; les données de carte ne parviennent jamais aux systèmes de QECTOR. Les jetons de licence sont émis et envoyés par courriel dans les minutes suivant le paiement (généralement moins de 10 minutes) et toutes les ventes sont finales : voir la ",e.jsx("a",{href:"/refund",className:"text-cyan-300 hover:underline",children:"politique de remboursement"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Acceptation des conditions"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"En accédant au site web, au logiciel ou aux services de QECTOR, ou en les utilisant, vous acceptez d’être lié par ces conditions générales. Si vous n’acceptez pas, n’utilisez pas nos services."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Licence du logiciel"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR Decoder v3 est concédé sous la licence PolyForm Noncommercial 1.0.0 pour l’usage non commercial. L’usage commercial exige un contrat de licence commerciale distinct. Voir la"," ",e.jsx("a",{href:"/license",className:"text-cyan-300 hover:underline",children:"page de licence"})," pour les détails."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Exclusion de garanties"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"LE LOGICIEL EST FOURNI « TEL QUEL », SANS GARANTIE D’AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS, SANS S’Y LIMITER, LES GARANTIES DE QUALITÉ MARCHANDE, D’ADAPTATION À UN USAGE PARTICULIER ET DE NON-VIOLATION. QECTOR Decoder v3 est à source disponible (PolyForm Noncommercial pour l’usage communautaire / recherche; licence commerciale exigée pour l’usage commercial). C’est un logiciel validé par simulation, pas une pile de tolérance aux pannes de production."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Limitation de responsabilité"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"EN AUCUN CAS LES AUTEURS OU LES DÉTENTEURS DES DROITS D’AUTEUR NE SERONT RESPONSABLES DE TOUTE RÉCLAMATION, DE TOUT DOMMAGE OU DE TOUTE AUTRE RESPONSABILITÉ, QUE CE SOIT DANS LE CADRE D’UNE ACTION CONTRACTUELLE, DÉLICTUELLE OU AUTRE, DÉCOULANT DU LOGICIEL OU DE SON UTILISATION OU D’AUTRES TRANSACTIONS LIÉES AU LOGICIEL."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Résiliation"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nous pouvons suspendre ou résilier votre licence en cas de manquement grave (y compris le non-respect des limites d’usage non commercial/commercial) après notification écrite et un délai de correction de 15 jours. En cas de résiliation, vous devez cesser tout usage commercial et supprimer les jetons ; aucun remboursement n’est dû pour la période écoulée."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Droit applicable"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Ces conditions sont régies et interprétées conformément aux lois du Québec, Canada. Tout litige sera tranché devant les tribunaux de Montréal, Québec. Si vous êtes un consommateur de l’UE/Royaume-Uni, cette clause ne vous prive pas de la protection des lois impératives de votre pays de résidence."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Modifications des conditions"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nous nous réservons le droit de modifier ces conditions à tout moment. Les modifications prendront effet immédiatement après leur publication. La poursuite de l’utilisation des services vaut acceptation des conditions modifiées. Pour toute modification substantielle affectant les licences payées, nous donnerons un préavis d’au moins 30 jours par courriel ; les modifications s’appliquent aux renouvellements et aux nouveaux achats, sans effet rétroactif sur la période payée en cours."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Des questions sur ces conditions ? Écrivez-nous à"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/TermsFR-BLz2i-t6.js b/assets/TermsFR-BLz2i-t6.js deleted file mode 100644 index 35e7e0aa..00000000 --- a/assets/TermsFR-BLz2i-t6.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-BN-vOeL2.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Conditions générales · QECTOR",description:"Conditions d’utilisation du site et du logiciel QECTOR.",lang:"fr",alternates:[{lang:"en",href:"https://qector.store/terms/"},{lang:"fr",href:"https://qector.store/fr/terms/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"Droit applicable : Québec, Canada · Dernière mise à jour : septembre 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Conditions générales",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["En utilisant le logiciel QECTOR ou ce site web, vous acceptez ces conditions. Questions ? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Votre vendeur"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Le logiciel QECTOR et les licences commerciales sont vendus par"," ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", entrepreneur individuel, exploitant sous le nom iD01t Productions, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Adresse enregistrée : 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7.",e.jsx("br",{}),"Contact : ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Tous les prix sont affichés et facturés en ",e.jsx("strong",{className:"text-primary",children:"dollars américains (USD)"}),", hors taxes. Stripe traite tous les paiements et ajoute la taxe de vente, la TPS/TVH ou la TVA applicable au paiement selon votre adresse de facturation; les données de carte ne parviennent jamais aux systèmes de QECTOR. Les jetons de licence sont émis et envoyés par courriel dans les minutes suivant le paiement (généralement moins de 10 minutes). Les abonnements (Pro mensuel ou annuel, Équipe, Labo) se renouvellent automatiquement jusqu’à annulation et peuvent être annulés en tout temps; le premier paiement de chaque forfait est couvert par une garantie satisfait ou remboursé de 14 jours : voir la ",e.jsx("a",{href:"/refund",className:"text-cyan-300 hover:underline",children:"politique de remboursement"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Acceptation des conditions"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"En accédant au site web, au logiciel ou aux services de QECTOR, ou en les utilisant, vous acceptez d’être lié par ces conditions générales. Si vous n’acceptez pas, n’utilisez pas nos services."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Licence du logiciel"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR Decoder v3 est concédé sous la licence PolyForm Noncommercial 1.0.0 pour l’usage non commercial. L’usage commercial exige un contrat de licence commerciale distinct. Voir la"," ",e.jsx("a",{href:"/license",className:"text-cyan-300 hover:underline",children:"page de licence"})," pour les détails."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Exclusion de garanties"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"LE LOGICIEL EST FOURNI « TEL QUEL », SANS GARANTIE D’AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS, SANS S’Y LIMITER, LES GARANTIES DE QUALITÉ MARCHANDE, D’ADAPTATION À UN USAGE PARTICULIER ET DE NON-VIOLATION. QECTOR Decoder v3 est à source disponible (PolyForm Noncommercial pour l’usage communautaire / recherche; licence commerciale exigée pour l’usage commercial). C’est un logiciel validé par simulation, pas une pile de tolérance aux pannes de production."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Limitation de responsabilité"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"EN AUCUN CAS LES AUTEURS OU LES DÉTENTEURS DES DROITS D’AUTEUR NE SERONT RESPONSABLES DE TOUTE RÉCLAMATION, DE TOUT DOMMAGE OU DE TOUTE AUTRE RESPONSABILITÉ, QUE CE SOIT DANS LE CADRE D’UNE ACTION CONTRACTUELLE, DÉLICTUELLE OU AUTRE, DÉCOULANT DU LOGICIEL OU DE SON UTILISATION OU D’AUTRES TRANSACTIONS LIÉES AU LOGICIEL."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Résiliation"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nous pouvons suspendre ou résilier votre licence en cas de manquement grave (y compris le non-respect des limites d’usage non commercial/commercial) après notification écrite et un délai de correction de 15 jours. En cas de résiliation, vous devez cesser tout usage commercial et supprimer les jetons ; aucun remboursement n’est dû pour la période écoulée."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Droit applicable"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Ces conditions sont régies et interprétées conformément aux lois du Québec, Canada. Tout litige sera tranché devant les tribunaux de Montréal, Québec. Si vous êtes un consommateur de l’UE/Royaume-Uni, cette clause ne vous prive pas de la protection des lois impératives de votre pays de résidence."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Modifications des conditions"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nous nous réservons le droit de modifier ces conditions à tout moment. Les modifications prendront effet immédiatement après leur publication. La poursuite de l’utilisation des services vaut acceptation des conditions modifiées. Pour toute modification substantielle affectant les licences payées, nous donnerons un préavis d’au moins 30 jours par courriel ; les modifications s’appliquent aux renouvellements et aux nouveaux achats, sans effet rétroactif sur la période payée en cours."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Des questions sur ces conditions ? Écrivez-nous à"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/TermsFR-BY56KTEe.js b/assets/TermsFR-BY56KTEe.js deleted file mode 100644 index 6bdfa769..00000000 --- a/assets/TermsFR-BY56KTEe.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-WV1aysjN.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Conditions générales · QECTOR",description:"Conditions d’utilisation du site et du logiciel QECTOR.",lang:"fr",alternates:[{lang:"en",href:"https://qector.store/terms/"},{lang:"fr",href:"https://qector.store/fr/terms/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"Droit applicable : Québec, Canada · Dernière mise à jour : septembre 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Conditions générales",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["En utilisant le logiciel QECTOR ou ce site web, vous acceptez ces conditions. Questions ? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Votre vendeur"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Le logiciel QECTOR et les licences commerciales sont vendus par"," ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", entrepreneur individuel, exploitant sous le nom iD01t Productions, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Adresse enregistrée : 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7.",e.jsx("br",{}),"Contact : ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Tous les prix sont affichés et facturés en ",e.jsx("strong",{className:"text-primary",children:"dollars américains (USD)"}),", hors taxes. Stripe traite tous les paiements et ajoute la taxe de vente, la TPS/TVH ou la TVA applicable au paiement selon votre adresse de facturation; les données de carte ne parviennent jamais aux systèmes de QECTOR. Les jetons de licence sont émis et envoyés par courriel dans les minutes suivant le paiement (généralement moins de 10 minutes). Les abonnements (Pro mensuel ou annuel, Équipe, Labo) se renouvellent automatiquement jusqu’à annulation et peuvent être annulés en tout temps; le premier paiement de chaque forfait est couvert par une garantie satisfait ou remboursé de 14 jours : voir la ",e.jsx("a",{href:"/refund",className:"text-cyan-300 hover:underline",children:"politique de remboursement"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Acceptation des conditions"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"En accédant au site web, au logiciel ou aux services de QECTOR, ou en les utilisant, vous acceptez d’être lié par ces conditions générales. Si vous n’acceptez pas, n’utilisez pas nos services."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Licence du logiciel"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR Decoder v3 est concédé sous la licence PolyForm Noncommercial 1.0.0 pour l’usage non commercial. L’usage commercial exige un contrat de licence commerciale distinct. Voir la"," ",e.jsx("a",{href:"/license",className:"text-cyan-300 hover:underline",children:"page de licence"})," pour les détails."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Exclusion de garanties"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"LE LOGICIEL EST FOURNI « TEL QUEL », SANS GARANTIE D’AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS, SANS S’Y LIMITER, LES GARANTIES DE QUALITÉ MARCHANDE, D’ADAPTATION À UN USAGE PARTICULIER ET DE NON-VIOLATION. QECTOR Decoder v3 est à source disponible (PolyForm Noncommercial pour l’usage communautaire / recherche; licence commerciale exigée pour l’usage commercial). C’est un logiciel validé par simulation, pas une pile de tolérance aux pannes de production."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Limitation de responsabilité"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"EN AUCUN CAS LES AUTEURS OU LES DÉTENTEURS DES DROITS D’AUTEUR NE SERONT RESPONSABLES DE TOUTE RÉCLAMATION, DE TOUT DOMMAGE OU DE TOUTE AUTRE RESPONSABILITÉ, QUE CE SOIT DANS LE CADRE D’UNE ACTION CONTRACTUELLE, DÉLICTUELLE OU AUTRE, DÉCOULANT DU LOGICIEL OU DE SON UTILISATION OU D’AUTRES TRANSACTIONS LIÉES AU LOGICIEL."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Résiliation"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nous pouvons suspendre ou résilier votre licence en cas de manquement grave (y compris le non-respect des limites d’usage non commercial/commercial) après notification écrite et un délai de correction de 15 jours. En cas de résiliation, vous devez cesser tout usage commercial et supprimer les jetons ; aucun remboursement n’est dû pour la période écoulée."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Droit applicable"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Ces conditions sont régies et interprétées conformément aux lois du Québec, Canada. Tout litige sera tranché devant les tribunaux de Montréal, Québec. Si vous êtes un consommateur de l’UE/Royaume-Uni, cette clause ne vous prive pas de la protection des lois impératives de votre pays de résidence."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Modifications des conditions"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nous nous réservons le droit de modifier ces conditions à tout moment. Les modifications prendront effet immédiatement après leur publication. La poursuite de l’utilisation des services vaut acceptation des conditions modifiées. Pour toute modification substantielle affectant les licences payées, nous donnerons un préavis d’au moins 30 jours par courriel ; les modifications s’appliquent aux renouvellements et aux nouveaux achats, sans effet rétroactif sur la période payée en cours."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Des questions sur ces conditions ? Écrivez-nous à"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/TermsFR-Bf_HkjhM.js b/assets/TermsFR-Bf_HkjhM.js deleted file mode 100644 index 3c3577b7..00000000 --- a/assets/TermsFR-Bf_HkjhM.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-CxWP17m6.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Conditions générales · QECTOR",description:"Conditions d’utilisation du site et du logiciel QECTOR.",lang:"fr",alternates:[{lang:"en",href:"https://qector.store/terms/"},{lang:"fr",href:"https://qector.store/fr/terms/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"Droit applicable : Québec, Canada · Dernière mise à jour : septembre 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Conditions générales",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["En utilisant le logiciel QECTOR ou ce site web, vous acceptez ces conditions. Questions ? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Votre vendeur"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Le logiciel QECTOR et les licences commerciales sont vendus par"," ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", entrepreneur individuel, exploitant sous le nom iD01t Productions, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Adresse enregistrée : 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7.",e.jsx("br",{}),"Contact : ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Tous les prix sont affichés et facturés en ",e.jsx("strong",{className:"text-primary",children:"dollars américains (USD)"}),", hors taxes. Stripe traite tous les paiements et ajoute la taxe de vente, la TPS/TVH ou la TVA applicable au paiement selon votre adresse de facturation; les données de carte ne parviennent jamais aux systèmes de QECTOR. Les jetons de licence sont émis et envoyés par courriel dans les minutes suivant le paiement (généralement moins de 10 minutes). Les abonnements (Pro mensuel ou annuel, Labo) se renouvellent automatiquement jusqu’à annulation et peuvent être annulés en tout temps; le premier paiement de chaque forfait est couvert par une garantie satisfait ou remboursé de 14 jours : voir la ",e.jsx("a",{href:"/refund",className:"text-cyan-300 hover:underline",children:"politique de remboursement"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Acceptation des conditions"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"En accédant au site web, au logiciel ou aux services de QECTOR, ou en les utilisant, vous acceptez d’être lié par ces conditions générales. Si vous n’acceptez pas, n’utilisez pas nos services."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Licence du logiciel"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR Decoder v3 est concédé sous la licence PolyForm Noncommercial 1.0.0 pour l’usage non commercial. L’usage commercial exige un contrat de licence commerciale distinct. Voir la"," ",e.jsx("a",{href:"/license",className:"text-cyan-300 hover:underline",children:"page de licence"})," pour les détails."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Exclusion de garanties"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"LE LOGICIEL EST FOURNI « TEL QUEL », SANS GARANTIE D’AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS, SANS S’Y LIMITER, LES GARANTIES DE QUALITÉ MARCHANDE, D’ADAPTATION À UN USAGE PARTICULIER ET DE NON-VIOLATION. QECTOR Decoder v3 est à source disponible (PolyForm Noncommercial pour l’usage communautaire / recherche; licence commerciale exigée pour l’usage commercial). C’est un logiciel validé par simulation, pas une pile de tolérance aux pannes de production."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Limitation de responsabilité"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"EN AUCUN CAS LES AUTEURS OU LES DÉTENTEURS DES DROITS D’AUTEUR NE SERONT RESPONSABLES DE TOUTE RÉCLAMATION, DE TOUT DOMMAGE OU DE TOUTE AUTRE RESPONSABILITÉ, QUE CE SOIT DANS LE CADRE D’UNE ACTION CONTRACTUELLE, DÉLICTUELLE OU AUTRE, DÉCOULANT DU LOGICIEL OU DE SON UTILISATION OU D’AUTRES TRANSACTIONS LIÉES AU LOGICIEL."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Résiliation"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nous pouvons suspendre ou résilier votre licence en cas de manquement grave (y compris le non-respect des limites d’usage non commercial/commercial) après notification écrite et un délai de correction de 15 jours. En cas de résiliation, vous devez cesser tout usage commercial et supprimer les jetons ; aucun remboursement n’est dû pour la période écoulée."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Droit applicable"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Ces conditions sont régies et interprétées conformément aux lois du Québec, Canada. Tout litige sera tranché devant les tribunaux de Montréal, Québec. Si vous êtes un consommateur de l’UE/Royaume-Uni, cette clause ne vous prive pas de la protection des lois impératives de votre pays de résidence."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Modifications des conditions"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nous nous réservons le droit de modifier ces conditions à tout moment. Les modifications prendront effet immédiatement après leur publication. La poursuite de l’utilisation des services vaut acceptation des conditions modifiées. Pour toute modification substantielle affectant les licences payées, nous donnerons un préavis d’au moins 30 jours par courriel ; les modifications s’appliquent aux renouvellements et aux nouveaux achats, sans effet rétroactif sur la période payée en cours."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Des questions sur ces conditions ? Écrivez-nous à"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/TermsFR-C-UQyznI.js b/assets/TermsFR-C-UQyznI.js deleted file mode 100644 index 4e00803f..00000000 --- a/assets/TermsFR-C-UQyznI.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-BUYYSLdX.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Conditions générales · QECTOR",description:"Conditions d’utilisation du site et du logiciel QECTOR.",lang:"fr",alternates:[{lang:"en",href:"https://qector.store/terms/"},{lang:"fr",href:"https://qector.store/fr/terms/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"Droit applicable : Québec, Canada · Dernière mise à jour : septembre 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Conditions générales",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["En utilisant le logiciel QECTOR ou ce site web, vous acceptez ces conditions. Questions ? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Votre vendeur"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Le logiciel QECTOR et les licences commerciales sont vendus par"," ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", entrepreneur individuel, exploitant sous le nom iD01t Productions, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Adresse enregistrée : 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7.",e.jsx("br",{}),"Contact : ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Tous les prix sont affichés et facturés en ",e.jsx("strong",{className:"text-primary",children:"dollars américains (USD)"}),", hors taxes. Stripe traite tous les paiements et ajoute la taxe de vente, la TPS/TVH ou la TVA applicable au paiement selon votre adresse de facturation; les données de carte ne parviennent jamais aux systèmes de QECTOR. Les jetons de licence sont émis et envoyés par courriel dans les minutes suivant le paiement (généralement moins de 10 minutes). Les abonnements (Pro mensuel ou annuel, Labo) se renouvellent automatiquement jusqu’à annulation et peuvent être annulés en tout temps; le premier paiement de chaque forfait est couvert par une garantie satisfait ou remboursé de 14 jours : voir la ",e.jsx("a",{href:"/refund",className:"text-cyan-300 hover:underline",children:"politique de remboursement"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Acceptation des conditions"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"En accédant au site web, au logiciel ou aux services de QECTOR, ou en les utilisant, vous acceptez d’être lié par ces conditions générales. Si vous n’acceptez pas, n’utilisez pas nos services."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Licence du logiciel"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR Decoder v3 est concédé sous la licence PolyForm Noncommercial 1.0.0 pour l’usage non commercial. L’usage commercial exige un contrat de licence commerciale distinct. Voir la"," ",e.jsx("a",{href:"/license",className:"text-cyan-300 hover:underline",children:"page de licence"})," pour les détails."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Exclusion de garanties"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"LE LOGICIEL EST FOURNI « TEL QUEL », SANS GARANTIE D’AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS, SANS S’Y LIMITER, LES GARANTIES DE QUALITÉ MARCHANDE, D’ADAPTATION À UN USAGE PARTICULIER ET DE NON-VIOLATION. QECTOR Decoder v3 est à source disponible (PolyForm Noncommercial pour l’usage communautaire / recherche; licence commerciale exigée pour l’usage commercial). C’est un logiciel validé par simulation, pas une pile de tolérance aux pannes de production."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Limitation de responsabilité"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"EN AUCUN CAS LES AUTEURS OU LES DÉTENTEURS DES DROITS D’AUTEUR NE SERONT RESPONSABLES DE TOUTE RÉCLAMATION, DE TOUT DOMMAGE OU DE TOUTE AUTRE RESPONSABILITÉ, QUE CE SOIT DANS LE CADRE D’UNE ACTION CONTRACTUELLE, DÉLICTUELLE OU AUTRE, DÉCOULANT DU LOGICIEL OU DE SON UTILISATION OU D’AUTRES TRANSACTIONS LIÉES AU LOGICIEL."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Résiliation"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nous pouvons suspendre ou résilier votre licence en cas de manquement grave (y compris le non-respect des limites d’usage non commercial/commercial) après notification écrite et un délai de correction de 15 jours. En cas de résiliation, vous devez cesser tout usage commercial et supprimer les jetons ; aucun remboursement n’est dû pour la période écoulée."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Droit applicable"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Ces conditions sont régies et interprétées conformément aux lois du Québec, Canada. Tout litige sera tranché devant les tribunaux de Montréal, Québec. Si vous êtes un consommateur de l’UE/Royaume-Uni, cette clause ne vous prive pas de la protection des lois impératives de votre pays de résidence."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Modifications des conditions"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nous nous réservons le droit de modifier ces conditions à tout moment. Les modifications prendront effet immédiatement après leur publication. La poursuite de l’utilisation des services vaut acceptation des conditions modifiées. Pour toute modification substantielle affectant les licences payées, nous donnerons un préavis d’au moins 30 jours par courriel ; les modifications s’appliquent aux renouvellements et aux nouveaux achats, sans effet rétroactif sur la période payée en cours."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Des questions sur ces conditions ? Écrivez-nous à"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/TermsFR-CEQwYMmk.js b/assets/TermsFR-CEQwYMmk.js deleted file mode 100644 index 537860bc..00000000 --- a/assets/TermsFR-CEQwYMmk.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-CclXHnEm.js";import{a as t}from"./terms-B2iKgo_y.js";import"./index-abfjMTlQ.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-D-EQoOl2.js";function x(){return r.jsx(o,{doc:t})}export{x as default}; diff --git a/assets/TermsFR-CGlEiMoF.js b/assets/TermsFR-CGlEiMoF.js deleted file mode 100644 index 93fb88f7..00000000 --- a/assets/TermsFR-CGlEiMoF.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-DvyIDT6j.js";import{a as t}from"./terms-LnOasveG.js";import"./index-Bh9DBCb3.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-D-EQoOl2.js";function x(){return r.jsx(o,{doc:t})}export{x as default}; diff --git a/assets/TermsFR-CR4HwzC7.js b/assets/TermsFR-CR4HwzC7.js deleted file mode 100644 index 17c4fa09..00000000 --- a/assets/TermsFR-CR4HwzC7.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-_BpMZhV3.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Conditions générales · QECTOR",description:"Conditions d’utilisation du site et du logiciel QECTOR.",lang:"fr",alternates:[{lang:"en",href:"https://qector.store/terms/"},{lang:"fr",href:"https://qector.store/fr/terms/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"Droit applicable : Québec, Canada · Dernière mise à jour : septembre 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Conditions générales",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["En utilisant le logiciel QECTOR ou ce site web, vous acceptez ces conditions. Questions ? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Votre vendeur"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Le logiciel QECTOR et les licences commerciales sont vendus par"," ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", entrepreneur individuel, exploitant sous le nom iD01t Productions, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Adresse enregistrée : 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7.",e.jsx("br",{}),"Contact : ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Tous les prix sont affichés et facturés en ",e.jsx("strong",{className:"text-primary",children:"dollars américains (USD)"}),", hors taxes. Stripe traite tous les paiements et ajoute la taxe de vente, la TPS/TVH ou la TVA applicable au paiement selon votre adresse de facturation; les données de carte ne parviennent jamais aux systèmes de QECTOR. Les jetons de licence sont émis et envoyés par courriel dans les minutes suivant le paiement (généralement moins de 10 minutes) et toutes les ventes sont finales : voir la ",e.jsx("a",{href:"/refund",className:"text-cyan-300 hover:underline",children:"politique de remboursement"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Acceptation des conditions"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"En accédant au site web, au logiciel ou aux services de QECTOR, ou en les utilisant, vous acceptez d’être lié par ces conditions générales. Si vous n’acceptez pas, n’utilisez pas nos services."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Licence du logiciel"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR Decoder v3 est concédé sous la licence PolyForm Noncommercial 1.0.0 pour l’usage non commercial. L’usage commercial exige un contrat de licence commerciale distinct. Voir la"," ",e.jsx("a",{href:"/license",className:"text-cyan-300 hover:underline",children:"page de licence"})," pour les détails."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Exclusion de garanties"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"LE LOGICIEL EST FOURNI « TEL QUEL », SANS GARANTIE D’AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS, SANS S’Y LIMITER, LES GARANTIES DE QUALITÉ MARCHANDE, D’ADAPTATION À UN USAGE PARTICULIER ET DE NON-VIOLATION. QECTOR Decoder v3 est à source disponible (PolyForm Noncommercial pour l’usage communautaire / recherche; licence commerciale exigée pour l’usage commercial). C’est un logiciel validé par simulation, pas une pile de tolérance aux pannes de production."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Limitation de responsabilité"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"EN AUCUN CAS LES AUTEURS OU LES DÉTENTEURS DES DROITS D’AUTEUR NE SERONT RESPONSABLES DE TOUTE RÉCLAMATION, DE TOUT DOMMAGE OU DE TOUTE AUTRE RESPONSABILITÉ, QUE CE SOIT DANS LE CADRE D’UNE ACTION CONTRACTUELLE, DÉLICTUELLE OU AUTRE, DÉCOULANT DU LOGICIEL OU DE SON UTILISATION OU D’AUTRES TRANSACTIONS LIÉES AU LOGICIEL."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Résiliation"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nous pouvons suspendre ou résilier votre licence en cas de manquement grave (y compris le non-respect des limites d’usage non commercial/commercial) après notification écrite et un délai de correction de 15 jours. En cas de résiliation, vous devez cesser tout usage commercial et supprimer les jetons ; aucun remboursement n’est dû pour la période écoulée."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Droit applicable"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Ces conditions sont régies et interprétées conformément aux lois du Québec, Canada. Tout litige sera tranché devant les tribunaux de Montréal, Québec. Si vous êtes un consommateur de l’UE/Royaume-Uni, cette clause ne vous prive pas de la protection des lois impératives de votre pays de résidence."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Modifications des conditions"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nous nous réservons le droit de modifier ces conditions à tout moment. Les modifications prendront effet immédiatement après leur publication. La poursuite de l’utilisation des services vaut acceptation des conditions modifiées. Pour toute modification substantielle affectant les licences payées, nous donnerons un préavis d’au moins 30 jours par courriel ; les modifications s’appliquent aux renouvellements et aux nouveaux achats, sans effet rétroactif sur la période payée en cours."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Des questions sur ces conditions ? Écrivez-nous à"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/TermsFR-CRefmr0E.js b/assets/TermsFR-CRefmr0E.js deleted file mode 100644 index a803b9ed..00000000 --- a/assets/TermsFR-CRefmr0E.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-DkYdPRY7.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Conditions générales · QECTOR",description:"Conditions d’utilisation du site et du logiciel QECTOR.",lang:"fr",alternates:[{lang:"en",href:"https://qector.store/terms/"},{lang:"fr",href:"https://qector.store/fr/terms/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"Droit applicable : Québec, Canada · Dernière mise à jour : septembre 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Conditions générales",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["En utilisant le logiciel QECTOR ou ce site web, vous acceptez ces conditions. Questions ? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Votre vendeur"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Le logiciel QECTOR et les licences commerciales sont vendus par"," ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", entrepreneur individuel, exploitant sous le nom iD01t Productions, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Adresse enregistrée : 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7.",e.jsx("br",{}),"Contact : ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Tous les prix sont affichés et facturés en ",e.jsx("strong",{className:"text-primary",children:"dollars américains (USD)"}),", hors taxes. Stripe traite tous les paiements et ajoute la taxe de vente, la TPS/TVH ou la TVA applicable au paiement selon votre adresse de facturation; les données de carte ne parviennent jamais aux systèmes de QECTOR. Les jetons de licence sont émis et envoyés par courriel dans les minutes suivant le paiement (généralement moins de 10 minutes). Les abonnements (Pro mensuel ou annuel, Labo) se renouvellent automatiquement jusqu’à annulation et peuvent être annulés en tout temps; le premier paiement de chaque forfait est couvert par une garantie satisfait ou remboursé de 14 jours : voir la ",e.jsx("a",{href:"/refund",className:"text-cyan-300 hover:underline",children:"politique de remboursement"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Acceptation des conditions"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"En accédant au site web, au logiciel ou aux services de QECTOR, ou en les utilisant, vous acceptez d’être lié par ces conditions générales. Si vous n’acceptez pas, n’utilisez pas nos services."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Licence du logiciel"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR Decoder v3 est concédé sous la licence PolyForm Noncommercial 1.0.0 pour l’usage non commercial. L’usage commercial exige un contrat de licence commerciale distinct. Voir la"," ",e.jsx("a",{href:"/license",className:"text-cyan-300 hover:underline",children:"page de licence"})," pour les détails."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Exclusion de garanties"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"LE LOGICIEL EST FOURNI « TEL QUEL », SANS GARANTIE D’AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS, SANS S’Y LIMITER, LES GARANTIES DE QUALITÉ MARCHANDE, D’ADAPTATION À UN USAGE PARTICULIER ET DE NON-VIOLATION. QECTOR Decoder v3 est à source disponible (PolyForm Noncommercial pour l’usage communautaire / recherche; licence commerciale exigée pour l’usage commercial). C’est un logiciel validé par simulation, pas une pile de tolérance aux pannes de production."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Limitation de responsabilité"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"EN AUCUN CAS LES AUTEURS OU LES DÉTENTEURS DES DROITS D’AUTEUR NE SERONT RESPONSABLES DE TOUTE RÉCLAMATION, DE TOUT DOMMAGE OU DE TOUTE AUTRE RESPONSABILITÉ, QUE CE SOIT DANS LE CADRE D’UNE ACTION CONTRACTUELLE, DÉLICTUELLE OU AUTRE, DÉCOULANT DU LOGICIEL OU DE SON UTILISATION OU D’AUTRES TRANSACTIONS LIÉES AU LOGICIEL."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Résiliation"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nous pouvons suspendre ou résilier votre licence en cas de manquement grave (y compris le non-respect des limites d’usage non commercial/commercial) après notification écrite et un délai de correction de 15 jours. En cas de résiliation, vous devez cesser tout usage commercial et supprimer les jetons ; aucun remboursement n’est dû pour la période écoulée."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Droit applicable"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Ces conditions sont régies et interprétées conformément aux lois du Québec, Canada. Tout litige sera tranché devant les tribunaux de Montréal, Québec. Si vous êtes un consommateur de l’UE/Royaume-Uni, cette clause ne vous prive pas de la protection des lois impératives de votre pays de résidence."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Modifications des conditions"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nous nous réservons le droit de modifier ces conditions à tout moment. Les modifications prendront effet immédiatement après leur publication. La poursuite de l’utilisation des services vaut acceptation des conditions modifiées. Pour toute modification substantielle affectant les licences payées, nous donnerons un préavis d’au moins 30 jours par courriel ; les modifications s’appliquent aux renouvellements et aux nouveaux achats, sans effet rétroactif sur la période payée en cours."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Des questions sur ces conditions ? Écrivez-nous à"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/TermsFR-Cd9NdZ4e.js b/assets/TermsFR-Cd9NdZ4e.js deleted file mode 100644 index 8022e92b..00000000 --- a/assets/TermsFR-Cd9NdZ4e.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-D-Mi7GTG.js";import{a as t}from"./terms-LnOasveG.js";import"./index-c1PDYu0j.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-uYarhiMA.js";function n(){return r.jsx(o,{doc:t})}export{n as default}; diff --git a/assets/TermsFR-CpfM0oN9.js b/assets/TermsFR-CpfM0oN9.js deleted file mode 100644 index 525416af..00000000 --- a/assets/TermsFR-CpfM0oN9.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-iVST85F-.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Conditions générales · QECTOR",description:"Conditions d’utilisation du site et du logiciel QECTOR.",lang:"fr",alternates:[{lang:"en",href:"https://qector.store/terms/"},{lang:"fr",href:"https://qector.store/fr/terms/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"Droit applicable : Québec, Canada · Dernière mise à jour : septembre 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Conditions générales",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["En utilisant le logiciel QECTOR ou ce site web, vous acceptez ces conditions. Questions ? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Votre vendeur"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Le logiciel QECTOR et les licences commerciales sont vendus par"," ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", entrepreneur individuel, exploitant sous le nom iD01t Productions, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Adresse enregistrée : 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7.",e.jsx("br",{}),"Contact : ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Tous les prix sont affichés et facturés en ",e.jsx("strong",{className:"text-primary",children:"dollars américains (USD)"}),", hors taxes. Stripe traite tous les paiements et ajoute la taxe de vente, la TPS/TVH ou la TVA applicable au paiement selon votre adresse de facturation; les données de carte ne parviennent jamais aux systèmes de QECTOR. Les jetons de licence sont émis et envoyés par courriel dans les minutes suivant le paiement (généralement moins de 10 minutes) et toutes les ventes sont finales : voir la ",e.jsx("a",{href:"/refund",className:"text-cyan-300 hover:underline",children:"politique de remboursement"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Acceptation des conditions"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"En accédant au site web, au logiciel ou aux services de QECTOR, ou en les utilisant, vous acceptez d’être lié par ces conditions générales. Si vous n’acceptez pas, n’utilisez pas nos services."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Licence du logiciel"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR Decoder v3 est concédé sous la licence PolyForm Noncommercial 1.0.0 pour l’usage non commercial. L’usage commercial exige un contrat de licence commerciale distinct. Voir la"," ",e.jsx("a",{href:"/license",className:"text-cyan-300 hover:underline",children:"page de licence"})," pour les détails."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Exclusion de garanties"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"LE LOGICIEL EST FOURNI « TEL QUEL », SANS GARANTIE D’AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS, SANS S’Y LIMITER, LES GARANTIES DE QUALITÉ MARCHANDE, D’ADAPTATION À UN USAGE PARTICULIER ET DE NON-VIOLATION. QECTOR Decoder v3 est à source disponible (PolyForm Noncommercial pour l’usage communautaire / recherche; licence commerciale exigée pour l’usage commercial). C’est un logiciel validé par simulation, pas une pile de tolérance aux pannes de production."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Limitation de responsabilité"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"EN AUCUN CAS LES AUTEURS OU LES DÉTENTEURS DES DROITS D’AUTEUR NE SERONT RESPONSABLES DE TOUTE RÉCLAMATION, DE TOUT DOMMAGE OU DE TOUTE AUTRE RESPONSABILITÉ, QUE CE SOIT DANS LE CADRE D’UNE ACTION CONTRACTUELLE, DÉLICTUELLE OU AUTRE, DÉCOULANT DU LOGICIEL OU DE SON UTILISATION OU D’AUTRES TRANSACTIONS LIÉES AU LOGICIEL."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Résiliation"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nous pouvons suspendre ou résilier votre licence en cas de manquement grave (y compris le non-respect des limites d’usage non commercial/commercial) après notification écrite et un délai de correction de 15 jours. En cas de résiliation, vous devez cesser tout usage commercial et supprimer les jetons ; aucun remboursement n’est dû pour la période écoulée."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Droit applicable"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Ces conditions sont régies et interprétées conformément aux lois du Québec, Canada. Tout litige sera tranché devant les tribunaux de Montréal, Québec. Si vous êtes un consommateur de l’UE/Royaume-Uni, cette clause ne vous prive pas de la protection des lois impératives de votre pays de résidence."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Modifications des conditions"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nous nous réservons le droit de modifier ces conditions à tout moment. Les modifications prendront effet immédiatement après leur publication. La poursuite de l’utilisation des services vaut acceptation des conditions modifiées. Pour toute modification substantielle affectant les licences payées, nous donnerons un préavis d’au moins 30 jours par courriel ; les modifications s’appliquent aux renouvellements et aux nouveaux achats, sans effet rétroactif sur la période payée en cours."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Des questions sur ces conditions ? Écrivez-nous à"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/TermsFR-DFr5huZJ.js b/assets/TermsFR-DFr5huZJ.js deleted file mode 100644 index 35ca8944..00000000 --- a/assets/TermsFR-DFr5huZJ.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-B9kEGiWi.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Conditions générales · QECTOR",description:"Conditions d’utilisation du site et du logiciel QECTOR.",lang:"fr",alternates:[{lang:"en",href:"https://qector.store/terms/"},{lang:"fr",href:"https://qector.store/fr/terms/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"Droit applicable : Québec, Canada · Dernière mise à jour : septembre 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Conditions générales",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["En utilisant le logiciel QECTOR ou ce site web, vous acceptez ces conditions. Questions ? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Votre vendeur"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Le logiciel QECTOR et les licences commerciales sont vendus par"," ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", entrepreneur individuel, exploitant sous le nom iD01t Productions, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Adresse enregistrée : 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7.",e.jsx("br",{}),"Contact : ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Tous les prix sont affichés et facturés en ",e.jsx("strong",{className:"text-primary",children:"dollars américains (USD)"}),", hors taxes. Stripe traite tous les paiements et ajoute la taxe de vente, la TPS/TVH ou la TVA applicable au paiement selon votre adresse de facturation; les données de carte ne parviennent jamais aux systèmes de QECTOR. Les jetons de licence sont émis et envoyés par courriel dans les minutes suivant le paiement (généralement moins de 10 minutes) et toutes les ventes sont finales : voir la ",e.jsx("a",{href:"/refund",className:"text-cyan-300 hover:underline",children:"politique de remboursement"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Acceptation des conditions"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"En accédant au site web, au logiciel ou aux services de QECTOR, ou en les utilisant, vous acceptez d’être lié par ces conditions générales. Si vous n’acceptez pas, n’utilisez pas nos services."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Licence du logiciel"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR Decoder v3 est concédé sous la licence PolyForm Noncommercial 1.0.0 pour l’usage non commercial. L’usage commercial exige un contrat de licence commerciale distinct. Voir la"," ",e.jsx("a",{href:"/license",className:"text-cyan-300 hover:underline",children:"page de licence"})," pour les détails."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Exclusion de garanties"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"LE LOGICIEL EST FOURNI « TEL QUEL », SANS GARANTIE D’AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS, SANS S’Y LIMITER, LES GARANTIES DE QUALITÉ MARCHANDE, D’ADAPTATION À UN USAGE PARTICULIER ET DE NON-VIOLATION. QECTOR Decoder v3 est à source disponible (PolyForm Noncommercial pour l’usage communautaire / recherche; licence commerciale exigée pour l’usage commercial). C’est un logiciel validé par simulation, pas une pile de tolérance aux pannes de production."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Limitation de responsabilité"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"EN AUCUN CAS LES AUTEURS OU LES DÉTENTEURS DES DROITS D’AUTEUR NE SERONT RESPONSABLES DE TOUTE RÉCLAMATION, DE TOUT DOMMAGE OU DE TOUTE AUTRE RESPONSABILITÉ, QUE CE SOIT DANS LE CADRE D’UNE ACTION CONTRACTUELLE, DÉLICTUELLE OU AUTRE, DÉCOULANT DU LOGICIEL OU DE SON UTILISATION OU D’AUTRES TRANSACTIONS LIÉES AU LOGICIEL."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Résiliation"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nous pouvons suspendre ou résilier votre licence en cas de manquement grave (y compris le non-respect des limites d’usage non commercial/commercial) après notification écrite et un délai de correction de 15 jours. En cas de résiliation, vous devez cesser tout usage commercial et supprimer les jetons ; aucun remboursement n’est dû pour la période écoulée."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Droit applicable"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Ces conditions sont régies et interprétées conformément aux lois du Québec, Canada. Tout litige sera tranché devant les tribunaux de Montréal, Québec. Si vous êtes un consommateur de l’UE/Royaume-Uni, cette clause ne vous prive pas de la protection des lois impératives de votre pays de résidence."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Modifications des conditions"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nous nous réservons le droit de modifier ces conditions à tout moment. Les modifications prendront effet immédiatement après leur publication. La poursuite de l’utilisation des services vaut acceptation des conditions modifiées. Pour toute modification substantielle affectant les licences payées, nous donnerons un préavis d’au moins 30 jours par courriel ; les modifications s’appliquent aux renouvellements et aux nouveaux achats, sans effet rétroactif sur la période payée en cours."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Des questions sur ces conditions ? Écrivez-nous à"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/TermsFR-DGRL90sS.js b/assets/TermsFR-DGRL90sS.js deleted file mode 100644 index 1d41c251..00000000 --- a/assets/TermsFR-DGRL90sS.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-DlmjLVYe.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Conditions générales · QECTOR",description:"Conditions d’utilisation du site et du logiciel QECTOR.",lang:"fr",alternates:[{lang:"en",href:"https://qector.store/terms/"},{lang:"fr",href:"https://qector.store/fr/terms/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"Droit applicable : Québec, Canada · Dernière mise à jour : septembre 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Conditions générales",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["En utilisant le logiciel QECTOR ou ce site web, vous acceptez ces conditions. Questions ? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Votre vendeur"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Le logiciel QECTOR et les licences commerciales sont vendus par"," ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", entrepreneur individuel, exploitant sous le nom iD01t Productions, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Adresse enregistrée : 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7.",e.jsx("br",{}),"Contact : ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Tous les prix sont affichés et facturés en ",e.jsx("strong",{className:"text-primary",children:"dollars américains (USD)"}),", hors taxes. Stripe traite tous les paiements et ajoute la taxe de vente, la TPS/TVH ou la TVA applicable au paiement selon votre adresse de facturation; les données de carte ne parviennent jamais aux systèmes de QECTOR. Les jetons de licence sont émis et envoyés par courriel dans les minutes suivant le paiement (généralement moins de 10 minutes). Les abonnements (Pro mensuel ou annuel, Équipe, Labo) se renouvellent automatiquement jusqu’à annulation et peuvent être annulés en tout temps; le premier paiement de chaque forfait est couvert par une garantie satisfait ou remboursé de 14 jours : voir la ",e.jsx("a",{href:"/refund",className:"text-cyan-300 hover:underline",children:"politique de remboursement"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Acceptation des conditions"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"En accédant au site web, au logiciel ou aux services de QECTOR, ou en les utilisant, vous acceptez d’être lié par ces conditions générales. Si vous n’acceptez pas, n’utilisez pas nos services."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Licence du logiciel"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR Decoder v3 est concédé sous la licence PolyForm Noncommercial 1.0.0 pour l’usage non commercial. L’usage commercial exige un contrat de licence commerciale distinct. Voir la"," ",e.jsx("a",{href:"/license",className:"text-cyan-300 hover:underline",children:"page de licence"})," pour les détails."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Exclusion de garanties"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"LE LOGICIEL EST FOURNI « TEL QUEL », SANS GARANTIE D’AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS, SANS S’Y LIMITER, LES GARANTIES DE QUALITÉ MARCHANDE, D’ADAPTATION À UN USAGE PARTICULIER ET DE NON-VIOLATION. QECTOR Decoder v3 est à source disponible (PolyForm Noncommercial pour l’usage communautaire / recherche; licence commerciale exigée pour l’usage commercial). C’est un logiciel validé par simulation, pas une pile de tolérance aux pannes de production."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Limitation de responsabilité"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"EN AUCUN CAS LES AUTEURS OU LES DÉTENTEURS DES DROITS D’AUTEUR NE SERONT RESPONSABLES DE TOUTE RÉCLAMATION, DE TOUT DOMMAGE OU DE TOUTE AUTRE RESPONSABILITÉ, QUE CE SOIT DANS LE CADRE D’UNE ACTION CONTRACTUELLE, DÉLICTUELLE OU AUTRE, DÉCOULANT DU LOGICIEL OU DE SON UTILISATION OU D’AUTRES TRANSACTIONS LIÉES AU LOGICIEL."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Résiliation"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nous pouvons suspendre ou résilier votre licence en cas de manquement grave (y compris le non-respect des limites d’usage non commercial/commercial) après notification écrite et un délai de correction de 15 jours. En cas de résiliation, vous devez cesser tout usage commercial et supprimer les jetons ; aucun remboursement n’est dû pour la période écoulée."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Droit applicable"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Ces conditions sont régies et interprétées conformément aux lois du Québec, Canada. Tout litige sera tranché devant les tribunaux de Montréal, Québec. Si vous êtes un consommateur de l’UE/Royaume-Uni, cette clause ne vous prive pas de la protection des lois impératives de votre pays de résidence."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Modifications des conditions"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nous nous réservons le droit de modifier ces conditions à tout moment. Les modifications prendront effet immédiatement après leur publication. La poursuite de l’utilisation des services vaut acceptation des conditions modifiées. Pour toute modification substantielle affectant les licences payées, nous donnerons un préavis d’au moins 30 jours par courriel ; les modifications s’appliquent aux renouvellements et aux nouveaux achats, sans effet rétroactif sur la période payée en cours."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Des questions sur ces conditions ? Écrivez-nous à"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/TermsFR-Da9N2nsG.js b/assets/TermsFR-Da9N2nsG.js deleted file mode 100644 index 43e4706e..00000000 --- a/assets/TermsFR-Da9N2nsG.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-BXZvemzZ.js";import{a as t}from"./terms-LnOasveG.js";import"./index-CcwlvHYJ.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-Bsl9IGCr.js";function n(){return r.jsx(o,{doc:t})}export{n as default}; diff --git a/assets/TermsFR-LQl3tW0l.js b/assets/TermsFR-LQl3tW0l.js deleted file mode 100644 index 40417dfd..00000000 --- a/assets/TermsFR-LQl3tW0l.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-k7aoVn24.js";import{a as t}from"./terms-DgnSX4e_.js";import"./index-CCmwjNGU.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-uYarhiMA.js";function n(){return r.jsx(o,{doc:t})}export{n as default}; diff --git a/assets/TermsFR-f8dBaL9s.js b/assets/TermsFR-f8dBaL9s.js deleted file mode 100644 index c28eba63..00000000 --- a/assets/TermsFR-f8dBaL9s.js +++ /dev/null @@ -1 +0,0 @@ -import{j as r}from"./vendor-react-BiHfrq0e.js";import{L as o}from"./LegalPage-CFP-uSSS.js";import{a as t}from"./terms-LnOasveG.js";import"./index-DayaklK-.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";import"./NeuralReveal-uYarhiMA.js";function n(){return r.jsx(o,{doc:t})}export{n as default}; diff --git a/assets/TermsFR-g8LxJpb0.js b/assets/TermsFR-g8LxJpb0.js deleted file mode 100644 index 2e2847c2..00000000 --- a/assets/TermsFR-g8LxJpb0.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-DRAXObZB.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Conditions générales · QECTOR",description:"Conditions d’utilisation du site et du logiciel QECTOR.",lang:"fr",alternates:[{lang:"en",href:"https://qector.store/terms/"},{lang:"fr",href:"https://qector.store/fr/terms/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"Droit applicable : Québec, Canada · Dernière mise à jour : septembre 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Conditions générales",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["En utilisant le logiciel QECTOR ou ce site web, vous acceptez ces conditions. Questions ? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Votre vendeur"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Le logiciel QECTOR et les licences commerciales sont vendus par"," ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", entrepreneur individuel, exploitant sous le nom iD01t Productions, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Adresse enregistrée : 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7.",e.jsx("br",{}),"Contact : ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Tous les prix sont affichés et facturés en ",e.jsx("strong",{className:"text-primary",children:"dollars américains (USD)"}),", hors taxes. Stripe traite tous les paiements et ajoute la taxe de vente, la TPS/TVH ou la TVA applicable au paiement selon votre adresse de facturation; les données de carte ne parviennent jamais aux systèmes de QECTOR. Les jetons de licence sont émis et envoyés par courriel dans les minutes suivant le paiement (généralement moins de 10 minutes). Les abonnements (Pro mensuel ou annuel, Labo) se renouvellent automatiquement jusqu’à annulation et peuvent être annulés en tout temps; le premier paiement de chaque forfait est couvert par une garantie satisfait ou remboursé de 14 jours : voir la ",e.jsx("a",{href:"/refund",className:"text-cyan-300 hover:underline",children:"politique de remboursement"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Acceptation des conditions"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"En accédant au site web, au logiciel ou aux services de QECTOR, ou en les utilisant, vous acceptez d’être lié par ces conditions générales. Si vous n’acceptez pas, n’utilisez pas nos services."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Licence du logiciel"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR Decoder v3 est concédé sous la licence PolyForm Noncommercial 1.0.0 pour l’usage non commercial. L’usage commercial exige un contrat de licence commerciale distinct. Voir la"," ",e.jsx("a",{href:"/license",className:"text-cyan-300 hover:underline",children:"page de licence"})," pour les détails."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Exclusion de garanties"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"LE LOGICIEL EST FOURNI « TEL QUEL », SANS GARANTIE D’AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS, SANS S’Y LIMITER, LES GARANTIES DE QUALITÉ MARCHANDE, D’ADAPTATION À UN USAGE PARTICULIER ET DE NON-VIOLATION. QECTOR Decoder v3 est à source disponible (PolyForm Noncommercial pour l’usage communautaire / recherche; licence commerciale exigée pour l’usage commercial). C’est un logiciel validé par simulation, pas une pile de tolérance aux pannes de production."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Limitation de responsabilité"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"EN AUCUN CAS LES AUTEURS OU LES DÉTENTEURS DES DROITS D’AUTEUR NE SERONT RESPONSABLES DE TOUTE RÉCLAMATION, DE TOUT DOMMAGE OU DE TOUTE AUTRE RESPONSABILITÉ, QUE CE SOIT DANS LE CADRE D’UNE ACTION CONTRACTUELLE, DÉLICTUELLE OU AUTRE, DÉCOULANT DU LOGICIEL OU DE SON UTILISATION OU D’AUTRES TRANSACTIONS LIÉES AU LOGICIEL."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Résiliation"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nous pouvons suspendre ou résilier votre licence en cas de manquement grave (y compris le non-respect des limites d’usage non commercial/commercial) après notification écrite et un délai de correction de 15 jours. En cas de résiliation, vous devez cesser tout usage commercial et supprimer les jetons ; aucun remboursement n’est dû pour la période écoulée."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Droit applicable"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Ces conditions sont régies et interprétées conformément aux lois du Québec, Canada. Tout litige sera tranché devant les tribunaux de Montréal, Québec. Si vous êtes un consommateur de l’UE/Royaume-Uni, cette clause ne vous prive pas de la protection des lois impératives de votre pays de résidence."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Modifications des conditions"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nous nous réservons le droit de modifier ces conditions à tout moment. Les modifications prendront effet immédiatement après leur publication. La poursuite de l’utilisation des services vaut acceptation des conditions modifiées. Pour toute modification substantielle affectant les licences payées, nous donnerons un préavis d’au moins 30 jours par courriel ; les modifications s’appliquent aux renouvellements et aux nouveaux achats, sans effet rétroactif sur la période payée en cours."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Des questions sur ces conditions ? Écrivez-nous à"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/TermsFR-qP37hEHa.js b/assets/TermsFR-qP37hEHa.js deleted file mode 100644 index b32b115a..00000000 --- a/assets/TermsFR-qP37hEHa.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-CpdATiEY.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Conditions générales · QECTOR",description:"Conditions d’utilisation du site et du logiciel QECTOR.",lang:"fr",alternates:[{lang:"en",href:"https://qector.store/terms/"},{lang:"fr",href:"https://qector.store/fr/terms/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"Droit applicable : Québec, Canada · Dernière mise à jour : septembre 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Conditions générales",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["En utilisant le logiciel QECTOR ou ce site web, vous acceptez ces conditions. Questions ? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Votre vendeur"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Le logiciel QECTOR et les licences commerciales sont vendus par"," ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", entrepreneur individuel, exploitant sous le nom iD01t Productions, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Adresse enregistrée : 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7.",e.jsx("br",{}),"Contact : ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Tous les prix sont affichés et facturés en ",e.jsx("strong",{className:"text-primary",children:"dollars américains (USD)"}),", hors taxes. Stripe traite tous les paiements et ajoute la taxe de vente, la TPS/TVH ou la TVA applicable au paiement selon votre adresse de facturation; les données de carte ne parviennent jamais aux systèmes de QECTOR. Les jetons de licence sont émis et envoyés par courriel dans les minutes suivant le paiement (généralement moins de 10 minutes). Les abonnements (Pro mensuel ou annuel, Équipe, Labo) se renouvellent automatiquement jusqu’à annulation et peuvent être annulés en tout temps; le premier paiement de chaque forfait est couvert par une garantie satisfait ou remboursé de 14 jours : voir la ",e.jsx("a",{href:"/refund",className:"text-cyan-300 hover:underline",children:"politique de remboursement"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Acceptation des conditions"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"En accédant au site web, au logiciel ou aux services de QECTOR, ou en les utilisant, vous acceptez d’être lié par ces conditions générales. Si vous n’acceptez pas, n’utilisez pas nos services."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Licence du logiciel"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR Decoder v3 est concédé sous la licence PolyForm Noncommercial 1.0.0 pour l’usage non commercial. L’usage commercial exige un contrat de licence commerciale distinct. Voir la"," ",e.jsx("a",{href:"/license",className:"text-cyan-300 hover:underline",children:"page de licence"})," pour les détails."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Exclusion de garanties"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"LE LOGICIEL EST FOURNI « TEL QUEL », SANS GARANTIE D’AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS, SANS S’Y LIMITER, LES GARANTIES DE QUALITÉ MARCHANDE, D’ADAPTATION À UN USAGE PARTICULIER ET DE NON-VIOLATION. QECTOR Decoder v3 est à source disponible (PolyForm Noncommercial pour l’usage communautaire / recherche; licence commerciale exigée pour l’usage commercial). C’est un logiciel validé par simulation, pas une pile de tolérance aux pannes de production."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Limitation de responsabilité"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"EN AUCUN CAS LES AUTEURS OU LES DÉTENTEURS DES DROITS D’AUTEUR NE SERONT RESPONSABLES DE TOUTE RÉCLAMATION, DE TOUT DOMMAGE OU DE TOUTE AUTRE RESPONSABILITÉ, QUE CE SOIT DANS LE CADRE D’UNE ACTION CONTRACTUELLE, DÉLICTUELLE OU AUTRE, DÉCOULANT DU LOGICIEL OU DE SON UTILISATION OU D’AUTRES TRANSACTIONS LIÉES AU LOGICIEL."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Résiliation"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nous pouvons suspendre ou résilier votre licence en cas de manquement grave (y compris le non-respect des limites d’usage non commercial/commercial) après notification écrite et un délai de correction de 15 jours. En cas de résiliation, vous devez cesser tout usage commercial et supprimer les jetons ; aucun remboursement n’est dû pour la période écoulée."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Droit applicable"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Ces conditions sont régies et interprétées conformément aux lois du Québec, Canada. Tout litige sera tranché devant les tribunaux de Montréal, Québec. Si vous êtes un consommateur de l’UE/Royaume-Uni, cette clause ne vous prive pas de la protection des lois impératives de votre pays de résidence."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Modifications des conditions"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nous nous réservons le droit de modifier ces conditions à tout moment. Les modifications prendront effet immédiatement après leur publication. La poursuite de l’utilisation des services vaut acceptation des conditions modifiées. Pour toute modification substantielle affectant les licences payées, nous donnerons un préavis d’au moins 30 jours par courriel ; les modifications s’appliquent aux renouvellements et aux nouveaux achats, sans effet rétroactif sur la période payée en cours."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Des questions sur ces conditions ? Écrivez-nous à"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/TermsFR-vMuUfUiC.js b/assets/TermsFR-vMuUfUiC.js deleted file mode 100644 index 95608dee..00000000 --- a/assets/TermsFR-vMuUfUiC.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as s}from"./index-CqAA-ZXu.js";import{N as a}from"./NeuralReveal-BflyZYSb.js";import"./vendor-PiU4YGcH.js";import"./vendor-md-CLKxNZoa.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-gsap-a3sj5zmn.js";function d(){return e.jsxs(e.Fragment,{children:[e.jsx(s,{title:"Conditions générales · QECTOR",description:"Conditions d’utilisation du site et du logiciel QECTOR.",lang:"fr",alternates:[{lang:"en",href:"https://qector.store/terms/"},{lang:"fr",href:"https://qector.store/fr/terms/"}]}),e.jsxs("section",{className:"relative py-24 md:py-32 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-surface/50 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding",children:[e.jsx("div",{className:"inline-flex items-center gap-2 px-3 py-1.5 bg-surface border border-gridline rounded-full text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-6",children:"Droit applicable : Québec, Canada · Dernière mise à jour : septembre 2026"}),e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.1] mb-6",children:e.jsx(a,{text:"Conditions générales",className:"text-4xl md:text-6xl font-extrabold"})}),e.jsxs("p",{className:"text-secondary text-lg md:text-xl max-w-2xl mx-auto leading-relaxed",children:["En utilisant le logiciel QECTOR ou ce site web, vous acceptez ces conditions. Questions ? ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-3xl mx-auto space-y-8",children:[e.jsxs("div",{className:"card-surface border-cyan-300/25",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Votre vendeur"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Le logiciel QECTOR et les licences commerciales sont vendus par"," ",e.jsx("strong",{className:"text-primary",children:"Guillaume Lessard"}),", entrepreneur individuel, exploitant sous le nom iD01t Productions, Québec, Canada."]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:["Adresse enregistrée : 2004 De Lorimier, Longueuil, Québec, Canada, J4K 3H7.",e.jsx("br",{}),"Contact : ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"})]}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Tous les prix sont affichés et facturés en ",e.jsx("strong",{className:"text-primary",children:"dollars américains (USD)"}),", hors taxes. Stripe traite tous les paiements et ajoute la taxe de vente, la TPS/TVH ou la TVA applicable au paiement selon votre adresse de facturation; les données de carte ne parviennent jamais aux systèmes de QECTOR. Les jetons de licence sont émis et envoyés par courriel dans les minutes suivant le paiement (généralement moins de 10 minutes). Les abonnements (Pro mensuel ou annuel, Équipe, Labo) se renouvellent automatiquement jusqu’à annulation et peuvent être annulés en tout temps; le premier paiement de chaque forfait est couvert par une garantie satisfait ou remboursé de 14 jours : voir la ",e.jsx("a",{href:"/refund",className:"text-cyan-300 hover:underline",children:"politique de remboursement"}),"."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Acceptation des conditions"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"En accédant au site web, au logiciel ou aux services de QECTOR, ou en les utilisant, vous acceptez d’être lié par ces conditions générales. Si vous n’acceptez pas, n’utilisez pas nos services."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Licence du logiciel"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["QECTOR Decoder v3 est concédé sous la licence PolyForm Noncommercial 1.0.0 pour l’usage non commercial. L’usage commercial exige un contrat de licence commerciale distinct. Voir la"," ",e.jsx("a",{href:"/license",className:"text-cyan-300 hover:underline",children:"page de licence"})," pour les détails."]})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Exclusion de garanties"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"LE LOGICIEL EST FOURNI « TEL QUEL », SANS GARANTIE D’AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS, SANS S’Y LIMITER, LES GARANTIES DE QUALITÉ MARCHANDE, D’ADAPTATION À UN USAGE PARTICULIER ET DE NON-VIOLATION. QECTOR Decoder v3 est à source disponible (PolyForm Noncommercial pour l’usage communautaire / recherche; licence commerciale exigée pour l’usage commercial). C’est un logiciel validé par simulation, pas une pile de tolérance aux pannes de production."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Limitation de responsabilité"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"EN AUCUN CAS LES AUTEURS OU LES DÉTENTEURS DES DROITS D’AUTEUR NE SERONT RESPONSABLES DE TOUTE RÉCLAMATION, DE TOUT DOMMAGE OU DE TOUTE AUTRE RESPONSABILITÉ, QUE CE SOIT DANS LE CADRE D’UNE ACTION CONTRACTUELLE, DÉLICTUELLE OU AUTRE, DÉCOULANT DU LOGICIEL OU DE SON UTILISATION OU D’AUTRES TRANSACTIONS LIÉES AU LOGICIEL."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Résiliation"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nous pouvons suspendre ou résilier votre licence en cas de manquement grave (y compris le non-respect des limites d’usage non commercial/commercial) après notification écrite et un délai de correction de 15 jours. En cas de résiliation, vous devez cesser tout usage commercial et supprimer les jetons ; aucun remboursement n’est dû pour la période écoulée."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Droit applicable"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Ces conditions sont régies et interprétées conformément aux lois du Québec, Canada. Tout litige sera tranché devant les tribunaux de Montréal, Québec. Si vous êtes un consommateur de l’UE/Royaume-Uni, cette clause ne vous prive pas de la protection des lois impératives de votre pays de résidence."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Modifications des conditions"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Nous nous réservons le droit de modifier ces conditions à tout moment. Les modifications prendront effet immédiatement après leur publication. La poursuite de l’utilisation des services vaut acceptation des conditions modifiées. Pour toute modification substantielle affectant les licences payées, nous donnerons un préavis d’au moins 30 jours par courriel ; les modifications s’appliquent aux renouvellements et aux nouveaux achats, sans effet rétroactif sur la période payée en cours."})]}),e.jsxs("div",{className:"card-surface",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Contact"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed",children:["Des questions sur ces conditions ? Écrivez-nous à"," ",e.jsx("a",{href:"mailto:admin@qector.store",className:"text-cyan-300 hover:underline",children:"admin@qector.store"}),"."]})]})]})})]})}export{d as default}; diff --git a/assets/TrialForm-BEDfCuvx.js b/assets/TrialForm-BEDfCuvx.js deleted file mode 100644 index 6788b5cb..00000000 --- a/assets/TrialForm-BEDfCuvx.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e,r as v}from"./vendor-react-BiHfrq0e.js";import{L as g}from"./vendor-PiU4YGcH.js";import{P as p,T as P}from"./index-DlmjLVYe.js";function L({name:a,price:t,period:s="",desc:r,features:o,excluded:i,featured:l=!1,showRibbon:m=!0,featuredLabel:u="Most Popular",accent:n="cyan",ctaLabel:c="Contact Sales",ctaHref:h="/contact",centered:f=!1,className:x=""}){const b=n==="gold"?"border-gold-400/30 neon-border-gold":"border-cyan-300/30 neon-border-cyan",q=n==="gold"?"text-gold-400":"text-cyan-300",w=n==="gold"?"bg-gold-400 text-void":"bg-cyan-300 text-void",j=n==="gold"?"btn-gold":"btn-cyan",E=/^https?:\/\//i.test(h),y=`block w-full text-center py-2.5 rounded-lg font-medium text-sm transition-all ${l?j:"btn-outline"}`;return e.jsxs("div",{className:`card-surface flex flex-col relative ${f?"text-center":""} ${l?b:""} ${x}`,children:[l&&m&&e.jsx("span",{className:`absolute -top-3 left-1/2 -translate-x-1/2 px-3 py-1 whitespace-nowrap text-xs font-bold uppercase tracking-wider rounded-full ${w}`,children:u}),e.jsx("div",{className:"text-muted-foreground text-xs uppercase tracking-wider mb-2",children:a}),e.jsxs("div",{className:"text-primary font-bold text-3xl mb-1",children:[t,e.jsx("span",{className:"text-muted-foreground text-sm font-normal",children:s})]}),e.jsx("p",{className:"text-secondary text-sm mb-4",children:r}),o&&e.jsxs("ul",{className:"space-y-2 flex-1 mb-6",children:[o.map(d=>e.jsxs("li",{className:`flex items-start gap-2 text-sm text-secondary ${f?"text-left":""}`,children:[e.jsx("span",{className:`${q} mt-0.5`,"aria-hidden":"true",children:"✓"}),e.jsxs("span",{children:[e.jsx("span",{className:"sr-only",children:"Included: "}),d]})]},d)),i?.map(d=>e.jsxs("li",{className:`flex items-start gap-2 text-sm text-muted-foreground/70 ${f?"text-left":""}`,children:[e.jsx("span",{className:"text-muted-foreground/60 mt-0.5","aria-hidden":"true",children:"✓"}),e.jsxs("span",{children:[e.jsx("span",{className:"sr-only",children:"Not included: "}),d]})]},d))]}),E?e.jsx("a",{href:h,className:y,rel:"noopener",children:c}):e.jsx(g,{to:h,className:y,children:c})]})}const k=[{q:"How do I try QECTOR commercially before paying?",a:"Request the free 14-day commercial trial on this page: a Pro licence token arrives by e-mail within minutes, for up to 5 internal users. No card is needed and the token simply expires; there is nothing to cancel. One trial per e-mail address per year."},{q:"How is the licence delivered, and what does the token unlock?",a:'By e-mail within minutes of payment (check spam, then write to admin@qector.store with your Stripe receipt). Everyone installs the same wheel: pip install --upgrade "qector-decoder-v3>=1.0,<2". Set QECTOR_LICENSE_KEY and QECTOR_LICENSE to the token. Every paid plan unlocks GPU (CUDA/OpenCL) batch decoding; Lab and Enterprise also raise the code-distance tier to 63. CPU decoding is never blocked, and distance caps are only enforced if you set QECTOR_ENFORCE=1. The token is verified offline against a public key in the package: no licence server, works air-gapped.'},{q:"Do plans renew automatically, and how do I cancel?",a:"Yes. Pro (monthly or annual), Team and Lab renew automatically until cancelled, and you get a reminder e-mail 14 days before each annual renewal. Cancel any time from your Stripe receipt or by writing to admin@qector.store; your licence stays valid until the end of the paid period. Pro Perpetual and the Pilot are one-time payments and never renew."},{q:"What is your refund policy?",a:"14-day money-back guarantee on your first payment of any plan: write to admin@qector.store with your Stripe receipt and we refund it in full and revoke the token. Renewals are not refunded pro rata. Duplicate purchases and charges made in error are always refunded. If a token never arrives or fails to verify, we reissue it at no cost. This does not limit non-waivable statutory rights."},{q:"How many seats does each plan cover, and what counts as production?",a:"Pro: 1 named user. Team: up to 10. Lab: up to 25. Enterprise: unlimited. All paid plans grant production rights for internal use. The free trial and the 60-day Pilot are for evaluation (benchmarking, integration testing, threshold studies), not production. Pro Perpetual covers one named user for every 3.x release; a major version such as 4.0 is a new licence."},{q:"Is a hosted or customer-facing API covered?",a:"No. Pro, Team and Lab cover internal use on your own infrastructure. As soon as QECTOR sits behind an API, product or service that anyone outside your organisation can reach, that is SaaS or redistribution and needs an Enterprise/OEM agreement. Internal endpoints used only by your own staff are fine. Unsure? Describe the deployment to admin@qector.store."},{q:"Can I redistribute QECTOR inside my product?",a:"Only under an Enterprise/OEM agreement, which covers redistribution, SaaS hosting and hardware bundling. Write to admin@qector.store."},{q:"Do I need a licence for non-commercial research?",a:"No. Personal, academic and other non-commercial use is free under the PolyForm Noncommercial License 1.0.0. Universities, public research organisations, charities and government institutions may also use it free, whatever the source of their funding (that is what PolyForm Noncommercial says). A company using QECTOR, including on a contract with a university, needs a paid plan. Academic institutions that want a paid plan anyway, for support or to pass commercial rights to an industry partner, get 40% off Team and Lab with an institutional e-mail."},{q:"What currency are prices in, and is tax included?",a:"Prices are in US dollars and exclude tax. Applicable sales tax, GST/HST or VAT is calculated and added at checkout from your billing address. Businesses can enter a VAT/GST number at checkout."},{q:"Can we get a signed agreement, tax form or security questionnaire?",a:"Yes. For a signed PDF agreement, vendor profile, W-8BEN or equivalent, or a security questionnaire, write to admin@qector.store with your Stripe invoice number. Enterprise agreements are always signed contracts."}],O=[{q:"Comment essayer QECTOR commercialement avant de payer ?",a:"Demandez l’essai commercial gratuit de 14 jours sur cette page : un jeton de licence Pro arrive par courriel en quelques minutes, pour jusqu’à 5 utilisateurs internes. Aucune carte n’est requise et le jeton expire de lui-même : rien à annuler. Un essai par adresse courriel par année."},{q:"Comment la licence est-elle livrée, et que déverrouille le jeton ?",a:'Par courriel dans les minutes qui suivent le paiement (vérifiez le courrier indésirable, puis écrivez à admin@qector.store avec votre reçu Stripe). Tout le monde installe la même wheel : pip install --upgrade "qector-decoder-v3>=1.0,<2". Définissez QECTOR_LICENSE_KEY et QECTOR_LICENSE au jeton. Chaque forfait payant déverrouille le décodage GPU (CUDA/OpenCL) par lots; Labo et Entreprise portent aussi le palier de distance à 63. Le décodage CPU n’est jamais bloqué, et les plafonds de distance ne s’appliquent que si QECTOR_ENFORCE=1. Le jeton se vérifie hors ligne contre une clé publique incluse dans le paquet : aucun serveur de licence, fonctionne hors réseau.'},{q:"Les forfaits se renouvellent-ils automatiquement, et comment annuler ?",a:"Oui. Pro (mensuel ou annuel), Équipe et Labo se renouvellent automatiquement jusqu’à annulation, avec un courriel de rappel 14 jours avant chaque renouvellement annuel. Annulez en tout temps depuis votre reçu Stripe ou en écrivant à admin@qector.store; votre licence reste valide jusqu’à la fin de la période payée. Pro Perpétuel et le Pilote sont des paiements uniques et ne se renouvellent jamais."},{q:"Quelle est votre politique de remboursement ?",a:"Garantie satisfait ou remboursé de 14 jours sur votre premier paiement de tout forfait : écrivez à admin@qector.store avec votre reçu Stripe et nous remboursons en entier et révoquons le jeton. Les renouvellements ne sont pas remboursés au prorata. Les achats en double et les frais faits par erreur sont toujours remboursés. Si un jeton n’arrive pas ou ne se vérifie pas, nous le réémettons sans frais. Cela ne limite pas les droits légaux auxquels on ne peut renoncer."},{q:"Combien de sièges chaque forfait couvre-t-il, et qu’est-ce que la production ?",a:"Pro : 1 utilisateur nommé. Équipe : jusqu’à 10. Labo : jusqu’à 25. Entreprise : illimité. Tous les forfaits payants accordent des droits de production pour usage interne. L’essai gratuit et le Pilote de 60 jours servent à l’évaluation (benchmarks, tests d’intégration, études de seuil), pas à la production. Pro Perpétuel couvre un utilisateur nommé pour toutes les versions 3.x; une version majeure comme 4.0 est une nouvelle licence."},{q:"Une API hébergée ou offerte aux clients est-elle couverte ?",a:"Non. Pro, Équipe et Labo couvrent l’usage interne sur votre propre infrastructure. Dès que QECTOR se trouve derrière une API, un produit ou un service accessible hors de votre organisation, c’est du SaaS ou de la redistribution, ce qui exige un contrat Entreprise/OEM. Les points d’accès internes réservés à votre personnel sont couverts. En cas de doute, décrivez le déploiement à admin@qector.store."},{q:"Puis-je redistribuer QECTOR dans mon produit ?",a:"Seulement avec un contrat Entreprise/OEM, qui couvre la redistribution, l’hébergement SaaS et le regroupement matériel. Écrivez à admin@qector.store."},{q:"Ai-je besoin d’une licence pour la recherche non commerciale ?",a:"Non. L’usage personnel, académique et non commercial est gratuit sous la licence PolyForm Noncommercial 1.0.0. Les universités, organismes de recherche publics, organismes de bienfaisance et institutions gouvernementales peuvent aussi l’utiliser gratuitement, quelle que soit la source de leur financement (c’est ce que prévoit PolyForm Noncommercial). Une entreprise qui utilise QECTOR, y compris dans un contrat avec une université, doit avoir un forfait payant. Les établissements d’enseignement qui veulent tout de même un forfait payant, pour le soutien ou pour transmettre des droits commerciaux à un partenaire industriel, obtiennent 40 % de rabais sur Équipe et Labo avec un courriel institutionnel."},{q:"En quelle devise sont les prix, et la taxe est-elle incluse ?",a:"Les prix sont en dollars américains, hors taxes. La taxe de vente, TPS/TVH ou TVA applicable est calculée et ajoutée au paiement selon votre adresse de facturation. Les entreprises peuvent saisir un numéro de TPS/TVA au paiement."},{q:"Pouvons-nous obtenir un contrat signé, un formulaire fiscal ou un questionnaire de sécurité ?",a:"Oui. Pour un contrat PDF signé, un profil de fournisseur, un W-8BEN ou équivalent, ou un questionnaire de sécurité, écrivez à admin@qector.store avec votre numéro de facture Stripe. Les contrats Entreprise sont toujours signés."}],T={en:{label:"Work e-mail",placeholder:"you@company.com",terms:"I accept the",termsLink:"licence terms",termsTail:`(${p.trialDays}-day commercial evaluation, internal use only).`,submit:`Start ${p.trialDays}-day trial`,sending:"Sending…",done:"Check your inbox: your trial token arrives within a few minutes.",error:"Something went wrong. Please retry, or email admin@qector.store.",termsRequired:"Please accept the licence terms."},fr:{label:"Courriel professionnel",placeholder:"vous@entreprise.com",terms:"J’accepte les",termsLink:"conditions de licence",termsTail:`(évaluation commerciale de ${p.trialDays} jours, usage interne seulement).`,submit:`Commencer l’essai de ${p.trialDays} jours`,sending:"Envoi…",done:"Vérifiez votre boîte de réception : votre jeton d’essai arrive d’ici quelques minutes.",error:"Une erreur est survenue. Réessayez ou écrivez à admin@qector.store.",termsRequired:"Veuillez accepter les conditions de licence."}};function R({lang:a="en"}){const t=T[a],[s,r]=v.useState("idle"),[o,i]=v.useState("");async function l(m){m.preventDefault();const u=new FormData(m.currentTarget);if(!u.get("accept_terms")){r("error"),i(t.termsRequired);return}r("sending");try{const n=await fetch(P,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({email:String(u.get("email")||""),accept_terms:!0,website:String(u.get("website")||"")})});if(n.ok)r("done"),i(t.done);else{const c=await n.json().catch(()=>({}));r("error"),i(typeof c.error=="string"?c.error:t.error)}}catch{r("error"),i(t.error)}}return s==="done"?e.jsx("p",{role:"status",className:"text-cyan-200 text-sm font-medium max-w-sm",children:o}):e.jsxs("form",{onSubmit:l,className:"w-full max-w-sm space-y-3 text-left",noValidate:!1,children:[e.jsx("label",{className:"block text-xs uppercase tracking-wider text-secondary",htmlFor:`trial-email-${a}`,children:t.label}),e.jsx("input",{id:`trial-email-${a}`,name:"email",type:"email",required:!0,autoComplete:"email",placeholder:t.placeholder,className:"w-full rounded-lg bg-void/80 border border-cyan-300/30 px-4 py-3 text-primary placeholder:text-muted-foreground focus:outline-none focus:border-cyan-300"}),e.jsx("input",{type:"text",name:"website",tabIndex:-1,autoComplete:"off","aria-hidden":"true",className:"hidden"}),e.jsxs("label",{className:"flex items-start gap-2 text-xs text-secondary",children:[e.jsx("input",{type:"checkbox",name:"accept_terms",className:"mt-0.5 accent-cyan-400"}),e.jsxs("span",{children:[t.terms," ",e.jsx(g,{to:"/license",className:"text-cyan-300 hover:underline",children:t.termsLink})," ",t.termsTail]})]}),e.jsx("button",{type:"submit",disabled:s==="sending",className:"btn-cyan w-full py-3 font-bold disabled:opacity-60",children:s==="sending"?t.sending:t.submit}),s==="error"&&e.jsx("p",{role:"alert",className:"text-red-300 text-xs",children:o})]})}export{k as F,L as P,R as T,O as a}; diff --git a/assets/TrialForm-BIjatKya.js b/assets/TrialForm-BIjatKya.js deleted file mode 100644 index 49c9e17b..00000000 --- a/assets/TrialForm-BIjatKya.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e,r as v}from"./vendor-react-BiHfrq0e.js";import{L as x}from"./vendor-PiU4YGcH.js";import{P as p,T as P}from"./index-BN-vOeL2.js";function k({name:a,price:t,period:s="",desc:r,features:i,excluded:o,featured:l=!1,showRibbon:m=!0,featuredLabel:c="Most Popular",accent:n="cyan",ctaLabel:u="Contact Sales",ctaHref:h="/contact",centered:f=!1,className:b=""}){const g=n==="gold"?"border-gold-400/30 neon-border-gold":"border-cyan-300/30 neon-border-cyan",q=n==="gold"?"text-gold-400":"text-cyan-300",j=n==="gold"?"bg-gold-400 text-void":"bg-cyan-300 text-void",w=n==="gold"?"btn-gold":"btn-cyan",E=/^https?:\/\//i.test(h),y=`block w-full text-center py-2.5 rounded-lg font-medium text-sm transition-all ${l?w:"btn-outline"}`;return e.jsxs("div",{className:`card-surface flex flex-col relative ${f?"text-center":""} ${l?g:""} ${b}`,children:[l&&m&&e.jsx("span",{className:`absolute -top-3 left-1/2 -translate-x-1/2 px-3 py-1 whitespace-nowrap text-xs font-bold uppercase tracking-wider rounded-full ${j}`,children:c}),e.jsx("div",{className:"text-muted-foreground text-xs uppercase tracking-wider mb-2",children:a}),e.jsxs("div",{className:"text-primary font-bold text-3xl mb-1",children:[t,e.jsx("span",{className:"text-muted-foreground text-sm font-normal",children:s})]}),e.jsx("p",{className:"text-secondary text-sm mb-4",children:r}),i&&e.jsxs("ul",{className:"space-y-2 flex-1 mb-6",children:[i.map(d=>e.jsxs("li",{className:`flex items-start gap-2 text-sm text-secondary ${f?"text-left":""}`,children:[e.jsx("span",{className:`${q} mt-0.5`,"aria-hidden":"true",children:"✓"}),e.jsxs("span",{children:[e.jsx("span",{className:"sr-only",children:"Included: "}),d]})]},d)),o?.map(d=>e.jsxs("li",{className:`flex items-start gap-2 text-sm text-muted-foreground/70 ${f?"text-left":""}`,children:[e.jsx("span",{className:"text-muted-foreground/60 mt-0.5","aria-hidden":"true",children:"✓"}),e.jsxs("span",{children:[e.jsx("span",{className:"sr-only",children:"Not included: "}),d]})]},d))]}),E?e.jsx("a",{href:h,className:y,rel:"noopener",children:u}):e.jsx(x,{to:h,className:y,children:u})]})}const L=[{q:"How do I try QECTOR commercially before paying?",a:"Request the free 14-day commercial trial on this page: a Pro licence token arrives by e-mail within minutes, for up to 5 internal users. No card is needed and the token simply expires; there is nothing to cancel. One trial per e-mail address per year."},{q:"How is the licence delivered, and what does the token unlock?",a:'By e-mail within minutes of payment (check spam, then write to admin@qector.store with your Stripe receipt). Everyone installs the same wheel: pip install --upgrade "qector-decoder-v3>=1.0,<2". Set QECTOR_LICENSE_KEY and QECTOR_LICENSE to the token. Every paid plan unlocks GPU (CUDA/OpenCL) batch decoding; Lab and Enterprise also raise the code-distance tier to 63. CPU decoding is never blocked, and distance caps are only enforced if you set QECTOR_ENFORCE=1. The token is verified offline against a public key in the package: no licence server, works air-gapped.'},{q:"Do plans renew automatically, and how do I cancel?",a:"Yes. Pro (monthly or annual), Team and Lab renew automatically until cancelled, and you get a reminder e-mail 14 days before each annual renewal. Cancel any time from your Stripe receipt or by writing to admin@qector.store; your licence stays valid until the end of the paid period. Pro Perpetual and the Pilot are one-time payments and never renew."},{q:"What is your refund policy?",a:"14-day money-back guarantee on your first payment of any plan: write to admin@qector.store with your Stripe receipt and we refund it in full and revoke the token. Renewals are not refunded pro rata. Duplicate purchases and charges made in error are always refunded. If a token never arrives or fails to verify, we reissue it at no cost. This does not limit non-waivable statutory rights."},{q:"How many seats does each plan cover, and what counts as production?",a:"Pro: 1 named user. Team: up to 10. Lab: up to 25. Enterprise: unlimited. All paid plans grant production rights for internal use. The free trial and the 60-day Pilot are for evaluation (benchmarking, integration testing, threshold studies), not production. Pro Perpetual covers one named user for every 3.x release; a major version such as 4.0 is a new licence."},{q:"Is a hosted or customer-facing API covered?",a:"No. Pro, Team and Lab cover internal use on your own infrastructure. As soon as QECTOR sits behind an API, product or service that anyone outside your organisation can reach, that is SaaS or redistribution and needs an Enterprise/OEM agreement. Internal endpoints used only by your own staff are fine. Unsure? Describe the deployment to admin@qector.store."},{q:"Can I redistribute QECTOR inside my product?",a:"Only under an Enterprise/OEM agreement, which covers redistribution, SaaS hosting and hardware bundling. Write to admin@qector.store."},{q:"Do I need a licence for non-commercial research?",a:"No. Personal, academic and other non-commercial use is free under the PolyForm Noncommercial License 1.0.0. Industry-funded or contract research at a university is commercial; it gets 40% off Team and Lab with an institutional e-mail."},{q:"What currency are prices in, and is tax included?",a:"Prices are in US dollars and exclude tax. Applicable sales tax, GST/HST or VAT is calculated and added at checkout from your billing address. Businesses can enter a VAT/GST number at checkout."},{q:"Can we get a signed agreement, tax form or security questionnaire?",a:"Yes. For a signed PDF agreement, vendor profile, W-8BEN or equivalent, or a security questionnaire, write to admin@qector.store with your Stripe invoice number. Enterprise agreements are always signed contracts."}],O=[{q:"Comment essayer QECTOR commercialement avant de payer ?",a:"Demandez l’essai commercial gratuit de 14 jours sur cette page : un jeton de licence Pro arrive par courriel en quelques minutes, pour jusqu’à 5 utilisateurs internes. Aucune carte n’est requise et le jeton expire de lui-même : rien à annuler. Un essai par adresse courriel par année."},{q:"Comment la licence est-elle livrée, et que déverrouille le jeton ?",a:'Par courriel dans les minutes qui suivent le paiement (vérifiez le courrier indésirable, puis écrivez à admin@qector.store avec votre reçu Stripe). Tout le monde installe la même wheel : pip install --upgrade "qector-decoder-v3>=1.0,<2". Définissez QECTOR_LICENSE_KEY et QECTOR_LICENSE au jeton. Chaque forfait payant déverrouille le décodage GPU (CUDA/OpenCL) par lots; Labo et Entreprise portent aussi le palier de distance à 63. Le décodage CPU n’est jamais bloqué, et les plafonds de distance ne s’appliquent que si QECTOR_ENFORCE=1. Le jeton se vérifie hors ligne contre une clé publique incluse dans le paquet : aucun serveur de licence, fonctionne hors réseau.'},{q:"Les forfaits se renouvellent-ils automatiquement, et comment annuler ?",a:"Oui. Pro (mensuel ou annuel), Équipe et Labo se renouvellent automatiquement jusqu’à annulation, avec un courriel de rappel 14 jours avant chaque renouvellement annuel. Annulez en tout temps depuis votre reçu Stripe ou en écrivant à admin@qector.store; votre licence reste valide jusqu’à la fin de la période payée. Pro Perpétuel et le Pilote sont des paiements uniques et ne se renouvellent jamais."},{q:"Quelle est votre politique de remboursement ?",a:"Garantie satisfait ou remboursé de 14 jours sur votre premier paiement de tout forfait : écrivez à admin@qector.store avec votre reçu Stripe et nous remboursons en entier et révoquons le jeton. Les renouvellements ne sont pas remboursés au prorata. Les achats en double et les frais faits par erreur sont toujours remboursés. Si un jeton n’arrive pas ou ne se vérifie pas, nous le réémettons sans frais. Cela ne limite pas les droits légaux auxquels on ne peut renoncer."},{q:"Combien de sièges chaque forfait couvre-t-il, et qu’est-ce que la production ?",a:"Pro : 1 utilisateur nommé. Équipe : jusqu’à 10. Labo : jusqu’à 25. Entreprise : illimité. Tous les forfaits payants accordent des droits de production pour usage interne. L’essai gratuit et le Pilote de 60 jours servent à l’évaluation (benchmarks, tests d’intégration, études de seuil), pas à la production. Pro Perpétuel couvre un utilisateur nommé pour toutes les versions 3.x; une version majeure comme 4.0 est une nouvelle licence."},{q:"Une API hébergée ou offerte aux clients est-elle couverte ?",a:"Non. Pro, Équipe et Labo couvrent l’usage interne sur votre propre infrastructure. Dès que QECTOR se trouve derrière une API, un produit ou un service accessible hors de votre organisation, c’est du SaaS ou de la redistribution, ce qui exige un contrat Entreprise/OEM. Les points d’accès internes réservés à votre personnel sont couverts. En cas de doute, décrivez le déploiement à admin@qector.store."},{q:"Puis-je redistribuer QECTOR dans mon produit ?",a:"Seulement avec un contrat Entreprise/OEM, qui couvre la redistribution, l’hébergement SaaS et le regroupement matériel. Écrivez à admin@qector.store."},{q:"Ai-je besoin d’une licence pour la recherche non commerciale ?",a:"Non. L’usage personnel, académique et non commercial est gratuit sous la licence PolyForm Noncommercial 1.0.0. La recherche universitaire financée par l’industrie ou sous contrat est commerciale; elle obtient 40 % de rabais sur Équipe et Labo avec un courriel institutionnel."},{q:"En quelle devise sont les prix, et la taxe est-elle incluse ?",a:"Les prix sont en dollars américains, hors taxes. La taxe de vente, TPS/TVH ou TVA applicable est calculée et ajoutée au paiement selon votre adresse de facturation. Les entreprises peuvent saisir un numéro de TPS/TVA au paiement."},{q:"Pouvons-nous obtenir un contrat signé, un formulaire fiscal ou un questionnaire de sécurité ?",a:"Oui. Pour un contrat PDF signé, un profil de fournisseur, un W-8BEN ou équivalent, ou un questionnaire de sécurité, écrivez à admin@qector.store avec votre numéro de facture Stripe. Les contrats Entreprise sont toujours signés."}],T={en:{label:"Work e-mail",placeholder:"you@company.com",terms:"I accept the",termsLink:"licence terms",termsTail:`(${p.trialDays}-day commercial evaluation, internal use only).`,submit:`Start ${p.trialDays}-day trial`,sending:"Sending…",done:"Check your inbox: your trial token arrives within a few minutes.",error:"Something went wrong. Please retry, or email admin@qector.store.",termsRequired:"Please accept the licence terms."},fr:{label:"Courriel professionnel",placeholder:"vous@entreprise.com",terms:"J’accepte les",termsLink:"conditions de licence",termsTail:`(évaluation commerciale de ${p.trialDays} jours, usage interne seulement).`,submit:`Commencer l’essai de ${p.trialDays} jours`,sending:"Envoi…",done:"Vérifiez votre boîte de réception : votre jeton d’essai arrive d’ici quelques minutes.",error:"Une erreur est survenue. Réessayez ou écrivez à admin@qector.store.",termsRequired:"Veuillez accepter les conditions de licence."}};function R({lang:a="en"}){const t=T[a],[s,r]=v.useState("idle"),[i,o]=v.useState("");async function l(m){m.preventDefault();const c=new FormData(m.currentTarget);if(!c.get("accept_terms")){r("error"),o(t.termsRequired);return}r("sending");try{const n=await fetch(P,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({email:String(c.get("email")||""),accept_terms:!0,website:String(c.get("website")||"")})});if(n.ok)r("done"),o(t.done);else{const u=await n.json().catch(()=>({}));r("error"),o(typeof u.error=="string"?u.error:t.error)}}catch{r("error"),o(t.error)}}return s==="done"?e.jsx("p",{role:"status",className:"text-cyan-200 text-sm font-medium max-w-sm",children:i}):e.jsxs("form",{onSubmit:l,className:"w-full max-w-sm space-y-3 text-left",noValidate:!1,children:[e.jsx("label",{className:"block text-xs uppercase tracking-wider text-secondary",htmlFor:`trial-email-${a}`,children:t.label}),e.jsx("input",{id:`trial-email-${a}`,name:"email",type:"email",required:!0,autoComplete:"email",placeholder:t.placeholder,className:"w-full rounded-lg bg-void/80 border border-cyan-300/30 px-4 py-3 text-primary placeholder:text-muted-foreground focus:outline-none focus:border-cyan-300"}),e.jsx("input",{type:"text",name:"website",tabIndex:-1,autoComplete:"off","aria-hidden":"true",className:"hidden"}),e.jsxs("label",{className:"flex items-start gap-2 text-xs text-secondary",children:[e.jsx("input",{type:"checkbox",name:"accept_terms",className:"mt-0.5 accent-cyan-400"}),e.jsxs("span",{children:[t.terms," ",e.jsx(x,{to:"/license",className:"text-cyan-300 hover:underline",children:t.termsLink})," ",t.termsTail]})]}),e.jsx("button",{type:"submit",disabled:s==="sending",className:"btn-cyan w-full py-3 font-bold disabled:opacity-60",children:s==="sending"?t.sending:t.submit}),s==="error"&&e.jsx("p",{role:"alert",className:"text-red-300 text-xs",children:i})]})}export{L as F,k as P,R as T,O as a}; diff --git a/assets/TrialForm-CC5CTQMP.js b/assets/TrialForm-CC5CTQMP.js deleted file mode 100644 index 5688a4d7..00000000 --- a/assets/TrialForm-CC5CTQMP.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e,r as v}from"./vendor-react-BiHfrq0e.js";import{L as x}from"./vendor-PiU4YGcH.js";import{P as p,T as P}from"./index-WV1aysjN.js";function k({name:a,price:t,period:s="",desc:r,features:i,excluded:o,featured:l=!1,showRibbon:m=!0,featuredLabel:c="Most Popular",accent:n="cyan",ctaLabel:u="Contact Sales",ctaHref:h="/contact",centered:f=!1,className:b=""}){const g=n==="gold"?"border-gold-400/30 neon-border-gold":"border-cyan-300/30 neon-border-cyan",q=n==="gold"?"text-gold-400":"text-cyan-300",j=n==="gold"?"bg-gold-400 text-void":"bg-cyan-300 text-void",E=n==="gold"?"btn-gold":"btn-cyan",w=/^https?:\/\//i.test(h),y=`block w-full text-center py-2.5 rounded-lg font-medium text-sm transition-all ${l?E:"btn-outline"}`;return e.jsxs("div",{className:`card-surface flex flex-col relative ${f?"text-center":""} ${l?g:""} ${b}`,children:[l&&m&&e.jsx("span",{className:`absolute -top-3 left-1/2 -translate-x-1/2 px-3 py-1 text-xs font-bold uppercase tracking-wider rounded-full ${j}`,children:c}),e.jsx("div",{className:"text-muted-foreground text-xs uppercase tracking-wider mb-2",children:a}),e.jsxs("div",{className:"text-primary font-bold text-3xl mb-1",children:[t,e.jsx("span",{className:"text-muted-foreground text-sm font-normal",children:s})]}),e.jsx("p",{className:"text-secondary text-sm mb-4",children:r}),i&&e.jsxs("ul",{className:"space-y-2 flex-1 mb-6",children:[i.map(d=>e.jsxs("li",{className:`flex items-start gap-2 text-sm text-secondary ${f?"text-left":""}`,children:[e.jsx("span",{className:`${q} mt-0.5`,"aria-hidden":"true",children:"✓"}),e.jsxs("span",{children:[e.jsx("span",{className:"sr-only",children:"Included: "}),d]})]},d)),o?.map(d=>e.jsxs("li",{className:`flex items-start gap-2 text-sm text-muted-foreground/70 ${f?"text-left":""}`,children:[e.jsx("span",{className:"text-muted-foreground/60 mt-0.5","aria-hidden":"true",children:"✓"}),e.jsxs("span",{children:[e.jsx("span",{className:"sr-only",children:"Not included: "}),d]})]},d))]}),w?e.jsx("a",{href:h,className:y,rel:"noopener",children:u}):e.jsx(x,{to:h,className:y,children:u})]})}const L=[{q:"How do I try QECTOR commercially before paying?",a:"Request the free 14-day commercial trial on this page: a Pro licence token arrives by e-mail within minutes, for up to 5 internal users. No card is needed and the token simply expires; there is nothing to cancel. One trial per e-mail address per year."},{q:"How is the licence delivered, and what does the token unlock?",a:'By e-mail within minutes of payment (check spam, then write to admin@qector.store with your Stripe receipt). Everyone installs the same wheel: pip install --upgrade "qector-decoder-v3>=1.0,<2". Set QECTOR_LICENSE_KEY and QECTOR_LICENSE to the token. Every paid plan unlocks GPU (CUDA/OpenCL) batch decoding; Lab and Enterprise also raise the code-distance tier to 63. CPU decoding is never blocked, and distance caps are only enforced if you set QECTOR_ENFORCE=1. The token is verified offline against a public key in the package: no licence server, works air-gapped.'},{q:"Do plans renew automatically, and how do I cancel?",a:"Yes. Pro (monthly or annual), Team and Lab renew automatically until cancelled, and you get a reminder e-mail 14 days before each annual renewal. Cancel any time from your Stripe receipt or by writing to admin@qector.store; your licence stays valid until the end of the paid period. Pro Perpetual and the Pilot are one-time payments and never renew."},{q:"What is your refund policy?",a:"14-day money-back guarantee on your first payment of any plan: write to admin@qector.store with your Stripe receipt and we refund it in full and revoke the token. Renewals are not refunded pro rata. Duplicate purchases and charges made in error are always refunded. If a token never arrives or fails to verify, we reissue it at no cost. This does not limit non-waivable statutory rights."},{q:"How many seats does each plan cover, and what counts as production?",a:"Pro: 1 named user. Team: up to 10. Lab: up to 25. Enterprise: unlimited. All paid plans grant production rights for internal use. The free trial and the 60-day Pilot are for evaluation (benchmarking, integration testing, threshold studies), not production. Pro Perpetual covers one named user for every 3.x release; a major version such as 4.0 is a new licence."},{q:"Is a hosted or customer-facing API covered?",a:"No. Pro, Team and Lab cover internal use on your own infrastructure. As soon as QECTOR sits behind an API, product or service that anyone outside your organisation can reach, that is SaaS or redistribution and needs an Enterprise/OEM agreement. Internal endpoints used only by your own staff are fine. Unsure? Describe the deployment to admin@qector.store."},{q:"Can I redistribute QECTOR inside my product?",a:"Only under an Enterprise/OEM agreement, which covers redistribution, SaaS hosting and hardware bundling. Write to admin@qector.store."},{q:"Do I need a licence for non-commercial research?",a:"No. Personal, academic and other non-commercial use is free under the PolyForm Noncommercial License 1.0.0. Industry-funded or contract research at a university is commercial; it gets 40% off Team and Lab with an institutional e-mail."},{q:"What currency are prices in, and is tax included?",a:"Prices are in US dollars and exclude tax. Applicable sales tax, GST/HST or VAT is calculated and added at checkout from your billing address. Businesses can enter a VAT/GST number at checkout."},{q:"Can we get a signed agreement, tax form or security questionnaire?",a:"Yes. For a signed PDF agreement, vendor profile, W-8BEN or equivalent, or a security questionnaire, write to admin@qector.store with your Stripe invoice number. Enterprise agreements are always signed contracts."}],O=[{q:"Comment essayer QECTOR commercialement avant de payer ?",a:"Demandez l’essai commercial gratuit de 14 jours sur cette page : un jeton de licence Pro arrive par courriel en quelques minutes, pour jusqu’à 5 utilisateurs internes. Aucune carte n’est requise et le jeton expire de lui-même : rien à annuler. Un essai par adresse courriel par année."},{q:"Comment la licence est-elle livrée, et que déverrouille le jeton ?",a:'Par courriel dans les minutes qui suivent le paiement (vérifiez le courrier indésirable, puis écrivez à admin@qector.store avec votre reçu Stripe). Tout le monde installe la même wheel : pip install --upgrade "qector-decoder-v3>=1.0,<2". Définissez QECTOR_LICENSE_KEY et QECTOR_LICENSE au jeton. Chaque forfait payant déverrouille le décodage GPU (CUDA/OpenCL) par lots; Labo et Entreprise portent aussi le palier de distance à 63. Le décodage CPU n’est jamais bloqué, et les plafonds de distance ne s’appliquent que si QECTOR_ENFORCE=1. Le jeton se vérifie hors ligne contre une clé publique incluse dans le paquet : aucun serveur de licence, fonctionne hors réseau.'},{q:"Les forfaits se renouvellent-ils automatiquement, et comment annuler ?",a:"Oui. Pro (mensuel ou annuel), Équipe et Labo se renouvellent automatiquement jusqu’à annulation, avec un courriel de rappel 14 jours avant chaque renouvellement annuel. Annulez en tout temps depuis votre reçu Stripe ou en écrivant à admin@qector.store; votre licence reste valide jusqu’à la fin de la période payée. Pro Perpétuel et le Pilote sont des paiements uniques et ne se renouvellent jamais."},{q:"Quelle est votre politique de remboursement ?",a:"Garantie satisfait ou remboursé de 14 jours sur votre premier paiement de tout forfait : écrivez à admin@qector.store avec votre reçu Stripe et nous remboursons en entier et révoquons le jeton. Les renouvellements ne sont pas remboursés au prorata. Les achats en double et les frais faits par erreur sont toujours remboursés. Si un jeton n’arrive pas ou ne se vérifie pas, nous le réémettons sans frais. Cela ne limite pas les droits légaux auxquels on ne peut renoncer."},{q:"Combien de sièges chaque forfait couvre-t-il, et qu’est-ce que la production ?",a:"Pro : 1 utilisateur nommé. Équipe : jusqu’à 10. Labo : jusqu’à 25. Entreprise : illimité. Tous les forfaits payants accordent des droits de production pour usage interne. L’essai gratuit et le Pilote de 60 jours servent à l’évaluation (benchmarks, tests d’intégration, études de seuil), pas à la production. Pro Perpétuel couvre un utilisateur nommé pour toutes les versions 3.x; une version majeure comme 4.0 est une nouvelle licence."},{q:"Une API hébergée ou offerte aux clients est-elle couverte ?",a:"Non. Pro, Équipe et Labo couvrent l’usage interne sur votre propre infrastructure. Dès que QECTOR se trouve derrière une API, un produit ou un service accessible hors de votre organisation, c’est du SaaS ou de la redistribution, ce qui exige un contrat Entreprise/OEM. Les points d’accès internes réservés à votre personnel sont couverts. En cas de doute, décrivez le déploiement à admin@qector.store."},{q:"Puis-je redistribuer QECTOR dans mon produit ?",a:"Seulement avec un contrat Entreprise/OEM, qui couvre la redistribution, l’hébergement SaaS et le regroupement matériel. Écrivez à admin@qector.store."},{q:"Ai-je besoin d’une licence pour la recherche non commerciale ?",a:"Non. L’usage personnel, académique et non commercial est gratuit sous la licence PolyForm Noncommercial 1.0.0. La recherche universitaire financée par l’industrie ou sous contrat est commerciale; elle obtient 40 % de rabais sur Équipe et Labo avec un courriel institutionnel."},{q:"En quelle devise sont les prix, et la taxe est-elle incluse ?",a:"Les prix sont en dollars américains, hors taxes. La taxe de vente, TPS/TVH ou TVA applicable est calculée et ajoutée au paiement selon votre adresse de facturation. Les entreprises peuvent saisir un numéro de TPS/TVA au paiement."},{q:"Pouvons-nous obtenir un contrat signé, un formulaire fiscal ou un questionnaire de sécurité ?",a:"Oui. Pour un contrat PDF signé, un profil de fournisseur, un W-8BEN ou équivalent, ou un questionnaire de sécurité, écrivez à admin@qector.store avec votre numéro de facture Stripe. Les contrats Entreprise sont toujours signés."}],T={en:{label:"Work e-mail",placeholder:"you@company.com",terms:"I accept the",termsLink:"licence terms",termsTail:`(${p.trialDays}-day commercial evaluation, internal use only).`,submit:`Start ${p.trialDays}-day trial`,sending:"Sending…",done:"Check your inbox: your trial token arrives within a few minutes.",error:"Something went wrong. Please retry, or email admin@qector.store.",termsRequired:"Please accept the licence terms."},fr:{label:"Courriel professionnel",placeholder:"vous@entreprise.com",terms:"J’accepte les",termsLink:"conditions de licence",termsTail:`(évaluation commerciale de ${p.trialDays} jours, usage interne seulement).`,submit:`Commencer l’essai de ${p.trialDays} jours`,sending:"Envoi…",done:"Vérifiez votre boîte de réception : votre jeton d’essai arrive d’ici quelques minutes.",error:"Une erreur est survenue. Réessayez ou écrivez à admin@qector.store.",termsRequired:"Veuillez accepter les conditions de licence."}};function R({lang:a="en"}){const t=T[a],[s,r]=v.useState("idle"),[i,o]=v.useState("");async function l(m){m.preventDefault();const c=new FormData(m.currentTarget);if(!c.get("accept_terms")){r("error"),o(t.termsRequired);return}r("sending");try{const n=await fetch(P,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({email:String(c.get("email")||""),accept_terms:!0,website:String(c.get("website")||"")})});if(n.ok)r("done"),o(t.done);else{const u=await n.json().catch(()=>({}));r("error"),o(typeof u.error=="string"?u.error:t.error)}}catch{r("error"),o(t.error)}}return s==="done"?e.jsx("p",{role:"status",className:"text-cyan-200 text-sm font-medium max-w-sm",children:i}):e.jsxs("form",{onSubmit:l,className:"w-full max-w-sm space-y-3 text-left",noValidate:!1,children:[e.jsx("label",{className:"block text-xs uppercase tracking-wider text-secondary",htmlFor:`trial-email-${a}`,children:t.label}),e.jsx("input",{id:`trial-email-${a}`,name:"email",type:"email",required:!0,autoComplete:"email",placeholder:t.placeholder,className:"w-full rounded-lg bg-void/80 border border-cyan-300/30 px-4 py-3 text-primary placeholder:text-muted-foreground focus:outline-none focus:border-cyan-300"}),e.jsx("input",{type:"text",name:"website",tabIndex:-1,autoComplete:"off","aria-hidden":"true",className:"hidden"}),e.jsxs("label",{className:"flex items-start gap-2 text-xs text-secondary",children:[e.jsx("input",{type:"checkbox",name:"accept_terms",className:"mt-0.5 accent-cyan-400"}),e.jsxs("span",{children:[t.terms," ",e.jsx(x,{to:"/license",className:"text-cyan-300 hover:underline",children:t.termsLink})," ",t.termsTail]})]}),e.jsx("button",{type:"submit",disabled:s==="sending",className:"btn-cyan w-full py-3 font-bold disabled:opacity-60",children:s==="sending"?t.sending:t.submit}),s==="error"&&e.jsx("p",{role:"alert",className:"text-red-300 text-xs",children:i})]})}export{L as F,k as P,R as T,O as a}; diff --git a/assets/TrialForm-CpW40uwE.js b/assets/TrialForm-CpW40uwE.js deleted file mode 100644 index aa1b0074..00000000 --- a/assets/TrialForm-CpW40uwE.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e,r as v}from"./vendor-react-BiHfrq0e.js";import{L as g}from"./vendor-PiU4YGcH.js";import{P as p,T as P}from"./index-CqAA-ZXu.js";function L({name:a,price:t,period:s="",desc:r,features:o,excluded:i,featured:l=!1,showRibbon:m=!0,featuredLabel:u="Most Popular",accent:n="cyan",ctaLabel:c="Contact Sales",ctaHref:h="/contact",centered:f=!1,className:x=""}){const b=n==="gold"?"border-gold-400/30 neon-border-gold":"border-cyan-300/30 neon-border-cyan",q=n==="gold"?"text-gold-400":"text-cyan-300",w=n==="gold"?"bg-gold-400 text-void":"bg-cyan-300 text-void",j=n==="gold"?"btn-gold":"btn-cyan",E=/^https?:\/\//i.test(h),y=`block w-full text-center py-2.5 rounded-lg font-medium text-sm transition-all ${l?j:"btn-outline"}`;return e.jsxs("div",{className:`card-surface flex flex-col relative ${f?"text-center":""} ${l?b:""} ${x}`,children:[l&&m&&e.jsx("span",{className:`absolute -top-3 left-1/2 -translate-x-1/2 px-3 py-1 whitespace-nowrap text-xs font-bold uppercase tracking-wider rounded-full ${w}`,children:u}),e.jsx("div",{className:"text-muted-foreground text-xs uppercase tracking-wider mb-2",children:a}),e.jsxs("div",{className:"text-primary font-bold text-3xl mb-1",children:[t,e.jsx("span",{className:"text-muted-foreground text-sm font-normal",children:s})]}),e.jsx("p",{className:"text-secondary text-sm mb-4",children:r}),o&&e.jsxs("ul",{className:"space-y-2 flex-1 mb-6",children:[o.map(d=>e.jsxs("li",{className:`flex items-start gap-2 text-sm text-secondary ${f?"text-left":""}`,children:[e.jsx("span",{className:`${q} mt-0.5`,"aria-hidden":"true",children:"✓"}),e.jsxs("span",{children:[e.jsx("span",{className:"sr-only",children:"Included: "}),d]})]},d)),i?.map(d=>e.jsxs("li",{className:`flex items-start gap-2 text-sm text-muted-foreground/70 ${f?"text-left":""}`,children:[e.jsx("span",{className:"text-muted-foreground/60 mt-0.5","aria-hidden":"true",children:"✓"}),e.jsxs("span",{children:[e.jsx("span",{className:"sr-only",children:"Not included: "}),d]})]},d))]}),E?e.jsx("a",{href:h,className:y,rel:"noopener",children:c}):e.jsx(g,{to:h,className:y,children:c})]})}const k=[{q:"How do I try QECTOR commercially before paying?",a:"Request the free 14-day commercial trial on this page: a Pro licence token arrives by e-mail within minutes, for up to 5 internal users. No card is needed and the token simply expires; there is nothing to cancel. One trial per e-mail address per year."},{q:"How is the licence delivered, and what does the token unlock?",a:'By e-mail within minutes of payment (check spam, then write to admin@qector.store with your Stripe receipt). Everyone installs the same wheel: pip install --upgrade "qector-decoder-v3>=1.0,<2". Set QECTOR_LICENSE_KEY and QECTOR_LICENSE to the token. Every paid plan unlocks GPU (CUDA/OpenCL) batch decoding; Lab and Enterprise also raise the code-distance tier to 63. CPU decoding is never blocked, and distance caps are only enforced if you set QECTOR_ENFORCE=1. The token is verified offline against a public key in the package: no licence server, works air-gapped.'},{q:"Do plans renew automatically, and how do I cancel?",a:"Yes. Pro (monthly or annual), Team and Lab renew automatically until cancelled, and you get a reminder e-mail 14 days before each annual renewal. Cancel any time from your Stripe receipt or by writing to admin@qector.store; your licence stays valid until the end of the paid period. Pro Perpetual and the Pilot are one-time payments and never renew."},{q:"What is your refund policy?",a:"14-day money-back guarantee on your first payment of any plan: write to admin@qector.store with your Stripe receipt and we refund it in full and revoke the token. Renewals are not refunded pro rata. Duplicate purchases and charges made in error are always refunded. If a token never arrives or fails to verify, we reissue it at no cost. This does not limit non-waivable statutory rights."},{q:"How many seats does each plan cover, and what counts as production?",a:"Pro: 1 named user. Team: up to 10. Lab: up to 25. Enterprise: unlimited. All paid plans grant production rights for internal use. The free trial and the 60-day Pilot are for evaluation (benchmarking, integration testing, threshold studies), not production. Pro Perpetual covers one named user for every 3.x release; a major version such as 4.0 is a new licence."},{q:"Is a hosted or customer-facing API covered?",a:"No. Pro, Team and Lab cover internal use on your own infrastructure. As soon as QECTOR sits behind an API, product or service that anyone outside your organisation can reach, that is SaaS or redistribution and needs an Enterprise/OEM agreement. Internal endpoints used only by your own staff are fine. Unsure? Describe the deployment to admin@qector.store."},{q:"Can I redistribute QECTOR inside my product?",a:"Only under an Enterprise/OEM agreement, which covers redistribution, SaaS hosting and hardware bundling. Write to admin@qector.store."},{q:"Do I need a licence for non-commercial research?",a:"No. Personal, academic and other non-commercial use is free under the PolyForm Noncommercial License 1.0.0. Universities, public research organisations, charities and government institutions may also use it free, whatever the source of their funding (that is what PolyForm Noncommercial says). A company using QECTOR, including on a contract with a university, needs a paid plan. Academic institutions that want a paid plan anyway, for support or to pass commercial rights to an industry partner, get 40% off Team and Lab with an institutional e-mail."},{q:"What currency are prices in, and is tax included?",a:"Prices are in US dollars and exclude tax. Applicable sales tax, GST/HST or VAT is calculated and added at checkout from your billing address. Businesses can enter a VAT/GST number at checkout."},{q:"Can we get a signed agreement, tax form or security questionnaire?",a:"Yes. For a signed PDF agreement, vendor profile, W-8BEN or equivalent, or a security questionnaire, write to admin@qector.store with your Stripe invoice number. Enterprise agreements are always signed contracts."}],O=[{q:"Comment essayer QECTOR commercialement avant de payer ?",a:"Demandez l’essai commercial gratuit de 14 jours sur cette page : un jeton de licence Pro arrive par courriel en quelques minutes, pour jusqu’à 5 utilisateurs internes. Aucune carte n’est requise et le jeton expire de lui-même : rien à annuler. Un essai par adresse courriel par année."},{q:"Comment la licence est-elle livrée, et que déverrouille le jeton ?",a:'Par courriel dans les minutes qui suivent le paiement (vérifiez le courrier indésirable, puis écrivez à admin@qector.store avec votre reçu Stripe). Tout le monde installe la même wheel : pip install --upgrade "qector-decoder-v3>=1.0,<2". Définissez QECTOR_LICENSE_KEY et QECTOR_LICENSE au jeton. Chaque forfait payant déverrouille le décodage GPU (CUDA/OpenCL) par lots; Labo et Entreprise portent aussi le palier de distance à 63. Le décodage CPU n’est jamais bloqué, et les plafonds de distance ne s’appliquent que si QECTOR_ENFORCE=1. Le jeton se vérifie hors ligne contre une clé publique incluse dans le paquet : aucun serveur de licence, fonctionne hors réseau.'},{q:"Les forfaits se renouvellent-ils automatiquement, et comment annuler ?",a:"Oui. Pro (mensuel ou annuel), Équipe et Labo se renouvellent automatiquement jusqu’à annulation, avec un courriel de rappel 14 jours avant chaque renouvellement annuel. Annulez en tout temps depuis votre reçu Stripe ou en écrivant à admin@qector.store; votre licence reste valide jusqu’à la fin de la période payée. Pro Perpétuel et le Pilote sont des paiements uniques et ne se renouvellent jamais."},{q:"Quelle est votre politique de remboursement ?",a:"Garantie satisfait ou remboursé de 14 jours sur votre premier paiement de tout forfait : écrivez à admin@qector.store avec votre reçu Stripe et nous remboursons en entier et révoquons le jeton. Les renouvellements ne sont pas remboursés au prorata. Les achats en double et les frais faits par erreur sont toujours remboursés. Si un jeton n’arrive pas ou ne se vérifie pas, nous le réémettons sans frais. Cela ne limite pas les droits légaux auxquels on ne peut renoncer."},{q:"Combien de sièges chaque forfait couvre-t-il, et qu’est-ce que la production ?",a:"Pro : 1 utilisateur nommé. Équipe : jusqu’à 10. Labo : jusqu’à 25. Entreprise : illimité. Tous les forfaits payants accordent des droits de production pour usage interne. L’essai gratuit et le Pilote de 60 jours servent à l’évaluation (benchmarks, tests d’intégration, études de seuil), pas à la production. Pro Perpétuel couvre un utilisateur nommé pour toutes les versions 3.x; une version majeure comme 4.0 est une nouvelle licence."},{q:"Une API hébergée ou offerte aux clients est-elle couverte ?",a:"Non. Pro, Équipe et Labo couvrent l’usage interne sur votre propre infrastructure. Dès que QECTOR se trouve derrière une API, un produit ou un service accessible hors de votre organisation, c’est du SaaS ou de la redistribution, ce qui exige un contrat Entreprise/OEM. Les points d’accès internes réservés à votre personnel sont couverts. En cas de doute, décrivez le déploiement à admin@qector.store."},{q:"Puis-je redistribuer QECTOR dans mon produit ?",a:"Seulement avec un contrat Entreprise/OEM, qui couvre la redistribution, l’hébergement SaaS et le regroupement matériel. Écrivez à admin@qector.store."},{q:"Ai-je besoin d’une licence pour la recherche non commerciale ?",a:"Non. L’usage personnel, académique et non commercial est gratuit sous la licence PolyForm Noncommercial 1.0.0. Les universités, organismes de recherche publics, organismes de bienfaisance et institutions gouvernementales peuvent aussi l’utiliser gratuitement, quelle que soit la source de leur financement (c’est ce que prévoit PolyForm Noncommercial). Une entreprise qui utilise QECTOR, y compris dans un contrat avec une université, doit avoir un forfait payant. Les établissements d’enseignement qui veulent tout de même un forfait payant, pour le soutien ou pour transmettre des droits commerciaux à un partenaire industriel, obtiennent 40 % de rabais sur Équipe et Labo avec un courriel institutionnel."},{q:"En quelle devise sont les prix, et la taxe est-elle incluse ?",a:"Les prix sont en dollars américains, hors taxes. La taxe de vente, TPS/TVH ou TVA applicable est calculée et ajoutée au paiement selon votre adresse de facturation. Les entreprises peuvent saisir un numéro de TPS/TVA au paiement."},{q:"Pouvons-nous obtenir un contrat signé, un formulaire fiscal ou un questionnaire de sécurité ?",a:"Oui. Pour un contrat PDF signé, un profil de fournisseur, un W-8BEN ou équivalent, ou un questionnaire de sécurité, écrivez à admin@qector.store avec votre numéro de facture Stripe. Les contrats Entreprise sont toujours signés."}],T={en:{label:"Work e-mail",placeholder:"you@company.com",terms:"I accept the",termsLink:"licence terms",termsTail:`(${p.trialDays}-day commercial evaluation, internal use only).`,submit:`Start ${p.trialDays}-day trial`,sending:"Sending…",done:"Check your inbox: your trial token arrives within a few minutes.",error:"Something went wrong. Please retry, or email admin@qector.store.",termsRequired:"Please accept the licence terms."},fr:{label:"Courriel professionnel",placeholder:"vous@entreprise.com",terms:"J’accepte les",termsLink:"conditions de licence",termsTail:`(évaluation commerciale de ${p.trialDays} jours, usage interne seulement).`,submit:`Commencer l’essai de ${p.trialDays} jours`,sending:"Envoi…",done:"Vérifiez votre boîte de réception : votre jeton d’essai arrive d’ici quelques minutes.",error:"Une erreur est survenue. Réessayez ou écrivez à admin@qector.store.",termsRequired:"Veuillez accepter les conditions de licence."}};function R({lang:a="en"}){const t=T[a],[s,r]=v.useState("idle"),[o,i]=v.useState("");async function l(m){m.preventDefault();const u=new FormData(m.currentTarget);if(!u.get("accept_terms")){r("error"),i(t.termsRequired);return}r("sending");try{const n=await fetch(P,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({email:String(u.get("email")||""),accept_terms:!0,website:String(u.get("website")||"")})});if(n.ok)r("done"),i(t.done);else{const c=await n.json().catch(()=>({}));r("error"),i(typeof c.error=="string"?c.error:t.error)}}catch{r("error"),i(t.error)}}return s==="done"?e.jsx("p",{role:"status",className:"text-cyan-200 text-sm font-medium max-w-sm",children:o}):e.jsxs("form",{onSubmit:l,className:"w-full max-w-sm space-y-3 text-left",noValidate:!1,children:[e.jsx("label",{className:"block text-xs uppercase tracking-wider text-secondary",htmlFor:`trial-email-${a}`,children:t.label}),e.jsx("input",{id:`trial-email-${a}`,name:"email",type:"email",required:!0,autoComplete:"email",placeholder:t.placeholder,className:"w-full rounded-lg bg-void/80 border border-cyan-300/30 px-4 py-3 text-primary placeholder:text-muted-foreground focus:outline-none focus:border-cyan-300"}),e.jsx("input",{type:"text",name:"website",tabIndex:-1,autoComplete:"off","aria-hidden":"true",className:"hidden"}),e.jsxs("label",{className:"flex items-start gap-2 text-xs text-secondary",children:[e.jsx("input",{type:"checkbox",name:"accept_terms",className:"mt-0.5 accent-cyan-400"}),e.jsxs("span",{children:[t.terms," ",e.jsx(g,{to:"/license",className:"text-cyan-300 hover:underline",children:t.termsLink})," ",t.termsTail]})]}),e.jsx("button",{type:"submit",disabled:s==="sending",className:"btn-cyan w-full py-3 font-bold disabled:opacity-60",children:s==="sending"?t.sending:t.submit}),s==="error"&&e.jsx("p",{role:"alert",className:"text-red-300 text-xs",children:o})]})}export{k as F,L as P,R as T,O as a}; diff --git a/assets/TrialForm-D2xU-ZBp.js b/assets/TrialForm-D2xU-ZBp.js deleted file mode 100644 index fcfa179a..00000000 --- a/assets/TrialForm-D2xU-ZBp.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e,r as v}from"./vendor-react-BiHfrq0e.js";import{L as x}from"./vendor-PiU4YGcH.js";import{P as p,T as P}from"./index-CpdATiEY.js";function k({name:a,price:t,period:s="",desc:r,features:i,excluded:o,featured:l=!1,showRibbon:m=!0,featuredLabel:c="Most Popular",accent:n="cyan",ctaLabel:u="Contact Sales",ctaHref:h="/contact",centered:f=!1,className:b=""}){const g=n==="gold"?"border-gold-400/30 neon-border-gold":"border-cyan-300/30 neon-border-cyan",q=n==="gold"?"text-gold-400":"text-cyan-300",j=n==="gold"?"bg-gold-400 text-void":"bg-cyan-300 text-void",E=n==="gold"?"btn-gold":"btn-cyan",w=/^https?:\/\//i.test(h),y=`block w-full text-center py-2.5 rounded-lg font-medium text-sm transition-all ${l?E:"btn-outline"}`;return e.jsxs("div",{className:`card-surface flex flex-col relative ${f?"text-center":""} ${l?g:""} ${b}`,children:[l&&m&&e.jsx("span",{className:`absolute -top-3 left-1/2 -translate-x-1/2 px-3 py-1 text-xs font-bold uppercase tracking-wider rounded-full ${j}`,children:c}),e.jsx("div",{className:"text-muted-foreground text-xs uppercase tracking-wider mb-2",children:a}),e.jsxs("div",{className:"text-primary font-bold text-3xl mb-1",children:[t,e.jsx("span",{className:"text-muted-foreground text-sm font-normal",children:s})]}),e.jsx("p",{className:"text-secondary text-sm mb-4",children:r}),i&&e.jsxs("ul",{className:"space-y-2 flex-1 mb-6",children:[i.map(d=>e.jsxs("li",{className:`flex items-start gap-2 text-sm text-secondary ${f?"text-left":""}`,children:[e.jsx("span",{className:`${q} mt-0.5`,"aria-hidden":"true",children:"✓"}),e.jsxs("span",{children:[e.jsx("span",{className:"sr-only",children:"Included: "}),d]})]},d)),o?.map(d=>e.jsxs("li",{className:`flex items-start gap-2 text-sm text-muted-foreground/70 ${f?"text-left":""}`,children:[e.jsx("span",{className:"text-muted-foreground/60 mt-0.5","aria-hidden":"true",children:"✓"}),e.jsxs("span",{children:[e.jsx("span",{className:"sr-only",children:"Not included: "}),d]})]},d))]}),w?e.jsx("a",{href:h,className:y,rel:"noopener",children:u}):e.jsx(x,{to:h,className:y,children:u})]})}const L=[{q:"How do I try QECTOR commercially before paying?",a:"Request the free 14-day commercial trial on this page: a Pro licence token arrives by e-mail within minutes, for up to 5 internal users. No card is needed and the token simply expires; there is nothing to cancel. One trial per e-mail address per year."},{q:"How is the licence delivered, and what does the token unlock?",a:'By e-mail within minutes of payment (check spam, then write to admin@qector.store with your Stripe receipt). Everyone installs the same wheel: pip install --upgrade "qector-decoder-v3>=1.0,<2". Set QECTOR_LICENSE_KEY and QECTOR_LICENSE to the token. Every paid plan unlocks GPU (CUDA/OpenCL) batch decoding; Lab and Enterprise also raise the code-distance tier to 63. CPU decoding is never blocked, and distance caps are only enforced if you set QECTOR_ENFORCE=1. The token is verified offline against a public key in the package: no licence server, works air-gapped.'},{q:"Do plans renew automatically, and how do I cancel?",a:"Yes. Pro (monthly or annual), Team and Lab renew automatically until cancelled, and you get a reminder e-mail 14 days before each annual renewal. Cancel any time from your Stripe receipt or by writing to admin@qector.store; your licence stays valid until the end of the paid period. Pro Perpetual and the Pilot are one-time payments and never renew."},{q:"What is your refund policy?",a:"14-day money-back guarantee on your first payment of any plan: write to admin@qector.store with your Stripe receipt and we refund it in full and revoke the token. Renewals are not refunded pro rata. Duplicate purchases and charges made in error are always refunded. If a token never arrives or fails to verify, we reissue it at no cost. This does not limit non-waivable statutory rights."},{q:"How many seats does each plan cover, and what counts as production?",a:"Pro: 1 named user. Team: up to 10. Lab: up to 25. Enterprise: unlimited. All paid plans grant production rights for internal use. The free trial and the 60-day Pilot are for evaluation (benchmarking, integration testing, threshold studies), not production. Pro Perpetual covers one named user for every 3.x release; a major version such as 4.0 is a new licence."},{q:"Is a hosted or customer-facing API covered?",a:"No. Pro, Team and Lab cover internal use on your own infrastructure. As soon as QECTOR sits behind an API, product or service that anyone outside your organisation can reach, that is SaaS or redistribution and needs an Enterprise/OEM agreement. Internal endpoints used only by your own staff are fine. Unsure? Describe the deployment to admin@qector.store."},{q:"Can I redistribute QECTOR inside my product?",a:"Only under an Enterprise/OEM agreement, which covers redistribution, SaaS hosting and hardware bundling. Write to admin@qector.store."},{q:"Do I need a licence for non-commercial research?",a:"No. Personal, academic and other non-commercial use is free under the PolyForm Noncommercial License 1.0.0. Industry-funded or contract research at a university is commercial; it gets 40% off Team and Lab with an institutional e-mail."},{q:"What currency are prices in, and is tax included?",a:"Prices are in US dollars and exclude tax. Applicable sales tax, GST/HST or VAT is calculated and added at checkout from your billing address. Businesses can enter a VAT/GST number at checkout."},{q:"Can we get a signed agreement, tax form or security questionnaire?",a:"Yes. For a signed PDF agreement, vendor profile, W-8BEN or equivalent, or a security questionnaire, write to admin@qector.store with your Stripe invoice number. Enterprise agreements are always signed contracts."}],O=[{q:"Comment essayer QECTOR commercialement avant de payer ?",a:"Demandez l’essai commercial gratuit de 14 jours sur cette page : un jeton de licence Pro arrive par courriel en quelques minutes, pour jusqu’à 5 utilisateurs internes. Aucune carte n’est requise et le jeton expire de lui-même : rien à annuler. Un essai par adresse courriel par année."},{q:"Comment la licence est-elle livrée, et que déverrouille le jeton ?",a:'Par courriel dans les minutes qui suivent le paiement (vérifiez le courrier indésirable, puis écrivez à admin@qector.store avec votre reçu Stripe). Tout le monde installe la même wheel : pip install --upgrade "qector-decoder-v3>=1.0,<2". Définissez QECTOR_LICENSE_KEY et QECTOR_LICENSE au jeton. Chaque forfait payant déverrouille le décodage GPU (CUDA/OpenCL) par lots; Labo et Entreprise portent aussi le palier de distance à 63. Le décodage CPU n’est jamais bloqué, et les plafonds de distance ne s’appliquent que si QECTOR_ENFORCE=1. Le jeton se vérifie hors ligne contre une clé publique incluse dans le paquet : aucun serveur de licence, fonctionne hors réseau.'},{q:"Les forfaits se renouvellent-ils automatiquement, et comment annuler ?",a:"Oui. Pro (mensuel ou annuel), Équipe et Labo se renouvellent automatiquement jusqu’à annulation, avec un courriel de rappel 14 jours avant chaque renouvellement annuel. Annulez en tout temps depuis votre reçu Stripe ou en écrivant à admin@qector.store; votre licence reste valide jusqu’à la fin de la période payée. Pro Perpétuel et le Pilote sont des paiements uniques et ne se renouvellent jamais."},{q:"Quelle est votre politique de remboursement ?",a:"Garantie satisfait ou remboursé de 14 jours sur votre premier paiement de tout forfait : écrivez à admin@qector.store avec votre reçu Stripe et nous remboursons en entier et révoquons le jeton. Les renouvellements ne sont pas remboursés au prorata. Les achats en double et les frais faits par erreur sont toujours remboursés. Si un jeton n’arrive pas ou ne se vérifie pas, nous le réémettons sans frais. Cela ne limite pas les droits légaux auxquels on ne peut renoncer."},{q:"Combien de sièges chaque forfait couvre-t-il, et qu’est-ce que la production ?",a:"Pro : 1 utilisateur nommé. Équipe : jusqu’à 10. Labo : jusqu’à 25. Entreprise : illimité. Tous les forfaits payants accordent des droits de production pour usage interne. L’essai gratuit et le Pilote de 60 jours servent à l’évaluation (benchmarks, tests d’intégration, études de seuil), pas à la production. Pro Perpétuel couvre un utilisateur nommé pour toutes les versions 3.x; une version majeure comme 4.0 est une nouvelle licence."},{q:"Une API hébergée ou offerte aux clients est-elle couverte ?",a:"Non. Pro, Équipe et Labo couvrent l’usage interne sur votre propre infrastructure. Dès que QECTOR se trouve derrière une API, un produit ou un service accessible hors de votre organisation, c’est du SaaS ou de la redistribution, ce qui exige un contrat Entreprise/OEM. Les points d’accès internes réservés à votre personnel sont couverts. En cas de doute, décrivez le déploiement à admin@qector.store."},{q:"Puis-je redistribuer QECTOR dans mon produit ?",a:"Seulement avec un contrat Entreprise/OEM, qui couvre la redistribution, l’hébergement SaaS et le regroupement matériel. Écrivez à admin@qector.store."},{q:"Ai-je besoin d’une licence pour la recherche non commerciale ?",a:"Non. L’usage personnel, académique et non commercial est gratuit sous la licence PolyForm Noncommercial 1.0.0. La recherche universitaire financée par l’industrie ou sous contrat est commerciale; elle obtient 40 % de rabais sur Équipe et Labo avec un courriel institutionnel."},{q:"En quelle devise sont les prix, et la taxe est-elle incluse ?",a:"Les prix sont en dollars américains, hors taxes. La taxe de vente, TPS/TVH ou TVA applicable est calculée et ajoutée au paiement selon votre adresse de facturation. Les entreprises peuvent saisir un numéro de TPS/TVA au paiement."},{q:"Pouvons-nous obtenir un contrat signé, un formulaire fiscal ou un questionnaire de sécurité ?",a:"Oui. Pour un contrat PDF signé, un profil de fournisseur, un W-8BEN ou équivalent, ou un questionnaire de sécurité, écrivez à admin@qector.store avec votre numéro de facture Stripe. Les contrats Entreprise sont toujours signés."}],T={en:{label:"Work e-mail",placeholder:"you@company.com",terms:"I accept the",termsLink:"licence terms",termsTail:`(${p.trialDays}-day commercial evaluation, internal use only).`,submit:`Start ${p.trialDays}-day trial`,sending:"Sending…",done:"Check your inbox: your trial token arrives within a few minutes.",error:"Something went wrong. Please retry, or email admin@qector.store.",termsRequired:"Please accept the licence terms."},fr:{label:"Courriel professionnel",placeholder:"vous@entreprise.com",terms:"J’accepte les",termsLink:"conditions de licence",termsTail:`(évaluation commerciale de ${p.trialDays} jours, usage interne seulement).`,submit:`Commencer l’essai de ${p.trialDays} jours`,sending:"Envoi…",done:"Vérifiez votre boîte de réception : votre jeton d’essai arrive d’ici quelques minutes.",error:"Une erreur est survenue. Réessayez ou écrivez à admin@qector.store.",termsRequired:"Veuillez accepter les conditions de licence."}};function R({lang:a="en"}){const t=T[a],[s,r]=v.useState("idle"),[i,o]=v.useState("");async function l(m){m.preventDefault();const c=new FormData(m.currentTarget);if(!c.get("accept_terms")){r("error"),o(t.termsRequired);return}r("sending");try{const n=await fetch(P,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({email:String(c.get("email")||""),accept_terms:!0,website:String(c.get("website")||"")})});if(n.ok)r("done"),o(t.done);else{const u=await n.json().catch(()=>({}));r("error"),o(typeof u.error=="string"?u.error:t.error)}}catch{r("error"),o(t.error)}}return s==="done"?e.jsx("p",{role:"status",className:"text-cyan-200 text-sm font-medium max-w-sm",children:i}):e.jsxs("form",{onSubmit:l,className:"w-full max-w-sm space-y-3 text-left",noValidate:!1,children:[e.jsx("label",{className:"block text-xs uppercase tracking-wider text-secondary",htmlFor:`trial-email-${a}`,children:t.label}),e.jsx("input",{id:`trial-email-${a}`,name:"email",type:"email",required:!0,autoComplete:"email",placeholder:t.placeholder,className:"w-full rounded-lg bg-void/80 border border-cyan-300/30 px-4 py-3 text-primary placeholder:text-muted-foreground focus:outline-none focus:border-cyan-300"}),e.jsx("input",{type:"text",name:"website",tabIndex:-1,autoComplete:"off","aria-hidden":"true",className:"hidden"}),e.jsxs("label",{className:"flex items-start gap-2 text-xs text-secondary",children:[e.jsx("input",{type:"checkbox",name:"accept_terms",className:"mt-0.5 accent-cyan-400"}),e.jsxs("span",{children:[t.terms," ",e.jsx(x,{to:"/license",className:"text-cyan-300 hover:underline",children:t.termsLink})," ",t.termsTail]})]}),e.jsx("button",{type:"submit",disabled:s==="sending",className:"btn-cyan w-full py-3 font-bold disabled:opacity-60",children:s==="sending"?t.sending:t.submit}),s==="error"&&e.jsx("p",{role:"alert",className:"text-red-300 text-xs",children:i})]})}export{L as F,k as P,R as T,O as a}; diff --git a/assets/UseCases-C79R3CZj.js b/assets/UseCases-C79R3CZj.js deleted file mode 100644 index c0c1d7bb..00000000 --- a/assets/UseCases-C79R3CZj.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as i,L as r}from"./index-CCmwjNGU.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const n=[{id:"hardware",who:"Quantum hardware teams",need:"You run memory experiments and need decoders that match your noise, scale to batch sizes and can run inside a locked-down lab network.",how:["Turn Stim circuits or measured detector error models into weighted decoders in one call.","Batch-decode on GPU (CUDA or OpenCL) with a Pro or Lab licence.","Licences verify offline, so decoding works on air-gapped control machines.","Compare matching, Union-Find and BP-OSD on the same detector graph before choosing one."],plan:"Pro or Lab"},{id:"qldpc",who:"qLDPC code researchers",need:"Your codes are not graph-like, so matching decoders do not apply, and you need to compare BP variants fairly.",how:["BP-OSD and Relay-BP with configurable OSD order and damping.","Built-in code families, including bivariate bicycle codes, as parity-check matrices.","Every correction is checked against its syndrome, so a decoder failure is never silent.","Sinter integration for threshold and logical-error-rate sweeps."],plan:"Free for non-commercial research; Lab for funded commercial work"},{id:"academic",who:"Universities and public labs",need:"You teach or research QEC and need a decoder library students can install in one command, without licence paperwork.",how:["Free under PolyForm Noncommercial for academic, educational and public research use, whatever the funding source.","Wheels for Python 3.9 to 3.14 on Linux, Windows and macOS: no compiler needed.","A free desktop Workbench for teaching without code.","40% off Lab when a paid plan is needed, for example to pass commercial rights to an industry partner."],plan:"Free, or Lab at 40% off"},{id:"claude",who:"Teams working with Claude",need:"You want an assistant that can build codes, decode syndromes and check results without sending data off the machine.",how:["The QECTOR Claude plugin exposes verified decoding tools to Claude Code and Claude Desktop.","The default server refuses network access and validates every message against JSON Schema.","Every result carries a status, so Claude never reports an unchecked result as verified."],plan:"Free plugin; the decoder licence follows your use"}];function l(){return e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Use Cases · QECTOR",description:"How quantum hardware teams, qLDPC researchers, universities and Claude users use QECTOR Decoder v3: weighted circuit decoding, GPU batches, BP-OSD for qLDPC, free academic use and offline licensing."}),e.jsxs("section",{className:"relative pt-32 pb-12 md:pt-36 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding max-w-3xl mx-auto",children:[e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.08] mb-6",children:"Use Cases"}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed",children:"What each kind of team gets from QECTOR, and which plan fits."}),e.jsx("nav",{"aria-label":"Use cases",className:"flex flex-wrap justify-center gap-2 mt-6",children:n.map(a=>e.jsx("a",{href:`#${a.id}`,className:"px-3 py-1.5 rounded-full border border-gridline text-sm text-secondary hover:text-cyan-300 hover:border-cyan-300/40",children:a.who},a.id))})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-8",children:[n.map(a=>e.jsxs("article",{id:a.id,className:"scroll-mt-28 bg-[#0b1329]/40 border border-slate-800/80 rounded-2xl p-6 md:p-8 grid md:grid-cols-[1fr_1.4fr] gap-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:a.who}),e.jsx("p",{className:"text-secondary leading-relaxed mb-4",children:a.need}),e.jsxs("p",{className:"text-sm",children:[e.jsx("span",{className:"text-muted-foreground",children:"Fits: "}),e.jsx("span",{className:"text-cyan-300 font-semibold",children:a.plan})]})]}),e.jsx("ul",{className:"space-y-3",children:a.how.map(s=>e.jsxs("li",{className:"flex gap-3 text-secondary text-sm leading-relaxed",children:[e.jsx("span",{className:"text-cyan-300 mt-0.5","aria-hidden":"true",children:"✓"}),e.jsx("span",{children:s})]},s))})]},a.id)),e.jsxs("div",{className:"flex flex-wrap justify-center gap-4 pt-4",children:[e.jsx(r,{to:"/getting-started",className:"btn-cyan",children:"Try it in 15 minutes"}),e.jsx(r,{to:"/pricing",className:"btn-outline",children:"Compare plans"})]})]})})]})}export{l as default}; diff --git a/assets/UseCases-DNGcu2gl.js b/assets/UseCases-DNGcu2gl.js deleted file mode 100644 index b4fd8f78..00000000 --- a/assets/UseCases-DNGcu2gl.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as i,L as r}from"./index-DayaklK-.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const n=[{id:"hardware",who:"Quantum hardware teams",need:"You run memory experiments and need decoders that match your noise, scale to batch sizes and can run inside a locked-down lab network.",how:["Turn Stim circuits or measured detector error models into weighted decoders in one call.","Batch-decode on GPU (CUDA or OpenCL) with a Pro or Lab licence.","Licences verify offline, so decoding works on air-gapped control machines.","Compare matching, Union-Find and BP-OSD on the same detector graph before choosing one."],plan:"Pro or Lab"},{id:"qldpc",who:"qLDPC code researchers",need:"Your codes are not graph-like, so matching decoders do not apply, and you need to compare BP variants fairly.",how:["BP-OSD and Relay-BP with configurable OSD order and damping.","Built-in code families, including bivariate bicycle codes, as parity-check matrices.","Every correction is checked against its syndrome, so a decoder failure is never silent.","Sinter integration for threshold and logical-error-rate sweeps."],plan:"Free for non-commercial research; Lab for funded commercial work"},{id:"academic",who:"Universities and public labs",need:"You teach or research QEC and need a decoder library students can install in one command, without licence paperwork.",how:["Free under PolyForm Noncommercial for academic, educational and public research use, whatever the funding source.","Wheels for Python 3.9 to 3.14 on Linux, Windows and macOS: no compiler needed.","A free desktop Workbench for teaching without code.","40% off Lab when a paid plan is needed, for example to pass commercial rights to an industry partner."],plan:"Free, or Lab at 40% off"},{id:"claude",who:"Teams working with Claude",need:"You want an assistant that can build codes, decode syndromes and check results without sending data off the machine.",how:["The QECTOR Claude plugin exposes verified decoding tools to Claude Code and Claude Desktop.","The default server refuses network access and validates every message against JSON Schema.","Every result carries a status, so Claude never reports an unchecked result as verified."],plan:"Free plugin; the decoder licence follows your use"}];function l(){return e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Use Cases · QECTOR",description:"How quantum hardware teams, qLDPC researchers, universities and Claude users use QECTOR Decoder v3: weighted circuit decoding, GPU batches, BP-OSD for qLDPC, free academic use and offline licensing."}),e.jsxs("section",{className:"relative pt-32 pb-12 md:pt-36 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding max-w-3xl mx-auto",children:[e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.08] mb-6",children:"Use Cases"}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed",children:"What each kind of team gets from QECTOR, and which plan fits."}),e.jsx("nav",{"aria-label":"Use cases",className:"flex flex-wrap justify-center gap-2 mt-6",children:n.map(a=>e.jsx("a",{href:`#${a.id}`,className:"px-3 py-1.5 rounded-full border border-gridline text-sm text-secondary hover:text-cyan-300 hover:border-cyan-300/40",children:a.who},a.id))})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-8",children:[n.map(a=>e.jsxs("article",{id:a.id,className:"scroll-mt-28 bg-[#0b1329]/40 border border-slate-800/80 rounded-2xl p-6 md:p-8 grid md:grid-cols-[1fr_1.4fr] gap-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:a.who}),e.jsx("p",{className:"text-secondary leading-relaxed mb-4",children:a.need}),e.jsxs("p",{className:"text-sm",children:[e.jsx("span",{className:"text-muted-foreground",children:"Fits: "}),e.jsx("span",{className:"text-cyan-300 font-semibold",children:a.plan})]})]}),e.jsx("ul",{className:"space-y-3",children:a.how.map(s=>e.jsxs("li",{className:"flex gap-3 text-secondary text-sm leading-relaxed",children:[e.jsx("span",{className:"text-cyan-300 mt-0.5","aria-hidden":"true",children:"✓"}),e.jsx("span",{children:s})]},s))})]},a.id)),e.jsxs("div",{className:"flex flex-wrap justify-center gap-4 pt-4",children:[e.jsx(r,{to:"/getting-started",className:"btn-cyan",children:"Try it in 15 minutes"}),e.jsx(r,{to:"/pricing",className:"btn-outline",children:"Compare plans"})]})]})})]})}export{l as default}; diff --git a/assets/UseCases-NQxQ23sn.js b/assets/UseCases-NQxQ23sn.js deleted file mode 100644 index 1854b86e..00000000 --- a/assets/UseCases-NQxQ23sn.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{S as i,L as r}from"./index-c1PDYu0j.js";import"./vendor-ui-B8TlNU4J.js";import"./vendor-gsap-a3sj5zmn.js";const n=[{id:"hardware",who:"Quantum hardware teams",need:"You run memory experiments and need decoders that match your noise, scale to batch sizes and can run inside a locked-down lab network.",how:["Turn Stim circuits or measured detector error models into weighted decoders in one call.","Batch-decode on GPU (CUDA or OpenCL) with a Pro or Lab licence.","Licences verify offline, so decoding works on air-gapped control machines.","Compare matching, Union-Find and BP-OSD on the same detector graph before choosing one."],plan:"Pro or Lab"},{id:"qldpc",who:"qLDPC code researchers",need:"Your codes are not graph-like, so matching decoders do not apply, and you need to compare BP variants fairly.",how:["BP-OSD and Relay-BP with configurable OSD order and damping.","Built-in code families, including bivariate bicycle codes, as parity-check matrices.","Every correction is checked against its syndrome, so a decoder failure is never silent.","Sinter integration for threshold and logical-error-rate sweeps."],plan:"Free for non-commercial research; Lab for funded commercial work"},{id:"academic",who:"Universities and public labs",need:"You teach or research QEC and need a decoder library students can install in one command, without licence paperwork.",how:["Free under PolyForm Noncommercial for academic, educational and public research use, whatever the funding source.","Wheels for Python 3.9 to 3.14 on Linux, Windows and macOS: no compiler needed.","A free desktop Workbench for teaching without code.","40% off Lab when a paid plan is needed, for example to pass commercial rights to an industry partner."],plan:"Free, or Lab at 40% off"},{id:"claude",who:"Teams working with Claude",need:"You want an assistant that can build codes, decode syndromes and check results without sending data off the machine.",how:["The QECTOR Claude plugin exposes verified decoding tools to Claude Code and Claude Desktop.","The default server refuses network access and validates every message against JSON Schema.","Every result carries a status, so Claude never reports an unchecked result as verified."],plan:"Free plugin; the decoder licence follows your use"}];function l(){return e.jsxs(e.Fragment,{children:[e.jsx(i,{title:"Use Cases · QECTOR",description:"How quantum hardware teams, qLDPC researchers, universities and Claude users use QECTOR Decoder v3: weighted circuit decoding, GPU batches, BP-OSD for qLDPC, free academic use and offline licensing."}),e.jsxs("section",{className:"relative pt-32 pb-12 md:pt-36 text-center overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 via-surface/30 to-void"}),e.jsxs("div",{className:"relative z-10 section-padding max-w-3xl mx-auto",children:[e.jsx("h1",{className:"text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.08] mb-6",children:"Use Cases"}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed",children:"What each kind of team gets from QECTOR, and which plan fits."}),e.jsx("nav",{"aria-label":"Use cases",className:"flex flex-wrap justify-center gap-2 mt-6",children:n.map(a=>e.jsx("a",{href:`#${a.id}`,className:"px-3 py-1.5 rounded-full border border-gridline text-sm text-secondary hover:text-cyan-300 hover:border-cyan-300/40",children:a.who},a.id))})]})]}),e.jsx("section",{className:"section-padding pb-24",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-8",children:[n.map(a=>e.jsxs("article",{id:a.id,className:"scroll-mt-28 bg-[#0b1329]/40 border border-slate-800/80 rounded-2xl p-6 md:p-8 grid md:grid-cols-[1fr_1.4fr] gap-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:a.who}),e.jsx("p",{className:"text-secondary leading-relaxed mb-4",children:a.need}),e.jsxs("p",{className:"text-sm",children:[e.jsx("span",{className:"text-muted-foreground",children:"Fits: "}),e.jsx("span",{className:"text-cyan-300 font-semibold",children:a.plan})]})]}),e.jsx("ul",{className:"space-y-3",children:a.how.map(s=>e.jsxs("li",{className:"flex gap-3 text-secondary text-sm leading-relaxed",children:[e.jsx("span",{className:"text-cyan-300 mt-0.5","aria-hidden":"true",children:"✓"}),e.jsx("span",{children:s})]},s))})]},a.id)),e.jsxs("div",{className:"flex flex-wrap justify-center gap-4 pt-4",children:[e.jsx(r,{to:"/getting-started",className:"btn-cyan",children:"Try it in 15 minutes"}),e.jsx(r,{to:"/pricing",className:"btn-outline",children:"Compare plans"})]})]})})]})}export{l as default}; diff --git a/assets/Workbench-8mJsB15A.js b/assets/Workbench-8mJsB15A.js deleted file mode 100644 index cbd66ebf..00000000 --- a/assets/Workbench-8mJsB15A.js +++ /dev/null @@ -1 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,A as u,Q as b,E as f}from"./index-CpdATiEY.js";import{N as g}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as y}from"./vendor-gsap-a3sj5zmn.js";import{W as o}from"./releases-DiQz_IDu.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";c.registerPlugin(y);const[a,r]=o;function _(){const l=x.useRef([]);x.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=c.context(()=>{l.current.filter(Boolean).forEach(n=>{c.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const t=(s,n)=>{s&&(l.current[n]=s)},m=[{kind:"union_find",type:"Graphlike",desc:"Fast approximate Union-Find decoding; higher LER than exact MWPM."},{kind:"fast_union_find",type:"Graphlike",desc:"Optimized Union-Find hot path; approximate."},{kind:"blossom",type:"Universal",desc:"Weight-optimal exact minimum-weight perfect matching (Edmonds' Blossom)."},{kind:"sparse_blossom",type:"Graphlike",desc:"Event-driven Sparse Blossom with radix-heap region growth (experimental)."},{kind:"bp_osd",type:"Universal / qLDPC",desc:"Belief propagation + ordered-statistics decoding for LDPC / qLDPC codes."},{kind:"auto",type:"Graphlike",desc:"Self-selecting AutoDecoder: picks the best available decoder for the code."},{kind:"hybrid",type:"Graphlike",desc:"Combines a fast heuristic pass with exact matching."},{kind:"lookup_table",type:"Small (<20 checks)",desc:"Precomputed syndrome-to-correction table with O(1) lookup."},{kind:"predecoded",type:"Graphlike",desc:"Fast pre-decoding pass that resolves easy/low-weight syndromes."},{kind:"auto_router",type:"Universal",desc:"Policy decoder: inspects the code and dispatches the best concrete decoder."},{kind:"hybrid_cascade",type:"Graphlike",desc:"Union-Find pre-filter escalating to Blossom/BP-OSD."},{kind:"gnn_belief_matching",type:"Graphlike",desc:"GNN-predicted per-qubit weights guide edge-weighted matching with fallback."},{kind:"belief_matching",type:"Universal",desc:"Sum-product BP posteriors reweight an exact Blossom matching."},{kind:"two_stage",type:"Graphlike",desc:"Decoupled X/Z sector decoders for CSS / colour codes."},{kind:"ambiguity_cluster",type:"Graphlike",desc:"Cluster-growth decoder for high noise or non-graphlike codes."},{kind:"colour_code",type:"Universal / qLDPC",desc:"BP-OSD hypergraph decoder over undecomposed detector error models."},{kind:"space_time",type:"Universal",desc:"Space-time decoder for multi-round decoding (experimental)."},{kind:"spacetime_mwpm",type:"Multi-round",desc:"Space-time MWPM for phenomenological & circuit-level decoding."},{kind:"soft_llr",type:"Soft-decision",desc:"Log-likelihood-ratio-weighted decoding."}],h=[{name:"repetition",params:"distance (int)",desc:"1D chain parity-check code."},{name:"ring",params:"distance (int)",desc:"Periodic 1D chain."},{name:"rotated_surface",params:"distance (int)",desc:"Standard rotated surface code."},{name:"unrotated_surface",params:"distance (int)",desc:"Square lattice surface code."},{name:"toric",params:"distance (int)",desc:"Toric code with periodic boundaries."},{name:"heavy_hex",params:"distance (int)",desc:"Heavy-hex lattice."},{name:"hypergraph_product",params:"distance (int)",desc:"CSS code from repetition seed."},{name:"bicycle",params:"circulant size (int)",desc:"qLDPC bicycle code."},{name:"bivariate_bicycle",params:"preset index (int)",desc:"Bivariate bicycle presets (qLDPC)."},{name:"color_code",params:"triangular size (int)",desc:"Triangular & 2D 4.8.8 colour codes."}],d=["Code Explorer","Decoder Lab","Benchmark","Batch & Streaming","Hardware","Diagnostics","Documentation","Lab & Personal Info","Console"];return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"QECTOR Workbench - Windows v1.0.7 and Linux v1.0.7",description:`QECTOR Workbench desktop GUI and MCP releases: ${a.label} ${a.version} (${a.arch}) with ${a.mcpTools} tools and a ${a.backendVersion} backend, ${r.label} ${r.version} with ${r.mcpTools} tools.`}),e.jsxs("div",{className:"bg-emerald-950/50 border-b border-emerald-500/30 py-2.5 text-center text-sm px-4",children:[e.jsx("span",{className:"text-emerald-400 font-semibold",children:"Free Desktop Application:"})," ",o.map((s,n)=>e.jsxs("span",{children:[e.jsxs("a",{href:s.releaseUrl,className:"underline hover:text-emerald-300 transition-colors",target:"_blank",rel:"noopener noreferrer",children:[s.label," ",s.version," · published ",s.releaseDate," · ",s.mcpTools," MCP tools"]}),nt(s,0),className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"v1.0.7 ×2",label:"Live releases (Win / Linux)"},{value:`${a.mcpTools}`,label:`MCP tools per ${a.label} release`},{value:"19",label:"Named kinds (17 + 2 routing)"},{value:"10",label:"Quantum Code Families"}].map(s=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-3xl mb-1",children:s.value}),e.jsx("div",{className:"text-secondary text-sm",children:s.label})]},s.label))}),e.jsxs("div",{ref:s=>t(s,1),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"Inside the Workbench"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Nine workspaces are documented for the live v1.0.7 (Windows/Linux) releases:"," ",d.map((s,n)=>e.jsxs("span",{children:[e.jsx("span",{className:"text-primary font-medium",children:s}),ne.jsxs("div",{className:"bg-void border border-gridline rounded-xl p-5",children:[e.jsx("span",{className:"text-cyan-300 font-semibold text-sm block mb-2",children:s}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Explore this workspace with the release documentation and inspect results on your own machine. No hardware-specific run data is published here."})]},s))})]}),e.jsxs("div",{ref:s=>t(s,2),className:"card-surface space-y-5",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Downloads"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-5",children:[e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Windows x64 · ",a.version]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Portable single executable and release ZIP. No installer required, no admin rights. The app makes no online update checks."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",a.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:a.artifact}),", then launch directly."]}),e.jsxs("li",{children:["Headless MCP server: ",e.jsx("code",{className:"text-cyan-300",children:"QectorWorkbench-Portable.exe --mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"%LOCALAPPDATA%\\QectorWorkbench"})]}),e.jsxs("li",{children:["Exe SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:a.artifactSha256})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:a.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Windows Portable (.exe)"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-windows/releases/download/v1.0.7/QectorWorkbench-v1.0.7-Windows-x64-Public.zip",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Full ZIP Archive"}),e.jsx("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Linux x64 · ",r.version]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed",children:["Published ",r.version," portable ELF executable and Debian (.deb) package with bundled qector-decoder-v3 ",r.backendVersion," backend and ",r.mcpTools,"-tool MCP server."]}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",r.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:r.artifact})," or the Debian package."]}),e.jsxs("li",{children:["Headless MCP server: append ",e.jsx("code",{className:"text-cyan-300",children:"--mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"~/.local/share/QectorWorkbench"})]}),e.jsxs("li",{children:["Portable SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:r.artifactSha256})]}),e.jsxs("li",{children:["Debian SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:"5221dc9557319f2c55e6048ab30eb4a080d603abc9bab3d2b4cde01ef5b8aa45"})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:r.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Linux Portable"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-linux/releases/download/v1.0.7/qector-workbench_1.0.7_amd64.deb",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Debian Package (.deb)"}),e.jsx("a",{href:r.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3 opacity-60",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-base",children:"macOS arm64 - not ready yet"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Apple silicon build requires a build on Apple hardware and is not included until that build is produced and signed."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsx("li",{children:"Requires Apple hardware build - coming soon"}),e.jsx("li",{children:"No artifact yet - check back for macOS release"}),e.jsx("li",{children:"Windows and Linux v1.0.7 are live with 19 decoders"})]}),e.jsx("span",{className:"text-muted-foreground text-xs",children:"Not available yet"})]})]}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl text-xs text-secondary leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Verify your download:"})," SHA-256 checksums and GPG signature files (.asc) for every file are published in the release notes. Override the runtime data directory with ",e.jsx("code",{className:"text-cyan-300",children:"QECTOR_DATA_DIR"}),"."]})]}),e.jsxs("div",{ref:s=>t(s,3),className:"card-surface space-y-6",children:[e.jsxs("div",{className:"flex flex-col md:flex-row md:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Integrated Decoders"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"All 19 named kinds (17 concrete configurations plus AutoDecoder and Auto Router) are exposed through the Workbench MCP server. No benchmark figures are published on the site: run the included harness to measure your own hardware."})]}),e.jsxs("span",{className:"text-xs px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 text-cyan-300 rounded-full font-mono",children:["Windows & Linux backend qector_decoder_v3 ",a.backendVersion]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground leading-relaxed",children:["Each v1.0.7 release (Windows/Linux) declares ",e.jsx("strong",{className:"text-secondary",children:"19 named kinds: 17 concrete configurations plus 2 orchestration entries"})," against its bundled qector_decoder_v3 ",a.backendVersion," backend. Consult each release's included manuals for platform-specific coverage."]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"Decoder Kind"}),e.jsx("th",{className:"py-3 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-3 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:m.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3 font-mono font-semibold text-primary",children:s.kind}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.desc})]},s.kind))})]})})]}),e.jsxs("div",{ref:s=>t(s,4),children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"10 Supported Code Families"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["The published releases cover ",e.jsx("strong",{className:"text-primary",children:"10 code families"}),", including qLDPC and colour codes."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:h.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl space-y-2",children:[e.jsx("span",{className:"font-mono text-cyan-300 font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground font-mono",children:["Param: ",s.params]}),e.jsx("p",{className:"text-xs text-secondary",children:s.desc})]},s.name))})]}),e.jsxs("div",{ref:s=>t(s,5),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-6",children:"Workbench Components"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"Desktop GUI",desc:"CustomTkinter desktop UI for Windows and Linux. Visual circuit builder, syndrome viewer, decoder performance dashboard, and a distance slider covering d3-d63 on supported families."},{name:"MCP Tools",desc:"Native Model Context Protocol server over stdio JSON-RPC 2.0, launched with --mcp and usable headlessly with no display. Connects AI agents directly to decoder execution and diagnostics."},{name:"Self-Contained",desc:"Bundles its own Python runtime, the scientific stack, and the qector_decoder_v3 1.0.0 wheel. No system Python or pip required; the app makes no online update checks."},{name:"Self / Auto-Debug Layer",desc:"Verifies H·c == s on every decode with a full attempt trace, and falls back across decoders automatically when a decoder fails to produce a faithful correction."},{name:"Hardware Dashboard",desc:"Auto-detects CUDA, OpenCL, and CPU backends, and reports OpenCL absence honestly: it names why a backend is unavailable rather than printing a bare N/A."},{name:"Lab & Personal Info",desc:"Deposit profile (author, ORCID, affiliation, DOI, funding, keywords) for generated reports, plus decoder license-key installation with a live tier readout."},{name:"Documentation Export",desc:"Export documentation and evidence in the formats supported by the selected release, with optional .zenodo.json and CITATION.cff deposit sidecars."},{name:"Bundled Manuals & EULA",desc:"Each release ships an API Reference, MCP Integration Guide, Quick Start Guide, a per-OS User Manual, a machine-readable LLM manual, and EULA.txt, with SHA-256 checksums for every file."}].map(s=>e.jsx(u,{title:s.name,desc:s.desc},s.name))})]}),e.jsxs("div",{ref:s=>t(s,6),className:"space-y-6",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold",children:"Decoder Sandbox"}),e.jsx("p",{className:"text-secondary text-sm",children:"Below is an interactive sandbox replicating the basic topological planar code matching module inside QECTOR Workbench. Click to inject errors and inspect Blossom correction paths in real time."}),e.jsx(b,{})]}),e.jsxs("div",{ref:s=>t(s,7),children:[e.jsx(f,{title:"Documentation & Reference",statement:"QECTOR Workbench documentation is published alongside each app release. The Windows v1.0.7 and Linux v1.0.7 builds ship per-OS manuals and SHA-256 checksums; use the release-specific manuals for your platform."}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 mt-4",children:[e.jsxs("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Manuals & EULA"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"GitHub Releases"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"API Reference, MCP guide, Quick Start, per-OS manual"})]}),e.jsxs(i,{to:"/evidence",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Validation & Evidence"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/evidence"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Validation reports and SHA-256 sealed artifact manifests"})]}),e.jsxs(i,{to:"/technical-reference",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Architecture Whitepaper"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/technical-reference"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Technical specification & design"})]})]})]}),e.jsx("div",{className:"text-center pt-4",children:e.jsx(i,{to:"/contact",className:"btn-cyan",children:"Contact for Technical Support"})})]})})]})}export{_ as default}; diff --git a/assets/Workbench-B-dk2nMz.js b/assets/Workbench-B-dk2nMz.js deleted file mode 100644 index 6f5718bb..00000000 --- a/assets/Workbench-B-dk2nMz.js +++ /dev/null @@ -1 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,A as u,Q as b,E as f}from"./index-abfjMTlQ.js";import{N as g}from"./NeuralReveal-D-EQoOl2.js";import{g as c,S as y}from"./vendor-gsap-a3sj5zmn.js";import{W as o}from"./releases-1-HBloZv.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";c.registerPlugin(y);const[a,r]=o;function _(){const l=x.useRef([]);x.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=c.context(()=>{l.current.filter(Boolean).forEach(n=>{c.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const t=(s,n)=>{s&&(l.current[n]=s)},m=[{kind:"union_find",type:"Graphlike",desc:"Fast approximate Union-Find decoding; higher LER than exact MWPM."},{kind:"fast_union_find",type:"Graphlike",desc:"Optimized Union-Find hot path; approximate."},{kind:"blossom",type:"Universal",desc:"Weight-optimal exact minimum-weight perfect matching (Edmonds' Blossom)."},{kind:"sparse_blossom",type:"Graphlike",desc:"Event-driven Sparse Blossom with radix-heap region growth (experimental)."},{kind:"bp_osd",type:"Universal / qLDPC",desc:"Belief propagation + ordered-statistics decoding for LDPC / qLDPC codes."},{kind:"auto",type:"Graphlike",desc:"Self-selecting AutoDecoder: picks the best available decoder for the code."},{kind:"hybrid",type:"Graphlike",desc:"Combines a fast heuristic pass with exact matching."},{kind:"lookup_table",type:"Small (<20 checks)",desc:"Precomputed syndrome-to-correction table with O(1) lookup."},{kind:"predecoded",type:"Graphlike",desc:"Fast pre-decoding pass that resolves easy/low-weight syndromes."},{kind:"auto_router",type:"Universal",desc:"Policy decoder: inspects the code and dispatches the best concrete decoder."},{kind:"hybrid_cascade",type:"Graphlike",desc:"Union-Find pre-filter escalating to Blossom/BP-OSD."},{kind:"gnn_belief_matching",type:"Graphlike",desc:"GNN-predicted per-qubit weights guide edge-weighted matching with fallback."},{kind:"belief_matching",type:"Universal",desc:"Sum-product BP posteriors reweight an exact Blossom matching."},{kind:"two_stage",type:"Graphlike",desc:"Decoupled X/Z sector decoders for CSS / colour codes."},{kind:"ambiguity_cluster",type:"Graphlike",desc:"Cluster-growth decoder for high noise or non-graphlike codes."},{kind:"colour_code",type:"Universal / qLDPC",desc:"BP-OSD hypergraph decoder over undecomposed detector error models."},{kind:"space_time",type:"Universal",desc:"Space-time decoder for multi-round decoding (experimental)."},{kind:"spacetime_mwpm",type:"Multi-round",desc:"Space-time MWPM for phenomenological & circuit-level decoding."},{kind:"soft_llr",type:"Soft-decision",desc:"Log-likelihood-ratio-weighted decoding."}],h=[{name:"repetition",params:"distance (int)",desc:"1D chain parity-check code."},{name:"ring",params:"distance (int)",desc:"Periodic 1D chain."},{name:"rotated_surface",params:"distance (int)",desc:"Standard rotated surface code."},{name:"unrotated_surface",params:"distance (int)",desc:"Square lattice surface code."},{name:"toric",params:"distance (int)",desc:"Toric code with periodic boundaries."},{name:"heavy_hex",params:"distance (int)",desc:"Heavy-hex lattice."},{name:"hypergraph_product",params:"distance (int)",desc:"CSS code from repetition seed."},{name:"bicycle",params:"circulant size (int)",desc:"qLDPC bicycle code."},{name:"bivariate_bicycle",params:"preset index (int)",desc:"Bivariate bicycle presets (qLDPC)."},{name:"color_code",params:"triangular size (int)",desc:"Triangular & 2D 4.8.8 colour codes."}],d=["Code Explorer","Decoder Lab","Benchmark","Batch & Streaming","Hardware","Diagnostics","Documentation","Lab & Personal Info","Console"];return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"QECTOR Workbench - Windows v1.0.7 and Linux v1.0.7",description:`QECTOR Workbench desktop GUI and MCP releases: ${a.label} ${a.version} (${a.arch}) with ${a.mcpTools} tools and a ${a.backendVersion} backend, ${r.label} ${r.version} with ${r.mcpTools} tools.`}),e.jsxs("div",{className:"bg-emerald-950/50 border-b border-emerald-500/30 py-2.5 text-center text-sm px-4",children:[e.jsx("span",{className:"text-emerald-400 font-semibold",children:"Free Desktop Application:"})," ",o.map((s,n)=>e.jsxs("span",{children:[e.jsxs("a",{href:s.releaseUrl,className:"underline hover:text-emerald-300 transition-colors",target:"_blank",rel:"noopener noreferrer",children:[s.label," ",s.version," · published ",s.releaseDate," · ",s.mcpTools," MCP tools"]}),nt(s,0),className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"v1.0.7 ×2",label:"Live releases (Win / Linux)"},{value:`${a.mcpTools}`,label:`MCP tools per ${a.label} release`},{value:"19",label:"Named kinds (17 + 2 routing)"},{value:"10",label:"Quantum Code Families"}].map(s=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-3xl mb-1",children:s.value}),e.jsx("div",{className:"text-secondary text-sm",children:s.label})]},s.label))}),e.jsxs("div",{ref:s=>t(s,1),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"Inside the Workbench"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Nine workspaces are documented for the live v1.0.7 (Windows/Linux) releases:"," ",d.map((s,n)=>e.jsxs("span",{children:[e.jsx("span",{className:"text-primary font-medium",children:s}),ne.jsxs("div",{className:"bg-void border border-gridline rounded-xl p-5",children:[e.jsx("span",{className:"text-cyan-300 font-semibold text-sm block mb-2",children:s}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Explore this workspace with the release documentation and inspect results on your own machine. No hardware-specific run data is published here."})]},s))})]}),e.jsxs("div",{ref:s=>t(s,2),className:"card-surface space-y-5",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Downloads"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-5",children:[e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Windows x64 · ",a.version]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Portable single executable and release ZIP. No installer required, no admin rights. The app makes no online update checks."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",a.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:a.artifact}),", then launch directly."]}),e.jsxs("li",{children:["Headless MCP server: ",e.jsx("code",{className:"text-cyan-300",children:"QectorWorkbench-Portable.exe --mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"%LOCALAPPDATA%\\QectorWorkbench"})]}),e.jsxs("li",{children:["Exe SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:a.artifactSha256})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:a.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Windows Portable (.exe)"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-windows/releases/download/v1.0.7/QectorWorkbench-v1.0.7-Windows-x64-Public.zip",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Full ZIP Archive"}),e.jsx("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Linux x64 · ",r.version]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed",children:["Published ",r.version," portable ELF executable and Debian (.deb) package with bundled qector-decoder-v3 ",r.backendVersion," backend and ",r.mcpTools,"-tool MCP server."]}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",r.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:r.artifact})," or the Debian package."]}),e.jsxs("li",{children:["Headless MCP server: append ",e.jsx("code",{className:"text-cyan-300",children:"--mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"~/.local/share/QectorWorkbench"})]}),e.jsxs("li",{children:["Portable SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:r.artifactSha256})]}),e.jsxs("li",{children:["Debian SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:"5221dc9557319f2c55e6048ab30eb4a080d603abc9bab3d2b4cde01ef5b8aa45"})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:r.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Linux Portable"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-linux/releases/download/v1.0.7/qector-workbench_1.0.7_amd64.deb",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Debian Package (.deb)"}),e.jsx("a",{href:r.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3 opacity-60",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-base",children:"macOS arm64 - not ready yet"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Apple silicon build requires a build on Apple hardware and is not included until that build is produced and signed."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsx("li",{children:"Requires Apple hardware build - coming soon"}),e.jsx("li",{children:"No artifact yet - check back for macOS release"}),e.jsx("li",{children:"Windows and Linux v1.0.7 are live with 19 decoders"})]}),e.jsx("span",{className:"text-muted-foreground text-xs",children:"Not available yet"})]})]}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl text-xs text-secondary leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Verify your download:"})," SHA-256 checksums and GPG signature files (.asc) for every file are published in the release notes. Override the runtime data directory with ",e.jsx("code",{className:"text-cyan-300",children:"QECTOR_DATA_DIR"}),"."]})]}),e.jsxs("div",{ref:s=>t(s,3),className:"card-surface space-y-6",children:[e.jsxs("div",{className:"flex flex-col md:flex-row md:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Integrated Decoders"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"All 19 named kinds (17 concrete configurations plus AutoDecoder and Auto Router) are exposed through the Workbench MCP server. No benchmark figures are published on the site: run the included harness to measure your own hardware."})]}),e.jsxs("span",{className:"text-xs px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 text-cyan-300 rounded-full font-mono",children:["Windows & Linux backend qector_decoder_v3 ",a.backendVersion]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground leading-relaxed",children:["Each v1.0.7 release (Windows/Linux) declares ",e.jsx("strong",{className:"text-secondary",children:"19 named kinds: 17 concrete configurations plus 2 orchestration entries"})," against its bundled qector_decoder_v3 ",a.backendVersion," backend. Consult each release's included manuals for platform-specific coverage."]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"Decoder Kind"}),e.jsx("th",{className:"py-3 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-3 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:m.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3 font-mono font-semibold text-primary",children:s.kind}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.desc})]},s.kind))})]})})]}),e.jsxs("div",{ref:s=>t(s,4),children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"10 Supported Code Families"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["The published releases cover ",e.jsx("strong",{className:"text-primary",children:"10 code families"}),", including qLDPC and colour codes."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:h.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl space-y-2",children:[e.jsx("span",{className:"font-mono text-cyan-300 font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground font-mono",children:["Param: ",s.params]}),e.jsx("p",{className:"text-xs text-secondary",children:s.desc})]},s.name))})]}),e.jsxs("div",{ref:s=>t(s,5),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-6",children:"Workbench Components"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"Desktop GUI",desc:"CustomTkinter desktop UI for Windows and Linux. Visual circuit builder, syndrome viewer, decoder performance dashboard, and a distance slider covering d3-d63 on supported families."},{name:"MCP Tools",desc:"Native Model Context Protocol server over stdio JSON-RPC 2.0, launched with --mcp and usable headlessly with no display. Connects AI agents directly to decoder execution and diagnostics."},{name:"Self-Contained",desc:"Bundles its own Python runtime, the scientific stack, and the qector_decoder_v3 1.0.0 wheel. No system Python or pip required; the app makes no online update checks."},{name:"Self / Auto-Debug Layer",desc:"Verifies H·c == s on every decode with a full attempt trace, and falls back across decoders automatically when a decoder fails to produce a faithful correction."},{name:"Hardware Dashboard",desc:"Auto-detects CUDA, OpenCL, and CPU backends, and reports OpenCL absence honestly: it names why a backend is unavailable rather than printing a bare N/A."},{name:"Lab & Personal Info",desc:"Deposit profile (author, ORCID, affiliation, DOI, funding, keywords) for generated reports, plus decoder license-key installation with a live tier readout."},{name:"Documentation Export",desc:"Export documentation and evidence in the formats supported by the selected release, with optional .zenodo.json and CITATION.cff deposit sidecars."},{name:"Bundled Manuals & EULA",desc:"Each release ships an API Reference, MCP Integration Guide, Quick Start Guide, a per-OS User Manual, a machine-readable LLM manual, and EULA.txt, with SHA-256 checksums for every file."}].map(s=>e.jsx(u,{title:s.name,desc:s.desc},s.name))})]}),e.jsxs("div",{ref:s=>t(s,6),className:"space-y-6",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold",children:"Decoder Sandbox"}),e.jsx("p",{className:"text-secondary text-sm",children:"Below is an interactive sandbox replicating the basic topological planar code matching module inside QECTOR Workbench. Click to inject errors and inspect Blossom correction paths in real time."}),e.jsx(b,{})]}),e.jsxs("div",{ref:s=>t(s,7),children:[e.jsx(f,{title:"Documentation & Reference",statement:"QECTOR Workbench documentation is published alongside each app release. The Windows v1.0.7 and Linux v1.0.7 builds ship per-OS manuals and SHA-256 checksums; use the release-specific manuals for your platform."}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 mt-4",children:[e.jsxs("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Manuals & EULA"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"GitHub Releases"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"API Reference, MCP guide, Quick Start, per-OS manual"})]}),e.jsxs(i,{to:"/evidence",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Validation & Evidence"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/evidence"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Validation reports and SHA-256 sealed artifact manifests"})]}),e.jsxs(i,{to:"/technical-reference",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Architecture Whitepaper"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/technical-reference"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Technical specification & design"})]})]})]}),e.jsx("div",{className:"text-center pt-4",children:e.jsx(i,{to:"/contact",className:"btn-cyan",children:"Contact for Technical Support"})})]})})]})}export{_ as default}; diff --git a/assets/Workbench-BFjOjf90.js b/assets/Workbench-BFjOjf90.js deleted file mode 100644 index d40c00e9..00000000 --- a/assets/Workbench-BFjOjf90.js +++ /dev/null @@ -1 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,L as i,A as u,Q as b,E as f}from"./index-DayaklK-.js";import{N as g}from"./NeuralReveal-uYarhiMA.js";import{g as c,S as y}from"./vendor-gsap-a3sj5zmn.js";import{W as o}from"./releases--9GgxpSb.js";import"./vendor-ui-B8TlNU4J.js";c.registerPlugin(y);const[a,r]=o;function C(){const l=x.useRef([]);x.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=c.context(()=>{l.current.filter(Boolean).forEach(n=>{c.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const t=(s,n)=>{s&&(l.current[n]=s)},m=[{kind:"union_find",type:"Graphlike",desc:"Fast approximate Union-Find decoding; higher LER than exact MWPM."},{kind:"fast_union_find",type:"Graphlike",desc:"Optimized Union-Find hot path; approximate."},{kind:"blossom",type:"Universal",desc:"Weight-optimal exact minimum-weight perfect matching (Edmonds' Blossom)."},{kind:"sparse_blossom",type:"Graphlike",desc:"Event-driven Sparse Blossom with radix-heap region growth (experimental)."},{kind:"bp_osd",type:"Universal / qLDPC",desc:"Belief propagation + ordered-statistics decoding for LDPC / qLDPC codes."},{kind:"auto",type:"Graphlike",desc:"Self-selecting AutoDecoder: picks the best available decoder for the code."},{kind:"hybrid",type:"Graphlike",desc:"Combines a fast heuristic pass with exact matching."},{kind:"lookup_table",type:"Small (<20 checks)",desc:"Precomputed syndrome-to-correction table with O(1) lookup."},{kind:"predecoded",type:"Graphlike",desc:"Fast pre-decoding pass that resolves easy/low-weight syndromes."},{kind:"auto_router",type:"Universal",desc:"Policy decoder: inspects the code and dispatches the best concrete decoder."},{kind:"hybrid_cascade",type:"Graphlike",desc:"Union-Find pre-filter escalating to Blossom/BP-OSD."},{kind:"gnn_belief_matching",type:"Graphlike",desc:"GNN-predicted per-qubit weights guide edge-weighted matching with fallback."},{kind:"belief_matching",type:"Universal",desc:"Sum-product BP posteriors reweight an exact Blossom matching."},{kind:"two_stage",type:"Graphlike",desc:"Decoupled X/Z sector decoders for CSS / colour codes."},{kind:"ambiguity_cluster",type:"Graphlike",desc:"Cluster-growth decoder for high noise or non-graphlike codes."},{kind:"colour_code",type:"Universal / qLDPC",desc:"BP-OSD hypergraph decoder over undecomposed detector error models."},{kind:"space_time",type:"Universal",desc:"Space-time decoder for multi-round decoding (experimental)."},{kind:"spacetime_mwpm",type:"Multi-round",desc:"Space-time MWPM for phenomenological & circuit-level decoding."},{kind:"soft_llr",type:"Soft-decision",desc:"Log-likelihood-ratio-weighted decoding."}],h=[{name:"repetition",params:"distance (int)",desc:"1D chain parity-check code."},{name:"ring",params:"distance (int)",desc:"Periodic 1D chain."},{name:"rotated_surface",params:"distance (int)",desc:"Standard rotated surface code."},{name:"unrotated_surface",params:"distance (int)",desc:"Square lattice surface code."},{name:"toric",params:"distance (int)",desc:"Toric code with periodic boundaries."},{name:"heavy_hex",params:"distance (int)",desc:"Heavy-hex lattice."},{name:"hypergraph_product",params:"distance (int)",desc:"CSS code from repetition seed."},{name:"bicycle",params:"circulant size (int)",desc:"qLDPC bicycle code."},{name:"bivariate_bicycle",params:"preset index (int)",desc:"Bivariate bicycle presets (qLDPC)."},{name:"color_code",params:"triangular size (int)",desc:"Triangular & 2D 4.8.8 colour codes."}],d=["Code Explorer","Decoder Lab","Benchmark","Batch & Streaming","Hardware","Diagnostics","Documentation","Lab & Personal Info","Console"];return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"QECTOR Workbench - Windows v1.0.7 and Linux v1.0.7",description:`QECTOR Workbench desktop GUI and MCP releases: ${a.label} ${a.version} (${a.arch}) with ${a.mcpTools} tools and a ${a.backendVersion} backend, ${r.label} ${r.version} with ${r.mcpTools} tools.`}),e.jsxs("div",{className:"bg-emerald-950/50 border-b border-emerald-500/30 py-2.5 text-center text-sm px-4",children:[e.jsx("span",{className:"text-emerald-400 font-semibold",children:"Free Desktop Application:"})," ",o.map((s,n)=>e.jsxs("span",{children:[e.jsxs("a",{href:s.releaseUrl,className:"underline hover:text-emerald-300 transition-colors",target:"_blank",rel:"noopener noreferrer",children:[s.label," ",s.version," · published ",s.releaseDate," · ",s.mcpTools," MCP tools"]}),nt(s,0),className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"v1.0.7 ×2",label:"Live releases (Win / Linux)"},{value:`${a.mcpTools}`,label:`MCP tools per ${a.label} release`},{value:"19",label:"Named kinds (17 + 2 routing)"},{value:"10",label:"Quantum Code Families"}].map(s=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-3xl mb-1",children:s.value}),e.jsx("div",{className:"text-secondary text-sm",children:s.label})]},s.label))}),e.jsxs("div",{ref:s=>t(s,1),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"Inside the Workbench"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Nine workspaces are documented for the live v1.0.7 (Windows/Linux) releases:"," ",d.map((s,n)=>e.jsxs("span",{children:[e.jsx("span",{className:"text-primary font-medium",children:s}),ne.jsxs("div",{className:"bg-void border border-gridline rounded-xl p-5",children:[e.jsx("span",{className:"text-cyan-300 font-semibold text-sm block mb-2",children:s}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Explore this workspace with the release documentation and inspect results on your own machine. No hardware-specific run data is published here."})]},s))})]}),e.jsxs("div",{ref:s=>t(s,2),className:"card-surface space-y-5",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Downloads"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-5",children:[e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Windows x64 · ",a.version]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Portable single executable and release ZIP. No installer required, no admin rights. The app makes no online update checks."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",a.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:a.artifact}),", then launch directly."]}),e.jsxs("li",{children:["Headless MCP server: ",e.jsx("code",{className:"text-cyan-300",children:"QectorWorkbench-Portable.exe --mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"%LOCALAPPDATA%\\QectorWorkbench"})]}),e.jsxs("li",{children:["Exe SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:a.artifactSha256})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:a.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Windows Portable (.exe)"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-windows/releases/download/v1.0.7/QectorWorkbench-v1.0.7-Windows-x64-Public.zip",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Full ZIP Archive"}),e.jsx("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Linux x64 · ",r.version]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed",children:["Published ",r.version," portable ELF executable and Debian (.deb) package with bundled qector-decoder-v3 ",r.backendVersion," backend and ",r.mcpTools,"-tool MCP server."]}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",r.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:r.artifact})," or the Debian package."]}),e.jsxs("li",{children:["Headless MCP server: append ",e.jsx("code",{className:"text-cyan-300",children:"--mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"~/.local/share/QectorWorkbench"})]}),e.jsxs("li",{children:["Portable SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:r.artifactSha256})]}),e.jsxs("li",{children:["Debian SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:"5221dc9557319f2c55e6048ab30eb4a080d603abc9bab3d2b4cde01ef5b8aa45"})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:r.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Linux Portable"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-linux/releases/download/v1.0.7/qector-workbench_1.0.7_amd64.deb",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Debian Package (.deb)"}),e.jsx("a",{href:r.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3 opacity-60",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-base",children:"macOS arm64 - not ready yet"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Apple silicon build requires a build on Apple hardware and is not included until that build is produced and signed."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsx("li",{children:"Requires Apple hardware build - coming soon"}),e.jsx("li",{children:"No artifact yet - check back for macOS release"}),e.jsx("li",{children:"Windows and Linux v1.0.7 are live with 19 decoders"})]}),e.jsx("span",{className:"text-muted-foreground text-xs",children:"Not available yet"})]})]}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl text-xs text-secondary leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Verify your download:"})," SHA-256 checksums and GPG signature files (.asc) for every file are published in the release notes. Override the runtime data directory with ",e.jsx("code",{className:"text-cyan-300",children:"QECTOR_DATA_DIR"}),"."]})]}),e.jsxs("div",{ref:s=>t(s,3),className:"card-surface space-y-6",children:[e.jsxs("div",{className:"flex flex-col md:flex-row md:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Integrated Decoders"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"All 19 named kinds (17 concrete configurations plus AutoDecoder and Auto Router) are exposed through the Workbench MCP server. No benchmark figures are published on the site: run the included harness to measure your own hardware."})]}),e.jsxs("span",{className:"text-xs px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 text-cyan-300 rounded-full font-mono",children:["Windows & Linux backend qector_decoder_v3 ",a.backendVersion]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground leading-relaxed",children:["Each v1.0.7 release (Windows/Linux) declares ",e.jsx("strong",{className:"text-secondary",children:"19 named kinds: 17 concrete configurations plus 2 orchestration entries"})," against its bundled qector_decoder_v3 ",a.backendVersion," backend. Consult each release's included manuals for platform-specific coverage."]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"Decoder Kind"}),e.jsx("th",{className:"py-3 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-3 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:m.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3 font-mono font-semibold text-primary",children:s.kind}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.desc})]},s.kind))})]})})]}),e.jsxs("div",{ref:s=>t(s,4),children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"10 Supported Code Families"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["The published releases cover ",e.jsx("strong",{className:"text-primary",children:"10 code families"}),", including qLDPC and colour codes."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:h.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl space-y-2",children:[e.jsx("span",{className:"font-mono text-cyan-300 font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground font-mono",children:["Param: ",s.params]}),e.jsx("p",{className:"text-xs text-secondary",children:s.desc})]},s.name))})]}),e.jsxs("div",{ref:s=>t(s,5),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-6",children:"Workbench Components"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"Desktop GUI",desc:"CustomTkinter desktop UI for Windows and Linux. Visual circuit builder, syndrome viewer, decoder performance dashboard, and a distance slider covering d3-d63 on supported families."},{name:"MCP Tools",desc:"Native Model Context Protocol server over stdio JSON-RPC 2.0, launched with --mcp and usable headlessly with no display. Connects AI agents directly to decoder execution and diagnostics."},{name:"Self-Contained",desc:"Bundles its own Python runtime, the scientific stack, and the qector_decoder_v3 1.0.0 wheel. No system Python or pip required; the app makes no online update checks."},{name:"Self / Auto-Debug Layer",desc:"Verifies H·c == s on every decode with a full attempt trace, and falls back across decoders automatically when a decoder fails to produce a faithful correction."},{name:"Hardware Dashboard",desc:"Auto-detects CUDA, OpenCL, and CPU backends, and reports OpenCL absence honestly: it names why a backend is unavailable rather than printing a bare N/A."},{name:"Lab & Personal Info",desc:"Deposit profile (author, ORCID, affiliation, DOI, funding, keywords) for generated reports, plus decoder license-key installation with a live tier readout."},{name:"Documentation Export",desc:"Export documentation and evidence in the formats supported by the selected release, with optional .zenodo.json and CITATION.cff deposit sidecars."},{name:"Bundled Manuals & EULA",desc:"Each release ships an API Reference, MCP Integration Guide, Quick Start Guide, a per-OS User Manual, a machine-readable LLM manual, and EULA.txt, with SHA-256 checksums for every file."}].map(s=>e.jsx(u,{title:s.name,desc:s.desc},s.name))})]}),e.jsxs("div",{ref:s=>t(s,6),className:"space-y-6",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold",children:"Decoder Sandbox"}),e.jsx("p",{className:"text-secondary text-sm",children:"Below is an interactive sandbox replicating the basic topological planar code matching module inside QECTOR Workbench. Click to inject errors and inspect Blossom correction paths in real time."}),e.jsx(b,{})]}),e.jsxs("div",{ref:s=>t(s,7),children:[e.jsx(f,{title:"Documentation & Reference",statement:"QECTOR Workbench documentation is published alongside each app release. The Windows v1.0.7 and Linux v1.0.7 builds ship per-OS manuals and SHA-256 checksums; use the release-specific manuals for your platform."}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 mt-4",children:[e.jsxs("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Manuals & EULA"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"GitHub Releases"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"API Reference, MCP guide, Quick Start, per-OS manual"})]}),e.jsxs(i,{to:"/evidence",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Validation & Evidence"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/evidence"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Validation reports and SHA-256 sealed artifact manifests"})]}),e.jsxs(i,{to:"/technical-reference",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Architecture Whitepaper"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/technical-reference"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Technical specification & design"})]})]})]}),e.jsx("div",{className:"text-center pt-4",children:e.jsx(i,{to:"/contact",className:"btn-cyan",children:"Contact for Technical Support"})})]})})]})}export{C as default}; diff --git a/assets/Workbench-BidwJKAH.js b/assets/Workbench-BidwJKAH.js deleted file mode 100644 index 9f25abaa..00000000 --- a/assets/Workbench-BidwJKAH.js +++ /dev/null @@ -1 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,L as i,A as u,Q as b,E as f}from"./index-CCmwjNGU.js";import{N as g}from"./NeuralReveal-uYarhiMA.js";import{g as c,S as y}from"./vendor-gsap-a3sj5zmn.js";import{W as o}from"./releases--9GgxpSb.js";import"./vendor-ui-B8TlNU4J.js";c.registerPlugin(y);const[a,r]=o;function C(){const l=x.useRef([]);x.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=c.context(()=>{l.current.filter(Boolean).forEach(n=>{c.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const t=(s,n)=>{s&&(l.current[n]=s)},m=[{kind:"union_find",type:"Graphlike",desc:"Fast approximate Union-Find decoding; higher LER than exact MWPM."},{kind:"fast_union_find",type:"Graphlike",desc:"Optimized Union-Find hot path; approximate."},{kind:"blossom",type:"Universal",desc:"Weight-optimal exact minimum-weight perfect matching (Edmonds' Blossom)."},{kind:"sparse_blossom",type:"Graphlike",desc:"Event-driven Sparse Blossom with radix-heap region growth (experimental)."},{kind:"bp_osd",type:"Universal / qLDPC",desc:"Belief propagation + ordered-statistics decoding for LDPC / qLDPC codes."},{kind:"auto",type:"Graphlike",desc:"Self-selecting AutoDecoder: picks the best available decoder for the code."},{kind:"hybrid",type:"Graphlike",desc:"Combines a fast heuristic pass with exact matching."},{kind:"lookup_table",type:"Small (<20 checks)",desc:"Precomputed syndrome-to-correction table with O(1) lookup."},{kind:"predecoded",type:"Graphlike",desc:"Fast pre-decoding pass that resolves easy/low-weight syndromes."},{kind:"auto_router",type:"Universal",desc:"Policy decoder: inspects the code and dispatches the best concrete decoder."},{kind:"hybrid_cascade",type:"Graphlike",desc:"Union-Find pre-filter escalating to Blossom/BP-OSD."},{kind:"gnn_belief_matching",type:"Graphlike",desc:"GNN-predicted per-qubit weights guide edge-weighted matching with fallback."},{kind:"belief_matching",type:"Universal",desc:"Sum-product BP posteriors reweight an exact Blossom matching."},{kind:"two_stage",type:"Graphlike",desc:"Decoupled X/Z sector decoders for CSS / colour codes."},{kind:"ambiguity_cluster",type:"Graphlike",desc:"Cluster-growth decoder for high noise or non-graphlike codes."},{kind:"colour_code",type:"Universal / qLDPC",desc:"BP-OSD hypergraph decoder over undecomposed detector error models."},{kind:"space_time",type:"Universal",desc:"Space-time decoder for multi-round decoding (experimental)."},{kind:"spacetime_mwpm",type:"Multi-round",desc:"Space-time MWPM for phenomenological & circuit-level decoding."},{kind:"soft_llr",type:"Soft-decision",desc:"Log-likelihood-ratio-weighted decoding."}],h=[{name:"repetition",params:"distance (int)",desc:"1D chain parity-check code."},{name:"ring",params:"distance (int)",desc:"Periodic 1D chain."},{name:"rotated_surface",params:"distance (int)",desc:"Standard rotated surface code."},{name:"unrotated_surface",params:"distance (int)",desc:"Square lattice surface code."},{name:"toric",params:"distance (int)",desc:"Toric code with periodic boundaries."},{name:"heavy_hex",params:"distance (int)",desc:"Heavy-hex lattice."},{name:"hypergraph_product",params:"distance (int)",desc:"CSS code from repetition seed."},{name:"bicycle",params:"circulant size (int)",desc:"qLDPC bicycle code."},{name:"bivariate_bicycle",params:"preset index (int)",desc:"Bivariate bicycle presets (qLDPC)."},{name:"color_code",params:"triangular size (int)",desc:"Triangular & 2D 4.8.8 colour codes."}],d=["Code Explorer","Decoder Lab","Benchmark","Batch & Streaming","Hardware","Diagnostics","Documentation","Lab & Personal Info","Console"];return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"QECTOR Workbench - Windows v1.0.7 and Linux v1.0.7",description:`QECTOR Workbench desktop GUI and MCP releases: ${a.label} ${a.version} (${a.arch}) with ${a.mcpTools} tools and a ${a.backendVersion} backend, ${r.label} ${r.version} with ${r.mcpTools} tools.`}),e.jsxs("div",{className:"bg-emerald-950/50 border-b border-emerald-500/30 py-2.5 text-center text-sm px-4",children:[e.jsx("span",{className:"text-emerald-400 font-semibold",children:"Free Desktop Application:"})," ",o.map((s,n)=>e.jsxs("span",{children:[e.jsxs("a",{href:s.releaseUrl,className:"underline hover:text-emerald-300 transition-colors",target:"_blank",rel:"noopener noreferrer",children:[s.label," ",s.version," · published ",s.releaseDate," · ",s.mcpTools," MCP tools"]}),nt(s,0),className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"v1.0.7 ×2",label:"Live releases (Win / Linux)"},{value:`${a.mcpTools}`,label:`MCP tools per ${a.label} release`},{value:"19",label:"Named kinds (17 + 2 routing)"},{value:"10",label:"Quantum Code Families"}].map(s=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-3xl mb-1",children:s.value}),e.jsx("div",{className:"text-secondary text-sm",children:s.label})]},s.label))}),e.jsxs("div",{ref:s=>t(s,1),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"Inside the Workbench"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Nine workspaces are documented for the live v1.0.7 (Windows/Linux) releases:"," ",d.map((s,n)=>e.jsxs("span",{children:[e.jsx("span",{className:"text-primary font-medium",children:s}),ne.jsxs("div",{className:"bg-void border border-gridline rounded-xl p-5",children:[e.jsx("span",{className:"text-cyan-300 font-semibold text-sm block mb-2",children:s}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Explore this workspace with the release documentation and inspect results on your own machine. No hardware-specific run data is published here."})]},s))})]}),e.jsxs("div",{ref:s=>t(s,2),className:"card-surface space-y-5",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Downloads"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-5",children:[e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Windows x64 · ",a.version]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Portable single executable and release ZIP. No installer required, no admin rights. The app makes no online update checks."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",a.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:a.artifact}),", then launch directly."]}),e.jsxs("li",{children:["Headless MCP server: ",e.jsx("code",{className:"text-cyan-300",children:"QectorWorkbench-Portable.exe --mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"%LOCALAPPDATA%\\QectorWorkbench"})]}),e.jsxs("li",{children:["Exe SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:a.artifactSha256})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:a.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Windows Portable (.exe)"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-windows/releases/download/v1.0.7/QectorWorkbench-v1.0.7-Windows-x64-Public.zip",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Full ZIP Archive"}),e.jsx("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Linux x64 · ",r.version]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed",children:["Published ",r.version," portable ELF executable and Debian (.deb) package with bundled qector-decoder-v3 ",r.backendVersion," backend and ",r.mcpTools,"-tool MCP server."]}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",r.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:r.artifact})," or the Debian package."]}),e.jsxs("li",{children:["Headless MCP server: append ",e.jsx("code",{className:"text-cyan-300",children:"--mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"~/.local/share/QectorWorkbench"})]}),e.jsxs("li",{children:["Portable SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:r.artifactSha256})]}),e.jsxs("li",{children:["Debian SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:"5221dc9557319f2c55e6048ab30eb4a080d603abc9bab3d2b4cde01ef5b8aa45"})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:r.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Linux Portable"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-linux/releases/download/v1.0.7/qector-workbench_1.0.7_amd64.deb",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Debian Package (.deb)"}),e.jsx("a",{href:r.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3 opacity-60",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-base",children:"macOS arm64 - not ready yet"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Apple silicon build requires a build on Apple hardware and is not included until that build is produced and signed."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsx("li",{children:"Requires Apple hardware build - coming soon"}),e.jsx("li",{children:"No artifact yet - check back for macOS release"}),e.jsx("li",{children:"Windows and Linux v1.0.7 are live with 19 decoders"})]}),e.jsx("span",{className:"text-muted-foreground text-xs",children:"Not available yet"})]})]}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl text-xs text-secondary leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Verify your download:"})," SHA-256 checksums and GPG signature files (.asc) for every file are published in the release notes. Override the runtime data directory with ",e.jsx("code",{className:"text-cyan-300",children:"QECTOR_DATA_DIR"}),"."]})]}),e.jsxs("div",{ref:s=>t(s,3),className:"card-surface space-y-6",children:[e.jsxs("div",{className:"flex flex-col md:flex-row md:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Integrated Decoders"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"All 19 named kinds (17 concrete configurations plus AutoDecoder and Auto Router) are exposed through the Workbench MCP server. No benchmark figures are published on the site: run the included harness to measure your own hardware."})]}),e.jsxs("span",{className:"text-xs px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 text-cyan-300 rounded-full font-mono",children:["Windows & Linux backend qector_decoder_v3 ",a.backendVersion]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground leading-relaxed",children:["Each v1.0.7 release (Windows/Linux) declares ",e.jsx("strong",{className:"text-secondary",children:"19 named kinds: 17 concrete configurations plus 2 orchestration entries"})," against its bundled qector_decoder_v3 ",a.backendVersion," backend. Consult each release's included manuals for platform-specific coverage."]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"Decoder Kind"}),e.jsx("th",{className:"py-3 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-3 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:m.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3 font-mono font-semibold text-primary",children:s.kind}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.desc})]},s.kind))})]})})]}),e.jsxs("div",{ref:s=>t(s,4),children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"10 Supported Code Families"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["The published releases cover ",e.jsx("strong",{className:"text-primary",children:"10 code families"}),", including qLDPC and colour codes."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:h.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl space-y-2",children:[e.jsx("span",{className:"font-mono text-cyan-300 font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground font-mono",children:["Param: ",s.params]}),e.jsx("p",{className:"text-xs text-secondary",children:s.desc})]},s.name))})]}),e.jsxs("div",{ref:s=>t(s,5),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-6",children:"Workbench Components"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"Desktop GUI",desc:"CustomTkinter desktop UI for Windows and Linux. Visual circuit builder, syndrome viewer, decoder performance dashboard, and a distance slider covering d3-d63 on supported families."},{name:"MCP Tools",desc:"Native Model Context Protocol server over stdio JSON-RPC 2.0, launched with --mcp and usable headlessly with no display. Connects AI agents directly to decoder execution and diagnostics."},{name:"Self-Contained",desc:"Bundles its own Python runtime, the scientific stack, and the qector_decoder_v3 1.0.0 wheel. No system Python or pip required; the app makes no online update checks."},{name:"Self / Auto-Debug Layer",desc:"Verifies H·c == s on every decode with a full attempt trace, and falls back across decoders automatically when a decoder fails to produce a faithful correction."},{name:"Hardware Dashboard",desc:"Auto-detects CUDA, OpenCL, and CPU backends, and reports OpenCL absence honestly: it names why a backend is unavailable rather than printing a bare N/A."},{name:"Lab & Personal Info",desc:"Deposit profile (author, ORCID, affiliation, DOI, funding, keywords) for generated reports, plus decoder license-key installation with a live tier readout."},{name:"Documentation Export",desc:"Export documentation and evidence in the formats supported by the selected release, with optional .zenodo.json and CITATION.cff deposit sidecars."},{name:"Bundled Manuals & EULA",desc:"Each release ships an API Reference, MCP Integration Guide, Quick Start Guide, a per-OS User Manual, a machine-readable LLM manual, and EULA.txt, with SHA-256 checksums for every file."}].map(s=>e.jsx(u,{title:s.name,desc:s.desc},s.name))})]}),e.jsxs("div",{ref:s=>t(s,6),className:"space-y-6",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold",children:"Decoder Sandbox"}),e.jsx("p",{className:"text-secondary text-sm",children:"Below is an interactive sandbox replicating the basic topological planar code matching module inside QECTOR Workbench. Click to inject errors and inspect Blossom correction paths in real time."}),e.jsx(b,{})]}),e.jsxs("div",{ref:s=>t(s,7),children:[e.jsx(f,{title:"Documentation & Reference",statement:"QECTOR Workbench documentation is published alongside each app release. The Windows v1.0.7 and Linux v1.0.7 builds ship per-OS manuals and SHA-256 checksums; use the release-specific manuals for your platform."}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 mt-4",children:[e.jsxs("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Manuals & EULA"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"GitHub Releases"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"API Reference, MCP guide, Quick Start, per-OS manual"})]}),e.jsxs(i,{to:"/evidence",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Validation & Evidence"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/evidence"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Validation reports and SHA-256 sealed artifact manifests"})]}),e.jsxs(i,{to:"/technical-reference",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Architecture Whitepaper"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/technical-reference"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Technical specification & design"})]})]})]}),e.jsx("div",{className:"text-center pt-4",children:e.jsx(i,{to:"/contact",className:"btn-cyan",children:"Contact for Technical Support"})})]})})]})}export{C as default}; diff --git a/assets/Workbench-BlqsQe_K.js b/assets/Workbench-BlqsQe_K.js deleted file mode 100644 index 35da7530..00000000 --- a/assets/Workbench-BlqsQe_K.js +++ /dev/null @@ -1 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,L as i,A as u,Q as b,E as f}from"./index-c1PDYu0j.js";import{N as g}from"./NeuralReveal-uYarhiMA.js";import{g as c,S as y}from"./vendor-gsap-a3sj5zmn.js";import{W as o}from"./releases--9GgxpSb.js";import"./vendor-ui-B8TlNU4J.js";c.registerPlugin(y);const[a,r]=o;function C(){const l=x.useRef([]);x.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=c.context(()=>{l.current.filter(Boolean).forEach(n=>{c.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const t=(s,n)=>{s&&(l.current[n]=s)},m=[{kind:"union_find",type:"Graphlike",desc:"Fast approximate Union-Find decoding; higher LER than exact MWPM."},{kind:"fast_union_find",type:"Graphlike",desc:"Optimized Union-Find hot path; approximate."},{kind:"blossom",type:"Universal",desc:"Weight-optimal exact minimum-weight perfect matching (Edmonds' Blossom)."},{kind:"sparse_blossom",type:"Graphlike",desc:"Event-driven Sparse Blossom with radix-heap region growth (experimental)."},{kind:"bp_osd",type:"Universal / qLDPC",desc:"Belief propagation + ordered-statistics decoding for LDPC / qLDPC codes."},{kind:"auto",type:"Graphlike",desc:"Self-selecting AutoDecoder: picks the best available decoder for the code."},{kind:"hybrid",type:"Graphlike",desc:"Combines a fast heuristic pass with exact matching."},{kind:"lookup_table",type:"Small (<20 checks)",desc:"Precomputed syndrome-to-correction table with O(1) lookup."},{kind:"predecoded",type:"Graphlike",desc:"Fast pre-decoding pass that resolves easy/low-weight syndromes."},{kind:"auto_router",type:"Universal",desc:"Policy decoder: inspects the code and dispatches the best concrete decoder."},{kind:"hybrid_cascade",type:"Graphlike",desc:"Union-Find pre-filter escalating to Blossom/BP-OSD."},{kind:"gnn_belief_matching",type:"Graphlike",desc:"GNN-predicted per-qubit weights guide edge-weighted matching with fallback."},{kind:"belief_matching",type:"Universal",desc:"Sum-product BP posteriors reweight an exact Blossom matching."},{kind:"two_stage",type:"Graphlike",desc:"Decoupled X/Z sector decoders for CSS / colour codes."},{kind:"ambiguity_cluster",type:"Graphlike",desc:"Cluster-growth decoder for high noise or non-graphlike codes."},{kind:"colour_code",type:"Universal / qLDPC",desc:"BP-OSD hypergraph decoder over undecomposed detector error models."},{kind:"space_time",type:"Universal",desc:"Space-time decoder for multi-round decoding (experimental)."},{kind:"spacetime_mwpm",type:"Multi-round",desc:"Space-time MWPM for phenomenological & circuit-level decoding."},{kind:"soft_llr",type:"Soft-decision",desc:"Log-likelihood-ratio-weighted decoding."}],h=[{name:"repetition",params:"distance (int)",desc:"1D chain parity-check code."},{name:"ring",params:"distance (int)",desc:"Periodic 1D chain."},{name:"rotated_surface",params:"distance (int)",desc:"Standard rotated surface code."},{name:"unrotated_surface",params:"distance (int)",desc:"Square lattice surface code."},{name:"toric",params:"distance (int)",desc:"Toric code with periodic boundaries."},{name:"heavy_hex",params:"distance (int)",desc:"Heavy-hex lattice."},{name:"hypergraph_product",params:"distance (int)",desc:"CSS code from repetition seed."},{name:"bicycle",params:"circulant size (int)",desc:"qLDPC bicycle code."},{name:"bivariate_bicycle",params:"preset index (int)",desc:"Bivariate bicycle presets (qLDPC)."},{name:"color_code",params:"triangular size (int)",desc:"Triangular & 2D 4.8.8 colour codes."}],d=["Code Explorer","Decoder Lab","Benchmark","Batch & Streaming","Hardware","Diagnostics","Documentation","Lab & Personal Info","Console"];return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"QECTOR Workbench - Windows v1.0.7 and Linux v1.0.7",description:`QECTOR Workbench desktop GUI and MCP releases: ${a.label} ${a.version} (${a.arch}) with ${a.mcpTools} tools and a ${a.backendVersion} backend, ${r.label} ${r.version} with ${r.mcpTools} tools.`}),e.jsxs("div",{className:"bg-emerald-950/50 border-b border-emerald-500/30 py-2.5 text-center text-sm px-4",children:[e.jsx("span",{className:"text-emerald-400 font-semibold",children:"Free Desktop Application:"})," ",o.map((s,n)=>e.jsxs("span",{children:[e.jsxs("a",{href:s.releaseUrl,className:"underline hover:text-emerald-300 transition-colors",target:"_blank",rel:"noopener noreferrer",children:[s.label," ",s.version," · published ",s.releaseDate," · ",s.mcpTools," MCP tools"]}),nt(s,0),className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"v1.0.7 ×2",label:"Live releases (Win / Linux)"},{value:`${a.mcpTools}`,label:`MCP tools per ${a.label} release`},{value:"19",label:"Named kinds (17 + 2 routing)"},{value:"10",label:"Quantum Code Families"}].map(s=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-3xl mb-1",children:s.value}),e.jsx("div",{className:"text-secondary text-sm",children:s.label})]},s.label))}),e.jsxs("div",{ref:s=>t(s,1),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"Inside the Workbench"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Nine workspaces are documented for the live v1.0.7 (Windows/Linux) releases:"," ",d.map((s,n)=>e.jsxs("span",{children:[e.jsx("span",{className:"text-primary font-medium",children:s}),ne.jsxs("div",{className:"bg-void border border-gridline rounded-xl p-5",children:[e.jsx("span",{className:"text-cyan-300 font-semibold text-sm block mb-2",children:s}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Explore this workspace with the release documentation and inspect results on your own machine. No hardware-specific run data is published here."})]},s))})]}),e.jsxs("div",{ref:s=>t(s,2),className:"card-surface space-y-5",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Downloads"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-5",children:[e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Windows x64 · ",a.version]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Portable single executable and release ZIP. No installer required, no admin rights. The app makes no online update checks."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",a.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:a.artifact}),", then launch directly."]}),e.jsxs("li",{children:["Headless MCP server: ",e.jsx("code",{className:"text-cyan-300",children:"QectorWorkbench-Portable.exe --mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"%LOCALAPPDATA%\\QectorWorkbench"})]}),e.jsxs("li",{children:["Exe SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:a.artifactSha256})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:a.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Windows Portable (.exe)"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-windows/releases/download/v1.0.7/QectorWorkbench-v1.0.7-Windows-x64-Public.zip",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Full ZIP Archive"}),e.jsx("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Linux x64 · ",r.version]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed",children:["Published ",r.version," portable ELF executable and Debian (.deb) package with bundled qector-decoder-v3 ",r.backendVersion," backend and ",r.mcpTools,"-tool MCP server."]}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",r.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:r.artifact})," or the Debian package."]}),e.jsxs("li",{children:["Headless MCP server: append ",e.jsx("code",{className:"text-cyan-300",children:"--mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"~/.local/share/QectorWorkbench"})]}),e.jsxs("li",{children:["Portable SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:r.artifactSha256})]}),e.jsxs("li",{children:["Debian SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:"5221dc9557319f2c55e6048ab30eb4a080d603abc9bab3d2b4cde01ef5b8aa45"})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:r.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Linux Portable"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-linux/releases/download/v1.0.7/qector-workbench_1.0.7_amd64.deb",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Debian Package (.deb)"}),e.jsx("a",{href:r.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3 opacity-60",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-base",children:"macOS arm64 - not ready yet"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Apple silicon build requires a build on Apple hardware and is not included until that build is produced and signed."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsx("li",{children:"Requires Apple hardware build - coming soon"}),e.jsx("li",{children:"No artifact yet - check back for macOS release"}),e.jsx("li",{children:"Windows and Linux v1.0.7 are live with 19 decoders"})]}),e.jsx("span",{className:"text-muted-foreground text-xs",children:"Not available yet"})]})]}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl text-xs text-secondary leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Verify your download:"})," SHA-256 checksums and GPG signature files (.asc) for every file are published in the release notes. Override the runtime data directory with ",e.jsx("code",{className:"text-cyan-300",children:"QECTOR_DATA_DIR"}),"."]})]}),e.jsxs("div",{ref:s=>t(s,3),className:"card-surface space-y-6",children:[e.jsxs("div",{className:"flex flex-col md:flex-row md:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Integrated Decoders"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"All 19 named kinds (17 concrete configurations plus AutoDecoder and Auto Router) are exposed through the Workbench MCP server. No benchmark figures are published on the site: run the included harness to measure your own hardware."})]}),e.jsxs("span",{className:"text-xs px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 text-cyan-300 rounded-full font-mono",children:["Windows & Linux backend qector_decoder_v3 ",a.backendVersion]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground leading-relaxed",children:["Each v1.0.7 release (Windows/Linux) declares ",e.jsx("strong",{className:"text-secondary",children:"19 named kinds: 17 concrete configurations plus 2 orchestration entries"})," against its bundled qector_decoder_v3 ",a.backendVersion," backend. Consult each release's included manuals for platform-specific coverage."]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"Decoder Kind"}),e.jsx("th",{className:"py-3 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-3 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:m.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3 font-mono font-semibold text-primary",children:s.kind}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.desc})]},s.kind))})]})})]}),e.jsxs("div",{ref:s=>t(s,4),children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"10 Supported Code Families"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["The published releases cover ",e.jsx("strong",{className:"text-primary",children:"10 code families"}),", including qLDPC and colour codes."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:h.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl space-y-2",children:[e.jsx("span",{className:"font-mono text-cyan-300 font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground font-mono",children:["Param: ",s.params]}),e.jsx("p",{className:"text-xs text-secondary",children:s.desc})]},s.name))})]}),e.jsxs("div",{ref:s=>t(s,5),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-6",children:"Workbench Components"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"Desktop GUI",desc:"CustomTkinter desktop UI for Windows and Linux. Visual circuit builder, syndrome viewer, decoder performance dashboard, and a distance slider covering d3-d63 on supported families."},{name:"MCP Tools",desc:"Native Model Context Protocol server over stdio JSON-RPC 2.0, launched with --mcp and usable headlessly with no display. Connects AI agents directly to decoder execution and diagnostics."},{name:"Self-Contained",desc:"Bundles its own Python runtime, the scientific stack, and the qector_decoder_v3 1.0.0 wheel. No system Python or pip required; the app makes no online update checks."},{name:"Self / Auto-Debug Layer",desc:"Verifies H·c == s on every decode with a full attempt trace, and falls back across decoders automatically when a decoder fails to produce a faithful correction."},{name:"Hardware Dashboard",desc:"Auto-detects CUDA, OpenCL, and CPU backends, and reports OpenCL absence honestly: it names why a backend is unavailable rather than printing a bare N/A."},{name:"Lab & Personal Info",desc:"Deposit profile (author, ORCID, affiliation, DOI, funding, keywords) for generated reports, plus decoder license-key installation with a live tier readout."},{name:"Documentation Export",desc:"Export documentation and evidence in the formats supported by the selected release, with optional .zenodo.json and CITATION.cff deposit sidecars."},{name:"Bundled Manuals & EULA",desc:"Each release ships an API Reference, MCP Integration Guide, Quick Start Guide, a per-OS User Manual, a machine-readable LLM manual, and EULA.txt, with SHA-256 checksums for every file."}].map(s=>e.jsx(u,{title:s.name,desc:s.desc},s.name))})]}),e.jsxs("div",{ref:s=>t(s,6),className:"space-y-6",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold",children:"Decoder Sandbox"}),e.jsx("p",{className:"text-secondary text-sm",children:"Below is an interactive sandbox replicating the basic topological planar code matching module inside QECTOR Workbench. Click to inject errors and inspect Blossom correction paths in real time."}),e.jsx(b,{})]}),e.jsxs("div",{ref:s=>t(s,7),children:[e.jsx(f,{title:"Documentation & Reference",statement:"QECTOR Workbench documentation is published alongside each app release. The Windows v1.0.7 and Linux v1.0.7 builds ship per-OS manuals and SHA-256 checksums; use the release-specific manuals for your platform."}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 mt-4",children:[e.jsxs("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Manuals & EULA"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"GitHub Releases"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"API Reference, MCP guide, Quick Start, per-OS manual"})]}),e.jsxs(i,{to:"/evidence",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Validation & Evidence"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/evidence"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Validation reports and SHA-256 sealed artifact manifests"})]}),e.jsxs(i,{to:"/technical-reference",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Architecture Whitepaper"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/technical-reference"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Technical specification & design"})]})]})]}),e.jsx("div",{className:"text-center pt-4",children:e.jsx(i,{to:"/contact",className:"btn-cyan",children:"Contact for Technical Support"})})]})})]})}export{C as default}; diff --git a/assets/Workbench-BnUYVoPz.js b/assets/Workbench-BnUYVoPz.js deleted file mode 100644 index df588293..00000000 --- a/assets/Workbench-BnUYVoPz.js +++ /dev/null @@ -1 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,L as i,A as u,Q as b,E as f}from"./index-PdoH5kLF.js";import{N as g}from"./NeuralReveal-Bsl9IGCr.js";import{g as c,S as y}from"./vendor-gsap-a3sj5zmn.js";import{W as o}from"./releases-1-HBloZv.js";import"./vendor-ui-B8TlNU4J.js";c.registerPlugin(y);const[a,r]=o;function C(){const l=x.useRef([]);x.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=c.context(()=>{l.current.filter(Boolean).forEach(n=>{c.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const t=(s,n)=>{s&&(l.current[n]=s)},m=[{kind:"union_find",type:"Graphlike",desc:"Fast approximate Union-Find decoding; higher LER than exact MWPM."},{kind:"fast_union_find",type:"Graphlike",desc:"Optimized Union-Find hot path; approximate."},{kind:"blossom",type:"Universal",desc:"Weight-optimal exact minimum-weight perfect matching (Edmonds' Blossom)."},{kind:"sparse_blossom",type:"Graphlike",desc:"Event-driven Sparse Blossom with radix-heap region growth (experimental)."},{kind:"bp_osd",type:"Universal / qLDPC",desc:"Belief propagation + ordered-statistics decoding for LDPC / qLDPC codes."},{kind:"auto",type:"Graphlike",desc:"Self-selecting AutoDecoder: picks the best available decoder for the code."},{kind:"hybrid",type:"Graphlike",desc:"Combines a fast heuristic pass with exact matching."},{kind:"lookup_table",type:"Small (<20 checks)",desc:"Precomputed syndrome-to-correction table with O(1) lookup."},{kind:"predecoded",type:"Graphlike",desc:"Fast pre-decoding pass that resolves easy/low-weight syndromes."},{kind:"auto_router",type:"Universal",desc:"Policy decoder: inspects the code and dispatches the best concrete decoder."},{kind:"hybrid_cascade",type:"Graphlike",desc:"Union-Find pre-filter escalating to Blossom/BP-OSD."},{kind:"gnn_belief_matching",type:"Graphlike",desc:"GNN-predicted per-qubit weights guide edge-weighted matching with fallback."},{kind:"belief_matching",type:"Universal",desc:"Sum-product BP posteriors reweight an exact Blossom matching."},{kind:"two_stage",type:"Graphlike",desc:"Decoupled X/Z sector decoders for CSS / colour codes."},{kind:"ambiguity_cluster",type:"Graphlike",desc:"Cluster-growth decoder for high noise or non-graphlike codes."},{kind:"colour_code",type:"Universal / qLDPC",desc:"BP-OSD hypergraph decoder over undecomposed detector error models."},{kind:"space_time",type:"Universal",desc:"Space-time decoder for multi-round decoding (experimental)."},{kind:"spacetime_mwpm",type:"Multi-round",desc:"Space-time MWPM for phenomenological & circuit-level decoding."},{kind:"soft_llr",type:"Soft-decision",desc:"Log-likelihood-ratio-weighted decoding."}],h=[{name:"repetition",params:"distance (int)",desc:"1D chain parity-check code."},{name:"ring",params:"distance (int)",desc:"Periodic 1D chain."},{name:"rotated_surface",params:"distance (int)",desc:"Standard rotated surface code."},{name:"unrotated_surface",params:"distance (int)",desc:"Square lattice surface code."},{name:"toric",params:"distance (int)",desc:"Toric code with periodic boundaries."},{name:"heavy_hex",params:"distance (int)",desc:"Heavy-hex lattice."},{name:"hypergraph_product",params:"distance (int)",desc:"CSS code from repetition seed."},{name:"bicycle",params:"circulant size (int)",desc:"qLDPC bicycle code."},{name:"bivariate_bicycle",params:"preset index (int)",desc:"Bivariate bicycle presets (qLDPC)."},{name:"color_code",params:"triangular size (int)",desc:"Triangular & 2D 4.8.8 colour codes."}],d=["Code Explorer","Decoder Lab","Benchmark","Batch & Streaming","Hardware","Diagnostics","Documentation","Lab & Personal Info","Console"];return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"QECTOR Workbench - Windows v1.0.7 and Linux v1.0.7",description:`QECTOR Workbench desktop GUI and MCP releases: ${a.label} ${a.version} (${a.arch}) with ${a.mcpTools} tools and a ${a.backendVersion} backend, ${r.label} ${r.version} with ${r.mcpTools} tools.`}),e.jsxs("div",{className:"bg-emerald-950/50 border-b border-emerald-500/30 py-2.5 text-center text-sm px-4",children:[e.jsx("span",{className:"text-emerald-400 font-semibold",children:"Free Desktop Application:"})," ",o.map((s,n)=>e.jsxs("span",{children:[e.jsxs("a",{href:s.releaseUrl,className:"underline hover:text-emerald-300 transition-colors",target:"_blank",rel:"noopener noreferrer",children:[s.label," ",s.version," · published ",s.releaseDate," · ",s.mcpTools," MCP tools"]}),nt(s,0),className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"v1.0.7 ×2",label:"Live releases (Win / Linux)"},{value:`${a.mcpTools}`,label:`MCP tools per ${a.label} release`},{value:"19",label:"Named kinds (17 + 2 routing)"},{value:"10",label:"Quantum Code Families"}].map(s=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-3xl mb-1",children:s.value}),e.jsx("div",{className:"text-secondary text-sm",children:s.label})]},s.label))}),e.jsxs("div",{ref:s=>t(s,1),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"Inside the Workbench"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Nine workspaces are documented for the live v1.0.7 (Windows/Linux) releases:"," ",d.map((s,n)=>e.jsxs("span",{children:[e.jsx("span",{className:"text-primary font-medium",children:s}),ne.jsxs("div",{className:"bg-void border border-gridline rounded-xl p-5",children:[e.jsx("span",{className:"text-cyan-300 font-semibold text-sm block mb-2",children:s}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Explore this workspace with the release documentation and inspect results on your own machine. No hardware-specific run data is published here."})]},s))})]}),e.jsxs("div",{ref:s=>t(s,2),className:"card-surface space-y-5",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Downloads"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-5",children:[e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Windows x64 · ",a.version]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Portable single executable and release ZIP. No installer required, no admin rights. The app makes no online update checks."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",a.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:a.artifact}),", then launch directly."]}),e.jsxs("li",{children:["Headless MCP server: ",e.jsx("code",{className:"text-cyan-300",children:"QectorWorkbench-Portable.exe --mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"%LOCALAPPDATA%\\QectorWorkbench"})]}),e.jsxs("li",{children:["Exe SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:a.artifactSha256})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:a.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Windows Portable (.exe)"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-windows/releases/download/v1.0.7/QectorWorkbench-v1.0.7-Windows-x64-Public.zip",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Full ZIP Archive"}),e.jsx("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Linux x64 · ",r.version]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed",children:["Published ",r.version," portable ELF executable and Debian (.deb) package with bundled qector-decoder-v3 ",r.backendVersion," backend and ",r.mcpTools,"-tool MCP server."]}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",r.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:r.artifact})," or the Debian package."]}),e.jsxs("li",{children:["Headless MCP server: append ",e.jsx("code",{className:"text-cyan-300",children:"--mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"~/.local/share/QectorWorkbench"})]}),e.jsxs("li",{children:["Portable SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:r.artifactSha256})]}),e.jsxs("li",{children:["Debian SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:"5221dc9557319f2c55e6048ab30eb4a080d603abc9bab3d2b4cde01ef5b8aa45"})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:r.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Linux Portable"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-linux/releases/download/v1.0.7/qector-workbench_1.0.7_amd64.deb",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Debian Package (.deb)"}),e.jsx("a",{href:r.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3 opacity-60",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-base",children:"macOS arm64 - not ready yet"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Apple silicon build requires a build on Apple hardware and is not included until that build is produced and signed."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsx("li",{children:"Requires Apple hardware build - coming soon"}),e.jsx("li",{children:"No artifact yet - check back for macOS release"}),e.jsx("li",{children:"Windows and Linux v1.0.7 are live with 19 decoders"})]}),e.jsx("span",{className:"text-muted-foreground text-xs",children:"Not available yet"})]})]}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl text-xs text-secondary leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Verify your download:"})," SHA-256 checksums and GPG signature files (.asc) for every file are published in the release notes. Override the runtime data directory with ",e.jsx("code",{className:"text-cyan-300",children:"QECTOR_DATA_DIR"}),"."]})]}),e.jsxs("div",{ref:s=>t(s,3),className:"card-surface space-y-6",children:[e.jsxs("div",{className:"flex flex-col md:flex-row md:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Integrated Decoders"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"All 19 named kinds (17 concrete configurations plus AutoDecoder and Auto Router) are exposed through the Workbench MCP server. No benchmark figures are published on the site: run the included harness to measure your own hardware."})]}),e.jsxs("span",{className:"text-xs px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 text-cyan-300 rounded-full font-mono",children:["Windows & Linux backend qector_decoder_v3 ",a.backendVersion]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground leading-relaxed",children:["Each v1.0.7 release (Windows/Linux) declares ",e.jsx("strong",{className:"text-secondary",children:"19 named kinds: 17 concrete configurations plus 2 orchestration entries"})," against its bundled qector_decoder_v3 ",a.backendVersion," backend. Consult each release's included manuals for platform-specific coverage."]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"Decoder Kind"}),e.jsx("th",{className:"py-3 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-3 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:m.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3 font-mono font-semibold text-primary",children:s.kind}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.desc})]},s.kind))})]})})]}),e.jsxs("div",{ref:s=>t(s,4),children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"10 Supported Code Families"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["The published releases cover ",e.jsx("strong",{className:"text-primary",children:"10 code families"}),", including qLDPC and colour codes."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:h.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl space-y-2",children:[e.jsx("span",{className:"font-mono text-cyan-300 font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground font-mono",children:["Param: ",s.params]}),e.jsx("p",{className:"text-xs text-secondary",children:s.desc})]},s.name))})]}),e.jsxs("div",{ref:s=>t(s,5),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-6",children:"Workbench Components"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"Desktop GUI",desc:"CustomTkinter desktop UI for Windows and Linux. Visual circuit builder, syndrome viewer, decoder performance dashboard, and a distance slider covering d3-d63 on supported families."},{name:"MCP Tools",desc:"Native Model Context Protocol server over stdio JSON-RPC 2.0, launched with --mcp and usable headlessly with no display. Connects AI agents directly to decoder execution and diagnostics."},{name:"Self-Contained",desc:"Bundles its own Python runtime, the scientific stack, and the qector_decoder_v3 1.0.0 wheel. No system Python or pip required; the app makes no online update checks."},{name:"Self / Auto-Debug Layer",desc:"Verifies H·c == s on every decode with a full attempt trace, and falls back across decoders automatically when a decoder fails to produce a faithful correction."},{name:"Hardware Dashboard",desc:"Auto-detects CUDA, OpenCL, and CPU backends, and reports OpenCL absence honestly: it names why a backend is unavailable rather than printing a bare N/A."},{name:"Lab & Personal Info",desc:"Deposit profile (author, ORCID, affiliation, DOI, funding, keywords) for generated reports, plus decoder license-key installation with a live tier readout."},{name:"Documentation Export",desc:"Export documentation and evidence in the formats supported by the selected release, with optional .zenodo.json and CITATION.cff deposit sidecars."},{name:"Bundled Manuals & EULA",desc:"Each release ships an API Reference, MCP Integration Guide, Quick Start Guide, a per-OS User Manual, a machine-readable LLM manual, and EULA.txt, with SHA-256 checksums for every file."}].map(s=>e.jsx(u,{title:s.name,desc:s.desc},s.name))})]}),e.jsxs("div",{ref:s=>t(s,6),className:"space-y-6",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold",children:"Decoder Sandbox"}),e.jsx("p",{className:"text-secondary text-sm",children:"Below is an interactive sandbox replicating the basic topological planar code matching module inside QECTOR Workbench. Click to inject errors and inspect Blossom correction paths in real time."}),e.jsx(b,{})]}),e.jsxs("div",{ref:s=>t(s,7),children:[e.jsx(f,{title:"Documentation & Reference",statement:"QECTOR Workbench documentation is published alongside each app release. The Windows v1.0.7 and Linux v1.0.7 builds ship per-OS manuals and SHA-256 checksums; use the release-specific manuals for your platform."}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 mt-4",children:[e.jsxs("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Manuals & EULA"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"GitHub Releases"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"API Reference, MCP guide, Quick Start, per-OS manual"})]}),e.jsxs(i,{to:"/evidence",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Validation & Evidence"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/evidence"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Validation reports and SHA-256 sealed artifact manifests"})]}),e.jsxs(i,{to:"/technical-reference",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Architecture Whitepaper"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/technical-reference"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Technical specification & design"})]})]})]}),e.jsx("div",{className:"text-center pt-4",children:e.jsx(i,{to:"/contact",className:"btn-cyan",children:"Contact for Technical Support"})})]})})]})}export{C as default}; diff --git a/assets/Workbench-Bo8C0YZA.js b/assets/Workbench-Bo8C0YZA.js deleted file mode 100644 index 404af0bb..00000000 --- a/assets/Workbench-Bo8C0YZA.js +++ /dev/null @@ -1 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,A as u,Q as b,E as f}from"./index-DkYdPRY7.js";import{N as g}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as y}from"./vendor-gsap-a3sj5zmn.js";import{W as o}from"./releases-1-HBloZv.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";c.registerPlugin(y);const[a,r]=o;function _(){const l=x.useRef([]);x.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=c.context(()=>{l.current.filter(Boolean).forEach(n=>{c.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const t=(s,n)=>{s&&(l.current[n]=s)},m=[{kind:"union_find",type:"Graphlike",desc:"Fast approximate Union-Find decoding; higher LER than exact MWPM."},{kind:"fast_union_find",type:"Graphlike",desc:"Optimized Union-Find hot path; approximate."},{kind:"blossom",type:"Universal",desc:"Weight-optimal exact minimum-weight perfect matching (Edmonds' Blossom)."},{kind:"sparse_blossom",type:"Graphlike",desc:"Event-driven Sparse Blossom with radix-heap region growth (experimental)."},{kind:"bp_osd",type:"Universal / qLDPC",desc:"Belief propagation + ordered-statistics decoding for LDPC / qLDPC codes."},{kind:"auto",type:"Graphlike",desc:"Self-selecting AutoDecoder: picks the best available decoder for the code."},{kind:"hybrid",type:"Graphlike",desc:"Combines a fast heuristic pass with exact matching."},{kind:"lookup_table",type:"Small (<20 checks)",desc:"Precomputed syndrome-to-correction table with O(1) lookup."},{kind:"predecoded",type:"Graphlike",desc:"Fast pre-decoding pass that resolves easy/low-weight syndromes."},{kind:"auto_router",type:"Universal",desc:"Policy decoder: inspects the code and dispatches the best concrete decoder."},{kind:"hybrid_cascade",type:"Graphlike",desc:"Union-Find pre-filter escalating to Blossom/BP-OSD."},{kind:"gnn_belief_matching",type:"Graphlike",desc:"GNN-predicted per-qubit weights guide edge-weighted matching with fallback."},{kind:"belief_matching",type:"Universal",desc:"Sum-product BP posteriors reweight an exact Blossom matching."},{kind:"two_stage",type:"Graphlike",desc:"Decoupled X/Z sector decoders for CSS / colour codes."},{kind:"ambiguity_cluster",type:"Graphlike",desc:"Cluster-growth decoder for high noise or non-graphlike codes."},{kind:"colour_code",type:"Universal / qLDPC",desc:"BP-OSD hypergraph decoder over undecomposed detector error models."},{kind:"space_time",type:"Universal",desc:"Space-time decoder for multi-round decoding (experimental)."},{kind:"spacetime_mwpm",type:"Multi-round",desc:"Space-time MWPM for phenomenological & circuit-level decoding."},{kind:"soft_llr",type:"Soft-decision",desc:"Log-likelihood-ratio-weighted decoding."}],h=[{name:"repetition",params:"distance (int)",desc:"1D chain parity-check code."},{name:"ring",params:"distance (int)",desc:"Periodic 1D chain."},{name:"rotated_surface",params:"distance (int)",desc:"Standard rotated surface code."},{name:"unrotated_surface",params:"distance (int)",desc:"Square lattice surface code."},{name:"toric",params:"distance (int)",desc:"Toric code with periodic boundaries."},{name:"heavy_hex",params:"distance (int)",desc:"Heavy-hex lattice."},{name:"hypergraph_product",params:"distance (int)",desc:"CSS code from repetition seed."},{name:"bicycle",params:"circulant size (int)",desc:"qLDPC bicycle code."},{name:"bivariate_bicycle",params:"preset index (int)",desc:"Bivariate bicycle presets (qLDPC)."},{name:"color_code",params:"triangular size (int)",desc:"Triangular & 2D 4.8.8 colour codes."}],d=["Code Explorer","Decoder Lab","Benchmark","Batch & Streaming","Hardware","Diagnostics","Documentation","Lab & Personal Info","Console"];return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"QECTOR Workbench - Windows v1.0.7 and Linux v1.0.7",description:`QECTOR Workbench desktop GUI and MCP releases: ${a.label} ${a.version} (${a.arch}) with ${a.mcpTools} tools and a ${a.backendVersion} backend, ${r.label} ${r.version} with ${r.mcpTools} tools.`}),e.jsxs("div",{className:"bg-emerald-950/50 border-b border-emerald-500/30 py-2.5 text-center text-sm px-4",children:[e.jsx("span",{className:"text-emerald-400 font-semibold",children:"Free Desktop Application:"})," ",o.map((s,n)=>e.jsxs("span",{children:[e.jsxs("a",{href:s.releaseUrl,className:"underline hover:text-emerald-300 transition-colors",target:"_blank",rel:"noopener noreferrer",children:[s.label," ",s.version," · published ",s.releaseDate," · ",s.mcpTools," MCP tools"]}),nt(s,0),className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"v1.0.7 ×2",label:"Live releases (Win / Linux)"},{value:`${a.mcpTools}`,label:`MCP tools per ${a.label} release`},{value:"19",label:"Named kinds (17 + 2 routing)"},{value:"10",label:"Quantum Code Families"}].map(s=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-3xl mb-1",children:s.value}),e.jsx("div",{className:"text-secondary text-sm",children:s.label})]},s.label))}),e.jsxs("div",{ref:s=>t(s,1),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"Inside the Workbench"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Nine workspaces are documented for the live v1.0.7 (Windows/Linux) releases:"," ",d.map((s,n)=>e.jsxs("span",{children:[e.jsx("span",{className:"text-primary font-medium",children:s}),ne.jsxs("div",{className:"bg-void border border-gridline rounded-xl p-5",children:[e.jsx("span",{className:"text-cyan-300 font-semibold text-sm block mb-2",children:s}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Explore this workspace with the release documentation and inspect results on your own machine. No hardware-specific run data is published here."})]},s))})]}),e.jsxs("div",{ref:s=>t(s,2),className:"card-surface space-y-5",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Downloads"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-5",children:[e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Windows x64 · ",a.version]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Portable single executable and release ZIP. No installer required, no admin rights. The app makes no online update checks."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",a.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:a.artifact}),", then launch directly."]}),e.jsxs("li",{children:["Headless MCP server: ",e.jsx("code",{className:"text-cyan-300",children:"QectorWorkbench-Portable.exe --mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"%LOCALAPPDATA%\\QectorWorkbench"})]}),e.jsxs("li",{children:["Exe SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:a.artifactSha256})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:a.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Windows Portable (.exe)"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-windows/releases/download/v1.0.7/QectorWorkbench-v1.0.7-Windows-x64-Public.zip",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Full ZIP Archive"}),e.jsx("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Linux x64 · ",r.version]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed",children:["Published ",r.version," portable ELF executable and Debian (.deb) package with bundled qector-decoder-v3 ",r.backendVersion," backend and ",r.mcpTools,"-tool MCP server."]}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",r.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:r.artifact})," or the Debian package."]}),e.jsxs("li",{children:["Headless MCP server: append ",e.jsx("code",{className:"text-cyan-300",children:"--mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"~/.local/share/QectorWorkbench"})]}),e.jsxs("li",{children:["Portable SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:r.artifactSha256})]}),e.jsxs("li",{children:["Debian SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:"5221dc9557319f2c55e6048ab30eb4a080d603abc9bab3d2b4cde01ef5b8aa45"})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:r.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Linux Portable"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-linux/releases/download/v1.0.7/qector-workbench_1.0.7_amd64.deb",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Debian Package (.deb)"}),e.jsx("a",{href:r.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3 opacity-60",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-base",children:"macOS arm64 - not ready yet"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Apple silicon build requires a build on Apple hardware and is not included until that build is produced and signed."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsx("li",{children:"Requires Apple hardware build - coming soon"}),e.jsx("li",{children:"No artifact yet - check back for macOS release"}),e.jsx("li",{children:"Windows and Linux v1.0.7 are live with 19 decoders"})]}),e.jsx("span",{className:"text-muted-foreground text-xs",children:"Not available yet"})]})]}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl text-xs text-secondary leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Verify your download:"})," SHA-256 checksums and GPG signature files (.asc) for every file are published in the release notes. Override the runtime data directory with ",e.jsx("code",{className:"text-cyan-300",children:"QECTOR_DATA_DIR"}),"."]})]}),e.jsxs("div",{ref:s=>t(s,3),className:"card-surface space-y-6",children:[e.jsxs("div",{className:"flex flex-col md:flex-row md:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Integrated Decoders"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"All 19 named kinds (17 concrete configurations plus AutoDecoder and Auto Router) are exposed through the Workbench MCP server. No benchmark figures are published on the site: run the included harness to measure your own hardware."})]}),e.jsxs("span",{className:"text-xs px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 text-cyan-300 rounded-full font-mono",children:["Windows & Linux backend qector_decoder_v3 ",a.backendVersion]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground leading-relaxed",children:["Each v1.0.7 release (Windows/Linux) declares ",e.jsx("strong",{className:"text-secondary",children:"19 named kinds: 17 concrete configurations plus 2 orchestration entries"})," against its bundled qector_decoder_v3 ",a.backendVersion," backend. Consult each release's included manuals for platform-specific coverage."]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"Decoder Kind"}),e.jsx("th",{className:"py-3 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-3 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:m.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3 font-mono font-semibold text-primary",children:s.kind}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.desc})]},s.kind))})]})})]}),e.jsxs("div",{ref:s=>t(s,4),children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"10 Supported Code Families"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["The published releases cover ",e.jsx("strong",{className:"text-primary",children:"10 code families"}),", including qLDPC and colour codes."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:h.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl space-y-2",children:[e.jsx("span",{className:"font-mono text-cyan-300 font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground font-mono",children:["Param: ",s.params]}),e.jsx("p",{className:"text-xs text-secondary",children:s.desc})]},s.name))})]}),e.jsxs("div",{ref:s=>t(s,5),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-6",children:"Workbench Components"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"Desktop GUI",desc:"CustomTkinter desktop UI for Windows and Linux. Visual circuit builder, syndrome viewer, decoder performance dashboard, and a distance slider covering d3-d63 on supported families."},{name:"MCP Tools",desc:"Native Model Context Protocol server over stdio JSON-RPC 2.0, launched with --mcp and usable headlessly with no display. Connects AI agents directly to decoder execution and diagnostics."},{name:"Self-Contained",desc:"Bundles its own Python runtime, the scientific stack, and the qector_decoder_v3 1.0.0 wheel. No system Python or pip required; the app makes no online update checks."},{name:"Self / Auto-Debug Layer",desc:"Verifies H·c == s on every decode with a full attempt trace, and falls back across decoders automatically when a decoder fails to produce a faithful correction."},{name:"Hardware Dashboard",desc:"Auto-detects CUDA, OpenCL, and CPU backends, and reports OpenCL absence honestly: it names why a backend is unavailable rather than printing a bare N/A."},{name:"Lab & Personal Info",desc:"Deposit profile (author, ORCID, affiliation, DOI, funding, keywords) for generated reports, plus decoder license-key installation with a live tier readout."},{name:"Documentation Export",desc:"Export documentation and evidence in the formats supported by the selected release, with optional .zenodo.json and CITATION.cff deposit sidecars."},{name:"Bundled Manuals & EULA",desc:"Each release ships an API Reference, MCP Integration Guide, Quick Start Guide, a per-OS User Manual, a machine-readable LLM manual, and EULA.txt, with SHA-256 checksums for every file."}].map(s=>e.jsx(u,{title:s.name,desc:s.desc},s.name))})]}),e.jsxs("div",{ref:s=>t(s,6),className:"space-y-6",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold",children:"Decoder Sandbox"}),e.jsx("p",{className:"text-secondary text-sm",children:"Below is an interactive sandbox replicating the basic topological planar code matching module inside QECTOR Workbench. Click to inject errors and inspect Blossom correction paths in real time."}),e.jsx(b,{})]}),e.jsxs("div",{ref:s=>t(s,7),children:[e.jsx(f,{title:"Documentation & Reference",statement:"QECTOR Workbench documentation is published alongside each app release. The Windows v1.0.7 and Linux v1.0.7 builds ship per-OS manuals and SHA-256 checksums; use the release-specific manuals for your platform."}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 mt-4",children:[e.jsxs("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Manuals & EULA"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"GitHub Releases"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"API Reference, MCP guide, Quick Start, per-OS manual"})]}),e.jsxs(i,{to:"/evidence",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Validation & Evidence"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/evidence"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Validation reports and SHA-256 sealed artifact manifests"})]}),e.jsxs(i,{to:"/technical-reference",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Architecture Whitepaper"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/technical-reference"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Technical specification & design"})]})]})]}),e.jsx("div",{className:"text-center pt-4",children:e.jsx(i,{to:"/contact",className:"btn-cyan",children:"Contact for Technical Support"})})]})})]})}export{_ as default}; diff --git a/assets/Workbench-CXqTjHwC.js b/assets/Workbench-CXqTjHwC.js deleted file mode 100644 index f9912af7..00000000 --- a/assets/Workbench-CXqTjHwC.js +++ /dev/null @@ -1 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,A as u,Q as b,E as f}from"./index-CqAA-ZXu.js";import{N as g}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as y}from"./vendor-gsap-a3sj5zmn.js";import{W as o}from"./releases-DiQz_IDu.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";c.registerPlugin(y);const[a,r]=o;function _(){const l=x.useRef([]);x.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=c.context(()=>{l.current.filter(Boolean).forEach(n=>{c.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const t=(s,n)=>{s&&(l.current[n]=s)},m=[{kind:"union_find",type:"Graphlike",desc:"Fast approximate Union-Find decoding; higher LER than exact MWPM."},{kind:"fast_union_find",type:"Graphlike",desc:"Optimized Union-Find hot path; approximate."},{kind:"blossom",type:"Universal",desc:"Weight-optimal exact minimum-weight perfect matching (Edmonds' Blossom)."},{kind:"sparse_blossom",type:"Graphlike",desc:"Event-driven Sparse Blossom with radix-heap region growth (experimental)."},{kind:"bp_osd",type:"Universal / qLDPC",desc:"Belief propagation + ordered-statistics decoding for LDPC / qLDPC codes."},{kind:"auto",type:"Graphlike",desc:"Self-selecting AutoDecoder: picks the best available decoder for the code."},{kind:"hybrid",type:"Graphlike",desc:"Combines a fast heuristic pass with exact matching."},{kind:"lookup_table",type:"Small (<20 checks)",desc:"Precomputed syndrome-to-correction table with O(1) lookup."},{kind:"predecoded",type:"Graphlike",desc:"Fast pre-decoding pass that resolves easy/low-weight syndromes."},{kind:"auto_router",type:"Universal",desc:"Policy decoder: inspects the code and dispatches the best concrete decoder."},{kind:"hybrid_cascade",type:"Graphlike",desc:"Union-Find pre-filter escalating to Blossom/BP-OSD."},{kind:"gnn_belief_matching",type:"Graphlike",desc:"GNN-predicted per-qubit weights guide edge-weighted matching with fallback."},{kind:"belief_matching",type:"Universal",desc:"Sum-product BP posteriors reweight an exact Blossom matching."},{kind:"two_stage",type:"Graphlike",desc:"Decoupled X/Z sector decoders for CSS / colour codes."},{kind:"ambiguity_cluster",type:"Graphlike",desc:"Cluster-growth decoder for high noise or non-graphlike codes."},{kind:"colour_code",type:"Universal / qLDPC",desc:"BP-OSD hypergraph decoder over undecomposed detector error models."},{kind:"space_time",type:"Universal",desc:"Space-time decoder for multi-round decoding (experimental)."},{kind:"spacetime_mwpm",type:"Multi-round",desc:"Space-time MWPM for phenomenological & circuit-level decoding."},{kind:"soft_llr",type:"Soft-decision",desc:"Log-likelihood-ratio-weighted decoding."}],h=[{name:"repetition",params:"distance (int)",desc:"1D chain parity-check code."},{name:"ring",params:"distance (int)",desc:"Periodic 1D chain."},{name:"rotated_surface",params:"distance (int)",desc:"Standard rotated surface code."},{name:"unrotated_surface",params:"distance (int)",desc:"Square lattice surface code."},{name:"toric",params:"distance (int)",desc:"Toric code with periodic boundaries."},{name:"heavy_hex",params:"distance (int)",desc:"Heavy-hex lattice."},{name:"hypergraph_product",params:"distance (int)",desc:"CSS code from repetition seed."},{name:"bicycle",params:"circulant size (int)",desc:"qLDPC bicycle code."},{name:"bivariate_bicycle",params:"preset index (int)",desc:"Bivariate bicycle presets (qLDPC)."},{name:"color_code",params:"triangular size (int)",desc:"Triangular & 2D 4.8.8 colour codes."}],d=["Code Explorer","Decoder Lab","Benchmark","Batch & Streaming","Hardware","Diagnostics","Documentation","Lab & Personal Info","Console"];return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"QECTOR Workbench - Windows v1.0.7 and Linux v1.0.7",description:`QECTOR Workbench desktop GUI and MCP releases: ${a.label} ${a.version} (${a.arch}) with ${a.mcpTools} tools and a ${a.backendVersion} backend, ${r.label} ${r.version} with ${r.mcpTools} tools.`}),e.jsxs("div",{className:"bg-emerald-950/50 border-b border-emerald-500/30 py-2.5 text-center text-sm px-4",children:[e.jsx("span",{className:"text-emerald-400 font-semibold",children:"Free Desktop Application:"})," ",o.map((s,n)=>e.jsxs("span",{children:[e.jsxs("a",{href:s.releaseUrl,className:"underline hover:text-emerald-300 transition-colors",target:"_blank",rel:"noopener noreferrer",children:[s.label," ",s.version," · published ",s.releaseDate," · ",s.mcpTools," MCP tools"]}),nt(s,0),className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"v1.0.7 ×2",label:"Live releases (Win / Linux)"},{value:`${a.mcpTools}`,label:`MCP tools per ${a.label} release`},{value:"19",label:"Named kinds (17 + 2 routing)"},{value:"10",label:"Quantum Code Families"}].map(s=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-3xl mb-1",children:s.value}),e.jsx("div",{className:"text-secondary text-sm",children:s.label})]},s.label))}),e.jsxs("div",{ref:s=>t(s,1),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"Inside the Workbench"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Nine workspaces are documented for the live v1.0.7 (Windows/Linux) releases:"," ",d.map((s,n)=>e.jsxs("span",{children:[e.jsx("span",{className:"text-primary font-medium",children:s}),ne.jsxs("div",{className:"bg-void border border-gridline rounded-xl p-5",children:[e.jsx("span",{className:"text-cyan-300 font-semibold text-sm block mb-2",children:s}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Explore this workspace with the release documentation and inspect results on your own machine. No hardware-specific run data is published here."})]},s))})]}),e.jsxs("div",{ref:s=>t(s,2),className:"card-surface space-y-5",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Downloads"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-5",children:[e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Windows x64 · ",a.version]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Portable single executable and release ZIP. No installer required, no admin rights. The app makes no online update checks."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",a.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:a.artifact}),", then launch directly."]}),e.jsxs("li",{children:["Headless MCP server: ",e.jsx("code",{className:"text-cyan-300",children:"QectorWorkbench-Portable.exe --mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"%LOCALAPPDATA%\\QectorWorkbench"})]}),e.jsxs("li",{children:["Exe SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:a.artifactSha256})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:a.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Windows Portable (.exe)"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-windows/releases/download/v1.0.7/QectorWorkbench-v1.0.7-Windows-x64-Public.zip",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Full ZIP Archive"}),e.jsx("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Linux x64 · ",r.version]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed",children:["Published ",r.version," portable ELF executable and Debian (.deb) package with bundled qector-decoder-v3 ",r.backendVersion," backend and ",r.mcpTools,"-tool MCP server."]}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",r.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:r.artifact})," or the Debian package."]}),e.jsxs("li",{children:["Headless MCP server: append ",e.jsx("code",{className:"text-cyan-300",children:"--mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"~/.local/share/QectorWorkbench"})]}),e.jsxs("li",{children:["Portable SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:r.artifactSha256})]}),e.jsxs("li",{children:["Debian SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:"5221dc9557319f2c55e6048ab30eb4a080d603abc9bab3d2b4cde01ef5b8aa45"})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:r.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Linux Portable"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-linux/releases/download/v1.0.7/qector-workbench_1.0.7_amd64.deb",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Debian Package (.deb)"}),e.jsx("a",{href:r.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3 opacity-60",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-base",children:"macOS arm64 - not ready yet"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Apple silicon build requires a build on Apple hardware and is not included until that build is produced and signed."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsx("li",{children:"Requires Apple hardware build - coming soon"}),e.jsx("li",{children:"No artifact yet - check back for macOS release"}),e.jsx("li",{children:"Windows and Linux v1.0.7 are live with 19 decoders"})]}),e.jsx("span",{className:"text-muted-foreground text-xs",children:"Not available yet"})]})]}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl text-xs text-secondary leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Verify your download:"})," SHA-256 checksums and GPG signature files (.asc) for every file are published in the release notes. Override the runtime data directory with ",e.jsx("code",{className:"text-cyan-300",children:"QECTOR_DATA_DIR"}),"."]})]}),e.jsxs("div",{ref:s=>t(s,3),className:"card-surface space-y-6",children:[e.jsxs("div",{className:"flex flex-col md:flex-row md:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Integrated Decoders"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"All 19 named kinds (17 concrete configurations plus AutoDecoder and Auto Router) are exposed through the Workbench MCP server. No benchmark figures are published on the site: run the included harness to measure your own hardware."})]}),e.jsxs("span",{className:"text-xs px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 text-cyan-300 rounded-full font-mono",children:["Windows & Linux backend qector_decoder_v3 ",a.backendVersion]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground leading-relaxed",children:["Each v1.0.7 release (Windows/Linux) declares ",e.jsx("strong",{className:"text-secondary",children:"19 named kinds: 17 concrete configurations plus 2 orchestration entries"})," against its bundled qector_decoder_v3 ",a.backendVersion," backend. Consult each release's included manuals for platform-specific coverage."]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"Decoder Kind"}),e.jsx("th",{className:"py-3 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-3 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:m.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3 font-mono font-semibold text-primary",children:s.kind}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.desc})]},s.kind))})]})})]}),e.jsxs("div",{ref:s=>t(s,4),children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"10 Supported Code Families"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["The published releases cover ",e.jsx("strong",{className:"text-primary",children:"10 code families"}),", including qLDPC and colour codes."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:h.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl space-y-2",children:[e.jsx("span",{className:"font-mono text-cyan-300 font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground font-mono",children:["Param: ",s.params]}),e.jsx("p",{className:"text-xs text-secondary",children:s.desc})]},s.name))})]}),e.jsxs("div",{ref:s=>t(s,5),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-6",children:"Workbench Components"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"Desktop GUI",desc:"CustomTkinter desktop UI for Windows and Linux. Visual circuit builder, syndrome viewer, decoder performance dashboard, and a distance slider covering d3-d63 on supported families."},{name:"MCP Tools",desc:"Native Model Context Protocol server over stdio JSON-RPC 2.0, launched with --mcp and usable headlessly with no display. Connects AI agents directly to decoder execution and diagnostics."},{name:"Self-Contained",desc:"Bundles its own Python runtime, the scientific stack, and the qector_decoder_v3 1.0.0 wheel. No system Python or pip required; the app makes no online update checks."},{name:"Self / Auto-Debug Layer",desc:"Verifies H·c == s on every decode with a full attempt trace, and falls back across decoders automatically when a decoder fails to produce a faithful correction."},{name:"Hardware Dashboard",desc:"Auto-detects CUDA, OpenCL, and CPU backends, and reports OpenCL absence honestly: it names why a backend is unavailable rather than printing a bare N/A."},{name:"Lab & Personal Info",desc:"Deposit profile (author, ORCID, affiliation, DOI, funding, keywords) for generated reports, plus decoder license-key installation with a live tier readout."},{name:"Documentation Export",desc:"Export documentation and evidence in the formats supported by the selected release, with optional .zenodo.json and CITATION.cff deposit sidecars."},{name:"Bundled Manuals & EULA",desc:"Each release ships an API Reference, MCP Integration Guide, Quick Start Guide, a per-OS User Manual, a machine-readable LLM manual, and EULA.txt, with SHA-256 checksums for every file."}].map(s=>e.jsx(u,{title:s.name,desc:s.desc},s.name))})]}),e.jsxs("div",{ref:s=>t(s,6),className:"space-y-6",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold",children:"Decoder Sandbox"}),e.jsx("p",{className:"text-secondary text-sm",children:"Below is an interactive sandbox replicating the basic topological planar code matching module inside QECTOR Workbench. Click to inject errors and inspect Blossom correction paths in real time."}),e.jsx(b,{})]}),e.jsxs("div",{ref:s=>t(s,7),children:[e.jsx(f,{title:"Documentation & Reference",statement:"QECTOR Workbench documentation is published alongside each app release. The Windows v1.0.7 and Linux v1.0.7 builds ship per-OS manuals and SHA-256 checksums; use the release-specific manuals for your platform."}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 mt-4",children:[e.jsxs("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Manuals & EULA"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"GitHub Releases"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"API Reference, MCP guide, Quick Start, per-OS manual"})]}),e.jsxs(i,{to:"/evidence",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Validation & Evidence"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/evidence"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Validation reports and SHA-256 sealed artifact manifests"})]}),e.jsxs(i,{to:"/technical-reference",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Architecture Whitepaper"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/technical-reference"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Technical specification & design"})]})]})]}),e.jsx("div",{className:"text-center pt-4",children:e.jsx(i,{to:"/contact",className:"btn-cyan",children:"Contact for Technical Support"})})]})})]})}export{_ as default}; diff --git a/assets/Workbench-Ct-U8BKA.js b/assets/Workbench-Ct-U8BKA.js deleted file mode 100644 index bc6a80f4..00000000 --- a/assets/Workbench-Ct-U8BKA.js +++ /dev/null @@ -1 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,A as u,Q as b,E as f}from"./index-Bh9DBCb3.js";import{N as g}from"./NeuralReveal-D-EQoOl2.js";import{g as c,S as y}from"./vendor-gsap-a3sj5zmn.js";import{W as o}from"./releases-1-HBloZv.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";c.registerPlugin(y);const[a,r]=o;function _(){const l=x.useRef([]);x.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=c.context(()=>{l.current.filter(Boolean).forEach(n=>{c.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const t=(s,n)=>{s&&(l.current[n]=s)},m=[{kind:"union_find",type:"Graphlike",desc:"Fast approximate Union-Find decoding; higher LER than exact MWPM."},{kind:"fast_union_find",type:"Graphlike",desc:"Optimized Union-Find hot path; approximate."},{kind:"blossom",type:"Universal",desc:"Weight-optimal exact minimum-weight perfect matching (Edmonds' Blossom)."},{kind:"sparse_blossom",type:"Graphlike",desc:"Event-driven Sparse Blossom with radix-heap region growth (experimental)."},{kind:"bp_osd",type:"Universal / qLDPC",desc:"Belief propagation + ordered-statistics decoding for LDPC / qLDPC codes."},{kind:"auto",type:"Graphlike",desc:"Self-selecting AutoDecoder: picks the best available decoder for the code."},{kind:"hybrid",type:"Graphlike",desc:"Combines a fast heuristic pass with exact matching."},{kind:"lookup_table",type:"Small (<20 checks)",desc:"Precomputed syndrome-to-correction table with O(1) lookup."},{kind:"predecoded",type:"Graphlike",desc:"Fast pre-decoding pass that resolves easy/low-weight syndromes."},{kind:"auto_router",type:"Universal",desc:"Policy decoder: inspects the code and dispatches the best concrete decoder."},{kind:"hybrid_cascade",type:"Graphlike",desc:"Union-Find pre-filter escalating to Blossom/BP-OSD."},{kind:"gnn_belief_matching",type:"Graphlike",desc:"GNN-predicted per-qubit weights guide edge-weighted matching with fallback."},{kind:"belief_matching",type:"Universal",desc:"Sum-product BP posteriors reweight an exact Blossom matching."},{kind:"two_stage",type:"Graphlike",desc:"Decoupled X/Z sector decoders for CSS / colour codes."},{kind:"ambiguity_cluster",type:"Graphlike",desc:"Cluster-growth decoder for high noise or non-graphlike codes."},{kind:"colour_code",type:"Universal / qLDPC",desc:"BP-OSD hypergraph decoder over undecomposed detector error models."},{kind:"space_time",type:"Universal",desc:"Space-time decoder for multi-round decoding (experimental)."},{kind:"spacetime_mwpm",type:"Multi-round",desc:"Space-time MWPM for phenomenological & circuit-level decoding."},{kind:"soft_llr",type:"Soft-decision",desc:"Log-likelihood-ratio-weighted decoding."}],h=[{name:"repetition",params:"distance (int)",desc:"1D chain parity-check code."},{name:"ring",params:"distance (int)",desc:"Periodic 1D chain."},{name:"rotated_surface",params:"distance (int)",desc:"Standard rotated surface code."},{name:"unrotated_surface",params:"distance (int)",desc:"Square lattice surface code."},{name:"toric",params:"distance (int)",desc:"Toric code with periodic boundaries."},{name:"heavy_hex",params:"distance (int)",desc:"Heavy-hex lattice."},{name:"hypergraph_product",params:"distance (int)",desc:"CSS code from repetition seed."},{name:"bicycle",params:"circulant size (int)",desc:"qLDPC bicycle code."},{name:"bivariate_bicycle",params:"preset index (int)",desc:"Bivariate bicycle presets (qLDPC)."},{name:"color_code",params:"triangular size (int)",desc:"Triangular & 2D 4.8.8 colour codes."}],d=["Code Explorer","Decoder Lab","Benchmark","Batch & Streaming","Hardware","Diagnostics","Documentation","Lab & Personal Info","Console"];return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"QECTOR Workbench - Windows v1.0.7 and Linux v1.0.7",description:`QECTOR Workbench desktop GUI and MCP releases: ${a.label} ${a.version} (${a.arch}) with ${a.mcpTools} tools and a ${a.backendVersion} backend, ${r.label} ${r.version} with ${r.mcpTools} tools.`}),e.jsxs("div",{className:"bg-emerald-950/50 border-b border-emerald-500/30 py-2.5 text-center text-sm px-4",children:[e.jsx("span",{className:"text-emerald-400 font-semibold",children:"Free Desktop Application:"})," ",o.map((s,n)=>e.jsxs("span",{children:[e.jsxs("a",{href:s.releaseUrl,className:"underline hover:text-emerald-300 transition-colors",target:"_blank",rel:"noopener noreferrer",children:[s.label," ",s.version," · published ",s.releaseDate," · ",s.mcpTools," MCP tools"]}),nt(s,0),className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"v1.0.7 ×2",label:"Live releases (Win / Linux)"},{value:`${a.mcpTools}`,label:`MCP tools per ${a.label} release`},{value:"19",label:"Named kinds (17 + 2 routing)"},{value:"10",label:"Quantum Code Families"}].map(s=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-3xl mb-1",children:s.value}),e.jsx("div",{className:"text-secondary text-sm",children:s.label})]},s.label))}),e.jsxs("div",{ref:s=>t(s,1),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"Inside the Workbench"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Nine workspaces are documented for the live v1.0.7 (Windows/Linux) releases:"," ",d.map((s,n)=>e.jsxs("span",{children:[e.jsx("span",{className:"text-primary font-medium",children:s}),ne.jsxs("div",{className:"bg-void border border-gridline rounded-xl p-5",children:[e.jsx("span",{className:"text-cyan-300 font-semibold text-sm block mb-2",children:s}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Explore this workspace with the release documentation and inspect results on your own machine. No hardware-specific run data is published here."})]},s))})]}),e.jsxs("div",{ref:s=>t(s,2),className:"card-surface space-y-5",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Downloads"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-5",children:[e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Windows x64 · ",a.version]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Portable single executable and release ZIP. No installer required, no admin rights. The app makes no online update checks."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",a.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:a.artifact}),", then launch directly."]}),e.jsxs("li",{children:["Headless MCP server: ",e.jsx("code",{className:"text-cyan-300",children:"QectorWorkbench-Portable.exe --mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"%LOCALAPPDATA%\\QectorWorkbench"})]}),e.jsxs("li",{children:["Exe SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:a.artifactSha256})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:a.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Windows Portable (.exe)"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-windows/releases/download/v1.0.7/QectorWorkbench-v1.0.7-Windows-x64-Public.zip",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Full ZIP Archive"}),e.jsx("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Linux x64 · ",r.version]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed",children:["Published ",r.version," portable ELF executable and Debian (.deb) package with bundled qector-decoder-v3 ",r.backendVersion," backend and ",r.mcpTools,"-tool MCP server."]}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",r.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:r.artifact})," or the Debian package."]}),e.jsxs("li",{children:["Headless MCP server: append ",e.jsx("code",{className:"text-cyan-300",children:"--mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"~/.local/share/QectorWorkbench"})]}),e.jsxs("li",{children:["Portable SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:r.artifactSha256})]}),e.jsxs("li",{children:["Debian SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:"5221dc9557319f2c55e6048ab30eb4a080d603abc9bab3d2b4cde01ef5b8aa45"})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:r.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Linux Portable"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-linux/releases/download/v1.0.7/qector-workbench_1.0.7_amd64.deb",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Debian Package (.deb)"}),e.jsx("a",{href:r.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3 opacity-60",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-base",children:"macOS arm64 - not ready yet"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Apple silicon build requires a build on Apple hardware and is not included until that build is produced and signed."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsx("li",{children:"Requires Apple hardware build - coming soon"}),e.jsx("li",{children:"No artifact yet - check back for macOS release"}),e.jsx("li",{children:"Windows and Linux v1.0.7 are live with 19 decoders"})]}),e.jsx("span",{className:"text-muted-foreground text-xs",children:"Not available yet"})]})]}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl text-xs text-secondary leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Verify your download:"})," SHA-256 checksums and GPG signature files (.asc) for every file are published in the release notes. Override the runtime data directory with ",e.jsx("code",{className:"text-cyan-300",children:"QECTOR_DATA_DIR"}),"."]})]}),e.jsxs("div",{ref:s=>t(s,3),className:"card-surface space-y-6",children:[e.jsxs("div",{className:"flex flex-col md:flex-row md:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Integrated Decoders"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"All 19 named kinds (17 concrete configurations plus AutoDecoder and Auto Router) are exposed through the Workbench MCP server. No benchmark figures are published on the site: run the included harness to measure your own hardware."})]}),e.jsxs("span",{className:"text-xs px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 text-cyan-300 rounded-full font-mono",children:["Windows & Linux backend qector_decoder_v3 ",a.backendVersion]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground leading-relaxed",children:["Each v1.0.7 release (Windows/Linux) declares ",e.jsx("strong",{className:"text-secondary",children:"19 named kinds: 17 concrete configurations plus 2 orchestration entries"})," against its bundled qector_decoder_v3 ",a.backendVersion," backend. Consult each release's included manuals for platform-specific coverage."]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"Decoder Kind"}),e.jsx("th",{className:"py-3 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-3 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:m.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3 font-mono font-semibold text-primary",children:s.kind}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.desc})]},s.kind))})]})})]}),e.jsxs("div",{ref:s=>t(s,4),children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"10 Supported Code Families"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["The published releases cover ",e.jsx("strong",{className:"text-primary",children:"10 code families"}),", including qLDPC and colour codes."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:h.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl space-y-2",children:[e.jsx("span",{className:"font-mono text-cyan-300 font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground font-mono",children:["Param: ",s.params]}),e.jsx("p",{className:"text-xs text-secondary",children:s.desc})]},s.name))})]}),e.jsxs("div",{ref:s=>t(s,5),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-6",children:"Workbench Components"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"Desktop GUI",desc:"CustomTkinter desktop UI for Windows and Linux. Visual circuit builder, syndrome viewer, decoder performance dashboard, and a distance slider covering d3-d63 on supported families."},{name:"MCP Tools",desc:"Native Model Context Protocol server over stdio JSON-RPC 2.0, launched with --mcp and usable headlessly with no display. Connects AI agents directly to decoder execution and diagnostics."},{name:"Self-Contained",desc:"Bundles its own Python runtime, the scientific stack, and the qector_decoder_v3 1.0.0 wheel. No system Python or pip required; the app makes no online update checks."},{name:"Self / Auto-Debug Layer",desc:"Verifies H·c == s on every decode with a full attempt trace, and falls back across decoders automatically when a decoder fails to produce a faithful correction."},{name:"Hardware Dashboard",desc:"Auto-detects CUDA, OpenCL, and CPU backends, and reports OpenCL absence honestly: it names why a backend is unavailable rather than printing a bare N/A."},{name:"Lab & Personal Info",desc:"Deposit profile (author, ORCID, affiliation, DOI, funding, keywords) for generated reports, plus decoder license-key installation with a live tier readout."},{name:"Documentation Export",desc:"Export documentation and evidence in the formats supported by the selected release, with optional .zenodo.json and CITATION.cff deposit sidecars."},{name:"Bundled Manuals & EULA",desc:"Each release ships an API Reference, MCP Integration Guide, Quick Start Guide, a per-OS User Manual, a machine-readable LLM manual, and EULA.txt, with SHA-256 checksums for every file."}].map(s=>e.jsx(u,{title:s.name,desc:s.desc},s.name))})]}),e.jsxs("div",{ref:s=>t(s,6),className:"space-y-6",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold",children:"Decoder Sandbox"}),e.jsx("p",{className:"text-secondary text-sm",children:"Below is an interactive sandbox replicating the basic topological planar code matching module inside QECTOR Workbench. Click to inject errors and inspect Blossom correction paths in real time."}),e.jsx(b,{})]}),e.jsxs("div",{ref:s=>t(s,7),children:[e.jsx(f,{title:"Documentation & Reference",statement:"QECTOR Workbench documentation is published alongside each app release. The Windows v1.0.7 and Linux v1.0.7 builds ship per-OS manuals and SHA-256 checksums; use the release-specific manuals for your platform."}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 mt-4",children:[e.jsxs("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Manuals & EULA"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"GitHub Releases"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"API Reference, MCP guide, Quick Start, per-OS manual"})]}),e.jsxs(i,{to:"/evidence",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Validation & Evidence"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/evidence"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Validation reports and SHA-256 sealed artifact manifests"})]}),e.jsxs(i,{to:"/technical-reference",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Architecture Whitepaper"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/technical-reference"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Technical specification & design"})]})]})]}),e.jsx("div",{className:"text-center pt-4",children:e.jsx(i,{to:"/contact",className:"btn-cyan",children:"Contact for Technical Support"})})]})})]})}export{_ as default}; diff --git a/assets/Workbench-Cwp5zsg1.js b/assets/Workbench-Cwp5zsg1.js deleted file mode 100644 index c3e595ad..00000000 --- a/assets/Workbench-Cwp5zsg1.js +++ /dev/null @@ -1 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,A as u,Q as b,E as f}from"./index-DRAXObZB.js";import{N as g}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as y}from"./vendor-gsap-a3sj5zmn.js";import{W as o}from"./releases-DiQz_IDu.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";c.registerPlugin(y);const[a,r]=o;function _(){const l=x.useRef([]);x.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=c.context(()=>{l.current.filter(Boolean).forEach(n=>{c.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const t=(s,n)=>{s&&(l.current[n]=s)},m=[{kind:"union_find",type:"Graphlike",desc:"Fast approximate Union-Find decoding; higher LER than exact MWPM."},{kind:"fast_union_find",type:"Graphlike",desc:"Optimized Union-Find hot path; approximate."},{kind:"blossom",type:"Universal",desc:"Weight-optimal exact minimum-weight perfect matching (Edmonds' Blossom)."},{kind:"sparse_blossom",type:"Graphlike",desc:"Event-driven Sparse Blossom with radix-heap region growth (experimental)."},{kind:"bp_osd",type:"Universal / qLDPC",desc:"Belief propagation + ordered-statistics decoding for LDPC / qLDPC codes."},{kind:"auto",type:"Graphlike",desc:"Self-selecting AutoDecoder: picks the best available decoder for the code."},{kind:"hybrid",type:"Graphlike",desc:"Combines a fast heuristic pass with exact matching."},{kind:"lookup_table",type:"Small (<20 checks)",desc:"Precomputed syndrome-to-correction table with O(1) lookup."},{kind:"predecoded",type:"Graphlike",desc:"Fast pre-decoding pass that resolves easy/low-weight syndromes."},{kind:"auto_router",type:"Universal",desc:"Policy decoder: inspects the code and dispatches the best concrete decoder."},{kind:"hybrid_cascade",type:"Graphlike",desc:"Union-Find pre-filter escalating to Blossom/BP-OSD."},{kind:"gnn_belief_matching",type:"Graphlike",desc:"GNN-predicted per-qubit weights guide edge-weighted matching with fallback."},{kind:"belief_matching",type:"Universal",desc:"Sum-product BP posteriors reweight an exact Blossom matching."},{kind:"two_stage",type:"Graphlike",desc:"Decoupled X/Z sector decoders for CSS / colour codes."},{kind:"ambiguity_cluster",type:"Graphlike",desc:"Cluster-growth decoder for high noise or non-graphlike codes."},{kind:"colour_code",type:"Universal / qLDPC",desc:"BP-OSD hypergraph decoder over undecomposed detector error models."},{kind:"space_time",type:"Universal",desc:"Space-time decoder for multi-round decoding (experimental)."},{kind:"spacetime_mwpm",type:"Multi-round",desc:"Space-time MWPM for phenomenological & circuit-level decoding."},{kind:"soft_llr",type:"Soft-decision",desc:"Log-likelihood-ratio-weighted decoding."}],h=[{name:"repetition",params:"distance (int)",desc:"1D chain parity-check code."},{name:"ring",params:"distance (int)",desc:"Periodic 1D chain."},{name:"rotated_surface",params:"distance (int)",desc:"Standard rotated surface code."},{name:"unrotated_surface",params:"distance (int)",desc:"Square lattice surface code."},{name:"toric",params:"distance (int)",desc:"Toric code with periodic boundaries."},{name:"heavy_hex",params:"distance (int)",desc:"Heavy-hex lattice."},{name:"hypergraph_product",params:"distance (int)",desc:"CSS code from repetition seed."},{name:"bicycle",params:"circulant size (int)",desc:"qLDPC bicycle code."},{name:"bivariate_bicycle",params:"preset index (int)",desc:"Bivariate bicycle presets (qLDPC)."},{name:"color_code",params:"triangular size (int)",desc:"Triangular & 2D 4.8.8 colour codes."}],d=["Code Explorer","Decoder Lab","Benchmark","Batch & Streaming","Hardware","Diagnostics","Documentation","Lab & Personal Info","Console"];return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"QECTOR Workbench - Windows v1.0.7 and Linux v1.0.7",description:`QECTOR Workbench desktop GUI and MCP releases: ${a.label} ${a.version} (${a.arch}) with ${a.mcpTools} tools and a ${a.backendVersion} backend, ${r.label} ${r.version} with ${r.mcpTools} tools.`}),e.jsxs("div",{className:"bg-emerald-950/50 border-b border-emerald-500/30 py-2.5 text-center text-sm px-4",children:[e.jsx("span",{className:"text-emerald-400 font-semibold",children:"Free Desktop Application:"})," ",o.map((s,n)=>e.jsxs("span",{children:[e.jsxs("a",{href:s.releaseUrl,className:"underline hover:text-emerald-300 transition-colors",target:"_blank",rel:"noopener noreferrer",children:[s.label," ",s.version," · published ",s.releaseDate," · ",s.mcpTools," MCP tools"]}),nt(s,0),className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"v1.0.7 ×2",label:"Live releases (Win / Linux)"},{value:`${a.mcpTools}`,label:`MCP tools per ${a.label} release`},{value:"19",label:"Named kinds (17 + 2 routing)"},{value:"10",label:"Quantum Code Families"}].map(s=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-3xl mb-1",children:s.value}),e.jsx("div",{className:"text-secondary text-sm",children:s.label})]},s.label))}),e.jsxs("div",{ref:s=>t(s,1),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"Inside the Workbench"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Nine workspaces are documented for the live v1.0.7 (Windows/Linux) releases:"," ",d.map((s,n)=>e.jsxs("span",{children:[e.jsx("span",{className:"text-primary font-medium",children:s}),ne.jsxs("div",{className:"bg-void border border-gridline rounded-xl p-5",children:[e.jsx("span",{className:"text-cyan-300 font-semibold text-sm block mb-2",children:s}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Explore this workspace with the release documentation and inspect results on your own machine. No hardware-specific run data is published here."})]},s))})]}),e.jsxs("div",{ref:s=>t(s,2),className:"card-surface space-y-5",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Downloads"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-5",children:[e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Windows x64 · ",a.version]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Portable single executable and release ZIP. No installer required, no admin rights. The app makes no online update checks."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",a.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:a.artifact}),", then launch directly."]}),e.jsxs("li",{children:["Headless MCP server: ",e.jsx("code",{className:"text-cyan-300",children:"QectorWorkbench-Portable.exe --mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"%LOCALAPPDATA%\\QectorWorkbench"})]}),e.jsxs("li",{children:["Exe SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:a.artifactSha256})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:a.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Windows Portable (.exe)"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-windows/releases/download/v1.0.7/QectorWorkbench-v1.0.7-Windows-x64-Public.zip",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Full ZIP Archive"}),e.jsx("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Linux x64 · ",r.version]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed",children:["Published ",r.version," portable ELF executable and Debian (.deb) package with bundled qector-decoder-v3 ",r.backendVersion," backend and ",r.mcpTools,"-tool MCP server."]}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",r.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:r.artifact})," or the Debian package."]}),e.jsxs("li",{children:["Headless MCP server: append ",e.jsx("code",{className:"text-cyan-300",children:"--mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"~/.local/share/QectorWorkbench"})]}),e.jsxs("li",{children:["Portable SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:r.artifactSha256})]}),e.jsxs("li",{children:["Debian SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:"5221dc9557319f2c55e6048ab30eb4a080d603abc9bab3d2b4cde01ef5b8aa45"})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:r.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Linux Portable"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-linux/releases/download/v1.0.7/qector-workbench_1.0.7_amd64.deb",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Debian Package (.deb)"}),e.jsx("a",{href:r.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3 opacity-60",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-base",children:"macOS arm64 - not ready yet"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Apple silicon build requires a build on Apple hardware and is not included until that build is produced and signed."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsx("li",{children:"Requires Apple hardware build - coming soon"}),e.jsx("li",{children:"No artifact yet - check back for macOS release"}),e.jsx("li",{children:"Windows and Linux v1.0.7 are live with 19 decoders"})]}),e.jsx("span",{className:"text-muted-foreground text-xs",children:"Not available yet"})]})]}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl text-xs text-secondary leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Verify your download:"})," SHA-256 checksums and GPG signature files (.asc) for every file are published in the release notes. Override the runtime data directory with ",e.jsx("code",{className:"text-cyan-300",children:"QECTOR_DATA_DIR"}),"."]})]}),e.jsxs("div",{ref:s=>t(s,3),className:"card-surface space-y-6",children:[e.jsxs("div",{className:"flex flex-col md:flex-row md:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Integrated Decoders"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"All 19 named kinds (17 concrete configurations plus AutoDecoder and Auto Router) are exposed through the Workbench MCP server. No benchmark figures are published on the site: run the included harness to measure your own hardware."})]}),e.jsxs("span",{className:"text-xs px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 text-cyan-300 rounded-full font-mono",children:["Windows & Linux backend qector_decoder_v3 ",a.backendVersion]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground leading-relaxed",children:["Each v1.0.7 release (Windows/Linux) declares ",e.jsx("strong",{className:"text-secondary",children:"19 named kinds: 17 concrete configurations plus 2 orchestration entries"})," against its bundled qector_decoder_v3 ",a.backendVersion," backend. Consult each release's included manuals for platform-specific coverage."]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"Decoder Kind"}),e.jsx("th",{className:"py-3 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-3 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:m.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3 font-mono font-semibold text-primary",children:s.kind}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.desc})]},s.kind))})]})})]}),e.jsxs("div",{ref:s=>t(s,4),children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"10 Supported Code Families"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["The published releases cover ",e.jsx("strong",{className:"text-primary",children:"10 code families"}),", including qLDPC and colour codes."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:h.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl space-y-2",children:[e.jsx("span",{className:"font-mono text-cyan-300 font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground font-mono",children:["Param: ",s.params]}),e.jsx("p",{className:"text-xs text-secondary",children:s.desc})]},s.name))})]}),e.jsxs("div",{ref:s=>t(s,5),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-6",children:"Workbench Components"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"Desktop GUI",desc:"CustomTkinter desktop UI for Windows and Linux. Visual circuit builder, syndrome viewer, decoder performance dashboard, and a distance slider covering d3-d63 on supported families."},{name:"MCP Tools",desc:"Native Model Context Protocol server over stdio JSON-RPC 2.0, launched with --mcp and usable headlessly with no display. Connects AI agents directly to decoder execution and diagnostics."},{name:"Self-Contained",desc:"Bundles its own Python runtime, the scientific stack, and the qector_decoder_v3 1.0.0 wheel. No system Python or pip required; the app makes no online update checks."},{name:"Self / Auto-Debug Layer",desc:"Verifies H·c == s on every decode with a full attempt trace, and falls back across decoders automatically when a decoder fails to produce a faithful correction."},{name:"Hardware Dashboard",desc:"Auto-detects CUDA, OpenCL, and CPU backends, and reports OpenCL absence honestly: it names why a backend is unavailable rather than printing a bare N/A."},{name:"Lab & Personal Info",desc:"Deposit profile (author, ORCID, affiliation, DOI, funding, keywords) for generated reports, plus decoder license-key installation with a live tier readout."},{name:"Documentation Export",desc:"Export documentation and evidence in the formats supported by the selected release, with optional .zenodo.json and CITATION.cff deposit sidecars."},{name:"Bundled Manuals & EULA",desc:"Each release ships an API Reference, MCP Integration Guide, Quick Start Guide, a per-OS User Manual, a machine-readable LLM manual, and EULA.txt, with SHA-256 checksums for every file."}].map(s=>e.jsx(u,{title:s.name,desc:s.desc},s.name))})]}),e.jsxs("div",{ref:s=>t(s,6),className:"space-y-6",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold",children:"Decoder Sandbox"}),e.jsx("p",{className:"text-secondary text-sm",children:"Below is an interactive sandbox replicating the basic topological planar code matching module inside QECTOR Workbench. Click to inject errors and inspect Blossom correction paths in real time."}),e.jsx(b,{})]}),e.jsxs("div",{ref:s=>t(s,7),children:[e.jsx(f,{title:"Documentation & Reference",statement:"QECTOR Workbench documentation is published alongside each app release. The Windows v1.0.7 and Linux v1.0.7 builds ship per-OS manuals and SHA-256 checksums; use the release-specific manuals for your platform."}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 mt-4",children:[e.jsxs("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Manuals & EULA"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"GitHub Releases"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"API Reference, MCP guide, Quick Start, per-OS manual"})]}),e.jsxs(i,{to:"/evidence",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Validation & Evidence"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/evidence"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Validation reports and SHA-256 sealed artifact manifests"})]}),e.jsxs(i,{to:"/technical-reference",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Architecture Whitepaper"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/technical-reference"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Technical specification & design"})]})]})]}),e.jsx("div",{className:"text-center pt-4",children:e.jsx(i,{to:"/contact",className:"btn-cyan",children:"Contact for Technical Support"})})]})})]})}export{_ as default}; diff --git a/assets/Workbench-D9a6HjUh.js b/assets/Workbench-D9a6HjUh.js deleted file mode 100644 index c2731776..00000000 --- a/assets/Workbench-D9a6HjUh.js +++ /dev/null @@ -1 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,A as u,Q as b,E as f}from"./index-CxWP17m6.js";import{N as g}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as y}from"./vendor-gsap-a3sj5zmn.js";import{W as o}from"./releases-1-HBloZv.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";c.registerPlugin(y);const[a,r]=o;function _(){const l=x.useRef([]);x.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=c.context(()=>{l.current.filter(Boolean).forEach(n=>{c.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const t=(s,n)=>{s&&(l.current[n]=s)},m=[{kind:"union_find",type:"Graphlike",desc:"Fast approximate Union-Find decoding; higher LER than exact MWPM."},{kind:"fast_union_find",type:"Graphlike",desc:"Optimized Union-Find hot path; approximate."},{kind:"blossom",type:"Universal",desc:"Weight-optimal exact minimum-weight perfect matching (Edmonds' Blossom)."},{kind:"sparse_blossom",type:"Graphlike",desc:"Event-driven Sparse Blossom with radix-heap region growth (experimental)."},{kind:"bp_osd",type:"Universal / qLDPC",desc:"Belief propagation + ordered-statistics decoding for LDPC / qLDPC codes."},{kind:"auto",type:"Graphlike",desc:"Self-selecting AutoDecoder: picks the best available decoder for the code."},{kind:"hybrid",type:"Graphlike",desc:"Combines a fast heuristic pass with exact matching."},{kind:"lookup_table",type:"Small (<20 checks)",desc:"Precomputed syndrome-to-correction table with O(1) lookup."},{kind:"predecoded",type:"Graphlike",desc:"Fast pre-decoding pass that resolves easy/low-weight syndromes."},{kind:"auto_router",type:"Universal",desc:"Policy decoder: inspects the code and dispatches the best concrete decoder."},{kind:"hybrid_cascade",type:"Graphlike",desc:"Union-Find pre-filter escalating to Blossom/BP-OSD."},{kind:"gnn_belief_matching",type:"Graphlike",desc:"GNN-predicted per-qubit weights guide edge-weighted matching with fallback."},{kind:"belief_matching",type:"Universal",desc:"Sum-product BP posteriors reweight an exact Blossom matching."},{kind:"two_stage",type:"Graphlike",desc:"Decoupled X/Z sector decoders for CSS / colour codes."},{kind:"ambiguity_cluster",type:"Graphlike",desc:"Cluster-growth decoder for high noise or non-graphlike codes."},{kind:"colour_code",type:"Universal / qLDPC",desc:"BP-OSD hypergraph decoder over undecomposed detector error models."},{kind:"space_time",type:"Universal",desc:"Space-time decoder for multi-round decoding (experimental)."},{kind:"spacetime_mwpm",type:"Multi-round",desc:"Space-time MWPM for phenomenological & circuit-level decoding."},{kind:"soft_llr",type:"Soft-decision",desc:"Log-likelihood-ratio-weighted decoding."}],h=[{name:"repetition",params:"distance (int)",desc:"1D chain parity-check code."},{name:"ring",params:"distance (int)",desc:"Periodic 1D chain."},{name:"rotated_surface",params:"distance (int)",desc:"Standard rotated surface code."},{name:"unrotated_surface",params:"distance (int)",desc:"Square lattice surface code."},{name:"toric",params:"distance (int)",desc:"Toric code with periodic boundaries."},{name:"heavy_hex",params:"distance (int)",desc:"Heavy-hex lattice."},{name:"hypergraph_product",params:"distance (int)",desc:"CSS code from repetition seed."},{name:"bicycle",params:"circulant size (int)",desc:"qLDPC bicycle code."},{name:"bivariate_bicycle",params:"preset index (int)",desc:"Bivariate bicycle presets (qLDPC)."},{name:"color_code",params:"triangular size (int)",desc:"Triangular & 2D 4.8.8 colour codes."}],d=["Code Explorer","Decoder Lab","Benchmark","Batch & Streaming","Hardware","Diagnostics","Documentation","Lab & Personal Info","Console"];return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"QECTOR Workbench - Windows v1.0.7 and Linux v1.0.7",description:`QECTOR Workbench desktop GUI and MCP releases: ${a.label} ${a.version} (${a.arch}) with ${a.mcpTools} tools and a ${a.backendVersion} backend, ${r.label} ${r.version} with ${r.mcpTools} tools.`}),e.jsxs("div",{className:"bg-emerald-950/50 border-b border-emerald-500/30 py-2.5 text-center text-sm px-4",children:[e.jsx("span",{className:"text-emerald-400 font-semibold",children:"Free Desktop Application:"})," ",o.map((s,n)=>e.jsxs("span",{children:[e.jsxs("a",{href:s.releaseUrl,className:"underline hover:text-emerald-300 transition-colors",target:"_blank",rel:"noopener noreferrer",children:[s.label," ",s.version," · published ",s.releaseDate," · ",s.mcpTools," MCP tools"]}),nt(s,0),className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"v1.0.7 ×2",label:"Live releases (Win / Linux)"},{value:`${a.mcpTools}`,label:`MCP tools per ${a.label} release`},{value:"19",label:"Named kinds (17 + 2 routing)"},{value:"10",label:"Quantum Code Families"}].map(s=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-3xl mb-1",children:s.value}),e.jsx("div",{className:"text-secondary text-sm",children:s.label})]},s.label))}),e.jsxs("div",{ref:s=>t(s,1),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"Inside the Workbench"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Nine workspaces are documented for the live v1.0.7 (Windows/Linux) releases:"," ",d.map((s,n)=>e.jsxs("span",{children:[e.jsx("span",{className:"text-primary font-medium",children:s}),ne.jsxs("div",{className:"bg-void border border-gridline rounded-xl p-5",children:[e.jsx("span",{className:"text-cyan-300 font-semibold text-sm block mb-2",children:s}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Explore this workspace with the release documentation and inspect results on your own machine. No hardware-specific run data is published here."})]},s))})]}),e.jsxs("div",{ref:s=>t(s,2),className:"card-surface space-y-5",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Downloads"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-5",children:[e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Windows x64 · ",a.version]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Portable single executable and release ZIP. No installer required, no admin rights. The app makes no online update checks."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",a.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:a.artifact}),", then launch directly."]}),e.jsxs("li",{children:["Headless MCP server: ",e.jsx("code",{className:"text-cyan-300",children:"QectorWorkbench-Portable.exe --mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"%LOCALAPPDATA%\\QectorWorkbench"})]}),e.jsxs("li",{children:["Exe SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:a.artifactSha256})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:a.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Windows Portable (.exe)"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-windows/releases/download/v1.0.7/QectorWorkbench-v1.0.7-Windows-x64-Public.zip",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Full ZIP Archive"}),e.jsx("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Linux x64 · ",r.version]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed",children:["Published ",r.version," portable ELF executable and Debian (.deb) package with bundled qector-decoder-v3 ",r.backendVersion," backend and ",r.mcpTools,"-tool MCP server."]}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",r.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:r.artifact})," or the Debian package."]}),e.jsxs("li",{children:["Headless MCP server: append ",e.jsx("code",{className:"text-cyan-300",children:"--mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"~/.local/share/QectorWorkbench"})]}),e.jsxs("li",{children:["Portable SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:r.artifactSha256})]}),e.jsxs("li",{children:["Debian SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:"5221dc9557319f2c55e6048ab30eb4a080d603abc9bab3d2b4cde01ef5b8aa45"})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:r.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Linux Portable"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-linux/releases/download/v1.0.7/qector-workbench_1.0.7_amd64.deb",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Debian Package (.deb)"}),e.jsx("a",{href:r.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3 opacity-60",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-base",children:"macOS arm64 - not ready yet"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Apple silicon build requires a build on Apple hardware and is not included until that build is produced and signed."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsx("li",{children:"Requires Apple hardware build - coming soon"}),e.jsx("li",{children:"No artifact yet - check back for macOS release"}),e.jsx("li",{children:"Windows and Linux v1.0.7 are live with 19 decoders"})]}),e.jsx("span",{className:"text-muted-foreground text-xs",children:"Not available yet"})]})]}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl text-xs text-secondary leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Verify your download:"})," SHA-256 checksums and GPG signature files (.asc) for every file are published in the release notes. Override the runtime data directory with ",e.jsx("code",{className:"text-cyan-300",children:"QECTOR_DATA_DIR"}),"."]})]}),e.jsxs("div",{ref:s=>t(s,3),className:"card-surface space-y-6",children:[e.jsxs("div",{className:"flex flex-col md:flex-row md:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Integrated Decoders"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"All 19 named kinds (17 concrete configurations plus AutoDecoder and Auto Router) are exposed through the Workbench MCP server. No benchmark figures are published on the site: run the included harness to measure your own hardware."})]}),e.jsxs("span",{className:"text-xs px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 text-cyan-300 rounded-full font-mono",children:["Windows & Linux backend qector_decoder_v3 ",a.backendVersion]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground leading-relaxed",children:["Each v1.0.7 release (Windows/Linux) declares ",e.jsx("strong",{className:"text-secondary",children:"19 named kinds: 17 concrete configurations plus 2 orchestration entries"})," against its bundled qector_decoder_v3 ",a.backendVersion," backend. Consult each release's included manuals for platform-specific coverage."]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"Decoder Kind"}),e.jsx("th",{className:"py-3 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-3 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:m.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3 font-mono font-semibold text-primary",children:s.kind}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.desc})]},s.kind))})]})})]}),e.jsxs("div",{ref:s=>t(s,4),children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"10 Supported Code Families"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["The published releases cover ",e.jsx("strong",{className:"text-primary",children:"10 code families"}),", including qLDPC and colour codes."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:h.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl space-y-2",children:[e.jsx("span",{className:"font-mono text-cyan-300 font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground font-mono",children:["Param: ",s.params]}),e.jsx("p",{className:"text-xs text-secondary",children:s.desc})]},s.name))})]}),e.jsxs("div",{ref:s=>t(s,5),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-6",children:"Workbench Components"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"Desktop GUI",desc:"CustomTkinter desktop UI for Windows and Linux. Visual circuit builder, syndrome viewer, decoder performance dashboard, and a distance slider covering d3-d63 on supported families."},{name:"MCP Tools",desc:"Native Model Context Protocol server over stdio JSON-RPC 2.0, launched with --mcp and usable headlessly with no display. Connects AI agents directly to decoder execution and diagnostics."},{name:"Self-Contained",desc:"Bundles its own Python runtime, the scientific stack, and the qector_decoder_v3 1.0.0 wheel. No system Python or pip required; the app makes no online update checks."},{name:"Self / Auto-Debug Layer",desc:"Verifies H·c == s on every decode with a full attempt trace, and falls back across decoders automatically when a decoder fails to produce a faithful correction."},{name:"Hardware Dashboard",desc:"Auto-detects CUDA, OpenCL, and CPU backends, and reports OpenCL absence honestly: it names why a backend is unavailable rather than printing a bare N/A."},{name:"Lab & Personal Info",desc:"Deposit profile (author, ORCID, affiliation, DOI, funding, keywords) for generated reports, plus decoder license-key installation with a live tier readout."},{name:"Documentation Export",desc:"Export documentation and evidence in the formats supported by the selected release, with optional .zenodo.json and CITATION.cff deposit sidecars."},{name:"Bundled Manuals & EULA",desc:"Each release ships an API Reference, MCP Integration Guide, Quick Start Guide, a per-OS User Manual, a machine-readable LLM manual, and EULA.txt, with SHA-256 checksums for every file."}].map(s=>e.jsx(u,{title:s.name,desc:s.desc},s.name))})]}),e.jsxs("div",{ref:s=>t(s,6),className:"space-y-6",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold",children:"Decoder Sandbox"}),e.jsx("p",{className:"text-secondary text-sm",children:"Below is an interactive sandbox replicating the basic topological planar code matching module inside QECTOR Workbench. Click to inject errors and inspect Blossom correction paths in real time."}),e.jsx(b,{})]}),e.jsxs("div",{ref:s=>t(s,7),children:[e.jsx(f,{title:"Documentation & Reference",statement:"QECTOR Workbench documentation is published alongside each app release. The Windows v1.0.7 and Linux v1.0.7 builds ship per-OS manuals and SHA-256 checksums; use the release-specific manuals for your platform."}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 mt-4",children:[e.jsxs("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Manuals & EULA"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"GitHub Releases"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"API Reference, MCP guide, Quick Start, per-OS manual"})]}),e.jsxs(i,{to:"/evidence",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Validation & Evidence"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/evidence"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Validation reports and SHA-256 sealed artifact manifests"})]}),e.jsxs(i,{to:"/technical-reference",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Architecture Whitepaper"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/technical-reference"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Technical specification & design"})]})]})]}),e.jsx("div",{className:"text-center pt-4",children:e.jsx(i,{to:"/contact",className:"btn-cyan",children:"Contact for Technical Support"})})]})})]})}export{_ as default}; diff --git a/assets/Workbench-D9zAZUIr.js b/assets/Workbench-D9zAZUIr.js deleted file mode 100644 index fed8f926..00000000 --- a/assets/Workbench-D9zAZUIr.js +++ /dev/null @@ -1 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,A as u,Q as b,E as f}from"./index-iVST85F-.js";import{N as g}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as y}from"./vendor-gsap-a3sj5zmn.js";import{W as o}from"./releases-DiQz_IDu.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";c.registerPlugin(y);const[a,r]=o;function _(){const l=x.useRef([]);x.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=c.context(()=>{l.current.filter(Boolean).forEach(n=>{c.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const t=(s,n)=>{s&&(l.current[n]=s)},m=[{kind:"union_find",type:"Graphlike",desc:"Fast approximate Union-Find decoding; higher LER than exact MWPM."},{kind:"fast_union_find",type:"Graphlike",desc:"Optimized Union-Find hot path; approximate."},{kind:"blossom",type:"Universal",desc:"Weight-optimal exact minimum-weight perfect matching (Edmonds' Blossom)."},{kind:"sparse_blossom",type:"Graphlike",desc:"Event-driven Sparse Blossom with radix-heap region growth (experimental)."},{kind:"bp_osd",type:"Universal / qLDPC",desc:"Belief propagation + ordered-statistics decoding for LDPC / qLDPC codes."},{kind:"auto",type:"Graphlike",desc:"Self-selecting AutoDecoder: picks the best available decoder for the code."},{kind:"hybrid",type:"Graphlike",desc:"Combines a fast heuristic pass with exact matching."},{kind:"lookup_table",type:"Small (<20 checks)",desc:"Precomputed syndrome-to-correction table with O(1) lookup."},{kind:"predecoded",type:"Graphlike",desc:"Fast pre-decoding pass that resolves easy/low-weight syndromes."},{kind:"auto_router",type:"Universal",desc:"Policy decoder: inspects the code and dispatches the best concrete decoder."},{kind:"hybrid_cascade",type:"Graphlike",desc:"Union-Find pre-filter escalating to Blossom/BP-OSD."},{kind:"gnn_belief_matching",type:"Graphlike",desc:"GNN-predicted per-qubit weights guide edge-weighted matching with fallback."},{kind:"belief_matching",type:"Universal",desc:"Sum-product BP posteriors reweight an exact Blossom matching."},{kind:"two_stage",type:"Graphlike",desc:"Decoupled X/Z sector decoders for CSS / colour codes."},{kind:"ambiguity_cluster",type:"Graphlike",desc:"Cluster-growth decoder for high noise or non-graphlike codes."},{kind:"colour_code",type:"Universal / qLDPC",desc:"BP-OSD hypergraph decoder over undecomposed detector error models."},{kind:"space_time",type:"Universal",desc:"Space-time decoder for multi-round decoding (experimental)."},{kind:"spacetime_mwpm",type:"Multi-round",desc:"Space-time MWPM for phenomenological & circuit-level decoding."},{kind:"soft_llr",type:"Soft-decision",desc:"Log-likelihood-ratio-weighted decoding."}],h=[{name:"repetition",params:"distance (int)",desc:"1D chain parity-check code."},{name:"ring",params:"distance (int)",desc:"Periodic 1D chain."},{name:"rotated_surface",params:"distance (int)",desc:"Standard rotated surface code."},{name:"unrotated_surface",params:"distance (int)",desc:"Square lattice surface code."},{name:"toric",params:"distance (int)",desc:"Toric code with periodic boundaries."},{name:"heavy_hex",params:"distance (int)",desc:"Heavy-hex lattice."},{name:"hypergraph_product",params:"distance (int)",desc:"CSS code from repetition seed."},{name:"bicycle",params:"circulant size (int)",desc:"qLDPC bicycle code."},{name:"bivariate_bicycle",params:"preset index (int)",desc:"Bivariate bicycle presets (qLDPC)."},{name:"color_code",params:"triangular size (int)",desc:"Triangular & 2D 4.8.8 colour codes."}],d=["Code Explorer","Decoder Lab","Benchmark","Batch & Streaming","Hardware","Diagnostics","Documentation","Lab & Personal Info","Console"];return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"QECTOR Workbench - Windows v1.0.7 and Linux v1.0.7",description:`QECTOR Workbench desktop GUI and MCP releases: ${a.label} ${a.version} (${a.arch}) with ${a.mcpTools} tools and a ${a.backendVersion} backend, ${r.label} ${r.version} with ${r.mcpTools} tools.`}),e.jsxs("div",{className:"bg-emerald-950/50 border-b border-emerald-500/30 py-2.5 text-center text-sm px-4",children:[e.jsx("span",{className:"text-emerald-400 font-semibold",children:"Free Desktop Application:"})," ",o.map((s,n)=>e.jsxs("span",{children:[e.jsxs("a",{href:s.releaseUrl,className:"underline hover:text-emerald-300 transition-colors",target:"_blank",rel:"noopener noreferrer",children:[s.label," ",s.version," · published ",s.releaseDate," · ",s.mcpTools," MCP tools"]}),nt(s,0),className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"v1.0.7 ×2",label:"Live releases (Win / Linux)"},{value:`${a.mcpTools}`,label:`MCP tools per ${a.label} release`},{value:"19",label:"Named kinds (17 + 2 routing)"},{value:"10",label:"Quantum Code Families"}].map(s=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-3xl mb-1",children:s.value}),e.jsx("div",{className:"text-secondary text-sm",children:s.label})]},s.label))}),e.jsxs("div",{ref:s=>t(s,1),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"Inside the Workbench"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Nine workspaces are documented for the live v1.0.7 (Windows/Linux) releases:"," ",d.map((s,n)=>e.jsxs("span",{children:[e.jsx("span",{className:"text-primary font-medium",children:s}),ne.jsxs("div",{className:"bg-void border border-gridline rounded-xl p-5",children:[e.jsx("span",{className:"text-cyan-300 font-semibold text-sm block mb-2",children:s}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Explore this workspace with the release documentation and inspect results on your own machine. No hardware-specific run data is published here."})]},s))})]}),e.jsxs("div",{ref:s=>t(s,2),className:"card-surface space-y-5",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Downloads"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-5",children:[e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Windows x64 · ",a.version]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Portable single executable and release ZIP. No installer required, no admin rights. The app makes no online update checks."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",a.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:a.artifact}),", then launch directly."]}),e.jsxs("li",{children:["Headless MCP server: ",e.jsx("code",{className:"text-cyan-300",children:"QectorWorkbench-Portable.exe --mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"%LOCALAPPDATA%\\QectorWorkbench"})]}),e.jsxs("li",{children:["Exe SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:a.artifactSha256})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:a.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Windows Portable (.exe)"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-windows/releases/download/v1.0.7/QectorWorkbench-v1.0.7-Windows-x64-Public.zip",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Full ZIP Archive"}),e.jsx("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Linux x64 · ",r.version]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed",children:["Published ",r.version," portable ELF executable and Debian (.deb) package with bundled qector-decoder-v3 ",r.backendVersion," backend and ",r.mcpTools,"-tool MCP server."]}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",r.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:r.artifact})," or the Debian package."]}),e.jsxs("li",{children:["Headless MCP server: append ",e.jsx("code",{className:"text-cyan-300",children:"--mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"~/.local/share/QectorWorkbench"})]}),e.jsxs("li",{children:["Portable SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:r.artifactSha256})]}),e.jsxs("li",{children:["Debian SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:"5221dc9557319f2c55e6048ab30eb4a080d603abc9bab3d2b4cde01ef5b8aa45"})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:r.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Linux Portable"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-linux/releases/download/v1.0.7/qector-workbench_1.0.7_amd64.deb",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Debian Package (.deb)"}),e.jsx("a",{href:r.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3 opacity-60",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-base",children:"macOS arm64 - not ready yet"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Apple silicon build requires a build on Apple hardware and is not included until that build is produced and signed."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsx("li",{children:"Requires Apple hardware build - coming soon"}),e.jsx("li",{children:"No artifact yet - check back for macOS release"}),e.jsx("li",{children:"Windows and Linux v1.0.7 are live with 19 decoders"})]}),e.jsx("span",{className:"text-muted-foreground text-xs",children:"Not available yet"})]})]}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl text-xs text-secondary leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Verify your download:"})," SHA-256 checksums and GPG signature files (.asc) for every file are published in the release notes. Override the runtime data directory with ",e.jsx("code",{className:"text-cyan-300",children:"QECTOR_DATA_DIR"}),"."]})]}),e.jsxs("div",{ref:s=>t(s,3),className:"card-surface space-y-6",children:[e.jsxs("div",{className:"flex flex-col md:flex-row md:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Integrated Decoders"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"All 19 named kinds (17 concrete configurations plus AutoDecoder and Auto Router) are exposed through the Workbench MCP server. No benchmark figures are published on the site: run the included harness to measure your own hardware."})]}),e.jsxs("span",{className:"text-xs px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 text-cyan-300 rounded-full font-mono",children:["Windows & Linux backend qector_decoder_v3 ",a.backendVersion]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground leading-relaxed",children:["Each v1.0.7 release (Windows/Linux) declares ",e.jsx("strong",{className:"text-secondary",children:"19 named kinds: 17 concrete configurations plus 2 orchestration entries"})," against its bundled qector_decoder_v3 ",a.backendVersion," backend. Consult each release's included manuals for platform-specific coverage."]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"Decoder Kind"}),e.jsx("th",{className:"py-3 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-3 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:m.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3 font-mono font-semibold text-primary",children:s.kind}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.desc})]},s.kind))})]})})]}),e.jsxs("div",{ref:s=>t(s,4),children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"10 Supported Code Families"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["The published releases cover ",e.jsx("strong",{className:"text-primary",children:"10 code families"}),", including qLDPC and colour codes."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:h.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl space-y-2",children:[e.jsx("span",{className:"font-mono text-cyan-300 font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground font-mono",children:["Param: ",s.params]}),e.jsx("p",{className:"text-xs text-secondary",children:s.desc})]},s.name))})]}),e.jsxs("div",{ref:s=>t(s,5),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-6",children:"Workbench Components"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"Desktop GUI",desc:"CustomTkinter desktop UI for Windows and Linux. Visual circuit builder, syndrome viewer, decoder performance dashboard, and a distance slider covering d3-d63 on supported families."},{name:"MCP Tools",desc:"Native Model Context Protocol server over stdio JSON-RPC 2.0, launched with --mcp and usable headlessly with no display. Connects AI agents directly to decoder execution and diagnostics."},{name:"Self-Contained",desc:"Bundles its own Python runtime, the scientific stack, and the qector_decoder_v3 1.0.0 wheel. No system Python or pip required; the app makes no online update checks."},{name:"Self / Auto-Debug Layer",desc:"Verifies H·c == s on every decode with a full attempt trace, and falls back across decoders automatically when a decoder fails to produce a faithful correction."},{name:"Hardware Dashboard",desc:"Auto-detects CUDA, OpenCL, and CPU backends, and reports OpenCL absence honestly: it names why a backend is unavailable rather than printing a bare N/A."},{name:"Lab & Personal Info",desc:"Deposit profile (author, ORCID, affiliation, DOI, funding, keywords) for generated reports, plus decoder license-key installation with a live tier readout."},{name:"Documentation Export",desc:"Export documentation and evidence in the formats supported by the selected release, with optional .zenodo.json and CITATION.cff deposit sidecars."},{name:"Bundled Manuals & EULA",desc:"Each release ships an API Reference, MCP Integration Guide, Quick Start Guide, a per-OS User Manual, a machine-readable LLM manual, and EULA.txt, with SHA-256 checksums for every file."}].map(s=>e.jsx(u,{title:s.name,desc:s.desc},s.name))})]}),e.jsxs("div",{ref:s=>t(s,6),className:"space-y-6",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold",children:"Decoder Sandbox"}),e.jsx("p",{className:"text-secondary text-sm",children:"Below is an interactive sandbox replicating the basic topological planar code matching module inside QECTOR Workbench. Click to inject errors and inspect Blossom correction paths in real time."}),e.jsx(b,{})]}),e.jsxs("div",{ref:s=>t(s,7),children:[e.jsx(f,{title:"Documentation & Reference",statement:"QECTOR Workbench documentation is published alongside each app release. The Windows v1.0.7 and Linux v1.0.7 builds ship per-OS manuals and SHA-256 checksums; use the release-specific manuals for your platform."}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 mt-4",children:[e.jsxs("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Manuals & EULA"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"GitHub Releases"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"API Reference, MCP guide, Quick Start, per-OS manual"})]}),e.jsxs(i,{to:"/evidence",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Validation & Evidence"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/evidence"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Validation reports and SHA-256 sealed artifact manifests"})]}),e.jsxs(i,{to:"/technical-reference",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Architecture Whitepaper"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/technical-reference"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Technical specification & design"})]})]})]}),e.jsx("div",{className:"text-center pt-4",children:e.jsx(i,{to:"/contact",className:"btn-cyan",children:"Contact for Technical Support"})})]})})]})}export{_ as default}; diff --git a/assets/Workbench-DHXDBZcd.js b/assets/Workbench-DHXDBZcd.js deleted file mode 100644 index a734362f..00000000 --- a/assets/Workbench-DHXDBZcd.js +++ /dev/null @@ -1 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,L as i,A as u,Q as b,E as f}from"./index-CcwlvHYJ.js";import{N as g}from"./NeuralReveal-Bsl9IGCr.js";import{g as c,S as y}from"./vendor-gsap-a3sj5zmn.js";import{W as o}from"./releases-1-HBloZv.js";import"./vendor-ui-B0ssGG4c.js";c.registerPlugin(y);const[a,r]=o;function C(){const l=x.useRef([]);x.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=c.context(()=>{l.current.filter(Boolean).forEach(n=>{c.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const t=(s,n)=>{s&&(l.current[n]=s)},m=[{kind:"union_find",type:"Graphlike",desc:"Fast approximate Union-Find decoding; higher LER than exact MWPM."},{kind:"fast_union_find",type:"Graphlike",desc:"Optimized Union-Find hot path; approximate."},{kind:"blossom",type:"Universal",desc:"Weight-optimal exact minimum-weight perfect matching (Edmonds' Blossom)."},{kind:"sparse_blossom",type:"Graphlike",desc:"Event-driven Sparse Blossom with radix-heap region growth (experimental)."},{kind:"bp_osd",type:"Universal / qLDPC",desc:"Belief propagation + ordered-statistics decoding for LDPC / qLDPC codes."},{kind:"auto",type:"Graphlike",desc:"Self-selecting AutoDecoder: picks the best available decoder for the code."},{kind:"hybrid",type:"Graphlike",desc:"Combines a fast heuristic pass with exact matching."},{kind:"lookup_table",type:"Small (<20 checks)",desc:"Precomputed syndrome-to-correction table with O(1) lookup."},{kind:"predecoded",type:"Graphlike",desc:"Fast pre-decoding pass that resolves easy/low-weight syndromes."},{kind:"auto_router",type:"Universal",desc:"Policy decoder: inspects the code and dispatches the best concrete decoder."},{kind:"hybrid_cascade",type:"Graphlike",desc:"Union-Find pre-filter escalating to Blossom/BP-OSD."},{kind:"gnn_belief_matching",type:"Graphlike",desc:"GNN-predicted per-qubit weights guide edge-weighted matching with fallback."},{kind:"belief_matching",type:"Universal",desc:"Sum-product BP posteriors reweight an exact Blossom matching."},{kind:"two_stage",type:"Graphlike",desc:"Decoupled X/Z sector decoders for CSS / colour codes."},{kind:"ambiguity_cluster",type:"Graphlike",desc:"Cluster-growth decoder for high noise or non-graphlike codes."},{kind:"colour_code",type:"Universal / qLDPC",desc:"BP-OSD hypergraph decoder over undecomposed detector error models."},{kind:"space_time",type:"Universal",desc:"Space-time decoder for multi-round decoding (experimental)."},{kind:"spacetime_mwpm",type:"Multi-round",desc:"Space-time MWPM for phenomenological & circuit-level decoding."},{kind:"soft_llr",type:"Soft-decision",desc:"Log-likelihood-ratio-weighted decoding."}],h=[{name:"repetition",params:"distance (int)",desc:"1D chain parity-check code."},{name:"ring",params:"distance (int)",desc:"Periodic 1D chain."},{name:"rotated_surface",params:"distance (int)",desc:"Standard rotated surface code."},{name:"unrotated_surface",params:"distance (int)",desc:"Square lattice surface code."},{name:"toric",params:"distance (int)",desc:"Toric code with periodic boundaries."},{name:"heavy_hex",params:"distance (int)",desc:"Heavy-hex lattice."},{name:"hypergraph_product",params:"distance (int)",desc:"CSS code from repetition seed."},{name:"bicycle",params:"circulant size (int)",desc:"qLDPC bicycle code."},{name:"bivariate_bicycle",params:"preset index (int)",desc:"Bivariate bicycle presets (qLDPC)."},{name:"color_code",params:"triangular size (int)",desc:"Triangular & 2D 4.8.8 colour codes."}],d=["Code Explorer","Decoder Lab","Benchmark","Batch & Streaming","Hardware","Diagnostics","Documentation","Lab & Personal Info","Console"];return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"QECTOR Workbench - Windows v1.0.7 and Linux v1.0.7",description:`QECTOR Workbench desktop GUI and MCP releases: ${a.label} ${a.version} (${a.arch}) with ${a.mcpTools} tools and a ${a.backendVersion} backend, ${r.label} ${r.version} with ${r.mcpTools} tools.`}),e.jsxs("div",{className:"bg-emerald-950/50 border-b border-emerald-500/30 py-2.5 text-center text-sm px-4",children:[e.jsx("span",{className:"text-emerald-400 font-semibold",children:"Free Desktop Application:"})," ",o.map((s,n)=>e.jsxs("span",{children:[e.jsxs("a",{href:s.releaseUrl,className:"underline hover:text-emerald-300 transition-colors",target:"_blank",rel:"noopener noreferrer",children:[s.label," ",s.version," · published ",s.releaseDate," · ",s.mcpTools," MCP tools"]}),nt(s,0),className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"v1.0.7 ×2",label:"Live releases (Win / Linux)"},{value:`${a.mcpTools}`,label:`MCP tools per ${a.label} release`},{value:"19",label:"Named kinds (17 + 2 routing)"},{value:"10",label:"Quantum Code Families"}].map(s=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-3xl mb-1",children:s.value}),e.jsx("div",{className:"text-secondary text-sm",children:s.label})]},s.label))}),e.jsxs("div",{ref:s=>t(s,1),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"Inside the Workbench"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Nine workspaces are documented for the live v1.0.7 (Windows/Linux) releases:"," ",d.map((s,n)=>e.jsxs("span",{children:[e.jsx("span",{className:"text-primary font-medium",children:s}),ne.jsxs("div",{className:"bg-void border border-gridline rounded-xl p-5",children:[e.jsx("span",{className:"text-cyan-300 font-semibold text-sm block mb-2",children:s}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Explore this workspace with the release documentation and inspect results on your own machine. No hardware-specific run data is published here."})]},s))})]}),e.jsxs("div",{ref:s=>t(s,2),className:"card-surface space-y-5",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Downloads"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-5",children:[e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Windows x64 · ",a.version]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Portable single executable and release ZIP. No installer required, no admin rights. The app makes no online update checks."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",a.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:a.artifact}),", then launch directly."]}),e.jsxs("li",{children:["Headless MCP server: ",e.jsx("code",{className:"text-cyan-300",children:"QectorWorkbench-Portable.exe --mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"%LOCALAPPDATA%\\QectorWorkbench"})]}),e.jsxs("li",{children:["Exe SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:a.artifactSha256})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:a.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Windows Portable (.exe)"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-windows/releases/download/v1.0.7/QectorWorkbench-v1.0.7-Windows-x64-Public.zip",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Full ZIP Archive"}),e.jsx("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Linux x64 · ",r.version]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed",children:["Published ",r.version," portable ELF executable and Debian (.deb) package with bundled qector-decoder-v3 ",r.backendVersion," backend and ",r.mcpTools,"-tool MCP server."]}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",r.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:r.artifact})," or the Debian package."]}),e.jsxs("li",{children:["Headless MCP server: append ",e.jsx("code",{className:"text-cyan-300",children:"--mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"~/.local/share/QectorWorkbench"})]}),e.jsxs("li",{children:["Portable SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:r.artifactSha256})]}),e.jsxs("li",{children:["Debian SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:"5221dc9557319f2c55e6048ab30eb4a080d603abc9bab3d2b4cde01ef5b8aa45"})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:r.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Linux Portable"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-linux/releases/download/v1.0.7/qector-workbench_1.0.7_amd64.deb",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Debian Package (.deb)"}),e.jsx("a",{href:r.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3 opacity-60",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-base",children:"macOS arm64 - not ready yet"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Apple silicon build requires a build on Apple hardware and is not included until that build is produced and signed."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsx("li",{children:"Requires Apple hardware build - coming soon"}),e.jsx("li",{children:"No artifact yet - check back for macOS release"}),e.jsx("li",{children:"Windows and Linux v1.0.7 are live with 19 decoders"})]}),e.jsx("span",{className:"text-muted-foreground text-xs",children:"Not available yet"})]})]}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl text-xs text-secondary leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Verify your download:"})," SHA-256 checksums and GPG signature files (.asc) for every file are published in the release notes. Override the runtime data directory with ",e.jsx("code",{className:"text-cyan-300",children:"QECTOR_DATA_DIR"}),"."]})]}),e.jsxs("div",{ref:s=>t(s,3),className:"card-surface space-y-6",children:[e.jsxs("div",{className:"flex flex-col md:flex-row md:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Integrated Decoders"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"All 19 named kinds (17 concrete configurations plus AutoDecoder and Auto Router) are exposed through the Workbench MCP server. No benchmark figures are published on the site: run the included harness to measure your own hardware."})]}),e.jsxs("span",{className:"text-xs px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 text-cyan-300 rounded-full font-mono",children:["Windows & Linux backend qector_decoder_v3 ",a.backendVersion]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground leading-relaxed",children:["Each v1.0.7 release (Windows/Linux) declares ",e.jsx("strong",{className:"text-secondary",children:"19 named kinds: 17 concrete configurations plus 2 orchestration entries"})," against its bundled qector_decoder_v3 ",a.backendVersion," backend. Consult each release's included manuals for platform-specific coverage."]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"Decoder Kind"}),e.jsx("th",{className:"py-3 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-3 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:m.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3 font-mono font-semibold text-primary",children:s.kind}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.desc})]},s.kind))})]})})]}),e.jsxs("div",{ref:s=>t(s,4),children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"10 Supported Code Families"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["The published releases cover ",e.jsx("strong",{className:"text-primary",children:"10 code families"}),", including qLDPC and colour codes."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:h.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl space-y-2",children:[e.jsx("span",{className:"font-mono text-cyan-300 font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground font-mono",children:["Param: ",s.params]}),e.jsx("p",{className:"text-xs text-secondary",children:s.desc})]},s.name))})]}),e.jsxs("div",{ref:s=>t(s,5),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-6",children:"Workbench Components"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"Desktop GUI",desc:"CustomTkinter desktop UI for Windows and Linux. Visual circuit builder, syndrome viewer, decoder performance dashboard, and a distance slider covering d3-d63 on supported families."},{name:"MCP Tools",desc:"Native Model Context Protocol server over stdio JSON-RPC 2.0, launched with --mcp and usable headlessly with no display. Connects AI agents directly to decoder execution and diagnostics."},{name:"Self-Contained",desc:"Bundles its own Python runtime, the scientific stack, and the qector_decoder_v3 1.0.0 wheel. No system Python or pip required; the app makes no online update checks."},{name:"Self / Auto-Debug Layer",desc:"Verifies H·c == s on every decode with a full attempt trace, and falls back across decoders automatically when a decoder fails to produce a faithful correction."},{name:"Hardware Dashboard",desc:"Auto-detects CUDA, OpenCL, and CPU backends, and reports OpenCL absence honestly: it names why a backend is unavailable rather than printing a bare N/A."},{name:"Lab & Personal Info",desc:"Deposit profile (author, ORCID, affiliation, DOI, funding, keywords) for generated reports, plus decoder license-key installation with a live tier readout."},{name:"Documentation Export",desc:"Export documentation and evidence in the formats supported by the selected release, with optional .zenodo.json and CITATION.cff deposit sidecars."},{name:"Bundled Manuals & EULA",desc:"Each release ships an API Reference, MCP Integration Guide, Quick Start Guide, a per-OS User Manual, a machine-readable LLM manual, and EULA.txt, with SHA-256 checksums for every file."}].map(s=>e.jsx(u,{title:s.name,desc:s.desc},s.name))})]}),e.jsxs("div",{ref:s=>t(s,6),className:"space-y-6",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold",children:"Decoder Sandbox"}),e.jsx("p",{className:"text-secondary text-sm",children:"Below is an interactive sandbox replicating the basic topological planar code matching module inside QECTOR Workbench. Click to inject errors and inspect Blossom correction paths in real time."}),e.jsx(b,{})]}),e.jsxs("div",{ref:s=>t(s,7),children:[e.jsx(f,{title:"Documentation & Reference",statement:"QECTOR Workbench documentation is published alongside each app release. The Windows v1.0.7 and Linux v1.0.7 builds ship per-OS manuals and SHA-256 checksums; use the release-specific manuals for your platform."}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 mt-4",children:[e.jsxs("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Manuals & EULA"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"GitHub Releases"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"API Reference, MCP guide, Quick Start, per-OS manual"})]}),e.jsxs(i,{to:"/evidence",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Validation & Evidence"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/evidence"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Validation reports and SHA-256 sealed artifact manifests"})]}),e.jsxs(i,{to:"/technical-reference",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Architecture Whitepaper"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/technical-reference"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Technical specification & design"})]})]})]}),e.jsx("div",{className:"text-center pt-4",children:e.jsx(i,{to:"/contact",className:"btn-cyan",children:"Contact for Technical Support"})})]})})]})}export{C as default}; diff --git a/assets/Workbench-DVV9vcVI.js b/assets/Workbench-DVV9vcVI.js deleted file mode 100644 index 0962a739..00000000 --- a/assets/Workbench-DVV9vcVI.js +++ /dev/null @@ -1 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,A as u,Q as b,E as f}from"./index-B9kEGiWi.js";import{N as g}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as y}from"./vendor-gsap-a3sj5zmn.js";import{W as o}from"./releases-DiQz_IDu.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";c.registerPlugin(y);const[a,r]=o;function _(){const l=x.useRef([]);x.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=c.context(()=>{l.current.filter(Boolean).forEach(n=>{c.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const t=(s,n)=>{s&&(l.current[n]=s)},m=[{kind:"union_find",type:"Graphlike",desc:"Fast approximate Union-Find decoding; higher LER than exact MWPM."},{kind:"fast_union_find",type:"Graphlike",desc:"Optimized Union-Find hot path; approximate."},{kind:"blossom",type:"Universal",desc:"Weight-optimal exact minimum-weight perfect matching (Edmonds' Blossom)."},{kind:"sparse_blossom",type:"Graphlike",desc:"Event-driven Sparse Blossom with radix-heap region growth (experimental)."},{kind:"bp_osd",type:"Universal / qLDPC",desc:"Belief propagation + ordered-statistics decoding for LDPC / qLDPC codes."},{kind:"auto",type:"Graphlike",desc:"Self-selecting AutoDecoder: picks the best available decoder for the code."},{kind:"hybrid",type:"Graphlike",desc:"Combines a fast heuristic pass with exact matching."},{kind:"lookup_table",type:"Small (<20 checks)",desc:"Precomputed syndrome-to-correction table with O(1) lookup."},{kind:"predecoded",type:"Graphlike",desc:"Fast pre-decoding pass that resolves easy/low-weight syndromes."},{kind:"auto_router",type:"Universal",desc:"Policy decoder: inspects the code and dispatches the best concrete decoder."},{kind:"hybrid_cascade",type:"Graphlike",desc:"Union-Find pre-filter escalating to Blossom/BP-OSD."},{kind:"gnn_belief_matching",type:"Graphlike",desc:"GNN-predicted per-qubit weights guide edge-weighted matching with fallback."},{kind:"belief_matching",type:"Universal",desc:"Sum-product BP posteriors reweight an exact Blossom matching."},{kind:"two_stage",type:"Graphlike",desc:"Decoupled X/Z sector decoders for CSS / colour codes."},{kind:"ambiguity_cluster",type:"Graphlike",desc:"Cluster-growth decoder for high noise or non-graphlike codes."},{kind:"colour_code",type:"Universal / qLDPC",desc:"BP-OSD hypergraph decoder over undecomposed detector error models."},{kind:"space_time",type:"Universal",desc:"Space-time decoder for multi-round decoding (experimental)."},{kind:"spacetime_mwpm",type:"Multi-round",desc:"Space-time MWPM for phenomenological & circuit-level decoding."},{kind:"soft_llr",type:"Soft-decision",desc:"Log-likelihood-ratio-weighted decoding."}],h=[{name:"repetition",params:"distance (int)",desc:"1D chain parity-check code."},{name:"ring",params:"distance (int)",desc:"Periodic 1D chain."},{name:"rotated_surface",params:"distance (int)",desc:"Standard rotated surface code."},{name:"unrotated_surface",params:"distance (int)",desc:"Square lattice surface code."},{name:"toric",params:"distance (int)",desc:"Toric code with periodic boundaries."},{name:"heavy_hex",params:"distance (int)",desc:"Heavy-hex lattice."},{name:"hypergraph_product",params:"distance (int)",desc:"CSS code from repetition seed."},{name:"bicycle",params:"circulant size (int)",desc:"qLDPC bicycle code."},{name:"bivariate_bicycle",params:"preset index (int)",desc:"Bivariate bicycle presets (qLDPC)."},{name:"color_code",params:"triangular size (int)",desc:"Triangular & 2D 4.8.8 colour codes."}],d=["Code Explorer","Decoder Lab","Benchmark","Batch & Streaming","Hardware","Diagnostics","Documentation","Lab & Personal Info","Console"];return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"QECTOR Workbench - Windows v1.0.7 and Linux v1.0.7",description:`QECTOR Workbench desktop GUI and MCP releases: ${a.label} ${a.version} (${a.arch}) with ${a.mcpTools} tools and a ${a.backendVersion} backend, ${r.label} ${r.version} with ${r.mcpTools} tools.`}),e.jsxs("div",{className:"bg-emerald-950/50 border-b border-emerald-500/30 py-2.5 text-center text-sm px-4",children:[e.jsx("span",{className:"text-emerald-400 font-semibold",children:"Free Desktop Application:"})," ",o.map((s,n)=>e.jsxs("span",{children:[e.jsxs("a",{href:s.releaseUrl,className:"underline hover:text-emerald-300 transition-colors",target:"_blank",rel:"noopener noreferrer",children:[s.label," ",s.version," · published ",s.releaseDate," · ",s.mcpTools," MCP tools"]}),nt(s,0),className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"v1.0.7 ×2",label:"Live releases (Win / Linux)"},{value:`${a.mcpTools}`,label:`MCP tools per ${a.label} release`},{value:"19",label:"Named kinds (17 + 2 routing)"},{value:"10",label:"Quantum Code Families"}].map(s=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-3xl mb-1",children:s.value}),e.jsx("div",{className:"text-secondary text-sm",children:s.label})]},s.label))}),e.jsxs("div",{ref:s=>t(s,1),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"Inside the Workbench"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Nine workspaces are documented for the live v1.0.7 (Windows/Linux) releases:"," ",d.map((s,n)=>e.jsxs("span",{children:[e.jsx("span",{className:"text-primary font-medium",children:s}),ne.jsxs("div",{className:"bg-void border border-gridline rounded-xl p-5",children:[e.jsx("span",{className:"text-cyan-300 font-semibold text-sm block mb-2",children:s}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Explore this workspace with the release documentation and inspect results on your own machine. No hardware-specific run data is published here."})]},s))})]}),e.jsxs("div",{ref:s=>t(s,2),className:"card-surface space-y-5",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Downloads"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-5",children:[e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Windows x64 · ",a.version]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Portable single executable and release ZIP. No installer required, no admin rights. The app makes no online update checks."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",a.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:a.artifact}),", then launch directly."]}),e.jsxs("li",{children:["Headless MCP server: ",e.jsx("code",{className:"text-cyan-300",children:"QectorWorkbench-Portable.exe --mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"%LOCALAPPDATA%\\QectorWorkbench"})]}),e.jsxs("li",{children:["Exe SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:a.artifactSha256})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:a.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Windows Portable (.exe)"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-windows/releases/download/v1.0.7/QectorWorkbench-v1.0.7-Windows-x64-Public.zip",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Full ZIP Archive"}),e.jsx("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Linux x64 · ",r.version]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed",children:["Published ",r.version," portable ELF executable and Debian (.deb) package with bundled qector-decoder-v3 ",r.backendVersion," backend and ",r.mcpTools,"-tool MCP server."]}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",r.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:r.artifact})," or the Debian package."]}),e.jsxs("li",{children:["Headless MCP server: append ",e.jsx("code",{className:"text-cyan-300",children:"--mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"~/.local/share/QectorWorkbench"})]}),e.jsxs("li",{children:["Portable SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:r.artifactSha256})]}),e.jsxs("li",{children:["Debian SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:"5221dc9557319f2c55e6048ab30eb4a080d603abc9bab3d2b4cde01ef5b8aa45"})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:r.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Linux Portable"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-linux/releases/download/v1.0.7/qector-workbench_1.0.7_amd64.deb",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Debian Package (.deb)"}),e.jsx("a",{href:r.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3 opacity-60",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-base",children:"macOS arm64 - not ready yet"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Apple silicon build requires a build on Apple hardware and is not included until that build is produced and signed."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsx("li",{children:"Requires Apple hardware build - coming soon"}),e.jsx("li",{children:"No artifact yet - check back for macOS release"}),e.jsx("li",{children:"Windows and Linux v1.0.7 are live with 19 decoders"})]}),e.jsx("span",{className:"text-muted-foreground text-xs",children:"Not available yet"})]})]}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl text-xs text-secondary leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Verify your download:"})," SHA-256 checksums and GPG signature files (.asc) for every file are published in the release notes. Override the runtime data directory with ",e.jsx("code",{className:"text-cyan-300",children:"QECTOR_DATA_DIR"}),"."]})]}),e.jsxs("div",{ref:s=>t(s,3),className:"card-surface space-y-6",children:[e.jsxs("div",{className:"flex flex-col md:flex-row md:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Integrated Decoders"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"All 19 named kinds (17 concrete configurations plus AutoDecoder and Auto Router) are exposed through the Workbench MCP server. No benchmark figures are published on the site: run the included harness to measure your own hardware."})]}),e.jsxs("span",{className:"text-xs px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 text-cyan-300 rounded-full font-mono",children:["Windows & Linux backend qector_decoder_v3 ",a.backendVersion]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground leading-relaxed",children:["Each v1.0.7 release (Windows/Linux) declares ",e.jsx("strong",{className:"text-secondary",children:"19 named kinds: 17 concrete configurations plus 2 orchestration entries"})," against its bundled qector_decoder_v3 ",a.backendVersion," backend. Consult each release's included manuals for platform-specific coverage."]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"Decoder Kind"}),e.jsx("th",{className:"py-3 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-3 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:m.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3 font-mono font-semibold text-primary",children:s.kind}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.desc})]},s.kind))})]})})]}),e.jsxs("div",{ref:s=>t(s,4),children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"10 Supported Code Families"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["The published releases cover ",e.jsx("strong",{className:"text-primary",children:"10 code families"}),", including qLDPC and colour codes."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:h.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl space-y-2",children:[e.jsx("span",{className:"font-mono text-cyan-300 font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground font-mono",children:["Param: ",s.params]}),e.jsx("p",{className:"text-xs text-secondary",children:s.desc})]},s.name))})]}),e.jsxs("div",{ref:s=>t(s,5),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-6",children:"Workbench Components"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"Desktop GUI",desc:"CustomTkinter desktop UI for Windows and Linux. Visual circuit builder, syndrome viewer, decoder performance dashboard, and a distance slider covering d3-d63 on supported families."},{name:"MCP Tools",desc:"Native Model Context Protocol server over stdio JSON-RPC 2.0, launched with --mcp and usable headlessly with no display. Connects AI agents directly to decoder execution and diagnostics."},{name:"Self-Contained",desc:"Bundles its own Python runtime, the scientific stack, and the qector_decoder_v3 1.0.0 wheel. No system Python or pip required; the app makes no online update checks."},{name:"Self / Auto-Debug Layer",desc:"Verifies H·c == s on every decode with a full attempt trace, and falls back across decoders automatically when a decoder fails to produce a faithful correction."},{name:"Hardware Dashboard",desc:"Auto-detects CUDA, OpenCL, and CPU backends, and reports OpenCL absence honestly: it names why a backend is unavailable rather than printing a bare N/A."},{name:"Lab & Personal Info",desc:"Deposit profile (author, ORCID, affiliation, DOI, funding, keywords) for generated reports, plus decoder license-key installation with a live tier readout."},{name:"Documentation Export",desc:"Export documentation and evidence in the formats supported by the selected release, with optional .zenodo.json and CITATION.cff deposit sidecars."},{name:"Bundled Manuals & EULA",desc:"Each release ships an API Reference, MCP Integration Guide, Quick Start Guide, a per-OS User Manual, a machine-readable LLM manual, and EULA.txt, with SHA-256 checksums for every file."}].map(s=>e.jsx(u,{title:s.name,desc:s.desc},s.name))})]}),e.jsxs("div",{ref:s=>t(s,6),className:"space-y-6",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold",children:"Decoder Sandbox"}),e.jsx("p",{className:"text-secondary text-sm",children:"Below is an interactive sandbox replicating the basic topological planar code matching module inside QECTOR Workbench. Click to inject errors and inspect Blossom correction paths in real time."}),e.jsx(b,{})]}),e.jsxs("div",{ref:s=>t(s,7),children:[e.jsx(f,{title:"Documentation & Reference",statement:"QECTOR Workbench documentation is published alongside each app release. The Windows v1.0.7 and Linux v1.0.7 builds ship per-OS manuals and SHA-256 checksums; use the release-specific manuals for your platform."}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 mt-4",children:[e.jsxs("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Manuals & EULA"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"GitHub Releases"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"API Reference, MCP guide, Quick Start, per-OS manual"})]}),e.jsxs(i,{to:"/evidence",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Validation & Evidence"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/evidence"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Validation reports and SHA-256 sealed artifact manifests"})]}),e.jsxs(i,{to:"/technical-reference",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Architecture Whitepaper"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/technical-reference"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Technical specification & design"})]})]})]}),e.jsx("div",{className:"text-center pt-4",children:e.jsx(i,{to:"/contact",className:"btn-cyan",children:"Contact for Technical Support"})})]})})]})}export{_ as default}; diff --git a/assets/Workbench-Dhk9boMQ.js b/assets/Workbench-Dhk9boMQ.js deleted file mode 100644 index c7013839..00000000 --- a/assets/Workbench-Dhk9boMQ.js +++ /dev/null @@ -1 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,A as u,Q as b,E as f}from"./index-WV1aysjN.js";import{N as g}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as y}from"./vendor-gsap-a3sj5zmn.js";import{W as o}from"./releases-DiQz_IDu.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";c.registerPlugin(y);const[a,r]=o;function _(){const l=x.useRef([]);x.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=c.context(()=>{l.current.filter(Boolean).forEach(n=>{c.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const t=(s,n)=>{s&&(l.current[n]=s)},m=[{kind:"union_find",type:"Graphlike",desc:"Fast approximate Union-Find decoding; higher LER than exact MWPM."},{kind:"fast_union_find",type:"Graphlike",desc:"Optimized Union-Find hot path; approximate."},{kind:"blossom",type:"Universal",desc:"Weight-optimal exact minimum-weight perfect matching (Edmonds' Blossom)."},{kind:"sparse_blossom",type:"Graphlike",desc:"Event-driven Sparse Blossom with radix-heap region growth (experimental)."},{kind:"bp_osd",type:"Universal / qLDPC",desc:"Belief propagation + ordered-statistics decoding for LDPC / qLDPC codes."},{kind:"auto",type:"Graphlike",desc:"Self-selecting AutoDecoder: picks the best available decoder for the code."},{kind:"hybrid",type:"Graphlike",desc:"Combines a fast heuristic pass with exact matching."},{kind:"lookup_table",type:"Small (<20 checks)",desc:"Precomputed syndrome-to-correction table with O(1) lookup."},{kind:"predecoded",type:"Graphlike",desc:"Fast pre-decoding pass that resolves easy/low-weight syndromes."},{kind:"auto_router",type:"Universal",desc:"Policy decoder: inspects the code and dispatches the best concrete decoder."},{kind:"hybrid_cascade",type:"Graphlike",desc:"Union-Find pre-filter escalating to Blossom/BP-OSD."},{kind:"gnn_belief_matching",type:"Graphlike",desc:"GNN-predicted per-qubit weights guide edge-weighted matching with fallback."},{kind:"belief_matching",type:"Universal",desc:"Sum-product BP posteriors reweight an exact Blossom matching."},{kind:"two_stage",type:"Graphlike",desc:"Decoupled X/Z sector decoders for CSS / colour codes."},{kind:"ambiguity_cluster",type:"Graphlike",desc:"Cluster-growth decoder for high noise or non-graphlike codes."},{kind:"colour_code",type:"Universal / qLDPC",desc:"BP-OSD hypergraph decoder over undecomposed detector error models."},{kind:"space_time",type:"Universal",desc:"Space-time decoder for multi-round decoding (experimental)."},{kind:"spacetime_mwpm",type:"Multi-round",desc:"Space-time MWPM for phenomenological & circuit-level decoding."},{kind:"soft_llr",type:"Soft-decision",desc:"Log-likelihood-ratio-weighted decoding."}],h=[{name:"repetition",params:"distance (int)",desc:"1D chain parity-check code."},{name:"ring",params:"distance (int)",desc:"Periodic 1D chain."},{name:"rotated_surface",params:"distance (int)",desc:"Standard rotated surface code."},{name:"unrotated_surface",params:"distance (int)",desc:"Square lattice surface code."},{name:"toric",params:"distance (int)",desc:"Toric code with periodic boundaries."},{name:"heavy_hex",params:"distance (int)",desc:"Heavy-hex lattice."},{name:"hypergraph_product",params:"distance (int)",desc:"CSS code from repetition seed."},{name:"bicycle",params:"circulant size (int)",desc:"qLDPC bicycle code."},{name:"bivariate_bicycle",params:"preset index (int)",desc:"Bivariate bicycle presets (qLDPC)."},{name:"color_code",params:"triangular size (int)",desc:"Triangular & 2D 4.8.8 colour codes."}],d=["Code Explorer","Decoder Lab","Benchmark","Batch & Streaming","Hardware","Diagnostics","Documentation","Lab & Personal Info","Console"];return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"QECTOR Workbench - Windows v1.0.7 and Linux v1.0.7",description:`QECTOR Workbench desktop GUI and MCP releases: ${a.label} ${a.version} (${a.arch}) with ${a.mcpTools} tools and a ${a.backendVersion} backend, ${r.label} ${r.version} with ${r.mcpTools} tools.`}),e.jsxs("div",{className:"bg-emerald-950/50 border-b border-emerald-500/30 py-2.5 text-center text-sm px-4",children:[e.jsx("span",{className:"text-emerald-400 font-semibold",children:"Free Desktop Application:"})," ",o.map((s,n)=>e.jsxs("span",{children:[e.jsxs("a",{href:s.releaseUrl,className:"underline hover:text-emerald-300 transition-colors",target:"_blank",rel:"noopener noreferrer",children:[s.label," ",s.version," · published ",s.releaseDate," · ",s.mcpTools," MCP tools"]}),nt(s,0),className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"v1.0.7 ×2",label:"Live releases (Win / Linux)"},{value:`${a.mcpTools}`,label:`MCP tools per ${a.label} release`},{value:"19",label:"Named kinds (17 + 2 routing)"},{value:"10",label:"Quantum Code Families"}].map(s=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-3xl mb-1",children:s.value}),e.jsx("div",{className:"text-secondary text-sm",children:s.label})]},s.label))}),e.jsxs("div",{ref:s=>t(s,1),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"Inside the Workbench"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Nine workspaces are documented for the live v1.0.7 (Windows/Linux) releases:"," ",d.map((s,n)=>e.jsxs("span",{children:[e.jsx("span",{className:"text-primary font-medium",children:s}),ne.jsxs("div",{className:"bg-void border border-gridline rounded-xl p-5",children:[e.jsx("span",{className:"text-cyan-300 font-semibold text-sm block mb-2",children:s}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Explore this workspace with the release documentation and inspect results on your own machine. No hardware-specific run data is published here."})]},s))})]}),e.jsxs("div",{ref:s=>t(s,2),className:"card-surface space-y-5",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Downloads"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-5",children:[e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Windows x64 · ",a.version]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Portable single executable and release ZIP. No installer required, no admin rights. The app makes no online update checks."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",a.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:a.artifact}),", then launch directly."]}),e.jsxs("li",{children:["Headless MCP server: ",e.jsx("code",{className:"text-cyan-300",children:"QectorWorkbench-Portable.exe --mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"%LOCALAPPDATA%\\QectorWorkbench"})]}),e.jsxs("li",{children:["Exe SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:a.artifactSha256})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:a.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Windows Portable (.exe)"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-windows/releases/download/v1.0.7/QectorWorkbench-v1.0.7-Windows-x64-Public.zip",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Full ZIP Archive"}),e.jsx("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Linux x64 · ",r.version]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed",children:["Published ",r.version," portable ELF executable and Debian (.deb) package with bundled qector-decoder-v3 ",r.backendVersion," backend and ",r.mcpTools,"-tool MCP server."]}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",r.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:r.artifact})," or the Debian package."]}),e.jsxs("li",{children:["Headless MCP server: append ",e.jsx("code",{className:"text-cyan-300",children:"--mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"~/.local/share/QectorWorkbench"})]}),e.jsxs("li",{children:["Portable SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:r.artifactSha256})]}),e.jsxs("li",{children:["Debian SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:"5221dc9557319f2c55e6048ab30eb4a080d603abc9bab3d2b4cde01ef5b8aa45"})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:r.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Linux Portable"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-linux/releases/download/v1.0.7/qector-workbench_1.0.7_amd64.deb",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Debian Package (.deb)"}),e.jsx("a",{href:r.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3 opacity-60",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-base",children:"macOS arm64 - not ready yet"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Apple silicon build requires a build on Apple hardware and is not included until that build is produced and signed."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsx("li",{children:"Requires Apple hardware build - coming soon"}),e.jsx("li",{children:"No artifact yet - check back for macOS release"}),e.jsx("li",{children:"Windows and Linux v1.0.7 are live with 19 decoders"})]}),e.jsx("span",{className:"text-muted-foreground text-xs",children:"Not available yet"})]})]}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl text-xs text-secondary leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Verify your download:"})," SHA-256 checksums and GPG signature files (.asc) for every file are published in the release notes. Override the runtime data directory with ",e.jsx("code",{className:"text-cyan-300",children:"QECTOR_DATA_DIR"}),"."]})]}),e.jsxs("div",{ref:s=>t(s,3),className:"card-surface space-y-6",children:[e.jsxs("div",{className:"flex flex-col md:flex-row md:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Integrated Decoders"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"All 19 named kinds (17 concrete configurations plus AutoDecoder and Auto Router) are exposed through the Workbench MCP server. No benchmark figures are published on the site: run the included harness to measure your own hardware."})]}),e.jsxs("span",{className:"text-xs px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 text-cyan-300 rounded-full font-mono",children:["Windows & Linux backend qector_decoder_v3 ",a.backendVersion]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground leading-relaxed",children:["Each v1.0.7 release (Windows/Linux) declares ",e.jsx("strong",{className:"text-secondary",children:"19 named kinds: 17 concrete configurations plus 2 orchestration entries"})," against its bundled qector_decoder_v3 ",a.backendVersion," backend. Consult each release's included manuals for platform-specific coverage."]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"Decoder Kind"}),e.jsx("th",{className:"py-3 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-3 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:m.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3 font-mono font-semibold text-primary",children:s.kind}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.desc})]},s.kind))})]})})]}),e.jsxs("div",{ref:s=>t(s,4),children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"10 Supported Code Families"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["The published releases cover ",e.jsx("strong",{className:"text-primary",children:"10 code families"}),", including qLDPC and colour codes."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:h.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl space-y-2",children:[e.jsx("span",{className:"font-mono text-cyan-300 font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground font-mono",children:["Param: ",s.params]}),e.jsx("p",{className:"text-xs text-secondary",children:s.desc})]},s.name))})]}),e.jsxs("div",{ref:s=>t(s,5),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-6",children:"Workbench Components"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"Desktop GUI",desc:"CustomTkinter desktop UI for Windows and Linux. Visual circuit builder, syndrome viewer, decoder performance dashboard, and a distance slider covering d3-d63 on supported families."},{name:"MCP Tools",desc:"Native Model Context Protocol server over stdio JSON-RPC 2.0, launched with --mcp and usable headlessly with no display. Connects AI agents directly to decoder execution and diagnostics."},{name:"Self-Contained",desc:"Bundles its own Python runtime, the scientific stack, and the qector_decoder_v3 1.0.0 wheel. No system Python or pip required; the app makes no online update checks."},{name:"Self / Auto-Debug Layer",desc:"Verifies H·c == s on every decode with a full attempt trace, and falls back across decoders automatically when a decoder fails to produce a faithful correction."},{name:"Hardware Dashboard",desc:"Auto-detects CUDA, OpenCL, and CPU backends, and reports OpenCL absence honestly: it names why a backend is unavailable rather than printing a bare N/A."},{name:"Lab & Personal Info",desc:"Deposit profile (author, ORCID, affiliation, DOI, funding, keywords) for generated reports, plus decoder license-key installation with a live tier readout."},{name:"Documentation Export",desc:"Export documentation and evidence in the formats supported by the selected release, with optional .zenodo.json and CITATION.cff deposit sidecars."},{name:"Bundled Manuals & EULA",desc:"Each release ships an API Reference, MCP Integration Guide, Quick Start Guide, a per-OS User Manual, a machine-readable LLM manual, and EULA.txt, with SHA-256 checksums for every file."}].map(s=>e.jsx(u,{title:s.name,desc:s.desc},s.name))})]}),e.jsxs("div",{ref:s=>t(s,6),className:"space-y-6",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold",children:"Decoder Sandbox"}),e.jsx("p",{className:"text-secondary text-sm",children:"Below is an interactive sandbox replicating the basic topological planar code matching module inside QECTOR Workbench. Click to inject errors and inspect Blossom correction paths in real time."}),e.jsx(b,{})]}),e.jsxs("div",{ref:s=>t(s,7),children:[e.jsx(f,{title:"Documentation & Reference",statement:"QECTOR Workbench documentation is published alongside each app release. The Windows v1.0.7 and Linux v1.0.7 builds ship per-OS manuals and SHA-256 checksums; use the release-specific manuals for your platform."}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 mt-4",children:[e.jsxs("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Manuals & EULA"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"GitHub Releases"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"API Reference, MCP guide, Quick Start, per-OS manual"})]}),e.jsxs(i,{to:"/evidence",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Validation & Evidence"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/evidence"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Validation reports and SHA-256 sealed artifact manifests"})]}),e.jsxs(i,{to:"/technical-reference",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Architecture Whitepaper"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/technical-reference"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Technical specification & design"})]})]})]}),e.jsx("div",{className:"text-center pt-4",children:e.jsx(i,{to:"/contact",className:"btn-cyan",children:"Contact for Technical Support"})})]})})]})}export{_ as default}; diff --git a/assets/Workbench-DjamN-lA.js b/assets/Workbench-DjamN-lA.js deleted file mode 100644 index dc073aa0..00000000 --- a/assets/Workbench-DjamN-lA.js +++ /dev/null @@ -1 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,A as u,Q as b,E as f}from"./index-BcbVjARk.js";import{N as g}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as y}from"./vendor-gsap-a3sj5zmn.js";import{W as o}from"./releases-DiQz_IDu.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";c.registerPlugin(y);const[a,r]=o;function _(){const l=x.useRef([]);x.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=c.context(()=>{l.current.filter(Boolean).forEach(n=>{c.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const t=(s,n)=>{s&&(l.current[n]=s)},m=[{kind:"union_find",type:"Graphlike",desc:"Fast approximate Union-Find decoding; higher LER than exact MWPM."},{kind:"fast_union_find",type:"Graphlike",desc:"Optimized Union-Find hot path; approximate."},{kind:"blossom",type:"Universal",desc:"Weight-optimal exact minimum-weight perfect matching (Edmonds' Blossom)."},{kind:"sparse_blossom",type:"Graphlike",desc:"Event-driven Sparse Blossom with radix-heap region growth (experimental)."},{kind:"bp_osd",type:"Universal / qLDPC",desc:"Belief propagation + ordered-statistics decoding for LDPC / qLDPC codes."},{kind:"auto",type:"Graphlike",desc:"Self-selecting AutoDecoder: picks the best available decoder for the code."},{kind:"hybrid",type:"Graphlike",desc:"Combines a fast heuristic pass with exact matching."},{kind:"lookup_table",type:"Small (<20 checks)",desc:"Precomputed syndrome-to-correction table with O(1) lookup."},{kind:"predecoded",type:"Graphlike",desc:"Fast pre-decoding pass that resolves easy/low-weight syndromes."},{kind:"auto_router",type:"Universal",desc:"Policy decoder: inspects the code and dispatches the best concrete decoder."},{kind:"hybrid_cascade",type:"Graphlike",desc:"Union-Find pre-filter escalating to Blossom/BP-OSD."},{kind:"gnn_belief_matching",type:"Graphlike",desc:"GNN-predicted per-qubit weights guide edge-weighted matching with fallback."},{kind:"belief_matching",type:"Universal",desc:"Sum-product BP posteriors reweight an exact Blossom matching."},{kind:"two_stage",type:"Graphlike",desc:"Decoupled X/Z sector decoders for CSS / colour codes."},{kind:"ambiguity_cluster",type:"Graphlike",desc:"Cluster-growth decoder for high noise or non-graphlike codes."},{kind:"colour_code",type:"Universal / qLDPC",desc:"BP-OSD hypergraph decoder over undecomposed detector error models."},{kind:"space_time",type:"Universal",desc:"Space-time decoder for multi-round decoding (experimental)."},{kind:"spacetime_mwpm",type:"Multi-round",desc:"Space-time MWPM for phenomenological & circuit-level decoding."},{kind:"soft_llr",type:"Soft-decision",desc:"Log-likelihood-ratio-weighted decoding."}],h=[{name:"repetition",params:"distance (int)",desc:"1D chain parity-check code."},{name:"ring",params:"distance (int)",desc:"Periodic 1D chain."},{name:"rotated_surface",params:"distance (int)",desc:"Standard rotated surface code."},{name:"unrotated_surface",params:"distance (int)",desc:"Square lattice surface code."},{name:"toric",params:"distance (int)",desc:"Toric code with periodic boundaries."},{name:"heavy_hex",params:"distance (int)",desc:"Heavy-hex lattice."},{name:"hypergraph_product",params:"distance (int)",desc:"CSS code from repetition seed."},{name:"bicycle",params:"circulant size (int)",desc:"qLDPC bicycle code."},{name:"bivariate_bicycle",params:"preset index (int)",desc:"Bivariate bicycle presets (qLDPC)."},{name:"color_code",params:"triangular size (int)",desc:"Triangular & 2D 4.8.8 colour codes."}],d=["Code Explorer","Decoder Lab","Benchmark","Batch & Streaming","Hardware","Diagnostics","Documentation","Lab & Personal Info","Console"];return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"QECTOR Workbench - Windows v1.0.7 and Linux v1.0.7",description:`QECTOR Workbench desktop GUI and MCP releases: ${a.label} ${a.version} (${a.arch}) with ${a.mcpTools} tools and a ${a.backendVersion} backend, ${r.label} ${r.version} with ${r.mcpTools} tools.`}),e.jsxs("div",{className:"bg-emerald-950/50 border-b border-emerald-500/30 py-2.5 text-center text-sm px-4",children:[e.jsx("span",{className:"text-emerald-400 font-semibold",children:"Free Desktop Application:"})," ",o.map((s,n)=>e.jsxs("span",{children:[e.jsxs("a",{href:s.releaseUrl,className:"underline hover:text-emerald-300 transition-colors",target:"_blank",rel:"noopener noreferrer",children:[s.label," ",s.version," · published ",s.releaseDate," · ",s.mcpTools," MCP tools"]}),nt(s,0),className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"v1.0.7 ×2",label:"Live releases (Win / Linux)"},{value:`${a.mcpTools}`,label:`MCP tools per ${a.label} release`},{value:"19",label:"Named kinds (17 + 2 routing)"},{value:"10",label:"Quantum Code Families"}].map(s=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-3xl mb-1",children:s.value}),e.jsx("div",{className:"text-secondary text-sm",children:s.label})]},s.label))}),e.jsxs("div",{ref:s=>t(s,1),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"Inside the Workbench"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Nine workspaces are documented for the live v1.0.7 (Windows/Linux) releases:"," ",d.map((s,n)=>e.jsxs("span",{children:[e.jsx("span",{className:"text-primary font-medium",children:s}),ne.jsxs("div",{className:"bg-void border border-gridline rounded-xl p-5",children:[e.jsx("span",{className:"text-cyan-300 font-semibold text-sm block mb-2",children:s}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Explore this workspace with the release documentation and inspect results on your own machine. No hardware-specific run data is published here."})]},s))})]}),e.jsxs("div",{ref:s=>t(s,2),className:"card-surface space-y-5",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Downloads"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-5",children:[e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Windows x64 · ",a.version]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Portable single executable and release ZIP. No installer required, no admin rights. The app makes no online update checks."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",a.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:a.artifact}),", then launch directly."]}),e.jsxs("li",{children:["Headless MCP server: ",e.jsx("code",{className:"text-cyan-300",children:"QectorWorkbench-Portable.exe --mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"%LOCALAPPDATA%\\QectorWorkbench"})]}),e.jsxs("li",{children:["Exe SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:a.artifactSha256})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:a.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Windows Portable (.exe)"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-windows/releases/download/v1.0.7/QectorWorkbench-v1.0.7-Windows-x64-Public.zip",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Full ZIP Archive"}),e.jsx("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Linux x64 · ",r.version]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed",children:["Published ",r.version," portable ELF executable and Debian (.deb) package with bundled qector-decoder-v3 ",r.backendVersion," backend and ",r.mcpTools,"-tool MCP server."]}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",r.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:r.artifact})," or the Debian package."]}),e.jsxs("li",{children:["Headless MCP server: append ",e.jsx("code",{className:"text-cyan-300",children:"--mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"~/.local/share/QectorWorkbench"})]}),e.jsxs("li",{children:["Portable SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:r.artifactSha256})]}),e.jsxs("li",{children:["Debian SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:"5221dc9557319f2c55e6048ab30eb4a080d603abc9bab3d2b4cde01ef5b8aa45"})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:r.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Linux Portable"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-linux/releases/download/v1.0.7/qector-workbench_1.0.7_amd64.deb",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Debian Package (.deb)"}),e.jsx("a",{href:r.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3 opacity-60",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-base",children:"macOS arm64 - not ready yet"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Apple silicon build requires a build on Apple hardware and is not included until that build is produced and signed."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsx("li",{children:"Requires Apple hardware build - coming soon"}),e.jsx("li",{children:"No artifact yet - check back for macOS release"}),e.jsx("li",{children:"Windows and Linux v1.0.7 are live with 19 decoders"})]}),e.jsx("span",{className:"text-muted-foreground text-xs",children:"Not available yet"})]})]}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl text-xs text-secondary leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Verify your download:"})," SHA-256 checksums and GPG signature files (.asc) for every file are published in the release notes. Override the runtime data directory with ",e.jsx("code",{className:"text-cyan-300",children:"QECTOR_DATA_DIR"}),"."]})]}),e.jsxs("div",{ref:s=>t(s,3),className:"card-surface space-y-6",children:[e.jsxs("div",{className:"flex flex-col md:flex-row md:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Integrated Decoders"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"All 19 named kinds (17 concrete configurations plus AutoDecoder and Auto Router) are exposed through the Workbench MCP server. No benchmark figures are published on the site: run the included harness to measure your own hardware."})]}),e.jsxs("span",{className:"text-xs px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 text-cyan-300 rounded-full font-mono",children:["Windows & Linux backend qector_decoder_v3 ",a.backendVersion]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground leading-relaxed",children:["Each v1.0.7 release (Windows/Linux) declares ",e.jsx("strong",{className:"text-secondary",children:"19 named kinds: 17 concrete configurations plus 2 orchestration entries"})," against its bundled qector_decoder_v3 ",a.backendVersion," backend. Consult each release's included manuals for platform-specific coverage."]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"Decoder Kind"}),e.jsx("th",{className:"py-3 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-3 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:m.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3 font-mono font-semibold text-primary",children:s.kind}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.desc})]},s.kind))})]})})]}),e.jsxs("div",{ref:s=>t(s,4),children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"10 Supported Code Families"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["The published releases cover ",e.jsx("strong",{className:"text-primary",children:"10 code families"}),", including qLDPC and colour codes."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:h.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl space-y-2",children:[e.jsx("span",{className:"font-mono text-cyan-300 font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground font-mono",children:["Param: ",s.params]}),e.jsx("p",{className:"text-xs text-secondary",children:s.desc})]},s.name))})]}),e.jsxs("div",{ref:s=>t(s,5),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-6",children:"Workbench Components"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"Desktop GUI",desc:"CustomTkinter desktop UI for Windows and Linux. Visual circuit builder, syndrome viewer, decoder performance dashboard, and a distance slider covering d3-d63 on supported families."},{name:"MCP Tools",desc:"Native Model Context Protocol server over stdio JSON-RPC 2.0, launched with --mcp and usable headlessly with no display. Connects AI agents directly to decoder execution and diagnostics."},{name:"Self-Contained",desc:"Bundles its own Python runtime, the scientific stack, and the qector_decoder_v3 1.0.0 wheel. No system Python or pip required; the app makes no online update checks."},{name:"Self / Auto-Debug Layer",desc:"Verifies H·c == s on every decode with a full attempt trace, and falls back across decoders automatically when a decoder fails to produce a faithful correction."},{name:"Hardware Dashboard",desc:"Auto-detects CUDA, OpenCL, and CPU backends, and reports OpenCL absence honestly: it names why a backend is unavailable rather than printing a bare N/A."},{name:"Lab & Personal Info",desc:"Deposit profile (author, ORCID, affiliation, DOI, funding, keywords) for generated reports, plus decoder license-key installation with a live tier readout."},{name:"Documentation Export",desc:"Export documentation and evidence in the formats supported by the selected release, with optional .zenodo.json and CITATION.cff deposit sidecars."},{name:"Bundled Manuals & EULA",desc:"Each release ships an API Reference, MCP Integration Guide, Quick Start Guide, a per-OS User Manual, a machine-readable LLM manual, and EULA.txt, with SHA-256 checksums for every file."}].map(s=>e.jsx(u,{title:s.name,desc:s.desc},s.name))})]}),e.jsxs("div",{ref:s=>t(s,6),className:"space-y-6",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold",children:"Decoder Sandbox"}),e.jsx("p",{className:"text-secondary text-sm",children:"Below is an interactive sandbox replicating the basic topological planar code matching module inside QECTOR Workbench. Click to inject errors and inspect Blossom correction paths in real time."}),e.jsx(b,{})]}),e.jsxs("div",{ref:s=>t(s,7),children:[e.jsx(f,{title:"Documentation & Reference",statement:"QECTOR Workbench documentation is published alongside each app release. The Windows v1.0.7 and Linux v1.0.7 builds ship per-OS manuals and SHA-256 checksums; use the release-specific manuals for your platform."}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 mt-4",children:[e.jsxs("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Manuals & EULA"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"GitHub Releases"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"API Reference, MCP guide, Quick Start, per-OS manual"})]}),e.jsxs(i,{to:"/evidence",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Validation & Evidence"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/evidence"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Validation reports and SHA-256 sealed artifact manifests"})]}),e.jsxs(i,{to:"/technical-reference",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Architecture Whitepaper"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/technical-reference"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Technical specification & design"})]})]})]}),e.jsx("div",{className:"text-center pt-4",children:e.jsx(i,{to:"/contact",className:"btn-cyan",children:"Contact for Technical Support"})})]})})]})}export{_ as default}; diff --git a/assets/Workbench-DsnWT-94.js b/assets/Workbench-DsnWT-94.js deleted file mode 100644 index f2d0cc5b..00000000 --- a/assets/Workbench-DsnWT-94.js +++ /dev/null @@ -1 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,A as u,Q as b,E as f}from"./index-BUYYSLdX.js";import{N as g}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as y}from"./vendor-gsap-a3sj5zmn.js";import{W as o}from"./releases-1-HBloZv.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";c.registerPlugin(y);const[a,r]=o;function _(){const l=x.useRef([]);x.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=c.context(()=>{l.current.filter(Boolean).forEach(n=>{c.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const t=(s,n)=>{s&&(l.current[n]=s)},m=[{kind:"union_find",type:"Graphlike",desc:"Fast approximate Union-Find decoding; higher LER than exact MWPM."},{kind:"fast_union_find",type:"Graphlike",desc:"Optimized Union-Find hot path; approximate."},{kind:"blossom",type:"Universal",desc:"Weight-optimal exact minimum-weight perfect matching (Edmonds' Blossom)."},{kind:"sparse_blossom",type:"Graphlike",desc:"Event-driven Sparse Blossom with radix-heap region growth (experimental)."},{kind:"bp_osd",type:"Universal / qLDPC",desc:"Belief propagation + ordered-statistics decoding for LDPC / qLDPC codes."},{kind:"auto",type:"Graphlike",desc:"Self-selecting AutoDecoder: picks the best available decoder for the code."},{kind:"hybrid",type:"Graphlike",desc:"Combines a fast heuristic pass with exact matching."},{kind:"lookup_table",type:"Small (<20 checks)",desc:"Precomputed syndrome-to-correction table with O(1) lookup."},{kind:"predecoded",type:"Graphlike",desc:"Fast pre-decoding pass that resolves easy/low-weight syndromes."},{kind:"auto_router",type:"Universal",desc:"Policy decoder: inspects the code and dispatches the best concrete decoder."},{kind:"hybrid_cascade",type:"Graphlike",desc:"Union-Find pre-filter escalating to Blossom/BP-OSD."},{kind:"gnn_belief_matching",type:"Graphlike",desc:"GNN-predicted per-qubit weights guide edge-weighted matching with fallback."},{kind:"belief_matching",type:"Universal",desc:"Sum-product BP posteriors reweight an exact Blossom matching."},{kind:"two_stage",type:"Graphlike",desc:"Decoupled X/Z sector decoders for CSS / colour codes."},{kind:"ambiguity_cluster",type:"Graphlike",desc:"Cluster-growth decoder for high noise or non-graphlike codes."},{kind:"colour_code",type:"Universal / qLDPC",desc:"BP-OSD hypergraph decoder over undecomposed detector error models."},{kind:"space_time",type:"Universal",desc:"Space-time decoder for multi-round decoding (experimental)."},{kind:"spacetime_mwpm",type:"Multi-round",desc:"Space-time MWPM for phenomenological & circuit-level decoding."},{kind:"soft_llr",type:"Soft-decision",desc:"Log-likelihood-ratio-weighted decoding."}],h=[{name:"repetition",params:"distance (int)",desc:"1D chain parity-check code."},{name:"ring",params:"distance (int)",desc:"Periodic 1D chain."},{name:"rotated_surface",params:"distance (int)",desc:"Standard rotated surface code."},{name:"unrotated_surface",params:"distance (int)",desc:"Square lattice surface code."},{name:"toric",params:"distance (int)",desc:"Toric code with periodic boundaries."},{name:"heavy_hex",params:"distance (int)",desc:"Heavy-hex lattice."},{name:"hypergraph_product",params:"distance (int)",desc:"CSS code from repetition seed."},{name:"bicycle",params:"circulant size (int)",desc:"qLDPC bicycle code."},{name:"bivariate_bicycle",params:"preset index (int)",desc:"Bivariate bicycle presets (qLDPC)."},{name:"color_code",params:"triangular size (int)",desc:"Triangular & 2D 4.8.8 colour codes."}],d=["Code Explorer","Decoder Lab","Benchmark","Batch & Streaming","Hardware","Diagnostics","Documentation","Lab & Personal Info","Console"];return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"QECTOR Workbench - Windows v1.0.7 and Linux v1.0.7",description:`QECTOR Workbench desktop GUI and MCP releases: ${a.label} ${a.version} (${a.arch}) with ${a.mcpTools} tools and a ${a.backendVersion} backend, ${r.label} ${r.version} with ${r.mcpTools} tools.`}),e.jsxs("div",{className:"bg-emerald-950/50 border-b border-emerald-500/30 py-2.5 text-center text-sm px-4",children:[e.jsx("span",{className:"text-emerald-400 font-semibold",children:"Free Desktop Application:"})," ",o.map((s,n)=>e.jsxs("span",{children:[e.jsxs("a",{href:s.releaseUrl,className:"underline hover:text-emerald-300 transition-colors",target:"_blank",rel:"noopener noreferrer",children:[s.label," ",s.version," · published ",s.releaseDate," · ",s.mcpTools," MCP tools"]}),nt(s,0),className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"v1.0.7 ×2",label:"Live releases (Win / Linux)"},{value:`${a.mcpTools}`,label:`MCP tools per ${a.label} release`},{value:"19",label:"Named kinds (17 + 2 routing)"},{value:"10",label:"Quantum Code Families"}].map(s=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-3xl mb-1",children:s.value}),e.jsx("div",{className:"text-secondary text-sm",children:s.label})]},s.label))}),e.jsxs("div",{ref:s=>t(s,1),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"Inside the Workbench"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Nine workspaces are documented for the live v1.0.7 (Windows/Linux) releases:"," ",d.map((s,n)=>e.jsxs("span",{children:[e.jsx("span",{className:"text-primary font-medium",children:s}),ne.jsxs("div",{className:"bg-void border border-gridline rounded-xl p-5",children:[e.jsx("span",{className:"text-cyan-300 font-semibold text-sm block mb-2",children:s}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Explore this workspace with the release documentation and inspect results on your own machine. No hardware-specific run data is published here."})]},s))})]}),e.jsxs("div",{ref:s=>t(s,2),className:"card-surface space-y-5",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Downloads"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-5",children:[e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Windows x64 · ",a.version]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Portable single executable and release ZIP. No installer required, no admin rights. The app makes no online update checks."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",a.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:a.artifact}),", then launch directly."]}),e.jsxs("li",{children:["Headless MCP server: ",e.jsx("code",{className:"text-cyan-300",children:"QectorWorkbench-Portable.exe --mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"%LOCALAPPDATA%\\QectorWorkbench"})]}),e.jsxs("li",{children:["Exe SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:a.artifactSha256})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:a.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Windows Portable (.exe)"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-windows/releases/download/v1.0.7/QectorWorkbench-v1.0.7-Windows-x64-Public.zip",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Full ZIP Archive"}),e.jsx("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Linux x64 · ",r.version]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed",children:["Published ",r.version," portable ELF executable and Debian (.deb) package with bundled qector-decoder-v3 ",r.backendVersion," backend and ",r.mcpTools,"-tool MCP server."]}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",r.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:r.artifact})," or the Debian package."]}),e.jsxs("li",{children:["Headless MCP server: append ",e.jsx("code",{className:"text-cyan-300",children:"--mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"~/.local/share/QectorWorkbench"})]}),e.jsxs("li",{children:["Portable SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:r.artifactSha256})]}),e.jsxs("li",{children:["Debian SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:"5221dc9557319f2c55e6048ab30eb4a080d603abc9bab3d2b4cde01ef5b8aa45"})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:r.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Linux Portable"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-linux/releases/download/v1.0.7/qector-workbench_1.0.7_amd64.deb",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Debian Package (.deb)"}),e.jsx("a",{href:r.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3 opacity-60",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-base",children:"macOS arm64 - not ready yet"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Apple silicon build requires a build on Apple hardware and is not included until that build is produced and signed."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsx("li",{children:"Requires Apple hardware build - coming soon"}),e.jsx("li",{children:"No artifact yet - check back for macOS release"}),e.jsx("li",{children:"Windows and Linux v1.0.7 are live with 19 decoders"})]}),e.jsx("span",{className:"text-muted-foreground text-xs",children:"Not available yet"})]})]}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl text-xs text-secondary leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Verify your download:"})," SHA-256 checksums and GPG signature files (.asc) for every file are published in the release notes. Override the runtime data directory with ",e.jsx("code",{className:"text-cyan-300",children:"QECTOR_DATA_DIR"}),"."]})]}),e.jsxs("div",{ref:s=>t(s,3),className:"card-surface space-y-6",children:[e.jsxs("div",{className:"flex flex-col md:flex-row md:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Integrated Decoders"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"All 19 named kinds (17 concrete configurations plus AutoDecoder and Auto Router) are exposed through the Workbench MCP server. No benchmark figures are published on the site: run the included harness to measure your own hardware."})]}),e.jsxs("span",{className:"text-xs px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 text-cyan-300 rounded-full font-mono",children:["Windows & Linux backend qector_decoder_v3 ",a.backendVersion]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground leading-relaxed",children:["Each v1.0.7 release (Windows/Linux) declares ",e.jsx("strong",{className:"text-secondary",children:"19 named kinds: 17 concrete configurations plus 2 orchestration entries"})," against its bundled qector_decoder_v3 ",a.backendVersion," backend. Consult each release's included manuals for platform-specific coverage."]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"Decoder Kind"}),e.jsx("th",{className:"py-3 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-3 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:m.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3 font-mono font-semibold text-primary",children:s.kind}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.desc})]},s.kind))})]})})]}),e.jsxs("div",{ref:s=>t(s,4),children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"10 Supported Code Families"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["The published releases cover ",e.jsx("strong",{className:"text-primary",children:"10 code families"}),", including qLDPC and colour codes."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:h.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl space-y-2",children:[e.jsx("span",{className:"font-mono text-cyan-300 font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground font-mono",children:["Param: ",s.params]}),e.jsx("p",{className:"text-xs text-secondary",children:s.desc})]},s.name))})]}),e.jsxs("div",{ref:s=>t(s,5),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-6",children:"Workbench Components"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"Desktop GUI",desc:"CustomTkinter desktop UI for Windows and Linux. Visual circuit builder, syndrome viewer, decoder performance dashboard, and a distance slider covering d3-d63 on supported families."},{name:"MCP Tools",desc:"Native Model Context Protocol server over stdio JSON-RPC 2.0, launched with --mcp and usable headlessly with no display. Connects AI agents directly to decoder execution and diagnostics."},{name:"Self-Contained",desc:"Bundles its own Python runtime, the scientific stack, and the qector_decoder_v3 1.0.0 wheel. No system Python or pip required; the app makes no online update checks."},{name:"Self / Auto-Debug Layer",desc:"Verifies H·c == s on every decode with a full attempt trace, and falls back across decoders automatically when a decoder fails to produce a faithful correction."},{name:"Hardware Dashboard",desc:"Auto-detects CUDA, OpenCL, and CPU backends, and reports OpenCL absence honestly: it names why a backend is unavailable rather than printing a bare N/A."},{name:"Lab & Personal Info",desc:"Deposit profile (author, ORCID, affiliation, DOI, funding, keywords) for generated reports, plus decoder license-key installation with a live tier readout."},{name:"Documentation Export",desc:"Export documentation and evidence in the formats supported by the selected release, with optional .zenodo.json and CITATION.cff deposit sidecars."},{name:"Bundled Manuals & EULA",desc:"Each release ships an API Reference, MCP Integration Guide, Quick Start Guide, a per-OS User Manual, a machine-readable LLM manual, and EULA.txt, with SHA-256 checksums for every file."}].map(s=>e.jsx(u,{title:s.name,desc:s.desc},s.name))})]}),e.jsxs("div",{ref:s=>t(s,6),className:"space-y-6",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold",children:"Decoder Sandbox"}),e.jsx("p",{className:"text-secondary text-sm",children:"Below is an interactive sandbox replicating the basic topological planar code matching module inside QECTOR Workbench. Click to inject errors and inspect Blossom correction paths in real time."}),e.jsx(b,{})]}),e.jsxs("div",{ref:s=>t(s,7),children:[e.jsx(f,{title:"Documentation & Reference",statement:"QECTOR Workbench documentation is published alongside each app release. The Windows v1.0.7 and Linux v1.0.7 builds ship per-OS manuals and SHA-256 checksums; use the release-specific manuals for your platform."}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 mt-4",children:[e.jsxs("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Manuals & EULA"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"GitHub Releases"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"API Reference, MCP guide, Quick Start, per-OS manual"})]}),e.jsxs(i,{to:"/evidence",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Validation & Evidence"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/evidence"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Validation reports and SHA-256 sealed artifact manifests"})]}),e.jsxs(i,{to:"/technical-reference",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Architecture Whitepaper"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/technical-reference"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Technical specification & design"})]})]})]}),e.jsx("div",{className:"text-center pt-4",children:e.jsx(i,{to:"/contact",className:"btn-cyan",children:"Contact for Technical Support"})})]})})]})}export{_ as default}; diff --git a/assets/Workbench-HYBHlCyI.js b/assets/Workbench-HYBHlCyI.js deleted file mode 100644 index 5c419125..00000000 --- a/assets/Workbench-HYBHlCyI.js +++ /dev/null @@ -1 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,A as u,Q as b,E as f}from"./index-_BpMZhV3.js";import{N as g}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as y}from"./vendor-gsap-a3sj5zmn.js";import{W as o}from"./releases-DiQz_IDu.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";c.registerPlugin(y);const[a,r]=o;function _(){const l=x.useRef([]);x.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=c.context(()=>{l.current.filter(Boolean).forEach(n=>{c.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const t=(s,n)=>{s&&(l.current[n]=s)},m=[{kind:"union_find",type:"Graphlike",desc:"Fast approximate Union-Find decoding; higher LER than exact MWPM."},{kind:"fast_union_find",type:"Graphlike",desc:"Optimized Union-Find hot path; approximate."},{kind:"blossom",type:"Universal",desc:"Weight-optimal exact minimum-weight perfect matching (Edmonds' Blossom)."},{kind:"sparse_blossom",type:"Graphlike",desc:"Event-driven Sparse Blossom with radix-heap region growth (experimental)."},{kind:"bp_osd",type:"Universal / qLDPC",desc:"Belief propagation + ordered-statistics decoding for LDPC / qLDPC codes."},{kind:"auto",type:"Graphlike",desc:"Self-selecting AutoDecoder: picks the best available decoder for the code."},{kind:"hybrid",type:"Graphlike",desc:"Combines a fast heuristic pass with exact matching."},{kind:"lookup_table",type:"Small (<20 checks)",desc:"Precomputed syndrome-to-correction table with O(1) lookup."},{kind:"predecoded",type:"Graphlike",desc:"Fast pre-decoding pass that resolves easy/low-weight syndromes."},{kind:"auto_router",type:"Universal",desc:"Policy decoder: inspects the code and dispatches the best concrete decoder."},{kind:"hybrid_cascade",type:"Graphlike",desc:"Union-Find pre-filter escalating to Blossom/BP-OSD."},{kind:"gnn_belief_matching",type:"Graphlike",desc:"GNN-predicted per-qubit weights guide edge-weighted matching with fallback."},{kind:"belief_matching",type:"Universal",desc:"Sum-product BP posteriors reweight an exact Blossom matching."},{kind:"two_stage",type:"Graphlike",desc:"Decoupled X/Z sector decoders for CSS / colour codes."},{kind:"ambiguity_cluster",type:"Graphlike",desc:"Cluster-growth decoder for high noise or non-graphlike codes."},{kind:"colour_code",type:"Universal / qLDPC",desc:"BP-OSD hypergraph decoder over undecomposed detector error models."},{kind:"space_time",type:"Universal",desc:"Space-time decoder for multi-round decoding (experimental)."},{kind:"spacetime_mwpm",type:"Multi-round",desc:"Space-time MWPM for phenomenological & circuit-level decoding."},{kind:"soft_llr",type:"Soft-decision",desc:"Log-likelihood-ratio-weighted decoding."}],h=[{name:"repetition",params:"distance (int)",desc:"1D chain parity-check code."},{name:"ring",params:"distance (int)",desc:"Periodic 1D chain."},{name:"rotated_surface",params:"distance (int)",desc:"Standard rotated surface code."},{name:"unrotated_surface",params:"distance (int)",desc:"Square lattice surface code."},{name:"toric",params:"distance (int)",desc:"Toric code with periodic boundaries."},{name:"heavy_hex",params:"distance (int)",desc:"Heavy-hex lattice."},{name:"hypergraph_product",params:"distance (int)",desc:"CSS code from repetition seed."},{name:"bicycle",params:"circulant size (int)",desc:"qLDPC bicycle code."},{name:"bivariate_bicycle",params:"preset index (int)",desc:"Bivariate bicycle presets (qLDPC)."},{name:"color_code",params:"triangular size (int)",desc:"Triangular & 2D 4.8.8 colour codes."}],d=["Code Explorer","Decoder Lab","Benchmark","Batch & Streaming","Hardware","Diagnostics","Documentation","Lab & Personal Info","Console"];return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"QECTOR Workbench - Windows v1.0.7 and Linux v1.0.7",description:`QECTOR Workbench desktop GUI and MCP releases: ${a.label} ${a.version} (${a.arch}) with ${a.mcpTools} tools and a ${a.backendVersion} backend, ${r.label} ${r.version} with ${r.mcpTools} tools.`}),e.jsxs("div",{className:"bg-emerald-950/50 border-b border-emerald-500/30 py-2.5 text-center text-sm px-4",children:[e.jsx("span",{className:"text-emerald-400 font-semibold",children:"Free Desktop Application:"})," ",o.map((s,n)=>e.jsxs("span",{children:[e.jsxs("a",{href:s.releaseUrl,className:"underline hover:text-emerald-300 transition-colors",target:"_blank",rel:"noopener noreferrer",children:[s.label," ",s.version," · published ",s.releaseDate," · ",s.mcpTools," MCP tools"]}),nt(s,0),className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"v1.0.7 ×2",label:"Live releases (Win / Linux)"},{value:`${a.mcpTools}`,label:`MCP tools per ${a.label} release`},{value:"19",label:"Named kinds (17 + 2 routing)"},{value:"10",label:"Quantum Code Families"}].map(s=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-3xl mb-1",children:s.value}),e.jsx("div",{className:"text-secondary text-sm",children:s.label})]},s.label))}),e.jsxs("div",{ref:s=>t(s,1),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"Inside the Workbench"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Nine workspaces are documented for the live v1.0.7 (Windows/Linux) releases:"," ",d.map((s,n)=>e.jsxs("span",{children:[e.jsx("span",{className:"text-primary font-medium",children:s}),ne.jsxs("div",{className:"bg-void border border-gridline rounded-xl p-5",children:[e.jsx("span",{className:"text-cyan-300 font-semibold text-sm block mb-2",children:s}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Explore this workspace with the release documentation and inspect results on your own machine. No hardware-specific run data is published here."})]},s))})]}),e.jsxs("div",{ref:s=>t(s,2),className:"card-surface space-y-5",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Downloads"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-5",children:[e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Windows x64 · ",a.version]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Portable single executable and release ZIP. No installer required, no admin rights. The app makes no online update checks."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",a.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:a.artifact}),", then launch directly."]}),e.jsxs("li",{children:["Headless MCP server: ",e.jsx("code",{className:"text-cyan-300",children:"QectorWorkbench-Portable.exe --mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"%LOCALAPPDATA%\\QectorWorkbench"})]}),e.jsxs("li",{children:["Exe SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:a.artifactSha256})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:a.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Windows Portable (.exe)"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-windows/releases/download/v1.0.7/QectorWorkbench-v1.0.7-Windows-x64-Public.zip",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Full ZIP Archive"}),e.jsx("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Linux x64 · ",r.version]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed",children:["Published ",r.version," portable ELF executable and Debian (.deb) package with bundled qector-decoder-v3 ",r.backendVersion," backend and ",r.mcpTools,"-tool MCP server."]}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",r.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:r.artifact})," or the Debian package."]}),e.jsxs("li",{children:["Headless MCP server: append ",e.jsx("code",{className:"text-cyan-300",children:"--mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"~/.local/share/QectorWorkbench"})]}),e.jsxs("li",{children:["Portable SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:r.artifactSha256})]}),e.jsxs("li",{children:["Debian SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:"5221dc9557319f2c55e6048ab30eb4a080d603abc9bab3d2b4cde01ef5b8aa45"})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:r.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Linux Portable"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-linux/releases/download/v1.0.7/qector-workbench_1.0.7_amd64.deb",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Debian Package (.deb)"}),e.jsx("a",{href:r.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3 opacity-60",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-base",children:"macOS arm64 - not ready yet"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Apple silicon build requires a build on Apple hardware and is not included until that build is produced and signed."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsx("li",{children:"Requires Apple hardware build - coming soon"}),e.jsx("li",{children:"No artifact yet - check back for macOS release"}),e.jsx("li",{children:"Windows and Linux v1.0.7 are live with 19 decoders"})]}),e.jsx("span",{className:"text-muted-foreground text-xs",children:"Not available yet"})]})]}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl text-xs text-secondary leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Verify your download:"})," SHA-256 checksums and GPG signature files (.asc) for every file are published in the release notes. Override the runtime data directory with ",e.jsx("code",{className:"text-cyan-300",children:"QECTOR_DATA_DIR"}),"."]})]}),e.jsxs("div",{ref:s=>t(s,3),className:"card-surface space-y-6",children:[e.jsxs("div",{className:"flex flex-col md:flex-row md:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Integrated Decoders"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"All 19 named kinds (17 concrete configurations plus AutoDecoder and Auto Router) are exposed through the Workbench MCP server. No benchmark figures are published on the site: run the included harness to measure your own hardware."})]}),e.jsxs("span",{className:"text-xs px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 text-cyan-300 rounded-full font-mono",children:["Windows & Linux backend qector_decoder_v3 ",a.backendVersion]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground leading-relaxed",children:["Each v1.0.7 release (Windows/Linux) declares ",e.jsx("strong",{className:"text-secondary",children:"19 named kinds: 17 concrete configurations plus 2 orchestration entries"})," against its bundled qector_decoder_v3 ",a.backendVersion," backend. Consult each release's included manuals for platform-specific coverage."]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"Decoder Kind"}),e.jsx("th",{className:"py-3 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-3 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:m.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3 font-mono font-semibold text-primary",children:s.kind}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.desc})]},s.kind))})]})})]}),e.jsxs("div",{ref:s=>t(s,4),children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"10 Supported Code Families"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["The published releases cover ",e.jsx("strong",{className:"text-primary",children:"10 code families"}),", including qLDPC and colour codes."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:h.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl space-y-2",children:[e.jsx("span",{className:"font-mono text-cyan-300 font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground font-mono",children:["Param: ",s.params]}),e.jsx("p",{className:"text-xs text-secondary",children:s.desc})]},s.name))})]}),e.jsxs("div",{ref:s=>t(s,5),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-6",children:"Workbench Components"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"Desktop GUI",desc:"CustomTkinter desktop UI for Windows and Linux. Visual circuit builder, syndrome viewer, decoder performance dashboard, and a distance slider covering d3-d63 on supported families."},{name:"MCP Tools",desc:"Native Model Context Protocol server over stdio JSON-RPC 2.0, launched with --mcp and usable headlessly with no display. Connects AI agents directly to decoder execution and diagnostics."},{name:"Self-Contained",desc:"Bundles its own Python runtime, the scientific stack, and the qector_decoder_v3 1.0.0 wheel. No system Python or pip required; the app makes no online update checks."},{name:"Self / Auto-Debug Layer",desc:"Verifies H·c == s on every decode with a full attempt trace, and falls back across decoders automatically when a decoder fails to produce a faithful correction."},{name:"Hardware Dashboard",desc:"Auto-detects CUDA, OpenCL, and CPU backends, and reports OpenCL absence honestly: it names why a backend is unavailable rather than printing a bare N/A."},{name:"Lab & Personal Info",desc:"Deposit profile (author, ORCID, affiliation, DOI, funding, keywords) for generated reports, plus decoder license-key installation with a live tier readout."},{name:"Documentation Export",desc:"Export documentation and evidence in the formats supported by the selected release, with optional .zenodo.json and CITATION.cff deposit sidecars."},{name:"Bundled Manuals & EULA",desc:"Each release ships an API Reference, MCP Integration Guide, Quick Start Guide, a per-OS User Manual, a machine-readable LLM manual, and EULA.txt, with SHA-256 checksums for every file."}].map(s=>e.jsx(u,{title:s.name,desc:s.desc},s.name))})]}),e.jsxs("div",{ref:s=>t(s,6),className:"space-y-6",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold",children:"Decoder Sandbox"}),e.jsx("p",{className:"text-secondary text-sm",children:"Below is an interactive sandbox replicating the basic topological planar code matching module inside QECTOR Workbench. Click to inject errors and inspect Blossom correction paths in real time."}),e.jsx(b,{})]}),e.jsxs("div",{ref:s=>t(s,7),children:[e.jsx(f,{title:"Documentation & Reference",statement:"QECTOR Workbench documentation is published alongside each app release. The Windows v1.0.7 and Linux v1.0.7 builds ship per-OS manuals and SHA-256 checksums; use the release-specific manuals for your platform."}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 mt-4",children:[e.jsxs("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Manuals & EULA"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"GitHub Releases"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"API Reference, MCP guide, Quick Start, per-OS manual"})]}),e.jsxs(i,{to:"/evidence",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Validation & Evidence"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/evidence"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Validation reports and SHA-256 sealed artifact manifests"})]}),e.jsxs(i,{to:"/technical-reference",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Architecture Whitepaper"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/technical-reference"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Technical specification & design"})]})]})]}),e.jsx("div",{className:"text-center pt-4",children:e.jsx(i,{to:"/contact",className:"btn-cyan",children:"Contact for Technical Support"})})]})})]})}export{_ as default}; diff --git a/assets/Workbench-KEHB2TYr.js b/assets/Workbench-KEHB2TYr.js deleted file mode 100644 index 50e51ef3..00000000 --- a/assets/Workbench-KEHB2TYr.js +++ /dev/null @@ -1 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,A as u,Q as b,E as f}from"./index-BN-vOeL2.js";import{N as g}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as y}from"./vendor-gsap-a3sj5zmn.js";import{W as o}from"./releases-DiQz_IDu.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";c.registerPlugin(y);const[a,r]=o;function _(){const l=x.useRef([]);x.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=c.context(()=>{l.current.filter(Boolean).forEach(n=>{c.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const t=(s,n)=>{s&&(l.current[n]=s)},m=[{kind:"union_find",type:"Graphlike",desc:"Fast approximate Union-Find decoding; higher LER than exact MWPM."},{kind:"fast_union_find",type:"Graphlike",desc:"Optimized Union-Find hot path; approximate."},{kind:"blossom",type:"Universal",desc:"Weight-optimal exact minimum-weight perfect matching (Edmonds' Blossom)."},{kind:"sparse_blossom",type:"Graphlike",desc:"Event-driven Sparse Blossom with radix-heap region growth (experimental)."},{kind:"bp_osd",type:"Universal / qLDPC",desc:"Belief propagation + ordered-statistics decoding for LDPC / qLDPC codes."},{kind:"auto",type:"Graphlike",desc:"Self-selecting AutoDecoder: picks the best available decoder for the code."},{kind:"hybrid",type:"Graphlike",desc:"Combines a fast heuristic pass with exact matching."},{kind:"lookup_table",type:"Small (<20 checks)",desc:"Precomputed syndrome-to-correction table with O(1) lookup."},{kind:"predecoded",type:"Graphlike",desc:"Fast pre-decoding pass that resolves easy/low-weight syndromes."},{kind:"auto_router",type:"Universal",desc:"Policy decoder: inspects the code and dispatches the best concrete decoder."},{kind:"hybrid_cascade",type:"Graphlike",desc:"Union-Find pre-filter escalating to Blossom/BP-OSD."},{kind:"gnn_belief_matching",type:"Graphlike",desc:"GNN-predicted per-qubit weights guide edge-weighted matching with fallback."},{kind:"belief_matching",type:"Universal",desc:"Sum-product BP posteriors reweight an exact Blossom matching."},{kind:"two_stage",type:"Graphlike",desc:"Decoupled X/Z sector decoders for CSS / colour codes."},{kind:"ambiguity_cluster",type:"Graphlike",desc:"Cluster-growth decoder for high noise or non-graphlike codes."},{kind:"colour_code",type:"Universal / qLDPC",desc:"BP-OSD hypergraph decoder over undecomposed detector error models."},{kind:"space_time",type:"Universal",desc:"Space-time decoder for multi-round decoding (experimental)."},{kind:"spacetime_mwpm",type:"Multi-round",desc:"Space-time MWPM for phenomenological & circuit-level decoding."},{kind:"soft_llr",type:"Soft-decision",desc:"Log-likelihood-ratio-weighted decoding."}],h=[{name:"repetition",params:"distance (int)",desc:"1D chain parity-check code."},{name:"ring",params:"distance (int)",desc:"Periodic 1D chain."},{name:"rotated_surface",params:"distance (int)",desc:"Standard rotated surface code."},{name:"unrotated_surface",params:"distance (int)",desc:"Square lattice surface code."},{name:"toric",params:"distance (int)",desc:"Toric code with periodic boundaries."},{name:"heavy_hex",params:"distance (int)",desc:"Heavy-hex lattice."},{name:"hypergraph_product",params:"distance (int)",desc:"CSS code from repetition seed."},{name:"bicycle",params:"circulant size (int)",desc:"qLDPC bicycle code."},{name:"bivariate_bicycle",params:"preset index (int)",desc:"Bivariate bicycle presets (qLDPC)."},{name:"color_code",params:"triangular size (int)",desc:"Triangular & 2D 4.8.8 colour codes."}],d=["Code Explorer","Decoder Lab","Benchmark","Batch & Streaming","Hardware","Diagnostics","Documentation","Lab & Personal Info","Console"];return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"QECTOR Workbench - Windows v1.0.7 and Linux v1.0.7",description:`QECTOR Workbench desktop GUI and MCP releases: ${a.label} ${a.version} (${a.arch}) with ${a.mcpTools} tools and a ${a.backendVersion} backend, ${r.label} ${r.version} with ${r.mcpTools} tools.`}),e.jsxs("div",{className:"bg-emerald-950/50 border-b border-emerald-500/30 py-2.5 text-center text-sm px-4",children:[e.jsx("span",{className:"text-emerald-400 font-semibold",children:"Free Desktop Application:"})," ",o.map((s,n)=>e.jsxs("span",{children:[e.jsxs("a",{href:s.releaseUrl,className:"underline hover:text-emerald-300 transition-colors",target:"_blank",rel:"noopener noreferrer",children:[s.label," ",s.version," · published ",s.releaseDate," · ",s.mcpTools," MCP tools"]}),nt(s,0),className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"v1.0.7 ×2",label:"Live releases (Win / Linux)"},{value:`${a.mcpTools}`,label:`MCP tools per ${a.label} release`},{value:"19",label:"Named kinds (17 + 2 routing)"},{value:"10",label:"Quantum Code Families"}].map(s=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-3xl mb-1",children:s.value}),e.jsx("div",{className:"text-secondary text-sm",children:s.label})]},s.label))}),e.jsxs("div",{ref:s=>t(s,1),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"Inside the Workbench"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Nine workspaces are documented for the live v1.0.7 (Windows/Linux) releases:"," ",d.map((s,n)=>e.jsxs("span",{children:[e.jsx("span",{className:"text-primary font-medium",children:s}),ne.jsxs("div",{className:"bg-void border border-gridline rounded-xl p-5",children:[e.jsx("span",{className:"text-cyan-300 font-semibold text-sm block mb-2",children:s}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Explore this workspace with the release documentation and inspect results on your own machine. No hardware-specific run data is published here."})]},s))})]}),e.jsxs("div",{ref:s=>t(s,2),className:"card-surface space-y-5",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Downloads"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-5",children:[e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Windows x64 · ",a.version]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Portable single executable and release ZIP. No installer required, no admin rights. The app makes no online update checks."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",a.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:a.artifact}),", then launch directly."]}),e.jsxs("li",{children:["Headless MCP server: ",e.jsx("code",{className:"text-cyan-300",children:"QectorWorkbench-Portable.exe --mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"%LOCALAPPDATA%\\QectorWorkbench"})]}),e.jsxs("li",{children:["Exe SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:a.artifactSha256})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:a.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Windows Portable (.exe)"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-windows/releases/download/v1.0.7/QectorWorkbench-v1.0.7-Windows-x64-Public.zip",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Full ZIP Archive"}),e.jsx("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Linux x64 · ",r.version]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed",children:["Published ",r.version," portable ELF executable and Debian (.deb) package with bundled qector-decoder-v3 ",r.backendVersion," backend and ",r.mcpTools,"-tool MCP server."]}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",r.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:r.artifact})," or the Debian package."]}),e.jsxs("li",{children:["Headless MCP server: append ",e.jsx("code",{className:"text-cyan-300",children:"--mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"~/.local/share/QectorWorkbench"})]}),e.jsxs("li",{children:["Portable SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:r.artifactSha256})]}),e.jsxs("li",{children:["Debian SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:"5221dc9557319f2c55e6048ab30eb4a080d603abc9bab3d2b4cde01ef5b8aa45"})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:r.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Linux Portable"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-linux/releases/download/v1.0.7/qector-workbench_1.0.7_amd64.deb",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Debian Package (.deb)"}),e.jsx("a",{href:r.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3 opacity-60",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-base",children:"macOS arm64 - not ready yet"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Apple silicon build requires a build on Apple hardware and is not included until that build is produced and signed."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsx("li",{children:"Requires Apple hardware build - coming soon"}),e.jsx("li",{children:"No artifact yet - check back for macOS release"}),e.jsx("li",{children:"Windows and Linux v1.0.7 are live with 19 decoders"})]}),e.jsx("span",{className:"text-muted-foreground text-xs",children:"Not available yet"})]})]}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl text-xs text-secondary leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Verify your download:"})," SHA-256 checksums and GPG signature files (.asc) for every file are published in the release notes. Override the runtime data directory with ",e.jsx("code",{className:"text-cyan-300",children:"QECTOR_DATA_DIR"}),"."]})]}),e.jsxs("div",{ref:s=>t(s,3),className:"card-surface space-y-6",children:[e.jsxs("div",{className:"flex flex-col md:flex-row md:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Integrated Decoders"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"All 19 named kinds (17 concrete configurations plus AutoDecoder and Auto Router) are exposed through the Workbench MCP server. No benchmark figures are published on the site: run the included harness to measure your own hardware."})]}),e.jsxs("span",{className:"text-xs px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 text-cyan-300 rounded-full font-mono",children:["Windows & Linux backend qector_decoder_v3 ",a.backendVersion]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground leading-relaxed",children:["Each v1.0.7 release (Windows/Linux) declares ",e.jsx("strong",{className:"text-secondary",children:"19 named kinds: 17 concrete configurations plus 2 orchestration entries"})," against its bundled qector_decoder_v3 ",a.backendVersion," backend. Consult each release's included manuals for platform-specific coverage."]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"Decoder Kind"}),e.jsx("th",{className:"py-3 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-3 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:m.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3 font-mono font-semibold text-primary",children:s.kind}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.desc})]},s.kind))})]})})]}),e.jsxs("div",{ref:s=>t(s,4),children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"10 Supported Code Families"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["The published releases cover ",e.jsx("strong",{className:"text-primary",children:"10 code families"}),", including qLDPC and colour codes."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:h.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl space-y-2",children:[e.jsx("span",{className:"font-mono text-cyan-300 font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground font-mono",children:["Param: ",s.params]}),e.jsx("p",{className:"text-xs text-secondary",children:s.desc})]},s.name))})]}),e.jsxs("div",{ref:s=>t(s,5),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-6",children:"Workbench Components"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"Desktop GUI",desc:"CustomTkinter desktop UI for Windows and Linux. Visual circuit builder, syndrome viewer, decoder performance dashboard, and a distance slider covering d3-d63 on supported families."},{name:"MCP Tools",desc:"Native Model Context Protocol server over stdio JSON-RPC 2.0, launched with --mcp and usable headlessly with no display. Connects AI agents directly to decoder execution and diagnostics."},{name:"Self-Contained",desc:"Bundles its own Python runtime, the scientific stack, and the qector_decoder_v3 1.0.0 wheel. No system Python or pip required; the app makes no online update checks."},{name:"Self / Auto-Debug Layer",desc:"Verifies H·c == s on every decode with a full attempt trace, and falls back across decoders automatically when a decoder fails to produce a faithful correction."},{name:"Hardware Dashboard",desc:"Auto-detects CUDA, OpenCL, and CPU backends, and reports OpenCL absence honestly: it names why a backend is unavailable rather than printing a bare N/A."},{name:"Lab & Personal Info",desc:"Deposit profile (author, ORCID, affiliation, DOI, funding, keywords) for generated reports, plus decoder license-key installation with a live tier readout."},{name:"Documentation Export",desc:"Export documentation and evidence in the formats supported by the selected release, with optional .zenodo.json and CITATION.cff deposit sidecars."},{name:"Bundled Manuals & EULA",desc:"Each release ships an API Reference, MCP Integration Guide, Quick Start Guide, a per-OS User Manual, a machine-readable LLM manual, and EULA.txt, with SHA-256 checksums for every file."}].map(s=>e.jsx(u,{title:s.name,desc:s.desc},s.name))})]}),e.jsxs("div",{ref:s=>t(s,6),className:"space-y-6",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold",children:"Decoder Sandbox"}),e.jsx("p",{className:"text-secondary text-sm",children:"Below is an interactive sandbox replicating the basic topological planar code matching module inside QECTOR Workbench. Click to inject errors and inspect Blossom correction paths in real time."}),e.jsx(b,{})]}),e.jsxs("div",{ref:s=>t(s,7),children:[e.jsx(f,{title:"Documentation & Reference",statement:"QECTOR Workbench documentation is published alongside each app release. The Windows v1.0.7 and Linux v1.0.7 builds ship per-OS manuals and SHA-256 checksums; use the release-specific manuals for your platform."}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 mt-4",children:[e.jsxs("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Manuals & EULA"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"GitHub Releases"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"API Reference, MCP guide, Quick Start, per-OS manual"})]}),e.jsxs(i,{to:"/evidence",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Validation & Evidence"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/evidence"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Validation reports and SHA-256 sealed artifact manifests"})]}),e.jsxs(i,{to:"/technical-reference",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Architecture Whitepaper"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/technical-reference"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Technical specification & design"})]})]})]}),e.jsx("div",{className:"text-center pt-4",children:e.jsx(i,{to:"/contact",className:"btn-cyan",children:"Contact for Technical Support"})})]})})]})}export{_ as default}; diff --git a/assets/Workbench-e7-L36H7.js b/assets/Workbench-e7-L36H7.js deleted file mode 100644 index b3ef5908..00000000 --- a/assets/Workbench-e7-L36H7.js +++ /dev/null @@ -1 +0,0 @@ -import{r as x,j as e}from"./vendor-react-BiHfrq0e.js";import{S as p,A as u,Q as b,E as f}from"./index-DlmjLVYe.js";import{N as g}from"./NeuralReveal-BflyZYSb.js";import{g as c,S as y}from"./vendor-gsap-a3sj5zmn.js";import{W as o}from"./releases-DiQz_IDu.js";import{L as i}from"./vendor-PiU4YGcH.js";import"./vendor-ui-B0ssGG4c.js";import"./vendor-md-CLKxNZoa.js";c.registerPlugin(y);const[a,r]=o;function _(){const l=x.useRef([]);x.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const s=c.context(()=>{l.current.filter(Boolean).forEach(n=>{c.fromTo(n,{opacity:0,y:30},{opacity:1,y:0,duration:.6,ease:"power2.out",scrollTrigger:{trigger:n,start:"top 85%",once:!0}})})});return()=>{s.revert()}},[]);const t=(s,n)=>{s&&(l.current[n]=s)},m=[{kind:"union_find",type:"Graphlike",desc:"Fast approximate Union-Find decoding; higher LER than exact MWPM."},{kind:"fast_union_find",type:"Graphlike",desc:"Optimized Union-Find hot path; approximate."},{kind:"blossom",type:"Universal",desc:"Weight-optimal exact minimum-weight perfect matching (Edmonds' Blossom)."},{kind:"sparse_blossom",type:"Graphlike",desc:"Event-driven Sparse Blossom with radix-heap region growth (experimental)."},{kind:"bp_osd",type:"Universal / qLDPC",desc:"Belief propagation + ordered-statistics decoding for LDPC / qLDPC codes."},{kind:"auto",type:"Graphlike",desc:"Self-selecting AutoDecoder: picks the best available decoder for the code."},{kind:"hybrid",type:"Graphlike",desc:"Combines a fast heuristic pass with exact matching."},{kind:"lookup_table",type:"Small (<20 checks)",desc:"Precomputed syndrome-to-correction table with O(1) lookup."},{kind:"predecoded",type:"Graphlike",desc:"Fast pre-decoding pass that resolves easy/low-weight syndromes."},{kind:"auto_router",type:"Universal",desc:"Policy decoder: inspects the code and dispatches the best concrete decoder."},{kind:"hybrid_cascade",type:"Graphlike",desc:"Union-Find pre-filter escalating to Blossom/BP-OSD."},{kind:"gnn_belief_matching",type:"Graphlike",desc:"GNN-predicted per-qubit weights guide edge-weighted matching with fallback."},{kind:"belief_matching",type:"Universal",desc:"Sum-product BP posteriors reweight an exact Blossom matching."},{kind:"two_stage",type:"Graphlike",desc:"Decoupled X/Z sector decoders for CSS / colour codes."},{kind:"ambiguity_cluster",type:"Graphlike",desc:"Cluster-growth decoder for high noise or non-graphlike codes."},{kind:"colour_code",type:"Universal / qLDPC",desc:"BP-OSD hypergraph decoder over undecomposed detector error models."},{kind:"space_time",type:"Universal",desc:"Space-time decoder for multi-round decoding (experimental)."},{kind:"spacetime_mwpm",type:"Multi-round",desc:"Space-time MWPM for phenomenological & circuit-level decoding."},{kind:"soft_llr",type:"Soft-decision",desc:"Log-likelihood-ratio-weighted decoding."}],h=[{name:"repetition",params:"distance (int)",desc:"1D chain parity-check code."},{name:"ring",params:"distance (int)",desc:"Periodic 1D chain."},{name:"rotated_surface",params:"distance (int)",desc:"Standard rotated surface code."},{name:"unrotated_surface",params:"distance (int)",desc:"Square lattice surface code."},{name:"toric",params:"distance (int)",desc:"Toric code with periodic boundaries."},{name:"heavy_hex",params:"distance (int)",desc:"Heavy-hex lattice."},{name:"hypergraph_product",params:"distance (int)",desc:"CSS code from repetition seed."},{name:"bicycle",params:"circulant size (int)",desc:"qLDPC bicycle code."},{name:"bivariate_bicycle",params:"preset index (int)",desc:"Bivariate bicycle presets (qLDPC)."},{name:"color_code",params:"triangular size (int)",desc:"Triangular & 2D 4.8.8 colour codes."}],d=["Code Explorer","Decoder Lab","Benchmark","Batch & Streaming","Hardware","Diagnostics","Documentation","Lab & Personal Info","Console"];return e.jsxs(e.Fragment,{children:[e.jsx(p,{title:"QECTOR Workbench - Windows v1.0.7 and Linux v1.0.7",description:`QECTOR Workbench desktop GUI and MCP releases: ${a.label} ${a.version} (${a.arch}) with ${a.mcpTools} tools and a ${a.backendVersion} backend, ${r.label} ${r.version} with ${r.mcpTools} tools.`}),e.jsxs("div",{className:"bg-emerald-950/50 border-b border-emerald-500/30 py-2.5 text-center text-sm px-4",children:[e.jsx("span",{className:"text-emerald-400 font-semibold",children:"Free Desktop Application:"})," ",o.map((s,n)=>e.jsxs("span",{children:[e.jsxs("a",{href:s.releaseUrl,className:"underline hover:text-emerald-300 transition-colors",target:"_blank",rel:"noopener noreferrer",children:[s.label," ",s.version," · published ",s.releaseDate," · ",s.mcpTools," MCP tools"]}),nt(s,0),className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{value:"v1.0.7 ×2",label:"Live releases (Win / Linux)"},{value:`${a.mcpTools}`,label:`MCP tools per ${a.label} release`},{value:"19",label:"Named kinds (17 + 2 routing)"},{value:"10",label:"Quantum Code Families"}].map(s=>e.jsxs("div",{className:"card-surface text-center",children:[e.jsx("div",{className:"text-cyan-300 font-bold text-3xl mb-1",children:s.value}),e.jsx("div",{className:"text-secondary text-sm",children:s.label})]},s.label))}),e.jsxs("div",{ref:s=>t(s,1),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-2",children:"Inside the Workbench"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["Nine workspaces are documented for the live v1.0.7 (Windows/Linux) releases:"," ",d.map((s,n)=>e.jsxs("span",{children:[e.jsx("span",{className:"text-primary font-medium",children:s}),ne.jsxs("div",{className:"bg-void border border-gridline rounded-xl p-5",children:[e.jsx("span",{className:"text-cyan-300 font-semibold text-sm block mb-2",children:s}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Explore this workspace with the release documentation and inspect results on your own machine. No hardware-specific run data is published here."})]},s))})]}),e.jsxs("div",{ref:s=>t(s,2),className:"card-surface space-y-5",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Downloads"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-5",children:[e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Windows x64 · ",a.version]}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Portable single executable and release ZIP. No installer required, no admin rights. The app makes no online update checks."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",a.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:a.artifact}),", then launch directly."]}),e.jsxs("li",{children:["Headless MCP server: ",e.jsx("code",{className:"text-cyan-300",children:"QectorWorkbench-Portable.exe --mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"%LOCALAPPDATA%\\QectorWorkbench"})]}),e.jsxs("li",{children:["Exe SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:a.artifactSha256})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:a.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Windows Portable (.exe)"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-windows/releases/download/v1.0.7/QectorWorkbench-v1.0.7-Windows-x64-Public.zip",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Full ZIP Archive"}),e.jsx("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3",children:[e.jsxs("h3",{className:"text-cyan-300 font-semibold text-base",children:["Linux x64 · ",r.version]}),e.jsxs("p",{className:"text-secondary text-xs leading-relaxed",children:["Published ",r.version," portable ELF executable and Debian (.deb) package with bundled qector-decoder-v3 ",r.backendVersion," backend and ",r.mcpTools,"-tool MCP server."]}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsxs("li",{children:["Published ",r.releaseDate," in the verified GitHub release."]}),e.jsxs("li",{children:["Download ",e.jsx("code",{className:"text-cyan-300",children:r.artifact})," or the Debian package."]}),e.jsxs("li",{children:["Headless MCP server: append ",e.jsx("code",{className:"text-cyan-300",children:"--mcp"})]}),e.jsxs("li",{children:["Runtime data: ",e.jsx("code",{className:"text-cyan-300",children:"~/.local/share/QectorWorkbench"})]}),e.jsxs("li",{children:["Portable SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:r.artifactSha256})]}),e.jsxs("li",{children:["Debian SHA-256: ",e.jsx("code",{className:"text-cyan-300 break-all",children:"5221dc9557319f2c55e6048ab30eb4a080d603abc9bab3d2b4cde01ef5b8aa45"})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsx("a",{href:r.artifactUrl,target:"_blank",rel:"noopener noreferrer",className:"btn-cyan text-sm text-center",children:"Download Linux Portable"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-linux/releases/download/v1.0.7/qector-workbench_1.0.7_amd64.deb",target:"_blank",rel:"noopener noreferrer",className:"btn-outline text-xs text-center",children:"Download Debian Package (.deb)"}),e.jsx("a",{href:r.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-xs hover:underline text-center",children:"Release notes & signatures"})]})]}),e.jsxs("div",{className:"p-5 bg-void border border-gridline rounded-xl space-y-3 opacity-60",children:[e.jsx("h3",{className:"text-cyan-300 font-semibold text-base",children:"macOS arm64 - not ready yet"}),e.jsx("p",{className:"text-secondary text-xs leading-relaxed",children:"Apple silicon build requires a build on Apple hardware and is not included until that build is produced and signed."}),e.jsxs("ul",{className:"text-xs space-y-1 text-secondary list-disc pl-4",children:[e.jsx("li",{children:"Requires Apple hardware build - coming soon"}),e.jsx("li",{children:"No artifact yet - check back for macOS release"}),e.jsx("li",{children:"Windows and Linux v1.0.7 are live with 19 decoders"})]}),e.jsx("span",{className:"text-muted-foreground text-xs",children:"Not available yet"})]})]}),e.jsxs("div",{className:"p-4 bg-cyan-300/5 border border-cyan-300/20 rounded-xl text-xs text-secondary leading-relaxed",children:[e.jsx("strong",{className:"text-primary",children:"Verify your download:"})," SHA-256 checksums and GPG signature files (.asc) for every file are published in the release notes. Override the runtime data directory with ",e.jsx("code",{className:"text-cyan-300",children:"QECTOR_DATA_DIR"}),"."]})]}),e.jsxs("div",{ref:s=>t(s,3),className:"card-surface space-y-6",children:[e.jsxs("div",{className:"flex flex-col md:flex-row md:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-2xl font-bold",children:"Integrated Decoders"}),e.jsx("p",{className:"text-secondary text-sm mt-1",children:"All 19 named kinds (17 concrete configurations plus AutoDecoder and Auto Router) are exposed through the Workbench MCP server. No benchmark figures are published on the site: run the included harness to measure your own hardware."})]}),e.jsxs("span",{className:"text-xs px-3 py-1 bg-cyan-300/10 border border-cyan-300/20 text-cyan-300 rounded-full font-mono",children:["Windows & Linux backend qector_decoder_v3 ",a.backendVersion]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground leading-relaxed",children:["Each v1.0.7 release (Windows/Linux) declares ",e.jsx("strong",{className:"text-secondary",children:"19 named kinds: 17 concrete configurations plus 2 orchestration entries"})," against its bundled qector_decoder_v3 ",a.backendVersion," backend. Consult each release's included manuals for platform-specific coverage."]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gridline text-cyan-300 text-xs uppercase tracking-wider font-semibold",children:[e.jsx("th",{className:"py-3 px-3",children:"Decoder Kind"}),e.jsx("th",{className:"py-3 px-3",children:"Compatibility"}),e.jsx("th",{className:"py-3 px-3",children:"Description"})]})}),e.jsx("tbody",{className:"divide-y divide-gridline/50",children:m.map(s=>e.jsxs("tr",{className:"hover:bg-surface/30 transition-colors",children:[e.jsx("td",{className:"py-3 px-3 font-mono font-semibold text-primary",children:s.kind}),e.jsx("td",{className:"py-3 px-3 text-muted-foreground text-xs",children:s.type}),e.jsx("td",{className:"py-3 px-3 text-secondary text-xs",children:s.desc})]},s.kind))})]})})]}),e.jsxs("div",{ref:s=>t(s,4),children:[e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"10 Supported Code Families"}),e.jsxs("p",{className:"text-secondary text-sm mb-6",children:["The published releases cover ",e.jsx("strong",{className:"text-primary",children:"10 code families"}),", including qLDPC and colour codes."]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:h.map(s=>e.jsxs("div",{className:"p-4 bg-void border border-gridline rounded-xl space-y-2",children:[e.jsx("span",{className:"font-mono text-cyan-300 font-bold",children:s.name}),e.jsxs("div",{className:"text-xs text-muted-foreground font-mono",children:["Param: ",s.params]}),e.jsx("p",{className:"text-xs text-secondary",children:s.desc})]},s.name))})]}),e.jsxs("div",{ref:s=>t(s,5),children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold mb-6",children:"Workbench Components"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[{name:"Desktop GUI",desc:"CustomTkinter desktop UI for Windows and Linux. Visual circuit builder, syndrome viewer, decoder performance dashboard, and a distance slider covering d3-d63 on supported families."},{name:"MCP Tools",desc:"Native Model Context Protocol server over stdio JSON-RPC 2.0, launched with --mcp and usable headlessly with no display. Connects AI agents directly to decoder execution and diagnostics."},{name:"Self-Contained",desc:"Bundles its own Python runtime, the scientific stack, and the qector_decoder_v3 1.0.0 wheel. No system Python or pip required; the app makes no online update checks."},{name:"Self / Auto-Debug Layer",desc:"Verifies H·c == s on every decode with a full attempt trace, and falls back across decoders automatically when a decoder fails to produce a faithful correction."},{name:"Hardware Dashboard",desc:"Auto-detects CUDA, OpenCL, and CPU backends, and reports OpenCL absence honestly: it names why a backend is unavailable rather than printing a bare N/A."},{name:"Lab & Personal Info",desc:"Deposit profile (author, ORCID, affiliation, DOI, funding, keywords) for generated reports, plus decoder license-key installation with a live tier readout."},{name:"Documentation Export",desc:"Export documentation and evidence in the formats supported by the selected release, with optional .zenodo.json and CITATION.cff deposit sidecars."},{name:"Bundled Manuals & EULA",desc:"Each release ships an API Reference, MCP Integration Guide, Quick Start Guide, a per-OS User Manual, a machine-readable LLM manual, and EULA.txt, with SHA-256 checksums for every file."}].map(s=>e.jsx(u,{title:s.name,desc:s.desc},s.name))})]}),e.jsxs("div",{ref:s=>t(s,6),className:"space-y-6",children:[e.jsx("h2",{className:"text-2xl md:text-3xl font-bold",children:"Decoder Sandbox"}),e.jsx("p",{className:"text-secondary text-sm",children:"Below is an interactive sandbox replicating the basic topological planar code matching module inside QECTOR Workbench. Click to inject errors and inspect Blossom correction paths in real time."}),e.jsx(b,{})]}),e.jsxs("div",{ref:s=>t(s,7),children:[e.jsx(f,{title:"Documentation & Reference",statement:"QECTOR Workbench documentation is published alongside each app release. The Windows v1.0.7 and Linux v1.0.7 builds ship per-OS manuals and SHA-256 checksums; use the release-specific manuals for your platform."}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 mt-4",children:[e.jsxs("a",{href:a.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Manuals & EULA"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"GitHub Releases"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"API Reference, MCP guide, Quick Start, per-OS manual"})]}),e.jsxs(i,{to:"/evidence",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Validation & Evidence"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/evidence"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Validation reports and SHA-256 sealed artifact manifests"})]}),e.jsxs(i,{to:"/technical-reference",className:"p-4 bg-void border border-gridline rounded-xl hover:border-cyan-300/40 transition-colors",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase mb-1",children:"Architecture Whitepaper"}),e.jsx("div",{className:"text-cyan-300 font-mono text-sm font-semibold",children:"qector.store/technical-reference"}),e.jsx("div",{className:"text-xs text-secondary mt-1",children:"Technical specification & design"})]})]})]}),e.jsx("div",{className:"text-center pt-4",children:e.jsx(i,{to:"/contact",className:"btn-cyan",children:"Contact for Technical Support"})})]})})]})}export{_ as default}; diff --git a/assets/blogData-OjR2ZtNr.js b/assets/blogData-OjR2ZtNr.js deleted file mode 100644 index 2df64bdd..00000000 --- a/assets/blogData-OjR2ZtNr.js +++ /dev/null @@ -1 +0,0 @@ -const e=[{id:"01QecFoundations",filename:"01_qec_foundations_syndrome_faithfulness.md",title:"Syndrome Faithfulness: The Decoder Contract",description:"The GF(2) invariant Hc=s, logical cosets, degeneracy, and graphlike eligibility explained from first principles.",category:"Foundations",date:"August 2026"},{id:"02BlossomMwpmExact",filename:"02_blossom_mwpm_exact.md",title:"Exact Blossom Decoding for Graphlike QEC",description:"How weighted MWPM, Edmonds' primal-dual view, path boundaries, and sparse candidate escalation fit together.",category:"Decoder Algorithms",date:"August 2026"},{id:"03SparseBlossomEventDriven",filename:"03_sparse_blossom_event_driven.md",title:"Sparse Blossom and Event-Driven Growth",description:"Region states, collision times, tight edges, radix heaps, and the tested scope of Sparse Blossom.",category:"Decoder Algorithms",date:"August 2026"},{id:"04FastUnionFind",filename:"04_fast_union_find_uf01.md",title:"UF-01: Parity, Peeling, and Graphlike Decoding",description:"Cluster parity, spanning-forest peeling, weighted growth, zero-allocation structure, and domain boundaries.",category:"Decoder Algorithms",date:"August 2026"},{id:"05BpOsdQldpc",filename:"05_bp_osd_qldpc.md",title:"BP-OSD for qLDPC Hypergraphs",description:"Log-domain belief propagation, ordered statistics, residual GF(2) solving, and faithful non-graphlike decoding.",category:"qLDPC and AI",date:"August 2026"},{id:"06AmbiguityGnnNeural",filename:"06_ambiguity_gnn_neural.md",title:"Ambiguity Clustering and Learned Predecoders",description:"Freeze confident qubits, solve ambiguous components, and add learned priors without moving the correctness proof.",category:"qLDPC and AI",date:"August 2026"},{id:"07SpaceTimeDecoder",filename:"07_space_time_decoder.md",title:"Space-Time Decoding with Noisy Measurements",description:"Detector differencing, temporal and spatial weights, measurement glitches, and streaming scope.",category:"Multi-Round",date:"August 2026"},{id:"08AutoDecoderCascade",filename:"08_autodecoder_cascade.md",title:"Routing, Cascades, and Two-Stage CSS Decoding",description:"Structural backend eligibility, fallback verification, hybrid acceptance, and CSS sector feedforward.",category:"Orchestration",date:"August 2026"},{id:"09GpuAcceleration",filename:"09_gpu_acceleration.md",title:"GPU Batch Decoding and Tested Bit Identity",description:"Per-shot GPU state isolation, deterministic Union-Find, scoped CPU/GPU identity, and deployment gates.",category:"Systems",date:"August 2026"},{id:"10BenchmarksArchitecture",filename:"10_benchmarks_architecture.md",title:"Evidence-First QEC Architecture and Benchmarks",description:"The v1.0.0 backend map, logical scoring, Wilson intervals, metadata, release gates, and claim boundaries.",category:"Evidence",date:"August 2026"},{id:"11SteaneWorkedDecode",filename:"11_steane_worked_decode.md",title:"A Hand-Worked Steane Decode",description:"Compute a Steane syndrome by hand and see why stabilizer cosets matter more than raw correction equality.",category:"Foundations",date:"August 2026"},{id:"12RotatedSurfaceD3",filename:"12_rotated_surface_d3.md",title:"Rotated Surface Code d=3",description:"Nine data qubits, boundaries, graphlike eligibility, logical strings, and a complete structural audit.",category:"Foundations",date:"August 2026"},{id:"13DemPipeline",filename:"13_dem_pipeline.md",title:"Detector Error Models from Faults to Graphs",description:"Parse DEMs, classify hyperedges, collapse parallel mechanisms, set weights, and preserve observables.",category:"Noise Models",date:"August 2026"},{id:"14WeightedDecoding",filename:"14_weighted_decoding.md",title:"Weighted Decoding and Likelihood Priors",description:"Why log((1-p)/p) belongs in the graph and how matching, Union-Find, and space-time paths use weights.",category:"Noise Models",date:"August 2026"},{id:"15LogicalErrorRates",filename:"15_logical_error_rates.md",title:"Logical Error Rates Without the Wrong Metric",description:"Score observables, compute Wilson intervals, keep noise models comparable, and report reproducible LERs.",category:"Evidence",date:"August 2026"},{id:"16DecoderSelection",filename:"16_decoder_selection.md",title:"Choosing a Decoder From the Matrix",description:"A practical decision guide for graphlike, qLDPC, space-time, streaming, CSS, and batch workloads.",category:"Orchestration",date:"August 2026"},{id:"17ReproducibleBenchmarks",filename:"17_reproducible_benchmarks.md",title:"Reproducible QEC Benchmarks",description:"Separate correctness from performance and make every benchmark claim traceable to an artifact and hash.",category:"Evidence",date:"August 2026"},{id:"18RustPyo3Architecture",filename:"18_rust_pyo3_architecture.md",title:"Rust, PyO3, and QEC Memory Discipline",description:"FFI buffers, selective repacking, GIL release, Rayon worker state, and memory metrics at the Python boundary.",category:"Systems",date:"August 2026"},{id:"19ReleaseLicensing",filename:"19_release_licensing.md",title:"Shipping a QEC Decoder Responsibly",description:"API stability, wheels, offline licensing, release gates, and the difference between local and network deployment.",category:"Deployment",date:"August 2026"},{id:"20EcosystemIntegration",filename:"20_ecosystem_integration.md",title:"Stim, Sinter, PyMatching, and Qiskit Integration",description:"Connect QECTOR to common quantum software workflows while preserving detector, observable, and noise contracts.",category:"Ecosystem",date:"August 2026"}];export{e as b}; diff --git a/assets/faqData-B9kvzm8o.js b/assets/faqData-B9kvzm8o.js deleted file mode 100644 index 770fe108..00000000 --- a/assets/faqData-B9kvzm8o.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{L as w}from"./index-c1PDYu0j.js";function j({name:u,price:c,period:d="",desc:m,features:o,excluded:p,featured:r=!1,showRibbon:v=!0,featuredLabel:h="Most Popular",accent:n="cyan",ctaLabel:s="Contact Sales",ctaHref:a="/contact",centered:i=!1,className:f=""}){const g=n==="gold"?"border-gold-400/30 neon-border-gold":"border-cyan-300/30 neon-border-cyan",y=n==="gold"?"text-gold-400":"text-cyan-300",b=n==="gold"?"bg-gold-400 text-void":"bg-cyan-300 text-void",q=n==="gold"?"btn-gold":"btn-cyan",x=/^https?:\/\//i.test(a),l=`block w-full text-center py-2.5 rounded-lg font-medium text-sm transition-all ${r?q:"btn-outline"}`;return e.jsxs("div",{className:`card-surface flex flex-col relative ${i?"text-center":""} ${r?g:""} ${f}`,children:[r&&v&&e.jsx("span",{className:`absolute -top-3 left-1/2 -translate-x-1/2 px-3 py-1 whitespace-nowrap text-xs font-bold uppercase tracking-wider rounded-full ${b}`,children:h}),e.jsx("div",{className:"text-muted-foreground text-xs uppercase tracking-wider mb-2",children:u}),e.jsxs("div",{className:"text-primary font-bold text-3xl mb-1",children:[c,e.jsx("span",{className:"text-muted-foreground text-sm font-normal",children:d})]}),e.jsx("p",{className:"text-secondary text-sm mb-4",children:m}),o&&e.jsxs("ul",{className:"space-y-2 flex-1 mb-6",children:[o.map(t=>e.jsxs("li",{className:`flex items-start gap-2 text-sm text-secondary ${i?"text-left":""}`,children:[e.jsx("span",{className:`${y} mt-0.5`,"aria-hidden":"true",children:"✓"}),e.jsxs("span",{children:[e.jsx("span",{className:"sr-only",children:"Included: "}),t]})]},t)),p?.map(t=>e.jsxs("li",{className:`flex items-start gap-2 text-sm text-muted-foreground/70 ${i?"text-left":""}`,children:[e.jsx("span",{className:"text-muted-foreground/60 mt-0.5","aria-hidden":"true",children:"✓"}),e.jsxs("span",{children:[e.jsx("span",{className:"sr-only",children:"Not included: "}),t]})]},t))]}),x?e.jsx("a",{href:a,className:l,rel:"noopener",children:s}):e.jsx(w,{to:a,className:l,children:s})]})}const C=[{q:"Does licensing work on air-gapped machines?",a:"Yes. A licence is a signed token verified offline against a public key built into the package. There is no licence server, no activation step and no network call, so it works on isolated and air-gapped systems."},{q:"How is the licence delivered, and what does the token unlock?",a:'By e-mail within minutes of payment (check spam, then write to admin@qector.store with your Stripe receipt). Everyone installs the same wheel: pip install --upgrade "qector-decoder-v3>=1.0.1,<2". Set QECTOR_LICENSE_KEY and QECTOR_LICENSE to the token. Every paid plan unlocks GPU (CUDA/OpenCL) batch decoding; Lab and Enterprise also raise the code-distance tier to 63. CPU decoding is never blocked, and distance caps are only enforced if you set QECTOR_ENFORCE=1.'},{q:"Can I try it before committing?",a:"Every plan carries a 14-day money-back guarantee on the first payment: buy Pro monthly, run it on your own workloads, and if it is not right write to admin@qector.store for a full refund. For a structured evaluation with an integration call, take the 60-day Pilot, which is fully creditable toward Lab."},{q:"Do plans renew automatically, and how do I cancel?",a:"Yes. Pro (monthly or annual) and Lab renew automatically until cancelled, with a reminder e-mail 14 days before each annual renewal. Cancel any time from your Stripe receipt or by writing to admin@qector.store; your licence stays valid until the end of the paid period. Pro Perpetual and the Pilot are one-time payments and never renew."},{q:"What is your refund policy?",a:"14-day money-back guarantee on your first payment of any plan: write to admin@qector.store with your Stripe receipt and we refund it in full. Renewals are not refunded pro rata. Duplicate purchases and charges made in error are always refunded. If a token never arrives or fails to verify, we reissue it at no cost. This does not limit non-waivable statutory rights."},{q:"What does a licence cover?",a:"Internal commercial use by your organisation, including production. Pro and Lab differ in licence tier (Lab raises the code-distance tier to 63) and support level. Pro Perpetual covers every 1.x release of qector-decoder-v3; a new major version such as 2.0 is a new licence. The Pilot is for evaluation (benchmarking, integration testing, threshold studies), not production."},{q:"Is a hosted or customer-facing API covered?",a:"No. Pro and Lab cover internal use on your own infrastructure. As soon as QECTOR sits behind an API, product or service that anyone outside your organisation can reach, that is SaaS or redistribution and needs an Enterprise/OEM agreement. Internal endpoints used only by your own staff are fine. Unsure? Describe the deployment to admin@qector.store."},{q:"Can I redistribute QECTOR inside my product?",a:"Only under an Enterprise/OEM agreement, which covers redistribution, SaaS hosting and hardware bundling. Write to admin@qector.store."},{q:"Do I need a licence for non-commercial research?",a:"No. Personal, academic and other non-commercial use is free under the PolyForm Noncommercial License 1.0.0. Universities, public research organisations, charities and government institutions may also use it free, whatever the source of their funding. A company using QECTOR, including on a contract with a university, needs a paid plan. Academic institutions that want a paid plan anyway, for support or to pass commercial rights to an industry partner, get 40% off Lab with an institutional e-mail."},{q:"What currency are prices in, and is tax included?",a:"Prices are in US dollars and exclude tax. Applicable sales tax, GST/HST or VAT is calculated and added at checkout from your billing address. Businesses can enter a VAT/GST number at checkout."},{q:"Can we get a signed agreement, tax form or security questionnaire?",a:"Yes. For a signed PDF agreement, vendor profile, W-8BEN or equivalent, or a security questionnaire, write to admin@qector.store with your Stripe invoice number. Enterprise agreements are always signed contracts."}],L=[{q:"La licence fonctionne-t-elle sur des machines hors réseau ?",a:"Oui. Une licence est un jeton signé vérifié hors ligne contre une clé publique incluse dans le paquet. Aucun serveur de licence, aucune activation, aucun appel réseau : elle fonctionne sur des systèmes isolés et hors réseau."},{q:"Comment la licence est-elle livrée, et que déverrouille le jeton ?",a:'Par courriel dans les minutes qui suivent le paiement (vérifiez le courrier indésirable, puis écrivez à admin@qector.store avec votre reçu Stripe). Tout le monde installe la même wheel : pip install --upgrade "qector-decoder-v3>=1.0.1,<2". Définissez QECTOR_LICENSE_KEY et QECTOR_LICENSE au jeton. Chaque forfait payant déverrouille le décodage GPU (CUDA/OpenCL) par lots; Labo et Entreprise portent aussi le palier de distance à 63. Le décodage CPU n’est jamais bloqué, et les plafonds de distance ne s’appliquent que si QECTOR_ENFORCE=1.'},{q:"Puis-je l’essayer avant de m’engager ?",a:"Chaque forfait offre une garantie satisfait ou remboursé de 14 jours sur le premier paiement : achetez Pro au mois, testez-le sur vos propres charges, et si ce n’est pas le bon choix, écrivez à admin@qector.store pour un remboursement complet. Pour une évaluation encadrée avec appel d’intégration, prenez le Pilote de 60 jours, entièrement crédité sur Labo."},{q:"Les forfaits se renouvellent-ils automatiquement, et comment annuler ?",a:"Oui. Pro (mensuel ou annuel) et Labo se renouvellent automatiquement jusqu’à annulation, avec un courriel de rappel 14 jours avant chaque renouvellement annuel. Annulez en tout temps depuis votre reçu Stripe ou en écrivant à admin@qector.store; votre licence reste valide jusqu’à la fin de la période payée. Pro Perpétuel et le Pilote sont des paiements uniques et ne se renouvellent jamais."},{q:"Quelle est votre politique de remboursement ?",a:"Garantie satisfait ou remboursé de 14 jours sur votre premier paiement de tout forfait : écrivez à admin@qector.store avec votre reçu Stripe et nous remboursons en entier. Les renouvellements ne sont pas remboursés au prorata. Les achats en double et les frais faits par erreur sont toujours remboursés. Si un jeton n’arrive pas ou ne se vérifie pas, nous le réémettons sans frais. Cela ne limite pas les droits légaux auxquels on ne peut renoncer."},{q:"Que couvre une licence ?",a:"L’usage commercial interne par votre organisation, y compris en production. Pro et Labo diffèrent par le palier de licence (Labo porte le palier de distance à 63) et le niveau de support. Pro Perpétuel couvre toutes les versions 1.x de qector-decoder-v3; une nouvelle version majeure comme 2.0 est une nouvelle licence. Le Pilote sert à l’évaluation (benchmarks, tests d’intégration, études de seuil), pas à la production."},{q:"Une API hébergée ou offerte aux clients est-elle couverte ?",a:"Non. Pro et Labo couvrent l’usage interne sur votre propre infrastructure. Dès que QECTOR se trouve derrière une API, un produit ou un service accessible hors de votre organisation, c’est du SaaS ou de la redistribution, ce qui exige un contrat Entreprise/OEM. Les points d’accès internes réservés à votre personnel sont couverts. En cas de doute, décrivez le déploiement à admin@qector.store."},{q:"Puis-je redistribuer QECTOR dans mon produit ?",a:"Seulement avec un contrat Entreprise/OEM, qui couvre la redistribution, l’hébergement SaaS et le regroupement matériel. Écrivez à admin@qector.store."},{q:"Ai-je besoin d’une licence pour la recherche non commerciale ?",a:"Non. L’usage personnel, académique et non commercial est gratuit sous la licence PolyForm Noncommercial 1.0.0. Les universités, organismes de recherche publics, organismes de bienfaisance et institutions gouvernementales peuvent aussi l’utiliser gratuitement, quelle que soit la source de leur financement. Une entreprise qui utilise QECTOR, y compris dans un contrat avec une université, doit avoir un forfait payant. Les établissements d’enseignement qui veulent tout de même un forfait payant obtiennent 40 % de rabais sur Labo avec un courriel institutionnel."},{q:"En quelle devise sont les prix, et la taxe est-elle incluse ?",a:"Les prix sont en dollars américains, hors taxes. La taxe de vente, TPS/TVH ou TVA applicable est calculée et ajoutée au paiement selon votre adresse de facturation. Les entreprises peuvent saisir un numéro de TPS/TVA au paiement."},{q:"Pouvons-nous obtenir un contrat signé, un formulaire fiscal ou un questionnaire de sécurité ?",a:"Oui. Pour un contrat PDF signé, un profil de fournisseur, un W-8BEN ou équivalent, ou un questionnaire de sécurité, écrivez à admin@qector.store avec votre numéro de facture Stripe. Les contrats Entreprise sont toujours signés."}];export{C as F,j as P,L as a}; diff --git a/assets/faqData-CCPvMSkf.js b/assets/faqData-CCPvMSkf.js deleted file mode 100644 index ccc90a4a..00000000 --- a/assets/faqData-CCPvMSkf.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{L as E}from"./vendor-PiU4YGcH.js";function j({name:u,price:c,period:d="",desc:m,features:s,excluded:p,featured:a=!1,showRibbon:h=!0,featuredLabel:v="Most Popular",accent:n="cyan",ctaLabel:o="Contact Sales",ctaHref:r="/contact",centered:i=!1,className:g=""}){const f=n==="gold"?"border-gold-400/30 neon-border-gold":"border-cyan-300/30 neon-border-cyan",y=n==="gold"?"text-gold-400":"text-cyan-300",x=n==="gold"?"bg-gold-400 text-void":"bg-cyan-300 text-void",b=n==="gold"?"btn-gold":"btn-cyan",q=/^https?:\/\//i.test(r),l=`block w-full text-center py-2.5 rounded-lg font-medium text-sm transition-all ${a?b:"btn-outline"}`;return e.jsxs("div",{className:`card-surface flex flex-col relative ${i?"text-center":""} ${a?f:""} ${g}`,children:[a&&h&&e.jsx("span",{className:`absolute -top-3 left-1/2 -translate-x-1/2 px-3 py-1 text-xs font-bold uppercase tracking-wider rounded-full ${x}`,children:v}),e.jsx("div",{className:"text-muted-foreground text-xs uppercase tracking-wider mb-2",children:u}),e.jsxs("div",{className:"text-primary font-bold text-3xl mb-1",children:[c,e.jsx("span",{className:"text-muted-foreground text-sm font-normal",children:d})]}),e.jsx("p",{className:"text-secondary text-sm mb-4",children:m}),s&&e.jsxs("ul",{className:"space-y-2 flex-1 mb-6",children:[s.map(t=>e.jsxs("li",{className:`flex items-start gap-2 text-sm text-secondary ${i?"text-left":""}`,children:[e.jsx("span",{className:`${y} mt-0.5`,"aria-hidden":"true",children:"✓"}),e.jsxs("span",{children:[e.jsx("span",{className:"sr-only",children:"Included: "}),t]})]},t)),p?.map(t=>e.jsxs("li",{className:`flex items-start gap-2 text-sm text-muted-foreground/70 ${i?"text-left":""}`,children:[e.jsx("span",{className:"text-muted-foreground/60 mt-0.5","aria-hidden":"true",children:"✓"}),e.jsxs("span",{children:[e.jsx("span",{className:"sr-only",children:"Not included: "}),t]})]},t))]}),q?e.jsx("a",{href:r,className:l,rel:"noopener",children:o}):e.jsx(E,{to:r,className:l,children:o})]})}const T=[{q:"How is the license delivered, and does the package change once I have a token?",a:"Automatically, by email, within minutes of payment: if nothing arrives within 10 minutes, check your spam folder, then email admin@qector.store with your Stripe receipt. Everyone installs the same wheel via pip install qector-decoder-v3==1.0.0; there is no separate commercial build. The v1.0.0 tier manager unlocks tier-scoped features from that same token: distance caps of 7, 19, or 63 depending on tier, and GPU batch paths on Pro and Enterprise tiers. Set both QECTOR_LICENSE and QECTOR_LICENSE_KEY to the token so the import notice and v1.0.0 tier manager use the same credential. Set QECTOR_SILENT=1 if you also want quiet CI logs. The token verifies offline against a public key embedded in the package, so it works air-gapped and in CI with no license server and no phone-home. There is no hard stop: decoding runs either way. The token plus your Stripe receipt are what procurement and audit need."},{q:"What exactly happens when the 60-day evaluation expires?",a:"The $499 evaluation is a flat, non-recurring 60-day license: it is not a subscription and it does not auto-renew. The token carries a 60-day expiry. After that date your commercial evaluation rights end and the licensing notice returns on import, but nothing is disabled, no code stops working, and your data and results remain yours. To continue commercial use you move to an annual tier. The $499 is 100% creditable toward any annual license purchased within 90 days of your evaluation start: buy Solo/Indie at $1,299/yr within that window and you pay $800, not $1,299. Email admin@qector.store with your Stripe invoice number and we invoice the difference."},{q:"How many seats does each tier cover, and what counts as production?",a:"The $499 evaluation covers unlimited internal seats for 60 days, but it is scoped to evaluation and pilot work: benchmarking, integration testing, threshold studies, and architecture assessment. It does not grant production rights. Annual tiers grant production rights for internal use and are seat-counted: Solo/Indie $1,299/yr (1 named user), Startup/Growth $4,499/yr (up to 10), Professional $11,500/yr (up to 25), Enterprise & OEM custom pricing (unlimited seats and logical qubits, OEM bundling rights, dedicated support engineer, custom builds). A Solo/Indie perpetual license is also available at $3,299 one-time for v3.x (all v3.x patch/minor updates included; major version upgrades such as v4.0 are a new license)."},{q:"Is a hosted or customer-facing API covered by an annual tier?",a:"No. Annual tiers cover internal use: your own team, on your own infrastructure. The moment QECTOR sits behind an API, product, or service that anyone outside your organization can reach, that deployment is SaaS or redistribution and it requires an Enterprise/OEM agreement, regardless of which annual tier you hold. Internal hosted endpoints used only by your own employees are fine under an annual tier. If you are unsure which side of the line you are on, email admin@qector.store and describe the deployment."},{q:"Can I redistribute QECTOR inside my product?",a:"No: standard tiers cover internal use only. Enterprise OEM licenses cover redistribution, SaaS hosting, and hardware bundling. Email admin@qector.store for a custom agreement."},{q:"Do I need a license for non-commercial research?",a:"No. Non-commercial, academic, and personal use is free under the PolyForm Noncommercial License 1.0.0. Only commercial deployment requires a paid tier. The licensing notice on import is informational: it does not restrict non-commercial use, and QECTOR_SILENT=1 suppresses it."},{q:"What currency are prices in, and is tax included?",a:"All prices are in US dollars (USD). Listed prices are exclusive of tax. Stripe calculates and adds any applicable sales tax, GST/HST, or VAT at checkout based on your billing location: Canadian, UK, and EU buyers should expect tax on top of the listed price. If your organization is tax-exempt or has a valid VAT/GST registration number, enter it at checkout, or email admin@qector.store with your Stripe invoice number for a corrected invoice."},{q:"What is your refund policy?",a:"License tokens are delivered immediately on payment, so all sales are final and commercial licenses are non-refundable. That is precisely why the $499 60-day evaluation exists: it is the low-cost, fully creditable way to validate QECTOR against your own workloads before committing to an annual tier. If a token never arrives or fails to verify, that is a delivery fault rather than a refund matter: email admin@qector.store and we will reissue it. This policy does not limit non-waivable statutory rights where they apply. Full terms are on the refund policy page."},{q:"Can we get a signed corporate EULA or tax form?",a:"Yes. If procurement requires a signed PDF agreement, vendor profile, W-8BEN or equivalent tax form, or a security questionnaire, email your request with your Stripe invoice number to admin@qector.store."}],I=[{q:"Comment la licence est-elle livrée, et le paquet change-t-il une fois que j’ai un jeton ?",a:"Automatiquement, par courriel, dans les minutes qui suivent le paiement : si rien n’arrive dans les 10 minutes, vérifiez votre courrier indésirable, puis écrivez à admin@qector.store avec votre reçu Stripe. Tout le monde installe la même wheel via pip install qector-decoder-v3==1.0.0; il n’existe pas de build commercial séparé. Le gestionnaire de palier v1.0.0 déverrouille les fonctionnalités propres à chaque palier à partir de ce même jeton : plafonds de distance de 7, 19 ou 63 selon le palier, et chemins GPU batch sur les paliers Pro et Entreprise. Définissez QECTOR_LICENSE et QECTOR_LICENSE_KEY au jeton pour que l’avis d’import et le gestionnaire de palier v1.0.0 utilisent le même jeton. Définissez QECTOR_SILENT=1 si vous voulez aussi des journaux CI silencieux. Le jeton se vérifie hors ligne contre une clé publique embarquée dans le paquet : il fonctionne hors réseau et en CI, sans serveur de licence ni appel maison. Il n’y a pas de blocage : le décodage fonctionne de toute façon. Le jeton et votre reçu Stripe sont ce dont les achats et l’audit ont besoin."},{q:"Que se passe-t-il exactement à l’expiration de l’évaluation de 60 jours ?",a:"L’évaluation à 499 $ est une licence forfaitaire de 60 jours, non récurrente : ce n’est pas un abonnement et elle ne se renouvelle pas automatiquement. Le jeton porte une échéance de 60 jours. Après cette date, vos droits d’évaluation commerciale prennent fin et l’avis de licence réapparaît à l’import, mais rien n’est désactivé, aucun code ne cesse de fonctionner, et vos données et résultats restent à vous. Pour poursuivre un usage commercial, vous passez à un palier annuel. Les 499 $ sont crédités à 100 % vers toute licence annuelle achetée dans les 90 jours suivant le début de votre évaluation : achetez Solo/Indie à 1 299 $/an dans ce délai et vous payez 800 $, pas 1 299 $. Écrivez à admin@qector.store avec votre numéro de facture Stripe et nous facturons la différence."},{q:"Combien de sièges chaque palier couvre-t-il, et qu’est-ce qui compte comme production ?",a:"L’évaluation à 499 $ couvre des sièges internes illimités pendant 60 jours, mais elle est limitée à l’évaluation et aux pilotes : tests de référence (benchmarks), tests d’intégration, études de seuil et évaluation d’architecture. Elle n’accorde pas de droits de production. Les paliers annuels accordent des droits de production pour usage interne et sont comptés par sièges : Solo/Indie 1 299 $/an (1 utilisateur nommé), Startup/Growth 4 499 $/an (jusqu’à 10), Professionnel 11 500 $/an (jusqu’à 25), Entreprise & OEM sur mesure (sièges et qubits logiques illimités, droits de regroupement OEM, ingénieur de support dédié, versions personnalisées). Une licence perpétuelle Solo/Indie est aussi disponible à 3 299 $ paiement unique pour v3.x (toutes les mises à jour mineures et correctives v3.x incluses; les montées de version majeure comme v4.0 sont une nouvelle licence)."},{q:"Une API hébergée ou orientée client est-elle couverte par un palier annuel ?",a:"Non. Les paliers annuels couvrent l’usage interne : votre propre équipe, sur votre propre infrastructure. Dès que QECTOR se trouve derrière une API, un produit ou un service accessible à quiconque hors de votre organisation, c’est du SaaS ou de la redistribution et cela exige un contrat Entreprise/OEM, quel que soit le palier annuel détenu. Les points d’accès hébergés internes utilisés uniquement par vos propres employés sont couverts par un palier annuel. En cas de doute, écrivez à admin@qector.store et décrivez le déploiement."},{q:"Puis-je redistribuer QECTOR dans mon produit ?",a:"Non : les paliers standards couvrent l’usage interne seulement. Les licences Entreprise OEM couvrent la redistribution, l’hébergement SaaS et le regroupement matériel. Écrivez à admin@qector.store pour un contrat sur mesure."},{q:"Ai-je besoin d’une licence pour la recherche non commerciale ?",a:"Non. L’usage non commercial, académique et personnel est gratuit sous la licence PolyForm Noncommercial 1.0.0. Seul le déploiement commercial exige un palier payant. L’avis de licence à l’import est informatif : il ne restreint pas l’usage non commercial, et QECTOR_SILENT=1 le désactive."},{q:"En quelle devise sont les prix, et la taxe est-elle incluse ?",a:"Tous les prix sont en dollars américains (USD). Les prix affichés sont hors taxes. Stripe calcule et ajoute toute taxe de vente, TPS/TVH ou TVA applicable au paiement selon votre adresse de facturation : les acheteurs canadiens, britanniques et européens doivent s’attendre à une taxe en sus du prix affiché. Si votre organisation est exonérée ou possède un numéro d’enregistrement TPS/TVA valide, saisissez-le au paiement, ou écrivez à admin@qector.store avec votre numéro de facture Stripe pour une facture corrigée."},{q:"Quelle est votre politique de remboursement ?",a:"Les jetons de licence sont livrés immédiatement au paiement : toutes les ventes sont donc finales et les licences commerciales ne sont pas remboursables. C’est précisément pourquoi l’évaluation à 499 $ pour 60 jours existe : c’est le moyen économique et entièrement créditable de valider QECTOR sur vos propres charges de travail avant de vous engager sur un palier annuel. Si un jeton n’arrive jamais ou ne se vérifie pas, c’est un défaut de livraison plutôt qu’un sujet de remboursement : écrivez à admin@qector.store et nous le réémettrons. Cette politique ne limite pas les droits statutaires non renonçables là où ils s’appliquent. Les conditions complètes sont sur la page de politique de remboursement."},{q:"Pouvons-nous obtenir un contrat EULA signé ou un formulaire fiscal ?",a:"Oui. Si vos achats exigent un contrat PDF signé, un profil de fournisseur, un W-8BEN ou formulaire fiscal équivalent ou un questionnaire de sécurité, envoyez votre demande avec votre numéro de facture Stripe à admin@qector.store."}];export{T as F,j as P,I as a}; diff --git a/assets/faqData-CHsSn8s2.js b/assets/faqData-CHsSn8s2.js deleted file mode 100644 index 5c7cf701..00000000 --- a/assets/faqData-CHsSn8s2.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{L as w}from"./vendor-PiU4YGcH.js";function j({name:u,price:c,period:d="",desc:m,features:s,excluded:p,featured:r=!1,showRibbon:h=!0,featuredLabel:v="Most Popular",accent:n="cyan",ctaLabel:o="Contact Sales",ctaHref:a="/contact",centered:i=!1,className:f=""}){const g=n==="gold"?"border-gold-400/30 neon-border-gold":"border-cyan-300/30 neon-border-cyan",y=n==="gold"?"text-gold-400":"text-cyan-300",b=n==="gold"?"bg-gold-400 text-void":"bg-cyan-300 text-void",x=n==="gold"?"btn-gold":"btn-cyan",q=/^https?:\/\//i.test(a),l=`block w-full text-center py-2.5 rounded-lg font-medium text-sm transition-all ${r?x:"btn-outline"}`;return e.jsxs("div",{className:`card-surface flex flex-col relative ${i?"text-center":""} ${r?g:""} ${f}`,children:[r&&h&&e.jsx("span",{className:`absolute -top-3 left-1/2 -translate-x-1/2 px-3 py-1 whitespace-nowrap text-xs font-bold uppercase tracking-wider rounded-full ${b}`,children:v}),e.jsx("div",{className:"text-muted-foreground text-xs uppercase tracking-wider mb-2",children:u}),e.jsxs("div",{className:"text-primary font-bold text-3xl mb-1",children:[c,e.jsx("span",{className:"text-muted-foreground text-sm font-normal",children:d})]}),e.jsx("p",{className:"text-secondary text-sm mb-4",children:m}),s&&e.jsxs("ul",{className:"space-y-2 flex-1 mb-6",children:[s.map(t=>e.jsxs("li",{className:`flex items-start gap-2 text-sm text-secondary ${i?"text-left":""}`,children:[e.jsx("span",{className:`${y} mt-0.5`,"aria-hidden":"true",children:"✓"}),e.jsxs("span",{children:[e.jsx("span",{className:"sr-only",children:"Included: "}),t]})]},t)),p?.map(t=>e.jsxs("li",{className:`flex items-start gap-2 text-sm text-muted-foreground/70 ${i?"text-left":""}`,children:[e.jsx("span",{className:"text-muted-foreground/60 mt-0.5","aria-hidden":"true",children:"✓"}),e.jsxs("span",{children:[e.jsx("span",{className:"sr-only",children:"Not included: "}),t]})]},t))]}),q?e.jsx("a",{href:a,className:l,rel:"noopener",children:o}):e.jsx(w,{to:a,className:l,children:o})]})}const C=[{q:"Does licensing work on air-gapped machines?",a:"Yes. A licence is a signed token verified offline against a public key built into the package. There is no licence server, no activation step and no network call, so it works on isolated and air-gapped systems."},{q:"How is the licence delivered, and what does the token unlock?",a:'By e-mail within minutes of payment (check spam, then write to admin@qector.store with your Stripe receipt). Everyone installs the same wheel: pip install --upgrade "qector-decoder-v3>=1.0,<2". Set QECTOR_LICENSE_KEY and QECTOR_LICENSE to the token. Every paid plan unlocks GPU (CUDA/OpenCL) batch decoding; Lab and Enterprise also raise the code-distance tier to 63. CPU decoding is never blocked, and distance caps are only enforced if you set QECTOR_ENFORCE=1.'},{q:"Can I try it before committing?",a:"Every plan carries a 14-day money-back guarantee on the first payment: buy Pro monthly, run it on your own workloads, and if it is not right write to admin@qector.store for a full refund. For a structured evaluation with an integration call, take the 60-day Pilot, which is fully creditable toward Lab."},{q:"Do plans renew automatically, and how do I cancel?",a:"Yes. Pro (monthly or annual) and Lab renew automatically until cancelled, with a reminder e-mail 14 days before each annual renewal. Cancel any time from your Stripe receipt or by writing to admin@qector.store; your licence stays valid until the end of the paid period. Pro Perpetual and the Pilot are one-time payments and never renew."},{q:"What is your refund policy?",a:"14-day money-back guarantee on your first payment of any plan: write to admin@qector.store with your Stripe receipt and we refund it in full. Renewals are not refunded pro rata. Duplicate purchases and charges made in error are always refunded. If a token never arrives or fails to verify, we reissue it at no cost. This does not limit non-waivable statutory rights."},{q:"What does a licence cover?",a:"Internal commercial use by your organisation, including production. Pro and Lab differ in licence tier (Lab raises the code-distance tier to 63) and support level. Pro Perpetual covers every 3.x release; a major version such as 4.0 is a new licence. The Pilot is for evaluation (benchmarking, integration testing, threshold studies), not production."},{q:"Is a hosted or customer-facing API covered?",a:"No. Pro and Lab cover internal use on your own infrastructure. As soon as QECTOR sits behind an API, product or service that anyone outside your organisation can reach, that is SaaS or redistribution and needs an Enterprise/OEM agreement. Internal endpoints used only by your own staff are fine. Unsure? Describe the deployment to admin@qector.store."},{q:"Can I redistribute QECTOR inside my product?",a:"Only under an Enterprise/OEM agreement, which covers redistribution, SaaS hosting and hardware bundling. Write to admin@qector.store."},{q:"Do I need a licence for non-commercial research?",a:"No. Personal, academic and other non-commercial use is free under the PolyForm Noncommercial License 1.0.0. Universities, public research organisations, charities and government institutions may also use it free, whatever the source of their funding. A company using QECTOR, including on a contract with a university, needs a paid plan. Academic institutions that want a paid plan anyway, for support or to pass commercial rights to an industry partner, get 40% off Lab with an institutional e-mail."},{q:"What currency are prices in, and is tax included?",a:"Prices are in US dollars and exclude tax. Applicable sales tax, GST/HST or VAT is calculated and added at checkout from your billing address. Businesses can enter a VAT/GST number at checkout."},{q:"Can we get a signed agreement, tax form or security questionnaire?",a:"Yes. For a signed PDF agreement, vendor profile, W-8BEN or equivalent, or a security questionnaire, write to admin@qector.store with your Stripe invoice number. Enterprise agreements are always signed contracts."}],L=[{q:"La licence fonctionne-t-elle sur des machines hors réseau ?",a:"Oui. Une licence est un jeton signé vérifié hors ligne contre une clé publique incluse dans le paquet. Aucun serveur de licence, aucune activation, aucun appel réseau : elle fonctionne sur des systèmes isolés et hors réseau."},{q:"Comment la licence est-elle livrée, et que déverrouille le jeton ?",a:'Par courriel dans les minutes qui suivent le paiement (vérifiez le courrier indésirable, puis écrivez à admin@qector.store avec votre reçu Stripe). Tout le monde installe la même wheel : pip install --upgrade "qector-decoder-v3>=1.0,<2". Définissez QECTOR_LICENSE_KEY et QECTOR_LICENSE au jeton. Chaque forfait payant déverrouille le décodage GPU (CUDA/OpenCL) par lots; Labo et Entreprise portent aussi le palier de distance à 63. Le décodage CPU n’est jamais bloqué, et les plafonds de distance ne s’appliquent que si QECTOR_ENFORCE=1.'},{q:"Puis-je l’essayer avant de m’engager ?",a:"Chaque forfait offre une garantie satisfait ou remboursé de 14 jours sur le premier paiement : achetez Pro au mois, testez-le sur vos propres charges, et si ce n’est pas le bon choix, écrivez à admin@qector.store pour un remboursement complet. Pour une évaluation encadrée avec appel d’intégration, prenez le Pilote de 60 jours, entièrement crédité sur Labo."},{q:"Les forfaits se renouvellent-ils automatiquement, et comment annuler ?",a:"Oui. Pro (mensuel ou annuel) et Labo se renouvellent automatiquement jusqu’à annulation, avec un courriel de rappel 14 jours avant chaque renouvellement annuel. Annulez en tout temps depuis votre reçu Stripe ou en écrivant à admin@qector.store; votre licence reste valide jusqu’à la fin de la période payée. Pro Perpétuel et le Pilote sont des paiements uniques et ne se renouvellent jamais."},{q:"Quelle est votre politique de remboursement ?",a:"Garantie satisfait ou remboursé de 14 jours sur votre premier paiement de tout forfait : écrivez à admin@qector.store avec votre reçu Stripe et nous remboursons en entier. Les renouvellements ne sont pas remboursés au prorata. Les achats en double et les frais faits par erreur sont toujours remboursés. Si un jeton n’arrive pas ou ne se vérifie pas, nous le réémettons sans frais. Cela ne limite pas les droits légaux auxquels on ne peut renoncer."},{q:"Que couvre une licence ?",a:"L’usage commercial interne par votre organisation, y compris en production. Pro et Labo diffèrent par le palier de licence (Labo porte le palier de distance à 63) et le niveau de support. Pro Perpétuel couvre toutes les versions 3.x; une version majeure comme 4.0 est une nouvelle licence. Le Pilote sert à l’évaluation (benchmarks, tests d’intégration, études de seuil), pas à la production."},{q:"Une API hébergée ou offerte aux clients est-elle couverte ?",a:"Non. Pro et Labo couvrent l’usage interne sur votre propre infrastructure. Dès que QECTOR se trouve derrière une API, un produit ou un service accessible hors de votre organisation, c’est du SaaS ou de la redistribution, ce qui exige un contrat Entreprise/OEM. Les points d’accès internes réservés à votre personnel sont couverts. En cas de doute, décrivez le déploiement à admin@qector.store."},{q:"Puis-je redistribuer QECTOR dans mon produit ?",a:"Seulement avec un contrat Entreprise/OEM, qui couvre la redistribution, l’hébergement SaaS et le regroupement matériel. Écrivez à admin@qector.store."},{q:"Ai-je besoin d’une licence pour la recherche non commerciale ?",a:"Non. L’usage personnel, académique et non commercial est gratuit sous la licence PolyForm Noncommercial 1.0.0. Les universités, organismes de recherche publics, organismes de bienfaisance et institutions gouvernementales peuvent aussi l’utiliser gratuitement, quelle que soit la source de leur financement. Une entreprise qui utilise QECTOR, y compris dans un contrat avec une université, doit avoir un forfait payant. Les établissements d’enseignement qui veulent tout de même un forfait payant obtiennent 40 % de rabais sur Labo avec un courriel institutionnel."},{q:"En quelle devise sont les prix, et la taxe est-elle incluse ?",a:"Les prix sont en dollars américains, hors taxes. La taxe de vente, TPS/TVH ou TVA applicable est calculée et ajoutée au paiement selon votre adresse de facturation. Les entreprises peuvent saisir un numéro de TPS/TVA au paiement."},{q:"Pouvons-nous obtenir un contrat signé, un formulaire fiscal ou un questionnaire de sécurité ?",a:"Oui. Pour un contrat PDF signé, un profil de fournisseur, un W-8BEN ou équivalent, ou un questionnaire de sécurité, écrivez à admin@qector.store avec votre numéro de facture Stripe. Les contrats Entreprise sont toujours signés."}];export{C as F,j as P,L as a}; diff --git a/assets/faqData-CYz7igrM.js b/assets/faqData-CYz7igrM.js deleted file mode 100644 index bb020dc7..00000000 --- a/assets/faqData-CYz7igrM.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{L as E}from"./vendor-PiU4YGcH.js";function j({name:u,price:c,period:d="",desc:m,features:s,excluded:p,featured:a=!1,showRibbon:v=!0,featuredLabel:h="Most Popular",accent:n="cyan",ctaLabel:o="Contact Sales",ctaHref:i="/contact",centered:r=!1,className:g=""}){const f=n==="gold"?"border-gold-400/30 neon-border-gold":"border-cyan-300/30 neon-border-cyan",y=n==="gold"?"text-gold-400":"text-cyan-300",x=n==="gold"?"bg-gold-400 text-void":"bg-cyan-300 text-void",b=n==="gold"?"btn-gold":"btn-cyan",q=/^https?:\/\//i.test(i),l=`block w-full text-center py-2.5 rounded-lg font-medium text-sm transition-all ${a?b:"btn-outline"}`;return e.jsxs("div",{className:`card-surface flex flex-col relative ${r?"text-center":""} ${a?f:""} ${g}`,children:[a&&v&&e.jsx("span",{className:`absolute -top-3 left-1/2 -translate-x-1/2 px-3 py-1 text-xs font-bold uppercase tracking-wider rounded-full ${x}`,children:h}),e.jsx("div",{className:"text-muted-foreground text-xs uppercase tracking-wider mb-2",children:u}),e.jsxs("div",{className:"text-primary font-bold text-3xl mb-1",children:[c,e.jsx("span",{className:"text-muted-foreground text-sm font-normal",children:d})]}),e.jsx("p",{className:"text-secondary text-sm mb-4",children:m}),s&&e.jsxs("ul",{className:"space-y-2 flex-1 mb-6",children:[s.map(t=>e.jsxs("li",{className:`flex items-start gap-2 text-sm text-secondary ${r?"text-left":""}`,children:[e.jsx("span",{className:`${y} mt-0.5`,"aria-hidden":"true",children:"✓"}),e.jsxs("span",{children:[e.jsx("span",{className:"sr-only",children:"Included: "}),t]})]},t)),p?.map(t=>e.jsxs("li",{className:`flex items-start gap-2 text-sm text-muted-foreground/70 ${r?"text-left":""}`,children:[e.jsx("span",{className:"text-muted-foreground/60 mt-0.5","aria-hidden":"true",children:"✓"}),e.jsxs("span",{children:[e.jsx("span",{className:"sr-only",children:"Not included: "}),t]})]},t))]}),q?e.jsx("a",{href:i,className:l,rel:"noopener",children:o}):e.jsx(E,{to:i,className:l,children:o})]})}const T=[{q:"How is the license delivered, and does the package change once I have a token?",a:"Automatically, by email, within minutes of payment: if nothing arrives within 10 minutes, check your spam folder, then email admin@qector.store with your Stripe receipt. Everyone installs the same wheel via pip install qector-decoder-v3==1.0.0; there is no separate commercial build and no feature gating. Set both QECTOR_LICENSE and QECTOR_LICENSE_KEY to the token so the import notice and v1.0.0 tier manager use the same credential. Set QECTOR_SILENT=1 if you also want quiet CI logs. The token verifies offline against a public key embedded in the package, so it works air-gapped and in CI with no license server and no phone-home. There is no hard stop: decoding runs either way. The token plus your Stripe receipt are what procurement and audit need."},{q:"What exactly happens when the 60-day evaluation expires?",a:"The $499 evaluation is a flat, non-recurring 60-day license: it is not a subscription and it does not auto-renew. The token carries a 60-day expiry. After that date your commercial evaluation rights end and the licensing notice returns on import, but nothing is disabled, no code stops working, and your data and results remain yours. To continue commercial use you move to an annual tier. The $499 is 100% creditable toward any annual license purchased within 90 days of your evaluation start: buy Solo/Indie at $1,299/yr within that window and you pay $800, not $1,299. Email admin@qector.store with your Stripe invoice number and we invoice the difference."},{q:"How many seats does each tier cover, and what counts as production?",a:"The $499 evaluation covers unlimited internal seats for 60 days, but it is scoped to evaluation and pilot work: benchmarking, integration testing, threshold studies, and architecture assessment. It does not grant production rights. Annual tiers grant production rights for internal use and are seat-counted: Solo/Indie $1,299/yr (1 named user), Startup/Growth $4,499/yr (up to 10), Professional $11,500/yr (up to 25), Enterprise & OEM custom pricing (unlimited seats and logical qubits, OEM bundling rights, dedicated support engineer, custom builds). A Solo/Indie perpetual license is also available at $3,299 one-time for v3.x (all v3.x patch/minor updates included; major version upgrades such as v4.0 are a new license)."},{q:"Is a hosted or customer-facing API covered by an annual tier?",a:"No. Annual tiers cover internal use: your own team, on your own infrastructure. The moment QECTOR sits behind an API, product, or service that anyone outside your organization can reach, that deployment is SaaS or redistribution and it requires an Enterprise/OEM agreement, regardless of which annual tier you hold. Internal hosted endpoints used only by your own employees are fine under an annual tier. If you are unsure which side of the line you are on, email admin@qector.store and describe the deployment."},{q:"Can I redistribute QECTOR inside my product?",a:"No: standard tiers cover internal use only. Enterprise OEM licenses cover redistribution, SaaS hosting, and hardware bundling. Email admin@qector.store for a custom agreement."},{q:"Do I need a license for non-commercial research?",a:"No. Non-commercial, academic, and personal use is free under the PolyForm Noncommercial License 1.0.0. Only commercial deployment requires a paid tier. The licensing notice on import is informational: it does not restrict non-commercial use, and QECTOR_SILENT=1 suppresses it."},{q:"What currency are prices in, and is tax included?",a:"All prices are in US dollars (USD). Listed prices are exclusive of tax. Stripe calculates and adds any applicable sales tax, GST/HST, or VAT at checkout based on your billing location: Canadian, UK, and EU buyers should expect tax on top of the listed price. If your organization is tax-exempt or has a valid VAT/GST registration number, enter it at checkout, or email admin@qector.store with your Stripe invoice number for a corrected invoice."},{q:"What is your refund policy?",a:"License tokens are delivered immediately on payment, so all sales are final and commercial licenses are non-refundable. That is precisely why the $499 60-day evaluation exists: it is the low-cost, fully creditable way to validate QECTOR against your own workloads before committing to an annual tier. If a token never arrives or fails to verify, that is a delivery fault rather than a refund matter: email admin@qector.store and we will reissue it. This policy does not limit non-waivable statutory rights where they apply. Full terms are on the refund policy page."},{q:"Can we get a signed corporate EULA or tax form?",a:"Yes. If procurement requires a signed PDF agreement, vendor profile, W-8BEN or equivalent tax form, or a security questionnaire, email your request with your Stripe invoice number to admin@qector.store."}],I=[{q:"Comment la licence est-elle livrée, et le paquet change-t-il une fois que j’ai un jeton ?",a:"Automatiquement, par courriel, dans les minutes qui suivent le paiement : si rien n’arrive dans les 10 minutes, vérifiez votre courrier indésirable, puis écrivez à admin@qector.store avec votre reçu Stripe. Tout le monde installe la même wheel via pip install qector-decoder-v3==1.0.0; il n’existe pas de build commercial séparé et aucune fonctionnalité n’est verrouillée. Définissez QECTOR_LICENSE et QECTOR_LICENSE_KEY au jeton pour que l’avis d’import et le gestionnaire de palier v1.0.0 utilisent le même jeton. Définissez QECTOR_SILENT=1 si vous voulez aussi des journaux CI silencieux. Le jeton se vérifie hors ligne contre une clé publique embarquée dans le paquet : il fonctionne hors réseau et en CI, sans serveur de licence ni appel maison. Il n’y a pas de blocage : le décodage fonctionne de toute façon. Le jeton et votre reçu Stripe sont ce dont les achats et l’audit ont besoin."},{q:"Que se passe-t-il exactement à l’expiration de l’évaluation de 60 jours ?",a:"L’évaluation à 499 $ est une licence forfaitaire de 60 jours, non récurrente : ce n’est pas un abonnement et elle ne se renouvelle pas automatiquement. Le jeton porte une échéance de 60 jours. Après cette date, vos droits d’évaluation commerciale prennent fin et l’avis de licence réapparaît à l’import, mais rien n’est désactivé, aucun code ne cesse de fonctionner, et vos données et résultats restent à vous. Pour poursuivre un usage commercial, vous passez à un palier annuel. Les 499 $ sont crédités à 100 % vers toute licence annuelle achetée dans les 90 jours suivant le début de votre évaluation : achetez Solo/Indie à 1 299 $/an dans ce délai et vous payez 800 $, pas 1 299 $. Écrivez à admin@qector.store avec votre numéro de facture Stripe et nous facturons la différence."},{q:"Combien de sièges chaque palier couvre-t-il, et qu’est-ce qui compte comme production ?",a:"L’évaluation à 499 $ couvre des sièges internes illimités pendant 60 jours, mais elle est limitée à l’évaluation et aux pilotes : tests de référence (benchmarks), tests d’intégration, études de seuil et évaluation d’architecture. Elle n’accorde pas de droits de production. Les paliers annuels accordent des droits de production pour usage interne et sont comptés par sièges : Solo/Indie 1 299 $/an (1 utilisateur nommé), Startup/Growth 4 499 $/an (jusqu’à 10), Professionnel 11 500 $/an (jusqu’à 25), Entreprise & OEM sur mesure (sièges et qubits logiques illimités, droits de regroupement OEM, ingénieur de support dédié, versions personnalisées). Une licence perpétuelle Solo/Indie est aussi disponible à 3 299 $ paiement unique pour v3.x (toutes les mises à jour mineures et correctives v3.x incluses; les montées de version majeure comme v4.0 sont une nouvelle licence)."},{q:"Une API hébergée ou orientée client est-elle couverte par un palier annuel ?",a:"Non. Les paliers annuels couvrent l’usage interne : votre propre équipe, sur votre propre infrastructure. Dès que QECTOR se trouve derrière une API, un produit ou un service accessible à quiconque hors de votre organisation, c’est du SaaS ou de la redistribution et cela exige un contrat Entreprise/OEM, quel que soit le palier annuel détenu. Les points d’accès hébergés internes utilisés uniquement par vos propres employés sont couverts par un palier annuel. En cas de doute, écrivez à admin@qector.store et décrivez le déploiement."},{q:"Puis-je redistribuer QECTOR dans mon produit ?",a:"Non : les paliers standards couvrent l’usage interne seulement. Les licences Entreprise OEM couvrent la redistribution, l’hébergement SaaS et le regroupement matériel. Écrivez à admin@qector.store pour un contrat sur mesure."},{q:"Ai-je besoin d’une licence pour la recherche non commerciale ?",a:"Non. L’usage non commercial, académique et personnel est gratuit sous la licence PolyForm Noncommercial 1.0.0. Seul le déploiement commercial exige un palier payant. L’avis de licence à l’import est informatif : il ne restreint pas l’usage non commercial, et QECTOR_SILENT=1 le désactive."},{q:"En quelle devise sont les prix, et la taxe est-elle incluse ?",a:"Tous les prix sont en dollars américains (USD). Les prix affichés sont hors taxes. Stripe calcule et ajoute toute taxe de vente, TPS/TVH ou TVA applicable au paiement selon votre adresse de facturation : les acheteurs canadiens, britanniques et européens doivent s’attendre à une taxe en sus du prix affiché. Si votre organisation est exonérée ou possède un numéro d’enregistrement TPS/TVA valide, saisissez-le au paiement, ou écrivez à admin@qector.store avec votre numéro de facture Stripe pour une facture corrigée."},{q:"Quelle est votre politique de remboursement ?",a:"Les jetons de licence sont livrés immédiatement au paiement : toutes les ventes sont donc finales et les licences commerciales ne sont pas remboursables. C’est précisément pourquoi l’évaluation à 499 $ pour 60 jours existe : c’est le moyen économique et entièrement créditable de valider QECTOR sur vos propres charges de travail avant de vous engager sur un palier annuel. Si un jeton n’arrive jamais ou ne se vérifie pas, c’est un défaut de livraison plutôt qu’un sujet de remboursement : écrivez à admin@qector.store et nous le réémettrons. Cette politique ne limite pas les droits statutaires non renonçables là où ils s’appliquent. Les conditions complètes sont sur la page de politique de remboursement."},{q:"Pouvons-nous obtenir un contrat EULA signé ou un formulaire fiscal ?",a:"Oui. Si vos achats exigent un contrat PDF signé, un profil de fournisseur, un W-8BEN ou formulaire fiscal équivalent ou un questionnaire de sécurité, envoyez votre demande avec votre numéro de facture Stripe à admin@qector.store."}];export{T as F,j as P,I as a}; diff --git a/assets/faqData-CvhYJZQK.js b/assets/faqData-CvhYJZQK.js deleted file mode 100644 index 90141901..00000000 --- a/assets/faqData-CvhYJZQK.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{L as w}from"./index-DayaklK-.js";function j({name:u,price:c,period:d="",desc:m,features:o,excluded:p,featured:r=!1,showRibbon:v=!0,featuredLabel:h="Most Popular",accent:n="cyan",ctaLabel:s="Contact Sales",ctaHref:a="/contact",centered:i=!1,className:f=""}){const g=n==="gold"?"border-gold-400/30 neon-border-gold":"border-cyan-300/30 neon-border-cyan",y=n==="gold"?"text-gold-400":"text-cyan-300",b=n==="gold"?"bg-gold-400 text-void":"bg-cyan-300 text-void",q=n==="gold"?"btn-gold":"btn-cyan",x=/^https?:\/\//i.test(a),l=`block w-full text-center py-2.5 rounded-lg font-medium text-sm transition-all ${r?q:"btn-outline"}`;return e.jsxs("div",{className:`card-surface flex flex-col relative ${i?"text-center":""} ${r?g:""} ${f}`,children:[r&&v&&e.jsx("span",{className:`absolute -top-3 left-1/2 -translate-x-1/2 px-3 py-1 whitespace-nowrap text-xs font-bold uppercase tracking-wider rounded-full ${b}`,children:h}),e.jsx("div",{className:"text-muted-foreground text-xs uppercase tracking-wider mb-2",children:u}),e.jsxs("div",{className:"text-primary font-bold text-3xl mb-1",children:[c,e.jsx("span",{className:"text-muted-foreground text-sm font-normal",children:d})]}),e.jsx("p",{className:"text-secondary text-sm mb-4",children:m}),o&&e.jsxs("ul",{className:"space-y-2 flex-1 mb-6",children:[o.map(t=>e.jsxs("li",{className:`flex items-start gap-2 text-sm text-secondary ${i?"text-left":""}`,children:[e.jsx("span",{className:`${y} mt-0.5`,"aria-hidden":"true",children:"✓"}),e.jsxs("span",{children:[e.jsx("span",{className:"sr-only",children:"Included: "}),t]})]},t)),p?.map(t=>e.jsxs("li",{className:`flex items-start gap-2 text-sm text-muted-foreground/70 ${i?"text-left":""}`,children:[e.jsx("span",{className:"text-muted-foreground/60 mt-0.5","aria-hidden":"true",children:"✓"}),e.jsxs("span",{children:[e.jsx("span",{className:"sr-only",children:"Not included: "}),t]})]},t))]}),x?e.jsx("a",{href:a,className:l,rel:"noopener",children:s}):e.jsx(w,{to:a,className:l,children:s})]})}const C=[{q:"Does licensing work on air-gapped machines?",a:"Yes. A licence is a signed token verified offline against a public key built into the package. There is no licence server, no activation step and no network call, so it works on isolated and air-gapped systems."},{q:"How is the licence delivered, and what does the token unlock?",a:'By e-mail within minutes of payment (check spam, then write to admin@qector.store with your Stripe receipt). Everyone installs the same wheel: pip install --upgrade "qector-decoder-v3>=1.0.1,<2". Set QECTOR_LICENSE_KEY and QECTOR_LICENSE to the token. Every paid plan unlocks GPU (CUDA/OpenCL) batch decoding; Lab and Enterprise also raise the code-distance tier to 63. CPU decoding is never blocked, and distance caps are only enforced if you set QECTOR_ENFORCE=1.'},{q:"Can I try it before committing?",a:"Every plan carries a 14-day money-back guarantee on the first payment: buy Pro monthly, run it on your own workloads, and if it is not right write to admin@qector.store for a full refund. For a structured evaluation with an integration call, take the 60-day Pilot, which is fully creditable toward Lab."},{q:"Do plans renew automatically, and how do I cancel?",a:"Yes. Pro (monthly or annual) and Lab renew automatically until cancelled, with a reminder e-mail 14 days before each annual renewal. Cancel any time from your Stripe receipt or by writing to admin@qector.store; your licence stays valid until the end of the paid period. Pro Perpetual and the Pilot are one-time payments and never renew."},{q:"What is your refund policy?",a:"14-day money-back guarantee on your first payment of any plan: write to admin@qector.store with your Stripe receipt and we refund it in full. Renewals are not refunded pro rata. Duplicate purchases and charges made in error are always refunded. If a token never arrives or fails to verify, we reissue it at no cost. This does not limit non-waivable statutory rights."},{q:"What does a licence cover?",a:"Internal commercial use by your organisation, including production. Pro and Lab differ in licence tier (Lab raises the code-distance tier to 63) and support level. Pro Perpetual covers every 1.x release of qector-decoder-v3; a new major version such as 2.0 is a new licence. The Pilot is for evaluation (benchmarking, integration testing, threshold studies), not production."},{q:"Is a hosted or customer-facing API covered?",a:"No. Pro and Lab cover internal use on your own infrastructure. As soon as QECTOR sits behind an API, product or service that anyone outside your organisation can reach, that is SaaS or redistribution and needs an Enterprise/OEM agreement. Internal endpoints used only by your own staff are fine. Unsure? Describe the deployment to admin@qector.store."},{q:"Can I redistribute QECTOR inside my product?",a:"Only under an Enterprise/OEM agreement, which covers redistribution, SaaS hosting and hardware bundling. Write to admin@qector.store."},{q:"Do I need a licence for non-commercial research?",a:"No. Personal, academic and other non-commercial use is free under the PolyForm Noncommercial License 1.0.0. Universities, public research organisations, charities and government institutions may also use it free, whatever the source of their funding. A company using QECTOR, including on a contract with a university, needs a paid plan. Academic institutions that want a paid plan anyway, for support or to pass commercial rights to an industry partner, get 40% off Lab with an institutional e-mail."},{q:"What currency are prices in, and is tax included?",a:"Prices are in US dollars and exclude tax. Applicable sales tax, GST/HST or VAT is calculated and added at checkout from your billing address. Businesses can enter a VAT/GST number at checkout."},{q:"Can we get a signed agreement, tax form or security questionnaire?",a:"Yes. For a signed PDF agreement, vendor profile, W-8BEN or equivalent, or a security questionnaire, write to admin@qector.store with your Stripe invoice number. Enterprise agreements are always signed contracts."}],L=[{q:"La licence fonctionne-t-elle sur des machines hors réseau ?",a:"Oui. Une licence est un jeton signé vérifié hors ligne contre une clé publique incluse dans le paquet. Aucun serveur de licence, aucune activation, aucun appel réseau : elle fonctionne sur des systèmes isolés et hors réseau."},{q:"Comment la licence est-elle livrée, et que déverrouille le jeton ?",a:'Par courriel dans les minutes qui suivent le paiement (vérifiez le courrier indésirable, puis écrivez à admin@qector.store avec votre reçu Stripe). Tout le monde installe la même wheel : pip install --upgrade "qector-decoder-v3>=1.0.1,<2". Définissez QECTOR_LICENSE_KEY et QECTOR_LICENSE au jeton. Chaque forfait payant déverrouille le décodage GPU (CUDA/OpenCL) par lots; Labo et Entreprise portent aussi le palier de distance à 63. Le décodage CPU n’est jamais bloqué, et les plafonds de distance ne s’appliquent que si QECTOR_ENFORCE=1.'},{q:"Puis-je l’essayer avant de m’engager ?",a:"Chaque forfait offre une garantie satisfait ou remboursé de 14 jours sur le premier paiement : achetez Pro au mois, testez-le sur vos propres charges, et si ce n’est pas le bon choix, écrivez à admin@qector.store pour un remboursement complet. Pour une évaluation encadrée avec appel d’intégration, prenez le Pilote de 60 jours, entièrement crédité sur Labo."},{q:"Les forfaits se renouvellent-ils automatiquement, et comment annuler ?",a:"Oui. Pro (mensuel ou annuel) et Labo se renouvellent automatiquement jusqu’à annulation, avec un courriel de rappel 14 jours avant chaque renouvellement annuel. Annulez en tout temps depuis votre reçu Stripe ou en écrivant à admin@qector.store; votre licence reste valide jusqu’à la fin de la période payée. Pro Perpétuel et le Pilote sont des paiements uniques et ne se renouvellent jamais."},{q:"Quelle est votre politique de remboursement ?",a:"Garantie satisfait ou remboursé de 14 jours sur votre premier paiement de tout forfait : écrivez à admin@qector.store avec votre reçu Stripe et nous remboursons en entier. Les renouvellements ne sont pas remboursés au prorata. Les achats en double et les frais faits par erreur sont toujours remboursés. Si un jeton n’arrive pas ou ne se vérifie pas, nous le réémettons sans frais. Cela ne limite pas les droits légaux auxquels on ne peut renoncer."},{q:"Que couvre une licence ?",a:"L’usage commercial interne par votre organisation, y compris en production. Pro et Labo diffèrent par le palier de licence (Labo porte le palier de distance à 63) et le niveau de support. Pro Perpétuel couvre toutes les versions 1.x de qector-decoder-v3; une nouvelle version majeure comme 2.0 est une nouvelle licence. Le Pilote sert à l’évaluation (benchmarks, tests d’intégration, études de seuil), pas à la production."},{q:"Une API hébergée ou offerte aux clients est-elle couverte ?",a:"Non. Pro et Labo couvrent l’usage interne sur votre propre infrastructure. Dès que QECTOR se trouve derrière une API, un produit ou un service accessible hors de votre organisation, c’est du SaaS ou de la redistribution, ce qui exige un contrat Entreprise/OEM. Les points d’accès internes réservés à votre personnel sont couverts. En cas de doute, décrivez le déploiement à admin@qector.store."},{q:"Puis-je redistribuer QECTOR dans mon produit ?",a:"Seulement avec un contrat Entreprise/OEM, qui couvre la redistribution, l’hébergement SaaS et le regroupement matériel. Écrivez à admin@qector.store."},{q:"Ai-je besoin d’une licence pour la recherche non commerciale ?",a:"Non. L’usage personnel, académique et non commercial est gratuit sous la licence PolyForm Noncommercial 1.0.0. Les universités, organismes de recherche publics, organismes de bienfaisance et institutions gouvernementales peuvent aussi l’utiliser gratuitement, quelle que soit la source de leur financement. Une entreprise qui utilise QECTOR, y compris dans un contrat avec une université, doit avoir un forfait payant. Les établissements d’enseignement qui veulent tout de même un forfait payant obtiennent 40 % de rabais sur Labo avec un courriel institutionnel."},{q:"En quelle devise sont les prix, et la taxe est-elle incluse ?",a:"Les prix sont en dollars américains, hors taxes. La taxe de vente, TPS/TVH ou TVA applicable est calculée et ajoutée au paiement selon votre adresse de facturation. Les entreprises peuvent saisir un numéro de TPS/TVA au paiement."},{q:"Pouvons-nous obtenir un contrat signé, un formulaire fiscal ou un questionnaire de sécurité ?",a:"Oui. Pour un contrat PDF signé, un profil de fournisseur, un W-8BEN ou équivalent, ou un questionnaire de sécurité, écrivez à admin@qector.store avec votre numéro de facture Stripe. Les contrats Entreprise sont toujours signés."}];export{C as F,j as P,L as a}; diff --git a/assets/faqData-D7ZwBN6k.js b/assets/faqData-D7ZwBN6k.js deleted file mode 100644 index 905856b1..00000000 --- a/assets/faqData-D7ZwBN6k.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{L as w}from"./vendor-PiU4YGcH.js";function j({name:u,price:c,period:d="",desc:m,features:o,excluded:p,featured:r=!1,showRibbon:v=!0,featuredLabel:h="Most Popular",accent:n="cyan",ctaLabel:s="Contact Sales",ctaHref:a="/contact",centered:i=!1,className:f=""}){const g=n==="gold"?"border-gold-400/30 neon-border-gold":"border-cyan-300/30 neon-border-cyan",y=n==="gold"?"text-gold-400":"text-cyan-300",b=n==="gold"?"bg-gold-400 text-void":"bg-cyan-300 text-void",q=n==="gold"?"btn-gold":"btn-cyan",x=/^https?:\/\//i.test(a),l=`block w-full text-center py-2.5 rounded-lg font-medium text-sm transition-all ${r?q:"btn-outline"}`;return e.jsxs("div",{className:`card-surface flex flex-col relative ${i?"text-center":""} ${r?g:""} ${f}`,children:[r&&v&&e.jsx("span",{className:`absolute -top-3 left-1/2 -translate-x-1/2 px-3 py-1 whitespace-nowrap text-xs font-bold uppercase tracking-wider rounded-full ${b}`,children:h}),e.jsx("div",{className:"text-muted-foreground text-xs uppercase tracking-wider mb-2",children:u}),e.jsxs("div",{className:"text-primary font-bold text-3xl mb-1",children:[c,e.jsx("span",{className:"text-muted-foreground text-sm font-normal",children:d})]}),e.jsx("p",{className:"text-secondary text-sm mb-4",children:m}),o&&e.jsxs("ul",{className:"space-y-2 flex-1 mb-6",children:[o.map(t=>e.jsxs("li",{className:`flex items-start gap-2 text-sm text-secondary ${i?"text-left":""}`,children:[e.jsx("span",{className:`${y} mt-0.5`,"aria-hidden":"true",children:"✓"}),e.jsxs("span",{children:[e.jsx("span",{className:"sr-only",children:"Included: "}),t]})]},t)),p?.map(t=>e.jsxs("li",{className:`flex items-start gap-2 text-sm text-muted-foreground/70 ${i?"text-left":""}`,children:[e.jsx("span",{className:"text-muted-foreground/60 mt-0.5","aria-hidden":"true",children:"✓"}),e.jsxs("span",{children:[e.jsx("span",{className:"sr-only",children:"Not included: "}),t]})]},t))]}),x?e.jsx("a",{href:a,className:l,rel:"noopener",children:s}):e.jsx(w,{to:a,className:l,children:s})]})}const C=[{q:"Does licensing work on air-gapped machines?",a:"Yes. A licence is a signed token verified offline against a public key built into the package. There is no licence server, no activation step and no network call, so it works on isolated and air-gapped systems."},{q:"How is the licence delivered, and what does the token unlock?",a:'By e-mail within minutes of payment (check spam, then write to admin@qector.store with your Stripe receipt). Everyone installs the same wheel: pip install --upgrade "qector-decoder-v3>=1.0.1,<2". Set QECTOR_LICENSE_KEY and QECTOR_LICENSE to the token. Every paid plan unlocks GPU (CUDA/OpenCL) batch decoding; Lab and Enterprise also raise the code-distance tier to 63. CPU decoding is never blocked, and distance caps are only enforced if you set QECTOR_ENFORCE=1.'},{q:"Can I try it before committing?",a:"Every plan carries a 14-day money-back guarantee on the first payment: buy Pro monthly, run it on your own workloads, and if it is not right write to admin@qector.store for a full refund. For a structured evaluation with an integration call, take the 60-day Pilot, which is fully creditable toward Lab."},{q:"Do plans renew automatically, and how do I cancel?",a:"Yes. Pro (monthly or annual) and Lab renew automatically until cancelled, with a reminder e-mail 14 days before each annual renewal. Cancel any time from your Stripe receipt or by writing to admin@qector.store; your licence stays valid until the end of the paid period. Pro Perpetual and the Pilot are one-time payments and never renew."},{q:"What is your refund policy?",a:"14-day money-back guarantee on your first payment of any plan: write to admin@qector.store with your Stripe receipt and we refund it in full. Renewals are not refunded pro rata. Duplicate purchases and charges made in error are always refunded. If a token never arrives or fails to verify, we reissue it at no cost. This does not limit non-waivable statutory rights."},{q:"What does a licence cover?",a:"Internal commercial use by your organisation, including production. Pro and Lab differ in licence tier (Lab raises the code-distance tier to 63) and support level. Pro Perpetual covers every 1.x release of qector-decoder-v3; a new major version such as 2.0 is a new licence. The Pilot is for evaluation (benchmarking, integration testing, threshold studies), not production."},{q:"Is a hosted or customer-facing API covered?",a:"No. Pro and Lab cover internal use on your own infrastructure. As soon as QECTOR sits behind an API, product or service that anyone outside your organisation can reach, that is SaaS or redistribution and needs an Enterprise/OEM agreement. Internal endpoints used only by your own staff are fine. Unsure? Describe the deployment to admin@qector.store."},{q:"Can I redistribute QECTOR inside my product?",a:"Only under an Enterprise/OEM agreement, which covers redistribution, SaaS hosting and hardware bundling. Write to admin@qector.store."},{q:"Do I need a licence for non-commercial research?",a:"No. Personal, academic and other non-commercial use is free under the PolyForm Noncommercial License 1.0.0. Universities, public research organisations, charities and government institutions may also use it free, whatever the source of their funding. A company using QECTOR, including on a contract with a university, needs a paid plan. Academic institutions that want a paid plan anyway, for support or to pass commercial rights to an industry partner, get 40% off Lab with an institutional e-mail."},{q:"What currency are prices in, and is tax included?",a:"Prices are in US dollars and exclude tax. Applicable sales tax, GST/HST or VAT is calculated and added at checkout from your billing address. Businesses can enter a VAT/GST number at checkout."},{q:"Can we get a signed agreement, tax form or security questionnaire?",a:"Yes. For a signed PDF agreement, vendor profile, W-8BEN or equivalent, or a security questionnaire, write to admin@qector.store with your Stripe invoice number. Enterprise agreements are always signed contracts."}],L=[{q:"La licence fonctionne-t-elle sur des machines hors réseau ?",a:"Oui. Une licence est un jeton signé vérifié hors ligne contre une clé publique incluse dans le paquet. Aucun serveur de licence, aucune activation, aucun appel réseau : elle fonctionne sur des systèmes isolés et hors réseau."},{q:"Comment la licence est-elle livrée, et que déverrouille le jeton ?",a:'Par courriel dans les minutes qui suivent le paiement (vérifiez le courrier indésirable, puis écrivez à admin@qector.store avec votre reçu Stripe). Tout le monde installe la même wheel : pip install --upgrade "qector-decoder-v3>=1.0.1,<2". Définissez QECTOR_LICENSE_KEY et QECTOR_LICENSE au jeton. Chaque forfait payant déverrouille le décodage GPU (CUDA/OpenCL) par lots; Labo et Entreprise portent aussi le palier de distance à 63. Le décodage CPU n’est jamais bloqué, et les plafonds de distance ne s’appliquent que si QECTOR_ENFORCE=1.'},{q:"Puis-je l’essayer avant de m’engager ?",a:"Chaque forfait offre une garantie satisfait ou remboursé de 14 jours sur le premier paiement : achetez Pro au mois, testez-le sur vos propres charges, et si ce n’est pas le bon choix, écrivez à admin@qector.store pour un remboursement complet. Pour une évaluation encadrée avec appel d’intégration, prenez le Pilote de 60 jours, entièrement crédité sur Labo."},{q:"Les forfaits se renouvellent-ils automatiquement, et comment annuler ?",a:"Oui. Pro (mensuel ou annuel) et Labo se renouvellent automatiquement jusqu’à annulation, avec un courriel de rappel 14 jours avant chaque renouvellement annuel. Annulez en tout temps depuis votre reçu Stripe ou en écrivant à admin@qector.store; votre licence reste valide jusqu’à la fin de la période payée. Pro Perpétuel et le Pilote sont des paiements uniques et ne se renouvellent jamais."},{q:"Quelle est votre politique de remboursement ?",a:"Garantie satisfait ou remboursé de 14 jours sur votre premier paiement de tout forfait : écrivez à admin@qector.store avec votre reçu Stripe et nous remboursons en entier. Les renouvellements ne sont pas remboursés au prorata. Les achats en double et les frais faits par erreur sont toujours remboursés. Si un jeton n’arrive pas ou ne se vérifie pas, nous le réémettons sans frais. Cela ne limite pas les droits légaux auxquels on ne peut renoncer."},{q:"Que couvre une licence ?",a:"L’usage commercial interne par votre organisation, y compris en production. Pro et Labo diffèrent par le palier de licence (Labo porte le palier de distance à 63) et le niveau de support. Pro Perpétuel couvre toutes les versions 1.x de qector-decoder-v3; une nouvelle version majeure comme 2.0 est une nouvelle licence. Le Pilote sert à l’évaluation (benchmarks, tests d’intégration, études de seuil), pas à la production."},{q:"Une API hébergée ou offerte aux clients est-elle couverte ?",a:"Non. Pro et Labo couvrent l’usage interne sur votre propre infrastructure. Dès que QECTOR se trouve derrière une API, un produit ou un service accessible hors de votre organisation, c’est du SaaS ou de la redistribution, ce qui exige un contrat Entreprise/OEM. Les points d’accès internes réservés à votre personnel sont couverts. En cas de doute, décrivez le déploiement à admin@qector.store."},{q:"Puis-je redistribuer QECTOR dans mon produit ?",a:"Seulement avec un contrat Entreprise/OEM, qui couvre la redistribution, l’hébergement SaaS et le regroupement matériel. Écrivez à admin@qector.store."},{q:"Ai-je besoin d’une licence pour la recherche non commerciale ?",a:"Non. L’usage personnel, académique et non commercial est gratuit sous la licence PolyForm Noncommercial 1.0.0. Les universités, organismes de recherche publics, organismes de bienfaisance et institutions gouvernementales peuvent aussi l’utiliser gratuitement, quelle que soit la source de leur financement. Une entreprise qui utilise QECTOR, y compris dans un contrat avec une université, doit avoir un forfait payant. Les établissements d’enseignement qui veulent tout de même un forfait payant obtiennent 40 % de rabais sur Labo avec un courriel institutionnel."},{q:"En quelle devise sont les prix, et la taxe est-elle incluse ?",a:"Les prix sont en dollars américains, hors taxes. La taxe de vente, TPS/TVH ou TVA applicable est calculée et ajoutée au paiement selon votre adresse de facturation. Les entreprises peuvent saisir un numéro de TPS/TVA au paiement."},{q:"Pouvons-nous obtenir un contrat signé, un formulaire fiscal ou un questionnaire de sécurité ?",a:"Oui. Pour un contrat PDF signé, un profil de fournisseur, un W-8BEN ou équivalent, ou un questionnaire de sécurité, écrivez à admin@qector.store avec votre numéro de facture Stripe. Les contrats Entreprise sont toujours signés."}];export{C as F,j as P,L as a}; diff --git a/assets/faqData-DUePwhCA.js b/assets/faqData-DUePwhCA.js deleted file mode 100644 index 96cf86f8..00000000 --- a/assets/faqData-DUePwhCA.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{L as w}from"./index-CcwlvHYJ.js";function j({name:u,price:c,period:d="",desc:m,features:o,excluded:p,featured:r=!1,showRibbon:v=!0,featuredLabel:h="Most Popular",accent:n="cyan",ctaLabel:s="Contact Sales",ctaHref:a="/contact",centered:i=!1,className:f=""}){const g=n==="gold"?"border-gold-400/30 neon-border-gold":"border-cyan-300/30 neon-border-cyan",y=n==="gold"?"text-gold-400":"text-cyan-300",b=n==="gold"?"bg-gold-400 text-void":"bg-cyan-300 text-void",q=n==="gold"?"btn-gold":"btn-cyan",x=/^https?:\/\//i.test(a),l=`block w-full text-center py-2.5 rounded-lg font-medium text-sm transition-all ${r?q:"btn-outline"}`;return e.jsxs("div",{className:`card-surface flex flex-col relative ${i?"text-center":""} ${r?g:""} ${f}`,children:[r&&v&&e.jsx("span",{className:`absolute -top-3 left-1/2 -translate-x-1/2 px-3 py-1 whitespace-nowrap text-xs font-bold uppercase tracking-wider rounded-full ${b}`,children:h}),e.jsx("div",{className:"text-muted-foreground text-xs uppercase tracking-wider mb-2",children:u}),e.jsxs("div",{className:"text-primary font-bold text-3xl mb-1",children:[c,e.jsx("span",{className:"text-muted-foreground text-sm font-normal",children:d})]}),e.jsx("p",{className:"text-secondary text-sm mb-4",children:m}),o&&e.jsxs("ul",{className:"space-y-2 flex-1 mb-6",children:[o.map(t=>e.jsxs("li",{className:`flex items-start gap-2 text-sm text-secondary ${i?"text-left":""}`,children:[e.jsx("span",{className:`${y} mt-0.5`,"aria-hidden":"true",children:"✓"}),e.jsxs("span",{children:[e.jsx("span",{className:"sr-only",children:"Included: "}),t]})]},t)),p?.map(t=>e.jsxs("li",{className:`flex items-start gap-2 text-sm text-muted-foreground/70 ${i?"text-left":""}`,children:[e.jsx("span",{className:"text-muted-foreground/60 mt-0.5","aria-hidden":"true",children:"✓"}),e.jsxs("span",{children:[e.jsx("span",{className:"sr-only",children:"Not included: "}),t]})]},t))]}),x?e.jsx("a",{href:a,className:l,rel:"noopener",children:s}):e.jsx(w,{to:a,className:l,children:s})]})}const C=[{q:"Does licensing work on air-gapped machines?",a:"Yes. A licence is a signed token verified offline against a public key built into the package. There is no licence server, no activation step and no network call, so it works on isolated and air-gapped systems."},{q:"How is the licence delivered, and what does the token unlock?",a:'By e-mail within minutes of payment (check spam, then write to admin@qector.store with your Stripe receipt). Everyone installs the same wheel: pip install --upgrade "qector-decoder-v3>=1.0.1,<2". Set QECTOR_LICENSE_KEY and QECTOR_LICENSE to the token. Every paid plan unlocks GPU (CUDA/OpenCL) batch decoding; Lab and Enterprise also raise the code-distance tier to 63. CPU decoding is never blocked, and distance caps are only enforced if you set QECTOR_ENFORCE=1.'},{q:"Can I try it before committing?",a:"Every plan carries a 14-day money-back guarantee on the first payment: buy Pro monthly, run it on your own workloads, and if it is not right write to admin@qector.store for a full refund. For a structured evaluation with an integration call, take the 60-day Pilot, which is fully creditable toward Lab."},{q:"Do plans renew automatically, and how do I cancel?",a:"Yes. Pro (monthly or annual) and Lab renew automatically until cancelled, with a reminder e-mail 14 days before each annual renewal. Cancel any time from your Stripe receipt or by writing to admin@qector.store; your licence stays valid until the end of the paid period. Pro Perpetual and the Pilot are one-time payments and never renew."},{q:"What is your refund policy?",a:"14-day money-back guarantee on your first payment of any plan: write to admin@qector.store with your Stripe receipt and we refund it in full. Renewals are not refunded pro rata. Duplicate purchases and charges made in error are always refunded. If a token never arrives or fails to verify, we reissue it at no cost. This does not limit non-waivable statutory rights."},{q:"What does a licence cover?",a:"Internal commercial use by your organisation, including production. Pro and Lab differ in licence tier (Lab raises the code-distance tier to 63) and support level. Pro Perpetual covers every 1.x release of qector-decoder-v3; a new major version such as 2.0 is a new licence. The Pilot is for evaluation (benchmarking, integration testing, threshold studies), not production."},{q:"Is a hosted or customer-facing API covered?",a:"No. Pro and Lab cover internal use on your own infrastructure. As soon as QECTOR sits behind an API, product or service that anyone outside your organisation can reach, that is SaaS or redistribution and needs an Enterprise/OEM agreement. Internal endpoints used only by your own staff are fine. Unsure? Describe the deployment to admin@qector.store."},{q:"Can I redistribute QECTOR inside my product?",a:"Only under an Enterprise/OEM agreement, which covers redistribution, SaaS hosting and hardware bundling. Write to admin@qector.store."},{q:"Do I need a licence for non-commercial research?",a:"No. Personal, academic and other non-commercial use is free under the PolyForm Noncommercial License 1.0.0. Universities, public research organisations, charities and government institutions may also use it free, whatever the source of their funding. A company using QECTOR, including on a contract with a university, needs a paid plan. Academic institutions that want a paid plan anyway, for support or to pass commercial rights to an industry partner, get 40% off Lab with an institutional e-mail."},{q:"What currency are prices in, and is tax included?",a:"Prices are in US dollars and exclude tax. Applicable sales tax, GST/HST or VAT is calculated and added at checkout from your billing address. Businesses can enter a VAT/GST number at checkout."},{q:"Can we get a signed agreement, tax form or security questionnaire?",a:"Yes. For a signed PDF agreement, vendor profile, W-8BEN or equivalent, or a security questionnaire, write to admin@qector.store with your Stripe invoice number. Enterprise agreements are always signed contracts."}],L=[{q:"La licence fonctionne-t-elle sur des machines hors réseau ?",a:"Oui. Une licence est un jeton signé vérifié hors ligne contre une clé publique incluse dans le paquet. Aucun serveur de licence, aucune activation, aucun appel réseau : elle fonctionne sur des systèmes isolés et hors réseau."},{q:"Comment la licence est-elle livrée, et que déverrouille le jeton ?",a:'Par courriel dans les minutes qui suivent le paiement (vérifiez le courrier indésirable, puis écrivez à admin@qector.store avec votre reçu Stripe). Tout le monde installe la même wheel : pip install --upgrade "qector-decoder-v3>=1.0.1,<2". Définissez QECTOR_LICENSE_KEY et QECTOR_LICENSE au jeton. Chaque forfait payant déverrouille le décodage GPU (CUDA/OpenCL) par lots; Labo et Entreprise portent aussi le palier de distance à 63. Le décodage CPU n’est jamais bloqué, et les plafonds de distance ne s’appliquent que si QECTOR_ENFORCE=1.'},{q:"Puis-je l’essayer avant de m’engager ?",a:"Chaque forfait offre une garantie satisfait ou remboursé de 14 jours sur le premier paiement : achetez Pro au mois, testez-le sur vos propres charges, et si ce n’est pas le bon choix, écrivez à admin@qector.store pour un remboursement complet. Pour une évaluation encadrée avec appel d’intégration, prenez le Pilote de 60 jours, entièrement crédité sur Labo."},{q:"Les forfaits se renouvellent-ils automatiquement, et comment annuler ?",a:"Oui. Pro (mensuel ou annuel) et Labo se renouvellent automatiquement jusqu’à annulation, avec un courriel de rappel 14 jours avant chaque renouvellement annuel. Annulez en tout temps depuis votre reçu Stripe ou en écrivant à admin@qector.store; votre licence reste valide jusqu’à la fin de la période payée. Pro Perpétuel et le Pilote sont des paiements uniques et ne se renouvellent jamais."},{q:"Quelle est votre politique de remboursement ?",a:"Garantie satisfait ou remboursé de 14 jours sur votre premier paiement de tout forfait : écrivez à admin@qector.store avec votre reçu Stripe et nous remboursons en entier. Les renouvellements ne sont pas remboursés au prorata. Les achats en double et les frais faits par erreur sont toujours remboursés. Si un jeton n’arrive pas ou ne se vérifie pas, nous le réémettons sans frais. Cela ne limite pas les droits légaux auxquels on ne peut renoncer."},{q:"Que couvre une licence ?",a:"L’usage commercial interne par votre organisation, y compris en production. Pro et Labo diffèrent par le palier de licence (Labo porte le palier de distance à 63) et le niveau de support. Pro Perpétuel couvre toutes les versions 1.x de qector-decoder-v3; une nouvelle version majeure comme 2.0 est une nouvelle licence. Le Pilote sert à l’évaluation (benchmarks, tests d’intégration, études de seuil), pas à la production."},{q:"Une API hébergée ou offerte aux clients est-elle couverte ?",a:"Non. Pro et Labo couvrent l’usage interne sur votre propre infrastructure. Dès que QECTOR se trouve derrière une API, un produit ou un service accessible hors de votre organisation, c’est du SaaS ou de la redistribution, ce qui exige un contrat Entreprise/OEM. Les points d’accès internes réservés à votre personnel sont couverts. En cas de doute, décrivez le déploiement à admin@qector.store."},{q:"Puis-je redistribuer QECTOR dans mon produit ?",a:"Seulement avec un contrat Entreprise/OEM, qui couvre la redistribution, l’hébergement SaaS et le regroupement matériel. Écrivez à admin@qector.store."},{q:"Ai-je besoin d’une licence pour la recherche non commerciale ?",a:"Non. L’usage personnel, académique et non commercial est gratuit sous la licence PolyForm Noncommercial 1.0.0. Les universités, organismes de recherche publics, organismes de bienfaisance et institutions gouvernementales peuvent aussi l’utiliser gratuitement, quelle que soit la source de leur financement. Une entreprise qui utilise QECTOR, y compris dans un contrat avec une université, doit avoir un forfait payant. Les établissements d’enseignement qui veulent tout de même un forfait payant obtiennent 40 % de rabais sur Labo avec un courriel institutionnel."},{q:"En quelle devise sont les prix, et la taxe est-elle incluse ?",a:"Les prix sont en dollars américains, hors taxes. La taxe de vente, TPS/TVH ou TVA applicable est calculée et ajoutée au paiement selon votre adresse de facturation. Les entreprises peuvent saisir un numéro de TPS/TVA au paiement."},{q:"Pouvons-nous obtenir un contrat signé, un formulaire fiscal ou un questionnaire de sécurité ?",a:"Oui. Pour un contrat PDF signé, un profil de fournisseur, un W-8BEN ou équivalent, ou un questionnaire de sécurité, écrivez à admin@qector.store avec votre numéro de facture Stripe. Les contrats Entreprise sont toujours signés."}];export{C as F,j as P,L as a}; diff --git a/assets/faqData-De1eOWz0.js b/assets/faqData-De1eOWz0.js deleted file mode 100644 index 01e78508..00000000 --- a/assets/faqData-De1eOWz0.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{L as w}from"./index-CCmwjNGU.js";function j({name:u,price:c,period:d="",desc:m,features:o,excluded:p,featured:r=!1,showRibbon:v=!0,featuredLabel:h="Most Popular",accent:n="cyan",ctaLabel:s="Contact Sales",ctaHref:a="/contact",centered:i=!1,className:f=""}){const g=n==="gold"?"border-gold-400/30 neon-border-gold":"border-cyan-300/30 neon-border-cyan",y=n==="gold"?"text-gold-400":"text-cyan-300",b=n==="gold"?"bg-gold-400 text-void":"bg-cyan-300 text-void",q=n==="gold"?"btn-gold":"btn-cyan",x=/^https?:\/\//i.test(a),l=`block w-full text-center py-2.5 rounded-lg font-medium text-sm transition-all ${r?q:"btn-outline"}`;return e.jsxs("div",{className:`card-surface flex flex-col relative ${i?"text-center":""} ${r?g:""} ${f}`,children:[r&&v&&e.jsx("span",{className:`absolute -top-3 left-1/2 -translate-x-1/2 px-3 py-1 whitespace-nowrap text-xs font-bold uppercase tracking-wider rounded-full ${b}`,children:h}),e.jsx("div",{className:"text-muted-foreground text-xs uppercase tracking-wider mb-2",children:u}),e.jsxs("div",{className:"text-primary font-bold text-3xl mb-1",children:[c,e.jsx("span",{className:"text-muted-foreground text-sm font-normal",children:d})]}),e.jsx("p",{className:"text-secondary text-sm mb-4",children:m}),o&&e.jsxs("ul",{className:"space-y-2 flex-1 mb-6",children:[o.map(t=>e.jsxs("li",{className:`flex items-start gap-2 text-sm text-secondary ${i?"text-left":""}`,children:[e.jsx("span",{className:`${y} mt-0.5`,"aria-hidden":"true",children:"✓"}),e.jsxs("span",{children:[e.jsx("span",{className:"sr-only",children:"Included: "}),t]})]},t)),p?.map(t=>e.jsxs("li",{className:`flex items-start gap-2 text-sm text-muted-foreground/70 ${i?"text-left":""}`,children:[e.jsx("span",{className:"text-muted-foreground/60 mt-0.5","aria-hidden":"true",children:"✓"}),e.jsxs("span",{children:[e.jsx("span",{className:"sr-only",children:"Not included: "}),t]})]},t))]}),x?e.jsx("a",{href:a,className:l,rel:"noopener",children:s}):e.jsx(w,{to:a,className:l,children:s})]})}const C=[{q:"Does licensing work on air-gapped machines?",a:"Yes. A licence is a signed token verified offline against a public key built into the package. There is no licence server, no activation step and no network call, so it works on isolated and air-gapped systems."},{q:"How is the licence delivered, and what does the token unlock?",a:'By e-mail within minutes of payment (check spam, then write to admin@qector.store with your Stripe receipt). Everyone installs the same wheel: pip install --upgrade "qector-decoder-v3>=1.0.1,<2". Set QECTOR_LICENSE_KEY and QECTOR_LICENSE to the token. Every paid plan unlocks GPU (CUDA/OpenCL) batch decoding; Lab and Enterprise also raise the code-distance tier to 63. CPU decoding is never blocked, and distance caps are only enforced if you set QECTOR_ENFORCE=1.'},{q:"Can I try it before committing?",a:"Every plan carries a 14-day money-back guarantee on the first payment: buy Pro monthly, run it on your own workloads, and if it is not right write to admin@qector.store for a full refund. For a structured evaluation with an integration call, take the 60-day Pilot, which is fully creditable toward Lab."},{q:"Do plans renew automatically, and how do I cancel?",a:"Yes. Pro (monthly or annual) and Lab renew automatically until cancelled, with a reminder e-mail 14 days before each annual renewal. Cancel any time from your Stripe receipt or by writing to admin@qector.store; your licence stays valid until the end of the paid period. Pro Perpetual and the Pilot are one-time payments and never renew."},{q:"What is your refund policy?",a:"14-day money-back guarantee on your first payment of any plan: write to admin@qector.store with your Stripe receipt and we refund it in full. Renewals are not refunded pro rata. Duplicate purchases and charges made in error are always refunded. If a token never arrives or fails to verify, we reissue it at no cost. This does not limit non-waivable statutory rights."},{q:"What does a licence cover?",a:"Internal commercial use by your organisation, including production. Pro and Lab differ in licence tier (Lab raises the code-distance tier to 63) and support level. Pro Perpetual covers every 1.x release of qector-decoder-v3; a new major version such as 2.0 is a new licence. The Pilot is for evaluation (benchmarking, integration testing, threshold studies), not production."},{q:"Is a hosted or customer-facing API covered?",a:"No. Pro and Lab cover internal use on your own infrastructure. As soon as QECTOR sits behind an API, product or service that anyone outside your organisation can reach, that is SaaS or redistribution and needs an Enterprise/OEM agreement. Internal endpoints used only by your own staff are fine. Unsure? Describe the deployment to admin@qector.store."},{q:"Can I redistribute QECTOR inside my product?",a:"Only under an Enterprise/OEM agreement, which covers redistribution, SaaS hosting and hardware bundling. Write to admin@qector.store."},{q:"Do I need a licence for non-commercial research?",a:"No. Personal, academic and other non-commercial use is free under the PolyForm Noncommercial License 1.0.0. Universities, public research organisations, charities and government institutions may also use it free, whatever the source of their funding. A company using QECTOR, including on a contract with a university, needs a paid plan. Academic institutions that want a paid plan anyway, for support or to pass commercial rights to an industry partner, get 40% off Lab with an institutional e-mail."},{q:"What currency are prices in, and is tax included?",a:"Prices are in US dollars and exclude tax. Applicable sales tax, GST/HST or VAT is calculated and added at checkout from your billing address. Businesses can enter a VAT/GST number at checkout."},{q:"Can we get a signed agreement, tax form or security questionnaire?",a:"Yes. For a signed PDF agreement, vendor profile, W-8BEN or equivalent, or a security questionnaire, write to admin@qector.store with your Stripe invoice number. Enterprise agreements are always signed contracts."}],L=[{q:"La licence fonctionne-t-elle sur des machines hors réseau ?",a:"Oui. Une licence est un jeton signé vérifié hors ligne contre une clé publique incluse dans le paquet. Aucun serveur de licence, aucune activation, aucun appel réseau : elle fonctionne sur des systèmes isolés et hors réseau."},{q:"Comment la licence est-elle livrée, et que déverrouille le jeton ?",a:'Par courriel dans les minutes qui suivent le paiement (vérifiez le courrier indésirable, puis écrivez à admin@qector.store avec votre reçu Stripe). Tout le monde installe la même wheel : pip install --upgrade "qector-decoder-v3>=1.0.1,<2". Définissez QECTOR_LICENSE_KEY et QECTOR_LICENSE au jeton. Chaque forfait payant déverrouille le décodage GPU (CUDA/OpenCL) par lots; Labo et Entreprise portent aussi le palier de distance à 63. Le décodage CPU n’est jamais bloqué, et les plafonds de distance ne s’appliquent que si QECTOR_ENFORCE=1.'},{q:"Puis-je l’essayer avant de m’engager ?",a:"Chaque forfait offre une garantie satisfait ou remboursé de 14 jours sur le premier paiement : achetez Pro au mois, testez-le sur vos propres charges, et si ce n’est pas le bon choix, écrivez à admin@qector.store pour un remboursement complet. Pour une évaluation encadrée avec appel d’intégration, prenez le Pilote de 60 jours, entièrement crédité sur Labo."},{q:"Les forfaits se renouvellent-ils automatiquement, et comment annuler ?",a:"Oui. Pro (mensuel ou annuel) et Labo se renouvellent automatiquement jusqu’à annulation, avec un courriel de rappel 14 jours avant chaque renouvellement annuel. Annulez en tout temps depuis votre reçu Stripe ou en écrivant à admin@qector.store; votre licence reste valide jusqu’à la fin de la période payée. Pro Perpétuel et le Pilote sont des paiements uniques et ne se renouvellent jamais."},{q:"Quelle est votre politique de remboursement ?",a:"Garantie satisfait ou remboursé de 14 jours sur votre premier paiement de tout forfait : écrivez à admin@qector.store avec votre reçu Stripe et nous remboursons en entier. Les renouvellements ne sont pas remboursés au prorata. Les achats en double et les frais faits par erreur sont toujours remboursés. Si un jeton n’arrive pas ou ne se vérifie pas, nous le réémettons sans frais. Cela ne limite pas les droits légaux auxquels on ne peut renoncer."},{q:"Que couvre une licence ?",a:"L’usage commercial interne par votre organisation, y compris en production. Pro et Labo diffèrent par le palier de licence (Labo porte le palier de distance à 63) et le niveau de support. Pro Perpétuel couvre toutes les versions 1.x de qector-decoder-v3; une nouvelle version majeure comme 2.0 est une nouvelle licence. Le Pilote sert à l’évaluation (benchmarks, tests d’intégration, études de seuil), pas à la production."},{q:"Une API hébergée ou offerte aux clients est-elle couverte ?",a:"Non. Pro et Labo couvrent l’usage interne sur votre propre infrastructure. Dès que QECTOR se trouve derrière une API, un produit ou un service accessible hors de votre organisation, c’est du SaaS ou de la redistribution, ce qui exige un contrat Entreprise/OEM. Les points d’accès internes réservés à votre personnel sont couverts. En cas de doute, décrivez le déploiement à admin@qector.store."},{q:"Puis-je redistribuer QECTOR dans mon produit ?",a:"Seulement avec un contrat Entreprise/OEM, qui couvre la redistribution, l’hébergement SaaS et le regroupement matériel. Écrivez à admin@qector.store."},{q:"Ai-je besoin d’une licence pour la recherche non commerciale ?",a:"Non. L’usage personnel, académique et non commercial est gratuit sous la licence PolyForm Noncommercial 1.0.0. Les universités, organismes de recherche publics, organismes de bienfaisance et institutions gouvernementales peuvent aussi l’utiliser gratuitement, quelle que soit la source de leur financement. Une entreprise qui utilise QECTOR, y compris dans un contrat avec une université, doit avoir un forfait payant. Les établissements d’enseignement qui veulent tout de même un forfait payant obtiennent 40 % de rabais sur Labo avec un courriel institutionnel."},{q:"En quelle devise sont les prix, et la taxe est-elle incluse ?",a:"Les prix sont en dollars américains, hors taxes. La taxe de vente, TPS/TVH ou TVA applicable est calculée et ajoutée au paiement selon votre adresse de facturation. Les entreprises peuvent saisir un numéro de TPS/TVA au paiement."},{q:"Pouvons-nous obtenir un contrat signé, un formulaire fiscal ou un questionnaire de sécurité ?",a:"Oui. Pour un contrat PDF signé, un profil de fournisseur, un W-8BEN ou équivalent, ou un questionnaire de sécurité, écrivez à admin@qector.store avec votre numéro de facture Stripe. Les contrats Entreprise sont toujours signés."}];export{C as F,j as P,L as a}; diff --git a/assets/faqData-IO8c0Ufu.js b/assets/faqData-IO8c0Ufu.js deleted file mode 100644 index c6b24850..00000000 --- a/assets/faqData-IO8c0Ufu.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{L as w}from"./index-PdoH5kLF.js";function j({name:u,price:c,period:d="",desc:m,features:o,excluded:p,featured:r=!1,showRibbon:v=!0,featuredLabel:h="Most Popular",accent:n="cyan",ctaLabel:s="Contact Sales",ctaHref:a="/contact",centered:i=!1,className:f=""}){const g=n==="gold"?"border-gold-400/30 neon-border-gold":"border-cyan-300/30 neon-border-cyan",y=n==="gold"?"text-gold-400":"text-cyan-300",b=n==="gold"?"bg-gold-400 text-void":"bg-cyan-300 text-void",q=n==="gold"?"btn-gold":"btn-cyan",x=/^https?:\/\//i.test(a),l=`block w-full text-center py-2.5 rounded-lg font-medium text-sm transition-all ${r?q:"btn-outline"}`;return e.jsxs("div",{className:`card-surface flex flex-col relative ${i?"text-center":""} ${r?g:""} ${f}`,children:[r&&v&&e.jsx("span",{className:`absolute -top-3 left-1/2 -translate-x-1/2 px-3 py-1 whitespace-nowrap text-xs font-bold uppercase tracking-wider rounded-full ${b}`,children:h}),e.jsx("div",{className:"text-muted-foreground text-xs uppercase tracking-wider mb-2",children:u}),e.jsxs("div",{className:"text-primary font-bold text-3xl mb-1",children:[c,e.jsx("span",{className:"text-muted-foreground text-sm font-normal",children:d})]}),e.jsx("p",{className:"text-secondary text-sm mb-4",children:m}),o&&e.jsxs("ul",{className:"space-y-2 flex-1 mb-6",children:[o.map(t=>e.jsxs("li",{className:`flex items-start gap-2 text-sm text-secondary ${i?"text-left":""}`,children:[e.jsx("span",{className:`${y} mt-0.5`,"aria-hidden":"true",children:"✓"}),e.jsxs("span",{children:[e.jsx("span",{className:"sr-only",children:"Included: "}),t]})]},t)),p?.map(t=>e.jsxs("li",{className:`flex items-start gap-2 text-sm text-muted-foreground/70 ${i?"text-left":""}`,children:[e.jsx("span",{className:"text-muted-foreground/60 mt-0.5","aria-hidden":"true",children:"✓"}),e.jsxs("span",{children:[e.jsx("span",{className:"sr-only",children:"Not included: "}),t]})]},t))]}),x?e.jsx("a",{href:a,className:l,rel:"noopener",children:s}):e.jsx(w,{to:a,className:l,children:s})]})}const C=[{q:"Does licensing work on air-gapped machines?",a:"Yes. A licence is a signed token verified offline against a public key built into the package. There is no licence server, no activation step and no network call, so it works on isolated and air-gapped systems."},{q:"How is the licence delivered, and what does the token unlock?",a:'By e-mail within minutes of payment (check spam, then write to admin@qector.store with your Stripe receipt). Everyone installs the same wheel: pip install --upgrade "qector-decoder-v3>=1.0.1,<2". Set QECTOR_LICENSE_KEY and QECTOR_LICENSE to the token. Every paid plan unlocks GPU (CUDA/OpenCL) batch decoding; Lab and Enterprise also raise the code-distance tier to 63. CPU decoding is never blocked, and distance caps are only enforced if you set QECTOR_ENFORCE=1.'},{q:"Can I try it before committing?",a:"Every plan carries a 14-day money-back guarantee on the first payment: buy Pro monthly, run it on your own workloads, and if it is not right write to admin@qector.store for a full refund. For a structured evaluation with an integration call, take the 60-day Pilot, which is fully creditable toward Lab."},{q:"Do plans renew automatically, and how do I cancel?",a:"Yes. Pro (monthly or annual) and Lab renew automatically until cancelled, with a reminder e-mail 14 days before each annual renewal. Cancel any time from your Stripe receipt or by writing to admin@qector.store; your licence stays valid until the end of the paid period. Pro Perpetual and the Pilot are one-time payments and never renew."},{q:"What is your refund policy?",a:"14-day money-back guarantee on your first payment of any plan: write to admin@qector.store with your Stripe receipt and we refund it in full. Renewals are not refunded pro rata. Duplicate purchases and charges made in error are always refunded. If a token never arrives or fails to verify, we reissue it at no cost. This does not limit non-waivable statutory rights."},{q:"What does a licence cover?",a:"Internal commercial use by your organisation, including production. Pro and Lab differ in licence tier (Lab raises the code-distance tier to 63) and support level. Pro Perpetual covers every 1.x release of qector-decoder-v3; a new major version such as 2.0 is a new licence. The Pilot is for evaluation (benchmarking, integration testing, threshold studies), not production."},{q:"Is a hosted or customer-facing API covered?",a:"No. Pro and Lab cover internal use on your own infrastructure. As soon as QECTOR sits behind an API, product or service that anyone outside your organisation can reach, that is SaaS or redistribution and needs an Enterprise/OEM agreement. Internal endpoints used only by your own staff are fine. Unsure? Describe the deployment to admin@qector.store."},{q:"Can I redistribute QECTOR inside my product?",a:"Only under an Enterprise/OEM agreement, which covers redistribution, SaaS hosting and hardware bundling. Write to admin@qector.store."},{q:"Do I need a licence for non-commercial research?",a:"No. Personal, academic and other non-commercial use is free under the PolyForm Noncommercial License 1.0.0. Universities, public research organisations, charities and government institutions may also use it free, whatever the source of their funding. A company using QECTOR, including on a contract with a university, needs a paid plan. Academic institutions that want a paid plan anyway, for support or to pass commercial rights to an industry partner, get 40% off Lab with an institutional e-mail."},{q:"What currency are prices in, and is tax included?",a:"Prices are in US dollars and exclude tax. Applicable sales tax, GST/HST or VAT is calculated and added at checkout from your billing address. Businesses can enter a VAT/GST number at checkout."},{q:"Can we get a signed agreement, tax form or security questionnaire?",a:"Yes. For a signed PDF agreement, vendor profile, W-8BEN or equivalent, or a security questionnaire, write to admin@qector.store with your Stripe invoice number. Enterprise agreements are always signed contracts."}],L=[{q:"La licence fonctionne-t-elle sur des machines hors réseau ?",a:"Oui. Une licence est un jeton signé vérifié hors ligne contre une clé publique incluse dans le paquet. Aucun serveur de licence, aucune activation, aucun appel réseau : elle fonctionne sur des systèmes isolés et hors réseau."},{q:"Comment la licence est-elle livrée, et que déverrouille le jeton ?",a:'Par courriel dans les minutes qui suivent le paiement (vérifiez le courrier indésirable, puis écrivez à admin@qector.store avec votre reçu Stripe). Tout le monde installe la même wheel : pip install --upgrade "qector-decoder-v3>=1.0.1,<2". Définissez QECTOR_LICENSE_KEY et QECTOR_LICENSE au jeton. Chaque forfait payant déverrouille le décodage GPU (CUDA/OpenCL) par lots; Labo et Entreprise portent aussi le palier de distance à 63. Le décodage CPU n’est jamais bloqué, et les plafonds de distance ne s’appliquent que si QECTOR_ENFORCE=1.'},{q:"Puis-je l’essayer avant de m’engager ?",a:"Chaque forfait offre une garantie satisfait ou remboursé de 14 jours sur le premier paiement : achetez Pro au mois, testez-le sur vos propres charges, et si ce n’est pas le bon choix, écrivez à admin@qector.store pour un remboursement complet. Pour une évaluation encadrée avec appel d’intégration, prenez le Pilote de 60 jours, entièrement crédité sur Labo."},{q:"Les forfaits se renouvellent-ils automatiquement, et comment annuler ?",a:"Oui. Pro (mensuel ou annuel) et Labo se renouvellent automatiquement jusqu’à annulation, avec un courriel de rappel 14 jours avant chaque renouvellement annuel. Annulez en tout temps depuis votre reçu Stripe ou en écrivant à admin@qector.store; votre licence reste valide jusqu’à la fin de la période payée. Pro Perpétuel et le Pilote sont des paiements uniques et ne se renouvellent jamais."},{q:"Quelle est votre politique de remboursement ?",a:"Garantie satisfait ou remboursé de 14 jours sur votre premier paiement de tout forfait : écrivez à admin@qector.store avec votre reçu Stripe et nous remboursons en entier. Les renouvellements ne sont pas remboursés au prorata. Les achats en double et les frais faits par erreur sont toujours remboursés. Si un jeton n’arrive pas ou ne se vérifie pas, nous le réémettons sans frais. Cela ne limite pas les droits légaux auxquels on ne peut renoncer."},{q:"Que couvre une licence ?",a:"L’usage commercial interne par votre organisation, y compris en production. Pro et Labo diffèrent par le palier de licence (Labo porte le palier de distance à 63) et le niveau de support. Pro Perpétuel couvre toutes les versions 1.x de qector-decoder-v3; une nouvelle version majeure comme 2.0 est une nouvelle licence. Le Pilote sert à l’évaluation (benchmarks, tests d’intégration, études de seuil), pas à la production."},{q:"Une API hébergée ou offerte aux clients est-elle couverte ?",a:"Non. Pro et Labo couvrent l’usage interne sur votre propre infrastructure. Dès que QECTOR se trouve derrière une API, un produit ou un service accessible hors de votre organisation, c’est du SaaS ou de la redistribution, ce qui exige un contrat Entreprise/OEM. Les points d’accès internes réservés à votre personnel sont couverts. En cas de doute, décrivez le déploiement à admin@qector.store."},{q:"Puis-je redistribuer QECTOR dans mon produit ?",a:"Seulement avec un contrat Entreprise/OEM, qui couvre la redistribution, l’hébergement SaaS et le regroupement matériel. Écrivez à admin@qector.store."},{q:"Ai-je besoin d’une licence pour la recherche non commerciale ?",a:"Non. L’usage personnel, académique et non commercial est gratuit sous la licence PolyForm Noncommercial 1.0.0. Les universités, organismes de recherche publics, organismes de bienfaisance et institutions gouvernementales peuvent aussi l’utiliser gratuitement, quelle que soit la source de leur financement. Une entreprise qui utilise QECTOR, y compris dans un contrat avec une université, doit avoir un forfait payant. Les établissements d’enseignement qui veulent tout de même un forfait payant obtiennent 40 % de rabais sur Labo avec un courriel institutionnel."},{q:"En quelle devise sont les prix, et la taxe est-elle incluse ?",a:"Les prix sont en dollars américains, hors taxes. La taxe de vente, TPS/TVH ou TVA applicable est calculée et ajoutée au paiement selon votre adresse de facturation. Les entreprises peuvent saisir un numéro de TPS/TVA au paiement."},{q:"Pouvons-nous obtenir un contrat signé, un formulaire fiscal ou un questionnaire de sécurité ?",a:"Oui. Pour un contrat PDF signé, un profil de fournisseur, un W-8BEN ou équivalent, ou un questionnaire de sécurité, écrivez à admin@qector.store avec votre numéro de facture Stripe. Les contrats Entreprise sont toujours signés."}];export{C as F,j as P,L as a}; diff --git a/assets/faqData-gdKKGDcm.js b/assets/faqData-gdKKGDcm.js deleted file mode 100644 index d0af78f4..00000000 --- a/assets/faqData-gdKKGDcm.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-BiHfrq0e.js";import{L as E}from"./vendor-PiU4YGcH.js";function j({name:u,price:c,period:d="",desc:m,features:s,excluded:p,featured:a=!1,showRibbon:h=!0,featuredLabel:v="Most Popular",accent:n="cyan",ctaLabel:o="Contact Sales",ctaHref:r="/contact",centered:i=!1,className:g=""}){const f=n==="gold"?"border-gold-400/30 neon-border-gold":"border-cyan-300/30 neon-border-cyan",y=n==="gold"?"text-gold-400":"text-cyan-300",x=n==="gold"?"bg-gold-400 text-void":"bg-cyan-300 text-void",b=n==="gold"?"btn-gold":"btn-cyan",q=/^https?:\/\//i.test(r),l=`block w-full text-center py-2.5 rounded-lg font-medium text-sm transition-all ${a?b:"btn-outline"}`;return e.jsxs("div",{className:`card-surface flex flex-col relative ${i?"text-center":""} ${a?f:""} ${g}`,children:[a&&h&&e.jsx("span",{className:`absolute -top-3 left-1/2 -translate-x-1/2 px-3 py-1 text-xs font-bold uppercase tracking-wider rounded-full ${x}`,children:v}),e.jsx("div",{className:"text-muted-foreground text-xs uppercase tracking-wider mb-2",children:u}),e.jsxs("div",{className:"text-primary font-bold text-3xl mb-1",children:[c,e.jsx("span",{className:"text-muted-foreground text-sm font-normal",children:d})]}),e.jsx("p",{className:"text-secondary text-sm mb-4",children:m}),s&&e.jsxs("ul",{className:"space-y-2 flex-1 mb-6",children:[s.map(t=>e.jsxs("li",{className:`flex items-start gap-2 text-sm text-secondary ${i?"text-left":""}`,children:[e.jsx("span",{className:`${y} mt-0.5`,"aria-hidden":"true",children:"✓"}),e.jsxs("span",{children:[e.jsx("span",{className:"sr-only",children:"Included: "}),t]})]},t)),p?.map(t=>e.jsxs("li",{className:`flex items-start gap-2 text-sm text-muted-foreground/70 ${i?"text-left":""}`,children:[e.jsx("span",{className:"text-muted-foreground/60 mt-0.5","aria-hidden":"true",children:"✓"}),e.jsxs("span",{children:[e.jsx("span",{className:"sr-only",children:"Not included: "}),t]})]},t))]}),q?e.jsx("a",{href:r,className:l,rel:"noopener",children:o}):e.jsx(E,{to:r,className:l,children:o})]})}const T=[{q:"How is the license delivered, and does the package change once I have a token?",a:"Automatically, by email, within minutes of payment: if nothing arrives within 10 minutes, check your spam folder, then email admin@qector.store with your Stripe receipt. Everyone installs the same wheel via pip install qector-decoder-v3==1.0.0; there is no separate commercial build. The v1.0.0 tier manager unlocks tier-scoped features from that same token: distance caps of 7, 19, or 63 depending on tier, and GPU batch paths on Enterprise tiers. Set both QECTOR_LICENSE and QECTOR_LICENSE_KEY to the token so the import notice and v1.0.0 tier manager use the same credential. Set QECTOR_SILENT=1 if you also want quiet CI logs. The token verifies offline against a public key embedded in the package, so it works air-gapped and in CI with no license server and no phone-home. There is no hard stop: decoding runs either way. The token plus your Stripe receipt are what procurement and audit need."},{q:"What exactly happens when the 60-day evaluation expires?",a:"The $499 evaluation is a flat, non-recurring 60-day license: it is not a subscription and it does not auto-renew. The token carries a 60-day expiry. After that date your commercial evaluation rights end and the licensing notice returns on import, but nothing is disabled, no code stops working, and your data and results remain yours. To continue commercial use you move to an annual tier. The $499 is 100% creditable toward any annual license purchased within 90 days of your evaluation start: buy Solo/Indie at $1,299/yr within that window and you pay $800, not $1,299. Email admin@qector.store with your Stripe invoice number and we invoice the difference."},{q:"How many seats does each tier cover, and what counts as production?",a:"The $499 evaluation covers unlimited internal seats for 60 days, but it is scoped to evaluation and pilot work: benchmarking, integration testing, threshold studies, and architecture assessment. It does not grant production rights. Annual tiers grant production rights for internal use and are seat-counted: Solo/Indie $1,299/yr (1 named user), Startup/Growth $4,499/yr (up to 10), Professional $11,500/yr (up to 25), Enterprise & OEM custom pricing (unlimited seats and logical qubits, OEM bundling rights, dedicated support engineer, custom builds). A Solo/Indie perpetual license is also available at $3,299 one-time for v3.x (all v3.x patch/minor updates included; major version upgrades such as v4.0 are a new license)."},{q:"Is a hosted or customer-facing API covered by an annual tier?",a:"No. Annual tiers cover internal use: your own team, on your own infrastructure. The moment QECTOR sits behind an API, product, or service that anyone outside your organization can reach, that deployment is SaaS or redistribution and it requires an Enterprise/OEM agreement, regardless of which annual tier you hold. Internal hosted endpoints used only by your own employees are fine under an annual tier. If you are unsure which side of the line you are on, email admin@qector.store and describe the deployment."},{q:"Can I redistribute QECTOR inside my product?",a:"No: standard tiers cover internal use only. Enterprise OEM licenses cover redistribution, SaaS hosting, and hardware bundling. Email admin@qector.store for a custom agreement."},{q:"Do I need a license for non-commercial research?",a:"No. Non-commercial, academic, and personal use is free under the PolyForm Noncommercial License 1.0.0. Only commercial deployment requires a paid tier. The licensing notice on import is informational: it does not restrict non-commercial use, and QECTOR_SILENT=1 suppresses it."},{q:"What currency are prices in, and is tax included?",a:"All prices are in US dollars (USD). Listed prices are exclusive of tax. Stripe calculates and adds any applicable sales tax, GST/HST, or VAT at checkout based on your billing location: Canadian, UK, and EU buyers should expect tax on top of the listed price. If your organization is tax-exempt or has a valid VAT/GST registration number, enter it at checkout, or email admin@qector.store with your Stripe invoice number for a corrected invoice."},{q:"What is your refund policy?",a:"License tokens are delivered immediately on payment, so all sales are final and commercial licenses are non-refundable. That is precisely why the $499 60-day evaluation exists: it is the low-cost, fully creditable way to validate QECTOR against your own workloads before committing to an annual tier. If a token never arrives or fails to verify, that is a delivery fault rather than a refund matter: email admin@qector.store and we will reissue it. This policy does not limit non-waivable statutory rights where they apply. Full terms are on the refund policy page."},{q:"Can we get a signed corporate EULA or tax form?",a:"Yes. If procurement requires a signed PDF agreement, vendor profile, W-8BEN or equivalent tax form, or a security questionnaire, email your request with your Stripe invoice number to admin@qector.store."}],I=[{q:"Comment la licence est-elle livrée, et le paquet change-t-il une fois que j’ai un jeton ?",a:"Automatiquement, par courriel, dans les minutes qui suivent le paiement : si rien n’arrive dans les 10 minutes, vérifiez votre courrier indésirable, puis écrivez à admin@qector.store avec votre reçu Stripe. Tout le monde installe la même wheel via pip install qector-decoder-v3==1.0.0; il n’existe pas de build commercial séparé. Le gestionnaire de palier v1.0.0 déverrouille les fonctionnalités propres à chaque palier à partir de ce même jeton : plafonds de distance de 7, 19 ou 63 selon le palier, et chemins GPU batch sur les paliers Entreprise. Définissez QECTOR_LICENSE et QECTOR_LICENSE_KEY au jeton pour que l’avis d’import et le gestionnaire de palier v1.0.0 utilisent le même jeton. Définissez QECTOR_SILENT=1 si vous voulez aussi des journaux CI silencieux. Le jeton se vérifie hors ligne contre une clé publique embarquée dans le paquet : il fonctionne hors réseau et en CI, sans serveur de licence ni appel maison. Il n’y a pas de blocage : le décodage fonctionne de toute façon. Le jeton et votre reçu Stripe sont ce dont les achats et l’audit ont besoin."},{q:"Que se passe-t-il exactement à l’expiration de l’évaluation de 60 jours ?",a:"L’évaluation à 499 $ est une licence forfaitaire de 60 jours, non récurrente : ce n’est pas un abonnement et elle ne se renouvelle pas automatiquement. Le jeton porte une échéance de 60 jours. Après cette date, vos droits d’évaluation commerciale prennent fin et l’avis de licence réapparaît à l’import, mais rien n’est désactivé, aucun code ne cesse de fonctionner, et vos données et résultats restent à vous. Pour poursuivre un usage commercial, vous passez à un palier annuel. Les 499 $ sont crédités à 100 % vers toute licence annuelle achetée dans les 90 jours suivant le début de votre évaluation : achetez Solo/Indie à 1 299 $/an dans ce délai et vous payez 800 $, pas 1 299 $. Écrivez à admin@qector.store avec votre numéro de facture Stripe et nous facturons la différence."},{q:"Combien de sièges chaque palier couvre-t-il, et qu’est-ce qui compte comme production ?",a:"L’évaluation à 499 $ couvre des sièges internes illimités pendant 60 jours, mais elle est limitée à l’évaluation et aux pilotes : tests de référence (benchmarks), tests d’intégration, études de seuil et évaluation d’architecture. Elle n’accorde pas de droits de production. Les paliers annuels accordent des droits de production pour usage interne et sont comptés par sièges : Solo/Indie 1 299 $/an (1 utilisateur nommé), Startup/Growth 4 499 $/an (jusqu’à 10), Professionnel 11 500 $/an (jusqu’à 25), Entreprise & OEM sur mesure (sièges et qubits logiques illimités, droits de regroupement OEM, ingénieur de support dédié, versions personnalisées). Une licence perpétuelle Solo/Indie est aussi disponible à 3 299 $ paiement unique pour v3.x (toutes les mises à jour mineures et correctives v3.x incluses; les montées de version majeure comme v4.0 sont une nouvelle licence)."},{q:"Une API hébergée ou orientée client est-elle couverte par un palier annuel ?",a:"Non. Les paliers annuels couvrent l’usage interne : votre propre équipe, sur votre propre infrastructure. Dès que QECTOR se trouve derrière une API, un produit ou un service accessible à quiconque hors de votre organisation, c’est du SaaS ou de la redistribution et cela exige un contrat Entreprise/OEM, quel que soit le palier annuel détenu. Les points d’accès hébergés internes utilisés uniquement par vos propres employés sont couverts par un palier annuel. En cas de doute, écrivez à admin@qector.store et décrivez le déploiement."},{q:"Puis-je redistribuer QECTOR dans mon produit ?",a:"Non : les paliers standards couvrent l’usage interne seulement. Les licences Entreprise OEM couvrent la redistribution, l’hébergement SaaS et le regroupement matériel. Écrivez à admin@qector.store pour un contrat sur mesure."},{q:"Ai-je besoin d’une licence pour la recherche non commerciale ?",a:"Non. L’usage non commercial, académique et personnel est gratuit sous la licence PolyForm Noncommercial 1.0.0. Seul le déploiement commercial exige un palier payant. L’avis de licence à l’import est informatif : il ne restreint pas l’usage non commercial, et QECTOR_SILENT=1 le désactive."},{q:"En quelle devise sont les prix, et la taxe est-elle incluse ?",a:"Tous les prix sont en dollars américains (USD). Les prix affichés sont hors taxes. Stripe calcule et ajoute toute taxe de vente, TPS/TVH ou TVA applicable au paiement selon votre adresse de facturation : les acheteurs canadiens, britanniques et européens doivent s’attendre à une taxe en sus du prix affiché. Si votre organisation est exonérée ou possède un numéro d’enregistrement TPS/TVA valide, saisissez-le au paiement, ou écrivez à admin@qector.store avec votre numéro de facture Stripe pour une facture corrigée."},{q:"Quelle est votre politique de remboursement ?",a:"Les jetons de licence sont livrés immédiatement au paiement : toutes les ventes sont donc finales et les licences commerciales ne sont pas remboursables. C’est précisément pourquoi l’évaluation à 499 $ pour 60 jours existe : c’est le moyen économique et entièrement créditable de valider QECTOR sur vos propres charges de travail avant de vous engager sur un palier annuel. Si un jeton n’arrive jamais ou ne se vérifie pas, c’est un défaut de livraison plutôt qu’un sujet de remboursement : écrivez à admin@qector.store et nous le réémettrons. Cette politique ne limite pas les droits statutaires non renonçables là où ils s’appliquent. Les conditions complètes sont sur la page de politique de remboursement."},{q:"Pouvons-nous obtenir un contrat EULA signé ou un formulaire fiscal ?",a:"Oui. Si vos achats exigent un contrat PDF signé, un profil de fournisseur, un W-8BEN ou formulaire fiscal équivalent ou un questionnaire de sécurité, envoyez votre demande avec votre numéro de facture Stripe à admin@qector.store."}];export{T as F,j as P,I as a}; diff --git a/assets/g.png b/assets/g.png deleted file mode 100644 index 5266f345359d6ed0b3ce461d61965397f8fafc4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77302 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

u?V8cp68m4Vuwm?UBR>eA;nZZUEF2?IP%# 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:not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-kbd: #111827;--tw-prose-kbd-shadows: rgb(17 24 39 / 10%);--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-kbd: #fff;--tw-prose-invert-kbd-shadows: rgb(255 255 255 / 10%);--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-cyan{--tw-prose-links: #0891b2;--tw-prose-invert-links: #06b6d4}.prose-invert{--tw-prose-body: var(--tw-prose-invert-body);--tw-prose-headings: var(--tw-prose-invert-headings);--tw-prose-lead: var(--tw-prose-invert-lead);--tw-prose-links: var(--tw-prose-invert-links);--tw-prose-bold: var(--tw-prose-invert-bold);--tw-prose-counters: var(--tw-prose-invert-counters);--tw-prose-bullets: var(--tw-prose-invert-bullets);--tw-prose-hr: var(--tw-prose-invert-hr);--tw-prose-quotes: var(--tw-prose-invert-quotes);--tw-prose-quote-borders: var(--tw-prose-invert-quote-borders);--tw-prose-captions: var(--tw-prose-invert-captions);--tw-prose-kbd: var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows: var(--tw-prose-invert-kbd-shadows);--tw-prose-code: var(--tw-prose-invert-code);--tw-prose-pre-code: var(--tw-prose-invert-pre-code);--tw-prose-pre-bg: var(--tw-prose-invert-pre-bg);--tw-prose-th-borders: var(--tw-prose-invert-th-borders);--tw-prose-td-borders: var(--tw-prose-invert-td-borders)}.btn-cyan{display:inline-flex;align-items:center;justify-content:center;border-radius:calc(var(--radius) + 4px);background-image:linear-gradient(to right,var(--tw-gradient-stops));--tw-gradient-from: #22d3ee var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 211 238 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);--tw-gradient-to: #67e8f9 var(--tw-gradient-to-position);padding:.75rem 1.5rem;font-weight:700;--tw-text-opacity: 1;color:rgb(2 6 23 / var(--tw-text-opacity, 1));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;animation-duration:.3s}.btn-cyan:hover{--tw-gradient-from: #67e8f9 var(--tw-gradient-from-position);--tw-gradient-to: rgb(103 232 249 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);--tw-gradient-to: #a5f3fc var(--tw-gradient-to-position);--tw-shadow: 0 0 24px rgba(103,232,249,.45);--tw-shadow-colored: 0 0 24px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.btn-cyan:active{--tw-scale-x: .97;--tw-scale-y: .97;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.btn-gold{display:inline-flex;align-items:center;justify-content:center;border-radius:calc(var(--radius) + 4px);border-width:1px;border-color:#fbbf2499;background-color:#fbbf240d;padding:.75rem 1.5rem;font-weight:700;--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;animation-duration:.3s}.btn-gold:hover{--tw-border-opacity: 1;border-color:rgb(251 191 36 / var(--tw-border-opacity, 1));background-color:#fbbf241a;--tw-shadow: 0 0 24px rgba(251,191,36,.25);--tw-shadow-colored: 0 0 24px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.btn-gold:active{--tw-scale-x: .97;--tw-scale-y: .97;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.btn-outline{display:inline-flex;align-items:center;justify-content:center;border-radius:calc(var(--radius) + 4px);border-width:1px;--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity, 1));padding:.75rem 1.5rem;color:hsl(var(--secondary));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;animation-duration:.3s}.btn-outline:hover{border-color:#67e8f966;background-color:#ffffff0d;color:hsl(var(--primary))}.btn-outline:active{--tw-scale-x: .97;--tw-scale-y: .97;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.card-surface{border-radius:1rem;border-width:1px;border-color:#1e293bcc;background-color:#0b132966;padding:1.5rem;--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.5s;animation-duration:.5s}.card-surface:hover{border-color:#67e8f94d;--tw-shadow: 0 0 30px rgba(103,232,249,.12);--tw-shadow-colored: 0 0 30px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.card-surface:not(.revealed),.prose:not(.revealed){opacity:0;transform:translateY(30px)}.card-surface.revealed,.prose.revealed{opacity:1;transform:translateY(0);transition:opacity .7s ease-out,transform .7s ease-out}.section-padding{padding-left:1.5rem;padding-right:1.5rem}@media(min-width:640px){.section-padding{padding-left:2rem;padding-right:2rem}}@media(min-width:1024px){.section-padding{padding-left:4rem;padding-right:4rem}}@media(min-width:1280px){.section-padding{padding-left:6rem;padding-right:6rem}}.eyebrow-pill{display:inline-flex;align-items:center;gap:.5rem;border-radius:9999px;border-width:1px;border-color:#67e8f933;background-color:#67e8f91a;padding:.375rem .75rem;font-size:.75rem;line-height:1rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1))}.eyebrow-pill-gold{display:inline-flex;align-items:center;gap:.5rem;border-radius:9999px;border-width:1px;border-color:#fbbf2433;background-color:#fbbf241a;padding:.375rem .75rem;font-size:.75rem;line-height:1rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.link-accent{--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1));text-underline-offset:4px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}.link-accent:hover{--tw-text-opacity: 1;color:rgb(165 243 252 / var(--tw-text-opacity, 1));text-decoration-line:underline}.section-feature{padding-top:5rem;padding-bottom:5rem}@media(min-width:768px){.section-feature{padding-top:7rem;padding-bottom:7rem}}.section-band{padding-top:4rem;padding-bottom:4rem}@media(min-width:768px){.section-band{padding-top:5rem;padding-bottom:5rem}}.section-thin{padding-top:2.5rem;padding-bottom:2.5rem}@media(min-width:768px){.section-thin{padding-top:3rem;padding-bottom:3rem}}.glass-nav{border-width:1px;border-color:#ffffff1a;background-color:#0b1329bf;--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.neon-border-cyan{box-shadow:0 0 24px #67e8f91f,inset 0 0 24px #67e8f90a}.neon-border-gold{box-shadow:0 0 24px #fbbf241f,inset 0 0 24px #fbbf240a}.quantum-grid-bg{background-size:30px 30px;background-image:linear-gradient(to right,rgba(255,255,255,.015) 1px,transparent 1px),linear-gradient(to bottom,rgba(255,255,255,.015) 1px,transparent 1px)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.-bottom-12{bottom:-3rem}.-left-12{left:-3rem}.-left-\[40px\]{left:-40px}.-right-12{right:-3rem}.-top-12{top:-3rem}.-top-3{top:-.75rem}.bottom-0{bottom:0}.bottom-3{bottom:.75rem}.left-0{left:0}.left-1\/2{left:50%}.left-2{left:.5rem}.left-3{left:.75rem}.left-\[-1px\]{left:-1px}.left-\[50\%\]{left:50%}.right-0{right:0}.right-1{right:.25rem}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.top-0{top:0}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-1\/3{top:33.333333%}.top-1\/4{top:25%}.top-24{top:6rem}.top-3{top:.75rem}.top-3\.5{top:.875rem}.top-4{top:1rem}.top-6{top:1.5rem}.top-\[1px\]{top:1px}.top-\[50\%\]{top:50%}.top-\[60\%\]{top:60%}.top-full{top:100%}.isolate{isolation:isolate}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.z-\[1\]{z-index:1}.order-first{order:-9999}.order-last{order:9999}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2 / span 2}.row-start-1{grid-row-start:1}.\!m-0{margin:0!important}.\!my-0{margin-top:0!important;margin-bottom:0!important}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-3\.5{margin-left:.875rem;margin-right:.875rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-4{margin-top:1rem;margin-bottom:1rem}.-ml-4{margin-left:-1rem}.-mt-4{margin-top:-1rem}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.mb-14{margin-bottom:3.5rem}.mb-16{margin-bottom:4rem}.mb-2{margin-bottom:.5rem}.mb-20{margin-bottom:5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-auto{margin-left:auto}.mr-2{margin-right:.5rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-10{margin-top:2.5rem}.mt-16{margin-top:4rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-auto{margin-top:auto}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-row{display:table-row}.grid{display:grid}.contents{display:contents}.hidden{display:none}.aspect-square{aspect-ratio:1 / 1}.aspect-video{aspect-ratio:16 / 9}.size-10{width:2.5rem;height:2.5rem}.size-2{width:.5rem;height:.5rem}.size-2\.5{width:.625rem;height:.625rem}.size-3{width:.75rem;height:.75rem}.size-3\.5{width:.875rem;height:.875rem}.size-4{width:1rem;height:1rem}.size-6{width:1.5rem;height:1.5rem}.size-7{width:1.75rem;height:1.75rem}.size-8{width:2rem;height:2rem}.size-9{width:2.25rem;height:2.25rem}.size-auto{width:auto;height:auto}.size-full{width:100%;height:100%}.h-0\.5{height:.125rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-40{height:10rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-72{height:18rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-96{height:24rem}.h-\[1\.15rem\]{height:1.15rem}.h-\[36rem\]{height:36rem}.h-\[500px\]{height:500px}.h-\[600px\]{height:600px}.h-\[800px\]{height:800px}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-\[var\(--radix-navigation-menu-viewport-height\)\]{height:var(--radix-navigation-menu-viewport-height)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-svh{height:100svh}.max-h-0{max-height:0px}.max-h-\[300px\]{max-height:300px}.max-h-\[400px\]{max-height:400px}.max-h-\[calc\(100dvh-110px\)\]{max-height:calc(100dvh - 110px)}.min-h-0{min-height:0px}.min-h-16{min-height:4rem}.min-h-4{min-height:1rem}.min-h-\[44px\]{min-height:44px}.min-h-\[500px\]{min-height:500px}.min-h-\[60vh\]{min-height:60vh}.min-h-\[80vh\]{min-height:80vh}.min-h-screen{min-height:100vh}.min-h-svh{min-height:100svh}.w-1\.5{width:.375rem}.w-1\/2{width:50%}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-3\/4{width:75%}.w-4{width:1rem}.w-40{width:10rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-96{width:24rem}.w-\[1000px\]{width:1000px}.w-\[100px\]{width:100px}.w-\[1px\]{width:1px}.w-\[36rem\]{width:36rem}.w-\[600px\]{width:600px}.w-\[800px\]{width:800px}.w-\[95\%\]{width:95%}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-10{min-width:2.5rem}.min-w-5{min-width:1.25rem}.min-w-8{min-width:2rem}.min-w-9{min-width:2.25rem}.min-w-\[120px\]{min-width:120px}.min-w-\[12rem\]{min-width:12rem}.min-w-\[140px\]{min-width:140px}.min-w-\[44px\]{min-width:44px}.min-w-\[560px\]{min-width:560px}.min-w-\[640px\]{min-width:640px}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-\[11rem\]{max-width:11rem}.max-w-\[440px\]{max-width:440px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-max{max-width:-moz-max-content;max-width:max-content}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-prose{max-width:65ch}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-full{flex-basis:100%}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-1\/3{--tw-translate-x: -33.333333%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-px{--tw-translate-x: -1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-2{--tw-translate-y: -.5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-\[140\%\]{--tw-translate-y: -140%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-1\/3{--tw-translate-x: 33.333333%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-px{--tw-translate-x: 1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0\.5{--tw-translate-y: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-1\/3{--tw-translate-y: 33.333333%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-2{--tw-translate-y: .5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y: calc(-50% - 2px) ;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-45{--tw-rotate: -45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-45{--tw-rotate: 45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes ping{75%,to{transform:scale(2);opacity:0}}.animate-ping{animation:ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.4}}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-text{-webkit-user-select:text;-moz-user-select:text;user-select:text}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize-none{resize:none}.resize-y{resize:vertical}.scroll-my-1{scroll-margin-top:.25rem;scroll-margin-bottom:.25rem}.scroll-py-1{scroll-padding-top:.25rem;scroll-padding-bottom:.25rem}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-\[0_1fr\]{grid-template-columns:0 1fr}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-items-start{justify-items:start}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-12{gap:3rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-7{gap:1.75rem}.gap-8{gap:2rem}.gap-\[--spacing\(var\(--gap\)\)\]{gap:var(--spacing(var(--gap)))}.gap-x-12{-moz-column-gap:3rem;column-gap:3rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-0\.5{row-gap:.125rem}.gap-y-1{row-gap:.25rem}.gap-y-8{row-gap:2rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem * var(--tw-space-y-reverse))}.space-y-12>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(3rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(3rem * var(--tw-space-y-reverse))}.space-y-14>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(3.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(3.5rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-20>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gridline>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(30 41 59 / var(--tw-divide-opacity, 1))}.divide-gridline\/50>:not([hidden])~:not([hidden]){border-color:#1e293b80}.divide-slate-800\/60>:not([hidden])~:not([hidden]){border-color:#1e293b99}.self-start{align-self:flex-start}.self-center{align-self:center}.self-stretch{align-self:stretch}.justify-self-end{justify-self:end}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-balance{text-wrap:balance}.text-pretty{text-wrap:pretty}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[4px\]{border-radius:4px}.rounded-\[calc\(var\(--radius\)-5px\)\]{border-radius:calc(var(--radius) - 5px)}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-xs{border-radius:calc(var(--radius) - 6px)}.rounded-l-md{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.rounded-r-md{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.rounded-tl-sm{border-top-left-radius:calc(var(--radius) - 4px)}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-4{border-width:4px}.border-y{border-top-width:1px;border-bottom-width:1px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-blue-400\/30{border-color:#60a5fa4d}.border-border{border-color:hsl(var(--border))}.border-cyan-300{--tw-border-opacity: 1;border-color:rgb(103 232 249 / var(--tw-border-opacity, 1))}.border-cyan-300\/10{border-color:#67e8f91a}.border-cyan-300\/20{border-color:#67e8f933}.border-cyan-300\/25{border-color:#67e8f940}.border-cyan-300\/30{border-color:#67e8f94d}.border-cyan-300\/35{border-color:#67e8f959}.border-cyan-300\/40{border-color:#67e8f966}.border-cyan-800\/40{border-color:#155e7566}.border-cyan-800\/50{border-color:#155e7580}.border-cyan-800\/60{border-color:#155e7599}.border-cyan-900\/40{border-color:#164e6366}.border-cyan-900\/50{border-color:#164e6380}.border-cyan-900\/60{border-color:#164e6399}.border-emerald-500\/30{border-color:#10b9814d}.border-gold-400\/20{border-color:#fbbf2433}.border-gold-400\/25{border-color:#fbbf2440}.border-gold-400\/30{border-color:#fbbf244d}.border-gold-400\/60{border-color:#fbbf2499}.border-green-400\/20{border-color:#4ade8033}.border-gridline{--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity, 1))}.border-gridline\/30{border-color:#1e293b4d}.border-gridline\/40{border-color:#1e293b66}.border-gridline\/50{border-color:#1e293b80}.border-gridline\/60{border-color:#1e293b99}.border-input{border-color:hsl(var(--input))}.border-primary{border-color:hsl(var(--primary))}.border-purple-400\/20{border-color:#c084fc33}.border-red-400\/20{border-color:#f8717133}.border-slate-700{--tw-border-opacity: 1;border-color:rgb(51 65 85 / var(--tw-border-opacity, 1))}.border-slate-800{--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity, 1))}.border-slate-800\/60{border-color:#1e293b99}.border-slate-800\/80{border-color:#1e293bcc}.border-slate-800\/90{border-color:#1e293be6}.border-transparent{border-color:transparent}.border-void{--tw-border-opacity: 1;border-color:rgb(2 6 23 / var(--tw-border-opacity, 1))}.border-white\/5{border-color:#ffffff0d}.border-l-transparent{border-left-color:transparent}.border-t-cyan-300{--tw-border-opacity: 1;border-top-color:rgb(103 232 249 / var(--tw-border-opacity, 1))}.border-t-transparent{border-top-color:transparent}.bg-\[\#050b14\]{--tw-bg-opacity: 1;background-color:rgb(5 11 20 / var(--tw-bg-opacity, 1))}.bg-\[\#0b1329\]\/40{background-color:#0b132966}.bg-accent{background-color:hsl(var(--accent))}.bg-background{background-color:hsl(var(--background))}.bg-black\/50{background-color:#00000080}.bg-blue-500\/10{background-color:#3b82f61a}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-cyan-300{--tw-bg-opacity: 1;background-color:rgb(103 232 249 / var(--tw-bg-opacity, 1))}.bg-cyan-300\/10{background-color:#67e8f91a}.bg-cyan-300\/5{background-color:#67e8f90d}.bg-cyan-400{--tw-bg-opacity: 1;background-color:rgb(34 211 238 / var(--tw-bg-opacity, 1))}.bg-cyan-400\/10{background-color:#22d3ee1a}.bg-cyan-400\/5{background-color:#22d3ee0d}.bg-cyan-900\/10{background-color:#164e631a}.bg-cyan-950\/50{background-color:#08334480}.bg-cyan-950\/60{background-color:#08334499}.bg-cyan-950\/80{background-color:#083344cc}.bg-destructive{--tw-bg-opacity: 1;background-color:hsl(var(--destructive) / var(--tw-bg-opacity, 1))}.bg-emerald-950\/50{background-color:#022c2280}.bg-foreground{background-color:hsl(var(--foreground))}.bg-gold-400{--tw-bg-opacity: 1;background-color:rgb(251 191 36 / var(--tw-bg-opacity, 1))}.bg-gold-400\/10{background-color:#fbbf241a}.bg-gold-400\/5{background-color:#fbbf240d}.bg-green-400{--tw-bg-opacity: 1;background-color:rgb(74 222 128 / var(--tw-bg-opacity, 1))}.bg-green-400\/10{background-color:#4ade801a}.bg-green-400\/5{background-color:#4ade800d}.bg-green-500\/80{background-color:#22c55ecc}.bg-gridline{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-input{background-color:hsl(var(--input))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted-foreground{background-color:hsl(var(--muted-foreground))}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/20{background-color:hsl(var(--primary) / .2)}.bg-purple-400\/10{background-color:#c084fc1a}.bg-red-400\/5{background-color:#f871710d}.bg-red-500\/80{background-color:#ef4444cc}.bg-secondary{background-color:hsl(var(--secondary))}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-slate-800\/20{background-color:#1e293b33}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-slate-900\/40{background-color:#0f172a66}.bg-slate-900\/50{background-color:#0f172a80}.bg-slate-900\/90{background-color:#0f172ae6}.bg-slate-950{--tw-bg-opacity: 1;background-color:rgb(2 6 23 / var(--tw-bg-opacity, 1))}.bg-slate-950\/90{background-color:#020617e6}.bg-surface{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-surface\/10{background-color:#0f172a1a}.bg-surface\/20{background-color:#0f172a33}.bg-surface\/30{background-color:#0f172a4d}.bg-surface\/50{background-color:#0f172a80}.bg-surface\/70{background-color:#0f172ab3}.bg-surface\/90{background-color:#0f172ae6}.bg-transparent{background-color:transparent}.bg-void{--tw-bg-opacity: 1;background-color:rgb(2 6 23 / var(--tw-bg-opacity, 1))}.bg-void\/30{background-color:#0206174d}.bg-void\/50{background-color:#02061780}.bg-void\/70{background-color:#020617b3}.bg-void\/80{background-color:#020617cc}.bg-void\/90{background-color:#020617e6}.bg-void\/95{background-color:#020617f2}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-yellow-500\/80{background-color:#eab308cc}.bg-\[radial-gradient\(ellipse_at_top\,_var\(--tw-gradient-stops\)\)\]{background-image:radial-gradient(ellipse at top,var(--tw-gradient-stops))}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-cyan-300{--tw-gradient-from: #67e8f9 var(--tw-gradient-from-position);--tw-gradient-to: rgb(103 232 249 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-300\/10{--tw-gradient-from: rgb(103 232 249 / .1) var(--tw-gradient-from-position);--tw-gradient-to: rgb(103 232 249 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-300\/5{--tw-gradient-from: rgb(103 232 249 / .05) var(--tw-gradient-from-position);--tw-gradient-to: rgb(103 232 249 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-300\/80{--tw-gradient-from: rgb(103 232 249 / .8) var(--tw-gradient-from-position);--tw-gradient-to: rgb(103 232 249 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-400\/5{--tw-gradient-from: rgb(34 211 238 / .05) var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 211 238 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-500\/\[0\.04\]{--tw-gradient-from: rgb(6 182 212 / .04) var(--tw-gradient-from-position);--tw-gradient-to: rgb(6 182 212 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-900\/20{--tw-gradient-from: rgb(22 78 99 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(22 78 99 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-950\/40{--tw-gradient-from: rgb(8 51 68 / .4) var(--tw-gradient-from-position);--tw-gradient-to: rgb(8 51 68 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-gold-400\/5{--tw-gradient-from: rgb(251 191 36 / .05) var(--tw-gradient-from-position);--tw-gradient-to: rgb(251 191 36 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-400\/5{--tw-gradient-from: rgb(74 222 128 / .05) var(--tw-gradient-from-position);--tw-gradient-to: rgb(74 222 128 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-950{--tw-gradient-from: #020617 var(--tw-gradient-from-position);--tw-gradient-to: rgb(2 6 23 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-surface\/50{--tw-gradient-from: rgb(15 23 42 / .5) var(--tw-gradient-from-position);--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-void\/60{--tw-gradient-from: rgb(2 6 23 / .6) var(--tw-gradient-from-position);--tw-gradient-to: rgb(2 6 23 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-white{--tw-gradient-from: #fff var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-gold-400\/30{--tw-gradient-to: rgb(251 191 36 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(251 191 36 / .3) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-surface{--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #0f172a var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-surface\/30{--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(15 23 42 / .3) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-surface\/40{--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(15 23 42 / .4) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-surface\/60{--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(15 23 42 / .6) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-transparent{--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), transparent var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-void{--tw-gradient-to: rgb(2 6 23 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #020617 var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-void\/25{--tw-gradient-to: rgb(2 6 23 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(2 6 23 / .25) var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-cyan-300\/10{--tw-gradient-to: rgb(103 232 249 / .1) var(--tw-gradient-to-position)}.to-cyan-400{--tw-gradient-to: #22d3ee var(--tw-gradient-to-position)}.to-cyan-950\/20{--tw-gradient-to: rgb(8 51 68 / .2) var(--tw-gradient-to-position)}.to-slate-400{--tw-gradient-to: #94a3b8 var(--tw-gradient-to-position)}.to-slate-950{--tw-gradient-to: #020617 var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to: transparent var(--tw-gradient-to-position)}.to-void{--tw-gradient-to: #020617 var(--tw-gradient-to-position)}.to-white\/70{--tw-gradient-to: rgb(255 255 255 / .7) var(--tw-gradient-to-position)}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.fill-current{fill:currentColor}.fill-foreground{fill:hsl(var(--foreground))}.fill-primary{fill:hsl(var(--primary))}.object-cover{-o-object-fit:cover;object-fit:cover}.\!p-5{padding:1.25rem!important}.p-0{padding:0}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-12{padding:3rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-3\.5{padding:.875rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[3px\]{padding:3px}.p-px{padding:1px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-24{padding-top:6rem;padding-bottom:6rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-10{padding-bottom:2.5rem}.pb-20{padding-bottom:5rem}.pb-24{padding-bottom:6rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-5{padding-left:1.25rem}.pl-8{padding-left:2rem}.pr-1{padding-right:.25rem}.pr-14{padding-right:3.5rem}.pr-2{padding-right:.5rem}.pr-2\.5{padding-right:.625rem}.pr-3{padding-right:.75rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-0\.5{padding-top:.125rem}.pt-12{padding-top:3rem}.pt-2{padding-top:.5rem}.pt-20{padding-top:5rem}.pt-24{padding-top:6rem}.pt-3{padding-top:.75rem}.pt-32{padding-top:8rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.align-middle{vertical-align:middle}.font-mono{font-family:JetBrains Mono,Fira Code,monospace}.font-sans{font-family:Inter,system-ui,-apple-system,sans-serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-8xl{font-size:6rem;line-height:1}.text-\[0\.65rem\]{font-size:.65rem}.text-\[0\.8rem\]{font-size:.8rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-sm\/relaxed{font-size:.875rem;line-height:1.625}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-\[1\.05\]{line-height:1.05}.leading-\[1\.1\]{line-height:1.1}.leading-none{line-height:1}.leading-normal{line-height:1.5}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-\[0\.2em\]{letter-spacing:.2em}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-accent-foreground{color:hsl(var(--accent-foreground))}.text-background{color:hsl(var(--background))}.text-blue-300{--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-current{color:currentColor}.text-cyan-200{--tw-text-opacity: 1;color:rgb(165 243 252 / var(--tw-text-opacity, 1))}.text-cyan-300{--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1))}.text-cyan-300\/20{color:#67e8f933}.text-cyan-300\/80{color:#67e8f9cc}.text-cyan-400{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.text-destructive{--tw-text-opacity: 1;color:hsl(var(--destructive) / var(--tw-text-opacity, 1))}.text-emerald-400{--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.text-foreground{color:hsl(var(--foreground))}.text-gold-200\/60{color:#fde68a99}.text-gold-300{--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.text-gold-400{--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.text-gold-400\/60{color:#fbbf2499}.text-gold-400\/80{color:#fbbf24cc}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/60{color:hsl(var(--muted-foreground) / .6)}.text-muted-foreground\/70{color:hsl(var(--muted-foreground) / .7)}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-purple-400{--tw-text-opacity: 1;color:rgb(192 132 252 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-secondary{color:hsl(var(--secondary))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-secondary\/80{color:hsl(var(--secondary) / .8)}.text-secondary\/90{color:hsl(var(--secondary) / .9)}.text-slate-100{--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity, 1))}.text-slate-200{--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity, 1))}.text-slate-300{--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity, 1))}.text-slate-400{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity, 1))}.text-slate-50{--tw-text-opacity: 1;color:rgb(248 250 252 / var(--tw-text-opacity, 1))}.text-slate-950{--tw-text-opacity: 1;color:rgb(2 6 23 / var(--tw-text-opacity, 1))}.text-transparent{color:transparent}.text-void{--tw-text-opacity: 1;color:rgb(2 6 23 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-white\/90{color:#ffffffe6}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.placeholder-cyan-300\/60::-moz-placeholder{color:#67e8f999}.placeholder-cyan-300\/60::placeholder{color:#67e8f999}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow: 0 0 0 1px hsl(var(--sidebar-border));--tw-shadow-colored: 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_12px_rgba\(103\,232\,249\,0\.35\)\]{--tw-shadow: 0 0 12px rgba(103,232,249,.35);--tw-shadow-colored: 0 0 12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_8px_rgba\(103\,232\,249\,0\.5\)\]{--tw-shadow: 0 0 8px rgba(103,232,249,.5);--tw-shadow-colored: 0 0 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_8px_rgba\(103\,232\,249\,0\.8\)\]{--tw-shadow: 0 0 8px rgba(103,232,249,.8);--tw-shadow-colored: 0 0 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-deep{--tw-shadow: 0 25px 50px -12px rgba(0, 0, 0, .5);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xs{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-cyan-300\/20{--tw-shadow-color: rgb(103 232 249 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-cyan-400\/20{--tw-shadow-color: rgb(34 211 238 / .2);--tw-shadow: var(--tw-shadow-colored)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-ring\/50{--tw-ring-color: hsl(var(--ring) / .5)}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.blur-3xl{--tw-blur: blur(64px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-\[100px\]{--tw-blur: blur(100px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-\[120px\]{--tw-blur: blur(120px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow{--tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / .1)) drop-shadow(0 1px 1px rgb(0 0 0 / .06));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-md{--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[left\,right\,width\]{transition-property:left,right,width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[margin\,opacity\]{transition-property:margin,opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\,height\,padding\]{transition-property:width,height,padding;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\]{transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-none{transition-property:none}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-1000{transition-duration:1s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-700{transition-duration:.7s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{transition-timing-function:linear}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity, 1);transform:translate3d(var(--tw-enter-translate-x, 0),var(--tw-enter-translate-y, 0),0) scale3d(var(--tw-enter-scale, 1),var(--tw-enter-scale, 1),var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity, 1);transform:translate3d(var(--tw-exit-translate-x, 0),var(--tw-exit-translate-y, 0),0) scale3d(var(--tw-exit-scale, 1),var(--tw-exit-scale, 1),var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0))}}.animate-in{animation-name:enter;animation-duration:.15s;--tw-enter-opacity: initial;--tw-enter-scale: initial;--tw-enter-rotate: initial;--tw-enter-translate-x: initial;--tw-enter-translate-y: initial}.fade-in,.fade-in-0{--tw-enter-opacity: 0}.zoom-in-95{--tw-enter-scale: .95}.slide-in-from-bottom-8{--tw-enter-translate-y: 2rem}.duration-100{animation-duration:.1s}.duration-1000{animation-duration:1s}.duration-200{animation-duration:.2s}.duration-300{animation-duration:.3s}.duration-500{animation-duration:.5s}.duration-700{animation-duration:.7s}.ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{animation-timing-function:linear}.ease-out{animation-timing-function:cubic-bezier(0,0,.2,1)}.running{animation-play-state:running}.animate-pulse-dot{animation:pulse-dot 2s ease-in-out infinite}.\[--cell-size\:--spacing\(8\)\]{--cell-size: var(--spacing(8))}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.3}}@keyframes gradient-xy{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:#020617}::-webkit-scrollbar-thumb{background:#1e293b;border-radius:5px;border:2px solid #020617}::-webkit-scrollbar-thumb:hover{background:#334155}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.card-surface,.prose{opacity:1;transform:none;transition:none}}@media(forced-colors:active){.text-gradient-cyan,.text-gradient-gold{color:CanvasText!important}}.marker\:text-cyan-300\/60 *::marker{color:#67e8f999}.marker\:text-cyan-300\/60::marker{color:#67e8f999}.selection\:bg-cyan-400\/30 *::-moz-selection{background-color:#22d3ee4d}.selection\:bg-cyan-400\/30 *::selection{background-color:#22d3ee4d}.selection\:bg-primary *::-moz-selection{background-color:hsl(var(--primary))}.selection\:bg-primary *::selection{background-color:hsl(var(--primary))}.selection\:text-primary-foreground *::-moz-selection{color:hsl(var(--primary-foreground))}.selection\:text-primary-foreground *::selection{color:hsl(var(--primary-foreground))}.selection\:bg-cyan-400\/30::-moz-selection{background-color:#22d3ee4d}.selection\:bg-cyan-400\/30::selection{background-color:#22d3ee4d}.selection\:bg-primary::-moz-selection{background-color:hsl(var(--primary))}.selection\:bg-primary::selection{background-color:hsl(var(--primary))}.selection\:text-primary-foreground::-moz-selection{color:hsl(var(--primary-foreground))}.selection\:text-primary-foreground::selection{color:hsl(var(--primary-foreground))}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:1.75rem}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);inset:-.5rem}.after\:inset-y-0:after{content:var(--tw-content);top:0;bottom:0}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:w-1:after{content:var(--tw-content);width:.25rem}.after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.after\:-translate-x-1\/2:after{content:var(--tw-content);--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.first\:rounded-l-md:first-child{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.first\:border-l:first-child{border-left-width:1px}.last\:mt-0:last-child{margin-top:0}.last\:rounded-r-md:last-child{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.last\:border-0:last-child{border-width:0px}.last\:border-b-0:last-child{border-bottom-width:0px}.hover\:border-cyan-300\/30:hover{border-color:#67e8f94d}.hover\:border-cyan-300\/40:hover{border-color:#67e8f966}.hover\:border-cyan-400\/30:hover{border-color:#22d3ee4d}.hover\:border-cyan-400\/40:hover{border-color:#22d3ee66}.hover\:border-cyan-500\/30:hover{border-color:#06b6d44d}.hover\:border-cyan-500\/40:hover{border-color:#06b6d466}.hover\:border-red-900\/30:hover{border-color:#7f1d1d4d}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-cyan-200:hover{--tw-bg-opacity: 1;background-color:rgb(165 243 252 / var(--tw-bg-opacity, 1))}.hover\:bg-cyan-300:hover{--tw-bg-opacity: 1;background-color:rgb(103 232 249 / var(--tw-bg-opacity, 1))}.hover\:bg-cyan-300\/10:hover{background-color:#67e8f91a}.hover\:bg-cyan-300\/20:hover{background-color:#67e8f933}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}.hover\:bg-gold-400\/10:hover{background-color:#fbbf241a}.hover\:bg-gold-400\/20:hover{background-color:#fbbf2433}.hover\:bg-green-400\/20:hover{background-color:#4ade8033}.hover\:bg-muted:hover{background-color:hsl(var(--muted))}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-red-950\/20:hover{background-color:#450a0a33}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:bg-slate-800:hover{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.hover\:bg-slate-800\/50:hover{background-color:#1e293b80}.hover\:bg-slate-900\/40:hover{background-color:#0f172a66}.hover\:bg-surface:hover{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.hover\:bg-surface\/20:hover{background-color:#0f172a33}.hover\:bg-surface\/30:hover{background-color:#0f172a4d}.hover\:bg-surface\/40:hover{background-color:#0f172a66}.hover\:bg-surface\/60:hover{background-color:#0f172a99}.hover\:bg-white\/5:hover{background-color:#ffffff0d}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-cyan-100:hover{--tw-text-opacity: 1;color:rgb(207 250 254 / var(--tw-text-opacity, 1))}.hover\:text-cyan-200:hover{--tw-text-opacity: 1;color:rgb(165 243 252 / var(--tw-text-opacity, 1))}.hover\:text-cyan-300:hover{--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1))}.hover\:text-emerald-300:hover{--tw-text-opacity: 1;color:rgb(110 231 183 / var(--tw-text-opacity, 1))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-muted-foreground:hover{color:hsl(var(--muted-foreground))}.hover\:text-primary:hover{color:hsl(var(--primary))}.hover\:text-red-400:hover{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.hover\:text-slate-200:hover{--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover{--tw-shadow: 0 0 0 1px hsl(var(--sidebar-accent));--tw-shadow-colored: 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:ring-4:hover{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:not-sr-only:focus{position:static;width:auto;height:auto;padding:0;margin:0;overflow:visible;clip:auto;white-space:normal}.focus\:fixed:focus{position:fixed}.focus\:left-4:focus{left:1rem}.focus\:top-4:focus{top:1rem}.focus\:z-10:focus{z-index:10}.focus\:z-\[100\]:focus{z-index:100}.focus\:rounded-lg:focus{border-radius:var(--radius)}.focus\:border-cyan-300\/50:focus{border-color:#67e8f980}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:bg-cyan-300:focus{--tw-bg-opacity: 1;background-color:rgb(103 232 249 / var(--tw-bg-opacity, 1))}.focus\:px-4:focus{padding-left:1rem;padding-right:1rem}.focus\:py-2:focus{padding-top:.5rem;padding-bottom:.5rem}.focus\:font-semibold:focus{font-weight:600}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:text-void:focus{--tw-text-opacity: 1;color:rgb(2 6 23 / var(--tw-text-opacity, 1))}.focus\:opacity-100:focus{opacity:1}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border-ring:focus-visible{border-color:hsl(var(--ring))}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:outline-1:focus-visible{outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:hsl(var(--ring))}.focus-visible\:ring-0:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-4:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-cyan-300:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(103 232 249 / var(--tw-ring-opacity, 1))}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color: hsl(var(--destructive) / .2)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color: hsl(var(--ring) / .5)}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width: 1px}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-cyan-300\/20:disabled{background-color:#67e8f933}.disabled\:text-muted\/20:disabled{color:hsl(var(--muted) / .2)}.disabled\:text-void\/40:disabled{color:#02061766}.disabled\:opacity-50:disabled{opacity:.5}.group\/menu-item:focus-within .group-focus-within\/menu-item\:opacity-100{opacity:1}.group:hover .group-hover\:translate-x-0\.5{--tw-translate-x: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:translate-x-1{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:border-cyan-300\/30{border-color:#67e8f94d}.group:hover .group-hover\:bg-cyan-300\/20{background-color:#67e8f933}.group:hover .group-hover\:fill-cyan-300{fill:#67e8f9}.group:hover .group-hover\:stroke-cyan-200{stroke:#a5f3fc}.group:hover .group-hover\:stroke-cyan-300\/40{stroke:#67e8f966}.group:hover .group-hover\:text-cyan-200{--tw-text-opacity: 1;color:rgb(165 243 252 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:text-cyan-300{--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1))}.group\/menu-item:hover .group-hover\/menu-item\:opacity-100,.group:hover .group-hover\:opacity-100{opacity:1}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-50{opacity:.5}.has-\[\>button\]\:ml-\[-0\.45rem\]:has(>button){margin-left:-.45rem}.has-\[\>button\]\:mr-\[-0\.45rem\]:has(>button){margin-right:-.45rem}.has-\[\>kbd\]\:ml-\[-0\.35rem\]:has(>kbd){margin-left:-.35rem}.has-\[\>kbd\]\:mr-\[-0\.35rem\]:has(>kbd){margin-right:-.35rem}.has-\[\>\[data-align\=block-end\]\]\:h-auto:has(>[data-align=block-end]){height:auto}.has-\[\>\[data-align\=block-start\]\]\:h-auto:has(>[data-align=block-start]){height:auto}.has-\[\>textarea\]\:h-auto:has(>textarea){height:auto}.has-\[\>\[data-slot\=field\]\]\:w-full:has(>[data-slot=field]){width:100%}.has-\[\>svg\]\:grid-cols-\[calc\(var\(--spacing\)\*4\)_1fr\]:has(>svg){grid-template-columns:calc(var(--spacing) * 4) 1fr}.has-\[\>\[data-align\=block-end\]\]\:flex-col:has(>[data-align=block-end]){flex-direction:column}.has-\[\>\[data-align\=block-start\]\]\:flex-col:has(>[data-align=block-start]){flex-direction:column}.has-\[\>\[data-slot\=field\]\]\:flex-col:has(>[data-slot=field]){flex-direction:column}.has-\[\>\[data-slot\=field-content\]\]\:items-start:has(>[data-slot=field-content]){align-items:flex-start}.has-\[\>\[data-slot\=button-group\]\]\:gap-2:has(>[data-slot=button-group]){gap:.5rem}.has-\[\>\[data-slot\=checkbox-group\]\]\:gap-3:has(>[data-slot=checkbox-group]){gap:.75rem}.has-\[\>\[data-slot\=radio-group\]\]\:gap-3:has(>[data-slot=radio-group]){gap:.75rem}.has-\[\>svg\]\:gap-x-3:has(>svg){-moz-column-gap:.75rem;column-gap:.75rem}.has-\[\>\[data-slot\=field\]\]\:rounded-md:has(>[data-slot=field]){border-radius:calc(var(--radius) - 2px)}.has-\[\>\[data-slot\=field\]\]\:border:has(>[data-slot=field]){border-width:1px}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:border-ring:has([data-slot=input-group-control]:focus-visible){border-color:hsl(var(--ring))}.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:border-destructive:has([data-slot][aria-invalid=true]){--tw-border-opacity: 1;border-color:hsl(var(--destructive) / var(--tw-border-opacity, 1))}.has-\[\>svg\]\:p-0:has(>svg){padding:0}.has-\[\>svg\]\:px-2:has(>svg){padding-left:.5rem;padding-right:.5rem}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-left:.625rem;padding-right:.625rem}.has-\[\>svg\]\:px-3:has(>svg){padding-left:.75rem;padding-right:.75rem}.has-\[\>svg\]\:px-4:has(>svg){padding-left:1rem;padding-right:1rem}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-\[3px\]:has([data-slot=input-group-control]:focus-visible){--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-ring\/50:has([data-slot=input-group-control]:focus-visible){--tw-ring-color: hsl(var(--ring) / .5)}.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/20:has([data-slot][aria-invalid=true]){--tw-ring-color: hsl(var(--destructive) / .2)}.group\/item:has([data-slot=item-description]) .group-has-\[\[data-slot\=item-description\]\]\/item\:translate-y-0\.5{--tw-translate-y: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group\/item:has([data-slot=item-description]) .group-has-\[\[data-slot\=item-description\]\]\/item\:self-start{align-self:flex-start}.group\/field:has([data-orientation=horizontal]) .group-has-\[\[data-orientation\=horizontal\]\]\/field\:text-balance{text-wrap:balance}.group\/input-group:has(>input) .group-has-\[\>input\]\/input-group\:pb-2\.5{padding-bottom:.625rem}.group\/input-group:has(>input) .group-has-\[\>input\]\/input-group\:pt-2\.5{padding-top:.625rem}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-selected\:text-muted-foreground[aria-selected=true]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true],.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[vaul-drawer-direction\=bottom\]\:inset-x-0[data-vaul-drawer-direction=bottom]{left:0;right:0}.data-\[vaul-drawer-direction\=left\]\:inset-y-0[data-vaul-drawer-direction=left],.data-\[vaul-drawer-direction\=right\]\:inset-y-0[data-vaul-drawer-direction=right]{top:0;bottom:0}.data-\[vaul-drawer-direction\=top\]\:inset-x-0[data-vaul-drawer-direction=top]{left:0;right:0}.data-\[vaul-drawer-direction\=bottom\]\:bottom-0[data-vaul-drawer-direction=bottom]{bottom:0}.data-\[vaul-drawer-direction\=left\]\:left-0[data-vaul-drawer-direction=left]{left:0}.data-\[vaul-drawer-direction\=right\]\:right-0[data-vaul-drawer-direction=right]{right:0}.data-\[vaul-drawer-direction\=top\]\:top-0[data-vaul-drawer-direction=top]{top:0}.data-\[active\=true\]\:z-10[data-active=true]{z-index:10}.data-\[vaul-drawer-direction\=bottom\]\:mt-24[data-vaul-drawer-direction=bottom]{margin-top:6rem}.data-\[vaul-drawer-direction\=top\]\:mb-24[data-vaul-drawer-direction=top]{margin-bottom:6rem}.data-\[orientation\=horizontal\]\:h-1\.5[data-orientation=horizontal]{height:.375rem}.data-\[orientation\=horizontal\]\:h-full[data-orientation=horizontal]{height:100%}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=vertical\]\:h-auto[data-orientation=vertical]{height:auto}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[panel-group-direction\=vertical\]\:h-px[data-panel-group-direction=vertical]{height:1px}.data-\[size\=default\]\:h-9[data-size=default]{height:2.25rem}.data-\[size\=sm\]\:h-8[data-size=sm]{height:2rem}.data-\[vaul-drawer-direction\=bottom\]\:max-h-\[80vh\][data-vaul-drawer-direction=bottom],.data-\[vaul-drawer-direction\=top\]\:max-h-\[80vh\][data-vaul-drawer-direction=top]{max-height:80vh}.data-\[orientation\=vertical\]\:min-h-44[data-orientation=vertical]{min-height:11rem}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:w-1\.5[data-orientation=vertical]{width:.375rem}.data-\[orientation\=vertical\]\:w-auto[data-orientation=vertical]{width:auto}.data-\[orientation\=vertical\]\:w-full[data-orientation=vertical]{width:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[panel-group-direction\=vertical\]\:w-full[data-panel-group-direction=vertical]{width:100%}.data-\[vaul-drawer-direction\=left\]\:w-3\/4[data-vaul-drawer-direction=left],.data-\[vaul-drawer-direction\=right\]\:w-3\/4[data-vaul-drawer-direction=right]{width:75%}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=checked\]\:translate-x-\[calc\(100\%-2px\)\][data-state=checked]{--tw-translate-x: calc(100% - 2px) ;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes accordion-up{0%{height:var(--radix-accordion-content-height)}to{height:0}}.data-\[state\=closed\]\:animate-accordion-up[data-state=closed]{animation:accordion-up .2s ease-out}@keyframes accordion-down{0%{height:0}to{height:var(--radix-accordion-content-height)}}.data-\[state\=open\]\:animate-accordion-down[data-state=open]{animation:accordion-down .2s ease-out}.data-\[orientation\=vertical\]\:flex-col[data-orientation=vertical],.data-\[panel-group-direction\=vertical\]\:flex-col[data-panel-group-direction=vertical]{flex-direction:column}.data-\[slot\=checkbox-group\]\:gap-3[data-slot=checkbox-group]{gap:.75rem}.data-\[range-end\=true\]\:rounded-md[data-range-end=true]{border-radius:calc(var(--radius) - 2px)}.data-\[range-middle\=true\]\:rounded-none[data-range-middle=true]{border-radius:0}.data-\[range-start\=true\]\:rounded-md[data-range-start=true]{border-radius:calc(var(--radius) - 2px)}.data-\[selected\=true\]\:rounded-none[data-selected=true],.data-\[spacing\=0\]\:rounded-none[data-spacing="0"]{border-radius:0}.data-\[range-end\=true\]\:rounded-r-md[data-range-end=true]{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.data-\[range-start\=true\]\:rounded-l-md[data-range-start=true]{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.data-\[vaul-drawer-direction\=bottom\]\:rounded-t-lg[data-vaul-drawer-direction=bottom]{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.data-\[vaul-drawer-direction\=top\]\:rounded-b-lg[data-vaul-drawer-direction=top]{border-bottom-right-radius:var(--radius);border-bottom-left-radius:var(--radius)}.data-\[spacing\=0\]\:data-\[variant\=outline\]\:border-l-0[data-variant=outline][data-spacing="0"]{border-left-width:0px}.data-\[vaul-drawer-direction\=bottom\]\:border-t[data-vaul-drawer-direction=bottom]{border-top-width:1px}.data-\[vaul-drawer-direction\=left\]\:border-r[data-vaul-drawer-direction=left]{border-right-width:1px}.data-\[vaul-drawer-direction\=right\]\:border-l[data-vaul-drawer-direction=right]{border-left-width:1px}.data-\[vaul-drawer-direction\=top\]\:border-b[data-vaul-drawer-direction=top]{border-bottom-width:1px}.data-\[active\=true\]\:border-ring[data-active=true]{border-color:hsl(var(--ring))}.data-\[state\=checked\]\:border-primary[data-state=checked]{border-color:hsl(var(--primary))}.data-\[active\=true\]\:bg-accent\/50[data-active=true]{background-color:hsl(var(--accent) / .5)}.data-\[range-end\=true\]\:bg-primary[data-range-end=true]{background-color:hsl(var(--primary))}.data-\[range-middle\=true\]\:bg-accent[data-range-middle=true]{background-color:hsl(var(--accent))}.data-\[range-start\=true\]\:bg-primary[data-range-start=true],.data-\[selected-single\=true\]\:bg-primary[data-selected-single=true]{background-color:hsl(var(--primary))}.data-\[selected\=true\]\:bg-accent[data-selected=true]{background-color:hsl(var(--accent))}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\[state\=on\]\:bg-accent[data-state=on],.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=open\]\:bg-accent\/50[data-state=open]{background-color:hsl(var(--accent) / .5)}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:hsl(var(--secondary))}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:hsl(var(--input))}.data-\[inset\]\:pl-8[data-inset]{padding-left:2rem}.data-\[variant\=label\]\:text-sm[data-variant=label]{font-size:.875rem;line-height:1.25rem}.data-\[variant\=legend\]\:text-base[data-variant=legend]{font-size:1rem;line-height:1.5rem}.data-\[active\=true\]\:font-medium[data-active=true]{font-weight:500}.data-\[active\=true\]\:text-accent-foreground[data-active=true]{color:hsl(var(--accent-foreground))}.data-\[error\=true\]\:text-destructive[data-error=true],.data-\[invalid\=true\]\:text-destructive[data-invalid=true]{--tw-text-opacity: 1;color:hsl(var(--destructive) / var(--tw-text-opacity, 1))}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:hsl(var(--muted-foreground))}.data-\[range-end\=true\]\:text-primary-foreground[data-range-end=true]{color:hsl(var(--primary-foreground))}.data-\[range-middle\=true\]\:text-accent-foreground[data-range-middle=true]{color:hsl(var(--accent-foreground))}.data-\[range-start\=true\]\:text-primary-foreground[data-range-start=true],.data-\[selected-single\=true\]\:text-primary-foreground[data-selected-single=true]{color:hsl(var(--primary-foreground))}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:hsl(var(--accent-foreground))}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:hsl(var(--primary-foreground))}.data-\[state\=on\]\:text-accent-foreground[data-state=on],.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:hsl(var(--accent-foreground))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[variant\=destructive\]\:text-destructive[data-variant=destructive]{--tw-text-opacity: 1;color:hsl(var(--destructive) / var(--tw-text-opacity, 1))}.data-\[disabled\=true\]\:opacity-50[data-disabled=true],.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=open\]\:opacity-100[data-state=open]{opacity:1}.data-\[spacing\=0\]\:shadow-none[data-spacing="0"]{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[spacing\=default\]\:data-\[variant\=outline\]\:shadow-xs[data-variant=outline][data-spacing=default],.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[active\=true\]\:ring-\[3px\][data-active=true]{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.data-\[active\=true\]\:ring-ring\/50[data-active=true]{--tw-ring-color: hsl(var(--ring) / .5)}.data-\[state\=closed\]\:duration-300[data-state=closed]{transition-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{transition-duration:.5s}.data-\[motion\^\=from-\]\:animate-in[data-motion^=from-],.data-\[state\=open\]\:animate-in[data-state=open],.data-\[state\=visible\]\:animate-in[data-state=visible]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity: initial;--tw-enter-scale: initial;--tw-enter-rotate: initial;--tw-enter-translate-x: initial;--tw-enter-translate-y: initial}.data-\[motion\^\=to-\]\:animate-out[data-motion^=to-],.data-\[state\=closed\]\:animate-out[data-state=closed],.data-\[state\=hidden\]\:animate-out[data-state=hidden]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity: initial;--tw-exit-scale: initial;--tw-exit-rotate: initial;--tw-exit-translate-x: initial;--tw-exit-translate-y: initial}.data-\[motion\^\=from-\]\:fade-in[data-motion^=from-]{--tw-enter-opacity: 0}.data-\[motion\^\=to-\]\:fade-out[data-motion^=to-],.data-\[state\=closed\]\:fade-out-0[data-state=closed],.data-\[state\=hidden\]\:fade-out[data-state=hidden]{--tw-exit-opacity: 0}.data-\[state\=open\]\:fade-in-0[data-state=open],.data-\[state\=visible\]\:fade-in[data-state=visible]{--tw-enter-opacity: 0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale: .95}.data-\[state\=open\]\:zoom-in-90[data-state=open]{--tw-enter-scale: .9}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale: .95}.data-\[motion\=from-end\]\:slide-in-from-right-52[data-motion=from-end]{--tw-enter-translate-x: 13rem}.data-\[motion\=from-start\]\:slide-in-from-left-52[data-motion=from-start]{--tw-enter-translate-x: -13rem}.data-\[motion\=to-end\]\:slide-out-to-right-52[data-motion=to-end]{--tw-exit-translate-x: 13rem}.data-\[motion\=to-start\]\:slide-out-to-left-52[data-motion=to-start]{--tw-exit-translate-x: -13rem}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y: -.5rem}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x: .5rem}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x: -.5rem}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y: .5rem}.data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y: 100%}.data-\[state\=closed\]\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x: -100%}.data-\[state\=closed\]\:slide-out-to-right[data-state=closed]{--tw-exit-translate-x: 100%}.data-\[state\=closed\]\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y: -100%}.data-\[state\=open\]\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y: 100%}.data-\[state\=open\]\:slide-in-from-left[data-state=open]{--tw-enter-translate-x: -100%}.data-\[state\=open\]\:slide-in-from-right[data-state=open]{--tw-enter-translate-x: 100%}.data-\[state\=open\]\:slide-in-from-top[data-state=open]{--tw-enter-translate-y: -100%}.data-\[state\=closed\]\:duration-300[data-state=closed]{animation-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{animation-duration:.5s}.\*\:data-\[slot\=select-value\]\:line-clamp-1[data-slot=select-value]>*{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\*\:data-\[slot\=select-value\]\:flex[data-slot=select-value]>*{display:flex}.\*\:data-\[slot\=select-value\]\:items-center[data-slot=select-value]>*{align-items:center}.\*\:data-\[slot\=select-value\]\:gap-2[data-slot=select-value]>*{gap:.5rem}.\*\:data-\[slot\=alert-description\]\:text-destructive\/90[data-slot=alert-description]>*{color:hsl(var(--destructive) / .9)}.data-\[panel-group-direction\=vertical\]\:after\:left-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);left:0}.data-\[panel-group-direction\=vertical\]\:after\:h-1[data-panel-group-direction=vertical]:after{content:var(--tw-content);height:.25rem}.data-\[panel-group-direction\=vertical\]\:after\:w-full[data-panel-group-direction=vertical]:after{content:var(--tw-content);width:100%}.data-\[panel-group-direction\=vertical\]\:after\:-translate-y-1\/2[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[panel-group-direction\=vertical\]\:after\:translate-x-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[spacing\=0\]\:first\:rounded-l-md:first-child[data-spacing="0"]{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.data-\[spacing\=0\]\:data-\[variant\=outline\]\:first\:border-l:first-child[data-variant=outline][data-spacing="0"]{border-left-width:1px}.data-\[spacing\=0\]\:last\:rounded-r-md:last-child[data-spacing="0"]{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.data-\[active\=true\]\:hover\:bg-accent:hover[data-active=true],.data-\[state\=open\]\:hover\:bg-accent:hover[data-state=open]{background-color:hsl(var(--accent))}.data-\[active\=true\]\:focus\:bg-accent:focus[data-active=true]{background-color:hsl(var(--accent))}.data-\[state\=open\]\:focus\:bg-accent:focus[data-state=open]{background-color:hsl(var(--accent))}.data-\[variant\=destructive\]\:focus\:bg-destructive\/10:focus[data-variant=destructive]{background-color:hsl(var(--destructive) / .1)}.data-\[variant\=destructive\]\:focus\:text-destructive:focus[data-variant=destructive]{--tw-text-opacity: 1;color:hsl(var(--destructive) / var(--tw-text-opacity, 1))}.group[data-disabled=true] .group-data-\[disabled\=true\]\:pointer-events-none{pointer-events:none}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:relative{position:relative}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]{left:calc(var(--sidebar-width) * -1)}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]{right:calc(var(--sidebar-width) * -1)}.group[data-side=left] .group-data-\[side\=left\]\:-right-4{right:-1rem}.group[data-side=right] .group-data-\[side\=right\]\:left-0{left:0}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:top-full{top:100%}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:z-10{z-index:10}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:-mt-8{margin-top:-2rem}.group\/field-group[data-variant=outline] .group-data-\[variant\=outline\]\/field-group\:-mb-2{margin-bottom:-.5rem}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:mt-1\.5{margin-top:.375rem}.group\/drawer-content[data-vaul-drawer-direction=bottom] .group-data-\[vaul-drawer-direction\=bottom\]\/drawer-content\:block{display:block}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:hidden{display:none}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\)\]{width:calc(var(--sidebar-width-icon) + (--spacing(4)))}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\+2px\)\]{width:calc(var(--sidebar-width-icon) + (--spacing(4)) + 2px)}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:w-0{width:0px}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-side=right] .group-data-\[side\=right\]\:rotate-180,.group[data-state=open] .group-data-\[state\=open\]\:rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:overflow-hidden,.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:overflow-hidden{overflow:hidden}.group[data-variant=floating] .group-data-\[variant\=floating\]\:rounded-lg{border-radius:var(--radius)}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:rounded-md{border-radius:calc(var(--radius) - 2px)}.group[data-variant=floating] .group-data-\[variant\=floating\]\:border,.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:border{border-width:1px}.group[data-side=left] .group-data-\[side\=left\]\:border-r{border-right-width:1px}.group[data-side=right] .group-data-\[side\=right\]\:border-l{border-left-width:1px}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:border-ring{border-color:hsl(var(--ring))}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:bg-popover{background-color:hsl(var(--popover))}.group\/drawer-content[data-vaul-drawer-direction=bottom] .group-data-\[vaul-drawer-direction\=bottom\]\/drawer-content\:text-center,.group\/drawer-content[data-vaul-drawer-direction=top] .group-data-\[vaul-drawer-direction\=top\]\/drawer-content\:text-center{text-align:center}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:text-popover-foreground{color:hsl(var(--popover-foreground))}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:opacity-0{opacity:0}.group\/field[data-disabled=true] .group-data-\[disabled\=true\]\/field\:opacity-50,.group\/input-group[data-disabled=true] .group-data-\[disabled\=true\]\/input-group\:opacity-50,.group[data-disabled=true] .group-data-\[disabled\=true\]\:opacity-50{opacity:.5}.group[data-variant=floating] .group-data-\[variant\=floating\]\:shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-\[3px\]{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-ring\/50{--tw-ring-color: hsl(var(--ring) / .5)}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:duration-200{transition-duration:.2s;animation-duration:.2s}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:after\:left-full:after{content:var(--tw-content);left:100%}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:animate-in[data-state=open]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity: initial;--tw-enter-scale: initial;--tw-enter-rotate: initial;--tw-enter-translate-x: initial;--tw-enter-translate-y: initial}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:animate-out[data-state=closed]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity: initial;--tw-exit-scale: initial;--tw-exit-rotate: initial;--tw-exit-translate-x: initial;--tw-exit-translate-y: initial}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity: 0}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity: 0}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale: .95}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale: .95}.peer\/menu-button[data-size=default]~.peer-data-\[size\=default\]\/menu-button\:top-1\.5{top:.375rem}.peer\/menu-button[data-size=lg]~.peer-data-\[size\=lg\]\/menu-button\:top-2\.5{top:.625rem}.peer\/menu-button[data-size=sm]~.peer-data-\[size\=sm\]\/menu-button\:top-1{top:.25rem}.prose-headings\:font-bold :is(:where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *))){font-weight:700}.prose-headings\:tracking-tight :is(:where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *))){letter-spacing:-.025em}.prose-a\:text-cyan-300 :is(:where(a):not(:where([class~=not-prose],[class~=not-prose] *))){--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1))}.prose-a\:no-underline :is(:where(a):not(:where([class~=not-prose],[class~=not-prose] *))){text-decoration-line:none}.hover\:prose-a\:underline :is(:where(a):not(:where([class~=not-prose],[class~=not-prose] *))):hover{text-decoration-line:underline}.prose-code\:rounded-md :is(:where(code):not(:where([class~=not-prose],[class~=not-prose] *))){border-radius:calc(var(--radius) - 2px)}.prose-code\:bg-cyan-950\/30 :is(:where(code):not(:where([class~=not-prose],[class~=not-prose] *))){background-color:#0833444d}.prose-code\:px-1\.5 :is(:where(code):not(:where([class~=not-prose],[class~=not-prose] *))){padding-left:.375rem;padding-right:.375rem}.prose-code\:py-0\.5 :is(:where(code):not(:where([class~=not-prose],[class~=not-prose] *))){padding-top:.125rem;padding-bottom:.125rem}.prose-code\:text-cyan-200 :is(:where(code):not(:where([class~=not-prose],[class~=not-prose] *))){--tw-text-opacity: 1;color:rgb(165 243 252 / var(--tw-text-opacity, 1))}.prose-pre\:border :is(:where(pre):not(:where([class~=not-prose],[class~=not-prose] *))){border-width:1px}.prose-pre\:border-slate-800 :is(:where(pre):not(:where([class~=not-prose],[class~=not-prose] *))){--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity, 1))}.prose-pre\:bg-slate-950\/80 :is(:where(pre):not(:where([class~=not-prose],[class~=not-prose] *))){background-color:#020617cc}.prose-img\:rounded-xl :is(:where(img):not(:where([class~=not-prose],[class~=not-prose] *))){border-radius:calc(var(--radius) + 4px)}.prose-img\:border :is(:where(img):not(:where([class~=not-prose],[class~=not-prose] *))){border-width:1px}.prose-img\:border-slate-800 :is(:where(img):not(:where([class~=not-prose],[class~=not-prose] *))){--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity, 1))}.dark\:border-input:is(.dark *){border-color:hsl(var(--input))}.dark\:bg-destructive\/60:is(.dark *){background-color:hsl(var(--destructive) / .6)}.dark\:bg-input\/30:is(.dark *){background-color:hsl(var(--input) / .3)}.dark\:bg-transparent:is(.dark *){background-color:transparent}.dark\:text-muted-foreground:is(.dark *){color:hsl(var(--muted-foreground))}.dark\:hover\:bg-accent\/50:hover:is(.dark *){background-color:hsl(var(--accent) / .5)}.dark\:hover\:bg-input\/50:hover:is(.dark *){background-color:hsl(var(--input) / .5)}.dark\:hover\:text-accent-foreground:hover:is(.dark *){color:hsl(var(--accent-foreground))}.dark\:focus-visible\:ring-destructive\/40:focus-visible:is(.dark *){--tw-ring-color: hsl(var(--destructive) / .4)}.dark\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/40:has([data-slot][aria-invalid=true]):is(.dark *){--tw-ring-color: hsl(var(--destructive) / .4)}.dark\:data-\[state\=active\]\:border-input[data-state=active]:is(.dark *){border-color:hsl(var(--input))}.dark\:data-\[state\=active\]\:bg-input\/30[data-state=active]:is(.dark *){background-color:hsl(var(--input) / .3)}.dark\:data-\[state\=checked\]\:bg-primary[data-state=checked]:is(.dark *){background-color:hsl(var(--primary))}.dark\:data-\[state\=checked\]\:bg-primary-foreground[data-state=checked]:is(.dark *){background-color:hsl(var(--primary-foreground))}.dark\:data-\[state\=unchecked\]\:bg-foreground[data-state=unchecked]:is(.dark *){background-color:hsl(var(--foreground))}.dark\:data-\[state\=unchecked\]\:bg-input\/80[data-state=unchecked]:is(.dark *){background-color:hsl(var(--input) / .8)}.dark\:data-\[state\=active\]\:text-foreground[data-state=active]:is(.dark *){color:hsl(var(--foreground))}.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:focus[data-variant=destructive]:is(.dark *){background-color:hsl(var(--destructive) / .2)}@media not all and (min-width:640px){.max-sm\:opacity-100{opacity:1}}@media(min-width:640px){.sm\:ml-6{margin-left:1.5rem}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:inline-flex{display:inline-flex}.sm\:hidden{display:none}.sm\:w-auto{width:auto}.sm\:min-w-\[80px\]{min-width:80px}.sm\:max-w-lg{max-width:32rem}.sm\:max-w-sm{max-width:24rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-end{justify-content:flex-end}.sm\:gap-2\.5{gap:.625rem}.sm\:gap-4{gap:1rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pl-2\.5{padding-left:.625rem}.sm\:pr-2\.5{padding-right:.625rem}.sm\:text-left{text-align:left}.sm\:text-5xl{font-size:3rem;line-height:1}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.data-\[vaul-drawer-direction\=left\]\:sm\:max-w-sm[data-vaul-drawer-direction=left],.data-\[vaul-drawer-direction\=right\]\:sm\:max-w-sm[data-vaul-drawer-direction=right]{max-width:24rem}}@media(min-width:768px){.md\:absolute{position:absolute}.md\:mx-0{margin-left:0;margin-right:0}.md\:mb-16{margin-bottom:4rem}.md\:ml-8{margin-left:2rem}.md\:block{display:block}.md\:flex{display:flex}.md\:table-cell{display:table-cell}.md\:w-\[var\(--radix-navigation-menu-viewport-width\)\]{width:var(--radix-navigation-menu-viewport-width)}.md\:w-auto{width:auto}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:items-center{align-items:center}.md\:justify-start{justify-content:flex-start}.md\:gap-1\.5{gap:.375rem}.md\:divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse: 0;border-right-width:calc(1px * var(--tw-divide-x-reverse));border-left-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}.md\:divide-white\/5>:not([hidden])~:not([hidden]){border-color:#ffffff0d}.md\:p-12{padding:3rem}.md\:p-6{padding:1.5rem}.md\:py-20{padding-top:5rem;padding-bottom:5rem}.md\:py-32{padding-top:8rem;padding-bottom:8rem}.md\:text-left{text-align:left}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}.md\:text-5xl{font-size:3rem;line-height:1}.md\:text-6xl{font-size:3.75rem;line-height:1}.md\:text-7xl{font-size:4.5rem;line-height:1}.md\:text-9xl{font-size:8rem;line-height:1}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}.md\:opacity-0{opacity:0}.md\:after\:hidden:after{content:var(--tw-content);display:none}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:m-2{margin:.5rem}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:ml-0{margin-left:0}.peer[data-variant=inset][data-state=collapsed]~.md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:ml-2{margin-left:.5rem}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:rounded-xl{border-radius:calc(var(--radius) + 4px)}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}}@media(min-width:1024px){.lg\:col-span-1{grid-column:span 1 / span 1}.lg\:col-span-2{grid-column:span 2 / span 2}.lg\:col-span-3{grid-column:span 3 / span 3}.lg\:col-span-4{grid-column:span 4 / span 4}.lg\:col-span-8{grid-column:span 8 / span 8}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:gap-8{gap:2rem}.lg\:text-6xl{font-size:3.75rem;line-height:1}.lg\:text-7xl{font-size:4.5rem;line-height:1}}.\[\&\+\[data-slot\=item-content\]\]\:flex-none+[data-slot=item-content]{flex:none}.\[\&\:first-child\[data-selected\=true\]_button\]\:rounded-l-md:first-child[data-selected=true] button{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\:last-child\[data-selected\=true\]_button\]\:rounded-r-md:last-child[data-selected=true] button{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\:nth-child\(2\)\[data-selected\=true\]_button\]\:rounded-l-md:nth-child(2)[data-selected=true] button{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.\[\&\>\*\:not\(\:first-child\)\]\:rounded-l-none>*:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.\[\&\>\*\:not\(\:first-child\)\]\:rounded-t-none>*:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.\[\&\>\*\:not\(\:first-child\)\]\:border-l-0>*:not(:first-child){border-left-width:0px}.\[\&\>\*\:not\(\:first-child\)\]\:border-t-0>*:not(:first-child){border-top-width:0px}.\[\&\>\*\:not\(\:last-child\)\]\:rounded-b-none>*:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0}.\[\&\>\*\:not\(\:last-child\)\]\:rounded-r-none>*:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.\[\&\>\*\]\:w-full>*{width:100%}.\[\&\>\*\]\:focus-visible\:relative:focus-visible>*{position:relative}.\[\&\>\*\]\:focus-visible\:z-10:focus-visible>*{z-index:10}.\[\&\>\*\]\:data-\[slot\=field\]\:p-4[data-slot=field]>*{padding:1rem}.\[\&\>\.sr-only\]\:w-auto>.sr-only{width:auto}.\[\&\>\[data-slot\=field-group\]\]\:gap-4>[data-slot=field-group]{gap:1rem}.\[\&\>\[data-slot\=field-label\]\]\:flex-auto>[data-slot=field-label]{flex:1 1 auto}.has-\[select\[aria-hidden\=true\]\:last-child\]\:\[\&\>\[data-slot\=select-trigger\]\:last-of-type\]\:rounded-r-md>[data-slot=select-trigger]:last-of-type:has(select[aria-hidden=true]:last-child){border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\>\[data-slot\=select-trigger\]\:not\(\[class\*\=\'w-\'\]\)\]\:w-fit>[data-slot=select-trigger]:not([class*=w-]){width:-moz-fit-content;width:fit-content}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y: 2px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>a\:hover\]\:text-primary>a:hover{color:hsl(var(--primary))}.\[\&\>a\]\:underline>a{text-decoration-line:underline}.\[\&\>a\]\:underline-offset-4>a{text-underline-offset:4px}.\[\&\>button\]\:hidden>button{display:none}.\[\&\>input\]\:flex-1>input{flex:1 1 0%}.has-\[\>\[data-align\=block-end\]\]\:\[\&\>input\]\:pt-3>input:has(>[data-align=block-end]){padding-top:.75rem}.has-\[\>\[data-align\=block-start\]\]\:\[\&\>input\]\:pb-3>input:has(>[data-align=block-start]){padding-bottom:.75rem}.has-\[\>\[data-align\=inline-end\]\]\:\[\&\>input\]\:pr-2>input:has(>[data-align=inline-end]){padding-right:.5rem}.has-\[\>\[data-align\=inline-start\]\]\:\[\&\>input\]\:pl-2>input:has(>[data-align=inline-start]){padding-left:.5rem}.\[\&\>kbd\]\:rounded-\[calc\(var\(--radius\)-5px\)\]>kbd{border-radius:calc(var(--radius) - 5px)}.\[\&\>span\:last-child\]\:truncate>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.\[\&\>span\]\:text-xs>span{font-size:.75rem;line-height:1rem}.\[\&\>span\]\:opacity-70>span{opacity:.7}.\[\&\>svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5>svg:not([class*=size-]){width:.875rem;height:.875rem}.\[\&\>svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4>svg:not([class*=size-]){width:1rem;height:1rem}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3>svg{width:.75rem;height:.75rem}.\[\&\>svg\]\:size-3\.5>svg{width:.875rem;height:.875rem}.\[\&\>svg\]\:size-4>svg{width:1rem;height:1rem}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:translate-y-0\.5>svg{--tw-translate-y: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>svg\]\:text-current>svg{color:currentColor}.\[\&\>svg\]\:text-muted-foreground>svg{color:hsl(var(--muted-foreground))}.\[\&\>tr\]\:last\:border-b-0:last-child>tr{border-bottom-width:0px}.\[\&\[data-panel-group-direction\=vertical\]\>div\]\:rotate-90[data-panel-group-direction=vertical]>div{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-top:.375rem;padding-bottom:.375rem}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{font-weight:500}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:hsl(var(--muted-foreground))}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:3rem}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-top:.75rem;padding-bottom:.75rem}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:1.25rem}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:1.25rem}.\[\&_img\]\:size-full img{width:100%;height:100%}.\[\&_img\]\:object-cover img{-o-object-fit:cover;object-fit:cover}.\[\&_p\]\:leading-relaxed p{line-height:1.625}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3 svg:not([class*=size-]){width:.75rem;height:.75rem}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:1rem;height:1rem}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-6 svg:not([class*=size-]){width:1.5rem;height:1.5rem}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*=text-]){color:hsl(var(--muted-foreground))}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0px}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{right:-.5rem}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{left:-.5rem}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}[data-slot=card-content] .\[\[data-slot\=card-content\]_\&\]\:bg-transparent,[data-slot=popover-content] .\[\[data-slot\=popover-content\]_\&\]\:bg-transparent{background-color:transparent}[data-slot=tooltip-content] .\[\[data-slot\=tooltip-content\]_\&\]\:bg-background\/20{background-color:hsl(var(--background) / .2)}[data-slot=tooltip-content] .\[\[data-slot\=tooltip-content\]_\&\]\:text-background{color:hsl(var(--background))}[data-slot=tooltip-content] .dark\:\[\[data-slot\=tooltip-content\]_\&\]\:bg-background\/10:is(.dark *){background-color:hsl(var(--background) / .1)}[data-variant=legend]+.\[\[data-variant\=legend\]\+\&\]\:-mt-1\.5{margin-top:-.375rem}a.\[a\&\]\:hover\:bg-accent:hover{background-color:hsl(var(--accent))}a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:hsl(var(--secondary) / .9)}a.\[a\&\]\:hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))} diff --git a/assets/index-Ad_ZSp8G.css b/assets/index-Ad_ZSp8G.css deleted file mode 100644 index b49a7cda..00000000 --- a/assets/index-Ad_ZSp8G.css +++ /dev/null @@ -1 +0,0 @@ -*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,system-ui,-apple-system,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:JetBrains Mono,Fira Code,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px}:root{--background: 222 47% 4%;--foreground: 210 40% 93%;--card: 222 47% 7%;--card-foreground: 210 40% 93%;--popover: 222 47% 8%;--popover-foreground: 210 40% 93%;--primary: 187 92% 69%;--primary-foreground: 222 47% 4%;--secondary: 215 25% 70%;--secondary-foreground: 210 40% 93%;--muted: 215 25% 20%;--muted-foreground: 215 16% 72%;--accent: 187 92% 69%;--accent-foreground: 222 47% 4%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 0 0% 98%;--border: 215 25% 18%;--input: 215 25% 18%;--ring: 187 92% 69%;--radius: 1rem}html{scroll-behavior:smooth}.js-enabled #prerendered{display:none!important}body{overflow-x:hidden;--tw-bg-opacity: 1;background-color:rgb(2 6 23 / var(--tw-bg-opacity, 1));font-family:Inter,system-ui,-apple-system,sans-serif;color:hsl(var(--foreground));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-image:radial-gradient(circle at 10% 20%,rgba(103,232,249,.04) 0%,transparent 40%),radial-gradient(circle at 90% 80%,rgba(251,191,36,.02) 0%,transparent 40%),linear-gradient(to bottom,#020617,#0b1329);background-attachment:fixed}h1,h2,h3,h4,h5,h6{font-family:Inter,system-ui,-apple-system,sans-serif;letter-spacing:-.025em;color:hsl(var(--primary))}@media(min-width:768px){h1,h2,h3,h4,h5,h6{text-wrap:balance}}code{font-family:JetBrains Mono,Fira Code,monospace}::-moz-selection{background:#67e8f94d;color:#e2e8f0}::selection{background:#67e8f94d;color:#e2e8f0}.\!container{width:100%!important}.container{width:100%}@media(min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media(min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media(min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media(min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media(min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-kbd: #111827;--tw-prose-kbd-shadows: rgb(17 24 39 / 10%);--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-kbd: #fff;--tw-prose-invert-kbd-shadows: rgb(255 255 255 / 10%);--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-cyan{--tw-prose-links: #0891b2;--tw-prose-invert-links: #06b6d4}.prose-invert{--tw-prose-body: var(--tw-prose-invert-body);--tw-prose-headings: var(--tw-prose-invert-headings);--tw-prose-lead: var(--tw-prose-invert-lead);--tw-prose-links: var(--tw-prose-invert-links);--tw-prose-bold: var(--tw-prose-invert-bold);--tw-prose-counters: var(--tw-prose-invert-counters);--tw-prose-bullets: var(--tw-prose-invert-bullets);--tw-prose-hr: var(--tw-prose-invert-hr);--tw-prose-quotes: var(--tw-prose-invert-quotes);--tw-prose-quote-borders: var(--tw-prose-invert-quote-borders);--tw-prose-captions: var(--tw-prose-invert-captions);--tw-prose-kbd: var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows: var(--tw-prose-invert-kbd-shadows);--tw-prose-code: var(--tw-prose-invert-code);--tw-prose-pre-code: var(--tw-prose-invert-pre-code);--tw-prose-pre-bg: var(--tw-prose-invert-pre-bg);--tw-prose-th-borders: var(--tw-prose-invert-th-borders);--tw-prose-td-borders: var(--tw-prose-invert-td-borders)}.btn-cyan{display:inline-flex;align-items:center;justify-content:center;border-radius:calc(var(--radius) + 4px);background-image:linear-gradient(to right,var(--tw-gradient-stops));--tw-gradient-from: #22d3ee var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 211 238 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);--tw-gradient-to: #67e8f9 var(--tw-gradient-to-position);padding:.75rem 1.5rem;font-weight:700;--tw-text-opacity: 1;color:rgb(2 6 23 / var(--tw-text-opacity, 1));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;animation-duration:.3s}.btn-cyan:hover{--tw-gradient-from: #67e8f9 var(--tw-gradient-from-position);--tw-gradient-to: rgb(103 232 249 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);--tw-gradient-to: #a5f3fc var(--tw-gradient-to-position);--tw-shadow: 0 0 24px rgba(103,232,249,.45);--tw-shadow-colored: 0 0 24px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.btn-cyan:active{--tw-scale-x: .97;--tw-scale-y: .97;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.btn-gold{display:inline-flex;align-items:center;justify-content:center;border-radius:calc(var(--radius) + 4px);border-width:1px;border-color:#fbbf2499;background-color:#fbbf240d;padding:.75rem 1.5rem;font-weight:700;--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;animation-duration:.3s}.btn-gold:hover{--tw-border-opacity: 1;border-color:rgb(251 191 36 / var(--tw-border-opacity, 1));background-color:#fbbf241a;--tw-shadow: 0 0 24px rgba(251,191,36,.25);--tw-shadow-colored: 0 0 24px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.btn-gold:active{--tw-scale-x: .97;--tw-scale-y: .97;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.btn-outline{display:inline-flex;align-items:center;justify-content:center;border-radius:calc(var(--radius) + 4px);border-width:1px;--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity, 1));padding:.75rem 1.5rem;color:hsl(var(--secondary));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;animation-duration:.3s}.btn-outline:hover{border-color:#67e8f966;background-color:#ffffff0d;color:hsl(var(--primary))}.btn-outline:active{--tw-scale-x: .97;--tw-scale-y: .97;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.card-surface{min-width:0;border-radius:1rem;border-width:1px;border-color:#1e293bcc;background-color:#0b132966;padding:1.5rem;--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.5s;animation-duration:.5s}.card-surface:hover{border-color:#67e8f94d;--tw-shadow: 0 0 30px rgba(103,232,249,.12);--tw-shadow-colored: 0 0 30px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.card-surface:not(.revealed),.prose:not(.revealed){opacity:0;transform:translateY(30px)}.card-surface.revealed,.prose.revealed{opacity:1;transform:translateY(0);transition:opacity .7s ease-out,transform .7s ease-out}.section-padding{padding-left:1.5rem;padding-right:1.5rem}@media(min-width:640px){.section-padding{padding-left:2rem;padding-right:2rem}}@media(min-width:1024px){.section-padding{padding-left:4rem;padding-right:4rem}}@media(min-width:1280px){.section-padding{padding-left:6rem;padding-right:6rem}}.eyebrow-pill{display:inline-flex;align-items:center;gap:.5rem;border-radius:9999px;border-width:1px;border-color:#67e8f933;background-color:#67e8f91a;padding:.375rem .75rem;font-size:.75rem;line-height:1rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1))}.eyebrow-pill-gold{display:inline-flex;align-items:center;gap:.5rem;border-radius:9999px;border-width:1px;border-color:#fbbf2433;background-color:#fbbf241a;padding:.375rem .75rem;font-size:.75rem;line-height:1rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.link-accent{--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1));text-underline-offset:4px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}.link-accent:hover{--tw-text-opacity: 1;color:rgb(165 243 252 / var(--tw-text-opacity, 1));text-decoration-line:underline}.section-feature{padding-top:5rem;padding-bottom:5rem}@media(min-width:768px){.section-feature{padding-top:7rem;padding-bottom:7rem}}.section-band{padding-top:4rem;padding-bottom:4rem}@media(min-width:768px){.section-band{padding-top:5rem;padding-bottom:5rem}}.section-thin{padding-top:2.5rem;padding-bottom:2.5rem}@media(min-width:768px){.section-thin{padding-top:3rem;padding-bottom:3rem}}.glass-nav{border-width:1px;border-color:#ffffff1a;background-color:#0b1329bf;--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.neon-border-cyan{box-shadow:0 0 24px #67e8f91f,inset 0 0 24px #67e8f90a}.neon-border-gold{box-shadow:0 0 24px #fbbf241f,inset 0 0 24px #fbbf240a}.quantum-grid-bg{background-size:30px 30px;background-image:linear-gradient(to right,rgba(255,255,255,.015) 1px,transparent 1px),linear-gradient(to bottom,rgba(255,255,255,.015) 1px,transparent 1px)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.-bottom-12{bottom:-3rem}.-left-12{left:-3rem}.-left-\[40px\]{left:-40px}.-right-12{right:-3rem}.-top-12{top:-3rem}.-top-3{top:-.75rem}.bottom-0{bottom:0}.bottom-3{bottom:.75rem}.left-0{left:0}.left-1\/2{left:50%}.left-2{left:.5rem}.left-3{left:.75rem}.left-\[-1px\]{left:-1px}.left-\[50\%\]{left:50%}.right-0{right:0}.right-1{right:.25rem}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.top-0{top:0}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-1\/3{top:33.333333%}.top-1\/4{top:25%}.top-24{top:6rem}.top-3{top:.75rem}.top-3\.5{top:.875rem}.top-4{top:1rem}.top-6{top:1.5rem}.top-\[1px\]{top:1px}.top-\[50\%\]{top:50%}.top-\[60\%\]{top:60%}.top-full{top:100%}.isolate{isolation:isolate}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.z-\[1\]{z-index:1}.order-first{order:-9999}.order-last{order:9999}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2 / span 2}.row-start-1{grid-row-start:1}.\!m-0{margin:0!important}.\!my-0{margin-top:0!important;margin-bottom:0!important}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-3\.5{margin-left:.875rem;margin-right:.875rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-4{margin-top:1rem;margin-bottom:1rem}.-ml-4{margin-left:-1rem}.-mt-4{margin-top:-1rem}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.mb-14{margin-bottom:3.5rem}.mb-16{margin-bottom:4rem}.mb-2{margin-bottom:.5rem}.mb-20{margin-bottom:5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-auto{margin-left:auto}.mr-2{margin-right:.5rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-10{margin-top:2.5rem}.mt-16{margin-top:4rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-auto{margin-top:auto}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-row{display:table-row}.grid{display:grid}.contents{display:contents}.hidden{display:none}.aspect-square{aspect-ratio:1 / 1}.aspect-video{aspect-ratio:16 / 9}.size-10{width:2.5rem;height:2.5rem}.size-2{width:.5rem;height:.5rem}.size-2\.5{width:.625rem;height:.625rem}.size-3{width:.75rem;height:.75rem}.size-3\.5{width:.875rem;height:.875rem}.size-4{width:1rem;height:1rem}.size-6{width:1.5rem;height:1.5rem}.size-7{width:1.75rem;height:1.75rem}.size-8{width:2rem;height:2rem}.size-9{width:2.25rem;height:2.25rem}.size-auto{width:auto;height:auto}.size-full{width:100%;height:100%}.h-0\.5{height:.125rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-40{height:10rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-72{height:18rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-96{height:24rem}.h-\[1\.15rem\]{height:1.15rem}.h-\[36rem\]{height:36rem}.h-\[500px\]{height:500px}.h-\[600px\]{height:600px}.h-\[800px\]{height:800px}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-\[var\(--radix-navigation-menu-viewport-height\)\]{height:var(--radix-navigation-menu-viewport-height)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-svh{height:100svh}.max-h-0{max-height:0px}.max-h-\[300px\]{max-height:300px}.max-h-\[400px\]{max-height:400px}.max-h-\[calc\(100dvh-110px\)\]{max-height:calc(100dvh - 110px)}.min-h-0{min-height:0px}.min-h-16{min-height:4rem}.min-h-4{min-height:1rem}.min-h-\[44px\]{min-height:44px}.min-h-\[500px\]{min-height:500px}.min-h-\[60vh\]{min-height:60vh}.min-h-\[80vh\]{min-height:80vh}.min-h-screen{min-height:100vh}.min-h-svh{min-height:100svh}.w-1\.5{width:.375rem}.w-1\/2{width:50%}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-3\/4{width:75%}.w-4{width:1rem}.w-40{width:10rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-96{width:24rem}.w-\[1000px\]{width:1000px}.w-\[100px\]{width:100px}.w-\[1px\]{width:1px}.w-\[36rem\]{width:36rem}.w-\[600px\]{width:600px}.w-\[800px\]{width:800px}.w-\[95\%\]{width:95%}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-10{min-width:2.5rem}.min-w-5{min-width:1.25rem}.min-w-8{min-width:2rem}.min-w-9{min-width:2.25rem}.min-w-\[120px\]{min-width:120px}.min-w-\[12rem\]{min-width:12rem}.min-w-\[140px\]{min-width:140px}.min-w-\[44px\]{min-width:44px}.min-w-\[560px\]{min-width:560px}.min-w-\[640px\]{min-width:640px}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-\[11rem\]{max-width:11rem}.max-w-\[440px\]{max-width:440px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-max{max-width:-moz-max-content;max-width:max-content}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-prose{max-width:65ch}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-full{flex-basis:100%}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-1\/3{--tw-translate-x: -33.333333%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-px{--tw-translate-x: -1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-2{--tw-translate-y: -.5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-\[140\%\]{--tw-translate-y: -140%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-1\/3{--tw-translate-x: 33.333333%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-px{--tw-translate-x: 1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0\.5{--tw-translate-y: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-1\/3{--tw-translate-y: 33.333333%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-2{--tw-translate-y: .5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y: calc(-50% - 2px) ;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-45{--tw-rotate: -45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-45{--tw-rotate: 45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes ping{75%,to{transform:scale(2);opacity:0}}.animate-ping{animation:ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.4}}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-text{-webkit-user-select:text;-moz-user-select:text;user-select:text}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize-none{resize:none}.resize-y{resize:vertical}.scroll-my-1{scroll-margin-top:.25rem;scroll-margin-bottom:.25rem}.scroll-py-1{scroll-padding-top:.25rem;scroll-padding-bottom:.25rem}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-\[0_1fr\]{grid-template-columns:0 1fr}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-items-start{justify-items:start}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-12{gap:3rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-7{gap:1.75rem}.gap-8{gap:2rem}.gap-\[--spacing\(var\(--gap\)\)\]{gap:var(--spacing(var(--gap)))}.gap-x-12{-moz-column-gap:3rem;column-gap:3rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-0\.5{row-gap:.125rem}.gap-y-1{row-gap:.25rem}.gap-y-8{row-gap:2rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem * var(--tw-space-y-reverse))}.space-y-12>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(3rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(3rem * var(--tw-space-y-reverse))}.space-y-14>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(3.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(3.5rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-20>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gridline>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(30 41 59 / var(--tw-divide-opacity, 1))}.divide-gridline\/50>:not([hidden])~:not([hidden]){border-color:#1e293b80}.divide-slate-800\/60>:not([hidden])~:not([hidden]){border-color:#1e293b99}.self-start{align-self:flex-start}.self-center{align-self:center}.self-stretch{align-self:stretch}.justify-self-end{justify-self:end}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-balance{text-wrap:balance}.text-pretty{text-wrap:pretty}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[4px\]{border-radius:4px}.rounded-\[calc\(var\(--radius\)-5px\)\]{border-radius:calc(var(--radius) - 5px)}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-xs{border-radius:calc(var(--radius) - 6px)}.rounded-l-md{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.rounded-r-md{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.rounded-tl-sm{border-top-left-radius:calc(var(--radius) - 4px)}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-4{border-width:4px}.border-y{border-top-width:1px;border-bottom-width:1px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-blue-400\/30{border-color:#60a5fa4d}.border-border{border-color:hsl(var(--border))}.border-cyan-300{--tw-border-opacity: 1;border-color:rgb(103 232 249 / var(--tw-border-opacity, 1))}.border-cyan-300\/10{border-color:#67e8f91a}.border-cyan-300\/20{border-color:#67e8f933}.border-cyan-300\/25{border-color:#67e8f940}.border-cyan-300\/30{border-color:#67e8f94d}.border-cyan-300\/35{border-color:#67e8f959}.border-cyan-300\/40{border-color:#67e8f966}.border-cyan-800\/40{border-color:#155e7566}.border-cyan-800\/50{border-color:#155e7580}.border-cyan-800\/60{border-color:#155e7599}.border-cyan-900\/40{border-color:#164e6366}.border-cyan-900\/50{border-color:#164e6380}.border-cyan-900\/60{border-color:#164e6399}.border-emerald-500\/30{border-color:#10b9814d}.border-gold-400\/20{border-color:#fbbf2433}.border-gold-400\/25{border-color:#fbbf2440}.border-gold-400\/30{border-color:#fbbf244d}.border-gold-400\/60{border-color:#fbbf2499}.border-green-400\/20{border-color:#4ade8033}.border-gridline{--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity, 1))}.border-gridline\/30{border-color:#1e293b4d}.border-gridline\/40{border-color:#1e293b66}.border-gridline\/50{border-color:#1e293b80}.border-gridline\/60{border-color:#1e293b99}.border-input{border-color:hsl(var(--input))}.border-primary{border-color:hsl(var(--primary))}.border-purple-400\/20{border-color:#c084fc33}.border-red-400\/20{border-color:#f8717133}.border-slate-700{--tw-border-opacity: 1;border-color:rgb(51 65 85 / var(--tw-border-opacity, 1))}.border-slate-800{--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity, 1))}.border-slate-800\/60{border-color:#1e293b99}.border-slate-800\/80{border-color:#1e293bcc}.border-slate-800\/90{border-color:#1e293be6}.border-transparent{border-color:transparent}.border-void{--tw-border-opacity: 1;border-color:rgb(2 6 23 / var(--tw-border-opacity, 1))}.border-white\/5{border-color:#ffffff0d}.border-l-transparent{border-left-color:transparent}.border-t-cyan-300{--tw-border-opacity: 1;border-top-color:rgb(103 232 249 / var(--tw-border-opacity, 1))}.border-t-transparent{border-top-color:transparent}.bg-\[\#050b14\]{--tw-bg-opacity: 1;background-color:rgb(5 11 20 / var(--tw-bg-opacity, 1))}.bg-\[\#0b1329\]\/40{background-color:#0b132966}.bg-accent{background-color:hsl(var(--accent))}.bg-background{background-color:hsl(var(--background))}.bg-black\/50{background-color:#00000080}.bg-blue-500\/10{background-color:#3b82f61a}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-cyan-300{--tw-bg-opacity: 1;background-color:rgb(103 232 249 / var(--tw-bg-opacity, 1))}.bg-cyan-300\/10{background-color:#67e8f91a}.bg-cyan-300\/5{background-color:#67e8f90d}.bg-cyan-400{--tw-bg-opacity: 1;background-color:rgb(34 211 238 / var(--tw-bg-opacity, 1))}.bg-cyan-400\/10{background-color:#22d3ee1a}.bg-cyan-400\/5{background-color:#22d3ee0d}.bg-cyan-900\/10{background-color:#164e631a}.bg-cyan-950\/50{background-color:#08334480}.bg-cyan-950\/60{background-color:#08334499}.bg-cyan-950\/80{background-color:#083344cc}.bg-destructive{--tw-bg-opacity: 1;background-color:hsl(var(--destructive) / var(--tw-bg-opacity, 1))}.bg-emerald-950\/50{background-color:#022c2280}.bg-foreground{background-color:hsl(var(--foreground))}.bg-gold-400{--tw-bg-opacity: 1;background-color:rgb(251 191 36 / var(--tw-bg-opacity, 1))}.bg-gold-400\/10{background-color:#fbbf241a}.bg-gold-400\/5{background-color:#fbbf240d}.bg-green-400{--tw-bg-opacity: 1;background-color:rgb(74 222 128 / var(--tw-bg-opacity, 1))}.bg-green-400\/10{background-color:#4ade801a}.bg-green-400\/5{background-color:#4ade800d}.bg-green-500\/80{background-color:#22c55ecc}.bg-gridline{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-input{background-color:hsl(var(--input))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted-foreground{background-color:hsl(var(--muted-foreground))}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/20{background-color:hsl(var(--primary) / .2)}.bg-purple-400\/10{background-color:#c084fc1a}.bg-red-400\/5{background-color:#f871710d}.bg-red-500\/80{background-color:#ef4444cc}.bg-secondary{background-color:hsl(var(--secondary))}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-slate-800\/20{background-color:#1e293b33}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-slate-900\/40{background-color:#0f172a66}.bg-slate-900\/50{background-color:#0f172a80}.bg-slate-900\/90{background-color:#0f172ae6}.bg-slate-950{--tw-bg-opacity: 1;background-color:rgb(2 6 23 / var(--tw-bg-opacity, 1))}.bg-slate-950\/90{background-color:#020617e6}.bg-surface{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-surface\/10{background-color:#0f172a1a}.bg-surface\/20{background-color:#0f172a33}.bg-surface\/30{background-color:#0f172a4d}.bg-surface\/50{background-color:#0f172a80}.bg-surface\/70{background-color:#0f172ab3}.bg-surface\/90{background-color:#0f172ae6}.bg-transparent{background-color:transparent}.bg-void{--tw-bg-opacity: 1;background-color:rgb(2 6 23 / var(--tw-bg-opacity, 1))}.bg-void\/30{background-color:#0206174d}.bg-void\/50{background-color:#02061780}.bg-void\/70{background-color:#020617b3}.bg-void\/80{background-color:#020617cc}.bg-void\/90{background-color:#020617e6}.bg-void\/95{background-color:#020617f2}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-yellow-500\/80{background-color:#eab308cc}.bg-\[radial-gradient\(ellipse_at_top\,_var\(--tw-gradient-stops\)\)\]{background-image:radial-gradient(ellipse at top,var(--tw-gradient-stops))}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-cyan-300{--tw-gradient-from: #67e8f9 var(--tw-gradient-from-position);--tw-gradient-to: rgb(103 232 249 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-300\/10{--tw-gradient-from: rgb(103 232 249 / .1) var(--tw-gradient-from-position);--tw-gradient-to: rgb(103 232 249 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-300\/5{--tw-gradient-from: rgb(103 232 249 / .05) var(--tw-gradient-from-position);--tw-gradient-to: rgb(103 232 249 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-300\/80{--tw-gradient-from: rgb(103 232 249 / .8) var(--tw-gradient-from-position);--tw-gradient-to: rgb(103 232 249 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-400\/5{--tw-gradient-from: rgb(34 211 238 / .05) var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 211 238 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-500\/\[0\.04\]{--tw-gradient-from: rgb(6 182 212 / .04) var(--tw-gradient-from-position);--tw-gradient-to: rgb(6 182 212 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-900\/20{--tw-gradient-from: rgb(22 78 99 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(22 78 99 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-950\/40{--tw-gradient-from: rgb(8 51 68 / .4) var(--tw-gradient-from-position);--tw-gradient-to: rgb(8 51 68 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-gold-400\/5{--tw-gradient-from: rgb(251 191 36 / .05) var(--tw-gradient-from-position);--tw-gradient-to: rgb(251 191 36 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-400\/5{--tw-gradient-from: rgb(74 222 128 / .05) var(--tw-gradient-from-position);--tw-gradient-to: rgb(74 222 128 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-950{--tw-gradient-from: #020617 var(--tw-gradient-from-position);--tw-gradient-to: rgb(2 6 23 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-surface\/50{--tw-gradient-from: rgb(15 23 42 / .5) var(--tw-gradient-from-position);--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-void\/60{--tw-gradient-from: rgb(2 6 23 / .6) var(--tw-gradient-from-position);--tw-gradient-to: rgb(2 6 23 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-white{--tw-gradient-from: #fff var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-gold-400\/30{--tw-gradient-to: rgb(251 191 36 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(251 191 36 / .3) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-surface{--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #0f172a var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-surface\/30{--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(15 23 42 / .3) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-surface\/40{--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(15 23 42 / .4) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-surface\/60{--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(15 23 42 / .6) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-transparent{--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), transparent var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-void{--tw-gradient-to: rgb(2 6 23 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #020617 var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-void\/25{--tw-gradient-to: rgb(2 6 23 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(2 6 23 / .25) var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-cyan-300\/10{--tw-gradient-to: rgb(103 232 249 / .1) var(--tw-gradient-to-position)}.to-cyan-400{--tw-gradient-to: #22d3ee var(--tw-gradient-to-position)}.to-cyan-950\/20{--tw-gradient-to: rgb(8 51 68 / .2) var(--tw-gradient-to-position)}.to-slate-400{--tw-gradient-to: #94a3b8 var(--tw-gradient-to-position)}.to-slate-950{--tw-gradient-to: #020617 var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to: transparent var(--tw-gradient-to-position)}.to-void{--tw-gradient-to: #020617 var(--tw-gradient-to-position)}.to-white\/70{--tw-gradient-to: rgb(255 255 255 / .7) var(--tw-gradient-to-position)}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.fill-current{fill:currentColor}.fill-foreground{fill:hsl(var(--foreground))}.fill-primary{fill:hsl(var(--primary))}.object-cover{-o-object-fit:cover;object-fit:cover}.\!p-5{padding:1.25rem!important}.p-0{padding:0}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-12{padding:3rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-3\.5{padding:.875rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[3px\]{padding:3px}.p-px{padding:1px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-24{padding-top:6rem;padding-bottom:6rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-10{padding-bottom:2.5rem}.pb-20{padding-bottom:5rem}.pb-24{padding-bottom:6rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-5{padding-left:1.25rem}.pl-8{padding-left:2rem}.pr-1{padding-right:.25rem}.pr-14{padding-right:3.5rem}.pr-2{padding-right:.5rem}.pr-2\.5{padding-right:.625rem}.pr-3{padding-right:.75rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-0\.5{padding-top:.125rem}.pt-12{padding-top:3rem}.pt-2{padding-top:.5rem}.pt-20{padding-top:5rem}.pt-24{padding-top:6rem}.pt-3{padding-top:.75rem}.pt-32{padding-top:8rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.align-middle{vertical-align:middle}.font-mono{font-family:JetBrains Mono,Fira Code,monospace}.font-sans{font-family:Inter,system-ui,-apple-system,sans-serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-8xl{font-size:6rem;line-height:1}.text-\[0\.65rem\]{font-size:.65rem}.text-\[0\.8rem\]{font-size:.8rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-sm\/relaxed{font-size:.875rem;line-height:1.625}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-\[1\.05\]{line-height:1.05}.leading-\[1\.1\]{line-height:1.1}.leading-none{line-height:1}.leading-normal{line-height:1.5}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-\[0\.2em\]{letter-spacing:.2em}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-accent-foreground{color:hsl(var(--accent-foreground))}.text-background{color:hsl(var(--background))}.text-blue-300{--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-current{color:currentColor}.text-cyan-200{--tw-text-opacity: 1;color:rgb(165 243 252 / var(--tw-text-opacity, 1))}.text-cyan-300{--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1))}.text-cyan-300\/20{color:#67e8f933}.text-cyan-300\/80{color:#67e8f9cc}.text-cyan-400{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.text-destructive{--tw-text-opacity: 1;color:hsl(var(--destructive) / var(--tw-text-opacity, 1))}.text-emerald-400{--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.text-foreground{color:hsl(var(--foreground))}.text-gold-200\/60{color:#fde68a99}.text-gold-300{--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.text-gold-400{--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.text-gold-400\/60{color:#fbbf2499}.text-gold-400\/80{color:#fbbf24cc}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/60{color:hsl(var(--muted-foreground) / .6)}.text-muted-foreground\/70{color:hsl(var(--muted-foreground) / .7)}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-purple-400{--tw-text-opacity: 1;color:rgb(192 132 252 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-secondary{color:hsl(var(--secondary))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-secondary\/80{color:hsl(var(--secondary) / .8)}.text-secondary\/90{color:hsl(var(--secondary) / .9)}.text-slate-100{--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity, 1))}.text-slate-200{--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity, 1))}.text-slate-300{--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity, 1))}.text-slate-400{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity, 1))}.text-slate-50{--tw-text-opacity: 1;color:rgb(248 250 252 / var(--tw-text-opacity, 1))}.text-slate-950{--tw-text-opacity: 1;color:rgb(2 6 23 / var(--tw-text-opacity, 1))}.text-transparent{color:transparent}.text-void{--tw-text-opacity: 1;color:rgb(2 6 23 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-white\/90{color:#ffffffe6}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.placeholder-cyan-300\/60::-moz-placeholder{color:#67e8f999}.placeholder-cyan-300\/60::placeholder{color:#67e8f999}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow: 0 0 0 1px hsl(var(--sidebar-border));--tw-shadow-colored: 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_12px_rgba\(103\,232\,249\,0\.35\)\]{--tw-shadow: 0 0 12px rgba(103,232,249,.35);--tw-shadow-colored: 0 0 12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_8px_rgba\(103\,232\,249\,0\.5\)\]{--tw-shadow: 0 0 8px rgba(103,232,249,.5);--tw-shadow-colored: 0 0 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_8px_rgba\(103\,232\,249\,0\.8\)\]{--tw-shadow: 0 0 8px rgba(103,232,249,.8);--tw-shadow-colored: 0 0 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-deep{--tw-shadow: 0 25px 50px -12px rgba(0, 0, 0, .5);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xs{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-cyan-300\/20{--tw-shadow-color: rgb(103 232 249 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-cyan-400\/20{--tw-shadow-color: rgb(34 211 238 / .2);--tw-shadow: var(--tw-shadow-colored)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-ring\/50{--tw-ring-color: hsl(var(--ring) / .5)}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.blur-3xl{--tw-blur: blur(64px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-\[100px\]{--tw-blur: blur(100px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-\[120px\]{--tw-blur: blur(120px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow{--tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / .1)) drop-shadow(0 1px 1px rgb(0 0 0 / .06));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-md{--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[left\,right\,width\]{transition-property:left,right,width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[margin\,opacity\]{transition-property:margin,opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\,height\,padding\]{transition-property:width,height,padding;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\]{transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-none{transition-property:none}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-1000{transition-duration:1s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-700{transition-duration:.7s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{transition-timing-function:linear}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity, 1);transform:translate3d(var(--tw-enter-translate-x, 0),var(--tw-enter-translate-y, 0),0) scale3d(var(--tw-enter-scale, 1),var(--tw-enter-scale, 1),var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity, 1);transform:translate3d(var(--tw-exit-translate-x, 0),var(--tw-exit-translate-y, 0),0) scale3d(var(--tw-exit-scale, 1),var(--tw-exit-scale, 1),var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0))}}.animate-in{animation-name:enter;animation-duration:.15s;--tw-enter-opacity: initial;--tw-enter-scale: initial;--tw-enter-rotate: initial;--tw-enter-translate-x: initial;--tw-enter-translate-y: initial}.fade-in,.fade-in-0{--tw-enter-opacity: 0}.zoom-in-95{--tw-enter-scale: .95}.slide-in-from-bottom-8{--tw-enter-translate-y: 2rem}.duration-100{animation-duration:.1s}.duration-1000{animation-duration:1s}.duration-200{animation-duration:.2s}.duration-300{animation-duration:.3s}.duration-500{animation-duration:.5s}.duration-700{animation-duration:.7s}.ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{animation-timing-function:linear}.ease-out{animation-timing-function:cubic-bezier(0,0,.2,1)}.running{animation-play-state:running}.animate-pulse-dot{animation:pulse-dot 2s ease-in-out infinite}.\[--cell-size\:--spacing\(8\)\]{--cell-size: var(--spacing(8))}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.3}}@keyframes gradient-xy{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:#020617}::-webkit-scrollbar-thumb{background:#1e293b;border-radius:5px;border:2px solid #020617}::-webkit-scrollbar-thumb:hover{background:#334155}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.card-surface,.prose{opacity:1;transform:none;transition:none}}@media(forced-colors:active){.text-gradient-cyan,.text-gradient-gold{color:CanvasText!important}}.marker\:text-cyan-300\/60 *::marker{color:#67e8f999}.marker\:text-cyan-300\/60::marker{color:#67e8f999}.selection\:bg-cyan-400\/30 *::-moz-selection{background-color:#22d3ee4d}.selection\:bg-cyan-400\/30 *::selection{background-color:#22d3ee4d}.selection\:bg-primary *::-moz-selection{background-color:hsl(var(--primary))}.selection\:bg-primary *::selection{background-color:hsl(var(--primary))}.selection\:text-primary-foreground *::-moz-selection{color:hsl(var(--primary-foreground))}.selection\:text-primary-foreground *::selection{color:hsl(var(--primary-foreground))}.selection\:bg-cyan-400\/30::-moz-selection{background-color:#22d3ee4d}.selection\:bg-cyan-400\/30::selection{background-color:#22d3ee4d}.selection\:bg-primary::-moz-selection{background-color:hsl(var(--primary))}.selection\:bg-primary::selection{background-color:hsl(var(--primary))}.selection\:text-primary-foreground::-moz-selection{color:hsl(var(--primary-foreground))}.selection\:text-primary-foreground::selection{color:hsl(var(--primary-foreground))}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:1.75rem}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);inset:-.5rem}.after\:inset-y-0:after{content:var(--tw-content);top:0;bottom:0}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:w-1:after{content:var(--tw-content);width:.25rem}.after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.after\:-translate-x-1\/2:after{content:var(--tw-content);--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.first\:rounded-l-md:first-child{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.first\:border-l:first-child{border-left-width:1px}.last\:mt-0:last-child{margin-top:0}.last\:rounded-r-md:last-child{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.last\:border-0:last-child{border-width:0px}.last\:border-b-0:last-child{border-bottom-width:0px}.hover\:border-cyan-300\/30:hover{border-color:#67e8f94d}.hover\:border-cyan-300\/40:hover{border-color:#67e8f966}.hover\:border-cyan-400\/30:hover{border-color:#22d3ee4d}.hover\:border-cyan-400\/40:hover{border-color:#22d3ee66}.hover\:border-cyan-500\/30:hover{border-color:#06b6d44d}.hover\:border-cyan-500\/40:hover{border-color:#06b6d466}.hover\:border-red-900\/30:hover{border-color:#7f1d1d4d}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-cyan-200:hover{--tw-bg-opacity: 1;background-color:rgb(165 243 252 / var(--tw-bg-opacity, 1))}.hover\:bg-cyan-300:hover{--tw-bg-opacity: 1;background-color:rgb(103 232 249 / var(--tw-bg-opacity, 1))}.hover\:bg-cyan-300\/10:hover{background-color:#67e8f91a}.hover\:bg-cyan-300\/20:hover{background-color:#67e8f933}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}.hover\:bg-gold-400\/10:hover{background-color:#fbbf241a}.hover\:bg-gold-400\/20:hover{background-color:#fbbf2433}.hover\:bg-green-400\/20:hover{background-color:#4ade8033}.hover\:bg-muted:hover{background-color:hsl(var(--muted))}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-red-950\/20:hover{background-color:#450a0a33}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:bg-slate-800:hover{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.hover\:bg-slate-800\/50:hover{background-color:#1e293b80}.hover\:bg-slate-900\/40:hover{background-color:#0f172a66}.hover\:bg-surface:hover{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.hover\:bg-surface\/20:hover{background-color:#0f172a33}.hover\:bg-surface\/30:hover{background-color:#0f172a4d}.hover\:bg-surface\/40:hover{background-color:#0f172a66}.hover\:bg-surface\/60:hover{background-color:#0f172a99}.hover\:bg-white\/5:hover{background-color:#ffffff0d}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-cyan-100:hover{--tw-text-opacity: 1;color:rgb(207 250 254 / var(--tw-text-opacity, 1))}.hover\:text-cyan-200:hover{--tw-text-opacity: 1;color:rgb(165 243 252 / var(--tw-text-opacity, 1))}.hover\:text-cyan-300:hover{--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1))}.hover\:text-emerald-300:hover{--tw-text-opacity: 1;color:rgb(110 231 183 / var(--tw-text-opacity, 1))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-muted-foreground:hover{color:hsl(var(--muted-foreground))}.hover\:text-primary:hover{color:hsl(var(--primary))}.hover\:text-red-400:hover{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.hover\:text-slate-200:hover{--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover{--tw-shadow: 0 0 0 1px hsl(var(--sidebar-accent));--tw-shadow-colored: 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:ring-4:hover{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:not-sr-only:focus{position:static;width:auto;height:auto;padding:0;margin:0;overflow:visible;clip:auto;white-space:normal}.focus\:fixed:focus{position:fixed}.focus\:left-4:focus{left:1rem}.focus\:top-4:focus{top:1rem}.focus\:z-10:focus{z-index:10}.focus\:z-\[100\]:focus{z-index:100}.focus\:rounded-lg:focus{border-radius:var(--radius)}.focus\:border-cyan-300\/50:focus{border-color:#67e8f980}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:bg-cyan-300:focus{--tw-bg-opacity: 1;background-color:rgb(103 232 249 / var(--tw-bg-opacity, 1))}.focus\:px-4:focus{padding-left:1rem;padding-right:1rem}.focus\:py-2:focus{padding-top:.5rem;padding-bottom:.5rem}.focus\:font-semibold:focus{font-weight:600}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:text-void:focus{--tw-text-opacity: 1;color:rgb(2 6 23 / var(--tw-text-opacity, 1))}.focus\:opacity-100:focus{opacity:1}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border-ring:focus-visible{border-color:hsl(var(--ring))}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:outline-1:focus-visible{outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:hsl(var(--ring))}.focus-visible\:ring-0:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-4:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-cyan-300:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(103 232 249 / var(--tw-ring-opacity, 1))}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color: hsl(var(--destructive) / .2)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color: hsl(var(--ring) / .5)}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width: 1px}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-cyan-300\/20:disabled{background-color:#67e8f933}.disabled\:text-muted\/20:disabled{color:hsl(var(--muted) / .2)}.disabled\:text-void\/40:disabled{color:#02061766}.disabled\:opacity-50:disabled{opacity:.5}.group\/menu-item:focus-within .group-focus-within\/menu-item\:opacity-100{opacity:1}.group:hover .group-hover\:translate-x-0\.5{--tw-translate-x: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:translate-x-1{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:border-cyan-300\/30{border-color:#67e8f94d}.group:hover .group-hover\:bg-cyan-300\/20{background-color:#67e8f933}.group:hover .group-hover\:fill-cyan-300{fill:#67e8f9}.group:hover .group-hover\:stroke-cyan-200{stroke:#a5f3fc}.group:hover .group-hover\:stroke-cyan-300\/40{stroke:#67e8f966}.group:hover .group-hover\:text-cyan-200{--tw-text-opacity: 1;color:rgb(165 243 252 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:text-cyan-300{--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1))}.group\/menu-item:hover .group-hover\/menu-item\:opacity-100,.group:hover .group-hover\:opacity-100{opacity:1}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-50{opacity:.5}.has-\[\>button\]\:ml-\[-0\.45rem\]:has(>button){margin-left:-.45rem}.has-\[\>button\]\:mr-\[-0\.45rem\]:has(>button){margin-right:-.45rem}.has-\[\>kbd\]\:ml-\[-0\.35rem\]:has(>kbd){margin-left:-.35rem}.has-\[\>kbd\]\:mr-\[-0\.35rem\]:has(>kbd){margin-right:-.35rem}.has-\[\>\[data-align\=block-end\]\]\:h-auto:has(>[data-align=block-end]){height:auto}.has-\[\>\[data-align\=block-start\]\]\:h-auto:has(>[data-align=block-start]){height:auto}.has-\[\>textarea\]\:h-auto:has(>textarea){height:auto}.has-\[\>\[data-slot\=field\]\]\:w-full:has(>[data-slot=field]){width:100%}.has-\[\>svg\]\:grid-cols-\[calc\(var\(--spacing\)\*4\)_1fr\]:has(>svg){grid-template-columns:calc(var(--spacing) * 4) 1fr}.has-\[\>\[data-align\=block-end\]\]\:flex-col:has(>[data-align=block-end]){flex-direction:column}.has-\[\>\[data-align\=block-start\]\]\:flex-col:has(>[data-align=block-start]){flex-direction:column}.has-\[\>\[data-slot\=field\]\]\:flex-col:has(>[data-slot=field]){flex-direction:column}.has-\[\>\[data-slot\=field-content\]\]\:items-start:has(>[data-slot=field-content]){align-items:flex-start}.has-\[\>\[data-slot\=button-group\]\]\:gap-2:has(>[data-slot=button-group]){gap:.5rem}.has-\[\>\[data-slot\=checkbox-group\]\]\:gap-3:has(>[data-slot=checkbox-group]){gap:.75rem}.has-\[\>\[data-slot\=radio-group\]\]\:gap-3:has(>[data-slot=radio-group]){gap:.75rem}.has-\[\>svg\]\:gap-x-3:has(>svg){-moz-column-gap:.75rem;column-gap:.75rem}.has-\[\>\[data-slot\=field\]\]\:rounded-md:has(>[data-slot=field]){border-radius:calc(var(--radius) - 2px)}.has-\[\>\[data-slot\=field\]\]\:border:has(>[data-slot=field]){border-width:1px}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:border-ring:has([data-slot=input-group-control]:focus-visible){border-color:hsl(var(--ring))}.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:border-destructive:has([data-slot][aria-invalid=true]){--tw-border-opacity: 1;border-color:hsl(var(--destructive) / var(--tw-border-opacity, 1))}.has-\[\>svg\]\:p-0:has(>svg){padding:0}.has-\[\>svg\]\:px-2:has(>svg){padding-left:.5rem;padding-right:.5rem}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-left:.625rem;padding-right:.625rem}.has-\[\>svg\]\:px-3:has(>svg){padding-left:.75rem;padding-right:.75rem}.has-\[\>svg\]\:px-4:has(>svg){padding-left:1rem;padding-right:1rem}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-\[3px\]:has([data-slot=input-group-control]:focus-visible){--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-ring\/50:has([data-slot=input-group-control]:focus-visible){--tw-ring-color: hsl(var(--ring) / .5)}.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/20:has([data-slot][aria-invalid=true]){--tw-ring-color: hsl(var(--destructive) / .2)}.group\/item:has([data-slot=item-description]) .group-has-\[\[data-slot\=item-description\]\]\/item\:translate-y-0\.5{--tw-translate-y: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group\/item:has([data-slot=item-description]) .group-has-\[\[data-slot\=item-description\]\]\/item\:self-start{align-self:flex-start}.group\/field:has([data-orientation=horizontal]) .group-has-\[\[data-orientation\=horizontal\]\]\/field\:text-balance{text-wrap:balance}.group\/input-group:has(>input) .group-has-\[\>input\]\/input-group\:pb-2\.5{padding-bottom:.625rem}.group\/input-group:has(>input) .group-has-\[\>input\]\/input-group\:pt-2\.5{padding-top:.625rem}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-selected\:text-muted-foreground[aria-selected=true]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true],.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[vaul-drawer-direction\=bottom\]\:inset-x-0[data-vaul-drawer-direction=bottom]{left:0;right:0}.data-\[vaul-drawer-direction\=left\]\:inset-y-0[data-vaul-drawer-direction=left],.data-\[vaul-drawer-direction\=right\]\:inset-y-0[data-vaul-drawer-direction=right]{top:0;bottom:0}.data-\[vaul-drawer-direction\=top\]\:inset-x-0[data-vaul-drawer-direction=top]{left:0;right:0}.data-\[vaul-drawer-direction\=bottom\]\:bottom-0[data-vaul-drawer-direction=bottom]{bottom:0}.data-\[vaul-drawer-direction\=left\]\:left-0[data-vaul-drawer-direction=left]{left:0}.data-\[vaul-drawer-direction\=right\]\:right-0[data-vaul-drawer-direction=right]{right:0}.data-\[vaul-drawer-direction\=top\]\:top-0[data-vaul-drawer-direction=top]{top:0}.data-\[active\=true\]\:z-10[data-active=true]{z-index:10}.data-\[vaul-drawer-direction\=bottom\]\:mt-24[data-vaul-drawer-direction=bottom]{margin-top:6rem}.data-\[vaul-drawer-direction\=top\]\:mb-24[data-vaul-drawer-direction=top]{margin-bottom:6rem}.data-\[orientation\=horizontal\]\:h-1\.5[data-orientation=horizontal]{height:.375rem}.data-\[orientation\=horizontal\]\:h-full[data-orientation=horizontal]{height:100%}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=vertical\]\:h-auto[data-orientation=vertical]{height:auto}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[panel-group-direction\=vertical\]\:h-px[data-panel-group-direction=vertical]{height:1px}.data-\[size\=default\]\:h-9[data-size=default]{height:2.25rem}.data-\[size\=sm\]\:h-8[data-size=sm]{height:2rem}.data-\[vaul-drawer-direction\=bottom\]\:max-h-\[80vh\][data-vaul-drawer-direction=bottom],.data-\[vaul-drawer-direction\=top\]\:max-h-\[80vh\][data-vaul-drawer-direction=top]{max-height:80vh}.data-\[orientation\=vertical\]\:min-h-44[data-orientation=vertical]{min-height:11rem}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:w-1\.5[data-orientation=vertical]{width:.375rem}.data-\[orientation\=vertical\]\:w-auto[data-orientation=vertical]{width:auto}.data-\[orientation\=vertical\]\:w-full[data-orientation=vertical]{width:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[panel-group-direction\=vertical\]\:w-full[data-panel-group-direction=vertical]{width:100%}.data-\[vaul-drawer-direction\=left\]\:w-3\/4[data-vaul-drawer-direction=left],.data-\[vaul-drawer-direction\=right\]\:w-3\/4[data-vaul-drawer-direction=right]{width:75%}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=checked\]\:translate-x-\[calc\(100\%-2px\)\][data-state=checked]{--tw-translate-x: calc(100% - 2px) ;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes accordion-up{0%{height:var(--radix-accordion-content-height)}to{height:0}}.data-\[state\=closed\]\:animate-accordion-up[data-state=closed]{animation:accordion-up .2s ease-out}@keyframes accordion-down{0%{height:0}to{height:var(--radix-accordion-content-height)}}.data-\[state\=open\]\:animate-accordion-down[data-state=open]{animation:accordion-down .2s ease-out}.data-\[orientation\=vertical\]\:flex-col[data-orientation=vertical],.data-\[panel-group-direction\=vertical\]\:flex-col[data-panel-group-direction=vertical]{flex-direction:column}.data-\[slot\=checkbox-group\]\:gap-3[data-slot=checkbox-group]{gap:.75rem}.data-\[range-end\=true\]\:rounded-md[data-range-end=true]{border-radius:calc(var(--radius) - 2px)}.data-\[range-middle\=true\]\:rounded-none[data-range-middle=true]{border-radius:0}.data-\[range-start\=true\]\:rounded-md[data-range-start=true]{border-radius:calc(var(--radius) - 2px)}.data-\[selected\=true\]\:rounded-none[data-selected=true],.data-\[spacing\=0\]\:rounded-none[data-spacing="0"]{border-radius:0}.data-\[range-end\=true\]\:rounded-r-md[data-range-end=true]{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.data-\[range-start\=true\]\:rounded-l-md[data-range-start=true]{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.data-\[vaul-drawer-direction\=bottom\]\:rounded-t-lg[data-vaul-drawer-direction=bottom]{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.data-\[vaul-drawer-direction\=top\]\:rounded-b-lg[data-vaul-drawer-direction=top]{border-bottom-right-radius:var(--radius);border-bottom-left-radius:var(--radius)}.data-\[spacing\=0\]\:data-\[variant\=outline\]\:border-l-0[data-variant=outline][data-spacing="0"]{border-left-width:0px}.data-\[vaul-drawer-direction\=bottom\]\:border-t[data-vaul-drawer-direction=bottom]{border-top-width:1px}.data-\[vaul-drawer-direction\=left\]\:border-r[data-vaul-drawer-direction=left]{border-right-width:1px}.data-\[vaul-drawer-direction\=right\]\:border-l[data-vaul-drawer-direction=right]{border-left-width:1px}.data-\[vaul-drawer-direction\=top\]\:border-b[data-vaul-drawer-direction=top]{border-bottom-width:1px}.data-\[active\=true\]\:border-ring[data-active=true]{border-color:hsl(var(--ring))}.data-\[state\=checked\]\:border-primary[data-state=checked]{border-color:hsl(var(--primary))}.data-\[active\=true\]\:bg-accent\/50[data-active=true]{background-color:hsl(var(--accent) / .5)}.data-\[range-end\=true\]\:bg-primary[data-range-end=true]{background-color:hsl(var(--primary))}.data-\[range-middle\=true\]\:bg-accent[data-range-middle=true]{background-color:hsl(var(--accent))}.data-\[range-start\=true\]\:bg-primary[data-range-start=true],.data-\[selected-single\=true\]\:bg-primary[data-selected-single=true]{background-color:hsl(var(--primary))}.data-\[selected\=true\]\:bg-accent[data-selected=true]{background-color:hsl(var(--accent))}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\[state\=on\]\:bg-accent[data-state=on],.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=open\]\:bg-accent\/50[data-state=open]{background-color:hsl(var(--accent) / .5)}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:hsl(var(--secondary))}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:hsl(var(--input))}.data-\[inset\]\:pl-8[data-inset]{padding-left:2rem}.data-\[variant\=label\]\:text-sm[data-variant=label]{font-size:.875rem;line-height:1.25rem}.data-\[variant\=legend\]\:text-base[data-variant=legend]{font-size:1rem;line-height:1.5rem}.data-\[active\=true\]\:font-medium[data-active=true]{font-weight:500}.data-\[active\=true\]\:text-accent-foreground[data-active=true]{color:hsl(var(--accent-foreground))}.data-\[error\=true\]\:text-destructive[data-error=true],.data-\[invalid\=true\]\:text-destructive[data-invalid=true]{--tw-text-opacity: 1;color:hsl(var(--destructive) / var(--tw-text-opacity, 1))}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:hsl(var(--muted-foreground))}.data-\[range-end\=true\]\:text-primary-foreground[data-range-end=true]{color:hsl(var(--primary-foreground))}.data-\[range-middle\=true\]\:text-accent-foreground[data-range-middle=true]{color:hsl(var(--accent-foreground))}.data-\[range-start\=true\]\:text-primary-foreground[data-range-start=true],.data-\[selected-single\=true\]\:text-primary-foreground[data-selected-single=true]{color:hsl(var(--primary-foreground))}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:hsl(var(--accent-foreground))}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:hsl(var(--primary-foreground))}.data-\[state\=on\]\:text-accent-foreground[data-state=on],.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:hsl(var(--accent-foreground))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[variant\=destructive\]\:text-destructive[data-variant=destructive]{--tw-text-opacity: 1;color:hsl(var(--destructive) / var(--tw-text-opacity, 1))}.data-\[disabled\=true\]\:opacity-50[data-disabled=true],.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=open\]\:opacity-100[data-state=open]{opacity:1}.data-\[spacing\=0\]\:shadow-none[data-spacing="0"]{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[spacing\=default\]\:data-\[variant\=outline\]\:shadow-xs[data-variant=outline][data-spacing=default],.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[active\=true\]\:ring-\[3px\][data-active=true]{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.data-\[active\=true\]\:ring-ring\/50[data-active=true]{--tw-ring-color: hsl(var(--ring) / .5)}.data-\[state\=closed\]\:duration-300[data-state=closed]{transition-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{transition-duration:.5s}.data-\[motion\^\=from-\]\:animate-in[data-motion^=from-],.data-\[state\=open\]\:animate-in[data-state=open],.data-\[state\=visible\]\:animate-in[data-state=visible]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity: initial;--tw-enter-scale: initial;--tw-enter-rotate: initial;--tw-enter-translate-x: initial;--tw-enter-translate-y: initial}.data-\[motion\^\=to-\]\:animate-out[data-motion^=to-],.data-\[state\=closed\]\:animate-out[data-state=closed],.data-\[state\=hidden\]\:animate-out[data-state=hidden]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity: initial;--tw-exit-scale: initial;--tw-exit-rotate: initial;--tw-exit-translate-x: initial;--tw-exit-translate-y: initial}.data-\[motion\^\=from-\]\:fade-in[data-motion^=from-]{--tw-enter-opacity: 0}.data-\[motion\^\=to-\]\:fade-out[data-motion^=to-],.data-\[state\=closed\]\:fade-out-0[data-state=closed],.data-\[state\=hidden\]\:fade-out[data-state=hidden]{--tw-exit-opacity: 0}.data-\[state\=open\]\:fade-in-0[data-state=open],.data-\[state\=visible\]\:fade-in[data-state=visible]{--tw-enter-opacity: 0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale: .95}.data-\[state\=open\]\:zoom-in-90[data-state=open]{--tw-enter-scale: .9}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale: .95}.data-\[motion\=from-end\]\:slide-in-from-right-52[data-motion=from-end]{--tw-enter-translate-x: 13rem}.data-\[motion\=from-start\]\:slide-in-from-left-52[data-motion=from-start]{--tw-enter-translate-x: -13rem}.data-\[motion\=to-end\]\:slide-out-to-right-52[data-motion=to-end]{--tw-exit-translate-x: 13rem}.data-\[motion\=to-start\]\:slide-out-to-left-52[data-motion=to-start]{--tw-exit-translate-x: -13rem}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y: -.5rem}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x: .5rem}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x: -.5rem}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y: .5rem}.data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y: 100%}.data-\[state\=closed\]\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x: -100%}.data-\[state\=closed\]\:slide-out-to-right[data-state=closed]{--tw-exit-translate-x: 100%}.data-\[state\=closed\]\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y: -100%}.data-\[state\=open\]\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y: 100%}.data-\[state\=open\]\:slide-in-from-left[data-state=open]{--tw-enter-translate-x: -100%}.data-\[state\=open\]\:slide-in-from-right[data-state=open]{--tw-enter-translate-x: 100%}.data-\[state\=open\]\:slide-in-from-top[data-state=open]{--tw-enter-translate-y: -100%}.data-\[state\=closed\]\:duration-300[data-state=closed]{animation-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{animation-duration:.5s}.\*\:data-\[slot\=select-value\]\:line-clamp-1[data-slot=select-value]>*{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\*\:data-\[slot\=select-value\]\:flex[data-slot=select-value]>*{display:flex}.\*\:data-\[slot\=select-value\]\:items-center[data-slot=select-value]>*{align-items:center}.\*\:data-\[slot\=select-value\]\:gap-2[data-slot=select-value]>*{gap:.5rem}.\*\:data-\[slot\=alert-description\]\:text-destructive\/90[data-slot=alert-description]>*{color:hsl(var(--destructive) / .9)}.data-\[panel-group-direction\=vertical\]\:after\:left-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);left:0}.data-\[panel-group-direction\=vertical\]\:after\:h-1[data-panel-group-direction=vertical]:after{content:var(--tw-content);height:.25rem}.data-\[panel-group-direction\=vertical\]\:after\:w-full[data-panel-group-direction=vertical]:after{content:var(--tw-content);width:100%}.data-\[panel-group-direction\=vertical\]\:after\:-translate-y-1\/2[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[panel-group-direction\=vertical\]\:after\:translate-x-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[spacing\=0\]\:first\:rounded-l-md:first-child[data-spacing="0"]{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.data-\[spacing\=0\]\:data-\[variant\=outline\]\:first\:border-l:first-child[data-variant=outline][data-spacing="0"]{border-left-width:1px}.data-\[spacing\=0\]\:last\:rounded-r-md:last-child[data-spacing="0"]{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.data-\[active\=true\]\:hover\:bg-accent:hover[data-active=true],.data-\[state\=open\]\:hover\:bg-accent:hover[data-state=open]{background-color:hsl(var(--accent))}.data-\[active\=true\]\:focus\:bg-accent:focus[data-active=true]{background-color:hsl(var(--accent))}.data-\[state\=open\]\:focus\:bg-accent:focus[data-state=open]{background-color:hsl(var(--accent))}.data-\[variant\=destructive\]\:focus\:bg-destructive\/10:focus[data-variant=destructive]{background-color:hsl(var(--destructive) / .1)}.data-\[variant\=destructive\]\:focus\:text-destructive:focus[data-variant=destructive]{--tw-text-opacity: 1;color:hsl(var(--destructive) / var(--tw-text-opacity, 1))}.group[data-disabled=true] .group-data-\[disabled\=true\]\:pointer-events-none{pointer-events:none}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:relative{position:relative}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]{left:calc(var(--sidebar-width) * -1)}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]{right:calc(var(--sidebar-width) * -1)}.group[data-side=left] .group-data-\[side\=left\]\:-right-4{right:-1rem}.group[data-side=right] .group-data-\[side\=right\]\:left-0{left:0}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:top-full{top:100%}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:z-10{z-index:10}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:-mt-8{margin-top:-2rem}.group\/field-group[data-variant=outline] .group-data-\[variant\=outline\]\/field-group\:-mb-2{margin-bottom:-.5rem}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:mt-1\.5{margin-top:.375rem}.group\/drawer-content[data-vaul-drawer-direction=bottom] .group-data-\[vaul-drawer-direction\=bottom\]\/drawer-content\:block{display:block}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:hidden{display:none}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\)\]{width:calc(var(--sidebar-width-icon) + (--spacing(4)))}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\+2px\)\]{width:calc(var(--sidebar-width-icon) + (--spacing(4)) + 2px)}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:w-0{width:0px}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-side=right] .group-data-\[side\=right\]\:rotate-180,.group[data-state=open] .group-data-\[state\=open\]\:rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:overflow-hidden,.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:overflow-hidden{overflow:hidden}.group[data-variant=floating] .group-data-\[variant\=floating\]\:rounded-lg{border-radius:var(--radius)}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:rounded-md{border-radius:calc(var(--radius) - 2px)}.group[data-variant=floating] .group-data-\[variant\=floating\]\:border,.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:border{border-width:1px}.group[data-side=left] .group-data-\[side\=left\]\:border-r{border-right-width:1px}.group[data-side=right] .group-data-\[side\=right\]\:border-l{border-left-width:1px}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:border-ring{border-color:hsl(var(--ring))}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:bg-popover{background-color:hsl(var(--popover))}.group\/drawer-content[data-vaul-drawer-direction=bottom] .group-data-\[vaul-drawer-direction\=bottom\]\/drawer-content\:text-center,.group\/drawer-content[data-vaul-drawer-direction=top] .group-data-\[vaul-drawer-direction\=top\]\/drawer-content\:text-center{text-align:center}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:text-popover-foreground{color:hsl(var(--popover-foreground))}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:opacity-0{opacity:0}.group\/field[data-disabled=true] .group-data-\[disabled\=true\]\/field\:opacity-50,.group\/input-group[data-disabled=true] .group-data-\[disabled\=true\]\/input-group\:opacity-50,.group[data-disabled=true] .group-data-\[disabled\=true\]\:opacity-50{opacity:.5}.group[data-variant=floating] .group-data-\[variant\=floating\]\:shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-\[3px\]{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-ring\/50{--tw-ring-color: hsl(var(--ring) / .5)}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:duration-200{transition-duration:.2s;animation-duration:.2s}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:after\:left-full:after{content:var(--tw-content);left:100%}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:animate-in[data-state=open]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity: initial;--tw-enter-scale: initial;--tw-enter-rotate: initial;--tw-enter-translate-x: initial;--tw-enter-translate-y: initial}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:animate-out[data-state=closed]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity: initial;--tw-exit-scale: initial;--tw-exit-rotate: initial;--tw-exit-translate-x: initial;--tw-exit-translate-y: initial}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity: 0}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity: 0}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale: .95}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale: .95}.peer\/menu-button[data-size=default]~.peer-data-\[size\=default\]\/menu-button\:top-1\.5{top:.375rem}.peer\/menu-button[data-size=lg]~.peer-data-\[size\=lg\]\/menu-button\:top-2\.5{top:.625rem}.peer\/menu-button[data-size=sm]~.peer-data-\[size\=sm\]\/menu-button\:top-1{top:.25rem}.prose-headings\:font-bold :is(:where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *))){font-weight:700}.prose-headings\:tracking-tight :is(:where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *))){letter-spacing:-.025em}.prose-a\:text-cyan-300 :is(:where(a):not(:where([class~=not-prose],[class~=not-prose] *))){--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1))}.prose-a\:no-underline :is(:where(a):not(:where([class~=not-prose],[class~=not-prose] *))){text-decoration-line:none}.hover\:prose-a\:underline :is(:where(a):not(:where([class~=not-prose],[class~=not-prose] *))):hover{text-decoration-line:underline}.prose-code\:rounded-md :is(:where(code):not(:where([class~=not-prose],[class~=not-prose] *))){border-radius:calc(var(--radius) - 2px)}.prose-code\:bg-cyan-950\/30 :is(:where(code):not(:where([class~=not-prose],[class~=not-prose] *))){background-color:#0833444d}.prose-code\:px-1\.5 :is(:where(code):not(:where([class~=not-prose],[class~=not-prose] *))){padding-left:.375rem;padding-right:.375rem}.prose-code\:py-0\.5 :is(:where(code):not(:where([class~=not-prose],[class~=not-prose] *))){padding-top:.125rem;padding-bottom:.125rem}.prose-code\:text-cyan-200 :is(:where(code):not(:where([class~=not-prose],[class~=not-prose] *))){--tw-text-opacity: 1;color:rgb(165 243 252 / var(--tw-text-opacity, 1))}.prose-pre\:border :is(:where(pre):not(:where([class~=not-prose],[class~=not-prose] *))){border-width:1px}.prose-pre\:border-slate-800 :is(:where(pre):not(:where([class~=not-prose],[class~=not-prose] *))){--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity, 1))}.prose-pre\:bg-slate-950\/80 :is(:where(pre):not(:where([class~=not-prose],[class~=not-prose] *))){background-color:#020617cc}.prose-img\:rounded-xl :is(:where(img):not(:where([class~=not-prose],[class~=not-prose] *))){border-radius:calc(var(--radius) + 4px)}.prose-img\:border :is(:where(img):not(:where([class~=not-prose],[class~=not-prose] *))){border-width:1px}.prose-img\:border-slate-800 :is(:where(img):not(:where([class~=not-prose],[class~=not-prose] *))){--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity, 1))}.dark\:border-input:is(.dark *){border-color:hsl(var(--input))}.dark\:bg-destructive\/60:is(.dark *){background-color:hsl(var(--destructive) / .6)}.dark\:bg-input\/30:is(.dark *){background-color:hsl(var(--input) / .3)}.dark\:bg-transparent:is(.dark *){background-color:transparent}.dark\:text-muted-foreground:is(.dark *){color:hsl(var(--muted-foreground))}.dark\:hover\:bg-accent\/50:hover:is(.dark *){background-color:hsl(var(--accent) / .5)}.dark\:hover\:bg-input\/50:hover:is(.dark *){background-color:hsl(var(--input) / .5)}.dark\:hover\:text-accent-foreground:hover:is(.dark *){color:hsl(var(--accent-foreground))}.dark\:focus-visible\:ring-destructive\/40:focus-visible:is(.dark *){--tw-ring-color: hsl(var(--destructive) / .4)}.dark\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/40:has([data-slot][aria-invalid=true]):is(.dark *){--tw-ring-color: hsl(var(--destructive) / .4)}.dark\:data-\[state\=active\]\:border-input[data-state=active]:is(.dark *){border-color:hsl(var(--input))}.dark\:data-\[state\=active\]\:bg-input\/30[data-state=active]:is(.dark *){background-color:hsl(var(--input) / .3)}.dark\:data-\[state\=checked\]\:bg-primary[data-state=checked]:is(.dark *){background-color:hsl(var(--primary))}.dark\:data-\[state\=checked\]\:bg-primary-foreground[data-state=checked]:is(.dark *){background-color:hsl(var(--primary-foreground))}.dark\:data-\[state\=unchecked\]\:bg-foreground[data-state=unchecked]:is(.dark *){background-color:hsl(var(--foreground))}.dark\:data-\[state\=unchecked\]\:bg-input\/80[data-state=unchecked]:is(.dark *){background-color:hsl(var(--input) / .8)}.dark\:data-\[state\=active\]\:text-foreground[data-state=active]:is(.dark *){color:hsl(var(--foreground))}.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:focus[data-variant=destructive]:is(.dark *){background-color:hsl(var(--destructive) / .2)}@media not all and (min-width:640px){.max-sm\:opacity-100{opacity:1}}@media(min-width:640px){.sm\:ml-6{margin-left:1.5rem}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:inline-flex{display:inline-flex}.sm\:hidden{display:none}.sm\:w-auto{width:auto}.sm\:min-w-\[80px\]{min-width:80px}.sm\:max-w-lg{max-width:32rem}.sm\:max-w-sm{max-width:24rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-end{justify-content:flex-end}.sm\:gap-2\.5{gap:.625rem}.sm\:gap-4{gap:1rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pl-2\.5{padding-left:.625rem}.sm\:pr-2\.5{padding-right:.625rem}.sm\:text-left{text-align:left}.sm\:text-5xl{font-size:3rem;line-height:1}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.data-\[vaul-drawer-direction\=left\]\:sm\:max-w-sm[data-vaul-drawer-direction=left],.data-\[vaul-drawer-direction\=right\]\:sm\:max-w-sm[data-vaul-drawer-direction=right]{max-width:24rem}}@media(min-width:768px){.md\:absolute{position:absolute}.md\:mx-0{margin-left:0;margin-right:0}.md\:mb-16{margin-bottom:4rem}.md\:ml-8{margin-left:2rem}.md\:block{display:block}.md\:flex{display:flex}.md\:table-cell{display:table-cell}.md\:w-\[var\(--radix-navigation-menu-viewport-width\)\]{width:var(--radix-navigation-menu-viewport-width)}.md\:w-auto{width:auto}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:items-center{align-items:center}.md\:justify-start{justify-content:flex-start}.md\:gap-1\.5{gap:.375rem}.md\:divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse: 0;border-right-width:calc(1px * var(--tw-divide-x-reverse));border-left-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}.md\:divide-white\/5>:not([hidden])~:not([hidden]){border-color:#ffffff0d}.md\:p-12{padding:3rem}.md\:p-6{padding:1.5rem}.md\:py-20{padding-top:5rem;padding-bottom:5rem}.md\:py-32{padding-top:8rem;padding-bottom:8rem}.md\:text-left{text-align:left}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}.md\:text-5xl{font-size:3rem;line-height:1}.md\:text-6xl{font-size:3.75rem;line-height:1}.md\:text-7xl{font-size:4.5rem;line-height:1}.md\:text-9xl{font-size:8rem;line-height:1}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}.md\:opacity-0{opacity:0}.md\:after\:hidden:after{content:var(--tw-content);display:none}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:m-2{margin:.5rem}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:ml-0{margin-left:0}.peer[data-variant=inset][data-state=collapsed]~.md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:ml-2{margin-left:.5rem}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:rounded-xl{border-radius:calc(var(--radius) + 4px)}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}}@media(min-width:1024px){.lg\:col-span-1{grid-column:span 1 / span 1}.lg\:col-span-2{grid-column:span 2 / span 2}.lg\:col-span-3{grid-column:span 3 / span 3}.lg\:col-span-4{grid-column:span 4 / span 4}.lg\:col-span-8{grid-column:span 8 / span 8}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:gap-8{gap:2rem}.lg\:text-6xl{font-size:3.75rem;line-height:1}.lg\:text-7xl{font-size:4.5rem;line-height:1}}.\[\&\+\[data-slot\=item-content\]\]\:flex-none+[data-slot=item-content]{flex:none}.\[\&\:first-child\[data-selected\=true\]_button\]\:rounded-l-md:first-child[data-selected=true] button{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\:last-child\[data-selected\=true\]_button\]\:rounded-r-md:last-child[data-selected=true] button{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\:nth-child\(2\)\[data-selected\=true\]_button\]\:rounded-l-md:nth-child(2)[data-selected=true] button{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.\[\&\>\*\:not\(\:first-child\)\]\:rounded-l-none>*:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.\[\&\>\*\:not\(\:first-child\)\]\:rounded-t-none>*:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.\[\&\>\*\:not\(\:first-child\)\]\:border-l-0>*:not(:first-child){border-left-width:0px}.\[\&\>\*\:not\(\:first-child\)\]\:border-t-0>*:not(:first-child){border-top-width:0px}.\[\&\>\*\:not\(\:last-child\)\]\:rounded-b-none>*:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0}.\[\&\>\*\:not\(\:last-child\)\]\:rounded-r-none>*:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.\[\&\>\*\]\:w-full>*{width:100%}.\[\&\>\*\]\:focus-visible\:relative:focus-visible>*{position:relative}.\[\&\>\*\]\:focus-visible\:z-10:focus-visible>*{z-index:10}.\[\&\>\*\]\:data-\[slot\=field\]\:p-4[data-slot=field]>*{padding:1rem}.\[\&\>\.sr-only\]\:w-auto>.sr-only{width:auto}.\[\&\>\[data-slot\=field-group\]\]\:gap-4>[data-slot=field-group]{gap:1rem}.\[\&\>\[data-slot\=field-label\]\]\:flex-auto>[data-slot=field-label]{flex:1 1 auto}.has-\[select\[aria-hidden\=true\]\:last-child\]\:\[\&\>\[data-slot\=select-trigger\]\:last-of-type\]\:rounded-r-md>[data-slot=select-trigger]:last-of-type:has(select[aria-hidden=true]:last-child){border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\>\[data-slot\=select-trigger\]\:not\(\[class\*\=\'w-\'\]\)\]\:w-fit>[data-slot=select-trigger]:not([class*=w-]){width:-moz-fit-content;width:fit-content}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y: 2px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>a\:hover\]\:text-primary>a:hover{color:hsl(var(--primary))}.\[\&\>a\]\:underline>a{text-decoration-line:underline}.\[\&\>a\]\:underline-offset-4>a{text-underline-offset:4px}.\[\&\>button\]\:hidden>button{display:none}.\[\&\>input\]\:flex-1>input{flex:1 1 0%}.has-\[\>\[data-align\=block-end\]\]\:\[\&\>input\]\:pt-3>input:has(>[data-align=block-end]){padding-top:.75rem}.has-\[\>\[data-align\=block-start\]\]\:\[\&\>input\]\:pb-3>input:has(>[data-align=block-start]){padding-bottom:.75rem}.has-\[\>\[data-align\=inline-end\]\]\:\[\&\>input\]\:pr-2>input:has(>[data-align=inline-end]){padding-right:.5rem}.has-\[\>\[data-align\=inline-start\]\]\:\[\&\>input\]\:pl-2>input:has(>[data-align=inline-start]){padding-left:.5rem}.\[\&\>kbd\]\:rounded-\[calc\(var\(--radius\)-5px\)\]>kbd{border-radius:calc(var(--radius) - 5px)}.\[\&\>span\:last-child\]\:truncate>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.\[\&\>span\]\:text-xs>span{font-size:.75rem;line-height:1rem}.\[\&\>span\]\:opacity-70>span{opacity:.7}.\[\&\>svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5>svg:not([class*=size-]){width:.875rem;height:.875rem}.\[\&\>svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4>svg:not([class*=size-]){width:1rem;height:1rem}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3>svg{width:.75rem;height:.75rem}.\[\&\>svg\]\:size-3\.5>svg{width:.875rem;height:.875rem}.\[\&\>svg\]\:size-4>svg{width:1rem;height:1rem}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:translate-y-0\.5>svg{--tw-translate-y: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>svg\]\:text-current>svg{color:currentColor}.\[\&\>svg\]\:text-muted-foreground>svg{color:hsl(var(--muted-foreground))}.\[\&\>tr\]\:last\:border-b-0:last-child>tr{border-bottom-width:0px}.\[\&\[data-panel-group-direction\=vertical\]\>div\]\:rotate-90[data-panel-group-direction=vertical]>div{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-top:.375rem;padding-bottom:.375rem}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{font-weight:500}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:hsl(var(--muted-foreground))}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:3rem}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-top:.75rem;padding-bottom:.75rem}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:1.25rem}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:1.25rem}.\[\&_img\]\:size-full img{width:100%;height:100%}.\[\&_img\]\:object-cover img{-o-object-fit:cover;object-fit:cover}.\[\&_p\]\:leading-relaxed p{line-height:1.625}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3 svg:not([class*=size-]){width:.75rem;height:.75rem}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:1rem;height:1rem}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-6 svg:not([class*=size-]){width:1.5rem;height:1.5rem}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*=text-]){color:hsl(var(--muted-foreground))}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0px}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{right:-.5rem}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{left:-.5rem}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}[data-slot=card-content] .\[\[data-slot\=card-content\]_\&\]\:bg-transparent,[data-slot=popover-content] .\[\[data-slot\=popover-content\]_\&\]\:bg-transparent{background-color:transparent}[data-slot=tooltip-content] .\[\[data-slot\=tooltip-content\]_\&\]\:bg-background\/20{background-color:hsl(var(--background) / .2)}[data-slot=tooltip-content] .\[\[data-slot\=tooltip-content\]_\&\]\:text-background{color:hsl(var(--background))}[data-slot=tooltip-content] .dark\:\[\[data-slot\=tooltip-content\]_\&\]\:bg-background\/10:is(.dark *){background-color:hsl(var(--background) / .1)}[data-variant=legend]+.\[\[data-variant\=legend\]\+\&\]\:-mt-1\.5{margin-top:-.375rem}a.\[a\&\]\:hover\:bg-accent:hover{background-color:hsl(var(--accent))}a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:hsl(var(--secondary) / .9)}a.\[a\&\]\:hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))} diff --git a/assets/index-B4dH-q6G.css b/assets/index-B4dH-q6G.css deleted file mode 100644 index a3b7530d..00000000 --- a/assets/index-B4dH-q6G.css +++ /dev/null @@ -1 +0,0 @@ -*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,system-ui,-apple-system,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:JetBrains Mono,Fira Code,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px}:root{--background: 222 47% 4%;--foreground: 210 40% 93%;--card: 222 47% 7%;--card-foreground: 210 40% 93%;--popover: 222 47% 8%;--popover-foreground: 210 40% 93%;--primary: 187 92% 69%;--primary-foreground: 222 47% 4%;--secondary: 215 25% 70%;--secondary-foreground: 210 40% 93%;--muted: 215 25% 20%;--muted-foreground: 215 16% 72%;--accent: 187 92% 69%;--accent-foreground: 222 47% 4%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 0 0% 98%;--border: 215 25% 18%;--input: 215 25% 18%;--ring: 187 92% 69%;--radius: 1rem}html{scroll-behavior:smooth}.js-enabled #prerendered{display:none!important}body{overflow-x:hidden;--tw-bg-opacity: 1;background-color:rgb(2 6 23 / var(--tw-bg-opacity, 1));font-family:Inter,system-ui,-apple-system,sans-serif;color:hsl(var(--foreground));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-image:radial-gradient(circle at 10% 20%,rgba(103,232,249,.04) 0%,transparent 40%),radial-gradient(circle at 90% 80%,rgba(251,191,36,.02) 0%,transparent 40%),linear-gradient(to bottom,#020617,#0b1329);background-attachment:fixed}h1,h2,h3,h4,h5,h6{font-family:Inter,system-ui,-apple-system,sans-serif;letter-spacing:-.025em;color:hsl(var(--primary));text-wrap:balance}code{font-family:JetBrains Mono,Fira Code,monospace}::-moz-selection{background:#67e8f94d;color:#e2e8f0}::selection{background:#67e8f94d;color:#e2e8f0}.\!container{width:100%!important}.container{width:100%}@media(min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media(min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media(min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media(min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media(min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-kbd: #111827;--tw-prose-kbd-shadows: rgb(17 24 39 / 10%);--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-kbd: #fff;--tw-prose-invert-kbd-shadows: rgb(255 255 255 / 10%);--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-cyan{--tw-prose-links: #0891b2;--tw-prose-invert-links: #06b6d4}.prose-invert{--tw-prose-body: var(--tw-prose-invert-body);--tw-prose-headings: var(--tw-prose-invert-headings);--tw-prose-lead: var(--tw-prose-invert-lead);--tw-prose-links: var(--tw-prose-invert-links);--tw-prose-bold: var(--tw-prose-invert-bold);--tw-prose-counters: var(--tw-prose-invert-counters);--tw-prose-bullets: var(--tw-prose-invert-bullets);--tw-prose-hr: var(--tw-prose-invert-hr);--tw-prose-quotes: var(--tw-prose-invert-quotes);--tw-prose-quote-borders: var(--tw-prose-invert-quote-borders);--tw-prose-captions: var(--tw-prose-invert-captions);--tw-prose-kbd: var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows: var(--tw-prose-invert-kbd-shadows);--tw-prose-code: var(--tw-prose-invert-code);--tw-prose-pre-code: var(--tw-prose-invert-pre-code);--tw-prose-pre-bg: var(--tw-prose-invert-pre-bg);--tw-prose-th-borders: var(--tw-prose-invert-th-borders);--tw-prose-td-borders: var(--tw-prose-invert-td-borders)}.btn-cyan{display:inline-flex;align-items:center;justify-content:center;border-radius:calc(var(--radius) + 4px);background-image:linear-gradient(to right,var(--tw-gradient-stops));--tw-gradient-from: #22d3ee var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 211 238 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);--tw-gradient-to: #67e8f9 var(--tw-gradient-to-position);padding:.75rem 1.5rem;font-weight:700;--tw-text-opacity: 1;color:rgb(2 6 23 / var(--tw-text-opacity, 1));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;animation-duration:.3s}.btn-cyan:hover{--tw-gradient-from: #67e8f9 var(--tw-gradient-from-position);--tw-gradient-to: rgb(103 232 249 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);--tw-gradient-to: #a5f3fc var(--tw-gradient-to-position);--tw-shadow: 0 0 24px rgba(103,232,249,.45);--tw-shadow-colored: 0 0 24px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.btn-cyan:active{--tw-scale-x: .97;--tw-scale-y: .97;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.btn-gold{display:inline-flex;align-items:center;justify-content:center;border-radius:calc(var(--radius) + 4px);border-width:1px;border-color:#fbbf2499;background-color:#fbbf240d;padding:.75rem 1.5rem;font-weight:700;--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;animation-duration:.3s}.btn-gold:hover{--tw-border-opacity: 1;border-color:rgb(251 191 36 / var(--tw-border-opacity, 1));background-color:#fbbf241a;--tw-shadow: 0 0 24px rgba(251,191,36,.25);--tw-shadow-colored: 0 0 24px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.btn-gold:active{--tw-scale-x: .97;--tw-scale-y: .97;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.btn-outline{display:inline-flex;align-items:center;justify-content:center;border-radius:calc(var(--radius) + 4px);border-width:1px;--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity, 1));padding:.75rem 1.5rem;color:hsl(var(--secondary));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;animation-duration:.3s}.btn-outline:hover{border-color:#67e8f966;background-color:#ffffff0d;color:hsl(var(--primary))}.btn-outline:active{--tw-scale-x: .97;--tw-scale-y: .97;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.card-surface{border-radius:1rem;border-width:1px;border-color:#1e293bcc;background-color:#0b132966;padding:1.5rem;--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.5s;animation-duration:.5s}.card-surface:hover{border-color:#67e8f94d;--tw-shadow: 0 0 30px rgba(103,232,249,.12);--tw-shadow-colored: 0 0 30px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.card-surface:not(.revealed),.prose:not(.revealed){opacity:0;transform:translateY(30px)}.card-surface.revealed,.prose.revealed{opacity:1;transform:translateY(0);transition:opacity .7s ease-out,transform .7s ease-out}.section-padding{padding-left:1.5rem;padding-right:1.5rem}@media(min-width:640px){.section-padding{padding-left:2rem;padding-right:2rem}}@media(min-width:1024px){.section-padding{padding-left:4rem;padding-right:4rem}}@media(min-width:1280px){.section-padding{padding-left:6rem;padding-right:6rem}}.eyebrow-pill{display:inline-flex;align-items:center;gap:.5rem;border-radius:9999px;border-width:1px;border-color:#67e8f933;background-color:#67e8f91a;padding:.375rem .75rem;font-size:.75rem;line-height:1rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1))}.eyebrow-pill-gold{display:inline-flex;align-items:center;gap:.5rem;border-radius:9999px;border-width:1px;border-color:#fbbf2433;background-color:#fbbf241a;padding:.375rem .75rem;font-size:.75rem;line-height:1rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.eyebrow-pill-emerald{display:inline-flex;align-items:center;gap:.5rem;border-radius:9999px;border-width:1px;border-color:#10b98133;background-color:#10b9811a;padding:.375rem .75rem;font-size:.75rem;line-height:1rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.link-accent{--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1));text-underline-offset:4px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}.link-accent:hover{--tw-text-opacity: 1;color:rgb(165 243 252 / var(--tw-text-opacity, 1));text-decoration-line:underline}.section-feature{padding-top:5rem;padding-bottom:5rem}@media(min-width:768px){.section-feature{padding-top:7rem;padding-bottom:7rem}}.section-band{padding-top:4rem;padding-bottom:4rem}@media(min-width:768px){.section-band{padding-top:5rem;padding-bottom:5rem}}.section-thin{padding-top:2.5rem;padding-bottom:2.5rem}@media(min-width:768px){.section-thin{padding-top:3rem;padding-bottom:3rem}}.glass-nav{border-width:1px;border-color:#ffffff1a;background-color:#0b1329bf;--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.neon-border-cyan{box-shadow:0 0 24px #67e8f91f,inset 0 0 24px #67e8f90a}.neon-border-gold{box-shadow:0 0 24px #fbbf241f,inset 0 0 24px #fbbf240a}.quantum-grid-bg{background-size:30px 30px;background-image:linear-gradient(to right,rgba(255,255,255,.015) 1px,transparent 1px),linear-gradient(to bottom,rgba(255,255,255,.015) 1px,transparent 1px)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.-bottom-12{bottom:-3rem}.-left-12{left:-3rem}.-left-\[40px\]{left:-40px}.-right-12{right:-3rem}.-top-12{top:-3rem}.-top-3{top:-.75rem}.bottom-0{bottom:0}.bottom-3{bottom:.75rem}.left-0{left:0}.left-1\/2{left:50%}.left-2{left:.5rem}.left-3{left:.75rem}.left-\[-1px\]{left:-1px}.left-\[50\%\]{left:50%}.right-0{right:0}.right-1{right:.25rem}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.top-0{top:0}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-1\/3{top:33.333333%}.top-1\/4{top:25%}.top-24{top:6rem}.top-3{top:.75rem}.top-3\.5{top:.875rem}.top-4{top:1rem}.top-6{top:1.5rem}.top-\[1px\]{top:1px}.top-\[50\%\]{top:50%}.top-\[60\%\]{top:60%}.top-full{top:100%}.isolate{isolation:isolate}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.z-\[1\]{z-index:1}.order-first{order:-9999}.order-last{order:9999}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2 / span 2}.row-start-1{grid-row-start:1}.\!m-0{margin:0!important}.\!my-0{margin-top:0!important;margin-bottom:0!important}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-3\.5{margin-left:.875rem;margin-right:.875rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-4{margin-top:1rem;margin-bottom:1rem}.-ml-4{margin-left:-1rem}.-mt-4{margin-top:-1rem}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.mb-14{margin-bottom:3.5rem}.mb-16{margin-bottom:4rem}.mb-2{margin-bottom:.5rem}.mb-20{margin-bottom:5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-auto{margin-left:auto}.mr-2{margin-right:.5rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-10{margin-top:2.5rem}.mt-16{margin-top:4rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-auto{margin-top:auto}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-row{display:table-row}.grid{display:grid}.contents{display:contents}.hidden{display:none}.aspect-square{aspect-ratio:1 / 1}.aspect-video{aspect-ratio:16 / 9}.size-10{width:2.5rem;height:2.5rem}.size-2{width:.5rem;height:.5rem}.size-2\.5{width:.625rem;height:.625rem}.size-3{width:.75rem;height:.75rem}.size-3\.5{width:.875rem;height:.875rem}.size-4{width:1rem;height:1rem}.size-6{width:1.5rem;height:1.5rem}.size-7{width:1.75rem;height:1.75rem}.size-8{width:2rem;height:2rem}.size-9{width:2.25rem;height:2.25rem}.size-auto{width:auto;height:auto}.size-full{width:100%;height:100%}.h-0\.5{height:.125rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-40{height:10rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-72{height:18rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-96{height:24rem}.h-\[1\.15rem\]{height:1.15rem}.h-\[36rem\]{height:36rem}.h-\[500px\]{height:500px}.h-\[600px\]{height:600px}.h-\[800px\]{height:800px}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-\[var\(--radix-navigation-menu-viewport-height\)\]{height:var(--radix-navigation-menu-viewport-height)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-svh{height:100svh}.max-h-0{max-height:0px}.max-h-\[300px\]{max-height:300px}.max-h-\[400px\]{max-height:400px}.max-h-\[calc\(100dvh-110px\)\]{max-height:calc(100dvh - 110px)}.min-h-0{min-height:0px}.min-h-16{min-height:4rem}.min-h-4{min-height:1rem}.min-h-\[44px\]{min-height:44px}.min-h-\[500px\]{min-height:500px}.min-h-\[60vh\]{min-height:60vh}.min-h-\[80vh\]{min-height:80vh}.min-h-screen{min-height:100vh}.min-h-svh{min-height:100svh}.w-1\.5{width:.375rem}.w-1\/2{width:50%}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-3\/4{width:75%}.w-4{width:1rem}.w-40{width:10rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-96{width:24rem}.w-\[1000px\]{width:1000px}.w-\[100px\]{width:100px}.w-\[1px\]{width:1px}.w-\[36rem\]{width:36rem}.w-\[600px\]{width:600px}.w-\[800px\]{width:800px}.w-\[95\%\]{width:95%}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-10{min-width:2.5rem}.min-w-5{min-width:1.25rem}.min-w-8{min-width:2rem}.min-w-9{min-width:2.25rem}.min-w-\[120px\]{min-width:120px}.min-w-\[12rem\]{min-width:12rem}.min-w-\[140px\]{min-width:140px}.min-w-\[44px\]{min-width:44px}.min-w-\[560px\]{min-width:560px}.min-w-\[640px\]{min-width:640px}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-\[11rem\]{max-width:11rem}.max-w-\[440px\]{max-width:440px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-max{max-width:-moz-max-content;max-width:max-content}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-prose{max-width:65ch}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-full{flex-basis:100%}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-1\/3{--tw-translate-x: -33.333333%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-px{--tw-translate-x: -1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-2{--tw-translate-y: -.5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-\[140\%\]{--tw-translate-y: -140%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-1\/3{--tw-translate-x: 33.333333%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-px{--tw-translate-x: 1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0\.5{--tw-translate-y: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-1\/3{--tw-translate-y: 33.333333%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-2{--tw-translate-y: .5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y: calc(-50% - 2px) ;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-45{--tw-rotate: -45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-45{--tw-rotate: 45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.animate-gradient-xy{animation:gradient-xy 6s ease infinite}@keyframes ping{75%,to{transform:scale(2);opacity:0}}.animate-ping{animation:ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.4}}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-text{-webkit-user-select:text;-moz-user-select:text;user-select:text}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize-none{resize:none}.resize-y{resize:vertical}.scroll-my-1{scroll-margin-top:.25rem;scroll-margin-bottom:.25rem}.scroll-mt-32{scroll-margin-top:8rem}.scroll-py-1{scroll-padding-top:.25rem;scroll-padding-bottom:.25rem}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-\[0_1fr\]{grid-template-columns:0 1fr}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-items-start{justify-items:start}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-12{gap:3rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-7{gap:1.75rem}.gap-8{gap:2rem}.gap-\[--spacing\(var\(--gap\)\)\]{gap:var(--spacing(var(--gap)))}.gap-x-12{-moz-column-gap:3rem;column-gap:3rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-0\.5{row-gap:.125rem}.gap-y-1{row-gap:.25rem}.gap-y-8{row-gap:2rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem * var(--tw-space-y-reverse))}.space-y-12>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(3rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(3rem * var(--tw-space-y-reverse))}.space-y-14>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(3.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(3.5rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-20>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gridline>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(30 41 59 / var(--tw-divide-opacity, 1))}.divide-gridline\/50>:not([hidden])~:not([hidden]){border-color:#1e293b80}.divide-slate-800\/60>:not([hidden])~:not([hidden]){border-color:#1e293b99}.self-start{align-self:flex-start}.self-center{align-self:center}.self-stretch{align-self:stretch}.justify-self-end{justify-self:end}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-balance{text-wrap:balance}.text-pretty{text-wrap:pretty}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-\[23px\]{border-radius:23px}.rounded-\[2px\]{border-radius:2px}.rounded-\[4px\]{border-radius:4px}.rounded-\[calc\(var\(--radius\)-5px\)\]{border-radius:calc(var(--radius) - 5px)}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-xs{border-radius:calc(var(--radius) - 6px)}.rounded-l-md{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.rounded-r-md{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.rounded-tl-sm{border-top-left-radius:calc(var(--radius) - 4px)}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-4{border-width:4px}.border-y{border-top-width:1px;border-bottom-width:1px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-blue-400\/30{border-color:#60a5fa4d}.border-border{border-color:hsl(var(--border))}.border-cyan-300{--tw-border-opacity: 1;border-color:rgb(103 232 249 / var(--tw-border-opacity, 1))}.border-cyan-300\/10{border-color:#67e8f91a}.border-cyan-300\/20{border-color:#67e8f933}.border-cyan-300\/25{border-color:#67e8f940}.border-cyan-300\/30{border-color:#67e8f94d}.border-cyan-300\/35{border-color:#67e8f959}.border-cyan-300\/40{border-color:#67e8f966}.border-cyan-800\/40{border-color:#155e7566}.border-cyan-800\/50{border-color:#155e7580}.border-cyan-800\/60{border-color:#155e7599}.border-cyan-900\/40{border-color:#164e6366}.border-cyan-900\/50{border-color:#164e6380}.border-cyan-900\/60{border-color:#164e6399}.border-emerald-500\/20{border-color:#10b98133}.border-emerald-500\/30{border-color:#10b9814d}.border-gold-400\/20{border-color:#fbbf2433}.border-gold-400\/25{border-color:#fbbf2440}.border-gold-400\/30{border-color:#fbbf244d}.border-gold-400\/60{border-color:#fbbf2499}.border-green-400\/20{border-color:#4ade8033}.border-gridline{--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity, 1))}.border-gridline\/30{border-color:#1e293b4d}.border-gridline\/40{border-color:#1e293b66}.border-gridline\/50{border-color:#1e293b80}.border-gridline\/60{border-color:#1e293b99}.border-input{border-color:hsl(var(--input))}.border-primary{border-color:hsl(var(--primary))}.border-purple-400\/20{border-color:#c084fc33}.border-red-400\/20{border-color:#f8717133}.border-slate-700{--tw-border-opacity: 1;border-color:rgb(51 65 85 / var(--tw-border-opacity, 1))}.border-slate-800{--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity, 1))}.border-slate-800\/60{border-color:#1e293b99}.border-slate-800\/80{border-color:#1e293bcc}.border-slate-800\/90{border-color:#1e293be6}.border-transparent{border-color:transparent}.border-void{--tw-border-opacity: 1;border-color:rgb(2 6 23 / var(--tw-border-opacity, 1))}.border-white\/5{border-color:#ffffff0d}.border-l-transparent{border-left-color:transparent}.border-t-cyan-300{--tw-border-opacity: 1;border-top-color:rgb(103 232 249 / var(--tw-border-opacity, 1))}.border-t-transparent{border-top-color:transparent}.bg-\[\#050b14\]{--tw-bg-opacity: 1;background-color:rgb(5 11 20 / var(--tw-bg-opacity, 1))}.bg-\[\#0b1329\]\/40{background-color:#0b132966}.bg-accent{background-color:hsl(var(--accent))}.bg-background{background-color:hsl(var(--background))}.bg-black\/50{background-color:#00000080}.bg-blue-500\/10{background-color:#3b82f61a}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-cyan-300{--tw-bg-opacity: 1;background-color:rgb(103 232 249 / var(--tw-bg-opacity, 1))}.bg-cyan-300\/10{background-color:#67e8f91a}.bg-cyan-300\/5{background-color:#67e8f90d}.bg-cyan-400{--tw-bg-opacity: 1;background-color:rgb(34 211 238 / var(--tw-bg-opacity, 1))}.bg-cyan-400\/10{background-color:#22d3ee1a}.bg-cyan-400\/5{background-color:#22d3ee0d}.bg-cyan-500\/20{background-color:#06b6d433}.bg-cyan-900\/10{background-color:#164e631a}.bg-cyan-950\/50{background-color:#08334480}.bg-cyan-950\/60{background-color:#08334499}.bg-cyan-950\/80{background-color:#083344cc}.bg-destructive{--tw-bg-opacity: 1;background-color:hsl(var(--destructive) / var(--tw-bg-opacity, 1))}.bg-emerald-950\/50{background-color:#022c2280}.bg-foreground{background-color:hsl(var(--foreground))}.bg-gold-400{--tw-bg-opacity: 1;background-color:rgb(251 191 36 / var(--tw-bg-opacity, 1))}.bg-gold-400\/10{background-color:#fbbf241a}.bg-gold-400\/5{background-color:#fbbf240d}.bg-green-400{--tw-bg-opacity: 1;background-color:rgb(74 222 128 / var(--tw-bg-opacity, 1))}.bg-green-400\/10{background-color:#4ade801a}.bg-green-400\/5{background-color:#4ade800d}.bg-green-500\/80{background-color:#22c55ecc}.bg-gridline{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-input{background-color:hsl(var(--input))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted-foreground{background-color:hsl(var(--muted-foreground))}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/20{background-color:hsl(var(--primary) / .2)}.bg-purple-400\/10{background-color:#c084fc1a}.bg-red-400\/5{background-color:#f871710d}.bg-red-500\/80{background-color:#ef4444cc}.bg-secondary{background-color:hsl(var(--secondary))}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-slate-800\/20{background-color:#1e293b33}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-slate-900\/40{background-color:#0f172a66}.bg-slate-900\/50{background-color:#0f172a80}.bg-slate-900\/90{background-color:#0f172ae6}.bg-slate-950{--tw-bg-opacity: 1;background-color:rgb(2 6 23 / var(--tw-bg-opacity, 1))}.bg-slate-950\/90{background-color:#020617e6}.bg-surface{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-surface\/10{background-color:#0f172a1a}.bg-surface\/20{background-color:#0f172a33}.bg-surface\/30{background-color:#0f172a4d}.bg-surface\/50{background-color:#0f172a80}.bg-surface\/70{background-color:#0f172ab3}.bg-surface\/90{background-color:#0f172ae6}.bg-transparent{background-color:transparent}.bg-void{--tw-bg-opacity: 1;background-color:rgb(2 6 23 / var(--tw-bg-opacity, 1))}.bg-void\/30{background-color:#0206174d}.bg-void\/50{background-color:#02061780}.bg-void\/70{background-color:#020617b3}.bg-void\/80{background-color:#020617cc}.bg-void\/90{background-color:#020617e6}.bg-void\/95{background-color:#020617f2}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-yellow-500\/80{background-color:#eab308cc}.bg-\[radial-gradient\(ellipse_at_top\,_var\(--tw-gradient-stops\)\)\]{background-image:radial-gradient(ellipse at top,var(--tw-gradient-stops))}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-cyan-300{--tw-gradient-from: #67e8f9 var(--tw-gradient-from-position);--tw-gradient-to: rgb(103 232 249 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-300\/10{--tw-gradient-from: rgb(103 232 249 / .1) var(--tw-gradient-from-position);--tw-gradient-to: rgb(103 232 249 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-300\/5{--tw-gradient-from: rgb(103 232 249 / .05) var(--tw-gradient-from-position);--tw-gradient-to: rgb(103 232 249 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-300\/80{--tw-gradient-from: rgb(103 232 249 / .8) var(--tw-gradient-from-position);--tw-gradient-to: rgb(103 232 249 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-400{--tw-gradient-from: #22d3ee var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 211 238 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-400\/5{--tw-gradient-from: rgb(34 211 238 / .05) var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 211 238 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-500\/\[0\.04\]{--tw-gradient-from: rgb(6 182 212 / .04) var(--tw-gradient-from-position);--tw-gradient-to: rgb(6 182 212 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-900\/20{--tw-gradient-from: rgb(22 78 99 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(22 78 99 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-950\/40{--tw-gradient-from: rgb(8 51 68 / .4) var(--tw-gradient-from-position);--tw-gradient-to: rgb(8 51 68 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-gold-400\/5{--tw-gradient-from: rgb(251 191 36 / .05) var(--tw-gradient-from-position);--tw-gradient-to: rgb(251 191 36 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-400\/5{--tw-gradient-from: rgb(74 222 128 / .05) var(--tw-gradient-from-position);--tw-gradient-to: rgb(74 222 128 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-950{--tw-gradient-from: #020617 var(--tw-gradient-from-position);--tw-gradient-to: rgb(2 6 23 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-surface\/50{--tw-gradient-from: rgb(15 23 42 / .5) var(--tw-gradient-from-position);--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-void\/60{--tw-gradient-from: rgb(2 6 23 / .6) var(--tw-gradient-from-position);--tw-gradient-to: rgb(2 6 23 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-white{--tw-gradient-from: #fff var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-cyan-500{--tw-gradient-to: rgb(6 182 212 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #06b6d4 var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-gold-400\/30{--tw-gradient-to: rgb(251 191 36 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(251 191 36 / .3) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-surface{--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #0f172a var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-surface\/30{--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(15 23 42 / .3) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-surface\/40{--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(15 23 42 / .4) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-surface\/60{--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(15 23 42 / .6) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-transparent{--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), transparent var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-void{--tw-gradient-to: rgb(2 6 23 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #020617 var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-void\/25{--tw-gradient-to: rgb(2 6 23 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(2 6 23 / .25) var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-cyan-300\/10{--tw-gradient-to: rgb(103 232 249 / .1) var(--tw-gradient-to-position)}.to-cyan-400{--tw-gradient-to: #22d3ee var(--tw-gradient-to-position)}.to-cyan-950\/20{--tw-gradient-to: rgb(8 51 68 / .2) var(--tw-gradient-to-position)}.to-gold-400{--tw-gradient-to: #fbbf24 var(--tw-gradient-to-position)}.to-slate-400{--tw-gradient-to: #94a3b8 var(--tw-gradient-to-position)}.to-slate-950{--tw-gradient-to: #020617 var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to: transparent var(--tw-gradient-to-position)}.to-void{--tw-gradient-to: #020617 var(--tw-gradient-to-position)}.to-white\/70{--tw-gradient-to: rgb(255 255 255 / .7) var(--tw-gradient-to-position)}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.fill-current{fill:currentColor}.fill-foreground{fill:hsl(var(--foreground))}.fill-primary{fill:hsl(var(--primary))}.object-cover{-o-object-fit:cover;object-fit:cover}.\!p-5{padding:1.25rem!important}.p-0{padding:0}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-12{padding:3rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-3\.5{padding:.875rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[3px\]{padding:3px}.p-px{padding:1px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-24{padding-top:6rem;padding-bottom:6rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-10{padding-bottom:2.5rem}.pb-20{padding-bottom:5rem}.pb-24{padding-bottom:6rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-5{padding-left:1.25rem}.pl-8{padding-left:2rem}.pr-1{padding-right:.25rem}.pr-14{padding-right:3.5rem}.pr-2{padding-right:.5rem}.pr-2\.5{padding-right:.625rem}.pr-3{padding-right:.75rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-0\.5{padding-top:.125rem}.pt-12{padding-top:3rem}.pt-2{padding-top:.5rem}.pt-20{padding-top:5rem}.pt-24{padding-top:6rem}.pt-3{padding-top:.75rem}.pt-32{padding-top:8rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.align-middle{vertical-align:middle}.font-mono{font-family:JetBrains Mono,Fira Code,monospace}.font-sans{font-family:Inter,system-ui,-apple-system,sans-serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-8xl{font-size:6rem;line-height:1}.text-\[0\.65rem\]{font-size:.65rem}.text-\[0\.8rem\]{font-size:.8rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-sm\/relaxed{font-size:.875rem;line-height:1.625}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-\[1\.05\]{line-height:1.05}.leading-\[1\.1\]{line-height:1.1}.leading-none{line-height:1}.leading-normal{line-height:1.5}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-\[0\.2em\]{letter-spacing:.2em}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-accent-foreground{color:hsl(var(--accent-foreground))}.text-background{color:hsl(var(--background))}.text-blue-300{--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-current{color:currentColor}.text-cyan-100\/70{color:#cffafeb3}.text-cyan-200{--tw-text-opacity: 1;color:rgb(165 243 252 / var(--tw-text-opacity, 1))}.text-cyan-300{--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1))}.text-cyan-300\/20{color:#67e8f933}.text-cyan-300\/80{color:#67e8f9cc}.text-cyan-400{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.text-destructive{--tw-text-opacity: 1;color:hsl(var(--destructive) / var(--tw-text-opacity, 1))}.text-emerald-400{--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.text-foreground{color:hsl(var(--foreground))}.text-gold-200\/60{color:#fde68a99}.text-gold-300{--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.text-gold-400{--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.text-gold-400\/60{color:#fbbf2499}.text-gold-400\/80{color:#fbbf24cc}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/60{color:hsl(var(--muted-foreground) / .6)}.text-muted-foreground\/70{color:hsl(var(--muted-foreground) / .7)}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-purple-400{--tw-text-opacity: 1;color:rgb(192 132 252 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-secondary{color:hsl(var(--secondary))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-secondary\/80{color:hsl(var(--secondary) / .8)}.text-secondary\/90{color:hsl(var(--secondary) / .9)}.text-slate-100{--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity, 1))}.text-slate-200{--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity, 1))}.text-slate-300{--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity, 1))}.text-slate-400{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity, 1))}.text-slate-50{--tw-text-opacity: 1;color:rgb(248 250 252 / var(--tw-text-opacity, 1))}.text-slate-950{--tw-text-opacity: 1;color:rgb(2 6 23 / var(--tw-text-opacity, 1))}.text-transparent{color:transparent}.text-void{--tw-text-opacity: 1;color:rgb(2 6 23 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-white\/90{color:#ffffffe6}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.placeholder-cyan-300\/60::-moz-placeholder{color:#67e8f999}.placeholder-cyan-300\/60::placeholder{color:#67e8f999}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow: 0 0 0 1px hsl(var(--sidebar-border));--tw-shadow-colored: 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_12px_rgba\(103\,232\,249\,0\.35\)\]{--tw-shadow: 0 0 12px rgba(103,232,249,.35);--tw-shadow-colored: 0 0 12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_30px_rgba\(34\,211\,238\,0\.3\)\]{--tw-shadow: 0 0 30px rgba(34,211,238,.3);--tw-shadow-colored: 0 0 30px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_8px_rgba\(103\,232\,249\,0\.5\)\]{--tw-shadow: 0 0 8px rgba(103,232,249,.5);--tw-shadow-colored: 0 0 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_8px_rgba\(103\,232\,249\,0\.8\)\]{--tw-shadow: 0 0 8px rgba(103,232,249,.8);--tw-shadow-colored: 0 0 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-deep{--tw-shadow: 0 25px 50px -12px rgba(0, 0, 0, .5);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xs{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-cyan-300\/20{--tw-shadow-color: rgb(103 232 249 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-cyan-400\/20{--tw-shadow-color: rgb(34 211 238 / .2);--tw-shadow: var(--tw-shadow-colored)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-ring\/50{--tw-ring-color: hsl(var(--ring) / .5)}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.blur-3xl{--tw-blur: blur(64px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-\[100px\]{--tw-blur: blur(100px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-\[120px\]{--tw-blur: blur(120px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow{--tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / .1)) drop-shadow(0 1px 1px rgb(0 0 0 / .06));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-md{--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[left\,right\,width\]{transition-property:left,right,width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[margin\,opacity\]{transition-property:margin,opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\,height\,padding\]{transition-property:width,height,padding;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\]{transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-none{transition-property:none}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-1000{transition-duration:1s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-700{transition-duration:.7s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{transition-timing-function:linear}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity, 1);transform:translate3d(var(--tw-enter-translate-x, 0),var(--tw-enter-translate-y, 0),0) scale3d(var(--tw-enter-scale, 1),var(--tw-enter-scale, 1),var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity, 1);transform:translate3d(var(--tw-exit-translate-x, 0),var(--tw-exit-translate-y, 0),0) scale3d(var(--tw-exit-scale, 1),var(--tw-exit-scale, 1),var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0))}}.animate-in{animation-name:enter;animation-duration:.15s;--tw-enter-opacity: initial;--tw-enter-scale: initial;--tw-enter-rotate: initial;--tw-enter-translate-x: initial;--tw-enter-translate-y: initial}.fade-in,.fade-in-0{--tw-enter-opacity: 0}.zoom-in-95{--tw-enter-scale: .95}.slide-in-from-bottom-8{--tw-enter-translate-y: 2rem}.duration-100{animation-duration:.1s}.duration-1000{animation-duration:1s}.duration-200{animation-duration:.2s}.duration-300{animation-duration:.3s}.duration-500{animation-duration:.5s}.duration-700{animation-duration:.7s}.ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{animation-timing-function:linear}.ease-out{animation-timing-function:cubic-bezier(0,0,.2,1)}.running{animation-play-state:running}.animate-pulse-dot{animation:pulse-dot 2s ease-in-out infinite}.animate-gradient-xy{background-size:200% 200%;animation:gradient-xy 6s ease-in-out infinite}.\[--cell-size\:--spacing\(8\)\]{--cell-size: var(--spacing(8))}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.3}}@keyframes gradient-xy{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:#020617}::-webkit-scrollbar-thumb{background:#1e293b;border-radius:5px;border:2px solid #020617}::-webkit-scrollbar-thumb:hover{background:#334155}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.card-surface,.prose{opacity:1;transform:none;transition:none}}@media(forced-colors:active){.text-gradient-cyan,.text-gradient-gold{color:CanvasText!important}}.marker\:text-cyan-300\/60 *::marker{color:#67e8f999}.marker\:text-cyan-300\/60::marker{color:#67e8f999}.selection\:bg-cyan-400\/30 *::-moz-selection{background-color:#22d3ee4d}.selection\:bg-cyan-400\/30 *::selection{background-color:#22d3ee4d}.selection\:bg-primary *::-moz-selection{background-color:hsl(var(--primary))}.selection\:bg-primary *::selection{background-color:hsl(var(--primary))}.selection\:text-primary-foreground *::-moz-selection{color:hsl(var(--primary-foreground))}.selection\:text-primary-foreground *::selection{color:hsl(var(--primary-foreground))}.selection\:bg-cyan-400\/30::-moz-selection{background-color:#22d3ee4d}.selection\:bg-cyan-400\/30::selection{background-color:#22d3ee4d}.selection\:bg-primary::-moz-selection{background-color:hsl(var(--primary))}.selection\:bg-primary::selection{background-color:hsl(var(--primary))}.selection\:text-primary-foreground::-moz-selection{color:hsl(var(--primary-foreground))}.selection\:text-primary-foreground::selection{color:hsl(var(--primary-foreground))}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:1.75rem}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);inset:-.5rem}.after\:inset-y-0:after{content:var(--tw-content);top:0;bottom:0}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:w-1:after{content:var(--tw-content);width:.25rem}.after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.after\:-translate-x-1\/2:after{content:var(--tw-content);--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.first\:rounded-l-md:first-child{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.first\:border-l:first-child{border-left-width:1px}.last\:mt-0:last-child{margin-top:0}.last\:rounded-r-md:last-child{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.last\:border-0:last-child{border-width:0px}.last\:border-b-0:last-child{border-bottom-width:0px}.hover\:border-cyan-300\/30:hover{border-color:#67e8f94d}.hover\:border-cyan-300\/40:hover{border-color:#67e8f966}.hover\:border-cyan-400\/30:hover{border-color:#22d3ee4d}.hover\:border-cyan-400\/40:hover{border-color:#22d3ee66}.hover\:border-cyan-500\/30:hover{border-color:#06b6d44d}.hover\:border-cyan-500\/40:hover{border-color:#06b6d466}.hover\:border-red-900\/30:hover{border-color:#7f1d1d4d}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-cyan-200:hover{--tw-bg-opacity: 1;background-color:rgb(165 243 252 / var(--tw-bg-opacity, 1))}.hover\:bg-cyan-300:hover{--tw-bg-opacity: 1;background-color:rgb(103 232 249 / var(--tw-bg-opacity, 1))}.hover\:bg-cyan-300\/10:hover{background-color:#67e8f91a}.hover\:bg-cyan-300\/20:hover{background-color:#67e8f933}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}.hover\:bg-gold-400\/10:hover{background-color:#fbbf241a}.hover\:bg-gold-400\/20:hover{background-color:#fbbf2433}.hover\:bg-green-400\/20:hover{background-color:#4ade8033}.hover\:bg-muted:hover{background-color:hsl(var(--muted))}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-red-950\/20:hover{background-color:#450a0a33}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:bg-slate-800:hover{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.hover\:bg-slate-800\/50:hover{background-color:#1e293b80}.hover\:bg-slate-900\/40:hover{background-color:#0f172a66}.hover\:bg-surface:hover{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.hover\:bg-surface\/20:hover{background-color:#0f172a33}.hover\:bg-surface\/30:hover{background-color:#0f172a4d}.hover\:bg-surface\/40:hover{background-color:#0f172a66}.hover\:bg-surface\/60:hover{background-color:#0f172a99}.hover\:bg-white\/5:hover{background-color:#ffffff0d}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-cyan-100:hover{--tw-text-opacity: 1;color:rgb(207 250 254 / var(--tw-text-opacity, 1))}.hover\:text-cyan-200:hover{--tw-text-opacity: 1;color:rgb(165 243 252 / var(--tw-text-opacity, 1))}.hover\:text-cyan-300:hover{--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1))}.hover\:text-emerald-300:hover{--tw-text-opacity: 1;color:rgb(110 231 183 / var(--tw-text-opacity, 1))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-muted-foreground:hover{color:hsl(var(--muted-foreground))}.hover\:text-primary:hover{color:hsl(var(--primary))}.hover\:text-red-400:hover{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.hover\:text-slate-200:hover{--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover{--tw-shadow: 0 0 0 1px hsl(var(--sidebar-accent));--tw-shadow-colored: 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:ring-4:hover{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:not-sr-only:focus{position:static;width:auto;height:auto;padding:0;margin:0;overflow:visible;clip:auto;white-space:normal}.focus\:fixed:focus{position:fixed}.focus\:left-4:focus{left:1rem}.focus\:top-4:focus{top:1rem}.focus\:z-10:focus{z-index:10}.focus\:z-\[100\]:focus{z-index:100}.focus\:rounded-lg:focus{border-radius:var(--radius)}.focus\:border-cyan-300\/50:focus{border-color:#67e8f980}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:bg-cyan-300:focus{--tw-bg-opacity: 1;background-color:rgb(103 232 249 / var(--tw-bg-opacity, 1))}.focus\:px-4:focus{padding-left:1rem;padding-right:1rem}.focus\:py-2:focus{padding-top:.5rem;padding-bottom:.5rem}.focus\:font-semibold:focus{font-weight:600}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:text-void:focus{--tw-text-opacity: 1;color:rgb(2 6 23 / var(--tw-text-opacity, 1))}.focus\:opacity-100:focus{opacity:1}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border-ring:focus-visible{border-color:hsl(var(--ring))}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:outline-1:focus-visible{outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:hsl(var(--ring))}.focus-visible\:ring-0:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-4:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-cyan-300:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(103 232 249 / var(--tw-ring-opacity, 1))}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color: hsl(var(--destructive) / .2)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color: hsl(var(--ring) / .5)}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width: 1px}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-cyan-300\/20:disabled{background-color:#67e8f933}.disabled\:text-muted\/20:disabled{color:hsl(var(--muted) / .2)}.disabled\:text-void\/40:disabled{color:#02061766}.disabled\:opacity-50:disabled{opacity:.5}.group\/menu-item:focus-within .group-focus-within\/menu-item\:opacity-100{opacity:1}.group:hover .group-hover\:translate-x-0\.5{--tw-translate-x: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:translate-x-1{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:border-cyan-300\/30{border-color:#67e8f94d}.group:hover .group-hover\:bg-cyan-300\/20{background-color:#67e8f933}.group:hover .group-hover\:fill-cyan-300{fill:#67e8f9}.group:hover .group-hover\:stroke-cyan-200{stroke:#a5f3fc}.group:hover .group-hover\:stroke-cyan-300\/40{stroke:#67e8f966}.group:hover .group-hover\:text-cyan-200{--tw-text-opacity: 1;color:rgb(165 243 252 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:text-cyan-300{--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1))}.group\/menu-item:hover .group-hover\/menu-item\:opacity-100,.group:hover .group-hover\:opacity-100{opacity:1}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-50{opacity:.5}.has-\[\>button\]\:ml-\[-0\.45rem\]:has(>button){margin-left:-.45rem}.has-\[\>button\]\:mr-\[-0\.45rem\]:has(>button){margin-right:-.45rem}.has-\[\>kbd\]\:ml-\[-0\.35rem\]:has(>kbd){margin-left:-.35rem}.has-\[\>kbd\]\:mr-\[-0\.35rem\]:has(>kbd){margin-right:-.35rem}.has-\[\>\[data-align\=block-end\]\]\:h-auto:has(>[data-align=block-end]){height:auto}.has-\[\>\[data-align\=block-start\]\]\:h-auto:has(>[data-align=block-start]){height:auto}.has-\[\>textarea\]\:h-auto:has(>textarea){height:auto}.has-\[\>\[data-slot\=field\]\]\:w-full:has(>[data-slot=field]){width:100%}.has-\[\>svg\]\:grid-cols-\[calc\(var\(--spacing\)\*4\)_1fr\]:has(>svg){grid-template-columns:calc(var(--spacing) * 4) 1fr}.has-\[\>\[data-align\=block-end\]\]\:flex-col:has(>[data-align=block-end]){flex-direction:column}.has-\[\>\[data-align\=block-start\]\]\:flex-col:has(>[data-align=block-start]){flex-direction:column}.has-\[\>\[data-slot\=field\]\]\:flex-col:has(>[data-slot=field]){flex-direction:column}.has-\[\>\[data-slot\=field-content\]\]\:items-start:has(>[data-slot=field-content]){align-items:flex-start}.has-\[\>\[data-slot\=button-group\]\]\:gap-2:has(>[data-slot=button-group]){gap:.5rem}.has-\[\>\[data-slot\=checkbox-group\]\]\:gap-3:has(>[data-slot=checkbox-group]){gap:.75rem}.has-\[\>\[data-slot\=radio-group\]\]\:gap-3:has(>[data-slot=radio-group]){gap:.75rem}.has-\[\>svg\]\:gap-x-3:has(>svg){-moz-column-gap:.75rem;column-gap:.75rem}.has-\[\>\[data-slot\=field\]\]\:rounded-md:has(>[data-slot=field]){border-radius:calc(var(--radius) - 2px)}.has-\[\>\[data-slot\=field\]\]\:border:has(>[data-slot=field]){border-width:1px}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:border-ring:has([data-slot=input-group-control]:focus-visible){border-color:hsl(var(--ring))}.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:border-destructive:has([data-slot][aria-invalid=true]){--tw-border-opacity: 1;border-color:hsl(var(--destructive) / var(--tw-border-opacity, 1))}.has-\[\>svg\]\:p-0:has(>svg){padding:0}.has-\[\>svg\]\:px-2:has(>svg){padding-left:.5rem;padding-right:.5rem}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-left:.625rem;padding-right:.625rem}.has-\[\>svg\]\:px-3:has(>svg){padding-left:.75rem;padding-right:.75rem}.has-\[\>svg\]\:px-4:has(>svg){padding-left:1rem;padding-right:1rem}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-\[3px\]:has([data-slot=input-group-control]:focus-visible){--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-ring\/50:has([data-slot=input-group-control]:focus-visible){--tw-ring-color: hsl(var(--ring) / .5)}.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/20:has([data-slot][aria-invalid=true]){--tw-ring-color: hsl(var(--destructive) / .2)}.group\/item:has([data-slot=item-description]) .group-has-\[\[data-slot\=item-description\]\]\/item\:translate-y-0\.5{--tw-translate-y: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group\/item:has([data-slot=item-description]) .group-has-\[\[data-slot\=item-description\]\]\/item\:self-start{align-self:flex-start}.group\/field:has([data-orientation=horizontal]) .group-has-\[\[data-orientation\=horizontal\]\]\/field\:text-balance{text-wrap:balance}.group\/input-group:has(>input) .group-has-\[\>input\]\/input-group\:pb-2\.5{padding-bottom:.625rem}.group\/input-group:has(>input) .group-has-\[\>input\]\/input-group\:pt-2\.5{padding-top:.625rem}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-selected\:text-muted-foreground[aria-selected=true]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true],.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[vaul-drawer-direction\=bottom\]\:inset-x-0[data-vaul-drawer-direction=bottom]{left:0;right:0}.data-\[vaul-drawer-direction\=left\]\:inset-y-0[data-vaul-drawer-direction=left],.data-\[vaul-drawer-direction\=right\]\:inset-y-0[data-vaul-drawer-direction=right]{top:0;bottom:0}.data-\[vaul-drawer-direction\=top\]\:inset-x-0[data-vaul-drawer-direction=top]{left:0;right:0}.data-\[vaul-drawer-direction\=bottom\]\:bottom-0[data-vaul-drawer-direction=bottom]{bottom:0}.data-\[vaul-drawer-direction\=left\]\:left-0[data-vaul-drawer-direction=left]{left:0}.data-\[vaul-drawer-direction\=right\]\:right-0[data-vaul-drawer-direction=right]{right:0}.data-\[vaul-drawer-direction\=top\]\:top-0[data-vaul-drawer-direction=top]{top:0}.data-\[active\=true\]\:z-10[data-active=true]{z-index:10}.data-\[vaul-drawer-direction\=bottom\]\:mt-24[data-vaul-drawer-direction=bottom]{margin-top:6rem}.data-\[vaul-drawer-direction\=top\]\:mb-24[data-vaul-drawer-direction=top]{margin-bottom:6rem}.data-\[orientation\=horizontal\]\:h-1\.5[data-orientation=horizontal]{height:.375rem}.data-\[orientation\=horizontal\]\:h-full[data-orientation=horizontal]{height:100%}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=vertical\]\:h-auto[data-orientation=vertical]{height:auto}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[panel-group-direction\=vertical\]\:h-px[data-panel-group-direction=vertical]{height:1px}.data-\[size\=default\]\:h-9[data-size=default]{height:2.25rem}.data-\[size\=sm\]\:h-8[data-size=sm]{height:2rem}.data-\[vaul-drawer-direction\=bottom\]\:max-h-\[80vh\][data-vaul-drawer-direction=bottom],.data-\[vaul-drawer-direction\=top\]\:max-h-\[80vh\][data-vaul-drawer-direction=top]{max-height:80vh}.data-\[orientation\=vertical\]\:min-h-44[data-orientation=vertical]{min-height:11rem}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:w-1\.5[data-orientation=vertical]{width:.375rem}.data-\[orientation\=vertical\]\:w-auto[data-orientation=vertical]{width:auto}.data-\[orientation\=vertical\]\:w-full[data-orientation=vertical]{width:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[panel-group-direction\=vertical\]\:w-full[data-panel-group-direction=vertical]{width:100%}.data-\[vaul-drawer-direction\=left\]\:w-3\/4[data-vaul-drawer-direction=left],.data-\[vaul-drawer-direction\=right\]\:w-3\/4[data-vaul-drawer-direction=right]{width:75%}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=checked\]\:translate-x-\[calc\(100\%-2px\)\][data-state=checked]{--tw-translate-x: calc(100% - 2px) ;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes accordion-up{0%{height:var(--radix-accordion-content-height)}to{height:0}}.data-\[state\=closed\]\:animate-accordion-up[data-state=closed]{animation:accordion-up .2s ease-out}@keyframes accordion-down{0%{height:0}to{height:var(--radix-accordion-content-height)}}.data-\[state\=open\]\:animate-accordion-down[data-state=open]{animation:accordion-down .2s ease-out}.data-\[orientation\=vertical\]\:flex-col[data-orientation=vertical],.data-\[panel-group-direction\=vertical\]\:flex-col[data-panel-group-direction=vertical]{flex-direction:column}.data-\[slot\=checkbox-group\]\:gap-3[data-slot=checkbox-group]{gap:.75rem}.data-\[range-end\=true\]\:rounded-md[data-range-end=true]{border-radius:calc(var(--radius) - 2px)}.data-\[range-middle\=true\]\:rounded-none[data-range-middle=true]{border-radius:0}.data-\[range-start\=true\]\:rounded-md[data-range-start=true]{border-radius:calc(var(--radius) - 2px)}.data-\[selected\=true\]\:rounded-none[data-selected=true],.data-\[spacing\=0\]\:rounded-none[data-spacing="0"]{border-radius:0}.data-\[range-end\=true\]\:rounded-r-md[data-range-end=true]{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.data-\[range-start\=true\]\:rounded-l-md[data-range-start=true]{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.data-\[vaul-drawer-direction\=bottom\]\:rounded-t-lg[data-vaul-drawer-direction=bottom]{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.data-\[vaul-drawer-direction\=top\]\:rounded-b-lg[data-vaul-drawer-direction=top]{border-bottom-right-radius:var(--radius);border-bottom-left-radius:var(--radius)}.data-\[spacing\=0\]\:data-\[variant\=outline\]\:border-l-0[data-variant=outline][data-spacing="0"]{border-left-width:0px}.data-\[vaul-drawer-direction\=bottom\]\:border-t[data-vaul-drawer-direction=bottom]{border-top-width:1px}.data-\[vaul-drawer-direction\=left\]\:border-r[data-vaul-drawer-direction=left]{border-right-width:1px}.data-\[vaul-drawer-direction\=right\]\:border-l[data-vaul-drawer-direction=right]{border-left-width:1px}.data-\[vaul-drawer-direction\=top\]\:border-b[data-vaul-drawer-direction=top]{border-bottom-width:1px}.data-\[active\=true\]\:border-ring[data-active=true]{border-color:hsl(var(--ring))}.data-\[state\=checked\]\:border-primary[data-state=checked]{border-color:hsl(var(--primary))}.data-\[active\=true\]\:bg-accent\/50[data-active=true]{background-color:hsl(var(--accent) / .5)}.data-\[range-end\=true\]\:bg-primary[data-range-end=true]{background-color:hsl(var(--primary))}.data-\[range-middle\=true\]\:bg-accent[data-range-middle=true]{background-color:hsl(var(--accent))}.data-\[range-start\=true\]\:bg-primary[data-range-start=true],.data-\[selected-single\=true\]\:bg-primary[data-selected-single=true]{background-color:hsl(var(--primary))}.data-\[selected\=true\]\:bg-accent[data-selected=true]{background-color:hsl(var(--accent))}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\[state\=on\]\:bg-accent[data-state=on],.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=open\]\:bg-accent\/50[data-state=open]{background-color:hsl(var(--accent) / .5)}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:hsl(var(--secondary))}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:hsl(var(--input))}.data-\[inset\]\:pl-8[data-inset]{padding-left:2rem}.data-\[variant\=label\]\:text-sm[data-variant=label]{font-size:.875rem;line-height:1.25rem}.data-\[variant\=legend\]\:text-base[data-variant=legend]{font-size:1rem;line-height:1.5rem}.data-\[active\=true\]\:font-medium[data-active=true]{font-weight:500}.data-\[active\=true\]\:text-accent-foreground[data-active=true]{color:hsl(var(--accent-foreground))}.data-\[error\=true\]\:text-destructive[data-error=true],.data-\[invalid\=true\]\:text-destructive[data-invalid=true]{--tw-text-opacity: 1;color:hsl(var(--destructive) / var(--tw-text-opacity, 1))}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:hsl(var(--muted-foreground))}.data-\[range-end\=true\]\:text-primary-foreground[data-range-end=true]{color:hsl(var(--primary-foreground))}.data-\[range-middle\=true\]\:text-accent-foreground[data-range-middle=true]{color:hsl(var(--accent-foreground))}.data-\[range-start\=true\]\:text-primary-foreground[data-range-start=true],.data-\[selected-single\=true\]\:text-primary-foreground[data-selected-single=true]{color:hsl(var(--primary-foreground))}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:hsl(var(--accent-foreground))}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:hsl(var(--primary-foreground))}.data-\[state\=on\]\:text-accent-foreground[data-state=on],.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:hsl(var(--accent-foreground))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[variant\=destructive\]\:text-destructive[data-variant=destructive]{--tw-text-opacity: 1;color:hsl(var(--destructive) / var(--tw-text-opacity, 1))}.data-\[disabled\=true\]\:opacity-50[data-disabled=true],.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=open\]\:opacity-100[data-state=open]{opacity:1}.data-\[spacing\=0\]\:shadow-none[data-spacing="0"]{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[spacing\=default\]\:data-\[variant\=outline\]\:shadow-xs[data-variant=outline][data-spacing=default],.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[active\=true\]\:ring-\[3px\][data-active=true]{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.data-\[active\=true\]\:ring-ring\/50[data-active=true]{--tw-ring-color: hsl(var(--ring) / .5)}.data-\[state\=closed\]\:duration-300[data-state=closed]{transition-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{transition-duration:.5s}.data-\[motion\^\=from-\]\:animate-in[data-motion^=from-],.data-\[state\=open\]\:animate-in[data-state=open],.data-\[state\=visible\]\:animate-in[data-state=visible]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity: initial;--tw-enter-scale: initial;--tw-enter-rotate: initial;--tw-enter-translate-x: initial;--tw-enter-translate-y: initial}.data-\[motion\^\=to-\]\:animate-out[data-motion^=to-],.data-\[state\=closed\]\:animate-out[data-state=closed],.data-\[state\=hidden\]\:animate-out[data-state=hidden]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity: initial;--tw-exit-scale: initial;--tw-exit-rotate: initial;--tw-exit-translate-x: initial;--tw-exit-translate-y: initial}.data-\[motion\^\=from-\]\:fade-in[data-motion^=from-]{--tw-enter-opacity: 0}.data-\[motion\^\=to-\]\:fade-out[data-motion^=to-],.data-\[state\=closed\]\:fade-out-0[data-state=closed],.data-\[state\=hidden\]\:fade-out[data-state=hidden]{--tw-exit-opacity: 0}.data-\[state\=open\]\:fade-in-0[data-state=open],.data-\[state\=visible\]\:fade-in[data-state=visible]{--tw-enter-opacity: 0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale: .95}.data-\[state\=open\]\:zoom-in-90[data-state=open]{--tw-enter-scale: .9}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale: .95}.data-\[motion\=from-end\]\:slide-in-from-right-52[data-motion=from-end]{--tw-enter-translate-x: 13rem}.data-\[motion\=from-start\]\:slide-in-from-left-52[data-motion=from-start]{--tw-enter-translate-x: -13rem}.data-\[motion\=to-end\]\:slide-out-to-right-52[data-motion=to-end]{--tw-exit-translate-x: 13rem}.data-\[motion\=to-start\]\:slide-out-to-left-52[data-motion=to-start]{--tw-exit-translate-x: -13rem}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y: -.5rem}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x: .5rem}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x: -.5rem}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y: .5rem}.data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y: 100%}.data-\[state\=closed\]\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x: -100%}.data-\[state\=closed\]\:slide-out-to-right[data-state=closed]{--tw-exit-translate-x: 100%}.data-\[state\=closed\]\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y: -100%}.data-\[state\=open\]\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y: 100%}.data-\[state\=open\]\:slide-in-from-left[data-state=open]{--tw-enter-translate-x: -100%}.data-\[state\=open\]\:slide-in-from-right[data-state=open]{--tw-enter-translate-x: 100%}.data-\[state\=open\]\:slide-in-from-top[data-state=open]{--tw-enter-translate-y: -100%}.data-\[state\=closed\]\:duration-300[data-state=closed]{animation-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{animation-duration:.5s}.\*\:data-\[slot\=select-value\]\:line-clamp-1[data-slot=select-value]>*{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\*\:data-\[slot\=select-value\]\:flex[data-slot=select-value]>*{display:flex}.\*\:data-\[slot\=select-value\]\:items-center[data-slot=select-value]>*{align-items:center}.\*\:data-\[slot\=select-value\]\:gap-2[data-slot=select-value]>*{gap:.5rem}.\*\:data-\[slot\=alert-description\]\:text-destructive\/90[data-slot=alert-description]>*{color:hsl(var(--destructive) / .9)}.data-\[panel-group-direction\=vertical\]\:after\:left-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);left:0}.data-\[panel-group-direction\=vertical\]\:after\:h-1[data-panel-group-direction=vertical]:after{content:var(--tw-content);height:.25rem}.data-\[panel-group-direction\=vertical\]\:after\:w-full[data-panel-group-direction=vertical]:after{content:var(--tw-content);width:100%}.data-\[panel-group-direction\=vertical\]\:after\:-translate-y-1\/2[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[panel-group-direction\=vertical\]\:after\:translate-x-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[spacing\=0\]\:first\:rounded-l-md:first-child[data-spacing="0"]{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.data-\[spacing\=0\]\:data-\[variant\=outline\]\:first\:border-l:first-child[data-variant=outline][data-spacing="0"]{border-left-width:1px}.data-\[spacing\=0\]\:last\:rounded-r-md:last-child[data-spacing="0"]{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.data-\[active\=true\]\:hover\:bg-accent:hover[data-active=true],.data-\[state\=open\]\:hover\:bg-accent:hover[data-state=open]{background-color:hsl(var(--accent))}.data-\[active\=true\]\:focus\:bg-accent:focus[data-active=true]{background-color:hsl(var(--accent))}.data-\[state\=open\]\:focus\:bg-accent:focus[data-state=open]{background-color:hsl(var(--accent))}.data-\[variant\=destructive\]\:focus\:bg-destructive\/10:focus[data-variant=destructive]{background-color:hsl(var(--destructive) / .1)}.data-\[variant\=destructive\]\:focus\:text-destructive:focus[data-variant=destructive]{--tw-text-opacity: 1;color:hsl(var(--destructive) / var(--tw-text-opacity, 1))}.group[data-disabled=true] .group-data-\[disabled\=true\]\:pointer-events-none{pointer-events:none}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:relative{position:relative}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]{left:calc(var(--sidebar-width) * -1)}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]{right:calc(var(--sidebar-width) * -1)}.group[data-side=left] .group-data-\[side\=left\]\:-right-4{right:-1rem}.group[data-side=right] .group-data-\[side\=right\]\:left-0{left:0}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:top-full{top:100%}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:z-10{z-index:10}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:-mt-8{margin-top:-2rem}.group\/field-group[data-variant=outline] .group-data-\[variant\=outline\]\/field-group\:-mb-2{margin-bottom:-.5rem}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:mt-1\.5{margin-top:.375rem}.group\/drawer-content[data-vaul-drawer-direction=bottom] .group-data-\[vaul-drawer-direction\=bottom\]\/drawer-content\:block{display:block}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:hidden{display:none}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\)\]{width:calc(var(--sidebar-width-icon) + (--spacing(4)))}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\+2px\)\]{width:calc(var(--sidebar-width-icon) + (--spacing(4)) + 2px)}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:w-0{width:0px}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-side=right] .group-data-\[side\=right\]\:rotate-180,.group[data-state=open] .group-data-\[state\=open\]\:rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:overflow-hidden,.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:overflow-hidden{overflow:hidden}.group[data-variant=floating] .group-data-\[variant\=floating\]\:rounded-lg{border-radius:var(--radius)}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:rounded-md{border-radius:calc(var(--radius) - 2px)}.group[data-variant=floating] .group-data-\[variant\=floating\]\:border,.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:border{border-width:1px}.group[data-side=left] .group-data-\[side\=left\]\:border-r{border-right-width:1px}.group[data-side=right] .group-data-\[side\=right\]\:border-l{border-left-width:1px}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:border-ring{border-color:hsl(var(--ring))}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:bg-popover{background-color:hsl(var(--popover))}.group\/drawer-content[data-vaul-drawer-direction=bottom] .group-data-\[vaul-drawer-direction\=bottom\]\/drawer-content\:text-center,.group\/drawer-content[data-vaul-drawer-direction=top] .group-data-\[vaul-drawer-direction\=top\]\/drawer-content\:text-center{text-align:center}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:text-popover-foreground{color:hsl(var(--popover-foreground))}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:opacity-0{opacity:0}.group\/field[data-disabled=true] .group-data-\[disabled\=true\]\/field\:opacity-50,.group\/input-group[data-disabled=true] .group-data-\[disabled\=true\]\/input-group\:opacity-50,.group[data-disabled=true] .group-data-\[disabled\=true\]\:opacity-50{opacity:.5}.group[data-variant=floating] .group-data-\[variant\=floating\]\:shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-\[3px\]{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-ring\/50{--tw-ring-color: hsl(var(--ring) / .5)}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:duration-200{transition-duration:.2s;animation-duration:.2s}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:after\:left-full:after{content:var(--tw-content);left:100%}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:animate-in[data-state=open]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity: initial;--tw-enter-scale: initial;--tw-enter-rotate: initial;--tw-enter-translate-x: initial;--tw-enter-translate-y: initial}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:animate-out[data-state=closed]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity: initial;--tw-exit-scale: initial;--tw-exit-rotate: initial;--tw-exit-translate-x: initial;--tw-exit-translate-y: initial}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity: 0}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity: 0}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale: .95}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale: .95}.peer\/menu-button[data-size=default]~.peer-data-\[size\=default\]\/menu-button\:top-1\.5{top:.375rem}.peer\/menu-button[data-size=lg]~.peer-data-\[size\=lg\]\/menu-button\:top-2\.5{top:.625rem}.peer\/menu-button[data-size=sm]~.peer-data-\[size\=sm\]\/menu-button\:top-1{top:.25rem}.prose-headings\:font-bold :is(:where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *))){font-weight:700}.prose-headings\:tracking-tight :is(:where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *))){letter-spacing:-.025em}.prose-a\:text-cyan-300 :is(:where(a):not(:where([class~=not-prose],[class~=not-prose] *))){--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1))}.prose-a\:no-underline :is(:where(a):not(:where([class~=not-prose],[class~=not-prose] *))){text-decoration-line:none}.hover\:prose-a\:underline :is(:where(a):not(:where([class~=not-prose],[class~=not-prose] *))):hover{text-decoration-line:underline}.prose-code\:rounded-md :is(:where(code):not(:where([class~=not-prose],[class~=not-prose] *))){border-radius:calc(var(--radius) - 2px)}.prose-code\:bg-cyan-950\/30 :is(:where(code):not(:where([class~=not-prose],[class~=not-prose] *))){background-color:#0833444d}.prose-code\:px-1\.5 :is(:where(code):not(:where([class~=not-prose],[class~=not-prose] *))){padding-left:.375rem;padding-right:.375rem}.prose-code\:py-0\.5 :is(:where(code):not(:where([class~=not-prose],[class~=not-prose] *))){padding-top:.125rem;padding-bottom:.125rem}.prose-code\:text-cyan-200 :is(:where(code):not(:where([class~=not-prose],[class~=not-prose] *))){--tw-text-opacity: 1;color:rgb(165 243 252 / var(--tw-text-opacity, 1))}.prose-pre\:border :is(:where(pre):not(:where([class~=not-prose],[class~=not-prose] *))){border-width:1px}.prose-pre\:border-slate-800 :is(:where(pre):not(:where([class~=not-prose],[class~=not-prose] *))){--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity, 1))}.prose-pre\:bg-slate-950\/80 :is(:where(pre):not(:where([class~=not-prose],[class~=not-prose] *))){background-color:#020617cc}.prose-img\:rounded-xl :is(:where(img):not(:where([class~=not-prose],[class~=not-prose] *))){border-radius:calc(var(--radius) + 4px)}.prose-img\:border :is(:where(img):not(:where([class~=not-prose],[class~=not-prose] *))){border-width:1px}.prose-img\:border-slate-800 :is(:where(img):not(:where([class~=not-prose],[class~=not-prose] *))){--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity, 1))}.dark\:border-input:is(.dark *){border-color:hsl(var(--input))}.dark\:bg-destructive\/60:is(.dark *){background-color:hsl(var(--destructive) / .6)}.dark\:bg-input\/30:is(.dark *){background-color:hsl(var(--input) / .3)}.dark\:bg-transparent:is(.dark *){background-color:transparent}.dark\:text-muted-foreground:is(.dark *){color:hsl(var(--muted-foreground))}.dark\:hover\:bg-accent\/50:hover:is(.dark *){background-color:hsl(var(--accent) / .5)}.dark\:hover\:bg-input\/50:hover:is(.dark *){background-color:hsl(var(--input) / .5)}.dark\:hover\:text-accent-foreground:hover:is(.dark *){color:hsl(var(--accent-foreground))}.dark\:focus-visible\:ring-destructive\/40:focus-visible:is(.dark *){--tw-ring-color: hsl(var(--destructive) / .4)}.dark\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/40:has([data-slot][aria-invalid=true]):is(.dark *){--tw-ring-color: hsl(var(--destructive) / .4)}.dark\:data-\[state\=active\]\:border-input[data-state=active]:is(.dark *){border-color:hsl(var(--input))}.dark\:data-\[state\=active\]\:bg-input\/30[data-state=active]:is(.dark *){background-color:hsl(var(--input) / .3)}.dark\:data-\[state\=checked\]\:bg-primary[data-state=checked]:is(.dark *){background-color:hsl(var(--primary))}.dark\:data-\[state\=checked\]\:bg-primary-foreground[data-state=checked]:is(.dark *){background-color:hsl(var(--primary-foreground))}.dark\:data-\[state\=unchecked\]\:bg-foreground[data-state=unchecked]:is(.dark *){background-color:hsl(var(--foreground))}.dark\:data-\[state\=unchecked\]\:bg-input\/80[data-state=unchecked]:is(.dark *){background-color:hsl(var(--input) / .8)}.dark\:data-\[state\=active\]\:text-foreground[data-state=active]:is(.dark *){color:hsl(var(--foreground))}.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:focus[data-variant=destructive]:is(.dark *){background-color:hsl(var(--destructive) / .2)}@media not all and (min-width:640px){.max-sm\:opacity-100{opacity:1}}@media(min-width:640px){.sm\:ml-6{margin-left:1.5rem}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:inline-flex{display:inline-flex}.sm\:hidden{display:none}.sm\:min-w-\[80px\]{min-width:80px}.sm\:max-w-lg{max-width:32rem}.sm\:max-w-sm{max-width:24rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:gap-2\.5{gap:.625rem}.sm\:gap-4{gap:1rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pl-2\.5{padding-left:.625rem}.sm\:pr-2\.5{padding-right:.625rem}.sm\:text-left{text-align:left}.sm\:text-5xl{font-size:3rem;line-height:1}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.data-\[vaul-drawer-direction\=left\]\:sm\:max-w-sm[data-vaul-drawer-direction=left],.data-\[vaul-drawer-direction\=right\]\:sm\:max-w-sm[data-vaul-drawer-direction=right]{max-width:24rem}}@media(min-width:768px){.md\:absolute{position:absolute}.md\:mx-0{margin-left:0;margin-right:0}.md\:mb-16{margin-bottom:4rem}.md\:ml-8{margin-left:2rem}.md\:block{display:block}.md\:flex{display:flex}.md\:table-cell{display:table-cell}.md\:w-\[var\(--radix-navigation-menu-viewport-width\)\]{width:var(--radix-navigation-menu-viewport-width)}.md\:w-auto{width:auto}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:items-center{align-items:center}.md\:justify-start{justify-content:flex-start}.md\:gap-1\.5{gap:.375rem}.md\:divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse: 0;border-right-width:calc(1px * var(--tw-divide-x-reverse));border-left-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}.md\:divide-white\/5>:not([hidden])~:not([hidden]){border-color:#ffffff0d}.md\:p-12{padding:3rem}.md\:p-6{padding:1.5rem}.md\:py-20{padding-top:5rem;padding-bottom:5rem}.md\:py-32{padding-top:8rem;padding-bottom:8rem}.md\:text-left{text-align:left}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}.md\:text-5xl{font-size:3rem;line-height:1}.md\:text-6xl{font-size:3.75rem;line-height:1}.md\:text-7xl{font-size:4.5rem;line-height:1}.md\:text-9xl{font-size:8rem;line-height:1}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}.md\:opacity-0{opacity:0}.md\:after\:hidden:after{content:var(--tw-content);display:none}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:m-2{margin:.5rem}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:ml-0{margin-left:0}.peer[data-variant=inset][data-state=collapsed]~.md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:ml-2{margin-left:.5rem}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:rounded-xl{border-radius:calc(var(--radius) + 4px)}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}}@media(min-width:1024px){.lg\:col-span-1{grid-column:span 1 / span 1}.lg\:col-span-2{grid-column:span 2 / span 2}.lg\:col-span-3{grid-column:span 3 / span 3}.lg\:col-span-4{grid-column:span 4 / span 4}.lg\:col-span-8{grid-column:span 8 / span 8}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:gap-8{gap:2rem}.lg\:text-6xl{font-size:3.75rem;line-height:1}.lg\:text-7xl{font-size:4.5rem;line-height:1}}.\[\&\+\[data-slot\=item-content\]\]\:flex-none+[data-slot=item-content]{flex:none}.\[\&\:first-child\[data-selected\=true\]_button\]\:rounded-l-md:first-child[data-selected=true] button{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\:last-child\[data-selected\=true\]_button\]\:rounded-r-md:last-child[data-selected=true] button{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\:nth-child\(2\)\[data-selected\=true\]_button\]\:rounded-l-md:nth-child(2)[data-selected=true] button{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.\[\&\>\*\:not\(\:first-child\)\]\:rounded-l-none>*:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.\[\&\>\*\:not\(\:first-child\)\]\:rounded-t-none>*:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.\[\&\>\*\:not\(\:first-child\)\]\:border-l-0>*:not(:first-child){border-left-width:0px}.\[\&\>\*\:not\(\:first-child\)\]\:border-t-0>*:not(:first-child){border-top-width:0px}.\[\&\>\*\:not\(\:last-child\)\]\:rounded-b-none>*:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0}.\[\&\>\*\:not\(\:last-child\)\]\:rounded-r-none>*:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.\[\&\>\*\]\:w-full>*{width:100%}.\[\&\>\*\]\:focus-visible\:relative:focus-visible>*{position:relative}.\[\&\>\*\]\:focus-visible\:z-10:focus-visible>*{z-index:10}.\[\&\>\*\]\:data-\[slot\=field\]\:p-4[data-slot=field]>*{padding:1rem}.\[\&\>\.sr-only\]\:w-auto>.sr-only{width:auto}.\[\&\>\[data-slot\=field-group\]\]\:gap-4>[data-slot=field-group]{gap:1rem}.\[\&\>\[data-slot\=field-label\]\]\:flex-auto>[data-slot=field-label]{flex:1 1 auto}.has-\[select\[aria-hidden\=true\]\:last-child\]\:\[\&\>\[data-slot\=select-trigger\]\:last-of-type\]\:rounded-r-md>[data-slot=select-trigger]:last-of-type:has(select[aria-hidden=true]:last-child){border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\>\[data-slot\=select-trigger\]\:not\(\[class\*\=\'w-\'\]\)\]\:w-fit>[data-slot=select-trigger]:not([class*=w-]){width:-moz-fit-content;width:fit-content}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y: 2px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>a\:hover\]\:text-primary>a:hover{color:hsl(var(--primary))}.\[\&\>a\]\:underline>a{text-decoration-line:underline}.\[\&\>a\]\:underline-offset-4>a{text-underline-offset:4px}.\[\&\>button\]\:hidden>button{display:none}.\[\&\>input\]\:flex-1>input{flex:1 1 0%}.has-\[\>\[data-align\=block-end\]\]\:\[\&\>input\]\:pt-3>input:has(>[data-align=block-end]){padding-top:.75rem}.has-\[\>\[data-align\=block-start\]\]\:\[\&\>input\]\:pb-3>input:has(>[data-align=block-start]){padding-bottom:.75rem}.has-\[\>\[data-align\=inline-end\]\]\:\[\&\>input\]\:pr-2>input:has(>[data-align=inline-end]){padding-right:.5rem}.has-\[\>\[data-align\=inline-start\]\]\:\[\&\>input\]\:pl-2>input:has(>[data-align=inline-start]){padding-left:.5rem}.\[\&\>kbd\]\:rounded-\[calc\(var\(--radius\)-5px\)\]>kbd{border-radius:calc(var(--radius) - 5px)}.\[\&\>span\:last-child\]\:truncate>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.\[\&\>span\]\:text-xs>span{font-size:.75rem;line-height:1rem}.\[\&\>span\]\:opacity-70>span{opacity:.7}.\[\&\>svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5>svg:not([class*=size-]){width:.875rem;height:.875rem}.\[\&\>svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4>svg:not([class*=size-]){width:1rem;height:1rem}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3>svg{width:.75rem;height:.75rem}.\[\&\>svg\]\:size-3\.5>svg{width:.875rem;height:.875rem}.\[\&\>svg\]\:size-4>svg{width:1rem;height:1rem}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:translate-y-0\.5>svg{--tw-translate-y: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>svg\]\:text-current>svg{color:currentColor}.\[\&\>svg\]\:text-muted-foreground>svg{color:hsl(var(--muted-foreground))}.\[\&\>tr\]\:last\:border-b-0:last-child>tr{border-bottom-width:0px}.\[\&\[data-panel-group-direction\=vertical\]\>div\]\:rotate-90[data-panel-group-direction=vertical]>div{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-top:.375rem;padding-bottom:.375rem}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{font-weight:500}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:hsl(var(--muted-foreground))}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:3rem}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-top:.75rem;padding-bottom:.75rem}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:1.25rem}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:1.25rem}.\[\&_img\]\:size-full img{width:100%;height:100%}.\[\&_img\]\:object-cover img{-o-object-fit:cover;object-fit:cover}.\[\&_p\]\:leading-relaxed p{line-height:1.625}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3 svg:not([class*=size-]){width:.75rem;height:.75rem}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:1rem;height:1rem}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-6 svg:not([class*=size-]){width:1.5rem;height:1.5rem}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*=text-]){color:hsl(var(--muted-foreground))}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0px}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{right:-.5rem}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{left:-.5rem}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}[data-slot=card-content] .\[\[data-slot\=card-content\]_\&\]\:bg-transparent,[data-slot=popover-content] .\[\[data-slot\=popover-content\]_\&\]\:bg-transparent{background-color:transparent}[data-slot=tooltip-content] .\[\[data-slot\=tooltip-content\]_\&\]\:bg-background\/20{background-color:hsl(var(--background) / .2)}[data-slot=tooltip-content] .\[\[data-slot\=tooltip-content\]_\&\]\:text-background{color:hsl(var(--background))}[data-slot=tooltip-content] .dark\:\[\[data-slot\=tooltip-content\]_\&\]\:bg-background\/10:is(.dark *){background-color:hsl(var(--background) / .1)}[data-variant=legend]+.\[\[data-variant\=legend\]\+\&\]\:-mt-1\.5{margin-top:-.375rem}a.\[a\&\]\:hover\:bg-accent:hover{background-color:hsl(var(--accent))}a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:hsl(var(--secondary) / .9)}a.\[a\&\]\:hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))} diff --git a/assets/index-B9kEGiWi.js b/assets/index-B9kEGiWi.js deleted file mode 100644 index 5854d094..00000000 --- a/assets/index-B9kEGiWi.js +++ /dev/null @@ -1,3 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/About-DorgToxb.js","assets/vendor-react-BiHfrq0e.js","assets/vendor-gsap-a3sj5zmn.js","assets/vendor-PiU4YGcH.js","assets/vendor-md-CLKxNZoa.js","assets/vendor-md-dRWncRqa.css","assets/vendor-ui-B0ssGG4c.js","assets/Decoder-DKEd4jAQ.js","assets/NeuralReveal-BflyZYSb.js","assets/Workbench-DVV9vcVI.js","assets/releases-DiQz_IDu.js","assets/McpServer-DVGceqba.js","assets/ClaudePlugin-BeNgMSb2.js","assets/Blog-BcO2ftSu.js","assets/blogData-OjR2ZtNr.js","assets/BlogPost-BD36pT-C.js","assets/Pricing-DIy3-kFX.js","assets/faqData-CCPvMSkf.js","assets/PricingFR-DVFFUe5q.js","assets/Commercial-CHRl50uZ.js","assets/Contact-DxkfRI_A.js","assets/CalendlyWidget-BuhQfp2_.js","assets/License-CUAefKwM.js","assets/Privacy-C1rLQMC9.js","assets/Terms-DxyQtSpQ.js","assets/TermsFR-DFr5huZJ.js","assets/Refund-DgWFKD0E.js","assets/Founder-jWl4MVYA.js","assets/Evidence-Cjd1QxOO.js","assets/Changelog-DKAmnRzh.js","assets/TechnicalReference-DNqYMsCV.js","assets/Docs-D2qi4UVs.js","assets/Installer-o7IM3q6A.js","assets/Manual-Cd4jvvKA.js","assets/Success-CysFhypv.js","assets/NotFound-Ceu7jCqq.js"])))=>i.map(i=>d[i]); -import{r as c,j as e,c as X}from"./vendor-react-BiHfrq0e.js";import{z,L as j,R as Z,A as f,B as ee}from"./vendor-PiU4YGcH.js";import{S as Q,C as te,a as re,b as se,R as ae,c as ne,d as oe,F as ie,B as le,P as ce,M as de,e as xe}from"./vendor-ui-B0ssGG4c.js";import{g as $,S as me}from"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))t(l);new MutationObserver(l=>{for(const d of l)if(d.type==="childList")for(const h of d.addedNodes)h.tagName==="LINK"&&h.rel==="modulepreload"&&t(h)}).observe(document,{childList:!0,subtree:!0});function i(l){const d={};return l.integrity&&(d.integrity=l.integrity),l.referrerPolicy&&(d.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?d.credentials="include":l.crossOrigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function t(l){if(l.ep)return;l.ep=!0;const d=i(l);fetch(l.href,d)}})();const he="modulepreload",pe=function(n){return"/"+n},V={},b=function(s,i,t){let l=Promise.resolve();if(i&&i.length>0){let u=function(x){return Promise.all(x.map(_=>Promise.resolve(_).then(N=>({status:"fulfilled",value:N}),N=>({status:"rejected",reason:N}))))};document.getElementsByTagName("link");const h=document.querySelector("meta[property=csp-nonce]"),p=h?.nonce||h?.getAttribute("nonce");l=u(i.map(x=>{if(x=pe(x),x in V)return;V[x]=!0;const _=x.endsWith(".css"),N=_?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${x}"]${N}`))return;const E=document.createElement("link");if(E.rel=_?"stylesheet":he,_||(E.as="script"),E.crossOrigin="",E.href=x,p&&E.setAttribute("nonce",p),document.head.appendChild(E),_)return new Promise((P,L)=>{E.addEventListener("load",P),E.addEventListener("error",()=>L(new Error(`Unable to preload CSS for ${x}`)))})}))}function d(h){const p=new Event("vite:preloadError",{cancelable:!0});if(p.payload=h,window.dispatchEvent(p),!p.defaultPrevented)throw h}return l.then(h=>{for(const p of h||[])p.status==="rejected"&&d(p.reason);return s().catch(d)})},B=[{label:"Platform",href:"/"},{label:"Decoder",href:"/decoder"},{label:"Claude Plugin",href:"/claude-plugin"},{label:"Workbench",href:"/workbench"},{label:"MCP Server",href:"/mcp-server"},{label:"Evidence",href:"/evidence"},{label:"Blog",href:"/blog"},{label:"Pricing",href:"/pricing"},{label:"Contact",href:"/contact"}];function ue(){const[n,s]=c.useState(!1),[i,t]=c.useState(!1),[l,d]=c.useState(!1),h=z(),p=c.useCallback(()=>{const x=window.scrollY;d(x>50),x>200?t(x>window.lastScrollY):t(!1),window.lastScrollY=x},[]);c.useEffect(()=>(window.addEventListener("scroll",p,{passive:!0}),()=>window.removeEventListener("scroll",p)),[p]),c.useEffect(()=>{s(!1)},[h]),c.useEffect(()=>(n?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[n]),c.useEffect(()=>{if(!n)return;const x=_=>{_.key==="Escape"&&s(!1)};return window.addEventListener("keydown",x),()=>window.removeEventListener("keydown",x)},[n]);const u=x=>x==="/"?h.pathname==="/":h.pathname===x;return e.jsxs(e.Fragment,{children:[e.jsxs("nav",{"aria-label":"Main",className:`fixed top-4 left-1/2 -translate-x-1/2 z-50 w-[95%] max-w-6xl transition-all duration-500 ease-out ${i&&!n?"-translate-y-[140%]":"translate-y-0"}`,inert:i&&!n,children:[e.jsx("div",{className:`glass-nav rounded-2xl px-4 sm:px-6 py-3 transition-all duration-300 ${l?"shadow-deep":""}`,children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(j,{to:"/",className:"flex items-center gap-2.5 text-cyan-300 hover:text-cyan-100 transition-colors",children:e.jsx("img",{src:"/images/logo.png",alt:"QECTOR official logo",width:"36",height:"36",className:"h-9 w-9 rounded-lg object-cover"})}),e.jsx("div",{className:"hidden lg:flex items-center gap-1",children:B.map(x=>e.jsx(j,{to:x.href,"aria-current":u(x.href)?"page":void 0,className:`px-3 py-2 rounded-lg text-sm font-medium transition-all duration-300 ${u(x.href)?"text-cyan-300 bg-cyan-300/10":"text-secondary hover:text-primary hover:bg-white/5"}`,children:x.label},x.href))}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(j,{to:"/pricing",className:"hidden sm:inline-flex items-center px-4 py-2 border border-gold-400/60 text-gold-400 text-sm font-medium rounded-lg hover:bg-gold-400/10 transition-all duration-300",children:"Get License"}),e.jsxs("button",{onClick:()=>s(!n),className:"lg:hidden flex flex-col items-center justify-center gap-1.5 p-2 min-h-[44px] min-w-[44px] rounded-lg hover:bg-white/5 transition-colors","aria-label":h.pathname.startsWith("/fr/")?n?"Fermer le menu":"Ouvrir le menu":n?"Close menu":"Open menu","aria-expanded":n,"aria-controls":"mobile-menu",children:[e.jsx("span",{className:`block w-5 h-0.5 bg-primary transition-all duration-300 ${n?"rotate-45 translate-y-2":""}`}),e.jsx("span",{className:`block w-5 h-0.5 bg-primary transition-all duration-300 ${n?"opacity-0":""}`}),e.jsx("span",{className:`block w-5 h-0.5 bg-primary transition-all duration-300 ${n?"-rotate-45 -translate-y-2":""}`})]})]})]})}),e.jsx("div",{id:"mobile-menu","aria-hidden":!n,className:`lg:hidden mt-2 glass-nav rounded-2xl overflow-hidden transition-all duration-300 ${n?"max-h-[calc(100dvh-110px)] overflow-y-auto opacity-100 visible":"max-h-0 opacity-0 invisible"}`,children:e.jsxs("div",{className:"px-4 py-3 space-y-1",children:[B.map(x=>e.jsx(j,{to:x.href,"aria-current":u(x.href)?"page":void 0,className:`flex items-center px-4 py-3 min-h-[44px] rounded-lg text-sm font-medium transition-all duration-200 ${u(x.href)?"text-cyan-300 bg-cyan-300/10":"text-secondary hover:text-primary hover:bg-white/5"}`,onClick:()=>s(!1),children:x.label},x.href)),e.jsx(j,{to:"/pricing",className:"sm:hidden mt-2 text-center px-4 py-3 min-h-[44px] flex items-center justify-center border border-gold-400/60 text-gold-400 text-sm font-medium rounded-lg hover:bg-gold-400/10 transition-all",onClick:()=>s(!1),children:"Get License"})]})})]}),n&&e.jsx("div",{className:"fixed inset-0 z-40 bg-black/50 backdrop-blur-sm lg:hidden",onClick:()=>s(!1)})]})}const D={version:"1.0.0",pypiPackage:"qector-decoder-v3",contactEndpoint:void 0,ogImage:"https://qector.store/images/og-banner.png"},mt="https://calendly.com/qector-info/30min?background_color=0e0d0d&text_color=ffffff&primary_color=0e4088";async function fe(){try{const s=await(await fetch("https://pypi.org/rss/project/qector-decoder-v3/releases.xml")).text(),d=(new DOMParser().parseFromString(s,"text/xml").querySelector("item title")?.textContent||"").match(/qector-decoder-v3\s+([\d.]+)/);return d?d[1]:D.version}catch{return D.version}}function H(){const[n,s]=c.useState(D.version),[i,t]=c.useState(!0);return c.useEffect(()=>{let l=!0;return fe().then(d=>{l&&(s(d),t(!1))}),()=>{l=!1}},[]),{version:n,loading:i}}const ge=[{label:"QECTOR Decoder v3",href:"/decoder",badge:"Library"},{label:"Claude Code Plugin",href:"/claude-plugin",badge:"Claude"},{label:"Workbench GUI",href:"/workbench",badge:"Desktop App"},{label:"QECTOR MCP Server",href:"/mcp-server",badge:"MCP"},{label:"Installer & App Bundles",href:"/installer"},{label:"Pricing & Licensing",href:"/pricing"}],be=[{label:"Evidence & Reports",href:"/evidence"},{label:"Technical Reference",href:"/technical-reference"},{label:"Package User Manual",href:"/manual"},{label:"Documentation Hub",href:"/docs"},{label:"Version Changelog",href:"/changelog"}],ye=[{label:"About QECTOR",href:"/about"},{label:"Guillaume Lessard (Founder)",href:"/guillaume-lessard"},{label:"iD01t Productions"},{label:"Commercial Licensing",href:"/commercial"},{label:"Contact Engineering",href:"/contact"},{label:"EULA & License",href:"/license"},{label:"Terms of Service",href:"/terms"},{label:"Privacy Policy",href:"/privacy"},{label:"Refund Policy",href:"/refund"}];function I({href:n,external:s,badge:i,children:t}){const l="group flex items-center justify-between gap-3 min-h-[44px] py-1.5 text-secondary hover:text-cyan-300 text-sm transition-colors duration-200",d=e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"group-hover:translate-x-0.5 transition-transform duration-200",children:t}),i&&e.jsx("span",{className:"text-[10px] font-mono px-1.5 py-0.5 rounded bg-surface border border-gridline text-muted-foreground group-hover:border-cyan-300/30 group-hover:text-cyan-300 transition-colors",children:i})]});return n?s?e.jsxs("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:l,children:[d,e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}):e.jsx(j,{to:n,className:l,children:d}):e.jsx("span",{className:l,children:d})}function je(){const{version:n}=H();return e.jsxs("footer",{className:"border-t border-cyan-900/40 bg-void/95 relative overflow-hidden text-left",children:[e.jsx("div",{className:"absolute top-0 left-1/2 -translate-x-1/2 w-1/2 h-16 bg-gradient-to-b from-cyan-400/5 to-transparent blur-3xl pointer-events-none"}),e.jsx("div",{className:"section-padding py-16 relative z-10",children:e.jsxs("div",{className:"max-w-7xl mx-auto",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-5 gap-12 lg:gap-8",children:[e.jsxs("div",{className:"lg:col-span-2 space-y-6",children:[e.jsxs(j,{to:"/",className:"inline-flex items-center gap-3 text-cyan-300 hover:text-cyan-100 transition-colors duration-200",children:[e.jsx("img",{src:"/images/logo.png",alt:"QECTOR official logo",width:"40",height:"40",className:"h-10 w-10 rounded-lg object-cover"}),e.jsxs("span",{className:"text-lg font-extrabold tracking-tight text-white",children:["QECTOR",e.jsx("span",{className:"text-cyan-300",children:"."})]})]}),e.jsx("p",{className:"text-secondary/80 text-sm leading-relaxed max-w-sm",children:"Quantum error correction decoding for Python. Built by Guillaume Lessard at iD01t Productions."}),e.jsxs("div",{className:"flex items-center gap-2 pt-2",children:[e.jsxs("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] text-muted-foreground hover:text-cyan-300 transition-colors","aria-label":"PyPI",children:[e.jsxs("span",{className:"text-sm font-mono border border-gridline rounded px-2 py-1 hover:border-cyan-300/30",children:["v",n]}),e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-1 text-muted-foreground hover:text-cyan-300 transition-colors text-sm font-medium","aria-label":"GitHub",children:["GitHub",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-1 text-muted-foreground hover:text-cyan-300 transition-colors text-sm font-medium","aria-label":"ORCID",children:["ORCID",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]})]})]}),e.jsxs("div",{className:"space-y-5",children:[e.jsx("h2",{className:"text-xs font-semibold uppercase tracking-widest text-white/90",children:"Platform"}),e.jsx("div",{className:"flex flex-col gap-1",children:ge.map(s=>e.jsx(I,{href:s.href,external:s.external,badge:s.badge,children:s.label},s.label))})]}),e.jsxs("div",{className:"space-y-5",children:[e.jsx("h2",{className:"text-xs font-semibold uppercase tracking-widest text-white/90",children:"Research & Docs"}),e.jsx("div",{className:"flex flex-col gap-1",children:be.map(s=>e.jsx(I,{href:s.href,external:s.external,badge:s.badge,children:s.label},s.label))})]}),e.jsxs("div",{className:"space-y-5",children:[e.jsx("h2",{className:"text-xs font-semibold uppercase tracking-widest text-white/90",children:"Company"}),e.jsx("div",{className:"flex flex-col gap-1",children:ye.slice(0,5).map(s=>e.jsx(I,{href:s.href,external:s.external,badge:s.badge,children:s.label},s.label))})]})]}),e.jsxs("div",{className:"mt-16 pt-8 border-t border-gridline flex flex-col md:flex-row items-start md:items-center justify-between gap-6",children:[e.jsxs("div",{className:"text-xs text-muted-foreground max-w-xl leading-relaxed",children:[e.jsx("span",{className:"font-semibold text-secondary",children:"Distribution:"})," PyPI (",e.jsx("code",{className:"text-cyan-300/80 font-mono",children:"qector-decoder-v3"}),") is the Python library. The free ",e.jsx(j,{to:"/installer",className:"link-accent",children:"Workbench GUI"})," is a standalone desktop application shipped self-contained for Windows x64 and Linux x64 (no system Python required)."]}),e.jsxs("nav",{"aria-label":"Legal",className:"flex flex-wrap items-center gap-x-4 gap-y-1 text-xs font-medium text-muted-foreground",children:[e.jsx(j,{to:"/privacy",className:"inline-flex items-center min-h-[44px] px-1 hover:text-cyan-300 transition-colors duration-200",children:"Privacy"}),e.jsx(j,{to:"/terms",className:"inline-flex items-center min-h-[44px] px-1 hover:text-cyan-300 transition-colors duration-200",children:"Terms"}),e.jsx(j,{to:"/refund",className:"inline-flex items-center min-h-[44px] px-1 hover:text-cyan-300 transition-colors duration-200",children:"Refund"}),e.jsx(j,{to:"/license",className:"inline-flex items-center min-h-[44px] px-1 hover:text-cyan-300 transition-colors duration-200",children:"License"}),e.jsxs("a",{href:"/.well-known/security.txt",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-1 hover:text-cyan-300 transition-colors duration-200",children:["Security",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]})]})]})]})}),e.jsx("div",{className:"bg-[#050b14]",children:e.jsx("div",{className:"section-padding py-4",children:e.jsxs("div",{className:"max-w-7xl mx-auto text-xs text-muted-foreground/70 text-center md:text-left",children:["© 2026 QECTOR Lab / iD01t Productions. All rights reserved.",e.jsx("div",{className:"mt-1",children:"Éditeur : Guillaume Lessard, entrepreneur individuel (iD01t Productions), 2004 De Lorimier, Longueuil, QC J4K 3H7, Canada · admin@qector.store"})]})})})]})}function ve({children:n}){const s=z();return c.useEffect(()=>{window.scrollTo(0,0),document.documentElement.lang=s.pathname.startsWith("/fr/")?"fr":"en",document.getElementById("main-content")?.focus();const i=window.matchMedia("(prefers-reduced-motion: reduce)").matches,t=(h=document)=>{h.querySelectorAll(".card-surface:not(.revealed), .prose:not(.revealed)").forEach(p=>{i?p.classList.add("revealed"):l.observe(p)})},l=new IntersectionObserver(h=>{h.forEach(p=>{p.isIntersecting&&(p.target.classList.add("revealed"),l.unobserve(p.target))})},{threshold:.1,rootMargin:"0px 0px -10% 0px"});let d=null;return i||(d=new MutationObserver(h=>{h.forEach(p=>{p.addedNodes.forEach(u=>{u.nodeType===Node.ELEMENT_NODE&&t(u)})})}),d.observe(document.body,{childList:!0,subtree:!0})),t(),()=>{l.disconnect(),d&&d.disconnect()}},[s.pathname]),e.jsxs("div",{className:"min-h-screen bg-void text-foreground quantum-grid-bg relative",children:[e.jsx("a",{href:"#main-content",className:"sr-only focus:not-sr-only focus:fixed focus:top-4 focus:left-4 focus:z-[100] focus:px-4 focus:py-2 focus:bg-cyan-300 focus:text-void focus:font-semibold focus:rounded-lg",children:s.pathname.startsWith("/fr/")?"Aller au contenu principal":"Skip to main content"}),e.jsx(ue,{}),e.jsx("main",{id:"main-content",tabIndex:-1,className:"pt-20 outline-none",children:n}),e.jsx(je,{})]})}class Ne extends c.Component{state={hasError:!1};static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(s,i){console.error("QECTOR site error boundary caught:",s,i.componentStack)}handleReload=()=>{this.setState({hasError:!1}),window.location.href="/"};render(){return this.state.hasError?e.jsx("div",{className:"min-h-screen flex items-center justify-center bg-void px-6",children:e.jsxs("div",{className:"max-w-md text-center card-surface",children:[e.jsx("div",{className:"w-12 h-12 rounded-full bg-cyan-300/10 border border-cyan-300/20 flex items-center justify-center mx-auto mb-4 text-cyan-300 text-xl",children:"!"}),e.jsx("h1",{className:"text-xl font-bold text-primary mb-2",children:"Something went wrong"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"This page hit an unexpected error. No page data was sent; check the browser console for the local error and reload."}),e.jsx("button",{onClick:this.handleReload,className:"btn-cyan",children:"Reload homepage"})]})}):this.props.children}}function we(){return e.jsx("div",{className:"min-h-[60vh] flex items-center justify-center",role:"status","aria-live":"polite",children:e.jsxs("div",{className:"flex flex-col items-center gap-3",children:[e.jsx("div",{className:"w-8 h-8 border-2 border-cyan-300/20 border-t-cyan-300 rounded-full animate-spin"}),e.jsx("span",{className:"sr-only",children:"Loading page…"})]})})}const Ee={en:"en_US",fr:"fr_FR"};function ke({title:n="QECTOR · Quantum Error Correction Decoding for Python",description:s="QECTOR Decoder v3 - Rust-core Python quantum error correction decoder. v1.0.0 first stable release with API stability tiers, a qector CLI, and a reproducible benchmark harness (qector bench) for measuring on your own hardware.",ogImage:i=D.ogImage,noindex:t=!1,lang:l="en",alternates:d}){const h=z(),p=`https://qector.store${h.pathname==="/"?"/":`${h.pathname.replace(/\/$/,"")}/`}`;return c.useEffect(()=>{document.title=n,document.documentElement.lang=l;const u=(N,E)=>{let P=document.querySelector(N);if(!P){P=document.createElement("meta");const L=N.includes("property=")?"property":"name",R=N.match(/"([^"]+)"/)?.[1]||"";P.setAttribute(L,R),document.head.appendChild(P)}P.content=E};u('meta[name="description"]',s),u('meta[name="robots"]',t?"noindex, follow":"index, follow, max-image-preview:large"),u('meta[property="og:title"]',n),u('meta[property="og:description"]',s),u('meta[property="og:url"]',p),u('meta[property="og:type"]',"website"),u('meta[property="og:locale"]',Ee[l]??"en_US"),u('meta[property="og:image"]',i),u('meta[property="og:image:alt"]',"QECTOR official logo"),u('meta[property="og:site_name"]',"QECTOR"),u('meta[name="twitter:card"]',"summary_large_image"),u('meta[name="twitter:title"]',n),u('meta[name="twitter:description"]',s),u('meta[name="twitter:image"]',i),u('meta[name="twitter:image:alt"]',"QECTOR official logo"),u('meta[name="twitter:site"]',"@DJiD01T"),u('meta[name="theme-color"]',"#24e7ff");let x=document.querySelector('link[rel="canonical"]');x||(x=document.createElement("link"),x.rel="canonical",document.head.appendChild(x)),x.href=p,document.querySelectorAll('link[rel="alternate"][hreflang]').forEach(N=>N.remove());const _=[];for(const N of d??[]){const E=document.createElement("link");E.rel="alternate",E.hreflang=N.lang,E.href=N.href,document.head.appendChild(E),_.push(E)}return()=>{_.forEach(N=>N.remove())}},[n,s,p,i,t,l,d]),null}function _e({data:n}){const s="json-ld-data";return c.useEffect(()=>{let i=document.getElementById(s);return i||(i=document.createElement("script"),i.id=s,i.type="application/ld+json",document.head.appendChild(i)),i.textContent=JSON.stringify(n),()=>{const t=document.getElementById(s);t&&t.remove()}},[n]),null}function Ce({icon:n,label:s,href:i,variant:t="default",className:l=""}){const d=t==="gold"?"bg-gold-400/10 border border-gold-400/30 text-gold-400 hover:bg-gold-400/20":"bg-surface border border-gridline text-secondary hover:text-cyan-300 hover:border-cyan-300/30";return e.jsxs("a",{href:i,target:"_blank",rel:"noopener noreferrer",className:`inline-flex items-center gap-2 px-4 py-2.5 rounded-full text-sm transition-all duration-300 ${d} ${l}`,children:[e.jsx("span",{"aria-hidden":"true",children:n}),e.jsx("span",{children:s})]})}function F({eyebrow:n,heading:s,description:i,align:t="center",maxWidth:l="max-w-3xl",className:d=""}){const h=t==="center"?"text-center mx-auto":"text-left",p=t==="center"?"mx-auto":"";return e.jsxs("div",{className:`${l} ${h} mb-12 md:mb-16 ${d}`,children:[n&&e.jsx("span",{className:"eyebrow-pill mb-4",children:n}),e.jsx("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight text-balance mb-4",children:s}),i&&e.jsx("p",{className:`text-secondary text-lg leading-relaxed text-pretty max-w-prose ${p}`,children:i})]})}const Pe={cyan:"bg-cyan-300/10 text-cyan-300 border border-cyan-300/20",green:"bg-green-400/10 text-green-400 border border-green-400/20",purple:"bg-purple-400/10 text-purple-400 border border-purple-400/20",gold:"bg-gold-400/10 text-gold-400 border border-gold-400/20"};function Le({title:n,tag:s,badge:i,desc:t,proof:l,muted:d=!1,className:h=""}){return e.jsxs("div",{className:`card-surface group ${d?"border-gridline/50 opacity-80":""} ${h}`,children:[s&&e.jsx("div",{className:"text-muted-foreground text-xs font-mono uppercase tracking-wider mb-2",children:s}),e.jsxs("div",{className:"flex items-center justify-between gap-3 mb-3",children:[e.jsx("h3",{className:`font-semibold text-lg transition-colors ${d?"text-gold-400/80":"text-cyan-300 group-hover:text-cyan-200"}`,children:n}),i&&e.jsx("span",{className:`shrink-0 px-2.5 py-1 rounded-full text-xs font-medium ${d?"bg-gold-400/5 text-gold-400/60 border border-gold-400/20":Pe[i.color]}`,children:i.label})]}),e.jsx("p",{className:`leading-relaxed ${d?"text-muted-foreground text-sm":"text-secondary"}`,children:t}),l&&e.jsxs("div",{className:"mt-4 pt-4 border-t border-gridline/60 flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"text-green-400",children:"✓"}),e.jsx("span",{className:"text-muted-foreground font-mono",children:l})]})]})}function Re({title:n,statement:s,href:i,linkLabel:t="View evidence →",className:l=""}){return e.jsxs("div",{className:`relative rounded-2xl border border-cyan-300/20 bg-void p-6 overflow-hidden ${l}`,children:[e.jsx("div",{className:"absolute inset-0 pointer-events-none bg-gradient-to-br from-cyan-300/5 to-transparent"}),e.jsxs("div",{className:"relative z-10",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300"}),e.jsx("span",{className:"text-xs font-mono uppercase tracking-wider text-cyan-300",children:n})]}),e.jsx("p",{className:"text-secondary leading-relaxed mb-4",children:s}),i&&e.jsx("a",{href:i,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm font-medium hover:underline underline-offset-4",children:t})]})]})}function Se(){const[n,s]=c.useState({}),[i,t]=c.useState({}),[l,d]=c.useState(!1),[h,p]=c.useState(!1),u=c.useMemo(()=>{const a=[];for(let r=0;r<3;r++)for(let o=0;o<3;o++)a.push({id:`${r}_${o}`,r,c:o,x:120+o*100,y:60+r*100});return a},[]),x=c.useMemo(()=>{const a=[];for(let r=0;r<3;r++)a.push({id:`L_${r}`,type:"L",r,c:-1,x1:30,y1:60+r*100,x2:120,y2:60+r*100});for(let r=0;r<3;r++)a.push({id:`R_${r}`,type:"R",r,c:3,x1:320,y1:60+r*100,x2:410,y2:60+r*100});for(let r=0;r<3;r++)for(let o=0;o<2;o++)a.push({id:`H_${r}_${o}`,type:"H",r,c:o,x1:120+o*100,y1:60+r*100,x2:120+(o+1)*100,y2:60+r*100});for(let r=0;r<2;r++)for(let o=0;o<3;o++)a.push({id:`V_${r}_${o}`,type:"V",r,c:o,x1:120+o*100,y1:60+r*100,x2:120+o*100,y2:60+(r+1)*100});return a},[]),_=c.useMemo(()=>{const a={},r=o=>{a[o]=!a[o]};return x.forEach(o=>{n[o.id]&&(o.type==="H"?(r(`${o.r}_${o.c}`),r(`${o.r}_${o.c+1}`)):o.type==="V"?(r(`${o.r}_${o.c}`),r(`${o.r+1}_${o.c}`)):o.type==="L"?r(`${o.r}_0`):o.type==="R"&&r(`${o.r}_2`))}),Object.keys(a).forEach(o=>{a[o]||delete a[o]}),a},[n,x]),N=a=>{t({}),d(!1),s(r=>({...r,[a]:!r[a]}))},E=()=>{s({}),t({}),d(!1)},P=(a=.2)=>{t({}),d(!1);const r={};x.forEach(o=>{Math.random()Math.abs(a.r-r.r)+Math.abs(a.c-r.c),R=c.useCallback((a,r)=>{const o=[],k=Math.min(a.r,r.r),g=Math.max(a.r,r.r),w=a.r{const a=Object.keys(_).map(g=>{const[w,m]=g.split("_").map(Number);return u.find(y=>y.r===w&&y.c===m)});if(a.length===0){t({}),d(!0);return}const r=g=>{if(g.length===0)return{cost:0,pairs:[]};const w=g[0],m=g.slice(1);let y=1/0,v=[];const C=w.c+1,T=r(m);C+T.costK!==S),q=r(J);W+q.cost{if(g==="L"||g==="R"||w==="L"||w==="R"){const m=g==="L"||g==="R"?w:g;if((g==="L"||g==="R"?g:w)==="L"){for(let v=0;v{k[y]=!0})}),t(k),d(!0)},[_,u,R]),Y=c.useMemo(()=>{if(!l)return"idle";const a=x.filter(m=>{const y=n[m.id]||!1,v=i[m.id]||!1;return y!==v}),r={},o=(m,y)=>{r[m]||(r[m]=[]),r[y]||(r[y]=[]),r[m].push(y),r[y].push(m)};a.forEach(m=>{m.type==="H"?o(`${m.r}_${m.c}`,`${m.r}_${m.c+1}`):m.type==="V"?o(`${m.r}_${m.c}`,`${m.r+1}_${m.c}`):m.type==="L"?o("L",`${m.r}_0`):m.type==="R"&&o("R",`${m.r}_2`)});const k={},g=["L"];k.L=!0;let w=!1;for(;g.length>0;){const m=g.shift();if(m==="R"){w=!0;break}(r[m]||[]).forEach(v=>{k[v]||(k[v]=!0,g.push(v))})}return w?"failure":"success"},[l,n,i,x]);return e.jsxs("div",{className:"flex flex-col gap-4 border border-gridline bg-surface/30 rounded-2xl p-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsxs("h4",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider flex items-center gap-1.5",children:[e.jsx(Q,{className:"w-4 h-4"}),"Interactive QEC Simulator"]}),e.jsx("p",{className:"text-muted-foreground text-xs mt-0.5",children:"Planar stabilizer code (d=3). Click edges to toggle physical errors."})]}),e.jsx("button",{onClick:()=>p(!h),className:"min-h-[44px] min-w-[44px] inline-flex items-center justify-center text-secondary hover:text-cyan-300 transition-colors","aria-label":"Toggle help",children:e.jsx(te,{className:"w-5 h-5"})})]}),h&&e.jsxs("div",{className:"p-4 bg-void/80 border border-gridline rounded-xl text-xs text-secondary leading-relaxed space-y-2",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"How to play:"})," Click on the links (grey/red lines) to inject physical errors. Red lines represent errors."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Syndromes:"})," Grid nodes measure checks. When adjacent errors are odd, a check triggers (lights up orange)."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Decoder:"})," Minimum Weight Perfect Matching (MWPM) matches active checks. When you click ",e.jsx("span",{className:"text-cyan-300",children:"Run Decoder"}),", it draws matching correction paths in cyan."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Success condition:"})," If error + correction paths do not form a logical connection across boundaries (from left to right), the state is successfully corrected!"]})]}),e.jsxs("div",{className:"bg-void/50 border border-gridline rounded-xl flex items-center justify-center p-4 relative overflow-hidden",children:[e.jsxs("svg",{viewBox:"0 0 440 320",className:"w-full max-w-[440px] h-auto select-none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsxs("defs",{children:[e.jsxs("radialGradient",{id:"activeNodeGlow",cx:"50%",cy:"50%",r:"50%",children:[e.jsx("stop",{offset:"0%",stopColor:"#fef08a"}),e.jsx("stop",{offset:"60%",stopColor:"#eab308"}),e.jsx("stop",{offset:"100%",stopColor:"#a16207"})]}),e.jsxs("linearGradient",{id:"inactiveNodeGlow",x1:"0",y1:"0",x2:"1",y2:"1",children:[e.jsx("stop",{offset:"0%",stopColor:"#1e293b"}),e.jsx("stop",{offset:"100%",stopColor:"#0f172a"})]}),e.jsx("pattern",{id:"gridDots",width:"20",height:"20",patternUnits:"userSpaceOnUse",children:e.jsx("circle",{cx:"2",cy:"2",r:"1",fill:"#1e293b",fillOpacity:"0.6"})})]}),e.jsx("rect",{width:"440",height:"320",fill:"url(#gridDots)",rx:"10"}),e.jsx("line",{x1:"30",y1:"30",x2:"30",y2:"290",stroke:"#475569",strokeWidth:"3",strokeDasharray:"4 4"}),e.jsx("text",{x:"20",y:"165",fill:"#475569",fontSize:"10",textAnchor:"middle",transform:"rotate(-90, 20, 165)",className:"font-mono",children:"LEFT BOUNDARY"}),e.jsx("line",{x1:"410",y1:"30",x2:"410",y2:"290",stroke:"#475569",strokeWidth:"3",strokeDasharray:"4 4"}),e.jsx("text",{x:"420",y:"165",fill:"#475569",fontSize:"10",textAnchor:"middle",transform:"rotate(90, 420, 165)",className:"font-mono",children:"RIGHT BOUNDARY"}),x.map(a=>{const r=n[a.id]||!1,o=i[a.id]||!1;let k="#334155";return r&&o?k="#e2e8f0":r?k="#ef4444":o&&(k="#06b6d4"),e.jsxs("g",{className:"group",children:[e.jsx("line",{x1:a.x1,y1:a.y1,x2:a.x2,y2:a.y2,stroke:"transparent",strokeWidth:"16",className:"cursor-pointer",tabIndex:0,role:"checkbox","aria-checked":r,"aria-label":`Toggle error on qubit edge ${a.id}`,onClick:()=>N(a.id),onKeyDown:g=>{(g.key==="Enter"||g.key===" ")&&(g.preventDefault(),N(a.id))}}),e.jsx("line",{x1:a.x1,y1:a.y1,x2:a.x2,y2:a.y2,stroke:k,strokeWidth:r||o?4:2,className:"transition-colors duration-200 pointer-events-none group-hover:stroke-cyan-300/40",style:{filter:r?"drop-shadow(0 0 4px rgba(239, 68, 68, 0.4))":o?"drop-shadow(0 0 4px rgba(6, 182, 212, 0.4))":"none"}}),e.jsx("circle",{cx:(a.x1+a.x2)/2,cy:(a.y1+a.y2)/2,r:"5",fill:r?"#ef4444":o?"#06b6d4":"#1e293b",stroke:r||o?"#e2e8f0":"#475569",strokeWidth:"1.5",className:"transition-colors duration-200 pointer-events-none group-hover:fill-cyan-300 group-hover:stroke-cyan-200"})]},a.id)}),u.map(a=>{const r=_[a.id]||!1;return e.jsxs("g",{children:[r&&e.jsx("circle",{cx:a.x,cy:a.y,r:"18",fill:"rgba(251, 191, 36, 0.15)",className:"animate-pulse"}),e.jsx("circle",{cx:a.x,cy:a.y,r:r?12:9,fill:r?"url(#activeNodeGlow)":"url(#inactiveNodeGlow)",stroke:r?"#fbbf24":"#334155",strokeWidth:r?2:1.5,className:"transition-all duration-300 pointer-events-none",style:{filter:r?"drop-shadow(0 0 10px rgba(251, 191, 36, 0.7))":"none"}}),e.jsx("circle",{cx:a.x-(r?3:2),cy:a.y-(r?3:2),r:r?3:2,fill:"white",fillOpacity:"0.25",className:"pointer-events-none"}),r&&e.jsx("circle",{cx:a.x,cy:a.y,r:20,fill:"transparent",stroke:"#fbbf24",strokeWidth:"1",strokeOpacity:"0.4",className:"animate-ping"}),e.jsx("text",{x:a.x,y:a.y+3,textAnchor:"middle",fill:r?"#020617":"#94a3b8",fontSize:"9",fontWeight:"bold",className:"font-mono text-[9px] pointer-events-none",children:r?"!":"S"})]},a.id)})]}),l&&e.jsxs("div",{className:"absolute bottom-3 left-3 right-3 flex items-center justify-between p-3 bg-surface/90 border border-gridline rounded-xl backdrop-blur-md transition-all duration-300",children:[Y==="success"?e.jsxs("div",{className:"flex items-center gap-2 text-green-400 text-sm font-semibold",children:[e.jsx(re,{className:"w-5 h-5"}),e.jsx("span",{children:"SUCCESS: Errors resolved"})]}):e.jsxs("div",{className:"flex items-center gap-2 text-red-400 text-sm font-semibold",children:[e.jsx(se,{className:"w-5 h-5"}),e.jsx("span",{children:"LOGICAL ERROR: Correction failed"})]}),e.jsx("div",{className:"text-[10px] text-muted-foreground font-mono",children:"d=3 code slice"})]})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[e.jsxs("button",{onClick:()=>P(.2),className:"px-3 py-3 bg-surface hover:bg-white/5 border border-gridline rounded-lg text-xs font-semibold text-secondary hover:text-primary transition-all flex items-center justify-center gap-1.5",children:[e.jsx(Q,{className:"w-3.5 h-3.5"}),"Inject Errors"]}),e.jsxs("button",{onClick:U,disabled:Object.keys(_).length===0,className:"px-3 py-3 bg-cyan-300 disabled:bg-cyan-300/20 disabled:text-void/40 hover:bg-cyan-200 text-void rounded-lg text-xs font-bold transition-all flex items-center justify-center gap-1.5",children:[e.jsx(ae,{className:`w-3.5 h-3.5 ${l?"":"animate-spin"}`}),"Run Decoder"]}),e.jsx("button",{onClick:E,className:"px-3 py-3 bg-surface hover:bg-red-950/20 border border-gridline hover:border-red-900/30 rounded-lg text-xs font-semibold text-secondary hover:text-red-400 transition-all",children:"Reset Graph"})]})]})}function Oe({code:n,language:s="python",filename:i,className:t=""}){const[l,d]=c.useState(!1),h=async()=>{try{await navigator.clipboard.writeText(n),d(!0),setTimeout(()=>d(!1),2e3)}catch(p){console.error("Failed to copy text: ",p)}};return e.jsxs("div",{className:`my-4 border border-gridline rounded-xl overflow-hidden bg-void/50 ${t}`,children:[i&&e.jsxs("div",{className:"flex items-center justify-between px-4 py-2 border-b border-gridline bg-surface/50 text-xs font-mono text-muted-foreground",children:[e.jsx("span",{children:i}),e.jsx("span",{className:"uppercase text-[10px] bg-cyan-300/10 text-cyan-300 px-1.5 py-0.5 rounded border border-cyan-300/20",children:s})]}),e.jsxs("div",{className:"relative group",children:[e.jsx("pre",{className:"p-4 pr-14 overflow-x-auto overflow-y-auto font-mono text-sm leading-relaxed text-secondary bg-void/30 max-h-[400px]",children:e.jsx("code",{className:`language-${s}`,children:n})}),e.jsx("button",{onClick:h,className:"absolute top-3 right-3 p-1.5 bg-surface border border-gridline rounded-lg text-secondary hover:text-cyan-300 hover:border-cyan-300/30 opacity-0 group-hover:opacity-100 focus:opacity-100 max-sm:opacity-100 transition-all duration-200","aria-label":l?"Copied":"Copy code",children:l?e.jsx(ne,{className:"w-4 h-4 text-green-400"}):e.jsx(oe,{className:"w-4 h-4"})}),e.jsx("span",{className:"sr-only","aria-live":"polite",children:l?"Code copied to clipboard":""})]})]})}$.registerPlugin(me);function O({value:n,label:s}){return e.jsxs("div",{className:"text-center px-4 py-3",children:[e.jsx("div",{className:"text-2xl font-bold text-cyan-300",children:n}),e.jsx("div",{className:"text-xs text-muted-foreground leading-tight max-w-[11rem] mx-auto",children:s})]})}function De(){const n=c.useRef([]),{version:s}=H();c.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const t=document.createElement("script");t.src="https://js.stripe.com/v3/buy-button.js",t.async=!0,document.body.appendChild(t);const l=$.context(()=>{n.current.filter(Boolean).forEach(h=>{$.fromTo(h,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power2.out",scrollTrigger:{trigger:h,start:"top 85%",once:!0}})})});return()=>{l.revert(),t.parentNode===document.body&&document.body.removeChild(t)}},[]);const i=(t,l)=>{t&&(n.current[l]=t)};return e.jsxs(e.Fragment,{children:[e.jsx(ke,{title:"QECTOR · Quantum Error Correction Decoding for Python",description:"QECTOR Decoder v3 - Rust-core Python library with 17 concrete decoder configurations plus 2 Workbench routing kinds, a syndrome-faithful contract, and reproducible validation guidance."}),e.jsx(_e,{data:{"@context":"https://schema.org","@graph":[{"@type":"SoftwareApplication",name:"QECTOR Decoder v3",description:"QECTOR Decoder v3 is the qector-decoder-v3 1.0.0 Rust/Python quantum error correction package with 17 concrete decoder configurations plus 2 Workbench routing kinds, offline Ed25519 licensing, and reproducible validation guidance.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",programmingLanguage:"Python",url:"https://qector.store/",downloadUrl:"https://pypi.org/project/qector-decoder-v3/",softwareVersion:s,author:{"@type":"Person",name:"Guillaume Lessard",url:"https://github.com/GuillaumeLessard"},maintainer:{"@type":"Organization",name:"iD01t Productions"},identifier:"https://pypi.org/project/qector-decoder-v3/",license:"https://qector.store/license/",offers:{"@type":"Offer",price:"0",priceCurrency:"USD",availability:"https://schema.org/InStock"}},{"@type":"Organization",name:"QECTOR",url:"https://qector.store/",logo:"https://qector.store/images/logo.png",email:"admin@qector.store",founder:{"@type":"Person",name:"Guillaume Lessard",identifier:"0009-0000-3465-3753"},address:{"@type":"PostalAddress",addressLocality:"Longueuil",addressRegion:"QC",postalCode:"J4K 3H7",addressCountry:"CA"},sameAs:["https://github.com/GuillaumeLessard/qector-decoder","https://pypi.org/project/qector-decoder-v3/","https://github.com/GuillaumeLessard/qector-claude-plugin","https://orcid.org/0009-0000-3465-3753"]}]}}),e.jsxs("section",{className:"relative min-h-screen flex items-center justify-center overflow-hidden","aria-label":"QECTOR hero",children:[e.jsx("img",{src:"/images/hero-bg.webp",alt:"","aria-hidden":"true",fetchPriority:"high",className:"absolute inset-0 w-full h-full object-cover z-0",style:{filter:"brightness(0.45) saturate(1.1)"}}),e.jsx("noscript",{children:e.jsx("img",{src:"/images/og-banner.png",alt:"","aria-hidden":"true",className:"absolute inset-0 w-full h-full object-cover z-0",style:{filter:"brightness(0.4)"}})}),e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-void/60 via-void/25 to-void z-[1]"}),e.jsx("div",{className:"absolute inset-0 bg-gradient-to-r from-cyan-500/[0.04] to-transparent z-[1]"}),e.jsxs("div",{className:"relative z-10 w-full min-w-0 text-center max-w-5xl mx-auto px-6 pt-24 pb-20",children:[e.jsxs(j,{to:"/changelog",className:"inline-flex max-w-full flex-wrap items-center justify-center gap-2 px-4 py-2 bg-surface/70 border border-cyan-300/20 rounded-full text-center text-xs leading-relaxed text-cyan-300 hover:bg-cyan-300/10 transition-all mb-8 backdrop-blur-sm",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-green-400 animate-pulse-dot"}),e.jsxs("span",{children:["v",s," · First Stable Release · Changelog →"]})]}),e.jsxs("h1",{className:"max-w-4xl mx-auto break-words text-3xl sm:text-5xl md:text-6xl lg:text-7xl font-extrabold tracking-tight leading-[1.05] mb-6",style:{textShadow:"0 4px 32px rgba(0,0,0,0.9)"},children:[e.jsx("span",{className:"text-transparent bg-clip-text bg-gradient-to-r from-cyan-300 to-cyan-400",children:"QEC Decoding"})," ","for Python"]}),e.jsxs("p",{className:"text-base sm:text-lg md:text-xl text-secondary/90 max-w-3xl mx-auto mb-5 leading-relaxed break-words",style:{textShadow:"0 2px 16px rgba(0,0,0,0.8)"},children:["The v1.0.0 runtime ships 17 concrete decoder configurations, while Workbench v1.0.7 names 19 kinds in total: those configurations plus AutoDecoder and Auto Router orchestration entries."," ",e.jsx("span",{className:"text-primary font-semibold",children:"v1.0.0 is the first stable release:"})," API stability tiers, Relay-BP, CS-OSD, Sinter/qiskit entry points and the qector CLI."]}),e.jsx("p",{className:"text-sm text-muted-foreground max-w-2xl mx-auto mb-10 leading-relaxed",style:{textShadow:"0 2px 12px rgba(0,0,0,0.8)"},children:"Local measurement tools are documented for declared workloads; this site publishes no universal performance figures. Claim boundaries and verification paths are published with the product documentation."}),e.jsxs("div",{className:"flex flex-col sm:flex-row flex-wrap gap-3 sm:gap-4 justify-center items-stretch sm:items-center mb-10",children:[e.jsx(j,{to:"/pricing",className:"btn-gold px-8 py-4 text-sm sm:text-base font-bold w-full sm:w-auto",children:"Start $499 Evaluation →"}),e.jsx(j,{to:"/decoder",className:"btn-cyan px-8 py-4 text-sm sm:text-base w-full sm:w-auto",children:"Explore the Decoder"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-windows/releases/latest",className:"btn-outline px-8 py-4 text-sm sm:text-base w-full sm:w-auto",target:"_blank",rel:"noopener noreferrer",children:"Free Workbench GUI"})]}),e.jsx("div",{className:"max-w-2xl mx-auto mb-10 text-left",children:e.jsx(Oe,{language:"bash",filename:"Quick start",code:`pip install qector-decoder-v3==${s} -python -c "from qector_decoder_v3 import BlossomDecoder; print('QECTOR OK')"`})}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 md:divide-x md:divide-white/5 border-t border-white/5 pt-6 max-w-2xl mx-auto",children:[e.jsx(O,{value:"19",label:"Workbench Kinds (17 + 2 routing)"}),e.jsx(O,{value:"GF(2)",label:"Faithfulness Contract"}),e.jsx(O,{value:"CPU + GPU",label:"Optional Execution Paths"}),e.jsx(O,{value:"Open",label:"Evidence Policy"})]}),e.jsxs("div",{className:"max-w-2xl mx-auto mt-10 p-5 md:p-6 bg-surface/50 border border-cyan-300/20 rounded-2xl text-center shadow-lg backdrop-blur-sm",children:[e.jsx("div",{className:"text-[10px] text-cyan-300 font-semibold tracking-[0.2em] mb-2 uppercase",children:"Evidence policy"}),e.jsx("div",{className:"text-lg md:text-xl font-bold text-primary tracking-tight mb-2",children:"No hardware-specific results published"}),e.jsxs("p",{className:"text-xs text-muted-foreground leading-relaxed max-w-lg mx-auto",children:["QECTOR publishes contracts, methodology, and artifacts rather than portable speed numbers. Read the ",e.jsx(j,{to:"/evidence",className:"link-accent",children:"evidence policy"})," before generating a local measurement."]})]})]})]}),e.jsx("section",{className:"section-band bg-surface/20 border-y border-gridline",children:e.jsxs("div",{className:"section-padding max-w-6xl mx-auto",children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("span",{className:"eyebrow-pill-gold mb-4",children:"Release Assurance"}),e.jsx("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight",children:"A Clear Path From Code to Evidence"}),e.jsx("p",{className:"text-secondary text-lg max-w-2xl mx-auto mt-3",children:"The public release, validation contract, and commercial delivery path are explicit by design."})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-5",children:[e.jsxs("div",{className:"card-surface p-6 border-cyan-300/20",children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-3",children:"Current Runtime"}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:"qector-decoder-v3 1.0.0"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"The live PyPI release supports Python 3.9 through 3.13 with 15 binary wheels across Windows, Linux, and macOS."})]}),e.jsxs("div",{className:"card-surface p-6 border-cyan-300/20",children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-3",children:"Evidence Contract"}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:"Correctness before speed"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Every correction is checked against H c = s (mod 2). Measurements stay workload-scoped, artifact-hashed, and separate from universal performance claims."})]}),e.jsxs("div",{className:"card-surface p-6 border-gold-400/20",children:[e.jsx("div",{className:"text-gold-400 font-mono text-xs uppercase tracking-wider mb-3",children:"Secure Delivery"}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:"Signed, traceable licensing"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Commercial fulfillment requires a live Stripe event, issues a v2 Ed25519 token, and records independent billing and license delivery states."}),e.jsx(j,{to:"/license",className:"inline-block text-gold-400 text-sm font-medium hover:underline mt-3",children:"Read the license activation procedure →"})]})]}),e.jsxs("div",{className:"mt-8 card-surface p-6 border-cyan-300/20",children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-3",children:"Evidence Registry"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 text-sm",children:[e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21941046",target:"_blank",rel:"noopener noreferrer",className:"text-secondary hover:text-cyan-300 transition-colors",children:[e.jsx("span",{className:"block text-primary font-semibold",children:"Normative reference manual"}),e.jsx("span",{className:"font-mono text-xs",children:"10.5281/zenodo.21941046"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21611214",target:"_blank",rel:"noopener noreferrer",className:"text-secondary hover:text-cyan-300 transition-colors",children:[e.jsx("span",{className:"block text-primary font-semibold",children:"v1.0.0 user manual"}),e.jsx("span",{className:"font-mono text-xs",children:"10.5281/zenodo.21611214"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.22046403",target:"_blank",rel:"noopener noreferrer",className:"text-secondary hover:text-cyan-300 transition-colors",children:[e.jsx("span",{className:"block text-primary font-semibold",children:"Verification and proof bundle"}),e.jsx("span",{className:"font-mono text-xs",children:"10.5281/zenodo.22046403"})]})]})]})]})}),e.jsx("section",{className:"section-thin border-t border-b border-gridline/30 bg-void/80",children:e.jsx("div",{className:"section-padding",children:e.jsxs("div",{className:"max-w-5xl mx-auto text-center",children:[e.jsx("p",{className:"text-xs text-muted-foreground uppercase tracking-widest mb-8",children:"Works with your existing stack"}),e.jsxs("div",{className:"flex flex-wrap justify-center items-center gap-x-12 gap-y-8",children:[e.jsxs("div",{className:"flex flex-col items-center gap-3",children:[e.jsx("span",{className:"text-2xl font-bold tracking-tight text-white/90",children:"Stim"}),e.jsx("code",{className:"text-xs bg-surface border border-gridline px-2 py-1 rounded text-muted-foreground font-mono",children:"pip install stim"})]}),e.jsxs("div",{className:"flex flex-col items-center gap-3",children:[e.jsx("span",{className:"text-2xl font-bold tracking-tight text-white/90",children:"Sinter"}),e.jsx("code",{className:"text-xs bg-surface border border-gridline px-2 py-1 rounded text-muted-foreground font-mono",children:"pip install sinter"})]}),e.jsxs("div",{className:"flex flex-col items-center gap-3",children:[e.jsx("span",{className:"text-2xl font-bold tracking-tight text-white/90",children:"Qiskit"}),e.jsx("code",{className:"text-xs bg-surface border border-gridline px-2 py-1 rounded text-muted-foreground font-mono",children:"pip install qiskit-qec"})]})]})]})})}),e.jsx("section",{ref:t=>i(t,0),className:"py-8 bg-void",children:e.jsx("div",{className:"section-padding",children:e.jsx("div",{className:"max-w-7xl mx-auto flex flex-wrap justify-center gap-3",children:[{icon:e.jsx(ie,{size:16}),label:"Artifacts (GitHub)",href:"https://github.com/GuillaumeLessard/qector-decoder"},{icon:e.jsx(le,{size:16}),label:"Mastering QEC · Google Play",href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",gold:!0},{icon:e.jsx(ce,{size:16}),label:`PyPI Wheel v${s}`,href:"https://pypi.org/project/qector-decoder-v3/"},{icon:e.jsx(de,{size:16}),label:"Free Workbench App",href:"/workbench"},{icon:e.jsx(xe,{size:16}),label:"ORCID 0009-0000-3465-3753",href:"https://orcid.org/0009-0000-3465-3753"}].map(t=>e.jsx(Ce,{icon:t.icon,label:t.label,href:t.href,variant:t.gold?"gold":"default"},t.label))})})}),e.jsx("section",{className:"section-band bg-void border-y border-gridline",children:e.jsxs("div",{className:"section-padding max-w-6xl mx-auto",children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("span",{className:"eyebrow-pill mb-4",children:"Proof Suite"}),e.jsx("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight",children:"Executable Verification for v1.0.0"}),e.jsx("p",{className:"text-secondary text-lg max-w-2xl mx-auto mt-3",children:"Hashed-lock reproducible install, CERT_STRICT gate, and Lean/Coq kernel evidence - verifiable against Reference Manual v1.0.0."})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-5",children:[e.jsxs("div",{className:"card-surface p-6 border-cyan-300/20",children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-3",children:"Reproducible Install"}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:"Hashed-lock & CERT_STRICT"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Proof runs are hashed-locked and gated by CERT_STRICT - no universal benchmark figures, only workload-scoped artifacts."})]}),e.jsxs("div",{className:"card-surface p-6 border-cyan-300/20",children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-3",children:"Reference Manual v1.0.0"}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:"DOI 10.5281/zenodo.21941046"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Normative manual with syndrome-faithfulness foundations, 15 backends, and API stability tiers. All proofs trace to this document."})]}),e.jsxs("div",{className:"card-surface p-6 border-cyan-300/20",children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-3",children:"Lean/Coq Evidence"}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:"Kernel-checked proofs"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Executable suite checks GF(2) invariants and logical cosets with Lean/Coq kernels - evidence, not claims."})]})]}),e.jsxs("div",{className:"text-center mt-8",children:[e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-proof",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"View qector-proof on GitHub"}),e.jsx("span",{className:"text-muted-foreground text-xs ml-3",children:"github.com/GuillaumeLessard/qector-proof"})]})]})}),e.jsx("section",{className:"section-feature bg-surface/30 border-t border-gridline",children:e.jsxs("div",{className:"section-padding max-w-6xl mx-auto",children:[e.jsxs("div",{ref:t=>i(t,1),className:"text-center mb-14",children:[e.jsx("span",{className:"eyebrow-pill mb-4",children:"How It Works"}),e.jsx("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight",children:"From Installation to Validation"}),e.jsx("p",{className:"text-secondary text-lg max-w-2xl mx-auto mt-3",children:"QECTOR integrates directly into your existing QEC workflow with minimal friction."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-8",children:[{step:"01",title:"Install",desc:"Install the v1.0.0 wheel in a supported Python 3.9-3.13 environment alongside your existing Stim or PyMatching workflow.",detail:"pip install qector-decoder-v3==1.0.0",code:!0},{step:"02",title:"Decode",desc:"Access 17 concrete Rust-accelerated decoder configurations through a unified Python API. Workbench also exposes AutoDecoder and Auto Router as two orchestration kinds, for 19 named kinds in total.",detail:"from qector_decoder_v3 import BlossomDecoder, BpOsdDecoder",code:!0},{step:"03",title:"Validate",desc:"Claims are scoped to a declared workload and backed by SHA-256 sealed artifacts. Run qector-doctor before relying on optional paths and preserve the report with the result.",detail:"evidence policy · SHA-256 sealed",code:!1}].map(t=>e.jsxs("div",{className:"card-surface p-6 relative",children:[e.jsx("div",{className:"text-4xl font-black text-cyan-300/20 absolute top-4 right-4 select-none",children:t.step}),e.jsx("div",{className:"w-10 h-10 rounded-full bg-cyan-300/10 border border-cyan-300/20 flex items-center justify-center text-cyan-300 font-bold text-sm mb-4",children:t.step}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:t.title}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:t.desc}),t.code&&e.jsx("code",{className:"block text-xs bg-void border border-gridline rounded-lg px-3 py-2 text-cyan-300 font-mono overflow-x-auto",children:t.detail}),!t.code&&e.jsx("span",{className:"inline-flex items-center gap-1.5 text-xs text-cyan-300 font-mono bg-cyan-300/5 px-3 py-1.5 rounded-lg border border-cyan-300/10",children:t.detail})]},t.step))})]})}),e.jsxs("section",{id:"platform",className:"section-feature relative overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 pointer-events-none",style:{background:"radial-gradient(circle at center, rgba(103, 232, 249, 0.06) 0%, transparent 70%)"}}),e.jsx("div",{className:"section-padding relative z-10",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsx("div",{ref:t=>i(t,2),children:e.jsx(F,{eyebrow:"Why QECTOR",heading:"More Than Just MWPM",description:"QEC decoding is not one-size-fits-all. Surface codes, qLDPC codes, optional batch paths, and simulation workloads each demand different decoders. QECTOR documents the supported contracts and the evidence needed to evaluate a selected workload."})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[{title:"Blossom MWPM (Exact)",tag:"Blossom",desc:"Weight-optimal exact minimum-weight perfect matching for graph-like codes. The reference decoder for surface codes.",proof:"Exact optimal matching · Stim-native"},{title:"qLDPC Support",tag:"BP-OSD (qLDPC)",desc:"Matching decoders are restricted to graphlike structures. BP-OSD handles reachable arbitrary GF(2) check matrices, including LDPC and qLDPC workloads.",proof:"Hyperedge-safe GF(2) path"},{title:"Workload-Scoped Execution",tag:"Union-Find + Optional GPU",desc:"Union-Find and optional GPU batch paths are available for supported workloads. Availability and performance must be verified on the target environment.",proof:"Environment-dependent paths"},{title:"One Library, Pluggable",tag:"Stim · PyMatching · Sinter · Qiskit",desc:"Drop QECTOR into any existing Stim or PyMatching workflow. Same API surface, swappable backend. No vendor lock-in.",proof:"Drop-in, same API surface"}].map((t,l)=>e.jsx("div",{ref:d=>i(d,3+l),children:e.jsx(Le,{title:t.title,tag:t.tag,desc:t.desc,proof:t.proof})},t.title))})]})})]}),e.jsx("section",{id:"decoder-section",className:"section-feature bg-surface/50",children:e.jsx("div",{className:"section-padding",children:e.jsx("div",{className:"max-w-6xl mx-auto",children:e.jsxs("div",{ref:t=>i(t,7),className:"grid grid-cols-1 lg:grid-cols-2 gap-12 items-center",children:[e.jsxs("div",{children:[e.jsx("span",{className:"eyebrow-pill mb-4",children:"19 Workbench Kinds · 17 Concrete Configs"}),e.jsx("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-6",children:"Decoding Algorithms"}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed mb-8",children:"Union-Find, Fast Union-Find, Blossom MWPM, Sparse Blossom, Belief-Matching, BP-OSD, GPU Batch (CUDA/OpenCL), Hybrid, Predecoded, two-stage, ambiguity-cluster, colour-code, space-time, and other concrete paths are exposed through a consistent Python API. Workbench adds the two orchestration kinds, AutoDecoder and Auto Router, to make 19 named kinds."}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[{label:" v1.0.0 First Stable",desc:"API stability tiers, Relay-BP, CS-OSD, Sinter/qiskit entry points, qector CLI + qector-doctor."},{label:" 15 Binary Wheels",desc:"Python 3.9-3.13 across Windows amd64, Linux x86_64, and macOS arm64, released on PyPI."},{label:" GPU Batch Paths",desc:"CUDA and OpenCL batch paths are available for supported hardware and drivers; OpenCL via source build."},{label:" Reproducible Harness",desc:"qector bench ships with the package; measure on your own hardware, no universal figures claimed."}].map(t=>e.jsxs("div",{className:"p-4 bg-void/50 border border-gridline/50 rounded-xl",children:[e.jsx("div",{className:"text-cyan-300 font-semibold text-sm mb-1",children:t.label}),e.jsx("div",{className:"text-muted-foreground text-xs leading-relaxed",children:t.desc})]},t.label))}),e.jsxs("div",{className:"flex flex-wrap gap-3 mt-8",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",children:e.jsx("img",{src:"https://img.shields.io/pypi/v/qector-decoder-v3?style=flat-square&color=24e7ff",alt:"qector-decoder-v3 version on PyPI",loading:"lazy"})}),e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",children:e.jsx("img",{src:"https://img.shields.io/github/v/release/GuillaumeLessard/qector-decoder?style=flat-square&color=24e7ff",alt:"Latest qector-decoder release on GitHub",loading:"lazy"})}),e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",children:e.jsx("img",{src:"https://img.shields.io/badge/GitHub-Artifacts-blue?logo=github",alt:"GitHub release artifacts for QECTOR",loading:"lazy"})})]})]}),e.jsx("div",{ref:t=>i(t,8),className:"relative w-full",children:e.jsx(Se,{})})]})})})}),e.jsx("section",{className:"section-feature relative",children:e.jsx("div",{className:"section-padding relative z-10",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{ref:t=>i(t,9),children:[e.jsx(F,{eyebrow:"Performance",heading:"Measure on Your Own Hardware"}),e.jsx(Re,{title:"Reproducible Benchmark Harness",statement:"No universal benchmark figures are published on this site, because results depend on your hardware, drivers, and workloads. The qector bench harness ships with the package so you can measure logical error rates and throughput on your own machines.",href:"https://github.com/GuillaumeLessard/qector-decoder",linkLabel:"GitHub Artifacts →",className:"max-w-3xl mx-auto mb-6"})]}),e.jsx("div",{ref:t=>i(t,10),className:"max-w-3xl mx-auto",children:e.jsxs("div",{className:"p-5 bg-void/50 border border-gridline/50 rounded-xl font-mono text-xs text-muted-foreground leading-relaxed overflow-x-auto",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-cyan-300",children:"$"}),' pip install "qector-decoder-v3[bench]"']}),e.jsxs("div",{children:[e.jsx("span",{className:"text-cyan-300",children:"$"})," qector-doctor"]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-cyan-300",children:"$"})," qector bench -d 5 -r 5 -s 10000 --decoder blossom --noise 0.001"]}),e.jsx("div",{className:"text-green-400 mt-2",children:"✓ Logical error rates and throughput written as reproducible JSON"})]})}),e.jsx("div",{className:"text-center mt-8 flex flex-wrap justify-center gap-3",children:e.jsx(j,{to:"/evidence",className:"btn-outline",children:"Evidence & Reports"})})]})})}),e.jsx("section",{className:"section-band bg-surface/20 border-t border-gridline",children:e.jsxs("div",{className:"section-padding max-w-5xl mx-auto",children:[e.jsx("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight text-center mb-10",children:"Enterprise Compliance & Licensing"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsxs("div",{className:"card-surface border-cyan-300/20 bg-void/50 p-8 rounded-2xl relative overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-r from-cyan-300/5 to-transparent pointer-events-none"}),e.jsx("h3",{className:"text-lg font-bold text-cyan-300 flex items-center gap-2 mb-4",children:"License Clarity"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"The package is source-available under PolyForm Noncommercial 1.0.0 for community use. Commercial use, hosted services, and redistribution require the written scope described on the license and pricing pages."}),e.jsx(j,{to:"/commercial",className:"text-cyan-300 text-sm font-medium hover:underline",children:"Learn about licensing →"})]}),e.jsxs("div",{className:"card-surface border-gold-400/20 bg-void/50 p-8 rounded-2xl relative overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-r from-gold-400/5 to-transparent pointer-events-none"}),e.jsx("h3",{className:"text-lg font-bold text-gold-400 flex items-center gap-2 mb-4",children:"Start Your Evaluation"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"$499 for a 60-day commercial evaluation. Unlimited internal seats, all decoders, priority support, and full validation artifact access. 100% credit toward any annual license purchased within 90 days of your evaluation start."}),e.jsx(j,{to:"/pricing",className:"btn-gold text-sm",children:"View Pricing & Tiers →"})]})]})]})}),e.jsx("section",{id:"pricing-section",className:"section-feature bg-surface/50 border-t border-gridline",children:e.jsx("div",{className:"section-padding",children:e.jsxs("div",{className:"max-w-xl mx-auto text-center",children:[e.jsxs("div",{ref:t=>i(t,11),className:"mb-6",children:[e.jsx("span",{className:"eyebrow-pill mb-4",children:"Self-Serve · Instant Clearance"}),e.jsx("h2",{className:"text-3xl font-bold mb-3",children:"Commercial Evaluation License"}),e.jsx("p",{className:"text-secondary text-sm max-w-md mx-auto",children:"One-time payment · 60-day pilot · Fully creditable toward an annual license bought within 90 days"})]}),e.jsxs("div",{ref:t=>i(t,12),className:"card-surface border-cyan-300/35 neon-border-cyan relative overflow-hidden p-8 rounded-2xl bg-void/80 text-center",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 to-transparent pointer-events-none"}),e.jsxs("div",{className:"mb-6",children:[e.jsx("h3",{className:"text-4xl font-extrabold text-primary",children:"$499"}),e.jsx("p",{className:"text-muted-foreground text-xs mt-1",children:"Unlimited internal seats · All decoders · Priority support"})]}),e.jsx("div",{className:"flex justify-center mb-6",children:e.jsxs("a",{href:"https://buy.stripe.com/6oU00l77Xc8ifsegEqeUU07",className:"btn-cyan text-base font-bold py-3.5 px-8 rounded-xl shadow-lg shadow-cyan-300/20 inline-flex items-center gap-2",target:"_blank",rel:"noopener noreferrer",children:[e.jsx("span",{children:"Start 60-Day Evaluation: $499"}),e.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("line",{x1:"5",y1:"12",x2:"19",y2:"12"}),e.jsx("polyline",{points:"12 5 19 12 12 19"})]})]})}),e.jsx("div",{className:"border-t border-gridline/60 pt-4 mt-4 text-left space-y-2",children:["Full QECTOR Decoder v3 (all decoder families)","Written license agreement","Priority email support (2 business day response)","Benchmark artifact package","100% credit toward any annual license purchased within 90 days of your evaluation start"].map(t=>e.jsxs("div",{className:"flex items-center gap-2 text-xs text-secondary",children:[e.jsx("span",{className:"text-green-400",children:"✓"}),e.jsx("span",{children:t})]},t))})]}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-4",children:["Need annual pricing, multi-seat, or OEM? ",e.jsx(j,{to:"/commercial",className:"text-cyan-300 hover:underline",children:"View all tiers →"})]})]})})})]})}const Te=c.lazy(()=>b(()=>import("./About-DorgToxb.js"),__vite__mapDeps([0,1,2,3,4,5,6]))),Ae=c.lazy(()=>b(()=>import("./Decoder-DKEd4jAQ.js"),__vite__mapDeps([7,1,8,2,3,4,5,6]))),qe=c.lazy(()=>b(()=>import("./Workbench-DVV9vcVI.js"),__vite__mapDeps([9,1,8,2,10,3,4,5,6]))),Ie=c.lazy(()=>b(()=>import("./McpServer-DVGceqba.js"),__vite__mapDeps([11,1,8,3,4,5,6,2]))),$e=c.lazy(()=>b(()=>import("./ClaudePlugin-BeNgMSb2.js"),__vite__mapDeps([12,1,8,10,6,3,4,5,2]))),ze=c.lazy(()=>b(()=>import("./Blog-BcO2ftSu.js"),__vite__mapDeps([13,1,14,3,4,5,6,2]))),Me=c.lazy(()=>b(()=>import("./BlogPost-BD36pT-C.js"),__vite__mapDeps([15,1,14,4,3,5,6,2]))),Ge=c.lazy(()=>b(()=>import("./Pricing-DIy3-kFX.js"),__vite__mapDeps([16,1,17,3,4,5,8,2,6]))),We=c.lazy(()=>b(()=>import("./PricingFR-DVFFUe5q.js"),__vite__mapDeps([18,1,17,3,4,5,8,2,6]))),Qe=c.lazy(()=>b(()=>import("./Commercial-CHRl50uZ.js"),__vite__mapDeps([19,1,8,3,4,5,6,2]))),Ve=c.lazy(()=>b(()=>import("./Contact-DxkfRI_A.js"),__vite__mapDeps([20,1,21,2,3,4,5,6]))),Be=c.lazy(()=>b(()=>import("./License-CUAefKwM.js"),__vite__mapDeps([22,1,8,3,4,5,6,2]))),Fe=c.lazy(()=>b(()=>import("./Privacy-C1rLQMC9.js"),__vite__mapDeps([23,1,8,3,4,5,6,2]))),He=c.lazy(()=>b(()=>import("./Terms-DxyQtSpQ.js"),__vite__mapDeps([24,1,8,3,4,5,6,2]))),Ue=c.lazy(()=>b(()=>import("./TermsFR-DFr5huZJ.js"),__vite__mapDeps([25,1,8,3,4,5,6,2]))),Ye=c.lazy(()=>b(()=>import("./Refund-DgWFKD0E.js"),__vite__mapDeps([26,1,8,3,4,5,6,2]))),Je=c.lazy(()=>b(()=>import("./Founder-jWl4MVYA.js"),__vite__mapDeps([27,1,21,3,4,5,6,2]))),Ke=c.lazy(()=>b(()=>import("./Evidence-Cjd1QxOO.js"),__vite__mapDeps([28,1,8,2,10,3,4,5,6]))),Xe=c.lazy(()=>b(()=>import("./Changelog-DKAmnRzh.js"),__vite__mapDeps([29,1,8,10,3,4,5,6,2]))),Ze=c.lazy(()=>b(()=>import("./TechnicalReference-DNqYMsCV.js"),__vite__mapDeps([30,1,8,2,6,3,4,5]))),et=c.lazy(()=>b(()=>import("./Docs-D2qi4UVs.js"),__vite__mapDeps([31,1,8,2,3,4,5,6]))),tt=c.lazy(()=>b(()=>import("./Installer-o7IM3q6A.js"),__vite__mapDeps([32,1,8,3,4,5,6,2]))),rt=c.lazy(()=>b(()=>import("./Manual-Cd4jvvKA.js"),__vite__mapDeps([33,1,6,8,3,4,5,2]))),st=c.lazy(()=>b(()=>import("./Success-CysFhypv.js"),__vite__mapDeps([34,1,8,3,4,5,6,2]))),at=c.lazy(()=>b(()=>import("./NotFound-Ceu7jCqq.js"),__vite__mapDeps([35,1,8,3,4,5,6,2])));function nt(){return e.jsx(Ne,{children:e.jsx(ve,{children:e.jsx(c.Suspense,{fallback:e.jsx(we,{}),children:e.jsxs(Z,{children:[e.jsx(f,{path:"/",element:e.jsx(De,{})}),e.jsx(f,{path:"/about",element:e.jsx(Te,{})}),e.jsx(f,{path:"/decoder",element:e.jsx(Ae,{})}),e.jsx(f,{path:"/workbench",element:e.jsx(qe,{})}),e.jsx(f,{path:"/mcp-server",element:e.jsx(Ie,{})}),e.jsx(f,{path:"/claude-plugin",element:e.jsx($e,{})}),e.jsx(f,{path:"/blog",element:e.jsx(ze,{})}),e.jsx(f,{path:"/blog/:id",element:e.jsx(Me,{})}),e.jsx(f,{path:"/pricing",element:e.jsx(Ge,{})}),e.jsx(f,{path:"/fr/pricing",element:e.jsx(We,{})}),e.jsx(f,{path:"/commercial",element:e.jsx(Qe,{})}),e.jsx(f,{path:"/contact",element:e.jsx(Ve,{})}),e.jsx(f,{path:"/license",element:e.jsx(Be,{})}),e.jsx(f,{path:"/privacy",element:e.jsx(Fe,{})}),e.jsx(f,{path:"/terms",element:e.jsx(He,{})}),e.jsx(f,{path:"/fr/terms",element:e.jsx(Ue,{})}),e.jsx(f,{path:"/refund",element:e.jsx(Ye,{})}),e.jsx(f,{path:"/guillaume-lessard",element:e.jsx(Je,{})}),e.jsx(f,{path:"/evidence",element:e.jsx(Ke,{})}),e.jsx(f,{path:"/changelog",element:e.jsx(Xe,{})}),e.jsx(f,{path:"/technical-reference",element:e.jsx(Ze,{})}),e.jsx(f,{path:"/docs",element:e.jsx(et,{})}),e.jsx(f,{path:"/installer",element:e.jsx(tt,{})}),e.jsx(f,{path:"/manual",element:e.jsx(rt,{})}),e.jsx(f,{path:"/success",element:e.jsx(st,{})}),e.jsx(f,{path:"*",element:e.jsx(at,{})})]})})})})}X.createRoot(document.getElementById("root")).render(e.jsx(c.StrictMode,{children:e.jsx(ee,{children:e.jsx(nt,{})})}));export{Le as A,Oe as C,Re as E,_e as J,Se as Q,ke as S,F as a,mt as b,H as u}; diff --git a/assets/index-BN-vOeL2.js b/assets/index-BN-vOeL2.js deleted file mode 100644 index 417b580d..00000000 --- a/assets/index-BN-vOeL2.js +++ /dev/null @@ -1,3 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/About-dHfyUSjm.js","assets/vendor-react-BiHfrq0e.js","assets/vendor-gsap-a3sj5zmn.js","assets/vendor-PiU4YGcH.js","assets/vendor-md-CLKxNZoa.js","assets/vendor-md-dRWncRqa.css","assets/vendor-ui-B0ssGG4c.js","assets/Decoder-CD04ckwI.js","assets/NeuralReveal-BflyZYSb.js","assets/Workbench-KEHB2TYr.js","assets/releases-DiQz_IDu.js","assets/McpServer-619DB13w.js","assets/ClaudePlugin-ClObfYRc.js","assets/Blog-U8RuDZLO.js","assets/blogData-OjR2ZtNr.js","assets/BlogPost-Cft_Na6k.js","assets/Pricing-DJJSKVoA.js","assets/TrialForm-BIjatKya.js","assets/PricingFR-C6aJLaoB.js","assets/Commercial-C0AKNYqz.js","assets/Contact-CNyl61eI.js","assets/CalendlyWidget-BuhQfp2_.js","assets/License-DHRrrKKE.js","assets/Privacy-C4c3BcJK.js","assets/Terms-C28kGJxx.js","assets/TermsFR-BLz2i-t6.js","assets/Refund-CTEPp265.js","assets/Founder-BJJh0MV8.js","assets/Evidence-Bj6L0ipY.js","assets/Changelog-gIx07919.js","assets/TechnicalReference-CBJ6Ke79.js","assets/Docs-D_KRdt5F.js","assets/Installer-AK92G1y0.js","assets/Manual-BOkG7qye.js","assets/Success-Bv54wCpg.js","assets/NotFound-Xb_C85Aw.js"])))=>i.map(i=>d[i]); -import{r as c,j as e,c as ee}from"./vendor-react-BiHfrq0e.js";import{z as G,L as j,R as te,A as f,B as re}from"./vendor-PiU4YGcH.js";import{S as V,C as se,a as ae,b as ne,R as oe,c as ie,d as le,F as ce,B as de,P as xe,M as me,e as he}from"./vendor-ui-B0ssGG4c.js";import{g as z,S as pe}from"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))t(l);new MutationObserver(l=>{for(const d of l)if(d.type==="childList")for(const h of d.addedNodes)h.tagName==="LINK"&&h.rel==="modulepreload"&&t(h)}).observe(document,{childList:!0,subtree:!0});function i(l){const d={};return l.integrity&&(d.integrity=l.integrity),l.referrerPolicy&&(d.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?d.credentials="include":l.crossOrigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function t(l){if(l.ep)return;l.ep=!0;const d=i(l);fetch(l.href,d)}})();const ue="modulepreload",fe=function(n){return"/"+n},W={},b=function(s,i,t){let l=Promise.resolve();if(i&&i.length>0){let u=function(x){return Promise.all(x.map(_=>Promise.resolve(_).then(N=>({status:"fulfilled",value:N}),N=>({status:"rejected",reason:N}))))};document.getElementsByTagName("link");const h=document.querySelector("meta[property=csp-nonce]"),p=h?.nonce||h?.getAttribute("nonce");l=u(i.map(x=>{if(x=fe(x),x in W)return;W[x]=!0;const _=x.endsWith(".css"),N=_?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${x}"]${N}`))return;const k=document.createElement("link");if(k.rel=_?"stylesheet":ue,_||(k.as="script"),k.crossOrigin="",k.href=x,p&&k.setAttribute("nonce",p),document.head.appendChild(k),_)return new Promise((P,R)=>{k.addEventListener("load",P),k.addEventListener("error",()=>R(new Error(`Unable to preload CSS for ${x}`)))})}))}function d(h){const p=new Event("vite:preloadError",{cancelable:!0});if(p.payload=h,window.dispatchEvent(p),!p.defaultPrevented)throw h}return l.then(h=>{for(const p of h||[])p.status==="rejected"&&d(p.reason);return s().catch(d)})},B=[{label:"Platform",href:"/"},{label:"Decoder",href:"/decoder"},{label:"Claude Plugin",href:"/claude-plugin"},{label:"Workbench",href:"/workbench"},{label:"MCP Server",href:"/mcp-server"},{label:"Evidence",href:"/evidence"},{label:"Blog",href:"/blog"},{label:"Pricing",href:"/pricing"},{label:"Contact",href:"/contact"}];function ge(){const[n,s]=c.useState(!1),[i,t]=c.useState(!1),[l,d]=c.useState(!1),h=G(),p=c.useCallback(()=>{const x=window.scrollY;d(x>50),x>200?t(x>window.lastScrollY):t(!1),window.lastScrollY=x},[]);c.useEffect(()=>(window.addEventListener("scroll",p,{passive:!0}),()=>window.removeEventListener("scroll",p)),[p]),c.useEffect(()=>{s(!1)},[h]),c.useEffect(()=>(n?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[n]),c.useEffect(()=>{if(!n)return;const x=_=>{_.key==="Escape"&&s(!1)};return window.addEventListener("keydown",x),()=>window.removeEventListener("keydown",x)},[n]);const u=x=>x==="/"?h.pathname==="/":h.pathname===x;return e.jsxs(e.Fragment,{children:[e.jsxs("nav",{"aria-label":"Main",className:`fixed top-4 left-1/2 -translate-x-1/2 z-50 w-[95%] max-w-6xl transition-all duration-500 ease-out ${i&&!n?"-translate-y-[140%]":"translate-y-0"}`,inert:i&&!n,children:[e.jsx("div",{className:`glass-nav rounded-2xl px-4 sm:px-6 py-3 transition-all duration-300 ${l?"shadow-deep":""}`,children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(j,{to:"/",className:"flex items-center gap-2.5 text-cyan-300 hover:text-cyan-100 transition-colors",children:e.jsx("img",{src:"/images/logo.png",alt:"QECTOR official logo",width:"36",height:"36",className:"h-9 w-9 rounded-lg object-cover"})}),e.jsx("div",{className:"hidden lg:flex items-center gap-1",children:B.map(x=>e.jsx(j,{to:x.href,"aria-current":u(x.href)?"page":void 0,className:`px-3 py-2 rounded-lg text-sm font-medium transition-all duration-300 ${u(x.href)?"text-cyan-300 bg-cyan-300/10":"text-secondary hover:text-primary hover:bg-white/5"}`,children:x.label},x.href))}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(j,{to:"/pricing",className:"hidden sm:inline-flex items-center px-4 py-2 border border-gold-400/60 text-gold-400 text-sm font-medium rounded-lg hover:bg-gold-400/10 transition-all duration-300",children:"Get License"}),e.jsxs("button",{onClick:()=>s(!n),className:"lg:hidden flex flex-col items-center justify-center gap-1.5 p-2 min-h-[44px] min-w-[44px] rounded-lg hover:bg-white/5 transition-colors","aria-label":h.pathname.startsWith("/fr/")?n?"Fermer le menu":"Ouvrir le menu":n?"Close menu":"Open menu","aria-expanded":n,"aria-controls":"mobile-menu",children:[e.jsx("span",{className:`block w-5 h-0.5 bg-primary transition-all duration-300 ${n?"rotate-45 translate-y-2":""}`}),e.jsx("span",{className:`block w-5 h-0.5 bg-primary transition-all duration-300 ${n?"opacity-0":""}`}),e.jsx("span",{className:`block w-5 h-0.5 bg-primary transition-all duration-300 ${n?"-rotate-45 -translate-y-2":""}`})]})]})]})}),e.jsx("div",{id:"mobile-menu","aria-hidden":!n,className:`lg:hidden mt-2 glass-nav rounded-2xl overflow-hidden transition-all duration-300 ${n?"max-h-[calc(100dvh-110px)] overflow-y-auto opacity-100 visible":"max-h-0 opacity-0 invisible"}`,children:e.jsxs("div",{className:"px-4 py-3 space-y-1",children:[B.map(x=>e.jsx(j,{to:x.href,"aria-current":u(x.href)?"page":void 0,className:`flex items-center px-4 py-3 min-h-[44px] rounded-lg text-sm font-medium transition-all duration-200 ${u(x.href)?"text-cyan-300 bg-cyan-300/10":"text-secondary hover:text-primary hover:bg-white/5"}`,onClick:()=>s(!1),children:x.label},x.href)),e.jsx(j,{to:"/pricing",className:"sm:hidden mt-2 text-center px-4 py-3 min-h-[44px] flex items-center justify-center border border-gold-400/60 text-gold-400 text-sm font-medium rounded-lg hover:bg-gold-400/10 transition-all",onClick:()=>s(!1),children:"Get License"})]})})]}),n&&e.jsx("div",{className:"fixed inset-0 z-40 bg-black/50 backdrop-blur-sm lg:hidden",onClick:()=>s(!1)})]})}const A={version:"1.0.0",pypiPackage:"qector-decoder-v3",contactEndpoint:void 0,ogImage:"https://qector.store/images/og-banner.png"},ut="https://calendly.com/qector-info/30min?background_color=0e0d0d&text_color=ffffff&primary_color=0e4088";async function be(){try{const s=await(await fetch("https://pypi.org/rss/project/qector-decoder-v3/releases.xml")).text(),d=(new DOMParser().parseFromString(s,"text/xml").querySelector("item title")?.textContent||"").match(/qector-decoder-v3\s+([\d.]+)/);return d?d[1]:A.version}catch{return A.version}}function Y(){const[n,s]=c.useState(A.version),[i,t]=c.useState(!0);return c.useEffect(()=>{let l=!0;return be().then(d=>{l&&(s(d),t(!1))}),()=>{l=!1}},[]),{version:n,loading:i}}const ye=[{label:"QECTOR Decoder v3",href:"/decoder",badge:"Library"},{label:"Claude Code Plugin",href:"/claude-plugin",badge:"Claude"},{label:"Workbench GUI",href:"/workbench",badge:"Desktop App"},{label:"QECTOR MCP Server",href:"/mcp-server",badge:"MCP"},{label:"Installer & App Bundles",href:"/installer"},{label:"Pricing & Licensing",href:"/pricing"}],je=[{label:"Evidence & Reports",href:"/evidence"},{label:"Technical Reference",href:"/technical-reference"},{label:"Package User Manual",href:"/manual"},{label:"Documentation Hub",href:"/docs"},{label:"Version Changelog",href:"/changelog"}],ve=[{label:"About QECTOR",href:"/about"},{label:"Guillaume Lessard (Founder)",href:"/guillaume-lessard"},{label:"iD01t Productions"},{label:"Commercial Licensing",href:"/commercial"},{label:"Contact Engineering",href:"/contact"},{label:"EULA & License",href:"/license"},{label:"Terms of Service",href:"/terms"},{label:"Privacy Policy",href:"/privacy"},{label:"Refund Policy",href:"/refund"}];function M({href:n,external:s,badge:i,children:t}){const l="group flex items-center justify-between gap-3 min-h-[44px] py-1.5 text-secondary hover:text-cyan-300 text-sm transition-colors duration-200",d=e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"group-hover:translate-x-0.5 transition-transform duration-200",children:t}),i&&e.jsx("span",{className:"text-[10px] font-mono px-1.5 py-0.5 rounded bg-surface border border-gridline text-muted-foreground group-hover:border-cyan-300/30 group-hover:text-cyan-300 transition-colors",children:i})]});return n?s?e.jsxs("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:l,children:[d,e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}):e.jsx(j,{to:n,className:l,children:d}):e.jsx("span",{className:l,children:d})}function Ne(){const{version:n}=Y();return e.jsxs("footer",{className:"border-t border-cyan-900/40 bg-void/95 relative overflow-hidden text-left",children:[e.jsx("div",{className:"absolute top-0 left-1/2 -translate-x-1/2 w-1/2 h-16 bg-gradient-to-b from-cyan-400/5 to-transparent blur-3xl pointer-events-none"}),e.jsx("div",{className:"section-padding py-16 relative z-10",children:e.jsxs("div",{className:"max-w-7xl mx-auto",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-5 gap-12 lg:gap-8",children:[e.jsxs("div",{className:"lg:col-span-2 space-y-6",children:[e.jsxs(j,{to:"/",className:"inline-flex items-center gap-3 text-cyan-300 hover:text-cyan-100 transition-colors duration-200",children:[e.jsx("img",{src:"/images/logo.png",alt:"QECTOR official logo",width:"40",height:"40",className:"h-10 w-10 rounded-lg object-cover"}),e.jsxs("span",{className:"text-lg font-extrabold tracking-tight text-white",children:["QECTOR",e.jsx("span",{className:"text-cyan-300",children:"."})]})]}),e.jsx("p",{className:"text-secondary/80 text-sm leading-relaxed max-w-sm",children:"Quantum error correction decoding for Python. Built by Guillaume Lessard at iD01t Productions."}),e.jsxs("div",{className:"flex items-center gap-2 pt-2",children:[e.jsxs("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] text-muted-foreground hover:text-cyan-300 transition-colors","aria-label":"PyPI",children:[e.jsxs("span",{className:"text-sm font-mono border border-gridline rounded px-2 py-1 hover:border-cyan-300/30",children:["v",n]}),e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-1 text-muted-foreground hover:text-cyan-300 transition-colors text-sm font-medium","aria-label":"GitHub",children:["GitHub",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-1 text-muted-foreground hover:text-cyan-300 transition-colors text-sm font-medium","aria-label":"ORCID",children:["ORCID",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]})]})]}),e.jsxs("div",{className:"space-y-5",children:[e.jsx("h2",{className:"text-xs font-semibold uppercase tracking-widest text-white/90",children:"Platform"}),e.jsx("div",{className:"flex flex-col gap-1",children:ye.map(s=>e.jsx(M,{href:s.href,external:s.external,badge:s.badge,children:s.label},s.label))})]}),e.jsxs("div",{className:"space-y-5",children:[e.jsx("h2",{className:"text-xs font-semibold uppercase tracking-widest text-white/90",children:"Research & Docs"}),e.jsx("div",{className:"flex flex-col gap-1",children:je.map(s=>e.jsx(M,{href:s.href,external:s.external,badge:s.badge,children:s.label},s.label))})]}),e.jsxs("div",{className:"space-y-5",children:[e.jsx("h2",{className:"text-xs font-semibold uppercase tracking-widest text-white/90",children:"Company"}),e.jsx("div",{className:"flex flex-col gap-1",children:ve.slice(0,5).map(s=>e.jsx(M,{href:s.href,external:s.external,badge:s.badge,children:s.label},s.label))})]})]}),e.jsxs("div",{className:"mt-16 pt-8 border-t border-gridline flex flex-col md:flex-row items-start md:items-center justify-between gap-6",children:[e.jsxs("div",{className:"text-xs text-muted-foreground max-w-xl leading-relaxed",children:[e.jsx("span",{className:"font-semibold text-secondary",children:"Distribution:"})," PyPI (",e.jsx("code",{className:"text-cyan-300/80 font-mono",children:"qector-decoder-v3"}),") is the Python library. The free ",e.jsx(j,{to:"/installer",className:"link-accent",children:"Workbench GUI"})," is a standalone desktop application shipped self-contained for Windows x64 and Linux x64 (no system Python required)."]}),e.jsxs("nav",{"aria-label":"Legal",className:"flex flex-wrap items-center gap-x-4 gap-y-1 text-xs font-medium text-muted-foreground",children:[e.jsx(j,{to:"/privacy",className:"inline-flex items-center min-h-[44px] px-1 hover:text-cyan-300 transition-colors duration-200",children:"Privacy"}),e.jsx(j,{to:"/terms",className:"inline-flex items-center min-h-[44px] px-1 hover:text-cyan-300 transition-colors duration-200",children:"Terms"}),e.jsx(j,{to:"/refund",className:"inline-flex items-center min-h-[44px] px-1 hover:text-cyan-300 transition-colors duration-200",children:"Refund"}),e.jsx(j,{to:"/license",className:"inline-flex items-center min-h-[44px] px-1 hover:text-cyan-300 transition-colors duration-200",children:"License"}),e.jsxs("a",{href:"/.well-known/security.txt",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-1 hover:text-cyan-300 transition-colors duration-200",children:["Security",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]})]})]})]})}),e.jsx("div",{className:"bg-[#050b14]",children:e.jsx("div",{className:"section-padding py-4",children:e.jsxs("div",{className:"max-w-7xl mx-auto text-xs text-muted-foreground/70 text-center md:text-left",children:["© 2026 QECTOR Lab / iD01t Productions. All rights reserved.",e.jsx("div",{className:"mt-1",children:"Éditeur : Guillaume Lessard, entrepreneur individuel (iD01t Productions), 2004 De Lorimier, Longueuil, QC J4K 3H7, Canada · admin@qector.store"})]})})})]})}function we({children:n}){const s=G();return c.useEffect(()=>{window.scrollTo(0,0),document.documentElement.lang=s.pathname.startsWith("/fr/")?"fr":"en",document.getElementById("main-content")?.focus();const i=window.matchMedia("(prefers-reduced-motion: reduce)").matches,t=(h=document)=>{h.querySelectorAll(".card-surface:not(.revealed), .prose:not(.revealed)").forEach(p=>{i?p.classList.add("revealed"):l.observe(p)})},l=new IntersectionObserver(h=>{h.forEach(p=>{p.isIntersecting&&(p.target.classList.add("revealed"),l.unobserve(p.target))})},{threshold:.1,rootMargin:"0px 0px -10% 0px"});let d=null;return i||(d=new MutationObserver(h=>{h.forEach(p=>{p.addedNodes.forEach(u=>{u.nodeType===Node.ELEMENT_NODE&&t(u)})})}),d.observe(document.body,{childList:!0,subtree:!0})),t(),()=>{l.disconnect(),d&&d.disconnect()}},[s.pathname]),e.jsxs("div",{className:"min-h-screen bg-void text-foreground quantum-grid-bg relative",children:[e.jsx("a",{href:"#main-content",className:"sr-only focus:not-sr-only focus:fixed focus:top-4 focus:left-4 focus:z-[100] focus:px-4 focus:py-2 focus:bg-cyan-300 focus:text-void focus:font-semibold focus:rounded-lg",children:s.pathname.startsWith("/fr/")?"Aller au contenu principal":"Skip to main content"}),e.jsx(ge,{}),e.jsx("main",{id:"main-content",tabIndex:-1,className:"pt-20 outline-none",children:n}),e.jsx(Ne,{})]})}class ke extends c.Component{state={hasError:!1};static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(s,i){console.error("QECTOR site error boundary caught:",s,i.componentStack)}handleReload=()=>{this.setState({hasError:!1}),window.location.href="/"};render(){return this.state.hasError?e.jsx("div",{className:"min-h-screen flex items-center justify-center bg-void px-6",children:e.jsxs("div",{className:"max-w-md text-center card-surface",children:[e.jsx("div",{className:"w-12 h-12 rounded-full bg-cyan-300/10 border border-cyan-300/20 flex items-center justify-center mx-auto mb-4 text-cyan-300 text-xl",children:"!"}),e.jsx("h1",{className:"text-xl font-bold text-primary mb-2",children:"Something went wrong"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"This page hit an unexpected error. No page data was sent; check the browser console for the local error and reload."}),e.jsx("button",{onClick:this.handleReload,className:"btn-cyan",children:"Reload homepage"})]})}):this.props.children}}function Ee(){return e.jsx("div",{className:"min-h-[60vh] flex items-center justify-center",role:"status","aria-live":"polite",children:e.jsxs("div",{className:"flex flex-col items-center gap-3",children:[e.jsx("div",{className:"w-8 h-8 border-2 border-cyan-300/20 border-t-cyan-300 rounded-full animate-spin"}),e.jsx("span",{className:"sr-only",children:"Loading page…"})]})})}const ft="/stripe/trial",_e={proMonthly:"https://buy.stripe.com/5kQcN7eAp3BM5RE5ZMeUU0g",proAnnual:"https://buy.stripe.com/8x228teAp6NY6VI87UeUU0h",proPerpetual:"https://buy.stripe.com/dRm00l0Jzfku4NA0FseUU0i",team:"https://buy.stripe.com/aFafZjcsh6NY1Bobk6eUU0j",lab:"https://buy.stripe.com/aFa7sN9g5fku0xk5ZMeUU0k",pilot:"https://buy.stripe.com/14AeVf9g5b4e0xkdseeUU0l"},L={proMonthly:79,proAnnual:790,proPerpetual:1990,team:3900,lab:9900,pilot:1500,enterpriseFrom:25e3,trialDays:14,pilotDays:60,refundDays:14,academicDiscountPct:40},S=n=>`$${n.toLocaleString("en-US")}`,gt=n=>`${n.toLocaleString("fr-CA").replace(/[\u00a0\u202f]/g," ")} $`,Ce={en:"en_US",fr:"fr_FR"};function Pe({title:n="QECTOR · Quantum Error Correction Decoding for Python",description:s="QECTOR Decoder v3 - Rust-core Python quantum error correction decoder. v1.0.0 first stable release with API stability tiers, a qector CLI, and a reproducible benchmark harness (qector bench) for measuring on your own hardware.",ogImage:i=A.ogImage,noindex:t=!1,lang:l="en",alternates:d}){const h=G(),p=`https://qector.store${h.pathname==="/"?"/":`${h.pathname.replace(/\/$/,"")}/`}`;return c.useEffect(()=>{document.title=n,document.documentElement.lang=l;const u=(N,k)=>{let P=document.querySelector(N);if(!P){P=document.createElement("meta");const R=N.includes("property=")?"property":"name",O=N.match(/"([^"]+)"/)?.[1]||"";P.setAttribute(R,O),document.head.appendChild(P)}P.content=k};u('meta[name="description"]',s),u('meta[name="robots"]',t?"noindex, follow":"index, follow, max-image-preview:large"),u('meta[property="og:title"]',n),u('meta[property="og:description"]',s),u('meta[property="og:url"]',p),u('meta[property="og:type"]',"website"),u('meta[property="og:locale"]',Ce[l]??"en_US"),u('meta[property="og:image"]',i),u('meta[property="og:image:alt"]',"QECTOR official logo"),u('meta[property="og:site_name"]',"QECTOR"),u('meta[name="twitter:card"]',"summary_large_image"),u('meta[name="twitter:title"]',n),u('meta[name="twitter:description"]',s),u('meta[name="twitter:image"]',i),u('meta[name="twitter:image:alt"]',"QECTOR official logo"),u('meta[name="twitter:site"]',"@DJiD01T"),u('meta[name="theme-color"]',"#24e7ff");let x=document.querySelector('link[rel="canonical"]');x||(x=document.createElement("link"),x.rel="canonical",document.head.appendChild(x)),x.href=p,document.querySelectorAll('link[rel="alternate"][hreflang]').forEach(N=>N.remove());const _=[];for(const N of d??[]){const k=document.createElement("link");k.rel="alternate",k.hreflang=N.lang,k.href=N.href,document.head.appendChild(k),_.push(k)}return()=>{_.forEach(N=>N.remove())}},[n,s,p,i,t,l,d]),null}function Le({data:n}){const s="json-ld-data";return c.useEffect(()=>{let i=document.getElementById(s);return i||(i=document.createElement("script"),i.id=s,i.type="application/ld+json",document.head.appendChild(i)),i.textContent=JSON.stringify(n),()=>{const t=document.getElementById(s);t&&t.remove()}},[n]),null}function Re({icon:n,label:s,href:i,variant:t="default",className:l=""}){const d=t==="gold"?"bg-gold-400/10 border border-gold-400/30 text-gold-400 hover:bg-gold-400/20":"bg-surface border border-gridline text-secondary hover:text-cyan-300 hover:border-cyan-300/30";return e.jsxs("a",{href:i,target:"_blank",rel:"noopener noreferrer",className:`inline-flex items-center gap-2 px-4 py-2.5 rounded-full text-sm transition-all duration-300 ${d} ${l}`,children:[e.jsx("span",{"aria-hidden":"true",children:n}),e.jsx("span",{children:s})]})}function H({eyebrow:n,heading:s,description:i,align:t="center",maxWidth:l="max-w-3xl",className:d=""}){const h=t==="center"?"text-center mx-auto":"text-left",p=t==="center"?"mx-auto":"";return e.jsxs("div",{className:`${l} ${h} mb-12 md:mb-16 ${d}`,children:[n&&e.jsx("span",{className:"eyebrow-pill mb-4",children:n}),e.jsx("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight text-balance mb-4",children:s}),i&&e.jsx("p",{className:`text-secondary text-lg leading-relaxed text-pretty max-w-prose ${p}`,children:i})]})}const Se={cyan:"bg-cyan-300/10 text-cyan-300 border border-cyan-300/20",green:"bg-green-400/10 text-green-400 border border-green-400/20",purple:"bg-purple-400/10 text-purple-400 border border-purple-400/20",gold:"bg-gold-400/10 text-gold-400 border border-gold-400/20"};function Oe({title:n,tag:s,badge:i,desc:t,proof:l,muted:d=!1,className:h=""}){return e.jsxs("div",{className:`card-surface group ${d?"border-gridline/50 opacity-80":""} ${h}`,children:[s&&e.jsx("div",{className:"text-muted-foreground text-xs font-mono uppercase tracking-wider mb-2",children:s}),e.jsxs("div",{className:"flex items-center justify-between gap-3 mb-3",children:[e.jsx("h3",{className:`font-semibold text-lg transition-colors ${d?"text-gold-400/80":"text-cyan-300 group-hover:text-cyan-200"}`,children:n}),i&&e.jsx("span",{className:`shrink-0 px-2.5 py-1 rounded-full text-xs font-medium ${d?"bg-gold-400/5 text-gold-400/60 border border-gold-400/20":Se[i.color]}`,children:i.label})]}),e.jsx("p",{className:`leading-relaxed ${d?"text-muted-foreground text-sm":"text-secondary"}`,children:t}),l&&e.jsxs("div",{className:"mt-4 pt-4 border-t border-gridline/60 flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"text-green-400",children:"✓"}),e.jsx("span",{className:"text-muted-foreground font-mono",children:l})]})]})}function De({title:n,statement:s,href:i,linkLabel:t="View evidence →",className:l=""}){return e.jsxs("div",{className:`relative rounded-2xl border border-cyan-300/20 bg-void p-6 overflow-hidden ${l}`,children:[e.jsx("div",{className:"absolute inset-0 pointer-events-none bg-gradient-to-br from-cyan-300/5 to-transparent"}),e.jsxs("div",{className:"relative z-10",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300"}),e.jsx("span",{className:"text-xs font-mono uppercase tracking-wider text-cyan-300",children:n})]}),e.jsx("p",{className:"text-secondary leading-relaxed mb-4",children:s}),i&&e.jsx("a",{href:i,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm font-medium hover:underline underline-offset-4",children:t})]})]})}function Te(){const[n,s]=c.useState({}),[i,t]=c.useState({}),[l,d]=c.useState(!1),[h,p]=c.useState(!1),u=c.useMemo(()=>{const a=[];for(let r=0;r<3;r++)for(let o=0;o<3;o++)a.push({id:`${r}_${o}`,r,c:o,x:120+o*100,y:60+r*100});return a},[]),x=c.useMemo(()=>{const a=[];for(let r=0;r<3;r++)a.push({id:`L_${r}`,type:"L",r,c:-1,x1:30,y1:60+r*100,x2:120,y2:60+r*100});for(let r=0;r<3;r++)a.push({id:`R_${r}`,type:"R",r,c:3,x1:320,y1:60+r*100,x2:410,y2:60+r*100});for(let r=0;r<3;r++)for(let o=0;o<2;o++)a.push({id:`H_${r}_${o}`,type:"H",r,c:o,x1:120+o*100,y1:60+r*100,x2:120+(o+1)*100,y2:60+r*100});for(let r=0;r<2;r++)for(let o=0;o<3;o++)a.push({id:`V_${r}_${o}`,type:"V",r,c:o,x1:120+o*100,y1:60+r*100,x2:120+o*100,y2:60+(r+1)*100});return a},[]),_=c.useMemo(()=>{const a={},r=o=>{a[o]=!a[o]};return x.forEach(o=>{n[o.id]&&(o.type==="H"?(r(`${o.r}_${o.c}`),r(`${o.r}_${o.c+1}`)):o.type==="V"?(r(`${o.r}_${o.c}`),r(`${o.r+1}_${o.c}`)):o.type==="L"?r(`${o.r}_0`):o.type==="R"&&r(`${o.r}_2`))}),Object.keys(a).forEach(o=>{a[o]||delete a[o]}),a},[n,x]),N=a=>{t({}),d(!1),s(r=>({...r,[a]:!r[a]}))},k=()=>{s({}),t({}),d(!1)},P=(a=.2)=>{t({}),d(!1);const r={};x.forEach(o=>{Math.random()Math.abs(a.r-r.r)+Math.abs(a.c-r.c),O=c.useCallback((a,r)=>{const o=[],E=Math.min(a.r,r.r),g=Math.max(a.r,r.r),w=a.r{const a=Object.keys(_).map(g=>{const[w,m]=g.split("_").map(Number);return u.find(y=>y.r===w&&y.c===m)});if(a.length===0){t({}),d(!0);return}const r=g=>{if(g.length===0)return{cost:0,pairs:[]};const w=g[0],m=g.slice(1);let y=1/0,v=[];const C=w.c+1,I=r(m);C+I.costX!==D),$=r(Z);U+$.cost{if(g==="L"||g==="R"||w==="L"||w==="R"){const m=g==="L"||g==="R"?w:g;if((g==="L"||g==="R"?g:w)==="L"){for(let v=0;v{E[y]=!0})}),t(E),d(!0)},[_,u,O]),K=c.useMemo(()=>{if(!l)return"idle";const a=x.filter(m=>{const y=n[m.id]||!1,v=i[m.id]||!1;return y!==v}),r={},o=(m,y)=>{r[m]||(r[m]=[]),r[y]||(r[y]=[]),r[m].push(y),r[y].push(m)};a.forEach(m=>{m.type==="H"?o(`${m.r}_${m.c}`,`${m.r}_${m.c+1}`):m.type==="V"?o(`${m.r}_${m.c}`,`${m.r+1}_${m.c}`):m.type==="L"?o("L",`${m.r}_0`):m.type==="R"&&o("R",`${m.r}_2`)});const E={},g=["L"];E.L=!0;let w=!1;for(;g.length>0;){const m=g.shift();if(m==="R"){w=!0;break}(r[m]||[]).forEach(v=>{E[v]||(E[v]=!0,g.push(v))})}return w?"failure":"success"},[l,n,i,x]);return e.jsxs("div",{className:"flex flex-col gap-4 border border-gridline bg-surface/30 rounded-2xl p-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsxs("h4",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider flex items-center gap-1.5",children:[e.jsx(V,{className:"w-4 h-4"}),"Interactive QEC Simulator"]}),e.jsx("p",{className:"text-muted-foreground text-xs mt-0.5",children:"Planar stabilizer code (d=3). Click edges to toggle physical errors."})]}),e.jsx("button",{onClick:()=>p(!h),className:"min-h-[44px] min-w-[44px] inline-flex items-center justify-center text-secondary hover:text-cyan-300 transition-colors","aria-label":"Toggle help",children:e.jsx(se,{className:"w-5 h-5"})})]}),h&&e.jsxs("div",{className:"p-4 bg-void/80 border border-gridline rounded-xl text-xs text-secondary leading-relaxed space-y-2",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"How to play:"})," Click on the links (grey/red lines) to inject physical errors. Red lines represent errors."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Syndromes:"})," Grid nodes measure checks. When adjacent errors are odd, a check triggers (lights up orange)."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Decoder:"})," Minimum Weight Perfect Matching (MWPM) matches active checks. When you click ",e.jsx("span",{className:"text-cyan-300",children:"Run Decoder"}),", it draws matching correction paths in cyan."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Success condition:"})," If error + correction paths do not form a logical connection across boundaries (from left to right), the state is successfully corrected!"]})]}),e.jsxs("div",{className:"bg-void/50 border border-gridline rounded-xl flex items-center justify-center p-4 relative overflow-hidden",children:[e.jsxs("svg",{viewBox:"0 0 440 320",className:"w-full max-w-[440px] h-auto select-none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsxs("defs",{children:[e.jsxs("radialGradient",{id:"activeNodeGlow",cx:"50%",cy:"50%",r:"50%",children:[e.jsx("stop",{offset:"0%",stopColor:"#fef08a"}),e.jsx("stop",{offset:"60%",stopColor:"#eab308"}),e.jsx("stop",{offset:"100%",stopColor:"#a16207"})]}),e.jsxs("linearGradient",{id:"inactiveNodeGlow",x1:"0",y1:"0",x2:"1",y2:"1",children:[e.jsx("stop",{offset:"0%",stopColor:"#1e293b"}),e.jsx("stop",{offset:"100%",stopColor:"#0f172a"})]}),e.jsx("pattern",{id:"gridDots",width:"20",height:"20",patternUnits:"userSpaceOnUse",children:e.jsx("circle",{cx:"2",cy:"2",r:"1",fill:"#1e293b",fillOpacity:"0.6"})})]}),e.jsx("rect",{width:"440",height:"320",fill:"url(#gridDots)",rx:"10"}),e.jsx("line",{x1:"30",y1:"30",x2:"30",y2:"290",stroke:"#475569",strokeWidth:"3",strokeDasharray:"4 4"}),e.jsx("text",{x:"20",y:"165",fill:"#475569",fontSize:"10",textAnchor:"middle",transform:"rotate(-90, 20, 165)",className:"font-mono",children:"LEFT BOUNDARY"}),e.jsx("line",{x1:"410",y1:"30",x2:"410",y2:"290",stroke:"#475569",strokeWidth:"3",strokeDasharray:"4 4"}),e.jsx("text",{x:"420",y:"165",fill:"#475569",fontSize:"10",textAnchor:"middle",transform:"rotate(90, 420, 165)",className:"font-mono",children:"RIGHT BOUNDARY"}),x.map(a=>{const r=n[a.id]||!1,o=i[a.id]||!1;let E="#334155";return r&&o?E="#e2e8f0":r?E="#ef4444":o&&(E="#06b6d4"),e.jsxs("g",{className:"group",children:[e.jsx("line",{x1:a.x1,y1:a.y1,x2:a.x2,y2:a.y2,stroke:"transparent",strokeWidth:"16",className:"cursor-pointer",tabIndex:0,role:"checkbox","aria-checked":r,"aria-label":`Toggle error on qubit edge ${a.id}`,onClick:()=>N(a.id),onKeyDown:g=>{(g.key==="Enter"||g.key===" ")&&(g.preventDefault(),N(a.id))}}),e.jsx("line",{x1:a.x1,y1:a.y1,x2:a.x2,y2:a.y2,stroke:E,strokeWidth:r||o?4:2,className:"transition-colors duration-200 pointer-events-none group-hover:stroke-cyan-300/40",style:{filter:r?"drop-shadow(0 0 4px rgba(239, 68, 68, 0.4))":o?"drop-shadow(0 0 4px rgba(6, 182, 212, 0.4))":"none"}}),e.jsx("circle",{cx:(a.x1+a.x2)/2,cy:(a.y1+a.y2)/2,r:"5",fill:r?"#ef4444":o?"#06b6d4":"#1e293b",stroke:r||o?"#e2e8f0":"#475569",strokeWidth:"1.5",className:"transition-colors duration-200 pointer-events-none group-hover:fill-cyan-300 group-hover:stroke-cyan-200"})]},a.id)}),u.map(a=>{const r=_[a.id]||!1;return e.jsxs("g",{children:[r&&e.jsx("circle",{cx:a.x,cy:a.y,r:"18",fill:"rgba(251, 191, 36, 0.15)",className:"animate-pulse"}),e.jsx("circle",{cx:a.x,cy:a.y,r:r?12:9,fill:r?"url(#activeNodeGlow)":"url(#inactiveNodeGlow)",stroke:r?"#fbbf24":"#334155",strokeWidth:r?2:1.5,className:"transition-all duration-300 pointer-events-none",style:{filter:r?"drop-shadow(0 0 10px rgba(251, 191, 36, 0.7))":"none"}}),e.jsx("circle",{cx:a.x-(r?3:2),cy:a.y-(r?3:2),r:r?3:2,fill:"white",fillOpacity:"0.25",className:"pointer-events-none"}),r&&e.jsx("circle",{cx:a.x,cy:a.y,r:20,fill:"transparent",stroke:"#fbbf24",strokeWidth:"1",strokeOpacity:"0.4",className:"animate-ping"}),e.jsx("text",{x:a.x,y:a.y+3,textAnchor:"middle",fill:r?"#020617":"#94a3b8",fontSize:"9",fontWeight:"bold",className:"font-mono text-[9px] pointer-events-none",children:r?"!":"S"})]},a.id)})]}),l&&e.jsxs("div",{className:"absolute bottom-3 left-3 right-3 flex items-center justify-between p-3 bg-surface/90 border border-gridline rounded-xl backdrop-blur-md transition-all duration-300",children:[K==="success"?e.jsxs("div",{className:"flex items-center gap-2 text-green-400 text-sm font-semibold",children:[e.jsx(ae,{className:"w-5 h-5"}),e.jsx("span",{children:"SUCCESS: Errors resolved"})]}):e.jsxs("div",{className:"flex items-center gap-2 text-red-400 text-sm font-semibold",children:[e.jsx(ne,{className:"w-5 h-5"}),e.jsx("span",{children:"LOGICAL ERROR: Correction failed"})]}),e.jsx("div",{className:"text-[10px] text-muted-foreground font-mono",children:"d=3 code slice"})]})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[e.jsxs("button",{onClick:()=>P(.2),className:"px-3 py-3 bg-surface hover:bg-white/5 border border-gridline rounded-lg text-xs font-semibold text-secondary hover:text-primary transition-all flex items-center justify-center gap-1.5",children:[e.jsx(V,{className:"w-3.5 h-3.5"}),"Inject Errors"]}),e.jsxs("button",{onClick:J,disabled:Object.keys(_).length===0,className:"px-3 py-3 bg-cyan-300 disabled:bg-cyan-300/20 disabled:text-void/40 hover:bg-cyan-200 text-void rounded-lg text-xs font-bold transition-all flex items-center justify-center gap-1.5",children:[e.jsx(oe,{className:`w-3.5 h-3.5 ${l?"":"animate-spin"}`}),"Run Decoder"]}),e.jsx("button",{onClick:k,className:"px-3 py-3 bg-surface hover:bg-red-950/20 border border-gridline hover:border-red-900/30 rounded-lg text-xs font-semibold text-secondary hover:text-red-400 transition-all",children:"Reset Graph"})]})]})}function Ae({code:n,language:s="python",filename:i,className:t=""}){const[l,d]=c.useState(!1),h=async()=>{try{await navigator.clipboard.writeText(n),d(!0),setTimeout(()=>d(!1),2e3)}catch(p){console.error("Failed to copy text: ",p)}};return e.jsxs("div",{className:`my-4 border border-gridline rounded-xl overflow-hidden bg-void/50 ${t}`,children:[i&&e.jsxs("div",{className:"flex items-center justify-between px-4 py-2 border-b border-gridline bg-surface/50 text-xs font-mono text-muted-foreground",children:[e.jsx("span",{children:i}),e.jsx("span",{className:"uppercase text-[10px] bg-cyan-300/10 text-cyan-300 px-1.5 py-0.5 rounded border border-cyan-300/20",children:s})]}),e.jsxs("div",{className:"relative group",children:[e.jsx("pre",{className:"p-4 pr-14 overflow-x-auto overflow-y-auto font-mono text-sm leading-relaxed text-secondary bg-void/30 max-h-[400px]",children:e.jsx("code",{className:`language-${s}`,children:n})}),e.jsx("button",{onClick:h,className:"absolute top-3 right-3 p-1.5 bg-surface border border-gridline rounded-lg text-secondary hover:text-cyan-300 hover:border-cyan-300/30 opacity-0 group-hover:opacity-100 focus:opacity-100 max-sm:opacity-100 transition-all duration-200","aria-label":l?"Copied":"Copy code",children:l?e.jsx(ie,{className:"w-4 h-4 text-green-400"}):e.jsx(le,{className:"w-4 h-4"})}),e.jsx("span",{className:"sr-only","aria-live":"polite",children:l?"Code copied to clipboard":""})]})]})}z.registerPlugin(pe);function T({value:n,label:s}){return e.jsxs("div",{className:"text-center px-4 py-3",children:[e.jsx("div",{className:"text-2xl font-bold text-cyan-300",children:n}),e.jsx("div",{className:"text-xs text-muted-foreground leading-tight max-w-[11rem] mx-auto",children:s})]})}function Ie(){const n=c.useRef([]),{version:s}=Y();c.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const t=document.createElement("script");t.src="https://js.stripe.com/v3/buy-button.js",t.async=!0,document.body.appendChild(t);const l=z.context(()=>{n.current.filter(Boolean).forEach(h=>{z.fromTo(h,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power2.out",scrollTrigger:{trigger:h,start:"top 85%",once:!0}})})});return()=>{l.revert(),t.parentNode===document.body&&document.body.removeChild(t)}},[]);const i=(t,l)=>{t&&(n.current[l]=t)};return e.jsxs(e.Fragment,{children:[e.jsx(Pe,{title:"QECTOR · Quantum Error Correction Decoding for Python",description:"QECTOR Decoder v3 - Rust-core Python library with 17 concrete decoder configurations plus 2 Workbench routing kinds, a syndrome-faithful contract, and reproducible validation guidance."}),e.jsx(Le,{data:{"@context":"https://schema.org","@graph":[{"@type":"SoftwareApplication",name:"QECTOR Decoder v3",description:"QECTOR Decoder v3 is the qector-decoder-v3 1.0.0 Rust/Python quantum error correction package with 17 concrete decoder configurations plus 2 Workbench routing kinds, offline Ed25519 licensing, and reproducible validation guidance.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",programmingLanguage:"Python",url:"https://qector.store/",downloadUrl:"https://pypi.org/project/qector-decoder-v3/",softwareVersion:s,author:{"@type":"Person",name:"Guillaume Lessard",url:"https://github.com/GuillaumeLessard"},maintainer:{"@type":"Organization",name:"iD01t Productions"},identifier:"https://pypi.org/project/qector-decoder-v3/",license:"https://qector.store/license/",offers:{"@type":"Offer",price:"0",priceCurrency:"USD",availability:"https://schema.org/InStock"}},{"@type":"Organization",name:"QECTOR",url:"https://qector.store/",logo:"https://qector.store/images/logo.png",email:"admin@qector.store",founder:{"@type":"Person",name:"Guillaume Lessard",identifier:"0009-0000-3465-3753"},address:{"@type":"PostalAddress",addressLocality:"Longueuil",addressRegion:"QC",postalCode:"J4K 3H7",addressCountry:"CA"},sameAs:["https://github.com/GuillaumeLessard/qector-decoder","https://pypi.org/project/qector-decoder-v3/","https://github.com/GuillaumeLessard/qector-claude-plugin","https://orcid.org/0009-0000-3465-3753"]}]}}),e.jsxs("section",{className:"relative min-h-screen flex items-center justify-center overflow-hidden","aria-label":"QECTOR hero",children:[e.jsx("img",{src:"/images/hero-bg.webp",alt:"","aria-hidden":"true",fetchPriority:"high",className:"absolute inset-0 w-full h-full object-cover z-0",style:{filter:"brightness(0.45) saturate(1.1)"}}),e.jsx("noscript",{children:e.jsx("img",{src:"/images/og-banner.png",alt:"","aria-hidden":"true",className:"absolute inset-0 w-full h-full object-cover z-0",style:{filter:"brightness(0.4)"}})}),e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-void/60 via-void/25 to-void z-[1]"}),e.jsx("div",{className:"absolute inset-0 bg-gradient-to-r from-cyan-500/[0.04] to-transparent z-[1]"}),e.jsxs("div",{className:"relative z-10 w-full min-w-0 text-center max-w-5xl mx-auto px-6 pt-24 pb-20",children:[e.jsxs(j,{to:"/changelog",className:"inline-flex max-w-full flex-wrap items-center justify-center gap-2 px-4 py-2 bg-surface/70 border border-cyan-300/20 rounded-full text-center text-xs leading-relaxed text-cyan-300 hover:bg-cyan-300/10 transition-all mb-8 backdrop-blur-sm",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-green-400 animate-pulse-dot"}),e.jsxs("span",{children:["v",s," · First Stable Release · Changelog →"]})]}),e.jsxs("h1",{className:"max-w-4xl mx-auto break-words text-3xl sm:text-5xl md:text-6xl lg:text-7xl font-extrabold tracking-tight leading-[1.05] mb-6",style:{textShadow:"0 4px 32px rgba(0,0,0,0.9)"},children:[e.jsx("span",{className:"text-transparent bg-clip-text bg-gradient-to-r from-cyan-300 to-cyan-400",children:"QEC Decoding"})," ","for Python"]}),e.jsxs("p",{className:"text-base sm:text-lg md:text-xl text-secondary/90 max-w-3xl mx-auto mb-5 leading-relaxed break-words",style:{textShadow:"0 2px 16px rgba(0,0,0,0.8)"},children:["The v1.0.0 runtime ships 17 concrete decoder configurations, while Workbench v1.0.7 names 19 kinds in total: those configurations plus AutoDecoder and Auto Router orchestration entries."," ",e.jsx("span",{className:"text-primary font-semibold",children:"v1.0.0 is the first stable release:"})," API stability tiers, Relay-BP, CS-OSD, Sinter/qiskit entry points and the qector CLI."]}),e.jsx("p",{className:"text-sm text-muted-foreground max-w-2xl mx-auto mb-10 leading-relaxed",style:{textShadow:"0 2px 12px rgba(0,0,0,0.8)"},children:"Local measurement tools are documented for declared workloads; this site publishes no universal performance figures. Claim boundaries and verification paths are published with the product documentation."}),e.jsxs("div",{className:"flex flex-col sm:flex-row flex-wrap gap-3 sm:gap-4 justify-center items-stretch sm:items-center mb-10",children:[e.jsx(j,{to:"/pricing",className:"btn-gold px-8 py-4 text-sm sm:text-base font-bold w-full sm:w-auto",children:"Start Free 14-Day Trial →"}),e.jsx(j,{to:"/decoder",className:"btn-cyan px-8 py-4 text-sm sm:text-base w-full sm:w-auto",children:"Explore the Decoder"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-windows/releases/latest",className:"btn-outline px-8 py-4 text-sm sm:text-base w-full sm:w-auto",target:"_blank",rel:"noopener noreferrer",children:"Free Workbench GUI"})]}),e.jsx("div",{className:"max-w-2xl mx-auto mb-10 text-left",children:e.jsx(Ae,{language:"bash",filename:"Quick start",code:`pip install qector-decoder-v3==${s} -python -c "from qector_decoder_v3 import BlossomDecoder; print('QECTOR OK')"`})}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 md:divide-x md:divide-white/5 border-t border-white/5 pt-6 max-w-2xl mx-auto",children:[e.jsx(T,{value:"19",label:"Workbench Kinds (17 + 2 routing)"}),e.jsx(T,{value:"GF(2)",label:"Faithfulness Contract"}),e.jsx(T,{value:"CPU + GPU",label:"Optional Execution Paths"}),e.jsx(T,{value:"Open",label:"Evidence Policy"})]}),e.jsxs("div",{className:"max-w-2xl mx-auto mt-10 p-5 md:p-6 bg-surface/50 border border-cyan-300/20 rounded-2xl text-center shadow-lg backdrop-blur-sm",children:[e.jsx("div",{className:"text-[10px] text-cyan-300 font-semibold tracking-[0.2em] mb-2 uppercase",children:"Evidence policy"}),e.jsx("div",{className:"text-lg md:text-xl font-bold text-primary tracking-tight mb-2",children:"No hardware-specific results published"}),e.jsxs("p",{className:"text-xs text-muted-foreground leading-relaxed max-w-lg mx-auto",children:["QECTOR publishes contracts, methodology, and artifacts rather than portable speed numbers. Read the ",e.jsx(j,{to:"/evidence",className:"link-accent",children:"evidence policy"})," before generating a local measurement."]})]})]})]}),e.jsx("section",{className:"section-band bg-surface/20 border-y border-gridline",children:e.jsxs("div",{className:"section-padding max-w-6xl mx-auto",children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("span",{className:"eyebrow-pill-gold mb-4",children:"Release Assurance"}),e.jsx("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight",children:"A Clear Path From Code to Evidence"}),e.jsx("p",{className:"text-secondary text-lg max-w-2xl mx-auto mt-3",children:"The public release, validation contract, and commercial delivery path are explicit by design."})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-5",children:[e.jsxs("div",{className:"card-surface p-6 border-cyan-300/20",children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-3",children:"Current Runtime"}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:"qector-decoder-v3 1.0.0"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"The live PyPI release supports Python 3.9 through 3.13 with 15 binary wheels across Windows, Linux, and macOS."})]}),e.jsxs("div",{className:"card-surface p-6 border-cyan-300/20",children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-3",children:"Evidence Contract"}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:"Correctness before speed"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Every correction is checked against H c = s (mod 2). Measurements stay workload-scoped, artifact-hashed, and separate from universal performance claims."})]}),e.jsxs("div",{className:"card-surface p-6 border-gold-400/20",children:[e.jsx("div",{className:"text-gold-400 font-mono text-xs uppercase tracking-wider mb-3",children:"Secure Delivery"}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:"Signed, traceable licensing"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Commercial fulfillment requires a live Stripe event, issues a v2 Ed25519 token, and records independent billing and license delivery states."}),e.jsx(j,{to:"/license",className:"inline-block text-gold-400 text-sm font-medium hover:underline mt-3",children:"Read the license activation procedure →"})]})]}),e.jsxs("div",{className:"mt-8 card-surface p-6 border-cyan-300/20",children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-3",children:"Evidence Registry"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 text-sm",children:[e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21941046",target:"_blank",rel:"noopener noreferrer",className:"text-secondary hover:text-cyan-300 transition-colors",children:[e.jsx("span",{className:"block text-primary font-semibold",children:"Normative reference manual"}),e.jsx("span",{className:"font-mono text-xs",children:"10.5281/zenodo.21941046"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21611214",target:"_blank",rel:"noopener noreferrer",className:"text-secondary hover:text-cyan-300 transition-colors",children:[e.jsx("span",{className:"block text-primary font-semibold",children:"v1.0.0 user manual"}),e.jsx("span",{className:"font-mono text-xs",children:"10.5281/zenodo.21611214"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.22046403",target:"_blank",rel:"noopener noreferrer",className:"text-secondary hover:text-cyan-300 transition-colors",children:[e.jsx("span",{className:"block text-primary font-semibold",children:"Verification and proof bundle"}),e.jsx("span",{className:"font-mono text-xs",children:"10.5281/zenodo.22046403"})]})]})]})]})}),e.jsx("section",{className:"section-thin border-t border-b border-gridline/30 bg-void/80",children:e.jsx("div",{className:"section-padding",children:e.jsxs("div",{className:"max-w-5xl mx-auto text-center",children:[e.jsx("p",{className:"text-xs text-muted-foreground uppercase tracking-widest mb-8",children:"Works with your existing stack"}),e.jsxs("div",{className:"flex flex-wrap justify-center items-center gap-x-12 gap-y-8",children:[e.jsxs("div",{className:"flex flex-col items-center gap-3",children:[e.jsx("span",{className:"text-2xl font-bold tracking-tight text-white/90",children:"Stim"}),e.jsx("code",{className:"text-xs bg-surface border border-gridline px-2 py-1 rounded text-muted-foreground font-mono",children:"pip install stim"})]}),e.jsxs("div",{className:"flex flex-col items-center gap-3",children:[e.jsx("span",{className:"text-2xl font-bold tracking-tight text-white/90",children:"Sinter"}),e.jsx("code",{className:"text-xs bg-surface border border-gridline px-2 py-1 rounded text-muted-foreground font-mono",children:"pip install sinter"})]}),e.jsxs("div",{className:"flex flex-col items-center gap-3",children:[e.jsx("span",{className:"text-2xl font-bold tracking-tight text-white/90",children:"Qiskit"}),e.jsx("code",{className:"text-xs bg-surface border border-gridline px-2 py-1 rounded text-muted-foreground font-mono",children:"pip install qiskit-qec"})]})]})]})})}),e.jsx("section",{ref:t=>i(t,0),className:"py-8 bg-void",children:e.jsx("div",{className:"section-padding",children:e.jsx("div",{className:"max-w-7xl mx-auto flex flex-wrap justify-center gap-3",children:[{icon:e.jsx(ce,{size:16}),label:"Artifacts (GitHub)",href:"https://github.com/GuillaumeLessard/qector-decoder"},{icon:e.jsx(de,{size:16}),label:"Mastering QEC · Google Play",href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",gold:!0},{icon:e.jsx(xe,{size:16}),label:`PyPI Wheel v${s}`,href:"https://pypi.org/project/qector-decoder-v3/"},{icon:e.jsx(me,{size:16}),label:"Free Workbench App",href:"/workbench"},{icon:e.jsx(he,{size:16}),label:"ORCID 0009-0000-3465-3753",href:"https://orcid.org/0009-0000-3465-3753"}].map(t=>e.jsx(Re,{icon:t.icon,label:t.label,href:t.href,variant:t.gold?"gold":"default"},t.label))})})}),e.jsx("section",{className:"section-band bg-void border-y border-gridline",children:e.jsxs("div",{className:"section-padding max-w-6xl mx-auto",children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("span",{className:"eyebrow-pill mb-4",children:"Proof Suite"}),e.jsx("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight",children:"Executable Verification for v1.0.0"}),e.jsx("p",{className:"text-secondary text-lg max-w-2xl mx-auto mt-3",children:"Hashed-lock reproducible install, CERT_STRICT gate, and Lean/Coq kernel evidence - verifiable against Reference Manual v1.0.0."})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-5",children:[e.jsxs("div",{className:"card-surface p-6 border-cyan-300/20",children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-3",children:"Reproducible Install"}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:"Hashed-lock & CERT_STRICT"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Proof runs are hashed-locked and gated by CERT_STRICT - no universal benchmark figures, only workload-scoped artifacts."})]}),e.jsxs("div",{className:"card-surface p-6 border-cyan-300/20",children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-3",children:"Reference Manual v1.0.0"}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:"DOI 10.5281/zenodo.21941046"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Normative manual with syndrome-faithfulness foundations, 15 backends, and API stability tiers. All proofs trace to this document."})]}),e.jsxs("div",{className:"card-surface p-6 border-cyan-300/20",children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-3",children:"Lean/Coq Evidence"}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:"Kernel-checked proofs"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Executable suite checks GF(2) invariants and logical cosets with Lean/Coq kernels - evidence, not claims."})]})]}),e.jsxs("div",{className:"text-center mt-8",children:[e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-proof",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"View qector-proof on GitHub"}),e.jsx("span",{className:"text-muted-foreground text-xs ml-3",children:"github.com/GuillaumeLessard/qector-proof"})]})]})}),e.jsx("section",{className:"section-feature bg-surface/30 border-t border-gridline",children:e.jsxs("div",{className:"section-padding max-w-6xl mx-auto",children:[e.jsxs("div",{ref:t=>i(t,1),className:"text-center mb-14",children:[e.jsx("span",{className:"eyebrow-pill mb-4",children:"How It Works"}),e.jsx("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight",children:"From Installation to Validation"}),e.jsx("p",{className:"text-secondary text-lg max-w-2xl mx-auto mt-3",children:"QECTOR integrates directly into your existing QEC workflow with minimal friction."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-8",children:[{step:"01",title:"Install",desc:"Install the v1.0.0 wheel in a supported Python 3.9-3.13 environment alongside your existing Stim or PyMatching workflow.",detail:'pip install --upgrade "qector-decoder-v3>=1.0,<2"',code:!0},{step:"02",title:"Decode",desc:"Access 17 concrete Rust-accelerated decoder configurations through a unified Python API. Workbench also exposes AutoDecoder and Auto Router as two orchestration kinds, for 19 named kinds in total.",detail:"from qector_decoder_v3 import BlossomDecoder, BpOsdDecoder",code:!0},{step:"03",title:"Validate",desc:"Claims are scoped to a declared workload and backed by SHA-256 sealed artifacts. Run qector-doctor before relying on optional paths and preserve the report with the result.",detail:"evidence policy · SHA-256 sealed",code:!1}].map(t=>e.jsxs("div",{className:"card-surface p-6 relative",children:[e.jsx("div",{className:"text-4xl font-black text-cyan-300/20 absolute top-4 right-4 select-none",children:t.step}),e.jsx("div",{className:"w-10 h-10 rounded-full bg-cyan-300/10 border border-cyan-300/20 flex items-center justify-center text-cyan-300 font-bold text-sm mb-4",children:t.step}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:t.title}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:t.desc}),t.code&&e.jsx("code",{className:"block text-xs bg-void border border-gridline rounded-lg px-3 py-2 text-cyan-300 font-mono overflow-x-auto",children:t.detail}),!t.code&&e.jsx("span",{className:"inline-flex items-center gap-1.5 text-xs text-cyan-300 font-mono bg-cyan-300/5 px-3 py-1.5 rounded-lg border border-cyan-300/10",children:t.detail})]},t.step))})]})}),e.jsxs("section",{id:"platform",className:"section-feature relative overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 pointer-events-none",style:{background:"radial-gradient(circle at center, rgba(103, 232, 249, 0.06) 0%, transparent 70%)"}}),e.jsx("div",{className:"section-padding relative z-10",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsx("div",{ref:t=>i(t,2),children:e.jsx(H,{eyebrow:"Why QECTOR",heading:"More Than Just MWPM",description:"QEC decoding is not one-size-fits-all. Surface codes, qLDPC codes, optional batch paths, and simulation workloads each demand different decoders. QECTOR documents the supported contracts and the evidence needed to evaluate a selected workload."})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[{title:"Blossom MWPM (Exact)",tag:"Blossom",desc:"Weight-optimal exact minimum-weight perfect matching for graph-like codes. The reference decoder for surface codes.",proof:"Exact optimal matching · Stim-native"},{title:"qLDPC Support",tag:"BP-OSD (qLDPC)",desc:"Matching decoders are restricted to graphlike structures. BP-OSD handles reachable arbitrary GF(2) check matrices, including LDPC and qLDPC workloads.",proof:"Hyperedge-safe GF(2) path"},{title:"Workload-Scoped Execution",tag:"Union-Find + Optional GPU",desc:"Union-Find and optional GPU batch paths are available for supported workloads. Availability and performance must be verified on the target environment.",proof:"Environment-dependent paths"},{title:"One Library, Pluggable",tag:"Stim · PyMatching · Sinter · Qiskit",desc:"Drop QECTOR into any existing Stim or PyMatching workflow. Same API surface, swappable backend. No vendor lock-in.",proof:"Drop-in, same API surface"}].map((t,l)=>e.jsx("div",{ref:d=>i(d,3+l),children:e.jsx(Oe,{title:t.title,tag:t.tag,desc:t.desc,proof:t.proof})},t.title))})]})})]}),e.jsx("section",{id:"decoder-section",className:"section-feature bg-surface/50",children:e.jsx("div",{className:"section-padding",children:e.jsx("div",{className:"max-w-6xl mx-auto",children:e.jsxs("div",{ref:t=>i(t,7),className:"grid grid-cols-1 lg:grid-cols-2 gap-12 items-center",children:[e.jsxs("div",{children:[e.jsx("span",{className:"eyebrow-pill mb-4",children:"19 Workbench Kinds · 17 Concrete Configs"}),e.jsx("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-6",children:"Decoding Algorithms"}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed mb-8",children:"Union-Find, Fast Union-Find, Blossom MWPM, Sparse Blossom, Belief-Matching, BP-OSD, GPU Batch (CUDA/OpenCL), Hybrid, Predecoded, two-stage, ambiguity-cluster, colour-code, space-time, and other concrete paths are exposed through a consistent Python API. Workbench adds the two orchestration kinds, AutoDecoder and Auto Router, to make 19 named kinds."}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[{label:" v1.0.0 First Stable",desc:"API stability tiers, Relay-BP, CS-OSD, Sinter/qiskit entry points, qector CLI + qector-doctor."},{label:" 15 Binary Wheels",desc:"Python 3.9-3.13 across Windows amd64, Linux x86_64, and macOS arm64, released on PyPI."},{label:" GPU Batch Paths",desc:"CUDA and OpenCL batch paths are available for supported hardware and drivers; OpenCL via source build."},{label:" Reproducible Harness",desc:"qector bench ships with the package; measure on your own hardware, no universal figures claimed."}].map(t=>e.jsxs("div",{className:"p-4 bg-void/50 border border-gridline/50 rounded-xl",children:[e.jsx("div",{className:"text-cyan-300 font-semibold text-sm mb-1",children:t.label}),e.jsx("div",{className:"text-muted-foreground text-xs leading-relaxed",children:t.desc})]},t.label))}),e.jsxs("div",{className:"flex flex-wrap gap-3 mt-8",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",children:e.jsx("img",{src:"https://img.shields.io/pypi/v/qector-decoder-v3?style=flat-square&color=24e7ff",alt:"qector-decoder-v3 version on PyPI",loading:"lazy"})}),e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",children:e.jsx("img",{src:"https://img.shields.io/github/v/release/GuillaumeLessard/qector-decoder?style=flat-square&color=24e7ff",alt:"Latest qector-decoder release on GitHub",loading:"lazy"})}),e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",children:e.jsx("img",{src:"https://img.shields.io/badge/GitHub-Artifacts-blue?logo=github",alt:"GitHub release artifacts for QECTOR",loading:"lazy"})})]})]}),e.jsx("div",{ref:t=>i(t,8),className:"relative w-full",children:e.jsx(Te,{})})]})})})}),e.jsx("section",{className:"section-feature relative",children:e.jsx("div",{className:"section-padding relative z-10",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{ref:t=>i(t,9),children:[e.jsx(H,{eyebrow:"Performance",heading:"Measure on Your Own Hardware"}),e.jsx(De,{title:"Reproducible Benchmark Harness",statement:"No universal benchmark figures are published on this site, because results depend on your hardware, drivers, and workloads. The qector bench harness ships with the package so you can measure logical error rates and throughput on your own machines.",href:"https://github.com/GuillaumeLessard/qector-decoder",linkLabel:"GitHub Artifacts →",className:"max-w-3xl mx-auto mb-6"})]}),e.jsx("div",{ref:t=>i(t,10),className:"max-w-3xl mx-auto",children:e.jsxs("div",{className:"p-5 bg-void/50 border border-gridline/50 rounded-xl font-mono text-xs text-muted-foreground leading-relaxed overflow-x-auto",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-cyan-300",children:"$"}),' pip install "qector-decoder-v3[bench]"']}),e.jsxs("div",{children:[e.jsx("span",{className:"text-cyan-300",children:"$"})," qector-doctor"]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-cyan-300",children:"$"})," qector bench -d 5 -r 5 -s 10000 --decoder blossom --noise 0.001"]}),e.jsx("div",{className:"text-green-400 mt-2",children:"✓ Logical error rates and throughput written as reproducible JSON"})]})}),e.jsx("div",{className:"text-center mt-8 flex flex-wrap justify-center gap-3",children:e.jsx(j,{to:"/evidence",className:"btn-outline",children:"Evidence & Reports"})})]})})}),e.jsx("section",{className:"section-band bg-surface/20 border-t border-gridline",children:e.jsxs("div",{className:"section-padding max-w-5xl mx-auto",children:[e.jsx("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight text-center mb-10",children:"Enterprise Compliance & Licensing"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsxs("div",{className:"card-surface border-cyan-300/20 bg-void/50 p-8 rounded-2xl relative overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-r from-cyan-300/5 to-transparent pointer-events-none"}),e.jsx("h3",{className:"text-lg font-bold text-cyan-300 flex items-center gap-2 mb-4",children:"License Clarity"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"The package is source-available under PolyForm Noncommercial 1.0.0 for community use. Commercial use, hosted services, and redistribution require the written scope described on the license and pricing pages."}),e.jsx(j,{to:"/commercial",className:"text-cyan-300 text-sm font-medium hover:underline",children:"Learn about licensing →"})]}),e.jsxs("div",{className:"card-surface border-gold-400/20 bg-void/50 p-8 rounded-2xl relative overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-r from-gold-400/5 to-transparent pointer-events-none"}),e.jsx("h3",{className:"text-lg font-bold text-gold-400 flex items-center gap-2 mb-4",children:"Try It Free, Then Go Pro"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["A free 14-day commercial trial, no card needed. Then Pro from ",S(L.proMonthly),"/month or ",S(L.proAnnual),"/year with GPU batch decoding, Team and Lab plans for groups, and a ",L.refundDays,"-day money-back guarantee on every plan."]}),e.jsx(j,{to:"/pricing",className:"btn-gold text-sm",children:"View Pricing & Tiers →"})]})]})]})}),e.jsx("section",{id:"pricing-section",className:"section-feature bg-surface/50 border-t border-gridline",children:e.jsx("div",{className:"section-padding",children:e.jsxs("div",{className:"max-w-xl mx-auto text-center",children:[e.jsxs("div",{ref:t=>i(t,11),className:"mb-6",children:[e.jsx("span",{className:"eyebrow-pill mb-4",children:"Self-Serve · Instant Clearance"}),e.jsx("h2",{className:"text-3xl font-bold mb-3",children:"QECTOR Pro"}),e.jsxs("p",{className:"text-secondary text-sm max-w-md mx-auto",children:["Free ",L.trialDays,"-day trial · Cancel any time · ",L.refundDays,"-day money-back guarantee"]})]}),e.jsxs("div",{ref:t=>i(t,12),className:"card-surface border-cyan-300/35 neon-border-cyan relative overflow-hidden p-8 rounded-2xl bg-void/80 text-center",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 to-transparent pointer-events-none"}),e.jsxs("div",{className:"mb-6",children:[e.jsxs("h3",{className:"text-4xl font-extrabold text-primary",children:[S(L.proMonthly),e.jsx("span",{className:"text-lg font-semibold text-muted-foreground",children:"/mo"})]}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-1",children:["or ",S(L.proAnnual),"/year (2 months free) · 1 named user · Production use"]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row justify-center gap-3 mb-6",children:[e.jsxs("a",{href:_e.proMonthly,className:"btn-cyan text-base font-bold py-3.5 px-8 rounded-xl shadow-lg shadow-cyan-300/20 inline-flex items-center justify-center gap-2",target:"_blank",rel:"noopener noreferrer",children:[e.jsxs("span",{children:["Buy Pro: ",S(L.proMonthly),"/mo"]}),e.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("line",{x1:"5",y1:"12",x2:"19",y2:"12"}),e.jsx("polyline",{points:"12 5 19 12 12 19"})]})]}),e.jsx(j,{to:"/pricing",className:"btn-outline text-base py-3.5 px-8 rounded-xl",children:"Start free trial"})]}),e.jsx("div",{className:"border-t border-gridline/60 pt-4 mt-4 text-left space-y-2",children:["Full QECTOR Decoder v3 (all decoder families)","GPU (CUDA/OpenCL) batch decoding unlocked","Signed licence token, verified offline: works air-gapped","Priority email support (2 business day response)",`${L.refundDays}-day money-back guarantee on your first payment`].map(t=>e.jsxs("div",{className:"flex items-center gap-2 text-xs text-secondary",children:[e.jsx("span",{className:"text-green-400",children:"✓"}),e.jsx("span",{children:t})]},t))})]}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-4",children:["Need Team, Lab, perpetual or OEM? ",e.jsx(j,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"View all tiers →"})]})]})})})]})}const qe=c.lazy(()=>b(()=>import("./About-dHfyUSjm.js"),__vite__mapDeps([0,1,2,3,4,5,6]))),$e=c.lazy(()=>b(()=>import("./Decoder-CD04ckwI.js"),__vite__mapDeps([7,1,8,2,3,4,5,6]))),Me=c.lazy(()=>b(()=>import("./Workbench-KEHB2TYr.js"),__vite__mapDeps([9,1,8,2,10,3,4,5,6]))),ze=c.lazy(()=>b(()=>import("./McpServer-619DB13w.js"),__vite__mapDeps([11,1,8,3,4,5,6,2]))),Ge=c.lazy(()=>b(()=>import("./ClaudePlugin-ClObfYRc.js"),__vite__mapDeps([12,1,8,10,6,3,4,5,2]))),Qe=c.lazy(()=>b(()=>import("./Blog-U8RuDZLO.js"),__vite__mapDeps([13,1,14,3,4,5,6,2]))),Fe=c.lazy(()=>b(()=>import("./BlogPost-Cft_Na6k.js"),__vite__mapDeps([15,1,14,4,3,5,6,2]))),Ue=c.lazy(()=>b(()=>import("./Pricing-DJJSKVoA.js"),__vite__mapDeps([16,1,17,3,4,5,8,2,6]))),Ve=c.lazy(()=>b(()=>import("./PricingFR-C6aJLaoB.js"),__vite__mapDeps([18,1,17,3,4,5,8,2,6]))),We=c.lazy(()=>b(()=>import("./Commercial-C0AKNYqz.js"),__vite__mapDeps([19,1,8,3,4,5,6,2]))),Be=c.lazy(()=>b(()=>import("./Contact-CNyl61eI.js"),__vite__mapDeps([20,1,21,2,3,4,5,6]))),He=c.lazy(()=>b(()=>import("./License-DHRrrKKE.js"),__vite__mapDeps([22,1,8,3,4,5,6,2]))),Ye=c.lazy(()=>b(()=>import("./Privacy-C4c3BcJK.js"),__vite__mapDeps([23,1,8,3,4,5,6,2]))),Je=c.lazy(()=>b(()=>import("./Terms-C28kGJxx.js"),__vite__mapDeps([24,1,8,3,4,5,6,2]))),Ke=c.lazy(()=>b(()=>import("./TermsFR-BLz2i-t6.js"),__vite__mapDeps([25,1,8,3,4,5,6,2]))),Ze=c.lazy(()=>b(()=>import("./Refund-CTEPp265.js"),__vite__mapDeps([26,1,8,3,4,5,6,2]))),Xe=c.lazy(()=>b(()=>import("./Founder-BJJh0MV8.js"),__vite__mapDeps([27,1,21,3,4,5,6,2]))),et=c.lazy(()=>b(()=>import("./Evidence-Bj6L0ipY.js"),__vite__mapDeps([28,1,8,2,10,3,4,5,6]))),tt=c.lazy(()=>b(()=>import("./Changelog-gIx07919.js"),__vite__mapDeps([29,1,8,10,3,4,5,6,2]))),rt=c.lazy(()=>b(()=>import("./TechnicalReference-CBJ6Ke79.js"),__vite__mapDeps([30,1,8,2,6,3,4,5]))),st=c.lazy(()=>b(()=>import("./Docs-D_KRdt5F.js"),__vite__mapDeps([31,1,8,2,3,4,5,6]))),at=c.lazy(()=>b(()=>import("./Installer-AK92G1y0.js"),__vite__mapDeps([32,1,8,3,4,5,6,2]))),nt=c.lazy(()=>b(()=>import("./Manual-BOkG7qye.js"),__vite__mapDeps([33,1,6,8,3,4,5,2]))),ot=c.lazy(()=>b(()=>import("./Success-Bv54wCpg.js"),__vite__mapDeps([34,1,8,3,4,5,6,2]))),it=c.lazy(()=>b(()=>import("./NotFound-Xb_C85Aw.js"),__vite__mapDeps([35,1,8,3,4,5,6,2])));function lt(){return e.jsx(ke,{children:e.jsx(we,{children:e.jsx(c.Suspense,{fallback:e.jsx(Ee,{}),children:e.jsxs(te,{children:[e.jsx(f,{path:"/",element:e.jsx(Ie,{})}),e.jsx(f,{path:"/about",element:e.jsx(qe,{})}),e.jsx(f,{path:"/decoder",element:e.jsx($e,{})}),e.jsx(f,{path:"/workbench",element:e.jsx(Me,{})}),e.jsx(f,{path:"/mcp-server",element:e.jsx(ze,{})}),e.jsx(f,{path:"/claude-plugin",element:e.jsx(Ge,{})}),e.jsx(f,{path:"/blog",element:e.jsx(Qe,{})}),e.jsx(f,{path:"/blog/:id",element:e.jsx(Fe,{})}),e.jsx(f,{path:"/pricing",element:e.jsx(Ue,{})}),e.jsx(f,{path:"/fr/pricing",element:e.jsx(Ve,{})}),e.jsx(f,{path:"/commercial",element:e.jsx(We,{})}),e.jsx(f,{path:"/contact",element:e.jsx(Be,{})}),e.jsx(f,{path:"/license",element:e.jsx(He,{})}),e.jsx(f,{path:"/privacy",element:e.jsx(Ye,{})}),e.jsx(f,{path:"/terms",element:e.jsx(Je,{})}),e.jsx(f,{path:"/fr/terms",element:e.jsx(Ke,{})}),e.jsx(f,{path:"/refund",element:e.jsx(Ze,{})}),e.jsx(f,{path:"/guillaume-lessard",element:e.jsx(Xe,{})}),e.jsx(f,{path:"/evidence",element:e.jsx(et,{})}),e.jsx(f,{path:"/changelog",element:e.jsx(tt,{})}),e.jsx(f,{path:"/technical-reference",element:e.jsx(rt,{})}),e.jsx(f,{path:"/docs",element:e.jsx(st,{})}),e.jsx(f,{path:"/installer",element:e.jsx(at,{})}),e.jsx(f,{path:"/manual",element:e.jsx(nt,{})}),e.jsx(f,{path:"/success",element:e.jsx(ot,{})}),e.jsx(f,{path:"*",element:e.jsx(it,{})})]})})})})}ee.createRoot(document.getElementById("root")).render(e.jsx(c.StrictMode,{children:e.jsx(re,{children:e.jsx(lt,{})})}));export{Oe as A,Ae as C,De as E,Le as J,_e as L,L as P,Te as Q,Pe as S,ft as T,H as a,S as b,gt as c,ut as d,Y as u}; diff --git a/assets/index-BUYYSLdX.js b/assets/index-BUYYSLdX.js deleted file mode 100644 index 39e3dedb..00000000 --- a/assets/index-BUYYSLdX.js +++ /dev/null @@ -1,3 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/About-xwac7kSw.js","assets/vendor-react-BiHfrq0e.js","assets/vendor-gsap-a3sj5zmn.js","assets/vendor-PiU4YGcH.js","assets/vendor-md-CLKxNZoa.js","assets/vendor-md-dRWncRqa.css","assets/vendor-ui-B0ssGG4c.js","assets/Decoder-Esh1GsiS.js","assets/NeuralReveal-BflyZYSb.js","assets/Workbench-DsnWT-94.js","assets/releases-1-HBloZv.js","assets/McpServer-DYX0yvB3.js","assets/ClaudePlugin-C8eza7n_.js","assets/Blog-B7IPXEkA.js","assets/blogData-OjR2ZtNr.js","assets/BlogPost-DeO2pN01.js","assets/Pricing-xevqAEll.js","assets/faqData-CHsSn8s2.js","assets/PricingFR-C8Es19li.js","assets/Commercial-e3jcuxYP.js","assets/Contact-D61L1Z0b.js","assets/CalendlyWidget-BuhQfp2_.js","assets/License-CqqH5PUX.js","assets/Privacy-CwHcJhDF.js","assets/Terms-BSR2RP9l.js","assets/TermsFR-C-UQyznI.js","assets/Refund-D6csSD1J.js","assets/Founder-BS0MLavi.js","assets/Evidence-CiRnbh9a.js","assets/Changelog-BytfgdnJ.js","assets/TechnicalReference-CGYLPxss.js","assets/Docs-DA36t10x.js","assets/Installer-CeDfnoyS.js","assets/Manual-Bgdopadc.js","assets/Success-Gvo6K55X.js","assets/NotFound-BvmxweJ_.js"])))=>i.map(i=>d[i]); -import{r as c,j as e,c as te}from"./vendor-react-BiHfrq0e.js";import{z as G,L as j,R as re,A as f,B as se}from"./vendor-PiU4YGcH.js";import{S as W,C as ae,a as ne,b as oe,R as ie,c as le,d as ce,F as de,B as xe,P as me,M as he,e as pe}from"./vendor-ui-B0ssGG4c.js";import{g as z,S as ue}from"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))t(l);new MutationObserver(l=>{for(const d of l)if(d.type==="childList")for(const h of d.addedNodes)h.tagName==="LINK"&&h.rel==="modulepreload"&&t(h)}).observe(document,{childList:!0,subtree:!0});function i(l){const d={};return l.integrity&&(d.integrity=l.integrity),l.referrerPolicy&&(d.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?d.credentials="include":l.crossOrigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function t(l){if(l.ep)return;l.ep=!0;const d=i(l);fetch(l.href,d)}})();const fe="modulepreload",ge=function(n){return"/"+n},B={},b=function(s,i,t){let l=Promise.resolve();if(i&&i.length>0){let u=function(x){return Promise.all(x.map(_=>Promise.resolve(_).then(N=>({status:"fulfilled",value:N}),N=>({status:"rejected",reason:N}))))};document.getElementsByTagName("link");const h=document.querySelector("meta[property=csp-nonce]"),p=h?.nonce||h?.getAttribute("nonce");l=u(i.map(x=>{if(x=ge(x),x in B)return;B[x]=!0;const _=x.endsWith(".css"),N=_?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${x}"]${N}`))return;const k=document.createElement("link");if(k.rel=_?"stylesheet":fe,_||(k.as="script"),k.crossOrigin="",k.href=x,p&&k.setAttribute("nonce",p),document.head.appendChild(k),_)return new Promise((P,S)=>{k.addEventListener("load",P),k.addEventListener("error",()=>S(new Error(`Unable to preload CSS for ${x}`)))})}))}function d(h){const p=new Event("vite:preloadError",{cancelable:!0});if(p.payload=h,window.dispatchEvent(p),!p.defaultPrevented)throw h}return l.then(h=>{for(const p of h||[])p.status==="rejected"&&d(p.reason);return s().catch(d)})},F=[{label:"Platform",href:"/"},{label:"Decoder",href:"/decoder"},{label:"Claude Plugin",href:"/claude-plugin"},{label:"Workbench",href:"/workbench"},{label:"MCP Server",href:"/mcp-server"},{label:"Evidence",href:"/evidence"},{label:"Blog",href:"/blog"},{label:"Pricing",href:"/pricing"},{label:"Contact",href:"/contact"}];function be(){const[n,s]=c.useState(!1),[i,t]=c.useState(!1),[l,d]=c.useState(!1),h=G(),p=c.useCallback(()=>{const x=window.scrollY;d(x>50),x>200?t(x>window.lastScrollY):t(!1),window.lastScrollY=x},[]);c.useEffect(()=>(window.addEventListener("scroll",p,{passive:!0}),()=>window.removeEventListener("scroll",p)),[p]),c.useEffect(()=>{s(!1)},[h]),c.useEffect(()=>(n?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[n]),c.useEffect(()=>{if(!n)return;const x=_=>{_.key==="Escape"&&s(!1)};return window.addEventListener("keydown",x),()=>window.removeEventListener("keydown",x)},[n]);const u=x=>x==="/"?h.pathname==="/":h.pathname===x;return e.jsxs(e.Fragment,{children:[e.jsxs("nav",{"aria-label":"Main",className:`fixed top-4 left-1/2 -translate-x-1/2 z-50 w-[95%] max-w-6xl transition-all duration-500 ease-out ${i&&!n?"-translate-y-[140%]":"translate-y-0"}`,inert:i&&!n,children:[e.jsx("div",{className:`glass-nav rounded-2xl px-4 sm:px-6 py-3 transition-all duration-300 ${l?"shadow-deep":""}`,children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(j,{to:"/",className:"flex items-center gap-2.5 text-cyan-300 hover:text-cyan-100 transition-colors",children:e.jsx("img",{src:"/images/logo.png",alt:"QECTOR official logo",width:"36",height:"36",className:"h-9 w-9 rounded-lg object-cover"})}),e.jsx("div",{className:"hidden lg:flex items-center gap-1",children:F.map(x=>e.jsx(j,{to:x.href,"aria-current":u(x.href)?"page":void 0,className:`px-3 py-2 rounded-lg text-sm font-medium transition-all duration-300 ${u(x.href)?"text-cyan-300 bg-cyan-300/10":"text-secondary hover:text-primary hover:bg-white/5"}`,children:x.label},x.href))}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(j,{to:"/pricing",className:"hidden sm:inline-flex items-center px-4 py-2 border border-gold-400/60 text-gold-400 text-sm font-medium rounded-lg hover:bg-gold-400/10 transition-all duration-300",children:"Get License"}),e.jsxs("button",{onClick:()=>s(!n),className:"lg:hidden flex flex-col items-center justify-center gap-1.5 p-2 min-h-[44px] min-w-[44px] rounded-lg hover:bg-white/5 transition-colors","aria-label":h.pathname.startsWith("/fr/")?n?"Fermer le menu":"Ouvrir le menu":n?"Close menu":"Open menu","aria-expanded":n,"aria-controls":"mobile-menu",children:[e.jsx("span",{className:`block w-5 h-0.5 bg-primary transition-all duration-300 ${n?"rotate-45 translate-y-2":""}`}),e.jsx("span",{className:`block w-5 h-0.5 bg-primary transition-all duration-300 ${n?"opacity-0":""}`}),e.jsx("span",{className:`block w-5 h-0.5 bg-primary transition-all duration-300 ${n?"-rotate-45 -translate-y-2":""}`})]})]})]})}),e.jsx("div",{id:"mobile-menu","aria-hidden":!n,className:`lg:hidden mt-2 glass-nav rounded-2xl overflow-hidden transition-all duration-300 ${n?"max-h-[calc(100dvh-110px)] overflow-y-auto opacity-100 visible":"max-h-0 opacity-0 invisible"}`,children:e.jsxs("div",{className:"px-4 py-3 space-y-1",children:[F.map(x=>e.jsx(j,{to:x.href,"aria-current":u(x.href)?"page":void 0,className:`flex items-center px-4 py-3 min-h-[44px] rounded-lg text-sm font-medium transition-all duration-200 ${u(x.href)?"text-cyan-300 bg-cyan-300/10":"text-secondary hover:text-primary hover:bg-white/5"}`,onClick:()=>s(!1),children:x.label},x.href)),e.jsx(j,{to:"/pricing",className:"sm:hidden mt-2 text-center px-4 py-3 min-h-[44px] flex items-center justify-center border border-gold-400/60 text-gold-400 text-sm font-medium rounded-lg hover:bg-gold-400/10 transition-all",onClick:()=>s(!1),children:"Get License"})]})})]}),n&&e.jsx("div",{className:"fixed inset-0 z-40 bg-black/50 backdrop-blur-sm lg:hidden",onClick:()=>s(!1)})]})}const T={version:"1.0.1",pypiPackage:"qector-decoder-v3",contactEndpoint:void 0,ogImage:"https://qector.store/images/og-banner.png"},ut="https://calendly.com/qector-info/30min?background_color=0e0d0d&text_color=ffffff&primary_color=0e4088";async function ye(){try{const s=await(await fetch("https://pypi.org/rss/project/qector-decoder-v3/releases.xml")).text(),d=(new DOMParser().parseFromString(s,"text/xml").querySelector("item title")?.textContent||"").match(/qector-decoder-v3\s+([\d.]+)/);return d?d[1]:T.version}catch{return T.version}}function K(){const[n,s]=c.useState(T.version),[i,t]=c.useState(!0);return c.useEffect(()=>{let l=!0;return ye().then(d=>{l&&(s(d),t(!1))}),()=>{l=!1}},[]),{version:n,loading:i}}const je=[{label:"QECTOR Decoder v3",href:"/decoder",badge:"Library"},{label:"Claude Code Plugin",href:"/claude-plugin",badge:"Claude"},{label:"Workbench GUI",href:"/workbench",badge:"Desktop App"},{label:"QECTOR MCP Server",href:"/mcp-server",badge:"MCP"},{label:"Installer & App Bundles",href:"/installer"},{label:"Pricing & Licensing",href:"/pricing"}],ve=[{label:"Evidence & Reports",href:"/evidence"},{label:"Technical Reference",href:"/technical-reference"},{label:"Package User Manual",href:"/manual"},{label:"Documentation Hub",href:"/docs"},{label:"Version Changelog",href:"/changelog"}],Ne=[{label:"About QECTOR",href:"/about"},{label:"Guillaume Lessard (Founder)",href:"/guillaume-lessard"},{label:"iD01t Productions"},{label:"Commercial Licensing",href:"/commercial"},{label:"Contact Engineering",href:"/contact"},{label:"EULA & License",href:"/license"},{label:"Terms of Service",href:"/terms"},{label:"Privacy Policy",href:"/privacy"},{label:"Refund Policy",href:"/refund"}];function M({href:n,external:s,badge:i,children:t}){const l="group flex items-center justify-between gap-3 min-h-[44px] py-1.5 text-secondary hover:text-cyan-300 text-sm transition-colors duration-200",d=e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"group-hover:translate-x-0.5 transition-transform duration-200",children:t}),i&&e.jsx("span",{className:"text-[10px] font-mono px-1.5 py-0.5 rounded bg-surface border border-gridline text-muted-foreground group-hover:border-cyan-300/30 group-hover:text-cyan-300 transition-colors",children:i})]});return n?s?e.jsxs("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:l,children:[d,e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}):e.jsx(j,{to:n,className:l,children:d}):e.jsx("span",{className:l,children:d})}function we(){const{version:n}=K();return e.jsxs("footer",{className:"border-t border-cyan-900/40 bg-void/95 relative overflow-hidden text-left",children:[e.jsx("div",{className:"absolute top-0 left-1/2 -translate-x-1/2 w-1/2 h-16 bg-gradient-to-b from-cyan-400/5 to-transparent blur-3xl pointer-events-none"}),e.jsx("div",{className:"section-padding py-16 relative z-10",children:e.jsxs("div",{className:"max-w-7xl mx-auto",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-5 gap-12 lg:gap-8",children:[e.jsxs("div",{className:"lg:col-span-2 space-y-6",children:[e.jsxs(j,{to:"/",className:"inline-flex items-center gap-3 text-cyan-300 hover:text-cyan-100 transition-colors duration-200",children:[e.jsx("img",{src:"/images/logo.png",alt:"QECTOR official logo",width:"40",height:"40",className:"h-10 w-10 rounded-lg object-cover"}),e.jsxs("span",{className:"text-lg font-extrabold tracking-tight text-white",children:["QECTOR",e.jsx("span",{className:"text-cyan-300",children:"."})]})]}),e.jsx("p",{className:"text-secondary/80 text-sm leading-relaxed max-w-sm",children:"Quantum error correction decoding for Python. Built by Guillaume Lessard at iD01t Productions."}),e.jsxs("div",{className:"flex items-center gap-2 pt-2",children:[e.jsxs("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] text-muted-foreground hover:text-cyan-300 transition-colors","aria-label":"PyPI",children:[e.jsxs("span",{className:"text-sm font-mono border border-gridline rounded px-2 py-1 hover:border-cyan-300/30",children:["v",n]}),e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-1 text-muted-foreground hover:text-cyan-300 transition-colors text-sm font-medium","aria-label":"GitHub",children:["GitHub",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-1 text-muted-foreground hover:text-cyan-300 transition-colors text-sm font-medium","aria-label":"ORCID",children:["ORCID",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]})]})]}),e.jsxs("div",{className:"space-y-5",children:[e.jsx("h2",{className:"text-xs font-semibold uppercase tracking-widest text-white/90",children:"Platform"}),e.jsx("div",{className:"flex flex-col gap-1",children:je.map(s=>e.jsx(M,{href:s.href,external:s.external,badge:s.badge,children:s.label},s.label))})]}),e.jsxs("div",{className:"space-y-5",children:[e.jsx("h2",{className:"text-xs font-semibold uppercase tracking-widest text-white/90",children:"Research & Docs"}),e.jsx("div",{className:"flex flex-col gap-1",children:ve.map(s=>e.jsx(M,{href:s.href,external:s.external,badge:s.badge,children:s.label},s.label))})]}),e.jsxs("div",{className:"space-y-5",children:[e.jsx("h2",{className:"text-xs font-semibold uppercase tracking-widest text-white/90",children:"Company"}),e.jsx("div",{className:"flex flex-col gap-1",children:Ne.slice(0,5).map(s=>e.jsx(M,{href:s.href,external:s.external,badge:s.badge,children:s.label},s.label))})]})]}),e.jsxs("div",{className:"mt-16 pt-8 border-t border-gridline flex flex-col md:flex-row items-start md:items-center justify-between gap-6",children:[e.jsxs("div",{className:"text-xs text-muted-foreground max-w-xl leading-relaxed",children:[e.jsx("span",{className:"font-semibold text-secondary",children:"Distribution:"})," PyPI (",e.jsx("code",{className:"text-cyan-300/80 font-mono",children:"qector-decoder-v3"}),") is the Python library. The free ",e.jsx(j,{to:"/installer",className:"link-accent",children:"Workbench GUI"})," is a standalone desktop application shipped self-contained for Windows x64 and Linux x64 (no system Python required)."]}),e.jsxs("nav",{"aria-label":"Legal",className:"flex flex-wrap items-center gap-x-4 gap-y-1 text-xs font-medium text-muted-foreground",children:[e.jsx(j,{to:"/privacy",className:"inline-flex items-center min-h-[44px] px-1 hover:text-cyan-300 transition-colors duration-200",children:"Privacy"}),e.jsx(j,{to:"/terms",className:"inline-flex items-center min-h-[44px] px-1 hover:text-cyan-300 transition-colors duration-200",children:"Terms"}),e.jsx(j,{to:"/refund",className:"inline-flex items-center min-h-[44px] px-1 hover:text-cyan-300 transition-colors duration-200",children:"Refund"}),e.jsx(j,{to:"/license",className:"inline-flex items-center min-h-[44px] px-1 hover:text-cyan-300 transition-colors duration-200",children:"License"}),e.jsxs("a",{href:"/.well-known/security.txt",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-1 hover:text-cyan-300 transition-colors duration-200",children:["Security",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]})]})]})]})}),e.jsx("div",{className:"bg-[#050b14]",children:e.jsx("div",{className:"section-padding py-4",children:e.jsxs("div",{className:"max-w-7xl mx-auto text-xs text-muted-foreground/70 text-center md:text-left",children:["© 2026 QECTOR Lab / iD01t Productions. All rights reserved.",e.jsx("div",{className:"mt-1",children:"Éditeur : Guillaume Lessard, entrepreneur individuel (iD01t Productions), 2004 De Lorimier, Longueuil, QC J4K 3H7, Canada · admin@qector.store"})]})})})]})}function ke({children:n}){const s=G();return c.useEffect(()=>{window.scrollTo(0,0),document.documentElement.lang=s.pathname.startsWith("/fr/")?"fr":"en",document.getElementById("main-content")?.focus();const i=window.matchMedia("(prefers-reduced-motion: reduce)").matches,t=(h=document)=>{h.querySelectorAll(".card-surface:not(.revealed), .prose:not(.revealed)").forEach(p=>{i?p.classList.add("revealed"):l.observe(p)})},l=new IntersectionObserver(h=>{h.forEach(p=>{p.isIntersecting&&(p.target.classList.add("revealed"),l.unobserve(p.target))})},{threshold:.1,rootMargin:"0px 0px -10% 0px"});let d=null;return i||(d=new MutationObserver(h=>{h.forEach(p=>{p.addedNodes.forEach(u=>{u.nodeType===Node.ELEMENT_NODE&&t(u)})})}),d.observe(document.body,{childList:!0,subtree:!0})),t(),()=>{l.disconnect(),d&&d.disconnect()}},[s.pathname]),e.jsxs("div",{className:"min-h-screen bg-void text-foreground quantum-grid-bg relative",children:[e.jsx("a",{href:"#main-content",className:"sr-only focus:not-sr-only focus:fixed focus:top-4 focus:left-4 focus:z-[100] focus:px-4 focus:py-2 focus:bg-cyan-300 focus:text-void focus:font-semibold focus:rounded-lg",children:s.pathname.startsWith("/fr/")?"Aller au contenu principal":"Skip to main content"}),e.jsx(be,{}),e.jsx("main",{id:"main-content",tabIndex:-1,className:"pt-20 outline-none",children:n}),e.jsx(we,{})]})}class Ee extends c.Component{state={hasError:!1};static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(s,i){console.error("QECTOR site error boundary caught:",s,i.componentStack)}handleReload=()=>{this.setState({hasError:!1}),window.location.href="/"};render(){return this.state.hasError?e.jsx("div",{className:"min-h-screen flex items-center justify-center bg-void px-6",children:e.jsxs("div",{className:"max-w-md text-center card-surface",children:[e.jsx("div",{className:"w-12 h-12 rounded-full bg-cyan-300/10 border border-cyan-300/20 flex items-center justify-center mx-auto mb-4 text-cyan-300 text-xl",children:"!"}),e.jsx("h1",{className:"text-xl font-bold text-primary mb-2",children:"Something went wrong"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"This page hit an unexpected error. No page data was sent; check the browser console for the local error and reload."}),e.jsx("button",{onClick:this.handleReload,className:"btn-cyan",children:"Reload homepage"})]})}):this.props.children}}function _e(){return e.jsx("div",{className:"min-h-[60vh] flex items-center justify-center",role:"status","aria-live":"polite",children:e.jsxs("div",{className:"flex flex-col items-center gap-3",children:[e.jsx("div",{className:"w-8 h-8 border-2 border-cyan-300/20 border-t-cyan-300 rounded-full animate-spin"}),e.jsx("span",{className:"sr-only",children:"Loading page…"})]})})}const H={proMonthly:"https://buy.stripe.com/5kQcN7eAp3BM5RE5ZMeUU0g",proAnnual:"https://buy.stripe.com/8x228teAp6NY6VI87UeUU0h",proPerpetual:"https://buy.stripe.com/dRm00l0Jzfku4NA0FseUU0i",lab:"https://buy.stripe.com/aFa7sN9g5fku0xk5ZMeUU0k",pilot:"https://buy.stripe.com/14AeVf9g5b4e0xkdseeUU0l"},L={proMonthly:79,proAnnual:790,proPerpetual:1990,lab:9900,pilot:1500,enterpriseFrom:25e3,pilotDays:60,refundDays:14,academicDiscountPct:40},R=n=>`$${n.toLocaleString("en-US")}`,ft=n=>`${n.toLocaleString("fr-CA").replace(/[\u00a0\u202f]/g," ")} $`,Ce={en:"en_US",fr:"fr_FR"};function Pe({title:n="QECTOR · Quantum Error Correction Decoding for Python",description:s="QECTOR Decoder v3 - Rust-core Python quantum error correction decoder. v1.0.1 stable release with API stability tiers, a qector CLI, and a reproducible measurement harness (qector bench) for measuring on your own hardware.",ogImage:i=T.ogImage,noindex:t=!1,lang:l="en",alternates:d}){const h=G(),p=`https://qector.store${h.pathname==="/"?"/":`${h.pathname.replace(/\/$/,"")}/`}`;return c.useEffect(()=>{document.title=n,document.documentElement.lang=l;const u=(N,k)=>{let P=document.querySelector(N);if(!P){P=document.createElement("meta");const S=N.includes("property=")?"property":"name",O=N.match(/"([^"]+)"/)?.[1]||"";P.setAttribute(S,O),document.head.appendChild(P)}P.content=k};u('meta[name="description"]',s),u('meta[name="robots"]',t?"noindex, follow":"index, follow, max-image-preview:large"),u('meta[property="og:title"]',n),u('meta[property="og:description"]',s),u('meta[property="og:url"]',p),u('meta[property="og:type"]',"website"),u('meta[property="og:locale"]',Ce[l]??"en_US"),u('meta[property="og:image"]',i),u('meta[property="og:image:alt"]',"QECTOR official logo"),u('meta[property="og:site_name"]',"QECTOR"),u('meta[name="twitter:card"]',"summary_large_image"),u('meta[name="twitter:title"]',n),u('meta[name="twitter:description"]',s),u('meta[name="twitter:image"]',i),u('meta[name="twitter:image:alt"]',"QECTOR official logo"),u('meta[name="twitter:site"]',"@DJiD01T"),u('meta[name="theme-color"]',"#24e7ff");let x=document.querySelector('link[rel="canonical"]');x||(x=document.createElement("link"),x.rel="canonical",document.head.appendChild(x)),x.href=p,document.querySelectorAll('link[rel="alternate"][hreflang]').forEach(N=>N.remove());const _=[];for(const N of d??[]){const k=document.createElement("link");k.rel="alternate",k.hreflang=N.lang,k.href=N.href,document.head.appendChild(k),_.push(k)}return()=>{_.forEach(N=>N.remove())}},[n,s,p,i,t,l,d]),null}function Le({data:n}){const s="json-ld-data";return c.useEffect(()=>{let i=document.getElementById(s);return i||(i=document.createElement("script"),i.id=s,i.type="application/ld+json",document.head.appendChild(i)),i.textContent=JSON.stringify(n),()=>{const t=document.getElementById(s);t&&t.remove()}},[n]),null}function Re({icon:n,label:s,href:i,variant:t="default",className:l=""}){const d=t==="gold"?"bg-gold-400/10 border border-gold-400/30 text-gold-400 hover:bg-gold-400/20":"bg-surface border border-gridline text-secondary hover:text-cyan-300 hover:border-cyan-300/30";return e.jsxs("a",{href:i,target:"_blank",rel:"noopener noreferrer",className:`inline-flex items-center gap-2 px-4 py-2.5 rounded-full text-sm transition-all duration-300 ${d} ${l}`,children:[e.jsx("span",{"aria-hidden":"true",children:n}),e.jsx("span",{children:s})]})}function J({eyebrow:n,heading:s,description:i,align:t="center",maxWidth:l="max-w-3xl",className:d=""}){const h=t==="center"?"text-center mx-auto":"text-left",p=t==="center"?"mx-auto":"";return e.jsxs("div",{className:`${l} ${h} mb-12 md:mb-16 ${d}`,children:[n&&e.jsx("span",{className:"eyebrow-pill mb-4",children:n}),e.jsx("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight text-balance mb-4",children:s}),i&&e.jsx("p",{className:`text-secondary text-lg leading-relaxed text-pretty max-w-prose ${p}`,children:i})]})}const Se={cyan:"bg-cyan-300/10 text-cyan-300 border border-cyan-300/20",green:"bg-green-400/10 text-green-400 border border-green-400/20",purple:"bg-purple-400/10 text-purple-400 border border-purple-400/20",gold:"bg-gold-400/10 text-gold-400 border border-gold-400/20"};function Oe({title:n,tag:s,badge:i,desc:t,proof:l,muted:d=!1,className:h=""}){return e.jsxs("div",{className:`card-surface group ${d?"border-gridline/50 opacity-80":""} ${h}`,children:[s&&e.jsx("div",{className:"text-muted-foreground text-xs font-mono uppercase tracking-wider mb-2",children:s}),e.jsxs("div",{className:"flex items-center justify-between gap-3 mb-3",children:[e.jsx("h3",{className:`font-semibold text-lg transition-colors ${d?"text-gold-400/80":"text-cyan-300 group-hover:text-cyan-200"}`,children:n}),i&&e.jsx("span",{className:`shrink-0 px-2.5 py-1 rounded-full text-xs font-medium ${d?"bg-gold-400/5 text-gold-400/60 border border-gold-400/20":Se[i.color]}`,children:i.label})]}),e.jsx("p",{className:`leading-relaxed ${d?"text-muted-foreground text-sm":"text-secondary"}`,children:t}),l&&e.jsxs("div",{className:"mt-4 pt-4 border-t border-gridline/60 flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"text-green-400",children:"✓"}),e.jsx("span",{className:"text-muted-foreground font-mono",children:l})]})]})}function Ae({title:n,statement:s,href:i,linkLabel:t="View evidence →",className:l=""}){return e.jsxs("div",{className:`relative rounded-2xl border border-cyan-300/20 bg-void p-6 overflow-hidden ${l}`,children:[e.jsx("div",{className:"absolute inset-0 pointer-events-none bg-gradient-to-br from-cyan-300/5 to-transparent"}),e.jsxs("div",{className:"relative z-10",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300"}),e.jsx("span",{className:"text-xs font-mono uppercase tracking-wider text-cyan-300",children:n})]}),e.jsx("p",{className:"text-secondary leading-relaxed mb-4",children:s}),i&&e.jsx("a",{href:i,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm font-medium hover:underline underline-offset-4",children:t})]})]})}function De(){const[n,s]=c.useState({}),[i,t]=c.useState({}),[l,d]=c.useState(!1),[h,p]=c.useState(!1),u=c.useMemo(()=>{const a=[];for(let r=0;r<3;r++)for(let o=0;o<3;o++)a.push({id:`${r}_${o}`,r,c:o,x:120+o*100,y:60+r*100});return a},[]),x=c.useMemo(()=>{const a=[];for(let r=0;r<3;r++)a.push({id:`L_${r}`,type:"L",r,c:-1,x1:30,y1:60+r*100,x2:120,y2:60+r*100});for(let r=0;r<3;r++)a.push({id:`R_${r}`,type:"R",r,c:3,x1:320,y1:60+r*100,x2:410,y2:60+r*100});for(let r=0;r<3;r++)for(let o=0;o<2;o++)a.push({id:`H_${r}_${o}`,type:"H",r,c:o,x1:120+o*100,y1:60+r*100,x2:120+(o+1)*100,y2:60+r*100});for(let r=0;r<2;r++)for(let o=0;o<3;o++)a.push({id:`V_${r}_${o}`,type:"V",r,c:o,x1:120+o*100,y1:60+r*100,x2:120+o*100,y2:60+(r+1)*100});return a},[]),_=c.useMemo(()=>{const a={},r=o=>{a[o]=!a[o]};return x.forEach(o=>{n[o.id]&&(o.type==="H"?(r(`${o.r}_${o.c}`),r(`${o.r}_${o.c+1}`)):o.type==="V"?(r(`${o.r}_${o.c}`),r(`${o.r+1}_${o.c}`)):o.type==="L"?r(`${o.r}_0`):o.type==="R"&&r(`${o.r}_2`))}),Object.keys(a).forEach(o=>{a[o]||delete a[o]}),a},[n,x]),N=a=>{t({}),d(!1),s(r=>({...r,[a]:!r[a]}))},k=()=>{s({}),t({}),d(!1)},P=(a=.2)=>{t({}),d(!1);const r={};x.forEach(o=>{Math.random()Math.abs(a.r-r.r)+Math.abs(a.c-r.c),O=c.useCallback((a,r)=>{const o=[],E=Math.min(a.r,r.r),g=Math.max(a.r,r.r),w=a.r{const a=Object.keys(_).map(g=>{const[w,m]=g.split("_").map(Number);return u.find(y=>y.r===w&&y.c===m)});if(a.length===0){t({}),d(!0);return}const r=g=>{if(g.length===0)return{cost:0,pairs:[]};const w=g[0],m=g.slice(1);let y=1/0,v=[];const C=w.c+1,I=r(m);C+I.costee!==A),$=r(X);U+$.cost{if(g==="L"||g==="R"||w==="L"||w==="R"){const m=g==="L"||g==="R"?w:g;if((g==="L"||g==="R"?g:w)==="L"){for(let v=0;v{E[y]=!0})}),t(E),d(!0)},[_,u,O]),Z=c.useMemo(()=>{if(!l)return"idle";const a=x.filter(m=>{const y=n[m.id]||!1,v=i[m.id]||!1;return y!==v}),r={},o=(m,y)=>{r[m]||(r[m]=[]),r[y]||(r[y]=[]),r[m].push(y),r[y].push(m)};a.forEach(m=>{m.type==="H"?o(`${m.r}_${m.c}`,`${m.r}_${m.c+1}`):m.type==="V"?o(`${m.r}_${m.c}`,`${m.r+1}_${m.c}`):m.type==="L"?o("L",`${m.r}_0`):m.type==="R"&&o("R",`${m.r}_2`)});const E={},g=["L"];E.L=!0;let w=!1;for(;g.length>0;){const m=g.shift();if(m==="R"){w=!0;break}(r[m]||[]).forEach(v=>{E[v]||(E[v]=!0,g.push(v))})}return w?"failure":"success"},[l,n,i,x]);return e.jsxs("div",{className:"flex flex-col gap-4 border border-gridline bg-surface/30 rounded-2xl p-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsxs("h4",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider flex items-center gap-1.5",children:[e.jsx(W,{className:"w-4 h-4"}),"Interactive QEC Simulator"]}),e.jsx("p",{className:"text-muted-foreground text-xs mt-0.5",children:"Planar stabilizer code (d=3). Click edges to toggle physical errors."})]}),e.jsx("button",{onClick:()=>p(!h),className:"min-h-[44px] min-w-[44px] inline-flex items-center justify-center text-secondary hover:text-cyan-300 transition-colors","aria-label":"Toggle help",children:e.jsx(ae,{className:"w-5 h-5"})})]}),h&&e.jsxs("div",{className:"p-4 bg-void/80 border border-gridline rounded-xl text-xs text-secondary leading-relaxed space-y-2",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"How to play:"})," Click on the links (grey/red lines) to inject physical errors. Red lines represent errors."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Syndromes:"})," Grid nodes measure checks. When adjacent errors are odd, a check triggers (lights up orange)."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Decoder:"})," Minimum Weight Perfect Matching (MWPM) matches active checks. When you click ",e.jsx("span",{className:"text-cyan-300",children:"Run Decoder"}),", it draws matching correction paths in cyan."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Success condition:"})," If error + correction paths do not form a logical connection across boundaries (from left to right), the state is successfully corrected!"]})]}),e.jsxs("div",{className:"bg-void/50 border border-gridline rounded-xl flex items-center justify-center p-4 relative overflow-hidden",children:[e.jsxs("svg",{viewBox:"0 0 440 320",className:"w-full max-w-[440px] h-auto select-none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsxs("defs",{children:[e.jsxs("radialGradient",{id:"activeNodeGlow",cx:"50%",cy:"50%",r:"50%",children:[e.jsx("stop",{offset:"0%",stopColor:"#fef08a"}),e.jsx("stop",{offset:"60%",stopColor:"#eab308"}),e.jsx("stop",{offset:"100%",stopColor:"#a16207"})]}),e.jsxs("linearGradient",{id:"inactiveNodeGlow",x1:"0",y1:"0",x2:"1",y2:"1",children:[e.jsx("stop",{offset:"0%",stopColor:"#1e293b"}),e.jsx("stop",{offset:"100%",stopColor:"#0f172a"})]}),e.jsx("pattern",{id:"gridDots",width:"20",height:"20",patternUnits:"userSpaceOnUse",children:e.jsx("circle",{cx:"2",cy:"2",r:"1",fill:"#1e293b",fillOpacity:"0.6"})})]}),e.jsx("rect",{width:"440",height:"320",fill:"url(#gridDots)",rx:"10"}),e.jsx("line",{x1:"30",y1:"30",x2:"30",y2:"290",stroke:"#475569",strokeWidth:"3",strokeDasharray:"4 4"}),e.jsx("text",{x:"20",y:"165",fill:"#475569",fontSize:"10",textAnchor:"middle",transform:"rotate(-90, 20, 165)",className:"font-mono",children:"LEFT BOUNDARY"}),e.jsx("line",{x1:"410",y1:"30",x2:"410",y2:"290",stroke:"#475569",strokeWidth:"3",strokeDasharray:"4 4"}),e.jsx("text",{x:"420",y:"165",fill:"#475569",fontSize:"10",textAnchor:"middle",transform:"rotate(90, 420, 165)",className:"font-mono",children:"RIGHT BOUNDARY"}),x.map(a=>{const r=n[a.id]||!1,o=i[a.id]||!1;let E="#334155";return r&&o?E="#e2e8f0":r?E="#ef4444":o&&(E="#06b6d4"),e.jsxs("g",{className:"group",children:[e.jsx("line",{x1:a.x1,y1:a.y1,x2:a.x2,y2:a.y2,stroke:"transparent",strokeWidth:"16",className:"cursor-pointer",tabIndex:0,role:"checkbox","aria-checked":r,"aria-label":`Toggle error on qubit edge ${a.id}`,onClick:()=>N(a.id),onKeyDown:g=>{(g.key==="Enter"||g.key===" ")&&(g.preventDefault(),N(a.id))}}),e.jsx("line",{x1:a.x1,y1:a.y1,x2:a.x2,y2:a.y2,stroke:E,strokeWidth:r||o?4:2,className:"transition-colors duration-200 pointer-events-none group-hover:stroke-cyan-300/40",style:{filter:r?"drop-shadow(0 0 4px rgba(239, 68, 68, 0.4))":o?"drop-shadow(0 0 4px rgba(6, 182, 212, 0.4))":"none"}}),e.jsx("circle",{cx:(a.x1+a.x2)/2,cy:(a.y1+a.y2)/2,r:"5",fill:r?"#ef4444":o?"#06b6d4":"#1e293b",stroke:r||o?"#e2e8f0":"#475569",strokeWidth:"1.5",className:"transition-colors duration-200 pointer-events-none group-hover:fill-cyan-300 group-hover:stroke-cyan-200"})]},a.id)}),u.map(a=>{const r=_[a.id]||!1;return e.jsxs("g",{children:[r&&e.jsx("circle",{cx:a.x,cy:a.y,r:"18",fill:"rgba(251, 191, 36, 0.15)",className:"animate-pulse"}),e.jsx("circle",{cx:a.x,cy:a.y,r:r?12:9,fill:r?"url(#activeNodeGlow)":"url(#inactiveNodeGlow)",stroke:r?"#fbbf24":"#334155",strokeWidth:r?2:1.5,className:"transition-all duration-300 pointer-events-none",style:{filter:r?"drop-shadow(0 0 10px rgba(251, 191, 36, 0.7))":"none"}}),e.jsx("circle",{cx:a.x-(r?3:2),cy:a.y-(r?3:2),r:r?3:2,fill:"white",fillOpacity:"0.25",className:"pointer-events-none"}),r&&e.jsx("circle",{cx:a.x,cy:a.y,r:20,fill:"transparent",stroke:"#fbbf24",strokeWidth:"1",strokeOpacity:"0.4",className:"animate-ping"}),e.jsx("text",{x:a.x,y:a.y+3,textAnchor:"middle",fill:r?"#020617":"#94a3b8",fontSize:"9",fontWeight:"bold",className:"font-mono text-[9px] pointer-events-none",children:r?"!":"S"})]},a.id)})]}),l&&e.jsxs("div",{className:"absolute bottom-3 left-3 right-3 flex items-center justify-between p-3 bg-surface/90 border border-gridline rounded-xl backdrop-blur-md transition-all duration-300",children:[Z==="success"?e.jsxs("div",{className:"flex items-center gap-2 text-green-400 text-sm font-semibold",children:[e.jsx(ne,{className:"w-5 h-5"}),e.jsx("span",{children:"SUCCESS: Errors resolved"})]}):e.jsxs("div",{className:"flex items-center gap-2 text-red-400 text-sm font-semibold",children:[e.jsx(oe,{className:"w-5 h-5"}),e.jsx("span",{children:"LOGICAL ERROR: Correction failed"})]}),e.jsx("div",{className:"text-[10px] text-muted-foreground font-mono",children:"d=3 code slice"})]})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[e.jsxs("button",{onClick:()=>P(.2),className:"px-3 py-3 bg-surface hover:bg-white/5 border border-gridline rounded-lg text-xs font-semibold text-secondary hover:text-primary transition-all flex items-center justify-center gap-1.5",children:[e.jsx(W,{className:"w-3.5 h-3.5"}),"Inject Errors"]}),e.jsxs("button",{onClick:Y,disabled:Object.keys(_).length===0,className:"px-3 py-3 bg-cyan-300 disabled:bg-cyan-300/20 disabled:text-void/40 hover:bg-cyan-200 text-void rounded-lg text-xs font-bold transition-all flex items-center justify-center gap-1.5",children:[e.jsx(ie,{className:`w-3.5 h-3.5 ${l?"":"animate-spin"}`}),"Run Decoder"]}),e.jsx("button",{onClick:k,className:"px-3 py-3 bg-surface hover:bg-red-950/20 border border-gridline hover:border-red-900/30 rounded-lg text-xs font-semibold text-secondary hover:text-red-400 transition-all",children:"Reset Graph"})]})]})}function Te({code:n,language:s="python",filename:i,className:t=""}){const[l,d]=c.useState(!1),h=async()=>{try{await navigator.clipboard.writeText(n),d(!0),setTimeout(()=>d(!1),2e3)}catch(p){console.error("Failed to copy text: ",p)}};return e.jsxs("div",{className:`my-4 border border-gridline rounded-xl overflow-hidden bg-void/50 ${t}`,children:[i&&e.jsxs("div",{className:"flex items-center justify-between px-4 py-2 border-b border-gridline bg-surface/50 text-xs font-mono text-muted-foreground",children:[e.jsx("span",{children:i}),e.jsx("span",{className:"uppercase text-[10px] bg-cyan-300/10 text-cyan-300 px-1.5 py-0.5 rounded border border-cyan-300/20",children:s})]}),e.jsxs("div",{className:"relative group",children:[e.jsx("pre",{className:"p-4 pr-14 overflow-x-auto overflow-y-auto font-mono text-sm leading-relaxed text-secondary bg-void/30 max-h-[400px]",children:e.jsx("code",{className:`language-${s}`,children:n})}),e.jsx("button",{onClick:h,className:"absolute top-3 right-3 p-1.5 bg-surface border border-gridline rounded-lg text-secondary hover:text-cyan-300 hover:border-cyan-300/30 opacity-0 group-hover:opacity-100 focus:opacity-100 max-sm:opacity-100 transition-all duration-200","aria-label":l?"Copied":"Copy code",children:l?e.jsx(le,{className:"w-4 h-4 text-green-400"}):e.jsx(ce,{className:"w-4 h-4"})}),e.jsx("span",{className:"sr-only","aria-live":"polite",children:l?"Code copied to clipboard":""})]})]})}z.registerPlugin(ue);function D({value:n,label:s}){return e.jsxs("div",{className:"text-center px-4 py-3",children:[e.jsx("div",{className:"text-2xl font-bold text-cyan-300",children:n}),e.jsx("div",{className:"text-xs text-muted-foreground leading-tight max-w-[11rem] mx-auto",children:s})]})}function Ie(){const n=c.useRef([]),{version:s}=K();c.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const t=document.createElement("script");t.src="https://js.stripe.com/v3/buy-button.js",t.async=!0,document.body.appendChild(t);const l=z.context(()=>{n.current.filter(Boolean).forEach(h=>{z.fromTo(h,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power2.out",scrollTrigger:{trigger:h,start:"top 85%",once:!0}})})});return()=>{l.revert(),t.parentNode===document.body&&document.body.removeChild(t)}},[]);const i=(t,l)=>{t&&(n.current[l]=t)};return e.jsxs(e.Fragment,{children:[e.jsx(Pe,{title:"QECTOR · Quantum Error Correction Decoding for Python",description:"QECTOR Decoder v3 - Rust-core Python library with 17 concrete decoder configurations plus 2 Workbench routing kinds, a syndrome-faithful contract, and reproducible validation guidance."}),e.jsx(Le,{data:{"@context":"https://schema.org","@graph":[{"@type":"SoftwareApplication",name:"QECTOR Decoder v3",description:"QECTOR Decoder v3 is the qector-decoder-v3 1.0.1 Rust/Python quantum error correction package with 17 concrete decoder configurations plus 2 Workbench routing kinds, offline Ed25519 licensing, and reproducible validation guidance.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",programmingLanguage:"Python",url:"https://qector.store/",downloadUrl:"https://pypi.org/project/qector-decoder-v3/",softwareVersion:s,author:{"@type":"Person",name:"Guillaume Lessard",url:"https://github.com/GuillaumeLessard"},maintainer:{"@type":"Organization",name:"iD01t Productions"},identifier:"https://pypi.org/project/qector-decoder-v3/",license:"https://qector.store/license/",offers:{"@type":"Offer",price:"0",priceCurrency:"USD",availability:"https://schema.org/InStock"}},{"@type":"Organization",name:"QECTOR",url:"https://qector.store/",logo:"https://qector.store/images/logo.png",email:"admin@qector.store",founder:{"@type":"Person",name:"Guillaume Lessard",identifier:"0009-0000-3465-3753"},address:{"@type":"PostalAddress",addressLocality:"Longueuil",addressRegion:"QC",postalCode:"J4K 3H7",addressCountry:"CA"},sameAs:["https://github.com/GuillaumeLessard/qector-decoder","https://pypi.org/project/qector-decoder-v3/","https://github.com/GuillaumeLessard/qector-claude-plugin","https://orcid.org/0009-0000-3465-3753"]}]}}),e.jsxs("section",{className:"relative min-h-screen flex items-center justify-center overflow-hidden","aria-label":"QECTOR hero",children:[e.jsx("img",{src:"/images/hero-bg.webp",alt:"","aria-hidden":"true",fetchPriority:"high",className:"absolute inset-0 w-full h-full object-cover z-0",style:{filter:"brightness(0.45) saturate(1.1)"}}),e.jsx("noscript",{children:e.jsx("img",{src:"/images/og-banner.png",alt:"","aria-hidden":"true",className:"absolute inset-0 w-full h-full object-cover z-0",style:{filter:"brightness(0.4)"}})}),e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-void/60 via-void/25 to-void z-[1]"}),e.jsx("div",{className:"absolute inset-0 bg-gradient-to-r from-cyan-500/[0.04] to-transparent z-[1]"}),e.jsxs("div",{className:"relative z-10 w-full min-w-0 text-center max-w-5xl mx-auto px-6 pt-24 pb-20",children:[e.jsxs(j,{to:"/changelog",className:"inline-flex max-w-full flex-wrap items-center justify-center gap-2 px-4 py-2 bg-surface/70 border border-cyan-300/20 rounded-full text-center text-xs leading-relaxed text-cyan-300 hover:bg-cyan-300/10 transition-all mb-8 backdrop-blur-sm",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-green-400 animate-pulse-dot"}),e.jsxs("span",{children:["v",s," · First Stable Release · Changelog →"]})]}),e.jsxs("h1",{className:"max-w-4xl mx-auto break-words text-3xl sm:text-5xl md:text-6xl lg:text-7xl font-extrabold tracking-tight leading-[1.05] mb-6",style:{textShadow:"0 4px 32px rgba(0,0,0,0.9)"},children:[e.jsx("span",{className:"text-transparent bg-clip-text bg-gradient-to-r from-cyan-300 to-cyan-400",children:"QEC Decoding"})," ","for Python"]}),e.jsxs("p",{className:"text-base sm:text-lg md:text-xl text-secondary/90 max-w-3xl mx-auto mb-5 leading-relaxed break-words",style:{textShadow:"0 2px 16px rgba(0,0,0,0.8)"},children:["The 1.0.x runtime ships 17 concrete decoder configurations, while Workbench v1.0.7 names 19 kinds in total: those configurations plus AutoDecoder and Auto Router orchestration entries."," ",e.jsx("span",{className:"text-primary font-semibold",children:"1.0.1 is the current stable release:"})," API stability tiers, Relay-BP, CS-OSD, Sinter/qiskit entry points and the qector CLI."]}),e.jsx("p",{className:"text-sm text-muted-foreground max-w-2xl mx-auto mb-10 leading-relaxed",style:{textShadow:"0 2px 12px rgba(0,0,0,0.8)"},children:"Local measurement tools are documented for declared workloads; this site publishes no universal performance figures. Claim boundaries and verification paths are published with the product documentation."}),e.jsxs("div",{className:"flex flex-col sm:flex-row flex-wrap gap-3 sm:gap-4 justify-center items-stretch sm:items-center mb-10",children:[e.jsx(j,{to:"/pricing",className:"btn-gold px-8 py-4 text-sm sm:text-base font-bold w-full sm:w-auto",children:"View Plans & Pricing →"}),e.jsx(j,{to:"/decoder",className:"btn-cyan px-8 py-4 text-sm sm:text-base w-full sm:w-auto",children:"Explore the Decoder"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-windows/releases/latest",className:"btn-outline px-8 py-4 text-sm sm:text-base w-full sm:w-auto",target:"_blank",rel:"noopener noreferrer",children:"Free Workbench GUI"})]}),e.jsx("div",{className:"max-w-2xl mx-auto mb-10 text-left",children:e.jsx(Te,{language:"bash",filename:"Quick start",code:`pip install qector-decoder-v3==${s} -python -c "from qector_decoder_v3 import BlossomDecoder; print('QECTOR OK')"`})}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 md:divide-x md:divide-white/5 border-t border-white/5 pt-6 max-w-2xl mx-auto",children:[e.jsx(D,{value:"19",label:"Workbench Kinds (17 + 2 routing)"}),e.jsx(D,{value:"GF(2)",label:"Faithfulness Contract"}),e.jsx(D,{value:"CPU + GPU",label:"Optional Execution Paths"}),e.jsx(D,{value:"Open",label:"Evidence Policy"})]}),e.jsxs("div",{className:"max-w-2xl mx-auto mt-10 p-5 md:p-6 bg-surface/50 border border-cyan-300/20 rounded-2xl text-center shadow-lg backdrop-blur-sm",children:[e.jsx("div",{className:"text-[10px] text-cyan-300 font-semibold tracking-[0.2em] mb-2 uppercase",children:"Evidence policy"}),e.jsx("div",{className:"text-lg md:text-xl font-bold text-primary tracking-tight mb-2",children:"No hardware-specific results published"}),e.jsxs("p",{className:"text-xs text-muted-foreground leading-relaxed max-w-lg mx-auto",children:["QECTOR publishes contracts, methodology, and artifacts rather than portable speed numbers. Read the ",e.jsx(j,{to:"/evidence",className:"link-accent",children:"evidence policy"})," before generating a local measurement."]})]})]})]}),e.jsx("section",{className:"section-band bg-surface/20 border-y border-gridline",children:e.jsxs("div",{className:"section-padding max-w-6xl mx-auto",children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("span",{className:"eyebrow-pill-gold mb-4",children:"Release Assurance"}),e.jsx("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight",children:"A Clear Path From Code to Evidence"}),e.jsx("p",{className:"text-secondary text-lg max-w-2xl mx-auto mt-3",children:"The public release, validation contract, and commercial delivery path are explicit by design."})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-5",children:[e.jsxs("div",{className:"card-surface p-6 border-cyan-300/20",children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-3",children:"Current Runtime"}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:"qector-decoder-v3 1.0.1"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"The live PyPI release supports Python 3.9 through 3.14 with 18 binary wheels across Windows, Linux, and macOS, each with build provenance."})]}),e.jsxs("div",{className:"card-surface p-6 border-cyan-300/20",children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-3",children:"Evidence Contract"}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:"Correctness before speed"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Every correction is checked against H c = s (mod 2). Measurements stay workload-scoped, artifact-hashed, and separate from universal performance claims."})]}),e.jsxs("div",{className:"card-surface p-6 border-gold-400/20",children:[e.jsx("div",{className:"text-gold-400 font-mono text-xs uppercase tracking-wider mb-3",children:"Secure Delivery"}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:"Signed, traceable licensing"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Commercial fulfillment requires a live Stripe event, issues a v2 Ed25519 token, and records independent billing and license delivery states."}),e.jsx(j,{to:"/license",className:"inline-block text-gold-400 text-sm font-medium hover:underline mt-3",children:"Read the license activation procedure →"})]})]}),e.jsxs("div",{className:"mt-8 card-surface p-6 border-cyan-300/20",children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-3",children:"Evidence Registry"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 text-sm",children:[e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21941046",target:"_blank",rel:"noopener noreferrer",className:"text-secondary hover:text-cyan-300 transition-colors",children:[e.jsx("span",{className:"block text-primary font-semibold",children:"Normative reference manual"}),e.jsx("span",{className:"font-mono text-xs",children:"10.5281/zenodo.21941046"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21611214",target:"_blank",rel:"noopener noreferrer",className:"text-secondary hover:text-cyan-300 transition-colors",children:[e.jsx("span",{className:"block text-primary font-semibold",children:"v1.0.0 user manual"}),e.jsx("span",{className:"font-mono text-xs",children:"10.5281/zenodo.21611214"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.22046403",target:"_blank",rel:"noopener noreferrer",className:"text-secondary hover:text-cyan-300 transition-colors",children:[e.jsx("span",{className:"block text-primary font-semibold",children:"Verification and proof bundle"}),e.jsx("span",{className:"font-mono text-xs",children:"10.5281/zenodo.22046403"})]})]})]})]})}),e.jsx("section",{className:"section-thin border-t border-b border-gridline/30 bg-void/80",children:e.jsx("div",{className:"section-padding",children:e.jsxs("div",{className:"max-w-5xl mx-auto text-center",children:[e.jsx("p",{className:"text-xs text-muted-foreground uppercase tracking-widest mb-8",children:"Works with your existing stack"}),e.jsxs("div",{className:"flex flex-wrap justify-center items-center gap-x-12 gap-y-8",children:[e.jsxs("div",{className:"flex flex-col items-center gap-3",children:[e.jsx("span",{className:"text-2xl font-bold tracking-tight text-white/90",children:"Stim"}),e.jsx("code",{className:"text-xs bg-surface border border-gridline px-2 py-1 rounded text-muted-foreground font-mono",children:"pip install stim"})]}),e.jsxs("div",{className:"flex flex-col items-center gap-3",children:[e.jsx("span",{className:"text-2xl font-bold tracking-tight text-white/90",children:"Sinter"}),e.jsx("code",{className:"text-xs bg-surface border border-gridline px-2 py-1 rounded text-muted-foreground font-mono",children:"pip install sinter"})]}),e.jsxs("div",{className:"flex flex-col items-center gap-3",children:[e.jsx("span",{className:"text-2xl font-bold tracking-tight text-white/90",children:"Qiskit"}),e.jsx("code",{className:"text-xs bg-surface border border-gridline px-2 py-1 rounded text-muted-foreground font-mono",children:"pip install qiskit-qec"})]})]})]})})}),e.jsx("section",{ref:t=>i(t,0),className:"py-8 bg-void",children:e.jsx("div",{className:"section-padding",children:e.jsx("div",{className:"max-w-7xl mx-auto flex flex-wrap justify-center gap-3",children:[{icon:e.jsx(de,{size:16}),label:"Artifacts (GitHub)",href:"https://github.com/GuillaumeLessard/qector-decoder"},{icon:e.jsx(xe,{size:16}),label:"Mastering QEC · Google Play",href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",gold:!0},{icon:e.jsx(me,{size:16}),label:`PyPI Wheel v${s}`,href:"https://pypi.org/project/qector-decoder-v3/"},{icon:e.jsx(he,{size:16}),label:"Free Workbench App",href:"/workbench"},{icon:e.jsx(pe,{size:16}),label:"ORCID 0009-0000-3465-3753",href:"https://orcid.org/0009-0000-3465-3753"}].map(t=>e.jsx(Re,{icon:t.icon,label:t.label,href:t.href,variant:t.gold?"gold":"default"},t.label))})})}),e.jsx("section",{className:"section-band bg-void border-y border-gridline",children:e.jsxs("div",{className:"section-padding max-w-6xl mx-auto",children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("span",{className:"eyebrow-pill mb-4",children:"Proof Suite"}),e.jsx("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight",children:"Executable Verification for v1.0.0"}),e.jsx("p",{className:"text-secondary text-lg max-w-2xl mx-auto mt-3",children:"Hashed-lock reproducible install, CERT_STRICT gate, and Lean/Coq kernel evidence - verifiable against Reference Manual v1.0.0."})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-5",children:[e.jsxs("div",{className:"card-surface p-6 border-cyan-300/20",children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-3",children:"Reproducible Install"}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:"Hashed-lock & CERT_STRICT"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Proof runs are hashed-locked and gated by CERT_STRICT - no universal benchmark figures, only workload-scoped artifacts."})]}),e.jsxs("div",{className:"card-surface p-6 border-cyan-300/20",children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-3",children:"Reference Manual v1.0.0"}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:"DOI 10.5281/zenodo.21941046"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Normative manual with syndrome-faithfulness foundations, 15 backends, and API stability tiers. All proofs trace to this document."})]}),e.jsxs("div",{className:"card-surface p-6 border-cyan-300/20",children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-3",children:"Lean/Coq Evidence"}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:"Kernel-checked proofs"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Executable suite checks GF(2) invariants and logical cosets with Lean/Coq kernels - evidence, not claims."})]})]}),e.jsxs("div",{className:"text-center mt-8",children:[e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-proof",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"View qector-proof on GitHub"}),e.jsx("span",{className:"text-muted-foreground text-xs ml-3",children:"github.com/GuillaumeLessard/qector-proof"})]})]})}),e.jsx("section",{className:"section-feature bg-surface/30 border-t border-gridline",children:e.jsxs("div",{className:"section-padding max-w-6xl mx-auto",children:[e.jsxs("div",{ref:t=>i(t,1),className:"text-center mb-14",children:[e.jsx("span",{className:"eyebrow-pill mb-4",children:"How It Works"}),e.jsx("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight",children:"From Installation to Validation"}),e.jsx("p",{className:"text-secondary text-lg max-w-2xl mx-auto mt-3",children:"QECTOR integrates directly into your existing QEC workflow with minimal friction."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-8",children:[{step:"01",title:"Install",desc:"Install the 1.0.1 wheel in a supported Python 3.9-3.14 environment alongside your existing Stim or PyMatching workflow.",detail:'pip install --upgrade "qector-decoder-v3>=1.0,<2"',code:!0},{step:"02",title:"Decode",desc:"Access 17 concrete Rust-accelerated decoder configurations through a unified Python API. Workbench also exposes AutoDecoder and Auto Router as two orchestration kinds, for 19 named kinds in total.",detail:"from qector_decoder_v3 import BlossomDecoder, BpOsdDecoder",code:!0},{step:"03",title:"Validate",desc:"Claims are scoped to a declared workload and backed by SHA-256 sealed artifacts. Run qector-doctor before relying on optional paths and preserve the report with the result.",detail:"evidence policy · SHA-256 sealed",code:!1}].map(t=>e.jsxs("div",{className:"card-surface p-6 relative",children:[e.jsx("div",{className:"text-4xl font-black text-cyan-300/20 absolute top-4 right-4 select-none",children:t.step}),e.jsx("div",{className:"w-10 h-10 rounded-full bg-cyan-300/10 border border-cyan-300/20 flex items-center justify-center text-cyan-300 font-bold text-sm mb-4",children:t.step}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:t.title}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:t.desc}),t.code&&e.jsx("code",{className:"block text-xs bg-void border border-gridline rounded-lg px-3 py-2 text-cyan-300 font-mono overflow-x-auto",children:t.detail}),!t.code&&e.jsx("span",{className:"inline-flex items-center gap-1.5 text-xs text-cyan-300 font-mono bg-cyan-300/5 px-3 py-1.5 rounded-lg border border-cyan-300/10",children:t.detail})]},t.step))})]})}),e.jsxs("section",{id:"platform",className:"section-feature relative overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 pointer-events-none",style:{background:"radial-gradient(circle at center, rgba(103, 232, 249, 0.06) 0%, transparent 70%)"}}),e.jsx("div",{className:"section-padding relative z-10",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsx("div",{ref:t=>i(t,2),children:e.jsx(J,{eyebrow:"Why QECTOR",heading:"More Than Just MWPM",description:"QEC decoding is not one-size-fits-all. Surface codes, qLDPC codes, optional batch paths, and simulation workloads each demand different decoders. QECTOR documents the supported contracts and the evidence needed to evaluate a selected workload."})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[{title:"Blossom MWPM (Exact)",tag:"Blossom",desc:"Weight-optimal exact minimum-weight perfect matching for graph-like codes. The reference decoder for surface codes.",proof:"Exact optimal matching · Stim-native"},{title:"qLDPC Support",tag:"BP-OSD (qLDPC)",desc:"Matching decoders are restricted to graphlike structures. BP-OSD handles reachable arbitrary GF(2) check matrices, including LDPC and qLDPC workloads.",proof:"Hyperedge-safe GF(2) path"},{title:"Workload-Scoped Execution",tag:"Union-Find + Optional GPU",desc:"Union-Find and optional GPU batch paths are available for supported workloads. Availability and performance must be verified on the target environment.",proof:"Environment-dependent paths"},{title:"One Library, Pluggable",tag:"Stim · PyMatching · Sinter · Qiskit",desc:"Drop QECTOR into any existing Stim or PyMatching workflow. Same API surface, swappable backend. No vendor lock-in.",proof:"Drop-in, same API surface"}].map((t,l)=>e.jsx("div",{ref:d=>i(d,3+l),children:e.jsx(Oe,{title:t.title,tag:t.tag,desc:t.desc,proof:t.proof})},t.title))})]})})]}),e.jsx("section",{id:"decoder-section",className:"section-feature bg-surface/50",children:e.jsx("div",{className:"section-padding",children:e.jsx("div",{className:"max-w-6xl mx-auto",children:e.jsxs("div",{ref:t=>i(t,7),className:"grid grid-cols-1 lg:grid-cols-2 gap-12 items-center",children:[e.jsxs("div",{children:[e.jsx("span",{className:"eyebrow-pill mb-4",children:"19 Workbench Kinds · 17 Concrete Configs"}),e.jsx("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-6",children:"Decoding Algorithms"}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed mb-8",children:"Union-Find, Fast Union-Find, Blossom MWPM, Sparse Blossom, Belief-Matching, BP-OSD, GPU Batch (CUDA/OpenCL), Hybrid, Predecoded, two-stage, ambiguity-cluster, colour-code, space-time, and other concrete paths are exposed through a consistent Python API. Workbench adds the two orchestration kinds, AutoDecoder and Auto Router, to make 19 named kinds."}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[{label:" v1.0.1 Stable",desc:"Corrected code families and Union-Find peeling, Python 3.14, GPU on Pro licences, signed provenance for every wheel."},{label:" 18 Binary Wheels",desc:"Python 3.9-3.14 across Windows amd64, Linux x86_64, and macOS arm64, each tested on its own OS before release."},{label:" GPU Batch Paths",desc:"CUDA and OpenCL batch paths are available for supported hardware and drivers; OpenCL via source build."},{label:" Reproducible Harness",desc:"qector bench ships with the package; measure on your own hardware, no universal figures claimed."}].map(t=>e.jsxs("div",{className:"p-4 bg-void/50 border border-gridline/50 rounded-xl",children:[e.jsx("div",{className:"text-cyan-300 font-semibold text-sm mb-1",children:t.label}),e.jsx("div",{className:"text-muted-foreground text-xs leading-relaxed",children:t.desc})]},t.label))}),e.jsxs("div",{className:"flex flex-wrap gap-3 mt-8",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",children:e.jsx("img",{src:"https://img.shields.io/pypi/v/qector-decoder-v3?style=flat-square&color=24e7ff",alt:"qector-decoder-v3 version on PyPI",loading:"lazy"})}),e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",children:e.jsx("img",{src:"https://img.shields.io/github/v/release/GuillaumeLessard/qector-decoder?style=flat-square&color=24e7ff",alt:"Latest qector-decoder release on GitHub",loading:"lazy"})}),e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",children:e.jsx("img",{src:"https://img.shields.io/badge/GitHub-Artifacts-blue?logo=github",alt:"GitHub release artifacts for QECTOR",loading:"lazy"})})]})]}),e.jsx("div",{ref:t=>i(t,8),className:"relative w-full",children:e.jsx(De,{})})]})})})}),e.jsx("section",{className:"section-feature relative",children:e.jsx("div",{className:"section-padding relative z-10",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{ref:t=>i(t,9),children:[e.jsx(J,{eyebrow:"Performance",heading:"Measure on Your Own Hardware"}),e.jsx(Ae,{title:"Reproducible Benchmark Harness",statement:"No universal benchmark figures are published on this site, because results depend on your hardware, drivers, and workloads. The qector bench harness ships with the package so you can measure logical error rates and throughput on your own machines.",href:"https://github.com/GuillaumeLessard/qector-decoder",linkLabel:"GitHub Artifacts →",className:"max-w-3xl mx-auto mb-6"})]}),e.jsx("div",{ref:t=>i(t,10),className:"max-w-3xl mx-auto",children:e.jsxs("div",{className:"p-5 bg-void/50 border border-gridline/50 rounded-xl font-mono text-xs text-muted-foreground leading-relaxed overflow-x-auto",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-cyan-300",children:"$"}),' pip install "qector-decoder-v3[bench]"']}),e.jsxs("div",{children:[e.jsx("span",{className:"text-cyan-300",children:"$"})," qector-doctor"]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-cyan-300",children:"$"})," qector bench -d 5 -r 5 -s 10000 --decoder blossom --noise 0.001"]}),e.jsx("div",{className:"text-green-400 mt-2",children:"✓ Logical error rates and throughput written as reproducible JSON"})]})}),e.jsx("div",{className:"text-center mt-8 flex flex-wrap justify-center gap-3",children:e.jsx(j,{to:"/evidence",className:"btn-outline",children:"Evidence & Reports"})})]})})}),e.jsx("section",{className:"section-band bg-surface/20 border-t border-gridline",children:e.jsxs("div",{className:"section-padding max-w-5xl mx-auto",children:[e.jsx("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight text-center mb-10",children:"Enterprise Compliance & Licensing"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsxs("div",{className:"card-surface border-cyan-300/20 bg-void/50 p-8 rounded-2xl relative overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-r from-cyan-300/5 to-transparent pointer-events-none"}),e.jsx("h3",{className:"text-lg font-bold text-cyan-300 flex items-center gap-2 mb-4",children:"License Clarity"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"The package is source-available under PolyForm Noncommercial 1.0.0 for community use. Commercial use, hosted services, and redistribution require the written scope described on the license and pricing pages."}),e.jsx(j,{to:"/commercial",className:"text-cyan-300 text-sm font-medium hover:underline",children:"Learn about licensing →"})]}),e.jsxs("div",{className:"card-surface border-gold-400/20 bg-void/50 p-8 rounded-2xl relative overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-r from-gold-400/5 to-transparent pointer-events-none"}),e.jsx("h3",{className:"text-lg font-bold text-gold-400 flex items-center gap-2 mb-4",children:"Commercial Licences, Air-Gapped"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Pro from ",R(L.proMonthly),"/month or ",R(L.proAnnual),"/year with GPU batch decoding, Lab for distance 63 and an SLA. Licences are verified offline, with no licence server, and every plan has a ",L.refundDays,"-day money-back guarantee."]}),e.jsx(j,{to:"/pricing",className:"btn-gold text-sm",children:"View Pricing & Tiers →"})]})]})]})}),e.jsx("section",{id:"pricing-section",className:"section-feature bg-surface/50 border-t border-gridline",children:e.jsx("div",{className:"section-padding",children:e.jsxs("div",{className:"max-w-xl mx-auto text-center",children:[e.jsxs("div",{ref:t=>i(t,11),className:"mb-6",children:[e.jsx("span",{className:"eyebrow-pill mb-4",children:"Self-Serve · Instant Clearance"}),e.jsx("h2",{className:"text-3xl font-bold mb-3",children:"QECTOR Pro"}),e.jsxs("p",{className:"text-secondary text-sm max-w-md mx-auto",children:["Air-gapped licence · Cancel any time · ",L.refundDays,"-day money-back guarantee"]})]}),e.jsxs("div",{ref:t=>i(t,12),className:"card-surface border-cyan-300/35 neon-border-cyan relative overflow-hidden p-8 rounded-2xl bg-void/80 text-center",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 to-transparent pointer-events-none"}),e.jsxs("div",{className:"mb-6",children:[e.jsxs("h3",{className:"text-4xl font-extrabold text-primary",children:[R(L.proMonthly),e.jsx("span",{className:"text-lg font-semibold text-muted-foreground",children:"/mo"})]}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-1",children:["or ",R(L.proAnnual),"/year (2 months free) · Production use"]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row justify-center gap-3 mb-6",children:[e.jsxs("a",{href:H.proMonthly,className:"btn-cyan text-base font-bold py-3.5 px-8 rounded-xl shadow-lg shadow-cyan-300/20 inline-flex items-center justify-center gap-2",target:"_blank",rel:"noopener noreferrer",children:[e.jsxs("span",{children:["Buy Pro: ",R(L.proMonthly),"/mo"]}),e.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("line",{x1:"5",y1:"12",x2:"19",y2:"12"}),e.jsx("polyline",{points:"12 5 19 12 12 19"})]})]}),e.jsxs("a",{href:H.proAnnual,className:"btn-outline text-base py-3.5 px-8 rounded-xl",target:"_blank",rel:"noopener noreferrer",children:["Buy annual: ",R(L.proAnnual),"/yr"]})]}),e.jsx("div",{className:"border-t border-gridline/60 pt-4 mt-4 text-left space-y-2",children:["Full QECTOR Decoder v3 (all decoder families)","GPU (CUDA/OpenCL) batch decoding unlocked","Signed licence token, verified offline: works air-gapped","Email support (2 business day response)",`${L.refundDays}-day money-back guarantee on your first payment`].map(t=>e.jsxs("div",{className:"flex items-center gap-2 text-xs text-secondary",children:[e.jsx("span",{className:"text-green-400",children:"✓"}),e.jsx("span",{children:t})]},t))})]}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-4",children:["Need Lab, perpetual or OEM? ",e.jsx(j,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"View all tiers →"})]})]})})})]})}const qe=c.lazy(()=>b(()=>import("./About-xwac7kSw.js"),__vite__mapDeps([0,1,2,3,4,5,6]))),$e=c.lazy(()=>b(()=>import("./Decoder-Esh1GsiS.js"),__vite__mapDeps([7,1,8,2,3,4,5,6]))),Me=c.lazy(()=>b(()=>import("./Workbench-DsnWT-94.js"),__vite__mapDeps([9,1,8,2,10,3,4,5,6]))),ze=c.lazy(()=>b(()=>import("./McpServer-DYX0yvB3.js"),__vite__mapDeps([11,1,8,3,4,5,6,2]))),Ge=c.lazy(()=>b(()=>import("./ClaudePlugin-C8eza7n_.js"),__vite__mapDeps([12,1,8,10,6,3,4,5,2]))),Qe=c.lazy(()=>b(()=>import("./Blog-B7IPXEkA.js"),__vite__mapDeps([13,1,14,3,4,5,6,2]))),Ve=c.lazy(()=>b(()=>import("./BlogPost-DeO2pN01.js"),__vite__mapDeps([15,1,14,4,3,5,6,2]))),Ue=c.lazy(()=>b(()=>import("./Pricing-xevqAEll.js"),__vite__mapDeps([16,1,17,3,4,5,8,2,6]))),We=c.lazy(()=>b(()=>import("./PricingFR-C8Es19li.js"),__vite__mapDeps([18,1,17,3,4,5,8,2,6]))),Be=c.lazy(()=>b(()=>import("./Commercial-e3jcuxYP.js"),__vite__mapDeps([19,1,8,3,4,5,6,2]))),Fe=c.lazy(()=>b(()=>import("./Contact-D61L1Z0b.js"),__vite__mapDeps([20,1,21,2,3,4,5,6]))),He=c.lazy(()=>b(()=>import("./License-CqqH5PUX.js"),__vite__mapDeps([22,1,8,3,4,5,6,2]))),Je=c.lazy(()=>b(()=>import("./Privacy-CwHcJhDF.js"),__vite__mapDeps([23,1,8,3,4,5,6,2]))),Ke=c.lazy(()=>b(()=>import("./Terms-BSR2RP9l.js"),__vite__mapDeps([24,1,8,3,4,5,6,2]))),Ye=c.lazy(()=>b(()=>import("./TermsFR-C-UQyznI.js"),__vite__mapDeps([25,1,8,3,4,5,6,2]))),Ze=c.lazy(()=>b(()=>import("./Refund-D6csSD1J.js"),__vite__mapDeps([26,1,8,3,4,5,6,2]))),Xe=c.lazy(()=>b(()=>import("./Founder-BS0MLavi.js"),__vite__mapDeps([27,1,21,3,4,5,6,2]))),et=c.lazy(()=>b(()=>import("./Evidence-CiRnbh9a.js"),__vite__mapDeps([28,1,8,2,10,3,4,5,6]))),tt=c.lazy(()=>b(()=>import("./Changelog-BytfgdnJ.js"),__vite__mapDeps([29,1,8,10,3,4,5,6,2]))),rt=c.lazy(()=>b(()=>import("./TechnicalReference-CGYLPxss.js"),__vite__mapDeps([30,1,8,2,6,3,4,5]))),st=c.lazy(()=>b(()=>import("./Docs-DA36t10x.js"),__vite__mapDeps([31,1,8,2,3,4,5,6]))),at=c.lazy(()=>b(()=>import("./Installer-CeDfnoyS.js"),__vite__mapDeps([32,1,8,3,4,5,6,2]))),nt=c.lazy(()=>b(()=>import("./Manual-Bgdopadc.js"),__vite__mapDeps([33,1,6,8,3,4,5,2]))),ot=c.lazy(()=>b(()=>import("./Success-Gvo6K55X.js"),__vite__mapDeps([34,1,8,3,4,5,6,2]))),it=c.lazy(()=>b(()=>import("./NotFound-BvmxweJ_.js"),__vite__mapDeps([35,1,8,3,4,5,6,2])));function lt(){return e.jsx(Ee,{children:e.jsx(ke,{children:e.jsx(c.Suspense,{fallback:e.jsx(_e,{}),children:e.jsxs(re,{children:[e.jsx(f,{path:"/",element:e.jsx(Ie,{})}),e.jsx(f,{path:"/about",element:e.jsx(qe,{})}),e.jsx(f,{path:"/decoder",element:e.jsx($e,{})}),e.jsx(f,{path:"/workbench",element:e.jsx(Me,{})}),e.jsx(f,{path:"/mcp-server",element:e.jsx(ze,{})}),e.jsx(f,{path:"/claude-plugin",element:e.jsx(Ge,{})}),e.jsx(f,{path:"/blog",element:e.jsx(Qe,{})}),e.jsx(f,{path:"/blog/:id",element:e.jsx(Ve,{})}),e.jsx(f,{path:"/pricing",element:e.jsx(Ue,{})}),e.jsx(f,{path:"/fr/pricing",element:e.jsx(We,{})}),e.jsx(f,{path:"/commercial",element:e.jsx(Be,{})}),e.jsx(f,{path:"/contact",element:e.jsx(Fe,{})}),e.jsx(f,{path:"/license",element:e.jsx(He,{})}),e.jsx(f,{path:"/privacy",element:e.jsx(Je,{})}),e.jsx(f,{path:"/terms",element:e.jsx(Ke,{})}),e.jsx(f,{path:"/fr/terms",element:e.jsx(Ye,{})}),e.jsx(f,{path:"/refund",element:e.jsx(Ze,{})}),e.jsx(f,{path:"/guillaume-lessard",element:e.jsx(Xe,{})}),e.jsx(f,{path:"/evidence",element:e.jsx(et,{})}),e.jsx(f,{path:"/changelog",element:e.jsx(tt,{})}),e.jsx(f,{path:"/technical-reference",element:e.jsx(rt,{})}),e.jsx(f,{path:"/docs",element:e.jsx(st,{})}),e.jsx(f,{path:"/installer",element:e.jsx(at,{})}),e.jsx(f,{path:"/manual",element:e.jsx(nt,{})}),e.jsx(f,{path:"/success",element:e.jsx(ot,{})}),e.jsx(f,{path:"*",element:e.jsx(it,{})})]})})})})}te.createRoot(document.getElementById("root")).render(e.jsx(c.StrictMode,{children:e.jsx(se,{children:e.jsx(lt,{})})}));export{Oe as A,Te as C,Ae as E,Le as J,H as L,L as P,De as Q,Pe as S,J as a,R as b,ft as c,ut as d,K as u}; diff --git a/assets/index-BcbVjARk.js b/assets/index-BcbVjARk.js deleted file mode 100644 index e8f64ed3..00000000 --- a/assets/index-BcbVjARk.js +++ /dev/null @@ -1,3 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/About-CzYv2IZf.js","assets/vendor-react-BiHfrq0e.js","assets/vendor-gsap-a3sj5zmn.js","assets/vendor-PiU4YGcH.js","assets/vendor-md-CLKxNZoa.js","assets/vendor-md-dRWncRqa.css","assets/vendor-ui-B0ssGG4c.js","assets/Decoder-4z-vTL16.js","assets/NeuralReveal-BflyZYSb.js","assets/Workbench-DjamN-lA.js","assets/releases-DiQz_IDu.js","assets/McpServer-DH6efPKh.js","assets/ClaudePlugin-DdB5MGg7.js","assets/Blog-C2PtKQPL.js","assets/blogData-OjR2ZtNr.js","assets/BlogPost-Bf5JMy3h.js","assets/Pricing-CZj0aLPH.js","assets/faqData-CCPvMSkf.js","assets/PricingFR-Dx93rO3U.js","assets/Commercial-CgBsPCVr.js","assets/Contact-ZN3l_2_v.js","assets/CalendlyWidget-BuhQfp2_.js","assets/License-BVQmOrwC.js","assets/Privacy-DZfev8WZ.js","assets/Terms-Drxk6W26.js","assets/TermsFR-BL-VfMSd.js","assets/Refund-DJWm-f08.js","assets/Founder-CuTYpFsD.js","assets/Evidence-C7IJaw71.js","assets/Changelog-dTKijDWa.js","assets/TechnicalReference-C9HpEUdH.js","assets/Docs-CbxYbU8R.js","assets/Installer-B56SNEpM.js","assets/Manual-RdcO5vwC.js","assets/Success-DyK9JNg3.js","assets/NotFound-C-HGJzn4.js"])))=>i.map(i=>d[i]); -import{r as c,j as e,c as X}from"./vendor-react-BiHfrq0e.js";import{z,L as j,R as Z,A as f,B as ee}from"./vendor-PiU4YGcH.js";import{S as Q,C as te,a as re,b as se,R as ae,c as ne,d as oe,F as ie,B as le,P as ce,M as de,e as xe}from"./vendor-ui-B0ssGG4c.js";import{g as $,S as me}from"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))t(l);new MutationObserver(l=>{for(const d of l)if(d.type==="childList")for(const h of d.addedNodes)h.tagName==="LINK"&&h.rel==="modulepreload"&&t(h)}).observe(document,{childList:!0,subtree:!0});function i(l){const d={};return l.integrity&&(d.integrity=l.integrity),l.referrerPolicy&&(d.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?d.credentials="include":l.crossOrigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function t(l){if(l.ep)return;l.ep=!0;const d=i(l);fetch(l.href,d)}})();const he="modulepreload",pe=function(n){return"/"+n},V={},b=function(s,i,t){let l=Promise.resolve();if(i&&i.length>0){let u=function(x){return Promise.all(x.map(_=>Promise.resolve(_).then(N=>({status:"fulfilled",value:N}),N=>({status:"rejected",reason:N}))))};document.getElementsByTagName("link");const h=document.querySelector("meta[property=csp-nonce]"),p=h?.nonce||h?.getAttribute("nonce");l=u(i.map(x=>{if(x=pe(x),x in V)return;V[x]=!0;const _=x.endsWith(".css"),N=_?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${x}"]${N}`))return;const E=document.createElement("link");if(E.rel=_?"stylesheet":he,_||(E.as="script"),E.crossOrigin="",E.href=x,p&&E.setAttribute("nonce",p),document.head.appendChild(E),_)return new Promise((P,L)=>{E.addEventListener("load",P),E.addEventListener("error",()=>L(new Error(`Unable to preload CSS for ${x}`)))})}))}function d(h){const p=new Event("vite:preloadError",{cancelable:!0});if(p.payload=h,window.dispatchEvent(p),!p.defaultPrevented)throw h}return l.then(h=>{for(const p of h||[])p.status==="rejected"&&d(p.reason);return s().catch(d)})},B=[{label:"Platform",href:"/"},{label:"Decoder",href:"/decoder"},{label:"Claude Plugin",href:"/claude-plugin"},{label:"Workbench",href:"/workbench"},{label:"MCP Server",href:"/mcp-server"},{label:"Evidence",href:"/evidence"},{label:"Blog",href:"/blog"},{label:"Pricing",href:"/pricing"},{label:"Contact",href:"/contact"}];function ue(){const[n,s]=c.useState(!1),[i,t]=c.useState(!1),[l,d]=c.useState(!1),h=z(),p=c.useCallback(()=>{const x=window.scrollY;d(x>50),x>200?t(x>window.lastScrollY):t(!1),window.lastScrollY=x},[]);c.useEffect(()=>(window.addEventListener("scroll",p,{passive:!0}),()=>window.removeEventListener("scroll",p)),[p]),c.useEffect(()=>{s(!1)},[h]),c.useEffect(()=>(n?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[n]),c.useEffect(()=>{if(!n)return;const x=_=>{_.key==="Escape"&&s(!1)};return window.addEventListener("keydown",x),()=>window.removeEventListener("keydown",x)},[n]);const u=x=>x==="/"?h.pathname==="/":h.pathname===x;return e.jsxs(e.Fragment,{children:[e.jsxs("nav",{"aria-label":"Main",className:`fixed top-4 left-1/2 -translate-x-1/2 z-50 w-[95%] max-w-6xl transition-all duration-500 ease-out ${i&&!n?"-translate-y-[140%]":"translate-y-0"}`,inert:i&&!n,children:[e.jsx("div",{className:`glass-nav rounded-2xl px-4 sm:px-6 py-3 transition-all duration-300 ${l?"shadow-deep":""}`,children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(j,{to:"/",className:"flex items-center gap-2.5 text-cyan-300 hover:text-cyan-100 transition-colors",children:e.jsx("img",{src:"/images/logo.png",alt:"QECTOR official logo",width:"36",height:"36",className:"h-9 w-9 rounded-lg object-cover"})}),e.jsx("div",{className:"hidden lg:flex items-center gap-1",children:B.map(x=>e.jsx(j,{to:x.href,"aria-current":u(x.href)?"page":void 0,className:`px-3 py-2 rounded-lg text-sm font-medium transition-all duration-300 ${u(x.href)?"text-cyan-300 bg-cyan-300/10":"text-secondary hover:text-primary hover:bg-white/5"}`,children:x.label},x.href))}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(j,{to:"/pricing",className:"hidden sm:inline-flex items-center px-4 py-2 border border-gold-400/60 text-gold-400 text-sm font-medium rounded-lg hover:bg-gold-400/10 transition-all duration-300",children:"Get License"}),e.jsxs("button",{onClick:()=>s(!n),className:"lg:hidden flex flex-col items-center justify-center gap-1.5 p-2 min-h-[44px] min-w-[44px] rounded-lg hover:bg-white/5 transition-colors","aria-label":h.pathname.startsWith("/fr/")?n?"Fermer le menu":"Ouvrir le menu":n?"Close menu":"Open menu","aria-expanded":n,"aria-controls":"mobile-menu",children:[e.jsx("span",{className:`block w-5 h-0.5 bg-primary transition-all duration-300 ${n?"rotate-45 translate-y-2":""}`}),e.jsx("span",{className:`block w-5 h-0.5 bg-primary transition-all duration-300 ${n?"opacity-0":""}`}),e.jsx("span",{className:`block w-5 h-0.5 bg-primary transition-all duration-300 ${n?"-rotate-45 -translate-y-2":""}`})]})]})]})}),e.jsx("div",{id:"mobile-menu","aria-hidden":!n,className:`lg:hidden mt-2 glass-nav rounded-2xl overflow-hidden transition-all duration-300 ${n?"max-h-[calc(100dvh-110px)] overflow-y-auto opacity-100 visible":"max-h-0 opacity-0 invisible"}`,children:e.jsxs("div",{className:"px-4 py-3 space-y-1",children:[B.map(x=>e.jsx(j,{to:x.href,"aria-current":u(x.href)?"page":void 0,className:`flex items-center px-4 py-3 min-h-[44px] rounded-lg text-sm font-medium transition-all duration-200 ${u(x.href)?"text-cyan-300 bg-cyan-300/10":"text-secondary hover:text-primary hover:bg-white/5"}`,onClick:()=>s(!1),children:x.label},x.href)),e.jsx(j,{to:"/pricing",className:"sm:hidden mt-2 text-center px-4 py-3 min-h-[44px] flex items-center justify-center border border-gold-400/60 text-gold-400 text-sm font-medium rounded-lg hover:bg-gold-400/10 transition-all",onClick:()=>s(!1),children:"Get License"})]})})]}),n&&e.jsx("div",{className:"fixed inset-0 z-40 bg-black/50 backdrop-blur-sm lg:hidden",onClick:()=>s(!1)})]})}const D={version:"1.0.0",pypiPackage:"qector-decoder-v3",contactEndpoint:void 0,ogImage:"https://qector.store/images/og-banner.png"},mt="https://calendly.com/qector-info/30min?background_color=0e0d0d&text_color=ffffff&primary_color=0e4088";async function fe(){try{const s=await(await fetch("https://pypi.org/rss/project/qector-decoder-v3/releases.xml")).text(),d=(new DOMParser().parseFromString(s,"text/xml").querySelector("item title")?.textContent||"").match(/qector-decoder-v3\s+([\d.]+)/);return d?d[1]:D.version}catch{return D.version}}function H(){const[n,s]=c.useState(D.version),[i,t]=c.useState(!0);return c.useEffect(()=>{let l=!0;return fe().then(d=>{l&&(s(d),t(!1))}),()=>{l=!1}},[]),{version:n,loading:i}}const ge=[{label:"QECTOR Decoder v3",href:"/decoder",badge:"Library"},{label:"Claude Code Plugin",href:"/claude-plugin",badge:"Claude"},{label:"Workbench GUI",href:"/workbench",badge:"Desktop App"},{label:"QECTOR MCP Server",href:"/mcp-server",badge:"MCP"},{label:"Installer & App Bundles",href:"/installer"},{label:"Pricing & Licensing",href:"/pricing"}],be=[{label:"Evidence & Reports",href:"/evidence"},{label:"Technical Reference",href:"/technical-reference"},{label:"Package User Manual",href:"/manual"},{label:"Documentation Hub",href:"/docs"},{label:"Version Changelog",href:"/changelog"}],ye=[{label:"About QECTOR",href:"/about"},{label:"Guillaume Lessard (Founder)",href:"/guillaume-lessard"},{label:"iD01t Productions"},{label:"Commercial Licensing",href:"/commercial"},{label:"Contact Engineering",href:"/contact"},{label:"EULA & License",href:"/license"},{label:"Terms of Service",href:"/terms"},{label:"Privacy Policy",href:"/privacy"},{label:"Refund Policy",href:"/refund"}];function I({href:n,external:s,badge:i,children:t}){const l="group flex items-center justify-between gap-3 min-h-[44px] py-1.5 text-secondary hover:text-cyan-300 text-sm transition-colors duration-200",d=e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"group-hover:translate-x-0.5 transition-transform duration-200",children:t}),i&&e.jsx("span",{className:"text-[10px] font-mono px-1.5 py-0.5 rounded bg-surface border border-gridline text-muted-foreground group-hover:border-cyan-300/30 group-hover:text-cyan-300 transition-colors",children:i})]});return n?s?e.jsxs("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:l,children:[d,e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}):e.jsx(j,{to:n,className:l,children:d}):e.jsx("span",{className:l,children:d})}function je(){const{version:n}=H();return e.jsxs("footer",{className:"border-t border-cyan-900/40 bg-void/95 relative overflow-hidden text-left",children:[e.jsx("div",{className:"absolute top-0 left-1/2 -translate-x-1/2 w-1/2 h-16 bg-gradient-to-b from-cyan-400/5 to-transparent blur-3xl pointer-events-none"}),e.jsx("div",{className:"section-padding py-16 relative z-10",children:e.jsxs("div",{className:"max-w-7xl mx-auto",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-5 gap-12 lg:gap-8",children:[e.jsxs("div",{className:"lg:col-span-2 space-y-6",children:[e.jsxs(j,{to:"/",className:"inline-flex items-center gap-3 text-cyan-300 hover:text-cyan-100 transition-colors duration-200",children:[e.jsx("img",{src:"/images/logo.png",alt:"QECTOR official logo",width:"40",height:"40",className:"h-10 w-10 rounded-lg object-cover"}),e.jsxs("span",{className:"text-lg font-extrabold tracking-tight text-white",children:["QECTOR",e.jsx("span",{className:"text-cyan-300",children:"."})]})]}),e.jsx("p",{className:"text-secondary/80 text-sm leading-relaxed max-w-sm",children:"Quantum error correction decoding for Python. Built by Guillaume Lessard at iD01t Productions."}),e.jsxs("div",{className:"flex items-center gap-2 pt-2",children:[e.jsxs("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] text-muted-foreground hover:text-cyan-300 transition-colors","aria-label":"PyPI",children:[e.jsxs("span",{className:"text-sm font-mono border border-gridline rounded px-2 py-1 hover:border-cyan-300/30",children:["v",n]}),e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-1 text-muted-foreground hover:text-cyan-300 transition-colors text-sm font-medium","aria-label":"GitHub",children:["GitHub",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-1 text-muted-foreground hover:text-cyan-300 transition-colors text-sm font-medium","aria-label":"ORCID",children:["ORCID",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]})]})]}),e.jsxs("div",{className:"space-y-5",children:[e.jsx("h2",{className:"text-xs font-semibold uppercase tracking-widest text-white/90",children:"Platform"}),e.jsx("div",{className:"flex flex-col gap-1",children:ge.map(s=>e.jsx(I,{href:s.href,external:s.external,badge:s.badge,children:s.label},s.label))})]}),e.jsxs("div",{className:"space-y-5",children:[e.jsx("h2",{className:"text-xs font-semibold uppercase tracking-widest text-white/90",children:"Research & Docs"}),e.jsx("div",{className:"flex flex-col gap-1",children:be.map(s=>e.jsx(I,{href:s.href,external:s.external,badge:s.badge,children:s.label},s.label))})]}),e.jsxs("div",{className:"space-y-5",children:[e.jsx("h2",{className:"text-xs font-semibold uppercase tracking-widest text-white/90",children:"Company"}),e.jsx("div",{className:"flex flex-col gap-1",children:ye.slice(0,5).map(s=>e.jsx(I,{href:s.href,external:s.external,badge:s.badge,children:s.label},s.label))})]})]}),e.jsxs("div",{className:"mt-16 pt-8 border-t border-gridline flex flex-col md:flex-row items-start md:items-center justify-between gap-6",children:[e.jsxs("div",{className:"text-xs text-muted-foreground max-w-xl leading-relaxed",children:[e.jsx("span",{className:"font-semibold text-secondary",children:"Distribution:"})," PyPI (",e.jsx("code",{className:"text-cyan-300/80 font-mono",children:"qector-decoder-v3"}),") is the Python library. The free ",e.jsx(j,{to:"/installer",className:"link-accent",children:"Workbench GUI"})," is a standalone desktop application shipped self-contained for Windows x64 and Linux x64 (no system Python required)."]}),e.jsxs("nav",{"aria-label":"Legal",className:"flex flex-wrap items-center gap-x-4 gap-y-1 text-xs font-medium text-muted-foreground",children:[e.jsx(j,{to:"/privacy",className:"inline-flex items-center min-h-[44px] px-1 hover:text-cyan-300 transition-colors duration-200",children:"Privacy"}),e.jsx(j,{to:"/terms",className:"inline-flex items-center min-h-[44px] px-1 hover:text-cyan-300 transition-colors duration-200",children:"Terms"}),e.jsx(j,{to:"/refund",className:"inline-flex items-center min-h-[44px] px-1 hover:text-cyan-300 transition-colors duration-200",children:"Refund"}),e.jsx(j,{to:"/license",className:"inline-flex items-center min-h-[44px] px-1 hover:text-cyan-300 transition-colors duration-200",children:"License"}),e.jsxs("a",{href:"/.well-known/security.txt",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-1 hover:text-cyan-300 transition-colors duration-200",children:["Security",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]})]})]})]})}),e.jsx("div",{className:"bg-[#050b14]",children:e.jsx("div",{className:"section-padding py-4",children:e.jsxs("div",{className:"max-w-7xl mx-auto text-xs text-muted-foreground/70 text-center md:text-left",children:["© 2026 QECTOR Lab / iD01t Productions. All rights reserved.",e.jsx("div",{className:"mt-1",children:"Éditeur : Guillaume Lessard, entrepreneur individuel (iD01t Productions), 2004 De Lorimier, Longueuil, QC J4K 3H7, Canada · admin@qector.store"})]})})})]})}function ve({children:n}){const s=z();return c.useEffect(()=>{window.scrollTo(0,0),document.documentElement.lang=s.pathname.startsWith("/fr/")?"fr":"en",document.getElementById("main-content")?.focus();const i=window.matchMedia("(prefers-reduced-motion: reduce)").matches,t=(h=document)=>{h.querySelectorAll(".card-surface:not(.revealed), .prose:not(.revealed)").forEach(p=>{i?p.classList.add("revealed"):l.observe(p)})},l=new IntersectionObserver(h=>{h.forEach(p=>{p.isIntersecting&&(p.target.classList.add("revealed"),l.unobserve(p.target))})},{threshold:.1,rootMargin:"0px 0px -10% 0px"});let d=null;return i||(d=new MutationObserver(h=>{h.forEach(p=>{p.addedNodes.forEach(u=>{u.nodeType===Node.ELEMENT_NODE&&t(u)})})}),d.observe(document.body,{childList:!0,subtree:!0})),t(),()=>{l.disconnect(),d&&d.disconnect()}},[s.pathname]),e.jsxs("div",{className:"min-h-screen bg-void text-foreground quantum-grid-bg relative",children:[e.jsx("a",{href:"#main-content",className:"sr-only focus:not-sr-only focus:fixed focus:top-4 focus:left-4 focus:z-[100] focus:px-4 focus:py-2 focus:bg-cyan-300 focus:text-void focus:font-semibold focus:rounded-lg",children:s.pathname.startsWith("/fr/")?"Aller au contenu principal":"Skip to main content"}),e.jsx(ue,{}),e.jsx("main",{id:"main-content",tabIndex:-1,className:"pt-20 outline-none",children:n}),e.jsx(je,{})]})}class Ne extends c.Component{state={hasError:!1};static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(s,i){console.error("QECTOR site error boundary caught:",s,i.componentStack)}handleReload=()=>{this.setState({hasError:!1}),window.location.href="/"};render(){return this.state.hasError?e.jsx("div",{className:"min-h-screen flex items-center justify-center bg-void px-6",children:e.jsxs("div",{className:"max-w-md text-center card-surface",children:[e.jsx("div",{className:"w-12 h-12 rounded-full bg-cyan-300/10 border border-cyan-300/20 flex items-center justify-center mx-auto mb-4 text-cyan-300 text-xl",children:"!"}),e.jsx("h1",{className:"text-xl font-bold text-primary mb-2",children:"Something went wrong"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"This page hit an unexpected error. No page data was sent; check the browser console for the local error and reload."}),e.jsx("button",{onClick:this.handleReload,className:"btn-cyan",children:"Reload homepage"})]})}):this.props.children}}function we(){return e.jsx("div",{className:"min-h-[60vh] flex items-center justify-center",role:"status","aria-live":"polite",children:e.jsxs("div",{className:"flex flex-col items-center gap-3",children:[e.jsx("div",{className:"w-8 h-8 border-2 border-cyan-300/20 border-t-cyan-300 rounded-full animate-spin"}),e.jsx("span",{className:"sr-only",children:"Loading page…"})]})})}const Ee={en:"en_US",fr:"fr_FR"};function ke({title:n="QECTOR · Quantum Error Correction Decoding for Python",description:s="QECTOR Decoder v3 - Rust-core Python quantum error correction decoder. v1.0.0 first stable release with API stability tiers, a qector CLI, and a reproducible benchmark harness (qector bench) for measuring on your own hardware.",ogImage:i=D.ogImage,noindex:t=!1,lang:l="en",alternates:d}){const h=z(),p=`https://qector.store${h.pathname==="/"?"/":`${h.pathname.replace(/\/$/,"")}/`}`;return c.useEffect(()=>{document.title=n,document.documentElement.lang=l;const u=(N,E)=>{let P=document.querySelector(N);if(!P){P=document.createElement("meta");const L=N.includes("property=")?"property":"name",R=N.match(/"([^"]+)"/)?.[1]||"";P.setAttribute(L,R),document.head.appendChild(P)}P.content=E};u('meta[name="description"]',s),u('meta[name="robots"]',t?"noindex, follow":"index, follow, max-image-preview:large"),u('meta[property="og:title"]',n),u('meta[property="og:description"]',s),u('meta[property="og:url"]',p),u('meta[property="og:type"]',"website"),u('meta[property="og:locale"]',Ee[l]??"en_US"),u('meta[property="og:image"]',i),u('meta[property="og:image:alt"]',"QECTOR official logo"),u('meta[property="og:site_name"]',"QECTOR"),u('meta[name="twitter:card"]',"summary_large_image"),u('meta[name="twitter:title"]',n),u('meta[name="twitter:description"]',s),u('meta[name="twitter:image"]',i),u('meta[name="twitter:image:alt"]',"QECTOR official logo"),u('meta[name="twitter:site"]',"@DJiD01T"),u('meta[name="theme-color"]',"#24e7ff");let x=document.querySelector('link[rel="canonical"]');x||(x=document.createElement("link"),x.rel="canonical",document.head.appendChild(x)),x.href=p,document.querySelectorAll('link[rel="alternate"][hreflang]').forEach(N=>N.remove());const _=[];for(const N of d??[]){const E=document.createElement("link");E.rel="alternate",E.hreflang=N.lang,E.href=N.href,document.head.appendChild(E),_.push(E)}return()=>{_.forEach(N=>N.remove())}},[n,s,p,i,t,l,d]),null}function _e({data:n}){const s="json-ld-data";return c.useEffect(()=>{let i=document.getElementById(s);return i||(i=document.createElement("script"),i.id=s,i.type="application/ld+json",document.head.appendChild(i)),i.textContent=JSON.stringify(n),()=>{const t=document.getElementById(s);t&&t.remove()}},[n]),null}function Ce({icon:n,label:s,href:i,variant:t="default",className:l=""}){const d=t==="gold"?"bg-gold-400/10 border border-gold-400/30 text-gold-400 hover:bg-gold-400/20":"bg-surface border border-gridline text-secondary hover:text-cyan-300 hover:border-cyan-300/30";return e.jsxs("a",{href:i,target:"_blank",rel:"noopener noreferrer",className:`inline-flex items-center gap-2 px-4 py-2.5 rounded-full text-sm transition-all duration-300 ${d} ${l}`,children:[e.jsx("span",{"aria-hidden":"true",children:n}),e.jsx("span",{children:s})]})}function F({eyebrow:n,heading:s,description:i,align:t="center",maxWidth:l="max-w-3xl",className:d=""}){const h=t==="center"?"text-center mx-auto":"text-left",p=t==="center"?"mx-auto":"";return e.jsxs("div",{className:`${l} ${h} mb-12 md:mb-16 ${d}`,children:[n&&e.jsx("span",{className:"eyebrow-pill mb-4",children:n}),e.jsx("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight text-balance mb-4",children:s}),i&&e.jsx("p",{className:`text-secondary text-lg leading-relaxed text-pretty max-w-prose ${p}`,children:i})]})}const Pe={cyan:"bg-cyan-300/10 text-cyan-300 border border-cyan-300/20",green:"bg-green-400/10 text-green-400 border border-green-400/20",purple:"bg-purple-400/10 text-purple-400 border border-purple-400/20",gold:"bg-gold-400/10 text-gold-400 border border-gold-400/20"};function Le({title:n,tag:s,badge:i,desc:t,proof:l,muted:d=!1,className:h=""}){return e.jsxs("div",{className:`card-surface group ${d?"border-gridline/50 opacity-80":""} ${h}`,children:[s&&e.jsx("div",{className:"text-muted-foreground text-xs font-mono uppercase tracking-wider mb-2",children:s}),e.jsxs("div",{className:"flex items-center justify-between gap-3 mb-3",children:[e.jsx("h3",{className:`font-semibold text-lg transition-colors ${d?"text-gold-400/80":"text-cyan-300 group-hover:text-cyan-200"}`,children:n}),i&&e.jsx("span",{className:`shrink-0 px-2.5 py-1 rounded-full text-xs font-medium ${d?"bg-gold-400/5 text-gold-400/60 border border-gold-400/20":Pe[i.color]}`,children:i.label})]}),e.jsx("p",{className:`leading-relaxed ${d?"text-muted-foreground text-sm":"text-secondary"}`,children:t}),l&&e.jsxs("div",{className:"mt-4 pt-4 border-t border-gridline/60 flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"text-green-400",children:"✓"}),e.jsx("span",{className:"text-muted-foreground font-mono",children:l})]})]})}function Re({title:n,statement:s,href:i,linkLabel:t="View evidence →",className:l=""}){return e.jsxs("div",{className:`relative rounded-2xl border border-cyan-300/20 bg-void p-6 overflow-hidden ${l}`,children:[e.jsx("div",{className:"absolute inset-0 pointer-events-none bg-gradient-to-br from-cyan-300/5 to-transparent"}),e.jsxs("div",{className:"relative z-10",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300"}),e.jsx("span",{className:"text-xs font-mono uppercase tracking-wider text-cyan-300",children:n})]}),e.jsx("p",{className:"text-secondary leading-relaxed mb-4",children:s}),i&&e.jsx("a",{href:i,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm font-medium hover:underline underline-offset-4",children:t})]})]})}function Se(){const[n,s]=c.useState({}),[i,t]=c.useState({}),[l,d]=c.useState(!1),[h,p]=c.useState(!1),u=c.useMemo(()=>{const a=[];for(let r=0;r<3;r++)for(let o=0;o<3;o++)a.push({id:`${r}_${o}`,r,c:o,x:120+o*100,y:60+r*100});return a},[]),x=c.useMemo(()=>{const a=[];for(let r=0;r<3;r++)a.push({id:`L_${r}`,type:"L",r,c:-1,x1:30,y1:60+r*100,x2:120,y2:60+r*100});for(let r=0;r<3;r++)a.push({id:`R_${r}`,type:"R",r,c:3,x1:320,y1:60+r*100,x2:410,y2:60+r*100});for(let r=0;r<3;r++)for(let o=0;o<2;o++)a.push({id:`H_${r}_${o}`,type:"H",r,c:o,x1:120+o*100,y1:60+r*100,x2:120+(o+1)*100,y2:60+r*100});for(let r=0;r<2;r++)for(let o=0;o<3;o++)a.push({id:`V_${r}_${o}`,type:"V",r,c:o,x1:120+o*100,y1:60+r*100,x2:120+o*100,y2:60+(r+1)*100});return a},[]),_=c.useMemo(()=>{const a={},r=o=>{a[o]=!a[o]};return x.forEach(o=>{n[o.id]&&(o.type==="H"?(r(`${o.r}_${o.c}`),r(`${o.r}_${o.c+1}`)):o.type==="V"?(r(`${o.r}_${o.c}`),r(`${o.r+1}_${o.c}`)):o.type==="L"?r(`${o.r}_0`):o.type==="R"&&r(`${o.r}_2`))}),Object.keys(a).forEach(o=>{a[o]||delete a[o]}),a},[n,x]),N=a=>{t({}),d(!1),s(r=>({...r,[a]:!r[a]}))},E=()=>{s({}),t({}),d(!1)},P=(a=.2)=>{t({}),d(!1);const r={};x.forEach(o=>{Math.random()Math.abs(a.r-r.r)+Math.abs(a.c-r.c),R=c.useCallback((a,r)=>{const o=[],k=Math.min(a.r,r.r),g=Math.max(a.r,r.r),w=a.r{const a=Object.keys(_).map(g=>{const[w,m]=g.split("_").map(Number);return u.find(y=>y.r===w&&y.c===m)});if(a.length===0){t({}),d(!0);return}const r=g=>{if(g.length===0)return{cost:0,pairs:[]};const w=g[0],m=g.slice(1);let y=1/0,v=[];const C=w.c+1,T=r(m);C+T.costK!==S),q=r(J);W+q.cost{if(g==="L"||g==="R"||w==="L"||w==="R"){const m=g==="L"||g==="R"?w:g;if((g==="L"||g==="R"?g:w)==="L"){for(let v=0;v{k[y]=!0})}),t(k),d(!0)},[_,u,R]),Y=c.useMemo(()=>{if(!l)return"idle";const a=x.filter(m=>{const y=n[m.id]||!1,v=i[m.id]||!1;return y!==v}),r={},o=(m,y)=>{r[m]||(r[m]=[]),r[y]||(r[y]=[]),r[m].push(y),r[y].push(m)};a.forEach(m=>{m.type==="H"?o(`${m.r}_${m.c}`,`${m.r}_${m.c+1}`):m.type==="V"?o(`${m.r}_${m.c}`,`${m.r+1}_${m.c}`):m.type==="L"?o("L",`${m.r}_0`):m.type==="R"&&o("R",`${m.r}_2`)});const k={},g=["L"];k.L=!0;let w=!1;for(;g.length>0;){const m=g.shift();if(m==="R"){w=!0;break}(r[m]||[]).forEach(v=>{k[v]||(k[v]=!0,g.push(v))})}return w?"failure":"success"},[l,n,i,x]);return e.jsxs("div",{className:"flex flex-col gap-4 border border-gridline bg-surface/30 rounded-2xl p-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsxs("h4",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider flex items-center gap-1.5",children:[e.jsx(Q,{className:"w-4 h-4"}),"Interactive QEC Simulator"]}),e.jsx("p",{className:"text-muted-foreground text-xs mt-0.5",children:"Planar stabilizer code (d=3). Click edges to toggle physical errors."})]}),e.jsx("button",{onClick:()=>p(!h),className:"min-h-[44px] min-w-[44px] inline-flex items-center justify-center text-secondary hover:text-cyan-300 transition-colors","aria-label":"Toggle help",children:e.jsx(te,{className:"w-5 h-5"})})]}),h&&e.jsxs("div",{className:"p-4 bg-void/80 border border-gridline rounded-xl text-xs text-secondary leading-relaxed space-y-2",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"How to play:"})," Click on the links (grey/red lines) to inject physical errors. Red lines represent errors."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Syndromes:"})," Grid nodes measure checks. When adjacent errors are odd, a check triggers (lights up orange)."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Decoder:"})," Minimum Weight Perfect Matching (MWPM) matches active checks. When you click ",e.jsx("span",{className:"text-cyan-300",children:"Run Decoder"}),", it draws matching correction paths in cyan."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Success condition:"})," If error + correction paths do not form a logical connection across boundaries (from left to right), the state is successfully corrected!"]})]}),e.jsxs("div",{className:"bg-void/50 border border-gridline rounded-xl flex items-center justify-center p-4 relative overflow-hidden",children:[e.jsxs("svg",{viewBox:"0 0 440 320",className:"w-full max-w-[440px] h-auto select-none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsxs("defs",{children:[e.jsxs("radialGradient",{id:"activeNodeGlow",cx:"50%",cy:"50%",r:"50%",children:[e.jsx("stop",{offset:"0%",stopColor:"#fef08a"}),e.jsx("stop",{offset:"60%",stopColor:"#eab308"}),e.jsx("stop",{offset:"100%",stopColor:"#a16207"})]}),e.jsxs("linearGradient",{id:"inactiveNodeGlow",x1:"0",y1:"0",x2:"1",y2:"1",children:[e.jsx("stop",{offset:"0%",stopColor:"#1e293b"}),e.jsx("stop",{offset:"100%",stopColor:"#0f172a"})]}),e.jsx("pattern",{id:"gridDots",width:"20",height:"20",patternUnits:"userSpaceOnUse",children:e.jsx("circle",{cx:"2",cy:"2",r:"1",fill:"#1e293b",fillOpacity:"0.6"})})]}),e.jsx("rect",{width:"440",height:"320",fill:"url(#gridDots)",rx:"10"}),e.jsx("line",{x1:"30",y1:"30",x2:"30",y2:"290",stroke:"#475569",strokeWidth:"3",strokeDasharray:"4 4"}),e.jsx("text",{x:"20",y:"165",fill:"#475569",fontSize:"10",textAnchor:"middle",transform:"rotate(-90, 20, 165)",className:"font-mono",children:"LEFT BOUNDARY"}),e.jsx("line",{x1:"410",y1:"30",x2:"410",y2:"290",stroke:"#475569",strokeWidth:"3",strokeDasharray:"4 4"}),e.jsx("text",{x:"420",y:"165",fill:"#475569",fontSize:"10",textAnchor:"middle",transform:"rotate(90, 420, 165)",className:"font-mono",children:"RIGHT BOUNDARY"}),x.map(a=>{const r=n[a.id]||!1,o=i[a.id]||!1;let k="#334155";return r&&o?k="#e2e8f0":r?k="#ef4444":o&&(k="#06b6d4"),e.jsxs("g",{className:"group",children:[e.jsx("line",{x1:a.x1,y1:a.y1,x2:a.x2,y2:a.y2,stroke:"transparent",strokeWidth:"16",className:"cursor-pointer",tabIndex:0,role:"checkbox","aria-checked":r,"aria-label":`Toggle error on qubit edge ${a.id}`,onClick:()=>N(a.id),onKeyDown:g=>{(g.key==="Enter"||g.key===" ")&&(g.preventDefault(),N(a.id))}}),e.jsx("line",{x1:a.x1,y1:a.y1,x2:a.x2,y2:a.y2,stroke:k,strokeWidth:r||o?4:2,className:"transition-colors duration-200 pointer-events-none group-hover:stroke-cyan-300/40",style:{filter:r?"drop-shadow(0 0 4px rgba(239, 68, 68, 0.4))":o?"drop-shadow(0 0 4px rgba(6, 182, 212, 0.4))":"none"}}),e.jsx("circle",{cx:(a.x1+a.x2)/2,cy:(a.y1+a.y2)/2,r:"5",fill:r?"#ef4444":o?"#06b6d4":"#1e293b",stroke:r||o?"#e2e8f0":"#475569",strokeWidth:"1.5",className:"transition-colors duration-200 pointer-events-none group-hover:fill-cyan-300 group-hover:stroke-cyan-200"})]},a.id)}),u.map(a=>{const r=_[a.id]||!1;return e.jsxs("g",{children:[r&&e.jsx("circle",{cx:a.x,cy:a.y,r:"18",fill:"rgba(251, 191, 36, 0.15)",className:"animate-pulse"}),e.jsx("circle",{cx:a.x,cy:a.y,r:r?12:9,fill:r?"url(#activeNodeGlow)":"url(#inactiveNodeGlow)",stroke:r?"#fbbf24":"#334155",strokeWidth:r?2:1.5,className:"transition-all duration-300 pointer-events-none",style:{filter:r?"drop-shadow(0 0 10px rgba(251, 191, 36, 0.7))":"none"}}),e.jsx("circle",{cx:a.x-(r?3:2),cy:a.y-(r?3:2),r:r?3:2,fill:"white",fillOpacity:"0.25",className:"pointer-events-none"}),r&&e.jsx("circle",{cx:a.x,cy:a.y,r:20,fill:"transparent",stroke:"#fbbf24",strokeWidth:"1",strokeOpacity:"0.4",className:"animate-ping"}),e.jsx("text",{x:a.x,y:a.y+3,textAnchor:"middle",fill:r?"#020617":"#94a3b8",fontSize:"9",fontWeight:"bold",className:"font-mono text-[9px] pointer-events-none",children:r?"!":"S"})]},a.id)})]}),l&&e.jsxs("div",{className:"absolute bottom-3 left-3 right-3 flex items-center justify-between p-3 bg-surface/90 border border-gridline rounded-xl backdrop-blur-md transition-all duration-300",children:[Y==="success"?e.jsxs("div",{className:"flex items-center gap-2 text-green-400 text-sm font-semibold",children:[e.jsx(re,{className:"w-5 h-5"}),e.jsx("span",{children:"SUCCESS: Errors resolved"})]}):e.jsxs("div",{className:"flex items-center gap-2 text-red-400 text-sm font-semibold",children:[e.jsx(se,{className:"w-5 h-5"}),e.jsx("span",{children:"LOGICAL ERROR: Correction failed"})]}),e.jsx("div",{className:"text-[10px] text-muted-foreground font-mono",children:"d=3 code slice"})]})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[e.jsxs("button",{onClick:()=>P(.2),className:"px-3 py-3 bg-surface hover:bg-white/5 border border-gridline rounded-lg text-xs font-semibold text-secondary hover:text-primary transition-all flex items-center justify-center gap-1.5",children:[e.jsx(Q,{className:"w-3.5 h-3.5"}),"Inject Errors"]}),e.jsxs("button",{onClick:U,disabled:Object.keys(_).length===0,className:"px-3 py-3 bg-cyan-300 disabled:bg-cyan-300/20 disabled:text-void/40 hover:bg-cyan-200 text-void rounded-lg text-xs font-bold transition-all flex items-center justify-center gap-1.5",children:[e.jsx(ae,{className:`w-3.5 h-3.5 ${l?"":"animate-spin"}`}),"Run Decoder"]}),e.jsx("button",{onClick:E,className:"px-3 py-3 bg-surface hover:bg-red-950/20 border border-gridline hover:border-red-900/30 rounded-lg text-xs font-semibold text-secondary hover:text-red-400 transition-all",children:"Reset Graph"})]})]})}function Oe({code:n,language:s="python",filename:i,className:t=""}){const[l,d]=c.useState(!1),h=async()=>{try{await navigator.clipboard.writeText(n),d(!0),setTimeout(()=>d(!1),2e3)}catch(p){console.error("Failed to copy text: ",p)}};return e.jsxs("div",{className:`my-4 border border-gridline rounded-xl overflow-hidden bg-void/50 ${t}`,children:[i&&e.jsxs("div",{className:"flex items-center justify-between px-4 py-2 border-b border-gridline bg-surface/50 text-xs font-mono text-muted-foreground",children:[e.jsx("span",{children:i}),e.jsx("span",{className:"uppercase text-[10px] bg-cyan-300/10 text-cyan-300 px-1.5 py-0.5 rounded border border-cyan-300/20",children:s})]}),e.jsxs("div",{className:"relative group",children:[e.jsx("pre",{className:"p-4 pr-14 overflow-x-auto overflow-y-auto font-mono text-sm leading-relaxed text-secondary bg-void/30 max-h-[400px]",children:e.jsx("code",{className:`language-${s}`,children:n})}),e.jsx("button",{onClick:h,className:"absolute top-3 right-3 p-1.5 bg-surface border border-gridline rounded-lg text-secondary hover:text-cyan-300 hover:border-cyan-300/30 opacity-0 group-hover:opacity-100 focus:opacity-100 max-sm:opacity-100 transition-all duration-200","aria-label":l?"Copied":"Copy code",children:l?e.jsx(ne,{className:"w-4 h-4 text-green-400"}):e.jsx(oe,{className:"w-4 h-4"})}),e.jsx("span",{className:"sr-only","aria-live":"polite",children:l?"Code copied to clipboard":""})]})]})}$.registerPlugin(me);function O({value:n,label:s}){return e.jsxs("div",{className:"text-center px-4 py-3",children:[e.jsx("div",{className:"text-2xl font-bold text-cyan-300",children:n}),e.jsx("div",{className:"text-xs text-muted-foreground leading-tight max-w-[11rem] mx-auto",children:s})]})}function De(){const n=c.useRef([]),{version:s}=H();c.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const t=document.createElement("script");t.src="https://js.stripe.com/v3/buy-button.js",t.async=!0,document.body.appendChild(t);const l=$.context(()=>{n.current.filter(Boolean).forEach(h=>{$.fromTo(h,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power2.out",scrollTrigger:{trigger:h,start:"top 85%",once:!0}})})});return()=>{l.revert(),t.parentNode===document.body&&document.body.removeChild(t)}},[]);const i=(t,l)=>{t&&(n.current[l]=t)};return e.jsxs(e.Fragment,{children:[e.jsx(ke,{title:"QECTOR · Quantum Error Correction Decoding for Python",description:"QECTOR Decoder v3 - Rust-core Python library with 17 concrete decoder configurations plus 2 Workbench routing kinds, a syndrome-faithful contract, and reproducible validation guidance."}),e.jsx(_e,{data:{"@context":"https://schema.org","@graph":[{"@type":"SoftwareApplication",name:"QECTOR Decoder v3",description:"QECTOR Decoder v3 is the qector-decoder-v3 1.0.0 Rust/Python quantum error correction package with 17 concrete decoder configurations plus 2 Workbench routing kinds, offline Ed25519 licensing, and reproducible validation guidance.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",programmingLanguage:"Python",url:"https://qector.store/",downloadUrl:"https://pypi.org/project/qector-decoder-v3/",softwareVersion:s,author:{"@type":"Person",name:"Guillaume Lessard",url:"https://github.com/GuillaumeLessard"},maintainer:{"@type":"Organization",name:"iD01t Productions"},identifier:"https://pypi.org/project/qector-decoder-v3/",license:"https://qector.store/license/",offers:{"@type":"Offer",price:"0",priceCurrency:"USD",availability:"https://schema.org/InStock"}},{"@type":"Organization",name:"QECTOR",url:"https://qector.store/",logo:"https://qector.store/images/logo.png",email:"admin@qector.store",founder:{"@type":"Person",name:"Guillaume Lessard",identifier:"0009-0000-3465-3753"},address:{"@type":"PostalAddress",addressLocality:"Longueuil",addressRegion:"QC",postalCode:"J4K 3H7",addressCountry:"CA"},sameAs:["https://github.com/GuillaumeLessard/qector-decoder","https://pypi.org/project/qector-decoder-v3/","https://github.com/GuillaumeLessard/qector-claude-plugin","https://orcid.org/0009-0000-3465-3753"]}]}}),e.jsxs("section",{className:"relative min-h-screen flex items-center justify-center overflow-hidden","aria-label":"QECTOR hero",children:[e.jsx("img",{src:"/images/hero-bg.webp",alt:"","aria-hidden":"true",fetchPriority:"high",className:"absolute inset-0 w-full h-full object-cover z-0",style:{filter:"brightness(0.45) saturate(1.1)"}}),e.jsx("noscript",{children:e.jsx("img",{src:"/images/og-banner.png",alt:"","aria-hidden":"true",className:"absolute inset-0 w-full h-full object-cover z-0",style:{filter:"brightness(0.4)"}})}),e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-void/60 via-void/25 to-void z-[1]"}),e.jsx("div",{className:"absolute inset-0 bg-gradient-to-r from-cyan-500/[0.04] to-transparent z-[1]"}),e.jsxs("div",{className:"relative z-10 w-full min-w-0 text-center max-w-5xl mx-auto px-6 pt-24 pb-20",children:[e.jsxs(j,{to:"/changelog",className:"inline-flex max-w-full flex-wrap items-center justify-center gap-2 px-4 py-2 bg-surface/70 border border-cyan-300/20 rounded-full text-center text-xs leading-relaxed text-cyan-300 hover:bg-cyan-300/10 transition-all mb-8 backdrop-blur-sm",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-green-400 animate-pulse-dot"}),e.jsxs("span",{children:["v",s," · First Stable Release · Changelog →"]})]}),e.jsxs("h1",{className:"max-w-4xl mx-auto break-words text-3xl sm:text-5xl md:text-6xl lg:text-7xl font-extrabold tracking-tight leading-[1.05] mb-6",style:{textShadow:"0 4px 32px rgba(0,0,0,0.9)"},children:[e.jsx("span",{className:"text-transparent bg-clip-text bg-gradient-to-r from-cyan-300 to-cyan-400",children:"QEC Decoding"})," ","for Python"]}),e.jsxs("p",{className:"text-base sm:text-lg md:text-xl text-secondary/90 max-w-3xl mx-auto mb-5 leading-relaxed break-words",style:{textShadow:"0 2px 16px rgba(0,0,0,0.8)"},children:["The v1.0.0 runtime ships 17 concrete decoder configurations, while Workbench v1.0.7 names 19 kinds in total: those configurations plus AutoDecoder and Auto Router orchestration entries."," ",e.jsx("span",{className:"text-primary font-semibold",children:"v1.0.0 is the first stable release:"})," API stability tiers, Relay-BP, CS-OSD, Sinter/qiskit entry points and the qector CLI."]}),e.jsx("p",{className:"text-sm text-muted-foreground max-w-2xl mx-auto mb-10 leading-relaxed",style:{textShadow:"0 2px 12px rgba(0,0,0,0.8)"},children:"Local measurement tools are documented for declared workloads; this site publishes no universal performance figures. Claim boundaries and verification paths are published with the product documentation."}),e.jsxs("div",{className:"flex flex-col sm:flex-row flex-wrap gap-3 sm:gap-4 justify-center items-stretch sm:items-center mb-10",children:[e.jsx(j,{to:"/pricing",className:"btn-gold px-8 py-4 text-sm sm:text-base font-bold w-full sm:w-auto",children:"Start $499 Evaluation →"}),e.jsx(j,{to:"/decoder",className:"btn-cyan px-8 py-4 text-sm sm:text-base w-full sm:w-auto",children:"Explore the Decoder"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-windows/releases/latest",className:"btn-outline px-8 py-4 text-sm sm:text-base w-full sm:w-auto",target:"_blank",rel:"noopener noreferrer",children:"Free Workbench GUI"})]}),e.jsx("div",{className:"max-w-2xl mx-auto mb-10 text-left",children:e.jsx(Oe,{language:"bash",filename:"Quick start",code:`pip install qector-decoder-v3==${s} -python -c "from qector_decoder_v3 import BlossomDecoder; print('QECTOR OK')"`})}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 md:divide-x md:divide-white/5 border-t border-white/5 pt-6 max-w-2xl mx-auto",children:[e.jsx(O,{value:"19",label:"Workbench Kinds (17 + 2 routing)"}),e.jsx(O,{value:"GF(2)",label:"Faithfulness Contract"}),e.jsx(O,{value:"CPU + GPU",label:"Optional Execution Paths"}),e.jsx(O,{value:"Open",label:"Evidence Policy"})]}),e.jsxs("div",{className:"max-w-2xl mx-auto mt-10 p-5 md:p-6 bg-surface/50 border border-cyan-300/20 rounded-2xl text-center shadow-lg backdrop-blur-sm",children:[e.jsx("div",{className:"text-[10px] text-cyan-300 font-semibold tracking-[0.2em] mb-2 uppercase",children:"Evidence policy"}),e.jsx("div",{className:"text-lg md:text-xl font-bold text-primary tracking-tight mb-2",children:"No hardware-specific results published"}),e.jsxs("p",{className:"text-xs text-muted-foreground leading-relaxed max-w-lg mx-auto",children:["QECTOR publishes contracts, methodology, and artifacts rather than portable speed numbers. Read the ",e.jsx(j,{to:"/evidence",className:"link-accent",children:"evidence policy"})," before generating a local measurement."]})]})]})]}),e.jsx("section",{className:"section-band bg-surface/20 border-y border-gridline",children:e.jsxs("div",{className:"section-padding max-w-6xl mx-auto",children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("span",{className:"eyebrow-pill-gold mb-4",children:"Release Assurance"}),e.jsx("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight",children:"A Clear Path From Code to Evidence"}),e.jsx("p",{className:"text-secondary text-lg max-w-2xl mx-auto mt-3",children:"The public release, validation contract, and commercial delivery path are explicit by design."})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-5",children:[e.jsxs("div",{className:"card-surface p-6 border-cyan-300/20",children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-3",children:"Current Runtime"}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:"qector-decoder-v3 1.0.0"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"The live PyPI release supports Python 3.9 through 3.13 with 15 binary wheels across Windows, Linux, and macOS."})]}),e.jsxs("div",{className:"card-surface p-6 border-cyan-300/20",children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-3",children:"Evidence Contract"}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:"Correctness before speed"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Every correction is checked against H c = s (mod 2). Measurements stay workload-scoped, artifact-hashed, and separate from universal performance claims."})]}),e.jsxs("div",{className:"card-surface p-6 border-gold-400/20",children:[e.jsx("div",{className:"text-gold-400 font-mono text-xs uppercase tracking-wider mb-3",children:"Secure Delivery"}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:"Signed, traceable licensing"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Commercial fulfillment requires a live Stripe event, issues a v2 Ed25519 token, and records independent billing and license delivery states."}),e.jsx(j,{to:"/license",className:"inline-block text-gold-400 text-sm font-medium hover:underline mt-3",children:"Read the license activation procedure →"})]})]}),e.jsxs("div",{className:"mt-8 card-surface p-6 border-cyan-300/20",children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-3",children:"Evidence Registry"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 text-sm",children:[e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21941046",target:"_blank",rel:"noopener noreferrer",className:"text-secondary hover:text-cyan-300 transition-colors",children:[e.jsx("span",{className:"block text-primary font-semibold",children:"Normative reference manual"}),e.jsx("span",{className:"font-mono text-xs",children:"10.5281/zenodo.21941046"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21611214",target:"_blank",rel:"noopener noreferrer",className:"text-secondary hover:text-cyan-300 transition-colors",children:[e.jsx("span",{className:"block text-primary font-semibold",children:"v1.0.0 user manual"}),e.jsx("span",{className:"font-mono text-xs",children:"10.5281/zenodo.21611214"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.22046403",target:"_blank",rel:"noopener noreferrer",className:"text-secondary hover:text-cyan-300 transition-colors",children:[e.jsx("span",{className:"block text-primary font-semibold",children:"Verification and proof bundle"}),e.jsx("span",{className:"font-mono text-xs",children:"10.5281/zenodo.22046403"})]})]})]})]})}),e.jsx("section",{className:"section-thin border-t border-b border-gridline/30 bg-void/80",children:e.jsx("div",{className:"section-padding",children:e.jsxs("div",{className:"max-w-5xl mx-auto text-center",children:[e.jsx("p",{className:"text-xs text-muted-foreground uppercase tracking-widest mb-8",children:"Works with your existing stack"}),e.jsxs("div",{className:"flex flex-wrap justify-center items-center gap-x-12 gap-y-8",children:[e.jsxs("div",{className:"flex flex-col items-center gap-3",children:[e.jsx("span",{className:"text-2xl font-bold tracking-tight text-white/90",children:"Stim"}),e.jsx("code",{className:"text-xs bg-surface border border-gridline px-2 py-1 rounded text-muted-foreground font-mono",children:"pip install stim"})]}),e.jsxs("div",{className:"flex flex-col items-center gap-3",children:[e.jsx("span",{className:"text-2xl font-bold tracking-tight text-white/90",children:"Sinter"}),e.jsx("code",{className:"text-xs bg-surface border border-gridline px-2 py-1 rounded text-muted-foreground font-mono",children:"pip install sinter"})]}),e.jsxs("div",{className:"flex flex-col items-center gap-3",children:[e.jsx("span",{className:"text-2xl font-bold tracking-tight text-white/90",children:"Qiskit"}),e.jsx("code",{className:"text-xs bg-surface border border-gridline px-2 py-1 rounded text-muted-foreground font-mono",children:"pip install qiskit-qec"})]})]})]})})}),e.jsx("section",{ref:t=>i(t,0),className:"py-8 bg-void",children:e.jsx("div",{className:"section-padding",children:e.jsx("div",{className:"max-w-7xl mx-auto flex flex-wrap justify-center gap-3",children:[{icon:e.jsx(ie,{size:16}),label:"Artifacts (GitHub)",href:"https://github.com/GuillaumeLessard/qector-decoder"},{icon:e.jsx(le,{size:16}),label:"Mastering QEC · Google Play",href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",gold:!0},{icon:e.jsx(ce,{size:16}),label:`PyPI Wheel v${s}`,href:"https://pypi.org/project/qector-decoder-v3/"},{icon:e.jsx(de,{size:16}),label:"Free Workbench App",href:"/workbench"},{icon:e.jsx(xe,{size:16}),label:"ORCID 0009-0000-3465-3753",href:"https://orcid.org/0009-0000-3465-3753"}].map(t=>e.jsx(Ce,{icon:t.icon,label:t.label,href:t.href,variant:t.gold?"gold":"default"},t.label))})})}),e.jsx("section",{className:"section-band bg-void border-y border-gridline",children:e.jsxs("div",{className:"section-padding max-w-6xl mx-auto",children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("span",{className:"eyebrow-pill mb-4",children:"Proof Suite"}),e.jsx("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight",children:"Executable Verification for v1.0.0"}),e.jsx("p",{className:"text-secondary text-lg max-w-2xl mx-auto mt-3",children:"Hashed-lock reproducible install, CERT_STRICT gate, and Lean/Coq kernel evidence - verifiable against Reference Manual v1.0.0."})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-5",children:[e.jsxs("div",{className:"card-surface p-6 border-cyan-300/20",children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-3",children:"Reproducible Install"}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:"Hashed-lock & CERT_STRICT"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Proof runs are hashed-locked and gated by CERT_STRICT - no universal benchmark figures, only workload-scoped artifacts."})]}),e.jsxs("div",{className:"card-surface p-6 border-cyan-300/20",children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-3",children:"Reference Manual v1.0.0"}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:"DOI 10.5281/zenodo.21941046"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Normative manual with syndrome-faithfulness foundations, 15 backends, and API stability tiers. All proofs trace to this document."})]}),e.jsxs("div",{className:"card-surface p-6 border-cyan-300/20",children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-3",children:"Lean/Coq Evidence"}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:"Kernel-checked proofs"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Executable suite checks GF(2) invariants and logical cosets with Lean/Coq kernels - evidence, not claims."})]})]}),e.jsxs("div",{className:"text-center mt-8",children:[e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-proof",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"View qector-proof on GitHub"}),e.jsx("span",{className:"text-muted-foreground text-xs ml-3",children:"github.com/GuillaumeLessard/qector-proof"})]})]})}),e.jsx("section",{className:"section-feature bg-surface/30 border-t border-gridline",children:e.jsxs("div",{className:"section-padding max-w-6xl mx-auto",children:[e.jsxs("div",{ref:t=>i(t,1),className:"text-center mb-14",children:[e.jsx("span",{className:"eyebrow-pill mb-4",children:"How It Works"}),e.jsx("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight",children:"From Installation to Validation"}),e.jsx("p",{className:"text-secondary text-lg max-w-2xl mx-auto mt-3",children:"QECTOR integrates directly into your existing QEC workflow with minimal friction."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-8",children:[{step:"01",title:"Install",desc:"Install the v1.0.0 wheel in a supported Python 3.9-3.13 environment alongside your existing Stim or PyMatching workflow.",detail:"pip install qector-decoder-v3==1.0.0",code:!0},{step:"02",title:"Decode",desc:"Access 17 concrete Rust-accelerated decoder configurations through a unified Python API. Workbench also exposes AutoDecoder and Auto Router as two orchestration kinds, for 19 named kinds in total.",detail:"from qector_decoder_v3 import BlossomDecoder, BpOsdDecoder",code:!0},{step:"03",title:"Validate",desc:"Claims are scoped to a declared workload and backed by SHA-256 sealed artifacts. Run qector-doctor before relying on optional paths and preserve the report with the result.",detail:"evidence policy · SHA-256 sealed",code:!1}].map(t=>e.jsxs("div",{className:"card-surface p-6 relative",children:[e.jsx("div",{className:"text-4xl font-black text-cyan-300/20 absolute top-4 right-4 select-none",children:t.step}),e.jsx("div",{className:"w-10 h-10 rounded-full bg-cyan-300/10 border border-cyan-300/20 flex items-center justify-center text-cyan-300 font-bold text-sm mb-4",children:t.step}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:t.title}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:t.desc}),t.code&&e.jsx("code",{className:"block text-xs bg-void border border-gridline rounded-lg px-3 py-2 text-cyan-300 font-mono overflow-x-auto",children:t.detail}),!t.code&&e.jsx("span",{className:"inline-flex items-center gap-1.5 text-xs text-cyan-300 font-mono bg-cyan-300/5 px-3 py-1.5 rounded-lg border border-cyan-300/10",children:t.detail})]},t.step))})]})}),e.jsxs("section",{id:"platform",className:"section-feature relative overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 pointer-events-none",style:{background:"radial-gradient(circle at center, rgba(103, 232, 249, 0.06) 0%, transparent 70%)"}}),e.jsx("div",{className:"section-padding relative z-10",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsx("div",{ref:t=>i(t,2),children:e.jsx(F,{eyebrow:"Why QECTOR",heading:"More Than Just MWPM",description:"QEC decoding is not one-size-fits-all. Surface codes, qLDPC codes, optional batch paths, and simulation workloads each demand different decoders. QECTOR documents the supported contracts and the evidence needed to evaluate a selected workload."})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[{title:"Blossom MWPM (Exact)",tag:"Blossom",desc:"Weight-optimal exact minimum-weight perfect matching for graph-like codes. The reference decoder for surface codes.",proof:"Exact optimal matching · Stim-native"},{title:"qLDPC Support",tag:"BP-OSD (qLDPC)",desc:"Matching decoders are restricted to graphlike structures. BP-OSD handles reachable arbitrary GF(2) check matrices, including LDPC and qLDPC workloads.",proof:"Hyperedge-safe GF(2) path"},{title:"Workload-Scoped Execution",tag:"Union-Find + Optional GPU",desc:"Union-Find and optional GPU batch paths are available for supported workloads. Availability and performance must be verified on the target environment.",proof:"Environment-dependent paths"},{title:"One Library, Pluggable",tag:"Stim · PyMatching · Sinter · Qiskit",desc:"Drop QECTOR into any existing Stim or PyMatching workflow. Same API surface, swappable backend. No vendor lock-in.",proof:"Drop-in, same API surface"}].map((t,l)=>e.jsx("div",{ref:d=>i(d,3+l),children:e.jsx(Le,{title:t.title,tag:t.tag,desc:t.desc,proof:t.proof})},t.title))})]})})]}),e.jsx("section",{id:"decoder-section",className:"section-feature bg-surface/50",children:e.jsx("div",{className:"section-padding",children:e.jsx("div",{className:"max-w-6xl mx-auto",children:e.jsxs("div",{ref:t=>i(t,7),className:"grid grid-cols-1 lg:grid-cols-2 gap-12 items-center",children:[e.jsxs("div",{children:[e.jsx("span",{className:"eyebrow-pill mb-4",children:"19 Workbench Kinds · 17 Concrete Configs"}),e.jsx("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-6",children:"Decoding Algorithms"}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed mb-8",children:"Union-Find, Fast Union-Find, Blossom MWPM, Sparse Blossom, Belief-Matching, BP-OSD, GPU Batch (CUDA/OpenCL), Hybrid, Predecoded, two-stage, ambiguity-cluster, colour-code, space-time, and other concrete paths are exposed through a consistent Python API. Workbench adds the two orchestration kinds, AutoDecoder and Auto Router, to make 19 named kinds."}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[{label:" v1.0.0 First Stable",desc:"API stability tiers, Relay-BP, CS-OSD, Sinter/qiskit entry points, qector CLI + qector-doctor."},{label:" 15 Binary Wheels",desc:"Python 3.9-3.13 across Windows amd64, Linux x86_64, and macOS arm64, released on PyPI."},{label:" GPU Batch Paths",desc:"CUDA and OpenCL batch paths are available for supported hardware and drivers; OpenCL via source build."},{label:" Reproducible Harness",desc:"qector bench ships with the package; measure on your own hardware, no universal figures claimed."}].map(t=>e.jsxs("div",{className:"p-4 bg-void/50 border border-gridline/50 rounded-xl",children:[e.jsx("div",{className:"text-cyan-300 font-semibold text-sm mb-1",children:t.label}),e.jsx("div",{className:"text-muted-foreground text-xs leading-relaxed",children:t.desc})]},t.label))}),e.jsxs("div",{className:"flex flex-wrap gap-3 mt-8",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",children:e.jsx("img",{src:"https://img.shields.io/pypi/v/qector-decoder-v3?style=flat-square&color=24e7ff",alt:"qector-decoder-v3 version on PyPI",loading:"lazy"})}),e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",children:e.jsx("img",{src:"https://img.shields.io/github/v/release/GuillaumeLessard/qector-decoder?style=flat-square&color=24e7ff",alt:"Latest qector-decoder release on GitHub",loading:"lazy"})}),e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",children:e.jsx("img",{src:"https://img.shields.io/badge/GitHub-Artifacts-blue?logo=github",alt:"GitHub release artifacts for QECTOR",loading:"lazy"})})]})]}),e.jsx("div",{ref:t=>i(t,8),className:"relative w-full",children:e.jsx(Se,{})})]})})})}),e.jsx("section",{className:"section-feature relative",children:e.jsx("div",{className:"section-padding relative z-10",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{ref:t=>i(t,9),children:[e.jsx(F,{eyebrow:"Performance",heading:"Measure on Your Own Hardware"}),e.jsx(Re,{title:"Reproducible Benchmark Harness",statement:"No universal benchmark figures are published on this site, because results depend on your hardware, drivers, and workloads. The qector bench harness ships with the package so you can measure logical error rates and throughput on your own machines.",href:"https://github.com/GuillaumeLessard/qector-decoder",linkLabel:"GitHub Artifacts →",className:"max-w-3xl mx-auto mb-6"})]}),e.jsx("div",{ref:t=>i(t,10),className:"max-w-3xl mx-auto",children:e.jsxs("div",{className:"p-5 bg-void/50 border border-gridline/50 rounded-xl font-mono text-xs text-muted-foreground leading-relaxed overflow-x-auto",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-cyan-300",children:"$"}),' pip install "qector-decoder-v3[bench]"']}),e.jsxs("div",{children:[e.jsx("span",{className:"text-cyan-300",children:"$"})," qector-doctor"]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-cyan-300",children:"$"})," qector bench -d 5 -r 5 -s 10000 --decoder blossom --noise 0.001"]}),e.jsx("div",{className:"text-green-400 mt-2",children:"✓ Logical error rates and throughput written as reproducible JSON"})]})}),e.jsx("div",{className:"text-center mt-8 flex flex-wrap justify-center gap-3",children:e.jsx(j,{to:"/evidence",className:"btn-outline",children:"Evidence & Reports"})})]})})}),e.jsx("section",{className:"section-band bg-surface/20 border-t border-gridline",children:e.jsxs("div",{className:"section-padding max-w-5xl mx-auto",children:[e.jsx("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight text-center mb-10",children:"Enterprise Compliance & Licensing"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsxs("div",{className:"card-surface border-cyan-300/20 bg-void/50 p-8 rounded-2xl relative overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-r from-cyan-300/5 to-transparent pointer-events-none"}),e.jsx("h3",{className:"text-lg font-bold text-cyan-300 flex items-center gap-2 mb-4",children:"License Clarity"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"The package is source-available under PolyForm Noncommercial 1.0.0 for community use. Commercial use, hosted services, and redistribution require the written scope described on the license and pricing pages."}),e.jsx(j,{to:"/commercial",className:"text-cyan-300 text-sm font-medium hover:underline",children:"Learn about licensing →"})]}),e.jsxs("div",{className:"card-surface border-gold-400/20 bg-void/50 p-8 rounded-2xl relative overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-r from-gold-400/5 to-transparent pointer-events-none"}),e.jsx("h3",{className:"text-lg font-bold text-gold-400 flex items-center gap-2 mb-4",children:"Start Your Evaluation"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"$499 for a 60-day commercial evaluation. Unlimited internal seats, all decoders, priority support, and full validation artifact access. 100% credit toward any annual license purchased within 90 days of your evaluation start."}),e.jsx(j,{to:"/pricing",className:"btn-gold text-sm",children:"View Pricing & Tiers →"})]})]})]})}),e.jsx("section",{id:"pricing-section",className:"section-feature bg-surface/50 border-t border-gridline",children:e.jsx("div",{className:"section-padding",children:e.jsxs("div",{className:"max-w-xl mx-auto text-center",children:[e.jsxs("div",{ref:t=>i(t,11),className:"mb-6",children:[e.jsx("span",{className:"eyebrow-pill mb-4",children:"Self-Serve · Instant Clearance"}),e.jsx("h2",{className:"text-3xl font-bold mb-3",children:"Commercial Evaluation License"}),e.jsx("p",{className:"text-secondary text-sm max-w-md mx-auto",children:"One-time payment · 60-day pilot · Fully creditable toward an annual license bought within 90 days"})]}),e.jsxs("div",{ref:t=>i(t,12),className:"card-surface border-cyan-300/35 neon-border-cyan relative overflow-hidden p-8 rounded-2xl bg-void/80 text-center",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 to-transparent pointer-events-none"}),e.jsxs("div",{className:"mb-6",children:[e.jsx("h3",{className:"text-4xl font-extrabold text-primary",children:"$499"}),e.jsx("p",{className:"text-muted-foreground text-xs mt-1",children:"Unlimited internal seats · All decoders · Priority support"})]}),e.jsx("div",{className:"flex justify-center mb-6",children:e.jsxs("a",{href:"https://buy.stripe.com/6oU00l77Xc8ifsegEqeUU07",className:"btn-cyan text-base font-bold py-3.5 px-8 rounded-xl shadow-lg shadow-cyan-300/20 inline-flex items-center gap-2",target:"_blank",rel:"noopener noreferrer",children:[e.jsx("span",{children:"Start 60-Day Evaluation: $499"}),e.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("line",{x1:"5",y1:"12",x2:"19",y2:"12"}),e.jsx("polyline",{points:"12 5 19 12 12 19"})]})]})}),e.jsx("div",{className:"border-t border-gridline/60 pt-4 mt-4 text-left space-y-2",children:["Full QECTOR Decoder v3 (all decoder families)","Written license agreement","Priority email support (2 business day response)","Benchmark artifact package","100% credit toward any annual license purchased within 90 days of your evaluation start"].map(t=>e.jsxs("div",{className:"flex items-center gap-2 text-xs text-secondary",children:[e.jsx("span",{className:"text-green-400",children:"✓"}),e.jsx("span",{children:t})]},t))})]}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-4",children:["Need annual pricing, multi-seat, or OEM? ",e.jsx(j,{to:"/commercial",className:"text-cyan-300 hover:underline",children:"View all tiers →"})]})]})})})]})}const Te=c.lazy(()=>b(()=>import("./About-CzYv2IZf.js"),__vite__mapDeps([0,1,2,3,4,5,6]))),Ae=c.lazy(()=>b(()=>import("./Decoder-4z-vTL16.js"),__vite__mapDeps([7,1,8,2,3,4,5,6]))),qe=c.lazy(()=>b(()=>import("./Workbench-DjamN-lA.js"),__vite__mapDeps([9,1,8,2,10,3,4,5,6]))),Ie=c.lazy(()=>b(()=>import("./McpServer-DH6efPKh.js"),__vite__mapDeps([11,1,8,3,4,5,6,2]))),$e=c.lazy(()=>b(()=>import("./ClaudePlugin-DdB5MGg7.js"),__vite__mapDeps([12,1,8,10,6,3,4,5,2]))),ze=c.lazy(()=>b(()=>import("./Blog-C2PtKQPL.js"),__vite__mapDeps([13,1,14,3,4,5,6,2]))),Me=c.lazy(()=>b(()=>import("./BlogPost-Bf5JMy3h.js"),__vite__mapDeps([15,1,14,4,3,5,6,2]))),Ge=c.lazy(()=>b(()=>import("./Pricing-CZj0aLPH.js"),__vite__mapDeps([16,1,17,3,4,5,8,2,6]))),We=c.lazy(()=>b(()=>import("./PricingFR-Dx93rO3U.js"),__vite__mapDeps([18,1,17,3,4,5,8,2,6]))),Qe=c.lazy(()=>b(()=>import("./Commercial-CgBsPCVr.js"),__vite__mapDeps([19,1,8,3,4,5,6,2]))),Ve=c.lazy(()=>b(()=>import("./Contact-ZN3l_2_v.js"),__vite__mapDeps([20,1,21,2,3,4,5,6]))),Be=c.lazy(()=>b(()=>import("./License-BVQmOrwC.js"),__vite__mapDeps([22,1,8,3,4,5,6,2]))),Fe=c.lazy(()=>b(()=>import("./Privacy-DZfev8WZ.js"),__vite__mapDeps([23,1,8,3,4,5,6,2]))),He=c.lazy(()=>b(()=>import("./Terms-Drxk6W26.js"),__vite__mapDeps([24,1,8,3,4,5,6,2]))),Ue=c.lazy(()=>b(()=>import("./TermsFR-BL-VfMSd.js"),__vite__mapDeps([25,1,8,3,4,5,6,2]))),Ye=c.lazy(()=>b(()=>import("./Refund-DJWm-f08.js"),__vite__mapDeps([26,1,8,3,4,5,6,2]))),Je=c.lazy(()=>b(()=>import("./Founder-CuTYpFsD.js"),__vite__mapDeps([27,1,21,3,4,5,6,2]))),Ke=c.lazy(()=>b(()=>import("./Evidence-C7IJaw71.js"),__vite__mapDeps([28,1,8,2,10,3,4,5,6]))),Xe=c.lazy(()=>b(()=>import("./Changelog-dTKijDWa.js"),__vite__mapDeps([29,1,8,10,3,4,5,6,2]))),Ze=c.lazy(()=>b(()=>import("./TechnicalReference-C9HpEUdH.js"),__vite__mapDeps([30,1,8,2,6,3,4,5]))),et=c.lazy(()=>b(()=>import("./Docs-CbxYbU8R.js"),__vite__mapDeps([31,1,8,2,3,4,5,6]))),tt=c.lazy(()=>b(()=>import("./Installer-B56SNEpM.js"),__vite__mapDeps([32,1,8,3,4,5,6,2]))),rt=c.lazy(()=>b(()=>import("./Manual-RdcO5vwC.js"),__vite__mapDeps([33,1,6,8,3,4,5,2]))),st=c.lazy(()=>b(()=>import("./Success-DyK9JNg3.js"),__vite__mapDeps([34,1,8,3,4,5,6,2]))),at=c.lazy(()=>b(()=>import("./NotFound-C-HGJzn4.js"),__vite__mapDeps([35,1,8,3,4,5,6,2])));function nt(){return e.jsx(Ne,{children:e.jsx(ve,{children:e.jsx(c.Suspense,{fallback:e.jsx(we,{}),children:e.jsxs(Z,{children:[e.jsx(f,{path:"/",element:e.jsx(De,{})}),e.jsx(f,{path:"/about",element:e.jsx(Te,{})}),e.jsx(f,{path:"/decoder",element:e.jsx(Ae,{})}),e.jsx(f,{path:"/workbench",element:e.jsx(qe,{})}),e.jsx(f,{path:"/mcp-server",element:e.jsx(Ie,{})}),e.jsx(f,{path:"/claude-plugin",element:e.jsx($e,{})}),e.jsx(f,{path:"/blog",element:e.jsx(ze,{})}),e.jsx(f,{path:"/blog/:id",element:e.jsx(Me,{})}),e.jsx(f,{path:"/pricing",element:e.jsx(Ge,{})}),e.jsx(f,{path:"/fr/pricing",element:e.jsx(We,{})}),e.jsx(f,{path:"/commercial",element:e.jsx(Qe,{})}),e.jsx(f,{path:"/contact",element:e.jsx(Ve,{})}),e.jsx(f,{path:"/license",element:e.jsx(Be,{})}),e.jsx(f,{path:"/privacy",element:e.jsx(Fe,{})}),e.jsx(f,{path:"/terms",element:e.jsx(He,{})}),e.jsx(f,{path:"/fr/terms",element:e.jsx(Ue,{})}),e.jsx(f,{path:"/refund",element:e.jsx(Ye,{})}),e.jsx(f,{path:"/guillaume-lessard",element:e.jsx(Je,{})}),e.jsx(f,{path:"/evidence",element:e.jsx(Ke,{})}),e.jsx(f,{path:"/changelog",element:e.jsx(Xe,{})}),e.jsx(f,{path:"/technical-reference",element:e.jsx(Ze,{})}),e.jsx(f,{path:"/docs",element:e.jsx(et,{})}),e.jsx(f,{path:"/installer",element:e.jsx(tt,{})}),e.jsx(f,{path:"/manual",element:e.jsx(rt,{})}),e.jsx(f,{path:"/success",element:e.jsx(st,{})}),e.jsx(f,{path:"*",element:e.jsx(at,{})})]})})})})}X.createRoot(document.getElementById("root")).render(e.jsx(c.StrictMode,{children:e.jsx(ee,{children:e.jsx(nt,{})})}));export{Le as A,Oe as C,Re as E,_e as J,Se as Q,ke as S,F as a,mt as b,H as u}; diff --git a/assets/index-Bh9DBCb3.js b/assets/index-Bh9DBCb3.js deleted file mode 100644 index f3b37007..00000000 --- a/assets/index-Bh9DBCb3.js +++ /dev/null @@ -1,3 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/About-Sj0SVf3I.js","assets/vendor-react-BiHfrq0e.js","assets/vendor-gsap-a3sj5zmn.js","assets/vendor-PiU4YGcH.js","assets/vendor-md-CLKxNZoa.js","assets/vendor-md-dRWncRqa.css","assets/vendor-ui-B0ssGG4c.js","assets/Decoder-B0aQK11-.js","assets/NeuralReveal-D-EQoOl2.js","assets/Workbench-Ct-U8BKA.js","assets/releases-1-HBloZv.js","assets/McpServer-C5JtddAJ.js","assets/ClaudePlugin-D4c0dp2L.js","assets/Blog-BFZmecCN.js","assets/blogData-OjR2ZtNr.js","assets/BlogPost-CkWMP1e_.js","assets/Pricing-Cn8Zecmp.js","assets/faqData-D7ZwBN6k.js","assets/PricingFR-B_DF8Sg3.js","assets/Commercial-BPs2_LwV.js","assets/Contact-DuHdX58e.js","assets/CalendlyWidget-BuhQfp2_.js","assets/License-DDdBqsPy.js","assets/Privacy-CAKpuiQ_.js","assets/LegalPage-DvyIDT6j.js","assets/privacy-CyCxpbsd.js","assets/Terms-CBCTDevc.js","assets/terms-LnOasveG.js","assets/TermsFR-CGlEiMoF.js","assets/Refund-CRy_OFTy.js","assets/RefundFR-KUCUHxUI.js","assets/PrivacyFR-yruEp8O3.js","assets/LicenseAgreement-prqWmpN4.js","assets/licenseAgreement-BVRBs70C.js","assets/LicenseAgreementFR-vtWAZWNF.js","assets/Security-CMQacbrM.js","assets/Compare-H6yva3AD.js","assets/Founder-C30HSU2C.js","assets/Evidence-BwlSEt0X.js","assets/Changelog-BkfmouBY.js","assets/TechnicalReference-BcuWSg0l.js","assets/Docs-KUXBA0rX.js","assets/Installer-BPMW9xjA.js","assets/Manual-DufMHAK3.js","assets/Success-B8_Hgbq9.js","assets/NotFound-D-ACnmyk.js"])))=>i.map(i=>d[i]); -import{r as c,j as e,c as W}from"./vendor-react-BiHfrq0e.js";import{z as $,L as k,R as ne,A as u,B as oe}from"./vendor-PiU4YGcH.js";import{S as B,C as le,a as ie,b as ce,R as de,c as me,d as xe,F as he,B as pe,P as ue,M as fe,e as ge}from"./vendor-ui-B0ssGG4c.js";import{g as V,S as be}from"./vendor-gsap-a3sj5zmn.js";import"./vendor-md-CLKxNZoa.js";(function(){const i=document.createElement("link").relList;if(i&&i.supports&&i.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))t(l);new MutationObserver(l=>{for(const m of l)if(m.type==="childList")for(const p of m.addedNodes)p.tagName==="LINK"&&p.rel==="modulepreload"&&t(p)}).observe(document,{childList:!0,subtree:!0});function n(l){const m={};return l.integrity&&(m.integrity=l.integrity),l.referrerPolicy&&(m.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?m.credentials="include":l.crossOrigin==="anonymous"?m.credentials="omit":m.credentials="same-origin",m}function t(l){if(l.ep)return;l.ep=!0;const m=n(l);fetch(l.href,m)}})();const ye="modulepreload",je=function(s){return"/"+s},H={},g=function(i,n,t){let l=Promise.resolve();if(n&&n.length>0){let f=function(y){return Promise.all(y.map(j=>Promise.resolve(j).then(w=>({status:"fulfilled",value:w}),w=>({status:"rejected",reason:w}))))};document.getElementsByTagName("link");const p=document.querySelector("meta[property=csp-nonce]"),b=p?.nonce||p?.getAttribute("nonce");l=f(n.map(y=>{if(y=je(y),y in H)return;H[y]=!0;const j=y.endsWith(".css"),w=j?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${y}"]${w}`))return;const o=document.createElement("link");if(o.rel=j?"stylesheet":ye,j||(o.as="script"),o.crossOrigin="",o.href=y,b&&o.setAttribute("nonce",b),document.head.appendChild(o),j)return new Promise((h,R)=>{o.addEventListener("load",h),o.addEventListener("error",()=>R(new Error(`Unable to preload CSS for ${y}`)))})}))}function m(p){const b=new Event("vite:preloadError",{cancelable:!0});if(b.payload=p,window.dispatchEvent(b),!b.defaultPrevented)throw p}return l.then(p=>{for(const b of p||[])b.status==="rejected"&&m(b.reason);return i().catch(m)})},K=s=>"items"in s,Y=[{label:"Products",items:[{label:"Decoder",href:"/decoder",note:"Python library, Rust core"},{label:"Claude Plugin",href:"/claude-plugin",note:"Air-gapped MCP for Claude"},{label:"Workbench",href:"/workbench",note:"Free desktop GUI"},{label:"MCP Server",href:"/mcp-server",note:"Tools for any MCP client"},{label:"Installers",href:"/installer",note:"Downloads and checksums"}]},{label:"Resources",items:[{label:"Documentation",href:"/docs",note:"Start here"},{label:"User Manual",href:"/manual",note:"Reference manual (DOI)"},{label:"Technical Reference",href:"/technical-reference",note:"API tiers and decoders"},{label:"Compare",href:"/compare",note:"QECTOR and alternatives"},{label:"Evidence",href:"/evidence",note:"Validation and DOIs"},{label:"Changelog",href:"/changelog",note:"Every release"},{label:"Blog",href:"/blog",note:"QEC articles"}]},{label:"Pricing",href:"/pricing"},{label:"Company",items:[{label:"About",href:"/about"},{label:"Founder",href:"/guillaume-lessard"},{label:"Enterprise & OEM",href:"/commercial"},{label:"Security & Trust",href:"/security"},{label:"Licence Agreement",href:"/license-agreement"}]},{label:"Contact",href:"/contact"}];function ve(){const[s,i]=c.useState(!1),[n,t]=c.useState(null),[l,m]=c.useState(!1),[p,b]=c.useState(!1),f=$(),y=c.useCallback(()=>{const o=window.scrollY;b(o>50),o>200?m(o>window.lastScrollY):m(!1),window.lastScrollY=o},[]);c.useEffect(()=>(window.addEventListener("scroll",y,{passive:!0}),()=>window.removeEventListener("scroll",y)),[y]),c.useEffect(()=>{i(!1),t(null)},[f]),c.useEffect(()=>{if(!n)return;const o=h=>{if(h instanceof KeyboardEvent){h.key==="Escape"&&t(null);return}h.target?.closest("[data-nav-group]")||t(null)};return window.addEventListener("mousedown",o),window.addEventListener("keydown",o),()=>{window.removeEventListener("mousedown",o),window.removeEventListener("keydown",o)}},[n]),c.useEffect(()=>(s?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[s]),c.useEffect(()=>{if(!s)return;const o=h=>{h.key==="Escape"&&i(!1)};return window.addEventListener("keydown",o),()=>window.removeEventListener("keydown",o)},[s]);const j=o=>o==="/"?f.pathname==="/":f.pathname===o||f.pathname.startsWith(`${o}/`),w=o=>o.items.some(h=>j(h.href));return e.jsxs(e.Fragment,{children:[e.jsxs("nav",{"aria-label":"Main",className:`fixed top-4 left-1/2 -translate-x-1/2 z-50 w-[95%] max-w-6xl transition-all duration-500 ease-out ${l&&!s?"-translate-y-[140%]":"translate-y-0"}`,inert:l&&!s,children:[e.jsx("div",{className:`glass-nav rounded-2xl px-4 sm:px-6 py-3 transition-all duration-300 ${p?"shadow-deep":""}`,children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(k,{to:"/",className:"flex items-center gap-2.5 text-cyan-300 hover:text-cyan-100 transition-colors",children:e.jsx("img",{src:"/images/logo.png",alt:"QECTOR official logo",width:"36",height:"36",className:"h-9 w-9 rounded-lg object-cover"})}),e.jsx("div",{className:"hidden lg:flex items-center gap-1",children:Y.map(o=>K(o)?e.jsxs("div",{className:"relative","data-nav-group":!0,onMouseEnter:()=>t(o.label),onMouseLeave:()=>t(h=>h===o.label?null:h),children:[e.jsxs("button",{type:"button","aria-expanded":n===o.label,"aria-haspopup":"true",onClick:()=>t(h=>h===o.label?null:o.label),className:`inline-flex items-center gap-1 px-3 py-2 rounded-lg text-sm font-medium transition-all duration-300 ${w(o)?"text-cyan-300 bg-cyan-300/10":"text-secondary hover:text-primary hover:bg-white/5"}`,children:[o.label,e.jsx("svg",{"aria-hidden":"true",width:"10",height:"10",viewBox:"0 0 10 10",className:`transition-transform ${n===o.label?"rotate-180":""}`,children:e.jsx("path",{d:"M1 3l4 4 4-4",stroke:"currentColor",strokeWidth:"1.5",fill:"none"})})]}),n===o.label&&e.jsx("div",{className:"absolute left-0 top-full pt-2 z-50",children:e.jsx("ul",{className:"glass-nav rounded-xl p-2 w-64 shadow-deep",role:"list",children:o.items.map(h=>e.jsx("li",{children:e.jsxs(k,{to:h.href,"aria-current":j(h.href)?"page":void 0,className:`block px-3 py-2 rounded-lg transition-colors ${j(h.href)?"bg-cyan-300/10":"hover:bg-white/5"}`,children:[e.jsx("span",{className:`block text-sm font-medium ${j(h.href)?"text-cyan-300":"text-primary"}`,children:h.label}),h.note&&e.jsx("span",{className:"block text-xs text-muted-foreground",children:h.note})]})},h.href))})})]},o.label):e.jsx(k,{to:o.href,"aria-current":j(o.href)?"page":void 0,className:`px-3 py-2 rounded-lg text-sm font-medium transition-all duration-300 ${j(o.href)?"text-cyan-300 bg-cyan-300/10":"text-secondary hover:text-primary hover:bg-white/5"}`,children:o.label},o.href))}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(k,{to:"/pricing",className:"hidden sm:inline-flex items-center px-4 py-2 border border-gold-400/60 text-gold-400 text-sm font-medium rounded-lg hover:bg-gold-400/10 transition-all duration-300",children:"Get License"}),e.jsxs("button",{onClick:()=>i(!s),className:"lg:hidden flex flex-col items-center justify-center gap-1.5 p-2 min-h-[44px] min-w-[44px] rounded-lg hover:bg-white/5 transition-colors","aria-label":f.pathname.startsWith("/fr/")?s?"Fermer le menu":"Ouvrir le menu":s?"Close menu":"Open menu","aria-expanded":s,"aria-controls":"mobile-menu",children:[e.jsx("span",{className:`block w-5 h-0.5 bg-primary transition-all duration-300 ${s?"rotate-45 translate-y-2":""}`}),e.jsx("span",{className:`block w-5 h-0.5 bg-primary transition-all duration-300 ${s?"opacity-0":""}`}),e.jsx("span",{className:`block w-5 h-0.5 bg-primary transition-all duration-300 ${s?"-rotate-45 -translate-y-2":""}`})]})]})]})}),e.jsx("div",{id:"mobile-menu","aria-hidden":!s,className:`lg:hidden mt-2 glass-nav rounded-2xl overflow-hidden transition-all duration-300 ${s?"max-h-[calc(100dvh-110px)] overflow-y-auto opacity-100 visible":"max-h-0 opacity-0 invisible"}`,children:e.jsxs("div",{className:"px-4 py-3 space-y-1",children:[Y.map(o=>K(o)?e.jsxs("div",{className:"pt-2",children:[e.jsx("div",{className:"px-4 pb-1 text-[11px] font-semibold uppercase tracking-widest text-muted-foreground",children:o.label}),o.items.map(h=>e.jsx(k,{to:h.href,"aria-current":j(h.href)?"page":void 0,className:`flex items-center px-4 py-2.5 min-h-[44px] rounded-lg text-sm font-medium transition-all duration-200 ${j(h.href)?"text-cyan-300 bg-cyan-300/10":"text-secondary hover:text-primary hover:bg-white/5"}`,onClick:()=>i(!1),children:h.label},h.href))]},o.label):e.jsx(k,{to:o.href,"aria-current":j(o.href)?"page":void 0,className:`flex items-center px-4 py-3 min-h-[44px] rounded-lg text-sm font-medium transition-all duration-200 ${j(o.href)?"text-cyan-300 bg-cyan-300/10":"text-secondary hover:text-primary hover:bg-white/5"}`,onClick:()=>i(!1),children:o.label},o.href)),e.jsx(k,{to:"/pricing",className:"sm:hidden mt-2 text-center px-4 py-3 min-h-[44px] flex items-center justify-center border border-gold-400/60 text-gold-400 text-sm font-medium rounded-lg hover:bg-gold-400/10 transition-all",onClick:()=>i(!1),children:"Get License"})]})})]}),s&&e.jsx("div",{className:"fixed inset-0 z-40 bg-black/50 backdrop-blur-sm lg:hidden",onClick:()=>i(!1)})]})}const I={version:"1.0.1",pypiPackage:"qector-decoder-v3",contactEndpoint:void 0,ogImage:"https://qector.store/images/og-banner.png"},_t="https://calendly.com/qector-info/30min?background_color=0e0d0d&text_color=ffffff&primary_color=0e4088";async function Ne(){try{const i=await(await fetch("https://pypi.org/rss/project/qector-decoder-v3/releases.xml")).text(),m=(new DOMParser().parseFromString(i,"text/xml").querySelector("item title")?.textContent||"").match(/qector-decoder-v3\s+([\d.]+)/);return m?m[1]:I.version}catch{return I.version}}function ee(){const[s,i]=c.useState(I.version),[n,t]=c.useState(!0);return c.useEffect(()=>{let l=!0;return Ne().then(m=>{l&&(i(m),t(!1))}),()=>{l=!1}},[]),{version:s,loading:n}}const we=[{label:"QECTOR Decoder v3",href:"/decoder",badge:"Library"},{label:"Claude Code Plugin",href:"/claude-plugin",badge:"Claude"},{label:"Workbench GUI",href:"/workbench",badge:"Desktop App"},{label:"QECTOR MCP Server",href:"/mcp-server",badge:"MCP"},{label:"Installer & App Bundles",href:"/installer"},{label:"Pricing & Licensing",href:"/pricing"}],Ee=[{label:"Evidence & Reports",href:"/evidence"},{label:"Technical Reference",href:"/technical-reference"},{label:"Package User Manual",href:"/manual"},{label:"Documentation Hub",href:"/docs"},{label:"Version Changelog",href:"/changelog"}],ke=[{label:"About QECTOR",href:"/about"},{label:"Guillaume Lessard (Founder)",href:"/guillaume-lessard"},{label:"iD01t Productions"},{label:"Commercial Licensing",href:"/commercial"},{label:"Contact Engineering",href:"/contact"},{label:"Licence Agreement",href:"/license-agreement"},{label:"Terms of Service",href:"/terms"},{label:"Privacy Policy",href:"/privacy"},{label:"Refund Policy",href:"/refund"}];function G({href:s,external:i,badge:n,children:t}){const l="group flex items-center justify-between gap-3 min-h-[44px] py-1.5 text-secondary hover:text-cyan-300 text-sm transition-colors duration-200",m=e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"group-hover:translate-x-0.5 transition-transform duration-200",children:t}),n&&e.jsx("span",{className:"text-[10px] font-mono px-1.5 py-0.5 rounded bg-surface border border-gridline text-muted-foreground group-hover:border-cyan-300/30 group-hover:text-cyan-300 transition-colors",children:n})]});return s?i?e.jsxs("a",{href:s,target:"_blank",rel:"noopener noreferrer",className:l,children:[m,e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}):e.jsx(k,{to:s,className:l,children:m}):e.jsx("span",{className:l,children:m})}const _e=[{label:"Licence Agreement",href:"/license-agreement"},{label:"License",href:"/license"},{label:"Terms",href:"/terms"},{label:"Privacy",href:"/privacy"},{label:"Refund",href:"/refund"},{label:"Security",href:"/security"},{label:"Français",href:"/fr/pricing",hrefLang:"fr"}],Ce=[{label:"Contrat de licence",href:"/fr/license-agreement"},{label:"Conditions",href:"/fr/terms"},{label:"Confidentialité",href:"/fr/privacy"},{label:"Remboursement",href:"/fr/refund"},{label:"Tarifs",href:"/fr/pricing"},{label:"Sécurité",href:"/security"},{label:"English",href:"/pricing",hrefLang:"en"}];function Pe(){const{version:s}=ee(),i=$().pathname.startsWith("/fr/"),n=i?Ce:_e;return e.jsxs("footer",{className:"border-t border-cyan-900/40 bg-void/95 relative overflow-hidden text-left",children:[e.jsx("div",{className:"absolute top-0 left-1/2 -translate-x-1/2 w-1/2 h-16 bg-gradient-to-b from-cyan-400/5 to-transparent blur-3xl pointer-events-none"}),e.jsx("div",{className:"section-padding py-16 relative z-10",children:e.jsxs("div",{className:"max-w-7xl mx-auto",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-5 gap-12 lg:gap-8",children:[e.jsxs("div",{className:"lg:col-span-2 space-y-6",children:[e.jsxs(k,{to:"/",className:"inline-flex items-center gap-3 text-cyan-300 hover:text-cyan-100 transition-colors duration-200",children:[e.jsx("img",{src:"/images/logo.png",alt:"QECTOR official logo",width:"40",height:"40",className:"h-10 w-10 rounded-lg object-cover"}),e.jsxs("span",{className:"text-lg font-extrabold tracking-tight text-white",children:["QECTOR",e.jsx("span",{className:"text-cyan-300",children:"."})]})]}),e.jsx("p",{className:"text-secondary/80 text-sm leading-relaxed max-w-sm",children:"Quantum error correction decoding for Python. Built by Guillaume Lessard at iD01t Productions."}),e.jsxs("div",{className:"flex items-center gap-2 pt-2",children:[e.jsxs("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] text-muted-foreground hover:text-cyan-300 transition-colors","aria-label":"PyPI",children:[e.jsxs("span",{className:"text-sm font-mono border border-gridline rounded px-2 py-1 hover:border-cyan-300/30",children:["v",s]}),e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-1 text-muted-foreground hover:text-cyan-300 transition-colors text-sm font-medium","aria-label":"GitHub",children:["GitHub",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]}),e.jsxs("a",{href:"https://orcid.org/0009-0000-3465-3753",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center min-h-[44px] px-1 text-muted-foreground hover:text-cyan-300 transition-colors text-sm font-medium","aria-label":"ORCID",children:["ORCID",e.jsx("span",{className:"sr-only",children:"(opens in new tab)"})]})]})]}),e.jsxs("div",{className:"space-y-5",children:[e.jsx("h2",{className:"text-xs font-semibold uppercase tracking-widest text-white/90",children:"Platform"}),e.jsx("div",{className:"flex flex-col gap-1",children:we.map(t=>e.jsx(G,{href:t.href,external:t.external,badge:t.badge,children:t.label},t.label))})]}),e.jsxs("div",{className:"space-y-5",children:[e.jsx("h2",{className:"text-xs font-semibold uppercase tracking-widest text-white/90",children:"Research & Docs"}),e.jsx("div",{className:"flex flex-col gap-1",children:Ee.map(t=>e.jsx(G,{href:t.href,external:t.external,badge:t.badge,children:t.label},t.label))})]}),e.jsxs("div",{className:"space-y-5",children:[e.jsx("h2",{className:"text-xs font-semibold uppercase tracking-widest text-white/90",children:"Company"}),e.jsx("div",{className:"flex flex-col gap-1",children:ke.slice(0,5).map(t=>e.jsx(G,{href:t.href,external:t.external,badge:t.badge,children:t.label},t.label))})]})]}),e.jsxs("div",{className:"mt-16 pt-8 border-t border-gridline flex flex-col md:flex-row items-start md:items-center justify-between gap-6",children:[e.jsxs("div",{className:"text-xs text-muted-foreground max-w-xl leading-relaxed",children:[e.jsx("span",{className:"font-semibold text-secondary",children:"Distribution:"})," PyPI (",e.jsx("code",{className:"text-cyan-300/80 font-mono",children:"qector-decoder-v3"}),") is the Python library. The free ",e.jsx(k,{to:"/installer",className:"link-accent",children:"Workbench GUI"})," is a standalone desktop application shipped self-contained for Windows x64 and Linux x64 (no system Python required)."]}),e.jsx("nav",{"aria-label":i?"Mentions légales":"Legal",className:"flex flex-wrap items-center gap-x-4 gap-y-1 text-xs font-medium text-muted-foreground",children:n.map(t=>e.jsx(k,{to:t.href,hrefLang:t.hrefLang,className:"inline-flex items-center min-h-[44px] px-1 hover:text-cyan-300 transition-colors duration-200",children:t.label},t.href))})]})]})}),e.jsx("div",{className:"bg-[#050b14]",children:e.jsx("div",{className:"section-padding py-4",children:e.jsxs("div",{className:"max-w-7xl mx-auto text-xs text-muted-foreground/70 text-center md:text-left",children:["© 2026 QECTOR Lab / iD01t Productions. All rights reserved.",e.jsx("div",{className:"mt-1",children:"Éditeur : Guillaume Lessard, entrepreneur individuel (iD01t Productions), 2004 De Lorimier, Longueuil, QC J4K 3H7, Canada · admin@qector.store"})]})})})]})}function Le({children:s}){const i=$();return c.useEffect(()=>{window.scrollTo(0,0),document.documentElement.lang=i.pathname.startsWith("/fr/")?"fr":"en",document.getElementById("main-content")?.focus();const n=window.matchMedia("(prefers-reduced-motion: reduce)").matches,t=(p=document)=>{p.querySelectorAll(".card-surface:not(.revealed), .prose:not(.revealed)").forEach(b=>{n?b.classList.add("revealed"):l.observe(b)})},l=new IntersectionObserver(p=>{p.forEach(b=>{b.isIntersecting&&(b.target.classList.add("revealed"),l.unobserve(b.target))})},{threshold:.1,rootMargin:"0px 0px -10% 0px"});let m=null;return n||(m=new MutationObserver(p=>{p.forEach(b=>{b.addedNodes.forEach(f=>{f.nodeType===Node.ELEMENT_NODE&&t(f)})})}),m.observe(document.body,{childList:!0,subtree:!0})),t(),()=>{l.disconnect(),m&&m.disconnect()}},[i.pathname]),e.jsxs("div",{className:"min-h-screen bg-void text-foreground quantum-grid-bg relative",children:[e.jsx("a",{href:"#main-content",className:"sr-only focus:not-sr-only focus:fixed focus:top-4 focus:left-4 focus:z-[100] focus:px-4 focus:py-2 focus:bg-cyan-300 focus:text-void focus:font-semibold focus:rounded-lg",children:i.pathname.startsWith("/fr/")?"Aller au contenu principal":"Skip to main content"}),e.jsx(ve,{}),e.jsx("main",{id:"main-content",tabIndex:-1,className:"pt-20 outline-none",children:s}),e.jsx(Pe,{})]})}class Re extends c.Component{state={hasError:!1};static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(i,n){console.error("QECTOR site error boundary caught:",i,n.componentStack)}handleReload=()=>{this.setState({hasError:!1}),window.location.href="/"};render(){return this.state.hasError?e.jsx("div",{className:"min-h-screen flex items-center justify-center bg-void px-6",children:e.jsxs("div",{className:"max-w-md text-center card-surface",children:[e.jsx("div",{className:"w-12 h-12 rounded-full bg-cyan-300/10 border border-cyan-300/20 flex items-center justify-center mx-auto mb-4 text-cyan-300 text-xl",children:"!"}),e.jsx("h1",{className:"text-xl font-bold text-primary mb-2",children:"Something went wrong"}),e.jsx("p",{className:"text-secondary text-sm mb-6",children:"This page hit an unexpected error. No page data was sent; check the browser console for the local error and reload."}),e.jsx("button",{onClick:this.handleReload,className:"btn-cyan",children:"Reload homepage"})]})}):this.props.children}}function Se(){return e.jsx("div",{"data-page-loader":!0,className:"min-h-[60vh] flex items-center justify-center",role:"status","aria-live":"polite",children:e.jsxs("div",{className:"flex flex-col items-center gap-3",children:[e.jsx("div",{className:"w-8 h-8 border-2 border-cyan-300/20 border-t-cyan-300 rounded-full animate-spin"}),e.jsx("span",{className:"sr-only",children:"Loading page…"})]})})}const J={proMonthly:"https://buy.stripe.com/5kQcN7eAp3BM5RE5ZMeUU0g",proAnnual:"https://buy.stripe.com/8x228teAp6NY6VI87UeUU0h",proPerpetual:"https://buy.stripe.com/dRm00l0Jzfku4NA0FseUU0i",lab:"https://buy.stripe.com/aFa7sN9g5fku0xk5ZMeUU0k",pilot:"https://buy.stripe.com/14AeVf9g5b4e0xkdseeUU0l"},L={proMonthly:79,proAnnual:790,proPerpetual:1990,lab:9900,pilot:1500,enterpriseFrom:25e3,pilotDays:60,refundDays:14,academicDiscountPct:40},S=s=>`$${s.toLocaleString("en-US")}`,Ct=s=>`${s.toLocaleString("fr-CA").replace(/[\u00a0\u202f]/g," ")} $`,Oe={en:"en_US",fr:"fr_FR"};function Ae({title:s="QECTOR · Quantum Error Correction Decoding for Python",description:i="QECTOR Decoder v3 - Rust-core Python quantum error correction decoder. v1.0.1 stable release with API stability tiers, a qector CLI, and a reproducible measurement harness (qector bench) for measuring on your own hardware.",ogImage:n=I.ogImage,noindex:t=!1,lang:l="en",alternates:m}){const p=$(),b=`https://qector.store${p.pathname==="/"?"/":`${p.pathname.replace(/\/$/,"")}/`}`;return c.useEffect(()=>{document.title=s,document.documentElement.lang=l;const f=(w,o)=>{let h=document.querySelector(w);if(!h){h=document.createElement("meta");const R=w.includes("property=")?"property":"name",O=w.match(/"([^"]+)"/)?.[1]||"";h.setAttribute(R,O),document.head.appendChild(h)}h.content=o};f('meta[name="description"]',i),f('meta[name="robots"]',t?"noindex, follow":"index, follow, max-image-preview:large"),f('meta[property="og:title"]',s),f('meta[property="og:description"]',i),f('meta[property="og:url"]',b),f('meta[property="og:type"]',"website"),f('meta[property="og:locale"]',Oe[l]??"en_US"),f('meta[property="og:image"]',n),f('meta[property="og:image:alt"]',"QECTOR official logo"),f('meta[property="og:site_name"]',"QECTOR"),f('meta[name="twitter:card"]',"summary_large_image"),f('meta[name="twitter:title"]',s),f('meta[name="twitter:description"]',i),f('meta[name="twitter:image"]',n),f('meta[name="twitter:image:alt"]',"QECTOR official logo"),f('meta[name="theme-color"]',"#24e7ff");let y=document.querySelector('link[rel="canonical"]');y||(y=document.createElement("link"),y.rel="canonical",document.head.appendChild(y)),y.href=b,document.querySelectorAll('link[rel="alternate"][hreflang]').forEach(w=>w.remove());const j=[];for(const w of m??[]){const o=document.createElement("link");o.rel="alternate",o.hreflang=w.lang,o.href=w.href,document.head.appendChild(o),j.push(o)}return()=>{j.forEach(w=>w.remove())}},[s,i,b,n,t,l,m]),null}function De({data:s}){const i="json-ld-data";return c.useEffect(()=>{let n=document.getElementById(i);return n||(n=document.createElement("script"),n.id=i,n.type="application/ld+json",document.head.appendChild(n)),n.textContent=JSON.stringify(s),()=>{const t=document.getElementById(i);t&&t.remove()}},[s]),null}function Te({icon:s,label:i,href:n,variant:t="default",className:l=""}){const m=t==="gold"?"bg-gold-400/10 border border-gold-400/30 text-gold-400 hover:bg-gold-400/20":"bg-surface border border-gridline text-secondary hover:text-cyan-300 hover:border-cyan-300/30";return e.jsxs("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:`inline-flex items-center gap-2 px-4 py-2.5 rounded-full text-sm transition-all duration-300 ${m} ${l}`,children:[e.jsx("span",{"aria-hidden":"true",children:s}),e.jsx("span",{children:i})]})}function Z({eyebrow:s,heading:i,description:n,align:t="center",maxWidth:l="max-w-3xl",className:m=""}){const p=t==="center"?"text-center mx-auto":"text-left",b=t==="center"?"mx-auto":"";return e.jsxs("div",{className:`${l} ${p} mb-12 md:mb-16 ${m}`,children:[s&&e.jsx("span",{className:"eyebrow-pill mb-4",children:s}),e.jsx("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight text-balance mb-4",children:i}),n&&e.jsx("p",{className:`text-secondary text-lg leading-relaxed text-pretty max-w-prose ${b}`,children:n})]})}const Ie={cyan:"bg-cyan-300/10 text-cyan-300 border border-cyan-300/20",green:"bg-green-400/10 text-green-400 border border-green-400/20",purple:"bg-purple-400/10 text-purple-400 border border-purple-400/20",gold:"bg-gold-400/10 text-gold-400 border border-gold-400/20"};function $e({title:s,tag:i,badge:n,desc:t,proof:l,muted:m=!1,className:p=""}){return e.jsxs("div",{className:`card-surface group ${m?"border-gridline/50 opacity-80":""} ${p}`,children:[i&&e.jsx("div",{className:"text-muted-foreground text-xs font-mono uppercase tracking-wider mb-2",children:i}),e.jsxs("div",{className:"flex items-center justify-between gap-3 mb-3",children:[e.jsx("h3",{className:`font-semibold text-lg transition-colors ${m?"text-gold-400/80":"text-cyan-300 group-hover:text-cyan-200"}`,children:s}),n&&e.jsx("span",{className:`shrink-0 px-2.5 py-1 rounded-full text-xs font-medium ${m?"bg-gold-400/5 text-gold-400/60 border border-gold-400/20":Ie[n.color]}`,children:n.label})]}),e.jsx("p",{className:`leading-relaxed ${m?"text-muted-foreground text-sm":"text-secondary"}`,children:t}),l&&e.jsxs("div",{className:"mt-4 pt-4 border-t border-gridline/60 flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"text-green-400",children:"✓"}),e.jsx("span",{className:"text-muted-foreground font-mono",children:l})]})]})}function qe({title:s,statement:i,href:n,linkLabel:t="View evidence →",className:l=""}){return e.jsxs("div",{className:`relative rounded-2xl border border-cyan-300/20 bg-void p-6 overflow-hidden ${l}`,children:[e.jsx("div",{className:"absolute inset-0 pointer-events-none bg-gradient-to-br from-cyan-300/5 to-transparent"}),e.jsxs("div",{className:"relative z-10",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-cyan-300"}),e.jsx("span",{className:"text-xs font-mono uppercase tracking-wider text-cyan-300",children:s})]}),e.jsx("p",{className:"text-secondary leading-relaxed mb-4",children:i}),n&&e.jsx("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:"text-cyan-300 text-sm font-medium hover:underline underline-offset-4",children:t})]})]})}function Me(){const[s,i]=c.useState({}),[n,t]=c.useState({}),[l,m]=c.useState(!1),[p,b]=c.useState(!1),f=c.useMemo(()=>{const a=[];for(let r=0;r<3;r++)for(let d=0;d<3;d++)a.push({id:`${r}_${d}`,r,c:d,x:120+d*100,y:60+r*100});return a},[]),y=c.useMemo(()=>{const a=[];for(let r=0;r<3;r++)a.push({id:`L_${r}`,type:"L",r,c:-1,x1:30,y1:60+r*100,x2:120,y2:60+r*100});for(let r=0;r<3;r++)a.push({id:`R_${r}`,type:"R",r,c:3,x1:320,y1:60+r*100,x2:410,y2:60+r*100});for(let r=0;r<3;r++)for(let d=0;d<2;d++)a.push({id:`H_${r}_${d}`,type:"H",r,c:d,x1:120+d*100,y1:60+r*100,x2:120+(d+1)*100,y2:60+r*100});for(let r=0;r<2;r++)for(let d=0;d<3;d++)a.push({id:`V_${r}_${d}`,type:"V",r,c:d,x1:120+d*100,y1:60+r*100,x2:120+d*100,y2:60+(r+1)*100});return a},[]),j=c.useMemo(()=>{const a={},r=d=>{a[d]=!a[d]};return y.forEach(d=>{s[d.id]&&(d.type==="H"?(r(`${d.r}_${d.c}`),r(`${d.r}_${d.c+1}`)):d.type==="V"?(r(`${d.r}_${d.c}`),r(`${d.r+1}_${d.c}`)):d.type==="L"?r(`${d.r}_0`):d.type==="R"&&r(`${d.r}_2`))}),Object.keys(a).forEach(d=>{a[d]||delete a[d]}),a},[s,y]),w=a=>{t({}),m(!1),i(r=>({...r,[a]:!r[a]}))},o=()=>{i({}),t({}),m(!1)},h=(a=.2)=>{t({}),m(!1);const r={};y.forEach(d=>{Math.random()Math.abs(a.r-r.r)+Math.abs(a.c-r.c),O=c.useCallback((a,r)=>{const d=[],C=Math.min(a.r,r.r),v=Math.max(a.r,r.r),_=a.r{const a=Object.keys(j).map(v=>{const[_,x]=v.split("_").map(Number);return f.find(N=>N.r===_&&N.c===x)});if(a.length===0){t({}),m(!0);return}const r=v=>{if(v.length===0)return{cost:0,pairs:[]};const _=v[0],x=v.slice(1);let N=1/0,E=[];const P=_.c+1,q=r(x);P+q.costae!==A),z=r(se);Q+z.cost{if(v==="L"||v==="R"||_==="L"||_==="R"){const x=v==="L"||v==="R"?_:v;if((v==="L"||v==="R"?v:_)==="L"){for(let E=0;E{C[N]=!0})}),t(C),m(!0)},[j,f,O]),re=c.useMemo(()=>{if(!l)return"idle";const a=y.filter(x=>{const N=s[x.id]||!1,E=n[x.id]||!1;return N!==E}),r={},d=(x,N)=>{r[x]||(r[x]=[]),r[N]||(r[N]=[]),r[x].push(N),r[N].push(x)};a.forEach(x=>{x.type==="H"?d(`${x.r}_${x.c}`,`${x.r}_${x.c+1}`):x.type==="V"?d(`${x.r}_${x.c}`,`${x.r+1}_${x.c}`):x.type==="L"?d("L",`${x.r}_0`):x.type==="R"&&d("R",`${x.r}_2`)});const C={},v=["L"];C.L=!0;let _=!1;for(;v.length>0;){const x=v.shift();if(x==="R"){_=!0;break}(r[x]||[]).forEach(E=>{C[E]||(C[E]=!0,v.push(E))})}return _?"failure":"success"},[l,s,n,y]);return e.jsxs("div",{className:"flex flex-col gap-4 border border-gridline bg-surface/30 rounded-2xl p-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsxs("h4",{className:"text-cyan-300 font-semibold text-sm uppercase tracking-wider flex items-center gap-1.5",children:[e.jsx(B,{className:"w-4 h-4"}),"Interactive QEC Simulator"]}),e.jsx("p",{className:"text-muted-foreground text-xs mt-0.5",children:"Planar stabilizer code (d=3). Click edges to toggle physical errors."})]}),e.jsx("button",{onClick:()=>b(!p),className:"min-h-[44px] min-w-[44px] inline-flex items-center justify-center text-secondary hover:text-cyan-300 transition-colors","aria-label":"Toggle help",children:e.jsx(le,{className:"w-5 h-5"})})]}),p&&e.jsxs("div",{className:"p-4 bg-void/80 border border-gridline rounded-xl text-xs text-secondary leading-relaxed space-y-2",children:[e.jsxs("p",{children:[e.jsx("strong",{children:"How to play:"})," Click on the links (grey/red lines) to inject physical errors. Red lines represent errors."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Syndromes:"})," Grid nodes measure checks. When adjacent errors are odd, a check triggers (lights up orange)."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Decoder:"})," Minimum Weight Perfect Matching (MWPM) matches active checks. When you click ",e.jsx("span",{className:"text-cyan-300",children:"Run Decoder"}),", it draws matching correction paths in cyan."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Success condition:"})," If error + correction paths do not form a logical connection across boundaries (from left to right), the state is successfully corrected!"]})]}),e.jsxs("div",{className:"bg-void/50 border border-gridline rounded-xl flex items-center justify-center p-4 relative overflow-hidden",children:[e.jsxs("svg",{viewBox:"0 0 440 320",className:"w-full max-w-[440px] h-auto select-none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsxs("defs",{children:[e.jsxs("radialGradient",{id:"activeNodeGlow",cx:"50%",cy:"50%",r:"50%",children:[e.jsx("stop",{offset:"0%",stopColor:"#fef08a"}),e.jsx("stop",{offset:"60%",stopColor:"#eab308"}),e.jsx("stop",{offset:"100%",stopColor:"#a16207"})]}),e.jsxs("linearGradient",{id:"inactiveNodeGlow",x1:"0",y1:"0",x2:"1",y2:"1",children:[e.jsx("stop",{offset:"0%",stopColor:"#1e293b"}),e.jsx("stop",{offset:"100%",stopColor:"#0f172a"})]}),e.jsx("pattern",{id:"gridDots",width:"20",height:"20",patternUnits:"userSpaceOnUse",children:e.jsx("circle",{cx:"2",cy:"2",r:"1",fill:"#1e293b",fillOpacity:"0.6"})})]}),e.jsx("rect",{width:"440",height:"320",fill:"url(#gridDots)",rx:"10"}),e.jsx("line",{x1:"30",y1:"30",x2:"30",y2:"290",stroke:"#475569",strokeWidth:"3",strokeDasharray:"4 4"}),e.jsx("text",{x:"20",y:"165",fill:"#475569",fontSize:"10",textAnchor:"middle",transform:"rotate(-90, 20, 165)",className:"font-mono",children:"LEFT BOUNDARY"}),e.jsx("line",{x1:"410",y1:"30",x2:"410",y2:"290",stroke:"#475569",strokeWidth:"3",strokeDasharray:"4 4"}),e.jsx("text",{x:"420",y:"165",fill:"#475569",fontSize:"10",textAnchor:"middle",transform:"rotate(90, 420, 165)",className:"font-mono",children:"RIGHT BOUNDARY"}),y.map(a=>{const r=s[a.id]||!1,d=n[a.id]||!1;let C="#334155";return r&&d?C="#e2e8f0":r?C="#ef4444":d&&(C="#06b6d4"),e.jsxs("g",{className:"group",children:[e.jsx("line",{x1:a.x1,y1:a.y1,x2:a.x2,y2:a.y2,stroke:"transparent",strokeWidth:"16",className:"cursor-pointer",tabIndex:0,role:"checkbox","aria-checked":r,"aria-label":`Toggle error on qubit edge ${a.id}`,onClick:()=>w(a.id),onKeyDown:v=>{(v.key==="Enter"||v.key===" ")&&(v.preventDefault(),w(a.id))}}),e.jsx("line",{x1:a.x1,y1:a.y1,x2:a.x2,y2:a.y2,stroke:C,strokeWidth:r||d?4:2,className:"transition-colors duration-200 pointer-events-none group-hover:stroke-cyan-300/40",style:{filter:r?"drop-shadow(0 0 4px rgba(239, 68, 68, 0.4))":d?"drop-shadow(0 0 4px rgba(6, 182, 212, 0.4))":"none"}}),e.jsx("circle",{cx:(a.x1+a.x2)/2,cy:(a.y1+a.y2)/2,r:"5",fill:r?"#ef4444":d?"#06b6d4":"#1e293b",stroke:r||d?"#e2e8f0":"#475569",strokeWidth:"1.5",className:"transition-colors duration-200 pointer-events-none group-hover:fill-cyan-300 group-hover:stroke-cyan-200"})]},a.id)}),f.map(a=>{const r=j[a.id]||!1;return e.jsxs("g",{children:[r&&e.jsx("circle",{cx:a.x,cy:a.y,r:"18",fill:"rgba(251, 191, 36, 0.15)",className:"animate-pulse"}),e.jsx("circle",{cx:a.x,cy:a.y,r:r?12:9,fill:r?"url(#activeNodeGlow)":"url(#inactiveNodeGlow)",stroke:r?"#fbbf24":"#334155",strokeWidth:r?2:1.5,className:"transition-all duration-300 pointer-events-none",style:{filter:r?"drop-shadow(0 0 10px rgba(251, 191, 36, 0.7))":"none"}}),e.jsx("circle",{cx:a.x-(r?3:2),cy:a.y-(r?3:2),r:r?3:2,fill:"white",fillOpacity:"0.25",className:"pointer-events-none"}),r&&e.jsx("circle",{cx:a.x,cy:a.y,r:20,fill:"transparent",stroke:"#fbbf24",strokeWidth:"1",strokeOpacity:"0.4",className:"animate-ping"}),e.jsx("text",{x:a.x,y:a.y+3,textAnchor:"middle",fill:r?"#020617":"#94a3b8",fontSize:"9",fontWeight:"bold",className:"font-mono text-[9px] pointer-events-none",children:r?"!":"S"})]},a.id)})]}),l&&e.jsxs("div",{className:"absolute bottom-3 left-3 right-3 flex items-center justify-between p-3 bg-surface/90 border border-gridline rounded-xl backdrop-blur-md transition-all duration-300",children:[re==="success"?e.jsxs("div",{className:"flex items-center gap-2 text-green-400 text-sm font-semibold",children:[e.jsx(ie,{className:"w-5 h-5"}),e.jsx("span",{children:"SUCCESS: Errors resolved"})]}):e.jsxs("div",{className:"flex items-center gap-2 text-red-400 text-sm font-semibold",children:[e.jsx(ce,{className:"w-5 h-5"}),e.jsx("span",{children:"LOGICAL ERROR: Correction failed"})]}),e.jsx("div",{className:"text-[10px] text-muted-foreground font-mono",children:"d=3 code slice"})]})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[e.jsxs("button",{onClick:()=>h(.2),className:"px-3 py-3 bg-surface hover:bg-white/5 border border-gridline rounded-lg text-xs font-semibold text-secondary hover:text-primary transition-all flex items-center justify-center gap-1.5",children:[e.jsx(B,{className:"w-3.5 h-3.5"}),"Inject Errors"]}),e.jsxs("button",{onClick:te,disabled:Object.keys(j).length===0,className:"px-3 py-3 bg-cyan-300 disabled:bg-cyan-300/20 disabled:text-void/40 hover:bg-cyan-200 text-void rounded-lg text-xs font-bold transition-all flex items-center justify-center gap-1.5",children:[e.jsx(de,{className:`w-3.5 h-3.5 ${l?"":"animate-spin"}`}),"Run Decoder"]}),e.jsx("button",{onClick:o,className:"px-3 py-3 bg-surface hover:bg-red-950/20 border border-gridline hover:border-red-900/30 rounded-lg text-xs font-semibold text-secondary hover:text-red-400 transition-all",children:"Reset Graph"})]})]})}function ze({code:s,language:i="python",filename:n,className:t=""}){const[l,m]=c.useState(!1),p=async()=>{try{await navigator.clipboard.writeText(s),m(!0),setTimeout(()=>m(!1),2e3)}catch(b){console.error("Failed to copy text: ",b)}};return e.jsxs("div",{className:`my-4 max-w-full min-w-0 border border-gridline rounded-xl overflow-hidden bg-void/50 ${t}`,children:[n&&e.jsxs("div",{className:"flex items-center justify-between px-4 py-2 border-b border-gridline bg-surface/50 text-xs font-mono text-muted-foreground",children:[e.jsx("span",{children:n}),e.jsx("span",{className:"uppercase text-[10px] bg-cyan-300/10 text-cyan-300 px-1.5 py-0.5 rounded border border-cyan-300/20",children:i})]}),e.jsxs("div",{className:"relative group",children:[e.jsx("pre",{className:"p-4 pr-14 overflow-x-auto overflow-y-auto font-mono text-sm leading-relaxed text-secondary bg-void/30 max-h-[400px]",children:e.jsx("code",{className:`language-${i}`,children:s})}),e.jsx("button",{onClick:p,className:"absolute top-3 right-3 p-1.5 bg-surface border border-gridline rounded-lg text-secondary hover:text-cyan-300 hover:border-cyan-300/30 opacity-0 group-hover:opacity-100 focus:opacity-100 max-sm:opacity-100 transition-all duration-200","aria-label":l?"Copied":"Copy code",children:l?e.jsx(me,{className:"w-4 h-4 text-green-400"}):e.jsx(xe,{className:"w-4 h-4"})}),e.jsx("span",{className:"sr-only","aria-live":"polite",children:l?"Code copied to clipboard":""})]})]})}V.registerPlugin(be);function D({value:s,label:i}){return e.jsxs("div",{className:"text-center px-4 py-3",children:[e.jsx("div",{className:"text-2xl font-bold text-cyan-300",children:s}),e.jsx("div",{className:"text-xs text-muted-foreground leading-tight max-w-[11rem] mx-auto",children:i})]})}function Ge(){const s=c.useRef([]),{version:i}=ee();c.useEffect(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const t=document.createElement("script");t.src="https://js.stripe.com/v3/buy-button.js",t.async=!0,document.body.appendChild(t);const l=V.context(()=>{s.current.filter(Boolean).forEach(p=>{V.fromTo(p,{opacity:0,y:40},{opacity:1,y:0,duration:.8,ease:"power2.out",scrollTrigger:{trigger:p,start:"top 85%",once:!0}})})});return()=>{l.revert(),t.parentNode===document.body&&document.body.removeChild(t)}},[]);const n=(t,l)=>{t&&(s.current[l]=t)};return e.jsxs(e.Fragment,{children:[e.jsx(Ae,{title:"QECTOR · Quantum Error Correction Decoding for Python",description:"QECTOR Decoder v3 - Rust-core Python library with 17 concrete decoder configurations plus 2 Workbench routing kinds, a syndrome-faithful contract, and reproducible validation guidance."}),e.jsx(De,{data:{"@context":"https://schema.org","@graph":[{"@type":"SoftwareApplication",name:"QECTOR Decoder v3",description:"QECTOR Decoder v3 is the qector-decoder-v3 1.0.1 Rust/Python quantum error correction package with 17 concrete decoder configurations plus 2 Workbench routing kinds, offline Ed25519 licensing, and reproducible validation guidance.",applicationCategory:"DeveloperApplication",operatingSystem:"Linux, macOS, Windows",programmingLanguage:"Python",url:"https://qector.store/",downloadUrl:"https://pypi.org/project/qector-decoder-v3/",softwareVersion:i,author:{"@type":"Person",name:"Guillaume Lessard",url:"https://github.com/GuillaumeLessard"},maintainer:{"@type":"Organization",name:"iD01t Productions"},identifier:"https://pypi.org/project/qector-decoder-v3/",license:"https://qector.store/license/",offers:{"@type":"Offer",price:"0",priceCurrency:"USD",availability:"https://schema.org/InStock"}},{"@type":"Organization",name:"QECTOR",url:"https://qector.store/",logo:"https://qector.store/images/logo.png",email:"admin@qector.store",founder:{"@type":"Person",name:"Guillaume Lessard",identifier:"0009-0000-3465-3753"},address:{"@type":"PostalAddress",addressLocality:"Longueuil",addressRegion:"QC",postalCode:"J4K 3H7",addressCountry:"CA"},sameAs:["https://github.com/GuillaumeLessard/qector-decoder","https://pypi.org/project/qector-decoder-v3/","https://github.com/GuillaumeLessard/qector-claude-plugin","https://orcid.org/0009-0000-3465-3753"]}]}}),e.jsxs("section",{className:"relative min-h-screen flex items-center justify-center overflow-hidden","aria-label":"QECTOR hero",children:[e.jsx("img",{src:"/images/hero-bg.webp",alt:"","aria-hidden":"true",fetchPriority:"high",className:"absolute inset-0 w-full h-full object-cover z-0",style:{filter:"brightness(0.45) saturate(1.1)"}}),e.jsx("noscript",{children:e.jsx("img",{src:"/images/og-banner.png",alt:"","aria-hidden":"true",className:"absolute inset-0 w-full h-full object-cover z-0",style:{filter:"brightness(0.4)"}})}),e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-void/60 via-void/25 to-void z-[1]"}),e.jsx("div",{className:"absolute inset-0 bg-gradient-to-r from-cyan-500/[0.04] to-transparent z-[1]"}),e.jsxs("div",{className:"relative z-10 w-full min-w-0 text-center max-w-5xl mx-auto px-6 pt-24 pb-20",children:[e.jsxs(k,{to:"/changelog",className:"inline-flex max-w-full flex-wrap items-center justify-center gap-2 px-4 py-2 bg-surface/70 border border-cyan-300/20 rounded-full text-center text-xs leading-relaxed text-cyan-300 hover:bg-cyan-300/10 transition-all mb-8 backdrop-blur-sm",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-green-400 animate-pulse-dot"}),e.jsxs("span",{children:["v",i," · 18 verified wheels · Changelog →"]})]}),e.jsxs("h1",{className:"max-w-4xl mx-auto break-words text-3xl sm:text-5xl md:text-6xl lg:text-7xl font-extrabold tracking-tight leading-[1.05] mb-6",style:{textShadow:"0 4px 32px rgba(0,0,0,0.9)"},children:[e.jsx("span",{className:"text-transparent bg-clip-text bg-gradient-to-r from-cyan-300 to-cyan-400",children:"QEC Decoding"})," ","for Python"]}),e.jsxs("p",{className:"text-base sm:text-lg md:text-xl text-secondary/90 max-w-3xl mx-auto mb-5 leading-relaxed break-words",style:{textShadow:"0 2px 16px rgba(0,0,0,0.8)"},children:["One library for many decoder families on the same check matrix: Union-Find, exact MWPM, BP-OSD and Relay-BP for qLDPC codes, on CPU and GPU, with Stim and Sinter integration."," ",e.jsx("span",{className:"text-primary font-semibold",children:"Every correction is checked against its syndrome"}),", and commercial licences verify offline, so it runs air-gapped."]}),e.jsx("p",{className:"text-sm text-muted-foreground max-w-2xl mx-auto mb-10 leading-relaxed",style:{textShadow:"0 2px 12px rgba(0,0,0,0.8)"},children:"Built for hardware teams, qLDPC researchers and academic labs. Free for academic and non-commercial research; commercial plans from $79/month with a 14-day money-back guarantee."}),e.jsxs("div",{className:"flex flex-col sm:flex-row flex-wrap gap-3 sm:gap-4 justify-center items-stretch sm:items-center mb-10",children:[e.jsx(k,{to:"/pricing",className:"btn-gold px-8 py-4 text-sm sm:text-base font-bold w-full sm:w-auto",children:"View Plans & Pricing →"}),e.jsx(k,{to:"/decoder",className:"btn-cyan px-8 py-4 text-sm sm:text-base w-full sm:w-auto",children:"Explore the Decoder"}),e.jsx("a",{href:"https://github.com/qectorlab/qector-decoder-workbench-windows/releases/latest",className:"btn-outline px-8 py-4 text-sm sm:text-base w-full sm:w-auto",target:"_blank",rel:"noopener noreferrer",children:"Free Workbench GUI"})]}),e.jsx("div",{className:"max-w-2xl mx-auto mb-10 text-left",children:e.jsx(ze,{language:"bash",filename:"Quick start",code:`pip install qector-decoder-v3==${i} -python -c "from qector_decoder_v3 import BlossomDecoder; print('QECTOR OK')"`})}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 md:divide-x md:divide-white/5 border-t border-white/5 pt-6 max-w-2xl mx-auto",children:[e.jsx(D,{value:"17",label:"Decoder configurations"}),e.jsx(D,{value:"H·c = s",label:"Checked on every result"}),e.jsx(D,{value:"CPU + GPU",label:"Batch decoding"}),e.jsx(D,{value:"Offline",label:"Air-gapped licensing"})]}),e.jsxs("div",{className:"max-w-2xl mx-auto mt-10 p-5 md:p-6 bg-surface/50 border border-cyan-300/20 rounded-2xl text-center shadow-lg backdrop-blur-sm",children:[e.jsx("div",{className:"text-[10px] text-cyan-300 font-semibold tracking-[0.2em] mb-2 uppercase",children:"Evidence policy"}),e.jsx("div",{className:"text-lg md:text-xl font-bold text-primary tracking-tight mb-2",children:"No hardware-specific results published"}),e.jsxs("p",{className:"text-xs text-muted-foreground leading-relaxed max-w-lg mx-auto",children:["QECTOR publishes contracts, methodology, and artifacts rather than portable speed numbers. Read the ",e.jsx(k,{to:"/evidence",className:"link-accent",children:"evidence policy"})," before generating a local measurement."]})]})]})]}),e.jsx("section",{className:"section-band bg-surface/20 border-y border-gridline",children:e.jsxs("div",{className:"section-padding max-w-6xl mx-auto",children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("span",{className:"eyebrow-pill-gold mb-4",children:"Release Assurance"}),e.jsx("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight",children:"A Clear Path From Code to Evidence"}),e.jsx("p",{className:"text-secondary text-lg max-w-2xl mx-auto mt-3",children:"The public release, validation contract, and commercial delivery path are explicit by design."})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-5",children:[e.jsxs("div",{className:"card-surface p-6 border-cyan-300/20",children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-3",children:"Current Runtime"}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:"qector-decoder-v3 1.0.1"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"The live PyPI release supports Python 3.9 through 3.14 with 18 binary wheels across Windows, Linux, and macOS, each with build provenance."})]}),e.jsxs("div",{className:"card-surface p-6 border-cyan-300/20",children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-3",children:"Evidence Contract"}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:"Correctness before speed"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Every correction is checked against H c = s (mod 2). Measurements stay workload-scoped, artifact-hashed, and separate from universal performance claims."})]}),e.jsxs("div",{className:"card-surface p-6 border-gold-400/20",children:[e.jsx("div",{className:"text-gold-400 font-mono text-xs uppercase tracking-wider mb-3",children:"Secure Delivery"}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:"Signed, traceable licensing"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Commercial fulfillment requires a live Stripe event, issues a v2 Ed25519 token, and records independent billing and license delivery states."}),e.jsx(k,{to:"/license",className:"inline-block text-gold-400 text-sm font-medium hover:underline mt-3",children:"Read the license activation procedure →"})]})]}),e.jsxs("div",{className:"mt-8 card-surface p-6 border-cyan-300/20",children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-3",children:"Evidence Registry"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 text-sm",children:[e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21941046",target:"_blank",rel:"noopener noreferrer",className:"text-secondary hover:text-cyan-300 transition-colors",children:[e.jsx("span",{className:"block text-primary font-semibold",children:"Normative reference manual"}),e.jsx("span",{className:"font-mono text-xs",children:"10.5281/zenodo.21941046"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.21611214",target:"_blank",rel:"noopener noreferrer",className:"text-secondary hover:text-cyan-300 transition-colors",children:[e.jsx("span",{className:"block text-primary font-semibold",children:"v1.0.0 user manual"}),e.jsx("span",{className:"font-mono text-xs",children:"10.5281/zenodo.21611214"})]}),e.jsxs("a",{href:"https://doi.org/10.5281/zenodo.22046403",target:"_blank",rel:"noopener noreferrer",className:"text-secondary hover:text-cyan-300 transition-colors",children:[e.jsx("span",{className:"block text-primary font-semibold",children:"Verification and proof bundle"}),e.jsx("span",{className:"font-mono text-xs",children:"10.5281/zenodo.22046403"})]})]})]})]})}),e.jsx("section",{className:"section-thin border-t border-b border-gridline/30 bg-void/80",children:e.jsx("div",{className:"section-padding",children:e.jsxs("div",{className:"max-w-5xl mx-auto text-center",children:[e.jsx("p",{className:"text-xs text-muted-foreground uppercase tracking-widest mb-8",children:"Works with your existing stack"}),e.jsxs("div",{className:"flex flex-wrap justify-center items-center gap-x-12 gap-y-8",children:[e.jsxs("div",{className:"flex flex-col items-center gap-3",children:[e.jsx("span",{className:"text-2xl font-bold tracking-tight text-white/90",children:"Stim"}),e.jsx("code",{className:"text-xs bg-surface border border-gridline px-2 py-1 rounded text-muted-foreground font-mono",children:"pip install stim"})]}),e.jsxs("div",{className:"flex flex-col items-center gap-3",children:[e.jsx("span",{className:"text-2xl font-bold tracking-tight text-white/90",children:"Sinter"}),e.jsx("code",{className:"text-xs bg-surface border border-gridline px-2 py-1 rounded text-muted-foreground font-mono",children:"pip install sinter"})]}),e.jsxs("div",{className:"flex flex-col items-center gap-3",children:[e.jsx("span",{className:"text-2xl font-bold tracking-tight text-white/90",children:"Qiskit"}),e.jsx("code",{className:"text-xs bg-surface border border-gridline px-2 py-1 rounded text-muted-foreground font-mono",children:"pip install qiskit-qec"})]})]})]})})}),e.jsx("section",{ref:t=>n(t,0),className:"py-8 bg-void",children:e.jsx("div",{className:"section-padding",children:e.jsx("div",{className:"max-w-7xl mx-auto flex flex-wrap justify-center gap-3",children:[{icon:e.jsx(he,{size:16}),label:"Artifacts (GitHub)",href:"https://github.com/GuillaumeLessard/qector-decoder"},{icon:e.jsx(pe,{size:16}),label:"Mastering QEC · Google Play",href:"https://play.google.com/store/books/details?id=dGXuEQAAQBAJ",gold:!0},{icon:e.jsx(ue,{size:16}),label:`PyPI Wheel v${i}`,href:"https://pypi.org/project/qector-decoder-v3/"},{icon:e.jsx(fe,{size:16}),label:"Free Workbench App",href:"/workbench"},{icon:e.jsx(ge,{size:16}),label:"ORCID 0009-0000-3465-3753",href:"https://orcid.org/0009-0000-3465-3753"}].map(t=>e.jsx(Te,{icon:t.icon,label:t.label,href:t.href,variant:t.gold?"gold":"default"},t.label))})})}),e.jsx("section",{className:"section-band bg-void border-y border-gridline",children:e.jsxs("div",{className:"section-padding max-w-6xl mx-auto",children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("span",{className:"eyebrow-pill mb-4",children:"Proof Suite"}),e.jsx("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight",children:"Executable Verification for the 1.0 Line"}),e.jsx("p",{className:"text-secondary text-lg max-w-2xl mx-auto mt-3",children:"Hashed-lock reproducible install, CERT_STRICT gate, and Lean/Coq kernel evidence - verifiable against Reference Manual v1.0.0."})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-5",children:[e.jsxs("div",{className:"card-surface p-6 border-cyan-300/20",children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-3",children:"Reproducible Install"}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:"Hashed-lock & CERT_STRICT"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Proof runs are hashed-locked and gated by CERT_STRICT - no universal benchmark figures, only workload-scoped artifacts."})]}),e.jsxs("div",{className:"card-surface p-6 border-cyan-300/20",children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-3",children:"Reference Manual v1.0.0"}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:"DOI 10.5281/zenodo.21941046"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Normative manual with syndrome-faithfulness foundations, 15 backends, and API stability tiers. All proofs trace to this document."})]}),e.jsxs("div",{className:"card-surface p-6 border-cyan-300/20",children:[e.jsx("div",{className:"text-cyan-300 font-mono text-xs uppercase tracking-wider mb-3",children:"Lean/Coq Evidence"}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:"Kernel-checked proofs"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed",children:"Executable suite checks GF(2) invariants and logical cosets with Lean/Coq kernels - evidence, not claims."})]})]}),e.jsxs("div",{className:"text-center mt-8",children:[e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-proof",target:"_blank",rel:"noopener noreferrer",className:"btn-cyan",children:"View qector-proof on GitHub"}),e.jsx("span",{className:"text-muted-foreground text-xs ml-3",children:"github.com/GuillaumeLessard/qector-proof"})]})]})}),e.jsx("section",{className:"section-feature bg-surface/30 border-t border-gridline",children:e.jsxs("div",{className:"section-padding max-w-6xl mx-auto",children:[e.jsxs("div",{ref:t=>n(t,1),className:"text-center mb-14",children:[e.jsx("span",{className:"eyebrow-pill mb-4",children:"How It Works"}),e.jsx("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight",children:"From Installation to Validation"}),e.jsx("p",{className:"text-secondary text-lg max-w-2xl mx-auto mt-3",children:"QECTOR integrates directly into your existing QEC workflow with minimal friction."})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-8",children:[{step:"01",title:"Install",desc:"Install the 1.0.1 wheel in a supported Python 3.9-3.14 environment alongside your existing Stim or PyMatching workflow.",detail:'pip install --upgrade "qector-decoder-v3>=1.0.1,<2"',code:!0},{step:"02",title:"Decode",desc:"Access 17 concrete Rust-accelerated decoder configurations through a unified Python API. Workbench also exposes AutoDecoder and Auto Router as two orchestration kinds, for 19 named kinds in total.",detail:"from qector_decoder_v3 import BlossomDecoder, BpOsdDecoder",code:!0},{step:"03",title:"Validate",desc:"Claims are scoped to a declared workload and backed by SHA-256 sealed artifacts. Run qector-doctor before relying on optional paths and preserve the report with the result.",detail:"evidence policy · SHA-256 sealed",code:!1}].map(t=>e.jsxs("div",{className:"card-surface p-6 relative",children:[e.jsx("div",{className:"text-4xl font-black text-cyan-300/20 absolute top-4 right-4 select-none",children:t.step}),e.jsx("div",{className:"w-10 h-10 rounded-full bg-cyan-300/10 border border-cyan-300/20 flex items-center justify-center text-cyan-300 font-bold text-sm mb-4",children:t.step}),e.jsx("h3",{className:"text-lg font-bold text-primary mb-2",children:t.title}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-3",children:t.desc}),t.code&&e.jsx("code",{className:"block text-xs bg-void border border-gridline rounded-lg px-3 py-2 text-cyan-300 font-mono overflow-x-auto",children:t.detail}),!t.code&&e.jsx("span",{className:"inline-flex items-center gap-1.5 text-xs text-cyan-300 font-mono bg-cyan-300/5 px-3 py-1.5 rounded-lg border border-cyan-300/10",children:t.detail})]},t.step))})]})}),e.jsxs("section",{id:"platform",className:"section-feature relative overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 pointer-events-none",style:{background:"radial-gradient(circle at center, rgba(103, 232, 249, 0.06) 0%, transparent 70%)"}}),e.jsx("div",{className:"section-padding relative z-10",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsx("div",{ref:t=>n(t,2),children:e.jsx(Z,{eyebrow:"Why QECTOR",heading:"More Than Just MWPM",description:"QEC decoding is not one-size-fits-all. Surface codes, qLDPC codes, optional batch paths, and simulation workloads each demand different decoders. QECTOR documents the supported contracts and the evidence needed to evaluate a selected workload."})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[{title:"Blossom MWPM (Exact)",tag:"Blossom",desc:"Weight-optimal exact minimum-weight perfect matching for graph-like codes. The reference decoder for surface codes.",proof:"Exact optimal matching · Stim-native"},{title:"qLDPC Support",tag:"BP-OSD (qLDPC)",desc:"Matching decoders are restricted to graphlike structures. BP-OSD handles reachable arbitrary GF(2) check matrices, including LDPC and qLDPC workloads.",proof:"Hyperedge-safe GF(2) path"},{title:"Workload-Scoped Execution",tag:"Union-Find + Optional GPU",desc:"Union-Find and optional GPU batch paths are available for supported workloads. Availability and performance must be verified on the target environment.",proof:"Environment-dependent paths"},{title:"One Library, Pluggable",tag:"Stim · PyMatching · Sinter · Qiskit",desc:"Drop QECTOR into any existing Stim or PyMatching workflow. Same API surface, swappable backend. No vendor lock-in.",proof:"Drop-in, same API surface"}].map((t,l)=>e.jsx("div",{ref:m=>n(m,3+l),children:e.jsx($e,{title:t.title,tag:t.tag,desc:t.desc,proof:t.proof})},t.title))})]})})]}),e.jsx("section",{id:"decoder-section",className:"section-feature bg-surface/50",children:e.jsx("div",{className:"section-padding",children:e.jsx("div",{className:"max-w-6xl mx-auto",children:e.jsxs("div",{ref:t=>n(t,7),className:"grid grid-cols-1 lg:grid-cols-2 gap-12 items-center",children:[e.jsxs("div",{children:[e.jsx("span",{className:"eyebrow-pill mb-4",children:"19 Workbench Kinds · 17 Concrete Configs"}),e.jsx("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-6",children:"Decoding Algorithms"}),e.jsx("p",{className:"text-secondary text-lg leading-relaxed mb-8",children:"Union-Find, Fast Union-Find, Blossom MWPM, Sparse Blossom, Belief-Matching, BP-OSD, GPU Batch (CUDA/OpenCL), Hybrid, Predecoded, two-stage, ambiguity-cluster, colour-code, space-time, and other concrete paths are exposed through a consistent Python API. Workbench adds the two orchestration kinds, AutoDecoder and Auto Router, to make 19 named kinds."}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[{label:" v1.0.1 Stable",desc:"Corrected code families and Union-Find peeling, Python 3.14, GPU on Pro licences, signed provenance for every wheel."},{label:" 18 Binary Wheels",desc:"Python 3.9-3.14 across Windows amd64, Linux x86_64, and macOS arm64, each tested on its own OS before release."},{label:" GPU Batch Paths",desc:"CUDA and OpenCL batch paths are available for supported hardware and drivers; OpenCL via source build."},{label:" Reproducible Harness",desc:"qector bench ships with the package; measure on your own hardware, no universal figures claimed."}].map(t=>e.jsxs("div",{className:"p-4 bg-void/50 border border-gridline/50 rounded-xl",children:[e.jsx("div",{className:"text-cyan-300 font-semibold text-sm mb-1",children:t.label}),e.jsx("div",{className:"text-muted-foreground text-xs leading-relaxed",children:t.desc})]},t.label))}),e.jsxs("div",{className:"flex flex-wrap gap-3 mt-8",children:[e.jsx("a",{href:"https://pypi.org/project/qector-decoder-v3/",target:"_blank",rel:"noopener noreferrer",children:e.jsx("img",{src:"https://img.shields.io/pypi/v/qector-decoder-v3?style=flat-square&color=24e7ff",alt:"qector-decoder-v3 version on PyPI",loading:"lazy"})}),e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",children:e.jsx("img",{src:"https://img.shields.io/github/v/release/GuillaumeLessard/qector-decoder?style=flat-square&color=24e7ff",alt:"Latest qector-decoder release on GitHub",loading:"lazy"})}),e.jsx("a",{href:"https://github.com/GuillaumeLessard/qector-decoder",target:"_blank",rel:"noopener noreferrer",children:e.jsx("img",{src:"https://img.shields.io/badge/GitHub-Artifacts-blue?logo=github",alt:"GitHub release artifacts for QECTOR",loading:"lazy"})})]})]}),e.jsx("div",{ref:t=>n(t,8),className:"relative w-full",children:e.jsx(Me,{})})]})})})}),e.jsx("section",{className:"section-feature relative",children:e.jsx("div",{className:"section-padding relative z-10",children:e.jsxs("div",{className:"max-w-6xl mx-auto",children:[e.jsxs("div",{ref:t=>n(t,9),children:[e.jsx(Z,{eyebrow:"Performance",heading:"Measure on Your Own Hardware"}),e.jsx(qe,{title:"Reproducible Benchmark Harness",statement:"No universal benchmark figures are published on this site, because results depend on your hardware, drivers, and workloads. The qector bench harness ships with the package so you can measure logical error rates and throughput on your own machines.",href:"https://github.com/GuillaumeLessard/qector-decoder",linkLabel:"GitHub Artifacts →",className:"max-w-3xl mx-auto mb-6"})]}),e.jsx("div",{ref:t=>n(t,10),className:"max-w-3xl mx-auto",children:e.jsxs("div",{className:"p-5 bg-void/50 border border-gridline/50 rounded-xl font-mono text-xs text-muted-foreground leading-relaxed overflow-x-auto",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-cyan-300",children:"$"}),' pip install "qector-decoder-v3[bench]"']}),e.jsxs("div",{children:[e.jsx("span",{className:"text-cyan-300",children:"$"})," qector-doctor"]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-cyan-300",children:"$"})," qector bench -d 5 -r 5 -s 10000 --decoder blossom --noise 0.001"]}),e.jsx("div",{className:"text-green-400 mt-2",children:"✓ Logical error rates and throughput written as reproducible JSON"})]})}),e.jsx("div",{className:"text-center mt-8 flex flex-wrap justify-center gap-3",children:e.jsx(k,{to:"/evidence",className:"btn-outline",children:"Evidence & Reports"})})]})})}),e.jsx("section",{className:"section-band bg-surface/20 border-t border-gridline",children:e.jsxs("div",{className:"section-padding max-w-5xl mx-auto",children:[e.jsx("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight text-center mb-10",children:"Enterprise Compliance & Licensing"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsxs("div",{className:"card-surface border-cyan-300/20 bg-void/50 p-8 rounded-2xl relative overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-r from-cyan-300/5 to-transparent pointer-events-none"}),e.jsx("h3",{className:"text-lg font-bold text-cyan-300 flex items-center gap-2 mb-4",children:"License Clarity"}),e.jsx("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:"The package is source-available under PolyForm Noncommercial 1.0.0 for community use. Commercial use, hosted services, and redistribution require the written scope described on the license and pricing pages."}),e.jsx(k,{to:"/commercial",className:"text-cyan-300 text-sm font-medium hover:underline",children:"Learn about licensing →"})]}),e.jsxs("div",{className:"card-surface border-gold-400/20 bg-void/50 p-8 rounded-2xl relative overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-r from-gold-400/5 to-transparent pointer-events-none"}),e.jsx("h3",{className:"text-lg font-bold text-gold-400 flex items-center gap-2 mb-4",children:"Commercial Licences, Air-Gapped"}),e.jsxs("p",{className:"text-secondary text-sm leading-relaxed mb-4",children:["Pro from ",S(L.proMonthly),"/month or ",S(L.proAnnual),"/year with GPU batch decoding, Lab for distance 63 and an SLA. Licences are verified offline, with no licence server, and every plan has a ",L.refundDays,"-day money-back guarantee."]}),e.jsx(k,{to:"/pricing",className:"btn-gold text-sm",children:"View Pricing & Tiers →"})]})]})]})}),e.jsx("section",{id:"pricing-section",className:"section-feature bg-surface/50 border-t border-gridline",children:e.jsx("div",{className:"section-padding",children:e.jsxs("div",{className:"max-w-xl mx-auto text-center",children:[e.jsxs("div",{ref:t=>n(t,11),className:"mb-6",children:[e.jsx("span",{className:"eyebrow-pill mb-4",children:"Self-Serve · Instant Clearance"}),e.jsx("h2",{className:"text-3xl font-bold mb-3",children:"QECTOR Pro"}),e.jsxs("p",{className:"text-secondary text-sm max-w-md mx-auto",children:["Air-gapped licence · Cancel any time · ",L.refundDays,"-day money-back guarantee"]})]}),e.jsxs("div",{ref:t=>n(t,12),className:"card-surface border-cyan-300/35 neon-border-cyan relative overflow-hidden p-8 rounded-2xl bg-void/80 text-center",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-cyan-300/5 to-transparent pointer-events-none"}),e.jsxs("div",{className:"mb-6",children:[e.jsxs("h3",{className:"text-4xl font-extrabold text-primary",children:[S(L.proMonthly),e.jsx("span",{className:"text-lg font-semibold text-muted-foreground",children:"/mo"})]}),e.jsxs("p",{className:"text-muted-foreground text-xs mt-1",children:["or ",S(L.proAnnual),"/year (2 months free) · Production use"]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row justify-center gap-3 mb-6",children:[e.jsxs("a",{href:J.proMonthly,className:"btn-cyan text-base font-bold py-3.5 px-8 rounded-xl shadow-lg shadow-cyan-300/20 inline-flex items-center justify-center gap-2",target:"_blank",rel:"noopener noreferrer",children:[e.jsxs("span",{children:["Buy Pro: ",S(L.proMonthly),"/mo"]}),e.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("line",{x1:"5",y1:"12",x2:"19",y2:"12"}),e.jsx("polyline",{points:"12 5 19 12 12 19"})]})]}),e.jsxs("a",{href:J.proAnnual,className:"btn-outline text-base py-3.5 px-8 rounded-xl",target:"_blank",rel:"noopener noreferrer",children:["Buy annual: ",S(L.proAnnual),"/yr"]})]}),e.jsx("div",{className:"border-t border-gridline/60 pt-4 mt-4 text-left space-y-2",children:["Full QECTOR Decoder v3 (all decoder families)","GPU (CUDA/OpenCL) batch decoding unlocked","Signed licence token, verified offline: works air-gapped","Email support (2 business day response)",`${L.refundDays}-day money-back guarantee on your first payment`].map(t=>e.jsxs("div",{className:"flex items-center gap-2 text-xs text-secondary",children:[e.jsx("span",{className:"text-green-400",children:"✓"}),e.jsx("span",{children:t})]},t))})]}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-4",children:["Need Lab, perpetual or OEM? ",e.jsx(k,{to:"/pricing",className:"text-cyan-300 hover:underline",children:"View all tiers →"})]})]})})})]})}const Ve=c.lazy(()=>g(()=>import("./About-Sj0SVf3I.js"),__vite__mapDeps([0,1,2,3,4,5,6]))),Ue=c.lazy(()=>g(()=>import("./Decoder-B0aQK11-.js"),__vite__mapDeps([7,1,8,2,3,4,5,6]))),Fe=c.lazy(()=>g(()=>import("./Workbench-Ct-U8BKA.js"),__vite__mapDeps([9,1,8,2,10,3,4,5,6]))),Qe=c.lazy(()=>g(()=>import("./McpServer-C5JtddAJ.js"),__vite__mapDeps([11,1,8,3,4,5,6,2]))),We=c.lazy(()=>g(()=>import("./ClaudePlugin-D4c0dp2L.js"),__vite__mapDeps([12,1,8,10,6,3,4,5,2]))),Be=c.lazy(()=>g(()=>import("./Blog-BFZmecCN.js"),__vite__mapDeps([13,1,14,3,4,5,6,2]))),He=c.lazy(()=>g(()=>import("./BlogPost-CkWMP1e_.js"),__vite__mapDeps([15,1,14,4,3,5,6,2]))),Ke=c.lazy(()=>g(()=>import("./Pricing-Cn8Zecmp.js"),__vite__mapDeps([16,1,17,3,4,5,8,2,6]))),Ye=c.lazy(()=>g(()=>import("./PricingFR-B_DF8Sg3.js"),__vite__mapDeps([18,1,17,3,4,5,8,2,6]))),Je=c.lazy(()=>g(()=>import("./Commercial-BPs2_LwV.js"),__vite__mapDeps([19,1,8,3,4,5,6,2]))),Ze=c.lazy(()=>g(()=>import("./Contact-DuHdX58e.js"),__vite__mapDeps([20,1,21,2,3,4,5,6]))),Xe=c.lazy(()=>g(()=>import("./License-DDdBqsPy.js"),__vite__mapDeps([22,1,8,3,4,5,6,2]))),et=c.lazy(()=>g(()=>import("./Privacy-CAKpuiQ_.js"),__vite__mapDeps([23,1,24,8,3,4,5,25,6,2]))),tt=c.lazy(()=>g(()=>import("./Terms-CBCTDevc.js"),__vite__mapDeps([26,1,24,8,3,4,5,27,6,2]))),rt=c.lazy(()=>g(()=>import("./TermsFR-CGlEiMoF.js"),__vite__mapDeps([28,1,24,8,3,4,5,27,6,2]))),st=c.lazy(()=>g(()=>import("./Refund-CRy_OFTy.js"),__vite__mapDeps([29,1,24,8,3,4,5,27,6,2]))),at=c.lazy(()=>g(()=>import("./RefundFR-KUCUHxUI.js"),__vite__mapDeps([30,1,24,8,3,4,5,27,6,2]))),nt=c.lazy(()=>g(()=>import("./PrivacyFR-yruEp8O3.js"),__vite__mapDeps([31,1,24,8,3,4,5,25,6,2]))),ot=c.lazy(()=>g(()=>import("./LicenseAgreement-prqWmpN4.js"),__vite__mapDeps([32,1,24,8,3,4,5,33,6,2]))),lt=c.lazy(()=>g(()=>import("./LicenseAgreementFR-vtWAZWNF.js"),__vite__mapDeps([34,1,24,8,3,4,5,33,6,2]))),it=c.lazy(()=>g(()=>import("./Security-CMQacbrM.js"),__vite__mapDeps([35,1,8,3,4,5,6,2]))),ct=c.lazy(()=>g(()=>import("./Compare-H6yva3AD.js"),__vite__mapDeps([36,1,8,3,4,5,6,2]))),dt=c.lazy(()=>g(()=>import("./Founder-C30HSU2C.js"),__vite__mapDeps([37,1,21,3,4,5,6,2]))),mt=c.lazy(()=>g(()=>import("./Evidence-BwlSEt0X.js"),__vite__mapDeps([38,1,8,2,10,3,4,5,6]))),xt=c.lazy(()=>g(()=>import("./Changelog-BkfmouBY.js"),__vite__mapDeps([39,1,8,10,3,4,5,6,2]))),ht=c.lazy(()=>g(()=>import("./TechnicalReference-BcuWSg0l.js"),__vite__mapDeps([40,1,8,2,6,3,4,5]))),pt=c.lazy(()=>g(()=>import("./Docs-KUXBA0rX.js"),__vite__mapDeps([41,1,8,2,3,4,5,6]))),ut=c.lazy(()=>g(()=>import("./Installer-BPMW9xjA.js"),__vite__mapDeps([42,1,8,3,4,5,6,2]))),ft=c.lazy(()=>g(()=>import("./Manual-DufMHAK3.js"),__vite__mapDeps([43,1,6,8,3,4,5,2]))),gt=c.lazy(()=>g(()=>import("./Success-B8_Hgbq9.js"),__vite__mapDeps([44,1,8,3,4,5,6,2]))),bt=c.lazy(()=>g(()=>import("./NotFound-D-ACnmyk.js"),__vite__mapDeps([45,1,8,3,4,5,6,2])));function yt(){return e.jsx(Re,{children:e.jsx(Le,{children:e.jsx(c.Suspense,{fallback:e.jsx(Se,{}),children:e.jsxs(ne,{children:[e.jsx(u,{path:"/",element:e.jsx(Ge,{})}),e.jsx(u,{path:"/about",element:e.jsx(Ve,{})}),e.jsx(u,{path:"/decoder",element:e.jsx(Ue,{})}),e.jsx(u,{path:"/workbench",element:e.jsx(Fe,{})}),e.jsx(u,{path:"/mcp-server",element:e.jsx(Qe,{})}),e.jsx(u,{path:"/claude-plugin",element:e.jsx(We,{})}),e.jsx(u,{path:"/blog",element:e.jsx(Be,{})}),e.jsx(u,{path:"/blog/:id",element:e.jsx(He,{})}),e.jsx(u,{path:"/pricing",element:e.jsx(Ke,{})}),e.jsx(u,{path:"/fr/pricing",element:e.jsx(Ye,{})}),e.jsx(u,{path:"/commercial",element:e.jsx(Je,{})}),e.jsx(u,{path:"/contact",element:e.jsx(Ze,{})}),e.jsx(u,{path:"/license",element:e.jsx(Xe,{})}),e.jsx(u,{path:"/privacy",element:e.jsx(et,{})}),e.jsx(u,{path:"/terms",element:e.jsx(tt,{})}),e.jsx(u,{path:"/fr/terms",element:e.jsx(rt,{})}),e.jsx(u,{path:"/refund",element:e.jsx(st,{})}),e.jsx(u,{path:"/fr/refund",element:e.jsx(at,{})}),e.jsx(u,{path:"/fr/privacy",element:e.jsx(nt,{})}),e.jsx(u,{path:"/license-agreement",element:e.jsx(ot,{})}),e.jsx(u,{path:"/fr/license-agreement",element:e.jsx(lt,{})}),e.jsx(u,{path:"/security",element:e.jsx(it,{})}),e.jsx(u,{path:"/compare",element:e.jsx(ct,{})}),e.jsx(u,{path:"/guillaume-lessard",element:e.jsx(dt,{})}),e.jsx(u,{path:"/evidence",element:e.jsx(mt,{})}),e.jsx(u,{path:"/changelog",element:e.jsx(xt,{})}),e.jsx(u,{path:"/technical-reference",element:e.jsx(ht,{})}),e.jsx(u,{path:"/docs",element:e.jsx(pt,{})}),e.jsx(u,{path:"/installer",element:e.jsx(ut,{})}),e.jsx(u,{path:"/manual",element:e.jsx(ft,{})}),e.jsx(u,{path:"/success",element:e.jsx(gt,{})}),e.jsx(u,{path:"*",element:e.jsx(bt,{})})]})})})})}const X=e.jsx(c.StrictMode,{children:e.jsx(oe,{children:e.jsx(yt,{})})}),T=document.getElementById("root");if(T.childElementCount===0)W.createRoot(T).render(X);else{const s=document.createElement("div");s.setAttribute("aria-hidden","true"),s.style.cssText="position:absolute;top:0;left:0;width:100%;visibility:hidden;pointer-events:none;",T.after(s);let i=!1;const n=()=>{i||(i=!0,l.disconnect(),T.remove(),s.removeAttribute("style"),s.removeAttribute("aria-hidden"),s.id="root")},t=()=>s.querySelector("footer")!==null&&s.querySelector("[data-page-loader]")===null,l=new MutationObserver(()=>{t()&&requestAnimationFrame(n)});l.observe(s,{childList:!0,subtree:!0}),window.setTimeout(n,4e3),W.createRoot(s).render(X)}export{$e as A,ze as C,qe as E,De as J,J as L,L as P,Me as Q,Ae as S,Z as a,S as b,Ct as c,_t as d,ee as u}; diff --git a/assets/index-Bqoypqx2.css b/assets/index-Bqoypqx2.css deleted file mode 100644 index e2dae144..00000000 --- a/assets/index-Bqoypqx2.css +++ /dev/null @@ -1 +0,0 @@ -*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,system-ui,-apple-system,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:JetBrains Mono,Fira Code,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px}:root{--background: 222 47% 4%;--foreground: 210 40% 93%;--card: 222 47% 7%;--card-foreground: 210 40% 93%;--popover: 222 47% 8%;--popover-foreground: 210 40% 93%;--primary: 187 92% 69%;--primary-foreground: 222 47% 4%;--secondary: 215 25% 70%;--secondary-foreground: 210 40% 93%;--muted: 215 25% 20%;--muted-foreground: 215 16% 72%;--accent: 187 92% 69%;--accent-foreground: 222 47% 4%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 0 0% 98%;--border: 215 25% 18%;--input: 215 25% 18%;--ring: 187 92% 69%;--radius: 1rem}html{scroll-behavior:smooth}.js-enabled #prerendered{display:none!important}body{overflow-x:hidden;--tw-bg-opacity: 1;background-color:rgb(2 6 23 / var(--tw-bg-opacity, 1));font-family:Inter,system-ui,-apple-system,sans-serif;color:hsl(var(--foreground));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-image:radial-gradient(circle at 10% 20%,rgba(103,232,249,.04) 0%,transparent 40%),radial-gradient(circle at 90% 80%,rgba(251,191,36,.02) 0%,transparent 40%),linear-gradient(to bottom,#020617,#0b1329);background-attachment:fixed}h1,h2,h3,h4,h5,h6{font-family:Inter,system-ui,-apple-system,sans-serif;letter-spacing:-.025em;color:hsl(var(--primary))}@media(min-width:768px){h1,h2,h3,h4,h5,h6{text-wrap:balance}}code{font-family:JetBrains Mono,Fira Code,monospace}::-moz-selection{background:#67e8f94d;color:#e2e8f0}::selection{background:#67e8f94d;color:#e2e8f0}.\!container{width:100%!important}.container{width:100%}@media(min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media(min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media(min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media(min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media(min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-kbd: #111827;--tw-prose-kbd-shadows: rgb(17 24 39 / 10%);--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-kbd: #fff;--tw-prose-invert-kbd-shadows: rgb(255 255 255 / 10%);--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-cyan{--tw-prose-links: #0891b2;--tw-prose-invert-links: #06b6d4}.prose-invert{--tw-prose-body: var(--tw-prose-invert-body);--tw-prose-headings: var(--tw-prose-invert-headings);--tw-prose-lead: var(--tw-prose-invert-lead);--tw-prose-links: var(--tw-prose-invert-links);--tw-prose-bold: var(--tw-prose-invert-bold);--tw-prose-counters: var(--tw-prose-invert-counters);--tw-prose-bullets: var(--tw-prose-invert-bullets);--tw-prose-hr: var(--tw-prose-invert-hr);--tw-prose-quotes: var(--tw-prose-invert-quotes);--tw-prose-quote-borders: var(--tw-prose-invert-quote-borders);--tw-prose-captions: var(--tw-prose-invert-captions);--tw-prose-kbd: var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows: var(--tw-prose-invert-kbd-shadows);--tw-prose-code: var(--tw-prose-invert-code);--tw-prose-pre-code: var(--tw-prose-invert-pre-code);--tw-prose-pre-bg: var(--tw-prose-invert-pre-bg);--tw-prose-th-borders: var(--tw-prose-invert-th-borders);--tw-prose-td-borders: var(--tw-prose-invert-td-borders)}.btn-cyan{display:inline-flex;align-items:center;justify-content:center;border-radius:calc(var(--radius) + 4px);background-image:linear-gradient(to right,var(--tw-gradient-stops));--tw-gradient-from: #22d3ee var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 211 238 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);--tw-gradient-to: #67e8f9 var(--tw-gradient-to-position);padding:.75rem 1.5rem;font-weight:700;--tw-text-opacity: 1;color:rgb(2 6 23 / var(--tw-text-opacity, 1));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;animation-duration:.3s}.btn-cyan:hover{--tw-gradient-from: #67e8f9 var(--tw-gradient-from-position);--tw-gradient-to: rgb(103 232 249 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);--tw-gradient-to: #a5f3fc var(--tw-gradient-to-position);--tw-shadow: 0 0 24px rgba(103,232,249,.45);--tw-shadow-colored: 0 0 24px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.btn-cyan:active{--tw-scale-x: .97;--tw-scale-y: .97;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.btn-gold{display:inline-flex;align-items:center;justify-content:center;border-radius:calc(var(--radius) + 4px);border-width:1px;border-color:#fbbf2499;background-color:#fbbf240d;padding:.75rem 1.5rem;font-weight:700;--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;animation-duration:.3s}.btn-gold:hover{--tw-border-opacity: 1;border-color:rgb(251 191 36 / var(--tw-border-opacity, 1));background-color:#fbbf241a;--tw-shadow: 0 0 24px rgba(251,191,36,.25);--tw-shadow-colored: 0 0 24px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.btn-gold:active{--tw-scale-x: .97;--tw-scale-y: .97;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.btn-outline{display:inline-flex;align-items:center;justify-content:center;border-radius:calc(var(--radius) + 4px);border-width:1px;--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity, 1));padding:.75rem 1.5rem;color:hsl(var(--secondary));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;animation-duration:.3s}.btn-outline:hover{border-color:#67e8f966;background-color:#ffffff0d;color:hsl(var(--primary))}.btn-outline:active{--tw-scale-x: .97;--tw-scale-y: .97;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.card-surface{border-radius:1rem;border-width:1px;border-color:#1e293bcc;background-color:#0b132966;padding:1.5rem;--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.5s;animation-duration:.5s}.card-surface:hover{border-color:#67e8f94d;--tw-shadow: 0 0 30px rgba(103,232,249,.12);--tw-shadow-colored: 0 0 30px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.card-surface:not(.revealed),.prose:not(.revealed){opacity:0;transform:translateY(30px)}.card-surface.revealed,.prose.revealed{opacity:1;transform:translateY(0);transition:opacity .7s ease-out,transform .7s ease-out}.section-padding{padding-left:1.5rem;padding-right:1.5rem}@media(min-width:640px){.section-padding{padding-left:2rem;padding-right:2rem}}@media(min-width:1024px){.section-padding{padding-left:4rem;padding-right:4rem}}@media(min-width:1280px){.section-padding{padding-left:6rem;padding-right:6rem}}.eyebrow-pill{display:inline-flex;align-items:center;gap:.5rem;border-radius:9999px;border-width:1px;border-color:#67e8f933;background-color:#67e8f91a;padding:.375rem .75rem;font-size:.75rem;line-height:1rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1))}.eyebrow-pill-gold{display:inline-flex;align-items:center;gap:.5rem;border-radius:9999px;border-width:1px;border-color:#fbbf2433;background-color:#fbbf241a;padding:.375rem .75rem;font-size:.75rem;line-height:1rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.link-accent{--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1));text-underline-offset:4px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}.link-accent:hover{--tw-text-opacity: 1;color:rgb(165 243 252 / var(--tw-text-opacity, 1));text-decoration-line:underline}.section-feature{padding-top:5rem;padding-bottom:5rem}@media(min-width:768px){.section-feature{padding-top:7rem;padding-bottom:7rem}}.section-band{padding-top:4rem;padding-bottom:4rem}@media(min-width:768px){.section-band{padding-top:5rem;padding-bottom:5rem}}.section-thin{padding-top:2.5rem;padding-bottom:2.5rem}@media(min-width:768px){.section-thin{padding-top:3rem;padding-bottom:3rem}}.glass-nav{border-width:1px;border-color:#ffffff1a;background-color:#0b1329bf;--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.neon-border-cyan{box-shadow:0 0 24px #67e8f91f,inset 0 0 24px #67e8f90a}.neon-border-gold{box-shadow:0 0 24px #fbbf241f,inset 0 0 24px #fbbf240a}.quantum-grid-bg{background-size:30px 30px;background-image:linear-gradient(to right,rgba(255,255,255,.015) 1px,transparent 1px),linear-gradient(to bottom,rgba(255,255,255,.015) 1px,transparent 1px)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.-bottom-12{bottom:-3rem}.-left-12{left:-3rem}.-left-\[40px\]{left:-40px}.-right-12{right:-3rem}.-top-12{top:-3rem}.-top-3{top:-.75rem}.bottom-0{bottom:0}.bottom-3{bottom:.75rem}.left-0{left:0}.left-1\/2{left:50%}.left-2{left:.5rem}.left-3{left:.75rem}.left-\[-1px\]{left:-1px}.left-\[50\%\]{left:50%}.right-0{right:0}.right-1{right:.25rem}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.top-0{top:0}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-1\/3{top:33.333333%}.top-1\/4{top:25%}.top-24{top:6rem}.top-3{top:.75rem}.top-3\.5{top:.875rem}.top-4{top:1rem}.top-6{top:1.5rem}.top-\[1px\]{top:1px}.top-\[50\%\]{top:50%}.top-\[60\%\]{top:60%}.top-full{top:100%}.isolate{isolation:isolate}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.z-\[1\]{z-index:1}.order-first{order:-9999}.order-last{order:9999}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2 / span 2}.row-start-1{grid-row-start:1}.\!m-0{margin:0!important}.\!my-0{margin-top:0!important;margin-bottom:0!important}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-3\.5{margin-left:.875rem;margin-right:.875rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-4{margin-top:1rem;margin-bottom:1rem}.-ml-4{margin-left:-1rem}.-mt-4{margin-top:-1rem}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.mb-14{margin-bottom:3.5rem}.mb-16{margin-bottom:4rem}.mb-2{margin-bottom:.5rem}.mb-20{margin-bottom:5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-auto{margin-left:auto}.mr-2{margin-right:.5rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-10{margin-top:2.5rem}.mt-16{margin-top:4rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-auto{margin-top:auto}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-row{display:table-row}.grid{display:grid}.contents{display:contents}.hidden{display:none}.aspect-square{aspect-ratio:1 / 1}.aspect-video{aspect-ratio:16 / 9}.size-10{width:2.5rem;height:2.5rem}.size-2{width:.5rem;height:.5rem}.size-2\.5{width:.625rem;height:.625rem}.size-3{width:.75rem;height:.75rem}.size-3\.5{width:.875rem;height:.875rem}.size-4{width:1rem;height:1rem}.size-6{width:1.5rem;height:1.5rem}.size-7{width:1.75rem;height:1.75rem}.size-8{width:2rem;height:2rem}.size-9{width:2.25rem;height:2.25rem}.size-auto{width:auto;height:auto}.size-full{width:100%;height:100%}.h-0\.5{height:.125rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-40{height:10rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-72{height:18rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-96{height:24rem}.h-\[1\.15rem\]{height:1.15rem}.h-\[36rem\]{height:36rem}.h-\[500px\]{height:500px}.h-\[600px\]{height:600px}.h-\[800px\]{height:800px}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-\[var\(--radix-navigation-menu-viewport-height\)\]{height:var(--radix-navigation-menu-viewport-height)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-svh{height:100svh}.max-h-0{max-height:0px}.max-h-\[300px\]{max-height:300px}.max-h-\[400px\]{max-height:400px}.max-h-\[calc\(100dvh-110px\)\]{max-height:calc(100dvh - 110px)}.min-h-0{min-height:0px}.min-h-16{min-height:4rem}.min-h-4{min-height:1rem}.min-h-\[44px\]{min-height:44px}.min-h-\[500px\]{min-height:500px}.min-h-\[60vh\]{min-height:60vh}.min-h-\[80vh\]{min-height:80vh}.min-h-screen{min-height:100vh}.min-h-svh{min-height:100svh}.w-1\.5{width:.375rem}.w-1\/2{width:50%}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-3\/4{width:75%}.w-4{width:1rem}.w-40{width:10rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-96{width:24rem}.w-\[1000px\]{width:1000px}.w-\[100px\]{width:100px}.w-\[1px\]{width:1px}.w-\[36rem\]{width:36rem}.w-\[600px\]{width:600px}.w-\[800px\]{width:800px}.w-\[95\%\]{width:95%}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-10{min-width:2.5rem}.min-w-5{min-width:1.25rem}.min-w-8{min-width:2rem}.min-w-9{min-width:2.25rem}.min-w-\[120px\]{min-width:120px}.min-w-\[12rem\]{min-width:12rem}.min-w-\[140px\]{min-width:140px}.min-w-\[44px\]{min-width:44px}.min-w-\[560px\]{min-width:560px}.min-w-\[640px\]{min-width:640px}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-\[11rem\]{max-width:11rem}.max-w-\[440px\]{max-width:440px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-max{max-width:-moz-max-content;max-width:max-content}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-prose{max-width:65ch}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-full{flex-basis:100%}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-1\/3{--tw-translate-x: -33.333333%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-px{--tw-translate-x: -1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-2{--tw-translate-y: -.5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-\[140\%\]{--tw-translate-y: -140%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-1\/3{--tw-translate-x: 33.333333%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-px{--tw-translate-x: 1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0\.5{--tw-translate-y: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-1\/3{--tw-translate-y: 33.333333%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-2{--tw-translate-y: .5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y: calc(-50% - 2px) ;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-45{--tw-rotate: -45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-45{--tw-rotate: 45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.animate-gradient-xy{animation:gradient-xy 6s ease infinite}@keyframes ping{75%,to{transform:scale(2);opacity:0}}.animate-ping{animation:ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.4}}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-text{-webkit-user-select:text;-moz-user-select:text;user-select:text}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize-none{resize:none}.resize-y{resize:vertical}.scroll-my-1{scroll-margin-top:.25rem;scroll-margin-bottom:.25rem}.scroll-mt-32{scroll-margin-top:8rem}.scroll-py-1{scroll-padding-top:.25rem;scroll-padding-bottom:.25rem}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-\[0_1fr\]{grid-template-columns:0 1fr}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-items-start{justify-items:start}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-12{gap:3rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-7{gap:1.75rem}.gap-8{gap:2rem}.gap-\[--spacing\(var\(--gap\)\)\]{gap:var(--spacing(var(--gap)))}.gap-x-12{-moz-column-gap:3rem;column-gap:3rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-0\.5{row-gap:.125rem}.gap-y-1{row-gap:.25rem}.gap-y-8{row-gap:2rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem * var(--tw-space-y-reverse))}.space-y-12>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(3rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(3rem * var(--tw-space-y-reverse))}.space-y-14>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(3.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(3.5rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-20>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gridline>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(30 41 59 / var(--tw-divide-opacity, 1))}.divide-gridline\/50>:not([hidden])~:not([hidden]){border-color:#1e293b80}.divide-slate-800\/60>:not([hidden])~:not([hidden]){border-color:#1e293b99}.self-start{align-self:flex-start}.self-center{align-self:center}.self-stretch{align-self:stretch}.justify-self-end{justify-self:end}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-balance{text-wrap:balance}.text-pretty{text-wrap:pretty}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-\[23px\]{border-radius:23px}.rounded-\[2px\]{border-radius:2px}.rounded-\[4px\]{border-radius:4px}.rounded-\[calc\(var\(--radius\)-5px\)\]{border-radius:calc(var(--radius) - 5px)}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-xs{border-radius:calc(var(--radius) - 6px)}.rounded-l-md{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.rounded-r-md{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.rounded-tl-sm{border-top-left-radius:calc(var(--radius) - 4px)}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-4{border-width:4px}.border-y{border-top-width:1px;border-bottom-width:1px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-blue-400\/30{border-color:#60a5fa4d}.border-border{border-color:hsl(var(--border))}.border-cyan-300{--tw-border-opacity: 1;border-color:rgb(103 232 249 / var(--tw-border-opacity, 1))}.border-cyan-300\/10{border-color:#67e8f91a}.border-cyan-300\/20{border-color:#67e8f933}.border-cyan-300\/25{border-color:#67e8f940}.border-cyan-300\/30{border-color:#67e8f94d}.border-cyan-300\/35{border-color:#67e8f959}.border-cyan-300\/40{border-color:#67e8f966}.border-cyan-800\/40{border-color:#155e7566}.border-cyan-800\/50{border-color:#155e7580}.border-cyan-800\/60{border-color:#155e7599}.border-cyan-900\/40{border-color:#164e6366}.border-cyan-900\/50{border-color:#164e6380}.border-cyan-900\/60{border-color:#164e6399}.border-emerald-500\/30{border-color:#10b9814d}.border-gold-400\/20{border-color:#fbbf2433}.border-gold-400\/25{border-color:#fbbf2440}.border-gold-400\/30{border-color:#fbbf244d}.border-gold-400\/60{border-color:#fbbf2499}.border-green-400\/20{border-color:#4ade8033}.border-gridline{--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity, 1))}.border-gridline\/30{border-color:#1e293b4d}.border-gridline\/40{border-color:#1e293b66}.border-gridline\/50{border-color:#1e293b80}.border-gridline\/60{border-color:#1e293b99}.border-input{border-color:hsl(var(--input))}.border-primary{border-color:hsl(var(--primary))}.border-purple-400\/20{border-color:#c084fc33}.border-red-400\/20{border-color:#f8717133}.border-slate-700{--tw-border-opacity: 1;border-color:rgb(51 65 85 / var(--tw-border-opacity, 1))}.border-slate-800{--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity, 1))}.border-slate-800\/60{border-color:#1e293b99}.border-slate-800\/80{border-color:#1e293bcc}.border-slate-800\/90{border-color:#1e293be6}.border-transparent{border-color:transparent}.border-void{--tw-border-opacity: 1;border-color:rgb(2 6 23 / var(--tw-border-opacity, 1))}.border-white\/5{border-color:#ffffff0d}.border-l-transparent{border-left-color:transparent}.border-t-cyan-300{--tw-border-opacity: 1;border-top-color:rgb(103 232 249 / var(--tw-border-opacity, 1))}.border-t-transparent{border-top-color:transparent}.bg-\[\#050b14\]{--tw-bg-opacity: 1;background-color:rgb(5 11 20 / var(--tw-bg-opacity, 1))}.bg-\[\#0b1329\]\/40{background-color:#0b132966}.bg-accent{background-color:hsl(var(--accent))}.bg-background{background-color:hsl(var(--background))}.bg-black\/50{background-color:#00000080}.bg-blue-500\/10{background-color:#3b82f61a}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-cyan-300{--tw-bg-opacity: 1;background-color:rgb(103 232 249 / var(--tw-bg-opacity, 1))}.bg-cyan-300\/10{background-color:#67e8f91a}.bg-cyan-300\/5{background-color:#67e8f90d}.bg-cyan-400{--tw-bg-opacity: 1;background-color:rgb(34 211 238 / var(--tw-bg-opacity, 1))}.bg-cyan-400\/10{background-color:#22d3ee1a}.bg-cyan-400\/5{background-color:#22d3ee0d}.bg-cyan-500\/20{background-color:#06b6d433}.bg-cyan-900\/10{background-color:#164e631a}.bg-cyan-950\/50{background-color:#08334480}.bg-cyan-950\/60{background-color:#08334499}.bg-cyan-950\/80{background-color:#083344cc}.bg-destructive{--tw-bg-opacity: 1;background-color:hsl(var(--destructive) / var(--tw-bg-opacity, 1))}.bg-emerald-950\/50{background-color:#022c2280}.bg-foreground{background-color:hsl(var(--foreground))}.bg-gold-400{--tw-bg-opacity: 1;background-color:rgb(251 191 36 / var(--tw-bg-opacity, 1))}.bg-gold-400\/10{background-color:#fbbf241a}.bg-gold-400\/5{background-color:#fbbf240d}.bg-green-400{--tw-bg-opacity: 1;background-color:rgb(74 222 128 / var(--tw-bg-opacity, 1))}.bg-green-400\/10{background-color:#4ade801a}.bg-green-400\/5{background-color:#4ade800d}.bg-green-500\/80{background-color:#22c55ecc}.bg-gridline{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-input{background-color:hsl(var(--input))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted-foreground{background-color:hsl(var(--muted-foreground))}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/20{background-color:hsl(var(--primary) / .2)}.bg-purple-400\/10{background-color:#c084fc1a}.bg-red-400\/5{background-color:#f871710d}.bg-red-500\/80{background-color:#ef4444cc}.bg-secondary{background-color:hsl(var(--secondary))}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-slate-800\/20{background-color:#1e293b33}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-slate-900\/40{background-color:#0f172a66}.bg-slate-900\/50{background-color:#0f172a80}.bg-slate-900\/90{background-color:#0f172ae6}.bg-slate-950{--tw-bg-opacity: 1;background-color:rgb(2 6 23 / var(--tw-bg-opacity, 1))}.bg-slate-950\/90{background-color:#020617e6}.bg-surface{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-surface\/10{background-color:#0f172a1a}.bg-surface\/20{background-color:#0f172a33}.bg-surface\/30{background-color:#0f172a4d}.bg-surface\/50{background-color:#0f172a80}.bg-surface\/70{background-color:#0f172ab3}.bg-surface\/90{background-color:#0f172ae6}.bg-transparent{background-color:transparent}.bg-void{--tw-bg-opacity: 1;background-color:rgb(2 6 23 / var(--tw-bg-opacity, 1))}.bg-void\/30{background-color:#0206174d}.bg-void\/50{background-color:#02061780}.bg-void\/70{background-color:#020617b3}.bg-void\/80{background-color:#020617cc}.bg-void\/90{background-color:#020617e6}.bg-void\/95{background-color:#020617f2}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-yellow-500\/80{background-color:#eab308cc}.bg-\[radial-gradient\(ellipse_at_top\,_var\(--tw-gradient-stops\)\)\]{background-image:radial-gradient(ellipse at top,var(--tw-gradient-stops))}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-cyan-300{--tw-gradient-from: #67e8f9 var(--tw-gradient-from-position);--tw-gradient-to: rgb(103 232 249 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-300\/10{--tw-gradient-from: rgb(103 232 249 / .1) var(--tw-gradient-from-position);--tw-gradient-to: rgb(103 232 249 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-300\/5{--tw-gradient-from: rgb(103 232 249 / .05) var(--tw-gradient-from-position);--tw-gradient-to: rgb(103 232 249 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-300\/80{--tw-gradient-from: rgb(103 232 249 / .8) var(--tw-gradient-from-position);--tw-gradient-to: rgb(103 232 249 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-400{--tw-gradient-from: #22d3ee var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 211 238 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-400\/5{--tw-gradient-from: rgb(34 211 238 / .05) var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 211 238 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-500\/\[0\.04\]{--tw-gradient-from: rgb(6 182 212 / .04) var(--tw-gradient-from-position);--tw-gradient-to: rgb(6 182 212 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-900\/20{--tw-gradient-from: rgb(22 78 99 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(22 78 99 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-950\/40{--tw-gradient-from: rgb(8 51 68 / .4) var(--tw-gradient-from-position);--tw-gradient-to: rgb(8 51 68 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-gold-400\/5{--tw-gradient-from: rgb(251 191 36 / .05) var(--tw-gradient-from-position);--tw-gradient-to: rgb(251 191 36 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-400\/5{--tw-gradient-from: rgb(74 222 128 / .05) var(--tw-gradient-from-position);--tw-gradient-to: rgb(74 222 128 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-950{--tw-gradient-from: #020617 var(--tw-gradient-from-position);--tw-gradient-to: rgb(2 6 23 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-surface\/50{--tw-gradient-from: rgb(15 23 42 / .5) var(--tw-gradient-from-position);--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-void\/60{--tw-gradient-from: rgb(2 6 23 / .6) var(--tw-gradient-from-position);--tw-gradient-to: rgb(2 6 23 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-white{--tw-gradient-from: #fff var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-cyan-500{--tw-gradient-to: rgb(6 182 212 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #06b6d4 var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-gold-400\/30{--tw-gradient-to: rgb(251 191 36 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(251 191 36 / .3) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-surface{--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #0f172a var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-surface\/30{--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(15 23 42 / .3) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-surface\/40{--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(15 23 42 / .4) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-surface\/60{--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(15 23 42 / .6) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-transparent{--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), transparent var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-void{--tw-gradient-to: rgb(2 6 23 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #020617 var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-void\/25{--tw-gradient-to: rgb(2 6 23 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(2 6 23 / .25) var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-cyan-300\/10{--tw-gradient-to: rgb(103 232 249 / .1) var(--tw-gradient-to-position)}.to-cyan-400{--tw-gradient-to: #22d3ee var(--tw-gradient-to-position)}.to-cyan-950\/20{--tw-gradient-to: rgb(8 51 68 / .2) var(--tw-gradient-to-position)}.to-gold-400{--tw-gradient-to: #fbbf24 var(--tw-gradient-to-position)}.to-slate-400{--tw-gradient-to: #94a3b8 var(--tw-gradient-to-position)}.to-slate-950{--tw-gradient-to: #020617 var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to: transparent var(--tw-gradient-to-position)}.to-void{--tw-gradient-to: #020617 var(--tw-gradient-to-position)}.to-white\/70{--tw-gradient-to: rgb(255 255 255 / .7) var(--tw-gradient-to-position)}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.fill-current{fill:currentColor}.fill-foreground{fill:hsl(var(--foreground))}.fill-primary{fill:hsl(var(--primary))}.object-cover{-o-object-fit:cover;object-fit:cover}.\!p-5{padding:1.25rem!important}.p-0{padding:0}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-12{padding:3rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-3\.5{padding:.875rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[3px\]{padding:3px}.p-px{padding:1px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-24{padding-top:6rem;padding-bottom:6rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-10{padding-bottom:2.5rem}.pb-20{padding-bottom:5rem}.pb-24{padding-bottom:6rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-5{padding-left:1.25rem}.pl-8{padding-left:2rem}.pr-1{padding-right:.25rem}.pr-14{padding-right:3.5rem}.pr-2{padding-right:.5rem}.pr-2\.5{padding-right:.625rem}.pr-3{padding-right:.75rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-0\.5{padding-top:.125rem}.pt-12{padding-top:3rem}.pt-2{padding-top:.5rem}.pt-20{padding-top:5rem}.pt-24{padding-top:6rem}.pt-3{padding-top:.75rem}.pt-32{padding-top:8rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.align-middle{vertical-align:middle}.font-mono{font-family:JetBrains Mono,Fira Code,monospace}.font-sans{font-family:Inter,system-ui,-apple-system,sans-serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-8xl{font-size:6rem;line-height:1}.text-\[0\.65rem\]{font-size:.65rem}.text-\[0\.8rem\]{font-size:.8rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-sm\/relaxed{font-size:.875rem;line-height:1.625}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-\[1\.05\]{line-height:1.05}.leading-\[1\.1\]{line-height:1.1}.leading-none{line-height:1}.leading-normal{line-height:1.5}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-\[0\.2em\]{letter-spacing:.2em}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-accent-foreground{color:hsl(var(--accent-foreground))}.text-background{color:hsl(var(--background))}.text-blue-300{--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-current{color:currentColor}.text-cyan-100\/70{color:#cffafeb3}.text-cyan-200{--tw-text-opacity: 1;color:rgb(165 243 252 / var(--tw-text-opacity, 1))}.text-cyan-300{--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1))}.text-cyan-300\/20{color:#67e8f933}.text-cyan-300\/80{color:#67e8f9cc}.text-cyan-400{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.text-destructive{--tw-text-opacity: 1;color:hsl(var(--destructive) / var(--tw-text-opacity, 1))}.text-emerald-400{--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.text-foreground{color:hsl(var(--foreground))}.text-gold-200\/60{color:#fde68a99}.text-gold-300{--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.text-gold-400{--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.text-gold-400\/60{color:#fbbf2499}.text-gold-400\/80{color:#fbbf24cc}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/60{color:hsl(var(--muted-foreground) / .6)}.text-muted-foreground\/70{color:hsl(var(--muted-foreground) / .7)}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-purple-400{--tw-text-opacity: 1;color:rgb(192 132 252 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-secondary{color:hsl(var(--secondary))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-secondary\/80{color:hsl(var(--secondary) / .8)}.text-secondary\/90{color:hsl(var(--secondary) / .9)}.text-slate-100{--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity, 1))}.text-slate-200{--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity, 1))}.text-slate-300{--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity, 1))}.text-slate-400{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity, 1))}.text-slate-50{--tw-text-opacity: 1;color:rgb(248 250 252 / var(--tw-text-opacity, 1))}.text-slate-950{--tw-text-opacity: 1;color:rgb(2 6 23 / var(--tw-text-opacity, 1))}.text-transparent{color:transparent}.text-void{--tw-text-opacity: 1;color:rgb(2 6 23 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-white\/90{color:#ffffffe6}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.placeholder-cyan-300\/60::-moz-placeholder{color:#67e8f999}.placeholder-cyan-300\/60::placeholder{color:#67e8f999}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow: 0 0 0 1px hsl(var(--sidebar-border));--tw-shadow-colored: 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_12px_rgba\(103\,232\,249\,0\.35\)\]{--tw-shadow: 0 0 12px rgba(103,232,249,.35);--tw-shadow-colored: 0 0 12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_30px_rgba\(34\,211\,238\,0\.3\)\]{--tw-shadow: 0 0 30px rgba(34,211,238,.3);--tw-shadow-colored: 0 0 30px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_8px_rgba\(103\,232\,249\,0\.5\)\]{--tw-shadow: 0 0 8px rgba(103,232,249,.5);--tw-shadow-colored: 0 0 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_8px_rgba\(103\,232\,249\,0\.8\)\]{--tw-shadow: 0 0 8px rgba(103,232,249,.8);--tw-shadow-colored: 0 0 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-deep{--tw-shadow: 0 25px 50px -12px rgba(0, 0, 0, .5);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xs{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-cyan-300\/20{--tw-shadow-color: rgb(103 232 249 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-cyan-400\/20{--tw-shadow-color: rgb(34 211 238 / .2);--tw-shadow: var(--tw-shadow-colored)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-ring\/50{--tw-ring-color: hsl(var(--ring) / .5)}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.blur-3xl{--tw-blur: blur(64px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-\[100px\]{--tw-blur: blur(100px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-\[120px\]{--tw-blur: blur(120px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow{--tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / .1)) drop-shadow(0 1px 1px rgb(0 0 0 / .06));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-md{--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[left\,right\,width\]{transition-property:left,right,width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[margin\,opacity\]{transition-property:margin,opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\,height\,padding\]{transition-property:width,height,padding;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\]{transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-none{transition-property:none}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-1000{transition-duration:1s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-700{transition-duration:.7s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{transition-timing-function:linear}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity, 1);transform:translate3d(var(--tw-enter-translate-x, 0),var(--tw-enter-translate-y, 0),0) scale3d(var(--tw-enter-scale, 1),var(--tw-enter-scale, 1),var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity, 1);transform:translate3d(var(--tw-exit-translate-x, 0),var(--tw-exit-translate-y, 0),0) scale3d(var(--tw-exit-scale, 1),var(--tw-exit-scale, 1),var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0))}}.animate-in{animation-name:enter;animation-duration:.15s;--tw-enter-opacity: initial;--tw-enter-scale: initial;--tw-enter-rotate: initial;--tw-enter-translate-x: initial;--tw-enter-translate-y: initial}.fade-in,.fade-in-0{--tw-enter-opacity: 0}.zoom-in-95{--tw-enter-scale: .95}.slide-in-from-bottom-8{--tw-enter-translate-y: 2rem}.duration-100{animation-duration:.1s}.duration-1000{animation-duration:1s}.duration-200{animation-duration:.2s}.duration-300{animation-duration:.3s}.duration-500{animation-duration:.5s}.duration-700{animation-duration:.7s}.ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{animation-timing-function:linear}.ease-out{animation-timing-function:cubic-bezier(0,0,.2,1)}.running{animation-play-state:running}.animate-pulse-dot{animation:pulse-dot 2s ease-in-out infinite}.animate-gradient-xy{background-size:200% 200%;animation:gradient-xy 6s ease-in-out infinite}.\[--cell-size\:--spacing\(8\)\]{--cell-size: var(--spacing(8))}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.3}}@keyframes gradient-xy{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:#020617}::-webkit-scrollbar-thumb{background:#1e293b;border-radius:5px;border:2px solid #020617}::-webkit-scrollbar-thumb:hover{background:#334155}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.card-surface,.prose{opacity:1;transform:none;transition:none}}@media(forced-colors:active){.text-gradient-cyan,.text-gradient-gold{color:CanvasText!important}}.marker\:text-cyan-300\/60 *::marker{color:#67e8f999}.marker\:text-cyan-300\/60::marker{color:#67e8f999}.selection\:bg-cyan-400\/30 *::-moz-selection{background-color:#22d3ee4d}.selection\:bg-cyan-400\/30 *::selection{background-color:#22d3ee4d}.selection\:bg-primary *::-moz-selection{background-color:hsl(var(--primary))}.selection\:bg-primary *::selection{background-color:hsl(var(--primary))}.selection\:text-primary-foreground *::-moz-selection{color:hsl(var(--primary-foreground))}.selection\:text-primary-foreground *::selection{color:hsl(var(--primary-foreground))}.selection\:bg-cyan-400\/30::-moz-selection{background-color:#22d3ee4d}.selection\:bg-cyan-400\/30::selection{background-color:#22d3ee4d}.selection\:bg-primary::-moz-selection{background-color:hsl(var(--primary))}.selection\:bg-primary::selection{background-color:hsl(var(--primary))}.selection\:text-primary-foreground::-moz-selection{color:hsl(var(--primary-foreground))}.selection\:text-primary-foreground::selection{color:hsl(var(--primary-foreground))}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:1.75rem}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);inset:-.5rem}.after\:inset-y-0:after{content:var(--tw-content);top:0;bottom:0}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:w-1:after{content:var(--tw-content);width:.25rem}.after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.after\:-translate-x-1\/2:after{content:var(--tw-content);--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.first\:rounded-l-md:first-child{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.first\:border-l:first-child{border-left-width:1px}.last\:mt-0:last-child{margin-top:0}.last\:rounded-r-md:last-child{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.last\:border-0:last-child{border-width:0px}.last\:border-b-0:last-child{border-bottom-width:0px}.hover\:border-cyan-300\/30:hover{border-color:#67e8f94d}.hover\:border-cyan-300\/40:hover{border-color:#67e8f966}.hover\:border-cyan-400\/30:hover{border-color:#22d3ee4d}.hover\:border-cyan-400\/40:hover{border-color:#22d3ee66}.hover\:border-cyan-500\/30:hover{border-color:#06b6d44d}.hover\:border-cyan-500\/40:hover{border-color:#06b6d466}.hover\:border-red-900\/30:hover{border-color:#7f1d1d4d}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-cyan-200:hover{--tw-bg-opacity: 1;background-color:rgb(165 243 252 / var(--tw-bg-opacity, 1))}.hover\:bg-cyan-300:hover{--tw-bg-opacity: 1;background-color:rgb(103 232 249 / var(--tw-bg-opacity, 1))}.hover\:bg-cyan-300\/10:hover{background-color:#67e8f91a}.hover\:bg-cyan-300\/20:hover{background-color:#67e8f933}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}.hover\:bg-gold-400\/10:hover{background-color:#fbbf241a}.hover\:bg-gold-400\/20:hover{background-color:#fbbf2433}.hover\:bg-green-400\/20:hover{background-color:#4ade8033}.hover\:bg-muted:hover{background-color:hsl(var(--muted))}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-red-950\/20:hover{background-color:#450a0a33}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:bg-slate-800:hover{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.hover\:bg-slate-800\/50:hover{background-color:#1e293b80}.hover\:bg-slate-900\/40:hover{background-color:#0f172a66}.hover\:bg-surface:hover{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.hover\:bg-surface\/20:hover{background-color:#0f172a33}.hover\:bg-surface\/30:hover{background-color:#0f172a4d}.hover\:bg-surface\/40:hover{background-color:#0f172a66}.hover\:bg-surface\/60:hover{background-color:#0f172a99}.hover\:bg-white\/5:hover{background-color:#ffffff0d}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-cyan-100:hover{--tw-text-opacity: 1;color:rgb(207 250 254 / var(--tw-text-opacity, 1))}.hover\:text-cyan-200:hover{--tw-text-opacity: 1;color:rgb(165 243 252 / var(--tw-text-opacity, 1))}.hover\:text-cyan-300:hover{--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1))}.hover\:text-emerald-300:hover{--tw-text-opacity: 1;color:rgb(110 231 183 / var(--tw-text-opacity, 1))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-muted-foreground:hover{color:hsl(var(--muted-foreground))}.hover\:text-primary:hover{color:hsl(var(--primary))}.hover\:text-red-400:hover{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.hover\:text-slate-200:hover{--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover{--tw-shadow: 0 0 0 1px hsl(var(--sidebar-accent));--tw-shadow-colored: 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:ring-4:hover{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:not-sr-only:focus{position:static;width:auto;height:auto;padding:0;margin:0;overflow:visible;clip:auto;white-space:normal}.focus\:fixed:focus{position:fixed}.focus\:left-4:focus{left:1rem}.focus\:top-4:focus{top:1rem}.focus\:z-10:focus{z-index:10}.focus\:z-\[100\]:focus{z-index:100}.focus\:rounded-lg:focus{border-radius:var(--radius)}.focus\:border-cyan-300\/50:focus{border-color:#67e8f980}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:bg-cyan-300:focus{--tw-bg-opacity: 1;background-color:rgb(103 232 249 / var(--tw-bg-opacity, 1))}.focus\:px-4:focus{padding-left:1rem;padding-right:1rem}.focus\:py-2:focus{padding-top:.5rem;padding-bottom:.5rem}.focus\:font-semibold:focus{font-weight:600}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:text-void:focus{--tw-text-opacity: 1;color:rgb(2 6 23 / var(--tw-text-opacity, 1))}.focus\:opacity-100:focus{opacity:1}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border-ring:focus-visible{border-color:hsl(var(--ring))}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:outline-1:focus-visible{outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:hsl(var(--ring))}.focus-visible\:ring-0:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-4:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-cyan-300:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(103 232 249 / var(--tw-ring-opacity, 1))}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color: hsl(var(--destructive) / .2)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color: hsl(var(--ring) / .5)}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width: 1px}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-cyan-300\/20:disabled{background-color:#67e8f933}.disabled\:text-muted\/20:disabled{color:hsl(var(--muted) / .2)}.disabled\:text-void\/40:disabled{color:#02061766}.disabled\:opacity-50:disabled{opacity:.5}.group\/menu-item:focus-within .group-focus-within\/menu-item\:opacity-100{opacity:1}.group:hover .group-hover\:translate-x-0\.5{--tw-translate-x: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:translate-x-1{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:border-cyan-300\/30{border-color:#67e8f94d}.group:hover .group-hover\:bg-cyan-300\/20{background-color:#67e8f933}.group:hover .group-hover\:fill-cyan-300{fill:#67e8f9}.group:hover .group-hover\:stroke-cyan-200{stroke:#a5f3fc}.group:hover .group-hover\:stroke-cyan-300\/40{stroke:#67e8f966}.group:hover .group-hover\:text-cyan-200{--tw-text-opacity: 1;color:rgb(165 243 252 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:text-cyan-300{--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1))}.group\/menu-item:hover .group-hover\/menu-item\:opacity-100,.group:hover .group-hover\:opacity-100{opacity:1}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-50{opacity:.5}.has-\[\>button\]\:ml-\[-0\.45rem\]:has(>button){margin-left:-.45rem}.has-\[\>button\]\:mr-\[-0\.45rem\]:has(>button){margin-right:-.45rem}.has-\[\>kbd\]\:ml-\[-0\.35rem\]:has(>kbd){margin-left:-.35rem}.has-\[\>kbd\]\:mr-\[-0\.35rem\]:has(>kbd){margin-right:-.35rem}.has-\[\>\[data-align\=block-end\]\]\:h-auto:has(>[data-align=block-end]){height:auto}.has-\[\>\[data-align\=block-start\]\]\:h-auto:has(>[data-align=block-start]){height:auto}.has-\[\>textarea\]\:h-auto:has(>textarea){height:auto}.has-\[\>\[data-slot\=field\]\]\:w-full:has(>[data-slot=field]){width:100%}.has-\[\>svg\]\:grid-cols-\[calc\(var\(--spacing\)\*4\)_1fr\]:has(>svg){grid-template-columns:calc(var(--spacing) * 4) 1fr}.has-\[\>\[data-align\=block-end\]\]\:flex-col:has(>[data-align=block-end]){flex-direction:column}.has-\[\>\[data-align\=block-start\]\]\:flex-col:has(>[data-align=block-start]){flex-direction:column}.has-\[\>\[data-slot\=field\]\]\:flex-col:has(>[data-slot=field]){flex-direction:column}.has-\[\>\[data-slot\=field-content\]\]\:items-start:has(>[data-slot=field-content]){align-items:flex-start}.has-\[\>\[data-slot\=button-group\]\]\:gap-2:has(>[data-slot=button-group]){gap:.5rem}.has-\[\>\[data-slot\=checkbox-group\]\]\:gap-3:has(>[data-slot=checkbox-group]){gap:.75rem}.has-\[\>\[data-slot\=radio-group\]\]\:gap-3:has(>[data-slot=radio-group]){gap:.75rem}.has-\[\>svg\]\:gap-x-3:has(>svg){-moz-column-gap:.75rem;column-gap:.75rem}.has-\[\>\[data-slot\=field\]\]\:rounded-md:has(>[data-slot=field]){border-radius:calc(var(--radius) - 2px)}.has-\[\>\[data-slot\=field\]\]\:border:has(>[data-slot=field]){border-width:1px}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:border-ring:has([data-slot=input-group-control]:focus-visible){border-color:hsl(var(--ring))}.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:border-destructive:has([data-slot][aria-invalid=true]){--tw-border-opacity: 1;border-color:hsl(var(--destructive) / var(--tw-border-opacity, 1))}.has-\[\>svg\]\:p-0:has(>svg){padding:0}.has-\[\>svg\]\:px-2:has(>svg){padding-left:.5rem;padding-right:.5rem}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-left:.625rem;padding-right:.625rem}.has-\[\>svg\]\:px-3:has(>svg){padding-left:.75rem;padding-right:.75rem}.has-\[\>svg\]\:px-4:has(>svg){padding-left:1rem;padding-right:1rem}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-\[3px\]:has([data-slot=input-group-control]:focus-visible){--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-ring\/50:has([data-slot=input-group-control]:focus-visible){--tw-ring-color: hsl(var(--ring) / .5)}.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/20:has([data-slot][aria-invalid=true]){--tw-ring-color: hsl(var(--destructive) / .2)}.group\/item:has([data-slot=item-description]) .group-has-\[\[data-slot\=item-description\]\]\/item\:translate-y-0\.5{--tw-translate-y: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group\/item:has([data-slot=item-description]) .group-has-\[\[data-slot\=item-description\]\]\/item\:self-start{align-self:flex-start}.group\/field:has([data-orientation=horizontal]) .group-has-\[\[data-orientation\=horizontal\]\]\/field\:text-balance{text-wrap:balance}.group\/input-group:has(>input) .group-has-\[\>input\]\/input-group\:pb-2\.5{padding-bottom:.625rem}.group\/input-group:has(>input) .group-has-\[\>input\]\/input-group\:pt-2\.5{padding-top:.625rem}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-selected\:text-muted-foreground[aria-selected=true]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true],.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[vaul-drawer-direction\=bottom\]\:inset-x-0[data-vaul-drawer-direction=bottom]{left:0;right:0}.data-\[vaul-drawer-direction\=left\]\:inset-y-0[data-vaul-drawer-direction=left],.data-\[vaul-drawer-direction\=right\]\:inset-y-0[data-vaul-drawer-direction=right]{top:0;bottom:0}.data-\[vaul-drawer-direction\=top\]\:inset-x-0[data-vaul-drawer-direction=top]{left:0;right:0}.data-\[vaul-drawer-direction\=bottom\]\:bottom-0[data-vaul-drawer-direction=bottom]{bottom:0}.data-\[vaul-drawer-direction\=left\]\:left-0[data-vaul-drawer-direction=left]{left:0}.data-\[vaul-drawer-direction\=right\]\:right-0[data-vaul-drawer-direction=right]{right:0}.data-\[vaul-drawer-direction\=top\]\:top-0[data-vaul-drawer-direction=top]{top:0}.data-\[active\=true\]\:z-10[data-active=true]{z-index:10}.data-\[vaul-drawer-direction\=bottom\]\:mt-24[data-vaul-drawer-direction=bottom]{margin-top:6rem}.data-\[vaul-drawer-direction\=top\]\:mb-24[data-vaul-drawer-direction=top]{margin-bottom:6rem}.data-\[orientation\=horizontal\]\:h-1\.5[data-orientation=horizontal]{height:.375rem}.data-\[orientation\=horizontal\]\:h-full[data-orientation=horizontal]{height:100%}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=vertical\]\:h-auto[data-orientation=vertical]{height:auto}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[panel-group-direction\=vertical\]\:h-px[data-panel-group-direction=vertical]{height:1px}.data-\[size\=default\]\:h-9[data-size=default]{height:2.25rem}.data-\[size\=sm\]\:h-8[data-size=sm]{height:2rem}.data-\[vaul-drawer-direction\=bottom\]\:max-h-\[80vh\][data-vaul-drawer-direction=bottom],.data-\[vaul-drawer-direction\=top\]\:max-h-\[80vh\][data-vaul-drawer-direction=top]{max-height:80vh}.data-\[orientation\=vertical\]\:min-h-44[data-orientation=vertical]{min-height:11rem}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:w-1\.5[data-orientation=vertical]{width:.375rem}.data-\[orientation\=vertical\]\:w-auto[data-orientation=vertical]{width:auto}.data-\[orientation\=vertical\]\:w-full[data-orientation=vertical]{width:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[panel-group-direction\=vertical\]\:w-full[data-panel-group-direction=vertical]{width:100%}.data-\[vaul-drawer-direction\=left\]\:w-3\/4[data-vaul-drawer-direction=left],.data-\[vaul-drawer-direction\=right\]\:w-3\/4[data-vaul-drawer-direction=right]{width:75%}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=checked\]\:translate-x-\[calc\(100\%-2px\)\][data-state=checked]{--tw-translate-x: calc(100% - 2px) ;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes accordion-up{0%{height:var(--radix-accordion-content-height)}to{height:0}}.data-\[state\=closed\]\:animate-accordion-up[data-state=closed]{animation:accordion-up .2s ease-out}@keyframes accordion-down{0%{height:0}to{height:var(--radix-accordion-content-height)}}.data-\[state\=open\]\:animate-accordion-down[data-state=open]{animation:accordion-down .2s ease-out}.data-\[orientation\=vertical\]\:flex-col[data-orientation=vertical],.data-\[panel-group-direction\=vertical\]\:flex-col[data-panel-group-direction=vertical]{flex-direction:column}.data-\[slot\=checkbox-group\]\:gap-3[data-slot=checkbox-group]{gap:.75rem}.data-\[range-end\=true\]\:rounded-md[data-range-end=true]{border-radius:calc(var(--radius) - 2px)}.data-\[range-middle\=true\]\:rounded-none[data-range-middle=true]{border-radius:0}.data-\[range-start\=true\]\:rounded-md[data-range-start=true]{border-radius:calc(var(--radius) - 2px)}.data-\[selected\=true\]\:rounded-none[data-selected=true],.data-\[spacing\=0\]\:rounded-none[data-spacing="0"]{border-radius:0}.data-\[range-end\=true\]\:rounded-r-md[data-range-end=true]{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.data-\[range-start\=true\]\:rounded-l-md[data-range-start=true]{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.data-\[vaul-drawer-direction\=bottom\]\:rounded-t-lg[data-vaul-drawer-direction=bottom]{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.data-\[vaul-drawer-direction\=top\]\:rounded-b-lg[data-vaul-drawer-direction=top]{border-bottom-right-radius:var(--radius);border-bottom-left-radius:var(--radius)}.data-\[spacing\=0\]\:data-\[variant\=outline\]\:border-l-0[data-variant=outline][data-spacing="0"]{border-left-width:0px}.data-\[vaul-drawer-direction\=bottom\]\:border-t[data-vaul-drawer-direction=bottom]{border-top-width:1px}.data-\[vaul-drawer-direction\=left\]\:border-r[data-vaul-drawer-direction=left]{border-right-width:1px}.data-\[vaul-drawer-direction\=right\]\:border-l[data-vaul-drawer-direction=right]{border-left-width:1px}.data-\[vaul-drawer-direction\=top\]\:border-b[data-vaul-drawer-direction=top]{border-bottom-width:1px}.data-\[active\=true\]\:border-ring[data-active=true]{border-color:hsl(var(--ring))}.data-\[state\=checked\]\:border-primary[data-state=checked]{border-color:hsl(var(--primary))}.data-\[active\=true\]\:bg-accent\/50[data-active=true]{background-color:hsl(var(--accent) / .5)}.data-\[range-end\=true\]\:bg-primary[data-range-end=true]{background-color:hsl(var(--primary))}.data-\[range-middle\=true\]\:bg-accent[data-range-middle=true]{background-color:hsl(var(--accent))}.data-\[range-start\=true\]\:bg-primary[data-range-start=true],.data-\[selected-single\=true\]\:bg-primary[data-selected-single=true]{background-color:hsl(var(--primary))}.data-\[selected\=true\]\:bg-accent[data-selected=true]{background-color:hsl(var(--accent))}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\[state\=on\]\:bg-accent[data-state=on],.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=open\]\:bg-accent\/50[data-state=open]{background-color:hsl(var(--accent) / .5)}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:hsl(var(--secondary))}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:hsl(var(--input))}.data-\[inset\]\:pl-8[data-inset]{padding-left:2rem}.data-\[variant\=label\]\:text-sm[data-variant=label]{font-size:.875rem;line-height:1.25rem}.data-\[variant\=legend\]\:text-base[data-variant=legend]{font-size:1rem;line-height:1.5rem}.data-\[active\=true\]\:font-medium[data-active=true]{font-weight:500}.data-\[active\=true\]\:text-accent-foreground[data-active=true]{color:hsl(var(--accent-foreground))}.data-\[error\=true\]\:text-destructive[data-error=true],.data-\[invalid\=true\]\:text-destructive[data-invalid=true]{--tw-text-opacity: 1;color:hsl(var(--destructive) / var(--tw-text-opacity, 1))}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:hsl(var(--muted-foreground))}.data-\[range-end\=true\]\:text-primary-foreground[data-range-end=true]{color:hsl(var(--primary-foreground))}.data-\[range-middle\=true\]\:text-accent-foreground[data-range-middle=true]{color:hsl(var(--accent-foreground))}.data-\[range-start\=true\]\:text-primary-foreground[data-range-start=true],.data-\[selected-single\=true\]\:text-primary-foreground[data-selected-single=true]{color:hsl(var(--primary-foreground))}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:hsl(var(--accent-foreground))}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:hsl(var(--primary-foreground))}.data-\[state\=on\]\:text-accent-foreground[data-state=on],.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:hsl(var(--accent-foreground))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[variant\=destructive\]\:text-destructive[data-variant=destructive]{--tw-text-opacity: 1;color:hsl(var(--destructive) / var(--tw-text-opacity, 1))}.data-\[disabled\=true\]\:opacity-50[data-disabled=true],.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=open\]\:opacity-100[data-state=open]{opacity:1}.data-\[spacing\=0\]\:shadow-none[data-spacing="0"]{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[spacing\=default\]\:data-\[variant\=outline\]\:shadow-xs[data-variant=outline][data-spacing=default],.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[active\=true\]\:ring-\[3px\][data-active=true]{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.data-\[active\=true\]\:ring-ring\/50[data-active=true]{--tw-ring-color: hsl(var(--ring) / .5)}.data-\[state\=closed\]\:duration-300[data-state=closed]{transition-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{transition-duration:.5s}.data-\[motion\^\=from-\]\:animate-in[data-motion^=from-],.data-\[state\=open\]\:animate-in[data-state=open],.data-\[state\=visible\]\:animate-in[data-state=visible]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity: initial;--tw-enter-scale: initial;--tw-enter-rotate: initial;--tw-enter-translate-x: initial;--tw-enter-translate-y: initial}.data-\[motion\^\=to-\]\:animate-out[data-motion^=to-],.data-\[state\=closed\]\:animate-out[data-state=closed],.data-\[state\=hidden\]\:animate-out[data-state=hidden]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity: initial;--tw-exit-scale: initial;--tw-exit-rotate: initial;--tw-exit-translate-x: initial;--tw-exit-translate-y: initial}.data-\[motion\^\=from-\]\:fade-in[data-motion^=from-]{--tw-enter-opacity: 0}.data-\[motion\^\=to-\]\:fade-out[data-motion^=to-],.data-\[state\=closed\]\:fade-out-0[data-state=closed],.data-\[state\=hidden\]\:fade-out[data-state=hidden]{--tw-exit-opacity: 0}.data-\[state\=open\]\:fade-in-0[data-state=open],.data-\[state\=visible\]\:fade-in[data-state=visible]{--tw-enter-opacity: 0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale: .95}.data-\[state\=open\]\:zoom-in-90[data-state=open]{--tw-enter-scale: .9}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale: .95}.data-\[motion\=from-end\]\:slide-in-from-right-52[data-motion=from-end]{--tw-enter-translate-x: 13rem}.data-\[motion\=from-start\]\:slide-in-from-left-52[data-motion=from-start]{--tw-enter-translate-x: -13rem}.data-\[motion\=to-end\]\:slide-out-to-right-52[data-motion=to-end]{--tw-exit-translate-x: 13rem}.data-\[motion\=to-start\]\:slide-out-to-left-52[data-motion=to-start]{--tw-exit-translate-x: -13rem}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y: -.5rem}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x: .5rem}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x: -.5rem}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y: .5rem}.data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y: 100%}.data-\[state\=closed\]\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x: -100%}.data-\[state\=closed\]\:slide-out-to-right[data-state=closed]{--tw-exit-translate-x: 100%}.data-\[state\=closed\]\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y: -100%}.data-\[state\=open\]\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y: 100%}.data-\[state\=open\]\:slide-in-from-left[data-state=open]{--tw-enter-translate-x: -100%}.data-\[state\=open\]\:slide-in-from-right[data-state=open]{--tw-enter-translate-x: 100%}.data-\[state\=open\]\:slide-in-from-top[data-state=open]{--tw-enter-translate-y: -100%}.data-\[state\=closed\]\:duration-300[data-state=closed]{animation-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{animation-duration:.5s}.\*\:data-\[slot\=select-value\]\:line-clamp-1[data-slot=select-value]>*{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\*\:data-\[slot\=select-value\]\:flex[data-slot=select-value]>*{display:flex}.\*\:data-\[slot\=select-value\]\:items-center[data-slot=select-value]>*{align-items:center}.\*\:data-\[slot\=select-value\]\:gap-2[data-slot=select-value]>*{gap:.5rem}.\*\:data-\[slot\=alert-description\]\:text-destructive\/90[data-slot=alert-description]>*{color:hsl(var(--destructive) / .9)}.data-\[panel-group-direction\=vertical\]\:after\:left-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);left:0}.data-\[panel-group-direction\=vertical\]\:after\:h-1[data-panel-group-direction=vertical]:after{content:var(--tw-content);height:.25rem}.data-\[panel-group-direction\=vertical\]\:after\:w-full[data-panel-group-direction=vertical]:after{content:var(--tw-content);width:100%}.data-\[panel-group-direction\=vertical\]\:after\:-translate-y-1\/2[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[panel-group-direction\=vertical\]\:after\:translate-x-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[spacing\=0\]\:first\:rounded-l-md:first-child[data-spacing="0"]{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.data-\[spacing\=0\]\:data-\[variant\=outline\]\:first\:border-l:first-child[data-variant=outline][data-spacing="0"]{border-left-width:1px}.data-\[spacing\=0\]\:last\:rounded-r-md:last-child[data-spacing="0"]{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.data-\[active\=true\]\:hover\:bg-accent:hover[data-active=true],.data-\[state\=open\]\:hover\:bg-accent:hover[data-state=open]{background-color:hsl(var(--accent))}.data-\[active\=true\]\:focus\:bg-accent:focus[data-active=true]{background-color:hsl(var(--accent))}.data-\[state\=open\]\:focus\:bg-accent:focus[data-state=open]{background-color:hsl(var(--accent))}.data-\[variant\=destructive\]\:focus\:bg-destructive\/10:focus[data-variant=destructive]{background-color:hsl(var(--destructive) / .1)}.data-\[variant\=destructive\]\:focus\:text-destructive:focus[data-variant=destructive]{--tw-text-opacity: 1;color:hsl(var(--destructive) / var(--tw-text-opacity, 1))}.group[data-disabled=true] .group-data-\[disabled\=true\]\:pointer-events-none{pointer-events:none}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:relative{position:relative}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]{left:calc(var(--sidebar-width) * -1)}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]{right:calc(var(--sidebar-width) * -1)}.group[data-side=left] .group-data-\[side\=left\]\:-right-4{right:-1rem}.group[data-side=right] .group-data-\[side\=right\]\:left-0{left:0}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:top-full{top:100%}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:z-10{z-index:10}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:-mt-8{margin-top:-2rem}.group\/field-group[data-variant=outline] .group-data-\[variant\=outline\]\/field-group\:-mb-2{margin-bottom:-.5rem}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:mt-1\.5{margin-top:.375rem}.group\/drawer-content[data-vaul-drawer-direction=bottom] .group-data-\[vaul-drawer-direction\=bottom\]\/drawer-content\:block{display:block}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:hidden{display:none}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\)\]{width:calc(var(--sidebar-width-icon) + (--spacing(4)))}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\+2px\)\]{width:calc(var(--sidebar-width-icon) + (--spacing(4)) + 2px)}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:w-0{width:0px}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-side=right] .group-data-\[side\=right\]\:rotate-180,.group[data-state=open] .group-data-\[state\=open\]\:rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:overflow-hidden,.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:overflow-hidden{overflow:hidden}.group[data-variant=floating] .group-data-\[variant\=floating\]\:rounded-lg{border-radius:var(--radius)}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:rounded-md{border-radius:calc(var(--radius) - 2px)}.group[data-variant=floating] .group-data-\[variant\=floating\]\:border,.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:border{border-width:1px}.group[data-side=left] .group-data-\[side\=left\]\:border-r{border-right-width:1px}.group[data-side=right] .group-data-\[side\=right\]\:border-l{border-left-width:1px}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:border-ring{border-color:hsl(var(--ring))}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:bg-popover{background-color:hsl(var(--popover))}.group\/drawer-content[data-vaul-drawer-direction=bottom] .group-data-\[vaul-drawer-direction\=bottom\]\/drawer-content\:text-center,.group\/drawer-content[data-vaul-drawer-direction=top] .group-data-\[vaul-drawer-direction\=top\]\/drawer-content\:text-center{text-align:center}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:text-popover-foreground{color:hsl(var(--popover-foreground))}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:opacity-0{opacity:0}.group\/field[data-disabled=true] .group-data-\[disabled\=true\]\/field\:opacity-50,.group\/input-group[data-disabled=true] .group-data-\[disabled\=true\]\/input-group\:opacity-50,.group[data-disabled=true] .group-data-\[disabled\=true\]\:opacity-50{opacity:.5}.group[data-variant=floating] .group-data-\[variant\=floating\]\:shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-\[3px\]{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-ring\/50{--tw-ring-color: hsl(var(--ring) / .5)}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:duration-200{transition-duration:.2s;animation-duration:.2s}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:after\:left-full:after{content:var(--tw-content);left:100%}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:animate-in[data-state=open]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity: initial;--tw-enter-scale: initial;--tw-enter-rotate: initial;--tw-enter-translate-x: initial;--tw-enter-translate-y: initial}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:animate-out[data-state=closed]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity: initial;--tw-exit-scale: initial;--tw-exit-rotate: initial;--tw-exit-translate-x: initial;--tw-exit-translate-y: initial}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity: 0}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity: 0}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale: .95}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale: .95}.peer\/menu-button[data-size=default]~.peer-data-\[size\=default\]\/menu-button\:top-1\.5{top:.375rem}.peer\/menu-button[data-size=lg]~.peer-data-\[size\=lg\]\/menu-button\:top-2\.5{top:.625rem}.peer\/menu-button[data-size=sm]~.peer-data-\[size\=sm\]\/menu-button\:top-1{top:.25rem}.prose-headings\:font-bold :is(:where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *))){font-weight:700}.prose-headings\:tracking-tight :is(:where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *))){letter-spacing:-.025em}.prose-a\:text-cyan-300 :is(:where(a):not(:where([class~=not-prose],[class~=not-prose] *))){--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1))}.prose-a\:no-underline :is(:where(a):not(:where([class~=not-prose],[class~=not-prose] *))){text-decoration-line:none}.hover\:prose-a\:underline :is(:where(a):not(:where([class~=not-prose],[class~=not-prose] *))):hover{text-decoration-line:underline}.prose-code\:rounded-md :is(:where(code):not(:where([class~=not-prose],[class~=not-prose] *))){border-radius:calc(var(--radius) - 2px)}.prose-code\:bg-cyan-950\/30 :is(:where(code):not(:where([class~=not-prose],[class~=not-prose] *))){background-color:#0833444d}.prose-code\:px-1\.5 :is(:where(code):not(:where([class~=not-prose],[class~=not-prose] *))){padding-left:.375rem;padding-right:.375rem}.prose-code\:py-0\.5 :is(:where(code):not(:where([class~=not-prose],[class~=not-prose] *))){padding-top:.125rem;padding-bottom:.125rem}.prose-code\:text-cyan-200 :is(:where(code):not(:where([class~=not-prose],[class~=not-prose] *))){--tw-text-opacity: 1;color:rgb(165 243 252 / var(--tw-text-opacity, 1))}.prose-pre\:border :is(:where(pre):not(:where([class~=not-prose],[class~=not-prose] *))){border-width:1px}.prose-pre\:border-slate-800 :is(:where(pre):not(:where([class~=not-prose],[class~=not-prose] *))){--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity, 1))}.prose-pre\:bg-slate-950\/80 :is(:where(pre):not(:where([class~=not-prose],[class~=not-prose] *))){background-color:#020617cc}.prose-img\:rounded-xl :is(:where(img):not(:where([class~=not-prose],[class~=not-prose] *))){border-radius:calc(var(--radius) + 4px)}.prose-img\:border :is(:where(img):not(:where([class~=not-prose],[class~=not-prose] *))){border-width:1px}.prose-img\:border-slate-800 :is(:where(img):not(:where([class~=not-prose],[class~=not-prose] *))){--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity, 1))}.dark\:border-input:is(.dark *){border-color:hsl(var(--input))}.dark\:bg-destructive\/60:is(.dark *){background-color:hsl(var(--destructive) / .6)}.dark\:bg-input\/30:is(.dark *){background-color:hsl(var(--input) / .3)}.dark\:bg-transparent:is(.dark *){background-color:transparent}.dark\:text-muted-foreground:is(.dark *){color:hsl(var(--muted-foreground))}.dark\:hover\:bg-accent\/50:hover:is(.dark *){background-color:hsl(var(--accent) / .5)}.dark\:hover\:bg-input\/50:hover:is(.dark *){background-color:hsl(var(--input) / .5)}.dark\:hover\:text-accent-foreground:hover:is(.dark *){color:hsl(var(--accent-foreground))}.dark\:focus-visible\:ring-destructive\/40:focus-visible:is(.dark *){--tw-ring-color: hsl(var(--destructive) / .4)}.dark\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/40:has([data-slot][aria-invalid=true]):is(.dark *){--tw-ring-color: hsl(var(--destructive) / .4)}.dark\:data-\[state\=active\]\:border-input[data-state=active]:is(.dark *){border-color:hsl(var(--input))}.dark\:data-\[state\=active\]\:bg-input\/30[data-state=active]:is(.dark *){background-color:hsl(var(--input) / .3)}.dark\:data-\[state\=checked\]\:bg-primary[data-state=checked]:is(.dark *){background-color:hsl(var(--primary))}.dark\:data-\[state\=checked\]\:bg-primary-foreground[data-state=checked]:is(.dark *){background-color:hsl(var(--primary-foreground))}.dark\:data-\[state\=unchecked\]\:bg-foreground[data-state=unchecked]:is(.dark *){background-color:hsl(var(--foreground))}.dark\:data-\[state\=unchecked\]\:bg-input\/80[data-state=unchecked]:is(.dark *){background-color:hsl(var(--input) / .8)}.dark\:data-\[state\=active\]\:text-foreground[data-state=active]:is(.dark *){color:hsl(var(--foreground))}.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:focus[data-variant=destructive]:is(.dark *){background-color:hsl(var(--destructive) / .2)}@media not all and (min-width:640px){.max-sm\:opacity-100{opacity:1}}@media(min-width:640px){.sm\:ml-6{margin-left:1.5rem}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:inline-flex{display:inline-flex}.sm\:hidden{display:none}.sm\:w-auto{width:auto}.sm\:min-w-\[80px\]{min-width:80px}.sm\:max-w-lg{max-width:32rem}.sm\:max-w-sm{max-width:24rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-end{justify-content:flex-end}.sm\:gap-2\.5{gap:.625rem}.sm\:gap-4{gap:1rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pl-2\.5{padding-left:.625rem}.sm\:pr-2\.5{padding-right:.625rem}.sm\:text-left{text-align:left}.sm\:text-5xl{font-size:3rem;line-height:1}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.data-\[vaul-drawer-direction\=left\]\:sm\:max-w-sm[data-vaul-drawer-direction=left],.data-\[vaul-drawer-direction\=right\]\:sm\:max-w-sm[data-vaul-drawer-direction=right]{max-width:24rem}}@media(min-width:768px){.md\:absolute{position:absolute}.md\:mx-0{margin-left:0;margin-right:0}.md\:mb-16{margin-bottom:4rem}.md\:ml-8{margin-left:2rem}.md\:block{display:block}.md\:flex{display:flex}.md\:table-cell{display:table-cell}.md\:w-\[var\(--radix-navigation-menu-viewport-width\)\]{width:var(--radix-navigation-menu-viewport-width)}.md\:w-auto{width:auto}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:items-center{align-items:center}.md\:justify-start{justify-content:flex-start}.md\:gap-1\.5{gap:.375rem}.md\:divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse: 0;border-right-width:calc(1px * var(--tw-divide-x-reverse));border-left-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}.md\:divide-white\/5>:not([hidden])~:not([hidden]){border-color:#ffffff0d}.md\:p-12{padding:3rem}.md\:p-6{padding:1.5rem}.md\:py-20{padding-top:5rem;padding-bottom:5rem}.md\:py-32{padding-top:8rem;padding-bottom:8rem}.md\:text-left{text-align:left}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}.md\:text-5xl{font-size:3rem;line-height:1}.md\:text-6xl{font-size:3.75rem;line-height:1}.md\:text-7xl{font-size:4.5rem;line-height:1}.md\:text-9xl{font-size:8rem;line-height:1}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}.md\:opacity-0{opacity:0}.md\:after\:hidden:after{content:var(--tw-content);display:none}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:m-2{margin:.5rem}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:ml-0{margin-left:0}.peer[data-variant=inset][data-state=collapsed]~.md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:ml-2{margin-left:.5rem}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:rounded-xl{border-radius:calc(var(--radius) + 4px)}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}}@media(min-width:1024px){.lg\:col-span-1{grid-column:span 1 / span 1}.lg\:col-span-2{grid-column:span 2 / span 2}.lg\:col-span-3{grid-column:span 3 / span 3}.lg\:col-span-4{grid-column:span 4 / span 4}.lg\:col-span-8{grid-column:span 8 / span 8}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:gap-8{gap:2rem}.lg\:text-6xl{font-size:3.75rem;line-height:1}.lg\:text-7xl{font-size:4.5rem;line-height:1}}.\[\&\+\[data-slot\=item-content\]\]\:flex-none+[data-slot=item-content]{flex:none}.\[\&\:first-child\[data-selected\=true\]_button\]\:rounded-l-md:first-child[data-selected=true] button{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\:last-child\[data-selected\=true\]_button\]\:rounded-r-md:last-child[data-selected=true] button{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\:nth-child\(2\)\[data-selected\=true\]_button\]\:rounded-l-md:nth-child(2)[data-selected=true] button{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.\[\&\>\*\:not\(\:first-child\)\]\:rounded-l-none>*:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.\[\&\>\*\:not\(\:first-child\)\]\:rounded-t-none>*:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.\[\&\>\*\:not\(\:first-child\)\]\:border-l-0>*:not(:first-child){border-left-width:0px}.\[\&\>\*\:not\(\:first-child\)\]\:border-t-0>*:not(:first-child){border-top-width:0px}.\[\&\>\*\:not\(\:last-child\)\]\:rounded-b-none>*:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0}.\[\&\>\*\:not\(\:last-child\)\]\:rounded-r-none>*:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.\[\&\>\*\]\:w-full>*{width:100%}.\[\&\>\*\]\:focus-visible\:relative:focus-visible>*{position:relative}.\[\&\>\*\]\:focus-visible\:z-10:focus-visible>*{z-index:10}.\[\&\>\*\]\:data-\[slot\=field\]\:p-4[data-slot=field]>*{padding:1rem}.\[\&\>\.sr-only\]\:w-auto>.sr-only{width:auto}.\[\&\>\[data-slot\=field-group\]\]\:gap-4>[data-slot=field-group]{gap:1rem}.\[\&\>\[data-slot\=field-label\]\]\:flex-auto>[data-slot=field-label]{flex:1 1 auto}.has-\[select\[aria-hidden\=true\]\:last-child\]\:\[\&\>\[data-slot\=select-trigger\]\:last-of-type\]\:rounded-r-md>[data-slot=select-trigger]:last-of-type:has(select[aria-hidden=true]:last-child){border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\>\[data-slot\=select-trigger\]\:not\(\[class\*\=\'w-\'\]\)\]\:w-fit>[data-slot=select-trigger]:not([class*=w-]){width:-moz-fit-content;width:fit-content}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y: 2px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>a\:hover\]\:text-primary>a:hover{color:hsl(var(--primary))}.\[\&\>a\]\:underline>a{text-decoration-line:underline}.\[\&\>a\]\:underline-offset-4>a{text-underline-offset:4px}.\[\&\>button\]\:hidden>button{display:none}.\[\&\>input\]\:flex-1>input{flex:1 1 0%}.has-\[\>\[data-align\=block-end\]\]\:\[\&\>input\]\:pt-3>input:has(>[data-align=block-end]){padding-top:.75rem}.has-\[\>\[data-align\=block-start\]\]\:\[\&\>input\]\:pb-3>input:has(>[data-align=block-start]){padding-bottom:.75rem}.has-\[\>\[data-align\=inline-end\]\]\:\[\&\>input\]\:pr-2>input:has(>[data-align=inline-end]){padding-right:.5rem}.has-\[\>\[data-align\=inline-start\]\]\:\[\&\>input\]\:pl-2>input:has(>[data-align=inline-start]){padding-left:.5rem}.\[\&\>kbd\]\:rounded-\[calc\(var\(--radius\)-5px\)\]>kbd{border-radius:calc(var(--radius) - 5px)}.\[\&\>span\:last-child\]\:truncate>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.\[\&\>span\]\:text-xs>span{font-size:.75rem;line-height:1rem}.\[\&\>span\]\:opacity-70>span{opacity:.7}.\[\&\>svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5>svg:not([class*=size-]){width:.875rem;height:.875rem}.\[\&\>svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4>svg:not([class*=size-]){width:1rem;height:1rem}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3>svg{width:.75rem;height:.75rem}.\[\&\>svg\]\:size-3\.5>svg{width:.875rem;height:.875rem}.\[\&\>svg\]\:size-4>svg{width:1rem;height:1rem}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:translate-y-0\.5>svg{--tw-translate-y: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>svg\]\:text-current>svg{color:currentColor}.\[\&\>svg\]\:text-muted-foreground>svg{color:hsl(var(--muted-foreground))}.\[\&\>tr\]\:last\:border-b-0:last-child>tr{border-bottom-width:0px}.\[\&\[data-panel-group-direction\=vertical\]\>div\]\:rotate-90[data-panel-group-direction=vertical]>div{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-top:.375rem;padding-bottom:.375rem}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{font-weight:500}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:hsl(var(--muted-foreground))}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:3rem}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-top:.75rem;padding-bottom:.75rem}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:1.25rem}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:1.25rem}.\[\&_img\]\:size-full img{width:100%;height:100%}.\[\&_img\]\:object-cover img{-o-object-fit:cover;object-fit:cover}.\[\&_p\]\:leading-relaxed p{line-height:1.625}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3 svg:not([class*=size-]){width:.75rem;height:.75rem}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:1rem;height:1rem}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-6 svg:not([class*=size-]){width:1.5rem;height:1.5rem}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*=text-]){color:hsl(var(--muted-foreground))}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0px}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{right:-.5rem}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{left:-.5rem}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}[data-slot=card-content] .\[\[data-slot\=card-content\]_\&\]\:bg-transparent,[data-slot=popover-content] .\[\[data-slot\=popover-content\]_\&\]\:bg-transparent{background-color:transparent}[data-slot=tooltip-content] .\[\[data-slot\=tooltip-content\]_\&\]\:bg-background\/20{background-color:hsl(var(--background) / .2)}[data-slot=tooltip-content] .\[\[data-slot\=tooltip-content\]_\&\]\:text-background{color:hsl(var(--background))}[data-slot=tooltip-content] .dark\:\[\[data-slot\=tooltip-content\]_\&\]\:bg-background\/10:is(.dark *){background-color:hsl(var(--background) / .1)}[data-variant=legend]+.\[\[data-variant\=legend\]\+\&\]\:-mt-1\.5{margin-top:-.375rem}a.\[a\&\]\:hover\:bg-accent:hover{background-color:hsl(var(--accent))}a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:hsl(var(--secondary) / .9)}a.\[a\&\]\:hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))} diff --git a/assets/index-C0MRek1P.css b/assets/index-C0MRek1P.css deleted file mode 100644 index 688018d6..00000000 --- a/assets/index-C0MRek1P.css +++ /dev/null @@ -1 +0,0 @@ -*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,system-ui,-apple-system,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:JetBrains Mono,Fira Code,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px}:root{--background: 222 47% 4%;--foreground: 210 40% 93%;--card: 222 47% 7%;--card-foreground: 210 40% 93%;--popover: 222 47% 8%;--popover-foreground: 210 40% 93%;--primary: 187 92% 69%;--primary-foreground: 222 47% 4%;--secondary: 215 25% 70%;--secondary-foreground: 210 40% 93%;--muted: 215 25% 20%;--muted-foreground: 215 16% 72%;--accent: 187 92% 69%;--accent-foreground: 222 47% 4%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 0 0% 98%;--border: 215 25% 18%;--input: 215 25% 18%;--ring: 187 92% 69%;--radius: 1rem}html{scroll-behavior:smooth}.js-enabled #prerendered{display:none!important}body{overflow-x:hidden;--tw-bg-opacity: 1;background-color:rgb(2 6 23 / var(--tw-bg-opacity, 1));font-family:Inter,system-ui,-apple-system,sans-serif;color:hsl(var(--foreground));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-image:radial-gradient(circle at 10% 20%,rgba(103,232,249,.04) 0%,transparent 40%),radial-gradient(circle at 90% 80%,rgba(251,191,36,.02) 0%,transparent 40%),linear-gradient(to bottom,#020617,#0b1329);background-attachment:fixed}h1,h2,h3,h4,h5,h6{font-family:Inter,system-ui,-apple-system,sans-serif;letter-spacing:-.025em;color:hsl(var(--primary))}@media(min-width:768px){h1,h2,h3,h4,h5,h6{text-wrap:balance}}code{font-family:JetBrains Mono,Fira Code,monospace}::-moz-selection{background:#67e8f94d;color:#e2e8f0}::selection{background:#67e8f94d;color:#e2e8f0}.\!container{width:100%!important}.container{width:100%}@media(min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media(min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media(min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media(min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media(min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-kbd: #111827;--tw-prose-kbd-shadows: rgb(17 24 39 / 10%);--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-kbd: #fff;--tw-prose-invert-kbd-shadows: rgb(255 255 255 / 10%);--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-cyan{--tw-prose-links: #0891b2;--tw-prose-invert-links: #06b6d4}.prose-invert{--tw-prose-body: var(--tw-prose-invert-body);--tw-prose-headings: var(--tw-prose-invert-headings);--tw-prose-lead: var(--tw-prose-invert-lead);--tw-prose-links: var(--tw-prose-invert-links);--tw-prose-bold: var(--tw-prose-invert-bold);--tw-prose-counters: var(--tw-prose-invert-counters);--tw-prose-bullets: var(--tw-prose-invert-bullets);--tw-prose-hr: var(--tw-prose-invert-hr);--tw-prose-quotes: var(--tw-prose-invert-quotes);--tw-prose-quote-borders: var(--tw-prose-invert-quote-borders);--tw-prose-captions: var(--tw-prose-invert-captions);--tw-prose-kbd: var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows: var(--tw-prose-invert-kbd-shadows);--tw-prose-code: var(--tw-prose-invert-code);--tw-prose-pre-code: var(--tw-prose-invert-pre-code);--tw-prose-pre-bg: var(--tw-prose-invert-pre-bg);--tw-prose-th-borders: var(--tw-prose-invert-th-borders);--tw-prose-td-borders: var(--tw-prose-invert-td-borders)}.btn-cyan{display:inline-flex;align-items:center;justify-content:center;border-radius:calc(var(--radius) + 4px);background-image:linear-gradient(to right,var(--tw-gradient-stops));--tw-gradient-from: #22d3ee var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 211 238 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);--tw-gradient-to: #67e8f9 var(--tw-gradient-to-position);padding:.75rem 1.5rem;font-weight:700;--tw-text-opacity: 1;color:rgb(2 6 23 / var(--tw-text-opacity, 1));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;animation-duration:.3s}.btn-cyan:hover{--tw-gradient-from: #67e8f9 var(--tw-gradient-from-position);--tw-gradient-to: rgb(103 232 249 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);--tw-gradient-to: #a5f3fc var(--tw-gradient-to-position);--tw-shadow: 0 0 24px rgba(103,232,249,.45);--tw-shadow-colored: 0 0 24px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.btn-cyan:active{--tw-scale-x: .97;--tw-scale-y: .97;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.btn-gold{display:inline-flex;align-items:center;justify-content:center;border-radius:calc(var(--radius) + 4px);border-width:1px;border-color:#fbbf2499;background-color:#fbbf240d;padding:.75rem 1.5rem;font-weight:700;--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;animation-duration:.3s}.btn-gold:hover{--tw-border-opacity: 1;border-color:rgb(251 191 36 / var(--tw-border-opacity, 1));background-color:#fbbf241a;--tw-shadow: 0 0 24px rgba(251,191,36,.25);--tw-shadow-colored: 0 0 24px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.btn-gold:active{--tw-scale-x: .97;--tw-scale-y: .97;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.btn-outline{display:inline-flex;align-items:center;justify-content:center;border-radius:calc(var(--radius) + 4px);border-width:1px;--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity, 1));padding:.75rem 1.5rem;color:hsl(var(--secondary));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;animation-duration:.3s}.btn-outline:hover{border-color:#67e8f966;background-color:#ffffff0d;color:hsl(var(--primary))}.btn-outline:active{--tw-scale-x: .97;--tw-scale-y: .97;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:not(pre)>code{overflow-wrap:anywhere}.card-surface{min-width:0;border-radius:1rem;border-width:1px;border-color:#1e293bcc;background-color:#0b132966;padding:1.5rem;--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.5s;animation-duration:.5s}.card-surface:hover{border-color:#67e8f94d;--tw-shadow: 0 0 30px rgba(103,232,249,.12);--tw-shadow-colored: 0 0 30px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.js-enabled .card-surface:not(.revealed),.js-enabled .prose:not(.revealed){opacity:0;transform:translateY(30px)}.card-surface.revealed,.prose.revealed{opacity:1;transform:translateY(0);transition:opacity .7s ease-out,transform .7s ease-out}.section-padding{padding-left:1.5rem;padding-right:1.5rem}@media(min-width:640px){.section-padding{padding-left:2rem;padding-right:2rem}}@media(min-width:1024px){.section-padding{padding-left:4rem;padding-right:4rem}}@media(min-width:1280px){.section-padding{padding-left:6rem;padding-right:6rem}}.eyebrow-pill{display:inline-flex;align-items:center;gap:.5rem;border-radius:9999px;border-width:1px;border-color:#67e8f933;background-color:#67e8f91a;padding:.375rem .75rem;font-size:.75rem;line-height:1rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1))}.eyebrow-pill-gold{display:inline-flex;align-items:center;gap:.5rem;border-radius:9999px;border-width:1px;border-color:#fbbf2433;background-color:#fbbf241a;padding:.375rem .75rem;font-size:.75rem;line-height:1rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.link-accent{--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1));text-underline-offset:4px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}.link-accent:hover{--tw-text-opacity: 1;color:rgb(165 243 252 / var(--tw-text-opacity, 1));text-decoration-line:underline}.section-feature{padding-top:5rem;padding-bottom:5rem}@media(min-width:768px){.section-feature{padding-top:7rem;padding-bottom:7rem}}.section-band{padding-top:4rem;padding-bottom:4rem}@media(min-width:768px){.section-band{padding-top:5rem;padding-bottom:5rem}}.section-thin{padding-top:2.5rem;padding-bottom:2.5rem}@media(min-width:768px){.section-thin{padding-top:3rem;padding-bottom:3rem}}.glass-nav{border-width:1px;border-color:#ffffff1a;background-color:#0b1329bf;--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.neon-border-cyan{box-shadow:0 0 24px #67e8f91f,inset 0 0 24px #67e8f90a}.neon-border-gold{box-shadow:0 0 24px #fbbf241f,inset 0 0 24px #fbbf240a}.quantum-grid-bg{background-size:30px 30px;background-image:linear-gradient(to right,rgba(255,255,255,.015) 1px,transparent 1px),linear-gradient(to bottom,rgba(255,255,255,.015) 1px,transparent 1px)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.-bottom-12{bottom:-3rem}.-left-12{left:-3rem}.-left-\[40px\]{left:-40px}.-left-\[9999px\]{left:-9999px}.-right-12{right:-3rem}.-top-12{top:-3rem}.-top-3{top:-.75rem}.bottom-0{bottom:0}.bottom-3{bottom:.75rem}.left-0{left:0}.left-1\/2{left:50%}.left-2{left:.5rem}.left-3{left:.75rem}.left-\[-1px\]{left:-1px}.left-\[50\%\]{left:50%}.right-0{right:0}.right-1{right:.25rem}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.top-0{top:0}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-1\/3{top:33.333333%}.top-1\/4{top:25%}.top-24{top:6rem}.top-3{top:.75rem}.top-3\.5{top:.875rem}.top-4{top:1rem}.top-6{top:1.5rem}.top-\[1px\]{top:1px}.top-\[50\%\]{top:50%}.top-\[60\%\]{top:60%}.top-full{top:100%}.isolate{isolation:isolate}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.z-\[1\]{z-index:1}.order-first{order:-9999}.order-last{order:9999}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2 / span 2}.row-start-1{grid-row-start:1}.\!m-0{margin:0!important}.\!my-0{margin-top:0!important;margin-bottom:0!important}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-3\.5{margin-left:.875rem;margin-right:.875rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.-ml-4{margin-left:-1rem}.-mt-4{margin-top:-1rem}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.mb-14{margin-bottom:3.5rem}.mb-16{margin-bottom:4rem}.mb-2{margin-bottom:.5rem}.mb-20{margin-bottom:5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-auto{margin-left:auto}.mr-2{margin-right:.5rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-10{margin-top:2.5rem}.mt-16{margin-top:4rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-auto{margin-top:auto}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-row{display:table-row}.grid{display:grid}.hidden{display:none}.aspect-square{aspect-ratio:1 / 1}.aspect-video{aspect-ratio:16 / 9}.size-10{width:2.5rem;height:2.5rem}.size-2{width:.5rem;height:.5rem}.size-2\.5{width:.625rem;height:.625rem}.size-3{width:.75rem;height:.75rem}.size-3\.5{width:.875rem;height:.875rem}.size-4{width:1rem;height:1rem}.size-6{width:1.5rem;height:1.5rem}.size-7{width:1.75rem;height:1.75rem}.size-8{width:2rem;height:2rem}.size-9{width:2.25rem;height:2.25rem}.size-auto{width:auto;height:auto}.size-full{width:100%;height:100%}.h-0\.5{height:.125rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-40{height:10rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-72{height:18rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-96{height:24rem}.h-\[1\.15rem\]{height:1.15rem}.h-\[36rem\]{height:36rem}.h-\[500px\]{height:500px}.h-\[600px\]{height:600px}.h-\[800px\]{height:800px}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-\[var\(--radix-navigation-menu-viewport-height\)\]{height:var(--radix-navigation-menu-viewport-height)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-svh{height:100svh}.max-h-0{max-height:0px}.max-h-\[300px\]{max-height:300px}.max-h-\[400px\]{max-height:400px}.max-h-\[calc\(100dvh-110px\)\]{max-height:calc(100dvh - 110px)}.min-h-0{min-height:0px}.min-h-16{min-height:4rem}.min-h-4{min-height:1rem}.min-h-\[44px\]{min-height:44px}.min-h-\[500px\]{min-height:500px}.min-h-\[60vh\]{min-height:60vh}.min-h-\[80vh\]{min-height:80vh}.min-h-screen{min-height:100vh}.min-h-svh{min-height:100svh}.w-1\.5{width:.375rem}.w-1\/2{width:50%}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-3\/4{width:75%}.w-4{width:1rem}.w-40{width:10rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-96{width:24rem}.w-\[1000px\]{width:1000px}.w-\[100px\]{width:100px}.w-\[1px\]{width:1px}.w-\[20\%\]{width:20%}.w-\[36rem\]{width:36rem}.w-\[600px\]{width:600px}.w-\[800px\]{width:800px}.w-\[95\%\]{width:95%}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-10{min-width:2.5rem}.min-w-5{min-width:1.25rem}.min-w-8{min-width:2rem}.min-w-9{min-width:2.25rem}.min-w-\[120px\]{min-width:120px}.min-w-\[12rem\]{min-width:12rem}.min-w-\[140px\]{min-width:140px}.min-w-\[14rem\]{min-width:14rem}.min-w-\[44px\]{min-width:44px}.min-w-\[560px\]{min-width:560px}.min-w-\[640px\]{min-width:640px}.min-w-\[760px\]{min-width:760px}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-\[11rem\]{max-width:11rem}.max-w-\[440px\]{max-width:440px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-max{max-width:-moz-max-content;max-width:max-content}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-prose{max-width:65ch}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-full{flex-basis:100%}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-1\/3{--tw-translate-x: -33.333333%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-px{--tw-translate-x: -1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-2{--tw-translate-y: -.5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-\[140\%\]{--tw-translate-y: -140%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-1\/3{--tw-translate-x: 33.333333%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-px{--tw-translate-x: 1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0\.5{--tw-translate-y: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-1\/3{--tw-translate-y: 33.333333%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-2{--tw-translate-y: .5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y: calc(-50% - 2px) ;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-45{--tw-rotate: -45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-45{--tw-rotate: 45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes ping{75%,to{transform:scale(2);opacity:0}}.animate-ping{animation:ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.4}}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-text{-webkit-user-select:text;-moz-user-select:text;user-select:text}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize-none{resize:none}.resize-y{resize:vertical}.scroll-my-1{scroll-margin-top:.25rem;scroll-margin-bottom:.25rem}.scroll-mt-24{scroll-margin-top:6rem}.scroll-py-1{scroll-padding-top:.25rem;scroll-padding-bottom:.25rem}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-\[0_1fr\]{grid-template-columns:0 1fr}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-items-start{justify-items:start}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-12{gap:3rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-7{gap:1.75rem}.gap-8{gap:2rem}.gap-\[--spacing\(var\(--gap\)\)\]{gap:var(--spacing(var(--gap)))}.gap-x-12{-moz-column-gap:3rem;column-gap:3rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-0\.5{row-gap:.125rem}.gap-y-1{row-gap:.25rem}.gap-y-2{row-gap:.5rem}.gap-y-8{row-gap:2rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem * var(--tw-space-y-reverse))}.space-y-12>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(3rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(3rem * var(--tw-space-y-reverse))}.space-y-14>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(3.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(3.5rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-20>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gridline>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(30 41 59 / var(--tw-divide-opacity, 1))}.divide-gridline\/50>:not([hidden])~:not([hidden]){border-color:#1e293b80}.divide-slate-800\/60>:not([hidden])~:not([hidden]){border-color:#1e293b99}.self-start{align-self:flex-start}.self-center{align-self:center}.self-stretch{align-self:stretch}.justify-self-end{justify-self:end}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-balance{text-wrap:balance}.text-pretty{text-wrap:pretty}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[4px\]{border-radius:4px}.rounded-\[calc\(var\(--radius\)-5px\)\]{border-radius:calc(var(--radius) - 5px)}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-xs{border-radius:calc(var(--radius) - 6px)}.rounded-l-md{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.rounded-r-md{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.rounded-tl-sm{border-top-left-radius:calc(var(--radius) - 4px)}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-4{border-width:4px}.border-y{border-top-width:1px;border-bottom-width:1px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-blue-400\/30{border-color:#60a5fa4d}.border-border{border-color:hsl(var(--border))}.border-cyan-300{--tw-border-opacity: 1;border-color:rgb(103 232 249 / var(--tw-border-opacity, 1))}.border-cyan-300\/10{border-color:#67e8f91a}.border-cyan-300\/20{border-color:#67e8f933}.border-cyan-300\/25{border-color:#67e8f940}.border-cyan-300\/30{border-color:#67e8f94d}.border-cyan-300\/35{border-color:#67e8f959}.border-cyan-300\/40{border-color:#67e8f966}.border-cyan-300\/50{border-color:#67e8f980}.border-cyan-800\/40{border-color:#155e7566}.border-cyan-800\/50{border-color:#155e7580}.border-cyan-800\/60{border-color:#155e7599}.border-cyan-900\/40{border-color:#164e6366}.border-cyan-900\/50{border-color:#164e6380}.border-cyan-900\/60{border-color:#164e6399}.border-emerald-500\/30{border-color:#10b9814d}.border-gold-400\/20{border-color:#fbbf2433}.border-gold-400\/25{border-color:#fbbf2440}.border-gold-400\/30{border-color:#fbbf244d}.border-gold-400\/60{border-color:#fbbf2499}.border-green-400\/20{border-color:#4ade8033}.border-gridline{--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity, 1))}.border-gridline\/30{border-color:#1e293b4d}.border-gridline\/40{border-color:#1e293b66}.border-gridline\/50{border-color:#1e293b80}.border-gridline\/60{border-color:#1e293b99}.border-input{border-color:hsl(var(--input))}.border-primary{border-color:hsl(var(--primary))}.border-purple-400\/20{border-color:#c084fc33}.border-red-400\/20{border-color:#f8717133}.border-slate-700{--tw-border-opacity: 1;border-color:rgb(51 65 85 / var(--tw-border-opacity, 1))}.border-slate-800{--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity, 1))}.border-slate-800\/60{border-color:#1e293b99}.border-slate-800\/80{border-color:#1e293bcc}.border-slate-800\/90{border-color:#1e293be6}.border-transparent{border-color:transparent}.border-void{--tw-border-opacity: 1;border-color:rgb(2 6 23 / var(--tw-border-opacity, 1))}.border-white\/5{border-color:#ffffff0d}.border-l-transparent{border-left-color:transparent}.border-t-cyan-300{--tw-border-opacity: 1;border-top-color:rgb(103 232 249 / var(--tw-border-opacity, 1))}.border-t-transparent{border-top-color:transparent}.bg-\[\#050b14\]{--tw-bg-opacity: 1;background-color:rgb(5 11 20 / var(--tw-bg-opacity, 1))}.bg-\[\#0a1322\]{--tw-bg-opacity: 1;background-color:rgb(10 19 34 / var(--tw-bg-opacity, 1))}.bg-\[\#0b1329\]\/40{background-color:#0b132966}.bg-accent{background-color:hsl(var(--accent))}.bg-background{background-color:hsl(var(--background))}.bg-black\/50{background-color:#00000080}.bg-blue-500\/10{background-color:#3b82f61a}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-cyan-300{--tw-bg-opacity: 1;background-color:rgb(103 232 249 / var(--tw-bg-opacity, 1))}.bg-cyan-300\/10{background-color:#67e8f91a}.bg-cyan-300\/5{background-color:#67e8f90d}.bg-cyan-300\/\[0\.04\]{background-color:#67e8f90a}.bg-cyan-400{--tw-bg-opacity: 1;background-color:rgb(34 211 238 / var(--tw-bg-opacity, 1))}.bg-cyan-400\/10{background-color:#22d3ee1a}.bg-cyan-400\/5{background-color:#22d3ee0d}.bg-cyan-900\/10{background-color:#164e631a}.bg-cyan-950\/50{background-color:#08334480}.bg-cyan-950\/60{background-color:#08334499}.bg-cyan-950\/80{background-color:#083344cc}.bg-destructive{--tw-bg-opacity: 1;background-color:hsl(var(--destructive) / var(--tw-bg-opacity, 1))}.bg-emerald-950\/50{background-color:#022c2280}.bg-foreground{background-color:hsl(var(--foreground))}.bg-gold-400{--tw-bg-opacity: 1;background-color:rgb(251 191 36 / var(--tw-bg-opacity, 1))}.bg-gold-400\/10{background-color:#fbbf241a}.bg-gold-400\/5{background-color:#fbbf240d}.bg-green-400{--tw-bg-opacity: 1;background-color:rgb(74 222 128 / var(--tw-bg-opacity, 1))}.bg-green-400\/10{background-color:#4ade801a}.bg-green-400\/5{background-color:#4ade800d}.bg-green-500\/80{background-color:#22c55ecc}.bg-gridline{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-input{background-color:hsl(var(--input))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted-foreground{background-color:hsl(var(--muted-foreground))}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/20{background-color:hsl(var(--primary) / .2)}.bg-purple-400\/10{background-color:#c084fc1a}.bg-red-400\/5{background-color:#f871710d}.bg-red-500\/80{background-color:#ef4444cc}.bg-secondary{background-color:hsl(var(--secondary))}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-slate-800\/20{background-color:#1e293b33}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-slate-900\/40{background-color:#0f172a66}.bg-slate-900\/50{background-color:#0f172a80}.bg-slate-900\/90{background-color:#0f172ae6}.bg-slate-950{--tw-bg-opacity: 1;background-color:rgb(2 6 23 / var(--tw-bg-opacity, 1))}.bg-slate-950\/90{background-color:#020617e6}.bg-surface{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-surface\/10{background-color:#0f172a1a}.bg-surface\/20{background-color:#0f172a33}.bg-surface\/30{background-color:#0f172a4d}.bg-surface\/50{background-color:#0f172a80}.bg-surface\/70{background-color:#0f172ab3}.bg-surface\/90{background-color:#0f172ae6}.bg-transparent{background-color:transparent}.bg-void{--tw-bg-opacity: 1;background-color:rgb(2 6 23 / var(--tw-bg-opacity, 1))}.bg-void\/30{background-color:#0206174d}.bg-void\/50{background-color:#02061780}.bg-void\/70{background-color:#020617b3}.bg-void\/80{background-color:#020617cc}.bg-void\/90{background-color:#020617e6}.bg-void\/95{background-color:#020617f2}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-yellow-500\/80{background-color:#eab308cc}.bg-\[radial-gradient\(ellipse_at_top\,_var\(--tw-gradient-stops\)\)\]{background-image:radial-gradient(ellipse at top,var(--tw-gradient-stops))}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-cyan-300{--tw-gradient-from: #67e8f9 var(--tw-gradient-from-position);--tw-gradient-to: rgb(103 232 249 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-300\/10{--tw-gradient-from: rgb(103 232 249 / .1) var(--tw-gradient-from-position);--tw-gradient-to: rgb(103 232 249 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-300\/5{--tw-gradient-from: rgb(103 232 249 / .05) var(--tw-gradient-from-position);--tw-gradient-to: rgb(103 232 249 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-300\/80{--tw-gradient-from: rgb(103 232 249 / .8) var(--tw-gradient-from-position);--tw-gradient-to: rgb(103 232 249 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-400\/5{--tw-gradient-from: rgb(34 211 238 / .05) var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 211 238 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-500\/\[0\.04\]{--tw-gradient-from: rgb(6 182 212 / .04) var(--tw-gradient-from-position);--tw-gradient-to: rgb(6 182 212 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-900\/20{--tw-gradient-from: rgb(22 78 99 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(22 78 99 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-950\/40{--tw-gradient-from: rgb(8 51 68 / .4) var(--tw-gradient-from-position);--tw-gradient-to: rgb(8 51 68 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-gold-400\/5{--tw-gradient-from: rgb(251 191 36 / .05) var(--tw-gradient-from-position);--tw-gradient-to: rgb(251 191 36 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-400\/5{--tw-gradient-from: rgb(74 222 128 / .05) var(--tw-gradient-from-position);--tw-gradient-to: rgb(74 222 128 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-950{--tw-gradient-from: #020617 var(--tw-gradient-from-position);--tw-gradient-to: rgb(2 6 23 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-surface\/50{--tw-gradient-from: rgb(15 23 42 / .5) var(--tw-gradient-from-position);--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-void\/60{--tw-gradient-from: rgb(2 6 23 / .6) var(--tw-gradient-from-position);--tw-gradient-to: rgb(2 6 23 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-white{--tw-gradient-from: #fff var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-gold-400\/30{--tw-gradient-to: rgb(251 191 36 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(251 191 36 / .3) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-surface{--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #0f172a var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-surface\/30{--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(15 23 42 / .3) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-surface\/40{--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(15 23 42 / .4) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-surface\/60{--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(15 23 42 / .6) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-transparent{--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), transparent var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-void{--tw-gradient-to: rgb(2 6 23 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #020617 var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-void\/25{--tw-gradient-to: rgb(2 6 23 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(2 6 23 / .25) var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-cyan-300\/10{--tw-gradient-to: rgb(103 232 249 / .1) var(--tw-gradient-to-position)}.to-cyan-400{--tw-gradient-to: #22d3ee var(--tw-gradient-to-position)}.to-cyan-950\/20{--tw-gradient-to: rgb(8 51 68 / .2) var(--tw-gradient-to-position)}.to-slate-400{--tw-gradient-to: #94a3b8 var(--tw-gradient-to-position)}.to-slate-950{--tw-gradient-to: #020617 var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to: transparent var(--tw-gradient-to-position)}.to-void{--tw-gradient-to: #020617 var(--tw-gradient-to-position)}.to-white\/70{--tw-gradient-to: rgb(255 255 255 / .7) var(--tw-gradient-to-position)}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.fill-current{fill:currentColor}.fill-foreground{fill:hsl(var(--foreground))}.fill-primary{fill:hsl(var(--primary))}.object-cover{-o-object-fit:cover;object-fit:cover}.\!p-5{padding:1.25rem!important}.p-0{padding:0}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-12{padding:3rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-3\.5{padding:.875rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[3px\]{padding:3px}.p-px{padding:1px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-24{padding-top:6rem;padding-bottom:6rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-1{padding-bottom:.25rem}.pb-10{padding-bottom:2.5rem}.pb-16{padding-bottom:4rem}.pb-20{padding-bottom:5rem}.pb-24{padding-bottom:6rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pl-0{padding-left:0}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-5{padding-left:1.25rem}.pl-8{padding-left:2rem}.pr-1{padding-right:.25rem}.pr-14{padding-right:3.5rem}.pr-2{padding-right:.5rem}.pr-2\.5{padding-right:.625rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-0\.5{padding-top:.125rem}.pt-12{padding-top:3rem}.pt-2{padding-top:.5rem}.pt-20{padding-top:5rem}.pt-24{padding-top:6rem}.pt-3{padding-top:.75rem}.pt-32{padding-top:8rem}.pt-36{padding-top:9rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.font-mono{font-family:JetBrains Mono,Fira Code,monospace}.font-sans{font-family:Inter,system-ui,-apple-system,sans-serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-8xl{font-size:6rem;line-height:1}.text-\[0\.65rem\]{font-size:.65rem}.text-\[0\.8rem\]{font-size:.8rem}.text-\[0\.9em\]{font-size:.9em}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-sm\/relaxed{font-size:.875rem;line-height:1.625}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-\[1\.05\]{line-height:1.05}.leading-\[1\.08\]{line-height:1.08}.leading-\[1\.1\]{line-height:1.1}.leading-none{line-height:1}.leading-normal{line-height:1.5}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-\[0\.2em\]{letter-spacing:.2em}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-accent-foreground{color:hsl(var(--accent-foreground))}.text-background{color:hsl(var(--background))}.text-blue-300{--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-current{color:currentColor}.text-cyan-200{--tw-text-opacity: 1;color:rgb(165 243 252 / var(--tw-text-opacity, 1))}.text-cyan-300{--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1))}.text-cyan-300\/20{color:#67e8f933}.text-cyan-300\/80{color:#67e8f9cc}.text-cyan-400{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.text-destructive{--tw-text-opacity: 1;color:hsl(var(--destructive) / var(--tw-text-opacity, 1))}.text-emerald-400{--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.text-foreground{color:hsl(var(--foreground))}.text-gold-200\/60{color:#fde68a99}.text-gold-300{--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.text-gold-400{--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.text-gold-400\/60{color:#fbbf2499}.text-gold-400\/80{color:#fbbf24cc}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/60{color:hsl(var(--muted-foreground) / .6)}.text-muted-foreground\/70{color:hsl(var(--muted-foreground) / .7)}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-purple-400{--tw-text-opacity: 1;color:rgb(192 132 252 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-secondary{color:hsl(var(--secondary))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-secondary\/80{color:hsl(var(--secondary) / .8)}.text-secondary\/90{color:hsl(var(--secondary) / .9)}.text-slate-100{--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity, 1))}.text-slate-200{--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity, 1))}.text-slate-300{--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity, 1))}.text-slate-400{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity, 1))}.text-slate-50{--tw-text-opacity: 1;color:rgb(248 250 252 / var(--tw-text-opacity, 1))}.text-slate-950{--tw-text-opacity: 1;color:rgb(2 6 23 / var(--tw-text-opacity, 1))}.text-transparent{color:transparent}.text-void{--tw-text-opacity: 1;color:rgb(2 6 23 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-white\/90{color:#ffffffe6}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.placeholder-cyan-300\/60::-moz-placeholder{color:#67e8f999}.placeholder-cyan-300\/60::placeholder{color:#67e8f999}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow: 0 0 0 1px hsl(var(--sidebar-border));--tw-shadow-colored: 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_12px_rgba\(103\,232\,249\,0\.35\)\]{--tw-shadow: 0 0 12px rgba(103,232,249,.35);--tw-shadow-colored: 0 0 12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_8px_rgba\(103\,232\,249\,0\.5\)\]{--tw-shadow: 0 0 8px rgba(103,232,249,.5);--tw-shadow-colored: 0 0 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_8px_rgba\(103\,232\,249\,0\.8\)\]{--tw-shadow: 0 0 8px rgba(103,232,249,.8);--tw-shadow-colored: 0 0 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-deep{--tw-shadow: 0 25px 50px -12px rgba(0, 0, 0, .5);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xs{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-cyan-300\/20{--tw-shadow-color: rgb(103 232 249 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-cyan-400\/20{--tw-shadow-color: rgb(34 211 238 / .2);--tw-shadow: var(--tw-shadow-colored)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-ring\/50{--tw-ring-color: hsl(var(--ring) / .5)}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.blur-3xl{--tw-blur: blur(64px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-\[100px\]{--tw-blur: blur(100px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-\[120px\]{--tw-blur: blur(120px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow{--tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / .1)) drop-shadow(0 1px 1px rgb(0 0 0 / .06));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-md{--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[left\,right\,width\]{transition-property:left,right,width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[margin\,opacity\]{transition-property:margin,opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\,height\,padding\]{transition-property:width,height,padding;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\]{transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-none{transition-property:none}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-1000{transition-duration:1s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-700{transition-duration:.7s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{transition-timing-function:linear}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity, 1);transform:translate3d(var(--tw-enter-translate-x, 0),var(--tw-enter-translate-y, 0),0) scale3d(var(--tw-enter-scale, 1),var(--tw-enter-scale, 1),var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity, 1);transform:translate3d(var(--tw-exit-translate-x, 0),var(--tw-exit-translate-y, 0),0) scale3d(var(--tw-exit-scale, 1),var(--tw-exit-scale, 1),var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0))}}.animate-in{animation-name:enter;animation-duration:.15s;--tw-enter-opacity: initial;--tw-enter-scale: initial;--tw-enter-rotate: initial;--tw-enter-translate-x: initial;--tw-enter-translate-y: initial}.fade-in,.fade-in-0{--tw-enter-opacity: 0}.zoom-in-95{--tw-enter-scale: .95}.slide-in-from-bottom-8{--tw-enter-translate-y: 2rem}.duration-100{animation-duration:.1s}.duration-1000{animation-duration:1s}.duration-200{animation-duration:.2s}.duration-300{animation-duration:.3s}.duration-500{animation-duration:.5s}.duration-700{animation-duration:.7s}.ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{animation-timing-function:linear}.ease-out{animation-timing-function:cubic-bezier(0,0,.2,1)}.running{animation-play-state:running}.animate-pulse-dot{animation:pulse-dot 2s ease-in-out infinite}.\[--cell-size\:--spacing\(8\)\]{--cell-size: var(--spacing(8))}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.3}}@keyframes gradient-xy{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:#020617}::-webkit-scrollbar-thumb{background:#1e293b;border-radius:5px;border:2px solid #020617}::-webkit-scrollbar-thumb:hover{background:#334155}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.card-surface,.prose{opacity:1;transform:none;transition:none}}@media(forced-colors:active){.text-gradient-cyan,.text-gradient-gold{color:CanvasText!important}}.marker\:text-cyan-300\/60 *::marker{color:#67e8f999}.marker\:text-cyan-300\/60::marker{color:#67e8f999}.selection\:bg-cyan-400\/30 *::-moz-selection{background-color:#22d3ee4d}.selection\:bg-cyan-400\/30 *::selection{background-color:#22d3ee4d}.selection\:bg-primary *::-moz-selection{background-color:hsl(var(--primary))}.selection\:bg-primary *::selection{background-color:hsl(var(--primary))}.selection\:text-primary-foreground *::-moz-selection{color:hsl(var(--primary-foreground))}.selection\:text-primary-foreground *::selection{color:hsl(var(--primary-foreground))}.selection\:bg-cyan-400\/30::-moz-selection{background-color:#22d3ee4d}.selection\:bg-cyan-400\/30::selection{background-color:#22d3ee4d}.selection\:bg-primary::-moz-selection{background-color:hsl(var(--primary))}.selection\:bg-primary::selection{background-color:hsl(var(--primary))}.selection\:text-primary-foreground::-moz-selection{color:hsl(var(--primary-foreground))}.selection\:text-primary-foreground::selection{color:hsl(var(--primary-foreground))}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:1.75rem}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);inset:-.5rem}.after\:inset-y-0:after{content:var(--tw-content);top:0;bottom:0}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:w-1:after{content:var(--tw-content);width:.25rem}.after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.after\:-translate-x-1\/2:after{content:var(--tw-content);--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.first\:rounded-l-md:first-child{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.first\:border-l:first-child{border-left-width:1px}.last\:mb-0:last-child{margin-bottom:0}.last\:mt-0:last-child{margin-top:0}.last\:rounded-r-md:last-child{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.last\:border-0:last-child{border-width:0px}.last\:border-b-0:last-child{border-bottom-width:0px}.hover\:border-cyan-300\/30:hover{border-color:#67e8f94d}.hover\:border-cyan-300\/40:hover{border-color:#67e8f966}.hover\:border-cyan-400\/30:hover{border-color:#22d3ee4d}.hover\:border-cyan-400\/40:hover{border-color:#22d3ee66}.hover\:border-cyan-500\/30:hover{border-color:#06b6d44d}.hover\:border-cyan-500\/40:hover{border-color:#06b6d466}.hover\:border-red-900\/30:hover{border-color:#7f1d1d4d}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-cyan-200:hover{--tw-bg-opacity: 1;background-color:rgb(165 243 252 / var(--tw-bg-opacity, 1))}.hover\:bg-cyan-300:hover{--tw-bg-opacity: 1;background-color:rgb(103 232 249 / var(--tw-bg-opacity, 1))}.hover\:bg-cyan-300\/10:hover{background-color:#67e8f91a}.hover\:bg-cyan-300\/20:hover{background-color:#67e8f933}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}.hover\:bg-gold-400\/10:hover{background-color:#fbbf241a}.hover\:bg-gold-400\/20:hover{background-color:#fbbf2433}.hover\:bg-green-400\/20:hover{background-color:#4ade8033}.hover\:bg-muted:hover{background-color:hsl(var(--muted))}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-red-950\/20:hover{background-color:#450a0a33}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:bg-slate-800:hover{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.hover\:bg-slate-800\/50:hover{background-color:#1e293b80}.hover\:bg-slate-900\/40:hover{background-color:#0f172a66}.hover\:bg-surface:hover{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.hover\:bg-surface\/20:hover{background-color:#0f172a33}.hover\:bg-surface\/30:hover{background-color:#0f172a4d}.hover\:bg-surface\/40:hover{background-color:#0f172a66}.hover\:bg-surface\/60:hover{background-color:#0f172a99}.hover\:bg-white\/5:hover{background-color:#ffffff0d}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-cyan-100:hover{--tw-text-opacity: 1;color:rgb(207 250 254 / var(--tw-text-opacity, 1))}.hover\:text-cyan-200:hover{--tw-text-opacity: 1;color:rgb(165 243 252 / var(--tw-text-opacity, 1))}.hover\:text-cyan-300:hover{--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1))}.hover\:text-emerald-300:hover{--tw-text-opacity: 1;color:rgb(110 231 183 / var(--tw-text-opacity, 1))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-muted-foreground:hover{color:hsl(var(--muted-foreground))}.hover\:text-primary:hover{color:hsl(var(--primary))}.hover\:text-red-400:hover{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.hover\:text-slate-200:hover{--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover{--tw-shadow: 0 0 0 1px hsl(var(--sidebar-accent));--tw-shadow-colored: 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:ring-4:hover{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:not-sr-only:focus{position:static;width:auto;height:auto;padding:0;margin:0;overflow:visible;clip:auto;white-space:normal}.focus\:fixed:focus{position:fixed}.focus\:left-4:focus{left:1rem}.focus\:top-4:focus{top:1rem}.focus\:z-10:focus{z-index:10}.focus\:z-\[100\]:focus{z-index:100}.focus\:rounded-lg:focus{border-radius:var(--radius)}.focus\:border-cyan-300\/50:focus{border-color:#67e8f980}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:bg-cyan-300:focus{--tw-bg-opacity: 1;background-color:rgb(103 232 249 / var(--tw-bg-opacity, 1))}.focus\:px-4:focus{padding-left:1rem;padding-right:1rem}.focus\:py-2:focus{padding-top:.5rem;padding-bottom:.5rem}.focus\:font-semibold:focus{font-weight:600}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:text-void:focus{--tw-text-opacity: 1;color:rgb(2 6 23 / var(--tw-text-opacity, 1))}.focus\:opacity-100:focus{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border-ring:focus-visible{border-color:hsl(var(--ring))}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:outline-1:focus-visible{outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:hsl(var(--ring))}.focus-visible\:ring-0:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-4:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-cyan-300:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(103 232 249 / var(--tw-ring-opacity, 1))}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color: hsl(var(--destructive) / .2)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color: hsl(var(--ring) / .5)}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width: 1px}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-cyan-300\/20:disabled{background-color:#67e8f933}.disabled\:text-muted\/20:disabled{color:hsl(var(--muted) / .2)}.disabled\:text-void\/40:disabled{color:#02061766}.disabled\:opacity-50:disabled{opacity:.5}.group\/menu-item:focus-within .group-focus-within\/menu-item\:opacity-100{opacity:1}.group:hover .group-hover\:translate-x-0\.5{--tw-translate-x: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:translate-x-1{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:border-cyan-300\/30{border-color:#67e8f94d}.group:hover .group-hover\:bg-cyan-300\/20{background-color:#67e8f933}.group:hover .group-hover\:fill-cyan-300{fill:#67e8f9}.group:hover .group-hover\:stroke-cyan-200{stroke:#a5f3fc}.group:hover .group-hover\:stroke-cyan-300\/40{stroke:#67e8f966}.group:hover .group-hover\:text-cyan-200{--tw-text-opacity: 1;color:rgb(165 243 252 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:text-cyan-300{--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1))}.group\/menu-item:hover .group-hover\/menu-item\:opacity-100,.group:hover .group-hover\:opacity-100{opacity:1}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-50{opacity:.5}.has-\[\>button\]\:ml-\[-0\.45rem\]:has(>button){margin-left:-.45rem}.has-\[\>button\]\:mr-\[-0\.45rem\]:has(>button){margin-right:-.45rem}.has-\[\>kbd\]\:ml-\[-0\.35rem\]:has(>kbd){margin-left:-.35rem}.has-\[\>kbd\]\:mr-\[-0\.35rem\]:has(>kbd){margin-right:-.35rem}.has-\[\>\[data-align\=block-end\]\]\:h-auto:has(>[data-align=block-end]){height:auto}.has-\[\>\[data-align\=block-start\]\]\:h-auto:has(>[data-align=block-start]){height:auto}.has-\[\>textarea\]\:h-auto:has(>textarea){height:auto}.has-\[\>\[data-slot\=field\]\]\:w-full:has(>[data-slot=field]){width:100%}.has-\[\>svg\]\:grid-cols-\[calc\(var\(--spacing\)\*4\)_1fr\]:has(>svg){grid-template-columns:calc(var(--spacing) * 4) 1fr}.has-\[\>\[data-align\=block-end\]\]\:flex-col:has(>[data-align=block-end]){flex-direction:column}.has-\[\>\[data-align\=block-start\]\]\:flex-col:has(>[data-align=block-start]){flex-direction:column}.has-\[\>\[data-slot\=field\]\]\:flex-col:has(>[data-slot=field]){flex-direction:column}.has-\[\>\[data-slot\=field-content\]\]\:items-start:has(>[data-slot=field-content]){align-items:flex-start}.has-\[\>\[data-slot\=button-group\]\]\:gap-2:has(>[data-slot=button-group]){gap:.5rem}.has-\[\>\[data-slot\=checkbox-group\]\]\:gap-3:has(>[data-slot=checkbox-group]){gap:.75rem}.has-\[\>\[data-slot\=radio-group\]\]\:gap-3:has(>[data-slot=radio-group]){gap:.75rem}.has-\[\>svg\]\:gap-x-3:has(>svg){-moz-column-gap:.75rem;column-gap:.75rem}.has-\[\>\[data-slot\=field\]\]\:rounded-md:has(>[data-slot=field]){border-radius:calc(var(--radius) - 2px)}.has-\[\>\[data-slot\=field\]\]\:border:has(>[data-slot=field]){border-width:1px}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:border-ring:has([data-slot=input-group-control]:focus-visible){border-color:hsl(var(--ring))}.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:border-destructive:has([data-slot][aria-invalid=true]){--tw-border-opacity: 1;border-color:hsl(var(--destructive) / var(--tw-border-opacity, 1))}.has-\[\>svg\]\:p-0:has(>svg){padding:0}.has-\[\>svg\]\:px-2:has(>svg){padding-left:.5rem;padding-right:.5rem}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-left:.625rem;padding-right:.625rem}.has-\[\>svg\]\:px-3:has(>svg){padding-left:.75rem;padding-right:.75rem}.has-\[\>svg\]\:px-4:has(>svg){padding-left:1rem;padding-right:1rem}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-\[3px\]:has([data-slot=input-group-control]:focus-visible){--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-ring\/50:has([data-slot=input-group-control]:focus-visible){--tw-ring-color: hsl(var(--ring) / .5)}.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/20:has([data-slot][aria-invalid=true]){--tw-ring-color: hsl(var(--destructive) / .2)}.group\/item:has([data-slot=item-description]) .group-has-\[\[data-slot\=item-description\]\]\/item\:translate-y-0\.5{--tw-translate-y: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group\/item:has([data-slot=item-description]) .group-has-\[\[data-slot\=item-description\]\]\/item\:self-start{align-self:flex-start}.group\/field:has([data-orientation=horizontal]) .group-has-\[\[data-orientation\=horizontal\]\]\/field\:text-balance{text-wrap:balance}.group\/input-group:has(>input) .group-has-\[\>input\]\/input-group\:pb-2\.5{padding-bottom:.625rem}.group\/input-group:has(>input) .group-has-\[\>input\]\/input-group\:pt-2\.5{padding-top:.625rem}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-selected\:text-muted-foreground[aria-selected=true]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true],.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[vaul-drawer-direction\=bottom\]\:inset-x-0[data-vaul-drawer-direction=bottom]{left:0;right:0}.data-\[vaul-drawer-direction\=left\]\:inset-y-0[data-vaul-drawer-direction=left],.data-\[vaul-drawer-direction\=right\]\:inset-y-0[data-vaul-drawer-direction=right]{top:0;bottom:0}.data-\[vaul-drawer-direction\=top\]\:inset-x-0[data-vaul-drawer-direction=top]{left:0;right:0}.data-\[vaul-drawer-direction\=bottom\]\:bottom-0[data-vaul-drawer-direction=bottom]{bottom:0}.data-\[vaul-drawer-direction\=left\]\:left-0[data-vaul-drawer-direction=left]{left:0}.data-\[vaul-drawer-direction\=right\]\:right-0[data-vaul-drawer-direction=right]{right:0}.data-\[vaul-drawer-direction\=top\]\:top-0[data-vaul-drawer-direction=top]{top:0}.data-\[active\=true\]\:z-10[data-active=true]{z-index:10}.data-\[vaul-drawer-direction\=bottom\]\:mt-24[data-vaul-drawer-direction=bottom]{margin-top:6rem}.data-\[vaul-drawer-direction\=top\]\:mb-24[data-vaul-drawer-direction=top]{margin-bottom:6rem}.data-\[orientation\=horizontal\]\:h-1\.5[data-orientation=horizontal]{height:.375rem}.data-\[orientation\=horizontal\]\:h-full[data-orientation=horizontal]{height:100%}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=vertical\]\:h-auto[data-orientation=vertical]{height:auto}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[panel-group-direction\=vertical\]\:h-px[data-panel-group-direction=vertical]{height:1px}.data-\[size\=default\]\:h-9[data-size=default]{height:2.25rem}.data-\[size\=sm\]\:h-8[data-size=sm]{height:2rem}.data-\[vaul-drawer-direction\=bottom\]\:max-h-\[80vh\][data-vaul-drawer-direction=bottom],.data-\[vaul-drawer-direction\=top\]\:max-h-\[80vh\][data-vaul-drawer-direction=top]{max-height:80vh}.data-\[orientation\=vertical\]\:min-h-44[data-orientation=vertical]{min-height:11rem}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:w-1\.5[data-orientation=vertical]{width:.375rem}.data-\[orientation\=vertical\]\:w-auto[data-orientation=vertical]{width:auto}.data-\[orientation\=vertical\]\:w-full[data-orientation=vertical]{width:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[panel-group-direction\=vertical\]\:w-full[data-panel-group-direction=vertical]{width:100%}.data-\[vaul-drawer-direction\=left\]\:w-3\/4[data-vaul-drawer-direction=left],.data-\[vaul-drawer-direction\=right\]\:w-3\/4[data-vaul-drawer-direction=right]{width:75%}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=checked\]\:translate-x-\[calc\(100\%-2px\)\][data-state=checked]{--tw-translate-x: calc(100% - 2px) ;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes accordion-up{0%{height:var(--radix-accordion-content-height)}to{height:0}}.data-\[state\=closed\]\:animate-accordion-up[data-state=closed]{animation:accordion-up .2s ease-out}@keyframes accordion-down{0%{height:0}to{height:var(--radix-accordion-content-height)}}.data-\[state\=open\]\:animate-accordion-down[data-state=open]{animation:accordion-down .2s ease-out}.data-\[orientation\=vertical\]\:flex-col[data-orientation=vertical],.data-\[panel-group-direction\=vertical\]\:flex-col[data-panel-group-direction=vertical]{flex-direction:column}.data-\[slot\=checkbox-group\]\:gap-3[data-slot=checkbox-group]{gap:.75rem}.data-\[range-end\=true\]\:rounded-md[data-range-end=true]{border-radius:calc(var(--radius) - 2px)}.data-\[range-middle\=true\]\:rounded-none[data-range-middle=true]{border-radius:0}.data-\[range-start\=true\]\:rounded-md[data-range-start=true]{border-radius:calc(var(--radius) - 2px)}.data-\[selected\=true\]\:rounded-none[data-selected=true],.data-\[spacing\=0\]\:rounded-none[data-spacing="0"]{border-radius:0}.data-\[range-end\=true\]\:rounded-r-md[data-range-end=true]{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.data-\[range-start\=true\]\:rounded-l-md[data-range-start=true]{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.data-\[vaul-drawer-direction\=bottom\]\:rounded-t-lg[data-vaul-drawer-direction=bottom]{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.data-\[vaul-drawer-direction\=top\]\:rounded-b-lg[data-vaul-drawer-direction=top]{border-bottom-right-radius:var(--radius);border-bottom-left-radius:var(--radius)}.data-\[spacing\=0\]\:data-\[variant\=outline\]\:border-l-0[data-variant=outline][data-spacing="0"]{border-left-width:0px}.data-\[vaul-drawer-direction\=bottom\]\:border-t[data-vaul-drawer-direction=bottom]{border-top-width:1px}.data-\[vaul-drawer-direction\=left\]\:border-r[data-vaul-drawer-direction=left]{border-right-width:1px}.data-\[vaul-drawer-direction\=right\]\:border-l[data-vaul-drawer-direction=right]{border-left-width:1px}.data-\[vaul-drawer-direction\=top\]\:border-b[data-vaul-drawer-direction=top]{border-bottom-width:1px}.data-\[active\=true\]\:border-ring[data-active=true]{border-color:hsl(var(--ring))}.data-\[state\=checked\]\:border-primary[data-state=checked]{border-color:hsl(var(--primary))}.data-\[active\=true\]\:bg-accent\/50[data-active=true]{background-color:hsl(var(--accent) / .5)}.data-\[range-end\=true\]\:bg-primary[data-range-end=true]{background-color:hsl(var(--primary))}.data-\[range-middle\=true\]\:bg-accent[data-range-middle=true]{background-color:hsl(var(--accent))}.data-\[range-start\=true\]\:bg-primary[data-range-start=true],.data-\[selected-single\=true\]\:bg-primary[data-selected-single=true]{background-color:hsl(var(--primary))}.data-\[selected\=true\]\:bg-accent[data-selected=true]{background-color:hsl(var(--accent))}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\[state\=on\]\:bg-accent[data-state=on],.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=open\]\:bg-accent\/50[data-state=open]{background-color:hsl(var(--accent) / .5)}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:hsl(var(--secondary))}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:hsl(var(--input))}.data-\[inset\]\:pl-8[data-inset]{padding-left:2rem}.data-\[variant\=label\]\:text-sm[data-variant=label]{font-size:.875rem;line-height:1.25rem}.data-\[variant\=legend\]\:text-base[data-variant=legend]{font-size:1rem;line-height:1.5rem}.data-\[active\=true\]\:font-medium[data-active=true]{font-weight:500}.data-\[active\=true\]\:text-accent-foreground[data-active=true]{color:hsl(var(--accent-foreground))}.data-\[error\=true\]\:text-destructive[data-error=true],.data-\[invalid\=true\]\:text-destructive[data-invalid=true]{--tw-text-opacity: 1;color:hsl(var(--destructive) / var(--tw-text-opacity, 1))}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:hsl(var(--muted-foreground))}.data-\[range-end\=true\]\:text-primary-foreground[data-range-end=true]{color:hsl(var(--primary-foreground))}.data-\[range-middle\=true\]\:text-accent-foreground[data-range-middle=true]{color:hsl(var(--accent-foreground))}.data-\[range-start\=true\]\:text-primary-foreground[data-range-start=true],.data-\[selected-single\=true\]\:text-primary-foreground[data-selected-single=true]{color:hsl(var(--primary-foreground))}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:hsl(var(--accent-foreground))}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:hsl(var(--primary-foreground))}.data-\[state\=on\]\:text-accent-foreground[data-state=on],.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:hsl(var(--accent-foreground))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[variant\=destructive\]\:text-destructive[data-variant=destructive]{--tw-text-opacity: 1;color:hsl(var(--destructive) / var(--tw-text-opacity, 1))}.data-\[disabled\=true\]\:opacity-50[data-disabled=true],.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=open\]\:opacity-100[data-state=open]{opacity:1}.data-\[spacing\=0\]\:shadow-none[data-spacing="0"]{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[spacing\=default\]\:data-\[variant\=outline\]\:shadow-xs[data-variant=outline][data-spacing=default],.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[active\=true\]\:ring-\[3px\][data-active=true]{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.data-\[active\=true\]\:ring-ring\/50[data-active=true]{--tw-ring-color: hsl(var(--ring) / .5)}.data-\[state\=closed\]\:duration-300[data-state=closed]{transition-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{transition-duration:.5s}.data-\[motion\^\=from-\]\:animate-in[data-motion^=from-],.data-\[state\=open\]\:animate-in[data-state=open],.data-\[state\=visible\]\:animate-in[data-state=visible]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity: initial;--tw-enter-scale: initial;--tw-enter-rotate: initial;--tw-enter-translate-x: initial;--tw-enter-translate-y: initial}.data-\[motion\^\=to-\]\:animate-out[data-motion^=to-],.data-\[state\=closed\]\:animate-out[data-state=closed],.data-\[state\=hidden\]\:animate-out[data-state=hidden]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity: initial;--tw-exit-scale: initial;--tw-exit-rotate: initial;--tw-exit-translate-x: initial;--tw-exit-translate-y: initial}.data-\[motion\^\=from-\]\:fade-in[data-motion^=from-]{--tw-enter-opacity: 0}.data-\[motion\^\=to-\]\:fade-out[data-motion^=to-],.data-\[state\=closed\]\:fade-out-0[data-state=closed],.data-\[state\=hidden\]\:fade-out[data-state=hidden]{--tw-exit-opacity: 0}.data-\[state\=open\]\:fade-in-0[data-state=open],.data-\[state\=visible\]\:fade-in[data-state=visible]{--tw-enter-opacity: 0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale: .95}.data-\[state\=open\]\:zoom-in-90[data-state=open]{--tw-enter-scale: .9}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale: .95}.data-\[motion\=from-end\]\:slide-in-from-right-52[data-motion=from-end]{--tw-enter-translate-x: 13rem}.data-\[motion\=from-start\]\:slide-in-from-left-52[data-motion=from-start]{--tw-enter-translate-x: -13rem}.data-\[motion\=to-end\]\:slide-out-to-right-52[data-motion=to-end]{--tw-exit-translate-x: 13rem}.data-\[motion\=to-start\]\:slide-out-to-left-52[data-motion=to-start]{--tw-exit-translate-x: -13rem}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y: -.5rem}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x: .5rem}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x: -.5rem}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y: .5rem}.data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y: 100%}.data-\[state\=closed\]\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x: -100%}.data-\[state\=closed\]\:slide-out-to-right[data-state=closed]{--tw-exit-translate-x: 100%}.data-\[state\=closed\]\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y: -100%}.data-\[state\=open\]\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y: 100%}.data-\[state\=open\]\:slide-in-from-left[data-state=open]{--tw-enter-translate-x: -100%}.data-\[state\=open\]\:slide-in-from-right[data-state=open]{--tw-enter-translate-x: 100%}.data-\[state\=open\]\:slide-in-from-top[data-state=open]{--tw-enter-translate-y: -100%}.data-\[state\=closed\]\:duration-300[data-state=closed]{animation-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{animation-duration:.5s}.\*\:data-\[slot\=select-value\]\:line-clamp-1[data-slot=select-value]>*{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\*\:data-\[slot\=select-value\]\:flex[data-slot=select-value]>*{display:flex}.\*\:data-\[slot\=select-value\]\:items-center[data-slot=select-value]>*{align-items:center}.\*\:data-\[slot\=select-value\]\:gap-2[data-slot=select-value]>*{gap:.5rem}.\*\:data-\[slot\=alert-description\]\:text-destructive\/90[data-slot=alert-description]>*{color:hsl(var(--destructive) / .9)}.data-\[panel-group-direction\=vertical\]\:after\:left-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);left:0}.data-\[panel-group-direction\=vertical\]\:after\:h-1[data-panel-group-direction=vertical]:after{content:var(--tw-content);height:.25rem}.data-\[panel-group-direction\=vertical\]\:after\:w-full[data-panel-group-direction=vertical]:after{content:var(--tw-content);width:100%}.data-\[panel-group-direction\=vertical\]\:after\:-translate-y-1\/2[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[panel-group-direction\=vertical\]\:after\:translate-x-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[spacing\=0\]\:first\:rounded-l-md:first-child[data-spacing="0"]{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.data-\[spacing\=0\]\:data-\[variant\=outline\]\:first\:border-l:first-child[data-variant=outline][data-spacing="0"]{border-left-width:1px}.data-\[spacing\=0\]\:last\:rounded-r-md:last-child[data-spacing="0"]{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.data-\[active\=true\]\:hover\:bg-accent:hover[data-active=true],.data-\[state\=open\]\:hover\:bg-accent:hover[data-state=open]{background-color:hsl(var(--accent))}.data-\[active\=true\]\:focus\:bg-accent:focus[data-active=true]{background-color:hsl(var(--accent))}.data-\[state\=open\]\:focus\:bg-accent:focus[data-state=open]{background-color:hsl(var(--accent))}.data-\[variant\=destructive\]\:focus\:bg-destructive\/10:focus[data-variant=destructive]{background-color:hsl(var(--destructive) / .1)}.data-\[variant\=destructive\]\:focus\:text-destructive:focus[data-variant=destructive]{--tw-text-opacity: 1;color:hsl(var(--destructive) / var(--tw-text-opacity, 1))}.group[data-disabled=true] .group-data-\[disabled\=true\]\:pointer-events-none{pointer-events:none}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:relative{position:relative}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]{left:calc(var(--sidebar-width) * -1)}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]{right:calc(var(--sidebar-width) * -1)}.group[data-side=left] .group-data-\[side\=left\]\:-right-4{right:-1rem}.group[data-side=right] .group-data-\[side\=right\]\:left-0{left:0}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:top-full{top:100%}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:z-10{z-index:10}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:-mt-8{margin-top:-2rem}.group\/field-group[data-variant=outline] .group-data-\[variant\=outline\]\/field-group\:-mb-2{margin-bottom:-.5rem}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:mt-1\.5{margin-top:.375rem}.group\/drawer-content[data-vaul-drawer-direction=bottom] .group-data-\[vaul-drawer-direction\=bottom\]\/drawer-content\:block{display:block}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:hidden{display:none}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\)\]{width:calc(var(--sidebar-width-icon) + (--spacing(4)))}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\+2px\)\]{width:calc(var(--sidebar-width-icon) + (--spacing(4)) + 2px)}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:w-0{width:0px}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-side=right] .group-data-\[side\=right\]\:rotate-180,.group[data-state=open] .group-data-\[state\=open\]\:rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:overflow-hidden,.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:overflow-hidden{overflow:hidden}.group[data-variant=floating] .group-data-\[variant\=floating\]\:rounded-lg{border-radius:var(--radius)}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:rounded-md{border-radius:calc(var(--radius) - 2px)}.group[data-variant=floating] .group-data-\[variant\=floating\]\:border,.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:border{border-width:1px}.group[data-side=left] .group-data-\[side\=left\]\:border-r{border-right-width:1px}.group[data-side=right] .group-data-\[side\=right\]\:border-l{border-left-width:1px}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:border-ring{border-color:hsl(var(--ring))}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:bg-popover{background-color:hsl(var(--popover))}.group\/drawer-content[data-vaul-drawer-direction=bottom] .group-data-\[vaul-drawer-direction\=bottom\]\/drawer-content\:text-center,.group\/drawer-content[data-vaul-drawer-direction=top] .group-data-\[vaul-drawer-direction\=top\]\/drawer-content\:text-center{text-align:center}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:text-popover-foreground{color:hsl(var(--popover-foreground))}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:opacity-0{opacity:0}.group\/field[data-disabled=true] .group-data-\[disabled\=true\]\/field\:opacity-50,.group\/input-group[data-disabled=true] .group-data-\[disabled\=true\]\/input-group\:opacity-50,.group[data-disabled=true] .group-data-\[disabled\=true\]\:opacity-50{opacity:.5}.group[data-variant=floating] .group-data-\[variant\=floating\]\:shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-\[3px\]{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-ring\/50{--tw-ring-color: hsl(var(--ring) / .5)}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:duration-200{transition-duration:.2s;animation-duration:.2s}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:after\:left-full:after{content:var(--tw-content);left:100%}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:animate-in[data-state=open]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity: initial;--tw-enter-scale: initial;--tw-enter-rotate: initial;--tw-enter-translate-x: initial;--tw-enter-translate-y: initial}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:animate-out[data-state=closed]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity: initial;--tw-exit-scale: initial;--tw-exit-rotate: initial;--tw-exit-translate-x: initial;--tw-exit-translate-y: initial}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity: 0}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity: 0}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale: .95}.group\/navigation-menu[data-viewport=false] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale: .95}.peer\/menu-button[data-size=default]~.peer-data-\[size\=default\]\/menu-button\:top-1\.5{top:.375rem}.peer\/menu-button[data-size=lg]~.peer-data-\[size\=lg\]\/menu-button\:top-2\.5{top:.625rem}.peer\/menu-button[data-size=sm]~.peer-data-\[size\=sm\]\/menu-button\:top-1{top:.25rem}.prose-headings\:font-bold :is(:where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *))){font-weight:700}.prose-headings\:tracking-tight :is(:where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *))){letter-spacing:-.025em}.prose-a\:text-cyan-300 :is(:where(a):not(:where([class~=not-prose],[class~=not-prose] *))){--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1))}.prose-a\:no-underline :is(:where(a):not(:where([class~=not-prose],[class~=not-prose] *))){text-decoration-line:none}.hover\:prose-a\:underline :is(:where(a):not(:where([class~=not-prose],[class~=not-prose] *))):hover{text-decoration-line:underline}.prose-code\:rounded-md :is(:where(code):not(:where([class~=not-prose],[class~=not-prose] *))){border-radius:calc(var(--radius) - 2px)}.prose-code\:bg-cyan-950\/30 :is(:where(code):not(:where([class~=not-prose],[class~=not-prose] *))){background-color:#0833444d}.prose-code\:px-1\.5 :is(:where(code):not(:where([class~=not-prose],[class~=not-prose] *))){padding-left:.375rem;padding-right:.375rem}.prose-code\:py-0\.5 :is(:where(code):not(:where([class~=not-prose],[class~=not-prose] *))){padding-top:.125rem;padding-bottom:.125rem}.prose-code\:text-cyan-200 :is(:where(code):not(:where([class~=not-prose],[class~=not-prose] *))){--tw-text-opacity: 1;color:rgb(165 243 252 / var(--tw-text-opacity, 1))}.prose-pre\:border :is(:where(pre):not(:where([class~=not-prose],[class~=not-prose] *))){border-width:1px}.prose-pre\:border-slate-800 :is(:where(pre):not(:where([class~=not-prose],[class~=not-prose] *))){--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity, 1))}.prose-pre\:bg-slate-950\/80 :is(:where(pre):not(:where([class~=not-prose],[class~=not-prose] *))){background-color:#020617cc}.prose-img\:rounded-xl :is(:where(img):not(:where([class~=not-prose],[class~=not-prose] *))){border-radius:calc(var(--radius) + 4px)}.prose-img\:border :is(:where(img):not(:where([class~=not-prose],[class~=not-prose] *))){border-width:1px}.prose-img\:border-slate-800 :is(:where(img):not(:where([class~=not-prose],[class~=not-prose] *))){--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity, 1))}.dark\:border-input:is(.dark *){border-color:hsl(var(--input))}.dark\:bg-destructive\/60:is(.dark *){background-color:hsl(var(--destructive) / .6)}.dark\:bg-input\/30:is(.dark *){background-color:hsl(var(--input) / .3)}.dark\:bg-transparent:is(.dark *){background-color:transparent}.dark\:text-muted-foreground:is(.dark *){color:hsl(var(--muted-foreground))}.dark\:hover\:bg-accent\/50:hover:is(.dark *){background-color:hsl(var(--accent) / .5)}.dark\:hover\:bg-input\/50:hover:is(.dark *){background-color:hsl(var(--input) / .5)}.dark\:hover\:text-accent-foreground:hover:is(.dark *){color:hsl(var(--accent-foreground))}.dark\:focus-visible\:ring-destructive\/40:focus-visible:is(.dark *){--tw-ring-color: hsl(var(--destructive) / .4)}.dark\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/40:has([data-slot][aria-invalid=true]):is(.dark *){--tw-ring-color: hsl(var(--destructive) / .4)}.dark\:data-\[state\=active\]\:border-input[data-state=active]:is(.dark *){border-color:hsl(var(--input))}.dark\:data-\[state\=active\]\:bg-input\/30[data-state=active]:is(.dark *){background-color:hsl(var(--input) / .3)}.dark\:data-\[state\=checked\]\:bg-primary[data-state=checked]:is(.dark *){background-color:hsl(var(--primary))}.dark\:data-\[state\=checked\]\:bg-primary-foreground[data-state=checked]:is(.dark *){background-color:hsl(var(--primary-foreground))}.dark\:data-\[state\=unchecked\]\:bg-foreground[data-state=unchecked]:is(.dark *){background-color:hsl(var(--foreground))}.dark\:data-\[state\=unchecked\]\:bg-input\/80[data-state=unchecked]:is(.dark *){background-color:hsl(var(--input) / .8)}.dark\:data-\[state\=active\]\:text-foreground[data-state=active]:is(.dark *){color:hsl(var(--foreground))}.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:focus[data-variant=destructive]:is(.dark *){background-color:hsl(var(--destructive) / .2)}@media not all and (min-width:640px){.max-sm\:opacity-100{opacity:1}}@media(min-width:640px){.sm\:ml-6{margin-left:1.5rem}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:inline-flex{display:inline-flex}.sm\:hidden{display:none}.sm\:w-auto{width:auto}.sm\:min-w-\[80px\]{min-width:80px}.sm\:max-w-lg{max-width:32rem}.sm\:max-w-sm{max-width:24rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-end{justify-content:flex-end}.sm\:gap-2\.5{gap:.625rem}.sm\:gap-4{gap:1rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pl-2\.5{padding-left:.625rem}.sm\:pr-2\.5{padding-right:.625rem}.sm\:text-left{text-align:left}.sm\:text-5xl{font-size:3rem;line-height:1}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.data-\[vaul-drawer-direction\=left\]\:sm\:max-w-sm[data-vaul-drawer-direction=left],.data-\[vaul-drawer-direction\=right\]\:sm\:max-w-sm[data-vaul-drawer-direction=right]{max-width:24rem}}@media(min-width:768px){.md\:absolute{position:absolute}.md\:mx-0{margin-left:0;margin-right:0}.md\:mb-16{margin-bottom:4rem}.md\:ml-8{margin-left:2rem}.md\:block{display:block}.md\:flex{display:flex}.md\:table-cell{display:table-cell}.md\:w-\[var\(--radix-navigation-menu-viewport-width\)\]{width:var(--radix-navigation-menu-viewport-width)}.md\:w-auto{width:auto}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:items-center{align-items:center}.md\:justify-start{justify-content:flex-start}.md\:gap-1\.5{gap:.375rem}.md\:divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse: 0;border-right-width:calc(1px * var(--tw-divide-x-reverse));border-left-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}.md\:divide-white\/5>:not([hidden])~:not([hidden]){border-color:#ffffff0d}.md\:whitespace-nowrap{white-space:nowrap}.md\:p-12{padding:3rem}.md\:p-6{padding:1.5rem}.md\:py-20{padding-top:5rem;padding-bottom:5rem}.md\:py-28{padding-top:7rem;padding-bottom:7rem}.md\:py-32{padding-top:8rem;padding-bottom:8rem}.md\:text-left{text-align:left}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}.md\:text-5xl{font-size:3rem;line-height:1}.md\:text-6xl{font-size:3.75rem;line-height:1}.md\:text-7xl{font-size:4.5rem;line-height:1}.md\:text-9xl{font-size:8rem;line-height:1}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}.md\:opacity-0{opacity:0}.md\:after\:hidden:after{content:var(--tw-content);display:none}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:m-2{margin:.5rem}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:ml-0{margin-left:0}.peer[data-variant=inset][data-state=collapsed]~.md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:ml-2{margin-left:.5rem}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:rounded-xl{border-radius:calc(var(--radius) + 4px)}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}}@media(min-width:1024px){.lg\:col-span-1{grid-column:span 1 / span 1}.lg\:col-span-2{grid-column:span 2 / span 2}.lg\:col-span-3{grid-column:span 3 / span 3}.lg\:col-span-4{grid-column:span 4 / span 4}.lg\:col-span-8{grid-column:span 8 / span 8}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:gap-8{gap:2rem}.lg\:text-6xl{font-size:3.75rem;line-height:1}.lg\:text-7xl{font-size:4.5rem;line-height:1}}.\[\&\+\[data-slot\=item-content\]\]\:flex-none+[data-slot=item-content]{flex:none}.\[\&\:first-child\[data-selected\=true\]_button\]\:rounded-l-md:first-child[data-selected=true] button{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\:last-child\[data-selected\=true\]_button\]\:rounded-r-md:last-child[data-selected=true] button{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\:nth-child\(2\)\[data-selected\=true\]_button\]\:rounded-l-md:nth-child(2)[data-selected=true] button{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.\[\&\>\*\:not\(\:first-child\)\]\:rounded-l-none>*:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.\[\&\>\*\:not\(\:first-child\)\]\:rounded-t-none>*:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.\[\&\>\*\:not\(\:first-child\)\]\:border-l-0>*:not(:first-child){border-left-width:0px}.\[\&\>\*\:not\(\:first-child\)\]\:border-t-0>*:not(:first-child){border-top-width:0px}.\[\&\>\*\:not\(\:last-child\)\]\:rounded-b-none>*:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0}.\[\&\>\*\:not\(\:last-child\)\]\:rounded-r-none>*:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.\[\&\>\*\]\:w-full>*{width:100%}.\[\&\>\*\]\:focus-visible\:relative:focus-visible>*{position:relative}.\[\&\>\*\]\:focus-visible\:z-10:focus-visible>*{z-index:10}.\[\&\>\*\]\:data-\[slot\=field\]\:p-4[data-slot=field]>*{padding:1rem}.\[\&\>\.sr-only\]\:w-auto>.sr-only{width:auto}.\[\&\>\[data-slot\=field-group\]\]\:gap-4>[data-slot=field-group]{gap:1rem}.\[\&\>\[data-slot\=field-label\]\]\:flex-auto>[data-slot=field-label]{flex:1 1 auto}.has-\[select\[aria-hidden\=true\]\:last-child\]\:\[\&\>\[data-slot\=select-trigger\]\:last-of-type\]\:rounded-r-md>[data-slot=select-trigger]:last-of-type:has(select[aria-hidden=true]:last-child){border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\>\[data-slot\=select-trigger\]\:not\(\[class\*\=\'w-\'\]\)\]\:w-fit>[data-slot=select-trigger]:not([class*=w-]){width:-moz-fit-content;width:fit-content}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y: 2px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>a\:hover\]\:text-primary>a:hover{color:hsl(var(--primary))}.\[\&\>a\]\:underline>a{text-decoration-line:underline}.\[\&\>a\]\:underline-offset-4>a{text-underline-offset:4px}.\[\&\>button\]\:hidden>button{display:none}.\[\&\>input\]\:flex-1>input{flex:1 1 0%}.has-\[\>\[data-align\=block-end\]\]\:\[\&\>input\]\:pt-3>input:has(>[data-align=block-end]){padding-top:.75rem}.has-\[\>\[data-align\=block-start\]\]\:\[\&\>input\]\:pb-3>input:has(>[data-align=block-start]){padding-bottom:.75rem}.has-\[\>\[data-align\=inline-end\]\]\:\[\&\>input\]\:pr-2>input:has(>[data-align=inline-end]){padding-right:.5rem}.has-\[\>\[data-align\=inline-start\]\]\:\[\&\>input\]\:pl-2>input:has(>[data-align=inline-start]){padding-left:.5rem}.\[\&\>kbd\]\:rounded-\[calc\(var\(--radius\)-5px\)\]>kbd{border-radius:calc(var(--radius) - 5px)}.\[\&\>span\:last-child\]\:truncate>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.\[\&\>span\]\:text-xs>span{font-size:.75rem;line-height:1rem}.\[\&\>span\]\:opacity-70>span{opacity:.7}.\[\&\>svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5>svg:not([class*=size-]){width:.875rem;height:.875rem}.\[\&\>svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4>svg:not([class*=size-]){width:1rem;height:1rem}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3>svg{width:.75rem;height:.75rem}.\[\&\>svg\]\:size-3\.5>svg{width:.875rem;height:.875rem}.\[\&\>svg\]\:size-4>svg{width:1rem;height:1rem}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:translate-y-0\.5>svg{--tw-translate-y: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>svg\]\:text-current>svg{color:currentColor}.\[\&\>svg\]\:text-muted-foreground>svg{color:hsl(var(--muted-foreground))}.\[\&\>tr\]\:last\:border-b-0:last-child>tr{border-bottom-width:0px}.\[\&\[data-panel-group-direction\=vertical\]\>div\]\:rotate-90[data-panel-group-direction=vertical]>div{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-top:.375rem;padding-bottom:.375rem}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{font-weight:500}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:hsl(var(--muted-foreground))}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:3rem}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-top:.75rem;padding-bottom:.75rem}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:1.25rem}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:1.25rem}.\[\&_img\]\:size-full img{width:100%;height:100%}.\[\&_img\]\:object-cover img{-o-object-fit:cover;object-fit:cover}.\[\&_p\]\:leading-relaxed p{line-height:1.625}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3 svg:not([class*=size-]){width:.75rem;height:.75rem}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:1rem;height:1rem}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-6 svg:not([class*=size-]){width:1.5rem;height:1.5rem}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*=text-]){color:hsl(var(--muted-foreground))}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0px}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{right:-.5rem}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{left:-.5rem}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}[data-slot=card-content] .\[\[data-slot\=card-content\]_\&\]\:bg-transparent,[data-slot=popover-content] .\[\[data-slot\=popover-content\]_\&\]\:bg-transparent{background-color:transparent}[data-slot=tooltip-content] .\[\[data-slot\=tooltip-content\]_\&\]\:bg-background\/20{background-color:hsl(var(--background) / .2)}[data-slot=tooltip-content] .\[\[data-slot\=tooltip-content\]_\&\]\:text-background{color:hsl(var(--background))}[data-slot=tooltip-content] .dark\:\[\[data-slot\=tooltip-content\]_\&\]\:bg-background\/10:is(.dark *){background-color:hsl(var(--background) / .1)}[data-variant=legend]+.\[\[data-variant\=legend\]\+\&\]\:-mt-1\.5{margin-top:-.375rem}a.\[a\&\]\:hover\:bg-accent:hover{background-color:hsl(var(--accent))}a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:hsl(var(--secondary) / .9)}a.\[a\&\]\:hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))} diff --git a/assets/index-CCmwjNGU.js b/assets/index-CCmwjNGU.js deleted file mode 100644 index 5c9c0772..00000000 --- a/assets/index-CCmwjNGU.js +++ /dev/null @@ -1,5 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/About-BU6bVOrg.js","assets/vendor-react-BiHfrq0e.js","assets/vendor-gsap-a3sj5zmn.js","assets/vendor-ui-B8TlNU4J.js","assets/Decoder-biNq2b_R.js","assets/NeuralReveal-uYarhiMA.js","assets/MetricCard-BJ0ePioZ.js","assets/Workbench-BidwJKAH.js","assets/releases--9GgxpSb.js","assets/McpServer-Co_2_izC.js","assets/ClaudePlugin-RchU6fia.js","assets/Blog-B5AVcxHA.js","assets/blogData-OjR2ZtNr.js","assets/BlogPost-Cflzrvst.js","assets/BlogPost-dRWncRqa.css","assets/Pricing-BMbyXkw2.js","assets/faqData-De1eOWz0.js","assets/PricingFR-DYCR87D8.js","assets/Commercial-DQA7Mxss.js","assets/Contact-BcMJNVGG.js","assets/CalendlyWidget-BuhQfp2_.js","assets/License-CXS5aYz7.js","assets/LicenseFR-Ckd0MEiL.js","assets/DecoderFR-DlRe5BDF.js","assets/Privacy-DTWyxh_E.js","assets/LegalPage-k7aoVn24.js","assets/privacy-C_JimZhu.js","assets/Terms-BQl40Nln.js","assets/terms-DgnSX4e_.js","assets/TermsFR-LQl3tW0l.js","assets/Refund-7XZ4VkKd.js","assets/RefundFR-i_PP-hSK.js","assets/PrivacyFR-Bhng6Sji.js","assets/LicenseAgreement-6bmCtLLY.js","assets/licenseAgreement-SdRZXyQm.js","assets/LicenseAgreementFR-CCa0fXfI.js","assets/Security-_EeEi6gF.js","assets/HomeFR-DAGdU1jQ.js","assets/GettingStarted-B53GBAZh.js","assets/UseCases-C79R3CZj.js","assets/Status-TwBfNKPu.js","assets/Compare-5L3DLJJs.js","assets/Founder-D4bg94dW.js","assets/Evidence-C-hSXMLq.js","assets/Changelog-Coh13L0q.js","assets/TechnicalReference-6OShAOCc.js","assets/Docs-Do1RRZu3.js","assets/Installer-DsNWHCu5.js","assets/Manual-Bko8q4XD.js","assets/Success-BhHxkaUv.js","assets/NotFound-LmmZglSu.js"])))=>i.map(i=>d[i]); -import{r as l,j as e,c as Ce}from"./vendor-react-BiHfrq0e.js";import{S as ke,C as st,a as ot,b as lt,R as it,c as ct,d as dt,F as ut,B as mt,P as ht,M as pt,e as ft}from"./vendor-ui-B8TlNU4J.js";import{g as he,S as xt}from"./vendor-gsap-a3sj5zmn.js";(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))s(a);new MutationObserver(a=>{for(const o of a)if(o.type==="childList")for(const c of o.addedNodes)c.tagName==="LINK"&&c.rel==="modulepreload"&&s(c)}).observe(document,{childList:!0,subtree:!0});function n(a){const o={};return a.integrity&&(o.integrity=a.integrity),a.referrerPolicy&&(o.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?o.credentials="include":a.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function s(a){if(a.ep)return;a.ep=!0;const o=n(a);fetch(a.href,o)}})();var Re="popstate";function gt(t={}){function r(s,a){let{pathname:o,search:c,hash:d}=s.location;return pe("",{pathname:o,search:c,hash:d},a.state&&a.state.usr||null,a.state&&a.state.key||"default")}function n(s,a){return typeof a=="string"?a:H(a)}return yt(r,n,null,t)}function O(t,r){if(t===!1||t===null||typeof t>"u")throw new Error(r)}function T(t,r){if(!t){typeof console<"u"&&console.warn(r);try{throw new Error(r)}catch{}}}function bt(){return Math.random().toString(36).substring(2,10)}function Pe(t,r){return{usr:t.state,key:t.key,idx:r}}function pe(t,r,n=null,s){return{pathname:typeof t=="string"?t:t.pathname,search:"",hash:"",...typeof r=="string"?q(r):r,state:n,key:r&&r.key||s||bt()}}function H({pathname:t="/",search:r="",hash:n=""}){return r&&r!=="?"&&(t+=r.charAt(0)==="?"?r:"?"+r),n&&n!=="#"&&(t+=n.charAt(0)==="#"?n:"#"+n),t}function q(t){let r={};if(t){let n=t.indexOf("#");n>=0&&(r.hash=t.substring(n),t=t.substring(0,n));let s=t.indexOf("?");s>=0&&(r.search=t.substring(s),t=t.substring(0,s)),t&&(r.pathname=t)}return r}function yt(t,r,n,s={}){let{window:a=document.defaultView,v5Compat:o=!1}=s,c=a.history,d="POP",u=null,i=h();i==null&&(i=0,c.replaceState({...c.state,idx:i},""));function h(){return(c.state||{idx:null}).idx}function x(){d="POP";let N=h(),y=N==null?null:N-i;i=N,u&&u({action:d,location:j.location,delta:y})}function v(N,y){d="PUSH";let f=pe(j.location,N,y);i=h()+1;let m=Pe(f,i),b=j.createHref(f);try{c.pushState(m,"",b)}catch(P){if(P instanceof DOMException&&P.name==="DataCloneError")throw P;a.location.assign(b)}o&&u&&u({action:d,location:j.location,delta:1})}function p(N,y){d="REPLACE";let f=pe(j.location,N,y);i=h();let m=Pe(f,i),b=j.createHref(f);c.replaceState(m,"",b),o&&u&&u({action:d,location:j.location,delta:0})}function g(N){return vt(N)}let j={get action(){return d},get location(){return t(a,c)},listen(N){if(u)throw new Error("A history only accepts one active listener");return a.addEventListener(Re,x),u=N,()=>{a.removeEventListener(Re,x),u=null}},createHref(N){return r(a,N)},createURL:g,encodeLocation(N){let y=g(N);return{pathname:y.pathname,search:y.search,hash:y.hash}},push:v,replace:p,go(N){return c.go(N)}};return j}function vt(t,r=!1){let n="http://localhost";typeof window<"u"&&(n=window.location.origin!=="null"?window.location.origin:window.location.href),O(n,"No window.location.(origin|href) available to create URL");let s=typeof t=="string"?t:H(t);return s=s.replace(/ $/,"%20"),!r&&s.startsWith("//")&&(s=n+s),new URL(s,n)}function Fe(t,r,n="/"){return jt(t,r,n,!1)}function jt(t,r,n,s){let a=typeof r=="string"?q(r):r,o=U(a.pathname||"/",n);if(o==null)return null;let c=Ue(t);wt(c);let d=null;for(let u=0;d==null&&u{let u={relativePath:d===void 0?o.path||"":d,caseSensitive:o.caseSensitive===!0,childrenIndex:c,route:o};u.relativePath.startsWith("/")&&(O(u.relativePath.startsWith(s),`Absolute route path "${u.relativePath}" nested under path "${s}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),u.relativePath=u.relativePath.slice(s.length));let i=F([s,u.relativePath]),h=n.concat(u);o.children&&o.children.length>0&&(O(o.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${i}".`),Ue(o.children,r,h,i)),!(o.path==null&&!o.index)&&r.push({path:i,score:_t(i,o.index),routesMeta:h})};return t.forEach((o,c)=>{if(o.path===""||!o.path?.includes("?"))a(o,c);else for(let d of Be(o.path))a(o,c,d)}),r}function Be(t){let r=t.split("/");if(r.length===0)return[];let[n,...s]=r,a=n.endsWith("?"),o=n.replace(/\?$/,"");if(s.length===0)return a?[o,""]:[o];let c=Be(s.join("/")),d=[];return d.push(...c.map(u=>u===""?o:[o,u].join("/"))),a&&d.push(...c),d.map(u=>t.startsWith("/")&&u===""?"/":u)}function wt(t){t.sort((r,n)=>r.score!==n.score?n.score-r.score:Lt(r.routesMeta.map(s=>s.childrenIndex),n.routesMeta.map(s=>s.childrenIndex)))}var Nt=/^:[\w-]+$/,Et=3,Ct=2,kt=1,Rt=10,Pt=-2,_e=t=>t==="*";function _t(t,r){let n=t.split("/"),s=n.length;return n.some(_e)&&(s+=Pt),r&&(s+=Ct),n.filter(a=>!_e(a)).reduce((a,o)=>a+(Nt.test(o)?Et:o===""?kt:Rt),s)}function Lt(t,r){return t.length===r.length&&t.slice(0,-1).every((s,a)=>s===r[a])?t[t.length-1]-r[r.length-1]:0}function St(t,r,n=!1){let{routesMeta:s}=t,a={},o="/",c=[];for(let d=0;d{if(h==="*"){let g=d[v]||"";c=o.slice(0,o.length-g.length).replace(/(.)\/+$/,"$1")}const p=d[v];return x&&!p?i[h]=void 0:i[h]=(p||"").replace(/%2F/g,"/"),i},{}),pathname:o,pathnameBase:c,pattern:t}}function Ot(t,r=!1,n=!0){T(t==="*"||!t.endsWith("*")||t.endsWith("/*"),`Route path "${t}" will be treated as if it were "${t.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${t.replace(/\*$/,"/*")}".`);let s=[],a="^"+t.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(c,d,u)=>(s.push({paramName:d,isOptional:u!=null}),u?"/?([^\\/]+)?":"/([^\\/]+)"));return t.endsWith("*")?(s.push({paramName:"*"}),a+=t==="*"||t==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?a+="\\/*$":t!==""&&t!=="/"&&(a+="(?:(?=\\/|$))"),[new RegExp(a,r?void 0:"i"),s]}function Dt(t){try{return t.split("/").map(r=>decodeURIComponent(r).replace(/\//g,"%2F")).join("/")}catch(r){return T(!1,`The URL path "${t}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${r}).`),t}}function U(t,r){if(r==="/")return t;if(!t.toLowerCase().startsWith(r.toLowerCase()))return null;let n=r.endsWith("/")?r.length-1:r.length,s=t.charAt(n);return s&&s!=="/"?null:t.slice(n)||"/"}function At(t,r="/"){let{pathname:n,search:s="",hash:a=""}=typeof t=="string"?q(t):t;return{pathname:n?n.startsWith("/")?n:Tt(n,r):r,search:Mt(s),hash:Ft(a)}}function Tt(t,r){let n=r.replace(/\/+$/,"").split("/");return t.split("/").forEach(a=>{a===".."?n.length>1&&n.pop():a!=="."&&n.push(a)}),n.length>1?n.join("/"):"/"}function de(t,r,n,s){return`Cannot include a '${t}' character in a manually specified \`to.${r}\` field [${JSON.stringify(s)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function $t(t){return t.filter((r,n)=>n===0||r.route.path&&r.route.path.length>0)}function ze(t){let r=$t(t);return r.map((n,s)=>s===r.length-1?n.pathname:n.pathnameBase)}function qe(t,r,n,s=!1){let a;typeof t=="string"?a=q(t):(a={...t},O(!a.pathname||!a.pathname.includes("?"),de("?","pathname","search",a)),O(!a.pathname||!a.pathname.includes("#"),de("#","pathname","hash",a)),O(!a.search||!a.search.includes("#"),de("#","search","hash",a)));let o=t===""||a.pathname==="",c=o?"/":a.pathname,d;if(c==null)d=n;else{let x=r.length-1;if(!s&&c.startsWith("..")){let v=c.split("/");for(;v[0]==="..";)v.shift(),x-=1;a.pathname=v.join("/")}d=x>=0?r[x]:"/"}let u=At(a,d),i=c&&c!=="/"&&c.endsWith("/"),h=(o||c===".")&&n.endsWith("/");return!u.pathname.endsWith("/")&&(i||h)&&(u.pathname+="/"),u}var F=t=>t.join("/").replace(/\/\/+/g,"/"),It=t=>t.replace(/\/+$/,"").replace(/^\/*/,"/"),Mt=t=>!t||t==="?"?"":t.startsWith("?")?t:"?"+t,Ft=t=>!t||t==="#"?"":t.startsWith("#")?t:"#"+t;function Ut(t){return t!=null&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.internal=="boolean"&&"data"in t}var We=["POST","PUT","PATCH","DELETE"];new Set(We);var Bt=["GET",...We];new Set(Bt);var W=l.createContext(null);W.displayName="DataRouter";var se=l.createContext(null);se.displayName="DataRouterState";var Ve=l.createContext({isTransitioning:!1});Ve.displayName="ViewTransition";var zt=l.createContext(new Map);zt.displayName="Fetchers";var qt=l.createContext(null);qt.displayName="Await";var $=l.createContext(null);$.displayName="Navigation";var Q=l.createContext(null);Q.displayName="Location";var I=l.createContext({outlet:null,matches:[],isDataRoute:!1});I.displayName="Route";var ge=l.createContext(null);ge.displayName="RouteError";function Wt(t,{relative:r}={}){O(J(),"useHref() may be used only in the context of a component.");let{basename:n,navigator:s}=l.useContext($),{hash:a,pathname:o,search:c}=Y(t,{relative:r}),d=o;return n!=="/"&&(d=o==="/"?n:F([n,o])),s.createHref({pathname:d,search:c,hash:a})}function J(){return l.useContext(Q)!=null}function A(){return O(J(),"useLocation() may be used only in the context of a component."),l.useContext(Q).location}var Ge="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function He(t){l.useContext($).static||l.useLayoutEffect(t)}function Qe(){let{isDataRoute:t}=l.useContext(I);return t?nr():Vt()}function Vt(){O(J(),"useNavigate() may be used only in the context of a component.");let t=l.useContext(W),{basename:r,navigator:n}=l.useContext($),{matches:s}=l.useContext(I),{pathname:a}=A(),o=JSON.stringify(ze(s)),c=l.useRef(!1);return He(()=>{c.current=!0}),l.useCallback((u,i={})=>{if(T(c.current,Ge),!c.current)return;if(typeof u=="number"){n.go(u);return}let h=qe(u,JSON.parse(o),a,i.relative==="path");t==null&&r!=="/"&&(h.pathname=h.pathname==="/"?r:F([r,h.pathname])),(i.replace?n.replace:n.push)(h,i.state,i)},[r,n,o,a,t])}l.createContext(null);function ea(){let{matches:t}=l.useContext(I),r=t[t.length-1];return r?r.params:{}}function Y(t,{relative:r}={}){let{matches:n}=l.useContext(I),{pathname:s}=A(),a=JSON.stringify(ze(n));return l.useMemo(()=>qe(t,JSON.parse(a),s,r==="path"),[t,a,s,r])}function Gt(t,r){return Je(t,r)}function Je(t,r,n,s){O(J(),"useRoutes() may be used only in the context of a component.");let{navigator:a}=l.useContext($),{matches:o}=l.useContext(I),c=o[o.length-1],d=c?c.params:{},u=c?c.pathname:"/",i=c?c.pathnameBase:"/",h=c&&c.route;{let y=h&&h.path||"";Ye(u,!h||y.endsWith("*")||y.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${u}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. - -Please change the parent to .`)}let x=A(),v;if(r){let y=typeof r=="string"?q(r):r;O(i==="/"||y.pathname?.startsWith(i),`When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${i}" but pathname "${y.pathname}" was given in the \`location\` prop.`),v=y}else v=x;let p=v.pathname||"/",g=p;if(i!=="/"){let y=i.replace(/^\//,"").split("/");g="/"+p.replace(/^\//,"").split("/").slice(y.length).join("/")}let j=Fe(t,{pathname:g});T(h||j!=null,`No routes matched location "${v.pathname}${v.search}${v.hash}" `),T(j==null||j[j.length-1].route.element!==void 0||j[j.length-1].route.Component!==void 0||j[j.length-1].route.lazy!==void 0,`Matched leaf route at location "${v.pathname}${v.search}${v.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);let N=Kt(j&&j.map(y=>Object.assign({},y,{params:Object.assign({},d,y.params),pathname:F([i,a.encodeLocation?a.encodeLocation(y.pathname).pathname:y.pathname]),pathnameBase:y.pathnameBase==="/"?i:F([i,a.encodeLocation?a.encodeLocation(y.pathnameBase).pathname:y.pathnameBase])})),o,n,s);return r&&N?l.createElement(Q.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...v},navigationType:"POP"}},N):N}function Ht(){let t=rr(),r=Ut(t)?`${t.status} ${t.statusText}`:t instanceof Error?t.message:JSON.stringify(t),n=t instanceof Error?t.stack:null,s="rgba(200,200,200, 0.5)",a={padding:"0.5rem",backgroundColor:s},o={padding:"2px 4px",backgroundColor:s},c=null;return console.error("Error handled by React Router default ErrorBoundary:",t),c=l.createElement(l.Fragment,null,l.createElement("p",null,"💿 Hey developer 👋"),l.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",l.createElement("code",{style:o},"ErrorBoundary")," or"," ",l.createElement("code",{style:o},"errorElement")," prop on your route.")),l.createElement(l.Fragment,null,l.createElement("h2",null,"Unexpected Application Error!"),l.createElement("h3",{style:{fontStyle:"italic"}},r),n?l.createElement("pre",{style:a},n):null,c)}var Qt=l.createElement(Ht,null),Jt=class extends l.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,r){return r.location!==t.location||r.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:r.error,location:r.location,revalidation:t.revalidation||r.revalidation}}componentDidCatch(t,r){console.error("React Router caught the following error during render",t,r)}render(){return this.state.error!==void 0?l.createElement(I.Provider,{value:this.props.routeContext},l.createElement(ge.Provider,{value:this.state.error,children:this.props.component})):this.props.children}};function Yt({routeContext:t,match:r,children:n}){let s=l.useContext(W);return s&&s.static&&s.staticContext&&(r.route.errorElement||r.route.ErrorBoundary)&&(s.staticContext._deepestRenderedBoundaryId=r.route.id),l.createElement(I.Provider,{value:t},n)}function Kt(t,r=[],n=null,s=null){if(t==null){if(!n)return null;if(n.errors)t=n.matches;else if(r.length===0&&!n.initialized&&n.matches.length>0)t=n.matches;else return null}let a=t,o=n?.errors;if(o!=null){let u=a.findIndex(i=>i.route.id&&o?.[i.route.id]!==void 0);O(u>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(o).join(",")}`),a=a.slice(0,Math.min(a.length,u+1))}let c=!1,d=-1;if(n)for(let u=0;u=0?a=a.slice(0,d+1):a=[a[0]];break}}}return a.reduceRight((u,i,h)=>{let x,v=!1,p=null,g=null;n&&(x=o&&i.route.id?o[i.route.id]:void 0,p=i.route.errorElement||Qt,c&&(d<0&&h===0?(Ye("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),v=!0,g=null):d===h&&(v=!0,g=i.route.hydrateFallbackElement||null)));let j=r.concat(a.slice(0,h+1)),N=()=>{let y;return x?y=p:v?y=g:i.route.Component?y=l.createElement(i.route.Component,null):i.route.element?y=i.route.element:y=u,l.createElement(Yt,{match:i,routeContext:{outlet:u,matches:j,isDataRoute:n!=null},children:y})};return n&&(i.route.ErrorBoundary||i.route.errorElement||h===0)?l.createElement(Jt,{location:n.location,revalidation:n.revalidation,component:p,error:x,children:N(),routeContext:{outlet:null,matches:j,isDataRoute:!0}}):N()},null)}function be(t){return`${t} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Xt(t){let r=l.useContext(W);return O(r,be(t)),r}function Zt(t){let r=l.useContext(se);return O(r,be(t)),r}function er(t){let r=l.useContext(I);return O(r,be(t)),r}function ye(t){let r=er(t),n=r.matches[r.matches.length-1];return O(n.route.id,`${t} can only be used on routes that contain a unique "id"`),n.route.id}function tr(){return ye("useRouteId")}function rr(){let t=l.useContext(ge),r=Zt("useRouteError"),n=ye("useRouteError");return t!==void 0?t:r.errors?.[n]}function nr(){let{router:t}=Xt("useNavigate"),r=ye("useNavigate"),n=l.useRef(!1);return He(()=>{n.current=!0}),l.useCallback(async(a,o={})=>{T(n.current,Ge),n.current&&(typeof a=="number"?t.navigate(a):await t.navigate(a,{fromRouteId:r,...o}))},[t,r])}var Le={};function Ye(t,r,n){!r&&!Le[t]&&(Le[t]=!0,T(!1,n))}l.memo(ar);function ar({routes:t,future:r,state:n}){return Je(t,void 0,n,r)}function E(t){O(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function sr({basename:t="/",children:r=null,location:n,navigationType:s="POP",navigator:a,static:o=!1}){O(!J(),"You cannot render a inside another . You should never have more than one in your app.");let c=t.replace(/^\/*/,"/"),d=l.useMemo(()=>({basename:c,navigator:a,static:o,future:{}}),[c,a,o]);typeof n=="string"&&(n=q(n));let{pathname:u="/",search:i="",hash:h="",state:x=null,key:v="default"}=n,p=l.useMemo(()=>{let g=U(u,c);return g==null?null:{location:{pathname:g,search:i,hash:h,state:x,key:v},navigationType:s}},[c,u,i,h,x,v,s]);return T(p!=null,` is not able to match the URL "${u}${i}${h}" because it does not start with the basename, so the won't render anything.`),p==null?null:l.createElement($.Provider,{value:d},l.createElement(Q.Provider,{children:r,value:p}))}function or({children:t,location:r}){return Gt(fe(t),r)}function fe(t,r=[]){let n=[];return l.Children.forEach(t,(s,a)=>{if(!l.isValidElement(s))return;let o=[...r,a];if(s.type===l.Fragment){n.push.apply(n,fe(s.props.children,o));return}O(s.type===E,`[${typeof s.type=="string"?s.type:s.type.name}] is not a component. All component children of must be a or `),O(!s.props.index||!s.props.children,"An index route cannot have child routes.");let c={id:s.props.id||o.join("-"),caseSensitive:s.props.caseSensitive,element:s.props.element,Component:s.props.Component,index:s.props.index,path:s.props.path,loader:s.props.loader,action:s.props.action,hydrateFallbackElement:s.props.hydrateFallbackElement,HydrateFallback:s.props.HydrateFallback,errorElement:s.props.errorElement,ErrorBoundary:s.props.ErrorBoundary,hasErrorBoundary:s.props.hasErrorBoundary===!0||s.props.ErrorBoundary!=null||s.props.errorElement!=null,shouldRevalidate:s.props.shouldRevalidate,handle:s.props.handle,lazy:s.props.lazy};s.props.children&&(c.children=fe(s.props.children,o)),n.push(c)}),n}var te="get",re="application/x-www-form-urlencoded";function oe(t){return t!=null&&typeof t.tagName=="string"}function lr(t){return oe(t)&&t.tagName.toLowerCase()==="button"}function ir(t){return oe(t)&&t.tagName.toLowerCase()==="form"}function cr(t){return oe(t)&&t.tagName.toLowerCase()==="input"}function dr(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}function ur(t,r){return t.button===0&&(!r||r==="_self")&&!dr(t)}function xe(t=""){return new URLSearchParams(typeof t=="string"||Array.isArray(t)||t instanceof URLSearchParams?t:Object.keys(t).reduce((r,n)=>{let s=t[n];return r.concat(Array.isArray(s)?s.map(a=>[n,a]):[[n,s]])},[]))}function mr(t,r){let n=xe(t);return r&&r.forEach((s,a)=>{n.has(a)||r.getAll(a).forEach(o=>{n.append(a,o)})}),n}var X=null;function hr(){if(X===null)try{new FormData(document.createElement("form"),0),X=!1}catch{X=!0}return X}var pr=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function ue(t){return t!=null&&!pr.has(t)?(T(!1,`"${t}" is not a valid \`encType\` for \`

\`/\`\` and will default to "${re}"`),null):t}function fr(t,r){let n,s,a,o,c;if(ir(t)){let d=t.getAttribute("action");s=d?U(d,r):null,n=t.getAttribute("method")||te,a=ue(t.getAttribute("enctype"))||re,o=new FormData(t)}else if(lr(t)||cr(t)&&(t.type==="submit"||t.type==="image")){let d=t.form;if(d==null)throw new Error('Cannot submit a
Pricing
Contact
Back to All Articles
August 2026FoundationsBy Guillaume Lessard · 5 min read

Syndrome Faithfulness: The Decoder Contract

The GF(2) invariant Hc=s, logical cosets, degeneracy, and graphlike eligibility explained from first principles.

Author: Guillaume Lessard / qector.store
-Source: QECTOR Decoder v3 Reference Manual v1.0.0
-Date: August 2026
-DOI: 10.5281/zenodo.21941046
-Tags: quantum error correction, stabilizer codes, syndrome decoding, fault tolerance

-

Abstract

-

Quantum error correction is often introduced as a search for the most likely physical error. A decoder has a more basic obligation first: the correction it returns must reproduce the measured syndrome. In the binary representation used by QECTOR, that obligation is

-Hc=s(mod2).Hc = s \pmod 2. -

This post builds the invariant from the parity-check map, proves why it places the residual error in the kernel of H, and explains why that still does not settle the logical outcome. The line between a valid syndrome representative and a harmless stabilizer representative is the foundation for comparing every decoder family.

-

1. The binary picture

-

Work over the field F2 = {0, 1}, where addition is XOR. Let n be the number of physical qubits and m the number of checks. A binary error vector is e in F2^n, a parity-check matrix is H in F2^(m x n), and the measured syndrome is

-s=He(mod2).s = He \pmod 2. -

The j-th syndrome bit records whether the error anticommutes with check j. The matrix is therefore not decoder metadata. It is the map that defines what the measurement means.

-

The Tanner graph carries one qubit node per column and one check node per row, with an edge wherever H[j, i] = 1. Different algorithms read the same incidence structure differently: message passing follows Tanner edges, Union-Find grows clusters, and graphlike matching interprets low-degree qubits as detector edges.

-

2. Stabilizers, kernels, and cosets

-

A stabilizer code is the common +1 eigenspace of commuting Pauli checks. In the binary CSS picture, the two sectors use matrices H_X and H_Z with

-HXHZT=0(mod2).H_X H_Z^T = 0 \pmod 2. -

For one sector, the zero-syndrome vectors form

-ker⁡(H)={v:Hv=0}.\ker(H) = \{v : Hv = 0\}. -

The row space im(H^T) sits inside this kernel when the stabilizers commute. Vectors in im(H^T) are products of stabilizers and act trivially on the code space. Vectors in ker(H) outside the row space are undetectable logical operators.

-

A syndrome never identifies a unique physical error. If e produces s, then every vector in the affine set e + ker(H) produces the same syndrome. A decoder picks a representative of that set using geometry, weights, beliefs, or a lookup table.

-

3. The syndrome-faithfulness theorem

-

Let a decoder return c for a reachable syndrome s = He.

-

Theorem

-

The following statements are equivalent for the returned correction:

-
    -
  1. The correction is syndrome-faithful: Hc = s.
  2. -
  3. The residual c + e lies in ker(H).
  4. -
-

Proof

-

If Hc = s and He = s, then

-H(c+e)=Hc+He=s+s=0(mod2).H(c + e) = Hc + He = s + s = 0 \pmod 2. -

So c + e in ker(H). Conversely, if H(c + e) = 0, then

-Hc+He=0⟹Hc=He=s(mod2).Hc + He = 0 \quad\Longrightarrow\quad Hc = He = s \pmod 2. -

The equation is the complete algebraic gate for returning to the code space. It says nothing yet about which logical coset the residual occupies.

-

4. Logical success is a quotient question

-

The logical criterion is the next layer:

-success  ⟺  c+e∈im⁡(HT),\text{success} \iff c + e \in \operatorname{im}(H^T), -

and

-logical failure  ⟺  c+e∈ker⁡(H)∖im⁡(HT).\text{logical failure} \iff c + e \in \ker(H) \setminus \operatorname{im}(H^T). -

Two corrections can be different bit strings and still be equally correct if their difference is a stabilizer. Scoring c == e is therefore the wrong metric for a degenerate stabilizer code. Score logical observables or coset membership instead.

-

For a CSS code, the sector dimensions carry the same idea. From H_X H_Z^T = 0 we get

-dim⁡(ker⁡(HX)/im⁡(HZT))=k,\dim\left(\ker(H_X) / \operatorname{im}(H_Z^T)\right) = k, -

so the quotient holds the logical degrees of freedom, not the raw error representatives.

-

5. A small example: the Steane code

-

One sector of the Steane [[7,1,3]] code can use the checks

-
{3, 4, 5, 6}
-{1, 2, 5, 6}
-{0, 2, 4, 6}
-

Take an error on qubit 5:

-
e = [0, 0, 0, 0, 0, 1, 0]
-

Qubit 5 belongs to the first two checks, so

-
s = [1, 1, 0].
-

The minimal correction is c = e, but it is not the only faithful one. Add any stabilizer row combination g, and c + g still produces [1, 1, 0] with the same logical action. A raw-vector comparison would call these different. A coset comparison would not.

-

6. What graphlike means

-

Matching-based decoders need an extra structural condition. In a graphlike detector model, every qubit or fault mechanism touches at most two checks. The mechanism then becomes an edge between detector nodes, with a virtual boundary for one-ended cases.

-

If any qubit participates in more than two checks, the mechanism is a hyperedge. It cannot be silently rewritten as pairwise matching edges without changing the problem. QECTOR's documented routing rule sends such a matrix to BP-OSD, whose contract accepts any reachable GF(2) check matrix.

-

This guard matters more than a code-family label. A problem named "surface" is not automatically graphlike, and a general matrix is not automatically eligible for Blossom.

-

7. How the invariant travels through the engine

-

The reference manual describes fifteen specialized backends. They differ in domain and accuracy claims but share one gate:

-
    -
  • Blossom builds paths whose boundary is the defect set.
  • -
  • Sparse Blossom processes tight collision events, and escalates when a sparse solve is incomplete or unfaithful.
  • -
  • Union-Find grows clusters and peels a spanning forest.
  • -
  • BP-OSD repairs a residual syndrome with a GF(2) basis solve.
  • -
  • Ambiguity clustering solves reliable and ambiguous components whose residuals sum to the global syndrome.
  • -
  • Space-time decoding applies the same boundary argument to a lifted detector matrix.
  • -
  • GPU batch paths are checked against the CPU reference on tested configurations.
  • -
-

The algorithms are not interchangeable. The invariant is the common contract that lets the routing layer and the validation harness compare them safely.

-

8. Evidence and claim boundaries

-

The manual anchors the faithfulness claim to the syndrome-faithfulness tests and the cross-decoder tests in the frozen workspace. It separately scopes exact MWPM, Sparse Blossom, Union-Find, BP-OSD, DEM, GPU identity, and API claims to their named evidence.

-

It does not establish a universal threshold, a universal fastest backend, or a hardware-independent latency number. Those claims need a surviving artifact with the circuit, code, noise model, seed, shots, environment, raw results, and hash.

-

Takeaway

-

The first question for any decoder is not "did it guess the exact error?" It is:

-
Does H @ correction equal the reachable syndrome modulo 2?
-

Once the answer is yes, the remaining question is which element of ker(H) separates the correction from the true error. That is the logical-coset problem. Keeping the two questions separate is the shortest path to correct mathematics, honest benchmarks, and robust decoder engineering.

-

Reference

-

Guillaume Lessard, QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine, v1.0.0, August 2026. DOI: 10.5281/zenodo.21941046.

- - - diff --git a/blog/01_qec_foundations_syndrome_faithfulness.md b/blog/01_qec_foundations_syndrome_faithfulness.md deleted file mode 100644 index 16e5cc3d..00000000 --- a/blog/01_qec_foundations_syndrome_faithfulness.md +++ /dev/null @@ -1,164 +0,0 @@ -# Syndrome Faithfulness: The Contract Every QEC Decoder Must Keep - -Author: Guillaume Lessard / qector.store -Source: QECTOR Decoder v3 Reference Manual v1.0.0 -Date: August 2026 -DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046) -Tags: quantum error correction, stabilizer codes, syndrome decoding, fault tolerance - -## Abstract - -Quantum error correction is often introduced as a search for the most likely physical error. A decoder has a more basic obligation first: the correction it returns must reproduce the measured syndrome. In the binary representation used by QECTOR, that obligation is - -$$ -Hc = s \pmod 2. -$$ - -This post builds the invariant from the parity-check map, proves why it places the residual error in the kernel of `H`, and explains why that still does not settle the logical outcome. The line between a valid syndrome representative and a harmless stabilizer representative is the foundation for comparing every decoder family. - -## 1. The binary picture - -Work over the field `F2 = {0, 1}`, where addition is XOR. Let `n` be the number of physical qubits and `m` the number of checks. A binary error vector is `e in F2^n`, a parity-check matrix is `H in F2^(m x n)`, and the measured syndrome is - -$$ -s = He \pmod 2. -$$ - -The `j`-th syndrome bit records whether the error anticommutes with check `j`. The matrix is therefore not decoder metadata. It is the map that defines what the measurement means. - -The Tanner graph carries one qubit node per column and one check node per row, with an edge wherever `H[j, i] = 1`. Different algorithms read the same incidence structure differently: message passing follows Tanner edges, Union-Find grows clusters, and graphlike matching interprets low-degree qubits as detector edges. - -## 2. Stabilizers, kernels, and cosets - -A stabilizer code is the common `+1` eigenspace of commuting Pauli checks. In the binary CSS picture, the two sectors use matrices `H_X` and `H_Z` with - -$$ -H_X H_Z^T = 0 \pmod 2. -$$ - -For one sector, the zero-syndrome vectors form - -$$ -\ker(H) = \{v : Hv = 0\}. -$$ - -The row space `im(H^T)` sits inside this kernel when the stabilizers commute. Vectors in `im(H^T)` are products of stabilizers and act trivially on the code space. Vectors in `ker(H)` outside the row space are undetectable logical operators. - -A syndrome never identifies a unique physical error. If `e` produces `s`, then every vector in the affine set `e + ker(H)` produces the same syndrome. A decoder picks a representative of that set using geometry, weights, beliefs, or a lookup table. - -## 3. The syndrome-faithfulness theorem - -Let a decoder return `c` for a reachable syndrome `s = He`. - -### Theorem - -The following statements are equivalent for the returned correction: - -1. The correction is syndrome-faithful: `Hc = s`. -2. The residual `c + e` lies in `ker(H)`. - -### Proof - -If `Hc = s` and `He = s`, then - -$$ -H(c + e) = Hc + He = s + s = 0 \pmod 2. -$$ - -So `c + e in ker(H)`. Conversely, if `H(c + e) = 0`, then - -$$ -Hc + He = 0 \quad\Longrightarrow\quad Hc = He = s \pmod 2. -$$ - -The equation is the complete algebraic gate for returning to the code space. It says nothing yet about which logical coset the residual occupies. - -## 4. Logical success is a quotient question - -The logical criterion is the next layer: - -$$ -\text{success} \iff c + e \in \operatorname{im}(H^T), -$$ - -and - -$$ -\text{logical failure} \iff c + e \in \ker(H) \setminus \operatorname{im}(H^T). -$$ - -Two corrections can be different bit strings and still be equally correct if their difference is a stabilizer. Scoring `c == e` is therefore the wrong metric for a degenerate stabilizer code. Score logical observables or coset membership instead. - -For a CSS code, the sector dimensions carry the same idea. From `H_X H_Z^T = 0` we get - -$$ -\dim\left(\ker(H_X) / \operatorname{im}(H_Z^T)\right) = k, -$$ - -so the quotient holds the logical degrees of freedom, not the raw error representatives. - -## 5. A small example: the Steane code - -One sector of the Steane `[[7,1,3]]` code can use the checks - -```text -{3, 4, 5, 6} -{1, 2, 5, 6} -{0, 2, 4, 6} -``` - -Take an error on qubit 5: - -```text -e = [0, 0, 0, 0, 0, 1, 0] -``` - -Qubit 5 belongs to the first two checks, so - -```text -s = [1, 1, 0]. -``` - -The minimal correction is `c = e`, but it is not the only faithful one. Add any stabilizer row combination `g`, and `c + g` still produces `[1, 1, 0]` with the same logical action. A raw-vector comparison would call these different. A coset comparison would not. - -## 6. What graphlike means - -Matching-based decoders need an extra structural condition. In a graphlike detector model, every qubit or fault mechanism touches at most two checks. The mechanism then becomes an edge between detector nodes, with a virtual boundary for one-ended cases. - -If any qubit participates in more than two checks, the mechanism is a hyperedge. It cannot be silently rewritten as pairwise matching edges without changing the problem. QECTOR's documented routing rule sends such a matrix to BP-OSD, whose contract accepts any reachable GF(2) check matrix. - -This guard matters more than a code-family label. A problem named "surface" is not automatically graphlike, and a general matrix is not automatically eligible for Blossom. - -## 7. How the invariant travels through the engine - -The reference manual describes fifteen specialized backends. They differ in domain and accuracy claims but share one gate: - -- Blossom builds paths whose boundary is the defect set. -- Sparse Blossom processes tight collision events, and escalates when a sparse solve is incomplete or unfaithful. -- Union-Find grows clusters and peels a spanning forest. -- BP-OSD repairs a residual syndrome with a GF(2) basis solve. -- Ambiguity clustering solves reliable and ambiguous components whose residuals sum to the global syndrome. -- Space-time decoding applies the same boundary argument to a lifted detector matrix. -- GPU batch paths are checked against the CPU reference on tested configurations. - -The algorithms are not interchangeable. The invariant is the common contract that lets the routing layer and the validation harness compare them safely. - -## 8. Evidence and claim boundaries - -The manual anchors the faithfulness claim to the syndrome-faithfulness tests and the cross-decoder tests in the frozen workspace. It separately scopes exact MWPM, Sparse Blossom, Union-Find, BP-OSD, DEM, GPU identity, and API claims to their named evidence. - -It does **not** establish a universal threshold, a universal fastest backend, or a hardware-independent latency number. Those claims need a surviving artifact with the circuit, code, noise model, seed, shots, environment, raw results, and hash. - -## Takeaway - -The first question for any decoder is not "did it guess the exact error?" It is: - -```text -Does H @ correction equal the reachable syndrome modulo 2? -``` - -Once the answer is yes, the remaining question is which element of `ker(H)` separates the correction from the true error. That is the logical-coset problem. Keeping the two questions separate is the shortest path to correct mathematics, honest benchmarks, and robust decoder engineering. - -## Reference - -Guillaume Lessard, *QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine*, v1.0.0, August 2026. DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046). diff --git a/blog/02BlossomMwpmExact/index.html b/blog/02BlossomMwpmExact/index.html deleted file mode 100644 index 442974b6..00000000 --- a/blog/02BlossomMwpmExact/index.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Exact Blossom Decoding for Graphlike QEC · QECTOR Blog - - - - - - - - - - - - - -
Skip to main content
Back to All Articles
August 2026Decoder AlgorithmsBy Guillaume Lessard · 5 min read

Exact Blossom Decoding for Graphlike QEC

How weighted MWPM, Edmonds' primal-dual view, path boundaries, and sparse candidate escalation fit together.

Author: Guillaume Lessard / qector.store
-Source: QECTOR Decoder v3 Reference Manual v1.0.0
-Date: August 2026
-DOI: 10.5281/zenodo.21941046
-Tags: MWPM, Blossom, graphlike decoding, surface codes, optimization

-

Abstract

-

For a graphlike detector model, a syndrome is a set of defects. Minimum-weight perfect matching (MWPM) pairs those defects, and each pair is expanded into a minimum-weight path in the detector graph. QECTOR's BlossomDecoder implements the exact weighted matching contract described in the v1.0.0 manual. This post explains the matching problem, the primal-dual view of Edmonds' algorithm, the path-flipping proof of syndrome faithfulness, and the boundary between the exact solver and sparse candidate generation.

-

1. From defects to a matching problem

-

Let H be a graphlike parity-check map and let s be a reachable syndrome. The defect set is

-D={v:sv=1}.D = \{v : s_v = 1\}. -

Each graph edge represents a fault mechanism. A mechanism with probability p receives the log-likelihood weight

-w=log⁡(1−pp)=−log⁡(p1−p).w = \log\left(\frac{1-p}{p}\right) = -\log\left(\frac{p}{1-p}\right). -

For two defects u and v, the matching graph uses the shortest-path distance between them. A virtual boundary node handles a one-ended path. The solver selects a perfect matching on the defects, then XORs the selected graph paths into one correction vector.

-

The graphlike condition matters: a mechanism touching three or more detectors is a hyperedge, not a matching edge. The correct QECTOR route for that structure is BP-OSD.

-

2. The primal and dual programs

-

For the complete graph on D, let x_uv indicate whether defects u and v are paired. The primal objective is

-min⁡∑(u,v)wuvxuv\min \sum_{(u,v)} w_{uv}x_{uv} -

subject to every defect being matched exactly once, together with the odd-set constraints that define the matching polytope. The dual assigns vertex potentials and blossom potentials. In schematic form, its edge constraints are

-yu+yv+∑B∋u,vzB≤wuv,zB≥0.y_u + y_v + \sum_{B \ni u,v} z_B \leq w_{uv}, \qquad z_B \geq 0. -

An edge is tight when equality holds. Complementary slackness supplies the optimality certificate: an optimal matching can be supported by tight edges, and every active blossom meets the required matching boundary condition.

-

Blossom contraction is not a heuristic shortcut. An odd cycle can hide an augmenting path from the current alternating forest. Contracting that cycle into a temporary pseudonode lets the primal-dual search continue; expanding it restores the matching structure.

-

3. The path-flipping theorem

-

The matching objective chooses a likely pairing. The syndrome-faithfulness proof is a separate boundary argument.

-

Theorem

-

Let M be a perfect matching of the defect set. For every matched pair (u, v), let P_uv be a graph path between the two defects, or a path from a defect to the virtual boundary. Define

-c=⨁(u,v)∈MPuv.c = \bigoplus_{(u,v)\in M} P_{uv}. -

Then Hc = s (mod 2).

-

Proof

-

The interior vertices of a path have even incidence, so they cancel over F2. A path from u to v has boundary e_u + e_v. A boundary path has boundary e_u, because the virtual boundary contributes no detector syndrome. Therefore

-Hc=⨁(u,v)∈M(eu+ev).Hc = \bigoplus_{(u,v)\in M} (e_u + e_v). -

Every defect appears exactly once in the perfect matching, so the right-hand side is the XOR of all defect basis vectors. That is exactly s.

-

The proof does not require a unique path. If two shortest paths connect the same endpoints, their XOR is a cycle in ker(H). That is degeneracy, not a correctness failure.

-

4. A hand-worked ring example

-

Consider the ring checks

-
{0, 1}, {1, 2}, {2, 3}, {3, 4}, {4, 0}
-

and the syndrome

-
s = [1, 0, 1, 0, 0].
-

The defects are checks 0 and 2. There are two arcs between them:

-
    -
  • the short arc uses qubits 1 and 2, so c_short = [0, 1, 1, 0, 0];
  • -
  • the long arc uses qubits 0, 4, and 3.
  • -
-

With unit weights, the short arc is selected. Direct multiplication verifies

-
H @ c_short = [1, 0, 1, 0, 0]  (mod 2).
-

If the edge probabilities change, the selected arc can change too. Both paths remain syndrome-faithful because they share the same boundary. The weight model selects a representative; it does not change the algebraic contract.

-

5. Exact solver versus sparse candidate generation

-

The dense matching problem grows quickly with the number of defects. QECTOR's exact BlossomDecoder is the reference weighted MWPM path, documented as exact on the audited small matching codes. It is the right comparison point for correctness and optimality tests.

-

The sparse decoder uses a different engineering strategy. Candidate neighbors can be restricted with

-k=max⁡(12,⌈kmult∣D∣⌉),k = \max\left(12,\left\lceil k_{mult}\sqrt{|D|}\right\rceil\right), -

and the sparse solve can escalate to the full graph when the candidate set is incomplete or the returned correction fails verification. The manual therefore describes Sparse Blossom as faithful and near-optimal within its tested scope, not as a universal replacement for exact MWPM.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
QuestionExact BlossomSparse Blossom
Matching objectiveExact weighted MWPMEvent-driven sparse solve
Evidence boundaryAudited small matching codesTested faithfulness, near-optimality
Candidate graphFull matching graphAdaptive candidates with escalation
Shared gateH c = sH c = s
-

6. Minimal API path

-

The stable API example in the manual is deliberately small:

-
import numpy as np
-from qector_decoder_v3 import BlossomDecoder
-
-checks = [[0, 1], [1, 2], [2, 3], [3, 4]]
-syndrome = np.array([0, 1, 0, 0], dtype=np.uint8)
-
-correction = BlossomDecoder(checks, n_qubits=5).decode(syndrome)
-# Validate H @ correction == syndrome modulo 2.
-

For a detector error model, parse the model, verify that it is graphlike, collapse parallel mechanisms when appropriate, and pass its likelihood weights to the decoder. Unweighted decoding is not a substitute for a circuit-level prior when mechanisms have different probabilities.

-

7. What MWPM does not prove

-

An optimal matching objective does not prove a threshold for every code, noise model, or implementation. A faithful correction does not imply logical success for the sampled error either. The logical test stays

-c+e∈im⁡(HT).c + e \in \operatorname{im}(H^T). -

The v1.0.0 changelog anchors comparisons the way the manual requires: its 120-test LER suite on the distance-3 repetition code at p = 0.01 reports ler_qector = 0.00392 against ler_pymatching = 0.00317, inside the documented 4.5x margin. Any public comparison should still name the code family, distance, rounds, noise model, DEM settings, decoder mode, shots, seed, environment, and raw artifact. The manual intentionally excludes hardware-bound latency and throughput figures.

-

Takeaway

-

Blossom is valuable not because every QEC problem is a matching problem, but because it provides a precise reference for the graphlike problems that are matching problems. The optimization certificate chooses the minimum-weight pairing, the path boundary proof guarantees the syndrome, and the logical-coset test determines whether the correction is harmless.

-

Reference

-

Guillaume Lessard, QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine, v1.0.0, August 2026. DOI: 10.5281/zenodo.21941046.

- - - diff --git a/blog/02_blossom_mwpm_exact.md b/blog/02_blossom_mwpm_exact.md deleted file mode 100644 index 45259733..00000000 --- a/blog/02_blossom_mwpm_exact.md +++ /dev/null @@ -1,154 +0,0 @@ -# Exact Blossom Decoding: Why MWPM Is a Reference Solver for Graphlike QEC - -Author: Guillaume Lessard / qector.store -Source: QECTOR Decoder v3 Reference Manual v1.0.0 -Date: August 2026 -DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046) -Tags: MWPM, Blossom, graphlike decoding, surface codes, optimization - -## Abstract - -For a graphlike detector model, a syndrome is a set of defects. Minimum-weight perfect matching (MWPM) pairs those defects, and each pair is expanded into a minimum-weight path in the detector graph. QECTOR's `BlossomDecoder` implements the exact weighted matching contract described in the v1.0.0 manual. This post explains the matching problem, the primal-dual view of Edmonds' algorithm, the path-flipping proof of syndrome faithfulness, and the boundary between the exact solver and sparse candidate generation. - -## 1. From defects to a matching problem - -Let `H` be a graphlike parity-check map and let `s` be a reachable syndrome. The defect set is - -$$ -D = \{v : s_v = 1\}. -$$ - -Each graph edge represents a fault mechanism. A mechanism with probability `p` receives the log-likelihood weight - -$$ -w = \log\left(\frac{1-p}{p}\right) = -\log\left(\frac{p}{1-p}\right). -$$ - -For two defects `u` and `v`, the matching graph uses the shortest-path distance between them. A virtual boundary node handles a one-ended path. The solver selects a perfect matching on the defects, then XORs the selected graph paths into one correction vector. - -The graphlike condition matters: a mechanism touching three or more detectors is a hyperedge, not a matching edge. The correct QECTOR route for that structure is BP-OSD. - -## 2. The primal and dual programs - -For the complete graph on `D`, let `x_uv` indicate whether defects `u` and `v` are paired. The primal objective is - -$$ -\min \sum_{(u,v)} w_{uv}x_{uv} -$$ - -subject to every defect being matched exactly once, together with the odd-set constraints that define the matching polytope. The dual assigns vertex potentials and blossom potentials. In schematic form, its edge constraints are - -$$ -y_u + y_v + \sum_{B \ni u,v} z_B \leq w_{uv}, \qquad z_B \geq 0. -$$ - -An edge is *tight* when equality holds. Complementary slackness supplies the optimality certificate: an optimal matching can be supported by tight edges, and every active blossom meets the required matching boundary condition. - -Blossom contraction is not a heuristic shortcut. An odd cycle can hide an augmenting path from the current alternating forest. Contracting that cycle into a temporary pseudonode lets the primal-dual search continue; expanding it restores the matching structure. - -## 3. The path-flipping theorem - -The matching objective chooses a likely pairing. The syndrome-faithfulness proof is a separate boundary argument. - -### Theorem - -Let `M` be a perfect matching of the defect set. For every matched pair `(u, v)`, let `P_uv` be a graph path between the two defects, or a path from a defect to the virtual boundary. Define - -$$ -c = \bigoplus_{(u,v)\in M} P_{uv}. -$$ - -Then `Hc = s (mod 2)`. - -### Proof - -The interior vertices of a path have even incidence, so they cancel over `F2`. A path from `u` to `v` has boundary `e_u + e_v`. A boundary path has boundary `e_u`, because the virtual boundary contributes no detector syndrome. Therefore - -$$ -Hc = \bigoplus_{(u,v)\in M} (e_u + e_v). -$$ - -Every defect appears exactly once in the perfect matching, so the right-hand side is the XOR of all defect basis vectors. That is exactly `s`. - -The proof does not require a unique path. If two shortest paths connect the same endpoints, their XOR is a cycle in `ker(H)`. That is degeneracy, not a correctness failure. - -## 4. A hand-worked ring example - -Consider the ring checks - -```text -{0, 1}, {1, 2}, {2, 3}, {3, 4}, {4, 0} -``` - -and the syndrome - -```text -s = [1, 0, 1, 0, 0]. -``` - -The defects are checks 0 and 2. There are two arcs between them: - -- the short arc uses qubits 1 and 2, so `c_short = [0, 1, 1, 0, 0]`; -- the long arc uses qubits 0, 4, and 3. - -With unit weights, the short arc is selected. Direct multiplication verifies - -```text -H @ c_short = [1, 0, 1, 0, 0] (mod 2). -``` - -If the edge probabilities change, the selected arc can change too. Both paths remain syndrome-faithful because they share the same boundary. The weight model selects a representative; it does not change the algebraic contract. - -## 5. Exact solver versus sparse candidate generation - -The dense matching problem grows quickly with the number of defects. QECTOR's exact `BlossomDecoder` is the reference weighted MWPM path, documented as exact on the audited small matching codes. It is the right comparison point for correctness and optimality tests. - -The sparse decoder uses a different engineering strategy. Candidate neighbors can be restricted with - -$$ -k = \max\left(12,\left\lceil k_{mult}\sqrt{|D|}\right\rceil\right), -$$ - -and the sparse solve can escalate to the full graph when the candidate set is incomplete or the returned correction fails verification. The manual therefore describes Sparse Blossom as faithful and near-optimal within its tested scope, not as a universal replacement for exact MWPM. - -| Question | Exact Blossom | Sparse Blossom | -|---|---|---| -| Matching objective | Exact weighted MWPM | Event-driven sparse solve | -| Evidence boundary | Audited small matching codes | Tested faithfulness, near-optimality | -| Candidate graph | Full matching graph | Adaptive candidates with escalation | -| Shared gate | `H c = s` | `H c = s` | - -## 6. Minimal API path - -The stable API example in the manual is deliberately small: - -```python -import numpy as np -from qector_decoder_v3 import BlossomDecoder - -checks = [[0, 1], [1, 2], [2, 3], [3, 4]] -syndrome = np.array([0, 1, 0, 0], dtype=np.uint8) - -correction = BlossomDecoder(checks, n_qubits=5).decode(syndrome) -# Validate H @ correction == syndrome modulo 2. -``` - -For a detector error model, parse the model, verify that it is graphlike, collapse parallel mechanisms when appropriate, and pass its likelihood weights to the decoder. Unweighted decoding is not a substitute for a circuit-level prior when mechanisms have different probabilities. - -## 7. What MWPM does not prove - -An optimal matching objective does not prove a threshold for every code, noise model, or implementation. A faithful correction does not imply logical success for the sampled error either. The logical test stays - -$$ -c + e \in \operatorname{im}(H^T). -$$ - -The v1.0.0 changelog anchors comparisons the way the manual requires: its 120-test LER suite on the distance-3 repetition code at `p = 0.01` reports `ler_qector = 0.00392` against `ler_pymatching = 0.00317`, inside the documented 4.5x margin. Any public comparison should still name the code family, distance, rounds, noise model, DEM settings, decoder mode, shots, seed, environment, and raw artifact. The manual intentionally excludes hardware-bound latency and throughput figures. - -## Takeaway - -Blossom is valuable not because every QEC problem is a matching problem, but because it provides a precise reference for the graphlike problems that are matching problems. The optimization certificate chooses the minimum-weight pairing, the path boundary proof guarantees the syndrome, and the logical-coset test determines whether the correction is harmless. - -## Reference - -Guillaume Lessard, *QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine*, v1.0.0, August 2026. DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046). diff --git a/blog/03SparseBlossomEventDriven/index.html b/blog/03SparseBlossomEventDriven/index.html deleted file mode 100644 index 968dff07..00000000 --- a/blog/03SparseBlossomEventDriven/index.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Sparse Blossom and Event-Driven Growth · QECTOR Blog - - - - - - - - - - - - - -
Skip to main content
Back to All Articles
August 2026Decoder AlgorithmsBy Guillaume Lessard · 6 min read

Sparse Blossom and Event-Driven Growth

Region states, collision times, tight edges, radix heaps, and the tested scope of Sparse Blossom.

Author: Guillaume Lessard / qector.store
-Source: QECTOR Decoder v3 Reference Manual v1.0.0
-Date: August 2026
-DOI: 10.5281/zenodo.21941046
-Tags: Sparse Blossom, MWPM, region growth, radix heap, quantum error correction

-

Abstract

-

Exact matching is a useful reference for graphlike quantum error correction, but building every defect-to-defect distance is wasteful when the decoding graph is sparse and geometric. Sparse Blossom changes the execution model: regions grow from defects, collision events are scheduled, and only edges that become tight are exposed to the matching logic. This post explains the region states, the collision-time equation, the tight-edge invariant, the radix-heap queue, and the scope boundary in the v1.0.0 manual: the shipped decoder is documented and tested as syndrome-faithful and near-optimal, with escalation when a sparse solve is incomplete or unfaithful.

-

1. Why avoid a dense distance matrix?

-

For a syndrome s, matching operates on the complete graph of defects. Even when the physical detector graph has only local edges, the complete matching graph contains a potential edge for every pair of defects. Most of those pairs cannot participate in an optimal low-weight solution at the current dual state.

-

Sparse Blossom does not guess that long edges are impossible. It discovers candidate edges in the order in which they can become tight under a feasible dual solution. This is a correctness-oriented form of laziness: an edge is not ignored forever, it is deferred until its collision event becomes relevant.

-

2. The three region states

-

Each top-level region has a dual radius and one of three states:

-
Growing   dy/dt = +1   unmatched outer region
-Frozen    dy/dt =  0   matched region or outer blossom shell
-Shrinking dy/dt = -1   inner region of a blossom
-

The states compactly encode Edmonds' alternating-tree labels. Growing regions expand their dual variables, frozen regions hold their current value, and shrinking regions contract inside a blossom so internal tight edges stay tight.

-

For a dual edge constraint, define the slack

-fuv(t)=wuv−yu(t)−yv(t)−∑B∋u,vzB.f_{uv}(t) = w_{uv} - y_u(t) - y_v(t) - \sum_{B \ni u,v} z_B. -

The algorithm must never let a feasible slack become negative. The event queue is the mechanism that handles the exact time at which a slack reaches zero.

-

3. Collision time

-

Two regions meet when their accumulated radii account for the model distance:

-yu(t∗)+yv(t∗)+∑B∋u,vzB(t∗)=wuv.y_u(t^*) + y_v(t^*) + \sum_{B \ni u,v}z_B(t^*) = w_{uv}. -

With constant state speeds over the interval, the general update is

-t∗=t+wuv−yu−yv−∑zBdyu/dt+dyv/dt+∑dzB/dt,t^* = t + \frac{w_{uv}-y_u-y_v-\sum z_B}{dy_u/dt + dy_v/dt + \sum dz_B/dt}, -

when the denominator is positive. In the simplest Growing-Growing case this becomes

-t∗=t+wuv−yu−yv2.t^* = t + \frac{w_{uv}-y_u-y_v}{2}. -

If the denominator is non-positive, the regions are not approaching one another under the current state assignment, so there is no future collision in that interval.

-

The event queue stores future collision times. Processing events in non-decreasing order means the first moment an edge can become tight is handled before any dual constraint is violated.

-

4. Tight edges and complementary slackness

-

Let

-Etight(t)={(u,v):yu+yv+∑zB=wuv}.E_{tight}(t) = \{(u,v): y_u+y_v+\sum z_B = w_{uv}\}. -

For a feasible dual solution, complementary slackness says an optimal matching can be selected from tight edges, with the usual blossom boundary conditions. Sparse Blossom therefore needs to expose the tight subgraph at each event time, not the whole complete graph.

-

The core invariant is:

-
-

An edge that has not reached its collision time is not yet required by the current tight-edge solve; an edge that reaches its collision time enters the candidate structure.

-
-

The implementation still verifies the returned correction. A candidate set that cannot complete a faithful solve is never silently accepted.

-

5. Blossoms in an event-driven solver

-

When a tight edge is popped, the solver examines the alternating-tree roots:

-
    -
  1. Different outer roots can grow an alternating tree or expose an augmenting path.
  2. -
  3. An edge whose endpoints close an odd cycle in the same alternating structure forms a blossom.
  4. -
  5. A blossom is contracted at its lowest common ancestor.
  6. -
  7. The new region continues with the state implied by the outer/inner structure.
  8. -
  9. An edge internal to an inner region is not an augmenting event.
  10. -
-

Shrinking is not merely a graph operation. It is a dual update. The outer and inner rates are chosen so the sum controlling an internal edge stays constant, which is why edges already known to be tight remain usable while the search continues.

-

6. Why a radix heap fits the event stream

-

Collision keys are processed in non-decreasing order. When weights are represented by bounded integer keys, a radix heap can exploit that monotonicity. With a binary heap, the queue work is logarithmic in the number of vertices. With a radix heap over keys bounded by C, the documented amortized bound is of the form

-O(E+Vlog⁡C).O(E + V\log C). -

The manual also records the ordinary binary-heap bound O(E log V) for the event path. These are asymptotic implementation bounds, not wall-clock promises. A benchmark must report its machine, workload, distribution, and artifact separately.

-

7. Candidate sparsification and fallback

-

The matching candidate rule is adaptive:

-k=max⁡(12,⌈kmultndefects⌉),k = \max(12,\lceil k_{mult}\sqrt{n_{defects}}\rceil), -

with a documented default multiplier of 2.0. Candidate generation is event-driven. If the sparse solve is detected to be incomplete or unfaithful, the solver escalates to the full graph.

-

The guarantee is communicated this way:

-
    -
  • syndrome faithfulness is a required checked property;
  • -
  • sparse region growth is documented as near-optimal within its tested scope;
  • -
  • exact MWPM remains the reference path for audited small matching codes;
  • -
  • no universal optimality or hardware performance claim follows from the asymptotic mechanism alone.
  • -
-

8. A useful mental model

-

Imagine each defect inflating a weighted ball. The radius is not a physical distance; it is a dual variable. When two balls meet, the connecting route becomes tight and the matching search can use it. If the tight edges contain an odd cycle, the cycle becomes a blossom and the dual motion changes locally.

-

That model explains why the algorithm can skip the up-front all-pairs computation without changing the matching mathematics. It also explains why the implementation must track state transitions carefully: missing a collision is a dual-feasibility bug, while accepting an unverified sparse completion is a syndrome-faithfulness bug.

-

9. How to evaluate it

-

The manual points reviewers to the Sparse Blossom faithfulness test, the adaptive-k regression, and the candidate-set tests. A useful evaluation should record:

-
code family and distance
-detector graph and boundary convention
-noise model and edge weights
-defect distribution and batch shape
-decoder configuration and k multiplier
-seed, shots, environment, and commit
-raw output and SHA-256 hash
-

If optimality is the question, compare the matching objective against an exact oracle on an audited small code. If correctness is the question, verify H @ c == s for reachable syndromes. If logical performance is the question, score observables or cosets under one comparable noise model.

-

Takeaway

-

Sparse Blossom is best understood as event-driven primal-dual matching, not as a generic shortcut around correctness. Growth exposes tight edges, the queue orders the moments at which those edges matter, and blossom state transitions preserve the dual structure. The shipped scope stays explicit: faithful and near-optimal in tested configurations, with escalation when sparse evidence is insufficient.

-

Reference

-

Guillaume Lessard, QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine, v1.0.0, August 2026. DOI: 10.5281/zenodo.21941046.

- - - diff --git a/blog/03_sparse_blossom_event_driven.md b/blog/03_sparse_blossom_event_driven.md deleted file mode 100644 index 85077300..00000000 --- a/blog/03_sparse_blossom_event_driven.md +++ /dev/null @@ -1,146 +0,0 @@ -# Sparse Blossom: Turning Matching Into an Event-Driven Growth Process - -Author: Guillaume Lessard / qector.store -Source: QECTOR Decoder v3 Reference Manual v1.0.0 -Date: August 2026 -DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046) -Tags: Sparse Blossom, MWPM, region growth, radix heap, quantum error correction - -## Abstract - -Exact matching is a useful reference for graphlike quantum error correction, but building every defect-to-defect distance is wasteful when the decoding graph is sparse and geometric. Sparse Blossom changes the execution model: regions grow from defects, collision events are scheduled, and only edges that become tight are exposed to the matching logic. This post explains the region states, the collision-time equation, the tight-edge invariant, the radix-heap queue, and the scope boundary in the v1.0.0 manual: the shipped decoder is documented and tested as syndrome-faithful and near-optimal, with escalation when a sparse solve is incomplete or unfaithful. - -## 1. Why avoid a dense distance matrix? - -For a syndrome `s`, matching operates on the complete graph of defects. Even when the physical detector graph has only local edges, the complete matching graph contains a potential edge for every pair of defects. Most of those pairs cannot participate in an optimal low-weight solution at the current dual state. - -Sparse Blossom does not guess that long edges are impossible. It discovers candidate edges in the order in which they can become tight under a feasible dual solution. This is a correctness-oriented form of laziness: an edge is not ignored forever, it is deferred until its collision event becomes relevant. - -## 2. The three region states - -Each top-level region has a dual radius and one of three states: - -```text -Growing dy/dt = +1 unmatched outer region -Frozen dy/dt = 0 matched region or outer blossom shell -Shrinking dy/dt = -1 inner region of a blossom -``` - -The states compactly encode Edmonds' alternating-tree labels. Growing regions expand their dual variables, frozen regions hold their current value, and shrinking regions contract inside a blossom so internal tight edges stay tight. - -For a dual edge constraint, define the slack - -$$ -f_{uv}(t) = w_{uv} - y_u(t) - y_v(t) - \sum_{B \ni u,v} z_B. -$$ - -The algorithm must never let a feasible slack become negative. The event queue is the mechanism that handles the exact time at which a slack reaches zero. - -## 3. Collision time - -Two regions meet when their accumulated radii account for the model distance: - -$$ -y_u(t^*) + y_v(t^*) + \sum_{B \ni u,v}z_B(t^*) = w_{uv}. -$$ - -With constant state speeds over the interval, the general update is - -$$ -t^* = t + \frac{w_{uv}-y_u-y_v-\sum z_B}{dy_u/dt + dy_v/dt + \sum dz_B/dt}, -$$ - -when the denominator is positive. In the simplest Growing-Growing case this becomes - -$$ -t^* = t + \frac{w_{uv}-y_u-y_v}{2}. -$$ - -If the denominator is non-positive, the regions are not approaching one another under the current state assignment, so there is no future collision in that interval. - -The event queue stores future collision times. Processing events in non-decreasing order means the first moment an edge can become tight is handled before any dual constraint is violated. - -## 4. Tight edges and complementary slackness - -Let - -$$ -E_{tight}(t) = \{(u,v): y_u+y_v+\sum z_B = w_{uv}\}. -$$ - -For a feasible dual solution, complementary slackness says an optimal matching can be selected from tight edges, with the usual blossom boundary conditions. Sparse Blossom therefore needs to expose the tight subgraph at each event time, not the whole complete graph. - -The core invariant is: - -> An edge that has not reached its collision time is not yet required by the current tight-edge solve; an edge that reaches its collision time enters the candidate structure. - -The implementation still verifies the returned correction. A candidate set that cannot complete a faithful solve is never silently accepted. - -## 5. Blossoms in an event-driven solver - -When a tight edge is popped, the solver examines the alternating-tree roots: - -1. Different outer roots can grow an alternating tree or expose an augmenting path. -2. An edge whose endpoints close an odd cycle in the same alternating structure forms a blossom. -3. A blossom is contracted at its lowest common ancestor. -4. The new region continues with the state implied by the outer/inner structure. -5. An edge internal to an inner region is not an augmenting event. - -Shrinking is not merely a graph operation. It is a dual update. The outer and inner rates are chosen so the sum controlling an internal edge stays constant, which is why edges already known to be tight remain usable while the search continues. - -## 6. Why a radix heap fits the event stream - -Collision keys are processed in non-decreasing order. When weights are represented by bounded integer keys, a radix heap can exploit that monotonicity. With a binary heap, the queue work is logarithmic in the number of vertices. With a radix heap over keys bounded by `C`, the documented amortized bound is of the form - -$$ -O(E + V\log C). -$$ - -The manual also records the ordinary binary-heap bound `O(E log V)` for the event path. These are asymptotic implementation bounds, not wall-clock promises. A benchmark must report its machine, workload, distribution, and artifact separately. - -## 7. Candidate sparsification and fallback - -The matching candidate rule is adaptive: - -$$ -k = \max(12,\lceil k_{mult}\sqrt{n_{defects}}\rceil), -$$ - -with a documented default multiplier of `2.0`. Candidate generation is event-driven. If the sparse solve is detected to be incomplete or unfaithful, the solver escalates to the full graph. - -The guarantee is communicated this way: - -- syndrome faithfulness is a required checked property; -- sparse region growth is documented as near-optimal within its tested scope; -- exact MWPM remains the reference path for audited small matching codes; -- no universal optimality or hardware performance claim follows from the asymptotic mechanism alone. - -## 8. A useful mental model - -Imagine each defect inflating a weighted ball. The radius is not a physical distance; it is a dual variable. When two balls meet, the connecting route becomes tight and the matching search can use it. If the tight edges contain an odd cycle, the cycle becomes a blossom and the dual motion changes locally. - -That model explains why the algorithm can skip the up-front all-pairs computation without changing the matching mathematics. It also explains why the implementation must track state transitions carefully: missing a collision is a dual-feasibility bug, while accepting an unverified sparse completion is a syndrome-faithfulness bug. - -## 9. How to evaluate it - -The manual points reviewers to the Sparse Blossom faithfulness test, the adaptive-`k` regression, and the candidate-set tests. A useful evaluation should record: - -```text -code family and distance -detector graph and boundary convention -noise model and edge weights -defect distribution and batch shape -decoder configuration and k multiplier -seed, shots, environment, and commit -raw output and SHA-256 hash -``` - -If optimality is the question, compare the matching objective against an exact oracle on an audited small code. If correctness is the question, verify `H @ c == s` for reachable syndromes. If logical performance is the question, score observables or cosets under one comparable noise model. - -## Takeaway - -Sparse Blossom is best understood as event-driven primal-dual matching, not as a generic shortcut around correctness. Growth exposes tight edges, the queue orders the moments at which those edges matter, and blossom state transitions preserve the dual structure. The shipped scope stays explicit: faithful and near-optimal in tested configurations, with escalation when sparse evidence is insufficient. - -## Reference - -Guillaume Lessard, *QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine*, v1.0.0, August 2026. DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046). diff --git a/blog/04FastUnionFind/index.html b/blog/04FastUnionFind/index.html deleted file mode 100644 index 5c612d23..00000000 --- a/blog/04FastUnionFind/index.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UF-01: Parity, Peeling, and Graphlike Decoding · QECTOR Blog - - - - - - - - - - - - - -
Skip to main content
Back to All Articles
August 2026Decoder AlgorithmsBy Guillaume Lessard · 5 min read

UF-01: Parity, Peeling, and Graphlike Decoding

Cluster parity, spanning-forest peeling, weighted growth, zero-allocation structure, and domain boundaries.

Author: Guillaume Lessard / qector.store
-Source: QECTOR Decoder v3 Reference Manual v1.0.0
-Date: August 2026
-DOI: 10.5281/zenodo.21941046
-Tags: Union-Find, graphlike decoding, cluster growth, GF(2), Rust systems

-

Abstract

-

Union-Find decoding trades global matching optimality for a simple local process: grow clusters around fired detectors, merge them, and peel a spanning forest. QECTOR's UF-01 path makes that process predictable in memory as well as in algebra. This post derives the cluster-parity invariant, explains the satisfiability condition and the boundary sink, proves why leaf-to-root peeling returns a syndrome-faithful correction, and states the documented domain boundary: Union-Find is for graphlike codes, not arbitrary hypergraph checks.

-

1. Eligibility comes first

-

In a graphlike problem, each qubit appears in at most two checks. A qubit can therefore be represented as an edge between detector nodes. The decoder receives a syndrome s on detector nodes and must emit a set of edges c such that

-Hc=s(mod2).Hc = s \pmod 2. -

If a qubit participates in more than two checks, it is a hyperedge. QECTOR explicitly rejects that structure for the Union-Find family and routes it to BP-OSD. This is a contract, not a performance limitation to work around by silently changing the graph.

-

2. Cluster parity

-

For a cluster C of detector vertices, define

-π(C)=⨁v∈Csv.\pi(C) = \bigoplus_{v\in C} s_v. -

The parity has a simple merge law. For disjoint clusters C1 and C2,

-π(C1∪C2)=π(C1)⊕π(C2).\pi(C1 \cup C2) = \pi(C1) \oplus \pi(C2). -

An even cluster can be satisfied internally. An odd cluster needs either another odd cluster or a boundary. The virtual boundary is a parity sink: a one-ended path may terminate there without leaving an unsatisfied detector.

-

3. Growth and fusion

-

The unweighted procedure reads as five stages:

-
    -
  1. Create a cluster for each fired detector.
  2. -
  3. Grow the frontier of every unsatisfied odd cluster.
  4. -
  5. Add newly reached vertices and mark the corresponding graph edges.
  6. -
  7. Fuse clusters when their growth touches.
  8. -
  9. Stop when every cluster is even or boundary-attached.
  10. -
-

The stopping condition is exactly

-π(C)=0orboundary(C)=1.\pi(C) = 0 \quad\text{or}\quad \text{boundary}(C)=1. -

The implementation maintains parity, boundary state, root, and size in the Union-Find structure. Union-by-rank and path compression make the disjoint-set operations amortized near-linear in the graph size.

-

4. Peeling a spanning forest

-

Growth records a subgraph, not necessarily a tree. UF-01 builds a spanning forest and processes each tree from leaves to root. For an oriented tree edge from parent p to child v, flip the edge when the residual parity of the child subtree is one:

-c(p,v)=π(subtree(v)).c_{(p,v)} = \pi(\text{subtree}(v)). -

The child residual is then XORed into the parent residual.

-

Peeling proof

-

At a leaf, the only way to remove a syndrome bit is to flip its parent edge when that bit is one. Assume every processed child subtree has satisfied all internal vertices and passed only one residual bit to its parent. XOR is additive over F2, so combining child residuals with the parent's syndrome gives the correct residual for the larger subtree. At the root, the growth halt condition guarantees the residual is zero or is absorbed by the virtual boundary. Every detector therefore receives exactly its requested syndrome parity, and

-Hc=s(mod2).Hc = s \pmod 2. -

This proof is why UF peeling can be simple without being unverified.

-

5. Weighted growth

-

When mechanisms have different probabilities, edge lengths should reflect their priors:

-we=log⁡(1−pepe).w_e = \log\left(\frac{1-p_e}{p_e}\right). -

The weighted UF path advances clusters by adaptive time steps, stopping when a frontier edge saturates. Invalid weights are rejected during construction. With uniform weights, the weighted and unweighted paths are documented to agree in correction cost within the tested scope.

-

The weighted path is still a graphlike cluster-growth decoder. It is not a replacement for BP-OSD on hyperedges, and it is not an exact MWPM solver.

-

6. Repetition-code example and API path

-

Use the repetition checks

-
{0, 1}, {1, 2}, {2, 3}, {3, 4}
-

There are five qubits and four checks. Consider these reachable syndromes:

-
s1 = [1, 0, 0, 0]
-s2 = [1, 1, 0, 0]
-

For s1, the cluster at check 0 is odd and attaches to the left boundary through qubit 0. Peeling returns

-
c1 = [1, 0, 0, 0, 0].
-

For s2, the two adjacent defects form an even cluster. The connecting edge is qubit 1, so

-
c2 = [0, 1, 0, 0, 0].
-

Directly, H @ c1 = s1 and H @ c2 = s2 modulo two. The decoder did not need to enumerate all error patterns; cluster parity determined the required forest action.

-

The stable Python call mirrors the Blossom path:

-
import numpy as np
-from qector_decoder_v3 import UnionFindDecoder
-
-checks = [[0, 1], [1, 2], [2, 3], [3, 4]]
-syndrome = np.array([1, 1, 0, 0], dtype=np.uint8)
-
-correction = UnionFindDecoder(checks, n_qubits=5).decode(syndrome)
-# H @ correction == syndrome (mod 2) on graphlike inputs.
-

7. What zero allocation means here

-

UF-01 preallocates graph-sized buffers and resets them in place. The manual describes no heap allocation in the steady-state hot path and points to memory-growth and scratch-reuse tests. That is a structural property of the implementation, not a promise of a particular latency.

-

The same distinction applies to complexity. The documented amortized bound is

-O((V+E)α(V+E))O((V+E)\alpha(V+E)) -

with O(V+E) space, where alpha is the inverse Ackermann function. An asymptotic bound does not identify the wall-clock behavior of a particular CPU, compiler, graph, batch shape, or memory hierarchy.

-

8. Logical correctness is separate

-

UF-01 guarantees the syndrome contract on supported graphlike inputs. If e is the sampled physical error, faithfulness gives

-H(c+e)=0,H(c+e)=0, -

so c + e lies in ker(H). Whether the residual is harmless depends on the stabilizer row space:

-logical success  ⟺  c+e∈im⁡(HT).\text{logical success} \iff c+e \in \operatorname{im}(H^T). -

Union-Find is not minimum-weight perfect matching, so its logical-error behavior must be evaluated on a declared workload rather than inferred from the peeling proof.

-

9. Validation checklist

-

For a UF experiment, record:

-
    -
  • the check-to-qubit structure and proof that every qubit degree is at most two;
  • -
  • the boundary convention and whether growth is weighted;
  • -
  • the code family, distance, rounds, noise model, and reachable-syndrome generator;
  • -
  • single-shot versus pre-built hot-path versus batch timing;
  • -
  • the exact package/build environment and commit;
  • -
  • faithfulness results and logical-observable results separately;
  • -
  • raw artifacts and their SHA-256 hashes.
  • -
-

The manual anchors UF claims to faithfulness, property, batch-equivalence, memory, and native RSS tests. It does not carry a current universal test count or a universal speed claim.

-

Takeaway

-

UF-01 is a compact example of proof-guided systems design. Cluster parity tells the algorithm when it may stop, forest peeling turns that state into a correction, and preallocated buffers make the memory behavior explicit. The result is a faithful graphlike decoder with a near-linear amortized bound, not a universal decoder for every quantum code.

-

Reference

-

Guillaume Lessard, QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine, v1.0.0, August 2026. DOI: 10.5281/zenodo.21941046.

- - - diff --git a/blog/04_fast_union_find_uf01.md b/blog/04_fast_union_find_uf01.md deleted file mode 100644 index c4a97808..00000000 --- a/blog/04_fast_union_find_uf01.md +++ /dev/null @@ -1,179 +0,0 @@ -# UF-01: Parity, Peeling, and Allocation-Free Graphlike Decoding - -Author: Guillaume Lessard / qector.store -Source: QECTOR Decoder v3 Reference Manual v1.0.0 -Date: August 2026 -DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046) -Tags: Union-Find, graphlike decoding, cluster growth, GF(2), Rust systems - -## Abstract - -Union-Find decoding trades global matching optimality for a simple local process: grow clusters around fired detectors, merge them, and peel a spanning forest. QECTOR's UF-01 path makes that process predictable in memory as well as in algebra. This post derives the cluster-parity invariant, explains the satisfiability condition and the boundary sink, proves why leaf-to-root peeling returns a syndrome-faithful correction, and states the documented domain boundary: Union-Find is for graphlike codes, not arbitrary hypergraph checks. - -## 1. Eligibility comes first - -In a graphlike problem, each qubit appears in at most two checks. A qubit can therefore be represented as an edge between detector nodes. The decoder receives a syndrome `s` on detector nodes and must emit a set of edges `c` such that - -$$ -Hc = s \pmod 2. -$$ - -If a qubit participates in more than two checks, it is a hyperedge. QECTOR explicitly rejects that structure for the Union-Find family and routes it to BP-OSD. This is a contract, not a performance limitation to work around by silently changing the graph. - -## 2. Cluster parity - -For a cluster `C` of detector vertices, define - -$$ -\pi(C) = \bigoplus_{v\in C} s_v. -$$ - -The parity has a simple merge law. For disjoint clusters `C1` and `C2`, - -$$ -\pi(C1 \cup C2) = \pi(C1) \oplus \pi(C2). -$$ - -An even cluster can be satisfied internally. An odd cluster needs either another odd cluster or a boundary. The virtual boundary is a parity sink: a one-ended path may terminate there without leaving an unsatisfied detector. - -## 3. Growth and fusion - -The unweighted procedure reads as five stages: - -1. Create a cluster for each fired detector. -2. Grow the frontier of every unsatisfied odd cluster. -3. Add newly reached vertices and mark the corresponding graph edges. -4. Fuse clusters when their growth touches. -5. Stop when every cluster is even or boundary-attached. - -The stopping condition is exactly - -$$ -\pi(C) = 0 \quad\text{or}\quad \text{boundary}(C)=1. -$$ - -The implementation maintains parity, boundary state, root, and size in the Union-Find structure. Union-by-rank and path compression make the disjoint-set operations amortized near-linear in the graph size. - -## 4. Peeling a spanning forest - -Growth records a subgraph, not necessarily a tree. UF-01 builds a spanning forest and processes each tree from leaves to root. For an oriented tree edge from parent `p` to child `v`, flip the edge when the residual parity of the child subtree is one: - -$$ -c_{(p,v)} = \pi(\text{subtree}(v)). -$$ - -The child residual is then XORed into the parent residual. - -### Peeling proof - -At a leaf, the only way to remove a syndrome bit is to flip its parent edge when that bit is one. Assume every processed child subtree has satisfied all internal vertices and passed only one residual bit to its parent. XOR is additive over `F2`, so combining child residuals with the parent's syndrome gives the correct residual for the larger subtree. At the root, the growth halt condition guarantees the residual is zero or is absorbed by the virtual boundary. Every detector therefore receives exactly its requested syndrome parity, and - -$$ -Hc = s \pmod 2. -$$ - -This proof is why UF peeling can be simple without being unverified. - -## 5. Weighted growth - -When mechanisms have different probabilities, edge lengths should reflect their priors: - -$$ -w_e = \log\left(\frac{1-p_e}{p_e}\right). -$$ - -The weighted UF path advances clusters by adaptive time steps, stopping when a frontier edge saturates. Invalid weights are rejected during construction. With uniform weights, the weighted and unweighted paths are documented to agree in correction cost within the tested scope. - -The weighted path is still a graphlike cluster-growth decoder. It is not a replacement for BP-OSD on hyperedges, and it is not an exact MWPM solver. - -## 6. Repetition-code example and API path - -Use the repetition checks - -```text -{0, 1}, {1, 2}, {2, 3}, {3, 4} -``` - -There are five qubits and four checks. Consider these reachable syndromes: - -```text -s1 = [1, 0, 0, 0] -s2 = [1, 1, 0, 0] -``` - -For `s1`, the cluster at check 0 is odd and attaches to the left boundary through qubit 0. Peeling returns - -```text -c1 = [1, 0, 0, 0, 0]. -``` - -For `s2`, the two adjacent defects form an even cluster. The connecting edge is qubit 1, so - -```text -c2 = [0, 1, 0, 0, 0]. -``` - -Directly, `H @ c1 = s1` and `H @ c2 = s2` modulo two. The decoder did not need to enumerate all error patterns; cluster parity determined the required forest action. - -The stable Python call mirrors the Blossom path: - -```python -import numpy as np -from qector_decoder_v3 import UnionFindDecoder - -checks = [[0, 1], [1, 2], [2, 3], [3, 4]] -syndrome = np.array([1, 1, 0, 0], dtype=np.uint8) - -correction = UnionFindDecoder(checks, n_qubits=5).decode(syndrome) -# H @ correction == syndrome (mod 2) on graphlike inputs. -``` - -## 7. What zero allocation means here - -UF-01 preallocates graph-sized buffers and resets them in place. The manual describes no heap allocation in the steady-state hot path and points to memory-growth and scratch-reuse tests. That is a structural property of the implementation, not a promise of a particular latency. - -The same distinction applies to complexity. The documented amortized bound is - -$$ -O((V+E)\alpha(V+E)) -$$ - -with `O(V+E)` space, where `alpha` is the inverse Ackermann function. An asymptotic bound does not identify the wall-clock behavior of a particular CPU, compiler, graph, batch shape, or memory hierarchy. - -## 8. Logical correctness is separate - -UF-01 guarantees the syndrome contract on supported graphlike inputs. If `e` is the sampled physical error, faithfulness gives - -$$ -H(c+e)=0, -$$ - -so `c + e` lies in `ker(H)`. Whether the residual is harmless depends on the stabilizer row space: - -$$ -\text{logical success} \iff c+e \in \operatorname{im}(H^T). -$$ - -Union-Find is not minimum-weight perfect matching, so its logical-error behavior must be evaluated on a declared workload rather than inferred from the peeling proof. - -## 9. Validation checklist - -For a UF experiment, record: - -- the check-to-qubit structure and proof that every qubit degree is at most two; -- the boundary convention and whether growth is weighted; -- the code family, distance, rounds, noise model, and reachable-syndrome generator; -- single-shot versus pre-built hot-path versus batch timing; -- the exact package/build environment and commit; -- faithfulness results and logical-observable results separately; -- raw artifacts and their SHA-256 hashes. - -The manual anchors UF claims to faithfulness, property, batch-equivalence, memory, and native RSS tests. It does not carry a current universal test count or a universal speed claim. - -## Takeaway - -UF-01 is a compact example of proof-guided systems design. Cluster parity tells the algorithm when it may stop, forest peeling turns that state into a correction, and preallocated buffers make the memory behavior explicit. The result is a faithful graphlike decoder with a near-linear amortized bound, not a universal decoder for every quantum code. - -## Reference - -Guillaume Lessard, *QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine*, v1.0.0, August 2026. DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046). diff --git a/blog/05BpOsdQldpc/index.html b/blog/05BpOsdQldpc/index.html deleted file mode 100644 index ff0dfc3a..00000000 --- a/blog/05BpOsdQldpc/index.html +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - BP-OSD for qLDPC Hypergraphs · QECTOR Blog - - - - - - - - - - - - - -
Skip to main content
Back to All Articles
August 2026qLDPC and AIBy Guillaume Lessard · 6 min read

BP-OSD for qLDPC Hypergraphs

Log-domain belief propagation, ordered statistics, residual GF(2) solving, and faithful non-graphlike decoding.

Author: Guillaume Lessard / qector.store
-Source: QECTOR Decoder v3 Reference Manual v1.0.0
-Date: August 2026
-DOI: 10.5281/zenodo.21941046
-Tags: qLDPC, BP-OSD, belief propagation, ordered statistics, GF(2), hypergraphs

-

Abstract

-

Minimum-weight matching is natural when each fault mechanism touches at most two detectors. Quantum LDPC and other non-graphlike codes do not provide that guarantee. BP-OSD is QECTOR's general GF(2) path: belief propagation supplies a reliability ordering, then ordered-statistics decoding solves a residual linear system. The design separation matters: beliefs choose a candidate representative, while the algebraic solve restores syndrome faithfulness. This post derives the log-domain update, the OSD-0/OSD-W stages, and the residual-solve theorem, then explains the numerical, batching, and claim boundaries documented in v1.0.0.

-

1. Why hyperedges change the decoder choice

-

Let a column of H describe one fault mechanism. If that column has weight two, it can be drawn as a graph edge between two detectors. If it has weight three or more, it is a hyperedge. Pairing its detectors independently loses the fact that one mechanism caused all of them.

-

QECTOR uses the structural rule

-
max qubit/check degree <= 2  -> graphlike decoders may be eligible
-any degree > 2               -> matching is ineligible; use BP-OSD
-

The BP-OSD contract is expressed for an arbitrary reachable GF(2) matrix. This is why it is the correct fallback for qLDPC, color-code, and general hypergraph inputs.

-

2. Belief propagation in the log domain

-

For each qubit q, the prior log-likelihood ratio is combined with messages from neighboring checks. With m_(q->c) and m_(c->q) denoting variable-to-check and check-to-variable messages, the exact sum-product check update uses

-mc→q=sgn⁡(∏q′∈N(c)∖qmq′→c)ϕ(∑q′∈N(c)∖qϕ(∣mq′→c∣)),m_{c\to q} = \operatorname{sgn}\left(\prod_{q'\in N(c)\setminus q}m_{q'\to c}\right) -\phi\left(\sum_{q'\in N(c)\setminus q}\phi(|m_{q'\to c}|)\right), -

where

-ϕ(x)=−log⁡(tanh⁡x2)=log⁡coth⁡x2.\phi(x) = -\log\left(\tanh\frac{x}{2}\right) = \log\coth\frac{x}{2}. -

The posterior reliability is

-γq=LLR⁡prior(q)+∑c∈N(q)mc→q.\gamma_q = \operatorname{LLR}_{prior}(q) + \sum_{c\in N(q)}m_{c\to q}. -

The decoder hard-decodes from the signs of gamma. If that hard decision already satisfies H e = s, it can return immediately. Otherwise it passes the residual to OSD.

-

QECTOR also documents min-sum as an opt-in approximation and a relay (layered) schedule in which checks are processed sequentially. These are schedule choices; they do not remove the need for the faithful post-process.

-

3. Ordered statistics decoding

-

OSD uses BP for ranking rather than treating BP's hard decision as infallible.

-
    -
  1. -

    Sort qubit columns by ascending |gamma_q|, so the least reliable columns are known.

    -
  2. -
  3. -

    Extract a rank-r independent column basis of H using GF(2) elimination.

    -
  4. -
  5. -

    Keep BP's hard decisions on the fixed/free portion according to the implementation's basis convention.

    -
  6. -
  7. -

    Solve the basis for the residual syndrome.

    -
  8. -
  9. -

    For OSD-W, sweep combinations among a width

    -W=max⁡(2 osd_order,6)W = \max(2\,\text{osd\_order}, 6) -

    of the least-reliable columns and retain the lowest-weight faithful candidate.

    -
  10. -
-

OSD-0 performs one residual solve. Higher order adds a search over selected reliability perturbations. The search changes which representative is preferred; it does not change the syndrome equation every candidate must satisfy.

-

4. The residual-solve theorem

-

Let B be a rank-r column basis of H. Suppose the fixed columns contribute H_fixed e_fixed. Define

-seff=s+Hfixedefixed(mod2).s_{eff} = s + H_{fixed}e_{fixed} \pmod 2. -

The OSD stage solves

-HBeB=seff(mod2).H_B e_B = s_{eff} \pmod 2. -

Theorem

-

If s is reachable, every OSD candidate constructed from a consistent residual solve satisfies Hc = s (mod 2).

-

Proof

-

Reachability means s lies in the column space of H. The fixed contribution also lies in that column space, so their sum s_eff remains in it. Because B is a full-rank column basis, the residual system has a solution for every reachable residual. Reconstructing the full correction gives

-Hc=Hfixedefixed+HBeB=Hfixedefixed+seff=s(mod2).Hc = H_{fixed}e_{fixed} + H_B e_B - = H_{fixed}e_{fixed} + s_{eff} - = s \pmod 2. -

BP convergence therefore affects which candidate the decoder prefers, but not whether the OSD candidate reproduces the reachable syndrome.

-

5. What OSD does and does not optimize

-

The reliability ordering is a proxy for the probability of each error bit. OSD-W can search multiple low-reliability combinations and select a lower-weight candidate. In a degenerate quantum code, the goal is not raw-vector equality with the sampled error. The residual must land in the correct logical coset:

-c+e∈im⁡(HT)c + e \in \operatorname{im}(H^T) -

for logical success. Faithfulness only establishes c + e in ker(H).

-

The division of labour is:

- - - - - - - - - - - - - - - - - - - - - - - - - -
StageQuestion answered
BPWhich qubits look reliable or ambiguous?
GF(2) basis solveCan the residual syndrome be satisfied exactly?
OSD-W searchWhich faithful representative has the best available weight?
Logical scoringDid the residual stay in the stabilizer coset?
-

6. Numerical stability and implementation scope

-

The manual records two check-node rules, exact sum-product and min-sum, plus a relay schedule. The Rust implementation evaluates the box-plus function exactly in a small range and uses a tabulated interpolation path over a larger range. The relevant evidence is numerical-stability testing, not a universal floating-point guarantee across arbitrary hardware.

-

On the Python surface, BPOSDDecoder exposes bp_method ("relay" selects the layered schedule) and an adjustable osd_lambda. The batch path can run BP over a batch on a usable GPU and send only non-converged shots through the exact GF(2) post-process. Two bounds apply: the published 1.0.0 wheels are CPU-only, so GPU paths are build-time feature gates whose runtime availability is reported by cuda_is_available(); and without a usable device the batch path falls back to NumPy with the same validity contract. The single-shot path is CPU-oriented because a GPU launch is not assumed to amortize for one syndrome.

-

7. Complexity language that stays honest

-

The manual describes the dominant terms as BP message work plus GF(2) elimination and any OSD-W search. A compact workload-level expression is

-O(IBPE+r3+OSD search work),O(I_{BP}E + r^3 + \text{OSD search work}), -

where I_BP is the iteration count, E the Tanner-graph edge count, and r the matrix rank. These terms explain tuning pressure; they are not a wall-clock result.

-

An evaluation must state the matrix, rank, message schedule, damping or min-sum choice, OSD order, dtype, batch size, device, seed, and artifact. A qLDPC result without those details is difficult to reproduce and should not be presented as a general threshold.

-

8. A small residual example

-

Take

-H=[110011],s=[1,0].H = \begin{bmatrix}1&1&0\\0&1&1\end{bmatrix},\qquad s = [1,0]. -

If the hard decision is [1,0,0], it already satisfies the syndrome. If BP instead proposes [0,1,0], then

-
H @ [0, 1, 0] = [1, 1]
-residual = [1, 0] + [1, 1] = [0, 1]  (mod 2)
-

Fix column 1 at its proposed value and use columns 0 and 2 as a basis. Column 2 contributes [0,1], so the repaired candidate is [0,1,1]. Multiplication gives

-
H @ [0, 1, 1] = [1, 0]  (mod 2).
-

The hard decision was not faithful; the OSD residual solve was.

-

Takeaway

-

BP-OSD is not "matching with more messages." It is a different contract for a different matrix structure. BP supplies soft information, OSD supplies an exact GF(2) repair, and logical evaluation remains a coset question. That separation is what lets QECTOR handle non-graphlike checks without pretending that hyperedges are ordinary graph edges.

-

Reference

-

Guillaume Lessard, QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine, v1.0.0, August 2026. DOI: 10.5281/zenodo.21941046.

- - - diff --git a/blog/05_bp_osd_qldpc.md b/blog/05_bp_osd_qldpc.md deleted file mode 100644 index cf78125e..00000000 --- a/blog/05_bp_osd_qldpc.md +++ /dev/null @@ -1,165 +0,0 @@ -# BP-OSD for qLDPC: When Matching Stops Being the Right Abstraction - -Author: Guillaume Lessard / qector.store -Source: QECTOR Decoder v3 Reference Manual v1.0.0 -Date: August 2026 -DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046) -Tags: qLDPC, BP-OSD, belief propagation, ordered statistics, GF(2), hypergraphs - -## Abstract - -Minimum-weight matching is natural when each fault mechanism touches at most two detectors. Quantum LDPC and other non-graphlike codes do not provide that guarantee. BP-OSD is QECTOR's general GF(2) path: belief propagation supplies a reliability ordering, then ordered-statistics decoding solves a residual linear system. The design separation matters: beliefs choose a candidate representative, while the algebraic solve restores syndrome faithfulness. This post derives the log-domain update, the OSD-0/OSD-W stages, and the residual-solve theorem, then explains the numerical, batching, and claim boundaries documented in v1.0.0. - -## 1. Why hyperedges change the decoder choice - -Let a column of `H` describe one fault mechanism. If that column has weight two, it can be drawn as a graph edge between two detectors. If it has weight three or more, it is a hyperedge. Pairing its detectors independently loses the fact that one mechanism caused all of them. - -QECTOR uses the structural rule - -```text -max qubit/check degree <= 2 -> graphlike decoders may be eligible -any degree > 2 -> matching is ineligible; use BP-OSD -``` - -The BP-OSD contract is expressed for an arbitrary reachable GF(2) matrix. This is why it is the correct fallback for qLDPC, color-code, and general hypergraph inputs. - -## 2. Belief propagation in the log domain - -For each qubit `q`, the prior log-likelihood ratio is combined with messages from neighboring checks. With `m_(q->c)` and `m_(c->q)` denoting variable-to-check and check-to-variable messages, the exact sum-product check update uses - -$$ -m_{c\to q} = \operatorname{sgn}\left(\prod_{q'\in N(c)\setminus q}m_{q'\to c}\right) -\phi\left(\sum_{q'\in N(c)\setminus q}\phi(|m_{q'\to c}|)\right), -$$ - -where - -$$ -\phi(x) = -\log\left(\tanh\frac{x}{2}\right) = \log\coth\frac{x}{2}. -$$ - -The posterior reliability is - -$$ -\gamma_q = \operatorname{LLR}_{prior}(q) + \sum_{c\in N(q)}m_{c\to q}. -$$ - -The decoder hard-decodes from the signs of `gamma`. If that hard decision already satisfies `H e = s`, it can return immediately. Otherwise it passes the residual to OSD. - -QECTOR also documents min-sum as an opt-in approximation and a relay (layered) schedule in which checks are processed sequentially. These are schedule choices; they do not remove the need for the faithful post-process. - -## 3. Ordered statistics decoding - -OSD uses BP for ranking rather than treating BP's hard decision as infallible. - -1. Sort qubit columns by ascending `|gamma_q|`, so the least reliable columns are known. -2. Extract a rank-`r` independent column basis of `H` using GF(2) elimination. -3. Keep BP's hard decisions on the fixed/free portion according to the implementation's basis convention. -4. Solve the basis for the residual syndrome. -5. For OSD-W, sweep combinations among a width - - $$ - W = \max(2\,\text{osd\_order}, 6) - $$ - - of the least-reliable columns and retain the lowest-weight faithful candidate. - -OSD-0 performs one residual solve. Higher order adds a search over selected reliability perturbations. The search changes which representative is preferred; it does not change the syndrome equation every candidate must satisfy. - -## 4. The residual-solve theorem - -Let `B` be a rank-`r` column basis of `H`. Suppose the fixed columns contribute `H_fixed e_fixed`. Define - -$$ -s_{eff} = s + H_{fixed}e_{fixed} \pmod 2. -$$ - -The OSD stage solves - -$$ -H_B e_B = s_{eff} \pmod 2. -$$ - -### Theorem - -If `s` is reachable, every OSD candidate constructed from a consistent residual solve satisfies `Hc = s (mod 2)`. - -### Proof - -Reachability means `s` lies in the column space of `H`. The fixed contribution also lies in that column space, so their sum `s_eff` remains in it. Because `B` is a full-rank column basis, the residual system has a solution for every reachable residual. Reconstructing the full correction gives - -$$ -Hc = H_{fixed}e_{fixed} + H_B e_B - = H_{fixed}e_{fixed} + s_{eff} - = s \pmod 2. -$$ - -BP convergence therefore affects which candidate the decoder prefers, but not whether the OSD candidate reproduces the reachable syndrome. - -## 5. What OSD does and does not optimize - -The reliability ordering is a proxy for the probability of each error bit. OSD-W can search multiple low-reliability combinations and select a lower-weight candidate. In a degenerate quantum code, the goal is not raw-vector equality with the sampled error. The residual must land in the correct logical coset: - -$$ -c + e \in \operatorname{im}(H^T) -$$ - -for logical success. Faithfulness only establishes `c + e in ker(H)`. - -The division of labour is: - -| Stage | Question answered | -|---|---| -| BP | Which qubits look reliable or ambiguous? | -| GF(2) basis solve | Can the residual syndrome be satisfied exactly? | -| OSD-W search | Which faithful representative has the best available weight? | -| Logical scoring | Did the residual stay in the stabilizer coset? | - -## 6. Numerical stability and implementation scope - -The manual records two check-node rules, exact sum-product and min-sum, plus a relay schedule. The Rust implementation evaluates the box-plus function exactly in a small range and uses a tabulated interpolation path over a larger range. The relevant evidence is numerical-stability testing, not a universal floating-point guarantee across arbitrary hardware. - -On the Python surface, `BPOSDDecoder` exposes `bp_method` ("relay" selects the layered schedule) and an adjustable `osd_lambda`. The batch path can run BP over a batch on a usable GPU and send only non-converged shots through the exact GF(2) post-process. Two bounds apply: the published 1.0.0 wheels are CPU-only, so GPU paths are build-time feature gates whose runtime availability is reported by `cuda_is_available()`; and without a usable device the batch path falls back to NumPy with the same validity contract. The single-shot path is CPU-oriented because a GPU launch is not assumed to amortize for one syndrome. - -## 7. Complexity language that stays honest - -The manual describes the dominant terms as BP message work plus GF(2) elimination and any OSD-W search. A compact workload-level expression is - -$$ -O(I_{BP}E + r^3 + \text{OSD search work}), -$$ - -where `I_BP` is the iteration count, `E` the Tanner-graph edge count, and `r` the matrix rank. These terms explain tuning pressure; they are not a wall-clock result. - -An evaluation must state the matrix, rank, message schedule, damping or min-sum choice, OSD order, dtype, batch size, device, seed, and artifact. A qLDPC result without those details is difficult to reproduce and should not be presented as a general threshold. - -## 8. A small residual example - -Take - -$$ -H = \begin{bmatrix}1&1&0\\0&1&1\end{bmatrix},\qquad s = [1,0]. -$$ - -If the hard decision is `[1,0,0]`, it already satisfies the syndrome. If BP instead proposes `[0,1,0]`, then - -```text -H @ [0, 1, 0] = [1, 1] -residual = [1, 0] + [1, 1] = [0, 1] (mod 2) -``` - -Fix column 1 at its proposed value and use columns 0 and 2 as a basis. Column 2 contributes `[0,1]`, so the repaired candidate is `[0,1,1]`. Multiplication gives - -```text -H @ [0, 1, 1] = [1, 0] (mod 2). -``` - -The hard decision was not faithful; the OSD residual solve was. - -## Takeaway - -BP-OSD is not "matching with more messages." It is a different contract for a different matrix structure. BP supplies soft information, OSD supplies an exact GF(2) repair, and logical evaluation remains a coset question. That separation is what lets QECTOR handle non-graphlike checks without pretending that hyperedges are ordinary graph edges. - -## Reference - -Guillaume Lessard, *QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine*, v1.0.0, August 2026. DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046). diff --git a/blog/06AmbiguityGnnNeural/index.html b/blog/06AmbiguityGnnNeural/index.html deleted file mode 100644 index 435b21dd..00000000 --- a/blog/06AmbiguityGnnNeural/index.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Ambiguity Clustering and Learned Predecoders · QECTOR Blog - - - - - - - - - - - - - -
Skip to main content
Back to All Articles
August 2026qLDPC and AIBy Guillaume Lessard · 5 min read

Ambiguity Clustering and Learned Predecoders

Freeze confident qubits, solve ambiguous components, and add learned priors without moving the correctness proof.

Author: Guillaume Lessard / qector.store
-Source: QECTOR Decoder v3 Reference Manual v1.0.0
-Date: August 2026
-DOI: 10.5281/zenodo.21941046
-Tags: qLDPC, ambiguity clustering, GNN, neural predecoder, decoder verification

-

Abstract

-

Belief propagation can leave only a small part of a qLDPC problem uncertain, even when its global hard decision is not faithful. Ambiguity clustering exploits that: freeze confident qubits, compute the residual syndrome, and solve disconnected ambiguous components exactly when they are small. QECTOR also exposes learned predecoder surfaces that supply priors or dynamic weights. The architectural boundary matters: learned components may influence the selected correction, but the final syndrome-faithfulness gate stays algebraic and independent of training quality.

-

1. Confidence is not correctness

-

After BP, each qubit receives a posterior log-likelihood ratio gamma_q. A large magnitude means the model is confident about the bit. It does not prove the bit correct. A hard decision can still fail the syndrome equation

-He^≠s(mod2).H\hat e \ne s \pmod 2. -

The useful question is therefore not "did BP converge globally?" but "where is BP uncertain, and can that uncertainty be isolated?"

-

Choose a reliability threshold tau and partition the qubits:

-Qrel={q:∣γq∣≥τ},Q_{rel} = \{q : |\gamma_q| \ge \tau\}, -Qamb={q:∣γq∣<τ}.Q_{amb} = \{q : |\gamma_q| < \tau\}. -

Freeze the reliable set to its hard decision e_rel and compute the residual

-sres=s+Hrelerel(mod2).s_{res} = s + H_{rel}e_{rel} \pmod 2. -

If s_res is zero, the frozen assignment is already faithful. Otherwise the remaining work concentrates on the ambiguous support.

-

2. Component-wise solving

-

Build the Tanner-induced subgraph on Q_amb. When the component-separation condition holds, it decomposes into connected components C_k with disjoint column support. QECTOR's documented strategy is:

-
    -
  1. Solve a component exactly by enumeration when its size is at most the configured K_max, documented as 12 by default.
  2. -
  3. Use a restricted OSD-0 solve for larger components.
  4. -
  5. Escalate if a component cannot satisfy its residual syndrome.
  6. -
  7. XOR the component corrections with the frozen reliable assignment.
  8. -
-

The exact path searches the local space, not the full 2^n space. It is attractive when BP confidence leaves small disconnected islands. It is not a promise that every qLDPC instance decomposes into small components.

-

3. Faithfulness theorem

-

Let each component solver return e_k satisfying

-HCkek=sres,k(mod2).H_{C_k}e_k = s_{res,k} \pmod 2. -

Construct

-c=erel+⨁kek.c = e_{rel} + \bigoplus_k e_k. -

Because the component supports are disjoint and their residual equations sum to s_res,

-Hc=Hrelerel+Hambeamb=Hrelerel+sres=Hrelerel+(s+Hrelerel)=s(mod2).\begin{aligned} -Hc - &= H_{rel}e_{rel} + H_{amb}e_{amb} \\ - &= H_{rel}e_{rel} + s_{res} \\ - &= H_{rel}e_{rel} + (s + H_{rel}e_{rel}) \\ - &= s \pmod 2. -\end{aligned} -

The threshold tau changes which representative is frozen and which work is enumerated. It does not change the algebraic conclusion, as long as every component residual is solved or escalated.

-

4. Logical scoring remains a separate layer

-

Faithfulness implies c + e lies in ker(H). It does not identify whether that residual is a stabilizer or a logical operator. For a stabilizer code, the logical criterion remains

-c+e∈im⁡(HT)c + e \in \operatorname{im}(H^T) -

for success. An exact local component solve can still pick a globally nontrivial logical coset when the code's logical structure crosses a component boundary. That is why the manual calls the method faithful and exact within clusters, but makes no universal logical-accuracy claim for any learned or thresholded configuration.

-

5. Learned predecoders

-

The manual describes two research-grade surfaces, available in the package as NeuralPredecoder and GNNPredecoder:

-
    -
  • NeuralPredecoder: a small leaky-ReLU MLP trained with SGD.
  • -
  • GNNPredecoder: a message-passing network with a softplus edge readout that predicts dynamic per-edge weights.
  • -
-
from qector_decoder_v3 import NeuralPredecoder, GNNPredecoder
-

The learned output can influence BP priors, reliability ordering, or matching weights. A positive softplus readout is useful when the downstream matching path expects non-negative edge costs. But training data, architecture, calibration, and distribution shift all affect the result.

-

The safe statement is therefore:

-
-

Learned surfaces are training-dependent research paths. Their accuracy is not claimed by the v1.0.0 manual without a surviving artifact. Their returned correction still passes the same Hc = s gate.

-
-

This distinction serves both researchers and product teams. A model can be a useful prior without becoming the authority on correctness.

-

6. A practical failure mode

-

Suppose BP marks most qubits reliable but freezes one wrong bit. That bit contributes a nonzero term to H_rel e_rel, so the residual syndrome records the mistake. A component solver that ignores the residual may return a plausible-looking vector with the wrong boundary. A solver that receives s_res can repair it, and the final matrix product exposes any implementation bug immediately.

-

The residual is not optional bookkeeping. It is the interface between a probabilistic front end and a deterministic algebraic back end.

-

7. Choosing a threshold

-

Raising tau makes more qubits ambiguous. That can improve the chance that the frozen set is reliable, but it also grows component sizes and enumeration cost. Lowering tau freezes more qubits and may leave a harder residual. The manual prescribes no universal threshold.

-

A responsible experiment should record:

-
code family and matrix
-training or calibration artifact
-noise model and physical error rate
-tau and K_max
-component-size distribution
-faithfulness failures and escalations
-logical-observable results
-seed, environment, and raw artifact hash
-

A threshold tuned on one code family should not be described as a general decoder law.

-

8. Where this fits in routing

-

Ambiguity clustering is a middle path between a full BP-OSD solve and an unverified learned guess:

-
BP reliabilities
-      |
-      v
-freeze reliable bits -> residual -> solve ambiguous components
-      |
-      v
-verify H @ correction == syndrome
-      |
-      v
-score logical observables or escalate
-

The routing layer may use a learned predecoder to choose weights or priors, but structural eligibility and syndrome verification stay deterministic. That separation lets a learned configuration be compared against an unlearned baseline without changing the correctness test.

-

Takeaway

-

Ambiguity clustering localizes uncertainty; it does not redefine correctness. Learned priors can make a decoder more informed, and exact local solves can reduce unnecessary global work, but both stay subordinate to the residual equation and the logical-coset metric. That is how to add AI to QEC without moving the proof goalposts.

-

Reference

-

Guillaume Lessard, QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine, v1.0.0, August 2026. DOI: 10.5281/zenodo.21941046.

- - - diff --git a/blog/06_ambiguity_gnn_neural.md b/blog/06_ambiguity_gnn_neural.md deleted file mode 100644 index 9d8c715a..00000000 --- a/blog/06_ambiguity_gnn_neural.md +++ /dev/null @@ -1,159 +0,0 @@ -# Ambiguity Clustering and Learned Predecoders: Adding AI Without Moving the Proof - -Author: Guillaume Lessard / qector.store -Source: QECTOR Decoder v3 Reference Manual v1.0.0 -Date: August 2026 -DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046) -Tags: qLDPC, ambiguity clustering, GNN, neural predecoder, decoder verification - -## Abstract - -Belief propagation can leave only a small part of a qLDPC problem uncertain, even when its global hard decision is not faithful. Ambiguity clustering exploits that: freeze confident qubits, compute the residual syndrome, and solve disconnected ambiguous components exactly when they are small. QECTOR also exposes learned predecoder surfaces that supply priors or dynamic weights. The architectural boundary matters: learned components may influence the selected correction, but the final syndrome-faithfulness gate stays algebraic and independent of training quality. - -## 1. Confidence is not correctness - -After BP, each qubit receives a posterior log-likelihood ratio `gamma_q`. A large magnitude means the model is confident about the bit. It does not prove the bit correct. A hard decision can still fail the syndrome equation - -$$ -H\hat e \ne s \pmod 2. -$$ - -The useful question is therefore not "did BP converge globally?" but "where is BP uncertain, and can that uncertainty be isolated?" - -Choose a reliability threshold `tau` and partition the qubits: - -$$ -Q_{rel} = \{q : |\gamma_q| \ge \tau\}, -$$ - -$$ -Q_{amb} = \{q : |\gamma_q| < \tau\}. -$$ - -Freeze the reliable set to its hard decision `e_rel` and compute the residual - -$$ -s_{res} = s + H_{rel}e_{rel} \pmod 2. -$$ - -If `s_res` is zero, the frozen assignment is already faithful. Otherwise the remaining work concentrates on the ambiguous support. - -## 2. Component-wise solving - -Build the Tanner-induced subgraph on `Q_amb`. When the component-separation condition holds, it decomposes into connected components `C_k` with disjoint column support. QECTOR's documented strategy is: - -1. Solve a component exactly by enumeration when its size is at most the configured `K_max`, documented as 12 by default. -2. Use a restricted OSD-0 solve for larger components. -3. Escalate if a component cannot satisfy its residual syndrome. -4. XOR the component corrections with the frozen reliable assignment. - -The exact path searches the local space, not the full `2^n` space. It is attractive when BP confidence leaves small disconnected islands. It is not a promise that every qLDPC instance decomposes into small components. - -## 3. Faithfulness theorem - -Let each component solver return `e_k` satisfying - -$$ -H_{C_k}e_k = s_{res,k} \pmod 2. -$$ - -Construct - -$$ -c = e_{rel} + \bigoplus_k e_k. -$$ - -Because the component supports are disjoint and their residual equations sum to `s_res`, - -$$ -\begin{aligned} -Hc - &= H_{rel}e_{rel} + H_{amb}e_{amb} \\ - &= H_{rel}e_{rel} + s_{res} \\ - &= H_{rel}e_{rel} + (s + H_{rel}e_{rel}) \\ - &= s \pmod 2. -\end{aligned} -$$ - -The threshold `tau` changes which representative is frozen and which work is enumerated. It does not change the algebraic conclusion, as long as every component residual is solved or escalated. - -## 4. Logical scoring remains a separate layer - -Faithfulness implies `c + e` lies in `ker(H)`. It does not identify whether that residual is a stabilizer or a logical operator. For a stabilizer code, the logical criterion remains - -$$ -c + e \in \operatorname{im}(H^T) -$$ - -for success. An exact local component solve can still pick a globally nontrivial logical coset when the code's logical structure crosses a component boundary. That is why the manual calls the method faithful and exact within clusters, but makes no universal logical-accuracy claim for any learned or thresholded configuration. - -## 5. Learned predecoders - -The manual describes two research-grade surfaces, available in the package as `NeuralPredecoder` and `GNNPredecoder`: - -- `NeuralPredecoder`: a small leaky-ReLU MLP trained with SGD. -- `GNNPredecoder`: a message-passing network with a softplus edge readout that predicts dynamic per-edge weights. - -```python -from qector_decoder_v3 import NeuralPredecoder, GNNPredecoder -``` - -The learned output can influence BP priors, reliability ordering, or matching weights. A positive softplus readout is useful when the downstream matching path expects non-negative edge costs. But training data, architecture, calibration, and distribution shift all affect the result. - -The safe statement is therefore: - -> Learned surfaces are training-dependent research paths. Their accuracy is not claimed by the v1.0.0 manual without a surviving artifact. Their returned correction still passes the same `Hc = s` gate. - -This distinction serves both researchers and product teams. A model can be a useful prior without becoming the authority on correctness. - -## 6. A practical failure mode - -Suppose BP marks most qubits reliable but freezes one wrong bit. That bit contributes a nonzero term to `H_rel e_rel`, so the residual syndrome records the mistake. A component solver that ignores the residual may return a plausible-looking vector with the wrong boundary. A solver that receives `s_res` can repair it, and the final matrix product exposes any implementation bug immediately. - -The residual is not optional bookkeeping. It is the interface between a probabilistic front end and a deterministic algebraic back end. - -## 7. Choosing a threshold - -Raising `tau` makes more qubits ambiguous. That can improve the chance that the frozen set is reliable, but it also grows component sizes and enumeration cost. Lowering `tau` freezes more qubits and may leave a harder residual. The manual prescribes no universal threshold. - -A responsible experiment should record: - -```text -code family and matrix -training or calibration artifact -noise model and physical error rate -tau and K_max -component-size distribution -faithfulness failures and escalations -logical-observable results -seed, environment, and raw artifact hash -``` - -A threshold tuned on one code family should not be described as a general decoder law. - -## 8. Where this fits in routing - -Ambiguity clustering is a middle path between a full BP-OSD solve and an unverified learned guess: - -```text -BP reliabilities - | - v -freeze reliable bits -> residual -> solve ambiguous components - | - v -verify H @ correction == syndrome - | - v -score logical observables or escalate -``` - -The routing layer may use a learned predecoder to choose weights or priors, but structural eligibility and syndrome verification stay deterministic. That separation lets a learned configuration be compared against an unlearned baseline without changing the correctness test. - -## Takeaway - -Ambiguity clustering localizes uncertainty; it does not redefine correctness. Learned priors can make a decoder more informed, and exact local solves can reduce unnecessary global work, but both stay subordinate to the residual equation and the logical-coset metric. That is how to add AI to QEC without moving the proof goalposts. - -## Reference - -Guillaume Lessard, *QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine*, v1.0.0, August 2026. DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046). diff --git a/blog/07SpaceTimeDecoder/index.html b/blog/07SpaceTimeDecoder/index.html deleted file mode 100644 index c2827e0a..00000000 --- a/blog/07SpaceTimeDecoder/index.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Space-Time Decoding with Noisy Measurements · QECTOR Blog - - - - - - - - - - - - - -
Skip to main content
Back to All Articles
August 2026Multi-RoundBy Guillaume Lessard · 5 min read

Space-Time Decoding with Noisy Measurements

Detector differencing, temporal and spatial weights, measurement glitches, and streaming scope.

Author: Guillaume Lessard / qector.store
-Source: QECTOR Decoder v3 Reference Manual v1.0.0
-Date: August 2026
-DOI: 10.5281/zenodo.21941046
-Tags: space-time decoding, detector error model, measurement noise, streaming QEC

-

Abstract

-

With noisy syndrome extraction, one round of measurements is not the same object as a clean syndrome. Data faults and measurement faults must be represented together so the decoder can decide whether a detection event is spatial or temporal. QECTOR's SpaceTimeDecoder lifts the problem into a (2+1)-dimensional detector lattice; StreamingDecoder and SlidingWindowDecoder provide separate multi-round primitives. This post derives detector differencing, anisotropic edge weights, the lifted faithfulness equation, a measurement-glitch example, and the manual's explicit boundary on Python streaming claims.

-

1. Raw syndromes are histories

-

Let s_(c,t) be the observed syndrome bit for check c at round t. It mixes data-error effects with measurement noise. Instead of decoding each round as an isolated two-dimensional problem, form detector differences:

-dc,t=sc,t+sc,t−1(mod2),d_{c,t} = s_{c,t} + s_{c,t-1} \pmod 2, -

with the initial layer handled by the chosen boundary convention.

-

The difference records changes rather than absolute values. A persistent data fault creates events at the temporal boundaries of its interval. A measurement flip that appears and then disappears creates a pair of events at the same detector in adjacent layers. The decoder can then prefer a time-like explanation when the measurement prior makes it more likely.

-

The detector error model (DEM) is the object that enumerates these mechanisms. QECTOR exposes it through a small verified API:

-
from qector_decoder_v3 import dem
-
-model = dem.from_stim(circuit)        # detector error model
-decoder = model.make_decoder()        # routed backend
-if model.is_graphlike:
-    graph = model.collapse_to_graph() # MWPM-ready form
-

2. The lifted parity-check problem

-

The lifted detector matrix H_ST contains both data-fault columns and measurement-fault columns. Rows represent detectors at particular time layers. A space-like column changes detector locations according to the base code; a time-like column connects the same detector across adjacent rounds.

-

The correction is now a space-time vector c_ST, and the correctness equation is

-HSTcST=d(mod2).H_{ST}c_{ST} = d \pmod 2. -

For graphlike lifted models, paths in the detector lattice have the same boundary property as paths in the two-dimensional graph. The SpaceTimeDecoder therefore solves one matching problem over all rounds, instead of making independent decisions that confuse measurement faults with data faults.

-

3. Anisotropic weights

-

Data and measurement mechanisms need not share a probability. Assign

-wspace=log⁡(1−pdatapdata),w_{space} = \log\left(\frac{1-p_{data}}{p_{data}}\right), -

and

-wtime=log⁡(1−pmeaspmeas).w_{time} = \log\left(\frac{1-p_{meas}}{p_{meas}}\right). -

The decoder compares path costs under these priors. If measurement faults are more likely than data faults, a time-like path may be cheaper. If the measurement channel is cleaner, spatial paths are preferred. The weights belong to the detector model, not to a tuning knob.

-

For example, p_data = 0.01 gives w_space around 4.595, while p_meas = 0.03 gives w_time around 3.476. The example shows the direction of the preference. It is not a claim about logical-error performance.

-

4. A glitch that must not become a data correction

-

Assume clean rounds 1 and 2. At round 3, check 2 reports a spurious flip. At round 4 the measurement returns to its previous value. Differencing produces two detector events:

-
appearance at (check 2, round 3)
-disappearance at (check 2, round 4)
-

The natural explanation is a pair of time-like edges. The projected spatial correction is empty because no data qubit changed. This is the regression behaviour described in the manual: a lone measurement glitch that reverts on the next round must not corrupt the spatial correction.

-

5. The lifted faithfulness theorem

-

Let d be the detector-event vector. If the decoder returns a space-time correction with

-HSTcST=d,H_{ST}c_{ST} = d, -

then every detector event is reproduced by the correction. Projecting away the measurement columns yields a spatial correction whose final-round syndrome differs from the raw final measurement only by the final-round measurement-error boundary term.

-

That projection statement is a property of the lifted chain complex. It is not a claim that measurement noise has been eliminated from the physical device. The logical test stays separate: once the final spatial correction is formed, its residual must be scored in the appropriate logical-observable or stabilizer quotient.

-

6. Full space-time versus streaming primitives

-

These names describe different scopes:

- - - - - - - - - - - - - - - - - - - - - - - - - -
SurfaceDocumented role
SpaceTimeDecoderFull lifted detector-lattice decoding across T rounds
StreamingDecoderRust streaming primitive with accumulated history
SlidingWindowDecoderRust window with decay weighting
Python streaming layerPer-round/windowed workflow for batching and telemetry; not full 3D matching by itself
-

For a decayed window, the manual gives a geometric truncation bound. If 0 <= lambda < 1,

-∥SW−Sinfty∥1≤λW1−λ∥s∥infty.\|S_W-S_{infty}\|_1 \leq \frac{\lambda^W}{1-\lambda}\|s\|_{infty}. -

The expression describes the history approximation. It does not by itself establish a numerical logical-fidelity loss or a hardware-control guarantee.

-

7. Choosing between offline and online paths

-

Use the full lifted decoder when the experiment needs a circuit-level or multi-round decision that consumes the complete detector history. Use a streaming primitive when the workflow needs bounded state, incremental commits, or telemetry, and can accept the stated windowing semantics.

-

In either case, record:

-
number of rounds and boundary convention
-data and measurement error priors
-detector construction and DEM settings
-decoder family and weight mode
-window length and decay factor, if applicable
-observable scoring, seed, environment, and artifact hash
-

Do not describe a per-round Python window as full circuit-level space-time matching. The manual explicitly reserves that claim for the lifted SpaceTimeDecoder path.

-

8. Why this matters to hardware teams

-

The detector lattice is an interface between measurement electronics and decoding software. It lets a decoder consume repeated stabilizer outcomes without forcing the hardware layer to declare every event a data fault. It also makes priors visible: calibration data can inform time-like and space-like weights, while the algebraic gate verifies the emitted detector correction.

-

This separation supports heterogeneous systems. The physical layer produces rounds, the DEM describes mechanisms, the space-time decoder handles correlated history, and the validation harness scores observables under a named noise model.

-

Takeaway

-

Noisy measurements do not invalidate syndrome decoding; they change the matrix. XOR differencing turns a history into detector events, anisotropic weights express the relative fault priors, and the lifted equation preserves the same syndrome-faithfulness idea in one higher dimension. Streaming is useful, but its scope must be stated precisely rather than marketed as full circuit-level matching.

-

Reference

-

Guillaume Lessard, QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine, v1.0.0, August 2026. DOI: 10.5281/zenodo.21941046.

- - - diff --git a/blog/07_space_time_decoder.md b/blog/07_space_time_decoder.md deleted file mode 100644 index 4bb466a4..00000000 --- a/blog/07_space_time_decoder.md +++ /dev/null @@ -1,137 +0,0 @@ -# Space-Time Decoding: Letting the Decoder See Measurement Errors - -Author: Guillaume Lessard / qector.store -Source: QECTOR Decoder v3 Reference Manual v1.0.0 -Date: August 2026 -DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046) -Tags: space-time decoding, detector error model, measurement noise, streaming QEC - -## Abstract - -With noisy syndrome extraction, one round of measurements is not the same object as a clean syndrome. Data faults and measurement faults must be represented together so the decoder can decide whether a detection event is spatial or temporal. QECTOR's `SpaceTimeDecoder` lifts the problem into a `(2+1)`-dimensional detector lattice; `StreamingDecoder` and `SlidingWindowDecoder` provide separate multi-round primitives. This post derives detector differencing, anisotropic edge weights, the lifted faithfulness equation, a measurement-glitch example, and the manual's explicit boundary on Python streaming claims. - -## 1. Raw syndromes are histories - -Let `s_(c,t)` be the observed syndrome bit for check `c` at round `t`. It mixes data-error effects with measurement noise. Instead of decoding each round as an isolated two-dimensional problem, form detector differences: - -$$ -d_{c,t} = s_{c,t} + s_{c,t-1} \pmod 2, -$$ - -with the initial layer handled by the chosen boundary convention. - -The difference records changes rather than absolute values. A persistent data fault creates events at the temporal boundaries of its interval. A measurement flip that appears and then disappears creates a pair of events at the same detector in adjacent layers. The decoder can then prefer a time-like explanation when the measurement prior makes it more likely. - -The detector error model (DEM) is the object that enumerates these mechanisms. QECTOR exposes it through a small verified API: - -```python -from qector_decoder_v3 import dem - -model = dem.from_stim(circuit) # detector error model -decoder = model.make_decoder() # routed backend -if model.is_graphlike: - graph = model.collapse_to_graph() # MWPM-ready form -``` - -## 2. The lifted parity-check problem - -The lifted detector matrix `H_ST` contains both data-fault columns and measurement-fault columns. Rows represent detectors at particular time layers. A space-like column changes detector locations according to the base code; a time-like column connects the same detector across adjacent rounds. - -The correction is now a space-time vector `c_ST`, and the correctness equation is - -$$ -H_{ST}c_{ST} = d \pmod 2. -$$ - -For graphlike lifted models, paths in the detector lattice have the same boundary property as paths in the two-dimensional graph. The `SpaceTimeDecoder` therefore solves one matching problem over all rounds, instead of making independent decisions that confuse measurement faults with data faults. - -## 3. Anisotropic weights - -Data and measurement mechanisms need not share a probability. Assign - -$$ -w_{space} = \log\left(\frac{1-p_{data}}{p_{data}}\right), -$$ - -and - -$$ -w_{time} = \log\left(\frac{1-p_{meas}}{p_{meas}}\right). -$$ - -The decoder compares path costs under these priors. If measurement faults are more likely than data faults, a time-like path may be cheaper. If the measurement channel is cleaner, spatial paths are preferred. The weights belong to the detector model, not to a tuning knob. - -For example, `p_data = 0.01` gives `w_space` around `4.595`, while `p_meas = 0.03` gives `w_time` around `3.476`. The example shows the direction of the preference. It is not a claim about logical-error performance. - -## 4. A glitch that must not become a data correction - -Assume clean rounds 1 and 2. At round 3, check 2 reports a spurious flip. At round 4 the measurement returns to its previous value. Differencing produces two detector events: - -```text -appearance at (check 2, round 3) -disappearance at (check 2, round 4) -``` - -The natural explanation is a pair of time-like edges. The projected spatial correction is empty because no data qubit changed. This is the regression behaviour described in the manual: a lone measurement glitch that reverts on the next round must not corrupt the spatial correction. - -## 5. The lifted faithfulness theorem - -Let `d` be the detector-event vector. If the decoder returns a space-time correction with - -$$ -H_{ST}c_{ST} = d, -$$ - -then every detector event is reproduced by the correction. Projecting away the measurement columns yields a spatial correction whose final-round syndrome differs from the raw final measurement only by the final-round measurement-error boundary term. - -That projection statement is a property of the lifted chain complex. It is not a claim that measurement noise has been eliminated from the physical device. The logical test stays separate: once the final spatial correction is formed, its residual must be scored in the appropriate logical-observable or stabilizer quotient. - -## 6. Full space-time versus streaming primitives - -These names describe different scopes: - -| Surface | Documented role | -|---|---| -| `SpaceTimeDecoder` | Full lifted detector-lattice decoding across `T` rounds | -| `StreamingDecoder` | Rust streaming primitive with accumulated history | -| `SlidingWindowDecoder` | Rust window with decay weighting | -| Python streaming layer | Per-round/windowed workflow for batching and telemetry; not full 3D matching by itself | - -For a decayed window, the manual gives a geometric truncation bound. If `0 <= lambda < 1`, - -$$ -\|S_W-S_{infty}\|_1 \leq \frac{\lambda^W}{1-\lambda}\|s\|_{infty}. -$$ - -The expression describes the history approximation. It does not by itself establish a numerical logical-fidelity loss or a hardware-control guarantee. - -## 7. Choosing between offline and online paths - -Use the full lifted decoder when the experiment needs a circuit-level or multi-round decision that consumes the complete detector history. Use a streaming primitive when the workflow needs bounded state, incremental commits, or telemetry, and can accept the stated windowing semantics. - -In either case, record: - -```text -number of rounds and boundary convention -data and measurement error priors -detector construction and DEM settings -decoder family and weight mode -window length and decay factor, if applicable -observable scoring, seed, environment, and artifact hash -``` - -Do not describe a per-round Python window as full circuit-level space-time matching. The manual explicitly reserves that claim for the lifted `SpaceTimeDecoder` path. - -## 8. Why this matters to hardware teams - -The detector lattice is an interface between measurement electronics and decoding software. It lets a decoder consume repeated stabilizer outcomes without forcing the hardware layer to declare every event a data fault. It also makes priors visible: calibration data can inform time-like and space-like weights, while the algebraic gate verifies the emitted detector correction. - -This separation supports heterogeneous systems. The physical layer produces rounds, the DEM describes mechanisms, the space-time decoder handles correlated history, and the validation harness scores observables under a named noise model. - -## Takeaway - -Noisy measurements do not invalidate syndrome decoding; they change the matrix. XOR differencing turns a history into detector events, anisotropic weights express the relative fault priors, and the lifted equation preserves the same syndrome-faithfulness idea in one higher dimension. Streaming is useful, but its scope must be stated precisely rather than marketed as full circuit-level matching. - -## Reference - -Guillaume Lessard, *QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine*, v1.0.0, August 2026. DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046). diff --git a/blog/08AutoDecoderCascade/index.html b/blog/08AutoDecoderCascade/index.html deleted file mode 100644 index 2c00b57c..00000000 --- a/blog/08AutoDecoderCascade/index.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Routing, Cascades, and Two-Stage CSS Decoding · QECTOR Blog - - - - - - - - - - - - - -
Skip to main content
Back to All Articles
August 2026OrchestrationBy Guillaume Lessard · 5 min read

Routing, Cascades, and Two-Stage CSS Decoding

Structural backend eligibility, fallback verification, hybrid acceptance, and CSS sector feedforward.

Author: Guillaume Lessard / qector.store
-Source: QECTOR Decoder v3 Reference Manual v1.0.0
-Date: August 2026
-DOI: 10.5281/zenodo.21941046
-Tags: decoder routing, cascade decoding, CSS codes, orchestration, QEC systems

-

Abstract

-

A quantum error-correction stack rarely has one workload. It may receive a small code, a large batch, a graphlike surface-code syndrome, a qLDPC hypergraph, or two correlated CSS sectors. QECTOR's orchestration layer chooses an eligible backend, verifies the result, and escalates when the chosen path is unsuitable. This post explains the structural routing guard, the documented fallback sequence, the hybrid cascade acceptance criterion, two-stage CSS feedforward, lookup tables, and the limits of an AutoDecoder policy. The class names used below are those of the shipped package: AutoDecoder, NativeAutoDecoder, HybridCascadeDecoder, and TwoStageDecoder.

-

1. Routing is a validity decision

-

The first routing question is not speed. It is whether a decoder family is valid for the matrix.

-
if any qubit touches more than two checks:
-    matching and Union-Find are ineligible
-    route to BP-OSD
-else:
-    graphlike decoders may be considered
-

This check is made from the actual check_to_qubits structure, not from a label supplied by a caller. A graphlike algorithm applied to a hypergraph is not a slower version of the correct algorithm; it is a different problem.

-

2. Policy inputs

-

The documented recommendation policy can consider:

-
    -
  • code family and topology;
  • -
  • distance and qubit/check counts;
  • -
  • batch size;
  • -
  • priority such as accuracy, speed, or balanced operation;
  • -
  • graphlike eligibility.
  • -
-

For graphlike inputs, an accuracy priority can select exact Blossom for small or moderate instances and Sparse Blossom for larger ones. A speed priority can select Fast Union-Find or a batch path. For non-graphlike inputs, BP-OSD is forced regardless of the supplied family label.

-

The policy is a recommendation. The backend contract and post-decode syndrome verification are the safety mechanisms.

-

3. The fallback controller

-

The Python AutoDecoder controller tries progressively safer execution paths and verifies the syndrome after each tier. The documented sequence runs through native routing, CUDA, OpenCL, Rayon batch, CPU batch, single-thread execution, Blossom, and lookup-table paths, followed by BP-OSD as the arbitrary-GF(2) fallback. A zero correction is documented only as a last-resort return after all verification paths fail; it is not a successful decode claim.

-

Two failure classes stay distinct:

-
    -
  • a backend may be unavailable because of hardware or licensing;
  • -
  • a backend may return a result that is incomplete or fails Hc = s.
  • -
-

GPU failures disable the GPU path for subsequent attempts in the controller, while CPU paths may be retried for transient failures. Every route still inherits the contract of the selected backend.

-

4. The hybrid cascade

-

HybridCascadeDecoder uses a cheap faithful pre-filter and an expensive fallback. Let c_UF be the Fast Union-Find result and W_budget a declared weight budget. The acceptance criterion is

-HcUF=s(mod2)and∣cUF∣≤Wbudget.Hc_{UF} = s \pmod 2 -\quad\text{and}\quad -|c_{UF}| \le W_{budget}. -

If both conditions pass, the correction is accepted. Otherwise the controller escalates to Blossom for a graphlike workload, or to BP-OSD for a non-graphlike workload or deadline path.

-

The parity check is not redundant even though UF is documented as faithful on supported graphs. It turns the cascade into a self-checking boundary and catches integration errors. The weight budget is a policy choice; it must be recorded with the workload, not treated as a universal constant.

-

The cascade preserves syndrome faithfulness when the pre-filter is faithful and the fallback is faithful. It does not by itself prove that accepted UF corrections match exact MWPM in logical-coset quality on every noise model.

-

5. Two-stage CSS decoding

-

Independent X and Z decoders assume that sector errors are independent. Depolarizing noise contains Y errors, which couple the sectors. TwoStageDecoder documents a feedforward construction:

-cX←Decode⁡X(sX),c_X \leftarrow \operatorname{Decode}_X(s_X), -sZ′=sZ+HZ,XcX(mod2),s'_Z = s_Z + H_{Z,X}c_X \pmod 2, -cZ←Decode⁡Z(sZ′),c_Z \leftarrow \operatorname{Decode}_Z(s'_Z), -

and c = c_X + c_Z.

-

If both sector decoders are faithful on their actual inputs, stage two cancels the induced cross-coupling:

-HZ(cX+cZ)=HZ,XcX+sZ′=sZ(mod2).H_Z(c_X+c_Z) = H_{Z,X}c_X + s'_Z = s_Z \pmod 2. -

Together with H_X c_X = s_X, the joint correction is faithful. The theorem establishes the algebraic composition, not a universal threshold improvement over independent decoding.

-

6. Lookup tables and small codes

-

For sufficiently small codes, LookupTableDecoder can enumerate stored syndrome-to-correction entries. The manual scopes it to small codes, with exhaustive entries for n_qubits <= 20 and a Union-Find fallback. The lookup is exact for entries that are actually stored; it is not a general solution for arbitrary code sizes.

-

The table must still be generated and validated against the parity-check map. A fast array access is not evidence unless the stored correction satisfies the syndrome equation for its key.

-

7. Read routing decisions as contracts

-

A useful diagnostic record looks like this:

-
input shape: checks, qubits, syndrome, batch
-structural class: graphlike or hypergraph
-priority: accuracy, speed, or balanced
-selected backend and fallback order
-weights and noise model
-license/hardware availability
-verification result: H @ c == s
-logical score, if a sampled error/observable is available
-

This record makes a routing decision explainable. It also prevents an accidental benchmark comparison from mixing a graphlike path with a hypergraph path, or an unweighted path with a DEM-weighted path.

-

8. Licensing is separate from hardware availability

-

The manual documents Community, Pro, and Enterprise distance caps of 7, 19, and 63, with GPU batch paths gated by Enterprise. Token verification is offline, performed in the Rust core, using Ed25519. is_available() reports hardware; it does not grant a license tier. These are separate decisions and should stay separate in diagnostics and documentation.

-

License input is explicit: keys arrive through set_license_key() (read back with get_license_info()), through the QECTOR_LICENSE_KEY or QECTOR_LICENSE_FILE environment variables, or through ~/.qector/license.key. QECTOR_ENFORCE=1 and QECTOR_SILENT=1 control strictness and banner output.

-

9. The right claim about orchestration

-

An orchestrator can provide a common API, structural eligibility checks, fallback behaviour, and verification. It cannot make every backend exact, every workload comparable, or every hardware path production-ready. The manual explicitly classifies network surfaces as provisional and requires deployment review for authentication, rate limits, TLS, audit logging, and resource quotas.

-

The live ecosystem also ships the Workbench (v1.0.7): 19 kinds (17 concrete configurations plus AutoDecoder and the Auto Router), 85 MCP tools, and 10 code families. Those network surfaces remain provisional under the same deployment review.

-

Takeaway

-

Good routing is not a table of speed slogans. It is a sequence of eligibility checks, policy choices, backend contracts, and verification gates. AutoDecoder chooses a path, Cascade limits the cost of escalation, and TwoStage handles CSS cross-talk. The final authority remains the actual matrix and the equation Hc = s.

-

Reference

-

Guillaume Lessard, QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine, v1.0.0, August 2026. DOI: 10.5281/zenodo.21941046.

- - - diff --git a/blog/08_autodecoder_cascade.md b/blog/08_autodecoder_cascade.md deleted file mode 100644 index 2447be39..00000000 --- a/blog/08_autodecoder_cascade.md +++ /dev/null @@ -1,135 +0,0 @@ -# Routing QEC Workloads: AutoDecoder, Cascades, and Two-Stage CSS Decoding - -Author: Guillaume Lessard / qector.store -Source: QECTOR Decoder v3 Reference Manual v1.0.0 -Date: August 2026 -DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046) -Tags: decoder routing, cascade decoding, CSS codes, orchestration, QEC systems - -## Abstract - -A quantum error-correction stack rarely has one workload. It may receive a small code, a large batch, a graphlike surface-code syndrome, a qLDPC hypergraph, or two correlated CSS sectors. QECTOR's orchestration layer chooses an eligible backend, verifies the result, and escalates when the chosen path is unsuitable. This post explains the structural routing guard, the documented fallback sequence, the hybrid cascade acceptance criterion, two-stage CSS feedforward, lookup tables, and the limits of an `AutoDecoder` policy. The class names used below are those of the shipped package: `AutoDecoder`, `NativeAutoDecoder`, `HybridCascadeDecoder`, and `TwoStageDecoder`. - -## 1. Routing is a validity decision - -The first routing question is not speed. It is whether a decoder family is valid for the matrix. - -```text -if any qubit touches more than two checks: - matching and Union-Find are ineligible - route to BP-OSD -else: - graphlike decoders may be considered -``` - -This check is made from the actual `check_to_qubits` structure, not from a label supplied by a caller. A graphlike algorithm applied to a hypergraph is not a slower version of the correct algorithm; it is a different problem. - -## 2. Policy inputs - -The documented recommendation policy can consider: - -- code family and topology; -- distance and qubit/check counts; -- batch size; -- priority such as accuracy, speed, or balanced operation; -- graphlike eligibility. - -For graphlike inputs, an accuracy priority can select exact Blossom for small or moderate instances and Sparse Blossom for larger ones. A speed priority can select Fast Union-Find or a batch path. For non-graphlike inputs, BP-OSD is forced regardless of the supplied family label. - -The policy is a recommendation. The backend contract and post-decode syndrome verification are the safety mechanisms. - -## 3. The fallback controller - -The Python `AutoDecoder` controller tries progressively safer execution paths and verifies the syndrome after each tier. The documented sequence runs through native routing, CUDA, OpenCL, Rayon batch, CPU batch, single-thread execution, Blossom, and lookup-table paths, followed by BP-OSD as the arbitrary-GF(2) fallback. A zero correction is documented only as a last-resort return after all verification paths fail; it is not a successful decode claim. - -Two failure classes stay distinct: - -- a backend may be unavailable because of hardware or licensing; -- a backend may return a result that is incomplete or fails `Hc = s`. - -GPU failures disable the GPU path for subsequent attempts in the controller, while CPU paths may be retried for transient failures. Every route still inherits the contract of the selected backend. - -## 4. The hybrid cascade - -`HybridCascadeDecoder` uses a cheap faithful pre-filter and an expensive fallback. Let `c_UF` be the Fast Union-Find result and `W_budget` a declared weight budget. The acceptance criterion is - -$$ -Hc_{UF} = s \pmod 2 -\quad\text{and}\quad -|c_{UF}| \le W_{budget}. -$$ - -If both conditions pass, the correction is accepted. Otherwise the controller escalates to Blossom for a graphlike workload, or to BP-OSD for a non-graphlike workload or deadline path. - -The parity check is not redundant even though UF is documented as faithful on supported graphs. It turns the cascade into a self-checking boundary and catches integration errors. The weight budget is a policy choice; it must be recorded with the workload, not treated as a universal constant. - -The cascade preserves syndrome faithfulness when the pre-filter is faithful and the fallback is faithful. It does not by itself prove that accepted UF corrections match exact MWPM in logical-coset quality on every noise model. - -## 5. Two-stage CSS decoding - -Independent X and Z decoders assume that sector errors are independent. Depolarizing noise contains Y errors, which couple the sectors. `TwoStageDecoder` documents a feedforward construction: - -$$ -c_X \leftarrow \operatorname{Decode}_X(s_X), -$$ - -$$ -s'_Z = s_Z + H_{Z,X}c_X \pmod 2, -$$ - -$$ -c_Z \leftarrow \operatorname{Decode}_Z(s'_Z), -$$ - -and `c = c_X + c_Z`. - -If both sector decoders are faithful on their actual inputs, stage two cancels the induced cross-coupling: - -$$ -H_Z(c_X+c_Z) = H_{Z,X}c_X + s'_Z = s_Z \pmod 2. -$$ - -Together with `H_X c_X = s_X`, the joint correction is faithful. The theorem establishes the algebraic composition, not a universal threshold improvement over independent decoding. - -## 6. Lookup tables and small codes - -For sufficiently small codes, `LookupTableDecoder` can enumerate stored syndrome-to-correction entries. The manual scopes it to small codes, with exhaustive entries for `n_qubits <= 20` and a Union-Find fallback. The lookup is exact for entries that are actually stored; it is not a general solution for arbitrary code sizes. - -The table must still be generated and validated against the parity-check map. A fast array access is not evidence unless the stored correction satisfies the syndrome equation for its key. - -## 7. Read routing decisions as contracts - -A useful diagnostic record looks like this: - -```text -input shape: checks, qubits, syndrome, batch -structural class: graphlike or hypergraph -priority: accuracy, speed, or balanced -selected backend and fallback order -weights and noise model -license/hardware availability -verification result: H @ c == s -logical score, if a sampled error/observable is available -``` - -This record makes a routing decision explainable. It also prevents an accidental benchmark comparison from mixing a graphlike path with a hypergraph path, or an unweighted path with a DEM-weighted path. - -## 8. Licensing is separate from hardware availability - -The manual documents Community, Pro, and Enterprise distance caps of 7, 19, and 63, with GPU batch paths gated by Enterprise. Token verification is offline, performed in the Rust core, using Ed25519. `is_available()` reports hardware; it does not grant a license tier. These are separate decisions and should stay separate in diagnostics and documentation. - -License input is explicit: keys arrive through `set_license_key()` (read back with `get_license_info()`), through the `QECTOR_LICENSE_KEY` or `QECTOR_LICENSE_FILE` environment variables, or through `~/.qector/license.key`. `QECTOR_ENFORCE=1` and `QECTOR_SILENT=1` control strictness and banner output. - -## 9. The right claim about orchestration - -An orchestrator can provide a common API, structural eligibility checks, fallback behaviour, and verification. It cannot make every backend exact, every workload comparable, or every hardware path production-ready. The manual explicitly classifies network surfaces as provisional and requires deployment review for authentication, rate limits, TLS, audit logging, and resource quotas. - -The live ecosystem also ships the Workbench (v1.0.7): 19 kinds (17 concrete configurations plus AutoDecoder and the Auto Router), 85 MCP tools, and 10 code families. Those network surfaces remain provisional under the same deployment review. - -## Takeaway - -Good routing is not a table of speed slogans. It is a sequence of eligibility checks, policy choices, backend contracts, and verification gates. AutoDecoder chooses a path, Cascade limits the cost of escalation, and TwoStage handles CSS cross-talk. The final authority remains the actual matrix and the equation `Hc = s`. - -## Reference - -Guillaume Lessard, *QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine*, v1.0.0, August 2026. DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046). diff --git a/blog/09GpuAcceleration/index.html b/blog/09GpuAcceleration/index.html deleted file mode 100644 index bcdb6413..00000000 --- a/blog/09GpuAcceleration/index.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - GPU Batch Decoding and Tested Bit Identity · QECTOR Blog - - - - - - - - - - - - - -
Skip to main content
Back to All Articles
August 2026SystemsBy Guillaume Lessard · 5 min read

GPU Batch Decoding and Tested Bit Identity

Per-shot GPU state isolation, deterministic Union-Find, scoped CPU/GPU identity, and deployment gates.

Author: Guillaume Lessard / qector.store
-Source: QECTOR Decoder v3 Reference Manual v1.0.0
-Date: August 2026
-DOI: 10.5281/zenodo.21941046
-Tags: CUDA, OpenCL, batch decoding, GPU determinism, Rust, QEC validation

-

Abstract

-

The interesting GPU question in a decoder is not only how many shots can be launched. It is whether parallel execution preserves the reference result and its correctness contract. QECTOR's CUDA and OpenCL batch paths port the graphlike Union-Find core with isolated per-shot scratch state. This post explains the memory layout, deterministic tie-breaking, the scoped CPU/GPU bit-identity theorem, licensing and runtime gates, and the hardware limitations that must travel with any deployment claim.

-

1. Why batch state must be isolated

-

For a batch of independent syndromes, each shot runs its own cluster growth and peeling process. A GPU work-item receives one syndrome and owns a private slice of scratch memory. No work-item reads another shot's parent array, parity state, frontier, or correction buffer.

-

That design avoids two problems at once:

-
    -
  • data races that could invalidate the correction;
  • -
  • nondeterministic union order that could produce a different, even if still faithful, correction on each run.
  • -
-

Bit identity is stronger than logical equivalence. It is useful when a GPU result must be compared against a CPU reference, debugged, or audited.

-

2. The documented workspace formula

-

Let

-
N = n_checks + 1   # includes the virtual boundary node
-E = n_edges
-

The manual documents two per-thread scratch strides for the graphlike batch kernel:

-
u32 stride = 6N + 1 + 4E
-u8  stride = 5N + E
-

The exact buffers are an implementation contract, not a universal VRAM budget. A batch of B shots needs those per-shot regions plus syndrome, correction, and any weighted-support buffers. The workspace sizes are checked before launch and can trigger a fallback when resources are insufficient.

-

3. Deterministic Union-Find rules

-

The CPU reference and unweighted batch kernels use deterministic decisions:

-
    -
  1. Union-by-rank handles the normal disjoint-set merge.
  2. -
  3. A deterministic root tie-break, such as the minimum root identifier, resolves equal-rank merges.
  4. -
  5. Edge traversal follows global edge identifiers.
  6. -
  7. Peeling uses a deterministic vertex ordering for its leaf stack.
  8. -
-

These choices matter because Union-Find does not need one unique spanning forest for syndrome faithfulness. Different forests can produce different valid corrections. If the engineering goal is bit identity, the forest construction itself must be deterministic.

-

4. The bit-identity theorem

-

For a graphlike code and a tested configuration, let c_CPU(s) be the unweighted CPU Union-Find correction and c_GPU(s) the unweighted batch-kernel correction.

-

Theorem, scoped

-

The tested unweighted GPU path produces

-cGPU(s)=cCPU(s)c_{GPU}(s) = c_{CPU}(s) -

bit for bit.

-

Proof idea

-

The initial singleton clusters are identical. Deterministic rank and root rules make every merge identical. Ordered edge traversal makes each growth set identical. The resulting spanning forest is therefore identical, and ordered leaf-to-root peeling emits the same correction bits. Induction over growth rounds completes the equivalence.

-

The scope is essential: the manual anchors the theorem to tested graphlike configurations and the CPU/GPU identity tests. It is not a universal statement about every GPU, driver, weighted mode, code family, or future kernel.

-

5. Weighted paths are a separate claim

-

The batch kernels accept DEM edge weights for weighted growth. The unweighted path carries the strongest bit-identity statement. The weighted path mirrors CPU weighted growth and is validated for equivalence on tested configurations, but it should not be silently described as the same bit-identity theorem without the configuration and test evidence.

-

The same distinction applies to CUDABpOsdDecoder. It is a batched qLDPC path; the manual recommends the CPU single-shot path where a one-shot GPU launch would not amortize.

-

6. Hardware and licensing gates

-

is_available() answers whether the local runtime can see the relevant hardware. It does not answer whether the caller is licensed to construct the decoder. The v1.0.0 tier table documents GPU-enabled paths under the Enterprise tier, while distance caps are enforced in the Rust core.

-

The published v1.0.0 wheels are CPU-only: 15 wheels on PyPI (CPython 3.9 through 3.13; Windows x86_64, manylinux x86_64, macOS arm64) with no CUDA binary inside (verified: each wheel carries a single native module of about 4 MB). CUDA and OpenCL are build-time feature gates, not published wheels; OpenCL remains a documented source-build path. Whether the local runtime can actually use a GPU is answered at runtime by cuda_is_available(), which the CPU fallback and the AutoDecoder controller consult before selecting a path.

-

The manual also records a known GPU-context limitation: the native CUDA path and CuPy can use different CUDA contexts, and an intermittent access violation was observed under load on one tested configuration. The documented workaround is to run those workloads in separate processes, or hide the device for a monolithic suite.

-

7. How to validate a GPU batch path

-

A minimal validation record should include:

-
code family and graphlike proof
-checks, qubits, detectors, and edges
-weighted or unweighted mode
-batch shape and syndrome dtype
-CPU reference class and GPU class
-GPU model, driver, runtime, OS, and package versions
-license tier and feature flags
-seed and generated syndromes
-H @ c == s result for every shot
-CPU/GPU byte comparison result
-raw output and SHA-256 hash
-

The reproduction workflow in the manual enables the CUDA feature, runs the focused CPU/GPU identity test, and treats a skipped hardware-gated test as no GPU evidence.

-

8. What not to publish from a local run

-

A local throughput number is not portable evidence. It depends on kernel version, compiler flags, GPU, driver, transfer path, batch size, warmup, and whether construction and memory movement were included. If a number is needed, publish the raw artifact with the full metadata, and report hot and cold paths separately.

-

The v1.0.0 manual deliberately withdraws earlier latency, throughput, memory, and VRAM figures whose artifacts did not survive a core fingerprint change. A blog post should preserve that caution rather than resurrecting the number in a new chart.

-

Takeaway

-

GPU decoding starts with ownership and determinism. Private per-shot state, deterministic Union-Find rules, and a CPU reference make bit identity testable. The claim then remains properly scoped: unweighted graphlike identity on tested configurations, weighted equivalence where tested, and no universal speed promise. That is a stronger engineering story than a headline rate without an artifact.

-

Reference

-

Guillaume Lessard, QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine, v1.0.0, August 2026. DOI: 10.5281/zenodo.21941046.

- - - diff --git a/blog/09_gpu_acceleration.md b/blog/09_gpu_acceleration.md deleted file mode 100644 index f4b3e930..00000000 --- a/blog/09_gpu_acceleration.md +++ /dev/null @@ -1,119 +0,0 @@ -# GPU Batch Decoding: Deterministic State Isolation Before Throughput - -Author: Guillaume Lessard / qector.store -Source: QECTOR Decoder v3 Reference Manual v1.0.0 -Date: August 2026 -DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046) -Tags: CUDA, OpenCL, batch decoding, GPU determinism, Rust, QEC validation - -## Abstract - -The interesting GPU question in a decoder is not only how many shots can be launched. It is whether parallel execution preserves the reference result and its correctness contract. QECTOR's CUDA and OpenCL batch paths port the graphlike Union-Find core with isolated per-shot scratch state. This post explains the memory layout, deterministic tie-breaking, the scoped CPU/GPU bit-identity theorem, licensing and runtime gates, and the hardware limitations that must travel with any deployment claim. - -## 1. Why batch state must be isolated - -For a batch of independent syndromes, each shot runs its own cluster growth and peeling process. A GPU work-item receives one syndrome and owns a private slice of scratch memory. No work-item reads another shot's parent array, parity state, frontier, or correction buffer. - -That design avoids two problems at once: - -- data races that could invalidate the correction; -- nondeterministic union order that could produce a different, even if still faithful, correction on each run. - -Bit identity is stronger than logical equivalence. It is useful when a GPU result must be compared against a CPU reference, debugged, or audited. - -## 2. The documented workspace formula - -Let - -```text -N = n_checks + 1 # includes the virtual boundary node -E = n_edges -``` - -The manual documents two per-thread scratch strides for the graphlike batch kernel: - -```text -u32 stride = 6N + 1 + 4E -u8 stride = 5N + E -``` - -The exact buffers are an implementation contract, not a universal VRAM budget. A batch of `B` shots needs those per-shot regions plus syndrome, correction, and any weighted-support buffers. The workspace sizes are checked before launch and can trigger a fallback when resources are insufficient. - -## 3. Deterministic Union-Find rules - -The CPU reference and unweighted batch kernels use deterministic decisions: - -1. Union-by-rank handles the normal disjoint-set merge. -2. A deterministic root tie-break, such as the minimum root identifier, resolves equal-rank merges. -3. Edge traversal follows global edge identifiers. -4. Peeling uses a deterministic vertex ordering for its leaf stack. - -These choices matter because Union-Find does not need one unique spanning forest for syndrome faithfulness. Different forests can produce different valid corrections. If the engineering goal is bit identity, the forest construction itself must be deterministic. - -## 4. The bit-identity theorem - -For a graphlike code and a tested configuration, let `c_CPU(s)` be the unweighted CPU Union-Find correction and `c_GPU(s)` the unweighted batch-kernel correction. - -### Theorem, scoped - -The tested unweighted GPU path produces - -$$ -c_{GPU}(s) = c_{CPU}(s) -$$ - -bit for bit. - -### Proof idea - -The initial singleton clusters are identical. Deterministic rank and root rules make every merge identical. Ordered edge traversal makes each growth set identical. The resulting spanning forest is therefore identical, and ordered leaf-to-root peeling emits the same correction bits. Induction over growth rounds completes the equivalence. - -The scope is essential: the manual anchors the theorem to tested graphlike configurations and the CPU/GPU identity tests. It is not a universal statement about every GPU, driver, weighted mode, code family, or future kernel. - -## 5. Weighted paths are a separate claim - -The batch kernels accept DEM edge weights for weighted growth. The unweighted path carries the strongest bit-identity statement. The weighted path mirrors CPU weighted growth and is validated for equivalence on tested configurations, but it should not be silently described as the same bit-identity theorem without the configuration and test evidence. - -The same distinction applies to `CUDABpOsdDecoder`. It is a batched qLDPC path; the manual recommends the CPU single-shot path where a one-shot GPU launch would not amortize. - -## 6. Hardware and licensing gates - -`is_available()` answers whether the local runtime can see the relevant hardware. It does not answer whether the caller is licensed to construct the decoder. The v1.0.0 tier table documents GPU-enabled paths under the Enterprise tier, while distance caps are enforced in the Rust core. - -The published v1.0.0 wheels are CPU-only: 15 wheels on PyPI (CPython 3.9 through 3.13; Windows x86_64, manylinux x86_64, macOS arm64) with no CUDA binary inside (verified: each wheel carries a single native module of about 4 MB). CUDA and OpenCL are build-time feature gates, not published wheels; OpenCL remains a documented source-build path. Whether the local runtime can actually use a GPU is answered at runtime by `cuda_is_available()`, which the CPU fallback and the `AutoDecoder` controller consult before selecting a path. - -The manual also records a known GPU-context limitation: the native CUDA path and CuPy can use different CUDA contexts, and an intermittent access violation was observed under load on one tested configuration. The documented workaround is to run those workloads in separate processes, or hide the device for a monolithic suite. - -## 7. How to validate a GPU batch path - -A minimal validation record should include: - -```text -code family and graphlike proof -checks, qubits, detectors, and edges -weighted or unweighted mode -batch shape and syndrome dtype -CPU reference class and GPU class -GPU model, driver, runtime, OS, and package versions -license tier and feature flags -seed and generated syndromes -H @ c == s result for every shot -CPU/GPU byte comparison result -raw output and SHA-256 hash -``` - -The reproduction workflow in the manual enables the CUDA feature, runs the focused CPU/GPU identity test, and treats a skipped hardware-gated test as no GPU evidence. - -## 8. What not to publish from a local run - -A local throughput number is not portable evidence. It depends on kernel version, compiler flags, GPU, driver, transfer path, batch size, warmup, and whether construction and memory movement were included. If a number is needed, publish the raw artifact with the full metadata, and report hot and cold paths separately. - -The v1.0.0 manual deliberately withdraws earlier latency, throughput, memory, and VRAM figures whose artifacts did not survive a core fingerprint change. A blog post should preserve that caution rather than resurrecting the number in a new chart. - -## Takeaway - -GPU decoding starts with ownership and determinism. Private per-shot state, deterministic Union-Find rules, and a CPU reference make bit identity testable. The claim then remains properly scoped: unweighted graphlike identity on tested configurations, weighted equivalence where tested, and no universal speed promise. That is a stronger engineering story than a headline rate without an artifact. - -## Reference - -Guillaume Lessard, *QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine*, v1.0.0, August 2026. DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046). diff --git a/blog/10BenchmarksArchitecture/index.html b/blog/10BenchmarksArchitecture/index.html deleted file mode 100644 index 66564d8d..00000000 --- a/blog/10BenchmarksArchitecture/index.html +++ /dev/null @@ -1,268 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Evidence-First QEC Architecture and Benchmarks · QECTOR Blog - - - - - - - - - - - - - -
Skip to main content
Back to All Articles
August 2026EvidenceBy Guillaume Lessard · 7 min read

Evidence-First QEC Architecture and Benchmarks

The v1.0.0 backend map, logical scoring, Wilson intervals, metadata, release gates, and claim boundaries.

Author: Guillaume Lessard / qector.store
-Source: QECTOR Decoder v3 Reference Manual v1.0.0
-Date: August 2026
-DOI: 10.5281/zenodo.21941046
-Tags: QEC benchmarking, reproducibility, Rust, PyO3, decoder architecture, evidence

-

Abstract

-

The final stage of a decoder project is not a benchmark chart. It is a claim that another engineer can inspect, reproduce, and scope. QECTOR Decoder v3 v1.0.0 organizes fifteen specialized backend families around one syndrome-faithfulness gate and documents how correctness, logical error rates, performance, memory, GPU identity, licensing, and deployment claims must be separated. This post maps the architecture and presents the benchmark metadata contract from the reference manual. It intentionally does not repeat withdrawn hardware figures.

-

1. One invariant, many backends

-

For a reachable syndrome s, every supported decoder returns a correction c satisfying

-Hc=s(mod2).Hc = s \pmod 2. -

If e is the sampled physical error, then c + e lies in ker(H). Logical success requires the stronger condition

-c+e∈im⁡(HT).c + e \in \operatorname{im}(H^T). -

That split is the organizing principle of the v1.0.0 architecture. A decoder can be syndrome-faithful but choose the wrong logical coset. A GPU result can be logically equivalent but not bit-identical to a CPU result. A fast local run can be correct but not evidence for a universal throughput claim.

-

2. Decoder families and domains

-

The manual's contract table can be summarized as follows:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FamilyDomainDocumented contract
Union-Find / Fast Union-FindGraphlikeFaithful cluster growth and peeling
BlossomGraphlikeExact weighted MWPM on audited small matching codes
Sparse BlossomGraphlikeFaithful, near-optimal region growth in tested scope
BP-OSDAny reachable GF(2) matrixFaithful LDPC/qLDPC residual solve
Lookup tableSmall codesExact for stored entries, with fallback
Hybrid cascadeGraphlike plus escalationFaithful acceptance predicate and fallback
Ambiguity clusteringqLDPCExact within small ambiguous components
Two-stage CSSCSS sectorsFaithful under faithful sector stages
Space-timeGraphlike lifted detector graphFaithful space-time correction
Streaming/windowedMulti-round workflowsWindowed simulation primitives, not hardware control
CUDA/OpenCL batchGraphlike batchesBit identity on tested configurations for the unweighted path
CUDA BP-OSD batchqLDPC batchesBatched path with single-shot CPU preference
Native auto routingAny eligible domainRoutes to a target backend and inherits its contract
-

The table deliberately contains claim boundaries. It is not a ranking.

-

3. Architecture layers

-

The frozen workspace has a Rust core, a Python layer, and a PyO3 boundary.

-

Rust core

-

The module map groups responsibilities into matching, Union-Find, BP-OSD, GPU, temporal, routing, learned, service, and utility areas. Internal module details are proprietary, so public documentation should describe their contracts and evidence anchors rather than inventing source-level implementation facts.

-

Python and PyO3

-

Arrays cross the FFI boundary as contiguous uint8 NumPy buffers. Repacking occurs only when an input is non-contiguous or has the wrong dtype. Decode calls release the Python GIL, allowing compiled work to run alongside other Python threads.

-

Interoperability is first-class. The package ships a PyMatching-compatible shim (from qector_decoder_v3.pymatching import Matching), Sinter entry points (qector_blossom, qector_belief, qector_unionfind, qector_bposd, qector_unionfind_unweighted), and a qiskit-qec plugin, so existing harnesses can swap in QECTOR backends without rewriting their scoring code.

-

Batch and memory model

-

Batch paths use Rayon data parallelism with worker-local scratch. The observable goal is bit determinism: output should not depend on worker count or prior calls. Hot paths reuse preallocated buffers and reset them in place. Python allocations, process RSS, native heap, and GPU memory are separate metrics and must never be merged into one number.

-

4. What a logical-error report must contain

-

The manual defines logical error rate in observable space: the predicted observable flips are compared with the sampled observable flips from the same circuit. A raw correction mismatch is not a logical error because stabilizer degeneracy can change the bit string without changing the logical state.

-

Every report should carry:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldRequired detail
Code familyRepetition, ring, surface, toric, heavy-hex, LDPC/qLDPC, or DEM-derived
SizeDistance, rounds, checks, qubits, detectors, and code parameters
NoisePhysical rate, channel/circuit source, code-capacity or circuit-level tag
DecoderClass, weights, belief mode, batch/GPU flags, and configuration
SamplingTrials, shots, warmup, and seed
MetricCorrectness, LER, latency, throughput, memory, identity, or scaling
EnvironmentOS, CPU, RAM, Python/Rust/package versions, GPU/runtime, commit
ArtifactRaw JSON/CSV path and SHA-256
-

The only published comparative LER figure is the v1.0.0 changelog's 120-test suite against PyMatching, reported with a stated 4.5x margin. The head-to-head numbers include repetition-code distance 3 at p=0.01, where QECTOR records 0.00392 against PyMatching's 0.00317. Any new comparison should hold the harness constant the same way.

-

5. Wilson intervals and comparability

-

For k logical errors in n shots, QECTOR reports a 95 percent Wilson interval rather than the simple Wald interval:

-p^+z2/(2n)±zp^(1−p^)/n+z2/(4n2)1+z2/n,\frac{\hat p + z^2/(2n) \pm z\sqrt{\hat p(1-\hat p)/n + z^2/(4n^2)}}{1+z^2/n}, -

with z = 1.959963985. The interval stays within [0,1] and behaves better for small counts and extreme rates.

-

Noise models must also be comparable. A code-capacity LER at a nominal p cannot be compared directly with a circuit-level LER at the same p. A competitive harness should hold the circuit, detector samples, DEM, observable scoring, and sampling protocol constant so the decoder is the only changed row.

-

6. Hot path and cold path

-

Decoder construction is the cold path: graph building, weight preprocessing, and allocation. Repeated decode() on an already-built decoder with syndromes in memory is the hot path. Reporting only hot-path latency is valid solely for a clearly labeled pre-built repeated-decode workload.

-

A latency report should include n, mean, median, standard deviation, minimum, maximum, p50, p90, p95, p99, and a 95 percent confidence interval on the mean. A single mean is not a complete public claim.

-

7. Evidence anchors

-

The manual maps claims to concrete evidence classes:

-
    -
  • syndrome faithfulness and cross-decoder tests;
  • -
  • property-based GF(2) and reachable-syndrome tests;
  • -
  • exhaustive small-code oracles for exact matching;
  • -
  • batch equivalence and GPU/CPU identity tests;
  • -
  • DEM parsing, collapse, weight, and observable tests;
  • -
  • LER noise-model parity tests;
  • -
  • qLDPC CSS and BP-OSD tests;
  • -
  • memory and native RSS tests;
  • -
  • public API and signature tests.
  • -
-

The frozen tree records an older test-count report as stale. No current pass/fail count should be copied from that historical table; the live suite and its artifacts are authoritative.

-

8. Release and deployment posture

-

The public delivery path is wheels only. No source distribution is published because the proprietary Rust core is not tracked as rebuildable source. The v1.0.0 release on PyPI (2026-08-06) ships 15 CPU-only wheels, CPython 3.9 through 3.13 across Windows x86_64, manylinux x86_64, and macOS arm64, requires Python 3.9 or later, and carries the PolyForm-Noncommercial-1.0.0 license. The CLI surface is qector decode, qector bench, and qector serve, plus qector-doctor and qector-bench-quick.

-

Release gates include Rust tests, Clippy with warnings denied, Python lint/format checks, the Python test suite, wheel import/decode smoke tests, and dependency audit policy.

-

The local CPU library is the preferred research path. CUDA/OpenCL are controlled local paths. REST, gRPC, MCP, and metrics surfaces are provisional and require authentication, authorization, TLS, rate limits, timeouts, audit logging, request limits, and resource quotas before a customer-facing deployment. The decoder makes no blocking network call during local decoding; license verification is offline.

-

9. A reproducible benchmark skeleton

-

The manual's reproduction path has this shape:

-
create a virtual environment
-install the wheel/build tooling and declared dependencies
-build/import the chosen feature set
-run the focused correctness tests
-run the workload with a fixed seed and explicit shots
-write raw JSON/CSV plus environment metadata
-hash the artifacts
-publish only the scoped result
-

The important output is not a pretty chart. It is the relationship between a sentence, a command, an artifact, and an evidence anchor.

-

10. What v1.0.0 does not claim

-

The reference manual deliberately excludes universal latency, throughput, memory, VRAM, and threshold numbers. Earlier benchmark artifacts were withdrawn when they did not survive a core fingerprint change. The safe alternative is to regenerate measurements on the target workload and publish the complete metadata.

-

That is not a weaker engineering position. It lets a hardware team reproduce a claim on its own system, lets a researcher distinguish mathematical scope from empirical scope, and prevents an old chart from becoming a misleading product promise.

-

Takeaway

-

QEC engineering becomes credible when correctness, logical scoring, performance, memory, identity, licensing, and deployment are treated as separate evidence classes. QECTOR's v1.0.0 architecture provides the common syndrome-faithfulness contract and the evidence map; the benchmark harness supplies the numbers for a declared workload. The DOI is the reference point, and the artifact is the proof.

-

Reference

-

Guillaume Lessard, QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine, v1.0.0, August 2026. DOI: 10.5281/zenodo.21941046.

- - - diff --git a/blog/10_benchmarks_architecture.md b/blog/10_benchmarks_architecture.md deleted file mode 100644 index 89932731..00000000 --- a/blog/10_benchmarks_architecture.md +++ /dev/null @@ -1,159 +0,0 @@ -# Evidence-First QEC Engineering: The v1.0.0 Architecture and Benchmark Contract - -Author: Guillaume Lessard / qector.store -Source: QECTOR Decoder v3 Reference Manual v1.0.0 -Date: August 2026 -DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046) -Tags: QEC benchmarking, reproducibility, Rust, PyO3, decoder architecture, evidence - -## Abstract - -The final stage of a decoder project is not a benchmark chart. It is a claim that another engineer can inspect, reproduce, and scope. QECTOR Decoder v3 v1.0.0 organizes fifteen specialized backend families around one syndrome-faithfulness gate and documents how correctness, logical error rates, performance, memory, GPU identity, licensing, and deployment claims must be separated. This post maps the architecture and presents the benchmark metadata contract from the reference manual. It intentionally does not repeat withdrawn hardware figures. - -## 1. One invariant, many backends - -For a reachable syndrome `s`, every supported decoder returns a correction `c` satisfying - -$$ -Hc = s \pmod 2. -$$ - -If `e` is the sampled physical error, then `c + e` lies in `ker(H)`. Logical success requires the stronger condition - -$$ -c + e \in \operatorname{im}(H^T). -$$ - -That split is the organizing principle of the v1.0.0 architecture. A decoder can be syndrome-faithful but choose the wrong logical coset. A GPU result can be logically equivalent but not bit-identical to a CPU result. A fast local run can be correct but not evidence for a universal throughput claim. - -## 2. Decoder families and domains - -The manual's contract table can be summarized as follows: - -| Family | Domain | Documented contract | -|---|---|---| -| Union-Find / Fast Union-Find | Graphlike | Faithful cluster growth and peeling | -| Blossom | Graphlike | Exact weighted MWPM on audited small matching codes | -| Sparse Blossom | Graphlike | Faithful, near-optimal region growth in tested scope | -| BP-OSD | Any reachable GF(2) matrix | Faithful LDPC/qLDPC residual solve | -| Lookup table | Small codes | Exact for stored entries, with fallback | -| Hybrid cascade | Graphlike plus escalation | Faithful acceptance predicate and fallback | -| Ambiguity clustering | qLDPC | Exact within small ambiguous components | -| Two-stage CSS | CSS sectors | Faithful under faithful sector stages | -| Space-time | Graphlike lifted detector graph | Faithful space-time correction | -| Streaming/windowed | Multi-round workflows | Windowed simulation primitives, not hardware control | -| CUDA/OpenCL batch | Graphlike batches | Bit identity on tested configurations for the unweighted path | -| CUDA BP-OSD batch | qLDPC batches | Batched path with single-shot CPU preference | -| Native auto routing | Any eligible domain | Routes to a target backend and inherits its contract | - -The table deliberately contains claim boundaries. It is not a ranking. - -## 3. Architecture layers - -The frozen workspace has a Rust core, a Python layer, and a PyO3 boundary. - -### Rust core - -The module map groups responsibilities into matching, Union-Find, BP-OSD, GPU, temporal, routing, learned, service, and utility areas. Internal module details are proprietary, so public documentation should describe their contracts and evidence anchors rather than inventing source-level implementation facts. - -### Python and PyO3 - -Arrays cross the FFI boundary as contiguous `uint8` NumPy buffers. Repacking occurs only when an input is non-contiguous or has the wrong dtype. Decode calls release the Python GIL, allowing compiled work to run alongside other Python threads. - -Interoperability is first-class. The package ships a PyMatching-compatible shim (`from qector_decoder_v3.pymatching import Matching`), Sinter entry points (`qector_blossom`, `qector_belief`, `qector_unionfind`, `qector_bposd`, `qector_unionfind_unweighted`), and a `qiskit-qec` plugin, so existing harnesses can swap in QECTOR backends without rewriting their scoring code. - -### Batch and memory model - -Batch paths use Rayon data parallelism with worker-local scratch. The observable goal is bit determinism: output should not depend on worker count or prior calls. Hot paths reuse preallocated buffers and reset them in place. Python allocations, process RSS, native heap, and GPU memory are separate metrics and must never be merged into one number. - -## 4. What a logical-error report must contain - -The manual defines logical error rate in observable space: the predicted observable flips are compared with the sampled observable flips from the same circuit. A raw correction mismatch is not a logical error because stabilizer degeneracy can change the bit string without changing the logical state. - -Every report should carry: - -| Field | Required detail | -|---|---| -| Code family | Repetition, ring, surface, toric, heavy-hex, LDPC/qLDPC, or DEM-derived | -| Size | Distance, rounds, checks, qubits, detectors, and code parameters | -| Noise | Physical rate, channel/circuit source, code-capacity or circuit-level tag | -| Decoder | Class, weights, belief mode, batch/GPU flags, and configuration | -| Sampling | Trials, shots, warmup, and seed | -| Metric | Correctness, LER, latency, throughput, memory, identity, or scaling | -| Environment | OS, CPU, RAM, Python/Rust/package versions, GPU/runtime, commit | -| Artifact | Raw JSON/CSV path and SHA-256 | - -The only published comparative LER figure is the v1.0.0 changelog's 120-test suite against PyMatching, reported with a stated 4.5x margin. The head-to-head numbers include repetition-code distance 3 at p=0.01, where QECTOR records 0.00392 against PyMatching's 0.00317. Any new comparison should hold the harness constant the same way. - -## 5. Wilson intervals and comparability - -For `k` logical errors in `n` shots, QECTOR reports a 95 percent Wilson interval rather than the simple Wald interval: - -$$ -\frac{\hat p + z^2/(2n) \pm z\sqrt{\hat p(1-\hat p)/n + z^2/(4n^2)}}{1+z^2/n}, -$$ - -with `z = 1.959963985`. The interval stays within `[0,1]` and behaves better for small counts and extreme rates. - -Noise models must also be comparable. A code-capacity LER at a nominal `p` cannot be compared directly with a circuit-level LER at the same `p`. A competitive harness should hold the circuit, detector samples, DEM, observable scoring, and sampling protocol constant so the decoder is the only changed row. - -## 6. Hot path and cold path - -Decoder construction is the cold path: graph building, weight preprocessing, and allocation. Repeated `decode()` on an already-built decoder with syndromes in memory is the hot path. Reporting only hot-path latency is valid solely for a clearly labeled pre-built repeated-decode workload. - -A latency report should include `n`, mean, median, standard deviation, minimum, maximum, p50, p90, p95, p99, and a 95 percent confidence interval on the mean. A single mean is not a complete public claim. - -## 7. Evidence anchors - -The manual maps claims to concrete evidence classes: - -- syndrome faithfulness and cross-decoder tests; -- property-based GF(2) and reachable-syndrome tests; -- exhaustive small-code oracles for exact matching; -- batch equivalence and GPU/CPU identity tests; -- DEM parsing, collapse, weight, and observable tests; -- LER noise-model parity tests; -- qLDPC CSS and BP-OSD tests; -- memory and native RSS tests; -- public API and signature tests. - -The frozen tree records an older test-count report as stale. No current pass/fail count should be copied from that historical table; the live suite and its artifacts are authoritative. - -## 8. Release and deployment posture - -The public delivery path is wheels only. No source distribution is published because the proprietary Rust core is not tracked as rebuildable source. The v1.0.0 release on PyPI (2026-08-06) ships 15 CPU-only wheels, CPython 3.9 through 3.13 across Windows x86_64, manylinux x86_64, and macOS arm64, requires Python 3.9 or later, and carries the PolyForm-Noncommercial-1.0.0 license. The CLI surface is `qector decode`, `qector bench`, and `qector serve`, plus `qector-doctor` and `qector-bench-quick`. - -Release gates include Rust tests, Clippy with warnings denied, Python lint/format checks, the Python test suite, wheel import/decode smoke tests, and dependency audit policy. - -The local CPU library is the preferred research path. CUDA/OpenCL are controlled local paths. REST, gRPC, MCP, and metrics surfaces are provisional and require authentication, authorization, TLS, rate limits, timeouts, audit logging, request limits, and resource quotas before a customer-facing deployment. The decoder makes no blocking network call during local decoding; license verification is offline. - -## 9. A reproducible benchmark skeleton - -The manual's reproduction path has this shape: - -```text -create a virtual environment -install the wheel/build tooling and declared dependencies -build/import the chosen feature set -run the focused correctness tests -run the workload with a fixed seed and explicit shots -write raw JSON/CSV plus environment metadata -hash the artifacts -publish only the scoped result -``` - -The important output is not a pretty chart. It is the relationship between a sentence, a command, an artifact, and an evidence anchor. - -## 10. What v1.0.0 does not claim - -The reference manual deliberately excludes universal latency, throughput, memory, VRAM, and threshold numbers. Earlier benchmark artifacts were withdrawn when they did not survive a core fingerprint change. The safe alternative is to regenerate measurements on the target workload and publish the complete metadata. - -That is not a weaker engineering position. It lets a hardware team reproduce a claim on its own system, lets a researcher distinguish mathematical scope from empirical scope, and prevents an old chart from becoming a misleading product promise. - -## Takeaway - -QEC engineering becomes credible when correctness, logical scoring, performance, memory, identity, licensing, and deployment are treated as separate evidence classes. QECTOR's v1.0.0 architecture provides the common syndrome-faithfulness contract and the evidence map; the benchmark harness supplies the numbers for a declared workload. The DOI is the reference point, and the artifact is the proof. - -## Reference - -Guillaume Lessard, *QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine*, v1.0.0, August 2026. DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046). diff --git a/blog/11SteaneWorkedDecode/index.html b/blog/11SteaneWorkedDecode/index.html deleted file mode 100644 index 57ac4bea..00000000 --- a/blog/11SteaneWorkedDecode/index.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A Hand-Worked Steane Decode · QECTOR Blog - - - - - - - - - - - - - -
Skip to main content
Back to All Articles
August 2026FoundationsBy Guillaume Lessard · 4 min read

A Hand-Worked Steane Decode

Compute a Steane syndrome by hand and see why stabilizer cosets matter more than raw correction equality.

Author: Guillaume Lessard
-Series: QECTOR Decoder v3 companion notes, Post 11
-Source: QECTOR Decoder v3 Reference Manual v1.0.0
-Date: August 2026
-DOI: 10.5281/zenodo.21941046 -Tags: Steane code, CSS codes, stabilizer codes, worked example, QEC education

-

Abstract

-

The Steane [[7,1,3]] code is small enough to verify by hand and rich enough to expose the gap between a syndrome-valid correction and a logically correct one. This worked example writes out one sector's parity-check matrix, computes a syndrome for a single-qubit error, exhibits stabilizer coset freedom with explicit numbers, and maps every step onto QECTOR's decoder contract.

-

1. The check matrix

-

One sector of the Steane code uses three checks over seven qubits, taken from the reference manual:

-
S0 = {3, 4, 5, 6}
-S1 = {1, 2, 5, 6}
-S2 = {0, 2, 4, 6}
-

With columns ordered q0 through q6, the sector matrix is

-H=[000111101100111010101].H = -\begin{bmatrix} -0&0&0&1&1&1&1\\ -0&1&1&0&0&1&1\\ -1&0&1&0&1&0&1 -\end{bmatrix}. -

Each row lists which qubits participate in one check. Read row 0: the check fires when the parity of qubits 3, 4, 5, and 6 is odd. All arithmetic below is over F2.

-

The Steane construction reuses this classical structure in both the X and Z sectors. Each sector has rank 3, so the CSS dimension count is

-k=7−rank⁡(HX)−rank⁡(HZ)=7−3−3=1.k = 7 - \operatorname{rank}(H_X) - \operatorname{rank}(H_Z) = 7-3-3=1. -

One logical qubit, as expected.

-

2. Create a syndrome by hand

-

Put a single error on qubit 5:

-
e = [0, 0, 0, 0, 0, 1, 0]
-

Multiplying by H selects column 5:

-s=He=[1,1,0].s = He = [1, 1, 0]. -

Check it against the matrix: column 5 reads [1, 1, 0] from the three rows. Checks S0 and S1 fire because both contain qubit 5; check S2 does not.

-

That syndrome is the complete measured information a sector decoder receives. It does not identify the physical error, because stabilizer codes are degenerate: several distinct errors can produce the same syndrome.

-

3. Verify the obvious correction

-

The true error is itself a valid correction in this case:

-
c = [0, 0, 0, 0, 0, 1, 0]
-H @ c = [1, 1, 0]  (mod 2)
-

The residual is exactly zero:

-c+e=0.c + e = 0. -

Zero lies in the stabilizer row space, so the logical state is untouched. This case is deliberately trivial: it establishes the baseline before degeneracy complicates the picture.

-

4. Add a stabilizer: same syndrome, different bits

-

Take g to be row 0 of H:

-
g = [0, 0, 0, 1, 1, 1, 1]
-c' = c + g = [0, 0, 0, 1, 1, 0, 1]
-

Stabilizers have zero syndrome by construction, so Hg^T = 0 and

-Hc′=Hc+HgT=s+0=s.Hc' = Hc + Hg^T = s + 0 = s. -

Verify directly: row 0 of H dotted with c' gives 1+1+0+1 = 3 = 1 (mod 2); row 1 gives 0+0+0+1 = 1; row 2 gives 0+0+1+1 = 2 = 0 (mod 2). So Hc' = [1, 1, 0] = s, confirmed.

-

Yet c' differs from c in four positions. A test comparing bit strings would report failure, even though

-c′+e=g∈im⁡(HT)c' + e = g \in \operatorname{im}(H^T) -

places the residual squarely in the stabilizer span. The logical action is identical.

-

This is the smallest useful demonstration of degeneracy. The decoder's job is to choose the right logical coset, not to reproduce the microscopic error.

-

5. Kernel and row-space dimensions

-

Rank-nullity for one sector gives

-dim⁡ker⁡(H)=7−3=4,\dim\ker(H) = 7 - 3 = 4, -

while the row space has dimension 3. The quotient therefore has dimension 1:

-dim⁡(ker⁡(H)/im⁡(HT))=1.\dim\left(\ker(H)/\operatorname{im}(H^T)\right) = 1. -

Combining the X and Z sectors yields four logical cosets, conventionally labelled I, Xbar, Zbar, and Ybar. A syndrome-faithful correction lands in one of them; only the logical observable reveals whether that landing was harmless.

-

6. What a decoder test should assert

-

For a known error e and a returned correction c, assert two things:

-
1. H @ c == H @ e            # syndrome faithfulness
-2. c + e in stabilizer span  # logical success
-

The first applies to every backend. The second needs the code's stabilizer and logical-operator representation. A test that checks only c == e rejects valid degenerate corrections and is wrong by design.

-

7. Relation to the public API

-

The manual's direct-decode example uses a repetition code, but the contract is identical for a Steane sector. The v1.0.0 API entry point is

-
from qector_decoder_v3 import BlossomDecoder
-
-decoder = BlossomDecoder(checks, n_qubits=7)
-correction = decoder.decode(syndrome)
-

Pass a check structure, a reachable uint8 syndrome, and receive a correction vector of the declared qubit length. Two responsibilities stay with the caller: validating the matrix convention, and scoring the logical coset when the true error or observable data is available.

-

Takeaway

-

The Steane code makes the full QEC argument visible in seven columns:

-
physical error -> syndrome -> faithful correction -> kernel residual -> logical coset
-

Matrix multiplication proves the decoder returned to the code space. The row-space test decides whether it returned to the correct logical state. Those are different tests, and both matter.

-

Reference

-

Guillaume Lessard, QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine, v1.0.0, August 2026. DOI: 10.5281/zenodo.21941046.

- - - diff --git a/blog/11_steane_worked_decode.md b/blog/11_steane_worked_decode.md deleted file mode 100644 index 6965ec11..00000000 --- a/blog/11_steane_worked_decode.md +++ /dev/null @@ -1,159 +0,0 @@ -# A Hand-Worked Steane Decode: Syndrome, Stabilizers, and Logical Cosets - -Author: Guillaume Lessard -Series: QECTOR Decoder v3 companion notes, Post 11 -Source: QECTOR Decoder v3 Reference Manual v1.0.0 -Date: August 2026 -DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046) -Tags: Steane code, CSS codes, stabilizer codes, worked example, QEC education - -## Abstract - -The Steane `[[7,1,3]]` code is small enough to verify by hand and rich enough to expose the gap between a syndrome-valid correction and a logically correct one. This worked example writes out one sector's parity-check matrix, computes a syndrome for a single-qubit error, exhibits stabilizer coset freedom with explicit numbers, and maps every step onto QECTOR's decoder contract. - -## 1. The check matrix - -One sector of the Steane code uses three checks over seven qubits, taken from the reference manual: - -```text -S0 = {3, 4, 5, 6} -S1 = {1, 2, 5, 6} -S2 = {0, 2, 4, 6} -``` - -With columns ordered `q0` through `q6`, the sector matrix is - -$$ -H = -\begin{bmatrix} -0&0&0&1&1&1&1\\ -0&1&1&0&0&1&1\\ -1&0&1&0&1&0&1 -\end{bmatrix}. -$$ - -Each row lists which qubits participate in one check. Read row 0: the check fires when the parity of qubits 3, 4, 5, and 6 is odd. All arithmetic below is over `F2`. - -The Steane construction reuses this classical structure in both the X and Z sectors. Each sector has rank 3, so the CSS dimension count is - -$$ -k = 7 - \operatorname{rank}(H_X) - \operatorname{rank}(H_Z) = 7-3-3=1. -$$ - -One logical qubit, as expected. - -## 2. Create a syndrome by hand - -Put a single error on qubit 5: - -```text -e = [0, 0, 0, 0, 0, 1, 0] -``` - -Multiplying by `H` selects column 5: - -$$ -s = He = [1, 1, 0]. -$$ - -Check it against the matrix: column 5 reads `[1, 1, 0]` from the three rows. Checks S0 and S1 fire because both contain qubit 5; check S2 does not. - -That syndrome is the complete measured information a sector decoder receives. It does not identify the physical error, because stabilizer codes are degenerate: several distinct errors can produce the same syndrome. - -## 3. Verify the obvious correction - -The true error is itself a valid correction in this case: - -```text -c = [0, 0, 0, 0, 0, 1, 0] -H @ c = [1, 1, 0] (mod 2) -``` - -The residual is exactly zero: - -$$ -c + e = 0. -$$ - -Zero lies in the stabilizer row space, so the logical state is untouched. This case is deliberately trivial: it establishes the baseline before degeneracy complicates the picture. - -## 4. Add a stabilizer: same syndrome, different bits - -Take `g` to be row 0 of `H`: - -```text -g = [0, 0, 0, 1, 1, 1, 1] -c' = c + g = [0, 0, 0, 1, 1, 0, 1] -``` - -Stabilizers have zero syndrome by construction, so `Hg^T = 0` and - -$$ -Hc' = Hc + Hg^T = s + 0 = s. -$$ - -Verify directly: row 0 of `H` dotted with `c'` gives `1+1+0+1 = 3 = 1 (mod 2)`; row 1 gives `0+0+0+1 = 1`; row 2 gives `0+0+1+1 = 2 = 0 (mod 2)`. So `Hc' = [1, 1, 0] = s`, confirmed. - -Yet `c'` differs from `c` in four positions. A test comparing bit strings would report failure, even though - -$$ -c' + e = g \in \operatorname{im}(H^T) -$$ - -places the residual squarely in the stabilizer span. The logical action is identical. - -This is the smallest useful demonstration of degeneracy. The decoder's job is to choose the right logical coset, not to reproduce the microscopic error. - -## 5. Kernel and row-space dimensions - -Rank-nullity for one sector gives - -$$ -\dim\ker(H) = 7 - 3 = 4, -$$ - -while the row space has dimension 3. The quotient therefore has dimension 1: - -$$ -\dim\left(\ker(H)/\operatorname{im}(H^T)\right) = 1. -$$ - -Combining the X and Z sectors yields four logical cosets, conventionally labelled `I`, `Xbar`, `Zbar`, and `Ybar`. A syndrome-faithful correction lands in one of them; only the logical observable reveals whether that landing was harmless. - -## 6. What a decoder test should assert - -For a known error `e` and a returned correction `c`, assert two things: - -```text -1. H @ c == H @ e # syndrome faithfulness -2. c + e in stabilizer span # logical success -``` - -The first applies to every backend. The second needs the code's stabilizer and logical-operator representation. A test that checks only `c == e` rejects valid degenerate corrections and is wrong by design. - -## 7. Relation to the public API - -The manual's direct-decode example uses a repetition code, but the contract is identical for a Steane sector. The v1.0.0 API entry point is - -```python -from qector_decoder_v3 import BlossomDecoder - -decoder = BlossomDecoder(checks, n_qubits=7) -correction = decoder.decode(syndrome) -``` - -Pass a check structure, a reachable `uint8` syndrome, and receive a correction vector of the declared qubit length. Two responsibilities stay with the caller: validating the matrix convention, and scoring the logical coset when the true error or observable data is available. - -## Takeaway - -The Steane code makes the full QEC argument visible in seven columns: - -```text -physical error -> syndrome -> faithful correction -> kernel residual -> logical coset -``` - -Matrix multiplication proves the decoder returned to the code space. The row-space test decides whether it returned to the correct logical state. Those are different tests, and both matter. - -## Reference - -Guillaume Lessard, *QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine*, v1.0.0, August 2026. DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046). diff --git a/blog/12RotatedSurfaceD3/index.html b/blog/12RotatedSurfaceD3/index.html deleted file mode 100644 index a3740f7d..00000000 --- a/blog/12RotatedSurfaceD3/index.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Rotated Surface Code d=3 · QECTOR Blog - - - - - - - - - - - - - -
Skip to main content
Back to All Articles
August 2026FoundationsBy Guillaume Lessard · 4 min read

Rotated Surface Code d=3

Nine data qubits, boundaries, graphlike eligibility, logical strings, and a complete structural audit.

Author: Guillaume Lessard
-Series: QECTOR Decoder v3 companion notes, Post 12
-Source: QECTOR Decoder v3 Reference Manual v1.0.0
-Date: August 2026
-DOI: 10.5281/zenodo.21941046 -Tags: rotated surface code, graphlike codes, detector graphs, boundaries, QEC

-

Abstract

-

Distance-three surface codes are small enough for a complete structural audit and large enough to show boundaries, logical strings, and the graphlike condition. The QECTOR reference manual describes one sector of the rotated surface code at d=3: nine data qubits, four checks, one logical qubit per combined CSS code. This post explains what that description means, why matching applies, and how to avoid confusing a graphlike rotated construction with an explicitly non-graphlike legacy generator.

-

1. The geometry

-

Arrange nine data qubits on a 3 x 3 grid. In one sector, the manual describes four checks:

-
    -
  • two weight-4 plaquette checks on the even sublattice;
  • -
  • one weight-2 check on the top boundary;
  • -
  • one weight-2 check on the bottom boundary.
  • -
-

The X and Z sectors act on the same nine data qubits, giving eight checks in the combined CSS description.

-

The exact index convention belongs to the code constructor. Do not infer an index ordering from a picture; the check_to_qubits structure or the code helper is the authoritative object passed to a decoder.

-

2. Why the sector is graphlike

-

Every qubit participates in at most two checks per sector. In the detector representation, a qubit is therefore an edge joining two detector nodes, or an edge joining one detector to a virtual boundary. That is the structural condition required by the matching and Union-Find decoder families.

-

This condition is independent of the word "surface" in a class name. A legacy toric-style weight-4 generator can be explicitly non-graphlike, while codes.rotated_surface_code is the documented graphlike construction for this use. The decoder family must match the actual matrix, not the class name.

-

3. Dimension count

-

For one sector the manual gives n=9 data qubits and m=4 checks. The kernel has dimension 5 and the stabilizer row space has dimension 4:

-dim⁡ker⁡(H)=5,dim⁡im⁡(HT)=4.\dim\ker(H)=5,\qquad \dim\operatorname{im}(H^T)=4. -

The quotient has dimension 1: the single logical qubit of the code. A representative logical string runs horizontally across the top row in the manual's convention.

-

The quotient is why a zero-syndrome cycle can still be a logical operator. A decoder can satisfy every check and still land in a nontrivial homology class.

-

4. Boundaries are virtual nodes

-

On an open surface patch, a defect can be paired with a boundary instead of another defect. The boundary is represented as a virtual node that contributes no syndrome bit. In a path proof, a boundary path has one physical endpoint and one invisible virtual endpoint, so its detector boundary is a single defect.

-

This convention affects four things:

-
which syndromes are reachable
-which paths are legal
-how matching costs are computed
-how Union-Find decides an odd cluster is satisfied
-

It must be held constant across code generation, decoder construction, and logical-observable scoring.

-

5. One sector, one error chain

-

Suppose a single data error flips two checks. In the detector graph it creates two defects. The decoder connects them with a path whose boundary is exactly those two nodes. If the error touches a boundary, the syndrome can contain one defect, and the decoder connects it to the corresponding virtual boundary node.

-

For any returned graph path c, the core check is

-Hc=s(mod2).Hc=s \pmod 2. -

The matching objective or the Union-Find growth rule chooses the path. The boundary equation verifies it.

-

6. What distance three demonstrates

-

The small code is useful for more than a tutorial. Everything can be enumerated:

-
    -
  • every check and qubit listed explicitly;
  • -
  • reachable syndromes generated exhaustively;
  • -
  • lookup tables checked entry by entry;
  • -
  • Blossom compared against a brute-force oracle;
  • -
  • Union-Find peeling verified on every reachable input;
  • -
  • logical strings and stabilizer products listed explicitly.
  • -
-

Exactness claims should be anchored on these small audited workloads before anyone extrapolates to larger distances.

-

7. API caution

-

The v1.0.0 stable API lists generate_surface_code_checks(d) as a legacy toric-style weight-4 generator and explicitly warns that it is not graphlike. For a graphlike rotated surface code, use the documented codes.rotated_surface_code path.

-

This is a small naming detail with a large correctness consequence: a matching decoder is only valid on a genuinely graphlike matrix.

-

8. A structural audit checklist

-

Before routing a d=3 surface instance to matching or Union-Find, confirm:

-
number of data qubits: 9
-checks per sector: 4
-combined CSS checks: 8
-maximum qubit degree per sector: 2
-boundary convention: explicit and consistent
-logical observables: defined for scoring
-

Then generate a reachable syndrome from an error vector and verify H @ correction == syndrome modulo two. For logical tests, compare observables or the stabilizer quotient, not only the correction vector.

-

Takeaway

-

The rotated d=3 patch is a complete miniature of graphlike QEC: local checks become detector nodes, data qubits become edges, boundaries become virtual sinks, and logical strings live in the kernel outside the stabilizer span. Audit this structure first; only then choose the decoder.

-

Reference

-

Guillaume Lessard, QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine, v1.0.0, August 2026. DOI: 10.5281/zenodo.21941046.

- - - diff --git a/blog/12_rotated_surface_d3.md b/blog/12_rotated_surface_d3.md deleted file mode 100644 index 5792e91e..00000000 --- a/blog/12_rotated_surface_d3.md +++ /dev/null @@ -1,111 +0,0 @@ -# Rotated Surface Code d=3: The Smallest Useful Detector Graph - -Author: Guillaume Lessard -Series: QECTOR Decoder v3 companion notes, Post 12 -Source: QECTOR Decoder v3 Reference Manual v1.0.0 -Date: August 2026 -DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046) -Tags: rotated surface code, graphlike codes, detector graphs, boundaries, QEC - -## Abstract - -Distance-three surface codes are small enough for a complete structural audit and large enough to show boundaries, logical strings, and the graphlike condition. The QECTOR reference manual describes one sector of the rotated surface code at `d=3`: nine data qubits, four checks, one logical qubit per combined CSS code. This post explains what that description means, why matching applies, and how to avoid confusing a graphlike rotated construction with an explicitly non-graphlike legacy generator. - -## 1. The geometry - -Arrange nine data qubits on a `3 x 3` grid. In one sector, the manual describes four checks: - -- two weight-4 plaquette checks on the even sublattice; -- one weight-2 check on the top boundary; -- one weight-2 check on the bottom boundary. - -The X and Z sectors act on the same nine data qubits, giving eight checks in the combined CSS description. - -The exact index convention belongs to the code constructor. Do not infer an index ordering from a picture; the `check_to_qubits` structure or the code helper is the authoritative object passed to a decoder. - -## 2. Why the sector is graphlike - -Every qubit participates in at most two checks per sector. In the detector representation, a qubit is therefore an edge joining two detector nodes, or an edge joining one detector to a virtual boundary. That is the structural condition required by the matching and Union-Find decoder families. - -This condition is independent of the word "surface" in a class name. A legacy toric-style weight-4 generator can be explicitly non-graphlike, while `codes.rotated_surface_code` is the documented graphlike construction for this use. The decoder family must match the actual matrix, not the class name. - -## 3. Dimension count - -For one sector the manual gives `n=9` data qubits and `m=4` checks. The kernel has dimension 5 and the stabilizer row space has dimension 4: - -$$ -\dim\ker(H)=5,\qquad \dim\operatorname{im}(H^T)=4. -$$ - -The quotient has dimension 1: the single logical qubit of the code. A representative logical string runs horizontally across the top row in the manual's convention. - -The quotient is why a zero-syndrome cycle can still be a logical operator. A decoder can satisfy every check and still land in a nontrivial homology class. - -## 4. Boundaries are virtual nodes - -On an open surface patch, a defect can be paired with a boundary instead of another defect. The boundary is represented as a virtual node that contributes no syndrome bit. In a path proof, a boundary path has one physical endpoint and one invisible virtual endpoint, so its detector boundary is a single defect. - -This convention affects four things: - -```text -which syndromes are reachable -which paths are legal -how matching costs are computed -how Union-Find decides an odd cluster is satisfied -``` - -It must be held constant across code generation, decoder construction, and logical-observable scoring. - -## 5. One sector, one error chain - -Suppose a single data error flips two checks. In the detector graph it creates two defects. The decoder connects them with a path whose boundary is exactly those two nodes. If the error touches a boundary, the syndrome can contain one defect, and the decoder connects it to the corresponding virtual boundary node. - -For any returned graph path `c`, the core check is - -$$ -Hc=s \pmod 2. -$$ - -The matching objective or the Union-Find growth rule chooses the path. The boundary equation verifies it. - -## 6. What distance three demonstrates - -The small code is useful for more than a tutorial. Everything can be enumerated: - -- every check and qubit listed explicitly; -- reachable syndromes generated exhaustively; -- lookup tables checked entry by entry; -- Blossom compared against a brute-force oracle; -- Union-Find peeling verified on every reachable input; -- logical strings and stabilizer products listed explicitly. - -Exactness claims should be anchored on these small audited workloads before anyone extrapolates to larger distances. - -## 7. API caution - -The v1.0.0 stable API lists `generate_surface_code_checks(d)` as a legacy toric-style weight-4 generator and explicitly warns that it is not graphlike. For a graphlike rotated surface code, use the documented `codes.rotated_surface_code` path. - -This is a small naming detail with a large correctness consequence: a matching decoder is only valid on a genuinely graphlike matrix. - -## 8. A structural audit checklist - -Before routing a `d=3` surface instance to matching or Union-Find, confirm: - -```text -number of data qubits: 9 -checks per sector: 4 -combined CSS checks: 8 -maximum qubit degree per sector: 2 -boundary convention: explicit and consistent -logical observables: defined for scoring -``` - -Then generate a reachable syndrome from an error vector and verify `H @ correction == syndrome` modulo two. For logical tests, compare observables or the stabilizer quotient, not only the correction vector. - -## Takeaway - -The rotated `d=3` patch is a complete miniature of graphlike QEC: local checks become detector nodes, data qubits become edges, boundaries become virtual sinks, and logical strings live in the kernel outside the stabilizer span. Audit this structure first; only then choose the decoder. - -## Reference - -Guillaume Lessard, *QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine*, v1.0.0, August 2026. DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046). diff --git a/blog/13DemPipeline/index.html b/blog/13DemPipeline/index.html deleted file mode 100644 index 8db5c26d..00000000 --- a/blog/13DemPipeline/index.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Detector Error Models from Faults to Graphs · QECTOR Blog - - - - - - - - - - - - - -
Skip to main content
Back to All Articles
August 2026Noise ModelsBy Guillaume Lessard · 4 min read

Detector Error Models from Faults to Graphs

Parse DEMs, classify hyperedges, collapse parallel mechanisms, set weights, and preserve observables.

Author: Guillaume Lessard
-Series: QECTOR Decoder v3 companion notes, Post 13
-Source: QECTOR Decoder v3 Reference Manual v1.0.0
-Date: August 2026
-DOI: 10.5281/zenodo.21941046 -Tags: detector error model, Stim, graph collapse, observables, QEC tooling

-

Abstract

-

A decoder cannot choose sensible paths from a circuit without a machine-readable description of that circuit's fault mechanisms. A detector error model (DEM) provides the description: rows are detectors, columns are mechanisms, and each mechanism carries a prior probability and an observable effect. This post follows QECTOR's DEM pipeline from parsing and graphlike classification through parallel-edge collapse, likelihood weights, prior recalibration, and decoder construction.

-

1. The DEM as a matrix

-

Represent a DEM by a binary matrix H_DEM:

-
    -
  • one row per detector;
  • -
  • one column per fault mechanism;
  • -
  • H[d,m] = 1 when mechanism m flips detector d.
  • -
-

The syndrome is a vector of fired detectors. A correction is a selection of mechanism columns whose XOR reproduces that vector.

-

The parser described by the manual handles error, detector, logical_observable, shift_detectors, and repeat blocks. It can parse a Stim DEM object or DEM text without requiring Stim to be installed at parse time.

-

2. Graphlike classification

-

The column weight is the structural test:

-
weight <= 2  -> graph edge or boundary edge
-weight > 2   -> hyperedge; matching is not valid
-

This classification must happen before constructing a matching decoder. Decomposing a hyperedge into pairwise edges silently changes the fault model and can change the logical result. QECTOR routes non-graphlike models to BP-OSD.

-

3. Likelihood weights

-

Each mechanism with probability p receives

-w=log⁡(1−pp).w = \log\left(\frac{1-p}{p}\right). -

For a graphlike model, a shortest path under these weights is the most likely chain under the independent-mechanism model the DEM encodes. A matching decoder then optimizes over pairings of detector defects.

-

Weights are not optional decoration. If one mechanism has probability 1e-4 and another has probability 1e-2, their weights are approximately 9.21 and 4.60. Treating them as equal erases information the circuit model already supplied.

-

4. Collapsing parallel mechanisms

-

Circuit decomposition can create multiple independent mechanisms connecting the same detector pair. QECTOR collapses them for graphlike decoding with the independent-XOR rule:

-p=p1(1−p2)+p2(1−p1).p = p_1(1-p_2) + p_2(1-p_1). -

For p1=0.01 and p2=0.02:

-p=0.01(0.98)+0.02(0.99)=0.0296.p = 0.01(0.98)+0.02(0.99)=0.0296. -

The collapsed edge receives log((1-p)/p). The manual also documents which observable set survives: the set belonging to the most likely member of the parallel group. The rule is covered by dedicated DEM-collapse fixtures.

-

5. Observables are not detector rows

-

Detectors tell the decoder which parity constraints fired. Logical observables tell the scoring harness whether the predicted logical outcome differs from the sampled outcome. Conflating them is a common source of wrong LER numbers.

-

The DEM therefore carries both:

-
detector incidence: used to build H and decode
-observable incidence: used to score logical outcomes
-

This separation is the practical reason QECTOR rejects correction != error as a logical-error metric.

-

6. Prior recalibration

-

If observed detector events are available, the manual describes simple prior estimators:

-
    -
  • -

    for a weight-1 mechanism, use the detector firing rate;

    -
  • -
  • -

    for a weight-2 mechanism, estimate the correlated XOR probability P_xor = 2p(1-p) and invert

    -p=1−1−2Pxor2;p = \frac{1-\sqrt{1-2P_{xor}}}{2}; -
  • -
  • -

    for a hyperedge, use the maximum firing rate among its detectors as the documented conservative estimate.

    -
  • -
-

Recalibration changes the weights and therefore the selected representative. It does not remove the need to validate Hc=s, nor to score logical observables under a declared experiment.

-

7. A safe construction workflow

-
from qector_decoder_v3 import dem
-
-model = dem.from_stim(
-    circuit.detector_error_model(decompose_errors=True)
-)
-
-if model.is_graphlike:
-    model = model.collapse_to_graph()
-    decoder = model.make_decoder("blossom")
-else:
-    decoder = model.make_decoder("bposd")
-

The method names (from_stim, is_graphlike, collapse_to_graph, make_decoder) are confirmed in the v1.0.0 API; check the installed package for the full option set. The structural guard is the important part: never force a matching decoder onto a hypergraph model.

-

8. DEM audit fields

-

For a reproducible DEM-derived result, record:

-
source circuit or DEM text
-Stim version, if used
-decompose_errors setting
-raw mechanism count
-graphlike status
-collapsed mechanism count
-probability and weight convention
-observable mapping
-code distance and rounds
-decoder class and seed
-raw results and SHA-256
-

A DEM object without its construction settings is not enough to reproduce a circuit-level comparison.

-

Takeaway

-

The DEM is the bridge from a noisy circuit to a decoding problem. Parse mechanisms into columns, classify graphlike structure before choosing a solver, combine parallel probabilities correctly, keep observables for logical scoring, and record every transformation. The output is only as trustworthy as that pipeline.

-

Reference

-

Guillaume Lessard, QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine, v1.0.0, August 2026. DOI: 10.5281/zenodo.21941046.

- - - diff --git a/blog/13_dem_pipeline.md b/blog/13_dem_pipeline.md deleted file mode 100644 index a9afa7da..00000000 --- a/blog/13_dem_pipeline.md +++ /dev/null @@ -1,137 +0,0 @@ -# Detector Error Models: From Fault Mechanisms to a Decoder Graph - -Author: Guillaume Lessard -Series: QECTOR Decoder v3 companion notes, Post 13 -Source: QECTOR Decoder v3 Reference Manual v1.0.0 -Date: August 2026 -DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046) -Tags: detector error model, Stim, graph collapse, observables, QEC tooling - -## Abstract - -A decoder cannot choose sensible paths from a circuit without a machine-readable description of that circuit's fault mechanisms. A detector error model (DEM) provides the description: rows are detectors, columns are mechanisms, and each mechanism carries a prior probability and an observable effect. This post follows QECTOR's DEM pipeline from parsing and graphlike classification through parallel-edge collapse, likelihood weights, prior recalibration, and decoder construction. - -## 1. The DEM as a matrix - -Represent a DEM by a binary matrix `H_DEM`: - -- one row per detector; -- one column per fault mechanism; -- `H[d,m] = 1` when mechanism `m` flips detector `d`. - -The syndrome is a vector of fired detectors. A correction is a selection of mechanism columns whose XOR reproduces that vector. - -The parser described by the manual handles `error`, `detector`, `logical_observable`, `shift_detectors`, and `repeat` blocks. It can parse a Stim DEM object or DEM text without requiring Stim to be installed at parse time. - -## 2. Graphlike classification - -The column weight is the structural test: - -```text -weight <= 2 -> graph edge or boundary edge -weight > 2 -> hyperedge; matching is not valid -``` - -This classification must happen before constructing a matching decoder. Decomposing a hyperedge into pairwise edges silently changes the fault model and can change the logical result. QECTOR routes non-graphlike models to BP-OSD. - -## 3. Likelihood weights - -Each mechanism with probability `p` receives - -$$ -w = \log\left(\frac{1-p}{p}\right). -$$ - -For a graphlike model, a shortest path under these weights is the most likely chain under the independent-mechanism model the DEM encodes. A matching decoder then optimizes over pairings of detector defects. - -Weights are not optional decoration. If one mechanism has probability `1e-4` and another has probability `1e-2`, their weights are approximately `9.21` and `4.60`. Treating them as equal erases information the circuit model already supplied. - -## 4. Collapsing parallel mechanisms - -Circuit decomposition can create multiple independent mechanisms connecting the same detector pair. QECTOR collapses them for graphlike decoding with the independent-XOR rule: - -$$ -p = p_1(1-p_2) + p_2(1-p_1). -$$ - -For `p1=0.01` and `p2=0.02`: - -$$ -p = 0.01(0.98)+0.02(0.99)=0.0296. -$$ - -The collapsed edge receives `log((1-p)/p)`. The manual also documents which observable set survives: the set belonging to the most likely member of the parallel group. The rule is covered by dedicated DEM-collapse fixtures. - -## 5. Observables are not detector rows - -Detectors tell the decoder which parity constraints fired. Logical observables tell the scoring harness whether the predicted logical outcome differs from the sampled outcome. Conflating them is a common source of wrong LER numbers. - -The DEM therefore carries both: - -```text -detector incidence: used to build H and decode -observable incidence: used to score logical outcomes -``` - -This separation is the practical reason QECTOR rejects `correction != error` as a logical-error metric. - -## 6. Prior recalibration - -If observed detector events are available, the manual describes simple prior estimators: - -- for a weight-1 mechanism, use the detector firing rate; -- for a weight-2 mechanism, estimate the correlated XOR probability `P_xor = 2p(1-p)` and invert - - $$ - p = \frac{1-\sqrt{1-2P_{xor}}}{2}; - $$ - -- for a hyperedge, use the maximum firing rate among its detectors as the documented conservative estimate. - -Recalibration changes the weights and therefore the selected representative. It does not remove the need to validate `Hc=s`, nor to score logical observables under a declared experiment. - -## 7. A safe construction workflow - -```python -from qector_decoder_v3 import dem - -model = dem.from_stim( - circuit.detector_error_model(decompose_errors=True) -) - -if model.is_graphlike: - model = model.collapse_to_graph() - decoder = model.make_decoder("blossom") -else: - decoder = model.make_decoder("bposd") -``` - -The method names (`from_stim`, `is_graphlike`, `collapse_to_graph`, `make_decoder`) are confirmed in the v1.0.0 API; check the installed package for the full option set. The structural guard is the important part: never force a matching decoder onto a hypergraph model. - -## 8. DEM audit fields - -For a reproducible DEM-derived result, record: - -```text -source circuit or DEM text -Stim version, if used -decompose_errors setting -raw mechanism count -graphlike status -collapsed mechanism count -probability and weight convention -observable mapping -code distance and rounds -decoder class and seed -raw results and SHA-256 -``` - -A DEM object without its construction settings is not enough to reproduce a circuit-level comparison. - -## Takeaway - -The DEM is the bridge from a noisy circuit to a decoding problem. Parse mechanisms into columns, classify graphlike structure before choosing a solver, combine parallel probabilities correctly, keep observables for logical scoring, and record every transformation. The output is only as trustworthy as that pipeline. - -## Reference - -Guillaume Lessard, *QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine*, v1.0.0, August 2026. DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046). diff --git a/blog/14WeightedDecoding/index.html b/blog/14WeightedDecoding/index.html deleted file mode 100644 index 689682b1..00000000 --- a/blog/14WeightedDecoding/index.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Weighted Decoding and Likelihood Priors · QECTOR Blog - - - - - - - - - - - - - -
Skip to main content
Back to All Articles
August 2026Noise ModelsBy Guillaume Lessard · 4 min read

Weighted Decoding and Likelihood Priors

Why log((1-p)/p) belongs in the graph and how matching, Union-Find, and space-time paths use weights.

Author: Guillaume Lessard
-Series: QECTOR Decoder v3 companion notes, Post 14
-Source: QECTOR Decoder v3 Reference Manual v1.0.0
-Date: August 2026
-DOI: 10.5281/zenodo.21941046 -Tags: weighted decoding, likelihood ratios, DEM, MWPM, Union-Find

-

Abstract

-

An unweighted graph treats every fault mechanism as equally plausible. That may be acceptable for a uniform code-capacity toy model, but circuit-level decoding normally supplies distinct data and measurement probabilities. QECTOR's matching decoders accept log-likelihood weights, and its weighted Union-Find path uses the same probability information for adaptive growth. This post derives the weight, shows what changes under nonuniform noise, and explains why weighted-correctness claims must be separated from performance claims.

-

1. From probability to cost

-

For a binary mechanism with error probability p, the odds of an error versus no error are p/(1-p). The negative log odds are

-w(p)=−log⁡(p1−p)=log⁡(1−pp).w(p) = -\log\left(\frac{p}{1-p}\right) = \log\left(\frac{1-p}{p}\right). -

Independent mechanisms add log probabilities, so a path cost is the sum of its edge weights. Minimizing that cost is equivalent to selecting the most likely chain under the model assumptions.

-

The formula is monotone: rare mechanisms have larger costs, common mechanisms smaller costs. A decoder that ignores the variation cannot distinguish the two.

-

2. A two-edge comparison

-

Consider two available mechanisms:

-
p_a = 0.0001  -> w_a ~= 9.21
-p_b = 0.01    -> w_b ~= 4.60
-

A path containing one b edge is cheaper than a path containing one a edge, even when both paths have the same number of edges. Under an unweighted model they would tie. The weighted model therefore uses information the calibration or the DEM already provided.

-

This example does not say which correction is logically better. It says which representative the declared independent-noise likelihood prefers.

-

3. Uniform noise is a special case

-

If every mechanism has the same probability p, every edge receives the same weight. A path with fewer edges then also has lower total weight, so weighted and unweighted matching agree on the ordering. That is why a uniform code-capacity experiment can make an unweighted decoder look adequate.

-

The agreement does not transfer automatically to circuit-level noise, biased noise, or a model with different temporal and spatial rates.

-

4. Matching and Union-Find use weights differently

-

Blossom and Sparse Blossom turn weights into shortest-path distances and matching costs. Weighted Union-Find advances clusters by adaptive time steps that saturate frontier edges according to their lengths. The implementations share the probability-to-weight convention, but not the same optimization contract.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DecoderUse of weightsClaim boundary
BlossomExact weighted MWPM on audited small codesExactness is scoped
Sparse BlossomEvent times and candidate growthTested faithful/near-optimal scope
Union-FindAdaptive weighted cluster growthFaithful graphlike path
BP-OSDPriors and posterior reliabilitiesFaithful residual solve
-

Weights improve the model fit. They do not make an approximate decoder exact.

-

5. Space-time anisotropy

-

In a lifted detector lattice, data and measurement mechanisms commonly use different probabilities:

-wspace=log⁡(1−pdatapdata),wtime=log⁡(1−pmeaspmeas).w_{space}=\log\left(\frac{1-p_{data}}{p_{data}}\right),\qquad -w_{time}=\log\left(\frac{1-p_{meas}}{p_{meas}}\right). -

This creates an anisotropic graph: a measurement glitch may be cheaper to explain with a time-like path than with a spatial data chain. If the prior changes, the preferred path can change while the path-boundary proof remains unchanged.

-

6. Per-shot reweighting

-

The manual documents in-place edge-weight replacement in O(E) and a batched path that accepts one weight vector per shot. This supports workflows in which BP posteriors or calibrated mechanism rates alter the graph for each syndrome.

-

The validation target is equivalence between the reweighted and freshly constructed paths on the tested configurations. It is not a universal statement that all weight updates preserve the same correction or logical result.

-

7. Weight validation

-

Before running a weighted decoder, check:

-
0 < p < 1 for every mechanism
-probability ordering matches the calibration source
-boundary mechanisms have explicit treatment
-parallel DEM mechanisms collapsed consistently
-spatial and temporal weights use the intended channels
-weight dtype and precision recorded
-

The decoder should reject invalid weights at construction rather than silently treating them as uniform.

-

8. Claim boundaries

-

A weight formula is a mathematical contract. A logical-error curve is an empirical result. To publish the latter, include the circuit or DEM, code, noise model, shots, seed, decoder mode, environment, raw artifact, and confidence interval. Do not compare a weighted circuit-level result with an unweighted code-capacity result just because both use the same nominal p.

-

Takeaway

-

Likelihood weights are how a decoder listens to the noise model. Uniform weights are a useful special case, not a universal default. Put the prior into the DEM and the decoder, keep the structural graph/hypergraph guard, and report the resulting logical behaviour only with comparable artifacts.

-

Reference

-

Guillaume Lessard, QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine, v1.0.0, August 2026. DOI: 10.5281/zenodo.21941046.

- - - diff --git a/blog/14_weighted_decoding.md b/blog/14_weighted_decoding.md deleted file mode 100644 index 1aa2bb85..00000000 --- a/blog/14_weighted_decoding.md +++ /dev/null @@ -1,100 +0,0 @@ -# Weighted Decoding: Why the Prior Belongs in the Graph - -Author: Guillaume Lessard -Series: QECTOR Decoder v3 companion notes, Post 14 -Source: QECTOR Decoder v3 Reference Manual v1.0.0 -Date: August 2026 -DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046) -Tags: weighted decoding, likelihood ratios, DEM, MWPM, Union-Find - -## Abstract - -An unweighted graph treats every fault mechanism as equally plausible. That may be acceptable for a uniform code-capacity toy model, but circuit-level decoding normally supplies distinct data and measurement probabilities. QECTOR's matching decoders accept log-likelihood weights, and its weighted Union-Find path uses the same probability information for adaptive growth. This post derives the weight, shows what changes under nonuniform noise, and explains why weighted-correctness claims must be separated from performance claims. - -## 1. From probability to cost - -For a binary mechanism with error probability `p`, the odds of an error versus no error are `p/(1-p)`. The negative log odds are - -$$ -w(p) = -\log\left(\frac{p}{1-p}\right) = \log\left(\frac{1-p}{p}\right). -$$ - -Independent mechanisms add log probabilities, so a path cost is the sum of its edge weights. Minimizing that cost is equivalent to selecting the most likely chain under the model assumptions. - -The formula is monotone: rare mechanisms have larger costs, common mechanisms smaller costs. A decoder that ignores the variation cannot distinguish the two. - -## 2. A two-edge comparison - -Consider two available mechanisms: - -```text -p_a = 0.0001 -> w_a ~= 9.21 -p_b = 0.01 -> w_b ~= 4.60 -``` - -A path containing one `b` edge is cheaper than a path containing one `a` edge, even when both paths have the same number of edges. Under an unweighted model they would tie. The weighted model therefore uses information the calibration or the DEM already provided. - -This example does not say which correction is logically better. It says which representative the declared independent-noise likelihood prefers. - -## 3. Uniform noise is a special case - -If every mechanism has the same probability `p`, every edge receives the same weight. A path with fewer edges then also has lower total weight, so weighted and unweighted matching agree on the ordering. That is why a uniform code-capacity experiment can make an unweighted decoder look adequate. - -The agreement does not transfer automatically to circuit-level noise, biased noise, or a model with different temporal and spatial rates. - -## 4. Matching and Union-Find use weights differently - -Blossom and Sparse Blossom turn weights into shortest-path distances and matching costs. Weighted Union-Find advances clusters by adaptive time steps that saturate frontier edges according to their lengths. The implementations share the probability-to-weight convention, but not the same optimization contract. - -| Decoder | Use of weights | Claim boundary | -|---|---|---| -| Blossom | Exact weighted MWPM on audited small codes | Exactness is scoped | -| Sparse Blossom | Event times and candidate growth | Tested faithful/near-optimal scope | -| Union-Find | Adaptive weighted cluster growth | Faithful graphlike path | -| BP-OSD | Priors and posterior reliabilities | Faithful residual solve | - -Weights improve the model fit. They do not make an approximate decoder exact. - -## 5. Space-time anisotropy - -In a lifted detector lattice, data and measurement mechanisms commonly use different probabilities: - -$$ -w_{space}=\log\left(\frac{1-p_{data}}{p_{data}}\right),\qquad -w_{time}=\log\left(\frac{1-p_{meas}}{p_{meas}}\right). -$$ - -This creates an anisotropic graph: a measurement glitch may be cheaper to explain with a time-like path than with a spatial data chain. If the prior changes, the preferred path can change while the path-boundary proof remains unchanged. - -## 6. Per-shot reweighting - -The manual documents in-place edge-weight replacement in `O(E)` and a batched path that accepts one weight vector per shot. This supports workflows in which BP posteriors or calibrated mechanism rates alter the graph for each syndrome. - -The validation target is equivalence between the reweighted and freshly constructed paths on the tested configurations. It is not a universal statement that all weight updates preserve the same correction or logical result. - -## 7. Weight validation - -Before running a weighted decoder, check: - -```text -0 < p < 1 for every mechanism -probability ordering matches the calibration source -boundary mechanisms have explicit treatment -parallel DEM mechanisms collapsed consistently -spatial and temporal weights use the intended channels -weight dtype and precision recorded -``` - -The decoder should reject invalid weights at construction rather than silently treating them as uniform. - -## 8. Claim boundaries - -A weight formula is a mathematical contract. A logical-error curve is an empirical result. To publish the latter, include the circuit or DEM, code, noise model, shots, seed, decoder mode, environment, raw artifact, and confidence interval. Do not compare a weighted circuit-level result with an unweighted code-capacity result just because both use the same nominal `p`. - -## Takeaway - -Likelihood weights are how a decoder listens to the noise model. Uniform weights are a useful special case, not a universal default. Put the prior into the DEM and the decoder, keep the structural graph/hypergraph guard, and report the resulting logical behaviour only with comparable artifacts. - -## Reference - -Guillaume Lessard, *QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine*, v1.0.0, August 2026. DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046). diff --git a/blog/15LogicalErrorRates/index.html b/blog/15LogicalErrorRates/index.html deleted file mode 100644 index 553f0bb3..00000000 --- a/blog/15LogicalErrorRates/index.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Logical Error Rates Without the Wrong Metric · QECTOR Blog - - - - - - - - - - - - - -
Skip to main content
Back to All Articles
August 2026EvidenceBy Guillaume Lessard · 4 min read

Logical Error Rates Without the Wrong Metric

Score observables, compute Wilson intervals, keep noise models comparable, and report reproducible LERs.

Author: Guillaume Lessard
-Series: QECTOR Decoder v3 companion notes, Post 15
-Source: QECTOR Decoder v3 Reference Manual v1.0.0
-Date: August 2026
-DOI: 10.5281/zenodo.21941046 -Tags: logical error rate, Wilson interval, observables, reproducible QEC

-

Abstract

-

Logical-error-rate plots are easy to produce and easy to misinterpret. In a degenerate stabilizer code, a correction can differ from the sampled physical error by a stabilizer and still be logically correct. QECTOR's methodology therefore scores observable flips from the same circuit, uses Wilson confidence intervals, and refuses comparisons across incompatible noise models. This post gives the metric, a hand calculation, and a report checklist.

-

1. Do not score raw correction equality

-

Let e be the sampled error and c the decoder correction. Syndrome faithfulness gives

-H(c+e)=0.H(c+e)=0. -

The residual sits in the kernel. It is logically harmless only when it also sits in the stabilizer row space. A different correction vector is not automatically a logical error.

-

For a circuit with logical observables, compare the sampled observable flips with the predicted observable flips after applying the correction. A shot counts as a logical error when those observable values differ.

-

This definition respects degeneracy and matches the manual's LER methodology.

-

2. The Wilson interval

-

Suppose k of n shots are logical errors and p_hat = k/n. The 95 percent Wilson interval is

-(p^+z2/(2n)−zp^(1−p^)/n+z2/(4n2)1+z2/n,p^+z2/(2n)+zp^(1−p^)/n+z2/(4n2)1+z2/n),\left( -\frac{\hat p + z^2/(2n) - z\sqrt{\hat p(1-\hat p)/n + z^2/(4n^2)}}{1+z^2/n}, -\frac{\hat p + z^2/(2n) + z\sqrt{\hat p(1-\hat p)/n + z^2/(4n^2)}}{1+z^2/n} -\right), -

where z = 1.959963985.

-

The interval stays inside [0,1] and behaves better than the Wald approximation when errors are rare or counts are small.

-

3. Hand calculation: 10 errors in 1000 shots

-

This is a worked example from the reference manual, not a product measurement. Take k=10 and n=1000, so p_hat=0.01. The manual evaluates the Wilson interval as approximately

-
lower ~= 0.00544
-upper ~= 0.01831
-

The point estimate is one percent, but the interval shows the uncertainty carried by only 1000 trials. Publishing 0.01 alone hides that uncertainty.

-

4. Comparability is part of the metric

-

The same nominal physical error value can describe different experiments. QECTOR tags results as code_capacity or circuit_level and refuses to compare across those model classes. A fair decoder comparison holds constant:

-
circuit generator or DEM
-decompose_errors and collapse settings
-distance and rounds
-physical noise source and value
-detector samples
-observable scoring
-shots and seed
-package versions and environment
-

Then the decoder row is the changing factor. Mixing a code-capacity QECTOR run with a circuit-level reference is not a meaningful leaderboard.

-

5. An example of a published comparison

-

The v1.0.0 package changelog ships a 120-test LER suite against PyMatching on a repetition code at d=3 and p=0.01. It reports ler_qector=0.00392 and ler_pymatching=0.00317, described as agreeing within a declared 4.5x margin.

-

These are measurements on one fixed workload, not universal claims. Their value is the discipline behind them: both decoders ran the same workload with the same noise value, so the comparison isolates the decoder rather than the setup.

-

6. The report schema

-

Every public LER report should include:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldExample content
CircuitGenerator command or checked-in .stim file
DEMSettings, counts, graphlike status
CodeFamily, distance, rounds, checks, qubits
NoiseChannel, rate, model tag
DecoderExact class, weights, BP/OSD flags
SamplingShots, warmup, seed, error count
StatisticsLER and Wilson interval
EnvironmentOS, CPU, RAM, Python/Rust/packages
ArtifactRaw JSON/CSV path and SHA-256
-

If one of these fields is missing, the result may still be a useful smoke test, but it is not a complete portable evidence artifact.

-

7. Correctness before statistics

-

The LER harness should reject or record unfaithful shots before logical scoring. The sequence is:

-
    -
  1. Generate or load the same detector samples for every decoder.
  2. -
  3. Decode each syndrome.
  4. -
  5. Check H @ correction == syndrome on reachable inputs.
  6. -
  7. Compute observable flips.
  8. -
  9. Count logical mismatches.
  10. -
  11. Compute the LER and its interval.
  12. -
-

This stops an invalid correction from hiding inside an apparently low logical-error rate.

-

8. Threshold language

-

A crossing in a plot is a workload result, not a property of a decoder in the abstract. Safe wording names the code, noise model, distance range, shots, seed, decoder configuration, and surviving artifact. The reference manual excludes threshold claims that lack that evidence.

-

Likewise, do not infer that exact MWPM is always logically best on a non-graphlike code, or that a GPU result is faster simply because it ran on a GPU. The methodology is part of the claim.

-

Takeaway

-

An honest LER pipeline has three layers: syndrome validity, logical-observable scoring, and statistical uncertainty. Wilson intervals quantify the sampling uncertainty; comparable noise models protect the comparison; raw artifacts let another engineer check the sentence. That is enough to make a plot evidence rather than decoration.

-

Reference

-

Guillaume Lessard, QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine, v1.0.0, August 2026. DOI: 10.5281/zenodo.21941046.

- - - diff --git a/blog/15_logical_error_rates.md b/blog/15_logical_error_rates.md deleted file mode 100644 index 30ef3822..00000000 --- a/blog/15_logical_error_rates.md +++ /dev/null @@ -1,120 +0,0 @@ -# Logical Error Rates Without the Wrong Metric - -Author: Guillaume Lessard -Series: QECTOR Decoder v3 companion notes, Post 15 -Source: QECTOR Decoder v3 Reference Manual v1.0.0 -Date: August 2026 -DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046) -Tags: logical error rate, Wilson interval, observables, reproducible QEC - -## Abstract - -Logical-error-rate plots are easy to produce and easy to misinterpret. In a degenerate stabilizer code, a correction can differ from the sampled physical error by a stabilizer and still be logically correct. QECTOR's methodology therefore scores observable flips from the same circuit, uses Wilson confidence intervals, and refuses comparisons across incompatible noise models. This post gives the metric, a hand calculation, and a report checklist. - -## 1. Do not score raw correction equality - -Let `e` be the sampled error and `c` the decoder correction. Syndrome faithfulness gives - -$$ -H(c+e)=0. -$$ - -The residual sits in the kernel. It is logically harmless only when it also sits in the stabilizer row space. A different correction vector is not automatically a logical error. - -For a circuit with logical observables, compare the sampled observable flips with the predicted observable flips after applying the correction. A shot counts as a logical error when those observable values differ. - -This definition respects degeneracy and matches the manual's LER methodology. - -## 2. The Wilson interval - -Suppose `k` of `n` shots are logical errors and `p_hat = k/n`. The 95 percent Wilson interval is - -$$ -\left( -\frac{\hat p + z^2/(2n) - z\sqrt{\hat p(1-\hat p)/n + z^2/(4n^2)}}{1+z^2/n}, -\frac{\hat p + z^2/(2n) + z\sqrt{\hat p(1-\hat p)/n + z^2/(4n^2)}}{1+z^2/n} -\right), -$$ - -where `z = 1.959963985`. - -The interval stays inside `[0,1]` and behaves better than the Wald approximation when errors are rare or counts are small. - -## 3. Hand calculation: 10 errors in 1000 shots - -This is a worked example from the reference manual, not a product measurement. Take `k=10` and `n=1000`, so `p_hat=0.01`. The manual evaluates the Wilson interval as approximately - -```text -lower ~= 0.00544 -upper ~= 0.01831 -``` - -The point estimate is one percent, but the interval shows the uncertainty carried by only 1000 trials. Publishing `0.01` alone hides that uncertainty. - -## 4. Comparability is part of the metric - -The same nominal physical error value can describe different experiments. QECTOR tags results as `code_capacity` or `circuit_level` and refuses to compare across those model classes. A fair decoder comparison holds constant: - -```text -circuit generator or DEM -decompose_errors and collapse settings -distance and rounds -physical noise source and value -detector samples -observable scoring -shots and seed -package versions and environment -``` - -Then the decoder row is the changing factor. Mixing a code-capacity QECTOR run with a circuit-level reference is not a meaningful leaderboard. - -## 5. An example of a published comparison - -The v1.0.0 package changelog ships a 120-test LER suite against PyMatching on a repetition code at `d=3` and `p=0.01`. It reports `ler_qector=0.00392` and `ler_pymatching=0.00317`, described as agreeing within a declared 4.5x margin. - -These are measurements on one fixed workload, not universal claims. Their value is the discipline behind them: both decoders ran the same workload with the same noise value, so the comparison isolates the decoder rather than the setup. - -## 6. The report schema - -Every public LER report should include: - -| Field | Example content | -|---|---| -| Circuit | Generator command or checked-in `.stim` file | -| DEM | Settings, counts, graphlike status | -| Code | Family, distance, rounds, checks, qubits | -| Noise | Channel, rate, model tag | -| Decoder | Exact class, weights, BP/OSD flags | -| Sampling | Shots, warmup, seed, error count | -| Statistics | LER and Wilson interval | -| Environment | OS, CPU, RAM, Python/Rust/packages | -| Artifact | Raw JSON/CSV path and SHA-256 | - -If one of these fields is missing, the result may still be a useful smoke test, but it is not a complete portable evidence artifact. - -## 7. Correctness before statistics - -The LER harness should reject or record unfaithful shots before logical scoring. The sequence is: - -1. Generate or load the same detector samples for every decoder. -2. Decode each syndrome. -3. Check `H @ correction == syndrome` on reachable inputs. -4. Compute observable flips. -5. Count logical mismatches. -6. Compute the LER and its interval. - -This stops an invalid correction from hiding inside an apparently low logical-error rate. - -## 8. Threshold language - -A crossing in a plot is a workload result, not a property of a decoder in the abstract. Safe wording names the code, noise model, distance range, shots, seed, decoder configuration, and surviving artifact. The reference manual excludes threshold claims that lack that evidence. - -Likewise, do not infer that exact MWPM is always logically best on a non-graphlike code, or that a GPU result is faster simply because it ran on a GPU. The methodology is part of the claim. - -## Takeaway - -An honest LER pipeline has three layers: syndrome validity, logical-observable scoring, and statistical uncertainty. Wilson intervals quantify the sampling uncertainty; comparable noise models protect the comparison; raw artifacts let another engineer check the sentence. That is enough to make a plot evidence rather than decoration. - -## Reference - -Guillaume Lessard, *QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine*, v1.0.0, August 2026. DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046). diff --git a/blog/16DecoderSelection/index.html b/blog/16DecoderSelection/index.html deleted file mode 100644 index 4ead82e0..00000000 --- a/blog/16DecoderSelection/index.html +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Choosing a Decoder From the Matrix · QECTOR Blog - - - - - - - - - - - - - -
Skip to main content
Back to All Articles
August 2026OrchestrationBy Guillaume Lessard · 5 min read

Choosing a Decoder From the Matrix

A practical decision guide for graphlike, qLDPC, space-time, streaming, CSS, and batch workloads.

Author: Guillaume Lessard / qector.store
-Series: QECTOR Decoder v3 companion notes, Post 16
-Source: QECTOR Decoder v3 Reference Manual v1.0.0
-Date: August 2026
-DOI: 10.5281/zenodo.21941046 -Tags: decoder selection, QEC architecture, graphlike codes, qLDPC, routing

-

Abstract

-

Decoder selection gets easier when it starts with structural facts. Is the induced matrix graphlike? Are weights available? Is the workload single-shot, streaming, or batched? Does the job prioritize accuracy, speed, or a balance of both? This guide turns those questions into a practical decision path and spells out what each choice guarantees and what it does not.

-

1. Start with the check structure

-

Inspect check_to_qubits or the DEM-derived matrix. Count how many checks each qubit or mechanism touches, then take the maximum.

-
max degree <= 2  -> graphlike candidate set
-max degree > 2   -> non-graphlike; BP-OSD path
-

Do this before reading the code-family label. A rotated surface code and a hypergraph-product qLDPC code are both stabilizer codes, yet they need different decoder families. The matrix decides, not the name.

-

2. The decision guide

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Workload factFirst candidateWhy
Small code with stored entriesLookup tableExhaustive stored mapping
Graphlike, accuracy priorityBlossomWeighted MWPM reference path
Graphlike, larger sparse instanceSparse BlossomEvent-driven tight-edge growth
Graphlike, speed priorityUnion-FindCluster growth and peeling
Graphlike with escalation policyHybrid cascadeFaithful pre-filter plus fallback
Non-graphlike qLDPC or hyperedgesBP-OSDArbitrary GF(2) matrix path
Small ambiguous qLDPC componentsAmbiguity clusteringExact local enumeration where bounded
Multiple noisy roundsSpace-time decoderLifts data and measurement faults
Repeated online windowStreaming primitivesBounded-history workflow
Large graphlike batchCPU/GPU batchIndependent per-shot execution
Correlated CSS sectorsTwo-stage decoderFeeds X-induced syndrome into Z
-

This table lists domains and contracts, not a universal performance ranking.

-

3. Accuracy, speed, and balanced priorities

-

For graphlike inputs, a routing policy can set a priority:

-
    -
  • accuracy: exact Blossom for small and moderate problems, Sparse Blossom for larger ones;
  • -
  • speed: Union-Find, or a batch path when the workload is large enough;
  • -
  • balanced: interpolate from code size and batch shape.
  • -
-

The exact thresholds are configuration, not physics. Record them alongside any published result. For a non-graphlike problem, the structure forces the BP-OSD path, whatever the speed or accuracy preference.

-

4. A practical routing sequence

-
1. Parse checks or DEM.
-2. Verify the reachable-syndrome convention and boundaries.
-3. Classify graphlike versus hypergraph.
-4. Select weights from the DEM when available.
-5. Choose single-shot, batch, space-time, or streaming mode.
-6. Select the decoder priority.
-7. Decode and verify H @ c == s.
-8. Score logical observables or escalate.
-

Step 7 belongs in the sequence even when the decoder's own tests already establish faithfulness. It guards the integration boundary: matrix ordering, dtype, boundary convention, and syndrome shape can all be wrong outside the decoder.

-

5. What each choice means

-

Blossom

-

Use it as the weighted MWPM reference for graphlike problems and for audited exactness comparisons on small codes. It does not accept a hypergraph under a new label.

-

Sparse Blossom

-

Use it when event-driven region growth is the right tool. The v1.0.0 claim is faithful and near-optimal within tested scope, with escalation when the sparse candidate solve is incomplete or unfaithful.

-

Union-Find

-

Use it for supported graphlike codes when near-linear cluster growth and peeling are the contract you want. It is not minimum-weight matching, and its logical behaviour must be evaluated on its own.

-

BP-OSD

-

Use it for arbitrary reachable GF(2) matrices, especially LDPC/qLDPC and hyperedge structures. BP ranks candidates; OSD then solves the residual exactly over a basis.

-

Space-time

-

Use it when measurement faults across rounds are part of the problem. A single-round decoder cannot tell whether a transient detector event was spatial or temporal without an appropriate history model.

-

6. A decision example

-

Suppose a team has:

-
rotated surface patch
-graphlike check structure
-calibrated data and measurement probabilities
-many independent shots
-offline logical-error estimation
-

The path is:

-
DEM -> graph collapse and weights -> space-time if rounds are noisy
-    -> CPU/GPU batch for the sampling workload
-    -> observable scoring and Wilson interval
-

For a single online round with a tight latency budget, the same physical code might use a Union-Find or cascade path. The router is allowed to choose differently because the workload changed, and the claim and timing basis change with it.

-

7. Do not confuse API stability with algorithmic scope

-

Version 1.0.0 freezes a stable surface for the whole 1.x line. Stable symbols include UnionFindDecoder, BlossomDecoder, SparseBlossomDecoder, NativeAutoDecoder, the four generate_*_code_checks helpers, set_license_key, get_license_info, the Sinter and qiskit-qec entry points, and DecodeResult.

-

Provisional surfaces stay supported and tested, but their exact shape may change with a changelog note. This group includes BP-OSD tuning kwargs, GPU batch constructors, and network surfaces.

-

A stable constructor does not make every backend valid for every matrix. API stability answers one question: "can I rely on this symbol across the 1.x line?" Domain eligibility answers another: "is this algorithm valid for my problem?"

-

8. Selection checklist

-

Before committing to a decoder, write one sentence for each:

-
My matrix is graphlike because ...
-My noise model is ... and my weights are ...
-My workload is single-shot, batch, space-time, or streaming because ...
-My priority is ...
-My logical metric is ...
-My correctness evidence is ...
-My fallback is ...
-

If those sentences cannot be written, the decoder choice is not ready for a benchmark or a deployment review.

-

Takeaway

-

Choose the decoder from the matrix, the noise model, the time horizon, and the workload shape. The code name is a hint; the structural guard and the evidence contract are the decision. QECTOR's orchestration layer makes that decision explicit, but it does not replace engineering judgment.

-

Reference

-

Guillaume Lessard, QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine, v1.0.0, August 2026. DOI: 10.5281/zenodo.21941046.

- - - diff --git a/blog/16_decoder_selection.md b/blog/16_decoder_selection.md deleted file mode 100644 index b5063921..00000000 --- a/blog/16_decoder_selection.md +++ /dev/null @@ -1,142 +0,0 @@ -# Choosing a QEC Decoder From the Matrix, Not the Marketing Name - -Author: Guillaume Lessard / qector.store -Series: QECTOR Decoder v3 companion notes, Post 16 -Source: QECTOR Decoder v3 Reference Manual v1.0.0 -Date: August 2026 -DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046) -Tags: decoder selection, QEC architecture, graphlike codes, qLDPC, routing - -## Abstract - -Decoder selection gets easier when it starts with structural facts. Is the induced matrix graphlike? Are weights available? Is the workload single-shot, streaming, or batched? Does the job prioritize accuracy, speed, or a balance of both? This guide turns those questions into a practical decision path and spells out what each choice guarantees and what it does not. - -## 1. Start with the check structure - -Inspect `check_to_qubits` or the DEM-derived matrix. Count how many checks each qubit or mechanism touches, then take the maximum. - -```text -max degree <= 2 -> graphlike candidate set -max degree > 2 -> non-graphlike; BP-OSD path -``` - -Do this before reading the code-family label. A rotated surface code and a hypergraph-product qLDPC code are both stabilizer codes, yet they need different decoder families. The matrix decides, not the name. - -## 2. The decision guide - -| Workload fact | First candidate | Why | -|---|---|---| -| Small code with stored entries | Lookup table | Exhaustive stored mapping | -| Graphlike, accuracy priority | Blossom | Weighted MWPM reference path | -| Graphlike, larger sparse instance | Sparse Blossom | Event-driven tight-edge growth | -| Graphlike, speed priority | Union-Find | Cluster growth and peeling | -| Graphlike with escalation policy | Hybrid cascade | Faithful pre-filter plus fallback | -| Non-graphlike qLDPC or hyperedges | BP-OSD | Arbitrary GF(2) matrix path | -| Small ambiguous qLDPC components | Ambiguity clustering | Exact local enumeration where bounded | -| Multiple noisy rounds | Space-time decoder | Lifts data and measurement faults | -| Repeated online window | Streaming primitives | Bounded-history workflow | -| Large graphlike batch | CPU/GPU batch | Independent per-shot execution | -| Correlated CSS sectors | Two-stage decoder | Feeds X-induced syndrome into Z | - -This table lists domains and contracts, not a universal performance ranking. - -## 3. Accuracy, speed, and balanced priorities - -For graphlike inputs, a routing policy can set a priority: - -- `accuracy`: exact Blossom for small and moderate problems, Sparse Blossom for larger ones; -- `speed`: Union-Find, or a batch path when the workload is large enough; -- `balanced`: interpolate from code size and batch shape. - -The exact thresholds are configuration, not physics. Record them alongside any published result. For a non-graphlike problem, the structure forces the BP-OSD path, whatever the speed or accuracy preference. - -## 4. A practical routing sequence - -```text -1. Parse checks or DEM. -2. Verify the reachable-syndrome convention and boundaries. -3. Classify graphlike versus hypergraph. -4. Select weights from the DEM when available. -5. Choose single-shot, batch, space-time, or streaming mode. -6. Select the decoder priority. -7. Decode and verify H @ c == s. -8. Score logical observables or escalate. -``` - -Step 7 belongs in the sequence even when the decoder's own tests already establish faithfulness. It guards the integration boundary: matrix ordering, dtype, boundary convention, and syndrome shape can all be wrong outside the decoder. - -## 5. What each choice means - -### Blossom - -Use it as the weighted MWPM reference for graphlike problems and for audited exactness comparisons on small codes. It does not accept a hypergraph under a new label. - -### Sparse Blossom - -Use it when event-driven region growth is the right tool. The v1.0.0 claim is faithful and near-optimal within tested scope, with escalation when the sparse candidate solve is incomplete or unfaithful. - -### Union-Find - -Use it for supported graphlike codes when near-linear cluster growth and peeling are the contract you want. It is not minimum-weight matching, and its logical behaviour must be evaluated on its own. - -### BP-OSD - -Use it for arbitrary reachable GF(2) matrices, especially LDPC/qLDPC and hyperedge structures. BP ranks candidates; OSD then solves the residual exactly over a basis. - -### Space-time - -Use it when measurement faults across rounds are part of the problem. A single-round decoder cannot tell whether a transient detector event was spatial or temporal without an appropriate history model. - -## 6. A decision example - -Suppose a team has: - -```text -rotated surface patch -graphlike check structure -calibrated data and measurement probabilities -many independent shots -offline logical-error estimation -``` - -The path is: - -```text -DEM -> graph collapse and weights -> space-time if rounds are noisy - -> CPU/GPU batch for the sampling workload - -> observable scoring and Wilson interval -``` - -For a single online round with a tight latency budget, the same physical code might use a Union-Find or cascade path. The router is allowed to choose differently because the workload changed, and the claim and timing basis change with it. - -## 7. Do not confuse API stability with algorithmic scope - -Version 1.0.0 freezes a stable surface for the whole 1.x line. Stable symbols include `UnionFindDecoder`, `BlossomDecoder`, `SparseBlossomDecoder`, `NativeAutoDecoder`, the four `generate_*_code_checks` helpers, `set_license_key`, `get_license_info`, the Sinter and qiskit-qec entry points, and `DecodeResult`. - -Provisional surfaces stay supported and tested, but their exact shape may change with a changelog note. This group includes BP-OSD tuning kwargs, GPU batch constructors, and network surfaces. - -A stable constructor does not make every backend valid for every matrix. API stability answers one question: "can I rely on this symbol across the 1.x line?" Domain eligibility answers another: "is this algorithm valid for my problem?" - -## 8. Selection checklist - -Before committing to a decoder, write one sentence for each: - -```text -My matrix is graphlike because ... -My noise model is ... and my weights are ... -My workload is single-shot, batch, space-time, or streaming because ... -My priority is ... -My logical metric is ... -My correctness evidence is ... -My fallback is ... -``` - -If those sentences cannot be written, the decoder choice is not ready for a benchmark or a deployment review. - -## Takeaway - -Choose the decoder from the matrix, the noise model, the time horizon, and the workload shape. The code name is a hint; the structural guard and the evidence contract are the decision. QECTOR's orchestration layer makes that decision explicit, but it does not replace engineering judgment. - -## Reference - -Guillaume Lessard, *QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine*, v1.0.0, August 2026. DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046). diff --git a/blog/17ReproducibleBenchmarks/index.html b/blog/17ReproducibleBenchmarks/index.html deleted file mode 100644 index 424ddb8a..00000000 --- a/blog/17ReproducibleBenchmarks/index.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Reproducible QEC Benchmarks · QECTOR Blog - - - - - - - - - - - - - -
Skip to main content
Back to All Articles
August 2026EvidenceBy Guillaume Lessard · 4 min read

Reproducible QEC Benchmarks

Separate correctness from performance and make every benchmark claim traceable to an artifact and hash.

Author: Guillaume Lessard / qector.store
-Series: QECTOR Decoder v3 companion notes, Post 17
-Source: QECTOR Decoder v3 Reference Manual v1.0.0
-Date: August 2026
-DOI: 10.5281/zenodo.21941046 -Tags: reproducible research, QEC benchmarks, artifacts, latency, logical error rate

-

Abstract

-

A quantum-decoder benchmark mixes a mathematical problem, a stochastic workload, compiled code, and real hardware. A number without that context is not portable evidence. The QECTOR v1.0.0 manual defines the metadata, statistical, memory, and claim rules that turn a local run into a reviewable artifact. This post turns those rules into a practical checklist for research teams, systems engineers, and product reviews.

-

1. Start with a scoped sentence

-

Write the claim before writing the benchmark script. A safe claim looks like:

-
-

On this checked-in artifact, for this code, noise model, seed, batch shape, and environment, decoder A produced this measured result.

-
-

An unsafe claim looks like:

-
-

Decoder A is universally faster or always more accurate.

-
-

The manual excludes the second style. It also records that earlier benchmark artifacts were withdrawn after a core fingerprint change, so provenance belongs in every claim.

-

2. Separate correctness from performance

-

Answer the correctness questions before the timing questions:

-
Did every reachable syndrome produce H @ c == s?
-Did the batch path equal the per-shot path where that is claimed?
-Were observables scored rather than raw correction vectors?
-

Only after those gates pass should the run report latency, throughput, memory, or logical-error statistics.

-

3. Cold path and hot path

-

Decoder construction covers graph creation, weight preprocessing, allocations, and setup. That is the cold path. Repeated decode() calls on a pre-built decoder with in-memory syndromes are the hot path.

-

Both are useful, but they answer different questions:

- - - - - - - - - - - - - - - - - - - - - - - - - -
MeasurementIncludesAppropriate for
Cold pathBuild and setupPer-job startup or service provisioning
Hot pathRepeated decode onlySteady-state repeated workloads
End to endInput, transfers, decode, outputApplication-level capacity
-

Never present a hot-path number as end-to-end performance without labeling the omitted work.

-

4. Required benchmark metadata

-

The manual's artifact table requires:

-
code family and distance/size
-rounds, checks, qubits, detectors
-physical error rate and noise source
-code-capacity or circuit-level tag
-decoder class and all mode flags
-shots, trials, warmup, and seed
-metric definition
-OS, CPU, RAM, Python, Rust, package, GPU, runtime
-git commit or release tag
-raw JSON/CSV path and SHA-256
-

If a number depends on a GPU or driver, record the exact device and runtime. If memory is measured, say whether it is Python allocation, process RSS, native heap, or VRAM.

-

5. Statistical reporting

-

For latency, report the distribution: n, mean, median, standard deviation, minimum, maximum, p50, p90, p95, p99, and a confidence interval on the mean.

-

For logical error rates, report errors, shots, the LER, and a Wilson interval. With zero observed errors, do not claim a zero logical-error probability; report the interval and the sampling context.

-

For decoder comparisons, use the same sampled detector data, DEM settings, observable map, and noise model. A different random sample supports an independent replication, but it is not a paired head-to-head comparison unless the pairing protocol is stated.

-

6. Reproducible command design

-

A good command leaves no hidden degree of freedom:

-
benchmark --code rotated_surface --distance 5
-          --noise circuit_level --p 0.001
-          --decoder blossom --weighted
-          --shots 100000 --seed 42
-          --out results/run.json
-

Store the command next to the output. The environment block and the commit hash are what let a reviewer tell a changed workload apart from a changed implementation.

-

7. Benchmark images need a disposition

-

The manual keeps structural figures and excludes charts tied to withdrawn or non-surviving hardware measurements. A locally generated chart is still useful, but its status must be explicit:

-
structural illustration
-local smoke measurement
-checked-in evidence artifact
-published comparative result
-

Only the last two should support public numerical claims, and only together with the accompanying artifact.

-

8. A release-review checklist

-

Before quoting a result:

-
    -
  1. Pin the release or commit.
  2. -
  3. Capture dependency versions and hardware.
  4. -
  5. Run the local correctness and import smoke tests.
  6. -
  7. Label hot, cold, and end-to-end timing.
  8. -
  9. Store raw JSON/CSV and hash it.
  10. -
  11. Attach a Wilson interval for LER.
  12. -
  13. State the safe and unsafe wording.
  14. -
  15. Remove customer data, proprietary circuits, and secrets from logs.
  16. -
-

Item 8 matters for service deployments: a benchmark artifact can accidentally disclose inputs that were never meant to be public.

-

Takeaway

-

Reproducibility is not a citation added after the graph. It is the link between the claim, the command, the environment, the raw artifact, and the hash. That discipline makes a local QEC result useful to another lab and keeps product language honest.

-

Reference

-

Guillaume Lessard, QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine, v1.0.0, August 2026. DOI: 10.5281/zenodo.21941046.

- - - diff --git a/blog/17_reproducible_benchmarks.md b/blog/17_reproducible_benchmarks.md deleted file mode 100644 index 52dcb773..00000000 --- a/blog/17_reproducible_benchmarks.md +++ /dev/null @@ -1,127 +0,0 @@ -# Reproducible QEC Benchmarks: The Artifact Is Part of the Result - -Author: Guillaume Lessard / qector.store -Series: QECTOR Decoder v3 companion notes, Post 17 -Source: QECTOR Decoder v3 Reference Manual v1.0.0 -Date: August 2026 -DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046) -Tags: reproducible research, QEC benchmarks, artifacts, latency, logical error rate - -## Abstract - -A quantum-decoder benchmark mixes a mathematical problem, a stochastic workload, compiled code, and real hardware. A number without that context is not portable evidence. The QECTOR v1.0.0 manual defines the metadata, statistical, memory, and claim rules that turn a local run into a reviewable artifact. This post turns those rules into a practical checklist for research teams, systems engineers, and product reviews. - -## 1. Start with a scoped sentence - -Write the claim before writing the benchmark script. A safe claim looks like: - -> On this checked-in artifact, for this code, noise model, seed, batch shape, and environment, decoder A produced this measured result. - -An unsafe claim looks like: - -> Decoder A is universally faster or always more accurate. - -The manual excludes the second style. It also records that earlier benchmark artifacts were withdrawn after a core fingerprint change, so provenance belongs in every claim. - -## 2. Separate correctness from performance - -Answer the correctness questions before the timing questions: - -```text -Did every reachable syndrome produce H @ c == s? -Did the batch path equal the per-shot path where that is claimed? -Were observables scored rather than raw correction vectors? -``` - -Only after those gates pass should the run report latency, throughput, memory, or logical-error statistics. - -## 3. Cold path and hot path - -Decoder construction covers graph creation, weight preprocessing, allocations, and setup. That is the cold path. Repeated `decode()` calls on a pre-built decoder with in-memory syndromes are the hot path. - -Both are useful, but they answer different questions: - -| Measurement | Includes | Appropriate for | -|---|---|---| -| Cold path | Build and setup | Per-job startup or service provisioning | -| Hot path | Repeated decode only | Steady-state repeated workloads | -| End to end | Input, transfers, decode, output | Application-level capacity | - -Never present a hot-path number as end-to-end performance without labeling the omitted work. - -## 4. Required benchmark metadata - -The manual's artifact table requires: - -```text -code family and distance/size -rounds, checks, qubits, detectors -physical error rate and noise source -code-capacity or circuit-level tag -decoder class and all mode flags -shots, trials, warmup, and seed -metric definition -OS, CPU, RAM, Python, Rust, package, GPU, runtime -git commit or release tag -raw JSON/CSV path and SHA-256 -``` - -If a number depends on a GPU or driver, record the exact device and runtime. If memory is measured, say whether it is Python allocation, process RSS, native heap, or VRAM. - -## 5. Statistical reporting - -For latency, report the distribution: `n`, mean, median, standard deviation, minimum, maximum, p50, p90, p95, p99, and a confidence interval on the mean. - -For logical error rates, report errors, shots, the LER, and a Wilson interval. With zero observed errors, do not claim a zero logical-error probability; report the interval and the sampling context. - -For decoder comparisons, use the same sampled detector data, DEM settings, observable map, and noise model. A different random sample supports an independent replication, but it is not a paired head-to-head comparison unless the pairing protocol is stated. - -## 6. Reproducible command design - -A good command leaves no hidden degree of freedom: - -```text -benchmark --code rotated_surface --distance 5 - --noise circuit_level --p 0.001 - --decoder blossom --weighted - --shots 100000 --seed 42 - --out results/run.json -``` - -Store the command next to the output. The environment block and the commit hash are what let a reviewer tell a changed workload apart from a changed implementation. - -## 7. Benchmark images need a disposition - -The manual keeps structural figures and excludes charts tied to withdrawn or non-surviving hardware measurements. A locally generated chart is still useful, but its status must be explicit: - -```text -structural illustration -local smoke measurement -checked-in evidence artifact -published comparative result -``` - -Only the last two should support public numerical claims, and only together with the accompanying artifact. - -## 8. A release-review checklist - -Before quoting a result: - -1. Pin the release or commit. -2. Capture dependency versions and hardware. -3. Run the local correctness and import smoke tests. -4. Label hot, cold, and end-to-end timing. -5. Store raw JSON/CSV and hash it. -6. Attach a Wilson interval for LER. -7. State the safe and unsafe wording. -8. Remove customer data, proprietary circuits, and secrets from logs. - -Item 8 matters for service deployments: a benchmark artifact can accidentally disclose inputs that were never meant to be public. - -## Takeaway - -Reproducibility is not a citation added after the graph. It is the link between the claim, the command, the environment, the raw artifact, and the hash. That discipline makes a local QEC result useful to another lab and keeps product language honest. - -## Reference - -Guillaume Lessard, *QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine*, v1.0.0, August 2026. DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046). diff --git a/blog/18RustPyo3Architecture/index.html b/blog/18RustPyo3Architecture/index.html deleted file mode 100644 index 7e1dfeca..00000000 --- a/blog/18RustPyo3Architecture/index.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Rust, PyO3, and QEC Memory Discipline · QECTOR Blog - - - - - - - - - - - - - -
Skip to main content
Back to All Articles
August 2026SystemsBy Guillaume Lessard · 4 min read

Rust, PyO3, and QEC Memory Discipline

FFI buffers, selective repacking, GIL release, Rayon worker state, and memory metrics at the Python boundary.

Author: Guillaume Lessard / qector.store
-Series: QECTOR Decoder v3 companion notes, Post 18
-Source: QECTOR Decoder v3 Reference Manual v1.0.0
-Date: August 2026
-DOI: 10.5281/zenodo.21941046 -Tags: Rust, PyO3, Python, FFI, Rayon, memory model, QEC systems

-

Abstract

-

Quantum-error-correction software sits between numerical Python workflows and stateful, performance-sensitive decoder cores. QECTOR's v1.0.0 architecture uses Rust with PyO3 bindings, contiguous NumPy buffers, GIL release, Rayon batch workers, and reusable scratch state. This post explains the boundary as an engineering contract, shows what can be measured safely, and names the memory and threading properties that should be tested rather than assumed.

-

1. The boundary has a shape

-

The public decoder contract is simple:

-
input:  check structure + reachable uint8 syndrome
-output: uint8 correction with length n_qubits
-gate:   H @ correction == syndrome modulo 2
-

The FFI layer must preserve shape, dtype, contiguity, and ownership long enough for the Rust core to consume the data safely. A mathematically correct decoder can still fail at integration time if Python sends a transposed batch, a non-contiguous view, or a dtype the binding reads differently.

-

2. Contiguous buffers and selective repacking

-

The manual documents contiguous uint8 NumPy buffers across PyO3. The boundary repacks only when an input is non-contiguous or has the wrong dtype; it does not copy gratuitously.

-

That policy creates two test cases:

-
contiguous uint8 input -> direct boundary path
-non-contiguous/wrong dtype input -> explicit normalization path
-

Both paths must return the same correction and the same faithfulness result. The copy belongs to the cold or boundary path, never to the decoder's hot path.

-

3. Releasing the GIL

-

Decode calls release the Python GIL so compiled work can run alongside other Python threads. This suits independent batches or service workers, but it does not make every Rust data structure safe to share mutably. The documented design uses worker-local scratch and explicit ownership boundaries.

-

The right concurrency test is not "many threads ran." It is:

-
same input + different worker count -> same output
-batch decode == per-shot decode
-prior calls do not change later output
-

Those properties are observable and can be locked with tests.

-

4. Rayon and batch determinism

-

Batch paths use Rayon data parallelism. Each worker keeps its own scratch so the output does not depend on row-to-worker assignment. That matters for Union-Find style paths, where several valid forests could otherwise yield different correction vectors.

-

Determinism is a contract only when the implementation and the tests establish it. A parallel loop is not automatically deterministic.

-

5. Reusable memory

-

The hot paths allocate buffers sized to the graph, reset them in place, and grow only when the problem grows. The manual describes this as allocation-free hot-path construction for the relevant backends.

-

Report memory in separate categories:

- - - - - - - - - - - - - - - - - - - - - - - - - -
CategoryAppropriate tool or evidence
Python allocationstracemalloc
Process RSSpsutil, when installed
Native Rust heapBackend diagnostics
GPU memoryVendor/runtime diagnostics
-

Do not merge these numbers into one "memory usage" figure. They measure different allocators and lifetimes.

-

6. The module map

-

The reference manual groups the core into:

-
matching       exact and sparse MWPM
-union-find     graphlike single and batch paths
-BP-OSD         belief propagation, GF(2), ambiguity components
-GPU            CUDA/OpenCL batch kernels
-temporal       space-time and streaming primitives
-routing        auto, cascade, two-stage
-learned        GNN and neural predecoders
-services       MCP, gRPC, metrics, licensing
-utilities      bit packing, GF(2), shared infrastructure
-

The public architecture explains responsibilities without exposing proprietary internals. That is the right level for an integration guide.

-

7. A safe FFI smoke test

-

The manual's build-and-import path ends with a small import smoke. A decode smoke adds a direct parity check:

-
import numpy as np
-from qector_decoder_v3 import UnionFindDecoder
-
-checks = [[0, 1], [1, 2], [2, 3], [3, 4]]
-syndrome = np.array([0, 1, 0, 0], dtype=np.uint8)
-decoder = UnionFindDecoder(checks, n_qubits=5)
-correction = decoder.decode(syndrome)
-
-assert correction.dtype == np.uint8
-assert correction.shape == (5,)
-

Then verify H @ correction == syndrome with the package's structured result and validation helpers. The invariant should stay visible in tests, even when production code uses the richer helpers.

-

8. Packaging consequences

-

The release path publishes deterministic binary wheels only; no source distribution is shipped. A wheel smoke test therefore matters: install the built wheel, import it, decode a known reachable syndrome, and assert the parity equation.

-

The v1.0.0 wheels are CPU-only. No published wheel ships a CUDA binary. CUDA and OpenCL are build feature-gates: OpenCL is a documented source-build path, and CUDA support is compiled in through its own build configuration. Whether a GPU path is actually usable is a runtime question, probed with a runtime check such as cuda_is_available(). Packaging, feature flags, driver, and device presence all belong in the environment block of any benchmark.

-

Takeaway

-

The FFI boundary is part of the decoder. Contiguous buffers, selective copying, GIL release, worker-local scratch, deterministic batches, and separate memory metrics are testable contracts. Treat them as architecture, not incidental optimization, and the Python-facing system becomes much easier to audit.

-

Reference

-

Guillaume Lessard, QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine, v1.0.0, August 2026. DOI: 10.5281/zenodo.21941046.

- - - diff --git a/blog/18_rust_pyo3_architecture.md b/blog/18_rust_pyo3_architecture.md deleted file mode 100644 index e8f0c830..00000000 --- a/blog/18_rust_pyo3_architecture.md +++ /dev/null @@ -1,123 +0,0 @@ -# Rust, PyO3, and QEC Memory Discipline at the FFI Boundary - -Author: Guillaume Lessard / qector.store -Series: QECTOR Decoder v3 companion notes, Post 18 -Source: QECTOR Decoder v3 Reference Manual v1.0.0 -Date: August 2026 -DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046) -Tags: Rust, PyO3, Python, FFI, Rayon, memory model, QEC systems - -## Abstract - -Quantum-error-correction software sits between numerical Python workflows and stateful, performance-sensitive decoder cores. QECTOR's v1.0.0 architecture uses Rust with PyO3 bindings, contiguous NumPy buffers, GIL release, Rayon batch workers, and reusable scratch state. This post explains the boundary as an engineering contract, shows what can be measured safely, and names the memory and threading properties that should be tested rather than assumed. - -## 1. The boundary has a shape - -The public decoder contract is simple: - -```text -input: check structure + reachable uint8 syndrome -output: uint8 correction with length n_qubits -gate: H @ correction == syndrome modulo 2 -``` - -The FFI layer must preserve shape, dtype, contiguity, and ownership long enough for the Rust core to consume the data safely. A mathematically correct decoder can still fail at integration time if Python sends a transposed batch, a non-contiguous view, or a dtype the binding reads differently. - -## 2. Contiguous buffers and selective repacking - -The manual documents contiguous `uint8` NumPy buffers across PyO3. The boundary repacks only when an input is non-contiguous or has the wrong dtype; it does not copy gratuitously. - -That policy creates two test cases: - -```text -contiguous uint8 input -> direct boundary path -non-contiguous/wrong dtype input -> explicit normalization path -``` - -Both paths must return the same correction and the same faithfulness result. The copy belongs to the cold or boundary path, never to the decoder's hot path. - -## 3. Releasing the GIL - -Decode calls release the Python GIL so compiled work can run alongside other Python threads. This suits independent batches or service workers, but it does not make every Rust data structure safe to share mutably. The documented design uses worker-local scratch and explicit ownership boundaries. - -The right concurrency test is not "many threads ran." It is: - -```text -same input + different worker count -> same output -batch decode == per-shot decode -prior calls do not change later output -``` - -Those properties are observable and can be locked with tests. - -## 4. Rayon and batch determinism - -Batch paths use Rayon data parallelism. Each worker keeps its own scratch so the output does not depend on row-to-worker assignment. That matters for Union-Find style paths, where several valid forests could otherwise yield different correction vectors. - -Determinism is a contract only when the implementation and the tests establish it. A parallel loop is not automatically deterministic. - -## 5. Reusable memory - -The hot paths allocate buffers sized to the graph, reset them in place, and grow only when the problem grows. The manual describes this as allocation-free hot-path construction for the relevant backends. - -Report memory in separate categories: - -| Category | Appropriate tool or evidence | -|---|---| -| Python allocations | `tracemalloc` | -| Process RSS | `psutil`, when installed | -| Native Rust heap | Backend diagnostics | -| GPU memory | Vendor/runtime diagnostics | - -Do not merge these numbers into one "memory usage" figure. They measure different allocators and lifetimes. - -## 6. The module map - -The reference manual groups the core into: - -```text -matching exact and sparse MWPM -union-find graphlike single and batch paths -BP-OSD belief propagation, GF(2), ambiguity components -GPU CUDA/OpenCL batch kernels -temporal space-time and streaming primitives -routing auto, cascade, two-stage -learned GNN and neural predecoders -services MCP, gRPC, metrics, licensing -utilities bit packing, GF(2), shared infrastructure -``` - -The public architecture explains responsibilities without exposing proprietary internals. That is the right level for an integration guide. - -## 7. A safe FFI smoke test - -The manual's build-and-import path ends with a small import smoke. A decode smoke adds a direct parity check: - -```python -import numpy as np -from qector_decoder_v3 import UnionFindDecoder - -checks = [[0, 1], [1, 2], [2, 3], [3, 4]] -syndrome = np.array([0, 1, 0, 0], dtype=np.uint8) -decoder = UnionFindDecoder(checks, n_qubits=5) -correction = decoder.decode(syndrome) - -assert correction.dtype == np.uint8 -assert correction.shape == (5,) -``` - -Then verify `H @ correction == syndrome` with the package's structured result and validation helpers. The invariant should stay visible in tests, even when production code uses the richer helpers. - -## 8. Packaging consequences - -The release path publishes deterministic binary wheels only; no source distribution is shipped. A wheel smoke test therefore matters: install the built wheel, import it, decode a known reachable syndrome, and assert the parity equation. - -The v1.0.0 wheels are CPU-only. No published wheel ships a CUDA binary. CUDA and OpenCL are build feature-gates: OpenCL is a documented source-build path, and CUDA support is compiled in through its own build configuration. Whether a GPU path is actually usable is a runtime question, probed with a runtime check such as `cuda_is_available()`. Packaging, feature flags, driver, and device presence all belong in the environment block of any benchmark. - -## Takeaway - -The FFI boundary is part of the decoder. Contiguous buffers, selective copying, GIL release, worker-local scratch, deterministic batches, and separate memory metrics are testable contracts. Treat them as architecture, not incidental optimization, and the Python-facing system becomes much easier to audit. - -## Reference - -Guillaume Lessard, *QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine*, v1.0.0, August 2026. DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046). diff --git a/blog/19ReleaseLicensing/index.html b/blog/19ReleaseLicensing/index.html deleted file mode 100644 index 39bf640e..00000000 --- a/blog/19ReleaseLicensing/index.html +++ /dev/null @@ -1,201 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Shipping a QEC Decoder Responsibly · QECTOR Blog - - - - - - - - - - - - - -
Skip to main content
Back to All Articles
August 2026DeploymentBy Guillaume Lessard · 4 min read

Shipping a QEC Decoder Responsibly

API stability, wheels, offline licensing, release gates, and the difference between local and network deployment.

Author: Guillaume Lessard / qector.store
-Series: QECTOR Decoder v3 companion notes, Post 19
-Source: QECTOR Decoder v3 Reference Manual v1.0.0
-Date: August 2026
-DOI: 10.5281/zenodo.21941046 -Tags: release engineering, API stability, licensing, deployment security, QEC software

-

Abstract

-

Research code becomes infrastructure when other people install it, automate it, and place it near sensitive circuits or hardware. The QECTOR v1.0.0 manual treats release engineering, licensing, API stability, and service hardening as part of the technical contract. This post summarizes those boundaries so an evaluator can tell a stable Python symbol from a provisional service surface, and a local research library from a network deployment.

-

1. API stability has layers

-

The manual separates public surfaces into stable, provisional, and internal detail.

-

Stable symbols for the whole 1.x line include:

-
UnionFindDecoder, BlossomDecoder, SparseBlossomDecoder
-NativeAutoDecoder
-the four generate_*_code_checks helpers
-set_license_key, get_license_info
-the Sinter and qiskit-qec entry points
-DecodeResult
-

Provisional or workload-sensitive surfaces include batch aliases, AutoDecoder ordering, streaming constructors, BP-OSD tuning kwargs, GPU batch constructors, and network surfaces. A provisional symbol is supported and tested, but its exact shape may change in a 1.x release with a changelog note.

-

The distinction lets downstream teams plan upgrades without treating every experimental option as frozen.

-

2. Wheels only

-

The 1.0.0 release (published 2026-08-06) ships deterministic binary wheels on PyPI and no source distribution: 15 wheels covering CPython 3.9 through 3.13 on Windows (win_amd64), Linux (manylinux x86_64), and macOS (arm64), with requires-python >= 3.9 and a PolyForm-Noncommercial-1.0.0 license. The proprietary Rust core is delivered into the build pipeline through a chunked, hash-anchored packaging mechanism, and the manifest is checked before building so stale or corrupted input fails explicitly.

-

The user-facing implication is simple:

-
pip install -> resolve a supported wheel
-wheel smoke -> import, decode, assert H @ c == s
-

Read the platform and feature flags from the release notes of the installed version. No CUDA wheel is published for 1.0.0: do not assume a GPU is present, and do not assume an OpenCL wheel exists when the manual says OpenCL requires a source build.

-

3. License tiers are enforced locally

-

The v1.0.0 manual documents these distance caps:

- - - - - - - - - - - - - - - - - - - - - - - - - -
TierMaximum distanceGPU batch
Community7No
Pro19No
Enterprise63Yes
-

Tokens are verified offline in the Rust core using Ed25519, with expiry and an offline revocation list. Decoding never makes a blocking network call.

-

Key resolution order:

-
QECTOR_LICENSE_KEY
-QECTOR_LICENSE_FILE
-~/.qector/license.key
-

An explicitly set but unreadable license-file path is invalid, not a silent downgrade. QECTOR_ENFORCE=1 turns tier violations into hard errors; the default mode logs a warning. QECTOR_SILENT=1 quiets the licensing output.

-

Hardware availability and licensing are separate facts. A device probe can report a GPU even when the requested tier is not active.

-

4. Pre-flight gates

-

The documented release gates include:

-
    -
  1. Rust tests with default and no-default features.
  2. -
  3. Clippy with warnings denied.
  4. -
  5. Python lint and format checks.
  6. -
  7. The Python validation suite.
  8. -
  9. Wheel import/decode smoke testing.
  10. -
  11. Dependency audit according to release policy.
  12. -
-

The wheel smoke test matters most for a proprietary core: it validates the artifact users install, not just the source tree that built it.

-

5. Local library versus service

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ModeStatusGuidance
Local CPU librarySupported public pathPreferred for research and evaluation
CUDA/OpenCL batchOptional local pathControlled driver/runtime setup
Docker RESTDemo/local serviceDo not expose directly to the public internet
gRPC/MCP/metricsFeature-gatedDeployment review required
SaaS/hosted APIContact-only betaSeparate commercial agreement and hardening
OEM/embeddedContact-only partner pathValidate hardware and support scope
-

Transport wrappers reuse the same decoder contracts, but transport security is not inherited from the local library.

-

6. Service hardening checklist

-

Before a network-accessible deployment:

-
pin the release and Cargo.lock
-generate dependency inventories
-disable unused optional services and GPU features
-run import and local correctness smoke tests
-place the service behind TLS and a reverse proxy
-authenticate and authorize clients
-enforce request size, rate, timeout, and resource limits
-redact customer inputs and proprietary circuits from logs
-document owner, rollback, update, and incident paths
-

The manual notes built-in request and frame caps on some surfaces, but treats them as necessary rather than sufficient hardening.

-

7. Commercial boundaries

-

Network use, hosted APIs, OEM integration, internal commercial use, product integration, paid consulting, and commercial benchmarking require the written commercial scope described by the project. A public post can explain the boundary without embedding tokens, private keys, customer circuits, or internal fulfillment details.

-

8. Version promotion

-

A provisional symbol becomes stable only after a dated promotion entry, the same property, regression, and example test bar, an update to the stable API document, and a changelog note. The process generalizes: it turns "we have used this for a while" into an auditable compatibility decision.

-

Takeaway

-

Shipping a decoder responsibly means shipping the artifact, its compatibility promise, its license boundary, and its deployment assumptions. Wheels, tests, offline token verification, service hardening, and promotion rules are not administrative extras; they are what make a research decoder safe to integrate.

-

Reference

-

Guillaume Lessard, QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine, v1.0.0, August 2026. DOI: 10.5281/zenodo.21941046.

- - - diff --git a/blog/19_release_licensing.md b/blog/19_release_licensing.md deleted file mode 100644 index 2abfde8e..00000000 --- a/blog/19_release_licensing.md +++ /dev/null @@ -1,128 +0,0 @@ -# Shipping a QEC Decoder Responsibly: API Stability, Wheels, and Deployment Gates - -Author: Guillaume Lessard / qector.store -Series: QECTOR Decoder v3 companion notes, Post 19 -Source: QECTOR Decoder v3 Reference Manual v1.0.0 -Date: August 2026 -DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046) -Tags: release engineering, API stability, licensing, deployment security, QEC software - -## Abstract - -Research code becomes infrastructure when other people install it, automate it, and place it near sensitive circuits or hardware. The QECTOR v1.0.0 manual treats release engineering, licensing, API stability, and service hardening as part of the technical contract. This post summarizes those boundaries so an evaluator can tell a stable Python symbol from a provisional service surface, and a local research library from a network deployment. - -## 1. API stability has layers - -The manual separates public surfaces into stable, provisional, and internal detail. - -Stable symbols for the whole 1.x line include: - -```text -UnionFindDecoder, BlossomDecoder, SparseBlossomDecoder -NativeAutoDecoder -the four generate_*_code_checks helpers -set_license_key, get_license_info -the Sinter and qiskit-qec entry points -DecodeResult -``` - -Provisional or workload-sensitive surfaces include batch aliases, AutoDecoder ordering, streaming constructors, BP-OSD tuning kwargs, GPU batch constructors, and network surfaces. A provisional symbol is supported and tested, but its exact shape may change in a 1.x release with a changelog note. - -The distinction lets downstream teams plan upgrades without treating every experimental option as frozen. - -## 2. Wheels only - -The 1.0.0 release (published 2026-08-06) ships deterministic binary wheels on PyPI and no source distribution: 15 wheels covering CPython 3.9 through 3.13 on Windows (win_amd64), Linux (manylinux x86_64), and macOS (arm64), with `requires-python >= 3.9` and a PolyForm-Noncommercial-1.0.0 license. The proprietary Rust core is delivered into the build pipeline through a chunked, hash-anchored packaging mechanism, and the manifest is checked before building so stale or corrupted input fails explicitly. - -The user-facing implication is simple: - -```text -pip install -> resolve a supported wheel -wheel smoke -> import, decode, assert H @ c == s -``` - -Read the platform and feature flags from the release notes of the installed version. No CUDA wheel is published for 1.0.0: do not assume a GPU is present, and do not assume an OpenCL wheel exists when the manual says OpenCL requires a source build. - -## 3. License tiers are enforced locally - -The v1.0.0 manual documents these distance caps: - -| Tier | Maximum distance | GPU batch | -|---|---:|---| -| Community | 7 | No | -| Pro | 19 | No | -| Enterprise | 63 | Yes | - -Tokens are verified offline in the Rust core using Ed25519, with expiry and an offline revocation list. Decoding never makes a blocking network call. - -Key resolution order: - -```text -QECTOR_LICENSE_KEY -QECTOR_LICENSE_FILE -~/.qector/license.key -``` - -An explicitly set but unreadable license-file path is invalid, not a silent downgrade. `QECTOR_ENFORCE=1` turns tier violations into hard errors; the default mode logs a warning. `QECTOR_SILENT=1` quiets the licensing output. - -Hardware availability and licensing are separate facts. A device probe can report a GPU even when the requested tier is not active. - -## 4. Pre-flight gates - -The documented release gates include: - -1. Rust tests with default and no-default features. -2. Clippy with warnings denied. -3. Python lint and format checks. -4. The Python validation suite. -5. Wheel import/decode smoke testing. -6. Dependency audit according to release policy. - -The wheel smoke test matters most for a proprietary core: it validates the artifact users install, not just the source tree that built it. - -## 5. Local library versus service - -| Mode | Status | Guidance | -|---|---|---| -| Local CPU library | Supported public path | Preferred for research and evaluation | -| CUDA/OpenCL batch | Optional local path | Controlled driver/runtime setup | -| Docker REST | Demo/local service | Do not expose directly to the public internet | -| gRPC/MCP/metrics | Feature-gated | Deployment review required | -| SaaS/hosted API | Contact-only beta | Separate commercial agreement and hardening | -| OEM/embedded | Contact-only partner path | Validate hardware and support scope | - -Transport wrappers reuse the same decoder contracts, but transport security is not inherited from the local library. - -## 6. Service hardening checklist - -Before a network-accessible deployment: - -```text -pin the release and Cargo.lock -generate dependency inventories -disable unused optional services and GPU features -run import and local correctness smoke tests -place the service behind TLS and a reverse proxy -authenticate and authorize clients -enforce request size, rate, timeout, and resource limits -redact customer inputs and proprietary circuits from logs -document owner, rollback, update, and incident paths -``` - -The manual notes built-in request and frame caps on some surfaces, but treats them as necessary rather than sufficient hardening. - -## 7. Commercial boundaries - -Network use, hosted APIs, OEM integration, internal commercial use, product integration, paid consulting, and commercial benchmarking require the written commercial scope described by the project. A public post can explain the boundary without embedding tokens, private keys, customer circuits, or internal fulfillment details. - -## 8. Version promotion - -A provisional symbol becomes stable only after a dated promotion entry, the same property, regression, and example test bar, an update to the stable API document, and a changelog note. The process generalizes: it turns "we have used this for a while" into an auditable compatibility decision. - -## Takeaway - -Shipping a decoder responsibly means shipping the artifact, its compatibility promise, its license boundary, and its deployment assumptions. Wheels, tests, offline token verification, service hardening, and promotion rules are not administrative extras; they are what make a research decoder safe to integrate. - -## Reference - -Guillaume Lessard, *QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine*, v1.0.0, August 2026. DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046). diff --git a/blog/20EcosystemIntegration/index.html b/blog/20EcosystemIntegration/index.html deleted file mode 100644 index cc98da18..00000000 --- a/blog/20EcosystemIntegration/index.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Stim, Sinter, PyMatching, and Qiskit Integration · QECTOR Blog - - - - - - - - - - - - - -
Skip to main content
Back to All Articles
August 2026EcosystemBy Guillaume Lessard · 4 min read

Stim, Sinter, PyMatching, and Qiskit Integration

Connect QECTOR to common quantum software workflows while preserving detector, observable, and noise contracts.

Author: Guillaume Lessard / qector.store
-Series: QECTOR Decoder v3 companion notes, Post 20
-Source: QECTOR Decoder v3 Reference Manual v1.0.0
-Date: August 2026
-DOI: 10.5281/zenodo.21941046 -Tags: Stim, Sinter, PyMatching, Qiskit, quantum software integration, QEC APIs

-

Abstract

-

Decoder research is most useful when it fits the surrounding ecosystem. QECTOR v1.0.0 documents a PyMatching-compatible shim, Sinter decoder entry points, a Qiskit plugin, a DEM parser, and provisional service surfaces. This post describes the integration boundaries and shows how to keep the shared syndrome, observable, and noise-model contracts intact when swapping a decoder into an existing workflow.

-

1. The common pipeline

-

Most ecosystem integrations follow one shape:

-
circuit -> detector error model -> detector samples -> decoder -> observables
-

The decoder must not change the circuit or silently change the detector convention. It consumes the same DEM-derived problem and returns a correction whose detector boundary matches the sampled syndrome.

-

2. Stim and the DEM path

-

The DEM module accepts a Stim detector error model object or text and handles the standard statements. A typical flow:

-
from qector_decoder_v3 import dem
-
-dem_model = dem.from_stim(
-    circuit.detector_error_model(decompose_errors=True)
-)
-
-if dem_model.is_graphlike:
-    dem_model = dem_model.collapse_to_graph()
-decoder = dem_model.make_decoder("blossom")
-

For a non-graphlike model, choose BP-OSD instead of forcing a matching path. Record decompose_errors, the collapse settings, raw and collapsed mechanism counts, and the observable mapping with the result.

-

3. The PyMatching-compatible shim

-

The documented compatibility surface covers the subset pipelines actually use:

-
from qector_decoder_v3.pymatching import Matching
-
-m = Matching.from_check_matrix(check_matrix)
-m2 = Matching.from_detector_error_model(dem_model)
-

The shim also exposes add_edge and add_boundary_edge for graph construction. It exists for migration: one import changes while the caller keeps a familiar construction and decode shape. Compatibility does not mean every PyMatching option or every graph assumption is identical. Validate the returned correction against the caller's matrix and boundary convention.

-

4. Sinter entry points

-

QECTOR exposes five Sinter decoder factories: qector_blossom, qector_belief, qector_unionfind, qector_bposd, and qector_unionfind_unweighted. The value goes beyond convenience. Sinter gives the community a standard harness for using the same circuit, samples, and logical scoring across decoder rows.

-

For a fair comparison, hold constant:

-
same circuit
-same DEM settings
-same samples
-same observable scoring
-same shots and seed protocol
-different decoder row only
-

Do not let a Sinter row hide whether the decoder was weighted, batched, learned, or routed through a fallback. Those options belong in the report metadata.

-

5. Qiskit results

-

The optional Qiskit plugin (qector=qector_decoder_v3.qiskit_plugin) decodes syndrome counts from Qiskit results and also supports a raw-dictionary mode without Qiskit installed. That makes the adapter useful even where Qiskit exists only at the experiment boundary.

-

The adapter still needs a declared ordering for checks, qubits, and counts. A count dictionary with the right number of bits can encode the wrong syndrome if the ordering is undocumented.

-

6. Observables and logical scoring

-

The adapter must keep detector corrections and logical observables distinct. The correction is checked with Hc=s; the logical outcome is scored by the observable map. A stabilizer-equivalent correction can differ from the sampled physical error while giving the same logical outcome.

-

This is the most common integration mistake: exporting an edge list or correction vector and comparing it directly with a sampled error vector. The correct comparison happens in observable space.

-

7. Service surfaces

-

The engine documents REST, gRPC, MCP stdio, and Prometheus metrics surfaces. They dispatch to the same core decoder contracts and do not reimplement decoding. They are provisional, so a deployment review is required for authentication, authorization, TLS, rate limits, request size, timeouts, audit logs, and resource quotas.

-

An MCP client should treat decoder type, input shape, and frame size as explicit validated fields. A network wrapper is not automatically safe because the local library is safe.

-

8. Workbench and artifacts

-

The Workbench controller loads real .stim and .dem files, runs decode benchmarks through a cancellable job queue, and exports JSON/CSV/PDF artifacts with an environment snapshot and commit. The integration pattern is traceability: every number should point back to an input file, a decoder configuration, and an environment.

-

9. A migration checklist

-

When replacing an existing decoder:

-
    -
  1. Freeze the check and qubit ordering.
  2. -
  3. Export the original DEM and observable map.
  4. -
  5. Confirm graphlike eligibility before selecting matching.
  6. -
  7. Use the same detector samples for both decoders.
  8. -
  9. Validate Hc=s on every row.
  10. -
  11. Compare logical observables, not raw corrections.
  12. -
  13. Record weights, fallback routes, package versions, and seed.
  14. -
  15. Preserve raw artifacts and hashes.
  16. -
-

This workflow makes a one-line import change scientifically useful, not just syntactically successful.

-

Takeaway

-

Integration is a contract-translation problem. Stim supplies detectors and mechanisms, Sinter supplies a comparison harness, PyMatching compatibility lowers the migration cost, and Qiskit adapters connect experiment results. QECTOR's invariant stays the anchor: the returned correction must reproduce the syndrome, and the logical result must be scored in observable space.

-

Reference

-

Guillaume Lessard, QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine, v1.0.0, August 2026. DOI: 10.5281/zenodo.21941046.

- - - diff --git a/blog/20_ecosystem_integration.md b/blog/20_ecosystem_integration.md deleted file mode 100644 index 2ecba5e7..00000000 --- a/blog/20_ecosystem_integration.md +++ /dev/null @@ -1,115 +0,0 @@ -# Integrating QECTOR With Stim, Sinter, PyMatching, and Qiskit - -Author: Guillaume Lessard / qector.store -Series: QECTOR Decoder v3 companion notes, Post 20 -Source: QECTOR Decoder v3 Reference Manual v1.0.0 -Date: August 2026 -DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046) -Tags: Stim, Sinter, PyMatching, Qiskit, quantum software integration, QEC APIs - -## Abstract - -Decoder research is most useful when it fits the surrounding ecosystem. QECTOR v1.0.0 documents a PyMatching-compatible shim, Sinter decoder entry points, a Qiskit plugin, a DEM parser, and provisional service surfaces. This post describes the integration boundaries and shows how to keep the shared syndrome, observable, and noise-model contracts intact when swapping a decoder into an existing workflow. - -## 1. The common pipeline - -Most ecosystem integrations follow one shape: - -```text -circuit -> detector error model -> detector samples -> decoder -> observables -``` - -The decoder must not change the circuit or silently change the detector convention. It consumes the same DEM-derived problem and returns a correction whose detector boundary matches the sampled syndrome. - -## 2. Stim and the DEM path - -The DEM module accepts a Stim detector error model object or text and handles the standard statements. A typical flow: - -```python -from qector_decoder_v3 import dem - -dem_model = dem.from_stim( - circuit.detector_error_model(decompose_errors=True) -) - -if dem_model.is_graphlike: - dem_model = dem_model.collapse_to_graph() -decoder = dem_model.make_decoder("blossom") -``` - -For a non-graphlike model, choose BP-OSD instead of forcing a matching path. Record `decompose_errors`, the collapse settings, raw and collapsed mechanism counts, and the observable mapping with the result. - -## 3. The PyMatching-compatible shim - -The documented compatibility surface covers the subset pipelines actually use: - -```python -from qector_decoder_v3.pymatching import Matching - -m = Matching.from_check_matrix(check_matrix) -m2 = Matching.from_detector_error_model(dem_model) -``` - -The shim also exposes `add_edge` and `add_boundary_edge` for graph construction. It exists for migration: one import changes while the caller keeps a familiar construction and decode shape. Compatibility does not mean every PyMatching option or every graph assumption is identical. Validate the returned correction against the caller's matrix and boundary convention. - -## 4. Sinter entry points - -QECTOR exposes five Sinter decoder factories: `qector_blossom`, `qector_belief`, `qector_unionfind`, `qector_bposd`, and `qector_unionfind_unweighted`. The value goes beyond convenience. Sinter gives the community a standard harness for using the same circuit, samples, and logical scoring across decoder rows. - -For a fair comparison, hold constant: - -```text -same circuit -same DEM settings -same samples -same observable scoring -same shots and seed protocol -different decoder row only -``` - -Do not let a Sinter row hide whether the decoder was weighted, batched, learned, or routed through a fallback. Those options belong in the report metadata. - -## 5. Qiskit results - -The optional Qiskit plugin (`qector=qector_decoder_v3.qiskit_plugin`) decodes syndrome counts from Qiskit results and also supports a raw-dictionary mode without Qiskit installed. That makes the adapter useful even where Qiskit exists only at the experiment boundary. - -The adapter still needs a declared ordering for checks, qubits, and counts. A count dictionary with the right number of bits can encode the wrong syndrome if the ordering is undocumented. - -## 6. Observables and logical scoring - -The adapter must keep detector corrections and logical observables distinct. The correction is checked with `Hc=s`; the logical outcome is scored by the observable map. A stabilizer-equivalent correction can differ from the sampled physical error while giving the same logical outcome. - -This is the most common integration mistake: exporting an edge list or correction vector and comparing it directly with a sampled error vector. The correct comparison happens in observable space. - -## 7. Service surfaces - -The engine documents REST, gRPC, MCP stdio, and Prometheus metrics surfaces. They dispatch to the same core decoder contracts and do not reimplement decoding. They are provisional, so a deployment review is required for authentication, authorization, TLS, rate limits, request size, timeouts, audit logs, and resource quotas. - -An MCP client should treat decoder type, input shape, and frame size as explicit validated fields. A network wrapper is not automatically safe because the local library is safe. - -## 8. Workbench and artifacts - -The Workbench controller loads real `.stim` and `.dem` files, runs decode benchmarks through a cancellable job queue, and exports JSON/CSV/PDF artifacts with an environment snapshot and commit. The integration pattern is traceability: every number should point back to an input file, a decoder configuration, and an environment. - -## 9. A migration checklist - -When replacing an existing decoder: - -1. Freeze the check and qubit ordering. -2. Export the original DEM and observable map. -3. Confirm graphlike eligibility before selecting matching. -4. Use the same detector samples for both decoders. -5. Validate `Hc=s` on every row. -6. Compare logical observables, not raw corrections. -7. Record weights, fallback routes, package versions, and seed. -8. Preserve raw artifacts and hashes. - -This workflow makes a one-line import change scientifically useful, not just syntactically successful. - -## Takeaway - -Integration is a contract-translation problem. Stim supplies detectors and mechanisms, Sinter supplies a comparison harness, PyMatching compatibility lowers the migration cost, and Qiskit adapters connect experiment results. QECTOR's invariant stays the anchor: the returned correction must reproduce the syndrome, and the logical result must be scored in observable space. - -## Reference - -Guillaume Lessard, *QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine*, v1.0.0, August 2026. DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046). diff --git a/blog/index.html b/blog/index.html deleted file mode 100644 index cdc0a5c3..00000000 --- a/blog/index.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - QEC Field Notes · QECTOR Blog - - - - - - - - - - -
Skip to main content

Engineering
Fault Tolerance

Field notes from parity checks to production interfaces: mathematics, decoder design, evidence, and systems practice for quantum error correction.

Showing 20 of 20 field notes. Claims are scoped to the v1.0.0 reference manual.

Article
Foundations

Syndrome Faithfulness: The Decoder Contract

The GF(2) invariant Hc=s, logical cosets, degeneracy, and graphlike eligibility explained from first principles.

August 2026
Article
Decoder Algorithms

Exact Blossom Decoding for Graphlike QEC

How weighted MWPM, Edmonds' primal-dual view, path boundaries, and sparse candidate escalation fit together.

August 2026
Article
Decoder Algorithms

Sparse Blossom and Event-Driven Growth

Region states, collision times, tight edges, radix heaps, and the tested scope of Sparse Blossom.

August 2026
Article
Decoder Algorithms

UF-01: Parity, Peeling, and Graphlike Decoding

Cluster parity, spanning-forest peeling, weighted growth, zero-allocation structure, and domain boundaries.

August 2026
Article
qLDPC and AI

BP-OSD for qLDPC Hypergraphs

Log-domain belief propagation, ordered statistics, residual GF(2) solving, and faithful non-graphlike decoding.

August 2026
Article
qLDPC and AI

Ambiguity Clustering and Learned Predecoders

Freeze confident qubits, solve ambiguous components, and add learned priors without moving the correctness proof.

August 2026
Article
Multi-Round

Space-Time Decoding with Noisy Measurements

Detector differencing, temporal and spatial weights, measurement glitches, and streaming scope.

August 2026
Article
Orchestration

Routing, Cascades, and Two-Stage CSS Decoding

Structural backend eligibility, fallback verification, hybrid acceptance, and CSS sector feedforward.

August 2026
Article
Systems

GPU Batch Decoding and Tested Bit Identity

Per-shot GPU state isolation, deterministic Union-Find, scoped CPU/GPU identity, and deployment gates.

August 2026
Article
Evidence

Evidence-First QEC Architecture and Benchmarks

The v1.0.0 backend map, logical scoring, Wilson intervals, metadata, release gates, and claim boundaries.

August 2026
Article
Foundations

A Hand-Worked Steane Decode

Compute a Steane syndrome by hand and see why stabilizer cosets matter more than raw correction equality.

August 2026
Article
Foundations

Rotated Surface Code d=3

Nine data qubits, boundaries, graphlike eligibility, logical strings, and a complete structural audit.

August 2026
Article
Noise Models

Detector Error Models from Faults to Graphs

Parse DEMs, classify hyperedges, collapse parallel mechanisms, set weights, and preserve observables.

August 2026
Article
Noise Models

Weighted Decoding and Likelihood Priors

Why log((1-p)/p) belongs in the graph and how matching, Union-Find, and space-time paths use weights.

August 2026
Article
Evidence

Logical Error Rates Without the Wrong Metric

Score observables, compute Wilson intervals, keep noise models comparable, and report reproducible LERs.

August 2026
Article
Orchestration

Choosing a Decoder From the Matrix

A practical decision guide for graphlike, qLDPC, space-time, streaming, CSS, and batch workloads.

August 2026
Article
Evidence

Reproducible QEC Benchmarks

Separate correctness from performance and make every benchmark claim traceable to an artifact and hash.

August 2026
Article
Systems

Rust, PyO3, and QEC Memory Discipline

FFI buffers, selective repacking, GIL release, Rayon worker state, and memory metrics at the Python boundary.

August 2026
Article
Deployment

Shipping a QEC Decoder Responsibly

API stability, wheels, offline licensing, release gates, and the difference between local and network deployment.

August 2026
Article
Ecosystem

Stim, Sinter, PyMatching, and Qiskit Integration

Connect QECTOR to common quantum software workflows while preserving detector, observable, and noise contracts.

August 2026
- - - diff --git a/changelog/index.html b/changelog/index.html deleted file mode 100644 index bbbbbec0..00000000 --- a/changelog/index.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Changelog · QECTOR - - - - - - - - - - -
Skip to main content
Latest: v1.0.1 Decoder (2026-11-06) · Claude Plugin v2.0.1 · Workbench v1.0.7

Changelog

Version history for QECTOR Decoder v3. Exact release dates on PyPI. All artifacts and validation on GitHub.

Get release alerts

No mailing list to join: subscribe with the tools you already use.

LATEST

v1.0.1 · 2026-11-06 (current)

Full notes in the GitHub release.

  • Code families corrected: rotated and unrotated surface, heavy-hex and colour codes now build at their labelled distance; Union-Find peeling and GPU kernel parity fixed
  • 18 binary wheels: CPython 3.9-3.14 on Windows x64, Linux x86_64 (manylinux_2_17) and macOS 11+ arm64
  • Every wheel is installed and decoded on its own OS (H·c = s checks) before publishing; per-platform receipts ship as platform-proof.json in the release
  • Signed build provenance (Sigstore) for every wheel, plus PyPI attestations; published through Trusted Publishing with no API token
  • Licensing: every paid token (Pro or Enterprise) unlocks GPU batch decoding; licence metadata is now a standard SPDX expression (PolyForm Noncommercial 1.0.0)
  • QECTOR_OFFLINE=1 keeps the native core fully offline; nine security advisories in optional network dependencies fixed (rustls, webpki, h2)
  • Sinter: pass custom_decoders=qector_sinter_decoders() to sinter.collect()

v1.0.0 · 2026-08-06 (first stable release)

Exact release dates on PyPI.

  • First stable (v1) release: semantic-versioning frozen; the public API is governed by documented stability tiers (Stable / Workload-sensitive / Experimental / Internal detail)
  • Ecosystem entry points: five Sinter decoders (qector_blossom, qector_belief, qector_unionfind, and more) and a qiskit-qec plugin
  • New decoder families: AmbiguityClusterDecoder, TwoStageDecoder, ColourCodeDecoder (opt-in method="cluster_bposd")
  • Relay-BP layered serial BP schedule (bp_method="relay"), CS-OSD(lambda, w) with configurable osd_lambda, and LLR message damping in BP-OSD
  • Weighted Union-Find on GPU: CUDABatchDecoder / OpenCLBatchDecoder accept edge_weights, plus precision="f64" double-precision growth
  • qector decode / qector bench / qector serve CLI and qector-doctor (environment diagnostic)
  • pymatching submodule shim (from qector_decoder_v3.pymatching import Matching); DemModel.make_decoder covers all native families
  • SparseBlossomDecoder hot path zero-allocation (thread-local SbScratch); six Rust panic-to-abort paths removed; license hardening (v2 tokens with tier + expiry)
  • Binary wheels (cp39-cp313, Windows amd64 / Linux x86_64 / macOS 11.0+ arm64); no sdist
  • Official QECTOR Decoder v3 reference manual v1.0.0 (DOI 10.5281/zenodo.21941046)
  • Free QECTOR Workbench (current): Comprehensive MCP tools, 19 named kinds (17 concrete decoder configurations plus AutoDecoder and Auto Router), 10 code families including qLDPC and colour codes, visual circuit builder, and a self/auto-debug layer verifying H·c = s on every decode
  • No universal benchmark figures are published on the site; qector bench ships with the package for measuring on your own hardware

Verified PyPI release dates · UTC

  • No v0.7.1 release appears in the public PyPI history; it is intentionally omitted.
  • Dates below are PyPI upload dates, not inferred development or local file dates.
  • v0.7.0 · 2026-08-02 · Published PyPI milestone
  • v0.6.9 · 2026-07-26 · Published PyPI milestone
  • v0.6.8 · 2026-07-22 · Published PyPI milestone
  • v0.6.6 · 2026-07-12 · Published PyPI milestone
  • v0.6.2 · 2026-07-07 · Published PyPI milestone
  • v0.6.1 · 2026-07-05 · Published PyPI milestone
  • v0.6.0 · 2026-07-05 · Published PyPI milestone
  • v0.5.9 · 2026-07-05 · Published PyPI milestone
  • v0.5.8 · 2026-07-02 · Published PyPI milestone
  • v0.5.7 · 2026-07-02 · Published PyPI milestone
  • v0.5.6 · 2026-06-29 · Published PyPI milestone
  • v0.5.5 · 2026-06-28 · Published PyPI milestone
  • v0.5.4 · 2026-06-27 · Published PyPI milestone
  • v0.5.3 · 2026-06-25 · Published PyPI milestone
  • v0.5.2 · 2026-06-25 · Published PyPI milestone
  • v0.5.1 · 2026-06-24 · Published PyPI milestone
  • v0.5.0 · 2026-06-24 · First recorded PyPI release
- - - diff --git a/claude-plugin/index.html b/claude-plugin/index.html deleted file mode 100644 index 3b270ff8..00000000 --- a/claude-plugin/index.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - QECTOR Claude Plugin · Quantum Error Correction for Claude Code - - - - - - - - - - -
Skip to main content
ANTHROPIC CLAUDE CODE & DESKTOP PLUGIN · v2.0.1 · published 2026-11-06

QECTOR Claude Plugin

Empower Claude with local Quantum Error Correction engineering. Release v2.0.1 runs on qector-decoder-v3 1.0.1. The default qector-secure server is air-gapped, integrity-checked and validates every request and response against JSON Schema (12 tools). It ships with 28 domain skills, 5 specialized agents and 11 slash commands; 29 research tools and 3 admin tools are opt-in. Every dependency is pinned by SHA-256, and releases are signed.

Instant Marketplace Install
claude plugin marketplace add GuillaumeLessard/qector-claude-plugin
-claude plugin install qector@qector-tools

Independent plugin by iD01t Productions. Not affiliated with or endorsed by Anthropic.

Local-First Security

Local stdio transport by default. Parity matrices, syndromes, quantum circuits, and simulation artifacts are processed on the host machine; verify your host environment if confidentiality matters.

Strict Mathematics

Decodes are checked against H c = s (mod 2). Scored with logical cosets and Wilson 95% CIs.

App-Free Library

Built on the official qector-decoder-v3 1.0.x Rust/PyO3 wheel. No desktop GUI required.

Multi-Agent System

28 domain skills and 5 tailored agent personas designed for research, hardware design, verification, and engineering.

DOMAIN SKILLS ECOSYSTEM

28 Grounded QEC Skills

Each skill encodes verified domain rules and strict-math obligations to reduce hallucination risk and ground interactions in reproducible physics. The seven flagship skills below are a subset of the 28 skills shipped in the plugin.

qector-coreCore Ground Truth

Verified platform facts, 8 library MCP tools, 5 stable decoders, and strict API grounding to prevent hallucination.

Grounds tool names & signatures
Enforces strict math boundary
Local verification
qector-math-foundationsMathematical Axioms

Theorems 1-16 executable obligations over GF(2), syndrome equivalence H c = s (mod 2), Wilson 95% CIs, and coset scoring.

Theorem 1 fail-closed verification
Theorem 2 logical coset scoring
Wilson score intervals
qector-developerSDK & Engineering

Integration guidance for qector-decoder-v3 Python SDK, parity-check matrix generation, Sinter/Stim adapters, and CI/CD testing.

Python SDK best practices
Matrix construction helpers
Local test automation
qector-researcherQuantum Information Science

Threshold discovery workflows, noise modeling, Monte Carlo error simulations, and academic paper reproduction.

Code-capacity sweeps
Noise model parameterization
Reproducible artifact export
qector-hardware-engineerExperimental & Cryogenic

Hardware constraint modeling, heavy-hex/surface graph mapping, physical error rate profiling, and latency budgets.

Physical qubit layout mapping
Hardware latency analysis
Cryogenic error budgets
qector-educatorPedagogy & Concepts

Interactive tutorial creation, mathematical explanations of syndrome decoding, MWPM matching, and BP-OSD.

Step-by-step decoding explanations
Interactive code walkthroughs
Visual homology concepts
qector-sysadminOperations & Hygiene

Environment diagnostics, resource limits (MAX_CHECKS, MAX_QUBITS), safe file I/O, and deployment validation.

15-point runtime health check
DoS & memory limit guards
Platform compatibility audit

All 28 skills shipped in the plugin

qector-architectureqector-batch-decodingqector-bp-osdqector-codes-builderqector-coreqector-decoders-deep-diveqector-dem-pipelineqector-deploymentqector-developerqector-educatorqector-glossaryqector-hardware-engineerqector-ler-methodologyqector-licensingqector-math-foundationsqector-orchestrationqector-pymatching-compatqector-release-engineeringqector-reproducibilityqector-researcherqector-roadmapqector-servicesqector-sinterqector-space-timeqector-sysadminqector-testing-strategyqector-two-stage-cssqector-workbench
AGENT ROLES & PERSONAS

5 Specialized QEC Agents

Custom agent definitions for Claude Code configured with tailored instructions, prompt templates, and tool access boundaries.

qec-developer.md

QEC Software Engineer

Specialized in Python SDK integration, decoder benchmarking, matrix generation, and production deployment.

qec-researcher.md

QEC Research Scientist

Specialized in academic literature review, threshold sweeps, Wilson confidence intervals, and Monte Carlo studies.

qec-validator.md

Mathematical Proof Validator

Specialized in formal theorem checking, finite matrix verification, syndrome faithfulness, and local-only enforcement.

qec-sysadmin.md

Systems & Runtime Engineer

Specialized in Python environment health, MCP server stdio management, resource bounds, and packaging.

qec-hardware-engineer.md

Quantum Hardware Architect

Specialized in superconducting qubit topologies, heavy-hex grids, cryogenic latency constraints, and noise budgets.

MCP SERVER TOOL SURFACE

Local MCP Servers, Air-Gapped by Default

The v2.0.1 release separates local JSON-RPC 2.0 stdio capabilities by risk and purpose. The default qector-secure server (12 tools: the 8 stable tools below plus airgap_status, integrity_check, schema_catalog and audit_log_status) refuses network access and verifies its own files; qector-library (8 stable tools), qector-research (29 provisional tools), qector-admin (3 explicitly enabled tools), and qector-desktop-mcp (the safe Desktop profile).

Tool NameFunctionality & Mathematical Invariant
list_code_familiesLists available code families (Rotated Surface, Toric, Ring, Repetition, Color, Heavy-Hex, Hypergraph Product).
list_decodersLists the five stable decoder classes: UnionFind, FastUnionFind, Blossom (MWPM), SparseBlossom, NativeAuto.
get_license_infoReads live offline licensing tier and feature flags from the installed qector-decoder-v3 package.
decode_syndromeDecodes a binary syndrome with mandatory Theorem 1 fail-closed verification: H c = s (mod 2).
decode_singleExecutes a single-shot decode with logical-coset scoring (Theorem 2) against logical observables.
threshold_sweepRuns device-local code-capacity sweeps with Wilson 95% confidence intervals and SHA-256 sealed artifacts.
build_code_from_matrixValidates and compiles an arbitrary binary parity-check matrix with rank and observable analysis.
compat_reportAudits runtime health, wheel version, NumPy compatibility, and provisional feature boundaries.

qector-research server · 29 provisional tools

artifacts_sha256artifact_metadata_checkcode_distance_checkcode_export_matricescode_family_infocode_logicals_inspectcompat_reportdecode_faithfulness_checkdem_collapse_paralleldem_inspectenv_blockglossary_lookuphardware_probehot_path_microbenchlicense_active_checklogical_coset_scorepymatching_compat_checkqiskit_plugin_checkreproduction_command_lookupsinter_decoder_listsinter_task_templatestim_circuit_probetheorem_lookupwilson_ciwilson_tableworkload_hashget_capability_matrixget_evidence_policyget_runtime_provenance

qector-admin server · 3 privileged tools

Disabled by default. Requires QECTOR_ADMIN_ENABLED=1 and confirm=true for every administrative call.

system_setupconfigure_claude_desktopworkbench_probe

Installation & Setup

Configure QECTOR Claude Plugin v2.0.1 for Claude Code or Claude Desktop in seconds.

1

Claude Code Marketplace

Install directly via Claude Code marketplace registration:

# 1. Add marketplace repository
-claude plugin marketplace add GuillaumeLessard/qector-claude-plugin
-
-# 2. Install plugin
-claude plugin install qector@qector-tools
2

Local Plugin Directory

Clone the source repository and launch with the --plugin-dir flag:

git clone https://github.com/GuillaumeLessard/qector-claude-plugin.git
-cd qector-claude-plugin
-pip install --require-hashes -r requirements.lock
-claude --plugin-dir .

Mathematical Validation Gate

Verify all 16 Reference Manual theorems and 29 executable proof obligations locally on your machine:

# Run the complete public reference manual mathematical gate
-python scripts/run_manual_math_validation.py
-
-# Or run full pytest integration suite
-python -m pytest tests/test_reference_manual_math.py -v

Download Distribution Packages

Signed release archives: the Claude Code plugin, Claude Desktop extensions (.mcpb, including an offline bundle with a pinned wheelhouse), SHA256SUMS with its signature, an SBOM and provenance.

- - - diff --git a/commercial/index.html b/commercial/index.html deleted file mode 100644 index 8fc4251b..00000000 --- a/commercial/index.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Enterprise & OEM Licensing · QECTOR - - - - - - - - - - -
Skip to main content
Enterprise & OEM

Enterprise & OEM Licensing

For teams that put QECTOR in front of their own customers, inside their hardware, or under their own contract terms. From $25,000 a year, with licences that verify offline.

Hosted, SaaS and API

Offer QECTOR decoding to your own customers through a hosted service or API. Standard plans cover internal use only.

OEM and hardware bundling

Ship QECTOR inside your control stack, appliance or software product, with redistribution rights for your customers.

Named support engineer

A direct line to the developer, response targets written into the agreement, and help with integration and upgrades.

Custom terms

Signed agreement, your paper or ours, purchase orders and invoicing, security questionnaires and vendor onboarding.

How it works

  1. E-mail admin@qector.store or book a call: tell us the use case, deployment and timeline.
  2. Optional: start with the Pilot (60 days, creditable toward Lab) or a Validation Sprint on your workloads.
  3. We send a written proposal and agreement; Enterprise starts from $25,000 a year.
  4. Sign, pay by invoice or card, and receive offline licence tokens the same day.

Not sure you need Enterprise?

Internal research and production use, including GPU decoding, is covered by Pro ($79/month) or Lab ($9,900/year), bought online with no seat counts. You need Enterprise only for hosted or customer-facing use, OEM redistribution or custom contract terms. See the Commercial Licence Agreement and the Security & Trust pack for procurement.

- - - diff --git a/compare/index.html b/compare/index.html deleted file mode 100644 index 8360cc90..00000000 --- a/compare/index.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - QECTOR vs PyMatching, ldpc and fusion-blossom · Feature Comparison - - - - - - - - - - -
Skip to main content
Features, not speed claims · Checked November 2026

How QECTOR Compares

PyMatching, ldpc and fusion-blossom are excellent open-source decoders. QECTOR's case is breadth: many decoder families, qLDPC and GPU batch decoding behind one API, with every correction checked.

FeatureQECTOR Decoder v3PyMatchingldpcfusion-blossom
Main decodersUnion-Find, exact MWPM (Blossom, Sparse Blossom), BP-OSD, Relay-BPMWPM (Sparse Blossom), correlated matchingBP+OSD, BP+LSD, BeliefFind (BP + Union-Find)Parallel MWPM
Graph-like codes (surface, repetition)YesYes, its specialtyYesYes
qLDPC and non-graph-like codesYes (BP-OSD, Relay-BP)No: needs graph-like error modelsYes, its specialtyNo
Several families on one check matrixYes, one APIMatching onlyBP-based familyMatching only
GPU batch decodingYes (CUDA, OpenCL; paid plans)NoNoNo
Stim and SinterYesYesVia Sinter decoder classesVia Sinter
Core languageRust, Python APIC++, Python APIC++, Python APIRust, Python API
LicencePolyForm Noncommercial; commercial plansApache 2.0MITMIT
Commercial supportYes, with offline-verified licencesCommunityCommunityCommunity

Choose another tool when

  • You only decode surface or repetition codes with matching and want the most established tool: PyMatching is the reference.
  • You need a permissive open-source licence to redistribute the decoder inside your own product for free.
  • You only need BP-based qLDPC decoding and are happy on CPU: ldpc is mature and MIT-licensed.

Choose QECTOR when

  • You compare several decoder families on the same codes and want one API and one output format.
  • You work on qLDPC codes and want GPU batch decoding.
  • You need every correction checked against its syndrome, and commercial support with licences that work air-gapped.
  • You use Claude: the QECTOR Claude plugin brings verified decoding into Claude Code and Claude Desktop.

About this comparison

Features and licences come from each project's own PyPI page, checked on 6 November 2026. We publish no speed comparison: decoder speed depends on code, noise model, hardware and settings, so measure on your own workload. QECTOR ships a PyMatching compatibility shim (from qector_decoder_v3.pymatching import Matching) so you can switch and compare in place. Spotted something out of date? Write to admin@qector.store and we will correct it.

Sources: PyMatching · ldpc · fusion-blossom · QECTOR Decoder v3

- - - diff --git a/contact/index.html b/contact/index.html deleted file mode 100644 index 2ac02696..00000000 --- a/contact/index.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Contact · QECTOR - - - - - - - - - - -
Skip to main content
admin@qector.store - Mon-Fri EST/EDT

Contact Us

Commercial evaluation requests, technical inquiries, partnership discussions, and support - all handled directly by Guillaume Lessard / iD01t Productions.

Mailing address

QECTOR is developed by iD01t Productions.
Primary contact: Guillaume Lessard.
288 boul. des Ormeaux, Longueuil, Québec, Canada J4L 1J4
Email: admin@qector.store

Working Hours

Monday - Friday: 09:00-17:00 EST/EDT
Saturday - Sunday: Closed

Response time: 1 business day for commercial inquiries.

We use what you send only to answer your inquiry and keep it for 3 years after our last exchange. It is never sold or shared for marketing. See the Privacy Policy (français) for your rights under Québec law.

Book a 30-minute call

Decoder audit, licensing questions, or an integration walkthrough, booked directly with Guillaume Lessard.

- - - diff --git a/decoder/index.html b/decoder/index.html deleted file mode 100644 index 28cb9b96..00000000 --- a/decoder/index.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - QECTOR Decoder v3 · QEC Decoding for Python - - - - - - - - - - - - - -
Skip to main content
v1.0.1 (Source-Available) · Free Workbench GUI (CustomTkinter + MCP tools)

QECTOR Decoder v3

Rust-core Python library implementing 17 decoder configurations from exact MWPM to GPU batch. v1.0.1 is the current stable release: API stability tiers, Relay-BP and CS-OSD, Sinter/qiskit entry points, and the qector CLI, with build provenance for every wheel. A reproducible benchmark harness (qector bench) ships with the package so you can measure on your own hardware. Stim-native. PyPI binary wheels. All artifacts published on GitHub.

Decoder Configs
17

From exact MWPM to GPU batch, across documented stability tiers

Binary Wheels
18

Python 3.9-3.14 on Windows amd64, Linux x86_64, macOS arm64

Stable API
v1.0.1

Stable release with documented API stability tiers

CI Test Suite
Automated

Continuous validation and Stim comparison test suite on GitHub

Decoding Algorithms

Stable decoders with validation artifacts on GitHub. Experimental decoders are research-stage. Since v1.0.0 the public API is frozen under documented stability tiers. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.

Stable Decoders

Union-Find

Near-Linear

Near-linear time approximate decoder. High-throughput option for graph-like codes: trades some LER accuracy for speed.

Fast Union-Find

Hot Path

Optimized Union-Find hot path for low-latency offline simulation pipelines.

Blossom MWPM

Exact Reference

Exact minimum-weight perfect matching for graph-like codes. The reference decoder for surface codes.

CPU & GPU Batch Decoder

Parallel

Native CUDA / OpenCL batch decoding for supported workloads. Throughput depends on hardware and batch size; CUDA accepts edge_weights and precision="f64" in v1.0.0.

Experimental & Research Decoders

BP-OSD

qLDPC Research

Belief propagation + ordered statistics decoding. v1.0.0 adds Relay-BP schedules, CS-OSD(lambda, w) and LLR damping.

Belief-Matching

Correlated Noise

BP pre-processing + reweighted exact MWPM. Research path for correlated noise scenarios.

Sparse Blossom

Near-Optimal

Region-growing blossom variant for detector graphs. Zero-allocation hot path in v1.0.0.

Hybrid & AutoDecoder

Adaptive Routing

AutoDecoder and HybridDecoder route between Union-Find and Blossom based on code properties.

Lookup-Table Decoder

Small Codes

Precomputed correction table for small codes or syndrome subspaces.

Colour Code / Two-Stage / Ambiguity-Cluster

Research

New v1.0.0 families: ColourCodeDecoder (opt-in cluster_bposd), TwoStageDecoder, AmbiguityClusterDecoder.

Technical Specifications

LanguagesRust core (PyO3) / Python 3.9-3.14 API
PlatformsLinux x86_64, macOS arm64, Windows amd64
GPUCUDA / OpenCL batch paths (supported configurations per package docs)
QEC LibraryStim (quantum-circuit noise simulation)
PackagingPyPI binary wheels (manylinux, macOS, Windows)
LicensePolyForm Noncommercial 1.0.0 (community) / Commercial
ValidationGitHub: github.com/GuillaumeLessard/qector-decoder
Validation Status

v1.0.0 (2026-08-06) was the first stable release; v1.0.1 (2026-11-06) is current. Decode runs are syndrome-validated (H·c = s) through the self-debugging harness, and artifact manifests are SHA-256 sealed on GitHub. No universal benchmark figures are published; the qector bench harness ships in the package for measuring on your own hardware.

GitHub Artifacts and Harness →
- - - diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index 50c9bbe5..00000000 --- a/docs/index.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Documentation · QECTOR - - - - - - - - - - -
Skip to main content
Python 3.9-3.14 · Linux · macOS · Windows

Documentation

Install, configure, and integrate QECTOR Decoder v3 with your QEC stack. Stim, PyMatching, Sinter, and Qiskit compatible.

pip install qector-decoder-v3
- - - diff --git a/docs/reference.md b/docs/reference.md deleted file mode 100644 index cf4671d5..00000000 --- a/docs/reference.md +++ /dev/null @@ -1,111 +0,0 @@ -# QECTOR Decoder v3 Reference - -Version: 1.0.0 -Reference manual: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046) -Package: `qector-decoder-v3==1.0.0` - -This page is the web companion to the reference manual. The PDF is normative for the complete mathematical proofs, implementation contracts, evidence anchors, limitations, and reproduction commands. - -## Core contract - -All supported decoders are evaluated against syndrome faithfulness: - -```text -H @ correction == syndrome (mod 2) -``` - -For a sampled physical error `e`, faithfulness puts `correction + e` in `ker(H)`. Logical success is a separate coset/observable question; raw correction-vector equality is not a valid universal logical metric for a degenerate stabilizer code. - -## Structural routing guard - -Inspect the actual check-to-qubit structure before selecting a backend: - -```text -maximum qubit/check degree <= 2 -> graphlike decoders may be eligible -any degree > 2 -> non-graphlike; use BP-OSD -``` - -Hyperedges must not be silently decomposed into pairwise matching edges. - -## Decoder families - -| Family | Domain | Contract boundary | -|---|---|---| -| `UnionFindDecoder` / `FastUnionFindDecoder` | Graphlike | Cluster growth and faithful spanning-forest peeling | -| `BlossomDecoder` | Graphlike | Exact weighted MWPM on audited small matching codes | -| `SparseBlossomDecoder` | Graphlike | Faithful, near-optimal event-driven path in tested scope | -| `BpOsdDecoder` / `BPOSDDecoder` | Reachable GF(2) matrices | BP reliability plus faithful OSD residual solve | -| `LookupTableDecoder` | Small codes | Exact for stored entries; fallback applies outside entries | -| `HybridCascadeDecoder` | Graphlike | Faithful pre-filter plus checked escalation | -| `AmbiguityClusterDecoder` | qLDPC | Exact within bounded ambiguous components | -| `TwoStageDecoder` | CSS | Faithful when both sector stages are faithful | -| `SpaceTimeDecoder` | Lifted graphlike detector model | Faithful space-time correction | -| `StreamingDecoder` / `SlidingWindowDecoder` | Multi-round workflow | Windowed primitives, not automatic full 3D matching | -| `CUDABatchDecoder` / `OpenCLBatchDecoder` | Graphlike batches | Bit identity on tested configurations for the unweighted path | -| `CUDABpOsdDecoder` | qLDPC batches | Batched BP-OSD path; single-shot CPU path preferred | -| `NativeAutoDecoder` | Eligible inputs | Routes and inherits the selected backend contract | - -## Stable and provisional APIs - -Stable symbols include the core Union-Find and Blossom decoders, code helpers, license status helpers, shot accounting, and `DecodeResult`. Batch aliases, auto-routing order, streaming tuning, BP-OSD tuning arguments, GPU paths, and network surfaces are supported but workload-sensitive or provisional according to the manual. - -## Direct decode example - -```python -import numpy as np -from qector_decoder_v3 import BlossomDecoder - -checks = [[0, 1], [1, 2], [2, 3], [3, 4]] -syndrome = np.array([0, 1, 0, 0], dtype=np.uint8) -correction = BlossomDecoder(checks, n_qubits=5).decode(syndrome) - -# Validate the contract with the same H used to construct the decoder. -``` - -## DEM workflow - -```python -from qector_decoder_v3 import dem - -model = dem.from_stim( - circuit.detector_error_model(decompose_errors=True) -) -if model.is_graphlike: - model = model.collapse_to_graph() -decoder = model.make_decoder("blossom") -``` - -Parallel graph mechanisms combine with the independent-XOR probability rule. Mechanism weights use `log((1-p)/p)`. Record the DEM settings, mechanism counts, graphlike status, and observable mapping with any result. - -## Validation policy - -The live repository suite is authoritative. The manual maps claims to syndrome-faithfulness, property, exhaustive-oracle, cross-decoder, DEM, logical-observable, qLDPC, memory, API, and hardware-gated GPU tests. - -A skipped hardware-gated test is not evidence for that hardware path. A historical test count is not a current pass/fail statement. - -## Measurement policy - -This website publishes no hardware-specific benchmark data, charts, screenshots, latency, throughput, VRAM, or threshold results. Such values depend on code family, distance, rounds, noise model, decoder options, compiler, operating system, hardware, driver, batch shape, seed, and warmup. - -For an independent local measurement, store: - -```text -code family and size -noise model and DEM settings -shots, trials, warmup, and seed -hot/cold/end-to-end path label -raw JSON/CSV plus SHA-256 -Wilson interval for logical-error rates -``` - -Keep Python allocation, process RSS, native memory, and GPU memory as separate metrics. Score logical observables rather than raw correction equality. Do not compare code-capacity and circuit-level rows. - -## Deployment posture - -The local Rust/Python CPU library is the preferred research path. CUDA/OpenCL batch paths require controlled runtime setup. REST, gRPC, MCP, and metrics surfaces are provisional and require authentication, authorization, TLS, rate limits, timeouts, audit logging, request limits, and resource quotas before production use. - -License verification is offline. The decoder does not make a blocking network call during decoding. Distance caps and GPU feature access are enforced by the Rust core according to the active license tier. - -## Canonical citation - -Guillaume Lessard, *QECTOR Decoder v3: Syndrome-Faithful Decoding - Foundations, Algorithms, and Architecture of a Fifteen-Backend Quantum Error Correction Engine*, version 1.0.0, August 2026. DOI: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046). diff --git a/evidence/index.html b/evidence/index.html deleted file mode 100644 index db58e16e..00000000 --- a/evidence/index.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Evidence & Reports · QECTOR - - - - - - - - - - -
Skip to main content
Verified v1.0.0 Manual · SHA-256 Sealed Manifests

Evidence & Reports

Public claims are documented with their boundaries: the six-record Zenodo evidence corpus, validation reports, and SHA-256 sealed manifests archived on GitHub.

Evidence Reports

Official User Manual v1.0.0

Verified

QECTOR Decoder v3 Reference Manual v1.0.0 (DOI 10.5281/zenodo.21941046): the normative source for decoder contracts and claim boundaries.

SHA-256 Sealed Artifact Manifests

Verified

Source and artifact releases carry SHA-256 sealed manifests on GitHub, so published builds can be verified against their recorded hashes.

Syndromic Validation Harness

Verified

Decode runs verify H·c = s on every shot through the self-debugging harness shipped in the package, with the harness published on GitHub.

Scoped Methodology and Limitations

Methodology

The manual excludes hardware-bound performance figures and documents the metadata, confidence intervals, and artifact requirements for future measurements.

Zenodo Evidence Registry

The complete six-record evidence corpus for QECTOR Decoder v3 v1.0.0. Each record is a DOI-stable, versioned deposit with its scope and date listed below.

DOIScopeDateAccess
10.5281/zenodo.21611214User manual2026-08-06open
10.5281/zenodo.21822738Restricted source custody2026-08-06 embargoed
10.5281/zenodo.21823755V&V report2026-08-06open
10.5281/zenodo.21850315Technical monograph2026-08-08open
10.5281/zenodo.21941046Normative reference manual2026-08-14open
10.5281/zenodo.22046403Verification / proof bundle2026-08-21open

Document deposits carry their own document-level publication licence; software licensing (PolyForm Noncommercial / commercial) is separate and governed by the license page. The embargoed record is restricted source custody and is not part of the public evidence set.

Verify on Your Own Machine

No universal benchmark figures are published on this site, because results depend on your hardware. The package ships the qector-doctor environment diagnostic and the qector bench harness so you can validate and measure on your own machines. Run them yourself:

# Quick validation
-pip install --upgrade "qector-decoder-v3>=1.0.1,<2"
-python -c "import qector_decoder_v3 as qd; print(qd.__version__)"
-# environment diagnostic
-qector-doctor
-# Throughput benchmark on a generated surface-code circuit
-qector bench -d 5 -r 5 -s 10000 --decoder blossom --noise 0.001

How to Cite QECTOR

If you use QECTOR Decoder v3 or its validation artifacts in academic research, please cite our software artifact release:

@software{lessard2026qector,
-  author  = {Guillaume Lessard},
-  title   = {{QECTOR Decoder v3}: Rust/Python Quantum Error Correction Decoding Platform},
-  year    = {2026},
-  version = {1.0.1},
-  url     = {https://qector.store/},
-  note    = {Source-available under PolyForm Noncommercial 1.0.0. Commercial license required for commercial use.}
-}
Our Transparency Commitment

We document validation results openly, including known limitations. Published numeric claims link to GitHub artifact releases. We do not hide non-passes behind aggregate statistics.

- - - diff --git a/feed.xml b/feed.xml deleted file mode 100644 index e6c11cf1..00000000 --- a/feed.xml +++ /dev/null @@ -1,177 +0,0 @@ - - - - QECTOR Blog - Field notes on quantum error correction, decoder algorithms, qLDPC, noise models, evidence, systems, and ecosystem integration. - https://qector.store/feed.xml - - - 2026-09-27T00:00:00Z - - Guillaume Lessard - https://qector.store/guillaume-lessard/ - admin@qector.store - - QECTOR site - https://qector.store/images/logo.png - - - Stim, Sinter, PyMatching, and Qiskit Integration - https://qector.store/blog/20EcosystemIntegration/ - - 2026-08-01T00:00:00Z - Connect QECTOR to common quantum software workflows while preserving detector, observable, and noise contracts. - - - - Shipping a QEC Decoder Responsibly - https://qector.store/blog/19ReleaseLicensing/ - - 2026-08-01T00:00:00Z - API stability, wheels, offline licensing, release gates, and the difference between local and network deployment. - - - - Rust, PyO3, and QEC Memory Discipline - https://qector.store/blog/18RustPyo3Architecture/ - - 2026-08-01T00:00:00Z - FFI buffers, selective repacking, GIL release, Rayon worker state, and memory metrics at the Python boundary. - - - - Reproducible QEC Benchmarks - https://qector.store/blog/17ReproducibleBenchmarks/ - - 2026-08-01T00:00:00Z - Separate correctness from performance and make every benchmark claim traceable to an artifact and hash. - - - - Choosing a Decoder From the Matrix - https://qector.store/blog/16DecoderSelection/ - - 2026-08-01T00:00:00Z - A practical decision guide for graphlike, qLDPC, space-time, streaming, CSS, and batch workloads. - - - - Logical Error Rates Without the Wrong Metric - https://qector.store/blog/15LogicalErrorRates/ - - 2026-08-01T00:00:00Z - Score observables, compute Wilson intervals, keep noise models comparable, and report reproducible LERs. - - - - Weighted Decoding and Likelihood Priors - https://qector.store/blog/14WeightedDecoding/ - - 2026-08-01T00:00:00Z - Why log((1-p)/p) belongs in the graph and how matching, Union-Find, and space-time paths use weights. - - - - Detector Error Models from Faults to Graphs - https://qector.store/blog/13DemPipeline/ - - 2026-08-01T00:00:00Z - Parse DEMs, classify hyperedges, collapse parallel mechanisms, set weights, and preserve observables. - - - - Rotated Surface Code d=3 - https://qector.store/blog/12RotatedSurfaceD3/ - - 2026-08-01T00:00:00Z - Nine data qubits, boundaries, graphlike eligibility, logical strings, and a complete structural audit. - - - - A Hand-Worked Steane Decode - https://qector.store/blog/11SteaneWorkedDecode/ - - 2026-08-01T00:00:00Z - Compute a Steane syndrome by hand and see why stabilizer cosets matter more than raw correction equality. - - - - Evidence-First QEC Architecture and Benchmarks - https://qector.store/blog/10BenchmarksArchitecture/ - - 2026-08-01T00:00:00Z - The v1.0.0 backend map, logical scoring, Wilson intervals, metadata, release gates, and claim boundaries. - - - - GPU Batch Decoding and Tested Bit Identity - https://qector.store/blog/09GpuAcceleration/ - - 2026-08-01T00:00:00Z - Per-shot GPU state isolation, deterministic Union-Find, scoped CPU/GPU identity, and deployment gates. - - - - Routing, Cascades, and Two-Stage CSS Decoding - https://qector.store/blog/08AutoDecoderCascade/ - - 2026-08-01T00:00:00Z - Structural backend eligibility, fallback verification, hybrid acceptance, and CSS sector feedforward. - - - - Space-Time Decoding with Noisy Measurements - https://qector.store/blog/07SpaceTimeDecoder/ - - 2026-08-01T00:00:00Z - Detector differencing, temporal and spatial weights, measurement glitches, and streaming scope. - - - - Ambiguity Clustering and Learned Predecoders - https://qector.store/blog/06AmbiguityGnnNeural/ - - 2026-08-01T00:00:00Z - Freeze confident qubits, solve ambiguous components, and add learned priors without moving the correctness proof. - - - - BP-OSD for qLDPC Hypergraphs - https://qector.store/blog/05BpOsdQldpc/ - - 2026-08-01T00:00:00Z - Log-domain belief propagation, ordered statistics, residual GF(2) solving, and faithful non-graphlike decoding. - - - - UF-01: Parity, Peeling, and Graphlike Decoding - https://qector.store/blog/04FastUnionFind/ - - 2026-08-01T00:00:00Z - Cluster parity, spanning-forest peeling, weighted growth, zero-allocation structure, and domain boundaries. - - - - Sparse Blossom and Event-Driven Growth - https://qector.store/blog/03SparseBlossomEventDriven/ - - 2026-08-01T00:00:00Z - Region states, collision times, tight edges, radix heaps, and the tested scope of Sparse Blossom. - - - - Exact Blossom Decoding for Graphlike QEC - https://qector.store/blog/02BlossomMwpmExact/ - - 2026-08-01T00:00:00Z - How weighted MWPM, Edmonds' primal-dual view, path boundaries, and sparse candidate escalation fit together. - - - - Syndrome Faithfulness: The Decoder Contract - https://qector.store/blog/01QecFoundations/ - - 2026-08-01T00:00:00Z - The GF(2) invariant Hc=s, logical cosets, degeneracy, and graphlike eligibility explained from first principles. - - \ No newline at end of file diff --git a/feed.xsl b/feed.xsl deleted file mode 100644 index 9776476b..00000000 --- a/feed.xsl +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - <xsl:value-of select="atom:feed/atom:title"/> - - - - -

-

-
    - -
  • - -
    -

    -
  • -
    -
-

QECTOR

- - -
-
\ No newline at end of file diff --git a/fr/decoder/index.html b/fr/decoder/index.html deleted file mode 100644 index de2f5d99..00000000 --- a/fr/decoder/index.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - QECTOR Decoder v3 · Décodage QEC pour Python - - - - - - - - - - - - - -
Aller au contenu principal
v1.0.1 (code source disponible) · Workbench gratuit

QECTOR Decoder v3

Bibliothèque Python à noyau Rust offrant 17 configurations de décodeurs, du MWPM exact au décodage GPU par lots. La v1.0.1 est la version stable actuelle : paliers de stabilité d’API, Relay-BP et CS-OSD, points d’entrée Sinter et qiskit, et l’outil en ligne de commande qector, avec une provenance de compilation pour chaque roue. Le banc d’essai reproductible qector bench est inclus pour mesurer sur votre propre matériel. Compatible Stim, roues binaires sur PyPI, artefacts publiés sur GitHub.

Configurations
17

Du MWPM exact au GPU par lots, selon des paliers de stabilité documentés

Roues binaires
18

Python 3.9 à 3.14 sur Windows amd64, Linux x86_64 et macOS arm64

API stable
v1.0.1

Version stable avec paliers de stabilité d’API documentés

Tests CI
Automatisés

Validation continue et comparaison avec Stim sur GitHub

Algorithmes de décodage

Décodeurs stables avec artefacts de validation sur GitHub; les décodeurs expérimentaux sont au stade de la recherche. Depuis la v1.0.0, l’API publique est figée selon des paliers de stabilité documentés. Aucun chiffre de performance universel n’est publié : mesurez sur votre matériel avec qector bench.

Décodeurs stables

Union-Find

Quasi linéaire

Décodeur approché en temps quasi linéaire. L’option à haut débit pour les codes de type graphe : un peu moins précis, beaucoup plus rapide.

Fast Union-Find

Chemin rapide

Chemin Union-Find optimisé pour les pipelines de simulation hors ligne à faible latence.

Blossom MWPM

Référence exacte

Couplage parfait de poids minimal exact pour les codes de type graphe. Le décodeur de référence des codes de surface.

Décodage par lots CPU et GPU

Parallèle

Décodage par lots natif CUDA / OpenCL pour les charges prises en charge. Le débit dépend du matériel et de la taille des lots; CUDA accepte edge_weights et precision="f64" depuis la v1.0.0.

Décodeurs expérimentaux et de recherche

BP-OSD

Recherche qLDPC

Propagation de croyance + décodage par statistiques ordonnées. La v1.0.0 ajoute les ordonnancements Relay-BP, CS-OSD(lambda, w) et l’amortissement des LLR.

Belief-Matching

Bruit corrélé

Prétraitement BP + MWPM exact repondéré. Voie de recherche pour le bruit corrélé.

Sparse Blossom

Quasi optimal

Variante blossom par croissance de régions pour les graphes de détecteurs. Chemin sans allocation depuis la v1.0.0.

Hybrid et AutoDecoder

Routage adaptatif

AutoDecoder et HybridDecoder choisissent entre Union-Find et Blossom selon les propriétés du code.

Décodeur à table

Petits codes

Table de corrections précalculée pour les petits codes ou des sous-espaces de syndromes.

Code couleur / Deux étapes / Grappes d’ambiguïté

Recherche

Familles ajoutées en v1.0.0 : ColourCodeDecoder (cluster_bposd optionnel), TwoStageDecoder, AmbiguityClusterDecoder.

Caractéristiques techniques

LangagesNoyau Rust (PyO3) / API Python 3.9 à 3.14
PlateformesLinux x86_64, macOS arm64, Windows amd64
GPUChemins par lots CUDA / OpenCL (configurations prises en charge selon la documentation)
Bibliothèque QECStim (simulation de bruit sur circuits quantiques)
DistributionRoues binaires PyPI (manylinux, macOS, Windows)
LicencePolyForm Noncommercial 1.0.0 (communauté) / commerciale
ValidationGitHub : github.com/GuillaumeLessard/qector-decoder
État de la validation

La v1.0.0 (2026-08-06) a été la première version stable; la v1.0.1 (2026-11-06) est la version actuelle. Chaque décodage est vérifié contre son syndrome (H·c = s) et les manifestes d’artefacts sont scellés par SHA-256 sur GitHub. Aucun chiffre de performance universel n’est publié; qector bench est inclus pour mesurer sur votre matériel.

Artefacts et banc d’essai sur GitHub →

Detailed English page · Tutoriel (en anglais)

- - - diff --git a/fr/index.html b/fr/index.html deleted file mode 100644 index f6cbe60c..00000000 --- a/fr/index.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - QECTOR · Décodage de correction d’erreurs quantiques pour Python - - - - - - - - - - - - - -
Aller au contenu principal
v1.0.1 · 18 wheels vérifiées

Décodage QEC pour Python

Une seule bibliothèque pour plusieurs familles de décodeurs sur la même matrice de contrôle : Union-Find, MWPM exact, BP-OSD et Relay-BP pour les codes qLDPC, sur CPU et GPU, avec Stim et Sinter. Chaque correction est vérifiée contre son syndrome, et les licences commerciales se vérifient hors ligne.

Gratuit pour la recherche universitaire et non commerciale. Forfaits commerciaux dès 79 $/mois, avec garantie de remboursement de 14 jours.

Démarrage rapidebash
pip install qector-decoder-v3==1.0.1
-python -c "from qector_decoder_v3 import BlossomDecoder; print('QECTOR OK')"

Chaque correction est vérifiée

Chaque résultat satisfait H·c = s (mod 2) : la correction reproduit le syndrome.

Licences hors ligne

Jetons Ed25519 vérifiés localement. Aucun serveur de licence, aucune télémétrie : fonctionne sur des machines isolées.

Versions vérifiables

18 wheels construites dans GitHub Actions, avec provenance Sigstore et attestations PyPI, testées sur chaque système avant publication.

Aucun nombre de postes

Une licence couvre l’usage interne de votre organisation, sur autant de machines et par autant de personnes que nécessaire.

Les produits

QECTOR Decoder v3

La bibliothèque Python à noyau Rust : Union-Find, MWPM exact (Blossom), BP-OSD et Relay-BP pour les codes qLDPC, décodage par lots CPU et GPU, intégration Stim et Sinter.

Le décodeur →

Plugiciel Claude

Un serveur MCP isolé du réseau (air-gapped) qui apporte le décodage vérifié dans Claude Code et Claude Desktop, avec schémas validés et versions signées.

Le plugiciel (anglais) →

Workbench

L’application de bureau gratuite pour Windows et Linux : constructeur de circuits, familles de codes et décodeurs, sans installation de Python.

Le Workbench (anglais) →

En français

La documentation technique est en anglais. Pour toute question, écrivez-nous en français à admin@qector.store.

- - - diff --git a/fr/license-agreement/index.html b/fr/license-agreement/index.html deleted file mode 100644 index e37d6b43..00000000 --- a/fr/license-agreement/index.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Contrat de licence commerciale · QECTOR Decoder v3 - - - - - - - - - - - - - -
Aller au contenu principal
Version 2026-11 · En vigueur le 6 novembre 2026 · Droit applicable : Québec

Contrat de licence commerciale

Ces conditions s’appliquent lorsque votre organisation achète un forfait QECTOR. L’usage non commercial reste gratuit sous la licence PolyForm Noncommercial 1.0.0.

Version 2026-11, en vigueur le 6 novembre 2026. La version en vigueur à la date de votre achat ou de votre renouvellement régit cette période payée.

English version

1. Parties et acceptation

Le présent contrat est conclu entre Guillaume Lessard, entrepreneur individuel faisant affaire sous le nom iD01t Productions, 288, boul. des Ormeaux, Longueuil (Québec) Canada J4L 1J4 (le « Concédant », « nous »), et l’organisation nommée lors du paiement (le « Licencié », « vous »).

Vous l’acceptez en effectuant un achat, en activant un jeton de licence ou en utilisant le Logiciel à des fins commerciales. La personne qui achète confirme qu’elle peut engager l’organisation. Si vous n’acceptez pas ces conditions, n’achetez pas et n’utilisez pas de forfait payant. La garantie de remboursement de 14 jours s’applique.

2. Définitions

  • Logiciel : le paquet Python qector-decoder-v3 et son noyau compilé, tels que publiés sur PyPI et GitHub, avec leur documentation.
  • Forfait : l’offre achetée (Pro, Pro Perpétuel, Labo, Pilote ou Entreprise), telle que décrite sur la page Tarifs à la date d’achat.
  • Jeton de licence : la clé signée Ed25519 que nous vous envoyons par courriel et que le Logiciel vérifie hors ligne.
  • Usage interne : l’utilisation par votre organisation, ses employés et les contractuels qui travaillent pour elle, à ses propres fins, y compris en production.
  • Durée : la période payée (un mois ou un an pour les abonnements, 60 jours pour le Pilote), ou sans date de fin pour Pro Perpétuel.

3. Octroi de licence

Sous réserve du paiement et du présent contrat, nous vous accordons une licence non exclusive, non transférable et mondiale d’installer et d’utiliser le Logiciel pour un Usage interne pendant la Durée, au palier de licence de votre Forfait.

Il n’y a aucun nombre de postes ni d’utilisateurs. Vous pouvez installer le Logiciel sur autant de machines que vous le souhaitez et le faire utiliser par autant de membres de votre personnel que nécessaire, pourvu que ce soit pour votre organisation. Une licence couvre une seule organisation acheteuse; les sociétés affiliées ont besoin de leur propre licence, sauf disposition contraire d’un contrat Entreprise.

4. Contenu de chaque forfait

ForfaitPortée
ProPalier de licence Pro (décodage GPU par lots, distance de code 19), Usage interne y compris en production, support par courriel, toutes les versions publiées pendant la Durée.
Pro PerpétuelLes droits Pro sans date de fin pour toutes les versions 1.x de qector-decoder-v3, y compris les mises à jour correctives et mineures, et 12 mois de support par courriel. Une nouvelle version majeure (2.0 et suivantes) est une nouvelle licence.
LaboPalier de licence Entreprise (décodage GPU par lots, distance de code 63), support prioritaire avec des délais de réponse convenus à l’intégration, un appel d’intégration et un rapport de validation par année.
PiloteUne licence d’évaluation de 60 jours au palier Pro avec un appel d’intégration, pour les essais de performance, les tests d’intégration et les études, pas pour la production. Créditable sur Labo dans les 90 jours.
EntrepriseDroits d’hébergement, SaaS ou OEM et support dédié uniquement selon un contrat signé distinct, qui prévaut sur le présent contrat.

5. Restrictions

Sauf si un contrat Entreprise signé le permet, vous ne pouvez pas :

  • redistribuer, vendre, sous-licencier, louer ou prêter le Logiciel ou un jeton de licence;
  • intégrer le Logiciel dans un produit distribué à des tiers (OEM), ni offrir son décodage à des tiers comme service hébergé, API ou SaaS;
  • partager un jeton de licence hors de votre organisation ni le publier;
  • retirer, contourner ou altérer les vérifications de licence, les avis ou les limites de palier;
  • faire de l’ingénierie inverse du noyau compilé, sauf dans la mesure où la loi applicable le permet malgré cette restriction.

6. Jetons de licence et vérification hors ligne

Les jetons de licence sont vérifiés hors ligne par le Logiciel au moyen d’une clé publique qu’il contient. Il n’y a ni serveur de licence, ni appel d’activation, ni télémétrie : le Logiciel fonctionne sur des machines isolées (air-gapped).

Gardez votre jeton confidentiel. S’il est perdu, exposé ou associé à la mauvaise adresse, écrivez-nous et nous le réémettrons sans frais. Un jeton peut expirer quelques jours après la fin de la période payée, pour absorber les renouvellements tardifs; ce délai de grâce ne donne aucun droit au-delà de la Durée.

Si un paiement est entièrement remboursé ou contesté, nous révoquons le jeton et l’inscrivons à qector.store/stripe/revoked.txt; vous devez alors cesser de l’utiliser.

7. Durée, renouvellement et résiliation

Pro (mensuel ou annuel) et Labo sont des abonnements qui se renouvellent automatiquement pour la même période au prix en vigueur jusqu’à leur résiliation. Nous envoyons un rappel 14 jours avant chaque renouvellement annuel. Vous pouvez résilier en tout temps dans le portail client ou par courriel; votre licence reste valide jusqu’à la fin de la période payée.

Le Pilote prend fin après 60 jours et ne se renouvelle pas. Pro Perpétuel n’a pas de date de fin pour les versions 1.x qu’il couvre.

8. Prix, taxes et remboursements

Les prix sont en dollars américains, taxes en sus. Stripe perçoit le paiement et toute taxe de vente, TPS/TVQ ou TVA applicable selon votre adresse de facturation. Chaque forfait comporte une garantie de remboursement de 14 jours sur le premier paiement, selon la Politique de remboursement. Les paiements de renouvellement suivent la même politique.

Les établissements d’enseignement qui achètent un forfait payant obtiennent 40 % de rabais sur Labo. L’usage universitaire non commercial reste gratuit sous la licence PolyForm Noncommercial.

9. Support et mises à jour

Le support se fait par courriel à admin@qector.store, avec une première réponse en 2 jours ouvrables pour Pro et Pro Perpétuel. Labo bénéficie d’un support prioritaire avec des délais convenus à l’intégration. Les abonnements comprennent toutes les versions publiées pendant la Durée; Pro Perpétuel comprend toutes les versions 1.x.

Nous pouvons modifier ou retirer des fonctionnalités dans les nouvelles versions. Les versions déjà reçues continuent de fonctionner sous votre licence.

10. Propriété et composants tiers

Le Logiciel est concédé sous licence, non vendu. Nous conservons tous les droits qui ne sont pas expressément accordés, y compris le droit d’auteur et les marques. Les composants libres fournis avec le Logiciel restent régis par leurs propres licences, que le présent contrat ne limite pas.

Vos données d’entrée et vos résultats (codes, syndromes, circuits, résultats) vous appartiennent. Le Logiciel ne nous en transmet aucun.

11. Garantie

Si le Logiciel ne vous convient pas, votre recours est la garantie de remboursement de 14 jours. Pour le reste, le Logiciel est fourni « tel quel », sans autre garantie expresse ou implicite, notamment de qualité marchande, d’adaptation à un usage particulier et d’absence de contrefaçon, dans la mesure permise par la loi.

Le Logiciel est une bibliothèque de décodage pour la simulation et la recherche, validée en vérifiant que chaque correction reproduit son syndrome. Il n’est pas certifié pour un usage critique pour la sécurité. Rien dans le présent contrat n’exclut une garantie que la loi applicable, y compris la Loi sur la protection du consommateur du Québec lorsqu’elle s’applique, ne permet pas d’exclure.

12. Limitation de responsabilité

Dans la mesure permise par la loi, notre responsabilité totale en vertu du présent contrat est limitée aux sommes que vous avez payées au cours des 12 mois précédant l’événement à l’origine de la réclamation, et nous ne sommes pas responsables des dommages indirects, consécutifs ou punitifs, ni des pertes de profits, de données ou d’affaires.

Ces limites ne s’appliquent pas au préjudice corporel ou moral, ni au préjudice causé par une faute intentionnelle ou lourde, que le droit québécois ne permet pas d’exclure.

13. Contrôle des exportations et sanctions

Vous respecterez les lois sur le contrôle des exportations et les sanctions du Canada et de tout autre pays qui vous est applicable, et vous n’utiliserez ni ne transférerez le Logiciel vers une personne ou une destination que ces lois interdisent.

14. Résiliation pour manquement

Nous pouvons résilier votre licence en cas de manquement important au présent contrat, comme un usage hors de sa portée, après un avis écrit et un délai de 15 jours pour y remédier. À la résiliation, vous devez cesser l’usage commercial et supprimer vos jetons de licence. Aucun remboursement n’est dû pour la Durée écoulée après une résiliation pour manquement.

15. Renseignements personnels

Nous ne recueillons que ce qui est nécessaire pour vendre et livrer votre licence. Consultez la Politique de confidentialité pour savoir ce que nous recueillons, pourquoi, où ces renseignements sont conservés et quels sont vos droits en vertu de la loi québécoise.

16. Modifications du contrat

Nous pouvons publier de nouvelles versions du présent contrat. Une nouvelle version s’applique aux nouveaux achats et, après un préavis d’au moins 30 jours par courriel, aux renouvellements. Elle ne modifie jamais les conditions d’une période déjà payée. Les versions antérieures sont disponibles sur demande.

17. Droit applicable, langue et intégralité

Le présent contrat est régi par les lois du Québec et les lois fédérales du Canada qui s’y appliquent. Les tribunaux du district judiciaire de Montréal sont compétents, sans priver un consommateur de la protection des lois impératives ou des tribunaux de son lieu de résidence.

La présente version française est la version de référence remise avant la version anglaise. Les parties peuvent convenir d’être liées par la version anglaise; dans ce cas, la clause de langue de cette version s’applique.

Le présent contrat, la description du Forfait à la date d’achat et la Politique de remboursement constituent l’entente complète pour les forfaits payants. Un contrat Entreprise signé prévaut en cas de conflit. Si une clause est inapplicable, le reste demeure en vigueur.

- - - diff --git a/fr/license/index.html b/fr/license/index.html deleted file mode 100644 index bcbd3500..00000000 --- a/fr/license/index.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Licence · QECTOR - - - - - - - - - - - - - -
Aller au contenu principal
PolyForm Noncommercial 1.0.0 · Gratuit pour la recherche · Usage commercial sous licence · Mis à jour en novembre 2026

Licence

Le code source de QECTOR Decoder v3 est disponible, mais son usage commercial n’est pas gratuit. Gratuit pour l’usage personnel, académique et la recherche non commerciale. L’usage commercial exige un forfait payant dès 79 $/mois, avec une garantie de remboursement de 14 jours. Le Workbench est gratuit.

Licence communautaire

QECTOR Decoder v3 est publié sous la PolyForm Noncommercial License 1.0.0. Vous pouvez utiliser, modifier et distribuer le logiciel gratuitement à des fins non commerciales.

Permis (non commercial)

  • • Recherche et apprentissage personnels
  • • Recherche et enseignement universitaires
  • • Usage par les universités, organismes de recherche publics, organismes de bienfaisance et institutions gouvernementales, quelle que soit leur source de financement
  • • Projets libres non commerciaux
  • • Publication de résultats de mesures (avec attribution)

Exige une licence commerciale

  • • Intégration dans un produit commercial
  • • R-D commerciale interne
  • • Travail d’une entreprise dans le cadre de contrats gouvernementaux, de défense ou universitaires
  • • Redistribution dans des produits commerciaux
  • • Usage en SaaS ou par API hébergée

Licence commerciale

Chaque forfait payant est régi par le Contrat de licence commerciale (English version). Toutes les licences commerciales comprennent le droit d’usage commercial (interne, sans nombre de postes), des ensembles d’artefacts reproductibles et l’examen prioritaire des bogues. La redistribution et les droits OEM ne sont pas inclus par défaut; écrivez à admin@qector.store pour une licence OEM ou SaaS. Le détail des paliers est sur la page Tarifs.

Licences perpétuelles

Pro Perpétuel (1 990 $, paiement unique) : les mêmes droits que Pro, pour toutes les versions 1.x de qector-decoder-v3, y compris les correctifs et les mises à jour mineures; une nouvelle version majeure comme la 2.0 exige une nouvelle licence. Les licences achetées auparavant sous le nom Solo / Indie Perpétuel conservent leurs conditions d’origine.

Ce que change une licence payante

  • • Accorde l’usage commercial que PolyForm Noncommercial exclut, pour la durée achetée.
  • • Usage interne seulement. La redistribution, la sous-licence, l’intégration OEM et les services SaaS ou API hébergées offerts à des clients sont exclus, sauf entente écrite Entreprise ou OEM.
  • • S’active en réglant QECTOR_LICENSE et QECTOR_LICENSE_KEY à votre jeton Ed25519. La vérification se fait hors ligne, avec une clé publique intégrée au paquet : aucun serveur de licences, aucune communication sortante, fonctionne sur un réseau isolé.
  • • Le paquet est identique avec ou sans licence. Sans jeton, un avis de licence s’affiche à l’importation (masquable avec QECTOR_SILENT=1). Le jeton masque l’avis et débloque les fonctions liées au palier : décodage GPU par lots (CUDA/OpenCL) sur tous les forfaits payants, et une distance de code maximale de 7 (Communauté), 19 (Pro, Équipe) ou 63 (Labo, Entreprise). Le décodage CPU n’est jamais bloqué; les plafonds de distance ne s’appliquent que si QECTOR_ENFORCE=1 est réglé.
  • • Aucune garantie, indemnisation, exclusivité, marque de commerce ni licence de brevet n’est incluse par défaut.

Les jetons sont livrés en quelques minutes, et chaque forfait est assorti d’une garantie de remboursement de 14 jours sur le premier paiement : voir la Politique de remboursement. Une licence remboursée prend fin au remboursement.

Activer votre licence

  1. 1. Achat vérifié. Le service de livraison n’accepte qu’un événement de paiement Stripe signé et enregistre la référence Stripe, le courriel, le palier et le jeton dans un registre protégé.
  2. 2. Installer. python -m pip install --upgrade "qector-decoder-v3>=1.0,<2" depuis le projet PyPI officiel.
  3. 3. Régler les deux variables. Donnez à QECTOR_LICENSE et à QECTOR_LICENSE_KEY le même jeton, reçu par courriel. La première sert à l’avis d’importation, la seconde au moteur selon le palier.
  4. 4. Vérifier hors ligne. python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])" doit afficher votre palier payant (par exemple Pro) et non Community. Aucun serveur n’est contacté.
  5. 5. Conserver la preuve. Gardez le jeton avec la facture ou la confirmation Stripe. N’envoyez jamais le jeton dans une URL, un suivi de bogues, une messagerie ou un dépôt public.

Courriel manquant ou jeton refusé? Écrivez à admin@qector.store avec la référence Stripe. N’ouvrez pas un second paiement ni une contestation pendant que la livraison est corrigée.

Texte complet de la licence

Le texte officiel de la PolyForm Noncommercial License 1.0.0 (en anglais) est publié à polyformproject.org/licenses/noncommercial/1.0.0 et inclus tel quel dans chaque distribution (LICENSE dans la roue). Les résumés de cette page sont fournis à titre indicatif; en cas d’écart, le texte de la licence prévaut.

Licences de tiers

QECTOR s’appuie sur plusieurs projets libres, dont Stim (Apache 2.0), PyMatching (MIT), NumPy (BSD) et NetworkX (BSD). Les attributions complètes sont incluses dans la distribution. Les noms de tiers sont des marques de leurs propriétaires respectifs; QECTOR n’est ni affilié à eux, ni commandité, ni approuvé par eux.

- - - diff --git a/fr/pricing/index.html b/fr/pricing/index.html deleted file mode 100644 index 59a75364..00000000 --- a/fr/pricing/index.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tarifs · QECTOR - - - - - - - - - - - - - -
Aller au contenu principal
Licences commerciales claires et transparentes

Licenciez QECTOR pour la production

Gratuit pour la recherche académique et non commerciale. Pour un usage commercial, choisissez un forfait : licences vérifiées hors ligne, entièrement hors réseau, annulables en tout temps, satisfait ou remboursé 14 jours sur votre premier paiement.

Hors réseau

Jeton signé, vérifié hors ligne. Aucun serveur de licence, aucun appel réseau.

Remboursé 14 jours

Remboursement complet de votre premier paiement de tout forfait, sans question.

Annulable en tout temps

Votre licence reste valide jusqu’à la fin de la période payée.

Forfaits commerciaux

Droits de production pour l’usage interne de votre organisation. Les abonnements se renouvellent automatiquement jusqu’à annulation.

40 % de rabais sur Labo pour les établissements d’enseignement. La recherche non commerciale est gratuite.
Le plus populaire
Pro
79 $/ mois

Ou 790 $/an (2 mois offerts). Palier de licence Pro.

  • Included: Usage commercial interne
  • Included: Toutes les familles de décodeurs
  • Included: Lots CPU + GPU (CUDA/OpenCL)
  • Included: Distances de code jusqu’à 19
  • Included: Support courriel (2 jours ouvrables)
Acheter au mois
Labo
9 900 $/ an

Palier de licence Entreprise, pour les groupes de recherche et laboratoires.

  • Included: Tout Pro
  • Included: Distances de code jusqu’à 63
  • Included: Support prioritaire avec SLA
  • Included: Appel d’intégration de 2 h
  • Included: Un rapport de validation (valeur 5 000 $)
Acheter Labo
Entreprise & OEM
25 k$+/ an

Redistribution, SaaS, OEM et conditions sur mesure.

  • Included: Contrat signé, conditions sur mesure
  • Included: SaaS et API offertes aux clients
  • Included: OEM et regroupement matériel
  • Included: Ingénieur de support attitré
Contacter l’équipe commerciale

Pro facturé à l’année : 790 $ / an. Vous préférez l’acheter définitivement ? Pro Perpétuel : 1 990 $ paiement unique (toutes les versions 1.x, 12 mois de support).

QECTOR Validation Sprint

3 750 $ paiement unique · Livraison en 10-20 jours

La voie rapide recommandée pour les équipes qui veulent une preuve immédiate et défendable de la valeur sur leur flux de travail. Nous exécutons jusqu’à 3 charges de référence standard avec QECTOR et livrons des lots d’artefacts reproductibles.

  • ✓ Inclut une licence Pilote de 60 jours
  • ✓ Analyse comparative vs PyMatching/Stim
  • ✓ Appel de révision des résultats de 60 minutes
Demander un sprint de validation

Seulement la licence et un appel ? Le Pilote de 60 jours est à 1 500 $ : un appel d’intégration d’une heure et une note de validation écrite, crédités à 100 % sur Labo dans les 90 jours.

Activer votre licence

Tout le monde installe la même wheel depuis PyPI : il n’existe pas de build commercial séparé. Votre jeton déverrouille les fonctionnalités payantes : décodage GPU (CUDA/OpenCL) par lots sur tous les forfaits payants, et distances de code jusqu’à 63 sur Labo et Entreprise. Le décodage CPU n’est jamais bloqué; les plafonds de distance ne s’appliquent que si QECTOR_ENFORCE=1.

pip install --upgrade "qector-decoder-v3>=1.0.1,<2"
-export QECTOR_LICENSE_KEY="<votre-jeton>"
-export QECTOR_LICENSE="<votre-jeton>"
-
-# Vérifier hors ligne : affiche Pro ou Enterprise
-python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"

Les jetons sont vérifiés hors ligne contre une clé publique embarquée dans le paquet : aucun serveur de licence, aucun appel maison, fonctionne complètement hors réseau.

Pourquoi licencier QECTOR ?

Gratuit (source disponible)Licencié (commercial)
Usage de recherche non commerciale seulementDroits internes de R&D et de production
Support communautaire (GitHub Issues)Support courriel prioritaire et SLA
QECTOR Workbench GUI (gratuit)Harnais de reproduction d’artefacts de validation
Licence PolyForm NoncommercialContrat de licence commerciale écrit

Foire aux questions

La licence fonctionne-t-elle sur des machines hors réseau ?

Oui. Une licence est un jeton signé vérifié hors ligne contre une clé publique incluse dans le paquet. Aucun serveur de licence, aucune activation, aucun appel réseau : elle fonctionne sur des systèmes isolés et hors réseau.

Comment la licence est-elle livrée, et que déverrouille le jeton ?

Par courriel dans les minutes qui suivent le paiement (vérifiez le courrier indésirable, puis écrivez à admin@qector.store avec votre reçu Stripe). Tout le monde installe la même wheel : pip install --upgrade "qector-decoder-v3>=1.0.1,<2". Définissez QECTOR_LICENSE_KEY et QECTOR_LICENSE au jeton. Chaque forfait payant déverrouille le décodage GPU (CUDA/OpenCL) par lots; Labo et Entreprise portent aussi le palier de distance à 63. Le décodage CPU n’est jamais bloqué, et les plafonds de distance ne s’appliquent que si QECTOR_ENFORCE=1.

Puis-je l’essayer avant de m’engager ?

Chaque forfait offre une garantie satisfait ou remboursé de 14 jours sur le premier paiement : achetez Pro au mois, testez-le sur vos propres charges, et si ce n’est pas le bon choix, écrivez à admin@qector.store pour un remboursement complet. Pour une évaluation encadrée avec appel d’intégration, prenez le Pilote de 60 jours, entièrement crédité sur Labo.

Les forfaits se renouvellent-ils automatiquement, et comment annuler ?

Oui. Pro (mensuel ou annuel) et Labo se renouvellent automatiquement jusqu’à annulation, avec un courriel de rappel 14 jours avant chaque renouvellement annuel. Annulez en tout temps depuis votre reçu Stripe ou en écrivant à admin@qector.store; votre licence reste valide jusqu’à la fin de la période payée. Pro Perpétuel et le Pilote sont des paiements uniques et ne se renouvellent jamais.

Quelle est votre politique de remboursement ?

Garantie satisfait ou remboursé de 14 jours sur votre premier paiement de tout forfait : écrivez à admin@qector.store avec votre reçu Stripe et nous remboursons en entier. Les renouvellements ne sont pas remboursés au prorata. Les achats en double et les frais faits par erreur sont toujours remboursés. Si un jeton n’arrive pas ou ne se vérifie pas, nous le réémettons sans frais. Cela ne limite pas les droits légaux auxquels on ne peut renoncer.

Que couvre une licence ?

L’usage commercial interne par votre organisation, y compris en production. Pro et Labo diffèrent par le palier de licence (Labo porte le palier de distance à 63) et le niveau de support. Pro Perpétuel couvre toutes les versions 1.x de qector-decoder-v3; une nouvelle version majeure comme 2.0 est une nouvelle licence. Le Pilote sert à l’évaluation (benchmarks, tests d’intégration, études de seuil), pas à la production.

Une API hébergée ou offerte aux clients est-elle couverte ?

Non. Pro et Labo couvrent l’usage interne sur votre propre infrastructure. Dès que QECTOR se trouve derrière une API, un produit ou un service accessible hors de votre organisation, c’est du SaaS ou de la redistribution, ce qui exige un contrat Entreprise/OEM. Les points d’accès internes réservés à votre personnel sont couverts. En cas de doute, décrivez le déploiement à admin@qector.store.

Puis-je redistribuer QECTOR dans mon produit ?

Seulement avec un contrat Entreprise/OEM, qui couvre la redistribution, l’hébergement SaaS et le regroupement matériel. Écrivez à admin@qector.store.

Ai-je besoin d’une licence pour la recherche non commerciale ?

Non. L’usage personnel, académique et non commercial est gratuit sous la licence PolyForm Noncommercial 1.0.0. Les universités, organismes de recherche publics, organismes de bienfaisance et institutions gouvernementales peuvent aussi l’utiliser gratuitement, quelle que soit la source de leur financement. Une entreprise qui utilise QECTOR, y compris dans un contrat avec une université, doit avoir un forfait payant. Les établissements d’enseignement qui veulent tout de même un forfait payant obtiennent 40 % de rabais sur Labo avec un courriel institutionnel.

En quelle devise sont les prix, et la taxe est-elle incluse ?

Les prix sont en dollars américains, hors taxes. La taxe de vente, TPS/TVH ou TVA applicable est calculée et ajoutée au paiement selon votre adresse de facturation. Les entreprises peuvent saisir un numéro de TPS/TVA au paiement.

Pouvons-nous obtenir un contrat signé, un formulaire fiscal ou un questionnaire de sécurité ?

Oui. Pour un contrat PDF signé, un profil de fournisseur, un W-8BEN ou équivalent, ou un questionnaire de sécurité, écrivez à admin@qector.store avec votre numéro de facture Stripe. Les contrats Entreprise sont toujours signés.

Ce qui n’est pas inclus : sauf mention explicite, aucun palier n’inclut la redistribution, l’OEM, l’hébergement SaaS ni les droits de sous-licence. Contactez notre équipe commerciale pour des conditions sur mesure.

Approvisionnement : tous les prix sont en USD; les taxes applicables sont ajoutées au paiement. Les forfaits mensuels et annuels se renouvellent automatiquement jusqu’à annulation, avec un rappel avant chaque renouvellement annuel. Satisfait ou remboursé 14 jours sur votre premier paiement de tout forfait. Les jetons sont envoyés par courriel en quelques minutes.

En achetant, vous acceptez le Contrat de licence commerciale.

- - - diff --git a/fr/privacy/index.html b/fr/privacy/index.html deleted file mode 100644 index 98f26b83..00000000 --- a/fr/privacy/index.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Politique de confidentialité · QECTOR - - - - - - - - - - - - - -
Aller au contenu principal
Aucune télémétrie logicielle · Aucune publicité · Aucune vente de données · Mise à jour le 6 novembre 2026

Politique de confidentialité

QECTOR ne recueille que ce qui est nécessaire pour vendre des licences et vous répondre. Le logiciel de décodage ne nous transmet rien : les licences sont vérifiées hors ligne.

Dernière mise à jour : 6 novembre 2026.

English version

1. Responsable

QECTOR est exploité par Guillaume Lessard, entrepreneur individuel faisant affaire sous le nom iD01t Productions, 288, boul. des Ormeaux, Longueuil (Québec) Canada J4L 1J4.

Guillaume Lessard est le responsable de la protection des renseignements personnels. Pour le joindre : admin@qector.store, objet « Confidentialité ».

2. Le logiciel ne recueille rien

Le paquet qector-decoder-v3, le plugiciel Claude et le Workbench s’exécutent localement. Ils ne nous transmettent aucune télémétrie, donnée d’utilisation, syndrome, matrice ou circuit, et les jetons de licence sont vérifiés hors ligne, sans appel réseau.

La seule exception est la facturation à l’usage, offerte uniquement dans le cadre d’un contrat Entreprise signé et désactivée par QECTOR_OFFLINE=1.

3. Ce que nous recueillons et pourquoi

Nous n’utilisons pas vos renseignements à des fins publicitaires, nous ne les vendons ni ne les louons, et nous ne prenons aucune décision fondée exclusivement sur un traitement automatisé.

RenseignementsFins
Achat : nom, organisation, courriel, adresse de facturation, numéro de taxe (s’il est fourni), forfait et montantVendre la licence, émettre les factures et reçus fiscaux et respecter les lois fiscales. Les données de carte vont uniquement à Stripe; nous ne les voyons jamais.
Dossier de licence : courriel, numéro de reçu, forfait, jeton de licence, expiration, statut de remboursement ou de révocationLivrer et réémettre les jetons, traiter les renouvellements et remboursements, et publier les reçus révoqués.
Messages : ce que vous envoyez par courriel, par le formulaire de contact (qui ouvre votre propre logiciel de courriel) ou par une réservation CalendlyVous répondre et offrir du support.
Données techniques : adresse IP, type de navigateur et pages demandées, dans les journaux de nos hébergeurs; statistiques de pages agrégées et sans témoin (Cloudflare Web Analytics)Diffuser le site, le protéger contre les abus et savoir quelles pages sont consultées.

5. Fournisseurs et communication hors du Québec

Nous faisons appel aux fournisseurs ci-dessous. Chacun ne reçoit que ce dont son service a besoin et est lié par ses propres engagements de confidentialité et de sécurité. Certains conservent ou traitent des renseignements à l’extérieur du Québec et du Canada, surtout aux États-Unis. Avant de recourir à un fournisseur, nous évaluons si les renseignements bénéficieront d’une protection adéquate.

FournisseurUsage et lieu
StripePaiements, factures et taxes; États-Unis et Irlande.
CloudflareDiffusion et sécurité du site, et service de licences qui conserve les dossiers de licence; réseau mondial, États-Unis.
GoogleEnvoi des courriels de licence (Gmail); États-Unis.
GitHubHébergement du site (GitHub Pages) et du code source et des versions du logiciel; États-Unis.
CalendlyRéservation d’appels depuis les pages Contact et Fondateur; États-Unis.

6. Témoins (cookies) et technologies semblables

QECTOR ne dépose aucun témoin et n’utilise aucun traceur publicitaire. Nous utilisons Cloudflare Web Analytics, sans témoin : il compte les pages vues et les temps de chargement de façon agrégée, sans témoins, empreinte numérique ni pistage intersites. Certaines fonctions de tiers peuvent déposer leurs propres témoins : le script de Stripe sur les pages Accueil et Tarifs (prévention de la fraude), le module Calendly sur les pages Contact et Fondateur, et les témoins de sécurité de Cloudflare. Les polices sont servies par qector.store. Certaines pages demandent à PyPI le numéro de la dernière version; PyPI voit alors votre adresse IP.

7. Durée de conservation

Lorsque des renseignements ne sont plus nécessaires, nous les détruisons ou les anonymisons.

  • Dossiers d’achat et de licence : pendant la durée de la licence, puis 6 ans après la fin de l’année d’imposition à laquelle ils se rapportent, comme l’exigent les lois fiscales du Québec et du Canada.
  • Messages et réservations : 3 ans après le dernier échange, sauf s’ils font partie d’un dossier d’achat.
  • Journaux d’hébergement : conservés par nos fournisseurs selon leurs propres politiques, habituellement de quelques jours à quelques mois; nous n’en gardons pas de copie.

8. Sécurité et incidents

L’accès aux dossiers de licence et aux comptes est réservé au responsable et protégé par une authentification forte. Les jetons de licence sont signés avec une clé privée qui ne quitte jamais des systèmes contrôlés.

Nous tenons un registre des incidents de confidentialité. Si un incident présente un risque de préjudice sérieux, nous avisons la Commission d’accès à l’information du Québec et les personnes concernées avec diligence.

9. Vos droits

Vous pouvez demander l’accès aux renseignements personnels que nous détenons à votre sujet, leur rectification, leur communication dans un format technologique structuré et couramment utilisé, leur suppression ou leur désindexation lorsque la loi le permet, et retirer votre consentement. Écrivez à admin@qector.store. Nous répondons dans un délai de 30 jours, sans frais.

Si vous n’êtes pas satisfait, vous pouvez porter plainte auprès de la Commission d’accès à l’information du Québec, du Commissariat à la protection de la vie privée du Canada ou de l’autorité de protection des données de votre lieu de résidence.

10. Mineurs

Nos services s’adressent aux professionnels et aux chercheurs. Nous ne recueillons pas sciemment de renseignements auprès de personnes de moins de 14 ans.

11. Modifications

Toute modification sera publiée ici avec une nouvelle date. Si une modification touche l’usage de renseignements déjà fournis, nous en informerons les clients par courriel et demanderons leur consentement lorsque la loi l’exige.

- - - diff --git a/fr/refund/index.html b/fr/refund/index.html deleted file mode 100644 index 47d207d1..00000000 --- a/fr/refund/index.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Politique de remboursement · QECTOR - - - - - - - - - - - - - -
Aller au contenu principal
Prix en USD · Livraison numérique immédiate · Mise à jour le 6 novembre 2026

Politique de remboursement

Chaque forfait comporte une garantie de remboursement de 14 jours sur le premier paiement. Les abonnements se renouvellent automatiquement et peuvent être résiliés en tout temps. Voir les Tarifs.

English version

Garantie de remboursement de 14 jours

Si QECTOR ne vous convient pas, écrivez à admin@qector.store avec votre reçu Stripe dans les 14 jours suivant votre premier paiement de tout forfait (Pro mensuel ou annuel, Pro Perpétuel, Labo ou Pilote). Nous le remboursons en entier, sans poser de questions, et révoquons le jeton de licence.

  • Une garantie par organisation; elle s’applique au premier achat, pas aux renouvellements.
  • Le remboursement est versé au moyen de paiement d’origine par Stripe, habituellement en 5 à 10 jours ouvrables.
  • Une fois remboursée, la licence prend fin et le jeton ne doit plus être utilisé.

Renouvellements et résiliation

Pro (mensuel ou annuel) et Labo sont des abonnements qui se renouvellent automatiquement jusqu’à leur résiliation. Nous envoyons un rappel 14 jours avant chaque renouvellement annuel. Résiliez en tout temps dans le portail client (connexion avec votre courriel de facturation) ou en écrivant à admin@qector.store; votre licence reste valide jusqu’à la fin de la période payée.

Les paiements de renouvellement ne sont pas remboursés au prorata. Si un renouvellement que vous vouliez annuler a été prélevé et que vous n’avez pas utilisé la nouvelle période, écrivez-nous dans les 7 jours et nous le rembourserons. Pro Perpétuel et le Pilote sont des paiements uniques qui ne se renouvellent jamais.

Problèmes de livraison : nous les corrigeons

Si votre jeton n’arrive pas, arrive corrompu, est associé au mauvais courriel ou échoue à la vérification hors ligne, c’est une erreur de livraison de notre part. N’ouvrez pas de contestation : écrivez à admin@qector.store avec votre reçu Stripe et nous le réémettrons ou le corrigerons sans frais, sans limite de temps.

Les jetons sont envoyés quelques minutes après le paiement, habituellement en moins de 10 minutes. Sinon, vérifiez d’abord vos courriels indésirables.

Paiements en double ou erronés

Les achats en double du même forfait pour la même organisation et les paiements manifestement erronés sont toujours remboursés en entier. Écrivez à admin@qector.store avec les deux reçus dans les 30 jours suivant le paiement.

Droits prévus par la loi

Rien dans cette politique ne limite les droits auxquels on ne peut renoncer en vertu de la loi de protection du consommateur qui vous est applicable, y compris la Loi sur la protection du consommateur du Québec lorsqu’elle s’applique.

Devise et taxes

Tous les prix sont affichés et facturés en dollars américains (USD), taxes en sus. Toute taxe de vente, TPS/TVQ ou TVA est calculée au paiement selon votre adresse de facturation et remboursée avec le prix. Les entreprises peuvent saisir un numéro de taxe au paiement.

Vendeur et contact

Le logiciel et les licences QECTOR sont vendus par Guillaume Lessard, entrepreneur individuel faisant affaire sous le nom iD01t Productions, 288, boul. des Ormeaux, Longueuil (Québec) Canada J4L 1J4. Contact : admin@qector.store.

Délai de réponse habituel : 1 jour ouvrable. Voir aussi le Contrat de licence commerciale et les Conditions.

- - - diff --git a/fr/terms/index.html b/fr/terms/index.html deleted file mode 100644 index 45f3cf8b..00000000 --- a/fr/terms/index.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Conditions d’utilisation · QECTOR - - - - - - - - - - - - - -
Aller au contenu principal
Droit applicable : Québec, Canada · Mise à jour le 6 novembre 2026

Conditions d’utilisation

Ces conditions visent le site web et l’usage gratuit du logiciel QECTOR. Les forfaits payants sont aussi régis par le Contrat de licence commerciale.

Dernière mise à jour : 6 novembre 2026.

English version

1. Votre vendeur

Le logiciel et les licences QECTOR sont vendus par Guillaume Lessard, entrepreneur individuel faisant affaire sous le nom iD01t Productions, 288, boul. des Ormeaux, Longueuil (Québec) Canada J4L 1J4. Contact : admin@qector.store.

Les prix sont en dollars américains, taxes en sus; Stripe ajoute toute taxe de vente, TPS/TVQ ou TVA au paiement et traite chaque transaction. Les abonnements se renouvellent automatiquement jusqu’à leur résiliation, et chaque forfait comporte une garantie de remboursement de 14 jours sur le premier paiement.

2. Acceptation

En utilisant ce site ou le logiciel QECTOR, vous acceptez ces conditions. Sinon, ne les utilisez pas.

3. Licences du logiciel

  • L’usage non commercial (personnel, universitaire, éducatif, recherche publique, organismes de bienfaisance et institutions gouvernementales, quel que soit leur financement) est gratuit sous la licence PolyForm Noncommercial 1.0.0.
  • L’usage commercial exige un forfait payant et est régi par le Contrat de licence commerciale, qui prévaut sur les présentes conditions pour les forfaits payants.
  • Les composants libres de tiers restent régis par leurs propres licences.

4. Usage acceptable

Vous vous engagez à ne pas :

  • contourner les vérifications de licence ni utiliser un jeton de licence qui n’a pas été émis à votre organisation;
  • attaquer, surcharger ou sonder ce site ou son service de licences, sauf par divulgation coordonnée selon notre politique de sécurité;
  • utiliser le logiciel QECTOR ou ce site en violation des lois sur le contrôle des exportations ou les sanctions;
  • présenter des résultats obtenus avec QECTOR comme approuvés ou certifiés par nous sans autorisation écrite.

5. Contenu du site

Les textes, les images ainsi que le nom et le logo QECTOR appartiennent à Guillaume Lessard. Vous pouvez citer ce site et y faire des liens en indiquant la source. Les artefacts de validation et la documentation peuvent être republiés avec attribution. Les articles et jeux de données publiés suivent la licence indiquée sur leur notice DOI.

6. Absence de garantie

Le site et le logiciel gratuit sont fournis « tels quels », sans garantie expresse ou implicite, notamment de qualité marchande, d’adaptation à un usage particulier et d’absence de contrefaçon, dans la mesure permise par la loi. QECTOR est un logiciel de simulation et de recherche validé en vérifiant que chaque correction reproduit son syndrome; ce n’est pas une pile de tolérance aux fautes certifiée.

7. Limitation de responsabilité

Dans la mesure permise par la loi, nous ne sommes pas responsables des dommages indirects, consécutifs ou punitifs, ni des pertes de profits ou de données, découlant du site ou de l’usage gratuit du logiciel. Pour les forfaits payants, la clause de responsabilité du Contrat de licence commerciale s’applique. Rien ici ne limite la responsabilité pour un préjudice corporel ou moral, ni pour une faute intentionnelle ou lourde.

8. Résiliation

Nous pouvons suspendre ou mettre fin à une licence en cas de manquement important, après un avis écrit et un délai de 15 jours pour y remédier. À la résiliation, l’usage commercial doit cesser et les jetons de licence doivent être supprimés.

9. Droit applicable et langue

Les présentes conditions sont régies par les lois du Québec et les lois fédérales du Canada qui s’y appliquent; les tribunaux du district judiciaire de Montréal sont compétents. Les consommateurs conservent la protection des lois impératives de leur lieu de résidence.

La présente version française est la version de référence; une version anglaise est aussi offerte.

10. Modifications

Nous pouvons mettre à jour ces conditions; la date ci-dessus indique la version en vigueur. Les modifications qui touchent les licences payantes suivent les règles de préavis du Contrat de licence commerciale et ne modifient jamais une période déjà payée.

- - - diff --git a/getting-started/index.html b/getting-started/index.html deleted file mode 100644 index 2fe2c187..00000000 --- a/getting-started/index.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Getting Started · QECTOR Decoder v3 - - - - - - - - - - -
Skip to main content
About 15 minutes · Tested on 1.0.1

Getting Started

From pip install to decoding a surface-code circuit and a qLDPC code. Each step is a complete script you can copy and run.

Step 1

Install and check

Install from PyPI. Wheels exist for CPython 3.9 to 3.14 on Linux x86_64, Windows x64 and macOS on Apple silicon, so there is nothing to compile. The tier stays "Community" until you activate a licence, and every decoder works on the CPU in that tier.

terminalbash
python -m pip install --upgrade "qector-decoder-v3>=1.0.1,<2" stim sinter
step1_check.pypython
import qector_decoder_v3 as q
-print(q.__version__)
-print(q.get_license_info()["tier"])   # "Community" until you activate a licence

Step 2

Your first decode, checked

Build a distance-5 repetition code, inject one error, and decode its syndrome with Union-Find and exact matching. The assert is the contract every QECTOR decoder keeps: the correction reproduces the syndrome, H·c = s (mod 2).

step2_first_decode.pypython
import numpy as np
-from qector_decoder_v3 import BlossomDecoder, UnionFindDecoder, generate_parity_check_matrix
-
-# Distance-5 repetition code: 5 data qubits, 4 parity checks.
-check_to_qubits = [[0, 1], [1, 2], [2, 3], [3, 4]]
-H = generate_parity_check_matrix(check_to_qubits, 5)
-
-error = np.array([0, 0, 1, 0, 0], dtype=np.uint8)
-syndrome = (H @ error) % 2                      # which checks fire
-
-for decoder in (UnionFindDecoder(check_to_qubits, 5), BlossomDecoder(check_to_qubits, 5)):
-    correction = np.asarray(decoder.decode(syndrome), dtype=np.uint8)
-    assert np.array_equal((H @ correction) % 2, syndrome)   # H·c = s (mod 2)
-    print(type(decoder).__name__, correction)

Step 3

Decode a Stim circuit

Generate a rotated surface-code memory experiment with Stim, turn its detector error model into a weighted matching graph, and count logical errors over sampled shots. The decoder uses the error model’s weights, so rare and common faults are treated differently.

step3_stim.pypython
import stim
-from qector_decoder_v3 import dem
-
-circuit = stim.Circuit.generated(
-    "surface_code:rotated_memory_z", distance=5, rounds=5,
-    after_clifford_depolarization=0.005,
-)
-graph = dem.from_stim(circuit.detector_error_model(decompose_errors=True)).collapse_to_graph()
-decoder = graph.make_decoder("blossom")          # uses the DEM's edge weights
-
-shots = 2_000
-dets, obs = circuit.compile_detector_sampler(seed=7).sample(shots, separate_observables=True)
-fails = 0
-for d, o in zip(dets, obs):
-    correction = decoder.decode(d.astype("uint8"))
-    predicted = graph.predicted_observables(correction)
-    fails += int(predicted[0] != o[0])
-print(f"logical errors: {fails} / {shots}")

Step 4

qLDPC with BP-OSD

Matching needs graph-like errors; qLDPC codes do not have them. Build the [[144,12,12]] bivariate bicycle code and decode a random error with belief propagation plus ordered statistics, again checking the syndrome.

step4_qldpc.pypython
import numpy as np
-from qector_decoder_v3 import codes
-from qector_decoder_v3.bposd import BpOsdDecoder
-
-# [[144,12,12]] bivariate bicycle code: A = x^3 + y + y^2, B = y^3 + x + x^2
-cx, cz = codes.bivariate_bicycle_code(
-    12, 6, [("x", 3), ("y", 1), ("y", 2)], [("y", 3), ("x", 1), ("x", 2)]
-)
-H = cx.parity_check_matrix()
-decoder = BpOsdDecoder(H, error_rate=0.01, osd_order=0)
-
-rng = np.random.default_rng(1)
-error = (rng.random(H.shape[1]) < 0.01).astype(np.uint8)
-syndrome = (H @ error) % 2
-correction = np.asarray(decoder.decode(syndrome), dtype=np.uint8)
-assert np.array_equal((H @ correction) % 2, syndrome)
-print(H.shape, "syndrome reproduced")

Step 5

Scale up with Sinter

Sinter runs many circuits across worker processes and collects statistics. QECTOR registers its decoders as Sinter custom decoders. Keep the main guard: Sinter starts worker processes.

step5_sinter.pypython
import sinter
-import stim
-from qector_decoder_v3.sinter_compat import qector_sinter_decoders
-
-
-def main():
-    tasks = [
-        sinter.Task(
-            circuit=stim.Circuit.generated(
-                "surface_code:rotated_memory_z", distance=d, rounds=d,
-                after_clifford_depolarization=p,
-            ),
-            json_metadata={"d": d, "p": p},
-        )
-        for d in (3, 5)
-        for p in (0.002, 0.004)
-    ]
-
-    stats = sinter.collect(
-        num_workers=2, tasks=tasks,
-        decoders=["qector_blossom"],
-        custom_decoders=qector_sinter_decoders(),
-        max_shots=2_000, max_errors=50,
-    )
-    for s in sorted(stats, key=lambda s: (s.json_metadata["d"], s.json_metadata["p"])):
-        print(s.json_metadata, s.errors, "/", s.shots)
-
-
-if __name__ == "__main__":   # Sinter uses worker processes
-    main()

Where to go next

  • Every class and function, with signatures: the API index.
  • Choosing a decoder and the full feature set: Decoder and the user manual.
  • Using QECTOR from Claude: the Claude plugin.
  • GPU batch decoding and commercial use: plans, from $79/month.

Verified: each script above was run against the published qector-decoder-v3 1.0.1 wheel on Linux (CPython 3.13) on 6 November 2026. Logical-error counts depend on the random seed and noise settings; measure on your own workloads.

- - - diff --git a/guillaume-lessard/index.html b/guillaume-lessard/index.html deleted file mode 100644 index d8c38dc3..00000000 --- a/guillaume-lessard/index.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Guillaume Lessard · Founder and Lead Engineer, QECTOR - - - - - - - - - - -
Skip to main content
Guillaume Lessard

Founder and Lead Engineer, QECTOR

Guillaume Lessard

I build quantum error correction decoders in Rust and Python, and the release and licensing infrastructure that lets teams trust them: corrections checked against their syndromes, wheels with verifiable provenance, and licences that work air-gapped. Based in Longueuil, Québec.

What I work on

Decoders that prove their output

A Rust core behind a Python API: Union-Find, exact MWPM, BP-OSD and Relay-BP for qLDPC codes, on CPU and GPU. Every correction is checked against its syndrome, H·c = s (mod 2).

Releases you can verify

Wheels built in public CI, tested on each operating system before publishing, with Sigstore provenance, PyPI attestations and Trusted Publishing.

Tools that stay offline

Air-gapped licensing with Ed25519 tokens, a schema-validated MCP server for Claude, and a self-contained desktop Workbench.

Track record

Public releases, newest first. Each links to its release page.

  1. QECTOR Decoder v3 1.0.1

    18 wheels for CPython 3.9 to 3.14, tested per OS, Sigstore provenance on every file

  2. QECTOR Claude Plugin 2.0.1

    Air-gapped, schema-validated MCP server for Claude Code and Claude Desktop

  3. QECTOR Workbench v1.0.7

    Free desktop GUI for Windows and Linux, 19 decoder kinds, 10 code families

  4. QECTOR Decoder v3 1.0.0

    First stable release: API stability tiers, qector CLI, reference manual

  5. First public release (0.5.0)

    Published on PyPI; 19 releases to date

Expertise

Quantum error correction
MWPM and Blossom, Union-Find, BP-OSD and Relay-BP for qLDPC, detector error models, Stim and Sinter
Systems
Rust, PyO3, CUDA and OpenCL batch kernels, memory layout and throughput
Python and release engineering
Binary wheels for Linux, Windows and macOS, PyPI Trusted Publishing, Sigstore, supply-chain gates
Tooling and product
MCP servers, desktop apps, React and TypeScript, Stripe and licensing infrastructure

iD01t Productions

I founded iD01t Productions in 2012 as an independent studio. It publishes technical books, desktop software and games, and electronic music. QECTOR is its quantum error correction line, built and supported by me directly, so you always deal with the person who wrote the code.

Verify my identity

Several people share my name. For invoices, citations or due diligence, these are the identifiers I control:

Book a 30-minute call

Decoder evaluation, integration, licensing or research collaboration: you will speak with me directly. Prefer e-mail? admin@qector.store.

- - - diff --git a/health.json b/health.json deleted file mode 100644 index 2a3cfc43..00000000 --- a/health.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "status": "ok", - "service": "QECTOR Store", - "canonical": "https://qector.store", - "package": "qector-decoder-v3", - "version": "1.0.1", - "note": "Static release metadata; live fulfillment status is available at /stripe/health." -} diff --git a/humans.txt b/humans.txt deleted file mode 100644 index f97d9f6b..00000000 --- a/humans.txt +++ /dev/null @@ -1,7 +0,0 @@ -/* Humans behind QECTOR */ -Author: Guillaume Lessard -Handle: El'Nox Rah (research), DJ iD01T (music) -Organization: iD01t Productions -Location: Longueuil, Quebec, Canada -Contact: admin@qector.store -ORCID: 0009-0000-3465-3753 diff --git a/images/favicon-48.png b/images/favicon-48.png deleted file mode 100644 index 3e2c69651f7703c51a3409b548543f39854cbb7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5130 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 diff --git a/images/hero-bg-1200.avif b/images/hero-bg-1200.avif deleted file mode 100644 index 53b04c04799f9fecc01a0cdc66ac52ceff699059..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34307 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 diff --git a/images/hero-bg-640.webp b/images/hero-bg-640.webp deleted file mode 100644 index cf8e1cb6db8f92293e4bf19e58146548ececb315..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15202 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 diff --git a/images/hero-bg.png b/images/hero-bg.png deleted file mode 100644 index e7a70a0be88da8e8331baada85d3b5e877014afa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 461085 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�nz3*aA^Sm=g?$)Bq@|8Aa61vSnceoU41?L82Z+H}3cBB}A9}UXNdD zia4s3v2815nZ@B>ATR~;`L`6e}=hD9XY9T(?Tb~qV8WT0zw5aGdkye z9PTZLxp-0*JGu-P#gPwJWAf&#oD$__N7)QSQ9PrC=zJ`rQV^=Mi$T6Q&9`3GB=sb8 zy1R9H8q6^wR&^GN-J?<|^~)fz+e-fO#gj)jog8mv2ixW-yOU|HHlZK}Nta@$Fw!{T z&w$ejRDzenzK5z@ADab;>NrmyJ-7ERMiM8oa%x^by!L8zBYb+Y|B()Z(0Cn>E-s%D zV52s0jirZ@vP@lm>*dG4I^U9~)8$gTx0{AcfkdX>mL6vp4loOSwUYB7qhV`ky-N=o zwdifJKMG8jm}KXpWp50S5Bu&m(rEb3L4t*vhE13P)6%@de79|bc5>%^EP~*8u~>+^ z1maVq(OYZjk^O4}4X)Mzsy#${ zWtg)IcdtHasMsh1zXlxPF`^5W@oGr)7_8&f3tgu@?lvMGTG37FdQ+f?sI%^*RtSD5 z1*j+l2iu>m8fPE<{dby)&eP0N3|Jxub!k!&x=aV`tWn5XFBA~Ry^q?)|2jyy%H zjj2BEZr@tdpMHA(ELgMA$VJ8a2%@X87@NjuBnjF{O%)9+o06wCHPPmqFP;7RN$GT} z0C2b!9AsIPC{n6L84j)OIFjqK-=YQLBZ*sWmZWq8d5|&oNb^R(cFn1B(@jAdx(18} zn!5SJ*xq`YEIS?|4Mc2<4p1Kckn?YQ+_b%k?ODVFD1c>(8z6`cR7py7o&YAg8%3x| zTZ4D@jT{K4$C5L|E8}MM%L~q4^(Hu88=hVAN-;$dv)zABy*%us;aTt(Vjh{{^QG!+ zQ{R37!u@~w(#QY$#kd}3lAR(7oiq?yoo8(Y4Q=PZtm~kFVs+iUoPh6L2g34P_RiI= z)j@ZOjgc-wAzmTda(qXsBvpIq#}HGmD|Y+OWD81>3bh}FH761G3(|P2sc)^9cJ0nm zPp@{bq84|z3b897pyl)!>J6?{*r*T#n3#%Bl^ z)F-4|-?Pz(&&pwV-F)^DZ^LQjOnI>vh!8Nlc3v^vLZ^<)A3(T&5RHRfjN=0FMSGl< zPfhc9N1fk(UA^+>6X}R0#qJIFn_Y`(Nxw4g&tB(G=4{NV>a2pS4!Ux6gPQp8y>1}{ zwUr+Us@m-y3{?A^p&dByK`txr{>(mmyb4ZMU)Q$f81-(A_v z6yjOm>Ui~oD=jSEaMoU-jTi{?NtPPx7TLGcNRd7Bq!Su9sU5#W$EJxyP~*kr2&T<+ zv{65z%v96OjZj$93ERmDDjqh+6s<@ZkP?c8O#ulVIP|NgctXdFFl0>MHuj0rHWQ#z zTHWSyE*O$#+FrS}pX!__RY3v9!>_}FUXWLz5EmP_A3R!L;=_RMZKnhP{Als~-Y?HeH^2SD zHSzTLcW0tpcJ4sh)ajj6_L;_7*}v48C?x6=4a+TBYo3YiN&f9uFMs_-^^{F_H2Y2$ zT~qD0w+ot#CgxurWJPC-M75!CzTC^~%WcUI8$pBD*GMguV@^rR9&n4%Cr<_jw3sMW za@0_eK9H0_wg|rf&s0pC^q{djlFlm5n}|p3euG#z5(8S;-zUsyyieVAw6KQdQg%_N zG%+F6cee*s7UEShymsxZ%Jf>{^in+srm_#9WTyA`z0Fj%N1v$A)-JwkbL#bMN;|@R z7Q1)p#%wDGePwshtn52?c#h~62K`b4MJ(yt3PN_4eudp-?&>A#U8?-rJ=Jd`UQr>4 z-c&acFhpgoLegFly5pFPqglCiXmqT|51hEjm^fu$$tH0Q=Dk{+-zS7 ztHRi#%BCzfWCg+ED6CF3prB?u{pzECE3H6`@?wre`X;k`6#VhJG>f6l|6mRyZQ@lw z3r~co@31HoQVIQBGR<-(G3_)sMO1C-g|XLkyHEPiHWS!!LiB~>d9+=o=aU`sQ_$T$ zsT%ci1mL!C`V_t#-9!66eR1`~u$=EFG|2xCvIx$S^s@66Ijb9?QhQyJTb@=vtSP}k z2i>fcc~V2#cW|S8*(BozXCwt1ddl1oelamj9V?kBQj9`tqtQ)pI@X7}fe4p_*rAcd z3Qizn-VPFd8?@Y!7`Iiyxjrd835~@aZ*bQKz`SsLY8+AUQvMFzq;;}{tg_H5w?A3B zUFEz;Z|#u|a{?})yEddUZy4CnHN?VDGjcv(WE3Tt+ZQ-wA0tL5xf#RT5JUC}%_%1$ z{D%20NyIA>IT9pS_RD1|*k4uj~vZY|TBy)0tmgq9^H3PVeM9XjFx5;H-pG6hJ z7*qYyYvSbJ!)+UBm5o{3$Nq`~As#Xh!*^w2hhUT=|bW0S~JqYERH|)}GjVpFsiOiO8~zSJ-F;p?<)DWFJd|@Ozl8KdJhLIDd(x zRq*>n#E1>;zDQoRjfYaJN#%F;Xi*Kf-Q%1@vh~59`0A+cT~uiS%41Fq`{NvRI7W4( z$FEC&E-XRH4vW<%%@(`x&^8XM7}{OY_VQ5s{t;Y{Oqmg-aCz%qH|{592?tjg1L{H# zk??QUcg-t&S5oB3iClt9*`Z3teeO;h>F?=Dkr4?!Xcgg&_M?a!(~6Q7ULdVfOeZ)I zh=GODa2&TcqahX=nyhk9@o02EBWm{|ZVeUY*tmVtRzd1u8}?+-h4-lB_%U+FGUg!C zbUbJK!sw)Mq7k{*u2ajq9|Mz3YLZxDLKyM-G>qTc3F+lwCWu^O$OJt#RkeXo9@uQ3 zkbCxIaKqVW)1J(^Ydz6ho`_MLqU1AkqpBS zz#02pVfI9XHsi{^{K99VIwwpEon1BQEB7!v4|77tnAvu?dvql0GRt=4@gmzic4P;H zDcZD|i;dG$u^r6y<|#zrUtXLGvjwr0F^do5Paa)k$&xCr3`0Q#3082Ut*E+{f*rn0 z5LRvY5ZR1Q-cs(}=!KU7&>~+Rv|oNTKJdW41s%URE>?rxh;2?LN!O2z`;Qd`9es4oxbNq7AV$i2H;} z8^U=!(+)BqunhveQzD1qUxR*1L-d;?@dp*@$o|MRaab19FTWpl(=19D^oVCbOCHc; zzNAFbNMa0|=}l)zmaP_g-F+79p;T0*&VJ@J{pK#+ol{?42ea@=ty|ziy*pM4sYTWulVr1`-~!7`jpD`nR-~SDf+$UPdnO9 zAm3%vQppa|#!-!zj?vEM(9H;a^@#RRuiH+FDi0N*k(6Iym9TFE5H!TZ4^YmuYt{71 zUDwj_kF|1zp?g$IEUo7Yll1}h-F@>N#x*e~=(?#g4sC?7PGW|K;{Kx1Zr7Y`wUmg9 zF1F@)rCG#DEi8MC#)&OdY>UA@i>8<&V{abgy8UOh*Piqd+9D~1KYEg;dwa)NlH!0p z3>3Q#bMa^stG2y9;CyN$0Xa7f<1udQs5O1pJr{0iI%WW}pR;iPJR+H@VG5sN*RF&~ zF@ooe@epZ6>==DEs_|@zRt=G4<$^OiR4F-U>tRhE+F+GMBDj5azj{)c+e~U+Ih}7$ zcZ`++N}Kib_4CEeFLE2Rj<%1gaEiF38ON>}KG-@I>O^dA7Q6lHMgRa107*naRBO{) zh<973+m$K#&IjSSmdZGD`>#EHH)KE!+uk_bq&ZZ!^b6K*H|50u15sfhos%*s)x_>( zwlxJZ)DQt#c_h1!5xIKd%P*}zJqth2^YdUALM}*J?MsoH6@N_*j$=mbM+>*{BlrHB8Xmu6T~G=dotLabKEnY;p$5k=A(0<;BjFJ%a!8AWVDXg|$~6x0q) z3Rxx}HN~Jo6gEX=A{LokpJylb#GRf^2qUSr+XRn=qb`_^Tc;DRetNV1!U}9fdLXfMk1+&8KIpm@JVm90 zXWVp{TO}Rbiew1gXW|(**(tLE`dDGlciFpVI=ip#+JKT{??d*{!%8H)uw<}2HDpoW z`Sw-3oFcHnoOz}dPou#>fv>`vGaJk!J3z0ItV~1Hiy?tQo8*z&qOD@TK*}w4I>nmG zPk9i^62vQ#Ke$4a7N{aVgtRRglR#ny+Wm5JtGaW;(R%2%{cyq$i~7vPV5c*phMw`s zu_148nv-owAQb>@hG#9VI9Moe;gB*5yKN&_=T@0L97X$)>FWPqt2MT_vhw zDym0i2~s*@!m)Yso$J5O%FA3tEV*sA-YkXnNk6l>Q5dQq3ql!go!BRt>5b_GrK-v` zUq{r+l4MG6w7LG38!v|Di?hooqv+N(bEI9-Se zsk0Fgo8fLLT2A$3-{*JsV>CSE9@TteVB^&yr~XH@FD0!d%9y3@!_sxp`+G;kBYzs_ zfTQi#l_p1eN0H&OLUHqXl!X~D-UHsSG?KR`-^Cxf@8W$VyhK6zDIgZ4J5J_K#)Aip z>Z4g86@M#D^R5s}?2vF7l3=kqGA1I0`rAsk*DYubEVF78@R*j@Y>LI|E=sQo)~suJ zQ7**U6190&(DQVEmC35iT`^opyLhFv_Rcp@F~sCAh@FQFON&|yk5X^J-c;MSLebpN zzE>CGw$cUNnC({0 zGMP2T2_EQtk4dpf)PM%o?7(yxE$udQKl?;KBqn?@#av+i$TPL=f$lLH9(0#WkU1n^ zvP&K0IjuP5ffsD?RYOizLC#C#!+e<|@W6~5-b=wk4-_BG$OBaD<@U0es!FgkGnHer z5y(lr9$e~^mrCNZ&o9r)&wc63pAV}58gHI%Z5-K(F)*quw`T;0u~p&5rq~o)CsKs8 zqKHgONE`cKl_bd$m4`RJ_+-5@$GI1*$d{;{6xf)V=3s}JJPd64taN22HYWlteHsk{ z5h!>Q5E6Ksv}NMf-pv~-|LAe5_wu8i(OV^*+n`AY2m54wwfN)zhVE6TL!+#f|4zawdZ*~` zfO#oBYBcDr3c#14Wv_^qaH&$v11PuB1^^k6VVo8lli63Ssl`Rje&!Ec3)>fCQEK3Q zyG<^-qlb+?-r{R2zif5Lsh$W#Jqi`6+7s_Lc_SV)Oj|QH%p3cAq9@I;d|mJV11dms zWw2*D`{^EDko~=VBtr+C&X3&hEa6BfGDpp%#**pwo*DO3q%gcCNWeVSrWTGyF=LY0?Hv?TL~OwgT1vNA zpT(BC1FDk;^u9zZ&Rb}Ij!JqFC4H}Ph}g0Z8+Z2TU4E8wxLTSlaGn)rped79Ko;On zO*EZVG>Eiu)4o5ct9nx;QHqy9GQ#9hZj)1EyO~h4DZM!&CyD~I!<&CG!MV8WMB!eN zC?RmxEU5I5d8RNL^L&D%Gx|1JkzVM_#+{Je~Jcuj5F&zy>F z`;U=Rxxvk>dBw&nRS~kBzmD#^I@z9&zhi#4wk;}iWn+(WF~P}~-u~I;Oa!~x5#iGJ z!pvTM)6HWoHfBOrC#bl1osbrlWM!V!hPU6mc3owUzUZClYwNa1om4K@g9Qq`85C1C zPlGDni^HbXLz7bwvhV4k3`OM>lo~yk@>p)2e&@!A{~dyLPaT)Je@oE6I5Fx9MxNtU zM&~13lyQpK_c13!pAa!MmCX8Vuz*yeWknmxZo#J^iW@7(ZgR738suSVla_~uO&ekZ zTRz&iyO9R~zAO69z~=3Z--~E?{yJDTgEVMN*5Aeqd~*FS)Wc6qs_xuvIlbn-%dg(g zvF{l3G=SEt6`@-OHeQ|m13j1x>7fDb*@z^6h*$-Guil>QB@{zqbpS~eB9CgvE36an zt`3&M(PeVlW}&C*_Pifguh6@b1AT{Gz{nmI>MDTxoS(327t$%4Qn{*kg7-J;!K>kT|<}enNX`Bv&GqSRu~4PTw-S(qwD{;DYPn zsTf^%(h$XtXqUv!zl*$ZVkJ5npawLyXr9>ad#i3$7y>AYCW&l<5RCLHN|sPBq9df( zA~ud9Z$HTx8TPy!Ha!QIva6VhpKLt_8H9rz$MF3l^sRDF6!mFWCoH)g5VTXUNUsf6 zduUsXbXat-vSF*foCbdgOPF?ZXtX(1L~K#K1ToHT$froL6|;(nh|Reuu@y2W1cI9> zgnCLmqd{_;g!VeiH*$@8J$CZsB2amC#0j7n8=2YEY{TZ0CzaZCy7rd5xKOMkAeUqP zyYibae)q%ss_N7w7e`HdxvZ&+?E-vT1=Ox;qm{7#NO8Oss&gz*+lQa#UtN3eDen}! zX=Uzl@E|H%67rV>$&u&(6@JJ2gd+F+C_**Fq72f=OVG^`7p)x+Ahph zRz1M3{IAR2%mlqEz76>W>9nawBKlBcwV5f(cJnJ8F-h0DSWfJn6eHrK#2GoSsCPnc zKTtg=S}X(gOe@FgBUU>jqik}e^pJK|gb!8>l=0!JPr5&}q2WZ2W#{&@8r5PDMgmZq zVozuaDVk%_usf>>1Sw#!C2YPZ=2L5&unr%M3eep#|JQ=9<1C_hpkF1_5 z_0cs|n@nCgqC_U|tp^z1iLGN@sm$jBqX2rN&_3B3$XkDYyBwZ>`ZzhW<*oEnR#7=x ztkKqsBD+(VMPxQ+$;z}k6;nMo$BLz9a!bij9m^@az4Ydx`OZs^e{;5G$o+zYDKrlb zug!~&xI4(3*(48K(DI`}y(pmt2hys+rVf@DQkxHt*aS_ZnS~0NSRsg49;IsFr9*9{ zzzI}sDQJ_az_V0Gz&wno%fYXdea;j-Wpt}p@oxzE_rCox4J{sTJi7Vc{*R9y?ASx= z*qam1y(o!Cq9pb;jO!(-?ge~TC9@g^Z>r(bhR3{gZAwLn!~p_V7X&NvAlx5BzvGJx=`AA>rLj|si zZ>V!gs9e_K9Zu=C?>1PJUrQtkXZ{7JD6Va|Gs>Oq4n1Tst)6ad*_gHdRdL>vHKXzU z_GgT6@!R_3(J!9+X63o}j&>!#uY*=e%2Epvi|W8&YHW1jU{#yild*;9iJ!JH|GNCW z2v7AE9C=iskCjy$W4G5!$_y{FDQP`zp?kh&U&8=nK%Bo#5Uu8T>e)6&EVVt@IsEK< z*Fw4YxOaBe%<3nEV4#DkPG_4JH(LjstoQ{&lV$Qq9;&SqwRxg>#dYiCMA_PR>zE6^ zqu`sboc;3iH7{pfS;&?=9n!*)P?y$$`LdCvGy9HTx)tAC)I-dBnzn*dBzA2P#UZq% zoK5TVAz;Zi5)qT3X)goD$tcfWu@A{d$ewH_3`oCf&)* z)(zUoX^B_=PxX}jqu~J3HDYhv-ajy;!{W-ux!TJ#eMj`yrkAy1p#?+5yGTXs@3hyw zo7xNNoxOc+OTsre$2?HY16r-S}HjI&Hn8Rz4xv5Q^dJZnZpcYUI(5gz9QG%^N zzv=TNU zcOqqmC}Kx>XJROIsEMU3Dh_j0qLPQh=hPOaP8P=vflxTlGvw{-T4CEcMD{x^adbMxy~ai{9{FBOUn}*m%dV7ynhjFYca2(yfj%} zI}%%BD$4n%Kl$2=-~IIWu#uf^o66a`4X)+(`5_G(j^WC9%$J_>Y$$t>lZu?Zb?cLJ zYL?B!HX#pi@H*Ij@SUG+9_~(dhnJgTo=f-cW;T)?RZcef4z+a}*s8ReE*`(Q^Jh2p z=O6BWYJ%{ZtcXqfbaLwijkBr9k3anS4Z~G@F{?J@%oQ93+b3k~Wkcc#I{G1K65CVz zU5oF&cJZsv%SPo_P~%tVC{C62By_tuORXp)>9C)Z2mC`rBvHdggBq(5=ZyGmO~dAu z5owWaQVZ!qzFftkJ1^fDN8SRK*R~PfhLLLU4<0rH#~+rw#DkF|t-MC$GBj3^4N|>` z7;NIcy};~co7f7~w`n8VlGY;|8uy25<;#mU&*#|BSl*i(cY8f=*VQh7G2NA^ zVOLyXB@|j$&v0<%Btd2pS|762VNz69ByBS6GtHLhg{KGz4e@`lNa!_EVfO4UVVF5D z23D*q1qa-YpIi=vY`V=<#3lu1oz^bNQ4U|$9B|HKzq1@}5vi|e;Pn}7(04Ap=nN*M zW@v&fbRC=>L%r~QK-i8GClzD&GFrXyCY@M5gkH~H@M*BJpOU+Md=!LWm`16m84sPf zU4`oH;fVWYlP1(2_5&mn(1N=y5Q)WIaRk%lb%llGAQadBEHL?EoSo;HUNvPGD_uN? zrzsjnwA??S0L807csWPtXSr`h)scp4M%;Q+o+UXD?%Etxg&cP#n~N_Gw02^oO^zz>pMUGQ=ga2F^!`Ve75BB)oSL*z5uE^uM(Oj|kmd*g zdk3vU(FQ8H_j z+fb_7^-`#=y@7F0mM)$yidfBITwSTcZQezm$Fh#?LEu%Xm2MNMkeewg51f&^{oS5k z|N7d+eH}KAstYsQKF%QrFtf^hV{>9_sZ*P4T>SdYmtX$&qxaToT2@TjT$8G__GD)& z@xLj(zf$hVok{JmBZufQPAbP=llQ5b**r1kSW$2?+p_UXeX>FDEW|5(k_8wx22^K? zoDyYNm5cHAgRSnhl6d^#?;Z+Oz9Aj7UC5aq1kPy+dw#3?TVn1@m-{%gPA-tO9I2_O z&TUW(|NQ3phyD5H){nncS^WHyGQ^)si^8d>kbB#JWM*(9v#+(d@s#Af>N3azxA08= zQgYQCvEVAC?o)$$Sj`k5WD`g^XvqckT&?X{TN0-U@|}v zub??Ncdp*@dB`xQOWku#ju2Y79y+Y(iP0cd{9b%}Cy6LguF!iZ`{GSEM6NKF6H z&Yv`*rd487E?ksKM`?R#6TSS3|FX9o#4E&`fl2$gB(kGR_&D2mHLfFGxhYHAD3JHu zN~3XZgS5{K*+tqGZPFM9L&vgWU*&{HccgQt9U0$o_fk(reA*1BAtt5ofs1gw>*U{T z4jqeP`O4lz_e`FfsVxchIh@{<3cr6`4%SMgx9mOia(I45&F03)4IK0{+nFMdCN5tv zbS)^G4Ah2Ha8kCVsczBPt*?e(+?Qoo;mFG>?%p{ZEYMIlxU_le=m6R)mNVT z)xrOMUzzPubG>v;1doN>nZgiyTDAY|PIttv-U)LP&TQtjc;n`0=X6xIdfS@IQyZYr z>zicrEj~N8L}8>#<)k^>J)!JzW3mv}zkU0g=eIw8c>m*zy)T^ht$t|e=0U%Ks7@t` zo%&x|540-IJ9&k331w5R)sa$i=egS#S8v<5Dw;FgmH{kjVy&KApF`NUb`-ICN+B<+X#68+PB`zaz zXVM4&FrqNiJC$qN-eJaa1E+alB;{{8%Wqm5nRyFUV9NoMP1lxkavz=by}SHcu;K`< zdKGIN_3#bx)bj}ry4{3y%d{a9@AbNOV;eecIfykMX;Um4W$xHe#eNgy^wl}IbMIhD zsB)nRSWD?5mh7&o(n)Vl%_j2MTJeqVb(i?RuJEyJDW>Z89iM?>_cLvEUbXSSrMTPo zGeUBuR?FDdcWkSxa&_Z7{iH(R%1~c{$*>QfS6aEAw4!jctQ?8NNNX=?AzTl2$8Wy6 zQ*_d{%smx#eWC8I!#Vhx{@b&@t zD%s;HT|FpsC9uP2lm!~t1OeXxKCzo*0>PoL1c(>4oSH*>v=jT`Jp8_y z1a0zp38+c`W%2vG&Xz0VK)m&bFaP1o$kvf*&=r%LOxAvC|IGfec{XevmzwKgsr(iD z_vHLMAMlCb2kM3VSE%4e_> zQq(I7PJ@d6x9i{h(trB+zXm(AiWxRbmqx5La#@?!rZ#BRL{07>b(8jHv18LieeH#( z_rVjcz)t=|ZHl>kuoc+&DCO}MpBu+6WFcl5xV9heilh82%ip^B!rGJ4qtAc*d9I?# zEMx|Q86j1);iP)JatBxEPj0S1;q`Mq!LY_7*kFeSt!#FxW`7=Bf6&jmpZ(k4JpJH! z?}(f2eD;#Xs;H0LfEB-o+kmz&hikTn7my&}hGbt*ML$pyQ_ltkURfdY3AX(LFQH{q zQBJy87i0e%kedC6v>p`#M8vMYEsAU4J>fV=vu-v+{ali5VTfF}iG`IZmmK>CxVoJ<k3DK zhsIt?PKzk(azx`cIaIKLJQn|AK@mw6@dUOoF-IlSZ`)4*Wa^#l$(uqhq1*CLd?X~J z9EQ!7-^0;vKX8eRVQH1y9vmo;+WCZvlS0FQ&=c!eH<4B;6>FXkD7H$$6tYERsHp8C zD6Oz+V$EadnIWOchBm(gC@e0*&Sw zHQYx6N|zoJaH-Hez{w$l+L5wR;K4T8>K!-DRJ?BHS!<-5pTAq)`7ka8rd7*8)kp@{p`^% z_ohG}JL^@XAzIZB4^^>D!uLm`54IosTVV!_pMtmFl(rvELa#{DkUOTKe>DEr2am*FlCK<>9TCpesp>Yr{ zopRM$2ew?Dj`Js6`YwyMLk{DhJ1d~k{&KgbT_huHm$1^u;*_fArBv=?suamZFizs7 z9tj`YvQKkA%Y#=S`s%msW655E6j$~EY>FyL<+$<;?c}Qe4O;QhYE9BwZRA6-d9`H~ zFBR#m4n>9NnlfPqn+Y`LH4|k*msLeXGEHRKCd6^u`FV+`&o-mj)v^B_iXvXIA+_j7 z_RX_}oOFiIGA*rrZzPUtnJ#Qn{3{zXA(f$g#(Ty)zsV@=(?YUh-(Y(a2QQ%*h%znD zpL`I|!#r3_!mx^fI6n?&c}<*(|0mO)u5HHJ%^9eEw876c?(Or~8)t!5cc%aV5CBO; zK~(cVl=e&1BYAtgar!{)np*Rxa-=TxOCOF)o$G7i&FkM-Jl*&gUA&^Mwbht_T|mW? z;&g+0xS1)MBsN^>>t89I-+!verD6A>teK;oLwZGw3>r49Y)}$JC7fu;`oH|-8?XJR z(|1cYg*vyPNvO5ONbDF|T6PZPA@G|v_H=K4(GQ8?H-`q^{=A*()J7>Osxv7eW;YdZ z;B9@VlnNf!ri;t$rS1#QfBQ*z_VE6b3$gZ}#V-!UgMe_W7)aJ>HnMayKjAII;ES_$ zFaCFUFXi0g4T&}B@h9u+B7F2z|NXtcCbm*2io&z+^e?x|;ba z(tvjjHKKqb6YwThb8;rhG_j=)l%G~!j|1g{&E!>-+7MYHAnl+Pr#4|?1xbLL3Dy=c zp@^UqMZXF+A*}3h8Uiy_SbqrzM{<;`LF8}xF?0v^%F=4z=3Md)%TRBJ`W>L zK@^0M^uU;_gB7q{{-lSp#P_YlD^!S)E+&PFXbg-ncQ-QS0#VW0VqhTMIbF|O5%h&0 z=qg1;lfpJJXO_RM7h7=L0rU^9sO{soZM@0`0u3yOz2ct+&r7%MPJA*p|8oVWA>>hN z-zIW}*3@`SmcL=b>ywEz0X5hs_7ys=JZuL_{!z!jox%FypF|W~Hp#|@a=W@1GJDH@ zriqrt(1ty_`Un^i54E@?GlqW>jaMh~urdzb{)r7nwo1_3j~|c!_TgGsEX5)MxaXPy;8#$|NrcJ@dyEyfmmb4eN@aw@dJYYU^t z;|-f%ZB1=mxD|wQ(QAG1=1b2#y|(z|(|5lpt?$Uw*MBCq^g@QUNzP;Mah-N-Fv2@! ztc^kDl#8b?UVrR|eS$>xIWBagoVmJ3%9$mC?EXG4F z4i7nr;CN+LpjVF0Wn6!V@qQWi%0d~C$XAT&DDzd*W?^VnVuZ-R)X1hzBPb@@sbIt& zXvsG1AH!fr8e0{nWGxBWgN;UbnkXH$_{C477WL*+EZSgcC%|0KIMqU&a%F2kLqIwj zJIqj*BvJeHA`EYs%fELGoRmus)5nOiHHfI$g_4ju&iC#JZ)|=5XH8CvWUXFbP~D6#9<0-YzT&nZ+!eG^@?x1-gVf2YyV3CcJhV&oO0aiCLCGq*zCw zru{@3E%v$zv{vmtd$bZv!o)>8v)z}^U>DNn>d;SL{bCWnR16_g%S9%5%s2g%kj+ZS zZNg>*A+K#IN}sg1SYo4$wC$8+)HqfVR+5p`qme|3c#$)<ifsrp^a<} zVcz(kwI4sCcG3uKEpK(`DKkxUz;Y+K5#F8xk!uNg*KV5FNJi)0cnpwT-_y{U1?i%i59+P9anh&MN}lqxCbO z@6?Upv+?ePFME8oHZ^F^3%Nb3P3IM3BhIm@WHS+NnxkA^|LXJC?F;kdi(h=GOY-@* zfAwH{d$v74!NBqqdyu5zJ2Ziq>>dd*BSn>~*aLC@yL-PO;o8QmFy@i8^6vVpL8;u5 zmnKiL?|is@KKrEP_TJsQSU-eh*xsv@WPy7T{fcIYzYWtXVM{{1B(#)GMZjU`g(Ojy zV*)U2u=kG~iUz_1(yYcv;>6yk2~9mna6gn0_;_@OEx~Kb$UzejxB)S0@|HUiB1~(542wgP6LhtHC_7zoFH$<@X(3l$1E7&d*YfP|{e=J+X_P|y-G>Igb5CM) zbq{x2TLa$lZd#IzA575{cQjDiWA3+CvnYx!qTg<>=1=YcE1{sbl6`f1s<)DX;h6~W z;QH(&J@vd8?OIvxacnOEIkpW$SZwYoHX9{$oGdKm$$QVxnvTbbI;Ai)1kJ0!+-Je$ z%MWy{9kc+RjOmb;4zyQ?I=?T@owSWjS}lt<*Q97K^X-&aeJBwlC#TZQB<{OTdwX>> zKo(>+zY4?3Xi}y4AsqOM&qhO}mjsPi8l}*7ja*U)2?AqJL7K4985&?)mAMLql$~6o zC-PzUVaH|~o!{4fT>HOuj~3sWL+lMLyhw`Nm58oDi%)?oESZqJ@^UtlV7ZBx2So55 zR;Tv%zHYDNEbEEZ*OT><&9k0vLE<%$JCZq>b&Lt+)Sj=k#@PO?rd*O`^Dgt!8|J-N zKNvI2lXi?V6oTqVoYbc;`ut*EDK1%DJg>{juWx_5a{JepO@plL;vw{AaI4zlwP_n(~U^}qYYhM4`U z+`c>&$8rlmh?5}5x$$j(!UR^Pwjev+q81jv;Fo7N*B6x&?ew1{o#$B3t?^Q+9^{u| zk}qEW^O7TaKKP=jcvXH z_MYb_Wy{A1_FXA6XDEm54A8_Q4TH(+V2?r|l`tU;8WHgpyaBz{}?6XxWSX=6i^qQ`<-S)AKv_#ONO=di7pRCc- z*t2zIVFPb?{j9s>pcBaoQiZ;QE3q{KSIKEFXDJi=IbnR~D2w+3C7<*KfJVeIVq z>mu>~fo*y+-&J>fKGb{vKVR?uiVJdq4O4_&n(OLyp@cBjnyP9@nG>XuXu(fmdhJ!!+nM z)Y5@5BZaPXg>Vj2*&JSH-)vZ{;UF)fvBzQ=RiKG%Wn|Cs7%(;Nu}x@37VVKd2YqhC zex4fHw0eP;(Mm0ER#KV!1Ycnei@G=-Fap$9fkAo^aTlcHpGh~$YME>r$Ig7T66CQ- z9qG^P3Mv_Hhhi<~-KDm#RpTw=uqHLgo1SOOHYrQqE|Hy!sYhS2Hmd%3dt03CsK(^4zI*T8Pk%=KN|HLC zbREN7O8bzv^%VmB_VidE)ok=XfC7sR|jZgo<;_r%nggkzw`=>4|OOClcAkdA({&#QczvKDs8DB|K)>mwXfr!cFf25M1u2s$uHjf@3V{;407ONsT!pvwyWZ=vVmi~s}QnD2PDk6E>YzDjEPEIXBw%oxhI*10P7?{;^mS5P$%FobN3dk?N}j&c{OhP-7_Vf<9AL0R@?Jnj zx8Fp95vQ z@o$$|je!W32`_*Y&B&!f+eN2+S?q*0R8k?#i!LivL-7$*XPR&;&5mn2N|xwH0$u+| z=$qsHAbUjjQ&DRIciTBY!WCC~xi7`Suj!oXsUPG$hhe=bqQFRMLn+V}XX=in6|$0z zOt8lO_a}Kcjx?XVAAeLItn{0jCs%5j@D&M4MU9q`Xrw#z>Z!-HE!+C3twazq+sn(U zO$#*(O!g3^eA9nvF)W;dz-7^4!a1kK^CA>5Ug_9=&8MlBe5qr8`NUVX z;m}b=1`3u_xo=*c?ub({{RW+i=i(mmGZSwL0w^ECUT*hqZvUgwo&QLhI4PARZW15Y zYcmubYu*#v+2N?K!XC?*${2nR#~eE|k>_%I5}A!}-`e`NSp4Sd@mGs{{(kMpLQn4D z(b&078F&@@q_?XdA^bf zdnb$Ie|XFPKsP368dc(Sf~X0rEJSvSht(~((IzDaOQ$0Q)gVD(iSkU=M>M$;Jl+5$ zy@^c#pwdsYu~!1nQ!t(Ct1!)s!QCJ$u})Tlm{}Qk{x!%}wm~-_VGS0F{h;6M|3LN( zLgYc{YNl33ftDQAz{D`AsY5j4fs4OEo4en&PxFnVxC)j!!jlgOC+%aoy179Q)C?br z;E@O@E22xDl(MT@hwTix$h6o^-YpC{7FI@e?R8eyazs*J5!IxUW+r2qHt6Fj*Y_L#{3yBK*Iv1_wLyX6PaXW6|+B4!f? z65dnpJA5h6`O-Um`}2xA&n0hu@qYYs4ArChh%+tF4A#+1ig9Q9jEolQeKN{&Qkp>U z)IIZHhr=nGy7S~eNXcdisWB*)dI8~$?LfyqEdF>TWcuEaEDLE*f(cdAPA>{k5O-`W1J z&#r-2d1+>8QwXV}GCFtXa?TDd$_e9T#f-Jl8X}ppt(O+Zx4u)@$}OHh`S`1u$`v+? zQvCRy#mCco+Ob5P;?X{MTpfAp#M`y^z>^AL3$Jr-&IBl{-u(IPjZ3A+HJ1PY5CBO; zK~zti6;B9;isz2}uY`waMOr`D19GuZydGaRNQZrv8Za^=eh4UJ>?Vt43v%#baF6Fu zOgUnyLT$zd$xMQU;K8W@#Rp=Zzkk4`5`h%fe$un3REq#L ziR2MuG8D~(atBQa?@V)GKfNZIw})~-muk*u#gH5qy9S%31P{e~!F%>>Zg)gCwX}%V zym+r^k-^qRkD5j_Fu+0y!5v%>4w~d_X@Tw#6_g}em4t3MLmO$9%RWPh#ncCx&apDL zP&R1jh?`tci*^dnKst{G=Dqh?OEDr&+D?y~Od8*?T|6cwJdl&jZ0|XuQR>J`w1!YP z$A9MHDTXD&RotrqpFlI7C;z}&) z_(4u5?KEv5&^Dv3Y^IzOd-w+IjTbh-9B$d8D1mD!Dotp*>+q@ZJo#BIZvV^-KTfhq zIdIA%71&u30nLdsUl);Lwjj-BaV?RQCLwqp7A(DxrCAzIhw09WszYq1U}B;mFtTs` zNc7A>?z`)o-?H*NZ^->wf^5wSp_=(EFs#!Y{0In4ydzFF} z)wx(``(2ajUyLKB(z~(ki_)|r

_W@ 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�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

n0enTsH1eZs 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ΩoDO-x7Wv3}(U?Ro6R-GF$HGY!!+VY;* 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 z141?$�eWUI#>(g2EXfw8$Mg|_Qqicc6#SSK2fj1h| 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℞||~2rufcqW`QAeC@M!>#~o1}VLPV$ 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 jm^>(}+y)QR0(^$zLCBn`*mHmYHNgqG diff --git a/images/icon-192.png b/images/icon-192.png deleted file mode 100644 index 0b06af4e28bbf1703117b62f5378a51ef87fcff3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52893 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

n?$GqbXK-G$+MKM&S>crlW7L#&gP+O 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

C9hF5+=@dB}Y|{g=$;MmASnGKEEKQuL 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 QF{ZOX>zn9RARQw93z2A?#Q*>R diff --git a/images/icon-512.png b/images/icon-512.png deleted file mode 100644 index 517207ecbfa77f0b860237872b95b2027e8970d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 302046 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

TiDwFMjnac>VcHeE#E4oV44_PlR-q)P+|C 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¥> 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 diff --git a/images/logo-160.webp b/images/logo-160.webp deleted file mode 100644 index a643fc50d7840f7672324a7259008d7dbda25f6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6896 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 Q^5K3h($ diff --git a/images/logo.png b/images/logo.png deleted file mode 100644 index 632ec386224a62a0086465b527cd2f65fb2e7737..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51725 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 k8M43dhTg|02X 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

rc35wYng<~ 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�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 X6AipzjA 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�NcPBB3FqItT9wu;2f6n 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 aN;nM{=~n - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - QECTOR · Quantum Error Correction Decoding for Python - - - - - - - - - - - - - -

Skip to main content
v1.0.1 · 18 verified wheels · Changelog →

QEC Decoding for Python

One library for many decoder families on the same check matrix: Union-Find, exact MWPM, BP-OSD and Relay-BP for qLDPC codes, on CPU and GPU, with Stim and Sinter integration. Every correction is checked against its syndrome, and commercial licences verify offline, so it runs air-gapped.

Built for hardware teams, qLDPC researchers and academic labs. Free for academic and non-commercial research; commercial plans from $79/month with a 14-day money-back guarantee.

Quick startbash
pip install qector-decoder-v3==1.0.1
-python -c "from qector_decoder_v3 import BlossomDecoder; print('QECTOR OK')"
17
Decoder configurations
H·c = s
Checked on every result
CPU + GPU
Batch decoding
Offline
Air-gapped licensing
Evidence policy
No hardware-specific results published

QECTOR publishes contracts, methodology, and artifacts rather than portable speed numbers. Read the evidence policy before generating a local measurement.

Release Assurance

A Clear Path From Code to Evidence

The public release, validation contract, and commercial delivery path are explicit by design.

Current Runtime

qector-decoder-v3 1.0.1

The live PyPI release supports Python 3.9 through 3.14 with 18 binary wheels across Windows, Linux, and macOS, each with build provenance.

Evidence Contract

Correctness before speed

Every correction is checked against H c = s (mod 2). Measurements stay workload-scoped, artifact-hashed, and separate from universal performance claims.

Secure Delivery

Signed, traceable licensing

Commercial fulfillment requires a live Stripe event, issues a v2 Ed25519 token, and records independent billing and license delivery states.

Read the license activation procedure →

Works with your existing stack

Stimpip install stim
Sinterpip install sinter
Qiskitpip install qiskit-qec
Proof Suite

Executable Verification for the 1.0 Line

Hashed-lock reproducible install, CERT_STRICT gate, and Lean/Coq kernel evidence - verifiable against Reference Manual v1.0.0.

Reproducible Install

Hashed-lock & CERT_STRICT

Proof runs are hashed-locked and gated by CERT_STRICT - no universal benchmark figures, only workload-scoped artifacts.

Reference Manual v1.0.0

DOI 10.5281/zenodo.21941046

Normative manual with syndrome-faithfulness foundations, every decoder backend, and API stability tiers. All proofs trace to this document.

Lean/Coq Evidence

Kernel-checked proofs

Executable suite checks GF(2) invariants and logical cosets with Lean/Coq kernels - evidence, not claims.

View qector-proof on GitHubgithub.com/GuillaumeLessard/qector-proof
How It Works

From Installation to Validation

QECTOR integrates directly into your existing QEC workflow with minimal friction.

01
01

Install

Install the 1.0.1 wheel in a supported Python 3.9-3.14 environment alongside your existing Stim or PyMatching workflow.

pip install --upgrade "qector-decoder-v3>=1.0.1,<2"
02
02

Decode

Access 17 concrete Rust-accelerated decoder configurations through a unified Python API. Workbench also exposes AutoDecoder and Auto Router as two orchestration kinds, for 19 named kinds in total.

from qector_decoder_v3 import BlossomDecoder, BpOsdDecoder
03
03

Validate

Claims are scoped to a declared workload and backed by SHA-256 sealed artifacts. Run qector-doctor before relying on optional paths and preserve the report with the result.

evidence policy · SHA-256 sealed
Why QECTOR

More Than Just MWPM

QEC decoding is not one-size-fits-all. Surface codes, qLDPC codes, optional batch paths, and simulation workloads each demand different decoders. QECTOR documents the supported contracts and the evidence needed to evaluate a selected workload.

Blossom

Blossom MWPM (Exact)

Weight-optimal exact minimum-weight perfect matching for graph-like codes. The reference decoder for surface codes.

✓Exact optimal matching · Stim-native
BP-OSD (qLDPC)

qLDPC Support

Matching decoders are restricted to graphlike structures. BP-OSD handles reachable arbitrary GF(2) check matrices, including LDPC and qLDPC workloads.

✓Hyperedge-safe GF(2) path
Union-Find + Optional GPU

Workload-Scoped Execution

Union-Find and optional GPU batch paths are available for supported workloads. Availability and performance must be verified on the target environment.

✓Environment-dependent paths
Stim · PyMatching · Sinter · Qiskit

One Library, Pluggable

Drop QECTOR into any existing Stim or PyMatching workflow. Same API surface, swappable backend. No vendor lock-in.

✓Drop-in, same API surface
19 Workbench Kinds · 17 Concrete Configs

Decoding Algorithms

Union-Find, Fast Union-Find, Blossom MWPM, Sparse Blossom, Belief-Matching, BP-OSD, GPU Batch (CUDA/OpenCL), Hybrid, Predecoded, two-stage, ambiguity-cluster, colour-code, space-time, and other concrete paths are exposed through a consistent Python API. Workbench adds the two orchestration kinds, AutoDecoder and Auto Router, to make 19 named kinds.

v1.0.1 Stable
Corrected code families and Union-Find peeling, Python 3.14, GPU on Pro licences, signed provenance for every wheel.
18 Binary Wheels
Python 3.9-3.14 across Windows amd64, Linux x86_64, and macOS arm64, each tested on its own OS before release.
GPU Batch Paths
CUDA and OpenCL batch paths are available for supported hardware and drivers; OpenCL via source build.
Reproducible Harness
qector bench ships with the package; measure on your own hardware, no universal figures claimed.

Interactive QEC Simulator

Planar stabilizer code (d=3). Click edges to toggle physical errors.

LEFT BOUNDARYRIGHT BOUNDARYSSSSSSSSS
Performance

Measure on Your Own Hardware

Reproducible Benchmark Harness

No universal benchmark figures are published on this site, because results depend on your hardware, drivers, and workloads. The qector bench harness ships with the package so you can measure logical error rates and throughput on your own machines.

GitHub Artifacts →
$ pip install "qector-decoder-v3[bench]"
$ qector-doctor
$ qector bench -d 5 -r 5 -s 10000 --decoder blossom --noise 0.001
✓ Logical error rates and throughput written as reproducible JSON

Enterprise Compliance & Licensing

License Clarity

The package is source-available under PolyForm Noncommercial 1.0.0 for community use. Commercial use, hosted services, and redistribution require the written scope described on the license and pricing pages.

Learn about licensing →

Commercial Licences, Air-Gapped

Pro from $79/month or $790/year with GPU batch decoding, Lab for distance 63 and an SLA. Licences are verified offline, with no licence server, and every plan has a 14-day money-back guarantee.

View Pricing & Tiers →
Self-Serve · Instant Clearance

QECTOR Pro

Air-gapped licence · Cancel any time · 14-day money-back guarantee

$79/mo

or $790/year (2 months free) · Production use

✓Full QECTOR Decoder v3 (all decoder families)
✓GPU (CUDA/OpenCL) batch decoding unlocked
✓Signed licence token, verified offline: works air-gapped
✓Email support (2 business day response)
✓14-day money-back guarantee on your first payment

Need Lab, perpetual or OEM? View all tiers →

- - - diff --git a/installer/index.html b/installer/index.html deleted file mode 100644 index 1e5cf5a9..00000000 --- a/installer/index.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Installation · QECTOR - - - - - - - - - - -
Skip to main content
PyPI Binary Wheels · AIO Installer · CUDA + OpenCL Optional

Installation

QECTOR Decoder v3 ships as a Rust-compiled Python wheel (v1.0.1: 18 binary wheels for CPython 3.9-3.14, no sdist). One command on Linux x86_64, macOS ARM64, and Windows amd64. GPU backends optional.

pip install qector-decoder-v3

System Requirements

  • Python 3.9, 3.10, 3.11, 3.12, or 3.13
  • 64-bit operating system (Linux x86_64, macOS arm64, Windows amd64)
  • Stim/Sinter/PyMatching are optional extras; install qector-decoder-v3[stim] when needed.
  • GPU paths are optional and environment-dependent; follow the package release documentation for supported drivers and extras.

Quick Install (Recommended)

pip install qector-decoder-v3==1.0.1

This installs the latest stable release with pre-compiled binary wheels.

Optional extras: [stim] (Stim/Sinter/PyMatching), [bench] (local measurement tools), [all] (full environment).

Verify Installation

python -c "import qector_decoder_v3; print(qector_decoder_v3.__version__)"
# Should print: 1.0.1
qector-doctor
# 15-check environment diagnostic; reports PASS / WARN / FAIL per check
python -c "from qector_decoder_v3 import BlossomDecoder, UnionFindDecoder; print('QECTOR OK')"
# Should print: QECTOR OK

Platform-Specific Notes

Linux

Use the current PyPI wheel and the release documentation for supported Linux platforms and runtime dependencies.

macOS

Use the current PyPI wheel and the release documentation for supported macOS architectures and minimum version.

Windows

Use the current PyPI wheel for supported Windows Python and architecture combinations. GPU availability remains driver- and device-dependent.

Optional GPU Workflows

GPU availability depends on the installed wheel, optional dependencies, operating system, driver, and device. Use the extras and support matrix documented by the package release rather than assuming a GPU backend is available.

# Optional full environment
pip install "qector-decoder-v3[all]"
# Verify the installed package API and environment
qector-doctor
# Read the diagnostic's backend-specific PASS / WARN / FAIL output

Troubleshooting

ImportError on macOS: Ensure you have Python 3.9-3.14 from python.org or Homebrew. The system Python may not work.

GPU not detected: Verify CUDA installation with nvidia-smi. Check the package release documentation for supported CUDA versions.

Slow import: First import initializes the runtime and validates optional paths. Subsequent imports are fast.

- - - diff --git a/license-agreement/index.html b/license-agreement/index.html deleted file mode 100644 index ed576469..00000000 --- a/license-agreement/index.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Commercial Licence Agreement · QECTOR Decoder v3 - - - - - - - - - - - - - -
Skip to main content
Version 2026-11 · Effective 6 November 2026 · Governing law: Québec

Commercial Licence Agreement

These terms apply when your organisation buys any QECTOR plan. Non-commercial use stays free under the PolyForm Noncommercial License 1.0.0.

Version 2026-11, effective 6 November 2026. The version in force on the date of your purchase or renewal governs that paid term.

Version française

1. Parties and acceptance

This agreement is between Guillaume Lessard, sole proprietor trading as iD01t Productions, 288 boul. des Ormeaux, Longueuil, Québec, Canada J4L 1J4 ("Licensor", "we"), and the organisation named at checkout ("Licensee", "you").

You accept it by completing a purchase, by activating a licence token, or by using the Software commercially. The person who buys confirms they may bind the organisation. If you do not accept these terms, do not buy or use a paid plan. The 14-day money-back guarantee applies.

2. Definitions

  • Software: the qector-decoder-v3 Python package and its compiled core, as published on PyPI and GitHub, with its documentation.
  • Plan: the offer you bought (Pro, Pro Perpetual, Lab, Pilot or Enterprise), as described on the Pricing page on the date of purchase.
  • Licence token: the Ed25519-signed key we e-mail you, which the Software verifies offline.
  • Internal use: use by your organisation, its employees and contractors working on its behalf, for its own purposes, including production.
  • Term: the period you paid for (a month or a year for subscriptions, 60 days for the Pilot), or no end date for Pro Perpetual.

3. Licence grant

Subject to payment and to this agreement, we grant you a non-exclusive, non-transferable, worldwide licence to install and use the Software for Internal use during the Term, at the licence tier of your Plan.

There are no seat or user counts. You may install the Software on any number of machines and let any number of your personnel use it, provided they use it for your organisation. A licence covers one buying organisation; affiliates need their own licence unless an Enterprise agreement says otherwise.

4. What each plan includes

PlanScope
ProPro licence tier (GPU batch decoding, code distance 19), Internal use including production, e-mail support, every release published during the Term.
Pro PerpetualPro rights with no end date for every 1.x release of qector-decoder-v3, including patch and minor updates, plus 12 months of e-mail support. A new major version (2.0 and later) is a new licence.
LabEnterprise licence tier (GPU batch decoding, code distance 63), priority support with response targets agreed at onboarding, one onboarding call and one Validation Report per year.
PilotA 60-day evaluation licence at the Pro tier with an integration call, for benchmarking, integration testing and studies, not production. Creditable toward Lab within 90 days.
EnterpriseHosted, SaaS or OEM rights and named support only as set out in a separate signed agreement, which prevails over this one.

5. Restrictions

Unless a signed Enterprise agreement allows it, you may not:

  • redistribute, sell, sublicense, rent or lend the Software or a licence token;
  • embed the Software in a product you distribute to others (OEM), or offer its decoding to third parties as a hosted service, API or SaaS;
  • share a licence token outside your organisation or publish it;
  • remove, bypass or tamper with licence checks, notices or tier limits;
  • reverse engineer the compiled core, except to the extent applicable law allows it despite this restriction.

6. Licence tokens and offline verification

Licence tokens are verified offline by the Software against a public key it ships with. There is no licence server, no activation call and no telemetry: the Software works on air-gapped machines.

Keep your token confidential. If it is lost, exposed or tied to the wrong address, e-mail us and we will reissue it at no cost. A token may expire a few days after your paid period ends, to absorb late renewals; that grace period gives no rights beyond your Term.

If a payment is fully refunded or disputed, we revoke the token and list it at qector.store/stripe/revoked.txt; you must then stop using it.

7. Term, renewal and cancellation

Pro (monthly or annual) and Lab are subscriptions that renew automatically for the same period at the current price until cancelled. We e-mail a reminder 14 days before each annual renewal. You may cancel at any time in the customer portal or by e-mail; your licence stays valid until the end of the period you paid for.

The Pilot ends after 60 days and does not renew. Pro Perpetual has no end date for the 1.x releases it covers.

8. Fees, taxes and refunds

Prices are in US dollars, exclusive of tax. Stripe collects payment and any sales tax, GST/QST or VAT that applies to your billing address. Every plan has a 14-day money-back guarantee on the first payment, as set out in the Refund Policy. Renewal payments follow the same policy.

Academic institutions that buy a paid plan receive 40% off Lab. Non-commercial academic use remains free under the PolyForm Noncommercial License.

9. Support and updates

Support is by e-mail at admin@qector.store, with a first response within 2 business days on Pro and Pro Perpetual. Lab gets priority support with response targets agreed at onboarding. Subscriptions include every release published during the Term; Pro Perpetual includes every 1.x release.

We may change or remove features in new releases. Releases you already received keep working under your licence.

10. Ownership and third-party components

The Software is licensed, not sold. We keep all rights not expressly granted, including copyright and trademarks. Open-source components bundled with the Software remain under their own licences, which this agreement does not limit.

Your inputs and outputs (codes, syndromes, circuits, results) are yours. The Software sends none of them to us.

11. Warranty

Your remedy if the Software does not suit you is the 14-day money-back guarantee. Apart from that, the Software is provided "as is", without any other warranty, express or implied, including merchantability, fitness for a particular purpose and non-infringement, to the extent the law allows.

The Software is a simulation and research decoding library, validated by checking that every correction reproduces its syndrome. It is not certified for safety-critical use. Nothing in this agreement excludes a warranty that applicable law, including the Québec Consumer Protection Act where it applies, does not allow to be excluded.

12. Limitation of liability

To the extent the law allows, our total liability under this agreement is limited to the fees you paid in the 12 months before the event giving rise to the claim, and we are not liable for indirect, consequential or punitive damages, or for lost profits, data or business.

These limits do not apply to bodily or moral injury, or to damage caused by intentional or gross fault, which Québec law does not allow to be excluded.

13. Export control and sanctions

You will comply with the export control and sanctions laws of Canada and of any other country that applies to you, and will not use or transfer the Software to a person or destination those laws prohibit.

14. Termination

We may terminate your licence for a material breach of this agreement, such as use outside its scope, after written notice and a 15-day period to cure it. On termination you must stop commercial use and delete your licence tokens. No refund is due for the elapsed Term after a termination for breach.

15. Personal information

We collect only what is needed to sell and deliver your licence. See the Privacy Policy for what we collect, why, where it is stored and your rights under Québec law.

16. Changes to this agreement

We may publish new versions of this agreement. A new version applies to new purchases and, after at least 30 days’ notice by e-mail, to renewals. It never changes the terms of a period you have already paid for. Earlier versions remain available on request.

17. Governing law, language and entire agreement

This agreement is governed by the laws of Québec and the federal laws of Canada that apply there. The courts of the judicial district of Montréal have jurisdiction, without depriving a consumer of the protection of the mandatory laws or courts of their place of residence.

A French version of this agreement is available at qector.store/fr/license-agreement and was provided before its English version. The parties have expressly wished this agreement and related documents to be drawn up in English. Les parties ont expressément souhaité que la présente convention et les documents qui s’y rattachent soient rédigés en anglais, après avoir pris connaissance de la version française.

This agreement, the Plan description on the date of purchase and the Refund Policy are the entire agreement for paid plans. A signed Enterprise agreement prevails over them where they conflict. If a clause is unenforceable, the rest remains in force.

- - - diff --git a/license.html b/license.html deleted file mode 100644 index 8b649462..00000000 --- a/license.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - -License · QECTOR - - - - - - -

The QECTOR licence page has moved to qector.store/license/.

- - diff --git a/license/index.html b/license/index.html deleted file mode 100644 index b33a94aa..00000000 --- a/license/index.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - License · QECTOR - - - - - - - - - - - - - -
Skip to main content
PolyForm Noncommercial 1.0.0 · Free for Research · Commercial by Written Agreement · Last updated November 2026

License

QECTOR Decoder v3 is Source-Available (not free for commercial use). Free for personal, academic, and non-commercial research. Commercial use requires a paid plan from $79/month, with a 14-day money-back guarantee. The Workbench GUI is free.

Community License

QECTOR Decoder v3 is released under the PolyForm Noncommercial License 1.0.0. This means you can use, modify, and distribute the software for non-commercial purposes free of charge.

Permitted (Non-Commercial)

  • • Personal research and learning
  • • Academic research and teaching
  • • Use by universities, public research organisations, charities and government institutions, whatever their source of funding
  • • Non-commercial open-source projects
  • • Publishing benchmark results (with attribution)

Requires Commercial License

  • • Commercial product integration
  • • Internal commercial R&D with value extraction
  • • Company work on government, defence or university contracts
  • • Redistribution in commercial products
  • • SaaS / hosted API usage

Commercial License

Commercial licenses grant internal use rights, written agreements, priority support, and validation packages. See Pricing for tier details.

Every paid plan is governed by the Commercial Licence Agreement (version française). All commercial licenses include: commercial use rights (internal, no seat counts), reproducible artifact bundles, and priority bug review. No redistribution or OEM rights included by default; contact admin@qector.store for OEM/SaaS licensing.

Perpetual licenses

Pro Perpetual ($1,990 one-time): the same rights as Pro, for every 1.x release of qector-decoder-v3, including all patch and minor updates; a new major version such as 2.0 requires a new license. Licenses bought earlier as Solo / Indie Perpetual keep their original terms.

Commercial Addendum: What a Paid License Changes

  • • Grants the commercial use that PolyForm Noncommercial withholds, for the term you purchased.
  • • Internal use only. Redistribution, sublicensing, OEM bundling, and customer-facing SaaS or hosted APIs are excluded unless a written Enterprise/OEM agreement grants them.
  • • Activated by setting QECTOR_LICENSE and QECTOR_LICENSE_KEY to your Ed25519 token. Verification is offline against a public key embedded in the package: no license server, no phone-home, works air-gapped.
  • • The package is identical for licensed and unlicensed users. Without a token, a licensing notice prints on import (suppressible with QECTOR_SILENT=1). The token does two things: it silences the notice and it unlocks tier-scoped runtime features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and a code-distance tier of 7 (Community), 19 (Pro, Team) or 63 (Lab, Enterprise). CPU decoding is never blocked; distance caps apply only when QECTOR_ENFORCE=1 is set.
  • • No warranty, indemnification, exclusivity, trademark, or patent grant is included by default.

Tokens are delivered within minutes, and every plan has a 14-day money-back guarantee on the first payment: see the Refund Policy. A refunded licence ends on refund. Plans are on the pricing page.

License Activation Procedure

  1. 1. Verify the purchase. The fulfillment worker accepts only a Stripe-signed live checkout event and records the Stripe reference, customer email, tier, and token in the protected fulfillment ledger.
  2. 2. Install the runtime. Use python -m pip install --upgrade "qector-decoder-v3>=1.0,<2" from the official PyPI project.
  3. 3. Activate both variables. Set QECTOR_LICENSE and QECTOR_LICENSE_KEY to the same token from the license email. The first is used by the import notice; the second is used by the tier-aware runtime.
  4. 4. Verify offline. Run python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])". It must print your paid tier (for example Pro), not Community; no license server or phone-home is involved.
  5. 5. Preserve the audit record. Keep the token and Stripe invoice or payment confirmation together. Never send the token in a URL, issue tracker, chat, or public repository.

If either email is missing or the token fails verification, contact admin@qector.store with the Stripe reference. Do not open a duplicate checkout or dispute while delivery is being repaired.

Full License Text

The complete, authoritative PolyForm Noncommercial License 1.0.0 text is published at polyformproject.org/licenses/noncommercial/1.0.0 and is bundled verbatim with every package distribution (LICENSE in the wheel). The summaries on this page are for orientation only; where they differ from the license text, the license text governs.

Third-Party Licenses

QECTOR depends on several open-source projects including Stim (Apache 2.0), PyMatching (MIT), NumPy (BSD), and NetworkX (BSD). Full third-party attribution is included in the distribution. All third-party names are trademarks of their respective owners; QECTOR is not affiliated with, sponsored, or endorsed by them.

- - - diff --git a/llms-full.txt b/llms-full.txt deleted file mode 100644 index 94e50074..00000000 --- a/llms-full.txt +++ /dev/null @@ -1,110 +0,0 @@ -# QECTOR Decoder v3 Full Context - -QECTOR Decoder v3 is a Rust-core Python quantum error correction decoder. Version 1.0.1 (current; 18 wheels for CPython 3.9-3.14, signed build provenance) is documented by the reference manual deposited at https://doi.org/10.5281/zenodo.21941046. - -## Core contract - -For a reachable syndrome `s = H e (mod 2)`, every supported backend is evaluated against: - -```text -H c = s (mod 2) -``` - -This puts `c + e` in `ker(H)`. Logical success requires the residual to be in `im(H^T)` or, for a full CSS workflow, in the correct logical-observable coset. Degenerate corrections must not be scored by raw vector equality alone. - -## Backend map - -- Graphlike: Union-Find, Fast Union-Find, Blossom, Sparse Blossom, hybrid cascade, lookup tables, and CPU/GPU batch paths. -- Non-graphlike: BP-OSD for arbitrary GF(2) matrices, with exact sum-product, min-sum, relay schedules, OSD-0, and OSD-W options. -- Ambiguity: reliability partitioning, exact enumeration on bounded components, restricted OSD fallback, and research-grade learned predecoders. -- Temporal: lifted space-time detector decoding plus Rust streaming and sliding-window primitives. -- Routing: structural eligibility guard, backend recommendation, fallback verification, two-stage CSS feedforward, and native routing. - -## Structural guard - -If any fault mechanism or qubit touches more than two detectors/checks, the problem is non-graphlike. Matching and Union-Find must not be forced onto it; BP-OSD is the documented general path. - -## DEM and noise model - -The DEM pipeline parses error, detector, observable, shift, and repeat statements. Graphlike columns of weight at most two become edges; hyperedges route to BP-OSD. Parallel graph mechanisms can be collapsed with `p = p1(1-p2) + p2(1-p1)`. Edge weights use `log((1-p)/p)`. Space-time data and measurement mechanisms use separate weights. - -## Evidence policy - -The manual excludes universal hardware-bound figures. Reports must identify code family, distance/size, rounds, noise model, DEM settings, decoder configuration, shots, seed, metric, environment, commit, raw JSON/CSV, and SHA-256. Logical error rates are scored in observable space and reported with Wilson confidence intervals. Code-capacity and circuit-level results are not directly comparable. - -Hot-path and cold-path timing are reported separately. Python allocation, process RSS, native heap, and VRAM are separate metrics. A skipped hardware-gated GPU test is not GPU evidence. - -## Public reading path - -- Blog index: https://qector.store/blog -- Foundations: `/blog/01QecFoundations`, `/blog/11SteaneWorkedDecode`, `/blog/12RotatedSurfaceD3` -- Decoder algorithms: `/blog/02BlossomMwpmExact`, `/blog/03SparseBlossomEventDriven`, `/blog/04FastUnionFind`, `/blog/05BpOsdQldpc`, `/blog/06AmbiguityGnnNeural` -- Multi-round and routing: `/blog/07SpaceTimeDecoder`, `/blog/08AutoDecoderCascade`, `/blog/16DecoderSelection` -- Models and evidence: `/blog/13DemPipeline`, `/blog/14WeightedDecoding`, `/blog/15LogicalErrorRates`, `/blog/17ReproducibleBenchmarks` -- Systems and delivery: `/blog/09GpuAcceleration`, `/blog/10BenchmarksArchitecture`, `/blog/18RustPyo3Architecture`, `/blog/19ReleaseLicensing`, `/blog/20EcosystemIntegration` - -## QECTOR Workbench (desktop GUI + MCP server) - -- Windows v1.0.7 (x64, 2026-09-04): 85-tool MCP server, bundled qector-decoder-v3 1.0.0 backend, 19 named decoder kinds (17 concrete configurations plus AutoDecoder and Auto Router), 10 code families. Artifact `QectorWorkbench-Portable.exe`, SHA-256 `c53ca5f4fc49152f242a847d0ca11f147164dda426ae29ec170c451871b8ab13`. -- Linux v1.0.7 (x64, 2026-09-04): 85-tool MCP server, bundled qector-decoder-v3 1.0.0 backend, 19 named decoder kinds, 10 code families. Artifact `QectorWorkbench-Portable`, SHA-256 `aa3949d25082165dc3b89115486e1ea4e210cd5254659da32185fe6a8e71a1c8`. -- macOS: not released yet. -- Windows workspaces: Code Explorer, Decoder Lab, Benchmark, Batch & Streaming, Hardware, Diagnostics, Documentation, Lab & Personal Info, plus Console. Linux adds History. -- Data directory: `~/.local/share/QectorWorkbench` (`QECTOR_DATA_DIR` overrides). Headless: `--mcp` (stdio JSON-RPC 2.0). -- Releases: https://github.com/qectorlab/qector-decoder-workbench-windows/releases and https://github.com/qectorlab/qector-decoder-workbench-linux/releases - -## QECTOR Claude Plugin (v2.0.1) - -- Claude Code / Claude Desktop plugin v2.0.1 (2026-11-06), running on qector-decoder-v3 1.0.1: 28 domain skills, 5 specialized agents (qec-developer, qec-researcher, qec-validator, qec-sysadmin, qec-hardware-engineer), 11 slash commands. -- Default MCP server qector-secure: 12 tools (the 8 stable library tools plus airgap_status, integrity_check, schema_catalog, audit_log_status), air-gapped, integrity-checked, every request and response validated against JSON Schema 2020-12. Opt-in: qector-research (29 provisional tools) and qector-admin (3 privileged tools, QECTOR_ADMIN_ENABLED=1 plus confirm=true). -- Every dependency pinned by SHA-256 (Python 3.10-3.13, Linux/Windows/macOS); release archives signed, with SBOM and provenance. -- Zero-egress stdio architecture: circuits, parity matrices, and syndromes never leave the machine. -- Install: `claude plugin marketplace add GuillaumeLessard/qector-claude-plugin` then `claude plugin install qector@qector-tools`. Releases: https://github.com/GuillaumeLessard/qector-claude-plugin/releases - -## Official pages - -- https://qector.store/decoder -- https://qector.store/workbench -- https://qector.store/claude-plugin -- https://qector.store/mcp-server -- https://qector.store/evidence -- https://qector.store/manual -- https://qector.store/technical-reference -- https://qector.store/installer -- https://qector.store/pricing -- https://qector.store/commercial -- https://qector.store/license -- https://qector.store/about -- https://qector.store/guillaume-lessard -- https://qector.store/changelog -- https://qector.store/contact - -## Machine-readable - -- https://qector.store/llms.txt -- https://qector.store/ai.txt -- https://qector.store/feed.xml -- https://qector.store/sitemap.xml -- https://qector.store/.well-known/skills/index.json -- https://qector.store/.well-known/mcp/server-card.json - -## External records - -- DOI: https://doi.org/10.5281/zenodo.21941046 -- v1.0.0 user manual DOI: https://doi.org/10.5281/zenodo.21611214 -- Certification and proof bundle DOI: https://doi.org/10.5281/zenodo.22046403 -- PyPI: https://pypi.org/project/qector-decoder-v3/ -- GitHub: https://github.com/GuillaumeLessard/qector-decoder -- Workbench Windows: https://github.com/qectorlab/qector-decoder-workbench-windows/releases -- Workbench Linux: https://github.com/qectorlab/qector-decoder-workbench-linux/releases -- Claude plugin: https://github.com/GuillaumeLessard/qector-claude-plugin -- ORCID: https://orcid.org/0009-0000-3465-3753 - -## Install - -```text -pip install --upgrade "qector-decoder-v3>=1.0.1,<2" -``` - -## Deployment posture - -The local Rust/Python CPU library is the preferred public path. GPU paths require controlled runtime and license configuration. REST, gRPC, MCP, and metrics surfaces are provisional and require authentication, authorization, TLS, rate limits, timeouts, audit logs, request limits, and resource quotas before production use. License verification is offline and the decoder makes no blocking network call during decoding. diff --git a/llms.txt b/llms.txt deleted file mode 100644 index 35020af9..00000000 --- a/llms.txt +++ /dev/null @@ -1,100 +0,0 @@ -# QECTOR Decoder v3 (v1.0.1) - -> Python and Rust quantum error correction decoder package for QEC research, decoder validation, reproducible artifacts, and commercial evaluation. - -QECTOR Decoder v3 is documented by the QECTOR Decoder v3 Reference Manual v1.0.0, deposited at DOI https://doi.org/10.5281/zenodo.21941046. The manual is the source of truth for decoder contracts, evidence anchors, limitations, and claim boundaries. - -The common correctness contract is syndrome faithfulness: for a reachable syndrome `s`, a returned correction `c` satisfies `H c = s (mod 2)`. Logical scoring is separate and must use observables or stabilizer cosets rather than raw correction equality. - -Decoder families include weighted Blossom MWPM, event-driven Sparse Blossom, graphlike Union-Find, BP-OSD for arbitrary GF(2) check matrices, ambiguity clustering, two-stage CSS decoding, space-time decoding, streaming primitives, lookup tables, CPU/GPU batch paths, and native routing/orchestration. The actual check structure determines eligibility: mechanisms touching more than two detectors are hyperedges and route away from matching. - -No universal latency, throughput, memory, VRAM, or threshold figures are published as QECTOR facts. The manual requires workload-specific metadata, raw JSON/CSV artifacts, SHA-256 hashes, and Wilson intervals for logical-error rates. Earlier hardware-bound benchmark artifacts that did not survive a core fingerprint change are withdrawn. - -The public blog provides 20 field notes across foundations, decoder algorithms, qLDPC and AI, multi-round decoding, noise models, evidence, systems, orchestration, deployment, and ecosystem integration: - -- https://qector.store/blog - -## QECTOR Workbench (desktop GUI + MCP server) - -- Windows v1.0.7 (x64, 2026-09-04): 85-tool MCP server, bundled qector-decoder-v3 1.0.0 backend, 19 named decoder kinds (17 concrete configurations plus AutoDecoder and Auto Router), 10 code families. Artifact `QectorWorkbench-Portable.exe`, SHA-256 `c53ca5f4fc49152f242a847d0ca11f147164dda426ae29ec170c451871b8ab13`. -- Linux v1.0.7 (x64, 2026-09-04): 85-tool MCP server, bundled qector-decoder-v3 1.0.0 backend, 19 named decoder kinds, 10 code families. Artifact `QectorWorkbench-Portable`, SHA-256 `aa3949d25082165dc3b89115486e1ea4e210cd5254659da32185fe6a8e71a1c8`. -- macOS: not released yet. -- MCP protocol 2024-11-05 over stdio JSON-RPC 2.0 (`--mcp` headless mode); data directory `~/.local/share/QectorWorkbench` (`QECTOR_DATA_DIR` overrides). - -## QECTOR Claude Plugin (v2.0.1) - -- Claude Code / Claude Desktop plugin v2.0.1 (2026-11-06), running on qector-decoder-v3 1.0.1: 28 domain skills, 5 specialized agents (qec-developer, qec-researcher, qec-validator, qec-sysadmin, qec-hardware-engineer), 11 slash commands. -- Default MCP server qector-secure: 12 tools (the 8 stable library tools plus airgap_status, integrity_check, schema_catalog, audit_log_status), air-gapped, integrity-checked, every request and response validated against JSON Schema 2020-12. Opt-in: qector-research (29 provisional tools) and qector-admin (3 privileged tools, QECTOR_ADMIN_ENABLED=1 plus confirm=true). -- Every dependency pinned by SHA-256 (Python 3.10-3.13, Linux/Windows/macOS); release archives signed, with SBOM and provenance. -- Zero-egress stdio architecture: circuits, parity matrices, and syndromes never leave the machine. -- Install: `claude plugin marketplace add GuillaumeLessard/qector-claude-plugin` then `claude plugin install qector@qector-tools`. Releases: https://github.com/GuillaumeLessard/qector-claude-plugin/releases - -## Official links - -- Website: https://qector.store/ -- Claude Code Plugin: https://qector.store/claude-plugin -- Workbench: https://qector.store/workbench -- MCP Server: https://qector.store/mcp-server -- Blog: https://qector.store/blog -- Pricing & licensing: https://qector.store/pricing -- Enterprise / OEM licensing: https://qector.store/commercial -- Install guide: https://qector.store/installer -- Documentation hub: https://qector.store/docs -- User manual: https://qector.store/manual -- Technical reference: https://qector.store/technical-reference -- Evidence and reports: https://qector.store/evidence -- About: https://qector.store/about -- Founder page: https://qector.store/guillaume-lessard -- Changelog: https://qector.store/changelog -- License: https://qector.store/license -- Refund policy: https://qector.store/refund -- Commercial Licence Agreement: https://qector.store/license-agreement/ (French: https://qector.store/fr/license-agreement/) -- Privacy policy (Québec Law 25): https://qector.store/privacy/ (French: https://qector.store/fr/privacy/) -- Security & Trust (verification, keys, disclosure): https://qector.store/security/ -- Feature comparison with PyMatching, ldpc and fusion-blossom: https://qector.store/compare/ -- Getting started tutorial (tested on 1.0.1): https://qector.store/getting-started/ -- Use cases: https://qector.store/use-cases/ -- Live status: https://qector.store/status/ -- French home: https://qector.store/fr/ -- Contact: https://qector.store/contact - -## Machine-readable - -- Full-context document: https://qector.store/llms-full.txt -- AI agents index: https://qector.store/ai.txt -- Atom feed (blog): https://qector.store/feed.xml -- Sitemap: https://qector.store/sitemap.xml -- Agent skills: https://qector.store/.well-known/skills/index.json -- MCP server card: https://qector.store/.well-known/mcp/server-card.json -- Security contact: https://qector.store/.well-known/security.txt - -## External records - -- DOI record (normative manual): https://doi.org/10.5281/zenodo.21941046 -- DOI record (v1.0.0 user manual): https://doi.org/10.5281/zenodo.21611214 -- DOI record (certification and proof bundle): https://doi.org/10.5281/zenodo.22046403 -- Zenodo evidence registry: https://qector.store/evidence -- PyPI package: https://pypi.org/project/qector-decoder-v3/ -- Primary GitHub repository: https://github.com/GuillaumeLessard/qector-decoder -- Workbench Windows releases: https://github.com/qectorlab/qector-decoder-workbench-windows/releases -- Workbench Linux releases: https://github.com/qectorlab/qector-decoder-workbench-linux/releases -- Claude plugin repository: https://github.com/GuillaumeLessard/qector-claude-plugin -- Author ORCID: https://orcid.org/0009-0000-3465-3753 - -## Installation - -```text -pip install --upgrade "qector-decoder-v3>=1.0.1,<2" -``` - -## Reproducibility - -The manual provides build/import smoke commands, focused correctness tests, LER workflows, GPU identity workflows, and SHA-256 artifact hashing. A benchmark must record code family, size, noise model, decoder configuration, shots, seed, environment, and raw artifact path. - -## Boundaries and licensing - -- Free academic, personal, and non-commercial research use is governed by the published project license. -- Commercial production, hosted API, OEM, redistribution, and commercial benchmarking require the written commercial scope described by QECTOR. -- Commercial plans (USD, tax added at checkout): Pro $79/month or $790/year; Pro Perpetual $1,990; Lab $9,900/year (distance 63, SLA); 60-day Pilot $1,500; Enterprise/OEM from $25,000/year. Subscriptions renew automatically and can be cancelled any time; 14-day money-back guarantee on the first payment. Details: https://qector.store/pricing -- Local CPU decoding is the preferred research path. -- CUDA/OpenCL, REST, gRPC, MCP, and metrics paths require the hardware, feature, and deployment review described by the manual. diff --git a/manifest.webmanifest b/manifest.webmanifest deleted file mode 100644 index 3a96d991..00000000 --- a/manifest.webmanifest +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "QECTOR Decoder v3", - "short_name": "QECTOR", - "id": "/", - "scope": "/", - "lang": "en", - "dir": "ltr", - "description": "Quantum error correction decoder and research platform", - "start_url": "/", - "display": "standalone", - "background_color": "#030712", - "theme_color": "#24e7ff", - "categories": ["developer", "utilities", "science"], - "icons": [ - { "src": "/images/icon-192.png", "sizes": "192x192", "type": "image/png", "purpose": "any" }, - { "src": "/images/icon-512.png", "sizes": "512x512", "type": "image/png", "purpose": "any" }, - { "src": "/images/icon-192.png", "sizes": "192x192", "type": "image/png", "purpose": "maskable" }, - { "src": "/images/icon-512.png", "sizes": "512x512", "type": "image/png", "purpose": "maskable" } - ], - "shortcuts": [ - { - "name": "Decoder", - "url": "/decoder/", - "icons": [{ "src": "/images/icon-192.png", "sizes": "192x192" }] - }, - { - "name": "Evidence", - "url": "/evidence/", - "icons": [{ "src": "/images/icon-192.png", "sizes": "192x192" }] - }, - { - "name": "Docs", - "url": "/docs/", - "icons": [{ "src": "/images/icon-192.png", "sizes": "192x192" }] - } - ] -} diff --git a/manual/index.html b/manual/index.html deleted file mode 100644 index c7c7e60f..00000000 --- a/manual/index.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - User Manual · QECTOR - - - - - - - - - - -
Skip to main content
15 backend families powering 17 decoder configurations · GPU Batch · Stim · Sinter · Qiskit

User Manual

Complete guide to QECTOR Decoder v3: installation, decoder selection, local measurements, diagnostics, and ecosystem integration.

Overview

QECTOR Decoder v3 is a Python library for quantum error correction (QEC) decoding. v1.0.1 is the current stable release (v1.0.0, August 2026, was the first): it provides 17 decoder configurations and helpers integrated into a high-performance compiled Rust core with a plug-and-play Python API.

Ecosystem Native: Swappable backend design. You can easily plug QECTOR into Stim, PyMatching, Sinter, and Qiskit pipelines with minimal API modifications: Sinter decoders plug in with custom_decoders=qector_sinter_decoders(), and a qiskit-qec plugin is registered.

Key Highlights

v1.0.0: First Stable Release

API stability tiers, Relay-BP, CS-OSD(lambda, w), colour-code cluster_bposd, qector CLI + qector-doctor, Sinter/qiskit entry points, pymatching shim.

Validate on Your Hardware

Hardware, GPU, and measurement results are device-local. Use the package diagnostic and declared measurement workflow instead of treating site text as performance evidence.

Multi-Algorithm Diversity

17 decoder configurations from exact Blossom MWPM to Belief-Matching, BP-OSD, and GPU batch decoding.

Compiled Rust Core

A compiled Rust core with a Python API. Exact memory, latency, and throughput behavior depends on the selected workload and environment.

Optional GPU Paths

GPU paths are optional and environment-dependent. Read the installed release diagnostics before relying on them.

- - - diff --git a/mcp-server/index.html b/mcp-server/index.html deleted file mode 100644 index f946164b..00000000 --- a/mcp-server/index.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MCP Server · QECTOR Decoder v3 - - - - - - - - - - -
Skip to main content
Local stdio · JSON-RPC 2.0 · Protocol 2024-11-05 · qector-decoder-v3 1.0.1

Library MCP Server

The app-free, library-only MCP server: eight tools covering Union-Find, exact Blossom MWPM, SparseBlossom, and the auto router, with syndrome validation against H c = s (mod 2) and coset-scored logical outcomes. Runs on qector-decoder-v3 1.0.x withmcp>=1.30,<3; no Workbench or GUI needed. Ships in theqector-claude-plugin repository.

Design principles

Deterministic, not generated

The assistant calls a decoder; it does not invent a correction. Results are reproducible and syndrome-faithful.

Runs locally

Local stdio JSON-RPC. Syndromes are processed locally on the host machine; this library server includes no telemetry.

App-free

Runs on the published qector-decoder-v3 1.0.x wheel and ships in the qector-claude-plugin repository. No QECTOR Workbench, no GUI, no desktop application required.

CLAUDE PLUGIN

Looking for the full Claude Code Plugin?

The Claude Plugin v2.0.1 includes 28 skills, 11 slash commands and 5 agents. Its default qector-secure server exposes 12 schema-validated tools and runs air-gapped; 29 research tools and 3 admin tools are opt-in. Workbench v1.0.7 remains the largest desktop surface with 85 tools on Windows and Linux.

Explore Claude Plugin →

Connect a client

The server speaks JSON-RPC 2.0 over local stdio and identifies itself as qector-decoder-v3-mcp . Add it to Claude Code, Claude Desktop, or any MCP client:

{
-  "mcpServers": {
-    "qector": {
-      "command": "python",
-      "args": ["${CLAUDE_PLUGIN_ROOT}/mcp/mcp_server_library.py"]
-    }
-  }
-}

In Claude Code, root .mcp.json already references this server via $${CLAUDE_PLUGIN_ROOT}. Validate with claude plugin validate "<PLUGIN_ROOT>" --strict .

8 Tools

Returned verbatim by tools/list. The schema is enforced as fail-closed JSON; malformed or resource-exceeding input returns an MCP isError result without leaking tracebacks.

list_code_families

List the code families available in qector-decoder-v3 1.0.1 with their live availability and graphlike eligibility.

Required
none
Optional
none
Returns
families map (generator, code_factory, available, description, single_decode), reference_manual DOI, qector_version "1.0.1"
list_decoders

List the five stable decoder classes exposed by the wheel: union_find, fast_union_find, blossom, sparse_blossom, native_auto.

Required
none
Optional
none
Returns
decoders map (class, status: "stable"), reference_manual DOI
get_license_info

Read the live offline QECTOR license tier and feature gates from the installed wheel.

Required
none
Optional
none
Returns
license info object, qector_version, reference_manual DOI
decode_syndrome

Decode a binary syndrome against an explicit or family-derived parity-check matrix. Fails unless H c = s (mod 2) (Theorem 1).

Required
syndrome
Optional
familysizedecoder_namen_qubits
Returns
family, size, decoder, backend_used, qector_version, n_checks, n_qubits, syndrome, correction, hamming_weight, syndrome_valid, latency_us
decode_single

Run one seeded code-capacity decode with Theorems 1 and 2 checks. Logical outcomes are coset-scored, not raw correction-equality.

Required
none
Optional
familydistancedecoder_nameerror_rateseed
Returns
family, distance, decoder, backend_used, qector_version, error_rate, seed, n_qubits, n_checks, error, syndrome, correction, error_weight, correction_weight, syndrome_valid, logical_failure, logical_scoring, latency_us
threshold_sweep

Run a code-capacity LER sweep with Wilson 95% intervals and a hashed raw JSON artifact. Not comparable with circuit_level results.

Required
none
Optional
familydistanceserror_ratestrialsseeddecoder_nameartifact_path
Returns
family, decoder, qector_version, results (per-point LER + Wilson interval), artifact (path, sha256, metadata), caveat
build_code_from_matrix

Validate and build a binary (n_checks, n_qubits) parity-check matrix for arbitrary CSS/graph codes.

Required
H_matrix
Optional
familydistance
Returns
family, distance, matrix_shape, rank, n_checks, n_qubits, logical_observables, graphlike, code_built, qector_version, reference_manual
compat_report

Report live package compatibility and Provisional-surface boundaries (library stdio MCP vs upstream network/batch-GPU/OpenCL surfaces).

Required
none
Optional
none
Returns
runtime_ok, qector_decoder_v3 (installed, version, expected), numpy, mcp_sdk, pymatching_compat, reference_manual, provisional_surfaces

Code families & decoders

Nine code families (graphlike eligible where marked; non-graphlike inputs route to BP-OSD or require build_code_from_matrix ) and five stable decoders. No universal benchmark figures are published on the site; run the shipped harness to measure your own hardware.

repetition
→ Open 1D chain parity-check code
ring
→ Periodic ring code
surface_legacy
→ Legacy toric weight-4 generator; NOT graphlike
rotated_surface
→ Graphlike rotated surface code
unrotated_surface
→ Graphlike square-lattice surface code
toric
→ Graphlike toric code with periodic boundaries
heavy_hex
→ Graphlike heavy-hex code
color_code
→ Color code family exposed by the wheel
hypergraph_product
→ CSS code from two parity-check matrices (requires build_code_from_matrix)
DecoderCompatibilityDescription
union_findGraphlikeStandard cluster-growth Union-Find decoder.
fast_union_findGraphlikeFaster approximate Union-Find variant.
blossomUniversalWeight-optimal exact MWPM matching.
sparse_blossomGraphlikeRegion-growing blossom variant for sparse error graphs.
native_autoAutoSelf-selecting heuristic selector (blossom for graphlike, BP-OSD for hypergraph-product).

Example call

decode_single runs one seeded code-capacity decode with Theorems 1 and 2 enforcement, then returns syndrome_valid and logical_scoring fields.

{
-  "jsonrpc": "2.0",
-  "id": 1,
-  "method": "tools/call",
-  "params": {
-    "name": "decode_single",
-    "arguments": {
-      "family": "rotated_surface",
-      "distance": 5,
-      "decoder_name": "blossom",
-      "error_rate": 0.05,
-      "seed": 42
-    }
-  }
-}

Response:

{
-  "jsonrpc": "2.0",
-  "id": 1,
-  "result": {
-    "content": [{
-      "type": "text",
-      "text": "{\n  \"family\": \"rotated_surface\",\n  \"distance\": 5,\n  \"decoder\": \"blossom\",\n  \"syndrome_valid\": true,\n  \"logical_scoring\": \"logical-observable matrix (Theorem 2)\",\n  \"logical_failure\": false\n}"
-    }]
-  }
-}

Tool results are returned as MCP text content containing the JSON payload, per the 2024-11-05 content convention. The H c = s (mod 2) check is enforced before any logical scoring; a failed check raises an MCP error instead of returning a result.

Operational guidance

  • Local only. The supported transport is local stdio. Network surfaces (REST/gRPC/metrics/SSE) and batch-GPU paths are Provisional and require separate deployment review; they are not part of this public library contract.
  • Graphlike guard. Exact Blossom and SparseBlossom decoders require graphlike check structures (qubit participation ≤ 2). For hyperedge matrices such as generate_surface_code_checks , use build_code_from_matrix or decompose via the documented direct-wheel APIs.
  • LER is coset-scored. Logical outcomes use the logical coset, never raw correction-vector equality. Wilson 95% intervals and a code_capacity tag are included; do not compare with circuit_level results.
  • Artifacts stay local. threshold_sweep writes a hashed raw JSON artifact with required metadata. Generated artifacts belong outside the plugin and must not be uploaded to external services.
  • Licensing. See Pricing for license-key installation and tier information returned by get_license_info .
- - - diff --git a/og/about.jpg b/og/about.jpg deleted file mode 100644 index d7a4cd31a2d362b8597f913f96c7cca206d09cfd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60536 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

EosB*Gxz$?^oG*UVEOX$LHls+fn4E@2J6HXRylR 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 PU@TOC#zC*dzLWn0Bq@J+ diff --git a/og/blog--01QecFoundations.jpg b/og/blog--01QecFoundations.jpg deleted file mode 100644 index 7227e1d8450e41a1ea17b8fe54e8392508ecf5b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58731 zcmb@u2UrtbyEYo6g9s47_bLLCfOG|<_ui{u2m*rAkzPV*g7jvg_bMfH zkS4u1fiv;_zVF@poU_k$?f*IxlUZxln#s(a`+3&0?q}ik#PvLgLRC>k5rl&S0^tBJ z(DfqDgo>P;iRLp6MU^KCe>Zf3fDP|25Xj!a&E=VrEc0_ceP+V>zt6z7y)<)m!tVcv z4Y=;{820KQ&IcxeZ=kU+_B$<-LQ9j^OXZ!8`u*8Z+eg` z=ov@}B#V81pbl(~*&vX}5eS6)?w@0($skZo7zlI+^UpE1Oc03tH3(Ea@XxV-FmZb6 z^77B+@PN-778W4TegOzXrUwF14uU`=27lUskN@G`n1LpG;JzGzmnFy!^a{ibQUN)D z%s{+A=@IBJ5FbeBdI}^5!o$VI{sT6Ad^~(YQbIxk0>WD)Bt)bXx4>YETNLECsc5Nh zQ{JH@r=Vt{xkE?Cz`y{eW@cfcXQ8EMpvPVW2Ol4wkbsbkkdTc2HpOlF|MhnL6$B=_ z;eq!F7l#FO1B`8EH5892Se@%KZCo+e#k2SJVH#(DkLIn>f-8FQAxwb zFQ^j|H#96D=kYo|JMWuyLZ_iz;tt3S{L@r%&UN}p~d;v_V0TDSn%g-fVM|q z;45)(ad8L;ZrlLA9@uceH*oLq;oX*@q;v8K5Ep``wftpor?-~QTiM>rQ zE*K;QT1#PhsEt6g++bm5VYz`q5FvsP2$F1U1vml)D%d0FKh2rgJ8H{`me zIuy;GAFrUPpsl)odq|){ol7AO4(f6!# zhf!hq?^UyJx~1sdfA=zXxJT8RKvW^&!!S>|f?GBRa6JMj_lIFF2(@zPD>R}p2K5Jw z|N4l3;6eStiU^sBZ3Z41*aL|CtB!@~{|(hl1cH?P209bX!V;zl1q06xp<-6hiq#C( z41y3rh=Sl?m?jzzP6hoJR&Rr0L=-Ru*fH~M=gP%&)HQT^wjDo^x>;Q=ftK$rZucqH)oPF|fQEIUPy1KFWmp@qdq)j$EF z06|8wQ`l9?8!P<)gK=Q;c=FQn^1vMd6)*)D0#vX^;MfXS6T1ihQ>XZ+Cj@&M&;kce zgZ$ZR!XZQM1k|%jB1Hcr)jID-bL5Mn0TAC<;T$%_d7$yS;P^FfU zM!^8EShBIu;>)4{vSGP}0GN!1qDgs}0qkyo&?w-?L=i#Y_--h985nTKMl3A#Z~>IH z0Jx@?;SK+XHq0HW)|Pn!k#=s`UFsZs3NS4# zh!%uuxJ&*HszM7w&Baco(=D&?(_icVPh{lfA#iHtPLw8;BAz4@#zlm$1pq(=W8r{t zP|LtH5ol(JH2M>Oo-7F#y-tWU5(yxM=73A1SZA{;K>@R~TfbKlGC-jy8;q+adH0tt5`E(+J;N+htcX+vs55 zAi@>Q2!|5?_ZhFJoEm9u?kM}N5AIaU6-qa^*zO>_T_fK-)7Nhg506{i%Ni_Rj(6mx z#l*gT(mN`*Xztb;*!|)fG%I|$!OHO0*sm<63&m?tlOx*U_J~CF$i>Tir(y!deYtxp z2uBBN9uT92>WoU)80+#6{b;c4H)rQgPJPV%2&Mt5&^Z1Qk@Z~4-qTc6&w2M8ZxLg@ zlyD-Za=W46x5&1>Rj%0#eUz6)FyFg*;(azRx4C(Jh&i_h=9rLNR;VW27CEv2#uNxs z>%d?%Dr}mSK`hHJZ9`*>8j`n|E2$G0qO+rF^F$(C+ z49!NxWx;Qtf&c@{0?TGeSCC`^&ISn~!I!#Ccz;o3MT?v)n6}w08`3lln{k|mf z&)F1`F$6_0zu>EclTZtYv~7_;NOOF`_+#!cCPe~K?-%6q>Bn&Od$x!E{1}!%C$6O7 z1*Xb&CFa@mIooYfwI0UaCaG?m%pMbbaUB~ZT5odt`>|9Ld#Rb#`W?+Av4f1Iurw)>bUl zh?CB)K|HjX>-}_uO08ay>V)}^9lf?|`ZqQr=U6~0<0-tY$5tKo0@TxG2+tIYA4<{E ztJ<>jx6;>egs7##x=i^na%cd@p(JZRsg9~YW@jK_3?9D4dtBtRirhW;cKe{2db`loq(rHkyin86^g72X(2iCOJbPU26={Exl1F_~<(f%ublWz3$Il8`0p zw+=+CU5-Pv$oi9Z#+7$tiHuFe_zNYoUqOc$%(Ubd{ly1iF>)$%8oPk%kA1g&xt_fB z=xE5tDKGhW8bW}48lKKSnGR3H5dAv(9Pwl1`|hP@MzM%!58~%zwr4#ShUZ33_bkixgB6Tf0e8_qYssIcz%>Q(Us^TgAfO}4hqho&6D6DSFb=}lA&x(z& zB6L zORCLueYz#=)HRe?Cw7v8a}IfR=8ptD8ETvG172xPCDlBmP1Zks-rhYiP1{cW38cjT zO+qwCMsM{p-}SBwrgN|RbSpvs?ng2K@He`Kc7e6W%U@47zFL9Y_nrwP$2ucO4hy*0S<982!Pk*(yR;x|p>2>&Rv5@bslGcWALYZi_{ub9=w42i*L~v;aeg@vY}VTK+lq_C<7! z<3qIx)jq0sU%ibT3|gs-jy!05IY}*nYuWgmw|b4y+kpKQ{kzHxX~Ur(9=>l*-XdEj z?SD*^1s=JGb`bfer#-!-4PwZru4Qt|;EjZR+y9+@+48pUw_!fTB%OMXhJ-(twfV=k z(kcBu;iQne-Ey9N3!fKeMGfz>@H&`Y#oRXv$mjoX+@=WczXnx`zOnDv9#68#uf}W? zz09%lm;W%j6Z@$$M8?}nJV)I#ChJh&XEV`)Y1V}L>O|oj8sBdCaDl8Pf~Qtjv^jm` zMYTYE>GCt7&T~g;JGtrItctd&w~&4r9|elje;oar7&rf`C|eXy-FF8H9cM|~D7kG4OtDAxn=#$q znef90(sno8h}qtO_V)D-1;uh`XZ54Y)GAz?a?%5%4ecV!@03|wP+R(@i{0|paIN@8 z`nHPd@H~aME`_#3(db7h{ZA35MR4BuImTHiqm@A7{$Mgv$CT z3B5F@k4r~y`q3;ux3Lk!pGe_PQ1B-{z}6$6zz`2i=72ar3kVKS@-TUMAcEu$!Nvwa zL~7&8!^Lr9>1_dsM(u&|)Bv#{4fKg!a~ z&U&WD0vw@&v9Y0G9B35qx(&_lq9Dme=K|3~Hk2g`1_5H-EbMF$1_c2V8W=FO1K(K} zz)ne^*+>pF63S8WJo`Hb8o`1@Kv3pX#&r6iTzx(v~|BAkIw?K|Qrf_+KREEdddFXOL zgV)u4{GAsC$<%0tOJmvWlwaeLeNp%bUpQ?9-Myc<_O5cF$`4S3zHc-r7VB0i`84<3 zeY`CT67InJT-%42FXGioH5Wfs!eIN-_Y1pN~%44#A5w|okLGmS~PhW3!Yy( zE?-@xN~W`V9)6(qQF&p>Wg4dl3qSf;pl)qFcscOomaY3p+KzdA-ZcA)lSzE{iFX%1 zx2|==TH)+Ep_nwUYp4ucbivCg20sw#3OX^lry0x#zI|cDnEu>)DcarH&$+SLI=wRN zr2A->H>s(Dx7)*_IJa}pZsW~JeeL0+~C!x|Fsa z8c~SObn?BM)`mt858kFb6v&N@r12JXY}|U)CMGiH*x!uV)-vR|OGbM0 zLli3ae)K2YY`mpRvBSCO-^l5i{GzqJO-I6oEkQXOXmMq+zjjK13OJlUAZ+%c>L<~W z0b^?A7fS0we34H1AS+_F+^_-M)t?&&=|v8Ea)`g2p-1>@6ARTw3>487%J+F+sReAfqs zPksr$3G+Xlu=8u2U8-8#Q5cK9H+LEuD<{Ki*OQZ#=Q{P|9K*X%;`)^rv@dKPPX4tD z88A%$G%tjMrK`>~BI~W=rx6B_0O6TnriGz?uUDuH{w*c1<6rvTzH5`4gKgcH;HL7R z^w$MiW#M_fPp;CX-si5n3)npBU}!wMlByBkGh--QQX>89ZP}gRqa&R)2K-m_xG9>8 zV}$F?Y*m{Q;>u23QKy!Zix)}i2HNjB^r9xM@43$C>OFnFD&kGhSh*iuVKgsLdkvyk zq*f2sV4FBv%zoW7raV=kc<^gQg!=v7J=(1tTNvoq7)r>Od=J zF&ZK7i*nLVRw)A?-mX2oe3~Gckf1fS=-08;S}pip)XMf(PEPX3P=&70UE^6@iJ){{ z@K5ET;mtQRUqUr*UW0Pq96sXx%roG*cuOgu-9BmN`_i1AeOP`%Mr~BnBpDCmu9frJ z(xU28LE)XH4;o26?v*YBJmT5@lV3i^`trPjB@Ixqgj6fGk zMcf+6-l#cZ{#lZ`CO$m>&WbPLw;gNea}|RYZQ_=Z(Wcr033UcTcS~Kx8e~#NK_Zt$ z<*kJW7HGStYb*TsI-&Aq`L@A)(R&qQEgkX2W-5#h>%Xd|Bt1=9N_%QcR%TS>;96Vc zZyHLY24bG3+kX`76I=gPpBLDEgH?rndX7X`tEbHqUBD%sbxcb;QHj|z{3V- z-Ot4}#Xc58uxGW^Cyu!15shg{bA#P#w!?;%~{Oz{c`zEVfAp0%$CdM5yuirg;t)JD7NnOu#Vy5%5 z&^$k#Ez&0Gn%4W6-;k&Adb!_Oy0gT$Xc`#!zO+m!UC;8v6T^Ofrb=%Qri!MJ4dg(= z+|H=G&<4GLVO)I$>m6_F6*fYgW}P>VXFaz_w8gmRA5fGR@iv!qX|WX-+`<_!TZ)No zkg}g?YVzS_==GXRUG-S9Z!|W%@U1k_zb;Q5LXY3wOS+NQTAXlS;u&P(sJ54A= z0T86KZo}aa`5T?wvYpU4Y}mpK2p)j8_@|RBpd@0e*_l9KQ$b2m@sFsH2?%J2EOY96 z=3puo78E)RLWGsmiYuhEQI7yo1YZ{US^@s&CCgm#98F;k#7bxm7`JQ}433RmiYU;m z%;;9`SbUg*q6{2q56d^uwPna3qOswu#BgM@1ZA@zk3Y=p@L9qWk9x>`YId}o5ORy>K2J;86q!6^w6<8Mw$!!7 zJ|%kl>=OO%nNB??)Y#_r6W`qE#Q1P!(g-i{oR-3&u08#&r%F6V;%+O^Q&dlQSnG14 zqD6P7zOG0yHu;Thx^m$dm*aTW9sCt0&%clO8?}L7o-zv zEu!ysJDh&-9394(E#+o9TLqr!TPPDdjdeOPZ}g0)9hG)Q`3?2()K7H$WreV&qcjxo z)1M)i*y(5)dO9Y-arSuVlhb1OmYkYL)l#2eyi8T>(0Jc7jE7Kk{I)seqq5k%;bx1f zeVR{FIca0%n2odwN863)BewfwBU;M$-gV-xo84j9GxEtrA=L>{gKML&W;0I=T1-7B%5Dc5z zkjGQd#1aAWXAh(}{#F0;*ng5D|2<8jiA{oFQy%~7`R5ERpbkucNU%Pq6AJho2o)gB zc4unA?&9m*Ge?s$XQKfHR$fttiXOLzZ#<0-W@JGGzaYj2YlRvF`lu+!`}>pZ%v!fdL?}=Gn3y_>7eGS@$&xCMr)^!S4_MuZ z4S?6*r~$xY!BWpI9o3@3Qve$%fNA27u(bF;$({W-W0MCa%m2#D$s#k+VFV5bzh^yDZ3TXqG7&TMLtY)I~)CoCJoM17L-O$+l^}tsp^x zwcP%~AjNFyZg4HkMld;aMgcL1B(YW@f>Wfca!e zBi_bJqp-|@{VQ_l1dQml3LFM-hq)Yv^;xD6BCOdd01gK0e@sbGkMM!Bb@W(*VSoSu zhCfID0mmi}inbR*KZ2X0NzffO+1hLv1fmC^Qt6LBh;YUMF#!v@9D{;#AOPO5AOL5S zs>TWUrrX^{`J?g`iGYW?_XObGmQWb)5C9lw0^rNB{L!`wK>>JHqB$#{wE?gRg=}F- z2((~0!gxmkZs~#HEB^QX_bJ)`fmV15XM+{r#KrLNz2 zvY5W0q^0uM%F|PeGRLFIOz>y^k0dAdL2fBsj z9^m#;W#Tvx9~$6hl`?>7LOc*XR)Cojs8mJ&0Q?o!WJ&%uR?awpZnBAhAp&FsxXFnH z4?qkHE|z|%N5J?AFb*(O=$1MP@oY;y8yGz)ZJ4p_6bixmyk}#nufQ}P59NVy0Gs`m z@lQxqcRyZMv#)-puIp6vPJvAPCa+(#BnZ?jI6eEdR*=DeiM{7nwq3l?ScigAukcL0 z^b+fvtYtEXOZpuc?HuU^p%zlq=jxu3rN2Q3U)7W`ZRZtvqI~Un_!{o~VqJA&g(YF( zz3p&1s*eIDJg?-Y1H>M=oeR{Nurv=X9+T$n&#wxFOscaRZku_hu}0Xc*a1$n366IG0 zvaG$9PiqPJSDa;jcJpetiizy;OLVM1Jlz(-Y^a+EyNfwc6|XEi+Xma_-NK`e&A##5 z)nUL-dErO6+O}F$efSUhsE7k(w|AZ4QvRkAYmD}Y&oF9R7_-^KC}(6l`5Y<$#p>K~XJR)NxO>@SA`#>FA6rxN#>`Fwm(3WM;J=qp#=i{{ltgWWR+BTFO9<-4-|X|XH& zmV=Sfrp1q`A{nVmhq@QH__h*KR_X>dwho65f)+=%o23_iMMDMxiFic)V=q+=*Cp>vtuL^XA+K_VQcpcg1@!Vn(`ay3MndZRo zuJ(&#f!kb_#i(G8gS~_sxzjaBH^Xubvv9E-vhjBMRgJNImB+8sW+Ms1rx8m_1wdv; zrT|(I{$PNM<*kEKtzb?7+bOTz`QT~aRrob%(JinP=7i+=;kHn!YuRW1{g+)lZ#S#! z9s9%O&tDu~__~?#63#e@5oYdEBoTE2maV%pbA|$+s8edN$8zaeV4bjfDos@)5nlkCv`lN4jO!oh3ut|-a z%Cn~1wpwrlbRba%!q!9m*H&wF-$N^yXf_sh0&V(&bM1&X3MZBhT{rzj4a|7w32%S0 zQQ>;{JjxH|eB>`rUj_a|E-cD2KeQ)Gq#ZTxA%<&qOj5n98<7>_hm2M>MRX3DXpp8X z_4b{*iclzDXi5gWFV&wIu?IzpUc z$IE21#GV4Gf{z@}txY23Y`@tm-j=K_L z4H z4S31%v-t#1`$Zj^kMQRWjqp7Uk<#PZTa)Yp#V@y8&d%%lm>%Sx7t+c0?_-$s5@{qC z2d_aGifd47t?Y?qQAe3Doq{iI_lCRthtE}|x5#3nd7SXvBxHUy6&PDPTYfg7V(;aD zo1E0X=~%04sGw0Z;$HAb@@ataLF&(=v6@|s{ChH!3SHbi#)pH;&wd^rX-iJ=h`rc` zGEj%MhE0vfbde^UewmaDKXtt65_yD1&i6#sM;v@z=b~SELrxaDSovk*;u<8l`ej7x z8f5Wmf_F&j#qW(ByNolo{$;y;BkI#{UJ_}}oE1_u9ng*WxBK-uGe`=5v5thwjPT1S-qhO7TP(DEwr%IxM66rj=Snnj+`+xy_$Va?A+C_1jwK{=83& zOU}i{D|zM^w7&SB^J(vH*=Gy#7BM(KS$^D>-%SGFcsHK-?Z6BVhH^U3c|s$v_ltEx zpXn-eo=K)x3^}BHsCgP~WAQlUG(<2DU5a$(2W@fr_gARp)r}_=51>C*I**vV3OJ?$wE zgQFyqQzGADYAIQ3G2jxSY87n)+h4wESY27Z25}tk_(ku|h0J(H_e|?{Y|)T5bx>{d z9G`mw3pmfSRJXT<1nT-nUa_s+aKqus`6v-8z!D6(yW-l_Y(~mi;dWWUEy1ceQ#Kby9%L}>EURRtiMJ@nQ5P^OfX95f-U@kq(I9Q zRZZ`EhGRNI4Liq-DeL8tG`FGdF4D#T(#odbKp*dzqqRUqSn|{>#GL0)+f@&}a7*p0 z_j4sW=M&pP=fdi^bI(sIMQmG{AcL7rMqA)xaKGe<)Ir!v0?zlw8YKU?OavwX)gwFB z>~SHlxleeTHqg!0vx$i;pTBy=xw$VBLK?qwnIe)Gsb^azY-ciAQVG6`zJGkKyZ@J0 zx=yFcIgWt|!Gf__Yw~>yo)_raYTQD0Ydhz^E(>FS3NVEqmy|!l+=KU=%=Y-{cA!4$ zX(83MaOrxlL8j@@H#L`vBDI&G(t8P<%<+4w9ZKBhRlQzA){M+CEG4;ZEG#q69m!l~ znS0mvityb#|JrYUo-_JHGCCGxtI-dyw0{97O=FrQk1P&tx-9v=N`6*7&3X2vrmVZR z0s3wK3FD_{<~phy=G$kCBVb#T-{W2)elncSY)d@&nmWv7r8D*=4P$Z&j=8Af;-vi! zd~t_3r3~poA-GaMNl{XXQGD%ZkEl3)s<`wAWC!pca$qJg!>gC4G(G;C18s&rG=17{ ze)N$N^q_L1b7Ox`Os@tg@ZOp{6Zr^F8&p#hc&9oPWL5~^&c!>Fgg4~PFV)x^Y#`W<0+hZ!f$Nduh@k$zt_-|ID`_t2H3gtBw*eWsz z6o(fBfXE5hT6aRFUcPRQaq?fTNkZP&-9zUMcj-k0UM z6wfAod_39M{JE6+8gxRMxHO0^851X!MG%E#%fbVnTUt|JG0%zLkL)Z<5iyB z0Lsg?gr#9$Vag{7aGL!fA zX4$v5+L2Ux;&tp2Ps(b#o=*5i^!kwBrg1cuVtd$pF=cb&S7BJo6y|bDzMLbnzW$tj&9A3tp0MM&mRcp|?@4)f*dt7;7DXP$UI7fJ zlBcn;r;_nN+RH$?Hc9wxfr30LJ` zL^50O;VBiLYMm+D1z>9SsX5*2;{uzbwQWiO-fbF{gMhEv^`+T4H@lhb#iorQkTGH0 zJBK^T&5p-}!hMdgOjpy7m;*n{Y3I|BxnvJI$}QLLZ;Lya zwq9dwOs+xv9S4y+Jg1}#9Qg>Pdr)+f-#VH1iT8uf(yh(Gpb3$?z zbaMtry0%rySMzIY$#udurVPg`ALl+UrNd(gxvhkFO&v$X97Ca-FA@1y45o}=efzyq zk6tWHvTBM!UT*rWAI940%4facZmkjAVGHcu$}{AW+BPh#8ReT*#e2)4nd~7jIf0dF z735_g= zhrYiCSy9JKXl(N6o~+~?I+fNOj}2Ud>>KrkRK2~|_)rSWphNyI8XsaV-b&pWHy0zm z3`1Z29u0`5qHk$qq#bltoO)GdRJj3X7>1rF#r!^CHBX6I;dPZcwKub0T)k!D6-isO zoWSJx7U_kWFMNU1k{MNh;vxQ6DZjEh!)D_$K3TcB>HOD045skUp(jipZLNGjF)UbfoD@DiZsBmWyQbaWW)f-`33Sk><(Q zlNKXy;eEs&egmrkBdNFPoz3UroMs*K$pe1{QZ@9+vAr{q4X}fpFJ<`Iy<43lsVV$ znp@YPRHxsE8yOAIK*HZ#=fqzcRclF)Wxw<|?VQz+4?L|qsVLYD{Qe~~^`aFayrS@W zYTqxCw!zRW+G2t&AwT^=joBAhIsI$UkrE#h0~33cF6Ccn=z@%PlG&gxWjE(?o$Ms> z;W95~p&z5yG=6J=&FwgOPMv4Fu99D!uFiNujqxN%>5VY6^(p1A#v$e4nbJ<9^pf!; z4X}%k4!qTdkw?H)*m*0OxqseAY!**|G4w-*x~J@kU$vP|ePrHZb4tj}lUZvUsQFDZ z!q$whgvt6QmdN^g9#Y&!PPg;Cs)cv}$~TpR%e58%J>A$OZcD_v<&4cL zCYW?ma5d20;HF3a<4Fg;zsS**0>j+_7)9l^YtW~$hw`_To%8HJ6E7s_#_bW_t1~D$ zAw9?pf{!VWQMb`Qc@dHNONED5yqPsIklj(-maBY4r+s?wqJ+IaxSxAx{S~>D)1LKs z@GnuuCSB0z>9sZCjjrGB~^w4sC z)1_x#{o-N*B~E1x=KNQr(K|D$V;|Lyc$t9>MzGzg{$>FmaJ5+o+q6zttmUJIRzIVU;;uF zMPkN4jBf&F=?e~B$9=ub!Y&(om`4k1E5%3z9oJm<Ax( zT6D^f=yWZ*dH5K=W(d}zt&u*>f(qV>dwf@R@cFz4k@yvJ*fdAVacg_$?isGMYtT5~ zf#|->;W>7f(0uuLTE`zrg09FTKn-YJKo5EWh;I@lb`F)ly!&mtN1&)9Cc_ zrOt*A?HVI9R}7`iJQX_+H-V8R^We_n=SI_9RM~=%tC|X46-0Z|mKAv?$@q-^ zr4yO0(leEP(qfbHgDb~@FL~L&M|jt{2Y8go>90ZG0-UeH%}tKYuR*&7rw{w3274o~ zdNZydo2Kk};1QmZZmsuwL%^u;QN0eYYoih?*Me{+Pw_V%kkwkp?3Udv zD1Xj*m+A>An333+0go>m7S^Ojg{`Pm|G6Igtqx#CE0d-JV2N0 z7AE5hmv;>gsxt|Lg>Or<=?us2o{Y6@;#>^(ekp4?e^mB*f0cJA@WtlF4&eGk45U8C z(0ob_CkuU9If*Zx%x~ZOdXPXWO;V&MUAU(-$~Gn@Zk8eY>f7Y_?COUQ+byYG47VkJM@IZGX^&MAhx$X$2Y+S6ZvLF(t?3)-P)kdUNi(|O zS`7@e{n9AG!kz3fax8fb>hs!(?vvGvP`o^!#U462Hoc|}c^GEw+k5{t*SsD~nc^L=}e z+mhX7M_tFEkFnZX%zH~=n`v9WUU1go@8PF=uj<>@Eo=N-JMg@2#DMRzZ?13JYHi%A z$Yz{hmvPpyQq!36DL7iP+Om&_wII)S*2A}2b^hC-usRdywrL#uc)+wFXI4k)SmWY| zI)k{bw~?B0X9t(MG=1+ooRyU~JBwfaRJf{Y0~u<)lZ<$d=@_-t3_J^8g0&w##?9#b zzUt0{n*&4^KWpb|Za#S*V(%K>>#6T4aL%YlxWewvRq=2)yyeSA#`LOgl6aGnp@#n! z&G!q#6RuYlCQ1;0uH1qY8U@}-Ru$XSp_DZl(gd0qKivyXi)&E8M&Q#U79I<0jN=6G zCpjOS3C}(-rDu8Myv;CWWcHsgyV_y-^<~pPuv;YTcQ^TfW`kC{Mmaf!e-s8* zv21o&Wqb<%chm8W|I(yXuhDdCVfFM|pHst%=zR)*c%DCJqQTEww7lc#jXLAmy|pjD ztJ(%oPlxwd9p9OvgMiqioNLngk=4l)eaH^4dy*6utY4mCcUuk+4XB zW}_<_o!*T0K^JBSKG|`r=wYo(JE`5QeZQz8_QbR|KYd6}z#Xi_{Y*$X*UFW#rMi|e zGjxSU&DY5ZjZ8?NX(fHde-D-7tmFc&k$on^*Bv0aZY}BSnEi9REwR4g3%+SMTDOy@ zhIswnLouG1Ctgf{J))4H&YL0-`Vy2(nkJ+t$eOw%Lm^HUxW5bwO!00)DyeMpBLm$vh40sPSu>4mK;_HWdsheX3p&)#?y~} zxTGsY>+u%{*cvTHr!QNTykL(xNtySl>SO(S_6E0nk>pp+7@5sANWCbK!t%H6XFt(a zwy#b_k^&cLiTCUfU%Lye;)dxC1ULofBli!OqNX2ay!MkW>*$S12@2Mh z6Kj9_PRy_2G=x;6E%&TUxaaChw2Xb=2cWNo>KzhO*v~ko(o(R(+>uC8Wq28jyKqCzU#teEqu%5LmVpY zOD~R)dTn(IDbBaJmuAY!=|}%$$%Em$?lXnh@$T;K>g0QQ1+RO!l5W*iisCeW|#A#IZRiXu{Mj64rNE1ISJuNd?N#zHG7Ycwv=d|P_ynC_H_Trj z(i|;4N!z#cE`-!@X7h-SPL%bP6Pe@7iysMkzxWuLC5g>n#w2)|;6|zt#t$nlm471d z+9#1$5aj=$=5_pa!9J9^73xxJqNMa5lf=gBis{h#DydC$#UJ!*WN9!)GL2@E@U_k? z%PUX1AIBf#by7*qc=F!azwh7o_I{J9e@BH8FJUMD`;sJwlcmstyMcKZivHYsCf_jA zJB8S2ePEIN+gHjm{C=bGgC6&ki+83~N8oQ-USJJ*V>h-q$ro$iE==i(n7X+9%s!`& zr0;HTbuY=p=-b$Cuut;ii4inGrJ2c>6e^=TyZeZa|KKp}pVGgn`G_(Dw~x z#q*VS(hmv=&HNQ3#HM~fU((TN=Zcb0*jHxB&7J$KIb2zNr=}!5H&JBG{lUtxBL9r- z<0X-i7|8Q2_)vQ??~BcvWA7FqX@$Dlf-cOIzTB+(r~dx?(vI9n)$#+ntKP>0b3Pfv zkYAYn_ff#;O24|(q_Ix2TF_HnLouONe;F#(mppJdnlTygmSOu}tBz9c18TExtPcE) zxyPyM%?`TP3b(aRZa015_$#)rEV`x)IW@RP9zG#ITKm=;f}CWhG|*rGq0HnZWlA^l zGgcXnHWsURfpw&N+qBCy`ouTkqaNK6FWz~TFY=Bj?HYWH1i!Xhr4Nn*?A9t9) zU(pqJ-gX}ysP=eM(dXnUmm*_Lhv!`y$7*;4B@Jb&M!4Li_g!zWzm%d z48@L%GpBL7QXblkKW1y0Vk9eoA)PB9JEVKxWep`9oDuK?83a~;un#0iStU!_{;=)% zb-yvd6xLyvDAgBMKQrkYLgB1^udv>D!YE2_diIz%2eT|;z}OKgP3KX6ggan1XoHzj zWHpP+N9!BBN|~dcUP3K~^9_Q;f&a{fJc*YL__HtM$k(Zx#SVG3U0S-FN6zuRgqPv` zyF4T9#?*`t%_yET`KA9*?M@g~eTh)ESjHoGr@a38OB%U?OX|m7zODA9gkbY6weJ^4 z+hXbxmxF!$7q$850zb{BsX_W}T8C>;d|v0>c4E`T`%+rwUxps#$7!lDl&Fv%4Q+bv z8A=3%eo{8FJa5@DSMuI%b&@wsjCk+`+_urNjisrvS&glBN20%S zM}3Q8+_pZ57cMH28?^Y1?L_H{HO7S-DGBqw9-^S{2;Q?MG*&X}vNtOI;j#X?O+9&u z#)3aVA4B+cUn*)w$yleDV;BDA1FL05Y*_!SW6SKZ z#xCM2uEs9d0u)bR>6-SRhW}K6g)sTU?Z9G64??D((S+kj&C+QD%x6vPzk}9~r)BA$vCDp#}?i*1V zu1>y>VVXDKN*7Cgl}gjFuk?Sh_0~~swOzM&TC~M!fkLnrC=SIPN^vOe4#f%XP76f} zMT-=-;w8Ad26qka?hu@QyZ8M(@B5u`&OaF=*%`0{``WqIoNNA;PVa348q(3=^v%90 zE`PL7?-Mk00a1hs%xrZ^LJ_-MtMH73cusjyRp=--50{hzES4%NeBu_O+LyJSvppow zIq8Z&G1*DY(X|HarjpZx;oyqyJx7F-_8r{#=3$hCZOS{=DscDh{=&ApruZP(z9%@d zuO0=5{z5;_c05Q9(PDimQSR&A$*`QNi?o%t`2JiY?X8K@80kgAvLs6`nZgW zh3@!{ZBEp?d(y8}YYLYd^v;s+y1DQnDe`Qk!2u?-f>q@! zN-ZpsDUoEZe-4oPQI|4k+IT;+_ybbrn9rk9Whu0ud^i-4**(M!a1r(xxVmrq9XYa@ z%4Bw26^WJf3L~=?Zap|W)3_wQRYU0~vaUdND-y8r`X$b6NvGuvI)E;l4r?p96F4bN9#b3s>5j?$Mr{8V+ZToxoQ@t+4eW6 za@hi&MY`D94f)zO#jn_A!UI|aVe#F$@-44s%D^~zhrh9PYbzH;PLTHNIsr34269Eae5n=w++GpiDAWm;UXDLZQvz*cef;sz~A81z&Y!HCk+Ll$IGcf}hGFQEM8 z64-uZYMi?)gZ#iK*=zky7*EH})6BMI%sisxt#z`O^m=j@tUWO9=@kWK^>-W^zH}m^ z-tSLS7Yl&WS9IBZc=SmBX5W(k%iU|k%{uq{`H<~=y}LQpYmrsMQTc~8^)|x_f=AsD z|DifRFV~Ugc#*(If(PW~B^pJf@7}%--%ndxnIDjgN6dBRCUb=Cz-!@+`@p!>F=t#rjf5uB`%xh*uKL7jN)KrX35oI8m&X)y0x+$SjMMFU!37 z)iB1-M~tFRAjhe*LLI4rx4R;WA;<_5rZ9HLer>K{V>genQBbGG%|nQF<#=rGd4XlO z;AeIaXJhjb@``i%Gw9-pCGQqS`08=mHA29us>S~dnw1lYf4U?0e)gIw&?yQsN_G0zchkIo}4kr3Jvu7~{CFPkq?Ip%et2flv-QWN>%|Tz!+RgwItU zW7X>fp7{L%v9~tcJ}_!5A5I}Gf87l!-pXjK9H89Y_dj0NUX&<4+gwzj^ZkA<(lnKk z>2=!Y4erJ%Pq(;AuDrl8;G@RBybH)MUZQwd&3Zs0(iAbJ-8|Xfs`I}yg9|_R4e{{5 z3J$rz)Yp56&PePmO;v}+H|JPnBFXCdYu^$@oi}_jbfuGdtTqg=!=fn_IADZ zbYKTHvCf%d4^(bnmII~dc4WvNerH#iC0M9ViAuOuPM6una#f0Q;3$tC@Y3Qtom-_< z)HPGVdkp9nu5ghg8s5lU+%QH%@6``gO}@)$8`Yur&be?)ek2j5iQvE0v~heyI+-VI zkZ`Uxo~~nD_4j<)!$Fnp{v%~jk)B)}BDcThPFNoKLd(3taDUx2>+8g5&x$oe+Qu{o z4Au?HJb%qhzghdz`FCk3-@AHqU80|qwmgi5L41%W&Yzh;o=qijwLG}a-XVDB0zJwu zo3{G>b|*a(HC=5;TJ0wgG2IL1imJ%7e;Sa4|7}2G?HMWC^1lkJy};48e2B_8_w#*V zCfZ7JGmOYE1}ykv0{b2EO2KMU!9aC9s}K%^W(OTd3x~EPG`hmu_XTxn0$N0k>Z>aq zsh``-)SjQEk}uh1z{rX*^OzC2Ffm`Wc2BOktI)}N=CzX82mRJUZ&zkx%Q+hrY?VWQ z>a#|%LadqOORssSoF*mJnfbk};_Lz=AJw)K1kh_J7V?46$(jr_VP?Ms zyq@xZzb;6d$mbS*hh|~uopIB#!(*zriWA~LBT_%ucn)VhAWQQ-^54c7BFEkubJ+h@ zH!ZI;!=DgPK-`JCxG0nx3pgu~1()9rimZm3Q42;9W2X=S2wZ2?2f8B}b>m*D_d9XG zO~yL60nTVtQmbAjgC&l=Wio&MDDM$CT9VdfN4U-xEE3b8=QP2LXjm4+TOgAF7wKF{ z>WouwZq4$~7}C74GH0H_`LC??Z;Q~90I(xmZn`wgVT2l%Up+!bMDlVT2M5ZV-0v_g zT0Qq#B~?7BLSl+1gnKBAycI7SO2^~3K3z%fef3RsAfW zIS7eI+*$Vr=eyK_TC&=f4wk!J`J42Hs5zo*G2?#(JbKa>1Cy@n%LI@8+O5kC%M;Ds z=uO^ht#fibcUQW%?s?RW5_c5NY}Ir3)Q>yY1?gx7s7C%(L=MjTq;tX;KW2AB35ev( z)JaX#K)Y|8(KemVc`7XkS66ZHR_gWmhGJLovY{Jbw(>4KN^&2lC9S^e5VUyGTOA&J zXO~wu&q(<@v(PA(B$S-IkHn{)oWZOQhlE7~5|O;GY*nYMrmDBQab%VoA5_8h2V||g zUcI|)=EJZZ=wLl2;gRpl)dAIp7%Eautlj_5DAxAOqKsD+gq-(e#Q(elc&$R}A zK?|_#UD{`gM?T+bbgmo|>|WR2+1Aa&fNjS7QE>3L4a))WCu4SsZN6cu)n7>!Z&G+_ z+-KkJJ~$;_e6b;K%V-va-Cl^~F!~{e?~oTopem2i%z?8wSNXtoXaHP?hJc<*J|<#} zx&Duys&9UP^5`@42UM&AoU_DS`rkv_|2>5CzlX%5Txpj=9O}LyM1UK&`eV=lEdGE8 zPZ)M%xKz|STJLc}(9YpSJ8N-vSX~9QvC-si$VRE@Z)X}VuN^fhrJ;Dpm_UA zW9!f#@w87Q_t)b&Ne2EsbN;OP9fAMzBe%@s(-gCz&7tK}Y7@PQi|Eq}7M1nOKOn|# zUK7`r)p4#`IY^S=m(d#iHtb(ldR(LApL|I)GxRffyIE1s6ZFh&erWB(>7nm9iobi$ z#^fCS^oml_opgnSgew*+gq}Z(Q=9v~pgP=I z3Jw=>vur)MZe7*gTkgT0Ao50Gz6Cf&zpK@&T8Ilv@OlkKrDq{J`XzyzQ*K3eBMa}+ zx9-0Glt`UyUKl1D&Y`^(I`flgVs+mqe_`tDI$aYvWtC%OF9^jej{rne!CNfUFRhgL z>s_=qH;GA2s%sW6>b?$`g>&W>;!7!y$bG!Cuk5`+-y9{)th zDdjZa+q+#qgJbt~rx1|Q=bne&=;pD|d0B*PN>lOjMtG1;v4L@%Fnn(;Yb?B)W zZnBOQIZebMHCD}g)C+~G_ow7SuFcMVFO5^B-nG)gc3C*yFG+8?bI?G1JjG_ksw)&~ zp~X8Lb@pKndkNM)pI~yfrd`DPuUKN`J)DKQ>f1b@dfA$rzXgZ>OgB_;jZ`w5^*!oy zj)=-G$&KYXkBav667(WW1Jo3v_-jLqb00XHe)#$o$&PViwEFuc4R+BS=t(qEaQo?Q zSz{|)vr0V*v*&2GIkJI&p{RjqyiT=_uZr1WBJ~OfZ6}SVi|j?#`b>Jik4N^ZExe*L zy4M88a>gyHg4#{J;&jf7-2^2;zHtg%t^RHI`um>w>lV|YJE;>BEZcpW{G5_XRT)y6 zS{^A?PUA%qz3X&R$qVl77quwGpY$7d^NRv7^9fuzSt*5~%gV#Vr$?zzW(L>%P~7H* zsy5v;Iq%5Eha5r!gyu2}zCYrwXtdQJoK|h~4hC{r!0#E>9lX6^ebly8ZJ`TmBfXW5 zTO^15yot0DjOO2B%MPO~ofQihN7CoD7Ew~dIC)68rC!#0p$@6^U^z?A)TeH5TUr9m z7x7D}1H5HMgjRMp1jEmt(_Q7fzWU`3FV87XI{}rld8~KS^EP%pAGrQ@qQn-Fn-w5- z%#Io>#gowIocjKRWk%mtkL8fdoFUl`qr+$9o584~H$9s^zLKq( z1Vq(BD|)X3xUhO7AvxUEp7ot+8!qD7nX4_K&PVjMm&lx-_s4sjZi!#80a67sX^YT; zZJ})*n1!!T=-K!>%c3(}@>!%9Th!hJRN|sDU&M*ZA?^=|$DH}zrJDHoqe7}A_l|YZ zo1Kl~pWe*A>19B7GlNK@Y@MewnpsBWG{pmr)RmQ5IuW_??%r8=B-$TP4e9@;>4_veeGku!BPfP#%RCi?2Y5Xc{)_~VH zq%xzK0JyLA%a>|guOi5X{VvoVzn9Y0ROWZ;EOd^uz*>#=H7|<*ed^S0^bS+tI9_DS z>&~0pH?YKTy2xKzvvXeR;N5YH+8P|oG zV=^kKJA5wR=G=<=fv0U*y$&}?;6m$U_}Vp?m5Buz&8lq&?JVjtQPG>zu|*hf6?Eu(cfiJsMl-HjO*IaMJxQX!ew4$4k7O2QeTM)Z~v^F+ps~z;Psp?S^Ajl zSX$~-Yne!3<*B<=sB|YQ`#EbkspPOTe89!C(~wNPz5<;pHdK`_YqM#d1bl;Z!osij zrN@tM^3+-2ck955%p8b>5P?ACpb}^7sDGRciwF?~4Q$}I!}(?t6o`lY9zW#H2I63O zlk%B=!(R+Qd<>%s=r02jWB(+?CjRD^RB3?hlBLQap@6u~-w+wrzi*#}|BZ3}r!TDv z=v9-?o74yn4gWFwzvRFOLyCU;pK02~WlMI14T+ZgIwXl5+fO#+q-U=Qddu80);0z8 z=Q+Z^*j3k7&}MXO;nzi|foJH}QN5Gj-+CYEdX(fwTV0G4IvYD&_bhTgqEy7-LVnuO zI1itB+Xu2h=CDl+Zh7f}M$%Zx31OqTbTJvh&oM_tQ8?=? z7p>Kb=u|=DsngL_JSp<|sf`cOL&qy&Tliw4)SuB*WY0{hH1WV)OU%oqFVC(LddcYu zqyMuT_c1c*g?Z%(``uI zE{l{gcDgvYXZJdxqq7yoheh8;*h#!FzK%*7yhmC1?EoGn^TV*srgAaxh)*_kyJ4P5 zZKbT&-K1Tq7>1r#Md(?hrNh?qBB)3q> z(NMU0Om$3Yo0yB4fCE`+qTMwurmKyUWIALABp3ikFPJ_f9iSeFVC!|ls9uVmmkgTAoC<53J zJk-_J?Ro=kc>+M}q-|a-%=Y)_wIeti?hz4p23_G|e*<5aw1gHgZ+|Qt zSM6HOp*Ho=^H;KaV)OQ7-6i9;I5FFB#GyB-&Q=;gbz$`O54NNBzYa|BpXU-eEr|~0 z5;&6b?1xCWA`T5*OCZRfvRiV`dtW_!-84eIgYV@d`@nV&efT!QED>y;nP~p=NbY&C_Xx)CGdm7GHdN#cViAb!7=BF)hj7$I_H07E;JEU`2FzL zy-Q6j<+7&*3CI0b%%uB0bX!{-P|M|)+#N->O+Z$+AI5Bmw=~04<>Za~N;Q(L43~r% zeSON@X3m4raxrddmaj$7{vCq^JCx1VcfHrBl3TDrSOR(imC@T>*xxzlkS_JXBcm?3rR z-o#@fg}`JD*~|MYi=enhW7O6h_gi@IEIVU!ZZ$P=P)m&#@-KUdg-G!9NK~Otgg=4v zK*`Gs^_vI+n4Wk(+9eI2EdtSEkg;*hgFy~LwVVC zLzwc^2hr1YPbz9U3L^Tv*WMccP`bl9W^7rcs}FogZ&>9#J;y=n-^MGioU$Se9~z*j z>vXKrV>rA*=UG%&9^A=|vSk)5wL-SR$Bz2)+DAGNSP2GHe?Zq?;(;9l0mW%ahNh;n zp}LU1-r1zOn$Y+FXDO>sl;eErHuwbj$t7!Dbm2Uhy_jmaPg^r;V28usgBNO|KhR=ShBpXqK;|dGYo>~j`0!LcKOe;1Ls(Uny{^X=c6L9BJ)sl(YzwfITxAk5SDI9&N#>ZFVTlI$= z&q+u7P=dI#iAf7>!O8P?FlrV3BGQ?v2*PN?Y;^wdxs~5;1?u3~?k>z)q8wL(D7t3& z&cZo;K=3LPUSjkUcScgw3(#^KEBv(U`^f9sKKmxKnY#$&UqllcdgjTr(V}2Ts^}Q# ze%02@Ewor0#y*dDtp#BsO1{&Vnc<9cZg_Jdh*aejMGma?7&NBz2|+Cvp|K&zjpENp z%40-5&y7Y~uhRfRUkg6)u-3AxGAd^JyTBzk^9I{w)aU6~z#F?>rnUH!-aabtBr0@g zy@~8`L3CjWKkI;kjYcU;a@yGy)0aur3thtz1o&6CgBG{lyAB6ChZ)L8l~j4b6&<9m+L39ja&4l{DLABJ&b7C78UC$u&6xxSx>; zhFt@1qi^=_L<53p6ASr|GX;S0X3M{KTbyfpSv|#}uAwH_$8_G*B15V$kh(tkV^4Fa z3Ld;yJ%DN!vlfw-KpJppWh;uREUHcY^aBsn?gLLrn*C%6hV`ME9sG!Hn@5&!r?~QC zWKm>RFrQKSuE2UseikHIKN}}YR}sjjXD-y(y)nB!#Gqrk(MK$P=+J|E349&x8CU4T zf_&anYj#9q?xSlCyNp|AQPXRG9MLso8vCC`ZQGoUSyO#)!q?|eKREkfjSWsx9QubsStGv8=`4IK^3@X$N5ME>Jr)E;p%zDZ@CB5p? z7%z8g@m)`J3?{5_D>(!!|KdQz^Zwd;DIb#F0z`}dIDz3+@X!PnAO-O^U;h%$_+K;d z@5Yl|0)B&3_QF zH>Z%5{f6?t6v+aBXYe12c0cbjBfN*R`IwTc1WcU)dfE;7X>r_1ez&T4E15Zhh=}vg zasT&Jt<(|ld3DkJ(q9F?3P8Nw%ES?E6iC@m3}#9>1#BMD7#^=C{7nn-`S<<-S_S-N zaE88NEtzDI^_wUO;>>lxIh$a&jx9kRJ zjQ8eV`M{+NdtF2Uayk2(|A4#x{#}pV(eJ1nuDDn8IHDI8J&7>l!4@g?MG);l_Z2?u zfRE!1Z;B3atkXejdZcCRQ+4amx7N3XuM^?h_}Cg{cqN>WqP;V5poXFR4;kd?KTOl` z2C@tR7NaKlRkM7W=7s|nE)|8DJ0Ur(A$CnpOTr9F!RdIoMWr24haFkFA8gTuYoty> z*0(5AdRU76gBNOKqovAp8o-MInBz*hf9W1-X4QWII?)oLYLvjOM*S~iD4YF#IlNKL z^m!vdj3H(K$S5jB*$m;;ZrPN5gnuJM{|lb5&g}cUJOFOYKdg?wCE8yrwW0u^sk|Mt1ibbS04#(% zZxkr`fGSTv8+bbaTT!)sIj&5gx0Lml1A+@+X58ohf2&IKgQjn*$?;WjvcEy#g&DOQ zMI;Z&fFe4F4)Aq&5nqMq`xTs>E=C$t$CH!1B8u!4wE4h8%9|uZmmo}OhV5{cu*(^7 zkL`#t;WsK`%yf19@egQ@v9~HH(fN+wt)+Eplki?wxX8?xtY2edLT`Yi&nO-ykMH!E zv_l#^-Gh)JCp+*4Q<1`|_##P|sf?l|)&x~rh_#vQnPMWbA;~VH?R+_jnSHh^8ftBYRhWNFL#x1W@v`@aB7Zte)?|a3Z zjQ6ijGgvP6zrWb>)^AmshI*~dyeLV1(*bdUq$(EJDA*{e^sLONeLRkBQw;e+eL0G} zb4?TZs^EaCQ^sf`Y&BNwZG$w!8m&L>rug1>!bv#eKMN41 zW}b&12VE=(tmSM~tJYvhJhIvbyqeGJetTnPB9;FRdvph>jU1!(o^$Fah0GH_y$C%dTP5 zAf!rH^^f{uO{UKEPkZe+m&W^MQRFGvtI)^|qU`Rak#xzpDg-28kE4W3sBk*H+ZRsF z3*pTP-(`A7r}vYk8l~jHAP~?YDZP%3>DHaQX0E9C&CKn&u1~Fsab7wxX0-Gfzc_-| zW$OgZ!t_g4H4j;Zfu-Br9l!d+ao%H}L1HPFfR!kXCV74UA<+;s0pqKlh(z81&@<$^ zfgnZcU0+GgC=abOsg3N%#^^JVchv4U-~*hHah0;=GsdBgO0ksL zy9UeJ`|+8^$FuDgoD+CR5HCtTX-*iMpz=3HbEAD_l@$TlkMj%i&rde$c&cix`;Uk= zM5>t-Vq+nLZ0tJl1^^M1k&4F6U4~cd6uqYSo|K=0X0G$3_YT>(I?=&4U`Xz<5fv-$eygYo0yv;mgfm| z4YeiA)1|x#$mlK8Jpx1Vg*I@f(_BC{kJ>69Hw(HVZeA;UPJ#nFTPB50vC-*@78gaWEP9k!`>UI zU@@!i0f#ItQegly!PAzxz+~3?>!C+9ESs!%xk}i;iqK}2VBVm^M=1E}=Mu;BUa_@u z@mYGlU|5wbUj+>4dlXI0qMBcv^-S+inrLdUcKME z>~J!^8mAyX&c49Kj@tE-MEEPK(zQvNsv{#(`6g%i)yI0#;p^I#J;~TP;#MIcDENH* zbdKPsbfQnAk8$+my2rHsOT%?F*SCutaKTS8P;d7W$j?K6LFkV)t%z;D)^V+am-sV! zdujc>Ipjz~!@^jWr_>i15(d$TcdJ2fX*#u>!ou9ZOH%dT<3c;Tfz{wAXK0D3`>>?O zlV@F|1D}kAz7*)nyqrr{RJqN^YDgHKF8?l^b`U|cd{AvqGTfoZlm4{dJ3&g31-SoZ zyBn%t>ib2oXs;U*l`If-QuvkRyPAEh2=n6S7Kt9AN8V{HWqgnPBj;LLAF{e_*FT@9 zE+?9(WqXkj)|Y}?oaNnF=ouN9PA=^%dP-!ejeh=xI%CdOA-qzvU{611mu0Au)IVOlyB~`bNA@fx7~M z)lP3YJ7044ps%Hy--j6^O2JdC-Mc27NYK4td?2SCroDIkQ+_=AP)@p&sb;T+2QCJh zb0!@{>Lv5^)bVne8`aBc_nULM7a!PVOL+)NC`t*xYv51z9E@p@cQI)PMO;69w)cMY zRKG~>r%p)1ViK>A$-1zKYo%cklykBw;Yz)H5}z%K6<=}@AHfSz6gCJSA7p)z-R`KX zz-O0`tphfFik_je)gZ;`Syu&89DI6y_6L-vjxagI%Mc;29#exU-=$C%ZefP;H8y+( z_e%x0QJ^fd5Sdl;E#o*Y#8#ji6*Z{TWJ_l)Q$1T2tx)(u9UR{M_*{#3%C1Ifd7s5) zOgGnM4D1tAKI|ME#UnsAu{FNqPvG%7YGuKryG+2Hnpi{*Kjl&!@)_Yh+JqRV7vvP9^ zZHMRO7FEujoN9jI`mQNFtUGd;F$}gioawbHjlXOD#8f6e>9d*i`ZX1Ne(4OY%7}XecrJ3>}2R8%~nn7S&NqDDU?dUQKmu=blg!kwWlcY?M?p`l~a{|#7_4&1(-CMV+@>4gMeVHNK^L`9HcUkL( zeAVfith07-lmLi1O2Jv-%d$MwyBsmL$~1Y>v1^y`)5Ow*Dt*b*1la1Khqr;e7#nQH zOCG*@xGNGCv&@m{{jzL?zlq4a{Yb)6w~H8Yy%2L6(gkCaq2x*^m#U-9rUCfLf1Dno(c~Np;Q*K_NXIlyk9z-LW22TPBTS@PH4PyE*}yc z8|+*`2mpNox9F5R0fg}U`~;{+;qIDG<={&1Isn!4{x%B2{`F&{needno3a6~?7;b& zWu4ak8y9B~Ut_%n+Z!RaH5;lZ*% zT(tyISKo@}TH4!)@na+5UWBZE8CvnPWEyB_<@h|eX}R?IoVE>z{ll(!S}V{bHL%_V zxGYLY7q4B85wVNcR~gh~o=zEQ7M}W9=cfW?-O~e7%$=x>{Kus7EWRyOsA>X+mZwKe z_vrS+K17%f7(s|5I!9qrRm#{^sgFi!XWon{q=P;tZRgc(u0XhLl2nzUW=pHNlB%X( zzF}Pf9=h-tlo^?|^pz~|6vbsGDoLU?pvk5B6a$AF6687_X}MpJ!s}tWF7FZrA*)H` z8akaG(DS;~cUf@A7!p0b4%hEC0PC`cN6-iX9Uwp0Mkkz| zIN7D%L4N*NnaXnuS!;#`{v;*Ff(FOdjs0S|154ZJ3WH z;4Rn%eW(9A2`IHStr-f60?OYj|K(Zg7qR~X0jEzNWfBFLsWB2tYRUvvdD72A1DT7; z<%_-}{xNXbCAh<07UWHdtHDD90I!z;DE&W$#sRJPVF13e+N})U_z!~w09#6z1Ek8o z!T=oee`Esz`Rsp`xPKo2jO8RiI0hsEvwtYH>VJVG0IT+|4DlSmtqRCz{k4(-;ox7% zF1z9%N(qx0pw_(^2hf*cFDI1ojCcOk4e)S@0IA^oKT?66{xf~VL)6F;)atCdtU+_+>+DfdDfvd0&c#(L5%1=zAT+6o+8q?IR3eMVWZ! zmf^6|Qv(uTI7_Y;Q+z%1*`j%^xLIkP8hbJ!4o`C%PEHXbcu{=7wk0-<{iDkmJK>Kl z5)eg_LkNmDj|w-Nt0C`Fz0<_wV2a zKPJrjAHMQm(>Fa>8gNO=tLsx06Xe2^y~z#M(j%X#kd1UFtaG9AI?*A!Lx^O3i&eB5 zzN`B=zSe(>mx-1XQ%XXy2c&mL-htCES(Q)wgv$P=E}2uv?z= z3b8e`XdSwi2KwF^dzv?S)+@9!oW74;lcD~xCX3khoatWbnQLxkt5aKbt2>%~usKRj zipp*z~Lx8KSIi)J9I1o)ZXXh}n zkq?)zStDVM?wMSKn#%?2FRRd61)P|Lh}XYRIcp0jiJ}5@_|7W_9i`eaamAowkRX_$ zjpX8uj2?LYQ6?Dgo8-7}+6+DE>E_@Y!Pe+{yQOaJ4Pq(utnwE9h4Q`(c`8yVwxA={ zh-Ds4jt7ZW@AoIsj)@_z+;ndvF-inWerG1@2R}zqt&xS-{c!Kg%5K%os+>!rBj7qJ3X|`_F*y9~ z{LPUZ4D#CblCrCvfZJZgy^IOnrGI0J_s)YW;z|umZJ2xh18y$T)0Sy5&vfQtU3>=^B z(N_#$UZfxjiZgw5PPg$nqXu$!O0DfixSC8eYxEs&tk!!ED`@Hi6zYLhCFCWP@q`sEnndU@ z-pP$~m9xTvB@b0E-4R)rx+bj%AYpfWl?Ao)_wF=Uh+Tl1SCIS-&B11aF43SK!EK_K> zcz@7LX7P;q62N9p8o#`J*O<(gNGYxp(-#;Hf>O=- zFfscM)qf&{+w_&yMHtQ96(S-+EKK(cNs#=!(0-h;w8f~13F+4gnW~MJHFvCvW%hij z_!!|I+!_n*28>dWP#mJCAM53qqU2sInCTrbOcEo5CAAA)6jASpZwUqd)|ZRY*S(ZG z5xC9OkYq$P5GB;(Mi)S4$#;w@S4V~T{qAK0S8;p6=P;{Zat7IG!)CVcW9F|d8MFS9f})p6b9^qJu_*8frr zHpHBZRFt(`_h8MfDj#;qnP~E`XT75Z_>ha?`W2CVw!doTch~bWbH0^{BAduZM36w< zUw|0d#RW^(G%YaagI=Ap)`M-!M_aPuhK?8-VGUAfxS*LFJ-?t`!)NQkEQH3G`7;jl z%tWurP3p|Ub~SB}n8wZcm|LG$O+G7R!f~k{F`g$=Tg`0W(^?EX^$v+Wh%!w*!kh@? zwzj(f2YvSaSol4?1oIDw+Rud8-cU&@_D4HuojpP{w*b%Kky8Hv>gt?|_Qm6ft2Hyt zXVWFfD;F*oaCVx58X3IIsbpwd>8<`EkKZ&z$Hk7HADi5-#6Dq0*~4`fCfvB`60?~w zd-&@91=o~HLlHd%$CEkJPdvN_*ETy?$Au&sw4aQ3$ibYKyul(|3J-ZY&)o-F$xXmA z_rNXF`TzBkS|}s_UvnbU{n-)%Dl#XBc6TLq>&9xV z-uHU**al}6CElO?$K7wamb5g#_G_M{Eg+OnG>>#GYGye2>v13d*xkJU=UyFAU<)l8 zCjcHt8-hAZ-&1}~N8jx5ZEf|^a=*N3l_XO1kV0s-3qL9WOyp0;+YmpzjRnoFgXp!% z(Wx0->qW-h431CEvs(~b=U%&Zq%5j#mmJcz(tDouJS>wwx*)QlT5p%(ud;n0NWL-o zxeVHluq+Ju4CvJKhTnR=Jw%JIkg6XFs`~!@#hLCwxq#TNqloO~Gf!vu{3P(W$nB)Os0!cJ1Rj2wbvj^)k5Y=+_(_ zA0=O_bJKhum!MGQ@?opvG4L5b*16P$;rFo(Cd^a+Z0=b$w9SbdPn=(x=>&J`9KF{) zy1=p8-D~PuW5waE_ZeZFiX_}M6BtR3^{V^tPtDzNGyKkY zF*)WuHiUvW>@%p1I|lCR2;Q}Bp^N$Kit$O6^Rt?@{@Jf6jW?!5XkSh?m)nZJ$F4qO zB_b|4ncpZa@H6}T#;dEb zHJ?e#I4_Z|me=yZ_eWjy-yMcW7|og+nw76{TkE>IxQrCk-EpM#d-fhB>&ReHa=|jm z$c3MG!BwltB3s(Dt}ZV9m&mKI7nY5~6k9m~^(P*pA7K$`_jFDR_H@VE`seA6_qKrH zmv-yL0$zyES_URo23aIM)IpJWr?jt7^RD)inmb4qb5Z1s!(LwxnlBs{w5i*)R59P#d|8Whk?Eg zSzWi1^Be?UpzHnDb&8^I@n{t?{TV=FnOl zL_T+CndvSC1)jY2qzhBFS2(wuU3k|`pZk)C&;Ig|d{d}_s$Vf-(*YA{Mxx7$CE(OQ z{OX8(6ZPDSDeRTbr<|+kT8kDlEwC~9 z8GpAb9+hL0XJBb6F1o?z75z$H`vjG)`DW9)&A}+Y=UaSZ_9F=z0gL_uarZi2%Dn1LsC<~vFfu(x+mwRcBI4Z z`R_np6ewfJvbug#TpZJrL#nDATZL&`GBh#WfDAO}NZS?bUOkeQdMB^pU^bx*t*X>3 zmrW9wz*Hc+WD3#s@!k=g(TL^0M0Q;^j8XF{u{~7mkc&rxpc>07V7TpAe~RVPJz-|v z^RtCwuUptO3iZ&HFOXO*%c(LF8+yjlN+OeXrj@^o{3JcgLTPFL{zv)PFO_hw_{${+ ziwE{UpiV{+l?Fa|lmP5HyxS{fi_7p3Q9IU-n^7OjT%UR1)Li1eq4(~ajGf291N_rr zyL+E?ah~f0K|yr??fWBbt0mXkuJs9ML)C?F=0W7?@@WP0Z-h6+hgW$LwIQy%WkfzRV6V3XQ5^GJ*=g zIqUNcjgtO`q}>pCJT|sq`R9pTn_28>CiKRMSNjyzU?eDem*o0;$^%sDF`!qNZ5-%c zR35!4d5xz=ATBy*fP!dhJ{eEIAe2MC8nnYDegc72jdOZ%eZBDZC0XOzcu%6=0K3yT zNqPMx%1)gC`4_e&3vLVAyIXuI`dd=X1oXI?OS>z$^WP6Rz-=L_q{A;IP6jL^(O#TQ zeUr66AUli*L~{1TXXO#A+-N8Mef3f+hx4OZZmLJOzKc!90`!>ggnh>@rOr!h|01h? z?8z>tQmt*?1=h>4YG{6Y9gV(EmrL7F6z;t#{MD1!6>Sn9yIn$gcNlLTBUsyv$za(f zw%vhweizCXJ?eAGC~8ceLYX1a#Be9>P!X0kF_5OM*Aw~abw;!M9rGORYVJk@J$$OM zz9)TNty-hMm=)Wk@Wt>rY^jKN@yeE})TwhO3sLiSQ|zh@bV9*-KxE?Qw)e<)PRplW@#Co$G!4dA zd*IE4l8Z!sV&t;H|BtP+j*FuE-#&>-lry%)Vx4=FFMTxvuNo$Fy>P?^$F3$;SuyR$gEqjfQu9)oCOy1iHNRp7HTa|0_L5Kc9p;;%SRN? z>aQ~x|1=~>ix}CiDU*rVEocc-ua_0%qA;n1CItzsl5(WSqLW_7Yd8ek0c%Q<(ZGs& zjO)g})$r)-Pb3`7x11jz;FGC;l#yR{{%lb>T&{e-Tkwt>0hmAN#}XXYAR} zVB1m>*l1|1WD5cRw|WX6eYj1UFmPLhjln{LG;YyMe;IRF)(}<~i5EG2@EF$UO-BkW={I?nDV}2~+3`<`Mx4p&fxxxQagT7V7m0`=z z7Jn!F`MF zyIpwMuZhKoQK;UI_Ee=*a@Db$tI4cy*I+?T*i8?;*Fr1C{|^0bC5NNyWz!HuI(xW{ z@3xp|39)H8HhH#z@y>m_P>Jjp)9|2~eV@O+;*f((=yTCao4UA?q5o&5mX*uSh6yT4&=o)Z&;jj@%9 zwzMvu3(!l-34S`uIau>HraZUT89SLo@UohC^@0)Y_bDyx1aS|AbVA8GG3 zQ}=A@RW*mWi2EN?sE9NSwa9E@Z%Z$-!o~2Dm;QA^MR*=YlZDGnba><~gLVrKAw$cW zp6544;UZ@yM-Qcjw%(}ED=MmgF1)kas=8;LqL`Fr0PrbTdO`rpJoLFoS zo>iODfc~J?GJe7O>E5|ygFyeyovNe%zMUwu0LHabmX@F*u4CRK*KO{+be%5UHw-L4 z&(5NLR~=y!(6Kkn<2#>lY%;K}s7qU0*v}#DK@ByHsyoI7-`n>{LO${roX7ZRxOGm2 zrVb1YYlOQ|o9!4oUm{4TL?koM;ty^$#J3m0AND$Hn8G&O7F1|KZs+GV(QQ%By}wMn zH!C?n(2KqBShexxMzOXqtt)*eEFh28$6lavSdQAp+3D<{{@1$qee5wJ1Q)#r-wBSd z{yCr-t+J`Xih6rt(Cpx>qhl3?yZdRvLOOaYS98br-&6eOdHVOExdnjTHB_)2iOTfx zvSO$Ih(5I|Bu(Eg-CyS3BPduynf?Et5K?mN(};_0D}6LJRm7!vFTD<$osfyMv*F%F zpEKw3ft@6YKlCeBOv=tZAborPr~K7oUycHbxG;SPH4Sy}ewguY4(IMuZ#oPl^CIZ* z6}DILQLX~MfaU#!2It0W0`s2glLaoX2;09J?d_8&r8rWEocYoqXW;{{($5igefqUs zbtq*Cw~4q(KvO2AY7&AE=W=-dYb|go@83uAf1wVqQzW%ESVs}b&NA3@OqKB}+pXr_ zn^hg~p+JbFA%cVJDgyG-A&t4iLkiTOmw2sJ8H}W7nvBG^UE1FWeU%!MF_5An7oTed zJUOo<5_&&3sK=!Q+`)C%X6wk1#f)ANl_ziA>0z~DBJ8dHrhHo*ONV*vE6+r;&M^8m zx6cu)S%&&h<^v!GTu4=`qUupemuIA(&VVc;v@~|e`H_1`Rg=TEXV;UPT&5cQlXXd! zIWEk6vZZ5h!|VCH-d(>~F`EqM&(;A5?1xV80Ui1O5WxptoO)l>en;|Jya! zW4|+R`*9WDPoX&<|0;|_LkXb{=^W-R+O+uD8PAI$*noKQ?R+b`Y;gx6Z&BWw3DDDw z-8}TQ8_6J_4oi=>^Fp2(#1ZSkvZ*$uh>Ih?MuYE~Iw2io7UAipu}7sDK?%aC`2ndC zNC`gCcf(qPVuvH2n8IK3%QWtKHTZ+%-oKl?&Ovpb3tR&(s}wYUn|kY~yT|D)3|g-x ze>!?s_PE-sOB`z$4Tw`)NaR@IN>VXZ)6<<9QR^$WL9;@XI00)Np) z`MJBvI?fqHjB+hXG(h(#E;BB7W64+OE!w>dD&=nSB1vmEsusNE)7VV~SY zj?lc@pB+$qWGtk+GLQ!`NH;k+EW%k%v#Cy@pSD3 zZJ1Cq9)YwHhBSep%$bmYY0)nW?I5ECEonQ%l4jK~?_qG;BU7g`C*C!eV-}wV8N?)K zgTt?q(Ry2alslt6Uw?l)HLZoqRjZ{RGZOtL=)_SQQmgg4mE$-&D4|kL?v1IrHGkv9 zlGTQCRCvK$YT(Pp74TE*QochVhhFntCwbX7_HUmz1)=xg3foj1wzWioWcklj7ZVDs zCb5^Q*kLN|Fq-;|ioxLEVmgI`ny9DDOZ{iq0ssA$r;>OdhJ4L~nnV=TDIN6?Pxc8AUH4c|@U`B;Iy#CM^XT>}PT zrcAv)@}iA*cEm>1#8RWaldOda_g6U|VF%#OUORYzfky*3TL0jDN6bE|@srS$P)%Ci zapkAC1$XTE{8pWRWYTS)^)u>ZD zF4>6@`XAh_PPuB?V~<3(Dp5Awg$z07H>l6NohlITbILXU%CyXj{IPZ|=Hkt(mDc+G zjva%+`Wiie-iJ${(=~1+rmVc8{rVWsqMPx(wTvob9_0j>h)UnhmqRQuI?M)((81O<*OU!F=0UJKfW%Gq}4exJ}~KYw}lTwW1y& z6kIyC*)r00)xzm5vXwjK)6Eda^HdkVA5`11Q-b>b2G%w_lLwE&w?9fbf4ayU`nWFa zRkDmfxmo(2IAve{Yb8j~$feqmA?iV`A~}UC-`fw9KbpPGDoDGY?J>LVt_bGYpraA!Y?X|wE8H#BC~fGZJo`*Jt-Ed&FBaxazzCyt1pF}Hpg;iB7u;lXh}c!Xz1~I zr^2uFsC! zasPc?{q?4mThQfOZ0vhq$Pp<_a3=Ofli+abe2m8}DHB$(P>p?^CChm6;w8mE#buiv zMp&<4B&*0nc-Q{ycMmvqt8kGb^mr@bY%XX!V!|j^x@SVf>%kRFmT;P9vkYdVouYZL<~`b1b{czP)sdYwkxV=7q*a~4QNtM(ml5*j zDoDfXRQ!>ea?~{U8N|@OgVyGIkG3MYQh? zp9W6v!pmKnIYz0tHZuOw-Znzca$xk2pFCXGClbj}d({&5c+1(@=^q>_&&gT3=Xss% z_^T(#ACu+12CGdMS=!THvR%u|r}`*EFJGD!2AESxrUUTj9VI>w9KW0IO?#y|c+GIS z52$N}Oz8c)j>6g5d0Ert&1A0Kr@o|T-VL%s9kvU8Zrl5TluWW;^c(!Ha$D)xy13o- zFW{@v<~}o_106)|ac|r5eyr6%ahLJp=wskPdJ3RwQO2riTcprF-9o@WIQlk0BNXHY zoflS*Y-ycyR#-C(N%}HtvYdM|p3FB@K(rX^&IDj0<&a)%b(gtU214|BB z{5lV~x4TU?qi7hcDN$*b(4xF$*0gkC|APb)A+Yyc!4k^QeVSv4XcpUfUwHKoPP;qN zD%Y9i`<8AYJ(-xuJ&*VwJ^XTUrd2v4dDYWZ!Pz{V)r_5_0mLZrG}jWc3)5-x4Ek1X zT`BM+M-V*yQ;Gr~hewhYx<=rKi0``9IM?R5B1D1w%`ZK%cKO+a z*{=hZV+X#38&zs!Lnj7*GBhTr6~sna2Sd)0$3&^5%bXPQL0u}g(9u-XU9*^F zmkoQdGxlIAX!)_o~^qa1dvmv<66Sct}!n~wzrkvD%*;iLH zo??_a$-c>ehWWa4C3N0z z%l*t@p$WGn%O+l9jL^1I{2~|?Gd(aYkRQ@&;ce=K`dIE&M5)T{>Rb|df#?%IOM)EPm7$97++;&ss1_qQ)lt? z+xeauFA7)u%jXTM!H8@_OIu!+<;(-*hk8AxvDH`n#Wjj(oP{)KkJDRmEp4?9y8g5Z zOAM0-a5g0Lyx9=R;MI3u!7U&Itlx*kf`al!?K}MD% zUp916+wEswwXDiz$}-W{xXUNbyZPL80fE4_8V_$Q-*izUZh_-Fv3uce9|v0?ak_!b z1>R8JMKrS8n;0>puP*uB0ueECkp^)@B6z60x)zwCYeKH+#hT7p z^Jj|`;*wqFE~w^=r4-4+{{RTT#b_(EPOBpJ4pq1x*Bp4r&^<~yb8@zyuVUn<@W=3Y zhbwTs4Ns7F6SuB~g_*GB7~$@KGd_M8D?Hc-Ao9OarbHrE#hFt24L3`o>$0;WCJYsy zN9N49c()#I&YvGqmZ~NW8`IhJz(+ws4SE=s&jK{&ZxV#>%$c$LdOXlQ=n*;=1-sZf zOC&lgKbDCg%Wp6_f5cl_2uaVD;NtxH)Ar|9J%Fhj1LG1S_a1nEO2 ze_eFN8)04X%{kktKJRA);In7%@9J!uU6Oacs<0+>xK~>yWt5!igM7|vyXJYcCnij9 zFZvSJ%xDq52u5m+^*4KBOnG_0%6H2fq8tzHI~c_qsX9Vd-K9e|hJTDwLlsyQQF@+P z+jrdfsX%sKAJ%Zk)HnC#17_{0z8S|ikTof4#!M|HWLsOYmO_JieX6gzue*F%eQE8L ziXi1mPX%5kTmo2bAc2&X3YZ>`bOEOZs>i?oT*-kYOCoJNjsPKKHzaf)&a?+^pnSOw zv;5b^i;49nc5~mPkK8xaSS?xG8RIqC|>nLwXj(t%v zBtLGQLC2k+kk%_~h4oFWr4e0ui;mHAn>Efq)lv;Gs3?8`C?VVG`#uVQGYjRyh4CS@ zn~Mv|A^zh)-k;IjYGn>?Z2NVbfoz?x9ASh}S7DW{W(jWB$Y)H7dz)+Eeo_<{uy2yB zLe8aS!)T(a$0+~g<7`Y;_a{br%ImuvcdIvVn7C;tZjL{JtnA3+ss6y&Kvs-B6jCz$ zIP+_6V|PSDIldUvy%K0}UrO9OW)S(}lGaVZ_xZJtBs$9NmxKe2xUX#grmOn9^2S6C zqECJfn{&L=Gmh(-oAbSlN85Hl#C%9g3o(tNUnOvd*HFFN0fhyp(K-1KJOdv@e7(Zg zlclf_7v1}y(kVH5izyL~I3 zWGOe{wpYGO|75(G06@^^^I){D#BDx#k!#*g(xiPKuq{@Ha!u8cE*I zuJ|9qVwC8FTCRbg+)x%Q#BY1tb*}6>?nzrTs+m5W9t4YHS znP`r(ZsQaZb5oG8sl1LK!2gJ^K4A#SN3Xx0X+!<=mlGJ+=*GiY0P2ULKc zKU%}Wyw;w@!|}hRS^Zq|z93v(cm$y%ns+fm$MlvsGDw99`#PVgSbFR}yvJsg`KS1F z!zPfSD7N;b)BUoNF3o35;K$~#^K)0cycMS38Aa~<9k0hWMBRR^i~PVU1Pm@hq8PUQ z1Lk}G>CQ%0UPLVC+F8J*1xn?H z%E4Z+42XEz*jkFjpl8JRG6$;(gF%r3K@&t#SnP7u$;J7C^Cr95u2HagZOAg{Lv%mi z;cIkwDfoBeZwRLfT(tSM$zy|n zFWB}JojiSIJDn}}bD4N5b;sZ1+&kk3*Lm3JBHz{91&?;ejV@Q7S0+z}HAj-tcp49A z?p4hgHAYr3ige|JUV_~3 zR|VzCsZrD&1x^Z@q?Sc*WQ>zj$ubwInK!X%Ox)OoxaM4sdRdjztxOvkuQhm zxGw8s!RLc2!8d^n(~pJoL7*LWAxC}Gd zMt94c)8INo8hXF>AM0wfi1?qt0E59$#*0rbiEgf4^WnB{(zDAx zcDy869)CnTCeUJL*HwmBy)EufoAAVsj8G#oMdDWxXeYSKrLTnl@^VI(sHyIqAk^pA zsWT2*(DL9|Og4FO-GO6Cx3X+sq0ftgp_d8NIOy$xJZV6kTnm>@F(pg3c2%|Q?D`gW z?${pB`g+1!f32Bpo4HzX+DcUk``7=2qq|jn)sWSx@o8al=AMcq=Sec~phq)7itm`E zgo`BFy?sJ%z%LZ<1J>y5mU7oo-ocYpR{1)fW`=Yu!{;oR1us)BM`7h540{#LSJL_@l<8!C3#hr@V! zTi{2YuTUusjX zA$?p+RZyw*-w;N-eJ*WO6YqGGVUY0Q0No4}E z$L4qZMWY13@JZ}9zF6OauO3kDy@olh_}A9EKSDp*0hI4qF_i)Asm)Dn(Z+Reun@DD zq!llczzE6U5Y^3+4I`{?}-KV`H0F-It7}w)~rn9 zI@iWOOL;BbapU!k%Q`d=c|T}8Qt>^OAE{Te#H+5%C6dOX5Fr8Pl$ct!`^7yQ1s%Wo zIA86C%l8OgoL8&It(x=-&Ku&`eGegi*T(bg>}=D=E!Pa-9x1=xa-BB1=98L1tY7c> z4-NpdihB3Si_gTi80@nRIVucK*Q|Nw6a;LC&ATHzGlcOqpeRCg}BN z6co=om@6!yqcZoo`=7;@5xhADDz-wXmHmaMH1T`WcTMVKOmk|6knt5Dz+IcQV+M|u>+^o`o zvzn3<_4&k^F2nU1BvIm-{+OSz;ZFFus33@Je%sC&T(7YG7EnBT$XtySj=78%adQ#p z7XR=X{dgWDmNcQ!VCCr)w(fB8!oYk~>fYk`c;mVeHUc$taB0j1oPp)N#E zIX!Wk2`N>^8_F6z{B2!Kdg5N{I)eciO5*RjM)&t%M4z-Dh@pF$n7uEK3}4cx%~LWK zIhhEW%W=k2o?C5%R6Q6U*DtBv#>*toS1xVS`({O%F*ktCr~mo+nj9qA_v&?(4g;R5 zQ61O7)%)5oQpJzs+e-#}JVuuu(0rM1+RrWi8w-C- z4H&AXGCVA^FK8x>MZSeW%*l2d^Zx`cFCRYEW}Dg`OOdsz=c2ec+U)sFRhe8eaO&Oj z<_V7F8eh}ZXiV!paRzdS01p2bt2b{>2)wg!V{$WOUxRZS>}P-P%wDZE)#Va}MNaJ^ zAB}}Isq7Bw5%E$S^U-}@ISHL&n-cXI1P{zSwh6jwT`3EM)R$76J4~H!x4&-$zaK0iz}@_n&PF1B5OS3D%(nhDQFaF#4_k>q4J-p9 zW6ku%Kg!OZtd_PCu_oa8?99I^onc-R__1?si?{MVy`a~uNJ{tkk5MR42A#<$M5r}~ z(&?5Ab%Vh|aP5m6vx9eAfn=V`3uJvP@ zZbpp`ht_hY8DK_1oAR)i`zeclZytt-vjS*ohU{e5TfNtQFsR@G6x($Hc`@RrleQ9$ z;_8b@!#-sYsf*OXgcHEg8kMDWC+BDBIkJVD!zIPx5Typkie+sJc(tyL7Pi*Xm?xY+ zX(du1P6OJteB=i^&axMsP)>Zht(P}?nSn{#i8C!{ zSEWuqLW?J2az~vvWNfhCce_GVg8Tf+t;UR^RzA2?5jt(uQFy?X#|QpoJ)vV-$bwml zbZ}VNctFdLv!=UT%V%H~1AJY*-%PLX+zNenFZ!1Y!3Q~UgCc2Za$wYt6}N_#knvOs z;`mzWP~o7ZvIAv>Qpf3;l75=A8n}>@>>D+=FqFDZ2}1X6sv0a9L-rylUgLEvuw;zC zzQ>vI9nL<7y}76sth?mS6hGhhsiYZ%!Ohf1qr|)mXR7oxZ(hV54kz`PL*U?qy8nWp zPtZXfWCpD{)_LLtuC|{!-k?R|_}o7NI)r8m@SeB*&cV-Z!4SPdsB0yk$kXhc{n1-l zOSg4eM|b&=cREJ|>q~ygfd?lD7Q1}T%74T63&rn`>pShXldi{zkBH&4(@R~L*9=rO z+6|5auyN4qb?A+O+m-|^vB$W?9)sd^Z!_!^MXfnDtUDq18qqqw6kY=H;vYgZ;LPt5 z*BxwlawUYBtegFY37?E1vL*B;y!HjbDCU`Sp*1G1cw(%ZNE$oT9kAZus7ivZ8GaOFCO-Xo7&^u2`L+&5t&ixq36PAi4so=dkj} zqf3taHqVF162BfMc<5G4syVV))1xIptJmz2KEtSvh;qFVZD{$ksV_=Jo{eM?$Wv^^ zDhHxQP>yFP@{T@~ToLrkTpG4x$c*FKV%xb5fu z!NEs&W9P)=2UPE^c2(9VSn#D=kFRG!homVU-HV6YO;EGIMI2A-<+yh7Y-4jaj(; zV1u7Th`?k1pi#R-uff`HKnjuud!7&!&6vbc_IN>p`l}h^m?)a5PfQ@kRgcD&P+f9l z*H7NEkuF*$&RkG(53i+*bE+Tv)TclfqjL=U0pzI5n-?0~a$hWvjYK$IhV(V<*RxA+8`cPeXG zu4BuK8QP#dfxBG^XXNAu|6U}Q!moAkUfFKB>>CkL&wlM~PMw*Sy01(*M>rwV6b`V5nncIKlZ8-5`wV`zu%%1NIOtMm!IEiU#Rba#DKQn)d7556`6lp zqSCcxKAkrc(gyV+wpF*O9(IP;MczBDeo`lE>0y&rWTj|#m@@tPM|B`wL2!H=zxe6I zEG>{3?7m~+3|$~GB*H-|CPpT*i?GnAADWaeX~g01$6*S+CZ5?(hS;}sl}3++NVmVr zEfFxcXjPbT1n1RgchTMXeou8sO`twJJ~IH1AklwwvEP%(uJCNv6?@xjF4l}_-tbpv zABr`I=i4%DUSSc7F{5?v-0V^nDSa;&TsJxYaDuzOyFf}S+aA3YiuBFhnK7V$IW6bN zycHlGlw(#aW?&IBHVaw|5Uv{|_|xeY{Yz5P^N!peLy@!;P5S$2pd+Y_YjQ|!!}>zo zS(eH3>ORx20RH>p&)}c^EICr`3QDrt-zF0tZE^WbCP%1moz*;1R^OjoxU0ZcYEm1& zN%b86cLCbKbQLk*94VIr zAFi>jTXIu&`CGz}(_eNoQ{uLNB7LzDH@lvM>e!?n2Q<6=_uv7mg7TR>m!S#Rvz1&U zR+E_eQ`deHe}+JycbMhUqsj>I=Y&>H@`Nc(NUH%eG<<}>Wg=CSu($WZ-@D=7X=e5J zb_Ag|ewhff{y~zsJ9Oy9R;-IkGRfDYa8yz ze0i7bdtf=j6=uL988JeQjaIkpOg2E>hPy`d`u z!d6%;E1b|!AGNM;{i8<$pf2~8=5>DjK)pfAT^2~2IbSUw!M%5K&WVVGZJ(mNfLV#W z%DQmY>I)m&wb3Imy2baoBLj6C2ZGVApek99usS?<`T$_(a9VbFT`3zXM$j@}T?MDo zyKGqS3bIu+opTCfXK{gy<#mWr{VB=uF>BDMTjmelitg9j8s(RpNhZ{M?@SkU;CumH zJQo%HJy=Rz{rfyZ=j~*u6+qf#*C%bi`nT*UWCbk5{p@(JpV0P2_;i&=_3wxWHO8tf z^0w8-pNpWfe3&&a4;S2((Z+!#t&)&^wasw7yoxSayM}Qyu)FQpCy{Ziq#9wLqI7ZL zEihuEA<=k9{0ieV1*CKvn6jl5WSl|Fg7UHQzMBb*9P5EMWm2^H*du5&WWqWt*NiJz z=tZ83qJvjUm)t5#E7?w@B|c){-f@dyl2c2`aYBx?eckw`0dq3OF{B~%4_`hcGsK0_ z-xD7;>WDa3HLusT+D?!s(VTU9Z@&$DOMgcrwu7V8^1rCo`%( z*e0hBg7?Fa+HEt<+znmcQRtPKBg)*keb41+9r`bs)p|DkRzOBEJ{a+uh9Et}8I_Z{ zzPDM84reJ!KO-`!H*%#&TAtyN4oBO@_a#z}?)4qUSE(%A0t=SqmuBDklrZ*BYmgm-M)M!?(-oKICD@GU?CJJZrVk$LA)?-noDCGmnn!8#V@8Bj>ljTRgvE{`qVb^`7#d(sGJ|)J1xo3gf9W58clTzyQbGH zOGWn^Avwe#ofTf*$8dBn^=wKWfmKX5~T!7}U$ThZX5QcQU`z1Zi{mnT#ao15k*pL}j zC%d6pUL){J?$~Q*3iZhzPp812VRR+!4dn@tw^N(jYR%f}QId+J&L?XaUa6YEY;0<&fh2+9n{Z$v;;|IbaJzkCYl8d>6PH zTejGfEw(s!XX;Zp=A3|Zrw%9OC{WytFfkRIqyo`*Oyc3^ zpB=`hl>3(Mi{O-e9BA$86-yX3)v_$u9vmf`9gv_t(WUXM4T3m|{yZMNu+PJS0LnWx zryXj&h|IVm7|`Vt96BcHun}2I?@9(`$ZqC)+(U}Cf^Z#-yX@mqK?+TU?cM-u;dZdA z3!md@+%ebY!1jeQc4oFex_Wb!8m@gSb{jA)U#z0QD(UpByb4+ECu^s~#PReWFwj%c zzDiJc8d^DhXhTyhIfB4S+idJ8gHCpvJ^u97%-2#Bic~Kn=UvEESY}) z+s1>%qRI@CkT(w;+*_4m_TVBOlQ^j28=4kgyECs~d$Vm0O0lcc8sJ;CBOf98PPV`N z+&f-VeRNn(Rg*V%_>)HlC!E_ks*tr%YcQqg`GVLObJKXKrpwW1SVc3w=%X;mBWEK= zXN9kh%uvs@s4TlM_hZ*uU@jbGQnS3gqI7U?bRhBabx1vJ1hS(XrKYUrn%laT+d1U4 ze7?LX*n~KAPl9T^;VYMFKWHPw9XA1>0{xWRtdG6*8nqm0=yv1*?)9yD074T##~t(^ zer&Hovg}?G9Ii7%sl=>rBk&m;I;bplen8`~z5(E%(`)bCv7og26+jZ)aiP5$xc_i9 zKmj=U=~a;>_ahru7mB^GF9jeurX*C3g`x1|rvw2rqJYEJt@Js^P4X8Wa)qw+k4anb z2>nkbA%PMO>rH>CUbsbcF_*y0jDu_Ap*mJiC(jqfx2l6mNLYvc2M(!7muie5^SX91 zgQ_FSpHGR^)=W8>J)b;0?_h>1bsVx!dbz9^nOtJDnK{|Fut|enYIZEWr34uapt$nI2@vAl9s?o@DfRbi|8`F5w|%kLn*o%o~)Fg%c!S(n7NB74m*b zbC9v~$~g-?BpD8cTElG>wQh9K9119(qqRHBf-pfQ`k4&IfDX@^7M=+u`{2U;`lME3 zH+0$ki9^f1J&w8ZJvc@heYOWE_0R>`3=$nu3V-Sm$&E6r+dKf5zEO*CWceL7x^V#$ z=pZl6iysjFq~DFEgz^uq5Z6&0!VTx`Nw$Q{HIt{f{oCYhvtSA724GyJl}|KdY4kO` z^lN7&&X2105<{s7jQKD57G_-vBNxK=)in&TV)R7Y{lGu`xWZ#CU)EnC@4Q$_r`wxM zzV>KRh#nD#Hh*tlw^NfG*;!`3Ke6u!Y9c5kbknh=<5~y;l^4;cFGFUQO?vQcMwHTG z8%tOdWT296xaZ>O;y49Jd@c)$_9Ev;0l{edxBQ6e<(Q;Yy&ivMHEcX$hrI#K-a_!M zZVd2UM_x{u@zzQyHpV^ z-Y+x(?-q3I06Gs(dnmH(oa3dm#mG$@$sYj12Ap$uspnT87$GMsA{5=EAawM!aWYJz& zL>lGzf*qk*^+d6U8>^VqkDkq>$l!del`LhEHYy{qdhtM6y+4<7ky-y+&welE-r%Jq zQE!)1Z5<+<`Wo^u|7|pHz@wn4sniAHlrkLqHeVqb))sD>kwNWgOE`E#Vaui%sZ!y5 zKQGr=&+RmTFck>IIimMGRvJd)z-nJdoax8XB{DWF%48wvf}O@QrGOP-s0Cp**WJ3nxVlGvWLI?`cj@_Q8d_Jgb+G#tepw-F>^clv*eN370^_}}1 zNnRf?`}~q7d5QFeK9gSfJZsi%pg=1VZa)q}Q3jc`;j`Vjn$`EMC0cZZA&J&c>FHfJ zlC$NJNpy3kZwG?c$g&Qi0xBOoS^TCS&{sY~wb#3+(&L0E#ujfz z%9aD#WfY>$s}W9(Uy+{My}QCm4ApM(GLhx^Ky=8OFBQr)b_7Hw8I4zO;!(GgQRq|f zaY}Hgv?#5D;D?R{>obq0O zU#ykkX(L?Zs!&G^|H(&4&Nf`~7@Ug@f_K;Wax8oaRa+gp`L39J4P(%{GlTlyNywq3 zERrJSU1Soc0HolPZTt9qeU~^uaE!BU3r#Z*iec8iCI|-a0HY;Y3Ukx5hAP}sKg~=l z8$iVP=1W}ht$z4YeAnIMNnPnFg5|){h7p@)9G6Iq+WHmev;~^`4(laO8T9^ffH1AK zIwK1H;&(l3A{T2>%KFa5(fDjQCW-4kkrSspd^-}6!+=t0^q+)n zJnDv-M5)t;v6`T}TJ$y^o*i(?kJ!)M(8j3$TEW<1<>JGgrj8^ahPhd=Cq2%s`0Rc? z;SXcryZL&~>M?-6YbPkJj@qOe8(T6-UxKn|@@_Hp$64R0&z_jLp^EGY0UUmRJ(*qE zr(#+3iao9OLhiT>uVGTQP@Lg7ghy%anIy0O5Gq&_v$J*J+CclOu^$hR;7i(CH>NP z)40pu?+8`h-@g))E0vVtOU;RKi^4+yivXrhnO?d%8yY4SlY)Qop>G^ zf*@*a8)?)=G3ioO{t^db1OY?jSohq2%$;|oRc?J~6nCYh{`Gg>S~zd5b)=8Uu{){a zl9Jz*{&)7|wh?w2yYTP0MM?_)-^mqh3zb_t+HFhK+m`=2+y1lWb~W}l$W?D=V4h;f zKB1vlLo62JP%kSHx8yoa-CE?(`9_7KT`FmnLt zRS;oqz<}(Ylv%-HX@gEt5|#blUHi2&J78oBOYfpC@QjI6W}^_pW8acnhw(+89aGzFy+CNFp<@}}2s4wDV1*{2V>(_bvM>cSEAuKJx& z*sC1JoUoy%W+0rmHM~y-0iE+rk9X2R-=3qU&GIu5!$8=qb?y&23Z_-ZV5Y`IzHe&` z`2`GSPJUE1v0A-s2HZb+vwO3yoy3jDUeb=!;;SrMN0@m>*vaJ0gDebwbNwa@V z8n4Y7ahgVTzG+^)z|;NAMZ1=*+nee7(9vX<3w>#1ON`@_xbL@adQCXmmV?sgIvDAab1KeHD2Ie+ z?e(rukMG8fMf=QoH}4xpq84?nio+{rwZ&LWnSZS2N28e@(5%f#&_8&ntJLNIIp*}B zqOhSnRr4{Zm17<~+n5}a<&BZ!UVM&uAi9|UD}&|2B#GoHw>G$$fycT^I8I!SqiFk1 z@>4ts=A`>)9`)B~#bC+)sh7hQY%%om|lZ0Y#}oIIzv5INkYDW}RM_E|Ow z`uhM~b`c;P1RvYSnY51-~g(jk6LSIu- zt6y(o-ONQ9=jfTxPliIW#>mCysET$D?AZ3aG(@zJ*ITs%Ch75Ape{+s$5jN<^kRx! zb3|*h2DSz>&npU=9_YdA`ZwpUtgtW{k!PKp^fNu%B8fRcn@Vhl)vPuBXY4REv20ab zXdax3IjY?u_r8wAs68@Pf@M#{S3zykV zUgN1%p~qKOUhh(nWaEQX#!ukvMM6q@sL2~~La~!Y3A|nmg_z`z-##7^qcL5q?B*_zM+`*xt!X4urS;R?C3&_!KAJkYp^`WSNrPb3sCxny7|SF2C!?vQ zZM)@753mTy^F^Q_ss}Wmk^}8d30vlT+EK9bJuKkHRSF)Beme7G#@J<`GE>-9 zzP|A{3JQV3QLyZUP|6`m&R(x)1b|0Y!j{6cW7!Dx1QG1%mHa)u#9jZ9eV#|Ztx9#e zjO$I1Y%?8PTi-^&YP@TS?e``cJs27V7N{Oi@0=12Zx_^Rk7)I_-=AXn+#Ayz*qm7t zo7IGWs>4Hg!^uJk=y7eV^oz6Q#qy?nJ`qS=shx6Iym5q#DX6y;gPH41T-;}jbhXxg z=Hx}y?#>Z8z7u{;87(R5d5Q6sK`FhNO9Hp*J1O5(8!BSAnH$&s#i4e;w<4 z0-IYo4{H&78$k0*P60yKaCW`KfzK=Atp1qtR?tw(T(p7)q))qL2Y2bsY?doM`c+ZB z89jN6+JV$cLj$taosp3QJj^8$K5L93^;0jp8CHlW6}W`UYHx$RA~k)KYNg`e)yd+n z3CxNApW?1P9?I?A&u;H7yOKRyrE=Y4%bg^KC>1s;q+D`qDov8RNeH7jX$+ZA2*n=P zh8b;_VdTXn;fe2~e6(o(Xbm7S6qQ=hCq# z=cC@N2A6kFTIQ}bH+5h4tP|_*anH)hOv|HXX62s7>mPePsBxYmbM;bB%hdiH?R_&t z6iafg$x~Wbwt#Qpn^G)#*l3^O6D7IQ^qxNs>fNy49Z+_t$@qwr6nR4^ZgZ=t*XNt* zuH3AsFs5%Ky*VLxEki8WfzDH4@8IOu4j!9Jx$>y3Q*2!ev03f@_DZo;S5%^0%AZoZ zOxzPIXh(t+l82pfYLVu`Vliz(nK8!Q<;Pna>;s?XVe{Ty?`}0P_Y9A-z35EMh^(1g zH%PD_EIy~+S&y1?yY6iL$iYl-Zk1v&b4NhEp3fF9bK^Hge>&QNC}vVjK}y-$Xx!Q@ zb0IVRB_l+cTP8w151WrSsBauSf1hn+U+rSoR(+_1G2&ms$-&uOVmzSd1na5mhZ(vw zJJr6=t%?z7m|tn>A| zT`xyZ#U=4-!tM;6m%kGK*Q05a_>JCQYrIu9r`Nd`>l~_zZNR6|Z~ZKHI~m(pRZU) zBsS3cXR;Rc*RKN-SAN7`c6|_eZ5HbAdfycnT3=2^KCPCJ%VZmLS((=i@1&fbD9_S& zy|m9TriSgCmv3F=$!s$-wnIzDKAvC~I~wX=2|4tICciT$JB~`VuGMK!i7^(nA1b*Q zV?6$Qc3vGYUSUi3|JKO;N&jF721AC8T*%m!2jL<3MlT2qv!059(@@+A5KiQ~mq;** zzgq27HzUFbDDy1{~%f4dVnjss+rB4^Yhc6+vhO1iJv7mQe^4`~uDd z4+NLM&;t}R2az%OWN7pnSrQHC0lpm%CrS z8|ednCxT83L4r7t;l6-*O3H#lRHy@xzJQ1jwL^#p=D^oENTe?NgZU-?(L=mkC(KA5 z0HzfYptgb5e?O9-tW>xjc%b~ZGGx=B`Y`ZagrG6shLS80hc5)A6QluD8u$qlAaWp0 zmc0rMmcPjb7ejI&amf(STNz7$7bLzcS)NpgCi%e>wnK@Dsw7pke>M=>SPgmR)Y&vIrQ=dQ!vzq`Ge+L}>QJ9GevN@H;)|&8%)F#YB)a&Sm^&zu;fR&^g`1MB9<`_b$Zg8gcPYJKJsBsRL3m2iWL` z2Nu&BxfM}ZA7S-^S1m&w9YX3t+6^N!UBv{3=-C;fh#f)k@(0h{up#dmKO4)J&6^!M z!q43l02jH6Kh+SF+X4O|S#(+W+UFSs{8ksGuLZy50886M=|PjB*oIRYZ6#&mPF%(f zvsdN8B+astV5eGvOa^tkyDF~pV@b~~qj&yCRraxW4I6nVPdEN*7{jq48s0yDqVb&0 z{`8`*PsQuOcIo&24_6t9>pk|+^K9u2+!6M9(WZUV z!7XoO5`9l~zbyZcqnn~SCRjgws1)4q=41Q3y^1Z=XS!Vj?^k3MWE4@FY)5smIUwVh zFx*vxl1_en&m-%-9r01Y3lnAYV@EzzHIG%tg~aTani% z#iLbo+*~bvthJRarCDPwn7^Jpi@&Wor7U*IER45)!L#!+vnO;gSt$qIh#zm$^8^>z z+{vAZSEp}^)DA4`OhvQvc1`>g5$WrAv$|n%F>)eVt=>_-f-_!J7hL$p{p3z`{8{Uq z!5?gV!I3Vtxiow z^5t6=Mbb-5i{(@9&p1_jx>M(IJDxdE&>!11ddbV`$O-q+B$K1jPT_u(-FSfE zR^`pA_6o{(cI97gv_8HjKk;Nh79qaqSyGbij}F*MbgOG1ZdG;3wS<-@jyWtl)gwM4 zIWAn~@{YkUjlg^@l!wF3AQ?ts@u-A`oYRQ%mm2h>gw9>mQbDgj8Fr*@4MOL z$Nqjl^cO~nyuJ9jEL7p~#1pZ&N74lqafvql&XI?WM`s3Ov>e6+C4O0($ldn*h30EF zA>CGwX|LqL-L;x`S=HM)DOmNXGwzS)oSz$7**uK6J|8a~BJ;|qBRjInv){eeP{k^i zdWEaUpj>U*bxPvwtf@rz?y|%lLK?Z%6Tc_ADNNYtY13#C!=qMN()AXqT?(8p?(Vra zdHt^EYl4wup-t}5I8%Rlshu=Ek;J#X0$$28Nx{(iJ% z+=&MrTl^hQRB)cwr+4;cCD&u47ALi7hun!aY^0= z+rXtan{fzv+ zDG+)w@|n_Rbe;Y0qKv5hBk6NuW6$~;Z&hz}T35q*)Ui+=ISm}($pN%X`Jsf4Dvy9s zE*YaD^bvNnez$e-^zKDbfu7}df<%p(-0;D-?VtDKy;a!w#GqP$L}!JFMFE9D zu?0&gw^>~^;M$xUD{T1d@|6I~$rrN=ym;=>y8R#emQV{{DlPKb?j-VB0M)jn>BB*n z{qs7@f|pQUSgzm#0PTSE0t5{vB1W2?&EE}{B^g`M8czaijC6K4B_h!1ddDUF2( z6rw8jlmevBka*mEDY=z&D=Nlob$kpF0xE` zf?HBoG0?|}sGDz@A0>DoJXl_}#m|~3eY(OIc^6p4T}K1P!z+(xe+o}Z;mLstbw66n zj}`>;3*#7LSc!QRvBgs!Y~}5~e!kV?x)DXhLPgFfLwoM|5(-qfR&yaI>MKk*MgW9k zy^~*AIL3nJ!kwtED!SZw(Q=Q?W0Ye5jQK`2N@>YhpU~F~T<#L;JGw~<>m*FK)^%gw zsFn6y*%FFj?>$oq2n!c2Ds5&6v(}=EXM z-Q%R|{Z~WP5YM|WzIZMxFvv`%%|DsfTCKY+Wm=x+WW(-qC5(qJp^j&(%G6NE~Z zCI?cKSM7L%Sfx{75T&=c*6UMf%CTb&7B!Ey*!_7X*vrgZ#g8YrW>SC6S8rhygIF?C z*^o2rl!2EfN56SkP??n#Uv|Da!arRqSX1Gubu+jNerCS5Bd5x`yK`@fQ%7SZokUj2 zoP=#iU;)3fFi3@?W}>&~Z}l=$+@wr4e9^0A>`40kiXwW=0LSWhWl-lWnbB4Lx~Rq;lD)N@IiE^@n%G z&pN+7<2A5$5SOS}NS99k#YplKx<5ZK-}tvXV}x`WeE+Ahp_5d>Hy6V%;u`kkMbER< zI_-U?09ZEnr^vcD$ZG%iGI%m0_Iz|CK}0ICdNDIJmFN>9sW^~m+$p9=3AozUdD&<9 zp}s_Jk(z0nhD~~aS&HH%^_zAm9ir8`;R>u)HK8 z3kecZ{rgC%NJ#|00ty%@0i^LAxS%2l{(^&`EqKYo@K>efr3t1153nv#G0QxlOvtK7 zurUnDHa4N1A(Pwk7ryC@1SI_*ndt@xR}RqrZDu-P1fYPy@(~-{E*LN)*cfTF!I}#s zW(X!bgs&Y4ErGQi5*OC|^3wnR*$n^^@;eG{*S~ZF?7RrwV_?+|;T}GA`iF3`a3ESp zxyz^tf%+Cu7ycLFWRYN*h=&2@jhsyyELVi6a0OC<+7WjHg2SMuAawwD67Vg2OCx8b z$Z;stBj62yQs7vWm`!571o9!E7IZ=?A1?muH26EHMX)X?3xGJZVvxxslKir+NMNT1 zLm8Z)E-xm~974u1oP&W%u7kffBSD)nJh)fE~80`U7*4mcPj!90Q6 O3_U<201Mrv_WuM{&RMbm diff --git a/og/blog--02BlossomMwpmExact.jpg b/og/blog--02BlossomMwpmExact.jpg deleted file mode 100644 index 36d86f2687540f6d66edde3c8368438c577c3cee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58616 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.H7k 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 LBgpBD|8D{Sv)e@m diff --git a/og/blog--04FastUnionFind.jpg b/og/blog--04FastUnionFind.jpg deleted file mode 100644 index 5fa106399b5a9d288ad05ecd62326b08b93924be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58105 zcmb@u1z1$=_cl6|AWA6%DqR9YDBaBvB2qIn_|jd{B?9@9 z$KF3s2R4^%5J>b01j38`Pn&rP2vijc0^P&>r;Rle1R{F_0#)|^r|mzOxSG8%`*S*c z;1k!{8U#AX1A#~kK%lz=AP}+9pFZH@|8Q-LKo>1=T`s`O2IL5`0x^PALCzox5HC>T z2R#PyfrPK8KnfsyJUr|_U?U*FCm_5!|Uie?| zaF{{36gYSkIM+WwbXcz85MY`3uMG#6;07VlO?*6{+malFgNF~oUOO2vF~Kc-JRA@% z9zMYh3c@=~M0fe*D4Dg)_}yNA1>X}9mDh&9@bHX#pH(`1lZr(^P*~TztejfN-77dg z;q$j4R)u$i^Y_`II(i{*vMcuX*{s7pg|@T;-|_(GpY30l0FdC%w*Y;76u>v);NjsA z5a9w}j@@u5aPgS<@bAdorR3K#%K|gYySG?U$@AyjDYyC>PV zJyH!G#+rQ^>V9H(LmZm;eu$?O>XFR>obLvN`~46Xm`WwY3XQ0bLHz;azi;smJg7fd z5g{|N-M~!)djOGt>R6cmcc^9}5VzQH(V1vw=1@%t1#s_RN=B$woaSrIS70JA(JMFw zOcRX{r-b~2Rpe_J5jhMhKZFCINDgC!!@xucNER*xiH1<%L$wIB$Z^rxC<2e-IP#%d zbx6K-99WS;6RfDt_1ObOoNZ^qjCz?Ua>sH- zQ{_<#3LKaszM`z6B5*}Og@T*{3{V1CG&4FAP9e_-gCN1c@tVL%5GVu!XoST=C^WHj%x4DR z0${sy2O2Aj#!^3%5l%jo$w-V2t_4nD2ba}*^2hq_41$Mh1qBflixeCRE`tN)8T-Q*fCYvL zwXeSh-Q<`G_^@qgKRwdSS7duYtV$vuPbDH3Nkad#qS`LGP3WMew4z$SP1qD?%pMf>q7hP3JBu*;dA6nZp z?emM9%e?<~4YHlP7*i5AD;kxTIf=RkHMpRi?+i;-4qwdYx)$D0I#6I*LAW^E@qp;9 zpUkLsjJ84@p0B)b0TZqMllRQGw;9B%=At_*b&rhKO^ z@7Qg+d{CvmR_wuEFRles^W7ztz4fM!a!7~%cEuJc{deK2FbCxDJOw6Cgi03%qgG|r zEPutkY~~OWV^Wv0%~(#ANEe;u)HP03_fCD#sLdt3Kv`P=(e-e_h<{ObBIpgmF5T&v zN6gubjsk|SsEEZD*aH?OM?wDImWH)bEHPo&JusLYtOZlm zM8Af~at8x8m8F?!Kmd4XMJV9Nvu*-h;SNSYvQhC_FsK%sm_VKt1qb{dKr<9~FftTM zi~=jcAenFiS-`R1V$6gwX2Ee$9cW}GuUa!|I%A?7Z5ar5;{`cC)AJAEAS3 zJZHWeh8Zhx_S~R4bU2kO)+BoP?67uulH}BA548Ou;9KvYg&zrC5d+HTN|Xr*2HyrjV%y_t?3{3|X+m zx@fq3KA~e8`(3Ajt0!Ta zgXkk(gIF}ew1-DjEMFJexRpQbTNQnF4GIWq zI$w-thsy~O6tz7`npXKZa{oh@MzMDfnHIb6>>)|qp67z>)X9BWX;b>qf_>d>Wg~D+ zta7iQW2|(Z#WWyZSDHpspjYQT#|p2oikmGHk?yc&H3G~uRY#P zYMJ|4*&e(She<*NH8Nyd&ugp&u8IuIDciVr9@mY_boW-2c%`;&!(kI8c2oId^WiXUWUOg|X>y%(NrCMMo}vz#aC?tIVlLG^}3UQwj7H&{m1jWU3*cR4Cv zIc!NI>Ze$-Q`rk5X?%M4o~i3)1Z}X`uJEm*%A0f@om{p{p~YTRnZ^S*2c)RoM0?}i z9)5FZp?THf9xsNPw*O6xfiyFf9=JP;yg03!Y>M+Nd0P{Hx8%JbrNJhzmi9?;YDz+7 z+mO3dj$%0iW0JYkD9z;ZTtVZ>qW@*3`?_C|iC>q$Is2-}g)kW1>()4089y!uH-XKU zl5q1TECs0J7s+3PLM?p?ECP4h-KvxyH3zCoB#$%v#p>{KdD5|j(c4BEyhs)4OvKXZ zGWY;ld(uX~5<8Ye-*A&)zG$`?^b3QTmfohlcrPMBMrldy__8vs_l_Ue(@3xOf?S-^ zqO{ZC8^~v2=>n7K@T4K4jiaw`M~A=fU7loo6cz7AEQzsdcUza5@MO@n75rqeUb|D&U1}_bq@gi&TuXbkqW|;TorKKTc6zTnWW2Q` zyd7>d$jQL)*Av33E_Ej&1vv{~IDOQux@L3#7_`2jc)1TKH!(3$zo)0ST~er|q$Dq0 zbdkb99XdB|qq#GtmKIzxurs#N9r&Ch$W8B7b`a;DWHD$ndz8mmrfaucsd6&PWRv5l zR7i?8#-fq=ModSIQOL;XwAaEf@L7U_v-ymQy_Lhf1r3*ltHV9RW*pjn{9hY51U4DR zDLq!*4lM0liIqtY7 zW#wlMDpGO`%&W5;snWcz{Bu9T2Nl%g440jx9Oj+hM6FW9ZL>IAgq?JkNp0$e@HhNy zNZ>On3a%R1{LMM&-7w60^z?Ac?q>|sQU#qb-}{qiqt3pbHGTJv7f2bcap3n7E{n$!iLIReaFYzFW8DH{$dnD^3 zAf~_lN~m|#WBbL}P&-jOxAlU_xl=#|JGTJx<4aoS@ojx!t-u^7rvjS#@xkiEO1~%f zts>(FUagczM;z9hO;SnW+0^UvR<65U2HWzQDIor%jvap>)Iy*BQ#9nw^}Z{7v>h$8tp&3CEYqza9vPy2KSZZl~3?Q@fOs;qRON{ z4A9UpdP>RS^`qt(6ll#n?P%uZUs>%H+neveTpnn zi&J9nSy{-kCPrH{;mWRmA$`lD=Ir|64fvx*>Z0bw8{q=FqO7BYLlLuvn*%hUG+b3y zkYqq&Ajz|}wyMOOf}yRCySA$ti%B%hTS{D$jjbuOtI;j#I@4QU&emb2 zgGrta;bNqOTSP;fznw%s6{7M;SI9e7+jdXOBr9|I$cN>~0r5E;zKHEQQS%p)) z@cvgQh7BKpZ~+?}VE2j%!1G=4?;rq(3}DO<=D!0@Y+wKZLy2C)wc)tK`7xc;B^zM zWr-lrf@=ez0}wN6qKQ!`Ma@6KJQxHXf}kG&VL&7>i{l6ZgSDX8Xp+)^Tg!|Ru1Eoe zX&WjkYC@5nin<&KY?uJyfNRN>X;Jtx7-Ody*x<(jc90lrxIlDBU|XR5`nRr?S@jy5 z_oQUpuFUTX-JBLPDXYdK<=eN1v!azp4vs=I6RWG&u0e!(Nn*8|9g;)@P8$Ydrh2NPZpez71KaS+slcyX*5f zhnv131meqhSEt2v?4WN!gM>yZ#PhN?hy+D#FyC=a9M9Seerl5y^dH}apktVLx;2Jaa1cvTDK+`F4f&U zp4;<)bOP@Iz74doL_;qJv0nTpv}LHPz^3&=z_jksgUc)Ly=zbqPlg6X-T9MSQmkJD z5=vEBAPRnc!@1?ExHjza0plHS)LKiN` z-0(m=J>BhH@5q`T#yxc8^m4wZI?sk?`)qv5q>C#whbhY}KCXiD&EOcwL-wNw;mh9B z-HxJOjD2GaecRqk`eB%GHoE&s`>0sn&$xRQB3ryiGbN156^?$+Lzn8gpC}iZ?%-sy z#>Z1jlEu6$Y4a2gI>#bx(!)buypu7xCV>|Oy3!`(9M`xzY}(ftSs`fg z#BF%xr3_&V9eo~8fcseSM5DCO;oO;*OSG79P|Vch#QBFSEU9nX3IfP< zT4!6wqM7DSL*f+VcpbZQvOc>{Jw35@522NERQcaZI=u1Ma$5ll=Qy}v$EesD7QbucR;;he?a0!QlRvz+H7YRM^=^+D{a zLmRduR?!l^hnGRlz6)&<&)cG@%C)T7z! z|Jr);IJGj5Df%l-*^vBdZE@Mh(mvM%5?{MzJj=RfJGU#QAKV{s(^X41TcJ0T3gfDt zMXh31M5*5GGC8Dp(|j$QeKoanGD#=9pEo?*)?vUt_X4MPpFVw=T~AqTx9{Nh4|h)0kF%KJw~h{PJO;)`m6ZkZax9A-`5Wqs{c$9VSvul!K2MT93UrbbxCU{O z^>ozsR7uSt#ON;WS6X=AiV3u;q)Ih>xgdOEDOm3JEvr2z<}Fur`X`HMEorm$vB7T1 z@`JZ0)>qNct%?L~3rS5R@gxnUh@Z_s#f~^hY)!HC6@Q=BuB)LQ`6*NKggaLh87D<#`kaIJ@yo+Dd*RBlr9nP+QE2A50|9^ujZzoc#`W;=Y1X-?F0aC&GGM1E+$71(sJAvg44pH?K;~^ilR=**IVJ9p>OG99 z{T$S>GYM}!p&4zgfv1My+EpL5I$rsFzvg)p(-(9CxK|^s`oXJBt$D2ZUGNmX%Zc2aZ>7E58I!E=f$rYB{|t8g;+ zQa!%FT`nowI9`?<+f`N_?$?-!)N|}@Z$G+9`}&=0_qeaCB)^SLf2y0ym|4&*sXIp# zuN)*}(e#KQ-&Nz}Fs&u1a-V-rM=wJB{ei0YX9}tKtpMDWkYZDFlVi3VMc#Vzdiy@t z50YLH;KMMtagw|1ACq^y+}AtULdw@By1uk)H>udx&U7Ih2DiP; zdRfo==>ue|JyqW^ir+K`%`Z)K4T_Abd;1%-;hWkn=Bc?uJ9zpEv3SC1YaiiDYmg_bwCm@t!ql>OE1gbB zv`w_fCplyM=Vrm+YNEmNU21{I_H}xb@U4=+Y8SpPS6v*@sn@oXP_q^nBHHK;ec$3V zyCh^yT`Y$aaHb`?-bLt-COubLLdEOqgo9Q~_uD&WGAegwXB((VS0o*K59{12XCLtf zHeep*1wT}r6!a3Sk>x#D^Ybvwz_;bF-x=Nc{k!|^a~d+9+Zni!;Fqlj)Hp?9=bt?1 zG)Q>XH!WtO(<$7VBwnl*46jb57k~QkwCCA4U)5-L!~4hFA80#Ek|bIy%cd016`oF@ z7x~2PB-+x#>heiQSYFbXZ7eTdy0~64Yixt3Z`;oswMe85^DR80;7O|aAbf{7HA-NAc)lujfJzxXUU@EmL(OFC72S>GVTL%2wYAxJBvcTgIm6XnL`mPeE`B4&}?A&8meiD zMrQvBYS2jR>y4acDU7iLI1;9b(hrSCp@EO#ai#;xP&J zY~B$ayK*f>D2^f!y1>nm97skEG*S?O>-3QVUKA(}I&bCTLN|9sR(HIQURa z>S3Cr&xhQ}+a8do+-k5eCosnFsZsdz#s>(ld^i0fH{;c?DIvOt+Sp6tb z@`)8gXj|LW2m9!A=GE1oJi^Ez~Y3Ve3N-C*IOIi|6z0h^A3cvY+FYk^Z&#IF z7`O&4+NChEwHPrqhm<_BPTDkydvKPMXyjQM{nsG*knqE5+tZ3#djGkY@X}{vQXHpZ zgI`=1!nPIEyebxZg%ac{;s(ciwJ~18(Fr@2clk@=J`XioR~%4(k;(ZuR*KpDSmxre z8GXe1kYrd(g(^%J-(*~@nD*aM@}H4%aIh>KD$l|QgvEC#0Ggoz5&*g@6&GVZ1j|A|u?E8D zCxB*;1Z!!&h5QMh6`|TN?%*HX!Ng!qW_~PzG+`V-v|DzIybOq#HL=+gFcF~OqTtv- zoQR(YI2_;}R?`K}kAMK`HUyw(77#)MBnDcEQTk{^Cp@@L(K>>zpqx`nJ$DdH33Y^N z31>2YP|tdjJA(NDg$w77$ibkL00}9zD50;-(XEtZ8g3+}cedEEqs&E{o>p4sO*%b!uiqB7*_j1Ok0PgG7gtGxG!Y3kTx@ z>5dL=I8kIUFz+zn)|F!-kVm59v4{WB8N0HXvqJ&XmIqEz3a5w%aAyRppAu4P02sd( z)|voAgrNChU;wPh1Ojt33#*n%CMug*d)uT?>xPkfAzaSugBAs~T?LY{P92pE*#^MD zP@h}H((BA?pV4GOi1OBrI@*Dru|J?RJ zbB_O}kR~<*g3WjQGxE<7T0kAf0sMS`s^0x-zw3_X%{FEYY_Zv(edTN<}3( zO5$t)3HdB7IBQ29TY;R4in4VT5{1o(*y0Zzno00;uGXvJrlgOv;*rNo(? za3nAa5yB?l3N#ncp%Eww3NRdrj;utt+oA<9P8Q`D%1)C)9oxvt2)f(>%MUuXnRV(| zq;%|=iIE(^060zrT8fwmwF)dyw_2s46dEuVY!W0COq|1rB+z05Tr)r!ARUGU0)>^Iy8xu_ z6UhI7fd6=4e84)fsWsUUta(zf$)kZOs-hzF78^2);BQkR#?lKr|HPn>W%}7HY`TnS z1R8MM3HrH%oT=P!MN6cUNhVhX#hoPkZF6K~u=NmV6kASXBUrXQQ|`>jGz?M2}f93 z{J%+@{a=ht5y+cj6Kep`{iNNpPtiz!P+< za0r{O#NS1@b^@G&K+gfJX;M&uWY*y+sE8i6<;QS)6%XEL#sc)`gClp?Ry!N(kdRKo zp%4JHaxf)8EMVLRO_SU)4rHAU08VB%@PPu#w%Nql%n|a4+yS_7Hj>MpnfXvU`G1$Oe~g1|4wORsr7G$W}*?~z_T4lT_6GT$&y7x#sRJuU=9rOx6kPSjOdLj90qWQ zu@r{&S>}MW0hk>Wa4=Z^V@{0XCjgGtHDG=X1D@^_aDDV2aO^)r&`!c=ez-ZB7~O84 zt;32zAi4o66_5TwgfpJA9K(z*#h@S@2!J=t2*4SAP~!xA)15Ap+!4jHB)~&4Jq38T zEgZ@_2mr>J2>5a=e{^hvQ2?IhXwGu&Rsc5P;B71kfgTJ;DDMcsEdvVpN+8q!JRkdC zw1OUgv#A~#=zUH?04sl-rmERtyf(RCO+rSo5VG(e#{F@AfQ!Rd1mY}g$kb{{K?$LP zyis~mD31b?m4EOg4%Gslk&P2Y)b~-W)yi_PbE4=B?FnOZv-N>GLwc5j%rjgx0g%vT z2A-RLfG!{h`1@KN9gHqDz=y)P;c{57M*Nu{@XP=+Dbd^JXjHc?_90LJ_R4>PMj$#V z)iXOO6`z;@s4{i~=+!A&l>_L7uwvTnw+S$HSS0!Xad}h{>RD>#fSGb?VO=2Bo5?5H zKLnlxKrwgZK9;bM4?1=gU@zdu;PlEJRL@4gtspnSj+BD|KSaKRdKn_3@0|Hxs{-l_ zCb?dnx=?Q!uvu%U>j{nka@Eb?tU=KD<97`{N4L-pjn|->lgrUw8PbrI>5%P(am(Td z=ClG`C1bTTA-q(WoA!(z2_^0dn3<@Mh58HAIWS=;uW!P~6EQ0xY> zT9zKcP`p6mfipTz*cd&#N^;`*ctbhHKmFFrhYWVI^Cf>>@UYz$^4%WFtz7s?yFufT zHcfF2g7=RL^w+rwOy2N)NE58M2OmTCn?6wEbfC4#^*x}SBgvqj+2@T|PEK1S?BH_L+u-Eb@o-s+ zXOCg9NDZJJ5)T$9Z*ZA+x#MK4|9y?$LDs`{#Oa+*{r0bes+=6})&;U;#(=|kc{729)oMQ9$9rwyoHy_a`d?Dnj%la@(%5Q z(qR#;Oz~ZTi*uKqFZuY@Ce-T$lB3#{9Lxb_b>HI3YucA?-De5l7Z zrQr!q%E#>U5*XR++AkSpPX3iL9L6?3NWW3$rrQ_NFr`(H5cFo%+4TlhKWP>VoU%K~ z5Zaq;@*vF_T69_^LJU#c?PeDmi#(Iwj*0RXpzbV6NtAMKGT0!1mMs#c-WST2 zJ7DPu`Jx<$&s9%GvwQlxA6!3XP$HI>XegkZydt4f zJxzG?lBg!SebOi*X)Q%i)KgvX8O@BxpiXswqkl;FlG?7-OP<9&Rmsypbw$45g^l|Q zC^x)`Hqq)UMOyKQqx{e5$ZSLVWXs@eb}CiMA|7{INjX9km&tcmqiYa_OJV6Ej6TC7 zUgXJy#M;7?q3~kQiBQvLnA3>y%&)Bd59f4OhdIB?Cht8W`YO#jZO>6!Kzmg3IfzYh zy4Uh?hQ%j062h5=3`W?48=Pt`#a)i?tL*#>U`Jn+_1HxovGT@ct-dt0lhP{_?iQ-- zw+|k7&dSZLRABI=6XXkP8*^wD^cXsD5&P-o)KbtIJsemG1v~Bk9=*kkj+Wy(OPz6) zP~SK{UGqF0monJ98aux2qwjQ;0j?AI#8tv5S%n&ip%u1YcVy{)}>Xzgnct_ ztDcP4wCD+Yz-XTEYY)T{tfw?C6@`~cBQdZyTmSyMKmR^8Lcf(%)vQvx-@bTt$1=W5 zblR7GMPiiQV$96&>BqYZJpBlG@|#LKhyV^n5h^dfmQbwM>!Ya^|BHCv*QZ7s4YXU! z2vb*S5)1ufIpsAyzelRO>lb6Ho&7poQ=5+y(<*wU$Wp%wDjM}gv+NOy%|laDci&B| zucPcC1l%sj{P=fF4j*r%djD+qG&XM#-F9yY$as4xRc=_SW;6KU-2W@YGNK7dum6L; zyzYfqPV4rA+4JHs6Cdgf{X-fhCf8Eo+sNJfiO~t8k;vx@%=OYYmh?ItVd9#F+9P%DuA7_=*t{x2I`gN>iBDUJBW#gl>VzKp;`0R-38QO z9JS!k@zX^TD?uUh`5nHeZ5`h?qgYh&9Ubq>F;HxTgbunqW8BMlG;di>VO5zp^|{1h z22TodKcdBh){|zY6Br$h>1XESK2|HU z^)K=CY^38G@BZ$uxq5l@BctZDF8_}#v19|ls0ls-Mw;&bGu}y z#q)D45||f0XlUYqoT^!Vi3VzxJPx-(-NN- zY;L=Z*=0FwTD%^GJsO*#Q+Qz9%fNGacgM|CrAQI;6jI=67Qo+q8ZMC2#&^D%Y_=Rw zs*FkwjE=)NXtc>MlKeh^70NRTgAAzn*d8}X?x;LdcpY-zusH*O{y6;ua>8SWZqpJ z4M%s*8I#hSjLOVdo8}ZQ3piO&JU+0`yH{#-dMGUbGa(gHe^)!hF3~sn1XH}VJu3t9 zlz|*sM-R)nRJJ>Q%FYX(p$r`6G>;U1_|%xD99vhEHoKoaIMCxL zZ?kKm%P#bK>K=J!QpaGaHD#U_P5vEZ$uBNkt0YMJiZF?UjEsz}b>3mpi#_PaL2WlF z^yw)-QF`AMdrzlHFN@)E{Bd=8JU!{j>Nt9-=`&a4b3jo$NnqI4t+p=uJ`b-h<0fQn z<Aiw4e`X#;LlUD&It84pe!MVoV zC@yy`*GP)Lg(CLm$ z(pjt&zxWup`Egj@c;aNfXZObCC&mFVW~KIJr?F8w>90ktHqTPpgkSUR*Px8N?$2dk zNy%3AZ%bV%M2-&*MTdP7RJ#?}rgUfUAU%Hue^J`344C!4kiOsil5wB7V`@w+=G?P% zNSsL|SEsc~dgh*{bI|W(*q#uQy~nQ(X0{2ZD3N#D>9`cAp5TGM8<>82Bv`7( z1TF#9^x*$G?OLaDYPsDM&i|t)y%p|!mrj|h=K0 zE*CbO$M(`b9x<1t0&>r(^pbn7;u!g3jN%3UuO8FEgK%yhI0_MC-YULOtGa8sf1C!t2ZAuIR;sh0r09rrj{1IPyq7Om=MMD*FU83|yii%)8IaN9KG}bI4VvWY_`F$S z%YaJsKg|u=N?6jCJ$Gtae4ueq_}k3iw*F})kSDUe26YP@g>I+DEA*Mp2I;ElEpSM` z^qlPj2deF5{3w6^xOGtaf7||p&TM-TIrlhPJ>JyjEv-mZ%?}THwWa`;0;eG2FMf%1l}0>w z8(F3WEDrKnN@f}#ebsW^r7KrF7&CTOQkA`U*m{30aJt{_4EJ!xyZ=Ov)AZ8eCK`0& zrVCTjXy~zHnBdAnepjo*PN4%+dV059Uj8)8EqvPutRa)U%qqQtPSqdx(nCX*D&HFQ z(goILe~f92YPsV2+*EV&^u)5JLWQs{Iy#*{pmMc3W-DR#Lz)67PesBVhdLy6!_@JO zc$i+Sj|TX~OS;K28fy__r)!Y%8=ibL!rrS)I#4M3g5)IJ(sNBv8Ghm_w38I2PcyqJ zw$m__B-U>Ej>|8;`sf82Ze!so*&}!PS-+a?^b@kz*kZY7}+510pluz7s zA0|%lzgS!{md&B;GUNCC9OFmF4nmklqHQB3eh6h{+WKyt6}_7(!7o(}8L-;U4NkuX z5qNlnd6f%|@=29QMvs4IEEm1|6R)A5aGGwLFL}>?P6~~|NJORTr5Hht$0=_0M5&M@bsfdgE%{YIK-!2o+&p59^^<6cDg3WG?%tlO=OUI~U z*yE=V7Nnk7R@sf3tl50RZ+#4q_5`1i2Cc1}7~}n7f<;)B{->~9=kxq8DuQc^@p@t* zrbhS@zu8JA>SXrXX^N1QGohFq^xJRyo!r*u?PR!OorCnt9bfyw-257nk;r?grf2j& z$4WCD<27F47{oOPe%)lu{mHh%8KIZ}hn33T+%RQx=xewv^j?3SVfB*Gu-fy@)C=NT z{oJly%57BY=WT+K!Ft>Y{g>?u#+ZGH13VM6ZO?WjFUK5ef6MRX1x;DUYHH#oac!`m z>70Y1FwWtM+uoqD?{|7?w?_yt+r(4&uky$s?kWn+4SS!NT_5REI&neKsOYywRKMQ6 zrFHx+s%f{_xyzGVfO3(9#VM^@yZfC_7ZIvYu-GVMpP#z57Ahlu2?_aBjOY?8-x!fU zouU2muEAZX8T*G$18YZXdODxB#6Bz?JuU1y4OiDP>KGHZ5%wDoi@6c5VyHrIdMo3U zVzO_zdH6+sZr$h%uO1aYr*%Rw2c|9U)xBCawI z%!YQ*R!^O9MjwB;h`ACVsE!=#(S(b6|8Ig3* zw;JF6iJXm1g;N5JWBJnW8jqe*wYF~iG~IBm^UTd%cC6HqA38(Z=US4aTa2mRbfaO- zh_&_Q`BfjW80O;HFPafI?VLdNuBI?CF_k$`pDAj&&_X#$?&~&dh7dE4wH=0ZL`*#b zvhbW>gIlk_X^d#+nZr^h+H%`&cfIz`cUdWFPwJ>?(etc@=TZ66z7dmP%kXCDJ3ed!Dl zVNR-Yc>JM%rOW8f(J9ZPo(gZSGWN0k@Sy#SId)Z+BsS}mW096RM-lGyO>kwHZ>Z#p zu5nRu`EgN^QT$V(_9YYIZS~e}Ub$9B8IJFd`1ERf)$UG7s{1QEwA}F_Ovc-~Echtl z|66rSCdT|~SNyP*`Ht1r6?@!}^}W{YYmn^rkny?&ItGJ>A&sebQJ$rS`umzSDF}R^ z(z@*zwy$Eh;z}p6rm~^Y5c3x>yjXwhQAQx${B}DfD#_F5x3VN-dTzS8vCzJx>b|>> z^Xx>m%Wg?<5(JgAT2QJ^*Cyq2Q04e;X~{qB3Za70OZH%Yt*>z^x6t;;JRoqHH9OlUbJw9Pvdiaq;@*^%K+Kecw%Wlf=4+6C@vz%hNf#2I z=W$CsK2FAzD-iXw5!DUl;r?f??9;>=oMe&`I>1xE>5AWUIn31GGc&@9H%5Nq?JCP+ zZ2j)!=kFUeef|+2)jlqksZO#%%PA-*W}Z)W}3J8qDyX_(Z=>s=}pweLcm=`Rh%tX9(O;_jhnabcDuE-3e8A2>;LXd znDjgwROwcmM@Gf4s3&SJESA{Wj$K{ywhkX#&kG3_#U(?lYZ`HtRgSNeMT2YjCmpiN zrq;KQG2(vW#MWU78XEVaMW?nLlx4vmi_%O`T6tP=^>61kz7NqiEeb5p=!OIc z>_Vp~HAVfl-7dVVMwjC@Oxy0?4R+1P_(iH-c$*jfDih8K zdZ{eeRK{ZJKMrs7`P#C&uS`_b+PdKIRH(!zP?9garpFX_tr(ip)#P8t1-*1aef`GGY7Cn~%|{NY^FISxUQg^3_?ooSQ)zrB zWzt)0Q|^_O&Cf#l3?>rpCcWH~vpXrz5ZYiM*;^M4dSkGk!u!IwwU`AD@;Q>P?=LqV zeB76}RBTTKd5eyZ+YR(cZ+g6~&G$GQpbq@vYLQCzL!pWDsf|bS}`Tgs(kY2%2=x@!0K%UekJfl=v2yHIb`BgzCm@%!|H3x>3U z+rF<C|Y}cyKO@@ypYL2uVVA*t|+b=f#$n$E`T#$ZU<}v8rSzBo&Y)%aI0^ zM5furug!J!-L7WhwPgEL8sF+Z8#^OCj#u@Nnyua4urxo|$l3gwba^53Th0$zUxPZ| zTD}HJ_g{lFO>?;7%@4UM$i^SVU4s%cuQqXijrt~FA~uscfFM;f$n&+IeTv%+$?iyq zo3RFdAOFjTO9>;C2|~TW>BP0|6;ZiwH+aAkI;nJ| zXS105xXUiRqaclkM*(M@h3;;2Ow}_I@3w)oIzw;R@Zd}4pH%5=3wpP`_HO~J8Ob~! zaXiXPGA)dhenxl@6*7>p)cZ`t?Q`c!`)z^~p8^w?9fR@IzpkEXT_r)cf)8g~Y=W1k zUK;AP-F9q(!yV4|OAqm`zREqd?Bh*q{keM6iI(|?os;0>9~bW?#`VT;tRHEgrJWuG zt2hLN*T;KP8Ko`iv(b9`vh5%zZ+}AcD!vkzmsBuX*!F*I6zc1XiGUP#iH^o2Q)unB z-2=&TBh%x`9^;I+?brmM6}_Jo^(Nkg-4`ULsrk&?`Y}Kb#W_7 z3lXXVqbM2p<>CH}O~06;CbYlUBiERX4(e%E{v9d4>IwxQ+JbcJa0U;b< zSC-7VVftL>@z`Q$PRf!?&+DvRCclhG^Wy+WySjDhK#PLYXXg}33x(NLhC7Q3sv800 zF?<#M{)WwJ)3Ua}%yGI-pryF)(y?jENW#Uly0zBYR@ulkos<5%%n|n_eXmS{1xFKa zs=Kkm*AvrGW3F;j2FD~8{!W^U8uq;0czwf{zl(;$8|rQ)uG^zrDm(1$mcq(rjEMZ{ zXQah)TqmTz6LIBHMSs&yd9c}N|LxwX*5E+A#*bB*yz|dqi{!0qUkc4fV~o-SP(@#a ziP8jW(tk>J9%p!km%69!ZALCjA7%y?R!hjWNR}Zt&0pzE>}Ksc3EW6g7ZB+up*=50o3msM=vWu`Y*Kh+O8oR~e__y};IfJLv(ULj%ld$*XZwmiFyQc%oW_ zhC3a%5ch`iGo{TeX+!${7Zbk=OA;!jZ$76}kjRWLRZMXy zn;kE0EwRHF%Tr{q)uHvz?3bRz(D#ZJ`KuY@rOsy)O)&XZVDdtL1&Az&_}jhyVo>7t zpo8hJVY49NPZr9tgwOCgM9J9Z8t<8Gydb4n5HV~|;o@?FeeF41Sf{(I7SrXWr+4A6 zG`owFWZJm-p~-viX4s_mM(d)JLTNw2TIScU2)$I@-sjpU!egCALqr%g6Ar?yk8+?h zoYK7{$IZ=k9uN1iaafC*GM?IUx_21AaLgTJKM*j#B`I<<@bO1Z&AV`WjCI*w@v}I0 zp1dooot!G*EXXNam{__a_CD#RH98-(nNhoR+wM53q1|*q3h6(|J7Ki971SxT!?P<%=(w>itaLLZr*Hgz* z`8QYvZ$dq)`qsEmxsH2X!`b8I!DMTu4HM2$4HHF4!sS90BZDxIWXJ>^u&m3yy+ZJC z$D^Ri<*@3`CGPW&ChC~&80WcFXSP%PCehmD+WDPo`->rLa=74`m%eDCGM zFE#NDv5hiawVG9WB!?Fzx81p{HEi6~P40GjXt2lIb__3i)g#y!)&k_oOb@1Ce0bEl ztN+{RW0yk_YxxVQMxHy5tCIcOP7WTioyL5dZVDYwO}(|8p8rMZfVl+8E}oiIx3*GG z;z{S>7xS1p&zNJ;nXUEWsi&^^>7=WJ9IEo!PYlxAp?K<8{p!nv41M#G6=9M|hJ=*m zCA7y$=%^BnrqxAy!Qi?hKP()3?MQbP=URBjD#bxw0k4n1)VOY&|Acn)XI_wK`QSJC6EafQ+tGLn{F{pe ze&FvV`7iIDCPu8>tM{v(h7^wz7leB3qKXOS++*tFpBz(%KG(iv-{+z3 z;bZmWIsyI`?!D{bF4r~4M0}lpXM8908pJWbI;(e8>p28BV>L>`?c0?U>0Eyyfe-vI z0G}PEXqF>Y2Iz;z{qpi&b2%}SwgigT8(!oAbAOw*jAtcOjq6iEll#RD%q06i`gkm- zjcc@w`TdZ-8@BV070q6kg1#^8WcnO&4LG+Od^C8DUjz%2-I$_`H(GT`1|2GSZY}vM z{Vw9_0e7cmh|U;%lWZQV6@xfZgC?8>Bc;Elk`=Is45!tJ&mmYnW}Cft%Xe=>s`I}i zFFY%Gj}KiEs)#x2m;Lcx|8-Im?L+_j5qDnY*sxyhoD`cPeCu7Ur@*4S71?Z!n#%0S zu-YW8h-iEDYb)e#)QsJZAisn2+u3rPZPVe==o50{(HZBQKqCh_)n^-(Q8#=3st@{H zgeu0_3jFRLPU7RKW#E?^$g^<`60o<-i>ogQql!{&k0IYF@v5&m8VIh6v7_yiqzSnX zcYDu|E>0OcH)}E&>Jhuq@RM3%!462_v2}4zcxL-ooUf`oSIG*WZO}iEW?E4_z_UCf zSc$QFDbw8+iF{yWn|S-#*s33`Hi>xFYF5f(N8DgehkvKsH?>$F@R3b(5S@0wrXB;Y z+)usH44g|()x#n~)}L}3}rQLh9yF>+jH%;hnS?GBzhCr*`omodfp z(P_nFXKK?lO+yXu+V~2b8Dgdib&=LOMn!v-_bhA==xs2n8yYFBCHIR)hYfcqD@J|@ zXD8~a-)H$t>=VVg{Lx96Fl)GR zoxE2=gX^wP$qzmUsr&g=H;7X=LyY%UrJ{T&N{d}&X~nD4(tfSoJeOc~b3o7t zr!Q?3NP$^sXx)a(ILuRa@o~Cv*b|EPS+C%|l5$&TEwk)1MqV9-CPxE8g`Tjxowt^3 z_ehr+CGynczKG*~X(>*oB78r%S4IBmQ}F*{>#f6@3jhEAAqpx2Dk2IDl#m8NIz>Rb zyHP-a(cLIWDm7$uca0h_7$MRr9iux&ck?~y`%~BN_s=f2`wTA5*|~S$uh;YWcxL@9 z*Bok;xw4VOXSQClqwS5HY?=eF)wx4VZ3+uci#;yx`y?>+TDMSY>QMe-^eH3B;M3eU zI6eVBBHWsZQ~y)@ps|%5ytBaVaBbY`?fqHY~osQDbG`a?L<8)6`2uzQk$ef6!Ux9n=B3~CHxr4iOd~0ucSI-2c)dAtvQR; z5$i|Xz#XDuL6QnhS&8~nF&6xR09Z|k0aSHZeB9Wlb@bN#{rxH&T=Qo84UMu6i}Xq* zP2CyXjDFS1XVvpjCVL31I+>Yv;^0?g*kzSo=Zy<2Q0c72D*cX%p^bx~OnahTsb|th zR_-1?<&BYAaF}~qjczC>qRf}4QYb6ufOvj_;y-JbJ8<)UTr^3s;IrO|=HzD!anD_y z)a75BDp9DG4@Kp~6b?ut{W)HyIYSyV=Z|oA%^k;H&L!kFQC%XNDMvNZ@SHc_eVlWB#sQ;XXB~N~ zeF24yX#nOUa!{|Rf@O_{l>jWMfpkTj>%67zW=Z1t3@1_3o3V?+EhmjZ#WhtAnE=%V z+^7TQ=1~^eyrV7lqa@VALCiT&Dy$sT7&!TqRo=qjAxizB$lSS-Fvjp9GW@%s-n_Lj ze&tM(B$r5PuZ8(S{3L@O1y1nEizF*|FVBXt5)U#Ad>G+eAVL12b`SZ!m6IUUY=4!L z6zAfLfw6Pwf*A5oLP)3748HGJo9e`TR7T=}^O~OE_ja)07qi{l1!S3Zq9q0ldrZV- z+fuXZy8fI_%DiCTHUzJ?Z%r|};76_89K{FAr}x`mw6Usv?dO-_T^!o9d(0Epiwbx}>!MX&W;piKJDQ)*y)CW<@FeLPYNBH{)=_R@}+?ecubN`5ir-Hph7^l5) zNyjSL92a%=;O7l=_$L%~ch_?s*Vb+!jw%-kJl&`QgI75 znOvulb?87!x>f(MIWn>Z8fWgVXV)P4P?k%ks*@O;66UAX6(?6r)@g9FmlZ7G$r{*w zdv(o`rGsfYgrq0CVLQ%E%Cr)4#BL9MP=yV(`B6_xN(vGb{&0ml)tOlqm>crQBJqA2 zlnW2XUT(j1-d49Ca#!4W$EJ<2e@*Zfr-qYFh9uT24t^MOHORY!o@0-%sn4#=b|d`0 z=q1=|cad4F_@pa}B!-w$Ke1tD{2H{5H{`TbCpl`)c6#J<=6m>3FN!2iD7U`aGyI|g z_gIT0yQ@2S$WX6U@=C|=yby2Dq$`Mh*}(B={;X`^iq3C^Ru`{aWO(%c1BZi z6sZ$+1X^vHVtFZ&e-p-Urhrh=W3DkD(<-OoPY#}cd+EErbgmG9)Z3g5S-Y?x>A)))NmfjuBma2iyxJpBlkadI3v9$wjF`|zi73&eV{Tu59 z13JL(mJppbPOXd#i#ep;h0j+OYW^hKk4@;Vgc@o*_*V^Z`R*^2$m?V`mrbYd-ojvE zT>%?oWPAmc#!fsg;oZQ+I+88y5&L00#m4uJwdtt3)pnAat=xDl37R}b!x@lW(O12- z;utna>Xzt~`rF;B22(#ATsIz@m-9*B$(-7Aw#Q6c$9J^_EIHFHT&KBjZ@VxVUIh`1 z*7_}?)?g-TCt>Wa4a05Bh>;p;i^Z^)Rdt2tcGzCrPAmOx6XOCQPp`;!U+zwSHWf-g z#!Z)2+Rtu$Ve4pPw`bjGF03~pbn75QE6@5TTgdwsRSEUyz$H79B?|~TdMJA8T)om& znNqXALcdwsOx9dp)^i8mAvf=lK@Ps?rZ|?ajM`qLe7qHNr=ZwH;i)n4DS5fPTVd8g z@M0|J*a2Cc`30v=WjcPfGH9c}@xr1;FCc?5+n3aEZfY$WN~+~Fgsj+J8m*oH`bw?@ zHdgabMGma{$gSXc@yYiHFCoSe<%xtZ+?<8bDxY3)vj+!H>pN}ETy(bhJZo4EnVS0H zo$fgEgHc3FSF9>oUsEO^lSb>8I%!(Wlx4F=;P%J;89P38@iwX+7{ zM;&KDnpb4friIEP0mrmsOAC6o>DOC{DeTh(<@UvJvX z(`-1>`Q%Fe%jKoZ`d5dxX~#d4&Jcf+*fNUeA9?7*nvXiYtx zAqn|UF7Rp866JCY60l?YMSI#ZR0l`e&gE^((f}KFL=z3L%Lc3jF9Bo0qZ{@7!z{Fw zI3N%J)byf&8>&wY7$*U&7iKD(z~0>IKA^2fCn#mhSOH^Mfc+o{0SNDd$o?IkS8?Y? zN&iniU@E?)Tl>iF&f3}}Tloho45_ja(Im^55h)c#noA=sE&PBnZdj3`m z*PtgXN@b*$Tjx{dsYL4h`aZ=Kt?Q{XE^w}0vX|eQ?0Sj^-)@BkY1I92X&s3m?5qUH zThnTZdh_^qn4kQto>soY{J>IKj2NBvBQ%s0A0l=Dfc|cc=lbckJ1~c{a<05=XC3vE z@0m;pHHij~a#vToO}e>s@)Uy!Klc9zh6G6Q^T#+KBTPDgSlAt7YEUtwtj16BXoEJ> z(j(?&6{78Foc!tnZ}su#?f{Z&P*GRUndTEJdd-hLw(p(2+FMl9!d(63a2c zM@OMXv)mBhGkT`=O((=5f=g9pWKd8RU;Ob?X`;q42R(vD++Y6t>G-=>&yhgc89`ot zS+05w;zw6OT7asXZTy0BaRE|~t{;{U|18TK4NCEhPJx%&UyIV(MM zZ8@qO<@8gzOLItbus&Qh3#iBkJV4@y;r#h{Hhlfo(>Fk^CVcdCHe(c(W&;wLk|2rk2d&)B#{R? z?_MmPr-=!{C{)c)gS(Bt* znp|%MnFN(ymllTXi%VkURk^_8T%3c__~LAjC7G>RJje-}zJf(>TRyCcIWe7=yy~<6 zbJU}Ffia=Ne|P9rvlzXNG_ZE6Vmt*w@*$rc2as5)c!|>dV3M}mdjmb>eKIH6p^e>8 zo~PBBt`8-@YEcnLq%W)xtuowUem;C&jV)GN;24HIM!p$&sxi{xAQ%27nQxD2vvZSK zcdN%rc4_OlXfN^6nBTWn36Qh9kj=ib!Df_ zeU~ufrK(!4R1f#4Ev7g2rE(~sG#4v!*ZRrp?&pr};eD&5ghf-47jNoW<*OE44L-u( zEfA6vdzyBpxTEYF6^Z239NCdI{94C#*vkv^`tY1F5O%mmI>Rfyj&YR%8*-1P1(peh zC0JJ5_|)%X?5h%+C4&gN&+OJ%O_mAN%lI(g&@I2uX>rqqVoM(JBuPTBHeN%oS9SI;=ZLb zqldq_l#_#IV7D)A%2D*lbVxoXxsj%n$pn3utEly0Z{MX>vOB*V>9cSXZ=KPm74hh* zH?V%kQn>2+8ALhK8l}lYE^8cY1wT=sVE+;-O$?-ghj?UA!dxk=L(bWN~Iq zPcEp)n7Yem+{>u2VH&a(&2pPtrZZ4RhcL=5TyzUhQe6D$NsDVs@|@ayd<#t9Y>gCK zSAmW#*zc^+87=&_lK;gLUW!>SqyDTT7hlVGDbnmrU;=Bj?U}irxsdpck;MOX@L&# zcN~3)#Ig%dVa|?DA&7vzGZE_UpvDi!ed~y?WM6!ZZgkv za18>AjFxJ^ttdQvKlJ^YXY~xLy*_IUV<#ptE9=lnwMIKx2V^}xFWmoIB$3F(tvQ^I4j0ZcWh+gnkkUzWFHSt6`m&iK4b^1X7!es$XzAE}R`#1LG>xioKH zzswWzEHk&#cu+u{sCSl;iBz~bV1qqjmy8CJhi%lEm}Si#h;2IR5VL$dfq3A?tfeL|gXD$)zb~D*Y=gK_36M`_|eE6a16-K9SklufG{r>E8%C!!dMDmN`h(F10I_ zEv*D<+1^0ab-zB=<6Xjv6~dgxvb*f49`WPx)y06&fUr*%l3_|)pEaBA+AoO)< ziLa=Z2Cm+GGHlqQH#uJJ_@k(*v8T6x zwQ_$|fq8T7F3-GiW&hrt(qU0l*);tpz6o6l$;e68*NA=Y=cZIIylVaAXBuR8%Xi7x z+j6O^&>UTdHNG6O47pox#E7H?Xt>}YOQ^;uI@fxVWMhG@Gc^QnOVYKb39ot~tiDnk z-3HOc+T!QmH>`*W(st$%r?(te-u+Z8ObB?Btu)D8x&fia7YtZB7N zniJ7@iR9)OYa*b6_-n7a*^;HYB5W9)J2fPz(p&V?R=NLE94!}E;I^IUodIV_GEg5x z2b>C8OGRL=j3bvmCK?tW>y~6MZ%KHWL>=p)mzP%Pbo-|3zMAQ3nwJ!KYVo$Dd^})D zLo8Lf>%79}z*5p{B{UYRB-=B$w8|dl2`G(N((JA*(J+J`j`C-RX>@1{WU){*cDobW z>hy>_eX}k_<@;daRS002A-9|Q4AJW21Yw8Ppa>Vf)HwM!_h@aJxP;iUAqIXlqZ0z~=!5 zedh#huGQl1#|VVIu*l(;zKeoB);rEptw=AM43sIS<8fhW&trjxTQU|ru6wOb{k@dd zE<=u^DJJoKBLN5yaANjkbzFB{=Wu+&f1Q0#CW%lPd{dAOondpH37xE=jJB-UoS#c( zKY}zND{OKj`b90;5A^Xzpf5&aPF;#fx5;)7j~-_I+{=18*Rz9aAhb__@p7b-G!h%(X*nsW1g^S_5Xqh|6?q8BZdYw6v0A*D)NGGd=ooF^&h%lAbw~AZM!G# z8Nx^;%-q{9mwRTLjQ%Qg+J`;nNeU^N_pL z-w$t+?5UuVd_qN)v6_}zP(3UuEha0Zu9mPEaJOrE6F-U5NeD}XYNWyS`R4P1Qhd}eM@-kwDZ53V&s$W zEpZY(BXXY!PFZW2amM3%(Q0_AdK~)G=lwQiY}Yl2@#w=-4_Gq2hSIQZK3Gv(o{Mwy zM7jHS8{rR%f*pea13S!n37K`>7I?sd+^lFw8IH_=Fx@Q@71!Od&Ixtvf`*-CT$RZW zINHoFWEGNiOI=eC~f( z?|-+_i&3g34(WN5QsZNDs>rl%5BfzGTOm>0m|R2r&My0Me(uSlVMm3Zj~i9-GFY+O z079bsX%kysJ@_O!d|9jJ>v^ikLLteHd-3M`O!*20#@TC-sb$r7=MP?C+0cIDi0Trx zVO+l9J2{e(q2~`p$!MIwJWJ&#s7AdQKavo4Cd><1d$XcL9_@VBy&Ml#BJR7{Ms`acG|usW2g=4{M&1lgwHe)7XdHB_ zBXohwPA{WU;VdNnBw&7pWeM_ZyNr|u%I^s#8kJ2D00KEFQ9d304-EdC0nGC_{fWkjP;tsGw z7yW0e{?{WE*f}H%7zBzFCYH3?)y^Z;vvC) zNV_`=GtU0M zh`p0(DkTw!W{IEBwu8r&C@cRyU5TE45E{zr5Z;W%)UCjFl+%L@_AIo@-_K&Zwc(Nk)M9_XH->I$u+&>kYo9D^vBbcSzY%6f;OrR%BA3SqRHM&{#1 zPr7h&(O+AUqq-a(KMDy6V9+ub#oNCq(z@-abJt2UHeR}Og&alBwTgzK;n8uXuyIXI zg^o{Y`9;PiIT7L7--zl1jlI2@vd2U|PUi48TaMFGNPNo4u2HQ_=goe+Un0=HR)e0T zlp-*_WGK0kZdepOa~`Xm9Z%W*Ox0@7B+F)}daffI(Z(_F0~I z;<@*M*Qc-W@0I#NS7|?IepvYEs*?+}hP93`OHv{P?&mk?ao{Blka@n=9D28kII3%D zgT0D`%SY9L?$5;L7E_dtZ8^4aBHcDBdd;x&miu<~ry;KdxDBfSV zVN(bSR{sQRX3pJNVVSQuzSqn^Ti|r(cXm=)?=0B^_D(ID=vgy-ta5nfDt-hB#LoH` z_cMkJXT@l}{QRJah06Es)aFOHf`UkogP99KHO1k7Bhtwq% z$qOxQB3tRJ{Z8wY=Di8OCsvITp=^zxb~}?8306Ut#JXf5c}pSu8eex3?~*Sjf8m-Q zP>dw3nH%E?RDWav-HaTN!SSo3dQPf{@Oydj_7AdE6Hk%mRqR$|l7N*i=m8Z2zY{ zmlrh#a3<>Bb%i!{K01=UAMQPds*(X(roIfU(T!z2)HAp3pP@-f$+r#L-f}*wOR`DO z1^)e8LCu&-84JQopUmHPMLeb;hB?z!xWKAqq!(91)T~N}x_Z%R|7o`nZsKlompwycu zIYTCHJ0DONYzq?ZD{9}TF4G*n7vOcNd8{3ihv_otblg*M4sFg`B85G-7@OOmf*EP% zNz(}C)GesR#aNJy2pQ7s_Uqf9#cQW1yp1gM(rsj+c}QsZTGR3>BAM)RqDzE7`_dP~ zQiW;vIo;(s9%WM;kaBz3qDM8;6vjTq?x8lUs=HZX%fY}nIVv-|{C>Y%XC$125=2r2 z{P}?ty=27`E1vG=IvHsxx5kN_^?uot_>>h|L&MJ$9lLfaP0CQy3LYjWsBwplDN$^P z#a&^D>rla0{>e;H| zV6silhsxS4rA(+ZG9CME2*v1U)rJ z4^w{Lh2R%(nx+i?LRDVnxzY_2Fq_>$@AhFi*jNbn zsqB7!!L7@@ZA}S@IObnlD+>$wO!zs-OjuW#PAm>}Z|66RN$5`y@z4ge#w|(A#-X*F z9pQ8L=zLO<^}_MDU}r5kB8=kbJ}f_su@>_J3eyI?@*N`8r>q_ne7ZeJDp?Dc$lIW8 zGB@wGowS!S9hH_)Q^0KFuz1U}YAghj(4V~V{S%?6xaI`yMC&jbSSvI4-VRN9^<|Xz zLTC4-<8;eJxnOpEo3dM#Him`3X9p4SZZ&y?=!kHcpSml-XIIsYJ0Pi*p!HOQkfnkL zg%7bOW8r0sD-3E=$HrBe?}=FcISM*8U}E>(a_4St7FRW(p|}T$msF5^MJE{pKhFVtx1q;h|!C z!(-ISoW6>F(f>TtaFue$RHK1eDI_I9uMA@?8|tiuWcsZom$4zX7T`NQ@B!xwq2gkv*}P{ z$?wzKI0!c=s$pX5E7a&&g&TIQ@469gH}3CwZ%dY$vHbu}q$Zx(_Tbw;8E(`PdgYHW z+}IatM(2E9KA~6c_dJME;kNa^Mq=}*V_tU@&=uNF~VY7=-- zp+d17^#p?n8JS_bVGi~Q{!Dmsx048t-qg!SrHWE_8AXuXWwU@gcM1&Gz^4F`NOl06 zPE7D|l~rUIDGT+OsDYZktAM(ETd=FSBK23VVML_dT-g|f*u+bU)kJb{+KrI$&kYmzWLZyJ^H-_UM63K<%Zvzvr&OXwE0GNG#H zXG#Jp!mww`i+z08Mu|?8p*vw$EYHEzT5CFnit2dPvw24Rti}jI!A4MMXjq1~ue0Ok zOU2faNtWS})y-=BdiFQ-A@5Fdf|5wez1|0d{2IRTCmoy%s2GneYybW}1sTREXWwg9#!%q3&R*#RC$F0&g9zXZ?l9P3+=W~D{i$6?$)M4B)d|PyHflag` zbaV8ama*1$S>Z#Dyq1Lu7!KvU=eg6|#K8jZ z%iz>na;G)L?Ri?6n^Afz2H~Nq6=X#Njbmgl2gJbj6AEX+-``K_^w(i6D}JFc`4+c( zTddees`$Zq*!JL_fzPE)wnWdq&Lv(jGHy&~?NeIv!Z!o3vn2}~_xcEq8ZY51q56WU zt(Ogy(93X}u9f8C~u*a#_8H>Vf86XMY^hG*Wuz96;dk`TS@?g zZY~EjH!B&5YZPwAXoEAbo1UI*AroxAPUXq<5LtH9V2Pb|1PCK94hE)bIp<)aEuQgY zPle=Y62shbB491@lnK+Dj+B|nUx>%9rpP(6$_*?}TWXRb$~IP1Gz0K)75ck7gn2l5 zDQj`N;Z7TVO=!zE-?%Yx!3`1|Y-e8Lwe?lb&QzbShTe>vOfMCn2dXSDJW8yIr6r!# z8``KJwqzs?^@iR3I%=Q+LtbgJ3M>$Qlx9yLmfyyy9?=_@d=B++vNccY2Fqr6V2cG& z8h73seW&2NSxj(H&~$)W4%093AhR5@4w6DX=R<*{ef-v^ zO^a>z&<7pr0!@BqzBV6{%)5{i`n9y|HMR~={J~Bo)hD~`qud?AI}y@6%8+x@p3B{d zDxJnp-kBlqVAa$MW5guAj@Mete_?6m+trRjwjxlX>z0n-5 zxkqLjPlw=qlVA+xKAfq7AnOvm(_%$tvCkFs*e145ql3NKqn1NT1+py1gpviA=Pq>S zn)ztgm%MY}UTS?$l@;-*mp+j4J1PiZHVtFU2s*ii!Ny}3CyvLMr1fo=kZ~}VUa1uL z4|y2rgV1;ZqjiOfhERv%k3P9hJPY?zMo8G~h^R_FxDJgQi2pKYX63Sbh~@gTqM!3M zWtnYsH>KBN47Wya>1>jpJ1Z4t z`Q{}&rx+p|C-1}pV*nZ#V?d{KjVSq)r;|%XO0per{(bVb(d;|AZQ-hc1aR1h~@d zLIPK*yC3!W-qlU;ucdE4K}F&Tizp0EeL0J-4z}bh6fxP~22{1@{9tF?Dma_Gb+_G* zfM-pwPy@2J7YPGa$)|YFPffAs&Gf%-WPDYfBPTCYoZ{58DI{Tx<8xfOhqGW)^-kCz zc|b9Kcq1BRH0FW(;mJ=qtMzlwVmQm-jKaz6clTY0EV*RoJaXbkQpl$kW_8U;sufK~ z-_QW<&EX>R+(oc#>=B6kEvBoJP~lth_e#M}^M?g~yx)tfo>6KF4%~N_p`RpOTY8aX zdGYkiJ=Xrw66h^V8{xTA*>04oZdsvw@|0!4&-ZAw_T;wYcpnE>Q-N3JqqI>8sko(2 z@nN)MQGv%BDlJZVwI&<6#c96TfLKJ~8Tko%9`u^1C^<=HR$*|GsO^Nwr7e${IEFuV zOG%bFdydA2g~j3R(xR~=|LLZ?@$E+{jZYqmx2FO`^)T*$icoA|Dg@y|SF3EcS6&gH zfF+O6vAt{TZ=I9%yqs(Un-a~aXKn?|veiBv;&|B#*x-1G+Ei#1u6@Vk< z)BPD4DwK)2({C7}f9a6vwEy@7aaQ_;-0;4CbzxB`v#P~||M3|BfWyCBgCCIqbne05 zho1le0Vs$7)!%>B5@KfnT=1Wo$qnq_F9qSIL=5~&U_d^%u<}1v13y2Nye{Jk_Zqgn`(A;O+R<_?PoFWE}O_tf0ZbBNE>FOam(4wac(p_ zz&E07B9V17Ey$==uywa)0{_SzrBBAN2*YV=U*YMtn#C;ORS440n-V_VIkES!x?@HB zWKjBv-3U$~Dqt0t?cN()_F!RYYN2}piQTE}i_h9TJ`q3_CcvyW1zO)Hm3 z;fpf?^UjkKd`Ad{&Nvf;&JN*k@GQRwJ?^4`37fnC#Ooa^WuVG6$jS{?_;@4mvqI;g zo>4j<@m?k56Z7~3yJw^VXKkEoliv;?qHEov>vyr!sH-&$y7XvD-?d5xs;E`hbBs#U zY}p+pyF5At;c0E0f;sgb|C*2@rQ*&dck|@ya=r$|B%-_ze@|5ccAh%z4P|4_WBzW- zd)~pSx>_sH%c_X>kwXWro~_%DJ%5rfnHJ535jkgXqE0s6So~b* zDX3U#e`~*~%ms^M?IhBo%SIz)LIT>YFJP#Pm*yqspH&1Q-F(dLtY2hav&+pY?IFIKD!MQVjmxcUNno2)^XX44Y0ArDqr{m_5km}6ueAXJO75&HfGfZYzy)hHZT6f^AE_{VYWJ{laXz?OVH1!en zB1=3LkwC!}yquP{`E3kZ5WtD!y9RBrU4ya_$peWm^A<=5QYFRfzVM@rKByo9Q>z7x8fb77#^k$Kl$$DY|+qU*)1 zhKOV3QW=CofD@TB*Yg9~qz3$_WM z%@wKF7MQoHg9pj)@w?Cy?C#h~N!!hD+We=#0?-ieuS5UO)1jS+gQpp%f(@=dD!W`B zpP2;Or++zh-_<7sbcNTT2p_r4lz89=_g;>&wbeV#pnG(`?qJ$(?}q%~`8MVcD|-Vr zWx4&y_0M-2ANWy9a4+?up4e}NR^DE0$IQB!t;Z%L?vlYqKU$_#ns=PR9c2chJ2aTH zf-w}lI?Kir^2Z`5kD)s zrK1R!jCA;(wAqi{;c{Gd<))alV?*KbY8j4rH({!K?=b!(o^-(bG%;+Z_WZH&M?M?N z!rA&5P-lZja?BLKOgYd+t}Kq92(9Sbc;meVCadjhP{}puDtPq zL{*TnKIce08yU$*ulqpH^}k`w-f5*gjnM+DenK6smuc!^@|ZrvqgN_*%ypR_q(e0@ zRy3Ae1p`Yk!8p;W1V4ayv?GK_#D#~6)g=_u*-fJ8QW_O6J4{QT%l zt_^CaQU5{-#SsQg9CSj{HQcgDM{1gE&9(y1qpLgP)0wV+E4PE&k_rIJP=iAfnzz*- zN_7}Tr)@+AS^))&7pJ}?(kMA+^^QHc>2lWJ=F~_D$DwFPp?xYS!xyYx8$PTa=dZid z9cx+aw1Wa(BlZ1EOI0I7{aw@#Y`g^Fp}pq)EHsZw`y7wi;-x8>CQpF`ls0RJunyrV z_@%S{Mx&vBk5j|vqkIze;l|aUBOT{8kz{y&$;X(u1i>O~@l^+#Hd$A@ZD2v$!fP63 z!lh*ei_cGv-pq31GzgOyyVUyf2(~@?BE^+FWH)pR)2DXG_}#LwHdpu#C(Ch>ZzB? zXN-G#HCk_XY1);$Qkp{CDtho{RsB)M%4olce0cw<_k`}Yu!8(~Oqw3=Z~7A(zi~Tv zlDHR@jZ<+_{n3jtLT7u+9*Iudnha95+g7nJW4`X!>pQgAWqayUnpP2RRCmQ7HOAta z9xwo(!pF=A(G-u#H->3W9#z>c*etPIM2g(&SqZC2syg1-q~z_5Ctb--mv5_6%IZxC zJ~Rs2z}~JGh#S6Je_mh6ZuZ)<^!W3V>hDwA;;pY8O7ymO(fX@lu!;dfR@)a#r;dha znvyXE;4~yJZ@({@I_Ivcfmt@O+8g3vK-d|tBZ-<88!on0$WXvW7mluR7DpF_? z)0QsrS-JUh2*Nx`ddGL;<)o;7(rVFLYK^(7b$0^pV|26DT{7G&)fp>O< zhuOhlL}zWnGXH~s1C4)LhL7j3QJ+k}$K?e0&EICG43s?UN?L7+hGVy*Y_|^}dvF+= zx`3Fiaw4QDtx9!RLejmeXYGkP(JkX~QU}VSh*5keP=pRa_*V?UoiQ6mXLYHI`m%9+ z-}v_(0_LwA%hV9yJx=>DC8u=7fU{eL3LWey6jFSc_}M2uE`v)(Sto(4nQ*?~teG50 zHn^c7F;;Wdi4stb7(W{u8(~i?H0v`X1+fMnU0vCKF#I~?W0h~*`G+7W|9()-YXG60 z4}=M*i>d?33A6y&90-;$0r2IUcO)7$qkqM zhV!1z_-g2{{6!Sj|36zDKu!&W3*`Rgo!<{(K>Vd_-?*v8pT8QRzZpu`0toQp5?Sa3 z@ps>Dc1A$NK)*USu;cmH7xovvEw1JK-#HcH;N)2!OUMj?8H43>A)2ag_e2~qCW<@y zOt^kJiqfQl@$+|gmiw@r=Nr-G->OcYQ**S_XWAa76$eO>H*L^V{k-_*zobI@^w4)7 z?ecAe*N|pBtKPo9|EK67feX@}6OPyouOe2Tho=8&>XhExmEogw%?BxVtxUbPd<{@? zpk7}nGO}}j>N3!H4hTzAthDdxt?+IjQywc;xCEAsno*GNtoXmy+Oz!L#~NCctV)=s zCYy~6r7#0P)^!CLL4LKDxgMfB3qiH73QLW(DRZVw@_pYo0uzo^k@KWm3Yl)7$LM?I zht8;SHj7RLQtgFij+1W24sTo0Pxf%<5RG zhf^hr_G;dZiwsdG9I(;$(^q*RzfKr5sX`ZyJT+uuH+(Tt=S5pulZ~r|abeM=typdZ zW-p*vBfre2N142MYM)=l`Jk9YKGv3tXH{`^Md+5nhaE`@BqTE@nD#og*OnI@_{J=> zGdgGQp1w86DW>2RJJbShDT=;pkn6`IFioJ!p77wpx4P7FJqS&Jd!mN9Ic;FG3F8*Ka#Z)@A?jM}BYOF`G|`VvTU%W#a=Mc<9Rc7t$`*Di`eRq%QSH>{ z0}reEl{*sRlVLtIR<5jqMYof%X0ez)r6a;st`d45T!Z8qrlM0y4SehXg$m-+q+uu9 z5o3caVpNtWH3jAAIs2|PMSYgn$s8;RT`-aQ+EW)@zTpyZp>oC*H7Rs!e3eLS#)U%` zgRByRaU)MDX{Tng_x(f$*^W&=Z)n1RPe#lMLxNT*g^14H_a2w@vDAV>m`w88_MqXD zBJ)LvY)uTp)eU}l$&>isr@KNtvx=qv6O7kGR^YXlb7@nwwEaQ-8nB-0QB9`ofcyB0 zj#O=-w|xfP8dKI{&dbV=n7T}4SUUA=x;Dmr$cn4Mu=0VzVRa>GVoAp%2d>iA0XIGD zK#i0~i>U2`XLsq&X7(J~#c8+=lr;Mx#BJ@7cj{ivZCeRbE^(GfM96aUIPpUka*Z={94h9= zb@&Mz@byA@%nY82;(BguwQFyfzIA9ACKE|>qYp+`9^i$5k-G^JU~Qy0)2&0>_N~JzNReK&3+cE%=YFU2N^Nq^H3+NEjqNLOP-dw! zUK!itQg4zKmx5$X$1|{)s-=^lio0OBgOq6~ddSKSOsdd6Dls~w<{ou0wew%+){DoJ z^eXlm^!Em;lo0q}wWc9CVeCKR{<(f!)xJ*gh<%{H{)J-Qz}~87;Jp631xfSn@*nIq z=$)?jJU!hkL&Y>*86~D}{odg)KTm#3E8BP)@poF))P90y4Ys<}PQ3%qRmIfEz*hAt z;!Y26jf=;SmTS|xLU(Ccc_burVhtf%&rE+t)|73X6Wft_v2=3u4X)&o;@v%R!kv7& z4&NmCUEqjgUY;Nji*tB8`?F8}FU3^@d8(uW>rK0;%0n*wva+708ux6)*X%WiYSSB~ znNF|E+Y-iBAcl}xN$KfhnPZ_XR*zuTn|0tosl-PHa4OJ+9?1!)JYi3SC#NrkiDeHA zy%WvNu)ZP)Cf~sHSw20%55=0mh?pBZnO@UY#(`LU5!hfNUw1*AJ@A$K^f_|>w(G<9jksyIeNl%^ z!V_A~ViJn-v6ZrSCb^2BAIP$@qNh!>Qmd0Z6FGTyLiX#3W6P#1E?*0>ZlV6nOnr|T zUz49%+|`qA?gic}Bq792KF)S*Kg!Mb!#V^;=b@*EowCbmh5^(l?hF%nR)%yP@aoXB znp2MgFa6#cF`7Y~V;nwxJE{(l+RX&HS9C z>a*l8U(us5MhWG0ZZ33}zcw*8qe*)U+@AYP_Xlg(d$6nJt--7BAq&&5j|N&Tk1XOJ z;JD})N0pRDXOnOw$M~3Hz8K6cf|ibwV@zq^`sma>)}xP3v|>gK^03d3#`Vc$bX9Z_^URo`kQo8{$4`p_4ZQ`8B%cjVO)YqOf$s6P^b5LNQ) zgoT4!szH1)R9YVPJL?NlZTbvs+%-k+yEQo7zkKqSQ6`>7p0Y-};g!R8Ivcf3f6-&K zRkg{|p%|@xO8Ws$kL+90cDQq3$e3rfUx-jtiT4W~v$ai5#7UhK$?K5p38`Oge)BXx z?Dr4JrW=nB^&A47AC&9BcQj1m#7Euf4Zy2v2gyIiofePxk*lX)GqzP2T$~L9dK`G2 zg1CMKa`#K!6_%|2xYl4ZPHO*y1Ni>wSC|)SeUCXLo{po*u2Qa%1`~79a+>x!1ew^e zXEdjPK$NdyV0Br@EL>t_nzmh4ZGDf;4<#k!i8R^0SMqKSe7)3v^iXncbb*BVL6yIP zLVR$iF8ygFwy^ z@FErCm;Zzt-B15_*xzISzKo~UvWFTWam%S4V^y8lvbBM_f-^Ga?+TFv;UK;UM>S^@ z+2%s*MBW7PUZXjRFGK%8!RyV`wsUntLvWhKa8g6D&4(wk>NRwjwD{6J{0q^dOGu7c zjwK1J&b*D;#d%0ceHg~U6r8qFR5LmFfbIM$>kq{WZ@B%uiNuH7;%YYvZy*Ql=In`! z;}=vs5rqOY=f4|?g8y_r9{+8f0D{uLM$P}7vQ_a{LJIG@$wdOL?IUL3;?V;a=)bxq ze}$$Je(wZo>p3=GjQd(|3uP?WsQH@w@1&Dphw9@ZvaZJy&8~lHCy=PQYThuO$ z2M`qjK>_I~AW{O-JBoB7AiX4jNDZO4Py!+-y?1HSJE14kAT{(BdhfmWrsw9I^S*c7 zAK&*UBiY&6V`r?n=9+8Ir&t!{#tJiq4B`RALj#LfKhAiGLyBz}s;06`y(0q${dSiE zHg$-B$^=go-;>4S#scR;^}hyZ|BTJ=A`bTQ;=sg28up^}715Q5yg~1fVLUPlmESzV zGkx-|XF_LK&53sh$}fI=FE_n-qQS)Z&+Yva1ph|BKZ9QQa*XM7J;o~XXy;MlOm6(I z-fEhIv?GyThGlfn31vYh?qu9~VUBYZ;Mf7Hz(c1hJx!1$Gk>;67_IWr@x`^b4xOjA z{68W6Pvhu612NnP>GF+Am6`!FRx@z|9EJ%zVz9DC37`LggIxNhyE63W5Ac}3^q%%VVlRO-kM zYdBJ@9`1>waus56oK+nkA>EnY`&vCZ%94+ZKE+Z4X{-~1S_fF&7?05A|AmhHxuRWZ zVyNMUrnYz}`+en)Q#}!p(s+%AM1@;u?f(rc0{JK8)T6g<=GuIE(y>`Jnst>4q~XB} z%PaV`*G>hO8yN~uSKqx4m4_tF|0JhoU9 z^hhUTWs1Z?F9Q9Gvs1j1A^EW>KaKWE!xI%-NI#2{+)fVumx2oaOF=CE=A(bI)FsfY zzSY|Q5I_h7xKTXME^#%NyNuY+S|B)k8+}Xl^M4}#(SON_BNnGB_8;Q;|H)#idByv< zq*rA2Pm02EnQ=MpS&u62eb@&iE+hRnck*#_VgjdoE}Z@PEvuYH*8fm|35PtI+jvME zGlBrQc?C&4JsYvKVg=T)Y^{puO+jyEyxZ&477|7R@M7FZU($tdyS@8`IBfOln5LfM z^Xc#9j*gy;148LvN^3)b%Uu$3>u0d!NLfefFgDqGF6*67;kCz%k?Z$z6hYfd@V1FM zNn4(MYPCDl(bQ)d(KnX8qmz93L=^Lk4Fu6rzj&TwoNo5=FJ-NeZQCVWxW|Z@6!-7I zZcBJO>d}NQBKMDjmeaGgxiu%WCRE=~ug2Qgoltv8gy4T-@OSlDDtRiPEVz1mpXe1x zF=d_xJmbE4)KE5(d>!6ye=ajM*?PQ#mZtl3;zSL|!>pFsJ>8*Ux!qJ8B;o=#2}@;+ zcf;8tu&dzDfx<~DyIOO!l1leg%j2qkb7PNf0+m)>eyFQT#)^_gK&)P~uRAhv$~l58 zm(s*b2DuJC*xCIS+b5}alE zRz&}vK+xU$E@z3vXS`J2d9g9$)gLECl?f_qC}fSQV8dH+tLq!&DnOiu`9ul@A*3L&I$&O6W`d-~3vA;eNB1SR+UhyF6~+Zzj=JitJBM9;AtB(gRuKm%0=a94pd&r9Z@T z#h>xXgM_=JP6xhwcyF2~n9;1B=+DEC;JQgbjo}`w==I)Z-Jv$X37HQHJoS?k4}wuA7|qY zeP6IX*yxKMsS$+56-QhKy18R6P(y)15D zzBU{A(0Wj`wZpJsHauRJm?i~TrJ@_8a$pijx858S>k5|?FVRg><+>vTAx6frpQrcp zZ+&pBcIkO~1?eM^4uwCT8GTi~+h)Kb%L!H#Cf$G zFzJfL`In9858HyyO7C`?c6M07r0!wer-)gnh#W<4k{vG>Z(W?03!hAv0L?m}N*8J* zbTpd912X;~9K_hiM+=6D=GHCP>`oKJ4YwVr(1=aZE}ghB&qnz%5iOt=h(l$JFn!@P zmh$S34a4In4~mP3|AfRnZ5_s8xA3qz*mh&$U{R-Y*^U-EP53GG8xUzD=|9KnK31hFddwc(#IFkIs4J6xCeDkrB=;>MtG)}(AgsQIZc-h{x`zk*HMOJ2z_QjaGPHP?32;aICFA@TG zW(<2R1>yYrHy!DM|E3+^A26b&>J@fQ48PZh$RUDkT2$-9kh4M7d&s1xWzphW=L|w) zHc1?egZ=LAwH-p&bOC;+3}Zp(-$nI-SMr?`qWcjA*^Um;k|%Dz@lUv9mAX76c;vrh zE!5G&v-^W3a7x}12$Umv>>y^hksWbp@i>pBRC@B>J~SA5B0_X;L!yXm_mN{o(otAgsnaZ-y4(_WiA*y6 z%e%V}+4p6rMYE-JEj%vfU~^+pWB3M5Ct+B(r_cgg93-y`+o^8lA_zI5vjL_a*fq$BK@$QF9~If(QEO$C*?UcA2i3bmto?c zjLZrvwW?zFnObWiKW{{tVt?F71q*^p{KrMnOa^hk>2eULs$x-yc^-X#am13%yZy6~ zSs;#mehvoLPjDLE*!StEmDxrFLb2w#WT#=Obc_d%f8&iJYomg%Y7rxfihAu~I&Jw6 z+F45yv-Vv(d}8i3Kl(rx^ey=uC#o<^+-Jq z$>k+>l}Ij%|KYXn1sbSIWJAtoVEq-w>T6)wVJ5Ytz~DK6Q1h$iM!w(E(HWLJNS;Dtj@g%%wfoBSvQcP60oa# zy7f7mg?pTYk(b<`j5o;W_U^&r5C%hi?ERXDHRFbFa_Z$La9L+x1_@rrs}_Cx@w3zE zPl8$_I>DLbQI+`nfvwUjV^gTdn|DH`tGPrc&`;wa z!{6*g`-!(wRVdzp*OfD=rK*LwIfCUy(H)2WnF)&bsBTa$790_xT(rmM@wbG;iRF8mY=4j-U(IMBh7l7}1#- z#n`NHp@4jEYd>7%VL~d_0kz2Z?UNO_DDko^r`+5=gLZ4~xOdx3VUji2 zxYe@nz|Fm{lPOoAigTC(L{R$H~CFk-|p1&Q%Gv*{HX zLnT^PG&eI0dp?0>t(Li(Fj=dYkg8rD-E}~goaWKdlar&PM9#D!22Y&m);E|P&Jdp) zj!1*3>&CEa(*wv6GEqCaTtBo*R`0_v?hME`qKSKPN9z77aM*P#7el!BwAETs+v~cJuJ|GXt%u0MJ*c!Byo|Mw?=cUnV4`0c->TvSh_Db2~NQD!T_zEU~>s70Y|9Yoh8pUS&-VWBT{&}8lb-R$% z2hxqu?3c#{f;d&Kzw!R67vaomG?LKL9WmfJsF^EpA#jVZdh1U36zq;2_P@vAQ{u2m z<3=jy;UeQuVPxm(jtayA9VNRwz*pCvM&@(g_^X(1oy1lD!UfV~uI)r)Vw)fS^;MHB8_#*O zU*N8}ZA6)RAip$?=l~17;l&J>lH)Ov0|;6jH@CpI>PLb9T}k?Q>xAiwqhe-?3g2~w z@@N(?KllC>O|gxYWF@vs5{y%xBD+&s90NZ@nNwDbtQxE%jz9LK^wwp6t30ZRejHAS zX|iUu^%n;y1`eaEpRWob7aleO@!%R=!j~PBeG5W49cRqYp=3bbuSbSAk=$knS?1qb zS=Q1A7-*JtdU^swx0<4@XDNo{1K*Cd6Q`0@yD!-$8vOXURkS0w51eXZ`x=-zA$4^O`~ z0SOL|A>JdAsH;=cjP2QA`NZ64DDA6=Q3QWY zF;FBHg(l7>OEiQ>-reZG+ft=x|50#qhEs?1x!k!^VI*~2@IKF2cS1d|42jGvB|SRzH}DCaEGTY@-j|*4~vW04m16A z>!>K)^5e3Ox42zI+L?&1eQ)g{ROBXT zO@AQ-X4&Lm1y9;GoWCYjCT-y)!E`pUQ|7c)iig5O7YXI1N*o_-fhUcWNU#^u58qBK zhE92uKb&>Ln023U`$y4LslNzKu}SWa)s9&)c+MOx2)~Q!s?Fd(Zx_{uqy3}CI-6Y@ z18MG)v_r}-KzVI36CTs*Y?Ml&q6@UGEK0X_Ut7ZF0zzES&xe9RTjkm!D!>I1@F_ht ztxVRS$c|K_Bx1|U_KLD-70w)qqRH>!w~Y;>tC8Lev@0%+)G*Lt_kOHZQxP*z_Ln~1WD`5%ENgt4WKjXpmc;QDoqD-H zqx5se-_I`soWMty%X5T%%oc62n=*P%`GvWNT=&%sX-ksZU;uN}OKM|k5d#|ig?@t< zX_A@^hvWqtM=VZ6(D@c@Z5s!x*jxIgTh8NR+bH&)*OiT`X7vyfIZFeZx1}ru4Bo%f z-O8Tcm^V@VWbCjvkc7=}eMe*{r2>VxJb!3o>O_(ye2XAcfZgSlT4PChfNDVyjPs*v zB=FgrUxrc&DvN=OP9xTn=RSQqHJX#yi%;Dq+S7DEsR{PcplehL^U5OZ&D+i8qUkc)==pZ9gNtI#1@KWcie{ES!XPSSE%$za)_32)JC0_|d%nF(P<{Q5}^nIpZeppcbhwB-N zQ^JT4FqmzVg6pls2sl^|AG?Gw-;bh1c_d5*fM2t;H>dMC(xPj=P6{tM4*!sDY2Tb$Hx-ipB!z>Tb0_&6ZX&FgKJdb zKmF!K@K(NKYtNIgaOB7^bkRPuu-}EtS4ht>T$S)~MFS*&td;j(dz>$Boeh5?T(&4& zG*I_d^-GIXGj?ZXBRC!N_}=Om(>VSYCao1cey6JSuNudsD|1QoXq`DGdUZQFp{y8X zCT0?D$PvCA{8LHAa`|%|NeVac$U}RjszDV>=@0_h*jh=%1x+L8$_`^|wbuy;#q3rq*XD&v_C}x_Xwv*wN zNW)slymg}RfYlYZ@Z~p@Cy6fGUg1o;aqNXgO%taE%;ksjT*9VUw{zq6D(vv}we_}r zq%bVb^bSy1FkSPTz}$BI3XpvNGGKMxfXqRJw*{Pf z`B%b{W7`Cutz`>e%ZLFW!mI?!)H`@QS7smB!`_Ye@Hf!I>`tx=KxL!Cxxg@k(D^8m zsM1qRKiTW9){Vbd9^)gLAz{CQGY$Vq0$>##&x`NMw}w27Yc&6a-&1)M!m=`bJQ`mH zNh7M&olv$!I#Ki)#8oE~JBAFHWeh7@CnfJiFs7XB<^@@KDHn=H!E%ejF&gT&C80|5 zE0cmXPkdieRknKvkrI*HKJ%CmgO?!ADqfZ$N=Y8$oA=CDxD69*?Jl4X82lvOZ!VFL zfbZV+mc1ALNs7)+)43}2bu4T7c7%Xu_vl5>^FDK@xBu~b1W`gbzm_hg`^LHvGrKzM zfIt!b-_y%yr4QMcL`clD7l)@TiY-1``K2|ToZ`gY!taVnS`v?vrz@-D^m)%bsov82 z)9i30o5iMg_=&BuMw4QGCZ9-{@Q}34q%~lTe99X}^^be0Va{`$7qUOGV`hqNQi?y5 z@h$8#NFKiYRaYdW)|ol;*t~Hm#h+pR-r@A`7yO75-@#B%3=6Qr%l-K_=hvtg*B^(JATO4O;f9)6ClQlXGFs;YwmeixQ!@zEb*=Fcf_CT z@*kANHUBCjVR zW8ThL=M{CJ>6LuIi+(2eI-SLtYYuC`fvv6CbA`SI_!(&VVrEh`bJ)d~>d!dIQMb*e9f780qN7_<74($nKmp{>Hnd-ks5FO5(26k*~JS7*gAz z7P&$nPE0u@CBG$ST%&s%OfOj0YKEHRZ%EwzTrb!VyRHEHzq{uxW_#1t2e0>axdt|Q zaEypc!{^1{&dEiaaGZvDKEM4n(%iENOsx;IGMS|!ab&w?%PA<}PU$f=%x9M3u2J6! ztw?Y3T_cH6VRg7pWD01|GWPZ*No|KOb)UZsv|iJws9cvgM>($!i%LK^9z*O0qk7?F z6=h#*`}MMorVHpcB-UDbCl0%vRot%iNJ@L#aqTH`9AFbCx{GU{hyLTo`)>o5xls$( zXOq())cBvKIr%dJIeA~D;Ox-<=}rTtzaCTEwwJ^wBtoWpBs@7etQ;f-P*WFYN7FkG zq|}Y`?BsNb-i%*_wqR7XNCJDJR!?+9G{tDfIlGA-7ZYSE?PQwyO;#*^es~)9( zliED_wOPBq4{&l%dnjEgEsYbZLvehZ*VlVeE=ncKwlliry`8e5O3=R%YAL!`+wMK_ z>xlX67&J;cjOw$PNU7>G#Q>fi)ereFP?Cp=2T>&+80!&9fIGfch~(ttb-a$@*A|H+ z=?Fs*8JP&t3nsY2Ucq$YDPv&K+9KtOBEBH;tD(>dhdax9BfgtdlKegkOqtuy-XDJUR38vRJNtR>VpH=;FO?^~K@Ob@l35++QbH|k)fIaervVFV zjUY?&I5mu-7NwSV_m2K5O86aIM*7HS*ESo)CT0^9H3_BcderoVzN>UEJdRt?Ro=hA zj`<-yJ-s1uy&nO|*VVilzCX<1W2AY1o`1yZ%e>gwf@ZTQ7N+JzNV{Uu#N{!dFvK|u z-Q$+h?ujyjq|)uY=42^~sQODEj3L5%$GmIS{k>#z6XrEH^8qc=sqE>aR7_d`d2H6z zgdehv{S{Y>jFD+}?njr0Oaj5Sm@>g6PjkNdiw58A^Q!KRt(Kx$)aJeuILp1T$+5t1 zbX6oN)O-J?N`{0|J6fsdv-b~{2QJ3g>`}=F(!jIg z(xUR@0UZtQ(qKUU#v($|(i>HQNa+*WK(}GX?d9rg_0UOP zTo8hf|2GH|a6xF3e=z@1D(e3RVPRR1ns4p8&{UFD7{Kl+WSzofEzrxR@LTkl+*a;J zqyp17Y}WNX5DUvH!{}+GauldcIE*kmt9AU1A*A0p`b(*@lsIX|K_hY0fCaD!q-4V; zSOydQ)^tMT?Fkn-Gzmp&d7FaO>P?Y1v&va0qf(u63RU}h*#$XsS}f+HEH22UzS@kZ zIikl55Em-mMzQ__&H*C>l$0EyqB86bpGdE)^84zWi2PRtHP`aj3kMD;p96Rpw;=LW zDK(Q-A17g5?145)?`~l^(yX2#GLcqq)SSGN z0k{qgn_}SstiAX}_6=5{J0q{K@l&Ku`%_JwcUB%%uMO6?N7iVOh8R5mbO2!_dhM|A zL(Rdluh90H+wdrcAu=RhaN~X*wZbqS?`-5ewoi5rIm#B%r5if%_`H}(d4Ae3Ynpk<<`q4)9KeZ!E)QOq7B86_LasV^?34_pj*#;C>J zE3v~v403kS6r&rWqWIaQNU4&&UVg)V6iYdJg8z95m-(UbjH6*!`n{dKSV^f81v&a! zbl`-jYZSv?1CBt`YI+|FH$ z^9sK(e@)!?7o5K)gX~tw&eyJ7sD78I+np z=WSkSM;}SoG^AxZ3nnB5nEBcK?BGw<6idh1T?*JE#LUBTPPuWDTtid4U0%i}YcU5@ zHhd{~{B%Xu-RsV(e;35%{PDP}31l~xR0?Hm8L$hNSJiXLJ7hB>3Q%7B`1bC6r>=~m z*Zu=Wtl3JW64t1V|FJ9ZeK)9w{xOkhDdRgv^rF{zHREeNE8S!c#6_wE!l@gBJ|q!= z>AishWsQ%#BGI&yGT7{?!bB}C%$GE(pKaNHroe}tf7rEG=QLYDP+MK#J_&a;`bUzX z@%dQiumbq`zCW$HCTZ8C(aa`a>i`=9GR2Zb=$jyS%!tKS`5<3vmr0dD$SjSQL(Y0W_E8@ zz^$=eL}UP_yxA#~Eq<;Z0rME*c`|NfLTsS=JTN6OMf%{8yH5$-+FK5s7Lt7fsVKO! zDmL`iw8GpW%i2Onbs?@fMfi7-JLb*N@$NpGlNVe3yn)D*a!+>|WzTwL;=G)-XJg0J zu@9bOE4peJ1J)OtZP>%8b2`cwFSBR=ggf{Qx&K+c%Gg{wJ%uy25MxdN!66nR7E!?> z5=4hTM>2E197d)X8Y0dkB_razxv_y!T4noiePbh#|JsNpw5(xcD-NQ1VRM z;aAbAN(HtnzRjB}HY>0YuzE}o2|IMyAqr9#SZYWcHIyOn7x$M;EYXQu+IKql3O25+Ob*oGf>34&Es*6DjLO3Z&gqV9kBX(SruOC46tkyB_3 z_*#j@xzLtD*fU*1j-8~Xq0pBk>lse`mmRt@bRN%s87{x+oD&+@T&U03uiMAOI~X!Z zQtt;ksq6>M76V=-`tO?-!6XxB)1>w!acb2gD`YYUmw?D%kp)mE2%%*a*+W8z7%($W z-_ESny2R;&FKwQ)Va_}}zvnKvK);_-RhT6_8AS$S7H%X~q2Hno8Tt>L!7{tcnN+j# zw(dOGKUCcMwXwviLMX0EWqkA8mj%l!%#$+)dOZAs_eB27baofpRvR}A&ZRkD36$p) z+T&wD4UHGG>j~?JPM2|GCDxNw;WNvL!&4kwrg@PPY)`Er{UnaOX7BJ?>?L6805WIo zjmbx)jA7((!R%RO{hbM=iAFTHVO)vJ@OCvCpqLgK>Xib7>d zDZtwjtk!6${S1j3oh@@W)VquUl|{qe5dE&ClaNwhmma@Zl{BuOa++8jpJ>#%7@+Hq z)-qz|f56au^Nl>K3fBPiUmXL|e}%6S-u#UhF}aGxf=p}1d+4SK1@8-w)_!}^ox+eg ze=b3go>3At^2DX<@gSSw8%~a6v|1l;!2 z;nomi33mH!ah>?M6sDr=wj{RjedR9)YG=~RZ`zujYEH4)aqa}E{ zQ6mVXi);~Y0K4c}j5fTQj{rdxnO_PwBM37|4&$v!9DaF}q+3x-zc8mTMwAsq<{ekP zV2}Xgh;I>i!z=1FS68vfnNa;jcQuYVfPTp_P5?0b*am8TW;q9G#EjH0?T<)&s@aP> zzJfr6>YLjdA0byXafQOfP13kLi{Zgp{oE|6t~@a@`O&T}K# z>#$*sLGTMS!UQ}YIO3N_wt@!NL4-+uR1$EX$$S$;^|+E3^`!qHSXlb^V`T?X(OI1;L{BgblDG4rizzkG>l&;bP~A0p$gzBFA{CO^&HL}uf) zM|8%7B3w99HoEW)X$9$5;6$}{|3qu>vHfn?G=pgoYL?giJ$4xp3$ZQ)nn*|X(I40aQiun} zwAjod?Oz-1c_yrK7UXBSwe7G!Rb*lO>;ONoa`szNhzjhv*2Qg*QWN`9=eYIJGLcwZ zWyrPZwoUf`3{=r>g>K$ACx!iQBRaD*KpEF6T~TSMT`%JWwZy*Pi4@TqgE$~M#Ab0i zh|0d+C`IDgGpbp@_b3WlVlcy)v!rKBxpA{k22qC{d`jf$!IhAd#p5R$VB7Hy+AzB= z#*2p!Zh1^thT&dxL^8JVK#pz$2WlQqKnU`YgaxA0jE4fKXcN$2dr0)DWwwkoWBB1h zAVREj_InajV7p`WbooSs9u3Ef1}qF6zB+aitteYP{O3C+I8p1%TAE3V#q*A-bqgsZ zmsxSD)-%`P=if!4vT_=J2fEcAyK;MRwb!d~tvY?D9=@3pqwG_w4R~~`Oa7s%z}y3# z@I9)G+&@N8=;zmY@pI$#oo$T|{|k8J|3|<_(XRpqhfE79jQ~`(f#XUrRmz#vX2Cxj zjlPVl#~!X=Tin|1?$+Tw_(h6$giNs@D;r_~Af)%1dm?gEc5%j_UJ0N6pUODl|F<#@ z)t{>sYi=tc%I;tyd5s*^6|ar0MI458JC6K2@lb~#$UjdMp8W$T{};3T5A65P%WIby`n)zg#7i9c@} zC_e*Ufdy-c%R<*byK&iT3yg{vQ;ofUW$NHb*Tg8YLK>xmcINP~?Va;IHP1u%&=0~! zxP2iROr#B@%I9MeMaS&z?OyaDGgP}_zsWF=zwx}!ndFPPwaYV0&M?lS?Srlufz~y= z_|YUG=1t$g2G+#6w8_vkZ8o#m)fWCe6Rp?cZ9VHp;?QiT!mZos zyv%46kCD47DdMSYSFTT!``A=H&f*1AgjyAA*z?Nw(7)=i6Vs;2Ifxe5Gu(@tz&dwt zIIE28WCWFWc=478JqP&P8t$iVXzKW0?vIA*LpapA6XK%Dc<%f*7->&;#MH(>VN_X^ zq3co^-W{$2=t%;98k+zzcT74YZ$Yu}t|ZQ$@2DEkg{U^zF0KTfqj_$ga~7vd3N_r~ zft5GjvPUH^pt?9b+q3t6yQUO8FHZ4)wBu1y)ajC9VPW~GaYFif_~6V?T8l&+weH&V(L6Q z`l#gQbbFjC7P)J9%Ok3E#65O$tb$>D;?nr}4Kb_PHE7!9=Vhlsp2jjUDaqfnv+)

pG8!@5nljg}B~o za>JlZt-ubn3eOyqtWB|=-nj>IaxeH={)_jzn(Nrx&MtIU7U$9_tMSn)GMk;$*s{JO zdI{(*PQv88Q}uxgfcdtp$9;3tCsZ`HUjlcCrwvL(snSWkCQFCj#O9hM zCgFyEtUyy|aNo=C`d04KB=++HaPY2;btW5pG6 zMoPy!$j%muTJ=^sggPs!NQ!r#^=fL9`!@w)2IoU#9x2y&P$aoax*A*i9q3+LmG?S{ zn~~~ZhMEnnjsK8Jw5ZpClXQ-uIHXzG@dCgb{5%7PKn7e-P%CTM=bjB^og=r`U7P39 znp#^2S+Af&PliX%gKF)@r_=H! z#e)Lxgc{d}$0w0oCN9dhd2x*bb%E4khf^=g@I2gR{pBcj`FV_bD<7+~{IVKwOy=BQ znU!F!H{7w{zm!?K-y9{uYWsB(Qyv)kHy%`)DcDqBsO0s)Hk8M0vT75wFL?SKG%py@ zeHq#8P9}RHo3)E`sOSJU#x76g1HbB6dVCOay+0}Nvfi-R;?O(4X}gLKQ$)vtSzJam z=$eKYmeKS6DzAwaOX8|8J}Y`0`Qk1L>-unbdrt*`c~H+d5@J|<1&B7U`n3wnsqa*M z*1YOxYyWs^eIcq%N_WeW<*V79Kzmi+IfI+3sz;%DylZtLZ9Ty^!TOGyaHt`yZ!Ae< zAs+ON+=bL3bomm^(4J=Msv}&t4J9P;Y49|94Gks`LpZSypuHp)H@0UN$sER$q0k!~^N$=K0qkxmh4A$2u#_6NRghSdE^Jjwv&xF->M`agehdlO0 z;-Tdl`^5H$UQO&u)scEI3aq4~rJ?&se*-n%n0{7OCDSZXEpB#-C&RwC%_&yLn>Ty8s?9BA#N#>0`J16~A>?y*ixpICfc3Co%Mvnq{|4=P6C{7EYW;A5#~Hl}rCw zDMh5(??Tz>grL>fxCUfb{ke_M+Rn@l%o;mtqXmm)T-?mE6_`BVibpQ5fp#VANet|f zMtm$fGJ0YzoO|b_uFYLdjMGXxWEJUGuEd{lBrU(-;(z&4IF8uAOuxc^$bJ77E-(MW z@%ch=^fABS?7v>V{@48A-_L)&{I9yf9m)Qe5%wBK2mI^hKTJT}FaKqT{rB?Uk$(>3 zzJ3|{&ou&YT^L-s^bdtmn_6_4vPr%5DAi|(F_dmX$Sqd=hM3t+|NGKbPz9-_ZNQSN z+hm7BKw{&k{u6G4Sd2yU0+KEmlDniO@YE3E9iNC$YP)_M#MT#nLM_59uj zq0w;2vvOtq=5VE`xPnESFrtx>=h)-bvg~CyCe;%_N0D6 z3MTLo4GHZqoPpkN!<*SWH&r)KSNJ&p4@Sjm^DFNptZMwi);=Ybmv^(PZgJGA^{m7< z^<8x7LPAwqI))6l<^LORVCrqv_{Gu6xK6^6fJCLCnUIJ_31pX$+sB0Ep8d7r4=e+A zzFeqXXVUxoAg5AE$xd;0PPnXE&xT6}U)23KPj^sr;@o?eeHl`QGqb8bsw5y8>y#8N zx*E6wCaIp+8R;@aQ~_NOigLP-zLb%w8CyNq(87*aU<5No92`y0>p?ptF&8qB=MfFQ z%#JU&!)NFgO>9vbF3)V=wy8g~;s7w3Q%e-oc}7!HYHxTlSQx2-FK=@bbUvm)^4!2_ zqjGRFr$yZ_dhK&HySN?hfB~*Rs>+T;y!|R987P8UVJS9H-E>&`1C;W=gx6!~*wEu- z9wx34M>LBqD^tYoU^tPggY1CA({rtdgSv*JU9be+6 zrl?9MpIf2sljQ8sbMNvxdGZZ&9AtDKa^dIYuz=FXU6U~lwucBC*KnEwr96WB(M&{nRK42}es`^0* zCmtdzE6fbKA#Ike1d-SP_upkRuV_d=rL7m6CqE8Pzk8asbH(Ktzh*14>$Rf39RF5= z_P4jt;!BhT%G)fzz`yv^E;cb%CHk?YkAGJk&Q9>`bfRgJyd74j1uC{1o*Y+nD0VTD z;(Fy6s)BQ9FQ$JR+S!KYkY+e0r_>Q?KJgL&M^k zbiu2}J~>dgsgL=0ghNHdIpa$0Ace)*bE(1K?!`a)%Wj@ZQXNfD+vnY7H7okzG3J44 zY-zILPnDkqXez8s;>nCKkbSH#@ke^`F8G>7k4{0V=<~5eRz z-LZy3za`CEH_h2nmLh5=wMTT{K&rKr%shxXY(2f>L-LYrM4e!R4#NFtc;qx;_AvK2 zz&{3gF-nuW&e*6BFgJnv^pgziiQsPcMIl&yX=G1J!7!~f^Yet*3H9jt+~P!PEwq*a zyFj)R;mF|^f-O5V163-?!m_G;5lYrXhXGwQ;Cfd2qm2WoHUs|Uy7GX))^)VGM@?^U z`;S!rmw}X_{SI_L>7ua9ue~J7+IvDb{%d_X9JKG?$5gdJ@t!dSzF#+}NkR6P#FBB! z_T|Mnu^!^KB9CP%lAi8q@DtISX1^cs6 z=o6~X*okdnS4PJ!FEmA;g)*jrT3clqtx)@m8dByG*(6A9l(no6$fs~!g)JjV1l<}Ge9t{)QgpXn#*w6I+sLvs5;l%fn|L+^_7Io*cfV!+R9sNrI0A!Ex3ApPV@%4%-JyW*Rb%5idL3Jaf*8D! z{`)r>4JV6@aDcLbhC@+ker&d(S8|j9+xPV-(+hv`?`6iPO+Q)l?EpCYVP`}>WGc`r zNG$atS}g>~(c2_Z&wp&TYS$%9#a|Vu5?Jv&*c(TU%!ABl{Ee4rWwJ4Dvio@@l&iUI zp3q2&!AD1sGW=kNCD4kmT43M!9yUm8_*QcsR%gf{QFeZ=ZJEvTI6uQmaX|sDzfX=# zcO%L+z(vHsxl+=xo%#;(-qLw~BsV^H_m&6<9?O)&VR zLG|9CK{K^AX~UwtZ2^}PXh*M&_t(zfc(oKDG!ocy-M^R|;-qS{uxz5NsH|tCqXCp7 zhGZq`Nk!wA1q!AMGLY;}MKsRQ*!q;!o~t6IjjzZ2^&S|#^4sKI2&=(cK#c$m;m``W zN(avm>PK}}AV_{<{h9EB!FJJ%376r~pk5$pUL%Cy+SLedIL>1dJ)$ZPkh<7>7SERq zN$V{LAg}_NiQkloGZ3kT;3t*|8xArYNxZ?0CjM3lzbD6bp>;74cR6`o(%blRd^K3` zE%`n%cUPz53h$#Mi9rdVQ0s(>9*Aojl471nEfOy@7k~)1|MPM&E{NBYa*?%|QZFps z$VXO@%S4MS7w5cJJq!nOF#b%;JLF@IG#f z6ACgecehNk8yUy(-4~7KZtsf^olD9K@!zZbFnVEqL6Q-$Vp1E%jb3HA9ENtfHGL3b z&PyK&x)r{+i3HiuRJPJ@by<_E;{Mxj-r@YRth^XB+WPkD} zo1W`x7wyW!Ti9Jr>3Z&ZPHl4y*=2pIEzc%9H=WB!=E1H8lNmeTYIzja+*TEs7?|Bq zY(p#UpjZ%VB`)e2Ip00%I{%Y_Eq>jbXktFmS3KZcp;mIH)1-rxa!I7gD+T0Ntx0F$ zCM5t||GvMDmq^+mz8Lfsata18EG$zZq2_MqACUdW-0=|!ZR|}@HSUFwE%DtRA6@S3 z%Wxno5?X85d_p3L{jhb7X))$BP=j{yNhAvVl4kC63sg}_`5R9mCfQ&pk_1yQfN1~6(lWPrb;85P|e(Xo<4u$(U|vF8$W?+Lw;-0g)%cFoY%=@K=HT+tjf%KR@lJ85Au~wzaaH}E zAA>Dl?sn#ugK@_Xj^4S~H%U$|N1P`6Dk#K@SQDEoI!M%$?Cg4@QX&3MBUvE<8@7Xt zOQ|Zppz`T^Sd8LS!?rT4?xW^}rly{b*62iyaQ^dr7aCEzVQ(3%-}LcC={|Kyf`4r- zviK&278&udD37nvcp!?`*+9*?-aJh;>0Y-zHP9%#$1;{z?nkX4W0=&(XsVNrdAkmW z`F*;PiI}fCPP~uXipoW?pBv34ITm^Vd*8-knu1$NUH7M(JsF!tR;Z~=_)9iETu7h7 z5OvT05ap?D-7LbrgXWfK9FWdIdu8U=!g(uSo4L7qfqA15GUfUqyJ zWYkenB!~jqfS@R#Y_UOE!V(t(vLh&qKv4EQvdAi7s_wl}`px^^>u}lx7Zb8RG6pqoYEG$E{VZ0+MZU->OQ7p(&{73 zpR#7ici`?eN@cbjC#0xP>~ij?XGTtjy#2UYPW1a(x8#l9)%{e4!}gT)Lc6mW_wGkA z(rB)x9UFAdWv`u)5$Ka;{lzFTJmVVVqu2?^Nl-o#$V!1ykthSifj|}%y&y0Iqydys z29RbIN&$&`a>@X;fJ_w1@bC;O24Bl5rvL;5(h$0!{}c&n4y=%%FTyKg0Mi6s5Ey|r z-(F(>F=>UyiU|jayjbx!CKp2k91amXio8U*N^qNSq6Z0p9s_blpml>ZNI>`mUP2-h zSf}M0@XIzV1pU7TrLkh`e}J*+N06Ok6@|;c&+mf3MMwuCw;j^J?1Uk2g!u!VQQiy# z00{H3=}$rN;dZE~RTy)X1k@6$GNd37OMxH~O2CJZC5{LNWCf;@q8<2yIpEMS@XP^KFO;-|)ApY- z2RLHUe;ERSAchk^k1iZ!6(K_q_j;vpe?W)*=|yc%%dP7D>22bIU}=JtzPso0uk0pfXkm>=(4N6lCwakRsQJm@H^k%^~kYpugrn-h124 zW{fS+QwJ_|obCHjFy7ZWIJwz4?Mg}D=hjU*p(Q=7vOjrt2xhaaWkPGVJ@m`{=;4;_ z_QpH9YCAc+ZF^Ysm@el*WS3!`+ms)EcDB5ZP(QsGs_ou6dPTA{`EpBVjSRzX*N&pj zQdx1L_a2sne~-2NA?o#wr?v{jL~hchzc1eKd_Gt#H)3zx3ZM0jcg^`JX>o6d9?&k) zx03A~HfnxuJ(NDgW|m7k*d560zubJnQm8nkqv-%WnHGn~7Q5OM8q=mVb=59#-PFpqYEsHAZc2?rWMk7uY#oYV?kp)F44m zEDz-r2T}Ygx3;eE+3gDX@MUuF&hiD8?Qs6sP34U7XE(KD<~Ft~eh7NTwiWb1=Uq&q`h)qIMH&+k&w`)tFC^D2(0SspbVmSZ_;rfuQRAo=Zcz1ki0Dc`)T zvSTnObAPl%dn9LxT3j$v+nRaT(9SFOjA<&Y3OMAsV{uoI57zFt6QWgukmR^3ZKQ$d|2UCm@*eG5eNg^)Aj4 zvDjnHy0q@D+qDD5?}P?C;`e;-rLb_u&t^dNYG>iTs{;jD`8wmDZNBO0ytl;|A$!wR=o&M#<{wFzhVVPU{H6=-j_50sZAJ(!8bB9Kh zI!Eo@oW=^aB)R^EUvI>!4dM?UuB*u&t@Hley#C|B`Wn>&)ntVvj?aT@xi$#_zVFYT zuKHLl{e9T8){g$xlr{;W?}pu9sN!RqEfehP@6R+=R0U|-vE6TL+Y3AjX^8v$q^Ngm z!K7BZd!FsMS)R*D!lcnq_sO=t3*u*dDoh(R@y17F&gWdLA{h%0OfEXUX@2}JJbb+7 z40CT~L+{j7c4j?iP6+u7}A!S{PdlfXP*E!Gh&SmE z$kGcrC`-;FZI@om6G{;x5vg(%p#tk>*R(4Z62{Xh}Xg?0wU<9EpWvroW#$nPX~y(@FIa zqeF-4L{q{yd+X<0%ktZ9_8XbTf2j=PBZuwVR%#@1#d$t;V*DRffoX+pJH+<-N*Eg} zQ7uY!jqrazQ&4_!N|kyZuV_*}HTJh=O9K&8t0A&#R*sVgEwxrR#PQ|1l1@g;a#_!_ z;Qm+F;u5vxGOO&JD~FuY{kB}TQI?M{G{M_Thj#q>X>r&)?DR*@ zRh%gHONMo*Z^H9;Uzu{56~2OmSyLLgVICb68r?avn;j`nmTIXJwsNkes_3QP7a+MjUx_bB9+k_cwC|cpJDbvlT7Hpii=hwVn~qekQng{t7`U1q`4SD8-qrs#yw zx0OttgxSNPTJ1nO7)sNdDG8x9l}v5W37W%|h=9s*4y$9vF?E~P(&MNwFYU2o!$x&w zBc$%cBTJ%-9-5S*z`23xuy^_ii5(LT`xi>O^Xk6onXfoo^Zz%;krtEOere10h)-Z7P5XDO4$^*S&{ zT(p?}Rt%7>EX5+_Zumd1*Y77W6B?GBE7i%coJCLSqD5XZqi_(m;rMV459$a5byzKW z`Xm>f9E5E+rffB5ezeD|~Nsy3rAiN6F;OFUq=y-3sAMzoO5ZLH0zdTw7Y z6>YOX&wp8Fa`pg=64%=p2pdO!Z-{ z%HbCkErHL7gQiE^WX;lhqQg+xwl%z8k+wa0?4+FV95Mc=#Y-t6gC}nzV)uV+6*z3e z?yLCQ?nb?if%aK4J73ScOwNqr^SzW}x~(khf~s>&|M7ZBBMFB9i6NJmmu+TI8hgfm zDxA7Fsa_{;bNptLpu#49!6|EfYlR!tb45*?bEo_RCbKLBhW8SlsSn1Vc)d*iZ9+|V z;lx1rqms%PZI>9C^L+=FnyT_lD)5ofbtLX)gT@0=FE)vL*C|Yh#2J@9CwuJEo!yNS z7*#cEeij+$D%)0ZN4n>bad8`SkD0o&dBYA zz#Ksjj{p$(H$le#n;HNlhp+@gH{U=8FO~w3h$eyP9*rF#=!t|Rz8*_(Vz2`Yi?(Kg_{I)HmWz$dKltDIa4EOkwp*O_Zb6&F|9{|Q4OlGXqK diff --git a/og/blog--05BpOsdQldpc.jpg b/og/blog--05BpOsdQldpc.jpg deleted file mode 100644 index cfc9e261e6b226b580d311c256d49b01da0f4366..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48681 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 aJCKoiEtmoaLN2KS3b@1kz&rJ`?|%Ss?%PlR diff --git a/og/blog--06AmbiguityGnnNeural.jpg b/og/blog--06AmbiguityGnnNeural.jpg deleted file mode 100644 index 895524367c7a9c9f11934d7230f0d95d921d448a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60394 zcmb@u2UHYWyDi!zL6D?0sN^IF0-KyOO%O@aO%5VC=M17KIirANXmSIMAUTR;kc@;T z=Ny%sZnb;=XP@!LJ8#@O?yI(|YK2-|Yt~#}eQSOTZzpdTKqSxQmE=Jf7$6V^@B!T} zVN5E?${MS`RFhYF0r|V28w70Fe}O>u4sI?l6=djiboJV!W24;#?# z$vC=o5NMR+f2i~Sm3`OD+|?AQZ~%OnT!0@3Zk7x-lN(S+ z9ewTseJKl^n*rynmjCVi^?y4zb#g)1j|A$7+1t6Je+#{#@A#g%156V*;sIYOkSpjV zNC6~+?mv(QHb*!JByeEmOV!0vyzH#(q*3b-#v;A0801DS*9KuRD7kST~0 zIO75R1>yz?+)jgJLD*PW=zqY5gM*EOOMr`e=MF9rK0Y1+2@xqN2@whLeX_^o_a8ib zKukhTOYxABlA4;Dl$?%%mWtsq6*U#Q5eyt09Nas>)kbRQE~lQ~e)rx8Fddc$gm8 zU$8J3K$xT$Sfm)Y?I3D2*D$d#&{X_q!@$J7gLfAP8w)75BmrSyVS})6uyAk*@$v5A z;Gk<`~=T$r%M+!dzV40<+62D0umWv|h*O z4Uh0?d%RD8SGF=S%gR9%G=o02wI8sUT71Zbn&m7W0zdQ^xPw32f9?X{!Ji)j%D72^ zAH~4J#JY0_xYIusFi0`6=(+DpV?O|HfXBo+8!YoKuDliJfSeI%4h6ag)WamjA_Yl; zHc}Y4G(!;#m<)6b448$Xc%g4YL-FD01dzi9B+xmCKgC(-Bg4OGx_@i3p)UhU&<(NS zg?}JpU_;;sVRkd%XGw)-tG|P(th@296BybxVP1fJdy&Lf=7QBy!q{kF}NZ+z`6CBlX&fVR>%ho9ZfT z2qz7!Zq<%l&@W>gVDZ=E|* z7?l6zwILaYza8{tbJ8aKBjj)5s72gLTLK|ZW|A6t| zyZ8s5!arEyg=e9QfldQQ0Fi&vXqf)rP|XSrC1A!xWFZ(Bg4Eeafxd&u=pY(#>hILw zg7Lt3Z(*cRbp$qyjO`z+BHuyrNT3jz5exuD5-1%E3dRd%%f@62N3fA%Lo{$SNH7ub zLL4__9LY$%3R{sy99WK29W1B9p66DG54SdCD14GI!WPJ$3nS$V-!!BHphG6ei>N%S zOp%$~H2nL(S21GETKy;UIY;!TkwG*lK$ZOXgm7RVE2qK`1W(ar4ewH{&_Lt!Tpt34 zfWsr0Nt`O>j1+#7l43yRu;rxWgXfsziEnqH zp#jzala2JqJuIxy0F$#blWF72L00@V{{KWqP7VwsSL`lSXCq0#&w{e!;b;H=kU<$( zp{(T6Q1ws*9aswS1wc;*AB|o&SSmamKnlSMlR_{cvS6e#bWpZ%FmSy(&`4-uXef{g zjb$TMN7J#00e}mD?f!j8tP}!G{VX~d$w(F*J|eIlXuujKrTzTR=(|4*9;uh+OVNJ5 zNgAC1aF4D_DKGJ(BKHWIFs~yxp5{U|%;4l5;E`}PYe;-3H;@YN03aeI#e<-cf@77*{m%f zP`g1<3wl#pmMkNjLBamr`MKX3d#S9$i=4s&j(8zUYr1yXzBB`o_>plwKE5Q1D54Yu((muThQJ2x1iAZlaffcHhsj0fC0hl;&e@?#N^%T%n3r?pjSMC z@sEi4WPM$gtU$kbw6;`L%V{|gV@~1Z1QF5F&&P-P6mPt8sp8VDyHw~hEZb-0jmNdl z-F1F(AA9>3t8OC#EE*D1o<2NPU^IG^^}V2>3q?d;YzxB zRU>|ah#j89i@$?K2~p2Bm5nqSI`Z!P-MVXd3sOAKnT#m-fy+*4$ZpLeb2=&xXF0{J zi{d1`d|~E7xVd}Myqw!uzSB2)xj=hI@9gQ)S19b|z`zB;S4RdqMXH5Nj$O5o zH5Ki_%jN4^(0J{VJM@9N-i%q1e|uQJbaG?v<+|UuxF zBaD@-V*J0$SSW>!HLAL)RlQlOV^&u^zF>uHPq#7et827CcxfK zz|U)))nnbZ#b^a`P2}Ho#@Y{c#$B2{i?3hJ`>-f%JxDbjOv9*6{le|IJalWRV3z|z zd(YL|)GThX?!mGbk!`A7S|IT|+=Mp-1GI6bu?pgAt?t#WjCGHg?Wtm`2F8CAq+p2P z!uMDnRj4vea(J0KJ#=tU;HQi-F4u?XU<*j7+IQ|5Q}{UU7}_p5n6z)N65^2i^nHRh zZRh8k+m~0S4O$IzFbE`BiI&BL>Q4-fj?~WGqza!IgNw^_)n3S5t=)nwF{^Zuf~e{d zy$!ZvM4AA7UeHKmOi@}>fh45;@xgAeRH)#t+ z4@b3PdvjbcYG@mswatt?9$B8qrfcMHm;}+J8t8}2=484AubV7I2JXg;kJiD}%&p_1 zCr{nJ3GjbyA(0wZ8XE2N;q9%sl&0a*7fLr2<03}>`V|~qu_R2SL{>3XqOJT%Lr6ej z_@&ZcCK7U$)ZpK@pgITl8^}t)Z-ZOVUfF!~p)%9rk5fG{fs+ecLx^(5ghV1sy;h(s zmG`8gSp5cH1AV&#yZH$X?yD*0=KYyDWK1Xw>dVKuj}f*fv1wwpHN1eCqNk^8%F8QA zbuixC+??UH90@V!rwH&*mu=AH^uTX1ZO|{~IQGlF?l9mCyDIp0REvd-*wU*FNSL>Z zvj6(HVO(STwT+K3O_#qMA#J(61F@#I^K`_J_8N?^F2bF@D4{GU(ylbBwZz00gzYN! zV6+e$oDqPsZso-)r)9vYRVB5i0iRehgfKpfq8=Pj-=m{D1kd%M>n-{aVz zQND70)g;ng&S1YXz@Ah?g`esOm>|RsK3es2;j8MG_&}3Y)@1+9rLUh1HojwYst*yk ztPi)jYZi4OBI2qiy@hv4e!Ucyv$T%Iai!=_#y15G%a2pg^H(^sZqq$*Dh^E^PE+oERo48X4X;W&d-s zEZ}IxJ(}cFTqym5A0+yM!%1RO!jNLD_2??&x-GK*${?R)ic+OdP28W|+AO^TIjz?( z_&M-VudHYP;@8DFG0q316oT9VEFZaOiy~LWxiu18TQ-TZr=2gW)*cs?R@ZM$TA^q) znE6Fl>^SIRjr53FM-7)Z{3!+v<9FIFm6zrhHd^>!RwWUf$vQ15JAenu3MwZ#qBx7| zpivbPsY8^MbnfC(Sc8T0v<#M1EY$1lm*Pf0qlLHRedYO2gX2{YX7Ib)|d&Do2^LS1#h9YlRcy4%5vWvqmqWoc*#U;6=Z-yw5x0-83D?wxx+3$;# zyLBm#yW|ajBB@q{Xd4-o%Z@9T;w#{3qMv0MllvE&sO?o$sD3Z8aPC@rMTzUCIi)Xe z6AvI5R`!55C)y$S?~VaF{kLlX_yW2(8ZzkDKU7W*a3G%r-becfY~iGUkB-2```d5$ zyE5RF0*)p=j!X_+C|Dj!2RP?o{C_-)&}0je|)wUB@PkHY~mk)3{@?CKD@WB&UdE`R3|?L;VpkCWe7e zqN;Yn^=?hyfB>r2p7)_iVO#}`l)wa^5MQ8A6mG5CArX6qGcTB!B4V^pTw+Om9I?gkPDxi()a^!?@~5o6@&*M^IJYw<$U= ziu_43%$@e7>WGJ=#}j!vlYVq0^cL$e!RcUMv3{lnHNPP@)yx1+6oYJ*_+G}T{JRPN zJF)9^UXM?v-b+t|Or;_>YGyb0emhh155?Ac>%#2LT7qpSAj`(a=@$VlDwzeLv)9Zx z8Sy%gdM9(^66l*Otw;6r+$2p$u~KH;)EU zTo>ZIuejy$aCqVysD&TeIAC}X78;s_I`Hu}DTo&S*>Tu;bTumO7j(Jmb48HPWfxJA zo?QHtM@(O2@%OI^{DuzRl|0v&fhRm&{(jAi6ZzK^dJ`MjNJRC|Hf@LoKR=X+INHic z=S0XmP$aPFu}FrI^T+-rH?dve?_0k9CUwrL1A^1P%BmYaX%ooH%Cs>v+C06RQv%v} zC$vFyEx6pmP$y`OxDfNDY(4W;QAdRrbFkAw*D_P&Od{vAJ)3vEF~zlU^LM%0Q8v=5 zJfw7wF_oUuyMDVk7rC}XEH|nz-J^QmB<&+0WS^uU$5;}7HzN7v0*H8(&L!RLP@I2r zVmL8B(ppu-Z?G(^2u&zS1CIG-y6r1%wCc)g(SkH#nM9%)F^iQ|lJnN}IhEeGYr*!!rjUX# zA{^T{k50Ur*B)q%t#FTRDS~hEC7MjtuYL389IWU_y%c#6=6sorVtO7=)6p@P!_z@c1#N2GpTng~`7EomRbTaRoj!hr39z`iK8jrd zGiZ8bN25%b}lR{^%_p}Od=7-%{n8B*n~ObGM2P$azEM=J3D4d-{DJdH%*us z@HlVt9@K7VKS#zb!FiIq>=9Hf-^>#qcDgSQ;r3(3=cZ+}+6&@;Gc^S}7HTV|^ftHsARoc#FI5xw_DtgnbJ#7M>BjbbP>Z%i~! zXR8`$F`FKql`!U8oP;As4%ZjlUDB2qX?+|{YcB)r>!#|3Oge?SsKwHEMOi;ju1LNa z>Mf zmfz6HP-5vymA)v2p5U+qGrfb-$l$l4Ed{>dh(#p@t)41m9Zs?7pfswvfMx zYg@Z%q-kWAb=b8(wYwjUw|RyJx2w>PH*vF*Z+cG%kn9rr0WBJ1(C_g`9|dX{r38rmiPEPL4M!_e?u~%!}4g z+AkfgPtU?Hyco<>J}Q`|e!|@63@L#8K4X-Y)%Ga!+}<;Iem3cCWp*A1eQ;V9TT5ss zILnB<@UnJP)2AtMJBWxnpH31tCeBp#ssBjI%PnfqIqxyMll{(Ya!tjrZjPfW5ydj{ z*rG%GQP`-`9N!NAtfG}Q<-uu^HW%%pZ^%)YWTmzfcX5#8y*g^ z8;FJpG2tKHtCs9iOr66+wq=^bZgcsbFlfK%H{yiV6=K4VRhbV+qca{V*gCeV>ZPDk zzP3+Lc^(Ha$r-VX{v$s^(MO0hT5rT4g#z*@2=NXIA)rG$C}>B72?3~EII%iGu`p(| z6C*8yz=0{LqbmV&bv7wF36TOM4>NLlGcX`rz#ajGFloR&A(iQVCezKpDhJVk;RD(k zkgaR>4x(;`2#4bbf$_o-e?A|i&B~#4-N2Pl^+KJXc)*VV%fYnhq4LtOP+bQ6!tltz zVlq_Gi)!S!s0y5OOw+njLk@x=hZZqjhqH#$0d5RmXgDhY7zzPYGBOPq8B_yC;*_94 z5qI4FM=6D&t7jj zJM(!u(v?6HwJ|B=EbEb-*PwT}meQMr>fYF1E3y}*RCs>Mb2nMLdt}p?SMQu)l6H8& zR%h3JKv%HpV!27_?t8bfmw0A8pbMRDX9?BKeZd6}%yS;4LoJ5XuE$EWOD!Tj1E>zS zPI5Cjm^HSX+}}h(!w#_OzYEo9ilKGg{|Ds&c~%381BEj1pb15f*74EAfU{-4uE3A~ z+g1KACT0UNcRT{92ZhQ3ghUgJ4$#pUp9KOuL@Q+gb;}9pLV-L)7NFq<0{U8zEpu-`8!V4o4bl5B9t;$giG6`fTVAd(8 z)d6{6gZZ=)MTW3fDXN5N+Stp1OD|4E~DeYAT2A5egrf5HIj=p$Ov|EDHe^auQRU7YZ2oIhQQ{WC1# zKreC_x}U-DBNOl$3cJz44+wrCFsKSOFd6B9p{AkEitb;BdT2K=O9+bZFuP9z%o2*w zvLv8$tFuKS7}!{KaYCVNkqHD~jYmKeaG(WgnPPA}piP41pc+sJ>@^~XSz0F$QP`ud z#RlhrfKmA249uKAQ5_`am8cFVg>@AvsYj{~oS+gF&VU@Xu~*4{o<9r$#v&OQLP{R= zz?Mvdl!Oc-01vk(lhPoAIF0=Q=>I0x@hA52Z*&BWkxV%7_`rCPf!VLgr8Q&_K=*LK z(y_4DJY~N~ zKy?U&_5lR4zoS$o5DvfsAXOy*rz?bqve~QT55dS(3M(4`7O7+bdj{4}co17EVAFsc zf&3u=D8Qt#B56VqN6kQ_;osol|8_7D9Y^~kXa5O9{vCd#`_mF4JPQ~Y*>}~^(G4EF zEZBXRI=m3w{Xan9qhlPAh-^9OSm-mEY^WI+F#EvhgaK1dIlMo^6VS5Z=&>iKUZH~^ z0R{~)l-|P8^nyWPDu~cx=5Pic*lWOO1H+*Q7H)q(8QuYvSIqy3!fenWed>W6XD#fr zt_rumqpxjCoj?4@UH}c1zDkKls&wKQDpk{p2W4+si3;2m$RD+WKdqF42&6*t(CDD? z`h%J^04xC37>aEdLMkPv0dChI^)?2E&j0;j1Kxmt4?aL^XGP!xFC-Y)jGXO*{PUnt zz(mQ(0i&!Ccu}DN#19J3CXHtWVnpO@=u{|_@mZV{aFGTWsE%343NQt)4;YN#M+|@L z8G?~nrXAoO5VABYWCweM0?YyW3p1_ya|(k!g=vt$Jj!7>s0JN4GY_!e6?o49@3Pq? zjeiCJ^!EKsP77!Hvjo+gA6b}D8{dc&V4ZrZ+o#%xJe6S9J6fh=up*>{y zK>%|gGJo5gdx6CyKnMhe<_-Z^2C!M=^g!$l7GZ>n3oM;l- zugs;y>Q?OI#EW_>wmVDlRtBBj{7sc{6YXAH?Qj2y z{R1Ntjbw|xdCIaw;N5MGW49qFVF%MtT~w^CuQg*?=z(z<`n`ZQkZ8XQ2u}a=o&fx_ zKQB*Gz?TA646v2!VgpVXnuCCO!Uu#R@E@NHV5d6QltY#F?5dmA#p9GZojFUM3>HN_ zaYd^G>2sMvJ)NZqOe&&K33^NhI0Fz6E(hKLf1ZxnI~7DA0^Ke^UFrDj*I@iS9tbI# zjtB*wuu4`BncQ3ha?TCim1Me^>>M2&*D7 zMAwvtqEc0gY*l$eBL*%Q{#`sE3Be(R4AdtE$MbT)prygA(@UqdZ-*o*WPZm_PsRit zOcyRA^Xk;}x^<>j?QKy^v3#yV#B{0yNt%~53-e{1{CWtBh>YOxT?VU@n*;rLAro`L z$Qx^;bOZM6YIT^_SVMe9B8v)R)8io}$b6)_{p@*RAYa#JAmuqGA9@Df;iQdg{ro!dMc`+bR`;Cn($cwe?@8*utdR@CB^L}0j#6LijxHa zRjtH~p_7l}c3BGGg$u0J!Io3=VFuz~)ZTO-wwP3o)x1d2*&=QQ&mKdk0n;DE$)PFq5E zrqUGh+B00zpG`jY-!N6*vA;8&T%Bfb&_vlKZlwnGW^IZ1SWwhn`FLThsY$QBUt`$0 zCmwND$I(xEd37^)j#P=wW{1H1o5gx-Y$^p1k@%Aa~opgX+oke*GJxg`d-dAblCYfAP zET7y9i7bu2#0C@P*7Rx0V($`}ZarQDx%u25r>OOD+3&H!-@-38G#hgt8+|!0wbb(} zgQthl>5#~Ji})K-`}>tB?~kKI%>^g5C(^Q{rKUw&Qz}dO*z@~#-+HW zkE+FA_j23j)i4zlr1Ucp^Co{=4a+WY!F*$FwM8WoW$!h}s5eFPaA^%w)YXnPo&7>`x{Rfw3yzSkCFom2Sj@DjhLJ4Egpg3610g~EWOb+Q!&ShF$H~8?5 zEP<5St20-z&C>bypmGPpc&`@Q9DcR-bkWBn>lG;#cg-9c>mFa%UOmQVRD!RbSrWMH z(V4+MpGcY~<{v`{)(dk}6gTG|JYFlG-ZvP+b4BqlPqcNoPKh!)$Ft5e9_(_ztM%N$QH3O7i9-}gm51dx`MkAZS)ja?w-^=r3?FdX)mVls$W2)-96!U5zpjSO5WNoM4!H%#6DX? zTOm+g-zDg5NL)SIX%fJjTJ}czhd>u$jcGwl;L36ON3S+%C2{DPZz?uvy+Y!QHI=NM zfE#vh#`|xCrHsmOuBxyl&&Xvu_!k}4bbXIfPLk28T}w%J<(S5$$9&@-$6~M*Iv@?r zD-yf`ar4_ElA|1I@yniKGM9#?jic2Wo6;=q8U*HM+0jEHYbG2L5())@#GhJ9`T2e( zkc?`|GW~oYra+}pSvTk`LI`qa%1ANp@eKHKife72Q@A8Pms~M8SD!L6MOpsPQRxXS z_3qnqmzJ@oOcHANz63vKt?BEWF<1HP;wy!#>oG?~6>dSv^f;xGYj59t@!@RMYhZQ? zpHP`egTiXBHW7$5-@zp>tQ`yog3|He4*TLd0|Y!bD>rJSUupijWp`A(YyUnjH>SS|zC`wwE9sTcpyP~O%S;+D+(h)tjnnuT^ zDdo;)Eaie3=bfJT1M8NjclEtGjTTy+gC!JXmV5-X?2h)oktm9b1WFm!EVS5O1%y-7 za$lBKC=(tP%~WQOdJaKFPw6kLZDV2?6~0l&QkZa7BiL6fkW()C(TKnb7Fn_TQPuK7 zR)G?^bsq|oB0iB+!|PL60(F_9Y^ydD2}TBMYd*9zdD8Z++=6U23dqiU_9&cv7Namv zUutS8Ff-1NHRHx^^hlWTZDguzm-aBp_Nk8f34C$-8upjYVeOOPxl1<~^VjEQVtamX z(=*@8j6{5;u9rx88h|x=;{t25YG8HtS%#?Ss)U|?`pI3blX;Xtw`Tj6ZlkY!=)6=$ z`2~DUOlr|W|2qo7W>7JD&E;|N9a+eZwvSZXGwN-o z)io<$|23h?T_kSyFX@8>W0@Y4`jr~I-4k1P!_H>4R5c}nJnyrk$_HiP)75j`SH`uS zOb-jbeu;XosjvDyAa$_(2kP2>ZfrVbqC zd7b@`{HV+;6N<||R}ZO$M9;P#H}%)?I!(c&y5{kCmM68$>%MF6cBx8y(*(waj%k$Z zM){f_J-*Xpjdl2JK$+xFimf_BbE+Y15*Ao}?ceDiKPoe{xqfnCEsWu0b*fA6yd||k zUQF>z&;lX_N z{rRPV3NdRTJJ)aXK8@IvO?!MbD8D#o-jm1GTsVeU>0EW9w(8 zRJp~i*+qdJZb1o7+&?RMZvF>d5uJ`UBrMPNKzo8<5*+;+ztZZf;?|LA{lcXhUG!+K0BGl^7u|l-s#@H!kRF8fx z!unlrNY?x~qu-sIr>?9S5KOE3=Rd0J6ZURtYC=u$`nfMPpRi1|g-zu(XDr%wAaJmk zQ-rrxqtk?&RSDx-+i4jvaP%$mib-8}rUSiCi5B>U$@#UF<%pu7=3iyR1R)-N>yc`)c)CBWC;~CW8ea{&FBuRWv0)#P^88{;_*XyTOH|z`b%2~8_|u)fiX2sPibTbxOfj#2hMk9K=es@PEGhHkn z2J{dgC$Mb3Tof_S$AGzrErYsi9lfH5KTbCVE}iMCPd03<&Nwh()y^y~jgIzf7}Yt1lUd`IO?86MmCC$QDf=B)S&ujGw&{i2F;GmpV<{u&_FqYic@7 zH$6D|(zNp$`BQIXgXLt)>inCt^{FwP)7FT{yM-i!T)9C)(<*JgK`*6br`Auzy*sxc z7JV1(S)8Ss8i&DQ zE4Esqx52~iWoy@r6T9xga_N2xvScZBoljWnp=xX=$ZO(a92&K z&d@4*lzof6dE-8wj{H0@pxZA0auBV0X+4bxRIZ=$`jGHK&QTi%KmY^g{_vM$ zoR_;>uVoBO@B*or=C=@HPa7@EazSr5HhcW!*^}}8N7hICB zCm%jxS9`yhNad0$&u&NsooU;j8GpO(@8B_rs^6V9YW-}H_`;aB<8V8DJPoR(uXUkF zbyD8%$n+|1&3i@imAVT}hqvQ)OrV?FeMLh}6GTeT^x+Ciqsc`T3+oO3g?QN)A>9bWnFZ9A!qRV!XibJJG!FDoq6V5)1KQ%fH2 zJ^Tn#8C!-4>Jr>yCq~qiG%3vs3ZsUVC>yCJ2ua?2QTK{%_;rz)Sw+=%?kAbbp4TYf z{^Xl$%sVP&sO!r(HjcHE0Zb8C91-phL*J^{PMDwd=+WrIu3$Lg^b!QfEDs|od zBpaJ`esa$K6xmMPk2BXhzSub=tYb)?B7MWLARLD~cH@1C>^@|SMYK+P+Oo@g+4)-=DJ7`p*iu6e9 z!uldjgAK;5(oPj8lD00bGANqTbVLRXsS$LdPK2yt+O-lEjfoDL`_6(4AxHa;xuwXW zSQXdOgc7&%kcRrOhV9`L=A8YAnBb~$>OOHk7qN@@A+=-VTaUB4pDG>f zgmu4!hBbAQ`J5edjG0D48nzh(h}S+)A9wOhlUv(Si23X)xMp!a+b=RFwsJbOo_Mz< zLenHOF`IK{E!*AjJlG-*#dh~RmfUlH(a+QO zD*2{^zb=6&;?2HSkKWL(&*mOM(?k}vMQxw}q1fA)wNEtm9#1YjvTvke*Rf5!Mi&31 zG|?#~dc>xKpU}>wrFq4wUo|SfEaQ2Pq3E{^q%MteE(fJEr3mgf(47m8_piE3g<(j_ zy!cgR=Ngsf=i$0?ks^nbG^Rhif>w;lD^N4bVZ!`J_1a3z5Igu^%guXFYO4i^-|K-c zDNGu$R;%2S2c#qFwJF{GF-l244u6$95q#xsUqO9wR5Q$4y|e52?c&)!erX@arzi_e z(+>lijE+s(FNSM6cfAs89IOvF6f#wtP6#i|>TfVJe;sf^ECWRfnFB3w+t`(9Mi7KZ!E!?%suwwsN@h{x)kFn0zcupJKePR`RW1> zQ$_pOc}qG^JOuTXZY z;#0LN;lMIA>XK3G0HQ)WTr2-ntd?|$6jYNUmbFcz;f#R0rP3qs z|1c!@9Wb~;?S~cqJNB)7jC!MTp!d`KXfHE2SGk1~@el|S_tpCqkEVBv0?rhqXRgsJ zKR9@_M=A%#&v-m8D{6Lp4Nusg5_1Ukg}nJ9l=o?Q*OFPB*|uNQy;KHRo5pn!ZL=fz zDvf3Os3e3lL%hSTz#c5jn4PFuLwb16qGg?IcR%=&NI%-#sjCp_hRjKeAv$8L{&>jo zre$ryO!VoZWJw0T&ZB332{j(6c?v4`&4(>+3foP0lqXB4*@b#Ho%|$DZ$a^g1Ok*Q zoCq#nUznye;1tXG4+R9#V+W9HOC+}MD^`7vueQk zQafgQN`gj9!RZ^fUTqpR7=ldHid&<8pm zQhR#l+TC_F)OcmMc&)DQhb;JJiyCTg>WtS1PnZH z!uTFw{ds?3E1M^pqLFfMJ{Bx489ztvBD56BavJ(wk4pRA%{Iy!me9flf+wvDmA z7aX15cnp3L&N|&>Kal?cw4mA&S9h-T$DQYytuoxBI`cmO}RQp8HM!&`PhxH4&cTgFJSBG(WHFd+<2-;oS zPadwmYq!Jw>zMLL0#`w916l4dwJ0xP&nQye936cN!j6n?PA{`H)TQjU`k2(-lpB>P z@UbO@VxjhgviF(u&q&!&6=-vEq5?;5>3nK4CklHdnqo+@cIvmz z6C%Vaf!9V_)@B1?dHpePqmFADbThN+fE92mWn#|_&>fy+466KeU%W(QLTwt6D97ofWvRX4;a%itNQW(D)gxmoI7*FJ1mtOU)~&1$sM zuxFdEgjCsTmjjky^s}$hn(eAQH(B{#qG%I}aS;MZx)* zVzm$rtoFF>Uh+V+kF$P={gljMhl0XO`qlCsUVh{*wjI)x$_h#7u$ud^`~BL8d-WOV z;V_NOD-X6E(`cQl#8nD+V~3unPYWz#eQk7zniNz+esJl%ww-=J$=J3+h%ta=(Dh@x z$BiOdOUItNf?IddlB?H~Kt(?!&eN~E=hC;OtIGLPFZH#7%xIL(fo-rx9CT1gMbobs z%n$omSN?Xqyu_3sCYF%J2+5vQCe&cPb}BkgzExgi>1!{5mu<(lIJX$Dn97*Tc&ZmG zxaHVhL~6^cvI-b>p-vtLA|(~Go@b{b!3IS$8-=#;$HDGOwXJsn zTl=>luUpXXKA#i43+y(@u+*Dj2DR@B9h{JigQdX~Gq0+>8@l+Z$V(NCV1G}?xbG6$ zlK#T_z3bHH!RPjGegs4a3BcS1QaQD)khM`;8Tg5HgA*}ado8I|`JztqwxtFvS@7KS zVOh7jE*!O|!|?*0r$@9Qyn1gs);sDKVK&ITGI;v$<4+X=Ru++)!%ev)3;xn~AI>nX zzC5u(#^Yb;7TIJ+`&dt!#y{1g>Z*()k=~G|QSRd$nh^*IO4F#~hY=6?`A+t>1AYxm zoP?Y7q}ffU$JKH;wtwlR>ReUqaS-_o#r~fqUaP;lb_M~tB-gNY| zWu4*nW+5vbWjs7znv(K3zNHC=OrZC%9-GCH=BV7Hsbh{F2%)9hjGQvo@K03em4NGh~{_6<(HkPx#hO#;fGDr6gkb)4(5kRf^|;3BaLo$ zKWr=gN7qDXv4%>KViYl-X|%Q9uL-;ejJE9HXfBG6Z~OI`xOsGoYBo?D|Ae^103OLx zlObOF=Cf4*mh|~llHP>brPDRH`pup9zrJ!-1=gFkMf>$xIMD{HEOn8Vo;(7Am*d<& zVPz(x4T-iUEff^|4M%J9@yGXvEi0EibU02>dbaL}U~wMSZ)VPwM7g&hU6yV3EXTGEzI#ocV&)8+;if+Jcp7R2#_gd`if zWWpo!oJP~{24-8~0eo_~oX{dP#jK)*M-t3HZDYIwc`kXH|DYUztm9{Xsc}94f zMFv&`A|*Aesm(u;mp8_sjU9jH8;$4{;APNz24q!sE`kCX>5b0=k)2b!M{k0@*;fqsEBey zAB??KRy-3T=0I+G7+>JF1%##kI^v+7-pu(JvNzFGf7sG9ez?=}n>hFu^gwWZMX%TK zq3Oet)o#~jYTaMYA}E@SKM+?h8x2EEG7YC!oGjTho6|~HU8AqQ9igs0h}d79tBj#a z>R|cx3xWtQHobL8Be9nHOM%LH`-WZj;vhagw~r#M4xT~_MXMtFjQ4!c)!LFvC13x# znK#z7LFOaj=?7XbyQfSNc?-CA=>mxh>AAlz^hqT9(!!K+-1)|;)Vsv_cDQ@UN{LKS z@}YFU>0+2y=dC2DWWV3A%s%^V&rt>Cuc}mGG5^xj;(3m=MM)6S*p6PBYZjMQx~qaj zymaZYx)a~uf_ydx9lBAxGZs?fr+R%#$C%pN7roX4+r<=7)d6Ol1jD9hO`PuTd3H6^ z#mXBEo%>VPgHrl8u3d&VEAK`v{S)hFH=b#o?@<6N^4K1G{8HA?poYKX7wnI9DugL4iQPc0_Y2 z;f&h@bK7&V%j%xTZuraj(g_yjNA%@FkBa6b{xe9tX@cwp1QSXfql1%T&JvaNL(ImD zkDC>EkhAJNlhP9cF1Apqff{5E!ZmV7Ex zeFonQC=mFk;7=`q@ID*#YLW&OAkzMyaQ%N0fZ}5R%)AoSWd%n93nSzxfE76TLwTrF z4N@zVJ()BVxCob44(9CJ{?F1soEA}TC`x}>YeD)KK|5q?!n|?f z_^?&X0j?yx%~76eEk3&9v|3DIM^ z_&hTt8Nr@;Q?S0Pz;k0vyw*Eyh&V8wn80xy?x65CwzjI*w6fcyQ~q}L`N#WhdK=@h ztLq{Qmi3aa$9=#R}>GSikcfT7j{Fzqf-wm$k7+yBs zg5K@X_N?6W7-H|>{{9$$gDaU4<+=Ck2DcXY>#j>?rjS&_u;%o_fLQ1)$c*bnQgYLO zPsS^HKj;#>v)G1YSrI^NP<5Lj;`5^oeZOipb^LIW@F$AN#`flH^T7XRJ0CmmY7_3w zSPfCM9~%*}Qen)P5UZK^^cU8ZWQgj(LR~&ZmoHUmNeyZbd{Q@0XkT4_=Y@5iZG`uG zBjWm9d*r2TZ~ibh$fMhj`_Ay={NevWsE+WohCbew!{BcCpo_X0&1a zgLOet9LcypCq8HVBwn@NQTboZg6_AuchjWNDfQRLpJY6Z#0mDAtq)l`cHLY8ECkCG zwIe=PD?7DSh#KDfvn%&eTpJH zID0QQuAlzvXwm~plwYeuqZl4zJJ*Xd*{(>ni1Bdm(yD_|qdMG5lx3`dSLS*z@u0&M zmAL$GAC4$vSy{uo_Wt~02VduY%GtXrbRp!1HUnM_P#ahkw5)^2Dx?))svN&L<8nQB zxrpQX=Od&|?_3RBQ@A-uE?l%MWnM#UW^AL$4H_aJyz&~Wtg61W&$p?spCsnR?oWKe z!#YF!6r;?Odzg{~^qbw<;6J*B;xFZLbJ_pJ)meu%75@EyNQp>^bSfayAl)ERA|fTy zA|Tx`x&_H0Afu$aMve~YE{VbD8aYOXgukKR@AEv@@1I@QVP~9kZTC6n{=7f$_v?PL zHe43NC}u5|&+C=G*YrC@Cx5VKkrt64AwI&XE6F6@Z|BDKy|=|Z>cCrgW2j@LE#kBe zYt)ujvDeC>9_i!es#)U#aJ?{wlzRK-#hRy(vQr*71$_3~V=I+Iv~cx`Q6S$fAgo$a}OA8#55?6&Qp3@P{MPI}$0v86Yc4H2uG<8R$A2%Bz4PRG;R zm)^J=|J1zo!vf*v;P)8Nn)quwi?v)ks{Qef!&I2!Ek(bY6K!z6_&tm354 zH*CbkPoq)Z9dPZJxxie=K#vI!8+s01X2iTv`?-fHB4Shhu_~sF;v&7Ozp%>Afw-iE z&?;E;o7Bqzkzy=CUoUTo^!3!!F?ZgJ8ZH&y6X}{!g0!x^drP+AAVK0q%XAp8_pohT zm=UV*g@p*ZNL#KW5ERgI9h>;sPD@;&&?DSlhABf->90^Pnl;Q=6CETmU4_KW_ych9 zd$g{Tl)JyX{&i+6Ow#+(cRKdalI0Izh=WT4iDW|W;%d*cPVqbs#dQ+rlkrM+X8#jQ z69cYz+8@A(UKWX6te4ZwvGms$%crgIOWB6CuQRL`8SaxENH22lHhtRWUVYMFTEiws z8@|v>2dl!|*p^{C{EUHtr0|2K_`n^QP1ePuhe=f|+lqAc>bR8k-ufR=R0KW34~p@Y zj!n}tcl{Cd6av?DZ7dtp`kl=s*!9YC-)3x($CdM$gLwN(ho-%ahlf@iQ+`y3?vGcy z(-I#7*ZWxraJ<-*?BqpHyoK9pY#E;Fh-y4bNvcb{#@<_tccS5hP8r%xxr!u6l%+$8 zA*3`Grb?3YCY?*%2Qyn3%$Jzkin}TdH>x{bYro>HELU`ZjTf!;Y!=72w{}Og3avd>)c8oyK|t0F{;taGFDI?xl_A#PZ( zTC?y<1#Xg|>)vM2LbV^)+Px(ej%}`l1D$CtoOGp6;VYZTi-4xY?_O~&hH*l#dli}V z&LqeiAT(GE#4jg(KCdoB27g%Ba{U~~aXO&TDJy&5Mnz?w`m>8-u$~Z5Q3LQhSM5`( zr)Mm@7N+lwWc@Z*RuiucoARc0ocP&s-nXVg9$>li`eeZ~84f>vH=2ASAaT-4Su_|_9=R;2Np6ivt!4BpNeS{9_WPsr;^5Cm>c9rW!N$mtUxEA?YmtZc7Qb_I47OS23(wieh2EAQNE(5Wg3}aA}XnVStsex%_ryzlr7HnpX ze%3nnH<-ev$Wqd1_(H_DQIcX}_<}9qkh8!R3geh z;MpHQjV6yAEB06)V3v!KsM6D7HaML8mh$j((58E0L(OzM3%1r~VMzG~m*)j;W$FnH z$7G{*5{K1lQGSZ(Hp0@!xoa6AnQKd|`11bon+7G1Ttve^yF~C

cPt;BVUa;1BYy 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 Hm(G6yXdE{) diff --git a/og/blog--08AutoDecoderCascade.jpg b/og/blog--08AutoDecoderCascade.jpg deleted file mode 100644 index e3f03871248cf73e8aa3bb4ae265662a1c1c1cb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61007 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 diff --git a/og/blog--09GpuAcceleration.jpg b/og/blog--09GpuAcceleration.jpg deleted file mode 100644 index cec3a2c69c229a52429f0b6c2d1608d393a99647..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56800 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%0As9O;DgHHr6x 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 diff --git a/og/blog--11SteaneWorkedDecode.jpg b/og/blog--11SteaneWorkedDecode.jpg deleted file mode 100644 index e626a6c23c9093cfb68bd3b83bd546cde08d4224..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48290 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 GJ^usgFwIQ> diff --git a/og/blog--13DemPipeline.jpg b/og/blog--13DemPipeline.jpg deleted file mode 100644 index cc48d8324b00574929ed27cc1a9fec4784c298fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56108 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%0D#BBgk=&#c2Hz%YVvFw8t@3FL)F*?1xT@uf7EQ9 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

  • +Y7}NqRf&VM=LI^{_zeGI$FA)XUe{Tl(4;_Dq`ajr9H)Q{JFWn@tL^6hC z0RK>xhi&oq66E>*UWGri|G%>XmVy2Z;D2F(jNymk9Wmj|MK=tE-Onl{*cZ${?C~e@5Ae)C`}WPd|5cgrhY4>={@(2W zzbF%Kcm>NNQvX$8{MI=<{`2lrf2aF80`>*JCZ@z`hcX z6vIj&Kh2K^&m!nhi{t~yWZk89A{s;TnnI?MTBBoFH5k|zQ=G`5D#%ReKy!zgfkke4v)qm;8#mtwy}S+PHbNiagn`y2BM$7Qy3Bc$UqcBkc;&F%KT zY%_g4jLg8(xYROqqbL4Utzud}x5Y(`av4=0o=SP_Fj%!@V-?!G>Wx}=x=KQy`-S!d zoh zi#|h5UX*#>;-ITv5JkG^;YF<Ob-`1 zqA%4h^x~U|k|NiuE|)%pFI+O$6Z7H7;dZ(auG>;4EBPtU(uWE^?PNr~J5t=jOj4!= ze;LAf^D~I@FRb+;3bm62P>WED)@QvX6a@pmjJvrM>xtva4<=TH_#Hn#Fni4k+Bg9= z=}j&@i+i5Oavb@oBw>W$%NQprrSivK{W*r!z;ovatpV>0-EKeo)ii@SF|``&&pKd~5hcL$X3!k2ylepG6kzYlb{biX-JLw6WH3))EG4u+;92 zGL|*B#zhMpa{!!_0)F{>)z}Jy?3<4iDaL}e&u{~Ylz|bsaDW4vuLf^M7Ec?InIElx>pH(t_4)RGd$*Gi*kp9n^nD_ zN455@kNWI%tQ|009OL=cr+Wwxr9&$lc7SQXB}KxU!W) z*xE}N3$g`?$%)Rc$&edY@$GI@j`n?PjTRvLWmSUgDUmAWcyf0bBP>xE zR}U|$9Y)i)bljAgt5!%#iisV<%8jW_Jw1~1cbh0H9X>5clDCv^sNu8P+;wKKdXXK7 zauxIh3)WVp@s4;N05m(=_SrpysKP%`2-U?@JVvUZsvFC`!DrQd4Uv`L+Chokth#!(We$>hYbJCCh%cRm*>wN*^!w{&v+Q zFy**%c!24{Csid^Bu`}bp0?ZhXA!h^`!mjVBlCpoLZ76tHO^R_AAS7-{Z|*YCExH} z@LClah06Q>0>2uqWhWJTFFo_llr50SMOVu%db0iMQ#D{3}O@~3VWziPOmAPpREBzRvqeH*Aix5 z9p=P+YAFN9)-iX2RGh2rue)d!Avw!l*5xAis-JC*twJtfS2*KWF5(_xuZVgMsZf-+m7!egI6Znax#2rWAg{cK|0{h8GwAe z(|Hs0#J$$J_|mJ*@~kJ294KHbr4@zhi5Tos+~g*xRF>hj|LTYmxUBv*@7hG{^H!3U zGnwh->Ym;1Dfj4ThpNMFL3|7U~~8^9DDx#E9?9z`TLZ;$;`Mpg|U4wGR%TS7Q&B$ zV`7|6?WBz?sL=|%YCYQhpWJ2MDE3EuK4gpZ9-SW9hhy;t9Jq8JA4OBwj!6_#5X*(&>AzYWI?V8qnIQ>hrm~^fyju z-=&7*xe~>Z(cd_c*Bk@sr&+5_{+xU5&wfQUSxVcStI=J3vYUKyiZN~SJ=kko{Z-Ip z(`a-4itb9^ZVDmjK?j_pM>bK~4SA13G5a~9=RfAkl&Wa>u3kiVbMkMi?bP%&-Cdf) z_M?7j3$bfa8C0N==2%rD>8>dWbNBnYE5(>aMEAqS5sTnvd|l=?s9Yg?yBmnKK`P@e3pXwrwKb)i@zS<`mZ+L z*;ZRqC!}v`>)gM#HhUkN*+idJl>X@$!?bVypZw$3;$`Es_HBE3<&WLH)<17t0&C4@ zfIB0Bf^1%(#xL;l^M;O93Y)ts6ADX$?92sEdCNE|-`LS*yAPc){-*!6%z)HhC&eeP6spJ@v_(_fI1h@n6d7%!)s6 zvVP*P>&ACtO24c>D;QYWuaS3N!TZB|>!ulVuQWa7bt^yZ(3xItBPyq@lazQFJKm{kfm!ttP z8`3!eP1=DqL&{8`N?;cQrC1#r|l^PJU7Mv9nyWkRvzgs@Q z(EyyZ#2pRbc};<|j#amnp!Eo(S^{%GL5p6C!J-3P=b&{5L8q1i#lhM@feh46jqV^Y zCNyBy6%@M(OkVH~T?j1Yqh$kFzYnYyss^YQxbX{| z)&m0tS)oM-knaK-+5nC*fu*3MQqXh^O3c7f72se8c&ixD1fXGHolpWglMEW70!}!K bfJmTuh)m!LJ}(|PZUQk}Py}oQ`~RB&6}1-I diff --git a/og/blog--15LogicalErrorRates.jpg b/og/blog--15LogicalErrorRates.jpg deleted file mode 100644 index bac1e23a567e5f1896a4ad5de6f9074284800f10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58557 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
    sWIDG%8B#$c^sc%J~Ft@H{1CLH9Cg>-@iWeJvri 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 _ZgzRR4Jw()t^_cc|8^(Fx>>nrq3)iwdk-rd`{Q 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 diff --git a/og/blog--20EcosystemIntegration.jpg b/og/blog--20EcosystemIntegration.jpg deleted file mode 100644 index 114ccba7d15c2e556df447ab5db4adf02a9f4537..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61761 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 Iu>BtRFRRCGaR2}S diff --git a/og/blog.jpg b/og/blog.jpg deleted file mode 100644 index 56b67ff975950a12be46c61f92bd3d279aef8ffd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43658 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ĕ`JEVZ(4X?5OhbgsXU=M_=u=C_`&8_r%jmu#;b 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

    ANydY|KA^ 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 JE=l|z`X3zrtTO-r diff --git a/og/home.jpg b/og/home.jpg deleted file mode 100644 index 15b87411ebad6d8416707ebbf0b3225efc7f6068..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67473 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 diff --git a/og/installer.jpg b/og/installer.jpg deleted file mode 100644 index 63102673d5b2594eb4c4d6797daa087329fcd19b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36376 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 diff --git a/og/license-agreement.jpg b/og/license-agreement.jpg deleted file mode 100644 index 172531c6ab601ac2dc9b17f60e28bacba1233f29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54969 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 diff --git a/og/license.jpg b/og/license.jpg deleted file mode 100644 index 39169002650808b6c37b5676b996bafe852ae56a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43272 zcmbrl1z40_*EW2Cpg0x?qf$yp4RzCkl)wOj^b8FuAuUQuNeDG6*6A zf6&o)vZ33Gig&ejwUlq)LH=oIg+QYC3xb>;y1D48D6kkB8MB=F`sWT(+kH#dN2JgH zCV}T}4UnD=LB0I{%{Bk0>eE)%u9o0}Rd8H)0WSw%mJa0UZ2siANqLJud1+GK)9sNP zxJH|lcR}eYg1i;TbKCrvyv2XXTRw6jUH<}HBkknqPI?z9k-qU+>xXDP@JR&@Cdd`i zg;XE~lKh|yk~0>9Zfru(iI{)aS-gax$`A;;GV<@b>zNRAAsB)xKL5M!-+l7vzRUgN z$5DVY`GW@#^a}?;=ZqkT_6r2TOpe>Y>A(4IETD-Ad@pD4X9GDx)({JH8+r&?LINNs z4E+TOLE=ZFkRn8J;sog*BuYvO%2Q`fojQ5))Oi?;>J0UH8XD^J)E6$&F` zuZtq%;;|pPdsfAi^b&L5z2{VXR`v}%odLZ2IQ{F@|9U!T6Qu!Pi|oV+GRjjFWZ<$_Y zU;!uu1rKPaRtU<{R>)LBP*CGxffU?4@+=5A1-C*lEQ~sfJX0a~OcpjlVb=DGl0r~0 zBoJU*!ypimWNTX^5X2doX-0Q4LOUsio0~ct`9=L!wjvVSi|m$H>UM)seCbvWu(i#+ zl)}JGnHL&CW|ygbM&leEd9NZ8vQbnH4QLL<*ruG2I$5ScS#irvK1)>lRvZIo5K&S7 z{3Y!R?DHfE|LHk-QXV4v^Ff-RrOqYKM4VK} zf`yP^5lEiNEuW*1NFf@mkcEWsH1Y@vP#q$V2X~N0o|`-<@q{r|01HY!OgB>-f>VRu zbwiPXj?S#13h7pkU|`^JqY*uWon<@6z`*?s+3j}H&Fr!~7=M8PS}^7swEv8GfQ?dj zJ?$;0H0o~ATQRyc+H`^1DWdYiib}9h4eE$*@+VsNvgD5iKOWtG2AMRhphEx%$ie4v zf#pA%AQD(IK^2$|JgTde9p?%KE`sCDu{(_Q1eu}#HDV-151hXo&IDirxMT%uA8jSs8)lvooVU#LFa zSI)#168_j_imu3sR##=ciOog1rZ-swh5qTQ(Pw{1tnA2-wu>(4STXiA>)n%DHnz>N z9B0CKi>MYbWXHmN6ZI-J4xe@FE3`P3SV+pWr%Hx8MD%{68Nr!E@`9<_bDNGIr4*SM zG02`=JpO5mz^h|iXof@Gn081kp6YeWTTA^m-`)4(yKs0_^4Y2{;@29KQfyNFT8bt4 zO+2FPw@^2_@t!f{37}^wA%GETkjVrGFdZai2~y_q87NqQB=P_NJ|5UbG)#&67ML!0 z8g0CiXvi&C00jyG^k|r4Y<>3kIV`P~#~PH0M~2U=Wy$qzQ)t2Q`94Apzo+uc7>+ z2sDdQw>&>25E>9r!;;AvK_!A^U^wGA8v`+69r(9863SGUGe?Q89N^XiVE%`a1Rf`lMO_whDi-GnU>#spL*uAm&LUhh+gy;h4bO! zAI(bX2eWm|cgDYSm3_Y8gw#vV`91u^yY27ZE(;ksPuEHN{7X@9^RJ&pV)9W5eD;zS zo6iaBc^e-$ORnYkb}zBbZPK{kFUWP`R4wrn8Hts9tM*gOGXD8?R%t$^QM*DZ%+-Xf&IOb zNLRLbkuOH<#i~bfqKP!kj%wJr@>GiI^-=Ln)mSub8r-+CT=rU7N=fv3%l@I+(ao^`QWT?bhmQ3?B+Fm_`>|yXNoGKpyV$<+S%@?5nKN1yVNV9orGwnz^=TI)<|47 zeA&f$tqh}Fk}Q01eniSO|CQx=X5}(lyDryDbCWv~pPokVDQ@%nZ1OudZ_<0YuS^O$ zM_az|xS1=%^W^z{)}F>gxe`b)z!dIRg^*guJFFfe-SWMCtjZ zWU=B{HrE1%t!f=PdY$&jwTJtJG?$+Dk6x9{L^*vppKZW=$8EDTZ23EGP5>JnDp^-b zR9zhlU#q9-bajd+AOx+E({hwE7g|eO+0)nW)r{VY9eWX15v6K8#e^wIhf(;|Su}Uz^~udL@~@pb|PUso{XncO9AO`M9mt zhgO#K8X`n?6o+Teoo9b+BKUgs=E*kxZU2*-ZoaqCI`dy@KO)1I?^+ucX%=a=2KV&z zbkM(iSv3<{zPY)v-oj+T%Y(1oTiiXrWK}(c_^rA0u&}cKSM~v{%8Yi`fcUGL#{J7y zQt`EE&k>HI3QGg;b{Qv5Tz2fDXPb^_^^fqT0vq4d0tpqwsC0TZLEl6RSj9f~4Zc|kYWJ;R!dV?P_PZ4X-Yun9C= z$MD~1Y2-}S@a*q1C-@Ik{pdu8;l=vB0}Yqv zt~*O9=dYkf|DKxI^~hh7DWgwZq1-?XmHbkl%Oi#19+IjM&ZQPo*no=QRtb z&y5s)7O0f`aCPkI#`LI=EXS|kGglfcBN@yc2N~@=iW8?aTFZ1bCyXUxei$?a}EP1)3DY~ijadpcf%G~6E z)7(JH#+&M~q7q}99a!x^oQBJaZT@7<)v`VFH#z|Bb7ua07Wr->W}WY(wEN`4@TmX&ZQno}NpPn6YIQOhq|4kLu6qBZL;2q?a#a%2*!dw^;E zR;8%U_cX687W={A%oHZ<@S#(=j`@^6!A&3GtG+yvIBqWZ%VyHer`Fl0m@6YS2jZhjJui{z)7O`Nab(!{t*nU{4iHnKMuk<76 zh3WOx?81;&5iOfN2q$kJ0gaU!1cFP!=j^`E!h`w+^~T|e1Fsn%!jit6M^;6zDWS;y ziwOaJks;r1Vkp-Pu`h_~*+4Efs1(b_f3IA9@U3KT=Lo7v*nOQc^0do>z32K|InIQ> z-7@^|-yF;QhPj9PS{z71i)#rEu1kTA&IR2qDGAAF`|?gR1j0_ouVvJO z!56y}{HR!yX>86`XouC_tY0U+BL%Z28LRiu+$s@HYvLMffJ5!Ri8e^(*pKjRA0=NOG zm-^SAqK}}&&qq+g_vgKJr++;3{CiFOvvvJlKl|aETt=*$s`Q;5XT~P&3XvKJwr$DT z`=MSQGa|K>==_4*;29i^5RHh$ffOe$bT^Gzx?k)D=8)luA@Md}(s0Uv7_I#@`e7^$ zt&iRd=JlpS@fo-3(7PB#ziDF5diP!>LB7$;tlZ>N;m<`v>ck<};kj&^ii9%upjFXI4hq6cObIonsw?(`qq-c`#qLMZ{dy`~LzXe;D=!`d+9zhq< z1IMlmp5lLrED0Nw;@uxdM(ljf^xZ&UW1T3YJ4cYSKsnFQE0J&fo)?`Z)Sfte z%`6`=`K~{xnW~yvK9E{AQo@@|z}gk`ZErt4_oM&s&XL`a8B}ufh{>n%wKM1yZvjA_QEhE)PY3Rt2>z;1Tht zYOCrp0M|+_j#Yt<4e$w+BoFJB0tAOqg?!=B{?aY4>?Ud(U=_kj$Eu1{U=Y4U9l}B# z!pe~YQ7dwW!DAp4t16r-m-W`m}BID*XAhgOHV3M(h@-vU$Igj)B~&0m+pji+7ao^Im`UX8m?X|{*quI9!k&U-CY zc65o4R5^+8{ne*Bd^wiZ$yKMdA8DSS;}ef_b9uEM{x|+fO}+G+-j1_~pVdF?Jbt(5 z4st&>G){y|$6W7Q9W1YVQywRERkimB8r3wUXA>gSs#Mb)w0Aj~*tipzD&WS1r}ow< zSO!j!q)QFT3NMnq*ZjgK1=$m6XfVj9ySv`y)m!&_(Y**)S4lVq73&thL6LBH<$jg{a#N=glbD!3$uCqL3m?=m?Hc8Yw~e!6S^^hBPZ zM7ySt@ukxoo+VdKwH2ePYmu_{(W}>D3&6$oxf%?(yYhoGL&>F(1!8tRyQeVHe z?>DC( zUaS<2vghJA$k*AKD|7U%oA^*ZKJnvc6zk;9vslGj0*)QoS-GyGclJgE$%G_j}srmxoD2UW=@t5h`3`JvogrM$(} zetzH`ZJ#NHdzt1>5mL;qsXq4E5ncWK+e&V%)%TN&Pb0O<%`Fkf=H<)R7&;vFi}>XN z8GXf+3-m^mvy-!vYw}yPbcI^DGyd9Gu$@jf_EI{694EVn8X}F*oFYwBnMJXsik^9X zXUwO2#F4J1od^A|^4DCh7KHgye{z&eY>tb(T5a&PJRcquSuzmPAI`1F zEM?p*`8J4M=Jl%7)$T`mfB3e#knQ@T7nkagS6$GMzCO)+sN&IHELb&BEC$~!(cpVi zZ;DT!+U9yEb+x@9Op^J*wcBBzAJ4SpUthbQv&yb%;3_#fqr6^XP+PN`#!d)pw_&cp zKT3bb_qti+@0ZKV8LN9fA|1C>l9n8*@c>0xj`)MH<(;jOlqhsUuyR% znuv&(>?uJ7~p<7a&$$99=^DtWzPX<7%Jjm=TZ5e?Id z&jKEI@U&xXo@X-&H9vS9(QsEs#j&V%k7d-(X~P|!C{W~*gIbePA#mtz)hMB5JxV^h zFrs^5cKsbpviTIR2s6CN zBR+5g0%2P~tNCDEnAm4j;yGzt(O00a>ZeP!TWuPp1(q+G_{eT8<-EM4JfY5y2GP4u zHr&cL-n6sT+VG@5*gnWmu`yWiJfM4YxPJAVR+8~crPfyw+icpkA1oX+>~~8$(ZBSu zUTJf58=5{rrO6RNm|H zNlK}pBNW`?j`&xC>ZR}5yMC3E_91N_X&Sd{s6I7Y*FP^z}>-o_Q7|N2F~631A~^1 zHJy7y56IrXauuwx==ZW7SZ|-QK*`?V={E-Cl1&_&1L3B9*RASbhAmik?nPxWz9rxVTHO>UxTD2#&iyj_Waz@Iqu`EnkJTWLq!L7MN^2W=`qv6 zuD4D0K!>hy`$J-bO|;r~=9Z?rUpqeB-CR3@+Kb30C(r4?Y5!4QC9W7Iv2u3lZ0?Qd?BU+o z>D=HSBA-4TmQ=ZXs+jxm>HFukG+$b&5X!qo*p^I+i_D8v5XJpE zdO>R?p*x>pHw=t!D>_HyRjhcZ=;?RfiAs;-XRi}Y)UyqXT`)nKThEQno5xZl3!VWp`!LMP>;-_}Tkc_dIV^b&45Z@)@!B`~2<|-`Luu(XlGR1vTyt z>HV%^IfID2x-#!K^JTx9E%IhC+0M`2<$iIvpCm#HXIhc-`Ek>Aze;Dc;e~%_ z|EidI_R$~o$iZ{{)W1&k%?$ug9 z1_xA$or1h3U7O1__H0~3&np^dhA-(ncr&~_c)_q@_=hS!Yt_;wxX)gU_GJ;$lh~(a zXHeQBX7L6r&<;&)aP2l~{%bQEI4^IJ-iGxLhdjePqWc)L3)giJ3oq}U{p7qcC)+3U z9Q%;@Y3a|)d!xAoV$ew)eu4QcH?_G-%Ehrv;q~kW-b-cM8Is?J-B(~W;xqTFIu(sE z`n*4SvQz3uei9IpQfzZNKCGXv|2TqZuGd$r?Pq)I6Hn=hpjHbVFU(yV(n4CAqtU)&;9`R&TJD?*MD-&8^e?+@N|JcB^@t?W)Js)7T1)B>RJ4Da~OUDJ(8V*FLH4%PCT!XxYlvAlmB7)xO0>{MR-1I z5T`=i0aKw8TI;!Upy=l6i<_>KX%)YBL(6N-Ov`U>%-@*!xwRR^F=BcuRITgOnr>3M zM5pe~b>$`o-dEFx%sEP$1@+e?`gKv-eYdsH6t7XrHNLu~fTn4>Okj$HeZPA9!${kF z>1h1yq;{X}rE&S4!pJW)MjOG?>5(Xcd9GK^jzq*=99!#C15R4)PsdNAx4>)%o7`39R^*L5u zG%Q#l6An}20XZdZBw*(OV-F%)bSz}>bF2xXAk3x2Z4GJ?V8I9qlxV1S4+RPW%>AFc zjBHt9CnG@E6Ey0^>!sbo&c})!@zg2Xqc={fet0p8CN2nzi=_<9l9-n(b1lQjYK2o0xj~2EBn6qcF4l(u(dM zf7cn|H)Pukm4DP8N)mNbt3 zy#zM?YSH?Uajx|3$;zs z`K*Q#8b~%pw$`vc!+xfMspa(Er)SC(``WlZmeNh!=uthKnGv0FZ0o&Z6hodO|NkY- za~%31Bag|1DP$_g09;X#@IwLtjasM%>uplNC*&AX7g0F?TQT^HC~y^=4nif8(8mI> zMV1uvpV;C7LBT)ZLcmFppa45E@Hl{8(17HD=yG^;G*}Y=+K%5uovE7@7i^n%<~8Qo zO@Vi6r%PW)P@S;|Iu}DGE)LUmOyzu^FRl>-lULxDr^+HDe`}Se5I{~%&qJOCv*NpP z5Beqh`hOfDm;bYu00g=~xLj2`Fh>|go|PjU8lyl8eFD#)jZT#HpZwKvPl3>zd)eqjz9800`)j zcEudaC;wjpd!P>R45W<&na2@i(iNaU9t`S(xk<_Zj6YB(V2ra8sT2ZpcoIZW=U8DV z-7H8sh6YBX-JO7-(~ZfZ%hO=}qk_QrWdY@oKz)33o;IE)6X*=JP&FNFRsy#*_N77~ z_9ZtMaRvlEj}G?bFc?8{o;wNICOm0D**=USrLXmn!?CY1j`TxA42+!bD2Ik)PF85d zklmu9WaMmqo5M1EDcNdRTqDp!BZd-UC82>41`f`*)U@{%$Z1Ta$w+ugX9s{j<9W|>b`?bU`q(dMhc5xOg*Valc|w>?+g)2s1^7W zgmH9i9by>vu(7-k#y$-bScG{A`T~d?f6u}4frt1l4{@Mk$;2UYM@N1hkdHBo2R%YL zEH17Q0*?6m239OAkbE&4Bwd0B{Qw{hBDf%oOZ89Tzu6=5UuOVBNxB#$IF&Y!b~_z5 zMUg`u13#Ok%?^mK5LRt0;Jp;GRZ+qysxPbxJlbt)q9KahsIz5MA>@f*hJZOko~7NU zE!;yF1{0;yjz9@(gZr@w*n|Llx6Ym9`wYW(FaQn19yCP>ZE6X*Eab@#)F_8NtSIs- z%t#^+i4Ygr<-3~SegUu$Rd95q%S>gY9~NF73+Y()Y4{+4cC zHs)BIV=YID>>q>T&+I=g9jgOwu-)R%E`Wc5CV+J1aTFc2K@eUSY!}hvi~;N_(0E8; z(omE3i2!Z)&pskLpdT~IK~0-BzK5RyL8KdK{uBTzgvDV1BmsF9;#SlE4>9D)mR2li3dk(}UVvGUV}K5k z_P!lZ9r0F|fwm9_s36&q7Wq@BzK~{z{68B%fTj3DKL2|g2oMtXXS>-SOF||OE+!>V zJcbVG2GZpK+I09FG6sdL1O%LcCxKfz!U~^D2WkM~Ga0CIkO2B*I%>g`3<@t1+{!U* z@zzweq$Y|X1Xw<{De&A`%*>0hv>sB9u(2LSQVdb@9P0ydtIT8Fcd|m<1~h`RrA52L zJ%9m?!q}R3yA8251U_W`G4!_bfWn)iQFn0qBslgdwSh#sG8z1hfVTH>oUV zl$+l{IgFgGH+Cp*)PIFoNOqBV{B5K1elk;0viCgW5=VK(@XIr)(gNP~ru}Al$vDd# zt@3`E*vn( zgMvxrUk)EWmOEq4ymo@M>9^$oy#v8b=TrSeS45MUhdEl~z{5}Q@Gqw4+cNW$Rr{X3 z6W0Vw_IeM_JO6mXRJ$*&IMuPV+{jUHFafB-{HnoEd*MGlJ?lHl&AdDp)2Mj|1HAI* zYzq82q=kVz-<$hgjv#rJV8%GE5A4~oQC67cLC!?k4R(_(R(n4ZsTmPDr4Vo`B|XWz@|WI+>z@z# zoD2jv$iDI9v-@i4tF{O&%@(=XX}8Hk&^25iqUVC)rqRLqL$1)eMx3$SUnDqE1H}#Y zGm#Rh2&Vd{ON^I$Fy=mJ8^2-Nj=KUP^RKW!0dy0(uPCGs;{r)6W5Q4?9hC z3?eP|jE|Rm$Fmmc{TEr=;vYFqtoX0`9YJx`xb<1N+Q+N6wi|b3kDxZw-rbFB6?>P*n#W1CHGmCeFK z4R7E@uV>6m9-fmc#I4(Kea!5t7qwp$b978_H>jw=N^sp~ixQ1px|?d4zZG}MENgan zHrz42QzdB)7H*F#aCngYrlW$$DX8CIrByhsfe`X$6D*4;$k|5>+g1+q(5pCRvOsp1(OSgPAD9qnktzFHA=%tzF&F zDy(ZS(pXWQ1}f>N=W*pkbpVLzHN7mY$|5+WD(8kH~He!e==@WcMoa{uO)y0ZB_Hy7Eg zjrDRp4GT}@YQhrE2`i{sySU8Z?RalkT+p`#zvk2FC)1u}tRkD=-CL<;U-?qB#5{Gx z4LN(N)l}@;_>Tx9zmsBCm`i!NUOAxCbPKJ&gE=7ufP z8=Sb(xAw5S^m@F^q5b$0yVf)JHMBWS)tk&hTM=VTZ}P*wzaL#O&Nx_WiNVCSW}M=~ zO#Y(YQ;B>$-Mf0YuJKGLG9J|&)2ljXayclHkN08YjWpVCi z{}D8Ppudw=x#`(3u37j!I{N`-6O19luuN}cMa#a>Q;jN4()bAC@X@=?=F>gyKCD;0 zc6ZFbIizTFy7JvZ16Sn2H8qv*t}DJ{W1|y$i~IY*rPgH!vcz7Sv-VaS-GySh*Nc*y zrd_hH7CR%+Hi(jzd;Z){LITID?2^YyQ~PX3MlR1?oy-@3iw`q2IJqDMKM*&OihIek zzjrRaZ4`a?JN{?%YJf#d`B11HEyM8S_fecjO+DB|Iry#G|Mo^>_V!ox69>Jgw&cIn z*?dKrT7Q2)&oP)*)rpP6s;!)BAJm-ok-nkR)-QoW5ZrqWhySJ8c;RxB8>ZWA)#7Nwp~edr^dF@ zM9rMu_w-ATKa0Fucd%{}W=urWB??tkBo*iWYLQl(Qei7^&+p7NyII4X^_%^>C*|rP z?+Ag%xdJcazNr7fB~;Yu&iP;ZjWsxDYmdmE&wph|eJI%R|Jz(BHHE9#1i^gfRbP+l z#FDo!Q@=y}SG@lNt)GK9IGw1kv(+aHSM*4JUb30wtEkvC|8WbhAw!PwiKz5&!=*~5 zimBnI`ec)SUk!ZJBx=ImTUk=P&-JFvd_+XusM17v*~o7dzAaPzzy`jgeT_5TTp}+i z>{fp%ezvLZF)yOKj5tltan9;&`l(WnD9eqql6#2!RQg^guUqEIW# zvJ4xA8y1yc#Wy?u8u9#Kb(x&=L2}+P5+AYpAW?7CFq7zP*{_|BiNpfaO9f?%BOxQE|K+ zl0Y|yw8fRw3FUtucd)q4>2uIuJEEL%a^X9nUNd&%#K+8M4DG^|&HV+00;d{@5|0)} zM)p|Q^G1w~Q>+`&m$Ex>-+up0J!yHFGv7i{gFV;L946Ts?JYS@(>meg>&B_VV^Y*O z=y%H@-_PBD+aKP*<@DQZrL@0JXT$03PKKi1!le`+>$%wi=ANMIQTmN-=HWT9GPBDy zi}_GjX>uCo-csk%Fk`ig@cf9H+t@Vzbgg>4F$)b|D5I9{| zdw?xI&jW?f18ZQgjD>)w3|4`QZ8~bA;!2EQMN5az71rkQu(3X^K?mGlkOA)9a9Xl8 zF(J=GoJI|l=^WcUfGxGT$01hw1~@>+XI2ehBH!{HyTCkIp!&q|>OT@VLKeX710`W` zFkOMSNHU#{bR^ZXa{4K3?l!FY{xPJO4y*=90f|##6sm=_^N&i2q)i%~Eu7-up#g zxsCqUhC=Pvbjo`5d!)Ff4LaJ3aSmxqGVRkNgc3COVc50LweIhEZE$a9UUoWM^GKpF z@MlmnQ11IJsJKVv&r{FxFi~Gl^%G%E5z%C#=x%-IBG-4-kCrKo7TAlY{q?n`T5=Lo zux%}T6R=Rp;`I7WN3>R9o6dE6+|bIbT<)vu-_ueftDKk*`*|-~+Y1xpQ%7@C&3l>B zmo|~>8a%UA^|NcCYw2qCwNvhHmBzLQ+zYeU9XO^Yx}$zNr2JemFww{xR7*XvoA@D} z!Acs{sBYD4myNGNYVP60Z|jQZIO$_cgg2Id;znG2Rh{Z($d-BW;| zp^+l|Uh10lSAKHq?F+4-vc$rcVYH03Cjw=l-x~dLNrNCJsZ->j=g>_fF;ma_@i*_2 zYUGC~hOwfUzET(7gA3U?IEVPO*m^kePX0Iz10k%j8MQNKeFK;2^d1pKV`fKV@aPFtp>*X$i$M73^L4(s;Psmt=(&+;9GrreM(&y*en3|7CnrfDBLb42XfFQkm$7?l=be+>PchGhMetJsA4H=(pPEU*Ph7h* zwTbCcu5b(El)X=!hQA3gbm!&Xjj=N~aSQ!jTI*z8jEQKjXh@NIu1X*jyY_d^PovRy z1?p*NRZqQZh&hZ;kalizN-}nI!47l4UC@O+eHAE|>(0&svH2y%kz3au@5w!-Se5Ji z%in58qNlm>`C{kXq9HtKSZP$xyaR)75VdmEBxLv~Y1!OS>LGYl>$UE8bRR*hT!Dvn z&-OX4$s9q!mye)(Unjc=jivOfofi%&Qh!_e7hR}se1G}~di}_G27Pzv#mvd zuIBk`Xw7+(rH1|c1s1IwzZ`zfQy)Fca6*Pt?lVbEn3P z&RL~Tnhs#q220^>47D|-BR$yttu&nrm&yH@3&+kyO^b2#6wkR;m6vwvh+GtBXCUA) z7`S`CH-Yf``O?Po?;(|;(xP>JT6&BRw_#p9{C#6>pZQ9_DwAu0;1 z2!hrw*C_T_9!DgHdW~(Rb}HPu*QyiKCNg*jmqut{94i!Eq6YHaydhk@0TptoN|TZzaX6dKM;OL^S?v*NfN@ZHrWc{ zOFP{E-v}oV2n}Z5Y@9KU4|n8x7<*ivV}^=|of=Unlk3=Gwel3>r1mH!%+hp^nAm3b z(+@KzW-qA24zInDz?I(fFtKKIQr$AOFIvl{7oE@FE>qfa`>27yr6x*8XLOux)rJKC z<^O*+Zlw0i5K06fYhV~hyj8Ap450NG1U>=o7I5^`T^&RW8;On)1y&C@gDA6PE6A1} z*gMC65mm%MlF%K9kUeYNQ~ZFQWkK28bN1DiI6}W z5dsE{#AdXLE6`;=yKj2}&^9C<=iaefh#mq4PB#d6kXpKAn$9FAmkQE8_3)8T4;S~> z#D*DU^cN$7MOAxSu1T+(yrE6sPy{mO}X=h`3PaO%ba$#2%rPhmI1p^yv4lHP&nxbS->) zP4D+4lj=cu_+f$GzU$1ZnZJrZ{~9e;ca2D4*nia^TG}hti7Cj@vSyk_X{Oubu0bxo zm&3dy&Xt^YZx-kso$se1y4Zb6texZ?swJ(2{dlZ4ez)h_88J`7%Lcn9BKf6z^wznW zE@zZPDRB>@!5Iy!a;tYWvJqDj6a} z+Os@4kczvn8m6>dxZ=2!e#vM?nV|KZ`q>#ifhDCAZhCBQk zhLh|DZ9UcKBWMGSZ?JW{L3gVAiGQAlSMc|N7ao&#&AHg}USi7SK0VDjrh&Xz(|lpJ zk~ZqyFLWM*SNvFAo{IMv=M!O!GJGCw*W)-UKk&laH`)35*N-jMq@&0jD6Gwk!O4}hSw;%tW&ZcB&aoKr7t8M-|@ z*H5}fK5|P?@)tFoEUr~XT4eu)3(~G^m|w%ij$?IFx^M?uJ=T~@@SRDt9vquk6PskM zL5&p)Z@BfJAHn*=^M{MHt}7{NJ)V<4QS-!l?)FE4E8QO+=9Gla*@V!Pei<7gR&e6t zuSP`KI}n|8WLnh8vllbg0w;XoT4Tslm;+~Xf5F+QBWT&(llr&7ljw|Ib%pjJK96DJ zBHv4Sh0d`BQ(&vh|LSs%OLXL!r0ILi`W*8;q&4d?iTQ`gB>kZ9Ux{)UrlS^N#YPHe zpCJP7)dNIjh7`GThm->WT~Aq-7X$)UAX<^gND9aVrBDp9s+}eV>wxLm+zJDen1!@v zWd}68+26w+us=*?U@Y<9^BIIDz|{W33<1LO1R$tekLk%j^~EHn@;LiW{mcJ`f(^o|Fj)<#vi%=5&mC~ z0M{I6VU$P~sxK_V$}u1&f#8V?&WlyMR|~>bfP4>fywnZ|W^7M_W57RxbpYMQCU#6y z2c{+8%cTIz@LS^IH1fkFeHL)sVhiYb1`^E*x(WhJ7pX@teK0g#Kwte%-L7@cx$l=koK#+ln5E&ewI&jYUdTc2D}8+T zQ26|h@<%j%TM;+YtrJIu3=2#?Q_ASN_DME?wT1h*loMKFP$l>C4H=U#W46Z8hkZsT z#dr@ytG*QXNO-Z2MAX%qrwx`MdkE);1(+T6h->Lg7K61M%}B=I3&|Dg&y`OkS=7nY*wCW} znEWgY4AX!2*E)ujijAx>)w@OZPSm^iE$Tly*@2epE|b=5AqdXbVX(6p*CQw_T7^JZ zX=7{*cwtrL_DH5d{wsYhUd}bVzMEjnr0pI8;K5C zg}zS7?^0r0>xvf}?|x-F<91)uD`S<|crqueM&%K<_Q&=qUY=r<;7?4K#=d}7lP7Yn zTr+YIyAT+WOE%WMD%+`X@AbH#(eH+yg-&+Fw;*g{J3h)Dk+)m3V4Er-H*~Wk=LTi%bfEa zqi&C1lah#ySRU2f8+>#lON&FvyhMjjt#);yXtGf~yBQG35Ok{H!|VM#cmF)%2%BS~ z>k|62nXovQXSHvv9Qb9hJw=Zxg2_s7vBUz7<-tXXVD_Tlv6e z@ttlx2+yIckAdxcPnJ@qBkwLJR@2c*NS)V0S2lr)VFg9i9XSi@+R`jr!vYeIJ~}6QI239`d{ZsDZ8(_SEtwLfncwX# zc|rG>A16KL*w2^rq<&=d7h?z^PHmvS==~)89n;XR5%eL7>AiYk z{6QuE#ENsJxDuv6k>+hQYEn=nwstVR;?~Zs);F)vJ7A;lYuWsAtt=nIH)5~CewQu@kfDY(zu&=uMDNtv8r2vD~uQ*-T%z zZ?!M>I(w<6z)vFbw#Iee4&%dy_X2w!O6z;0ixE0a?GSkknfjY?^T)hJLH!S^2j!b} zCM?~`qHfc)Z&jM0mF6>yZe|cSqm7D&iX!GzV&0j!mdtDxxU!?%1(Ndy{RhGu`7@b7 zm@4LC3MpKFto{Yw|IvDY<<}uPI&uhfykVgmc$fC7_S(Cg#{1Q>$|D2sJ1#uyByTBC z{pcyE;+$8$tbHT>&jPWPq&JTv{=>spuAQ+X9$3u9m

    o@Ke@!yknmUG*5NmOtzgG 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%0Dra#9^~hPoUv(T#+JJM0v0IjeDEGo_G{ zQg}7&mA=1gz7Pz)iE55hXsq{IOfH9GY&(s|7Le;anj!(BK{3}`xIVN}bF1o}%W`d! z^Q5kPBb_9C?eJzJ^d{Nc!~_nT%M)i++NS2|xBQGPSbb3U)lL4%Wc0f!TIX8Iw|MZc z+UcJm7M}{dBXu^3EAA}uq9@EapBhrvB^FCawD8MEt7;)R&Z|4xuJB!P{?;1_hNY|{ zuqch9RVxy(QVWQhyCd_^neZa}D)=De{bZR9)w2 zykJQ``NZ|H*Q0k%*7`;UKrbRSE#PK#*EHVUYdr1@S`fGPO$HAY9b(+u<-h%VMCvPJ zI$FjQDvi_eBkA3*V_Yg3mxM?2i%$92#NxuaXM`*2glMk;1HCEhsW_oB6n;r{m16y3=;%0AjgjiOW#?K5p%fppp`yOO2I95uQlTu1x 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 diff --git a/og/pricing.jpg b/og/pricing.jpg deleted file mode 100644 index f1906c0ed031d7e0441ed90c1794d0543d91ec0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41101 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 diff --git a/og/privacy.jpg b/og/privacy.jpg deleted file mode 100644 index 7a67450d289c1915cc7244668fb84b3654c45155..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46810 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 A`~Uy| diff --git a/og/refund.jpg b/og/refund.jpg deleted file mode 100644 index 9213c49d4547881227f094ffaad319337770df3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46891 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 aVOH*K7CHo!)Bx0f-*AUmq96II|Gxm0^J!uL diff --git a/og/security.jpg b/og/security.jpg deleted file mode 100644 index 378ef031b8aa54e49bdf0c64b36c27ba4688b620..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46819 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 Vt{83eK=#p>jA9U;Goo*O{|D#SC%gav diff --git a/og/status.jpg b/og/status.jpg deleted file mode 100644 index baad411c90be92eb155b2501d2243927b94a5c39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39069 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 oaUn5^tUX4@{p;dkB@ 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�)a>E7x6OuP7bY@oHjqdG@E&W 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

    0=*AM^8a7FyB0{Z>e(Z2BSNYuLc?{a6q1f+sO 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 Pp0@)aJbfhgd-#6=>d^R8 diff --git a/og/getting-started.jpg b/og/getting-started.jpg deleted file mode 100644 index 50b732f354edff89c6b46428965c933aa33b31cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45470 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 diff --git a/og/workbench.jpg b/og/workbench.jpg deleted file mode 100644 index e15ea583b78052c16cb9e2df1bf79eaef32f0772..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42413 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Pricing · QECTOR - - - - - - - - - - - - - -
    Skip to main content
    Clear, Transparent Commercial Licensing

    License QECTOR for Production

    Free for academic and non-commercial research. For commercial use, pick a plan: licences are verified offline and work fully air-gapped, cancel any time, 14-day money-back on your first payment.

    Air-gapped

    Signed token, verified offline. No licence server, no phone-home.

    14-day money-back

    Full refund on your first payment of any plan, no questions asked.

    Cancel any time

    Your licence stays valid to the end of the period you paid for.

    Commercial Plans

    Production rights for your organisation's internal use. Subscriptions renew automatically until cancelled.

    40% off Lab for academic institutions. Non-commercial research is free.
    Most popular
    Pro
    $79/ month

    Or $790/year (2 months free). Pro licence tier.

    • Included: Commercial internal use
    • Included: All decoder families
    • Included: CPU + GPU (CUDA/OpenCL) batch
    • Included: Code distances up to 19
    • Included: Email support (2 business days)
    Buy monthly
    Lab
    $9,900/ year

    Enterprise licence tier, for research groups and labs.

    • Included: Everything in Pro
    • Included: Code distances up to 63
    • Included: Priority support with SLA
    • Included: 2-hour onboarding call
    • Included: One Validation Report ($5,000 value)
    Buy Lab
    Enterprise & OEM
    $25k+/ year

    Redistribution, SaaS, OEM and custom terms.

    • Included: Signed agreement, custom terms
    • Included: SaaS and customer-facing APIs
    • Included: OEM and hardware bundling
    • Included: Named support engineer
    Contact Sales

    Pro billed yearly: $790 / year. Prefer to own it? Pro Perpetual: $1,990 one-time (every 1.x release, 12 months of support).

    QECTOR Validation Sprint

    $3,750 one-time · 10-20 days delivery

    The recommended fast-track for teams seeking immediate, defensible proof of workflow value. We execute up to 3 standard benchmark workloads using QECTOR and deliver reproducible artifact bundles.

    • ✓ Includes a 60-day Pilot licence
    • ✓ Comparative analysis vs PyMatching/Stim
    • ✓ 60-minute results review call
    Request Validation Sprint

    Need only the licence and a call? The 60-day Pilot is $1,500: a 1-hour integration call and a written validation memo, 100% creditable toward Lab within 90 days.

    Activating Your License

    Everyone installs the same wheel from PyPI: there is no separate commercial build. Your token unlocks the paid features: GPU (CUDA/OpenCL) batch decoding on every paid plan, and code distances up to 63 on Lab and Enterprise. CPU decoding is never blocked; distance caps are enforced only when you set QECTOR_ENFORCE=1.

    pip install --upgrade "qector-decoder-v3>=1.0.1,<2"
    -export QECTOR_LICENSE_KEY="<your-token>"
    -export QECTOR_LICENSE="<your-token>"
    -
    -# Verify offline: prints Pro or Enterprise
    -python -c "import qector_decoder_v3 as q; print(q.get_license_info()['tier'])"

    Tokens are verified offline against a public key embedded in the package: no license server, no phone-home, works completely air-gapped.

    Why License QECTOR?

    Free (Source-Available)Licensed (Commercial)
    Non-commercial research use onlyInternal R&D and production rights
    Community support (GitHub Issues)Priority email support & SLAs
    QECTOR Workbench GUI (Free)Validation artifact reproduction harnesses
    PolyForm Noncommercial LicenseWritten Commercial License Agreement

    Frequently Asked Questions

    Does licensing work on air-gapped machines?

    Yes. A licence is a signed token verified offline against a public key built into the package. There is no licence server, no activation step and no network call, so it works on isolated and air-gapped systems.

    How is the licence delivered, and what does the token unlock?

    By e-mail within minutes of payment (check spam, then write to admin@qector.store with your Stripe receipt). Everyone installs the same wheel: pip install --upgrade "qector-decoder-v3>=1.0.1,<2". Set QECTOR_LICENSE_KEY and QECTOR_LICENSE to the token. Every paid plan unlocks GPU (CUDA/OpenCL) batch decoding; Lab and Enterprise also raise the code-distance tier to 63. CPU decoding is never blocked, and distance caps are only enforced if you set QECTOR_ENFORCE=1.

    Can I try it before committing?

    Every plan carries a 14-day money-back guarantee on the first payment: buy Pro monthly, run it on your own workloads, and if it is not right write to admin@qector.store for a full refund. For a structured evaluation with an integration call, take the 60-day Pilot, which is fully creditable toward Lab.

    Do plans renew automatically, and how do I cancel?

    Yes. Pro (monthly or annual) and Lab renew automatically until cancelled, with a reminder e-mail 14 days before each annual renewal. Cancel any time from your Stripe receipt or by writing to admin@qector.store; your licence stays valid until the end of the paid period. Pro Perpetual and the Pilot are one-time payments and never renew.

    What is your refund policy?

    14-day money-back guarantee on your first payment of any plan: write to admin@qector.store with your Stripe receipt and we refund it in full. Renewals are not refunded pro rata. Duplicate purchases and charges made in error are always refunded. If a token never arrives or fails to verify, we reissue it at no cost. This does not limit non-waivable statutory rights.

    What does a licence cover?

    Internal commercial use by your organisation, including production. Pro and Lab differ in licence tier (Lab raises the code-distance tier to 63) and support level. Pro Perpetual covers every 1.x release of qector-decoder-v3; a new major version such as 2.0 is a new licence. The Pilot is for evaluation (benchmarking, integration testing, threshold studies), not production.

    Is a hosted or customer-facing API covered?

    No. Pro and Lab cover internal use on your own infrastructure. As soon as QECTOR sits behind an API, product or service that anyone outside your organisation can reach, that is SaaS or redistribution and needs an Enterprise/OEM agreement. Internal endpoints used only by your own staff are fine. Unsure? Describe the deployment to admin@qector.store.

    Can I redistribute QECTOR inside my product?

    Only under an Enterprise/OEM agreement, which covers redistribution, SaaS hosting and hardware bundling. Write to admin@qector.store.

    Do I need a licence for non-commercial research?

    No. Personal, academic and other non-commercial use is free under the PolyForm Noncommercial License 1.0.0. Universities, public research organisations, charities and government institutions may also use it free, whatever the source of their funding. A company using QECTOR, including on a contract with a university, needs a paid plan. Academic institutions that want a paid plan anyway, for support or to pass commercial rights to an industry partner, get 40% off Lab with an institutional e-mail.

    What currency are prices in, and is tax included?

    Prices are in US dollars and exclude tax. Applicable sales tax, GST/HST or VAT is calculated and added at checkout from your billing address. Businesses can enter a VAT/GST number at checkout.

    Can we get a signed agreement, tax form or security questionnaire?

    Yes. For a signed PDF agreement, vendor profile, W-8BEN or equivalent, or a security questionnaire, write to admin@qector.store with your Stripe invoice number. Enterprise agreements are always signed contracts.

    What is not included: Unless explicitly granted, no tier includes redistribution, OEM, SaaS hosting, or sublicensing rights. Contact sales for Custom terms.

    Procurement: All prices are in USD; applicable taxes are added at checkout. Monthly and annual plans renew automatically until cancelled, with a reminder before each annual renewal. 14-day money-back guarantee on your first payment of any plan. Tokens are emailed within minutes.

    By purchasing, you accept the Commercial Licence Agreement.

    - - - diff --git a/pricing_scrolled.png b/pricing_scrolled.png deleted file mode 100644 index 55703c1df399442198a6ed704358b7499cee039d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1366420 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%0DYt!%pZG9_%-2m~(2cH7L)yCAKyV>iE+0T+`)>f0 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

    Q6Az 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

    )3qti({r|}(=IBi&1eJNbX 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%0DOhi-|~V5 ze+w;Km^eTNFKYOTzZDNQppJM9uQU>Ghx9^&ulQ@}dUe}0BpmMt@t;41A5-|Z^9W%6 z+Zrhvk^U4SED)jw=P$fOsBdSRG=(Pm?{8GF3{rmG>Ut}{WU^z=|L9KEr~HQ&c+Ln+ zsEDAbn17W5+`Z@c@MF(z?~VX8i>(o^vFFdeeohIyJNdr1y6%>7ce3*%|0W>?6{1G$ zE%Qj{vlqIweoI7q82i;PU%*d(QFtI~Fm~N`!%>$1r(pf$L_T5$hcM91=kA){-TY>? zA)2oSu&NTOZKM3c`?q2fVZPOT&w*x*1$*0amDc1X2Bmt>nzU4zO z^%kXX2Oap~e}<)s0I-ts>&ykZql$vt`b#Q(J7^4EwGsRSj7ZNTFxg);<%35hZ}^3G z0Jeei9}qF3>^~ZasLkw~`gKDFqDJa3vQh-y0!&q$AN%_o0Yr@-RuC{tKHd`gb$8-V zP$@DHmGSA<8;l*2EXKR~6OGMG$p<$zgude%Apf`}BN}Ky-`3rA`;kHoM=FuUJ?8`N z*3Qi2Vow4FbhligJI06rmF}w`Tm0!^Yh{LuUeX~FZ|s} z%Eyar%3wa>Z|mLtRl>4TNUy9i7c0zOj?y&7kO;HNogX#@n_5gLs<1ZC6TP8?cR+cJ zc}pKay!pUNa`8X`KR~}(QW>mm>sU>eNVr3nt!MefcV|xJCeN?3%|>aHRm3uHXQsd&3!ViQY>6 zw|63m_A8q**3SQt^%YQ6 zb=}&6NJt72(nz;}bhk)1g0ysZb0h?$yF8~&l3cEsMunfVZJ##q3J>=De16FYj2@1vcd6#pw@%yo8kUZPwco|~d z#E&ssL%(B7YcgBFt*y;A>l2yco_u`jjTLx2HW|}Gyn*oe1WaqKD2F4%sgF*@i6f!- zKQmN>3a$nwa!VPK{hL~x$M(;Se9T2*k!=~&C);|d{z@DNd|59lpki+P(+!26H!NBv zLNw&oXyIGmB!eg9=5#Wen)Yntwo$#>!JxmWH)XrC6Jgd@iDkoddNAAGg!MD|9z4%{ z^Y-Gw9MSP&NCSmX!R@qPNYc_G31l+AlG*79w75icv{YzVQ&qz-+U$>;{jUaFB|RaP z9D{m_sG7ri?oFp0vH<+h=zsk`XO_@YWwZ4LCGoDtpM5QfTay$AK5k3?5 zJ?0YaEJ$E$-T^&Fx^Uiy7K@GTovG5uLcac3y0E-%!CDu+g@uoiWHiZ3b?nHTrl+`! z$nBw|R=4Z5%$_W24HXTMni?7H>d&cHhw?`4e9dDRxk5jx-uZ^Qiu{0&+8m?~o<~y~ zS1yXr)rXt((KWQOlMVlv&n8T^S2~ggUMgR2)L@_Dnoyy#GPJ|73Ut4%m@ZUxUil>y zk3+A{flZw;ok^qamoFLp)^TBjx`NeQEf4Y?n%9*I%o}TCC?H#cnVP5^>UJ6TA17QlsJ zF!)PlXC+ch=||b!cy`(EFG4lUQ52X!@tB){h$9WQI2>*)$4`3-*}zM|E3J^xW@uhF zC9M<5bNwEg;UqY5?0j{v?9TXd`jO=P8fS^0@|lSC$DyzHi?qRe9Y2H~??{!CIE7>S zjWyxLDEn+TwXvtcEzPr|>9<^tZ8)Nab>3ZK!R9t+-!8KUK8F$naRnja1fJM3G(6?X5XGCrg6w$ZSQ{1*$Niv z0?%AOU8R`*z>1CSt1wi~?8f{u3@+A~z@Xf>SWvM!S`=z_!|d*iXYM*YZUr=HLf4R{ z#^-^u&K>zrLUR=UC@S%+h1Os`QGcZTay`+YiQLt5(msJRhu!hBgD?0O{jGzHT+U_8 z%7#Ps;Hvzo`by`{7vNc9{>;Co_cZ*wC=b5fAR)7x`1A7eC%#}~VNpR|wDfRW?`|&E z5ZdcpqSw&cZFw7bGLh+DL#>dY*mxbC9xlGr{ zqAvvuTG1b88EK5Vu52Mtrk+#?6IovO(Y3;ENn{deQ-RgZ9;==n`&Qu9aJH1`k}1TC zqm;So*lB12yqY5rB&Ai-h#Q$}_D2?jO40JP1%sh`4Uf_JmP4(%MCM#AHY>3R*p|)Y zwG)^8-9>;{gL9L6dhx{aoCF^0XgUAE)d+u=A9AI%;WzDPI}x)rLOWU7DoFh%rnu&-kjr?O^~+T3d_8%;IWvyC-Uu~{yzJv~9_eP4vrfOd-s@U$SMTDVm3 zU%b_c3Rr;k9-C0s%x~g=UCi(jI9sf*M(JLEyqC6L>m~x3PkT@+`GS|5-XtJi93-$* zK?o7J%V8HhGUz(oft{8sh0rBnTWzdW=EPVh0qgiiS~=@ejt*hYCmJT(=;?b*G2h!p zdwMqeI_b5}Q6I@vM~g21a#4l)-3i5wK2m#MzzQ5&E=_vA;reoAjtNxhQLy$Zjj1#! zT)8@9G0Xyf%B4=TdX`K=!J#kmTQ}cf(UuL3deudiL@XOyLD%_EQteEs+5Ohan)jgr zt1ubO)o^}QwM&zGb_nhcrs0SqgPI)covWMA>df|tGGerl$9>l1hL>o7GISEK`4E)=M3X5#>o_UcJ_P`DF*`FNj#92Q1s^)u`PH zQ}~NU5$G}DHU@(g1_sxYtA1r)-AIvl%x@2tH0aMRyMjo6`$N9e9Qc_|$w(!yTy6#> zD%mco?f+_Yc~31rUu9*rI6G0ia4Z^_oXj)VGod(JY;J*gy??yD?`G5P?XWpuVYUbp z8uAHU_m0NPZKmVBkkZXctEL7Xt5E*F*)%+<5TJ^gmGY6CPIm$#KyPVlN{vcKWK-K1 zV1^6|w4`^w>`zJJofKR{zK);asO#;^4(+t!%Aa&@A=(Ymq)W}F@u`1#NCCzKl1Mny1u{6y;5^L zzrJ2*1vEo1!mai85x?b8D>luA)8*dI!jgrC?%T)`p;sFE_k-_Q-P6rY63PvcE#_py z2u(88d2P0&c4<|V=#7jv=z3MD(haGVDYC{y~_5QtgJYU%F0LR{tW?Z!F+E`7|3;J3^( z?f{GfKi~uOr0EYuL<%5LwjGJ$K{aj&;_Gnu>mGitxw~BDD#*UNI&gWs2J`c~-#m4P z3XNB@wZ;zShY}cZeO`LWa26^}BQLQB%`6 zS}LVAoMTK)g^Y}pXJ}+mh?bY~*Mp)c<@b6=(`8>iy(GC&&$E`TwVY8YJ##)?JBl5; zcZ0EEJyguby8LD}`H2et*!*d`f80Qeh+pXX{^{{{<)3{ec;>NlLKMp;pBFJZRi|-b!`dAw$0Cd$uf|&m#dwo<|DCa3& zsN($1+I4TzuF~k%b&q#e)o6r|(_W1}p3cn?7+@`%CC_Z_@r1B{OS6le!|fRc28FRA z!AsYSl;4D<+8!S0H*zl(PcJTZAvI>TG@vJGRx{He#lLJ?fIke~+G;%Kw?E6{0+UfG z{>0bv#$2lras?Q;xLg?%+NSdn{&`Im3q#h0C}Fr}K6klH>p~@h{v``9u!JAn<&oh^ zDVhd1nTX$tt&^S3o2-@=_jl>xjIwDROjukUwQ-DY9#2T30kgkq>>On@6(AU$W#G9B zRH5R@6Nt}w@R6bmQ{yBSG(uh#>WuJL+F&Z#DP%jc1DE)S6L>a6CF@*5q@_Gwl3ESHl> zRgyG zF0if44b5PCX-hf|re;q1A|SBx?|bMzJ@mL;dx9WZ#r}VJK!K)bKYW?c73B{JcLCD^ z`zW1R)*w}pP5u?dLo@Q?Zk$|MHKtbeB}h?ysajEyT;gonT?*Hc2=!6?SGsT$pQlh> z;BoD70b%6YBkO3cC?VJijQ08zMV&KPJ?*u8fTGs}R_xsf4yn5N><11nb!u)0nggM- zG1H6f9Ia$dQs#isd>tsnfi^Df6i&(m)0?}sACJ6lx; zA51jf>@aN_4ja2(eA<;rcg~`qK}y{Srw9T3lO-bo{xH@VzD^f(+*2%L!pGyskCvQSl@Woxs4D{oja_kh6-wB@hvtlfWg{3@OHH( z6A!cHSVqH>TCFXBU4Z3}`+@ZKS-^zin3#bQrpoxkd$fNTMHdO%?4B5Jfckvv2L_JPYh!;Mql3blJ*TgtGG^SH zt@h|#LPK_NogH+;qCsq&?se10t*RPLS-s!A01VbUmS>Y;FMn1!($4KK4hsi|(ojX! zn`3!m9w-_+Ahq#^E%;w9AZhyIWVJsCOF5Z^5)?NK01YSVFa6Ad(B!OD{2>0{VU)%X zi)|evVFbJ^>qZBk;1bFDmiwq3PS^N>6KeWhfrdR{*gI1gVMtZ)@}B)k!2J+@w&tsX z+u?s)TzIeRS}PC8i6Coz^y`P6Qd6avj|KyJmGYPiZ>gJDTP1zXvAXf`XhSCUw+}`&)#BBeuEsvfl04!ce&>)*a|t=KYZNUQ}(gg{-A8e z#j*%gwbE{BaXwvKgcO%5-A-$Jfz{aL%g(&D?O4qW!&mpuw*dtMDT3sb2!lpt6??sbe zV=83A0-gv#*&G#_>bW5p-1@98leQLOezM@q`AS7IoGhdgT1A81ne*6kL|a?n7c0cT zPjniNfa#*xIBoIhHB@imL#~)O3ZL(?_r%CI$dRc;xtV549;Y3MBiNa-a`1vqGM!$W zs4o2Jtt;(aS{UkTk|Sjni1nB&lTyiIYS7{wFK{xs=x-!w#UF@C zJP6xVGW}7A2{44m$QR&mh(QYLJsR8`FvkV@C0|YYW0VhNQHf5kmHE=|u1r@T$RCQu@371>?5ZWkkn5buu0Zi7eXA19$CA^Yul+Ghc`Oe3K z>dP~G%P2(hb0T*Hs2Vpas`g796~NfOp(o2V7V!FYH*RkH{5C>|-`ba(&GDlO<*5?B znpHPgr(gLYXH&=wF8AJme0Ih{vfX*>~rhRdLRsIQU1(?9N^YEY` z<8N%QXFAfk3@0mlK2{%I?jv6x07ip0xmoYGANi;`B6z-RweRWWdq@g>Qfmv+!=QEF zSSBJWPJFs6>!&`1b;PSZ>IxEfw{<`D*JJT?PV81Hjd2{purvHK9b?ivYu-js{M9BJ zwu5RK;yr)>YyyOmeh99q%tZes7^K>o9w?5$s#4UuR6|c?kSD+Nm(Nk|c2Dojt zvIz!Ne}}RWSx#yut;gwb!eHUUND>`=H@&`qJA<#nyic+$OL9POO(j zH^81zO2vG(U%tM-W??ac=bb#+%vV&6Wl*ftZLOWWIsK(%af&XWatHu`rY8G*TvoYd za7*^%Z643zJUh2z(Nl>guxn_!4PJ*vm&U~jM(hNdI*lDFkXfC8K@PQ+qWtBuNdQ~s z(}xuyqctU0Es>0~?2s!SMqE6cb}w=6;(HHyy5?GWIs3*W)ZmX&2Btu;>Y2E<*qQtA zM`?eA1}KWz<*Z%RA+3@zLcZB*H>3UO7O?k2&MDxAp`ze#tiS8bqkno_?^#OWZf$WE zGz(t6^LlzDI-1kZh?*VdBUzjNRt6L7&o;R+y|yY>6r5QSQ9MR6h?1N9@A&wwmTR4ktMbS4zz_S39OtHRbVWrg+rJO}H}`|E<5;z5 z>E1-(nawPJZC$oUKJmQ1J~H4!Rs8D+dBS_`nERqw+m9P9JZo;W3HUZaP3`>g)6@0k zr6!Y6b`Ced7g=1&K0gX2XySAK@JaMyT6@2S)!Z8Jth5@m^}R&{wv*UZRZ4Dpiig($ zDwVv(H?>sj&=mXxuCZ8!)xTF?usAN&K0cnU&lDX<0+me73r{_Ic!Y($ySHj|%u~Ei zuzL$rD=F!@aIkg7S_L868SV~&ySsGDygg)k3jsWrWkOy+dm;1s1(fFYv|7wBe}!OM zn>5-R4Q#cVP2D{)FoRGZM!!S(!yV9*sGLuyNaCfnfeMb?GO#Ux7y@uz7 z1JLg58~BWWR?QrGIgMZY)?&B2Kw0(SVxk+D)v?B;xlpkO!c_%nmP@w?!8HLL)7)?@ zYqxp=gjbBq*#iJ7uMCH3SS>4Zl&IhG@R?o!E(Fq9DYc5ZL>q)2CQUBsZf!$?72!3$ zyu}`%d3E1b%nfOhHMcq_s)+;K~_x9;~sI4tESu zA%nUSsdv?G;(jQY*&@z%OKIG|`!&l}Km_xdBqWf!#!`CuwfTaW_o%}Epf?!+z1hpY zsQD8TVv2d;p6)bL!aE0ASp_u`9xk6hKDybt?HxmISAQFchw<^-@JtR#+3g1(xj!v0 z6Ip^iT~COOzyCzoo_X}o0g^=J~#Ou`@-SR`2WT- zy@-HWI6)O3hW)$o{wIC{&^0~)SlanD%=Y)u8Vgit%720-iO=B^iWBpH!zXK$P@#Wf zaKIZf!k!!IkHr4xoojedp>coO0(J~&sPbU`Uvd65RH)ED0n?16=Z1XH=4tyMB9pJ?%)Xjw+Ez(tU{jdNu$#crb`$VeGI@SNH zOMjk^2?5`%(g|w~vEBH;Pti1=!-v=|HF!h_)<8zUGx_+RYYa%UvHsX$G(m>e3U6KY zpZ|ZpL2G_)$Ox*D0q(Wot&{)z>DaSCR}n!w{^|M}A5>`g|4gGE^z-bkQk9|pZDNxE z`27EV6ixVf_DJBom;RYLuR4kEng7J$yyBl{Z;%t~0O4Pu6ZlHncKTNUJE;J#K!0*o z$LN1VhxiC><E4BnP>xLeX z@XW3Zu6Jlf2=Kg@%Msf277cnVgIbuMQ!PD=<XyQ44YM< zgWTe7@%F3`fjT*P!C`;SZso%i`qbxgfPAktoyicUWWn1TtsKb!Lzp8tC9jg-F&i;O zwA(A(Tk_gaP2@-(C--;F%=FkB+9~|zYAfQj70rTd+4tEK@<7K|TfZZYAHG^w93vle zSN3Ks$5}Wh8leePud1pTPH7eRY_v^Pz&~lKm@ADfx=q`&L0vV`A{@qt2-3zj1!cVV z*|oF%=t%e8hgB_UVv8Q1!}e<(ZSZ1{PF-WWHyK(ZeCNjUI8~nG+kHvt8~@^+H*sRsI?ltUVW`6txw1+vK$$<=s`IQ>&Nn*d>oq4Ki4+11lJLE z;!3}{_eB_E=33w0MAojL7rqhcYtNF#c+CKk{J0|_b+Hai9S9H&bMFAww zNgjdf&_yXQ8GyF^arRC7S(xmhyqFpGK$(`Hn9*cl$`~aJ1U>rV|VfK(8oUt z6rgP@<#S)`uy{P_O@7c@tI8n%jOZ4VSk1&AL6ZT`eYJxqxke`O3lR#UlG5;ciCBcq zW``*a8MQeEv&=Y-zu%jL2K#fVV1FFxXXQNjATB8fFC7M`xb}BQq?r0WRksFRxXJIC zjRq_YES6d{N_Si7Qtub`WO(l>WFyco_q%%K6}x{}W{&aPBC7d1w%D4@s?lAIDH^Jj zYN~1%A0fvClxG%Z<~$UoTyfawJL-n+GOPbQ4<2C>1>! zbJjURwcAfMrdJu8#Ayt|Vyp<_pHre(u<3=txNymdlRO*>hYeSq4c)gcqj{$|L5VQ0 zw#!|m6Qz?`i6jj>g6oe$5Yt5L?~6Tw349rb0bl@)?`vTMa;%c#TDUweplg3U{rproJ-FDx5R;X*}?k z4dlo|38=)1_!jiA0>yk|hBA8k8xGjBXuVObIzd+{;8swh*}V#CSSeLDrVrGbvq5jN z=mKP~dP&`3C-6PgJs>I>QZ6^5Wr$4kP&i#Sr&mn2 zU#&~|%^#vGVhTMU&u&MbmQo1`r5CEK=E{TeM#XFI54X2-!(csxA(h_-N~+%t*6um% zIUY?AW%4zFMjp9q?KX!O8Zw!==DF!X0UsBJ_I@be0R~LAI5i?R8v)6 z&gr<*7Uhphqg*)Vv|}t0E2@hr|49*>eUWu(zZrCY)RwAwyxi2S|He5rqeu{*BB9dg zc(O7qCVQ#{;>hQ5hx0BlhR%ml@k_-fhtuB1d9JKye^Tl8_jHwMgm4(ah?NNeDg7*= zWW~ldY#Nn{i*%zpKoZJz8$~A$)RlX+{?w$C%chr%5dS za#$xsy;?L9E%+@VqdQMnsrE=3=Vl}Y0mn+8P-vR1cD?iJ?L-fGe=N~QSLnSrw?0Iy zI-T+uv=+sZESkw zZYI&sZ$#tUx@&}{_O$sxPfw3{8R`)ZMx2+v6p`Zwy*rT%&7%b9nn^#BltWR%R ze6L`WHOc9+b;I-`Uu!{{n^I6`BWt&7All<@XZ1;wn*g2ih)Kt|J%e1tX0F5bBpv}U ztWQ@%>o*a?C_m8~Sd(o zrJL14Rk}iTV*NR`08N&GKSSLc!H9ZAN`_<>{ZAt$*37!>ispw0^NvTr#z_(6Tu1#iA3!Fco0ZhoG@`ekPPokKXIPhb-+GBR8{S6#u=DKx<#%y( zbu^S@t6b1d7zq!JQ$(y2F3qk5e)H%yl)$AsmYg8$<|G+Qmmo-JPQ=>;a+=O62hnNp z7|MYsdcrVi)ED{Ee@BUeCk_r_rBBKv&%soeh5cU2gW z%8q1US=vE?6ny_!d>;oyHGd43P4w75fJp$rkW^15EXzb=c9?Uabb zy=VoryVoP+4A|#sXIuXJ)owl0B+U&)>Sy~qULKIA^DyWip_XC0}cFrmI+K zV_jWc)io#ueryH5n(H8Yt#aBTy?ZKG&5s0818xQnc8#%s`S4+dRl#K ztkHCRe|Z-(0OsLcT@&)(pp~1Q8M*Gu^shhP7JnOAD)+{BTQ*I=n0Q{e)pC=0sjeo` zWoIOft6u+HOv!nD50fsu5Svk8h5^kQ3o%P5W^eBul8XRS zrpU~c+>Tu@J0l+5^i%brrEvImjt-MT)N5+WlpLLwa6f)d;v>bH?_Bj!Wl;a{%T1i8 zE+1SJqaPTZH|Oi?sy?du*1f~y&Bw8iQGolW_k5UyX+xk4j|@!)dX~REB`v%mBx$B( z<^_9>^I)k;?n2dtN@ka2T#x4250+fzfmmeF>Je6LR+&y3o8%R~|J9+(`5t*j_(&Sx z>sFKoPK7)w%X|#WrIWa@+7@{wR^6MGE<2+H#U|tY3W^3wQ|G&z)tI2|A4mJ^fL$z} zWH1q#G&U9xNTSqfY8;c$?Qt$Irm?rUIgSNQ?iBB<($mpT1l-* zO4%4nJO@J<;o|S5!zWEhfrFkuMuTF35zMGc=s&dJSaG^j-{TG!S>4xBU<>~$k;ryx$OHF*8X|KBdrdu=v zlYEoIJGvz2=H^N@%il5}XM_W@nat~vVf<5JR2jhpSBK==P^#U`6+L4rA7%o-r*o^_ z07abrZkhNtkoR%haf@GXr$0~1>eTKX|6+zgyTgw#1MQ~U+0VOJe+L$Q*MB+rl{ZQn zpNrJR#^peq+9ZG|6#Ev(Js|uN3Y(m9oZ`}x`XA}!yHD)zMzld!yR%nwQR2NsN9CC} zkBzmG(I{VS$or%3Z&rP-nnLb=lesxrUSD5hh?Z#9!viie5u-hh-r(RpD4Wkw>|$>2?qXowE*Uq~cCe8dkQ-q8o9L*kd4PvfA9J zPHK5nEx%KD>MaW|3V*cvONaKQt~IC4#z`(Jk$TnfN0(u5z`xeD>bJi}GX3E3U1ZBj zFf9K=BK+@3(6$nTipsQbk1Q^mZXivKqhp_9mR!<@d8mn=uI}j?TjZG%54iN2sbWUD+=>Y9`}|9%({8-My2ais4xVnFu2BSL~&l^ePpDMWT{`4{$VH_VZ*^&PV?A^0d8QISN2M z0#;+`EGGq#ygjnc48M*}6XRhSOeWHu6V77f98YF{!jr_9QbEoWqU=n`G`Za7hllwz zLcfmMZTErhyMfKlKnZvzhZJSyL$NH|*>*+|-;^eW!xBk7cTyCxp=m9IS56-0q9z+y z;>+%DZ}Y=QbWX3YdtzDNlC(60Eo!L4EJA!8Cq<|;bx(%f&o53cbp;mun(a_5Fc4Y?2~sfmqQAll|0~!3{gL=BfuOhLoZ2vDC75d*l}rF{w1gYKSpeL zkT>|?U;=n=m4+jy54%x8MzR35;rkQ{FY;6cjqooQz*efwZE#VRqES0LJEu~t>~?T5 zXVG|tb}8DgHuzP~@d|-*C~>A5EO677#_!SKxp{W>>Rgn45DAd_%Yi`?$}mDliKyvj z`H9_g?3hx$y~@XV(~!`M!-bi6UzKT<`DC$67=&ORp|gt`U7jp#G$p@$tQmxi-`o;#Qh@;jqKapf}tX5iJ7mZ6}5Hg2&4J z9p;I6tB5uvV~fAf_p1~@6FsdgYmVwilffUFgR76*Rxxswi&S2+Y)oI8&7ygp_b>XV zv$6G)_w|V1Qi-3)Q+{wvJd1l^(&uji;qkOi>s1xG1_s@T$}M0$lS}au&)g;t!vQ8j zyyVKNkDDr^7Md+2^vs8e;`5r{<$bLcb;?WrC~D?hd&j4n)tAoznp7%q8A7&CINd1uZ#%{Z(1`KFb`VvVgBS$}X_ULV) z(*in@E#vxNak|i>P}@*usp=?99M#8ME1f?*pcMiD-4!yV{RsknFYKi(Wo`+SvyU`c zxO^am>ErQNcF3W)85F4j`PDx+TaQ}_digyLKKT}W<#K|ZD=T!_zncQ+zOCUn$V3mS zlNI>v>dKqEN4DN>vu}HM*Gmzt;uZE`x_0%(%!>c=$OymJaG1it`~oe6Jsx+8h9gmI zM29*#r4y|xVQ7r>&uY(?I3DPxT;Xg1{X%?8O*4Q6a7djXj;QxHD9y0~_<^ zrz}8I=$L`KmCcF;lcJKbEgt7$t-}_%q3>F3hV~{XL)Fz2?$g7rtzziSPN95PQsCUJ zN{?%;v{Wez3UoqWjg(fq-`%|FntCXBFJrUy6{foS`P4$d^O>}s?#yn!D1jS-9>W=MOz5S2RuA0|=_qJbR&o?F@##rXB zg5C;KZCspY&KBh<6ov-8_bueHe~1>NzvS;;-#;YP@O9qe1l?u*JW8+Wjp;!p0swu( z*G*HJaFL%;I@nB7#W&9Pdcmd<(4v7gdy~>cm)HC@7ic`;WD-$(^y$qBd;;k)D6$P< zwP7_7BU!@VSlaCwUOkij^9_o}Pn@>f$g+nG%m_smJT0D_PBbUtk%2IemIVxPr)?MR zzfVm8t~?d`hsf%+6*!qUzsj4W4Si3o2xB%2(0QDs41lsC>>Yb~|M;@SGyRF5emiR+`q2D|;75PB`gEhXE}wMR56#py$fWui#{gJ()lvTKZp>eH`OkTLXq z8~!LHiL$I5Q_Q(zm&KqX>W7&s1L6Rn(wGg06FD`m%&-{?GN;L3!KM@5F>3Q=OT-bP z{uFtq!F_*F?+N5U5fN$o#wMZ;;c652T^N1%h7#rLI_cirES+3BoXQtbDqzGX5IK72uv)=n`7VtzFU3MDCm%=L zjbzjMRr9RZvLvRw0W#lYs@$x9)bmT*g-LsI&@YFL6!ytsMIbTsCIUvN3HdQ1MMnb& zaqtJXX}6Z1+}s)5+)$H$jvD~z`^$Mt0@sU<;_g&XZ4jTiS|yD`VwG^WbiYQKb(blt zm`tLfzCLNBi1Xf#E8A8(-k{MiyW=jBlz8}4MrjXQ6 z%SYID8|F%MhnD(jGc@;>+q*lU=lKpj3|*gNL^tD=SeN!zfBMXZBRSA{_#qLoSQrA6 zFmw?7)119T>-6#xa4^Ulpz>#`M3q(9F>a9~SMFlzGzjy~u^9r_zH8U1*#xg8<@yWC zWRAs+q#iC-PwwpeX6G>f3zZzXXdBuNW6iQTG zU5UqL`MJJd`SiqirMJ9=D_2$Na&w~R`gnPZRtZM4KkJ^*%h9Wi3ab}D#8WKsRK|ul zd-85KD=l;bB&nsI+LxCD*!C?V?>6n#t5s4Qmt5~|Zg|}8a0mbguV{j>%Sx-!d&1=K zE~FgKeXW;7EjTc&_8RbySPX`yK{q%&Lv+eDLfgxav@B>~*J+B7SxJTiPfS ztGMxkAe>DT)z|(mrYu8Dre&d%D z+mU$ZFdPg75Hs<@D==wF)tls`k(KLhF3&nRS<1U!W54a%XSMLW7=5~B$^D@&H&h0g zHh}Bs$b9|Qf6~6R6`*MA&`e<``m@iCwxv>D_}2h29jfI5#hH7jqlY3+79FR@-F5#b zATwt;6OciRPf72h@I5YY>wSE5Tr}valILocs#xf zoCgSmKs)$`4fR?my7^bonQFw9KvwODPOp9opoc>V7OmFYFHe8FCCdPfX7l50xhxh7 z4nxdTw`7vwDRzAR*l{WpPDkTbfSCaTiNk6!^+MdU}+aL3HI;KD(x;Prr`1(0~UcU`(A7+|AjEG>| zsH<8!o{!$w^-XZ+xnGUyB#=_zi32bc{79^L?|~@e3Akp6AaU|Hq5P*y08`+;^M=UM zSZOtPrdX!QSmXv1PG?#SU?PG}#~+77)KQNb?wl<6Z935wrI3!MUe#{p839rDrgw3UT+Mg?vMV}+9#CkC3JhpNGgx|N29H1`QJHVc=gxd z!y3naf0@Y;`- zA?LTP&hp2GDsI;gCm8W!+-Qr&)?a}=iyzSTZSACe-4E%;X@COh0RZ7UC)`UStfz~s zZK;qCV2TiYJ^L12Eac+_yS@0;c=M%&kK!1m+ASj0LQ-J{tI6+D5?R|QvU<(Y*4i9C z)ORAedOl6|wevRqdI_+fgtM6#gzvsray<%(+TYzoKxuNn;E2^4aTLSKndilyAhZZ^ zFMI$OLoW8`Julk$c3v8;G$;=|yyOcDd7qQZMAH+E!&`QI!nb53jmzz5-I{>WhI1XpJu%ms4NzoAno^~%<1b_P zgCIdzHodM+a>ISU?;TrRcRPG_UkYkW+Bt(QKax!+mbpLOyuso*z>uHN|2WSiFXyX9 z0g&*kK`8r$Qk29UzMbt|)HdBPk8^xC5zHLb8Bes>Bl@AphZD#zJAdwk83avHhbS>& zxK>+ndMxHqXZoWaET4E#zphO|;!F zvIKWskZOrVi;8C&J$vAifa~);Yvr0j48(I{r4!SPc#>qCWc(scOW5GB6jwv}H5mn4RNepP;d54g|p9&JcS zdhFcZa7KVua(|F>;V^JamtzhTwmN|nnhdPGSZcJBbgxo2!{$94lJjAL`}s?%r?)anbmK#J9jmH7h?~EZ>;;3tE?Y?aEW15 z>p^9h(6z0cWAX9iU{GZFZ`J?&SrAOo9wA1qMj)mre?DZUDuA%`A(4cPbSox*!uuU| zd$?(6k0VM7j2;|R(CnD>)t{;W8GZuYMRR9ZbO4w1&|N&wYCMfTYz+`HD92!o7QE@a zT~f2>bOv!4Iy!o|kkk*l-H@;2IgtAi{%-c4N0W&N={Ublg<%5)$oKE}`f<>lbY;QoE5&E?x_ z<+=a)8dJ!Ne=@4j3ZFB#l>LKJo(t9dy`B@cc>kP@pA`d!YR;{9@F%PEpFs*p5x4OH z_nkt|LtPcrkNe+)bVVq0Ko3ZH?(gt=x7PoeAQ7N`2cFsU{8syi68wLYOC(FoR%`rk z!G?cl^`E(Y354$7c$P!|+tL5@_|J6Ryx9pj0$1|Q6AG3qx?&QI@e_D+-hRns)NpDy}W!#8eYGG$BgQK(tpJ5Cp6 zi{t+D_D{l+0)=*#c^|Dw+^$c!7)(7qJ%4K2t}w^Z3G;nDTkGvg`VA}{JR>lWRq`HN zGBiqfj;z6O3J_}$49bXAvb!5(Jg!!@nV0X@)gy`w!ok!+g%4Bsx13SH9L$3a=Wo%& zfuvlkV{K2*^XTl5mkcflidkWEONPgQ_-4ccl9{(TFfTz&f$`}elDAxPm>spm-QBYX zJi|@l6yp(O0y9hWM{G4=9z2@(_!@mAwZ=d4lgp&AIy$5_KW}3ZKwL=QP!zuRQWFu7 ziO3GHh*T;))@plsrZ#Ei7y|=j7+yVBFo{KPBR`&MMs(~O=P>N0l&I(gs&@!HJlAP? zBCrdMhasc3*`tfCK{+M@uZX8`5&%8y`277=g4hw`nTix64Bd@Y+K;l=Q zOXPf=RSSU8V}V*AlR=UBvdr5=m;~3}@~6(l1)5HwjZfRXI6FG0LAB%>KD*yVOGl%Es`=1VOTg5)JyOWLO@ zqNY;tg&%hpT{?s;WY40Df>Dyz8Fh)$BV97mQRK68eZYEAj4%_XV0&i6&e<%`e2z$ zMNsJ91me*f7^LW&FoM_*S%!^Gv+zJ_c6v{$R%4n3Le*QEZc-X0V(VpkuBmV7v;v#V=NgpeZQ zJ8|2GVW6-bz7YyJoDg(6MwyfS>D?XYg*y~y#RmPnW#@rc>qAQ0G$HgWd7PKy!l2U0 zGLKYrOqQ)dqcp1gUd>A7QrIQ&8)rB2vT_UFjcw-YOLk#o*WjD8)87kmBYRGGB(@pm z9i0-#U%ALL(*0ib&wM(FUn_-#EHvn$@N@%{Pq=)yU4h^+=}oB3x7_NAqGw#e93@kNTZRIG`!g*I~Q~Th0cUWP!rxlgF1mXUb zNbQD=6O$e_3$d85tp3N||l>e`K8nRFzHF_oYj^q{Bla-Q9AeyQEuEKsu!x4lUB% zEgce4(%s$C-QUF>&-1?Tx7JxM(ZzM8Prwds;hc`7@hyFJ*zT;o@nTQKYS$Av3!EHw-pU|8%5r(ufYCPN7&_Pn*w zf^PIlPFjwlm}mQ^kB1D~BI%2b@F+NaMN7{j%$jZLFMf8J5zlK-K=@cR)#OreilV!4 zrFM;5g&pWMiF~ObLeYbN=CMS}JUGlR>aG&EZ14x?b&fA-uNYy-r+xg(9Y! zKrK`LX{Z^RF{}$Q_8sFuL)|WqnfD&w5C*483_+LOqPf6b&bzOIiB~z#!Ra)z-({_U zu`u5M&1(W4hE#;;W`m^Z6@TzGjTO$!GP;FRBKv(M%^yfEvs^(M{x-792a<=dguZ3N zDbcR4wZbOvG^67xQLA61C<1Qo3V$khRwsA7b+=JOhU6&HO){c!kh;|paABwQ7RJU4 zy>BaRl6xwaYt9|I!~T%)*(yqDRTCr^OPDvxVB()Un2s>ESu`%DL1nm}%Q8>%0m7n$ z^%~WA5~D>|^{X|lPQ^iGkl_0@Q5Xj?iIIhfJ)j}+A>4&SIFKl9$t z?FPk~RF!^`vgxmR&yAzCYn2D;Lh;_7`HFPrM!^e&s}|?jWGm;OQCV?Fm{DZUU+|ta zxey1;JK(;f`D0K>3Wp+7vO0)5$AZj(0B3}wk)MG)b-+c8z?WhBCDT~zjE-H7*dm@S z8L2V=q%YKBHR)JO{3j`FGHS|tN#;9(A`BYrwnA0$B@2b|#ypwH zZ<=V;>zL3i(jf_z)tQ5Mcz`{2q(Jq`Oh({2;?UdJYj=d|*J4b$u^L{*X01JpNHIo!q!9|K8rje7RmHAsfcnOl;$FJ0?$x@NoVvb^D%nHD=#*l1E z(w3U*HfHq!d&aqn>AYJCYWKL^+`anpDM(frw;OeI$gwwY>nafY2NHJvNckT(p+>JV z`Fp4@^XQ(Q=WMpDsp!eITlE>jEpBuUgaNwLjLruvqrHPAu66K_W@SCCIV$tAQAOkA zI(OD?-zUsJ#8J^W6>t!!m?J+jn1A6%w_LP}s87;>;0(Xf_{P{c>X#^$iHQL^xF3+6M}Mj9^fdE)COw zPVrfROU0VE6LI~ktM2}^wM6b?VWjH;UgU&5u3PTK^v>nV-omCdc;37bP^{X5FMk~SwfL^wzlA| zB0cAy(aeRANrLJri@DarlR1_FyhNbYQsJ}TtOQMhyePdyP4Mz!Xk^kU3klHdvykiT zXRI=K_FNRu>(O9VHC9uk*=X=L{fL72jpK{Q8&py;Ym^&upU+Nh);@fp=iK*IMf^Bm zG_~*LdJf%0ZzO?-hld7^Gq$MA30gf2%i<(rp%WkW>?xi+rtL;;n(g;r?`}1X%J@uhM+oyElIt zCoNLZcaA_w)yw!7eMx8#+;_Xc`9XEbq`XDLG%>q+m}iLLXD`BoH&EnfdL zpw1kQFM3SVa|Su%~i17-3m*nKHDp?Hc`_o_wiKB{86g(%`DTr`&U z>+fGJB~vSTiu453Fc<5*6N5+>be`nD(t7AFq_INYqF9#}EP&hblGrvnk|_Ad@W#y!xlnqk|oE zo~*T4gmm`o^wp)fcZ}ME{7{K#Wg~^CvF!n$58M(d7>gk?JF!UVeS2KG#t(IJyD8={87E()6L~MZoT13 zkSUQ9@*j%OG;yN_!(guGHs|S+z%G7o*UOeqaq>^z-U!cnmj{(-KEtH9Gta-YwRFr8 zZzi|G5$dV3}TPzuQXWjd&l2=BH}O&6-QYTUWCxm_+|ZLE~@ zMxbpg#fSf_@YxwKfJ8^sa$kSk%1&5fB3Tk_6d(FrM(^Pf?Cqp@GG4XBK#i`+S3dLI z`<^v|YN@n(twOsb3#UnaMM2k08IpAy3#wkv z+oo>U>Ye4Jf!`$uOb~x8N|0g__P|AN9flVOyHvD0S&s-FB;Lq8?arpO4&a~l_;Inq zDwT10I$v*ZZFn$nStL=)t>PEd?fALD=xFZ^!(>mE^j>dYSP7M@<+)U(n=)%c|8kmh z*g;Na2PU&RndF9AtBLUU&W4dAdn@amYtMg3uokFgRr8(Ma}J;pFoV5~?g@caP{zRO zxgF}A`GvLbrwOxZpAOKCrQya`@Oo`by=sEfoVPZ=$7Yb*h7ZBCP^05Ftf_=*+Nd3? zjRo~Ct!&SwX)b4^9n?>)?(?g{X0JW2_vwaT_mOY*bnz2;r?AwR=itWO2{wFYH6Hft zwB_gqr7ZWL#&z$0{`?_n?=YO^U_0W@)P4c3YrfsnbHw6W_WP@$J@))^O^d5gEc4&G zEUv<)DB(Dk<10Llu(I3e)^(m@c4W+tMI*am>gLAf*;`+`IQRlqBfnMNxO;4@TTsHh z)RnHkoZ5W;<12M(uj%uLnp{V7z+t!KX=|fdg@5K3iTRckiB!ex#8>QrB(dP19=_sJQL^@IZXX@1~fpa%043|d>7 z2I^K5=rD_XA2&!i^STAus-5P(YGzfRo+b}^y>8#)>4fkeb}VLdGJQy2sEzDt!I^mO z>{44tOABG-_H<~FTY(JmK2+DoUm-TE{B}^arm6;eSm)eNg)ib8gMCc0Yo5|nd;9ZO z8aBn+Y$7pQcF`eb9ZhRpzKN0E0==Xx@3ywi^21qRRjJ+a8#!JH6(G}VudJ4TMG}43 z9Uz*_Wp$)VP;G>?$matMP9AaHbzWbIq@IRD%g(5XZqGR89;qPBNT_?>n(&C1?8OlK znt|80U#+F7$$OA!n1qD#S){joIam#bhZfq+VW;VudnB2D}HTIUm z`YXVyBaUyB(2;N1j^xAq?d)()_$Nx^p3gun?AeL{(L_ARgyQ+gcl(9 zl1xjRj>rR=@_GDCk)p?{1Pd0-XHtmg=!r@=m*Ql&U+RLvqgWqo9mS?mX*0ck)G@${ zD0bcVMtoN})(viL_fk>mDt6r)2th{d&(B~Ea4^0W`n|E4A&(9rydYla zbia2QS-@8a?I-U%PA5GR9wnEIDW^Rp;+ApN9+lLK#^#+<(-gZ5|X zZyzPrc0AnZpOQnuPIN2=Q5|`B%8yqBu;D$$K#h*thu-;xc;bi?vK<7LJ7njMIE)me zI++kf{vd&3#?;aGvTp*oM@Tp|p@9`##=zX%z$s+5Nip@;reBne-e(R>(z!btM(xwH z3q^B$oG%fS3N_x?X9?w=tH%lK9$YP-kCIt}2nhw5@X?-wz5bw{_qKaoHGGJZ-#Vyc zofmYJ_szd2{&da7oX*#*?)0N=ueXO+y#{YKdOAe|d%?7;NBdOGg05GKi~7863ZTHZ0ScFQ{r(wY z2_6pD^V}oMwj>DogNZbs9cZ)?f!N9Gc)!u%=v}9_4P;YZXnC2&#pdDRNiNG_0O6x} zG1Ray7f5F66EsfV0moosMZ?(lJ;%*{t-=TlD;Ni3=_ zr33rxs7)X-g6mRZt9Kz+aim$^j1;1s7Cu$M1<}zc}#3E|s)V_4;|Nhn$J}1$t01eox z7ps@(0n4A^0lFJg#%%CLGQIIMF!gLPDmQ6|m$$VAJ=+nmT%|o0KuN{p8g-mc-)xt4f_k7@K7Mu_;?Kq21%4pe=TiRt7k0V(QV_L#zR$X^Dh1D!fwQ3x zf1}JDkm*JHUJtc{5gRZ{p%tbPeXK9^gT`_|HN^qXw}+V3{UcwbK2U0T(O=gU$zeQ^z1BX>RufBMAfAFh0*QboWi zM7JAo8nf|0vHc269^*SRgN|f<`2^17gdGB+>XT{CAq06_PS;OI>s#lE#fzU#oEFnb zAIxzfm06!R{={O0eTcTzn{N}lZ8Z%5%u|eO(P61Q-?Po-vQ|{#=%XEwsWyA0))V&H z9ckQ83ZS|{ZwyOZs&z#^6K5h@(5Z9dzLxjT1k3~&Gp;8#ia?p5pD0`jMN6+QGj3dR zz7e8rMW=LmwYK&?wN>m~;OYyvx4Yi7>+D1c`PesaB)i4Ukoi3CHG$40+dV!4@mA8}$)E&^%wVE_L4u>5o9^}4*6QtnGvVUrMNf)EJUkkgXO%2(qCe#Y zLw6GhL&pJvKCTPAy4z?u&q;jZ(>4s-o~}8b>)ft3m8C%9c42#o`Z?(FD!85r;W>c* zESb(OU1+iD%*T>_N31z&n906OQdBlQDf)#)gwnN)klA0P9|QcV$%JwsCoRQ`E{dD zS7oVosGreA!yldJRGDq!U2r?E)k-UH^dZ%3K8!T#l!3};jPZDOy42R5q)|9S=wCe1 z_FRTSb0RT99z9k#woJ&G?b_i~9b~JGHA{VQ^}5Rk!=i~R|D|-%^X1h0iPZ=lOg@h2 z+TvrD3JScPveD&poNLgtOBa;ig9xRl>;vh5N3QanE8Ky!?AwIZVKaj?XbtG6X3<+y)-cTuG9XKwvz8+y8N+wFFql6(oTjLk-*!lj(`IEoKurxVcZo^;D3X!~BZ zi1|2Q^92dCzJCO+)V(8K#=Op{MDg9FcPgWWYn}>}RLk7R%+y$3Nf<$0myWblgF1ZT z%D?}k7YRHQhG121cy|uNjk>mk+Bav1Y`GDSo$+pKL6$p z>7~!aC9$JJf3j_|!7eDmK1iviJ!9o~B3Sm5zN38m_Cn&27-}K5vzj7BSVt7pOUr)i zMaI-xd)j^Bp=ZUB;7VXm7a~WN=wmiHUoXl@P15J69=s_3!U|=;ku1>BU?A-Q6X8p4 z_BD}aKukbT=>Gmb<3Zszfky&$b9hSy*z|MPXc)hiyV$R16`Ztv>v*zdW@BY;n$|I* za5@{ge)e!@*}q#3SV#IoJ6t|g;+y^3Oy1Eq&>{q{p#pk;lAYtGQ)$Qs zljSJyP)jq_R1hd>%!K%Uc=ZtPehMe!D1iHoVA7Cv?|qrls`IO^n8VJ%3gg%M<=Eru z#O(G~${43Lb9uvPM2&g25}8-aF6;d~1A+@xI-BgvrLRL65f8n^5hz)5*nsn1xIP6aEnt;bairSh?Sr1rFLfhh+hm$?vC$U+m`Wj`(yug2huc zh|1orOI;A_Wd1zxdmkXb&a)4>fFg$Hk-w8xZTtDY)7ta?3@ja)96C1t>ql?xRsxZ8 zi>t|X>Q1zH@gdN*5wb;OIX6j3C@0X#|;k=wgJqfyf3 zI^Ojn^=5MUA5q};a;u_I-vNR6vXDnWdVmutyY6CUJ!Oqjjx-zQ`d14Zcy_ee;;VPA1if61TutxBH%w)@Y{9i28SE$#TWugfD zLx%N0l~o@0kDbF)&-Y$;tE-PU7gt+PkqmkQEkpuzg*`0JhZhvq(fWMV3oL%0u|jNM zvG~m&9?sG?kMS4yhM#~LIv@k6RynCL2ESa%5fW&P?O28yX)!k5ncKOMT7CGL#;-oy z6ZO%P$kinB`k>%?LF2bzlULdpGH~eA=+*PxUf`n$opm%(89NgpZ$6Jq#{gGWq!;B! zyp2DIyevSG%YS%l-MY|EZ9;a(-#^R7i9<|6nO`bkfDel#Ia)z~15R6;7jjY$kAO59 z0Lvri0kTd%Q%1$0KY#b#=}ppK5pa^tV2Fy2>w5c7-4zDnD&@`XR2pETfiXmH&-;MEcF;NS<2$pzzb-@u)};5f@U5%&!^MOAM?y86h(I-n z$Rg-(@Qp|d=;U;as$!(#dkt=Nm1AXfEpnVDrOTV}%mCibZ*}p~{v5TiwR}79mKI1B zUxra9IPCjn5?U)~g3W<@G*Lq%cHoYUrJ8~r7w`KM4#_*>e)g>|(&@kEg{n-Ub=bq%|1FFIfG5>(Oy&)Ryt&f; zC?CU|c-vZit}Z%#8cupf(Q5v>U=!d=0O;54ArJutZy{39`g+2i&Thvg2k%=1m*=RR zq`%P{7k}>=-=rggn&JYt`V9TgC(>`l|0NlB2$ZDjROh8kbJUk%p)ed{#Pt zxp%X4SARWNDB+|_FLub9oTemM#% z$DRm}DGt8l!$%H4^B{eQm-VBBrLu;lz2UgYXN z3U?Bd{f{>U;CacxfU}XlRNbJXu?7Ec7+5|MO9JdV0`Sz+4Ian%|339E{X7cHOu^-s zU$jHxMEL)xb3c)~X;4U3Z=7m*|9=o=FKh%)$7wQrFd(e=KeYH>{*GY|^bMClZN&en zgnZeBfnQ#J(-8GJQ}h1-y8zdJp@4n9>~r|IM$y6cf1dg|8884IPkUYtEJPxx?f*q4 z^lNw_ge?lS5t9I}(+CTcb^WJrrOAh13KDnFSrPu~nJjDrwEx;b2>Q!N1?T)`{o8Dk zDLXj+{a-)V7ePV+-ce%efBO3kjR?cPqe%AhA|qAX(*LOieT~HOcVA#sycmu~aH{`* zEP~um1bXtNP2_Eum6hv%vG0sPILtOTOJC|80o zmS9_2y}pJ-N4xZ`ZybnI_#tAku>OqC&BPuL{%iIP35VsO#tO-R1*$=Be(a2#LPRcr zs=%ZRO7Ih3tO;F+v}deHEfyjlMGvD|r*9EaS(@?2-+db^;;YuJ^YR{tSvwtIKpWY980V#W!8CR^k5CZ`e1W_)lk&$##fAyzRrSqkvA(!@wx7Sk^`L>gF?t zZZy>z54FC*G7AD>;KF|W{i6dOq%|InGaxhVm8^dawWsL7mh$g_0&1A{2t3-SHNa9B z4vRB`zk$^TgR_w>gLc6W(wYth_4CEvQ2JR=lAC2>4M4oL2L@z9rK@v8Odj%Ny3JS; zeNSK4{%4Ai;07#i%nLTV(Ths~Iu`uu`my1jdyQOLTID0s1Gt*8U-<;zT2!*1M&>n` zyckKk+JqKzl?NJxl;byXgQxT1$6&Yu{NE6~6c7LP34wYsC|~~$CJ7=aE@I1$pV z*iZd$dvR!$W0Hg<6Gsuii8!&{GNFAC#z6>d>}&nXy+s3Y{(npXFo>}i@+XI%dCd#I zcDGgkZCC6UW}B~!{bC?+BDCJ9Q?>$xihvmwiW2OQ*;kFD)#)z%3Kpc5rdu7*5F>*6 z8I0CPNyqFZn|J{ZL-h&iuVw^e^q)wQ&Bh@9`z;tYK<~UKa_5o-(5fPc%N3;_MH~Jy zL?9APgh%W1w`e32VIkLeMO#`=$N&Xe^=*jVq_V`;HaT_f~$=} zrbn0i8v!zw+|?n&Y^%o^F)yg?H+2k~Lb_P1JGAcU+FM`NdGx$-DBcsQer4Z22r)UN zv}PY#64ysM@xrHx8;O}pvV|f({>@Xo3l-rF0=K4{6OKg)TBOZC9w+kf!pnFf^@#co z+xfnu;hJG1Z<+=eeTgg)kk;1_k)ZsLGX&ib&_D|2lRT43#l%grce725Tn-W& zULNN^?95HgX-;vOphc1Z*pmSxmr;Y9Lob;R@t1cWAl9_iS5*Dg7+WN~Us%CG)X+%I zTMBM*I5lT9Yk4gUK8h3{s?QMA-d^}|vSf>!rv5zg_^%7z~DDFe5_4D@79mKP-)9 zC*DjE17&3stuf5lcwsH1OFS(IC$og=SaMf+c48&|ctWLIV(s*?4}jH^U1v~6dPUa( zU4iCU=!f$uip5+cp%@kijYT?)vfouj;=0@JE7L$);4OUV@5k-fuOc*-&Y;#dM6CzGO=E( z5vsI-96liMgu8FCM^ZwPklHwIl4;AJE1g}_S9eJWNGlOUw+eI@D{MC|N&c%WbYhXO z$G{K@hrL<=X5jwp3;a{+02QUccX73agK*JNnAZ_v?+^0!qJ%zLB5RWX<6TD0V_21)?j z4+Id#Ka@*VJZwvEEictPy4{YfeEU!@M-=O((TkRp^zQy?4JLwBP8pXDy3dR_&7Sn9 z?>AHbB+y{K1hT9e+Xps1L=eHl35~d)!+_ zU9HXdK99JzWf>LB*~hla5|H-j?6<`O8!!mYKdf(EpP`PK^=)lt5p^&9VtcReUEyLetC4}CeHWQUNCL}j>otwF~F ztc|oc{LXPYY0=lmZwV)0WBmB`qjJj4z!3isv#)*CjBp{g>wqp>k_osogGmbsM8FJw zb4tzN(UysD*_x9e!?5yE zCer}`93f4uPf()vMYkru-_IZTCr`JBzVk~fP7eSKNDh|noGdbIKi$#x(O)5CP@mLl zZ`&JtTO^a{`DG3Ik7$Dl>VvL8Vl+!@~vk62R?+iKU1-{ z)^%BLS5f7Dx${064HfB+^ZILonD(`!CAj;Gr-#+GRucZ#`w$8#-jC;Tz5VB#RW8ozHSGc(M{}pf7;9Ud={&l80ZB=WZrVuG=>nH#mHB=H0uC)X%9o$hw_!*g6 zCDj`jSO_dOd&$Xe6qJgBfr1Zl>#@C-lnL~ z%WBAK%j(Lmo(w;(@~iHXv@-T*s~g5%D(T9G_DLrgc4ruMWyo7s#aElVFlml9N}o>V zeJG&Qk&k8D8jq(t_?Qh6qhQJ#Y>H>X)>>C>kw`8cSl8ozpY!XDuVrJk^&AAibd~EZ z^>)>4CbL#EmfX6y{HbgOtMtVhb_G<4R4i*PF4~pfJL+uw@=+_bck1q|^rpLhXn77j zzBoFVlbH+^+zDVRdS_!Tfs-Xph#x@8tWOc(+T!NuJiG{C6w=;sFVh=#%5qwDzG0^_ zpP(kNnnK=V3A{uMQdO{T&fl&!IVY5y882@pO{JuFS|u%R8$oy zL0B>Yvx5;Vodlv|p$Ge6(yiusc2bIZjJ4zs@>mq~{5V;ebWJ zl)^)mRsFZ~Du-_i2cw5GWp>{*1;EJMXp}fn7zXuXOV;X>ud2;@UeOJ)!!4B zq@dYbAgCsiKtOWoe04UR5<)^kr21{1?$1w$2O4(zZ4n8bw!I9{75auvM&oxkcLvbL zgvM+#>p=pwp=2Okm+NwEXok@RQ?OKaDGC)hiE)rJOtF9>#sr0-1Vq5ji%<7yXY&Gp zdAPXPwl_NM-HsV6pp&uzsy`4PU#Ij>O#$?)m|U$I8>>k~ouA4bCHrAnB17rm}B_iatydU8VmsqV(EP#m#Nm9pc|!%Ewory=qKl>5!XvypXwKgLgkvR>mR02 zs#G()(hhNzD$nQP`nf)3|FtaNetA#QlccAZP^`T*T&*kg_wc$mmigx9aM1&3@9}_J zU)T#cq}tm!Jlr`TitGQTT@h z9@#MIu{(!>jFs_Lq zO*VScu3KGqnQEnB$gMwl{HiM!FHaetdG8WHvykvhUQBcak0^YXP83AogAcc+pc#oP z0LaEvG!f5FM~5}W?+qjRAx)a6yN7xq?4v7WfPqhM^q|PDCYcZ4xVsfFs*X}bh9|Gx z6*28Cf5`%gX$$OSpz~G*#DNrkTE!96CR0&kbxd+MaNXYB2VTzO z(7|Argu1xLLdPXYp!ltp&=I@1kBy)2+Qg&Thdjjb@lsXR-Jcvix}c+L{enedrNIWU z*BCLTx6Q#jy)MUCvvV}ySV~VXG)?5{qkPgYi2kqTzJjNp_ndTrJ)3$W-T9_m45Bm!tm5kbU#*#fW`JpQ&xmMeOo7QKJ%t>w>O)frw^y46Z3uVS!(Tz z`C0j10;@pb7+{bW8}%@~`{-(WMO*^=Bf&>E8Gz7=rX@~K2i{#>o}P$kphAqaRS}-w z6Pqrvzp2Z5^}1M;mapa{;7c)+2;^vKWZ~d(>R^_@nO<>pU|AkH`3eFmc@7|b^I<-T z_{~_M->*!<3OP|X7Q6z)fZKVTsxe1S$p|u;UJGbpSI!;_JPM~MGY}(;o+^jFrjLS6jQxByr9K*zVdW3t%Doj+ z6swZ>#&b`%vp*AE@A=Hd@nLz;MZY7zp@6uGvSS!Nf6h`7eGE>Nk99*LmoI2nKcf@zz{lYNa^9>pnTdqK#_9icdl)-&l+!WTlXK3{z{I{rtzI0-`$>W zw2VlZ9pT(M7MnljQ#gR+n%=hbIWT)nYf^YGqYU80l*Ci|F(0Q{wIh^2KhSB!Pm_sl z!Kz8w41M>1S}|{xeQo zZku9rF_Dt14I6Y|K98hGqA7cY93}~uhKdAIwWlo2$%eX$ERA7{PyUftWKzh4`l1hT z8w(Kq862Eomq(BHe+#wO9E_0f4#A;gITY{4+=LgDmKa~^VaS@OZ1(v#7ht6R1lpqN zVtmT%pt`xbD(el$=j+uVBiBGIXa0yn(TDXlwOB`sPtAn}Xd!F}@Xxplel1SE*L< z;yK{O(aD1RG$qNcXYyIlB1`BZI+6vQu|vkEa6HB|HBWIxI_Br+r+==U_eNJ;+gI;^ zFw~*-g}iGO;%E8%zI5;*de+yzp3H*VM05@A|FGMnh*WA=ss2YD>5mQZcTvDlLDGn(d>{tilx|C!;4zABt7&;yi-`y=3`p*}zie8udQ#;Rs8T_p zt!T-V?o-&IHKWn}E6S2* zBDUDF+-!jy)%YLqIk4w4fl`v&$~sgR?6 zI*kyqn8~kPTm6JgRKXLIDn5!4vN)An#G_v9FH z0)%eXnFLuTEt^C-bzAjfOG${^e4Z%bT59i&-Rq&i?jsblsYV?c7@OgwZXSp3g{VM5 z%k#{Sr8xp&k2bgSr>jH98ndJQQBj@!t~CCUDB{z{t9ON`M~A3H2JO{GJ=f@Dleqvj zvUB%%R-6KN%Gk zbVYpZUweD+aXG(`gW%MclERLLPI`7V&k6Vl(>uNDJa4ZNZq|eIWxFBYXg`URkj8@4 zABr#qjD#E^2vT1fV?{B60H_KU2i1q|Y!@$xDQ41?GMh49wzZPQ&4vvw#Pahu-{_PX z>T_~?&XnHJ#&u-B%nhK=aB7cc@pE8Gh0PKZ@w^{y83bRq_3%S`KRszeiw2doa?b4E z$-2iy5V@yGs*7nsPS5J44K@z8sGPfS99PM{L+MI9m%I5RD-F=vHOY<<2+U)5-*U_Y zc;t!~Se(^TQ{A)njO%e*c2|($jlO=1v~Fqg!8gtr4%2~5gE>G&IVn{Lm2Y$T>Jag~ z*6#TF@&57oDX=_YpqaPKEj!R`a2ewPf##;j>b2aU4PIQyS-X`#ltIsh{ z2K4*HI=UF6lmL)f6CYJtW%-fnrbH8(?W4X{A`1=ZQ6|x(6|e9OdtswfsAh5t*Pb*> zNHlE3$5cvRzY;p=6HSh3?3dm{u}}U(Nn#*K3Wz2zo9t?xynDg~L{WOM5G@y>xHqAW zKM74`(gR6sU?=F)Q9*m)g;187Im2m3s8&P{52%cIC_G{~NH2kt=@atGmIeWoZ-th> z+$8i;)6WIjWO_B}+rUQvXFeT@y>qxoFy^6CPw|>5bUZ(BY-9%Cup5Y;2UyL~CO1y^ zaXWKUYCOG8AJ!{S0RKw^*zgy;UU?rXdoiG#JEAGl#=eMi^Ix88nk$k{Sa=zL9lu(pGSOkcyt#fGz<8;Gt61IoVZ?6skn7a?oyQWsR^Wf%di}A?9 z7rdtZz4LsvDapr=%6POl7o%Af%z75*x_Z@{o16XoI(1)Jb^PH0L3Mo~f8hKuJ9K#f z*)c4_Zu8d)I-vm-?!mF#~#9z_3Wafe{ndXM~c7SHG}RqzKuS1Xfaa@fhwy=y+4T)UO?epma<`2b-|f zS<{pfy03^@0_xZyzo&3YL^IEwe4!|qPync0tdxjHGoWIU@#{DNS9h8Z{^Yfjl5Xa4 zkd%h%7CIf!52CPUKDuRvI&VeKB(yf?!*GRG{5`$6T~!E5G^`v>40_zo*`^Cm|Lg)% z9`io#g`S68uJVSB?KTWJWC|lSj@#Pv^CIo_UI=1pOiY^gmTO`>Z#odKt0WZg87q{_K8v77EmYs9X01T33%o9ar@4vxwG>)nt}q^#=6gM|FDX_ zdf2Zv70#z=z(%9An9@IWIJK3H$69cCVVCgydLhB-D z%lyS$1db4ZatmJIz)dMC8CBvf6c-5r>?V1Fg;Dj|P&4DtuOi4#Akg zNS^XhS9j)d&VD5Q7m)F%*TzYVMkmc2nNctMpi}-ar9Y10nT_n1%S;7D1QPV>%5qy| zdHO1%2*{^rjB^?RL~Hh#3Q-8%e}cAd3K3F_qIn{BhgmiOOBLcr7T3J_^+gK)?-M8B z&sbUDycGmv`UQmHh$x|@;N-I3Bw{J17LWM!^;ccFpZa?#s^SMxRLUo;2MlQpV<(A9 zf&<)>jMs2>!a!0ENOSOv0;(tN)4Ez!5Bp)beH+OPG-5et0A+Oqoh+YDzYWNIh$(L~ zpX~q9;>qhfu2^W7OcpR7F1Sf0V0n?&z`+f#4tDuujCqQK#Lnv@|dLNc+x%`OAbi-VRYbRPXfe;dZ>D zUCNGZl#iMe6ykwWqW8Mq)!*cN#vIudr3qs)S#PWz&SabapR?AO4s<}H=mx>hj2%z~ zL)x{QytMl%l~r>9?VoGV_ElP=1$IlJ`)lx1*fr52F`7(wxU0{Tr_)7p%s%)Vr_7LA zN$KGqG<0Go&x+SvyuD-rFDU!N+S8*cLrD$0 zS@IJ}DMy}6j^sfA8a_T_L!0{-ATd(HtdlspSz)iGsWtVnj!*4$-Q0Y5cBZwt_h9C> z$*F%iGi%<7gZ{l##KjZVO}n|IvBIcRpAZX{TK$ZEDC{G<(BUPD#4}zkp!nC!Bogp% z_8f$f_j1-vr>8Ct{r|Xn%cwY`Wm_~M!6CQ@2<~pd-QC?SxVr_n;O_43uEE{i-JQna ze%bfzGv0lFdh}>Ucdurxs#P^>&Z?R?zNL$Prxs&zl{c`z{5aPrj&A(Y_m&D_t_-ZD5HSj|eu)%6#s&+bS^6O}Q;5%42_0XLfv zs(ue1w;sh@5!)U1Xp&%)WafAGox5Ysjke%aU`7WL+RWKe3_6)Cj5ho<;Tb&W%-Zfi z3b^CaVbPGqCjwz|8e}0zU+Vwyn?%YKaY~v*+4g)%Q)A$IX=|!!!9P2OFnfknLD^6PBA$Zs8{}* z$6foq#}K`cRdDR}af_et8w0x*bc}*n&n|vV>fP^q8-;F8%K4JkPe_0)?>}xNx;yIM zSrUyg;RJ|BP+vRD5JCX#&iC3E;wN&@<$%K=aaq?#r%p#Fmlt;2GpftK0#@A@ujhf% zk3gA}-jS@IP`;@l76NbfavSly(qRiI3#mksrriH)r~pao%Xeg~6@ci23Kqn60gxL+ z#_2~G!Ng~LWag&Wph6(q^9Va0C3CZRu>Wp!c6hbr*e9G?EcC6Bk0kvU3#j()f4*4L zYO)qA7}?0;9bAebpPk`Vy9A^0O^p@DK#9|(AlGN$i;vIt5&0t`#Xm}K@;|(Sv%1P_OK{4stZ3}n@#`qzKeM{mbRsNWHJUv~}!Lh>M~ zWZ=X7|L+#j0}QEZGae~`ku-$_<;+A!)u!2+F9)_>s0QRK>(1)GQVjT>$5|}c=8NqN z*Ew|QsxYTA)Rw_@Z7$PJ7r*SDcfE(9eWCZTPi31YS+Z(V%RJo?HQ6yRIPoK%-Nr!A6zcLCi;aX8|TWp zIBec$5kp5n#O_aTI&dA89HVQ+hE0tDIT`p!IT6HncqSfZGq6FFoPJXRU ztu|7kP|BzO)tqnVTcD@^_8|rdduGL19|(rU=t-~8FjFtgv?NSX!JU#vbXG8$fG$GK zr?ne^c)XZxV@=cDv6Jd7_a;l3Ct!$=j@~jk&0T$RRvn1UB*|UW`QHM$Nt^ zn5tAvazMX)|9h|=l-wfOECF9n*AM9Bx%scKdwZd?^rZ?F?#fhDqxSowrRd~p$;P9J z3ml)CqYo!;6@%`!yDEIV-d~T!QCyhKYD+{ScqJ44B-^PaRbZe#f&aEF)xou$kjVla z%#eKdYbN9;vzd2@LiFtawo`HQep4@fF1bKUu^?d2rl)aw}}^e{(U zq0nJ+&uXO!Or$fo%=7~K#avke({kw;v&qN<`JtC!sVwH;+6!E-U%}7F zqOy`XEh^&_N2Jslb9-SDD1UNt%BFF>b$5Oti^SEf*PAX=t-@im_(Kc>-3J3E@95-y z`^>TcyLWpyNvGQ$0QLkLSENTOgGL{U8;lA-$}zmzQ?E67_t@nv7>yTDqQaolDpf0q zH7`+W+1Zy=og)V<)e*pymAqrkzUh-&B1pE-V&Q5pOKZuvV zvr@Vn5T+eWCo0w720J_u!q8z~|3IAZ$EG}_**1`@Zcr5gXZ1(c z5n{s@Yi}vImEb#DWf)RAl!m)FaIb`dQuBs^~OdsPGv&qfau2Bp@~ zNkW;;X1j76=zKkkNAMXK&ryn=H}d3gI9nha$EvLnqmd)997iStok0LCMC;pp_(_yD z>uNEP#$%!V>6Txk(c1gqPQ4*lsYJ0Sna-!v+y8m3&EfJQqfJaAp8Ptk>De?mL|~)S zD~;I9fE*P$ME`5NC~GWj2q?0_a^2wknMGj43=hX}*99=Ijg1Y_$nRxxHSH_1kJL@p zYd1F_N-d=)Kb3w7v?`qz&~e<2uQ>|>a0czcp7-;7!fy`7etjA}9NGrjqjf3a=yaU0BDfvu+Y!AOxTI%uTE$nJ0;b{@;2craECi&R$bbju2hL4Cnn zY*RYt%WFc!NKfqRDyesry}bh#fG9)vbIY6v{b^xble^QM)p7<=#Nq2Z0VUE*m8wsJ zSgz2wW;1G)_FoOy%0)7npzFV)EEG}?DdrU9ot=QotZ7titHgO<35i%XV=7uAoBOyj z7hC6}AYjq5$Yr`cd{b!D!b)PMRW4PnP%4NOQ}}DM*}1%W%&S;|ZFO$R#eM%WW;&UU zLL}ULl@v%Awbf|4m^o7*si~o%Qlj#7MZlHduS+c+;{ucTNcb7|^P5+Wj45KuS9Dr6 zX6HGzp)g~r>m$jE=bb=FpUNkP_q8W+WU`42wy5gOPPd|84EqmXgi-ack^60~(-1x( zvFcy^BFxrmc2uQMJP%IoQPRJi-CEmdw;Khf`U>lGxWB!nnNIKccJ+PRefN3+Mv6s1 zp0Kh))24GG0IU~6z8`a;=X4aX#9%Z+cGCjFFm4_m`Zd|O)ahx9Hi=c3k1Sl61b}H2 z$)vYB9Li*RJ|PwWQFefY-f-?_sdCxb))u0<3<_2zw?|~!KtXsCkNZ`#XCTZXtyqfOb2eSJ`+Rij#R!l{psu!=HcfLe$MW_4JGDRm zUd>(Imkl;naB9?BlEQqn-ELB=*DW}g(Rj;b3mwP)EV6tzEfX^q13N&{qYdN>jqPVE z|G;s96ZnSrGay5UgkbA(c2E{$Lf3M&ay-Xh6wDIfHa<#bTQ1KmnIWBmZ?`&~N+wWJ z7?M$uBMlrd;fQ7Us)TRIAiUQVbcHMzPjR zOAB7#-r5|`m6|%!s`p0T6laXYfq@OLot4$WsNS!S6iF9t<3*8Ko_9wzd4@N)rtn!r ze?NOa->Elct|OBw@vJ5j7!H7NS1gy?Y4SPX&t5QneF7A7RlnW`GyEaHVUQ#T#rcd60nr-*xbB zkY+f$!+yO?bhccKUoZl$3ba<2`}p7>&T4OOZe^{ygZD^bkD`IdV5X*Ud_X!^(Gxn>jK-4>e7FyDO;&%Fv88`ZNJnZ+HvGY*nOz+Nb|Ii8kRXdN*XOb>q0k2h|3&t5}TGMu2>MyqzVJC5y;ftJAC^_!10{N58kCykP_-11HW$ zKySG62Z-$C>woi>7n*$5{S@Q}C)VP4jhu*vs;txHK3{8QAuEfZR!xr-=w~^O(}dV1 z@3ymajU*`Ai#Zy&PUbrWtp}}FQ|uRktre=lW@AxZwb~&$Syz;>nK@lq+gPz;1G~*; zBVd!v4hU9|=+&fmE-p4QJTg`wIRbQaHfvG`qB62^xi1jpRV?@^oRnd}-J(CMa@(2t ze@o$Ud(H(9&*qc!ANrzArB;_qM(=KM!Q`Yo9)M(jxNy!uGzf=H@4D?5=;d+0+NJuT ziAmrD#FK8eAMZo@c?T2kn{>C{xJxcSthEk5E-_e?m8(D6jkaSaa9ar+7G>65-d?g& z12RJx!sPk`Gx3*PJ}q-`cQ%?YXuMWJf`X&rzxZYdfW?S)_lD8o`idE0$CTQNz8`J> z4Vmk%B}TLcYb`*G?4B8cK~|$*!`0&lI(PeGs?yqWlVhVp2~GDtW9&i0 z20MfO4-CP#1So#K;n4j*vZN5KuS>B1*!lm#Mv%k;Vg8E+{0Arb56}C5Kn6hOv%~}B z(60YJ27x8FpRTB?7Vh%nxrh&qV> z$_)N1bouf57FaB66pBN?6c{iJ@PE*l|GqoPx=>O;40WkpgogOS)4TN2$qM}j#!@#MU8SpIvKRT;O13!NNIzA{{7U6HA z3j$!*{(LntdFD22zp^NmUomM#u^@pv;ynkF#VwO7l6U_#N4k~)8PMZ3r|um2ve>AN zp_Ks73DL-?hu~JAIFh{* zF`^-q+A^8rSlnQNXNwTl%wV!i4Ut_c-x#KrlGd;0RD*#UW4d0EA9e$9ZXC|kOkNrl zPN&r@8iw;DQr1qrD&P))81D5S$vE#jt4#Ql2dKR9j4d6d0{8owA_sp-r@gT6Mn{~< zxcQXljucjmc_*glJ24Qifj{4wRoln{+%=1jhRTDHeVU2%k~Rm(m0FqjrED4z@gECF zP_yQYnA)WZ1>sThJPq@Ak2S1pm2B+pefL#eVc+m$2z7b<(+@=J0IXL+L$_1S<(8Kv zk;bClMmNq-R8l%MB=EaANh5^!{? z*zLjm^X;TTo=5?uI*dF@>~Mw5^6~6?leLxivm*dUVdHYiIgFh4rYqTK>pdAuT6gvaqVUlnO=WYtD28MZ&5UJXmi$15(!RT_zs-^{!kpWm?(2522v|8jg!OjhA z<-s`R+Ck?0C}9zKh7J3Yqf(gx67|c-9Gr)iEA<-_8G(@SGXR?NeLRhg$MuKJAZXa( zpk6Wt%oJkPNIcGDIK83Lqa%Y;;t!5Rv@VXcdi9S)hwJUX88CaY$s7#@5z=76LZP#! z-QtBOxq&Q;m4QCF2XD4BjQPMN{m@;8pEsAI~u|-yC8eLVTcc)d21L=HR z-<-9(I(N>Nm$Bz$-xX;!2aTHTq~lqwPImfX98XW)CpSl|=ucoMBiZe966E?BR4cRh z1wxkrW!!|)(>}&p0GUkE21m{p+U#$%v=iX4@t7_&+MnM0Zjx|D}sTc?sF>dKyV+Z$e3?9UpakWG5 zex~E~P!Yo#Ya$!X>^L}4R*NG*t8tQ2F}q0Ds?ZFK_jN`NY57W6ooX3NQc>fsJa95E zfQ_3j+uTz?Dg#9!Xxmm$VRgShI-5v^&n2$5rFVF_QqcQx5LV2eTw%8h!0iE!CIH#9 zD3L}|Hp4(pLP&9MRMiO}%oBXviJce-m(l6+WN7v|#6j-fuvI&|k2y zHDhRIp=o@Ld?)}O(^K3X+-GGwe7y^&aQ;0GON|gu*&0Hnf^{0pwRb*|*6DTlvCwfD zi^-nZ`nv)fJ>(T1m*ktf2-B64A*$pZ_VFiCw2!Qn`T++<2lGjVBAEpUcp({l*(g;E z+Em0zHXEUdA364dOpB!A$n!_%+y5$&fSq==IZ3hzP;eNDiCN&30695ui#4V8sfB&R zIY=f7oZyWXd3@lduJs;99+^2uHRfrXmE87|YaY}t0upT)y)y*25O z?(yld*g5@kEt^H5NMJ0X&-)AtS@$Wrd_WbQc4wzE4SIQ37jLeBJ+nFBQ7m%G0RD9@ zps~}hQfu(^zIj|2h(LH>Ex?r=d3}>Ho z%kh4TGnvTO@a*#O@!rXA-gt6%D*4yw zmkj&BtTDX5AJ4vJeCz;7!?9vRxwieFMAukdeVrF1V57TJU?d{OTaoBD!yh)4 zI)X}2w5P_TvJkXL%7U5ZN~jDH&|U(A#TNs)6MNQ+D(4kI@0OG-Q$Xl>|1ubrg~zLr zLbjQS$DLh<Y(mR_>I+0L#yl9k49?; z$D?W=^M#e^QutSWd6+brz~_534gk5O`L~Jm901L#wz-8L35?7^u|nge)rphAc`Y+C z!FqCMOaS6bC6r)7002EyXsV8bKm!pG%4G)QcsM);9)E*yC{?`xJyohku?rn6 z4h{?Duzkt(u3d@}jj74lnnu;ebxdBho{P)z$?kCpDcZ&A>cp^kga8F|b(UZ%vs^&; z<+@TGD5ggcV+@1qFd~#rtMi@9{cRpHb zhYc`M>T}E+G5|*F>AKH3XKw^5JJNymEKCli2IS-1omq453CR)e&AU#=9ARO?9ZRWc zG4>-4)}_tnvO?3vdnUKt=XIsBM$E`!0=s88fccBo3e;33b*o+U1UK+>U7XJDbkm$M zhtS!YZf|{%mJu~HG?P;4@g%aZlu(8UP0WC>Vb4{KOd_4!ilgCVH4VVan&l#%-QBsK zAG*q@R7w+#mf?KhC8cL5m(!T1y}KT6a!KAhJBOlc+~ETR0Ib8?w)+!)R25;^Rewz$ zP|pq`B-ZW^6Ze06OcXN^17nEh6H-yUX?L^ZSAcYK>?5y=@@?z9tkiC6b1F+M^$N?! z_NT(KP+DAYbDi1(3d|+Tom_67_7Yn~N#_~qwQMl2Q%b4!`}LZGY;2azfXg>uCi8g6 zOa;|pH;AV)i_R9BqfX{KFk9w}Y_7Mrbjjj775KC}xadCUth|J_pRbmrltlmjffzH7 ziiVMTq#=!@9_mN@*Hxyw#CF?JxlEw^%u*TEnc};?Jn_~8R0S?Fg}k;5c?h9HZ@rmA zqouOrW5`)56W1By@(PF5{s?b_m7?oZw&!}Qaph@buuwH*lF;#No&dqopP}eh$CRv< zCK_g2y$N(0TxORXu>=~LjPRtP*&0J%osKJ4X8svs`c$G7&HPioyVG&)uz+an0!Fex(2aI zir`tk^|VuvO0y=B+31TQ1eDY|)>}(4tS{-Z9`4Wby!_Jh%!tGj=NkdXW|A?*AAyI@ z`M#VZXnyy4w(LrtEs_C?{>hXDd$T{I$)U3FIPqTn*<9W?LWl`!soUZyXdD5_ z{VlYR5lcsxx1r0TwZQx7((&yspR6+6>uTGB0Dtk@SH@g|P-g_t-;S57TzLDP8FHRf zg0qrv3>28&dNeRz!Lc^ip7>!MjW3lQT)r@CK-Vf*Cg2XXCCZ5V0i=+H_I&U7Gj*`J#>Ag}r4DP#} z{=t~Y%Y*XUdD9ktxwL9atcKMzf#6oPvU+>*K`9!E$RFyd3X76!!&B?cTyGMzcjwvN zLG8s?9m}OD0k0P&-Dk}@6tWxVi*nFffI->v4#?BE55vppqP#f)E$5*qDwj35-ZxA2 z8T9UdVjHFuaB00JMBYa#Zjciqw|bOhDq@`@%*yolt2iFzbK z9rvXqzJi2F_QvzYk|nXF@Av)ToIW2FB7yd1*T^{`^c4rEN@hg1(-;j5aKwlu*tlC_ z{aA9#!EG)Lx;8^9U9@4>d6VC!n90g>Ef4M=kcl`bqx(M+5p>Xwq8?+qETZ>tGnX$Uq z-bZt*&SC!1wd>3$MfHu;bC)ZR1etJE*~I#+4s%j4BekP{9YmPThrr3@y* z(ghN)F>mkk3N95C$GIX(0`jE%p*S3L0@=v#G0aV~y^j|o39_k!r?eyzP@Dpp=AQ^m zB+eXu8ul44X8nUp8RSS&)BXL!#WC-lcQ?_y2=sVE}3+CAA7%C+Pooybx*h4h})QTDrR$8E59pD%J$dqT`%IM%b#-+f zn;ss(W7FWdb#Jd89}5op(C%hOU_O0+r`tGGOH>?-g~T@tR!bqw{7pf@nOzw4FaiS9 z``#pa;)UP zOKAM4UyW^TY3+p&S?S+L<|-=;<*x#MAQ2`M6Kt-`<#*)eRaeu0gH_bTN$Ulqo-;*$ zCHl?zpFNzN)M}ee;F#@J{#Ove0o>jmDCpqwwH)PUfeV zTPhlqvuHF2*1HxRW<^SJJ6roujhMoCn^;etn4D?1eFB2?oRY4@&~9>6%;y!WHAV&l=A(C=vMZnTrAvNsAyql*NS|Ql@Ooqw#HM# z+UHnbbZcZ}lDE_dS{1FkMlr9(t8;5{!jWPKn5O@`c)k?lh7*8vGL}4XrPpT!gO}e& zKoZ8sBASit5x4#E4vFpYkvUxed*9|rK$eM);p31*DAs4Wp|%T?lhVw(Ju$-Ngp$UwerGg#47`;9<5BM`MiTMc=O%dS(U=_| z5Ilwkk5tYL;)=PY(JJUiFIPeVk1gy+^UM_%;HjeSm`AiNHI?|XRoY6cORL>#VUv|9 zSIsJEjvNS)&rIyjQ0fZWyK$J-r5?@JtbSr1`u zu2-X#^1`UcD!-IS<6)t6DYthixD|OJN2)MVu{D&EflcYG2nO+>!^R%7|3o@Br>kvp z6B|1uZbH;*<;OoG%U{|j!m-YbflspBHVXwjh@1O z8xAI~xo2=(TUqrRJy~tstXVnT9MX|H&93=jdBTK;cr6SScP0cBUb|`fTibE!J|YlZVYZb?^HG7-w3)o1$(V%1n)b5~5ARw%pHU2)sNhH>WC(T7aQ zzRildny+kZO8i+@#}>RNlKixFnQBC{JNUZQ*g7W!$l2EW>>_9<9e+(V(4iIv58Ai7 zJf5iAG-*TTveRoIl5Q!s^$xt`KsSi*$z75CyL4#t+kduEOlD+mE#GU9P{)F}g}DF< zHI#3w2Ibnu$NfpT(0aYKTvdcur~Qvi5ABQdrOpB3Md5VF_839hlkE+$15}iMaRU1v z*PXZ?jX!|x8rOD|m-?L|A{04A>g?6JLesa3 zqupvN%yD4S>TrOXh!R>|Tnutl>?P{Ixh!%x?75oG>!*b-e_~%FNpNzio*^mdTbFo0 zjYvb1h1sausy1oSD-s+8Eia>Cr~VbAC^0Tm@q)Y~8liMjM(5y^sNo^t+hcyyhPrAM zU`Li`V36bQp)~jD_dvlGX)Jkly(aV+4Z|)qe{;T=%4GNgQ;@UR=Iqts7FSU+S5MK3 zbHxIO{#sT z35V$k6^<%pQTxyw)NsMwN&>so0NWBziQ((_-n~D?&!<&c{z2KK{HNjOzA)@3cA+`X z!Qw+93`nS6S4*qiv?_C3pTzSTEj6AJ+_x5l&HtP*lN^Q_>M{BOVMc>%1-FEmHcj`2 znMtoUCmliIde*2C-W~-PqeUuh%H0X8?<~ThAdsGwg*hTY;|?E34lCin$cR{ocR90v z@%ofSt2>|;|5lGgq1@$gxS=VrB=Nihm*m@m-*}~hT zyE{B@kV~VP{CSzF@2ZAQ_t|FE*?2ABPoGdcN&ZINmaqXKMY;*Goi=?;xVX5!mb7c9 zQu=PzD7Si$T@&!~0$6!nHGow;R+WuR2@3 zz^jBUo+a%EvYPou)m&^rXYe>?PjBs#=(=|9YN1f{>%N28{=Z!Z8 zrjt1#?S<$H0@t5?1NbSa$inrn0Ukqlo!M(X^cM*Dqvf_kzrb73NW9Q#2hA^Dr!6YZ zw}(z=3Re^uZs1S)L_y;&_Q{M^60@)8=K7EYsjM~&O+LExCg>&-?c>jXM6m9UmbH}| z-e=Gxoo-w<6OxkfSxn{xOp9uE2gAa`a;SkQjRJ{W(T38J>E@cqMw3&7mXLDgR{)ZO z8sV+;Whcsd>t?Fq{h9-AD~`Zsc%DetT0I3BkzkHpPvm$gKlmnx#JdKf&8WpMboD?m z3!;a!KX4|H6Md6eSY9m<@O?MDQGHN73s)glHBWX4@F^j!ijHKdBXM{DL!h4Bd-pGp1i!Yj_A@IOE@ce3e*M>J)}W8YWy2=*x$}dm287{|H@E zU@f^b-?U!iGW`X$IY^s3^4$D`XfW4eQ=1b<-}$F5>I3aoYl>N6_7R(I#n1-|7%#nj zi2#12K`kbPFY{l2d1~`;#$yhreD%WE8(eDvK0TTDzf0s)o7H;M5rRQWhG%7Og-iJaamv^bv)j5=I`^B6@ayn7He8qcwEFV$$_t(< zXK8-R1>~EDf0k1taALd|F`@NO>dgc(^QWs`k!1Wo3-eGcEujS8x9#7vT*1vx+l*eR zA0Nl?$R__~b#Dc3al>!WD0kb2hqM`|Y{jzQR_m>10e_f{fS+${w9d7*(y%DHSSg=3 zFoQOMotio&FJH2|eY{a`7Ps2eAt>03(el&my7T%61;u)~+iXgmX)aN)C)L#(xj=~q zft-3rNqJ-;^N-h&4W*dO5Qpgn>-~?g5A}tiq2ivPHC(prPbV9BY0b@Q3I+!19*Q(1 zBwlZgD5R0$p`n3;0TdEG3}7YlyfjY>b2D3<>ObSL%}f8#C*1#JCMxGBJPv?1A`f@$ z?)ef()k{d`sjFexGYD(srm0rL!l2E$)$M)1(SfC}rMJ~UF@ROh7MD^!Lyv3^{=#XJ zxYLn&6^yVH*%{gCy{&QLLbViv(}KjqBgUVOzll`lPoN}P)Xk3qt*{IMzo(wX6Xt#m zCLo|}S4NO%rosR9*C#FhPvNw*q(q9rP0Q3X1Al|X$%il&;#5^lVN(WaFbNWU8pdIH z&VukB_eao3lg1sj8t3i|>2rpwUiN@hsWQdy&4?IRewDC~RC)Z#yZ*$kZNF2Qkm= z*U-{e#YelUAflkr>de?@&tqgm$`j$9SuFzvg>ki2QIrh#_0~m8CB%Ti>Vr~3FT6T! z*I7WQgG8E8T$0UV`^f?G<$wl-OK_>(jmc4*-Vz4>33R+$RQVLy<&YHFNvBizDt5eD z#U`>Lsh#Mt3EF73-bKkWos}xe)$`!t$i)L5>C6T4*dX$sSA){u(PKmR@~x+AI-Jw z`a>c_D@Se+Q&7}&Z<#sBr|0agED~@F-qmb8{*+_317)2=aeuV`^vlzC$^yb+r1sEZuSgv zH@B1MdYX_=b}mFDYGyf}@Hu?x1DnRa6k?7@NyxbBR{vVFz4|dNV1vtwtG%UA$HbVM ziGG%ba(hBzsHLu2)L2RDAeL-`LRt-p95b1T#6DBnJl{=S5JtrJWh=~3Eg%p$)>tKu zGzB_otT*5VFcH{|4GqSQ-F+B04m3qliOLkN1U)vV=*4K_F|x3ULBxCJjt_T;hhENs zhkdh@QC|#i{Zf{6#Qo$WS z5)~RwTFucEI8U$OFWY6+Z4WbQmmjASjpc@V-Q=UCrOr;;6W{%wZglx=`fUkzt_`7} zOCC<%Zyf0lF7NtnfPASE0ufs%xKR>hB zsK9a+oP_cTyDJKRkNCmtt!h&$COfw<4Gjw~`Q%0?p8kV4nfGKSVKpta;a8=c;(O+U z*U;#6nt|c&%#4D3;*4$-A8jzoj#m=9bcOF1G|hUWZ-D`U_vI!`!Rd3Tpg)vERU8m5 ze=KD-FcBIYU3AAEz-UC$*4NgBNr`14$CjA4I0P^~FkK1c((i%|(mNNO>ra zM|#cW=lG^q(G98$O_P zf4;e&V|#2>PB&d1X|j1(ugqD;I9yg}wzaiE!@|ZXnAOv|pAG*a^?JK8`S3oF z+vMvSBH%==wp1=lj14L*S8tZ{l4p85`qo*nm+(}mM< z&l{%%2tuHOkdOssJW%+umEgcWi$*fCIm?R=e|`ZmXE9@O3wv$-_Ju^4yHu(^dcN)z zcGgq*Gd?mR5%CAEZ8Bq!0Af2wM5}eqW$|Am5MAGp#&)xUb`QYjD81&+SIf5nNu|mb zKt3KOofa(^8x|4{|Fe3N{)2>{HE$+!)g>E(FB&;EJ_+A*=O>ubr0Ho@(0=2MtP6<90^J{;5s=&B z*iU_sE;0ZNaOBn34@(YpveVf5k*VEm9*uIdUZ3I>QF^2zc#>--jEIOBuheIxv+VQC zD|OuQ>ehpfA|ovt0l;{%N^-w`8ih2&xqv6=#U~^lwArC-r_|5SmDHB+>uyHiq?Gqc zSv!MvjYk6TlC|JHTs;xSv9(4PO5(2*Yf<`SGFRiJBI^N0AsnhdaAf5T!s6>vw zen?h|g89iwN($CkD+5sxoNzWFlu|w$Nhg9Qfd96EQX{Yl;Y1dHG1%p5`9qwQn_4V* zPWs?|zEL@teK}u}5px-k62rXFZo1&Kc=;tSEV=U{hS7}kSf5`hbrKiZ5>}@_MblEL##RO>b=c^NVLoejl&o>r zIGrZaz3DKVn=*ORz1G&%HaI!K!QJ2$^3k44fAUpefD+>M06Bl~i+ujuKQWq=TXYBL z&ApTSI`9y?xHZowir*Ly=0UjX<@<7f43Vx44lv+<8T}&Hd?NHOOT5#aYN7UsTo^EpA?jv<5)`3=Lj!bvN4xvnXsgeo9Fx8Po@ z8l~g`3c$|E%*0zx0iQG{An!0V9{1+LY542prx&Lt7#8x}(;EmRYLk)tQ0{xRKQkL@ zBP;^^vP}#J=%;_q`AuZL*q&ixvMTpi1X*R>>Ba3u<2hxoK`gpr%oQ;ji9#rYV#K+grY&539ZXUp7jmBTg zT2rvyLOG9j2lr{u5bjp+&8yJlb4tmUT<;U-ZR$_5LKy0-1Oz!I(%{#x%WZ^C#nFV_ z!NBDcw;2Raw@_g!i*SuKNI=H2KRvU53Bvz08U1~OzWanx#*j_dux-;{yKi;hf9axp!2z#g*szxZFthpwA8d*F$IIzc29US zEOmW-eaF`UX;{`a5!!!F>o?3};SD=>H=$7G*q1~ z${j1PbQx>w34h2aQY=|SB(z(v3s~q75b1Be64$SpRdzlOTY9uM?=@oM0b5bcH4fgk zo1#<-IVS-?-UJjTev)``V_LAws#JK^nc5W8@8!()cJG2C7@;+Wo@9EI_qWn=hI5zT zUhkQKCNGito?kYTttTRVmyLUfp8HX62boNJZskP;c35^P&M=c@KL>|+U#_nDQ%EIv zmr-beC&Z(D#{QIqR>OG23$%Uod3)~IaQX4PUv`$2Btic@>c->Aeiig_j~_w+o;AHd zN?OZH^MTI&=YZ<|e8tBUKG>_>_Vd89IuP}PMSf@JG=kE-gUvvv(P*c+yI|NWATGzd zTy@aP>=>_66m>b<$V^UleeBlPQTH8w^FUBgP(Z-t{%LfC=qthOPbdfF3ye!sb8m1u zZOIYze|I50K1@<_aBx83`Py-N!@=}RY-?L^%1ANdRT?)3lyFZ=JKa-$+d>dj<$NI{ zD@KeQYeG!w-D!WnbHwnz3VykqnRaSr<*>Q};h>q18b|8$62{P1z+lMe%{of{8~TpJ zQ-7~`QniX;45*`EiHkR{W*7Y(XA+<!$z9zBdBIU)E%7+=yW?SB?){&L#UR zAT)ik3s@UYn+#0PIl`dZYL-vGq^1`dEWZmx5=k~NiGNDITUrVy66MwI!1g!qEFUtR z1S(xb_FpTT;WS?() z$XQrP5{&}g-;GH~Q&>VcXuM#vn2_)A_rPKXCM?IsPffKo-pYWE+zbz>r}jhRqMVOh zOGT>&X(eZ1ytF&?cY_pWV*P^pE!Gz=Ry(3FeI7vP0SqY6QFGJ!+kp-k-M`yyJXV*N zs_dOK4{Fz}_EXPZF;K^)X*}`vt(N`{j|thqfn_6Xn02Cj14Ny#_oEo}6udWxS6=T1 zsWlXi@1D7)awJgkRctYZ#Na;dygu(A?hoAMWiH+U(=3X!b%H^;IGMQ2L#D$Dj^A?! z@_To7?C)>!qGetmp_Q4`;o>qf-wh&OLMydD(ySvdoX7i6wO>LydvK}BnipTQ#PlT? z#*#*p=%TQ8=Nr#k^#6V^v9!^f-_=ZL%RHR;Gkm3HG8bm7_A#AE|J!Oc0rx$Cpf@2j zPWJvJqSUTQJbcH8uBpO14Z#;b46F9=-~fp0*GxN(0wpfjS_NA{3Q7A86_$p%hCiev zrPb^8t^t8o(oZ_=7SDOg#ra?aTe5GD&y36z$_`(z;s&Y;$~!~TQJ*D`apA+}EEnJ? zaze&yniSFcBafyx_%^F&yi;c$QyVc@_P*i3T8CD(# z{UE2)fKiXjLX&gK!idElw_QeB+RJ@c?!!2M8jD^NJ)dte>mz=<8~g36V|7PQ1#g6@ zD9os)Fo4VkF+bSm*w4%cfqWSBjdQK=JmGpbysNfPV}HXuL^}2Vu=SNubu8Pu!QB$v zouI)rxVyW%yL)hVcY+fjxN9H~+}+*Xo!4Zav+sL%yuWL$(W|<QVj)U8=M#6J!+k^Gr3ImJ?yuJlr> zDFe8<0*7#}7j(a+MZAAzA^}n3>+!17#&S@J*lP$)|H4c~v4JsDu?*f0-qJ(PFexlR zK+1vtKm-9eS94=y1K#aZ*(Dd`jhrNO$Fhf7nS#ZJWXP`0>q%VmGT#={UwcD7<|}oK z;azJ%d`Y)O=?FL<>wvJwASiX;$>{8)#y-?Nc_zFX%#Fq)YOx+8lq=zx;9o=zLY6n) zz%2CYS`ddKk6wfxft&T~8P8N`%%7ML+V7}n>W;-CQdo%}wo^x^*4_|hqHV9CL%Z|! z2#3$|xfVGWQb>EdF zZ{5m8dt$&}B_jAy45@12b7P}AyofAFC|Cpkv2F_f6HAs~6*S2?qcLYh>5XJj;Qix9 zB4npSR2#-zAe(z>5E&1D!vzNRyr)IIsPK1a?}L{E{|q{V0wL&(-!?5!THqt0{u%aQINuIL zmvKefq2m9H;JCX#K6r+fM%pWEieGh9T zd;H>Pu|Cl|PpZiM3^yg`9S6_~~x>PrxC4<(i{tNjY)%1g5o?kCCG=(X0YC#!R&>w3^IL`}}>^(Hqh z(zSaFw)4%6-YGwYWG2Z+G=EH&Vc>j{27p%^@IIW3>wT_o+FIX>i0M>TJa~nBt%AC} zQnK4M59=stzKBd#YsQe3am&U1Xu+1BGPkU98IoCokfEL}*WB&+sRO1=T*+hZyq`S- zg|Hak4gLIcb-GTt41voY`r z|IDFRr+18=OcnWRc{f?b)pkY8ig#|(sAj3AS6nu1>g%!r84YuabDU3*6m)d6Hn-&vv&kuAS!tZ! zke>Qg?h(oSejsvBPY1H>J&0K?b!LUykI9JixU3$}1z?^o^uh%N#v>-`9&0TJdMuXN zJCU)ry2GZLOwEbFs^fxAtY-tkGGvOtQLSWO(BM!TY4h2sS%8-$(%0`#N<1ofz8_uo z`~}|T1HnP|?;23Td!IHRtwJI(ZwBvrffO!}n52e1^GgoT=}L#NghY{HicLvnw8Y8- z-B5M7u^F?;slRZ~pGXWew17-xm9#1e^PTn3UJ?BbVmf4j8WHIX*Rv_4VNyj$;X;i9 zLWOph6KT^?Kl^<9Ph_Npgdl!rGroi>UAeqQzsWM^)<6& zaIA$kQx*G;70XTa!N5h=!_2HC&xhqV2S-QtG%Uc%FV}mhoZlxv z%Eh~*Q`7-=&Ln~XroTbWD=Ic_Tw$~F389Y`v_18V4!p@uN9yjkEzT5p?e5|ymc+d4 zViGywb{M9BwSuaR_ESQdM=)&|B$>{Nr$x*vY&eNB{8=Oo9A2~Spt z6RL7bxSSR=&k;9X6h)Q%1f8ouc(@AM3*WfM&4M$$(fn7nj+Egg*v(z8(_I z4GvjA$jRh(N1eT#uBqwzBq1vcjOIh-Op~~VhD86|*gA|i{NuOJ5$6D!bC{lfrqd~a zR$5BA;(-=9?{R&Qf}Hb#C2}lNwfu*+=0kIgtfaNI=U$=0Pug$QVj#l_xsO7_4E7c&ZdP!?{MFtfXXxo7u0eJ-&kP;&gK@8l8oV zfrCSULtO$0HS+$+viu~3_=F-~FOW-wq>?Nsi44Nv;dW}V&`@;BTz$kWq)lL z=sB5OVB)l16u_D=S@R3HJ)ZY?-2bjQ_p@BHUO=`}`$~nge>0!$wNi$F+e>e*LE3T! zrIc#+2SSjj>zR$#RxsL+Vk81wUau)*GPKbYP;HCVWdn|@9O-ueT!ULf3}QZ^$L<4 z_^tF&^zqu&=D^ko z&R65@?K*6>U|iHsXeWoqZioH90-MxuRX8vHM|UV;t9Aj20%^YQ@n2nl{^@GXL8m0f zc`Zkir|O-KH>&&97pc;tlrO(UM4_O(`C=qxCGqswpBJ|N+-Dhz`{q9#R_5>`VQM&> zlar7HNDj|~CnP44QmBH#6Od7mOxZ_#qrr3R_2Ji2Zvg-^>UrLl$4YuUi-u7Q0fx9JYgwNG@n*vjN$V7Gh;5k9p%~@pyc`fAP#>eH7BwQt%qP9g)RfUfVoa<&%E7jk0Vy%D(1Ye|p9`?HfnA z<`QjNH0}EKNhd^ZuEJ84)xF$=Hv`!F6~UAd#KkGcl!xq8*Va1@rx_}Thv89CoEk-w z0}JjigRbm*-jL5#{xk8g7bqlQ zbs>A8kRaUl&&wl@^Y6Gqug|+eN=QhcFAr%`A5zJbivB+FIT1o!a;U_jgg;vRv?>;v zeBJBvoG7rcxbgK%wT(%mop_F4z>dXd@QxeN1r^Q~^EP35C2$4Bxy0DS^0jYV-qFid z0-vCelas))1_nk&)Ha!25ob;6vGuXWy>GulMFwI%LCY<<9(vtQGl)32ozcCx;AwHQ z4ZEsGm%cQRA*4r*JIHZ^0@}iM+ zFfYOnjJOQ(JsW0b76Q@rad)`qb-(9RUDLbYxBpa>{=>Y)5Gb|fysWg)L!J`lEF@rU zo){+FV;=PC)ApesvkX;GujXV4cHCR~&+UePcI#0dETybB&8Hfl9tB5Yt`xWfw}_wb zl86S(I~CwE9vW1bvALW5kAF(b+eKnuc@asty~95sBTsX^vT%5VWAg?}6x}!7A0N}O zAiQ=d7wWt;&3|Q!q;k9p8Py7I{6R%Vl8})QKoeZGdb#8HORym_6Q(ZEO+?78tVRVf zdX#$Q@RE3dtrB)s+eiYfM@(FNZx>w&4-LiV>Ct%~C}Il=(Z5<}WcT4o@##pw`VfS| zJdNe}L&4*>7}d8flyiLkOh%?W?nCsQMrL;gZqMhrEghDH9~A>ErBv{6%8rFhr{i^X%@BSj@)PQPafQlUnj4Ibt>B7BO2qc=W}*&ojpjZSaRoRGUF z0eyXO$^+choh^J=7>G9as2P~^mk{`+Cd*2mN@c&ZRfAZljZP^Jjs>r??ubx3E-4om zRzEWCfYv?%x9iaBIwx`QQxDJVz%yQbeVWUHqU|X5xU}SKDl$rhBDd~wtd!J>{M_8w zRLrsD?ThlE^o$H@8d7+7VY;%!=`Y9Gg@7=}=1^tobD0c5WFc6!~vctM_E*6maX~snL zeN|Zf`bAQakh*^S z_88wp??d7~5r8KB#hWle;$Ss%A@5PXVfgMGaTyG&*{>>AlC}o>3up%1s#y|;2p6H~ z6A`zu@dEpKAF?_NtwIj1lAO}??95Wj=+*cs-sh*CDNz@ju&;fH4Al&u`^Vi^Ni1M4 zE~t)EJZD%Yy1Qp<*m2d>Pl;Iv6iQ0@FbgPoeKI+Gj5?xrUbB`soeoq)3vG;yz#;Xe zgagB(Hf*FIUOpc5GUbc{3NOpt!P(=9*0mvwv4wczhcs3fZI4@%8h_B$qF1p}`GD5c z4}cI3r6`*#>&^fEb$LrA;l%i0h9-jV&^4>NCF(8z3@X^T+M%+Kz8w-VR27}PwAR-ZAA|i_%cGdz1r}vH7VC>_j zq~z84dVzwGK+lX#+Xtu7CzE|xV}WqogP7rju&6$qMjh9g!jiD#edVDh7Mj$a&tFVe zVd)=qnhw4>tYs!6Q zQ&ko;Y}v{D3rkg)aymx)3yg%^o$`T{0qF%#CZ{(!9mCJK2P;c}n9g~+i=D|!8ci9? zsUk+mmUG*0tcsOOz^c{hyf)kh0Dep}c6fOPCuHdgjn1@V&_`|#m|`%ZOTHN&812)sd`f_XF+pmW#~1$fcSZrB zI;pgTR7r(a#(C&0Bo-nGVVNb%@l5C13683`3Pb5yZSh*?TdKKrL`2Y901&2uJ=!2V ztj@PVId15Yy4CdHOaO@eMo48DpWw%+rkL0&wV&nO1VO@Zi zZ$G2f`UJbARJYwprp!J8$YKellt7@3lUjk`vP2Rg?H`VW$APU_Z6!VU<^yg9_ZM8o0>EX} zftiS?FpY!F#H^8OXRSJ$rPBd&6Cl=G**Vfy*Sv5wQc=y^&bJw+%)vNHmSxQS6xr*n z)bv^yj=au?x|3y1i}sgPX$}brMy(u6i9p)|a>HTT3VE-spY7rGiLb3rAe`o8i z^Uaob+95H5z*%v$feW!$6ZMjNFS?Jky0t!ke&ydB&OJRd*uFd*_FjGb_>u2}34;nx zovrI&41w8UvNL}BBf@;c8r&rvw?`(oGbjpUjx+*7#cWH<2>=pA z-0@ATlIyhHYhZnR+=gN@&3?&H{nCDWqE80TDRrn0sPc44CAv0Jb2S+yda)lqtI2c2}+{Fz9p0lkr zA*e70OZtspk^pdNO}C|Wyp$xwUcQ0gtN)SzhxIPHQ^$%>^e#*EMO+*cN@XZ;A4%Iu zt9fXqBnOsl6ZNrLZD0XznJfpbZ9yS{x4Cn#xl?j(6_k<}$KX-!2+DrAI_!m8SWwS! zIScSST=HFiay=uY;f8t4I$LU%7LkcgMMFpL)^4d9k^RM=y35MSBw8yPiT`vQhBR^E z{kZMD&gG!$>Z1L!eUY#Fr75Ean4}2`QdA{wwdfV}Q-dY)!NliJD7mz`(9aw1WWf(Q zJt?JW$UEgLnvs>1*5P`3t{PvYkOXlmxQEAH00=fA8(+I?j%ubH5U|^6nMVOx^|(`p z+a2w2x@86+rKPkf-TSY^ALj!pBV+9Efo(q`fEJdnCdcz)n6f_(?m=aYr34RtU$9HF z{}-}GwHb(kYB%pXdQQlur3#IGLoJa$Q4PIbO%9XcOuX<=CN46CTAH*m?=l<&-Oesh zA)+Lk%A{49E}045(c9&spPKEHs}8%C zofvYE)v_l5`l*qTp|^qPz#{8Pk@$u(t_5P~zMVOA5heoiqs^0HRl!^$+g zdhe*auiatiBd52T3WIJUlXX9J`K6NdaIxAvE35Fq;Hh~W$!%-wlVid$4dN*FdJ`uX zZA0TP;~j~h!1P8dn5RI~$;j*Lvw?xv4tG^hoXVWkI zOuY|uQ&boflf81bVJY?LPO|*2M9-*cTu7sLBhaX_qAD-_4 ztS)y!q>GmHQof2+5O+pjfEqnEhz$ z9$(1v$wN9-$^Bx|kR1h)3&3Uq6Zt*tzIwe=BK33Uq7IjTkj}&jH5Sty92pRUdrUgg z)fW8)1mxpTKHqawmR<|br-$Oowb>yIR^a7IAE1U7FV&T-as{kF5q<9$sJ9IW(FfVQilADdp|@pk7^0vQRl=U!h_?sF`R z13;@KFSfiu;;eQ$;%woF%?H+W`5|cvp&*L{ht#rA#w;LrDPs!y!_OLZyDwQL^n9GM z&EW;vKCgNEfpS2Wxbvr{uE0O#M%6|3`?A7H5IuJwB@r^_E;HqoD50FR$ERPgodl=M zHgukzLh*_M;q;d;t!#GSWcx6K=+9h#tW@KE%Egj3e5Ki@K3lzvq6Lpx!jRSJzEbxO z?*aXXD*+b&J+%fvD0Xf#P9}UN0p&qDP4Z07z5ju{ooVPT3^Q2av^ZRyL2!GrWW4%= zoivdO#V;`M-d49$DUaVGocMfA5&uYc}qG2^4o_PQ+Qq;`9ObY${HVp7e-|;H)LC~xc^`v zO?=-ub-(dFfUWC}vui*IuYciNKgfqlo+3Y4tO1dn_5F3A)TroodS&(&&Da*9xw0s` zB#2VN13kW~iX?j4vGUYtv*>asv&uvHZkYlE2dMAq z1ZA6Vg}sNt|HCoAs)L`d`OX(=nr8B-xFRebtle}#btoU9<06_)?*mLqG}J(UznNJH zKjNkLYo5!=Vt!v_I=j2U-p{O92%_(m*TVRq;L?@1fYwCJV9VjQxCQE3r8F->5`MwFyP_A z;&gu|{WfV^{Dqc;WzA>f`%8#S&a@=?F!qX5)-Q&0n4 zh6Ux^LzF2gHN`vk3?p6|UdOMcC7@kKR6U+=>$}6*c@-(f6fSjC_5*-)Yx`-ao&{0P zJvV>`pP%sYQLy71{jQ4FWkV3%)E9<1Tn_hF!CEb6emY+~3umqzslLYGKf0AW26$!n zECZcj`2XisH2sJ@o3ZVZT*KHNVuNKtQ>|FquA6oSfPNg8Q!I8TA>|p3emY1tpp=D% zflI)Z#91n$)j;VeHy`r>gF?hZ$G}KQm75TCH89L0B_;E?BaoYAl>?xk_Xmc9az9mu zZ);`Hsz;Qu=)AA=ERKM~qEcwnzUe%ewbWKW3RDj)b#;T*AP~xjGp;(-8X_tpGCDq+ zN>kC=t%7ROC6Z&Sw9bpMeb?POT6+-sX~QDKyVZ?N@*Zm zMd{3WROcIjx$%OxRk+o@Wb@`bZlHz4Y5b!+F&0?gtuI4Q_`~3IGWoC>fy9hkRIZS+ zujKLAy@#Ul5fxL8GTE1uVvHW&_hR@!qFRMggwyG8GB1gh!P)2ypSrdb0M@r-i+njj zqp;bq879SKWNx$XWI^ahsW~~ZB|FZ*K!4Rz-V2Ur%vAzyYvu(8-`7zmz8}C1`FQ7- z`9@hBVgn?-t(Cd1_@Y z0M|NDv^#s11&PFDkZcDCCm8ar^o_Yjx)nMNO$`W2Cz`^zpAgL|%1n9wKnf+hYc`s5 z>4(EO-~rvmz)98v1BHZzTJ8=^PuAH7rnTh5o;YED=j9oI!H0~bTiWid&jV9iY@SrN zcGoLq2l^m`)fS{E3gm7FU5(F~p3xO(A5uOws~7$tWx%i2v|g-S@O&fL3DAz8XH>|I z|K&hC;Xv4P2TafrrkVSs(}F!c=d#-;K054Spnbw&(f_y%OG>EhJTmbq${L+L3X|!3 zaNAc>!k=J=Y~$l*kt+fiQfIUBrEs!-OHYBNMd#2jkXRDpLjnj&1x1N<@HODgL;z$G z5E3I)MxG`mdNNKEoGY?S;56Rm7u+-P&AxAHU6Y7Nso)ne3gKhqQqaHdsRKPg z(FY7=^DJr1<>H~#OkvG79HwiWaJhhDt7VCxku#Yx!3ukb)a8s-Gd?Dk+CZoND?HnO zw03S~uH#1a`-t*6R6#r$L={Lh3=Bgp<+FU{(|su z3CfBGcY;T85)+$lY$xQxWQX1rr?8b=5O~5WoWsQ_Wc{tgI|_%2X<1e(|&8 zG8#<(zjQP8*a%#FNRZdd#f#_Ath?e?)!z;DeYyC+f!guWY97H8a0e$0#Hp5W7(c=b zIc<;TWF&mT$G+Uz5@m+hFSrU(K5gC?c`{#u8vup zvb0Y+Lw$*BcYF8#>EU*N$<}X3L7u^0?X!ZSkPxQ2a0?No`9d%C%F=$L=f!bpxmMIe zL`sRdnSeU-FNQd8y5D4^S=uYt@QY78-o)hO07=1+#)xiIB?c}=8@Ut}7M*Qi!Q(T? zOx#$bOK%h?ZzrecrPUTxsNA^f9hNE1>-(IVp8k;l1FAEvcR&E`@F5Cg8*9R+!O&Pr z87jEJ4+%sxB&e2#=0)fJa^T<{_mq1<0k)JREt2wbaxzkMR$4kbh9#HRt*1MHw2kOb zLS3u%zDj_)YjkU2lT+;U-dY4ZTcT)3yyx*Pni4^J1lB+`eCz7S&F&0!%4qg#$3(4U zOm^z92>NFZhJ*9$EDA(CwXeQ9E-L6EOluup{t!l4T+Yj93ySoFofu=X|0Oz`>wyi* zPfoCQV@0!ZH2bT|$!4>(rE2G;HzbiD04l@=sd3V5#Uit#DixwfQeLXJUy`jQ_l6i0eF@0;g4!h24XyVmgntbKTW zf#lEq0|Te4Ef2#NBtHQsg00R`y|w7+Gr+E$tF!&o@n7uv-UA3RnhmE~LR`<>n&^fG zM)CDh*)*{~p+)%@N8?I`Mg)=X103jc4gZ zhsV|9u7Nhsz#z8Fl6Bf@zTdEyv1yCxPdnn-8kfx^YR5|3Pu&h=96UVSYmj=TPn(}L z+f0pcsR79}0l1mud*a&pt|tT_A5=87kqvK@=&?uAgaZI>5k)-SNl56qpKqc;gz^H2 z7fAF}D@Y^>8HvQWB#8WqG92`eAJNhpYn{%Yy3WK0Xq}znAi^WzMPUbr#bUyuOXJ?` zut}}Lq2b6vba{OtNh-VWKDAwX{?cy9;wbjs`)SWGA&=s&%=aA=c8D#={##^uW|4_t ze)T85tkydzS;?vC$&aKItcnT>;4JZ<$N$lK%7Fv@SOV|CX~Y-FA;p()jPk z$78X-&ha6p)tT4s0@PX4KmfdGYCfQPxtP@20yKift0QJDT+)~+r zUs0iBXyC&4)a-cMoYUiRiPeohAhKqbmW(zbIlYfADLal1=zB?_AGF-u+}thD?S7f_ zHe`(G=uTrBU?!zxt5wTM%{4Ud)bb}e3s46d)=Bh;4fJpCZdb7|guLurnesd2QBqO) zv!|W^75x5Fm~<7d69UgGG5L|CQehM2645Q1C}!+UR!vPoBAvSt=X|&R>?#KzV^DSH zH78l6s@fW`4F?vGs#4wS#@UETNN}<>b~OtL2Lj?1?W!n$TyaV)B@MgGF*MVv&)@~H z&DsXy5)$Ei`~z`v=oD9nL5{o~djV+_bdQ~z+=dgze}%R8-q7ReZ#;kHe{jEXwKWwW*vNbDKBsEEk+woyK}RXEGq<-g|$M1^fyio}KVdiD`V z$o<0>0ae6v(#_!XyaMN{a8;+;5w-?w&RWvK4i8TydCEU>J#1 z+(gmdJ5OGd%uJbt5(lpPb^3d&oK(&b1K$H$=t&=MlUhYF5S{;``9pW0Xxr~~$h)*S z_alm&f`UJiftY$wD}oTiZNkS-m|3lCw(vk6SoG^9oZnlyUipa4^>|iLZeb(8Z}4LE zH`dqTlHj)Io>o_I^N;RvHv6YhZ}31v3Lw4U{FjVC><|)AbY5zhF}M66EmTpv#}S$J zd!_A1Ipl&3Mo}M@Z2gA!{d(^w0(%A+!Tbq>&E=8yf0&0Tx$i-axvHAYtgtnum}C7a zWtyF@<;}NbHeMri0`7nFbv~5O2%v>X-y{vA4!4P7vwAPQU)v-bPq*FH$G;O36K|2r z*1zMGl|EqNDrpKbCVdSz+1j4BtIqfLw_rLW>5a=B6N>xA#SQl-y+WdEt&Wyyt$S9j z56|x9TZ*EHjT3WgKIi=nFFHWFjdZ-(vGsfKOWI1OV_BYpb<7Bti+dJ*V_l2;iG`CA zX*f)L+SLu08kI-P^yr)P!6dXx?QF?{a8HnA4(t4@}T2Ep33bt2D3Tfxt21=u7s zlL+1q*B60vM2?b{^9uk6Yd~B0MyIV8j@lFG_2PBi)uGPXu7*#B%dBqg0c6iUB7|i z*A4a_EEZnr@#%QFez*Aituc$^B}jI)j}%vid^^XVhwpVaDW?Z_=*EVcAMV7eTcCrl zU-StmoNBF^NQ^T4=~>8ToU6A0Xl4lGhWL*2b^M$ya**Uv(d;65; za|`?e1Od<+y3tj*$fSf#RmRb`Hbdx3ql|ZBZ^(o>CjE0?%%m(}@2vItZT9`{tT95| zOYBF&$wpmRs~>cbl#yXyL?Z1vxk6nSc@Ql}=@1)^R4Ow~Iq*hgWVfht#o{0%_&-FE z+RP2i4m!@%lstQX-iXdRv7Vq;(zoTfs$YY{+#_LE%e}m#64AE9e;*0XS$+@}EAT?|tic?y~UJwc&e)dHG;#k3Hs>rAae{G`S%5 zK?Y}a(*&{kuqKQtm3fLg zgIl;#NWBU2|KK8g<|zGQvPiGzJQN}A(hlZB3f%t*34jrV<^3`ifu-KzT{+Pota<-l z{xcZpgnS$zA*7GNP5Dl${O*ML8~^xbNC=5V-rS&-xTotN!}**=zs;cy#sPX&KUi3m zyDJ*arxI4-+^^86*HCmJh@hJe#xJVbE#_E%Z87SeQG_p@aA+Q^sD77(ge9)emJV?= zkADPnzw#1m0Az(LQP&adju_yv=2IWmz2O&Dk%@j-hSN`PFuNH_r=TQ@k^m}KxVd=% zHn{{Se|6*d{W_M5;T1eRxk7ynMK8eJhrWO^!%c$zdABR8^MH2#{5NHqH%Z`_)ZZMciC0|<( z3q_qOLkAw z&Ig-aOCHdQT* z5@ZiwPgar_6^6Kx5EqXVBu`36$zh+VGn_k(ELe`5NVN|p5lOCT3N87(C}{S&X$(+D z8RmwfydBy!9?S`U6LHk2E;qwZ4qRD#b!IQo-qDh(vzECUbw55F%!l=Da~ZWi-sI5F zfH#_fgbP@WDX4|mgZpR7Y!F8lBs<^%sbnf}UVQIorOaRMK!mE--^&JwOt_ThpG(z} zmEIwjY1Wf%L4T6*;8H4>S?fO-)^>?Yv}~7#0Qe)|qnMj<%&$E<1eiKCwFSoL%2a;P z=8ltArya{5)eG=it}iY-UmPx(=tOHKDRNnQZou>_8}q4av2cB zheTob6!Rfbf<8cxzrCBHHj$g$PpE8)(fhVkX&j^^pY%`G)iN8_+W-X+Kt7G2Jg>xV za!YdHf=riWc~vK7At zD1|MOY;TWJ$?Wt1KJKfK>pSWSXk}GMjvKt%SWUe+&rdjb2%4` zI9pM1iSIZs`(Rkh`2`HTy!LE(D~1g_a?P*M2gJpXHxu7Jq4YoXzJ*B_TmR!T+7Z<2 zR+{n?6s0%DDKQ5maCFoZP+b)OddBE89^k{G?|TA``!aH4E&)%4js z)<+3cKVNtdj}}zFNut;coX3-)ps8ZZ85NaMO(bKxva{9JHK`-_bJP~d6GDBlN^Q?t zbw|KOU_GG$uu+gUfWDriytIHB5N<4=kI+=q-CPsV9IM+Ugv_NHS?~aG(`WkV4_`}) z3~2A!si8#OpePU8L@geiic-e{zgVsmodi;nf8MMzJIK`+(VMrh(*Z*W(Omd~$>nYV z0KT!3(DiHpW9*sZqc;u-ctV8eKKDvlb{(-X$ji(1Z`#p4pG`-Vr4(M}M1c|(G3|AM ze77*sSJBeSQ+@NZ^94*1E@vx95d0GLiQ5*_O^#c<=eg(OwmML^!6Cu^7((Zx0q`Nf zsh52~wJub9U|tH?IymZFO+)Ck0X;5?Qh3}`=e6}@Io2}?$-#2P(_Re0)Z`>4Oosf_ zI5uxDxOE>{@Eo~%QxhgH>OmGDIP$#3fes8yp?G9|VR;AP=hmexzXMU5iU8z*lZ>m1 z*b->Ba?E8%pDB_)Rok+k-ucG$sbjyd_DRgwrd4NMH*we({=8W=IS<~qa!14 zA)C&Jv%M%9^ELIO=M#qPX}In|>54^T>p0H*#q>Md+o4yh;K_;c7Rz-Dby&4k;3(*q zXz7640|AfWQ1Sd}K6O7#QEEM#s6gnQGh~7u|3r%e+AOeq=3{KSmz$dO;!i{p=^p^P zwY5o0Q_*sB3P)si{hP9g$&`YW)C>Mq&&ot5&$!Peb8_T3GrM`hmrJX z5E0)2F0Ns6g1<}3siw9TKyT1L;YA4!&&$-NVxeJecptUM;BZH9%pw~+cCEULpS=cr z=%!xVBl#0`#_RTZ`=Z(&@Vsm&SW=g*BVX?pp1mxw{esRjq17ZY@$p*As5qzG7j!Z* z0uBjY=q7e&zqZxoaUF{3`aT6XMk!+OL&MQgxDV>js?2(+fPTPSY;Otiaq8lS}tIJEz$lX6GN~JHue8ScNXl8#KpqD=(4}{ zzjCXw_x`?0kg04oxRJm8yP(I@C7azz@8a2gL0$bkQEq%lw~V*x*p@rcQt+zSZ?9S@f!n&X{N339 z08r)D0A_uSMZX?6_nqla%z9tPfFVn=8k}nW_re{(k(YHe*LHil*x*CEIZ4bt)Z@8o zM-3PTYN~<&EUo+da=ZJAf0vr7OwEfA*$mFNJ zHf+qdWGxjsNNb@JVB7+y?e|Vz^vRiGMF~!Wlve zlNFlsAc@oIK60>|Jry~N-k!N%Y+u|WWHUNAXhdD(qXyRG~QD!#g!ny;R`x0n)0%4KhPvRyb9#T&5SReIS2(LB8jNEjR0auey zaVqm)2rfj#%uEac;(<7+I$C-cbeYwrqC)G*_fIsV#rL&Ke-~@*6+l}*JeW|ve&@HA z5U+W-A1?@4wf_MkkoURl#_1|Q<<@JuNJvQ7YM;UA1B$A;=|r1$kDjn^)6*=~{u-V9 zVBkLI7=YS4NVcgxBqT^6CkD_1)~8yt0K0Nl1LPUlDjMQysE?YwvG{E5pBU%_WP&?N zb~Qo82;5{cG>gKDtKB4B7xa)skH>p`Fl819VPOZ%INhhYu^b{I8#t-B#DuJZvA`&M8% zrh~}=Xuv=^=*jy2boxI1biB)E$M_VXZeU=*_<&@Mc96BP)9k}a?4Rm!Nq-i?4_J9; zpzVBpm9?SjW&e8ZsQmeWPLvD1no?PlEC^ye1lpik0-I2cF*z?*W## zH?Wh{7W3~FEVI;v+aywD#f1(a`r8Ls2a}VN!$ijafu6oCfKwCGz+cE}P_Z$`$H#Aq z$UN*D*)vw^u)kY;mS<344f2?HMN9hET_TGAgpq_OAO27qt=FtIx9sVY#(Ys=G&iS= zG_kOt>bBjjx{fSJgdb#l+^$evcnS0NIVoYs$OIe$QlP&Gz!LXlbJW$0>~prCMXi!Z$Zk=So*m?a4=z#VpT6z9vZMd_z#@dZ&adu1%sBkXn$){ zKUl)t#p1DV?X4^!@IMlsNh>VCrM?o`YjX_37*S`l<6cD&%LBn6WTHS2!TNow(%3OZ;jsJLg z@?6c*WEzmY_VxZ=r;q5-?^ea7npWb|fCpSFvt?sZl3_An%Fe&@9)rFp5b44e!ukKM&^>F+>r;y>~C zUyFOYVsVMP;oY7@WPU<&&@g(xosPtut^JW=HrZ>Ko~=-9{CPG-VWrRT42W4Zj_MAk zD?|@t5*sU@!OdO%6|Qe-;qx}B<_*b&#+W{-D?3Z?PJ=67lx@EWaWj8-rJ!Tt76)*K z2)_La&5onlyK^6U_$d2~LV?Zyhpn>=sA^riwjzy`QqmzH zNOvP0Qqrk3(%s$N-Q5jR(%qm)gOo@kEe+oTxIOzl-|?q`u-2M$KKHoCxJCoJG(I;j zqgGTz1q$PV%W020^zQ8TfxZPjoN1j!e@;4Y+?#=@m`1<(%xt@47UZTq6u2=TA4mz- z;Mn698m8cUOlcQ}Z;aHYCLpWN=j`{C@gml`6O3zm>$*4xJV+FjWISJOoCK8}WR@CN z<|M4au=qHrtu@dC>|?3q!_pZL^TQkK>Jxl2zkXbS{UfwSR9MIhb~R3wlS$G495I1M z2v1}Zl9h$HFp-s!x0$Q(-NEc$wm^X)J8G$yBO7HH|M)3|>l8hqy)(q9Z;-cX@I(eI zcKqsA{N_741cXD%-gy^$6g~g(Bcf>hr`dZ%zf7PcZ`7IwCp?eBhKJ84mvFL}N_Hg1 z?&yI0v5&p7az&0#fN8*_-vlh>uOQ@}=Ouz@SCivr@QE}Mxm+%O-4+OZJFS|d$HgSP zBBLpj4{mJul;lUIA}2Icp3Y;$Y^2L!%`!tNt0vugtJyhqLmLUTHDgX_NbTUav=NRw zJJli=51ax<*s3+L+d$Li>6~5L@;$1gpVuf1)Q|LrjPhk#3UxOz`LrAmdD?9LLk7iF zT1r-N`PT?31u6H(f=B=$C6pv~Kiq#zyb$?=9u~DnT6^^jj+A#@NPO%Q0}2Z6BPBmu zBky~)LLT=q08phlJN^D%+mLj)V5}`Y-I=XEE$i&9BiJ{ZZ2I{-G>t#Dc|b!^ zqJZcA&{j|ji_6>e0r>N;!%{6z7pg|Gm0BNLKw6M$I32S&Z$UP=|GGEpntl7_T3-XI zYe3+*&7MOH4h|StQ`x#9p+Ep<$)XBOjA%9kt135*E?UERyA@x|_amC;>PShglw_6# zum0P?-M~!7aj}r9HaO31FgGkB^c1YuU5=M-fLLAeqrp~5R(1uh+*`sdQsQ+g3m%8P zki=lT^I>0mFY+&(gSv$NDU0==eA032T3k}N2o&-?}t*_Y@{qJ#~i1mBxqQSduE~h5|6W9TCEOow#jkyF`QUn48dZsypGRb z=eqqB7TrP{hqcxQmfnCo2ap~y9#Np*oy{iTJnNiKxvh_086OAdY6SQHI16Ae1tW9c z1@P>KKt9dV2Kw+eKs>8dcFl}HOJR55DA7_|TRrL|lb|-x)ji{C>c!~rY~Y~vP(cGH z4=4#E@r7+=W#S5kWbqhN11b0A&hPoU#p_8Vmq%BuRf-L4S_u%)K7qG*$&)k62^>R- z2RGlSk)QG@x34s!KVa-GllnCM98GYp1Sj zfOu=QvhRubt9T@BRakomhpmH=T178B~47do+DokX*7oq}<0XyDM$n2%mJn zB~9!T$~>wx7U`71u$#b#>8FkYOzx!Ig?}wmxwYc7V8qmw!m0-+KTqFBP=@=;@tcYR!9Yhwr zq_jGW7@OGpCT9BGMnaO6%IP@T;A0O_`@2uNYY4Am5ez)lAk1rUqkL->>vc7!A@?yy zs(XCBd%2ufUda$I3CKm*Bf&ca|9*r4oV(6Js1RQ6wUU43!CT$IPrGQITmEmBP|K^z zuH*Jz0#n+OkJsXnc~g6B-b}#(NW<&>)Wt_wxJ@kmp!i-~)$ZhC7#uU7p+8reGWiH3 zBVnn`*5B0g<1z9}j|Ns&O(9h$t1~X{w=_$Of{(VH>m8w6PRLR5aC{O93RbQWAgE&y z;hz$2_v}>Vu4WUH@Mt+UbcF9}y0Vp%<`w`fPBUxyA-*ULKR4^?VDAz^f4_^$N6MnJ z5$Cbw)DsFe*p0}uIBJ;m!yhoLtNN)LPnb{kzo0N^A^H+ia8MqC(d?(+C(&dV{vrDx z>cmI9i*50*H&7}v4!o=in}Y6U7xc$(hj02}ztqY>iu1Qkk2it4k8`c5Z|7^VIWR`gN0zH80j<(eO#hxT1Gr3@r2xUk9C{@4%pQ8M7}Z>10R zxx0t#Vlc3C-Yyuw9Sym^asYs`=;37k=cKz-E_?@DI{BGPE^>cmy@JRU@i6*l_5ojR zzwQnb-g*uH?dY%n^Nk@&2FLxod1pyEg8{GKKCeaOCdI%0oeUQQQ~aOH^#<{7weDJ8 zT~QJ6S+Vo;$+prW8O8(yaCY-Nfq5$`jvkvxZakKyfC%N=b^8dSzOL@eq~5pkCY`t9V%bKZ6sbe>bYt!V5KTJ{tHcLZy|+1zowo7R)KH)ul@Y4Cfk2-N6JJ>fclD1xLy?z)I zd26M%J(6ifnYjw``e`O{CruqB5OP4T7^zsgolnUPfgm*TSG}s%WGL=*jx5JP*rGb?2NF- zZIMslOInA#oLJ=7%%OBpQ)|2p1~`SS$>QUS;y#nyx@hbiSkS5l$Xsfgw3)Ji`2aq7 zW)>eznO&2756(cUAL#{8mg!{}DOxf946O^kiUd9;Fh)+UQCV9l*EtCtU-6XaTUEGh{vWozJW2Sxd8217;o;0p9ywW8flV4C(#AWvv>)zxgxwfG?y5 z=sC|&Kzc#!{2+B-R3|G73vWOMQrx=@=!>8p>20`am2UE(9t$YPS6uLrsT^l+Ee0@lzN(eWHukzCCMMr|0<~V~ObmbIq*%4y19yi9eYQeBE<$ zhMA#`3^~kCtval~mf$3SqTP7938NoX*pMYl9YZRAvDRMFKQsfN)NP_~9+l4&(0e4U ze{xu1s=g>Pia>#|$tK61qq4xJ*M}&>M*TC;TuH)8Bp7j6Y{0ICU>6uJVNiobgqWe( zSKtx=-bm~LpQVQXf7d{de6u7xu#PDM&-y#B2^gRSo$mJw$WrivJ~EHmXNZi$zF&b8 z=YZ|j5HKKE2KSNrtaQOFn<0~XJ%7QfhaHmbE0`HWfvb4BaILR8+UdB7{YghWF!*ho zWd0Z2w}@9OiuJDuv$ zV7M_3nM=z{;PPrR(6u4!cq~__Sntw{ZZlfYjlc>;yrv{$G3t1ErA_o0H5n^b3%2)Z z?tXI0gQ50Jbj#lZup zLwbB@Ok7Pmz3>!S|Kqn??z;=8xV*teteg@!PtMMDEF3<r1ALfVc4Mm`cr@Bh5Gpye4$39+GS9C9!xcM)B~}$bDA=|wWu9!YI-IWvO{H<8 zR-X{)o(-J(Rs;mhl+3(jh>42R_%FpDZl|r~0V|X@oDdtGiU)-BDDZmtg<*kouB(L2 zF`C@bfm|M+=(wO@eVtASexAxuNKnZBAB0ef*E=Mpb6C@2xp+=EaViN0deAuYXA7_) z7M*!@{-bw%Jm##vKBLWpN-8eHj*^mcb89mkmy?Kwg@uO&1In=v>&HmiJ*CLtj1rbl z&j^30$oOLx8qrS$89$J^t=prKLsG3e>HI{K#v?iL%nG`QH58 z+S=wLSz-~?2m46IXCj#_^Jn8r8wGtWO<%d*ZH$*TCL}0>6r?PKI^3_^9kt_!tp?p3 z%_p<$sT`qTX}&#@j?NWrop0a90A(XBMl>WmnJe}HK_@gHh3MCQJ+im|^UVqOM|sSE zhJnp$sISLMKw{g6ia*WX0Oll&{oj(n19oyHB$-?n6Zg|^V}Ab1{gspp%Kx{;(Cn=| z--5XPFQX|sKS=@cS*88^vBujBCAXGxm-KL4)|T6)%!uditRoIvzzdZ^6;}F#*w|SF z$^YnLVh|~{@hJ{721iU0Im9(IVj{EsdsS7AGQ-8k-lmvT#Jjp~5o~Cv7(HM`tBTE) zH4iq1f`0x`P|)D+Tyz_ul`=$i)nsjLMYnnh%AafkhL4X!Sj*po9J+z$Aj6dtQLnkI zh*G)qt*2YdXvH&4)7Ccau;F-V0+LP=zff#%{Fhx9uT2!cctEzE^9lIZe4V=eePXPt zs!HJ=`mi$zs2=I-OVDF1*ZM(LGC*+&L%a{Nu6NkXD&x@v`jr(ZRIz?-BLzjput1En zrwRag#=yWhRZrt;GdgFyS2nml`V^bPt8(pfX9gTKXi~XPHf}V)o)+oX?9JKD_tfMm zk`)ETcSJ^CBT<2X-C}>)v#BFu@c}Sb7V zz3KaKI)|o8xK*DA5g%h5kXov1!hSiiPJzR#`h!a}q5CC=#Kp$1?_jx1lYY7Q%^x|8 zfM+_Zh9z2o*!supL^XN1>7hlV&F>JTa;+)a4*{WJNJtlt9Gz5+=yzix&_1+S+(ceG z^FTI{qBkG7`&R!^*aOzljVJt?h=&C%fjgb~C21~~61B6#=?DmC=7%}z>FX03FMZJh znf&=mL%db|vO%k=Y8Wge@015G4yfDw7~jDf$pT1?T#I__L{ww^uppO1K3Ae=yq{r* z$I0zxfh<8`{&g8}sa!6`Gp$+C9@p$m_b-mpGLv?n7LHze)WIFV)h~mCn-|rWiMN=R z3G0~ub3+oKlbMm751tase$1~yF3@Xc6-S9CFfdr){nP$?qwkA>e{8`Sm; z6THq+s&PGVs-n7ujJvkF%GKhI+zQ{bwwdh@sDPFF=dwesST-AiBO3n$&;wQ^=?{b+ z46FbovGXB*3H zR*mus*5kIs?l!R0R8N0QKPoN%zTYG;l4nBKcZ@pf1Uj6;uyU3iK(^Xx%ujl^2#m~SnzaE!dW76HfiiI7@ z0QfyGsj0JzGNC2;v5HZI)s$GNUcRJc@WO35a(4u&*A7NQkdIAh=;dPF(Iit-SBL0Y z#TfND!br?~ez+TqyJyI;Z$g=u3ig5l5ipIO+gY^Dn!NJCY#(r+A5U-<6>yy2AWK_}r>`O4xt?f@bG}VPFyN3B{9F%Kt@62iHniga_Icky&`jSh<%sSKD3ixL~vn0@ZB1S z!(aTkZma`FRF<2N@X)~(i(a=4ODz2^L6K;$ez8D?DyUXc;?=joFCqke)*F;Axs1wgi4Et;XIq0g6M9?mxrSO+gW*628L#coz(9&7 zJbp>iTr%qVbl9kvC^1Ru`l+1U+)Rv_t0fGVZeSngU}g2MeEvYmS&PsDpv^Jah8o7G zj*wXI>?85I&s>Y)_01Lh^ilKk>QRGw^`mmp*_r~EfyD$ zlO?cPk#VpfGB9aA_1NW7O5^In5pj`1XhDu~W2|QvKM`=IN=61o7+6w& zRq7d>@?4({VALkwS;ZBW#UcjqBTNpC*(_Hp#5K?d8|;i(OmoBE9BGI+or&DBgee;& zid-+APB*Gqi!RhE42R}pP0xK#VQ%c&z$|q<=z^*CNDzS;{gM#a(J7szqu~EKG-ya|+&9Oii^i99C1Dzip@nGkT&{Np-Uk^O;oWj`)mtRgJ&M~aC&tO# z8rzfFvZJm6x*eDEF4tDyS4!fl19tF5#U;bu-=d;lD_h7E6t*d2prSV0Z8jBGXBSsT zgQyxL zW>seW+*{9IY>9Te44eNslkO$0UBYjutLszrxhTeFfl}pYa+a7_f%%M21JH?vOw;MW zlKS(-h3uH@Ub$_KlRSw39}@FLR4(528sJ8 z52D9au;6^|a&v}CLJaeIu(8hk=?i_qRSDJUJn`=rTIbR*bVhpml+JI6KgcZ~aPLv4 z8K(e~sz9d`az=V6)e&@%aG2}>s&FO}Kb z-8}z_qL}h);cPTR!@2qQ{HBY9>KwH?L%*(*R`s9tKxpclUuQo;@@H4~9`VIg@&LL` z(fALy?`8KqnagL6LSs2yKC=V!Q}$XpF}ptckzHo*4Uh>S{9*4K`bzE$ubuj8;Rr)3|YmK=45KJB*nAO?n+uw(Vss-M=Pl%7sUZa zMZN#yo@_uY3os|9<~t6+ArufyNKQUl{n|QfgbrXW)ovrL*Un!ca4(CFbnnp zk~wg2aPaVl+N90p2*WFI-v$yl6XRHFLC&(RhG@TSR^vcuAT{`NSNF@Op~BJn;i+5` zdK1`ShB<>06=loG%Pbr{s`y#<^TX>`iem1u0XV`WEu(2+tSpf$rp_}hZ!W{4<#KYopIR}EVti3S^&3S z$r6Qv0VHK1pMqX(_8Zte3B#MV2ZKCO zr^sjX*|n+xyv!fJhqs?BoC(0NP6F1-XjSF+pSB&=+hsX9UC-ac5S0sd$nL_G3#`RW z7HI$Ftz=fX-h1GU8-MRKZ|_@vq`Y^7>lEwh=VTW~OXiW-_fwu$1dVFL!)ZKN!RZ1X z3sTJWn>|aWH9q2jf=T7s(lgNyoBhM=0EgJ){>wJ|V5QG|zji)f^#2ekf6pZ_3C^{= z(5{4sxn{;-0!ia`f^}qmnJ3m%CKL9O6Jh&@3Y2?D`{GF7K)+T_*jMsK(uDA~J%8## zc)9nR5w~C;CvG_gP<{L#a+4j=F#v+8sMgci9a?CxEILgVug@n0 z>E281nvDytvHsg*lE#XRr;7J*l-1o{3t*g|qOvEt0Ioie64s*f>MTt&4%=B@&~0~z zbwFUp;s+9ITZP9y)<8YmkO2Av8U+B!7Tg6|+&tYtZtN=`e7`mfP67Ljs$-cdM)w>F z0>5ym;TG{_1LkOoS4wBUV7p`WP(t2H1j;v-S}5J~OP)G(o@#t_`FQDt})EHV0*36A=L_W4!y^ z6Ti7ERg8aK29iI@GmcNr{>9bLrOl92ftQ~+f0I_=PD~6L@9uV+J+SpyrpvB`sy-xT z$ukUAv2tFoMZYV4%?Nd5Z-4@?@- ze3?cnW*b$|QW~6xhgeD@*MZY>YxX6IBBptt~o(o=bc4O5AXE zb5wf-dgw!X!MWn$XMedRPfob$&_ciYrzfS;`%<_6r`YX4$ zph)8C4hOfvhh$AP)mREi{i(X$0h&Kz^t!P+Pl~vec)F_%nT6g;S=an%EteMUO-1L8 zWCvNEJRuAo@2A$jMe;eS@gUp?x>mNKx=W;SjoMc^kR`i1b&L3nnACVN=kg<@#D?ql= zYGsFkB}hScw*|>6@tj8i7W|^4bRSxw44;gwl^ z$Uu6cD*G5bZzX^ngRmWl^|b3SanR!mi$@`Vk(+<_QLnY~Lm6YX?<)wsyWN7GUkJwC zLgEGqa;soGb+1aju=WsS#(}g8LgU&QL-s~sJ-;wdvbrlpEw9LO^gYr7Nr%~7)uj3plYxwSWAc+aDk9vMUoIvV|iiB#h1p=++h4y=>DPK*`|~lQ zc`yq5QeR;m^Jy@e|6t1UmIsy2dd8_>17g9zehAN;FOi;U`~}Gh$cS+brKaQc{jPg+ z%b8k7DJc^*^|a5Te}^-s!5cq_YAFc*osQRAdj2CCK-vnf$^g5U;RK!3q^OHuHN2;< zW2*H9V6nL^gEog|z!8hUn-?oNktD(|B3u-mn0Vg2pYW}slvJ_UbGnR~+9N~`8<(H! z$&r!tgZlXA&xE7bs8jz7GXBz`r|>}teXQBj+cPO6Q=wL0-%@lDErPrSU^Q%PsLTnu z$FETf$ZSiMKecI%giM`>!z&3DU%93?(ta?Zcf{?}@qKF}ud6W5Z~AA))kffXw_6Js z6vPn&o3s6Yxo*!H2OL7Mb^tZ`AySRouG}caOTBf$bK*#_&qBnrywk5k^r4kW=9@`r z_Wu_=2XA$7xtyZnuU^2IPhHK?Wmi$D_1U+ws%oq=2V#IVZO<@GFJ>+c!#y&BpDVQfI5q?=qjiq#4SO zP;HU}`j9&L`Li4@oB8msc=nxTt={696$A?K#oWF+mOgLb1+7A0%B6Qc^6~QJ2`wk_kpdd6_hw@M(#dpJm;y0)hiQd0tV_zgJbn4$gdz6nJ?3bYX zZEPFw{kC@It+aFsF(})SDOa<%Q~Qr~QhZ*EhLaoy3QU5L3@<5(`Bw#_dYozF_X`UP zpLNqv=qxi)Gl#y4X5uE%P)))yis~em^T}p58rL-Ff89q;Mpi-UcqLs~Mdx@}Z&|%I z_uCoqh5k!QG7KEBqEzwAXU)~swQ?j}oxyzO(qh`oXQB;xOcB3XI3^X zSNgPKKU2n8?@pS`4!A<9-o>;z{B7YMo4>!Tva2vK$tqKzK_GBioMfc4uz0^!HI|Au z#%Kg8NbZJa1)oREZ^0XXHF%et_|S53JWm1P{s`h95ugucY;vtf?&;31*+`Ox_A$aW z*87rziC23y3ZfujGr?4&ody4!+B_q#J@)8^Sw>C|{8?<`GGP#LzU z(fX(rh|Kh8XOp}%EZB!&NgX}w>nntnCMuc~+g%#$$e|ipV_oAS>DznSROe6zD0^_o zh}+zn5i(|GHu8c?jdc=2n)ve#LJ|kL#Kc)sG^wB=2DnfF>u@lmV7Kcm=!?L;vICG; zXpjY{L2bNuckkN+f=7Vz3=)2X$CK2Hw%g7QCG8v*(Um%L>_e}IXKC4srxOZJ_ZB3X z>tv=@e_?}eAjV;rxGJkuU_(cN%IOpdjg4OCG30VcKqcn3!?5D}GnuZeECHs@;7C6U zHYcB`va-B{OV;LbK*fGWn|&XpA4qxup0&l+aUv)(8h=-446rN8%G2vN&Duc~)c|Mm zm5#zt1q`gfy^M&%s=baeN)C*`hps$^Nr_&>r$TzyNU1D4^T8~DSkvTuZM1?Wr)@Ws zLlG7A%vZ8oSj1gg3ZKmevMNSF-s$%y3^b&%8BVRuI-V69F0e-GF655@<$(T+MM4s^ zy?gneS>2f@8#eh%NNgHTAoePVOM_`%^VJ<@=zhtbQG}ZDn*!W2@>=gR;-5*DT6KD@ zrAJ%lSnO@yJA50XTxq`^t8PX$Ugo*FY7HJSeSToF+o;ycHB3!J)~ zR+otQRrZ&)IsDROyp9&Uq@=cUZsl&?PuUY+%uPDm?anw)E&rH9c3?JMu(}kME^%R) zgrt7}Y#MFX_kjdn(dV_i8ncviUKGj#!c`^O_kANHv!9#^D0k=F3HhC1-%4NFn<>Z_ z?N&O%jC`FR+X6tNuT9hzr@QlHB;+DP@b@k@nQ1cY2J0heQw{DITjfv3=g$eUqGKW~ zeqPOha1G(1)2G*Wx*2`yxfhTG@_^*w z1kFwdA^m@n5D!j}yUPv%tU{ln+`o_$c>i*MRbQmVd~)qneQh1BKy!r(#rcmGfUrw7 z98Z;S3XaUHPobLJYKFcpn9gX=sjS_!jJ{y+v|vjt8$qBV3vaYMdFDg(ftS{whGpeViV$98fI5_|64%+W`K9MQM92NbY zi2lG|^BR-(SiPphwPElt^DrbsVJKg2s!ZMP_bPoKpWA5KY(lcvV<7K-rm<6Rv|`6@ z()_ja*5D|~$5&6upjXIl5*!lQEzjD(cE{i-I2%m>S3(jHnqh-XhGT%{QAI5>-=c~E~?jQv3Y{j6~w-3;W=@mEqv(171lu-Z{ zR`DXHdl{{eP&6Rn2pE#Qtb!v+LR^6Rw^z26WyqY871NRmJ0w=Er384QKoY^FLl&Q` ztG8Vrj1-I5Y$K>v`p!mtlNCs#a+hSHo&)zj+B-tnolgjO{BBJisc(wPdV>q4jll1X zu#?li|0z4WkXytCGAHJ&`k#BxpC80?>`s9l%Q!yW{K9z0!}H0?CI;iQR@(R6fIlJR zf4=zD$=&_BytV5X5`p9m>HU@X@ZbLVi*2m|cXzVxVyV&dMPZLL?*HpU0-!bmAutQv zZusWsOQN1Bp=PX0{`(aLHlw|}J~sE$*>8;b;G4POhTM2@XZZR1f1Tw6JIOw%`QGfm z|9ww)xW`UqfBzUfRJOr4S$}Z@5wkrG9R9#vFk+@1jZq4UP~K$8t2Jmv=V=DzW0czJ z>gokg6>64&G_oFgY!DV;M)U#438229(|c8c;Tq71l6^p( zfh;AC=K#Ai2xHCv?&q$>#dudsOyg~71kM2juU`H26SX4~aOc_I@@Xd3O}=1tEb@!PaQMr2K!v1B z<#0~xjB|wnC*$`m`q#6iji7!&L(v=E=0%7cBR1oRMOUA;(cW0K{o7O)Dqr4Y>fTMl zE?d>lRt>#Q-xA{h#BLLW+@3tn^JCpxFxS>HZ2j0jOU((wSPUwEp6%}3;I3Sj7q8r+ zKb$wL)^zB)klC@FHF5m(C^`4vq_^St*!A1L-l8OpGv84X;6erEI)C_U;8l9VjzX8p zu9lg%0)0B6_$^-rD;!YgRw9;3W@~Q^<7#pB2bFaH1d}P|GUehiNAZ7QHAs$Y4Kaw_A+(e7z@P*MBc(Dqe+_Y*|PR6gI1-&z-2NWk|@8Vhq@}Tpelly$&&!qIho}d1#C9s%4#A8+vifcr8xZB ze4ryRK`0maZ@QgmN3?%=`Rb5Md*f|*$k56``V-2^+}oM*OWV+%l`4o9uU*U(5rNseVX9W>s` zI_gB35W{&NJl9c(kc4D27}n~m(b>A?b+&)Bf75rrSeFZF&Nqi`$wLH zH_Ya2^^zeOa9vS-R(+V~0g5FJLimm5=hI)T-<%eXXD08W$3(ycXSjMMwlA(9r#S0$ z0qDFlh<>;u1v+*3nxZ(^%%)*p78cN{p8;LNS2`c-lb8xy3kYC2@6LtJXoyhLh@wNHFe2ZLsEZ#uCLv+=XQ&C2F;I59DQp|`X4 z{mvrxAo;2cBPuF-hIQ3GJ%npXam*(>Rt0qGy07M^D>HH`4cJGRwCzlct5LGDp~)=C zEINu(c6LA^5{0#7s0P>kNq&WlLMh{@}#pcyaF*Rn?r zh}=uMmL_56$0ZsnCnF$$4h`G`n03Nzjl{Par*5uc zaFRxn5Q#pH`-lP62-F)Qz(2)haFGWwA;SA`FSsdFK#Ctr0{*|-4Hhmwc8A|jfF1ia zh$#S}B&$O6WD<+Arx2j=K!Sya$#Twry{NqCX7#H#2uQLZNy&~er1QE-NJ<8V2YXxh zujs;A(EtEnf*$_Ad$A-WIE~A`e?iUWfocVuu0N=_aj1@~!w6L2c0SJo%L9x!&=7g* zi^4Q#*TUx?R(|Ee$iSdKGh{qn59ec|jV<9*WP~j)UelJ12=IRT)%yN!m)NMNW+p}~ zGeZzoEC;Dl^dA{>>Ey1sDb6oXbpeWDZF+c*Tk{Ku33x*+@+}YMhu>;^egqAMqq2N+ zl*1E72XS{=h~pvfJn~EjpPw+dsIT6X0&kpqLQpYj14P9!K0M(U_Xz_#e6LwR0mVBc zk;cW4o^>*1{=~#uUw+3z2lfoJYkLLd1f0vv@&Acs>kB;w7e#bpzsir#Xomos01DSi zgb^J#1kxfC;m)(27r+dz@em}9(9!(*Fs+Z^@>*@r#!BKB(<39Y7yQr8EJAV{-P;B5 zyWV=L>`j>_sA&uF#*bP8R{z9(cFg_xY0TTon`~7 zbFDhYCN?%U@~c2Z`05dCa66@{hB+BT9+GwOAR;6P71|anZfw>WF9bEZlxEKC|0-4c z*!CZv$U)vmn)?&M*&xcRP;=Qk6H?eSo0ZsK45C8aY|L36pFE48F<7|&%bEk$i;vTY zL3Z@lF3|Y9*)YMf^t&2sXLbVzCv=Nr=~P@}!Q8*yL~T<$3$;S>5>IUl|03u5Kv0#V z$$hV0OseKCnKxqSW_8FaaHb$6j~f*zi+sxi>K)EyxNjzMzOMA*<<^UVfM zs!4em_SPjzZnX6X9gORr_U4&s$ddTVv5c95?~kHa%&;*Ftbwbo?6PO`ufOX>PzG5V z2|nKZABLBa{t>?v$!@mz`g%4g{WLiwM8v{O!f>zI&!5!|uwOjJKOVXLnfaZw?LR!b zD_BuU4LN?NY&q=Ld2A%d!JU;RmDBoYOAk&Aj*X8v zXS1B|4LJWnt^GQReG{DDkJ|f}i>z!?K+~d6?5-T>5x9^ z|29^yuc!ADXkA*2j3lY_-Sv(X6r1z&xWf2JZ6%XOkHf@d7Q+2mjmIk2@DiP+;IY z8YcAM+_xcpkNMFXo_b0lDy%(s`2rC3$j#>4FR<9yXl+$CN7C3yRlC_S;|$QA4Frn< zqs;V({Hxo0b4fV-zsx18=KtjjF;(6`{kQ>}W%K)!gPEC=>Sx_b=^!}%WK#mhZnh@p zZ8BMuo+s(NP{l`iu9mP~1R|R5Kem3RCbNM2et>yC@++Al4#-c~%#|7yGFR(+>Yx}` zpUKYUAeJE=VsoPW)~Aq+I4i4ro3TMy=g>~FJXgK<wu>bK9YSA;!$CwFnU zry9$NS3v63L0{PG4|F&!`%b=KpQfU#@D%n`^f~uB9|(q zb2=m9=iIUT6rrD{H+dFuto5Nr_H+ve2Lv(T=))oe({Vve0#i#5Pr^}tSf~7E;oI={ zpxclx24E9ln;86~6)vi}jX@Pr#*Dq$jlbfZa7B>Y)lGU=h&ki>UFWf&%JH;4f24FFu z{x`!|@OJl_31Ikpi|Gny$;f#w$Hs1h((7me0CZwr{i&0k-LDl{Ncd@H0BAKGL=aXv z>d!C$n1+_xmovU}s*L;5GQ8t09ar0JRMT~3o6H3X3R{(Xct@_MZf8rUJBA=`>;p1`sMR|zm(&8)bli?-kF*y04x)kbn46;~5|$nj-MZs= zx)uuJ3gb-m$k&rf3TicOj5F@ftiIQpf;&(fw#(IyBa#leW!;75pz*6$A!&4*?HYSK zR8oJ#tiG<}3=e%cF;L%|57PM>e>?4Rdc?;?R;$(Pf_>C}ZvJYQAe)=^3rVBt`gfay z80Cpr1h)gH=Q)P@3F;nsZvIkWAR|SN<1DvHrn5~dC{TXr^kHXz0e?#tJN_2(r%pS* ze8i=B)+uH>^F=U?aot?&nZ)aZarlcT@d7Z9EgPzCio3|#<$;37oy3=%J&n8TRv?VvnDw(i_p|fk4blqoSiS zM)N@Hq;Z{LXDR~*20%{QgksMdl)mr<<-JQSfU`rMnBaPYbw#o9Bw7gT_a-cV^2aD9 z1}?7sT^t=o1P2Q(tw=!2Fq$a4K0bJ|x?-`y^sU7kI$L;Eia9-S61o{#Q1RqtrT9fL z;C^S^cAv1^}^>@|DXt60xF3Y335t4m> zu-xM8RH_^w6Hu{G{M6*&T?wC9NyMO?HzVuP%R4-=i&6-Y1gQ}VyN}3@j&1<_gmpS; zEQ8z;$6+cn4{{+J(;OVxPohX)z)~n+K*WwG-Z(H4tK6Bb^sXzgIBz)ZxK59E8cnT5 z)_qy2ONqq~Rv8CY@be8c_pdf}_Mdil3&OOzFBWb~kIFMPn2>>8_y{!)r~Pir_Wl7_ z?1M&(;LiS4N?158z7w4<{y-Z9_($ajb@0U=_d-N@dN}?x>tGMYVd!7-;;W8Wf_drH zG&OrtQqr`24p{b&izB9h^8p}d0@NKH{B#IJ8{iB~-h`B>rfMy@J6o*$_O4Tukd|Ac z*@1|YGg$f8LyM01hg!kmzoko0h8h2mC(%w(xBnNbazi1jrd8JS4rQlnpyyeY(7N>m z$#Jv@!23l*SuaTnOuuwhq@C&TarpiON(}inzi;&oHXI#23$yffB>xDkfPq9$p)tmR z*PXOOmq2EOE=F%u%=W;vVf;xptH;$)aHeGne z>H?gV;A8&Rq=d){gD@~a3A92PC4J$Ghq5P+R*$B);rIs9sVD;g<|tZkb+gk&L5AXF z0%~J*HO>|(HmdL9&^NT#aUgQ`W9h5Y$+qjwS!6#TVuKpfD5H+3j)|E75dQWQ(5UFxX*xZnf_0pcz-B z$Ix2WM9I#Z8)#Ars;g6xlRJO;vYbsWxmKN3P>@sB{=MJ#l};G6H+|UBsP6dsZc1vS(zI>#QH_*_)n^R5n8?8fVS~JNiq0=5-d9t`q4jn*Lsd$zZfk)~9Er zWazk@v`uAk!muvM3|amNFjh{gPBNNpr#XW2xAgp-(}(AB=`0t!LsShMGTHJfu&_J$ zx5~oIPLNquG^Qt&M|OKH24?uV;cj28eB4bA*|DI{C z-u!8(|M4>(cz6e6UV|Rs2Z;#Q(*_(%p) zo|I`Ng_{KD;V2Zy3&pE<9 zl^Ggk*p4%-!5aa`aAOQJm!nAz!2X)hY$jAv_Lufj`5h=H$$6-shf+a=wI+AwjRcT< z!B9TLIP-;SrvOhwxG*IL?B=5%nuaDVziz-q!@pLWordtgOGzf!PYkF=Y{ftGv^pc} zIRvBH4i&XJCZ}UPO|m)nHo7@2T-0TR^KD%>;$*h=9}&p(KGWUcjJdwH)|O3eofKXa z&%uE^Q~z_hvnkSw`ytNC)ovlh^AF!Rs$EY5GkI8E28} za0Z?8lKK*3TsctS`EgX9cJ~Op~!uOwcYvrZ5oe@#npa0MrjSvvFp|m&yp$V zP?5q&l`4Ms1GF^)EN+AQ73QZPkD%6I3cZZzp$TB$TZ zzf}lV>HOIDI+f1R-%>g^ITv~cR=$gsXzA*~`J}HHQ>kuCBM>2{Q-p+Y9^~xou)!+a z(Hqm*&_>>&k84gAZ%R#l0<&t7lyYTIB5KC(g1gGMpTKKcBE;}kiWdq7{o75)&tSgf z(x=s#i$Q7AhzRG0*930c{-LsZ2W#F!@e&xRt7);Zsi&v|R%%Gd%QO>N4)>MIR+>SX zAm<&GEE_kf3w!a#FUc>jz+=xfLRD0C6?(_ZBny@-yrO5$eP0HsJapS&L;Tn)MbiBG zgAtR-$G`Q-8S$0Y6w;^#RCh6D6;WBvI|;f*kg)X~7KY{|`_k~XT@#{JNRQ;sjCn@p zS1bTx1Jhuiv3$TmfD%_IQ@ zi%=**$2*)Ea;IsEzY)l!7>(yk*g;!}pitxSj_E_gNV@%`;0Se;`!C6)IzeNh?k-`; z1YMq9zgHFCK&u0Elk1bfg!<{gY_POL6`)RIxBBe4On_Ay^8ETg+$D@`eu9qj~4 zXXi<(D>h85b+-Yz^0U(gNv~8uaA;_FD4k-CS6>hbq~z08Qni0^V=oU-t?nA^C81t^H8{@WJWP?$^3S zi1^$r?Rit3cR70*e6BE051kJ{eNjidqoIGbejK7?pmBiFs* zd&(69!~N|L9hj4E17)5Nt;WU0T_0|eIFvYmMhz4RdM52-Hbm-S;1p&yoa}JS#c?db zt}i@VP#}Sd-5xj182Ijp|78aK1iafKZ{D=WmD>7+~l7 zUeWQ;EOd+&0U4{yA+lgBegKw@sWc6i>(ud+d++4d49jehHp<3?@Y$^RLHq6z^w_tH z;Cg9Hy!SyHm@GOD9~{Sx#vxts;Sh=qjk*ObKj02V%U`>D@kF3vzTS5xa0z`z@#%3R zVKRJB(ClX?wJAsZ+2$X>Fx6GMuR`LVPzoGSeJ(hI;LvHiF@|{5Dkvov^oEo;V#@sW zS7PP|Uy<8mh*?Jcka`Ecoau7CL*^%g-l0iM2u|szqP%|C35GnjtD5|{tVwz?AnND- z`|O}>c$)w~p*C7BKuGI}9}-E!v#6Cp%n{xy_fdb3Izg|PJ#@0ndG&OE)}Rwpa2XoIs9s{a>PTAwM*rAE=eJ_$^1Hw zr`~#dscd(lt_&v(3(@fj^YA3c=k4$6=I@)WHg`6GuF!bAQ79vaszSInPr@%ihXDeB zjxM(gz{DQWod=jfmROiL-k+Gz&{11#Q+oj)ja!K}JT&YDn~5NOE;br?Bhy<_Qg(io zCevee#KJ#N6<-zn)kRZg6Mww-Ki$J)H4O5}L904@_cOCd=mX^wru!x^aiOJ=LG}D= z6%pKS+S+RFf3$!KB(4@r)(dK2Oflp)kr)S6nt4fTOJ>k;Yhw9{qo6YRX#W=;t|A41 z#kXp#ilPH4zaXAK&|s zQ_>1CvTy4gG*Qv<{^aPG@c;rVE9>^g|CvyR)g4jb=ZaYAeeD#4r=mWY>6)_B9Q!J) z8*aQ|FMw+uX~cOi6#;wqL5pRoE`WDE^P@F=D3ixp4$hY*B=QH5JfR&^fkWj@Py-{G z#Hu8-DxAE_X>;i4K+uvBJF54eI9Z8w%e|;rcaF;{-PURl-hi`2#7M;ROU|OgkL5>>i5Tv9- z8j& z?T)O@2fgspI=^}4(RW=n|H)2&7kg7wR8diJ8-Kf$`@1T0qS*Vi_b+l$ZcDtR!6^}h z;|-N%0DJZabxbDHd%bkPPRR)(CpiUzrlM;eS@}4{tV-eax*ZMU+hJ0hGpfP*_s<|! zk?@Kjm$Gvq#MZ2OC!?X1E|5(#m-f$VdTF|?U!hgPMv@RlF8^eND-t4A=i5#UY=fHqf4dE z%zP~_M#?o0)&M5kSPKii`n2DH2WQnQQ&{19XqYt&69b=#>VK)p2oRDO(8X0M^{V8) z#6QMl9ThIn6RGfyHwTK)u3Xh3LH)2?GgB~%eK5rZ87i%=Nov5uS!HL+6wN_WE_@+P z&C7D4T%9%u*mrlEa>~DdIS^xFWYX0&rnkHu`IPqfmLOdP4f_w`2mx#$&i2DbV(>Uv zzHs=m9cQrK6WM@?cqMNXiOvu9&4^R&xKd>^g7`OGLCAHVn=R_OFwzvmx*OT=4=8!# zHbvJ~vR-}Jzfow~#9p-r>Dk%e?fn>E2{wM!qWgiOgmlMcK*Py-0ys0N-Iyp1jy=w^ zm!zZ?0Lq^;+@5ekKay-Z)ogq_3&LK)7FdjMcUK3%2EgrP59s2@7G&Ql8C~PWn0WHjg23oqFV~3p-RYr`>TeWo_(3KvMuq;gwZSXtO5>MhgbBR z0Bk!@JN#DfI<2vX|J!R0V^`Iz&I;~)vhxfcotyw*DjS`W%Z_Mz!0N)&rM$wW{_#CN zViCwD6^jHZ^eObS-u>IzO&KVZ{y|Y_wCWt@;2E$(jxA?mevKlJh5;e#9`~zNParN8 z5BKo#-=1xJqCg+$m3+z1x;}wrcP2CagQ9gHnfo#MOE!aP*MUL-w>@5Wz^gAZ?$fk_ zt<$bs&K;S^h9()-dvucGEK{b4gG=676s7Ma^WpyR1se!NAAAaYeTuYeC6d=cLX*Q~ zc5KOao@L6np^(#G{!zH#?d)Qt?(3C+{k5$F+}al7zX2xR@3DR9AUXL2EM|CM2fB|> zAuM-Cz@WjqTMwaP^xf6)T;vDVXS;5zs|w@mcS*v455t|<+xoI(%)T%D2JwItW}$Qk zb7*gu&q2l%#jk+#apdCPFcaZV5mWt%x2^tluW)nqbo43ICD?{Xz#S&`0_weKh%=Ak4?Y>(-!^f6cc3(qJ`>V8R-SApVe~Gb2 z8M8anfJ}*O1*ATD=!8h^WHU7tc3nR}hSIcJoX$1u9re~_bWoX0u&qvBEW_bcorTX8 zo#7)_&tNlBviUpZ(4mc(2&Qb`Bj3BxkI6l!5n@6)n8uIye>HGFW;oT zxSQCXin6EN6**EA1k!`t%?jPq0FSHdNB2#*EwUt?tPbviBQ8n!wkj;vz@Fw+{G$Wg zY+ze|FE6$|yQJ&~a2rE}(B!88PnPp>xH#bM5rRlDy4-t4w%ptd$SsGi&QLJYXD|eD zx}$swBJ@_=#J{;!qkWu}aog;&kbkjBN2Cmn1nu(-x_|g+`<;}+a;Z3XgfyJz3b=nx zh&&#GD+Ylfufcdl5dMR?^Vp0;VQmI#WY142k!^F=+;Tkp?CiX(tb3{Ew?Swa;&B=r zl{w1)jkFi-E4m_AhG>Bv($0dM3Zg6Ykk3E?>!`LY z_K!2K6(wsW>2s@X%?NAW$|OJmXAc+GAb(6DCl3UN*sI00Fh1}oD^8UBhmts7^pBeu za0UIp+{7aNTJ5Kq)Fey~B&&cL51oX^FNunYS{D5sZ?jF@(8Pf+v+fkIejj^QnLk@< z@7;3Fu!-2nEL=C>UO}ED z*7~IN{Hg#lgXNCNr^0~xlMvW9j*2Y>*tE^Pb`psZ|ieqp0_c=0DQoj+--mFV_8l+ z8&2_p=nxQMKmFZU9Ak%!-~F|Pwg7crzBKUhz8H6$#AAQP8E^b*3z&o_?R=D9`ru!q zI6Tajzgp@@SMus(SyUE^5*fnWWfKlQzD0tNU!mZWbjCE4VytXM9qqD(UpdrnmDY~& ze4Q=ktKa&zkO_z?UzzG=MB`bzr-HjSy7r6XB|5=Or8b|5TY`}+y1hxf3#?jSut!o> zr?Hqi<)>JzRgv!Hcwu_*hIS)^tHeJqx#yF+YuzbU5v*qazqGdn3k%?0Bu6HQ^698n zyR+Y2JwqtbU`<}P!u$CRkZ)WHy4iuv^Ln<#I-tF8PnReI>4El*6Sv{}40b=uutNa# zi3pddSOWVpuxerl)O$tAz!F*}rlCA|Gmq2J4nE_~TpigmNJ(=-jV&J?N0iG3&f36T ztYyv61i8^It6&6)AIM~y0`9GfMPg&?p7T>=?VTNWby50*%5H1QZuJ3l-+CxAuTmyU zG%@!7TAURsX%Yq%0$JUl{;HurARobqnm4D681`e%e zC~lAdW>uoOKK#=~N)7K%@@oVzQd10jH^#y7P^T#%An@~xpthR*ruX|FhVyqZT=YRC zIp_ozc6T)QbCYTvne+cm2i|wSBNXdGNHVrYX&WVP&`E?m(Eu?`KQD>L;}-y9D}5J0 zpAS}hacz=@uiJlVZdJNCz)7d6i8$>ye}Q45GVkW3g!Sh;Ls@re)&wB_!8s%z zFL;O?aJSDBFlmOkAQ#sPfSg(qnFWkY!m*p|Z#0^pdEUilY>hIi1t=?z$SdX|@?<6w zaakH$?#2Drgoy?9urCx473N+Vgly4!AJ;sA&M3Wn<2tuLO~&_7v*kV2uKdilG5s;j)@-CZY{N+&M!AKICLthzc6bv&Q7 zb})LR^80r=3X#Sldk+cT(S8Tf&(A`V?g4ynYc7vDE{*a?hs~IQW=v5u5fhiRLn6?m zdp2&dZy3-WYOsLEJql7cpv05SH2|)Dha8zt04>^Az=ExFS{c5ovi>J*puq7r>uZ*O zVFA^sO&EJFTjfL8vGb>cfJy@h7#{PGggaYUoI4qfcYFaP;=X^H_s+O1yq@e(tivWzMrF%Qj8b|Y<`H%+IWlh zbc3}v7jesp2*_$3B81k}%+c9 z`TY+R;1380Rs#Et4b2^g6AKT4Hde*yv}cCjf;M(v8r#eDlzT5{!}q*euBC+tltyNh zPgn6*@fhsBzR6eT*`ozP6-IwD55m9%l&nT`4w*muxg1k}K`TMgDi$6if${;%j;}At ze(MrgY7~H_vdMrwCLU9N3CPPRA0LBUo|6Y>U7sK9R(P%z&SX{Ff+TeLH+Ofbfm5d9 zsgi2Gave~ZbyEo#sO@5V8}<2xbZcMB(Qlr`gnp04KeU}5Z*t$ewNi;HWmbJer0co(D+eE7e>gRtnNHkk{R zY*3NE51KKN(eZD@q0rTIB3=Bwf_DZeO@Gg7WK+9q6lv{2_!mo3j7IXZcnBME2lEcQDxl3uq;8HE2lb!VnF>TVKJl$$B)d+ zSUKTaPZg3}7J3-nACD?4v#<$dx)hizTSk8q2xv4_z}VJ&csTAzN=hGFH9Ah~fz8+Z z8CbmZmRC|m)=ybZQIN(&#L!w~D5X$+L(KusL$|twGUHf+8&NnI4tv$OJ`UsXiy2T8VUY3o@qpYG-uV;y z!K#520)6Qh&M9<&)J_lp@`vIxRiu?1yniwfkN1K4_KedU&4nTgr#%Gs=uB4#zux}D zf=J9f3p6~^C@)_8y2~}~e1_-y&h~$J=+jnKwGpZIj8Da#Ddeca4{qvSljVFU&>%>s z)Ib75)xJN4JQmCl9H?s??A2c&$PwUx;d$g3kM06Vd02dL%;_-weu5H$;#2+?njnyG za6JissyH$zAt!Z{9EI~2n;;M|E10SfYg`fdDiS3nZ8A0CxS_t!>M7r>DLpkF2G3D; ze+!I2uK_8?^-LLU;U^~UQO=N9pm4_XR2>($+-C{4x)D|1^();M+=1-r!w*Uslm48j zx3{d6eH!KKN>50u2S?4%J7932E&>vzn3I{%ZJ2=(C&x>^x_m_XHz`E4$p6^#@D$T$ zO8nc#->2sE9~b}l3f&JZAgmTd1tqXqi-06F+-UQhTnnIcS83Ar2l7o!L=m(9AhaEi zNu;&q*itg`wbmA9`M7aj10=0g46$*=ZSyxdA|j&26(TUN`Q6oHAn|Ho=wcem3`XdM)*x|3|>(8ME_FB;VGvY{xbz=#&PqBSZiE;av$q8cd~ zzQ5@#VCxu;$;-#F^eMenS?!b3CH@Rdz%)&_SP@Xw#4LvE+mjNwSPFW>U`J~tylWsv zO)<)Y@`2F~$LC|uCE9)E5VEFJfw8n4KwJAfalzCR(jgP|8)h#Xrll;?wzdF~r9PXj z1-ch7;5MCjJ~9$~ioXWmzpqg2Wb+Y3asltGW@%Oqag!HzKTVgpm(0Qp%y9hQJRRq+ zTi%;2{A*S_`ulWG@d87>S>Wt= zoQ-Af>g!A5gPF}%&c4qY_=r z+W||fF)Hg==s__$ys=zCzOQycR!?lLi?EE` zHNa*JF4Y7=s`j`)mFwKNrg+Z9T%7j7fw1~p*~EF)ENj}ZK6#l&)9ukq?jlej=`etCrTs*6XW&5 z!-ybn3SKPH@#UY(=t;Z-B?)rNaokQ?n{=w_9YH2?e2yFAITk~aA~vap15Rl8S#j~9 zYY=lVF6G*e7*kyE{RXhV8Aq2Jw{7K)yAL{v?!^VLr|B*I4h0L^ulvQ-6BEbf$H4A( z?_EH4Qb~YdPZh?sSBn_f#O@!q2LYU~-(F+JGi-q#hTlp-0hAz-gWAAE>p=1haFPZ; z{#Dz6Qspc2<_(p$z)iTp%hba22{nm{UtPVTJHQqaWV$uKpn5?A%_;jIVw>Oz+&3&Y zYulTdCWCWl8`!_Jolx;3F-cCxTyRCiF@K^!@tHK$%Q6?i(&-+pG19Z_95Fcld%T+^ z@_i`(gPR~vp^V(!ojJ(B41YJ#&C?MmQ*v2ZIe_?<7ivE?p5&_z90~FrgK**YWm}Ln ztgs~2^peUFRy^K4V;J2d$|rS1g}VC6e$G8ULkJDyiF%c5JHM3ufHM6|46j?EMoc{X z!G4jo^hSaV2kird`@K|?AcUaK?&7hDILHwmf_%MhF0?!sC;}|0l7^jdNS$g8Hx|z@ zFg@Pu>bh-YZpK!GnrCOG-Od+s@%*HHGavdkb*8avtwkWK#y*C3in%hSu6b(ss-uFR z*v{VBdh%;OhkduNz%-{@HB(KitKp*~nI7Vu*%-#kB%|HE9_?4u87x%AE;~fWBImJv z7PH@7#sEDLpKl^eJY0Kqx}$v=u~1V0N<7)*A4Ns$dYqpV`O!r7r9YyX)h_%S$=god z3PY@5kV+>+_83QuA1XZypb|0q^qZ@^O-dA0G;)!Y~M}j<*lm8m2jgK>S0Aomu$H5n&nZyiCJ^ z)1Eciy*mL)aNUF8#m^G|_AqtXnXUM1VhZ{~kOW5k>t*UoKlhu~N|&5L!F^zDM&g7C7^3`^)BZxKr|j?rfMy%A?u_*q54+7_9!eZ0ofwEwRVxdy%K(R$`H4W~0TKMpJU^;43 znh&BvNl=5{UPIM{RA5JT$=RG+Py=;IyJ;{H#}G~kk%0$C$DG@n5_~1$mIpNL7fq8q z{n+;v?qkgz?(QT&jaTbt>mYocvj88qMTAG3&JuxfuvOzAS}NH(o|*~iDAPa>{^Fak znkmZMe(#p7F}n@_5)r;ClCezbau+HNlSZ9K+brC&^O5N|GzU6AKiA-K2I(WhBk;x` z@^*HyKCE>-(mAhU@5Dqn*FC5|-xOtt{d86bvl zIIqh9r$;upS(ALQrtxHAe7qp@i=SUZX8j~~yL0Xm(%_Q+t>Y#aNUKP&cKkyXflAMJC|7zWlSXlu6h7GkFX7lLW|vW8rV#WYtTJ#>g?;_k^B2 z9<_s|wV8NUy?zfByr~$DFi6^%pA&c^6=QyA78GO2XV|y88pS|J{1}hva|M}}k}%TE zUeOcg-G@I&WEDhR2an(5c;ReKEbP{MVxZXEza|x4V_G7*-#>s-uQmKO;a^w)$pge7 zoGlKU-#gE^IMwrY$;U8IR~L7=5vbpKVSVL!FpwM~oq0)aX(K0ET= z?m~G%gFuJpn$v9w4lJ+Sw*sR64O^>o?infn$I+iTgsgc*)~^eU zz6DAak@fD zMF_#$un*|pWU(5{w9V2Xy$Ku!eYv1}i)g(T?9OhcbJR&BI*&$ZAFE@n~9 z6VkqUoD&`GxX*S{G{yT%ahz!NAmAQ;^FaXTSv$%vF54aWF08HxQM z=bWnk4)0*$r{c|5bF&+|A+L&R)qa#%^$lop!HshCzhj*jV`l3}U$b>pdJv9$aj4@} z8R1pu3Q#|pE>>TLl%;HEGp-xNLu75=(O;*5Mw_aor?$fBt|H zxgftFlFIX-U|Sw9qpzNw=tVut9&Ktcz{H z)T*tR<)`?*TdDubc_)s`;xgMC0s{RC4-^CnxQu+(@HSt&!F+2~hMe5|ZSmYeZS4wpJnm-ex%!-H$hY;ixgG|Mr_aWma}7i|UcBIjbOaN)6G0u6Ek-}z3zQ6H z9qZ^g?U9`=UF$`xl2)J5sMvDo+&a}}W@hih>BAt4gHWKrEvFTW6qb$&Mo1a%~h+=S7jIjjBgn|scl>k~zotggdRVS{1TnKFKJ z5&bEGgy17mbB$kV;>xcBC;5D%EWFZb7AYKf-@iDY{9I(B!rE9yVpUkUvDP0Kh(=D{ z0votNlA4r9C*|3dI2URZJU+T|yQyVv{D^TA?1Ea7U%LkhR_GOar9iN8wi%VhAa5>|E9}Aj^-}4WCbtrCIo~KC&)UF@ zP<_us_qTo1KW|e>@VzX9Kd+b|mRdRO$HB8SYo(jbg*PWjn;`jzjIA0D9ia{-9<^SY zg4O!M_r;YiJ2A-mQv}kTvz*>{hHQ@H+$3(ir?_eCFjBbQ7lB(PeIuR7^7n1UolWyo zlF4bDf(V~|E6b9O7cgoC2SpBU9z5K1UF~ucf7^e$aN{-*&ws0P4qejb_jHmUVEWDZ zQ|?U0^LD7tK$E1(c4u$@*S4`VF_+^t%?%uD-FY!P&1TO0S`#5qItklK0fNDQ*rvON zkiufOF63F@e{U-N9lF_msp5 z12{C5DzUE9huaw0Uo3Z1$tgvIrBiT!N)-6=r7xRUXAIZ`Q6O~ba(w65Z!z6_=9sBY z7&3o0FL*5=(BE`fvA;?Ke%c{t%hS;3=a(~L+Zm{&SjX0*2=e&-Nj2^Vt$7N9b8}vZ zKJH^UA(=xj`}{*wmSY668hi{c=*H-j3tV@5H%zZ5ak9W&Mx3?Z2(hao=CK&dgP$G{ zciokhyXx|S3gJ`X-#@7#RKoZ6*j~z^5x+9u#pux}zqISgZ0gM$f8^8~@JUbW-pj$4 zXJGS1LacLX%tM|pk8AQfinjIZEGoW?)wOAY`rh_p1hgU5DpM-uK6<>?NEWmkWrp@U zHgV$nn%9F{tN1&-n?=}zGB(S4n6nP2^8WVlhA*THP|hb|P|(^@SyOgv$| zvjfpa)ID&-q&KcexaFan(?$yqmDIR>^Sp}?6B&nox9Uh!GLNT%PiBgFWORiiJdM(B zwLdQ*9-mI5e$C5UqfjfIlbBs5p2MUYYTu)r`$NW9=P3Qs#`I7fwXB0-Vq!`qSK}rb zN>Xrfel!kqZ!%oWw-%R4{LH7O?Rr*K<~*1=v0}|@bnJ04+>Rt8*x^Mkp6akMV(=Lq z-I_&dMkHG!Pu7SLs+c+?Ya|=aa!cvoS?h}rr?rn6 z-{EV)**eC1FX*=ETTmbqz-nY*#Bwn++oPIGM4!X`=+A@r=Xu!r-!m}=#g|Le3w56B zGktQR{aTObP}_0zmikO7KCO=3Fi~3O9yt$_>M#O4V|P{dN)QwaU*kf;Ke~e2a6T#a)>v7T{Pf z!{=K@QkzlN`mf8EuS#+0GaP07y%bmI%6BKIROhZqfb3~FPdDcfH;w&$_|uHW?U{nJ zdHw7k;gVYk73V)R3POu@W@}V+<#n7#IxAsT-2-i{{QXJvT0i4tZ|OkY%ru%tClK3l zebP7LuX!+R#OtudVc4rm5UMk1HFzBPI6BX`HxaA*!CTS%a@Bm5hxBthwZ}9%nfWV8 zpK)m4bACKkZ%U&~a6hfdApQRR&m;Y(T<9Sz;@p?*N2#X;Pq>Np!@)udkJR`Uv~V+7 zGKSIl8qr=M)isvjaIR)CqF3eW(4?^x)g9+gz>fO+QHy2zC5H z>W6`HVhGiNJb3tEAW2X;%cBi_)=l(LcNCS>2`^dNt^4u1{x1K8D+W;noum0W%(c7P z!s{_HAw>r14Kjc1fE+dowSLL* zsTmO7!&kM2UudTg7Uuk_`BhkP5r|izzy!UR$*w|R-RdS3$P<+Qj;DQ$>DGKLLgbA z?$Jo;kQkEh7e73jpU2h$D+$n|EZIn;yb4|y1i&+ubtt!=j!}ktOExP9q;dA!j zgKTCB!MV$w2R3ngW>Ind4kywc;`gVVxXoAXLUpZlnqokx@bjaS(ST`Ac*Dj344*m9 z#PVpdY%u{og;K@CmU&xY#b|Z^d1Ao7Zl3?VQAFNVJp+jQ(+hZ23N%D3M{BEs`LDNy zWJD#FnU(Timl}4V@6JBC7#&Ing9*LvMY~XAEk2X$+G#haP_1+sT+TV-qA zPpDAx5M{e`E=4fohE0B(o*H_C&twkWd!i_R&Wd=CI6C`j>MDEeXF);1!VR|9airrK zM+ER!S2Nj>3McBkYMSao7;Xwen(@yKyxFxc(Iil7wAv+2JsNDfeneX|>K+8WFEupk zZa9a{ioOZbuKjf1>iM4AnIbP=mUQ&vQmPE8*!$E4E|=Ti@o-`f%?97Qxw#>~eA)AX zG_#=&c(s`W#pOF?f3ZgqijSXSvQ(O8qWNe4p3=A(RFKz`|A{Ul!c2G3+$_xJ=2m_3 zuW`@B&wX{-c3-utWr#L6(WaxgMMU!JRf?aexb#2O7W@{5f@wNZVgc?f$!NC?3mGBn z5mL!PuLa5`o%1CC6b_rP<2EpAROKliaR@1dqv$QrvOKU20f)ynWPf`3tk#iDyl{pW zaP=Qf+AaV7zLr78d$}FNDI<6*%_9-u2>r-oN5^v=4p!6onSNCiyU#eTaC#D7ej{#C zGztIE&Q*A|v}G2_QE+Z+`)#JCj|+cx7ByMWMYI#tC8VvqbyY47X8CHD#;4zIWO7GzvW+s>!%Jyn{e8mfg%|@A->~ zALv}i@kageGN|+4%ZzLGmX`iA^u571084sS>7oeePQnITeKoTF-uze1%A(p5>J|zw zO@f-kRaJbNHL2sfBqaPVA%bQ)r4Exa zThPtjvz@sUg&RMkkiDX(t+}pAwb8jMurm9)%Flefyx?d)rj!3U@se?x-SqNcild4D z$zvMj!upDkKA~r~{GOLTGiRr(E-ufbinN|66oSs8>uhEtGE78KQ1@gc)Tmqa<7}G! z_(z`M+RVJ^;&)I%2$!|m-qz8gZd8*g6lZfL=+J)j1MY+T$<}(TFug1Y z^)QM-^EP2GR__s!ozn3XEhS5yrc*CXVxZ_laQxSH61d1;OJ-k3J|inBgjEv;9yRd6 z+iI;OB#Lu`z7AJs=4qtI@C*(NV4%*`CJT8i+e{o41LA3ff?$Q|NafyOxUn4GQ|>GXzHe3t2QEK7Bj~?bEtvk`bb*R%25t$f z29a+jn{y^!x1#6NDIO~6vJIbhlj{D?F>{#N@-g#^ z^le+IWTsHYw`=UG%wcBD`$N^o;I6X(+)zR=WfLLf|0pThfRNkh?J?EIY-A7wFT@%N zfo{dXhnh?-p-iuL*(`gcG2!auf-UpSXvmfatntK?QKMpn%)n}}nox({`KAunJAT-t zcfxZWMZSr=Ehw6%#`HGP6MpfGdd8OD{_q8z@NZ+@YHPX4$GC$GiuKFjeis!JeQv?) zu|7YeK5_)eQ?A3KUAhAW%0(?56;1GqY38ZNyGxKg@1nid6`=w6K^EF~R_0_bWXZwd zy|ucZvU~=+qQS-Xp>x$m8<0Jwv;VCJDB!pC?q*x3NvXtqE>k<2%z=A)4w?bErmM?Q{_VgTU-?>BKplZ{#db zPn}}WY2uK-5hT$DJ!6_4&X9vS@7o}Yzm!6b`TKCI?|nl`JTtD{TY@aldoWzYi|-F~ z2qB-Yv)Uf-6JmE_Y>eD2W1aN%Qs+fA!RtSOu@(GKL;~5cR2^-un~S=x*Tridzhj&d#3b5~8D_Byzh>^uE)D2v{BtdI&6}C#?;{H=1u?XdtEV z8=v2ew5hbYv_crDY;v6p&wnwB_vcT}oNl{s_{XOr&(?c9Nj8xsB@_BMIC_u{L`m+O z6IkmaV07=4e^ngrb7`q{^=#&tn8)6$-tFyEtjM3C%{>>Q_inP)w?x`9C>I7nzu&1 zD_iTo-SvN)!tQzYYH8-WR4hxw@!4yMFKy{j?NG(n#fzNTx52{fWNN0jZxSSxEncIP zf6TO%@lTHpmOFbP_x&)alB8QX_ru1%(_tRG?fWbHm?|mUBbuI?U;KdrF#HD_Y=*t@ zj91}4n_D~wg36U2e#wa>Agg4GQh|19Z??u_T=;h)RYF6+GpQmJTac!8V|CjEzU8Xfk)fryN#s43hG)Dl&e%kKgyVNDVFKa-Rea zh+~jNGwR+~g-c}Q$cO)^5X^PHUdPhpt7}Q`*zk1m%K7(z@df3f#eq?slXmUG#N5GN z3`KjO^Trr*e=5pDdX3WKVq5IUED3P>(++XzV~Y$mJ{LRNG;8JOkH!v@|8z|XWzc^Y z&C8)!^Ya~_>+o^wn;;S%o97{U7GR}-`2d2Dt6d~==JD|J=j3F5kNk1*ldETNK|M=L zHq%ixC1&{#_m`LOQlL378qw!m*v}tuXAl3Bx!O6-0aN?4sjSY;=pJ*3Qk7!GI$bY8 z|Ki{+WQDFl$z^d|S_A5Eca|;voG+S1H`&cLIjnM%w>9MmVCV{j=meZxro_+*K1o3><)wQ<$V}4@6Q>9my1VsuO*-T zQfTwgtl)2z`A)}SE{KW_HbOIv+I%WZ>g8rPQ?4QL@kfa~j)!L{s`C=bZ1zNW$Xc!N z4b-iSk(a^KN3fAEuWQtC4F=1Hmg>Iisl}i4LX@C{oBO6SZN_|Kc?OnzGLD~67tncu0wTI zw&xlx$D@keA!D%vU%q^?(rB_;{b?(2HG2*9)T~NvoNH2xX_^_T1K3C{6lD;iOcdVlUrn^@mkV4VN|eifhd5 z@rl}60L}26$QBgy+rqHIp;P&>61$^M!f&V5&|!`j_nA{9z_#)7-IG~-S-4-H;1-vI zVdQ{d=PWU|_&Y^_3s|=8HD$fq3d9wvZfOGLarP2zeY8w&NHHUA$hT0T<2j=r^gMDk zW+d3*#aB^@v>)x7j_bkUICOZnOg4IwzfqzXbzcQ(R=%N!dc6fOSei=C#bOzYDzo-f z^)ALBb5AV#?ienY{es@RYFZ(eUX*$Vd}igx&Tl%U<4-q*u+%QgdI1(012D>u0Z2X8 zq0QkBuVR=I|ALhDj~*cMRWgs~b$;{qNzuGLR~aR=*_o@=7T0>Gr=aB4cWV{!-Fz&s zDB5|i@wjc2_We&^!Bz|r-P-ws^M&*WZ=`h_ko+Y!zCjBlP7qP?dF&5AshNJQB%NyF zvX9BHW{39iRmmtoLsA~MeJL7G5ppA<@{cK5j29F`;&byiMZ)XD(9%R_u&Defj!rge zCMG5-oAUKKwwa>&hxkei<8;naCssxq2FXMbqEs@Y__wJ3e*ad_&sX71@N4yvlTKk9 z0sn}5u~%fCbG6c60?}o=7#^yBBYaS@aWXaVK8i{AprazM%DT}Z-F~2d$4q;q#z?j4 zbr_}Uu7pr)*h^1u1#IdpnXN#vD&d7zpSK}w_<5_3KEdkTR)#YU@q(H&x}!$KWe-@5 z#AV|?T3*L{`9zKkzQUFli+@P2=ApMR!rZt$Sdf*H0$Y*7pLWC`o{)N+Fi2x)~{ZO1D?>$R3^R+DyyLiL`y z$?m)9)G}i}q2@2vvB)iX9b_Y^`&Oiqi~14Kr61wlpD}6a5wyzk5U?!GB$=*^V$z)B zpGU?ZO@!*oyRPDxYnRO_7MGTGXdv#E%Mx?&JI1qTFx(1s4u^o;9js5dpkV2?`*Pe( z$i`;%|v~Ged$eHp;TTb%-bRO@3gS;NwO_LW;jRLH-#@B~{3wxYsYfeuf2%-9= z(!MzVlFu>!O|~o9{|lm!+vCXy;-m<;iwpAQjC;PJ2YuPggJ zi?kc;+J~taH6Q^A>b!%{tGVk*HWrH$^+(nzwIO3BVn4{b=Ct`(f{cH= z_6DG-QAmMO-(W1*#Mqy zfhE7kUgY=z`OkDehyOs`eEiz9YjOLDv@Yx<1mdNMQKV1kwhD=*wYLL-B0E+6Q| zz)g9+Na6GME}zXeX3%~nUhq!^$Q8K7-H!Y&#m@!@i*dT%n|jW8K}C;=QN=SzP5y-i z6ce%;ab6krFZw;+pQCsDGAV*e$YwnJfIG%A1ql&&@3G{1>+7f4pn1#_jS1%B=L=D0 zWinVdXi|wPhe{HJ+qi7J$&~4$j)wrt@lC9y{L~LmsgbeuwI5YljjU0^Y0ZG4}vY;H7Gt98Q_ndPoC9pcDBpk0mZ^-Sb!7YCtUIj zY^LhD5M&v(J{gYZYoM;iJmdJF89Mh$>#E(RN3}5UF^gM&;*I||mdFO5htjXI!sbm- z8a^4HO8p2Q?9rNxGiu`l1kDHfNiw>l#eSFbpzh8dXjHA5oQrc5&zr~%y#XN0ypYpj z`E-?4E05x(TU)IZK67x2;Irh4EzXHXBdMQO;dDjXjqJ|j4h;GygzP^R$A}WR8qc4w zNx@fwnmQGy6WgVR-bBj940+h_SqJ*@zfDas>xRG6xQU-)n7E@ za-^=VzLXg~u3D&LKaygx)}QFNf8*w)uKvbl)(!@pKEy^ARr@Xk@wyUMf z9Xb1WXcly-_};eOLz7fOq{+NXA-TF}OM5340Gq|~PDW}t$JaWKGrP^-$cwqvvyvrc zBVMQt$aOrPZ>%0dCt~{vhmctpc&@K;fsuB3Z?z@LO$P0r+M z`)izR0GMA|= zslW$I1MMQ)k;u+(i?`_Pshy#uwV84lEpsg;I_bvau6%fPu1^5Nw zr6f_}7^KA&B^DFg@1JREvL{qo@fjaFpy9G+D~@fd&y4!F9W66^Mekd}uaLXrLSN+8 zJn!7a|^dgxsx6vZ8ZCBc9~kkzUQN{hUFwo4Et zKfg*r@WqsMekeK1b4;!&ku>s5W*d)KrenJ7tj>$Lmm*2qwx^?!;-M72uQ`grYD%yC z5Ap#w$0iKBkXegv(hJXl_0qpDiNI7r48&>M1XLUoU7135MICPE)v-6N09+X=s)ORtTQN%i`!H3}6TD-H^;?t zO|0?vmtRFG428m&Z6uT3`xnXZ3)C19(sXxfT$YfC%`|lLWM{#e+)SYVmp1%{&tob- z`JumQ$ZB=P@lk@OqF85Rw`!4EJeV~iR_G9f+<2`|gEuRLG>RRljFn2v#~hmqS|Bte zrA9{`$v4QNFwga`p0`t)$oauF)RzgB=C5 zNpmeAy(Agtwmo=%Z6I;jb^lhu-S>WG3LbMJxA{4AGX)p9FX!XF@oPPe%h_|BtS(fU2rn+Z6->X+-I6q@=sMTRKES8l*c# z=@ta(Zb7=GlKEsn|Bm4p8$sD?&o$$HpIWj>Cl(j?8YMdA@Jq+0azS{} z+o;5X?B1c@j$&}*JzL?(HfL%d2Eb!3d2>3(_J{g8ji%it^h5T9(+#Jq3#GS3sj2r_ zU&u`5uL^8FqTtK(D4{ zv<9@tbuRqTj90;#Q3=<^5Ed2NmprfqPWu5>zUc?5p1&kQOwb>&d<#D^cKjrIhQauN zm*qEIh6)iwp>9v^e0cj0V=MSd$e=$oU*lSiu42jcm&PbE4RS;a3GngOd`CB+|F?qV z*GFf9wh0H|rcF4G1QYZ=7S!Hn$d&x90Dw?)^N+!MEj(sNar1`fq<9PT$l1l8Z?Ey7 z&u{e57yAL$|3@zH>&3TP3=neFVhsJups(7~tI4BSb!5EQYg8*%>tfU8{`uoKIf%xu zSfG^a)j#Vh?3bF@$tZdiit~20Z+#Fy4}JY|9r zw(q2{&+)HM_Dh=ynd1!)A$pF7E_P4AYD&2ikiq}w;NUgM5WbTjL z)UiAjRAD~~%p2+n@Q~}(EjCEyRotJiLphMb;xXIK$m4jsc1^U!ZeDO2-|%{~9Q4Xn zqYa;vn-!y;70;OTM6K+8;|c~N@(Kz{{;&z%wkN7Wz40nO6EK9rADCC^*y#Q&J0@rZ z95854HY!FcJd+r}Q!2J*YTJ0i{{a;D_YEUr!hASGRB^MxM#Zk>Elw=%En|UZqxA?k+CA z=0d~zILeT(qHRvR-v4po=&dZ^Cq*u4r>1y*_Qp(1Pp^f^g2vFkC*^o7vU;T9G&ck2 zUha+8t!*Y~B>v2z1__8@F=DY2b~cMcu}UqXxKicf^R)DXuF7yOdf}s=&NhI#06-eYT~_VgY-LrBWMa8>8zuak z`8unThRd(Y1Bl!6pWRPyi_~Tw$qD2u)|z+r;taj?CGGeck+|NYzj)S%w?-u6VDB(} z*4zhlMT@qFH&a1gUe;4&`ssaf9Nt}ojlSAIo3vDfAi`$!ii<}l%yYEN?%d1Y4V6&6 zqU24nNW@61lI|r58baY{5pud(P(MTd$VR|oP5jkK2)kzxN|%cNrEn&~t<%PM;eDA> z-=}H^>6~c6R9eTa2mzZwQ#7OJIt}EkzjXuT8ZdyF{7Vamu3o5nUcXw%Z!wl5wq3PQ zsu708Q4CjogZAVnpfv>FNV)vjowpgR4vGJ|KWx;GDs#wSQYHR|RC@c9b??tj6_bHY zE`vdi1x6Zh6mo492Ug#yj@FLk0(n^IOu5Y*8{8j3TLTujiQzVr1YzFoo*{a>1o-yr zeG?gSGd(F-BElk9sCZMRgJqGCkt0+JvBiq$*_8Gf_IRx3mSNnd@`Rvbo{Wmn_Rs^` zkqsd(`&Id+9V8NEzc-8ThZ4(c2xhCPbgxc4;ZP^yQjBBc(6D^~tHAuaJ33pv5j4&J z;s)Z1RdL+Vgr}YM;^`&M+OE%6f2{MH536GC4$k~9<51M(G<0k}QOUD4354AXhjpF{ z6X!tTQB=wAwGkmG)4d$O+j(kX(&xO;%j>xF-Z~?pUDpSchnqPR3Y!AkQqzB70m%hM z=P3|G{%u#GTu^v1kJFGk($gms<*PgVZ>9>oVse}tt=-*RSj~=rJ|GM{u=R~G1uTX)hZ9zS!*AR*uNn_x1TM((1D1kxNP!m8d;+G{d{hSLZCpPRxfwxBJ^BD z+M4o~%r9R(c+Ka2R^+|_#r1aGH~N=e$T#4_1HC3-BRD!e>^uP6z)gnLHBnR2{Y(LP zQapn`=lM1_GVZhIYL6&qlRFUa0-{9f1H8lE0ENAvjTAuDlYxWdh5vN~;jGPBtW;c~ z8jE*0H?GRHb>rT`Il*Mb^&meV`)zHNRc?vPYPBq0s=eZ33<#QfS$w%H{&x1Pf9lT` z{R#o>Nk$0Y6S8S$D=kLC@QQYJ^|!<0H0XTIzh&f2-R~oNFYjFs2OfJiHa70h&7G|8 zLv&c3j^3EGI+*+bK1mucP2zepySF=2Wqr5ZT&(^0sghelMsBZW`P2*#U^u<@`|q0) z*)Oa0)gL7_8`B0$!nt<=aq#Zt{=#ZV(+uE*-pL8D@m#qrBnh~8-p%ot%3XF(%;Z`d zotDhn+!RU{bl_J7|L)>Dy*B z*WHchmirWRcc)eLQ{!CxMXmRFNxhz4yc@j{h0|dJ7f^GzbqaXtHn}LpZL!f$SXM?* z48-%T_j})WJh+>>SWiw=ktgJ_d^2{Gs6yp^@7hr=hPc+79M7ih1Vl0Er89Yl{kt>I z`V*0{O=a;Tq6we>7|b+iTHgGCuSSCP;o(XrhxppW5=dD}0JT;PQ_UiMqo4wCGi%Lp?v}(?lbIU8m z=9@iOAbyZfIp3UZ7eDR?o97kp<&o9JZFQ~?)WK|>>j=>P_ox*?Ps!FG^4hjfLU-b2 zsK=M;RDyk4i$SkWHpsg1pmQ2eeLD7Mqk|dRUEVvLbR}i@ufYgWk%Pp8r^oVIWI0N4s4jh zxqn8li~X55L)+tW^l-ec_6uDSJ*c-toRlhv6=o^iPULc06M*)(23lQXT2%*I=|`&; zo1K+1=boOO3Q2Qmo4Kw>^+a4XL><~EO6vnDUT3V5*9NUDp6`&>wm*;sp_ubYx!!zV zDzcs$q|>PRo*2{BCM-hikFvXv#3iF{iiPz(O`C&syiT!6T3CY*)%~uZN$nau$jqrQ zp5Ao~rq7dTzwjd;iBC8IKQ;!&PCQH9JrR%VjoIfbWFCiYHNXJ3&xh-6- zlLP&OUE+)arn8|Y4uOmEuT;n>& z`k-C!tYPEqsJU?wus;TZt6PlxcDltT1OfsAoYfcQy7dfmdvlHcJXK=BPxprlQDftO zE=Nz(C*k_5*X8s?a>phq)vER*R{^s_Q#Z)<0t`O0y*bwMr z(V=S!?0TX`j#4`uT+VcA>F-148*P=6)tM+*yr{`lo^gCf|K6w=#XEGDs||CH&HjRY zb~kv@5~#tJG&Qv)2AdsKe9<~MU>h9eQC`DjKonYLEv{55o!yLc@lH0^#viOFk^6inhR(GdphPKzgo>R3if(d*EU)&%cL6Yo z%WFQHAT^R4-I!zVWv4xc` z{QLA`|C%<+^PAk(=%Vrmb>T=f7a138*7Qff0ev-zUg_qs>DLAL(-OVf6Qx^mqg>hT z$wsWAG}j7~BF#!t&vz$$SIEiyru^P8xCu-U#LQ2ug~HLi84mU2z*?vAXasfPW3ggB zs7{~KDYJUFlDZ&|QflK>j@{&?ltw53E#DO?f#F>h>~17)ts74D4QE7iYO0F;Y0i@{ zgncXpLV+P1Rv@lbI(j)@aJDz?do?~T-$<0s+84!h9&UBt;=R!Sc|kt4ZgW5YWp}Q^ zt;7CYI50gFp%y4Mpba_$4k4OXr_=7IG9SO1on|v!H(D>W_bof%Fn5xpUPGwCMZet(~6Jr2q^_fkW=j0?<-ag|P zEj-_w55#|4=eQz%hR;Yp&kp$E+Tb`7d0e7R?&AKPtxx@(AAdoSlc9&gu(QgB}Ck_gi^BR0`uIdTd!X5!nlj z)Y@O{>rQae6cW2#?@I`dP2`B!%1S4SXW00q2L%)Yp;#dEL|I%A{`uuihpFw^&Lsa= zn}~a>E5z(K`@a623ZJvF@=u=^8P8OkF=wFXL?AFgKb6?6Z8Sb92Z@8J7oZgaV zv#8pk=!x~TdhbN7S#^`8xnR;~a`o8w`Sa&leh4p-K>5)AEyv%eoHErDB`ncaqT$up zmRVhv{7BgpRsG#HYI%;dTA`_(3K4lvOtT;m1XkZF%y};ScELe-h1CD#6Z#AQ-JrnTm-Q)}xuiFWH{|l1dFA)3>8JorU2lwT6?JDg{F@wT0 za4z8`@)}DQ2>|pz@Ld253~y^ft`~~}BO{=c7W+FggK~I)uJ1RFkxqh!jpl>*K0fm? zGJ@;ReP^@#`4=K^OKfMEkHYARwfG&6T+Z-oD~oEIQ{9T+R$b_IsxmO3hGDgs$%12g zu}&>uW2X2FdSFZoXq+w!D zc`phw!hFNh0M(Mk5Ig(0g8!&De;4tSdM0Q}7~4R_2Gvb4#~WPkb}Dj(yioUm>)o_x zA!&=l^%mKAmY>`6=yeC})|PN?o1@s_aCUzRcYYE&XVF;ZgdksKi zxzJC4^>5PJtwS%@WIr??ESoaDeHY$-O2Ux%mFCmlbyQ zWS)Qz4~bWGE?ras_mjhv$^Y#aq0>c)1-hV|bdX9v1{8arr51s%Gv^Nq0j^6Er zXF>u$In1(25vX;LOGI;@G4L{5s29V&?FqyEQY^90^Wyqvg)3_#9LlDELqKBh)kffP zt^(nFv-j*MPKbKR=DbZ>*JZ`fbyD#^{1`kwn_YM7?X^6iTI!tcUE8^GcdY8S3cropIxa&UT@uOaqyo@vZ#6u#0e zWZY^fDrYOIQNw-i%x!VI-u80f*!zY?B&RoIy-$dax?t+I%3KV{z?!w29ve}sW^I7d zcM14EL3L?75Q5ujr(z21vz{&sdN9BpFyG&AedgDZz$3k#>ZOB!@bia=Ky&j%>Gg8Y znPPuJH4{0xLmN?ZYvNyBj}Kr{x$G0AHFYk$?u^}!Irpz!78;z?ynSjx!3mUC7gTAZ z3~y5SJP+>~;azbtZMQoedrAvv70a0Pcr!U%^$yA^D|!;C7-t1*==zfeZihP%BgxR> za}Y6UL$Awln2o2K-LZ;lmNb6bl5fAdEY<0I*8-7xEIKtSooa;s_Gc9?i>19eo|=$g zYMG-`rNZtir!(NMSh*E*XEudlg=V0k+fOu`lWB0c4CW}&ZS*|Owh@@Bc5PEo|CHEs^KF>9yqsVJu?COi~XN}l7r&IJs!Q*)08jK0l za@THr7B1dL;>hWEf`ejlC-1k*M)--R^WP$jEgnt&+vOgVIk#7>D@WNOR@_eV zM0egW3aR|`N(D&DzS18HBcI#M>vYmYXg>lH8t_OdaaG+(p1f4)7x!84-;`t|u1c?& zUc7)Nl7+e<;a4;Lc;n)-70OZUWoKF!(h;QhHFR?Uupi9UEh3Nll359DI?)7yp%maz z4`Bwu4bKV3V{`A$8uGs?y|O#}`Jycy=5&8t%3F6G2m`#lz~jWTJoueEM}hIl14w2; z@BsRIG_+vWTa{;xJXLdbm!;NL&4U)XOo4&#`ag3K5Fl?1x$gD80nMVK`O)!lDy!2^ zAh$i;9X4DcYBs01m?xO&LfVU9fOt$zuP}AxB@(b^g@yg7!f}ItWJs`*4FW{IjJh}u z`{^v*n^Ogu${)Se)^`?wmh>*ZCMYv7$M$Km^%YUAXj5UTc^Lr=K+s{>lP{aaG{Z-b zD5DL&V!v+EbN>qq@VT^q{PN`!3FIz(KwZK}veBV>c#5O!0PTj$2H^5M4bJ6Z{Mbuw z3FN3jg9mJ{dAUN2x@6yc|IB0m7T|b4#-h&adVAbi2_Sm&!ILMzKB5!->O;QS2Mj6& z{J^p4?mEY7`PEQdPH;r2S&V;+rbADEZ3UpxyStR)`x{;0^#)d+Y+EM~*0A!5Lgx0m zx$gi<%-HQ{W2m*!ea30)-6?6&nZw?c1iW2Ko(;OOlwP&6QbOx9fI7ypaSS~xjlQRAIjntiTbCF^dT$pg={=Ak6k`GgQ@7lJp=8QL78k3J zmHocb4qzC)i7!q|9W6pI>BE=A7UqDqWHGcy7)~Ph6OrdvlT`(am!((dsm<%X34R@~ z1N`Mvd6)DQJ*^1kIjZreY`fRrzAWW}eT>zq%c3JEw$M?KEfbF|K;w4}uhA8LqJKVw z2s$oU+gZYggoWz!u5FbIl5i)$;RqU>{*-SP?Ra9XAnj;dL!>kN;m?G@<1!|PfRN~y zpVPq+MaRHNn&8pUI24%M6~cHQx_B_Xws(K0d$@vHvwx>G0FUBBv8ICPb#`)-s6q^n ze$-F}R5(w2ho0YD*U8-}ySXL%&kNi6tcYi zsWUZu&H=B#C)Db#0|31j+<2ov(}2t1@5;8EGA^ENgR= zo)fX#12^oK79P{J(U%Lxkx&k{3ww0dQ)j!=P&ffEkH9e^=8Qc&`D4Ud!o~9)9Qr(& z*S#ynv&_YjlaaL`R6?fFfJxU1)3j-QKtjnrEmYS%pTT9;`w|jIx4XIITMd$mlF>JG z7Thc?w$(?3McPK`qn)AJ_kD>tgy|$CxeB6}_t3zAw!LS|gY>*pD?F!uW@&Dz348Ao z0W&{oP#yqt^po0 zuzEC&LL-R7eg^>#_?9%fIeP$F*)?Vi{frO$L$0dm`EETQ97-jI3i^C+?bwq- z2E<)s78BrkG0N@kdk0M4hiK}E;9Orwue=M7LnDWg9%=ExN|j*oJ{bIdju9h{sVXf< zr*tycsuELNOt1IE)~3Ls zr_0I7*^oe>w9#{47r`qlg%9A$mf!vm_}ROGUp&} zIyn~QIF?&u_-|psIX96-)$J=6oU=J3l=PU-}Z(p*?_z1?&jQ1(vm*^>V2W zOu5X6Vhbl-LRmob{}I4eZ{GpgnaO3PFj9T}{tqJK1q;dCy5;P>Q!W%rm3?W-eu6TvWkVk+x`pryHAg z{r0>c8QnGzRb-5_j(|$!Y)_VVJG;KhhG3|<`i{;a>)6)n?|%Z}Tf&D!kM<`e0F)dIZ7>w&m><9d|J?J@nz9f{osDcp|c&LR2_?c`Dk zrDed=k`|8Q3dm*l99k|W9?HaMdTs369KRDlIa;WqKgDGmUyxR7kezDS+gr0Nefny0 zu93&N|1lDZ_Gu>MES}dh-j|EI#vjO7par zg_zwr>aQE7w4;|vFCVXO{^HjnBheSXynz1j$QN|=hH{)kvO!ee;Cru+F9#_Mw>zgj zX6EXqE+)K>rZB#+3DD1gMGIhbW~+Wb^cAXAXGT`j&aV~Eh^85pa*FO;5&NF26&vE9 zT!Nh2arWhnbdjMOl}W(yqBbu@_}?@d&Si&SbtD2MgzhPrtHsG{>)jze~%P|?Sy`_^F|d+ZF0a40ihhy9~zTf z5ynO1_uYIA^UUfo-ihZ%l6te7coIj^_CoP-`%s$%$_Ag)hR?C7Y)EpMJOM{}Pmch6 zIk0i22>?xX#91+k4|tsFwbS0g$g2@Xw!OJ8jo#JrgA!>IcbxDyBEo({pEvJfVpilb~C&vCGj_>|}zwNHi(Y%h;_&v}P5agr;Mf@40zL(5h9*HD46YY7T_5Rn2oY$5OS9udNMA*vd& zfY+EhFd;^hxM*^prnBY( zfZO4otHUGxRClK{C$=q*tfXEXC>fYgl_mOw$}r>&u{2}(cpTrX4=o|bLQ7+|nX0hm}yy-<} zk`JslFicNRQ#^ilOgI&TE?EShpa3V*f&k6j&hh%gQ=$|sGPJia^9NZUhWXa`nw%8~ zfk8w9Uewi%{KZ3W818VCGH2=SXi6&}d4y21z%PD=g0iMlRpm6cJ-Q1rveKef3P$sg z8!IdOTF{LUH9W*|JFI}0#t=FVv?wCgdbdGg!i2f6L3biV#79I)&VA3cR0Q02qV3Y`4a2(y-7YQP2p=ujF z@1qMlU*W+2y?{_bXd#~c(lY7)M}6_vNVK?15PLlWbMR*I=22sfagWng`-d{c5t~xO+i`s00*qpP zql?FWy|Xf){V`v0sFemsHaDEe^Ng;>Wpg+ZgqgVAZmE@mDm<0XkyN`s8O+RL&1$bB z%zp4RU!i;&Vq#*k?%4l+Z!{bDEcxwEEDG~A8~s0)b48A7uw<8ZLiL!9?Fw7;@1Thj zuzhV|Ff5_)`CGE8tG|3fMnYm8;5m@;i6{79g}cbMRQE&o^H_$LP<_Cjgg;r22)zLo z8mL2nFnlxf3OwN_ar}!rBQ=|*wl+u}7-s&@PzYZak+k2^i13g-I&bbQ_f#m?ImC>Q zTb0{iEobJtr*WAf9LNK3c0&n&BNb?dg9x)D5D>pgK9fs}4&{}F$|!K7h#LRsO#SM)wM49%3?AF5v;ib317^Mx$7nX zU&vlnl|Pat#PS5BR;&nX@|vuk&(25D7gB_c8c z0=x^fw}nMguV%$;jTeEvFa;sjza=#vaC`xX<-9Xg4`{gT?w70s6#&k1n|g+8fj2{9 z)C9cG&wrZGH|42sXM%VG=e;qk*Jr*zD1uW_e5F)=lXM6;h$NC5$=%t86$4ku1XDjN z2JGbE8!1725K!oaK&ck$R?Bus*MyF`t%V9Mi-6J=<~&)iX#+&LZ2?}IQLEPE;Jcmo zZLK=$;XiuS6Np}w(_4L;O`yic`B}B)HC?$P}nsT_ezPhNkoY~7I!ZH%V?uQL| zhKP(T#2A@~K@QDJ{m-^3*$bcLAV2oS9Yn^JEYz-y<%o2R6Vz`^t$mNvzF%SZq%Qmu z;54m6==Q*kRWNax=d#HhLCDwpnMxl3bIRHB$b1D0U!rau;AKth?WA_&>3KeZElYB; zz*9n7J86BOZHo=W1s0AE`U5nU?bS_|YQ9c5A-6`;t5wQWRsh{2yHSc0|2hkVJ+!Jp zJ!~@(&O+tMW;j~*u-@4TXwo7;@C_^o$^!9M!y7`k)4MlCe_;VHZ);qR5|*@3?{+pv zfUxp2w-aW04qOvI8Qj_D7j`!wc?)%a0nhbolX;((1PUQYbi(OQOGl^5(HcXcpqFMlG<}MsNU@9GFm15R_cwq3=J#-Yv$D^T0#bCyLk+TDheqH$k_L%fA^Z^iA|_r24v2o-qG-V zwLvwX1|x@nQ04OCb}_f($**F7IG?2D*ckNSS$;l+7TiGF%BQ`q%AnDIdU__#0th0p zBTO{G{E>z=k)eYRTe%_zZV#h}yRNP0Z}!$AJ@#OGnGyf2toHNdqtL&$8(&luC_*N( z$N)5#JKmiTCjt<4XtleeUAgaadXx=9m0sL~JR0?UC14yFYJH&ztbRe1Zo%LUG9ui@ z>MX9$fY3u7$lw}nhd{gncYRI6RvWH3@enbjv~i_%CH?ELc|dmHOWM*VuLbY&e_*#m z$NK*bD7St4%1`UX1@@5--2$|?@p5?M_h%MkxRqDPI4Ru}r>&mu8Aq@AAR#7TTA}lP z;D!BXSsTFc>%c^hfBy$%^8|utV8th7scF9K(ImXOl*8uw3OZAO_yuZLSLtuWEnQaR zlxki1dUt<3;WifvKIbEceV3CK{tM!PizR=OS%5nxK70sG>@QEiGhF=^4*t{s zk?nT5F3if*`-B8Y4XD0R#pSmDwa|X+7hBM4?0<}Gk0WO|6PTz95MUfPfH)6+j~nvp z9WJ13>Uo*3o^L+()>OWWH<=H|7ZnklJOV}QArk+RQ2rX%c1q}(`}6a}7^+9%*lg!P z#=rzsYdoUA_H=D>hw@0L$QWiB5B%p9JiEP!zskx#)ukjSJPfaE`BiSVXT8J5aGh9l z3Blcb8N*U2{g;S<^>aeV0^sxM*Zn6_?C%OH@+-QFK*c)r#qDB$xU-1M&O)>k1Fw zgR1`!p53|Q_uVu2@Sx}4|Dv4{q9kFQpM^L@e%;tKbc26YS%=|1amY50pbx`&oxj7A zbN;K^Htouix8z$6yhc z^04N;#U?v=M6D3Z7ghWfsULz|IqY>?HS*!8D~I{u5{1knUM>?efsoG>;339}=&6icho%^(_ z!$ue~WC>YBK=>$7B9fE5TDxP{`=OEpBxXVOaRm)>OkEz|LD76eBH+&J^dB?B7ZuqT z)JvLkv!Fw`O-JUv>r4V1x?5P1mS%@x{?X5&%n~d9g_^VTi=?OMcBTjqd^vdwFj{t8 z;QxJNArt1C@M3Lj^KJRo$}@TuPM&6NW^L{IEyt}hT+Y{n-|f~&xj@hpBqNqzq!ZLs zj+%;&IdO2c4;`)i()t!Lc;k?3TmsgNk%Q>)lBT*ZyQ#Aho5K+hGrQw9{Wv zXn9Q$cDIssjakeh3Bv?Cgn##GRn6DLgFXT&Xhz|Fp{*wb-1vpv)>ChxrL6o+_0Ihw zUv!yQ@_&24eZGY_EWIHFyc&Rz-WxX+%uVqOj;BQq%gH7jyooxg)!X28MmPqNDe5P4GQzC%J|HU9C5zEVlMt|p5?`KwFU9v{eD@>&mn znS?^1gldrrTCD2bS$gg89Y6~7#0+?XRAuTp!}7`sB0f81 zRAI>^l+PnsQg1J#*MUGTiK9eh({*TN@AC{A9ZdljsmQUqm2K`K078s=UbYax5UfU1 z?runpfH*TJpv+_~Dbc+?c^Ew%fYyu4yr$9EFVP|M(e*#G^n@DWkgW#4PEjaCz?~C0 zY!21ihiNJLWek($x{}%&N&CPzR6}z@y=oQtwXpxJbjZv6KctD5Cvqr5JpEOP=q59@ z97z%l9i79-l_LvP*i57646rrjv1c4ETPiG^LMkW9>3ugv2z#-+$fO4L?o<#Tr@ z%b>M^1$80;4|u=Cj6^bz{$%dU>w)L-^jb`&YhQsyHS;8}Tz&45uW!T)i{9;^%eN(Z zM<7SW?dQF12kJuU<(sJul80csMZ{FDF|5UYzRp4!x&Z7Iz~@||QI{oF$OzQ@8N=IO z*FJ1e9tXSwN5}p;&XV4LItehIK!4uWj*J^- zgAdAzXv$&>0DpMixNb8)rRChy+x(Ag8h~2P73%SUy{10{Ibi=paAB{2i$_w{9bhmMH}V+^7YTa6@@ z`iI_gw7oCDd;EMwCJXp|0lJ-;|J$BV$v~f(O$^oO@85<TC$#*t0_v5!$A&I>GDZ*?Q zg9E4*#cRBpv$MVB*#^eOw*&gyfS+c!8$B3(GaO6%5^8)f60HY!j4O^M_LGk82#_b4 zPjST|s>^vcHafEWuh6U;NeFz?n)+yeuCXxb#gbD0i>*cX^Sw{^n^=06hpaM+3AJv zrVI!!j<*V~JVz?^S)hS9q{(H;V|8on>sorVfV4Dbs+mb&eB*C|V_ zKKx3ggQ6$?e(joKbGUH7^vY%?-YpDw+a`lnFUL~P`TXVEZ{EX2HWel+M2YXly1O6y z``X@ajeY9~HvS&_A;4_#WCW9DbUiqI;shMXd3FEM4OKS%vJsYx^#7%`+9&!B?AG*J z8KS_TNStfybO)$VJ|5=;0d(Z-#2cd7pdvV=R@tH6p`9l}leJceYcmaw+5pQ1S>!6c z%Sp*(E=|+CZU;WaVY*<^FH8A8mFkpDLBY=$ZVRGWf)K&qyu)1rzyL+Mpe-i;nI+^X zFl)D$9vjie`~?etVF6{1MpjL`)^nB~8+e{aT+qD7+Z_a~30=cWp{T&d$&}r2| zqEiXi2gGf|n`%$4F99jipHPps^x6Gn{%pWx-`(8vbRT(}LAQa)>&kM&V#2D-vnT%L zF+PvOfnQhcP)yD@)6sSsxbuA;5QI8gM(MHDeps60-3YWe02XU-yJU|2SU(w?qo%UyluKuz>ui9_uQ-Dy{e=LTg zW#VjI@YZW%ROB9;4CLuuXM!m7SG|8|-l9B- zY;P-JCrNm)wIrjZz!E3#O)R0NgAMSPIqUa zpsAUNZI?F;0e*9O`t^s%_2~@=C{m=2wg-SNoWuV6uOP)-<9=of$Qza1LV{ukK;S#K z*9BU8I37E;Zc?Z?o!kDIaSze6UVz^0ENoAFk`>*6&J4UyXub9H+)F(5^16%Z3~!gb za@s6AjL`490u5~26W!hfPV4>?nzj9@t%c%|p@-MK)@UH^C_o-W!J$k=XMD;ue$)~& zY4K9F@@h4Nu!1rIJZ)txYp4w*U;C<2u?D4mRFm-@l(sbpFDHVA7rV|Ax_x0F$dM;e z4PYfrW zm`U63nQFQM{2`xry>>C`pY2(2S=7fAG-muT;rNr)4of$Z>ujc-sztZr=5DCcG}Tsj z?xOeex?0tLY?mOL<%;lKt1cxr=s4w>6kt&U{?&^6w!eQc@Ru&pU*!5v?uVQhrpVHT1x-?L00A`+-9_P-x0}fV4{tD}<($=Hj~$9M z(jn+%*+UUS9xXC@{v^r){U=C(S%Poa)O-@>?ZQ9L0xgB*o7W$nl~etAwNH?EGvzVw zTXAB1s1;QgM8FO`e#~aGbm=kxPp%6SI?~z;%=Eo|9B9!De!u>iF9)Y#h9mMom%BLe zCMnu3O>{u$4f;lwJIVpz<$jNwFQ`j`$5@1Lji6n6Z)dkZ-Utt0=_QsbMP|%$9(}kGZY~s6%)k9cb~T8;c=-3|{#AVl`u$oTmtPOkz!Q+Lpa{8skM7^NP^2Ol z#S1=OmT`9WGkN(RpFit@O3Ao8cBn7x13D9#j|eo}BNSA8a!%FxHmGjhCPZlb9(a#3 z_(fPaMjn^LRv9$C_q~kLbWG5K4}xG&knjmPC2jLO%7R>Zk@3->s9RtM9}qkMrtV(& z#mE+4-?oQv2q$txLDJ6mfc&^8pAH~Nb1{6PtSTk!Tt3)c$3FoS0}C-lQLejl1Kl# zxTpI(&M-f|Zn7+*Ngqv$Li-r4nwP9lnclq#n|XJ?I_XHgo~}}h)a|(un|OrJAGbc3 z-w?$1`Ca7x!KO!$!m5DBwCtXQy#Hf-E~^|r$QJ~Bx*Oj&g(U_AsXb0)mojrh@cE2# zGP?RP`P_0Q!Nag_CUF!$7@1-c2q5YmT}(xH4a9PLjmu_7q^dbATPCiU_V}c7YLBPc zQ}ut!zxnZYRUsL+)b_|SFlJrwsY1#_HEvh=A)1cosoc5w-T7}n6{K+IZk$}2=k}{T z6!0v$+C2Vbp3GmGzm|B+rjQC(>bTaBGi}c)OdzXQ^8R{u1 zCg!`F2<9uBQ%5KH5zc#-2kWVECjH&Ynd0PdiaQ1TEtW2ZOXoSL2d?g@B5UV46Mp@s zBNimD;KIQD#SJ?DUi%;%^&lo&(l?uTlm#k+Fgo^dh~hlT3@sAk;s(<86*PP46w)Et zZ33!Sam?8=`%qI(_>uz0Ge1vpr&oJyVn{N}s!H#Fo?;MunD{`3X9%i@{grH}Hv3DzwF_ zI?_^|CK?DO(jF{H*7)n?OJK6SBqmp?i#H8_MF^X*koSSmEJnaRIhU{AkaYA_y z^1_fLAG~ZAPQMZ}p+H~~6(Y-S$s1JFsg?fV5)h>*FNzlTZZRaNHA<5eKPAv zC?P#E;KYm?KkelZjCY>gEWEGfj+zO4G<-O@%$~KBMg>%Xe;L+E{gJE7h@}PZH8<>yqG)2x}XO0fjRDBV~$M zL0GY9G*pH%7BQMk7NB6ld3bYBcbVrl6Pbg@bD(7bX<;)kDtgF=L}eG?_qob$D~ zA0{IaNnyVyuav?t!Lee6Pn5$^^`cG}+J||`Y9NOD7IRCSI_fE|Xsbl_6JXC*ZNzhP zLHA%nQ^vzb;CE?}&g%L=E$sC(Hj6#~h!#1Y9oIZ4i=2s&jHMv}P4UA4(laCR*nq;N zhgk2w7io18qlqmkl}Xc!JYUK{Kpy57eN9-5xj|41%ZhLD8!eJLl;gnAkBP?u^8RrI7F5% zrU@gTgY1Yt%l1+!Z$y&TyAM5$1%4G(q0&D!AYz&(EOw(s_02Z*YL+>dA$BY(E8|t1 zSvoD*2}L#<^oM{4L0T=8)U#t|)RYE(&%(_}M&CzAtHzRtqM?h&!Op4#vG%nI;3?HOqWvV{J&BP)b|1Lb41v6qs?5`TWfu-~)$d|ZHN+PjS z7DH<{T(tXf*cKMw<19fLu_*20Y2^EhIj)xs(r((!UN+Kh3T`?BoIjd468kBehC{Z= z=xA0I%1u=~_^g zicZX;drT#As$3^}CtVe~q@SsZrO3r653sf$rB$=nXUT1^Z(olu;eUr0^>2B&aLw>$ zSac=wyX?2lPRCB2q$2Bp0`W24gjCuOS>(O~G=X3d!xX|$`A5x{@zW5$A<~G=ESF&t z7KuiufO)N)av&5aDlJZD=>Oc~`vxrjGlb%Td{wm9mHzJ(^>J_(eKDER(o~cNpLiHZ zgwaYZqUy8+A)zC&OG!h8_hN{{Af}&Xxl^$TGc%hFy(YJOuZ$DGj9vZ)1o--B^2OpN zruzy<%bT3!6$KEc`w{Xh!;9oz1+qMXcGmcz*d`tQ{h)=goZN->5m60X?}2-hT|@Hni|Ih+z}-#B)zZZ6d}%U^DC=p&(s&FE=zgc}^446E=sWx;sq zpm11O807pa>HKLkc!NAOFo~7Zi!hMCXR*_up+fN}Z+*-pcMu&kx`|#S%SNLO#GvsI z@t4dyL_;rfp~i=Cd%2nRqANpNs*^I*3pUgYm&cd$Lr^fqj?^ivWt>v?Nw)N}ok`#5 z&dz-~sTEf*n+jQF$gbH~y+ZfK;iffNj%aP971lPH*G8U38HU#jlPaH!hRlE%?O?;M z9PZH)ab-dGc52&9rLWRlx8Byg|oA;4WGDRzYdPha~+I-7lBD0 zDdZzVt>hn75GZNK%udFlLw-VCY@mpnnVu0F5w2_;uPl-&ih(xxu@zy(x2X4fCS4XS z2gZd+^WgImIQb1(>PJtxS#Pq*FIvKRMWMZe+mv=?#f>RMj74dN-ZS@__ljfs%6v1) zLv~KrdZ&d;+M5tX4%vdGC0;LMm@|tBz0)#Q7ndqXuko#T_rQ@d>P?O~W`g|-akJoW zHF45nn@AfU-y@aiNLm#zJ`Fj{Bgj9&P#>!|-#`-O?q)T4O}R?;RN~`gI+im3d$ngU z#1$>@OGctkcZd2&-gspB{hF1an{9y1%B~=c+}y0U>>c+p1QtMEh|1S`W@cqXmMZWP zOAo>6J#QH*5fn|T42@lx=Y@)EACj`u=9@S=u5Mhlg0xpkjv?e2)E@$r#so#hV8UZi zv`Fcr=VK%6B^=>krK#0mTlF{9l&Pht*^(m#*$$ajg}m~RE8zFBzK}1HBD3M(%MV8S zL`;)0Mj4{f`m4Id>IBF=K7p-oIrxBN%|xm~r$ru0y%P$lH$%K&+YdA-lIkc(Cl8ru z6|9(Q1p5!X48=db!`-7r$4NR;@?$CzlzKeJ6Pu%f(XAV8PeP(9Ld=3MNgRyC;1H`U z>5r2viPIVzj6_5#{17!%oi^+fy1jIET<}T@r4dUJ%uAZqB~W$ZxMd6PL!0MkN?N@` z5;EX5hr?1XSG{YAgvZHxK-S@?U-d&dc4Hv|x9gv)f81{I zN4=f%KF{~_^|;?3`mrZBgEzL*rF73P=*~=XU8!U!!c(p#^I018++^4{srbaFR%rK{ zvM5Jw-m5Su$P3lh$H#x76nQf)!dehZBHi&8SoR8A)4Uy_#HWNFZq97eR?-tH<_prUT38MDb~>ubIeRE6 zr|}S46er$pYHp29YvXC;t+!Q9$v`j*xH~-Q7ZJ3}z&fUMuu9*3Spu<@W-W$Q21(k6 zw-VwQS%2L!bm*cInTw|>l}o^gqNzwSnEG|7_z1NAW1rEwHE`A+kcVJ?N^_0i0K zH|Vr4Av2hL-M5 z#l)2&&AOr|2wvC7n|OMLPjN+Z>G*+|$mjD{b<6N9RN*CrD4M8?x(qW)Ynm%_2+4bC zh@o(1DtI|fAAOk=l$o5zF|_IjxlRWAVyZhSrDGTOMfiR?m@n}bejPXZlJnBWgd%^$ zgoj4y>XR;psqLbW&{D>EHu0VtRL-m!^p@xf5&mCS>@r$IP1k5JrJJ<0{F;U+R~RW9 z+SP!RowD4Ch*D92qc6I-#6X?OdJ@pAwMOk%6NahwZ4jiOdc?V)$nqv;jH6XvaP65q ziT+j5^Oq(el&%q_LMU|yFHPYT@Y0O_#&WrhubGtds7+`xVdI`nqeM)^`s2UcYA1?> z=b>A89BqVDujRTr1+$pEsL?pu^dAu(oGgk+BoQ8sI>g*9h3FKKNfV_|8fKOq0~JXS z2rF~1rWTtLv!GxRmfu10FO>S`&hwxc8Xifcld_~`hhJ%2xHhze48=fstXnS-aajnO zYX`rAXE#nUWs+IBbj=lpZ^5=j6BtAjB#}H=_F^W|e7KXWNnZ`yiJe3S`%6^R<;E>O z7er-L=_Pw1{w2uEVyG&F+@YJYCB=;7^7*JapG<=v@ccB*U>`+)VM4&)x4Sq zTgHY9THIeR9lN)lT?fLFbJ4IykGCqXC*}t}RY_29cP$Ha!RcnIc0NC(zZKC*LvdT& zpk0A^CTnWaf@6nYk|o+9Q@9nSNRU7wD@f6WW*VlN#57|mB1hSiDAI8T438#av^)rr z8pqGy*s)w@0fB-6)svyU*RSx3HzAbm)|eh9T9Jy@gh|;Jx5#&&G=teE2S;E!zssg4 zGi~aqky4_UQggzdi+wgql`O6qmE~@nf7lq+OZ7b!JkuK>_Z~7lmnjdXJY9iXijI9| zA_fseY)lQ{0%OvV9b;khS3i6wea^yAj_Yut{3hYuSBNaTpu?y%kg9&La?wuGdSAo< zsekd4jEU$xB>aD7QilviCpQ;Kc+hkPha+V!=Uy} zivkaU=?|yzyDSwuHxxdTy4j`6t^<-QW*F?-e8~lqFE#Q0ikj)#SRXi5W$KJ=TI$ON zrc+i$VIg@=CxuBn5AAD8=65!j<25@V*9I(Zu&Pz!YdUN}KMRZ09mwLd(KjpIg8H}e zxoo%KH@|w?e4p~v_G}+^-WT?#(liv)ZW^HkF&1Y- zdTf~XgKW9H#w<&9FjI4upsKKiC4{y+O& zu{zQ8%F2Fo^Ydiwr@@=%szmDyx)WrC4c{1dZ4K2(OU2E5!wxtu{y1a-`2mmeimy%U zY&#h}-LDY$mAR7$ieoyiAn)H*p~;@cwc3O+Hkx{z8L3Y2%Dh0Nq__G-ZdT?o?a-pA z3`CKB4J*CwChik~1Vcib+Rsm!OG>7Vt<`1{$Epyt*`TNHq{1;ZDbolIsWF$zi|)KO zF(MXqB(6nLp$u{YWV`dMX`XmBc-ZqOJeAq`=RvK50O_o3b z{$|TLEddrrp-CK9)8CH3u<|Kt7LXtkHG3G!B5DS|4!U+&J7eX6<7N55bnnphYj5Wz zJKI^}r2{(Cg)n;-obdBEtzAc>K?c8L|4c;G=Od4U3Q7|og!;R_rw9COKdcl1I4$^_ zqQ&YWXuf8kJ9TXYC06!Ah6TIp$DndXKkHxs^g07M?Itm|Ovw1oT()owcn9acJ@}3M zH?!A#`nkW!et=C?90FLrLvXlQsI|Skf4J|nF{%c#W|TfuOJb%M1t;hKw9PP( zDj(aO%Y|n4QAjHO-nzT7Z@R+UfaGlR>cvC-pvDE1SoK)~|KYaI7w<+;l$EGAu`^=}7FVYEJ)-@Jak z?8VLJ`&$`;PpbQ+z3~j{lQ)dhZWz0M8tJRVv0f>X5REiaT!&m0tZcx?*p1FXc%%-s zs2tU+U@5UFVKuAS>{o62$!mXzkmi?462f7Ex;ku@DR(tnQxZODQz^iYDQm-rQc9&l z*&Y}9Vsl4wzUnJE@MeGwtC&Rq|{0ERQe66FmBVgdYyE@roJ{YDcX7=LuudR_I1CYO5A)nwE z#1shtK;)DG_<@2zOQt#C!hre;;0IPsp8mT8%0^w>c1b{hBnW2$a8g zc`(M5>CjmBF;A9*(D>=zsn$K{oVCyIi|uJ&LHUaR!b+_s1&B~3b58Dc`hq;)^!&<7 zMG(qcILDJ0lcD(NM2M$E$)P8u4zBF`{+RX7nQe(X^Wn6hxR*$1Zw71iaF z)6?yE_hz3xPD$35bJ(Y1N*L6GQ=W`}%#0unR|l2CWckYB7kB(~8yW{Fi!h0|z8%ux zZFH}(y(m-rxWPp-CXFy!7l|6tsdz`O7>3cVc&C*nC6+`=eT#wR^VVhyMME>(=YD0+1p`jCYLAU9wr)Ks^LNhePTJEZ2d9!Wb z=x6l5y?=dqWJxOMIQw2nxuL;R8d@sUlNs^(RLVY;0DO~Gg4MlcH%5S<#y zn-UIqw0-QfJKE%%$j2L#KeM})C%{;qND9zZTrtEts%SkLH8|{JOn}C(M>P0Y$(q>^(=QU9-b74eNG1@5p z3vswxT!Ni{AOR?MQ>vx&GncYxdIwQl1rE-HpBG^ZEDC~>Xa{^<488fc!jzN*(LSC< zX*|sUALZcP)Mx~*JD@=b+W7nwWCyR!0THLuwU-@y5t|P)M7>y`8(R}YFTM7_ZMNKC z@o;~*dG#~oF@A}4wB{+OyE_6(25(99l!vNQ9Rf(zJc>i?WcUC?;*%1^$abf$nGR7Wjtmr+t>I>|X&V~`Z zx8X05!H2f=sQvkQ>*pjVt*ceh2;1!C7j~ zzpGX&N6TN_`nZ$al$7-0^!UL5sIWeB?Sg%65XV+2ARF#ahkmh!-Qn2?@Yf(y3|JWg zX4^bz`?WKAduvyKjSZdhWz9O}n_SuJEyOsPD~^Qhu)8J({TC_}Q##uoL6IXH;C)zU((r3< z@7MLOyYbHN-^Wlk`aCdP43H1Gxs-KnG=hwRu5N$qUS|L=%kK9-CyxUSliC05y!?`W zIWyUN!_(E{yWnT@uUU{A;`zNl(f8WW_nWf|ulzoL5*;2~zcR!Ai4y1)rOtk4OA94+b9|LhyV70% z=rEyt!}7)x{)6Tz=@1J^-?74Azh&ZRVQS)wTUVufUjdkhj8ycg$>G5PXsgqnHU}R} zplQY<_AemlL6Gchxtg{c^W^iw6DuXqT<$b&USfXQ=(m#+28v;sC2op|Y*Jo*XQTC( zdLHBlT9oc6Z0XRiHGwFdNh`bkg9jy-2LWjd0>qxcNUA{IL&vcXYzv~;(sMEW%(o^O z-Fy3=YB2G;AAGlgU~;5oFw|c!czFK4G5g#UJMz&`90sD&h5k{!}Y-VO^3`xdY_kT<@g z$Qmop&~M+|PY`+W@C(SDAdb_H93(PpRWBTj@TcE~#lVlBy^yXx?gE#Q7+7DKgl z158d+@D~K!Mahe0n^lt%?M+G{E=4*ve|+&*Z_U8VharzHk>ProJ?0#Fp?QFK}-P z>q_eBP9lm!FFJUv_wryfMQ_{v841#i%D7Xnxbq?X^7b+mZYI~@e@I)=?AUZvac#-$ z?1{K<{!!o_^m}Sdv3Nlc)}iA&rnS1>u;8?PSYXNg)H0~&SJ2}lHRVTJtKR}E{9+*t z?bZW&I(H2w6K2N!csnVsB0iOv9+1<-nELZ#Djfwo3Mv2HQBg64(I8}nNfIHQh;~zM zY_5?Nn|2*RW4#n%+Xdh4vq>;vqmAfSZx$4Tkdo%lS=|`!rmn&&o?#8 za;gROEzf*=mzX1WZ|1y`c%{3&oq-e3@e|$K&U}UF$(BWHP`fU!UX%@ud6wb=6R~K7 z-cftwc5S@)>~zEJ#*3QTPZvmfB`4hYK!Nt=-kx4Qe_FL^>w^EEzV;K)GTbgY^zN~a zf)eYQF}Bd1q3X|_cXK4PcbxtMhTn@b1RtgqRv>a6yff4u9vPps@9GJR#yACI8Q~ls zcM05gkih_sk#Qp>_V&Fpeh*F&%xOB+h>2?`^ ziU@PV*%NLD@P7TkA%7ojVPP@w?or8(9L>?*@6Y+t&cGJ|JjIP0i;1R|nkP=5KIon_ zbP0s0c})t0gy>L|jj@Xs4W+Y=T$d@KS-NtA7Qm0cCnGBp;baAi-@T| zTqzVQjGQrHMC}fWdYEMqA16DUKU?lD>TVLJWUjdcgP!|18-7ctYPy}?IHj#9GYuCY zY9yP=HK%*TDRD=2u6kiI2UV-lYuppi_0v_aU1wi#hM zwb)&CH^a1L5qy|y%=aAl?qkDA-~v>%4!oi;M|W1}s}T-kZC9yBWeJ#~Du+26clh+f z3JR8b=iD#0S z&r$6h_-TG6(Eo5J`z;$Q>xHSAcJ91YO`W+;_SWR&H+pMhbV(n?qo1m3YS$ZF#+Rg< zfC#kV_}QGuk*1njGqrjpyI*(EYPT_!ZL^c>Z3VZ9g?Ny!HhpO(a62jQOSKiXd3s67 z;$rXV52sI&9A93Fp9BX3rrGEIKiHSpr9A&Fez_bljii*6L`0O>1J*33>Oqx+RkMx# zy@;P9z^FCT7+ensaiFivIvfbvK9noY0&)# z%H62non$NZ%|whVU32BYx>6<;Q`}-woRbQIMXCL}wZxDZ zU{`g;Qh5b%@R`*=lDLkP4EixrK1ZKL%L}qj7~6R@(1Xm zG(P(4Kl-xkb*ihr1uSJNtDNN>Xk@BvoV`g*iGb34;VHGu5WXl}`1+0EY-8-kLlwxet<>zdU|OV`lXUwp@wJ4jM(e=u?m<3+SZ8|4@pGbcSlhx_qp?R zM#m5^Huu$M<`5U+Aevd~!XtgOY8A54q)uR5dSaZ?sdJAi4VyBJA4#95i&{?V`_2gr?q zeMc8m=gQyS`1<~->^+~{&E%6yz@Y*(nod8TBY|rnI^lqb%Jy^`osxdWD-7jo@Z5dn{$Dn4Xd`=0aYXM2ID=s7%r4c-+f zXv)ZteMl7!6jtH49f7`R)z=%y$YDb*gKa>tEOSt&75sNV(MW`fl2X;@J9<2a2gm|l zle_N~yz1Vc2c_2s($7F8Y19|hFW#%~c7NYBRnNy8t-i`juNOh<)R9lD&>I7+Fw#+-y0E^9|Q ztSCIDebKM*D*qx0TWyNRWA*aj41<*6uv86lUH*E3`+edy0$9%MR2^b)k??+sX9if8 z^-Ur)Ag_J(4N-&5kLT{LuP_~MrmElWhb?wI_1-{?$liy0|0NDKJRsp-9tF+MSh%QR z1{=NT5R$^-zE~U{CMSwjaQKk(?#5J_o;l&zL#xv9GL=Cd)@4m*C(yaGfG%6g)Z)l_ zl_zs~T`3f8w4cRSNX{d;5{&o)Q2N(K(C5nu472I5ai<1yt+`w3j+7GFaAo^ui#3R!gPv7x}qy= z1pP3QjzR-8!V6c7dFKe?XW;VSecS zx8&oKe|*<}KM@d~F!;xN<=4+euU|uaS;a-5jpe%MkB-<21v;SDtkfW4YrK89Qqy-- z_({>3+dnLpEIw<)!a&jkxK!V@nb&p3Uk|_Sh1DCS+D&;8H?WaatG~IbLC-JOyWO^f z@K4~s?D9|TKk2>65_w7-C$Z(7!&X49t#;bX3~-f2&@@TUsd}+|D?=;vgvpR?2 zfuCQB>1Uhg4exQ}szyX-R2p3mFx0zOl`tX2_t66%YV?Sn!N-PZXDpjQKw-$U6LP2? zRm(8J1rux|^LK<`TBVIrP*%LLM(Q+-JW&)Q^6$nOYKtF`6iG}aQ9(v~u(>*fq7h8; ztPZ0XaR$nrhp0-i9Du3ujWyeL?5$Go*@d@ciNhsJ!BavqQyd7GMJE$R!lVUP>pE}kH zK7@utQ=&vZOcKJ;cVl)8V9I~mwn=%yE}ZYAwOz|n;uzdwDZ=vJdM#Sf?A&}VmqeGO z7OZv#q?lPVY8+n*R6VNhM`BbC>7X<;&5ukTn?iPS?6xL0wf@;fKd%He5f;{m_J4^~ zro_)Vtu6p*Jo0G;6q~t(^?U!tp3<9M(>`kf+tc;Tdhfq*U2}#ku!VsFliO!UZh-j? zo~r!$>JKKBEzkN0(exbM+#c2KP>)E zVkEiuT1~<_?s6NT%Ys|n{{Y|Lz~{z?mi6~z1KY#XTl4>UeO9>bJoxhFTTV0a@!wMi z*6RU(fe<>OJR1}j4`eC)K7K3xV)_y4hvBUTP~^rU10EZ-LyAEl<>Ar@4-r@W)}?#R z)?OIw@z#C=m(r5Q5AVU#2$mO?((YXq5l4FqKs+rOLJfiIKrgk`o+(E~M%}u3yEk~o z@56p)_*+2YNSYLUUJtQ)OJiR4Zu@U*_3BIma}^NkSRS4nYp7Ts=h&gq(4gIoZ?vak z5B3+$QS)WA-Z=6#u^y#hlW-sHNoJoc*#->>Mar;XL15W?votFq z>HB#5&~#s5KIz4orE&;MM|OJorP-4vpTbqgpahD}J52$CcCwKurCaOin{PAfW$7C5 zYM*`C=C|i;a6%4*D;Ax`%+$Jkg(hN@Y|N=3=%x!|Z`V46fSZy@kRh@`Ca9FRh{)?s zSw>t+f%7X&^MVLb=?Gd^O#1t#h~G-Et(o??5Y7bRgi2k&i?DH%8;US!AvSe(_J_i} z*8j=-IrIa7dbWn#%ej9aQ0;{)eDO?V{h89e{-fFLDh+pv_DQA$snJ_LZJ6<4k3Oly z9rSEtw#?snt}(1iDUKVP_M5teW512?;<50XCoc?kf7iaKIg0)L)CxoBn>f^?x#pbt zGAUb%>#(@{?CUn<=&)Q$HP4B+T#9d~(ETRdHfb&f_l&Hus7jk>L4`;%t0LqYQ$?wR(|1#;Pb4*kV-#H$TDK*@S2)wbO4~pr4MJ1y0_CFG! z0v@!*Z*IKLzDw2lpweZQ-RHq46gi7yCQ2!G1_;`hZPzdS^@&C-tFoaOB zQhx-kf*Yf6zkxP{qetrs_6rtcZJQKYkBV(s@0sUb-SjzWs<-|^*BF&|%|rQz=g+8H zC`xMTrz(#YfcE;CA*)j1?Mq*&+kRev2gC5-!0{i7Yh(2HQrxUAgjkFwd>M|yvOm0Gl!&K)_VK0a+T;Wy> zNVZZADGYu=;YiibVmgP0SMV9Xw=u-Bn$n`ip3hZqM_w~?Un+LoNAnNpn(C9XiQC1Z z&of=2J3l*R(nZII#ntqEn~{>H@XtSs_SlIjlE0OGJ86Dd57=5 z-`lqMo@mLDJ;@&5pnIF|z@mROT_enppX(g=RE<4Zd6lPdoo9-EKESvaFRc&W(cXM>zu3K7bnYkPRBNN&xp&rb`sSgIM06D1@=vqN z>7A>uy>^6irf9#USkTJNT>qrF1xiLn$my9nC2&09|GtdCKZX8&0toqjV`QOBFyo#=f2r7tGJT8C*lh2=-KiE;re?&pbynPts4Q3o^f80OemRzaGg z39WD8$Y>)C-LWgg3vg0SDl6-D3aM3nOrjH8Oi4&`>9RDywhqIKav=pKy;W9f*4H{@A`gn;0}|ej6zPD}zO8Ii_fsSI?Z> zTYOO#KPrDP$!DUSp~Jy|5;IF2BG4(IvBoy;Y2ib(H>Z>oE?vo&3JETiV-g$bpSh}^ z?P)|s!n0J_TLtD>C{coo7xxjC@vOguJB^7Q3l$(!nAWcH5#ATMlmJ&HYN0jYW+vAC z?6#i(4iJP+ONA@NqW29)16{SRpCH#Fj9j|7h3J4t*bdj0ycXcp2Nd-jTm@K_u z!kz{jGEy?Bx+Yfvqq?f)cTtnxt+FnrGilB~iJxCquKSOqR=e1vi;X`Gpd9R|sQegM zBn5cGMi_+BwtYpnpd6mgepUwor-e(#A{i^*iCo6Wi>JX zQ`gSKrZ!_T^>XRvOqa8XCFk|LZBxj3fN-s9QKJ)FlRV0y?lN)qDi&)aXX#pf)Lv04kIi>K~${G;e}D*2uK8kC?F#ft@Xc_L>*QtG#N&B(Ff{+I0~exJ~2!&4!wwIhrAw zp^cFl5oX&T;mk?pGu3Iw!JHa(N*zu_#Fv^>m?V>U)@PGixohDed7{}341W>)E- zLOv29Tg~9^aZN2La8i<#D@}quIsI-WVjetVwwK1%X%sJY33- zLYCip?UHT=eR0B5A7oV$lF>EoiE-Lchvr_H<#7C(dMwlXA`O61f>#FxF+g-IOOVo~ z?Hc#pn6w0ab&aT0^aiAzk)D~F`4@7DCK=AOyR-Vo?S0XkuU$VEa2wUzvBFBN^4*L> zy7jq`y&0xVLr8(XN9@(*a>OHm5Nr>SyIb1+24~rirt3U1o^A_0fLL0N?hD7bRmo;> zZtUMLd>ALBIr(_D_h+!qLAa|?1(x&?HHOan#Tr}KEp$f(4W1a)2F-2j1dkFZrfGLs zEe2f;ZNg`pm_B-87*V6h2Yc7Sk1!023ID)U)(JAg#gZ_>simGZN0#`x zu!QF2kr1B0c0rp!=ubsd#V`~3bR9298_6bS6U?;QJL@_p(T>_xp;RQ=QucSW$EF-V zM*P;5^E&Aloxc>mv4pePEq#`yrd3KLrp&G26+D za+lgX$lWbmT-p|eMX_aZ&*>E0uv)xYVws`6$+NR=Q*7p&7vtYJ&kYxow_lPVVzttY zWRnrUbg4>+VKH$~PRA#_^)L)9J1p7mK7=RfraorRq|X8rJ<1X`c{O2w4A_Bqn)okxNsI(I8#!R=LOt^^TALRn%xknx%6`8Pq)OX1_J z;lr2M#3D4^#L1=C}EYeT34-|6iYK2iI=)rdS%`s9~JBkpO zHU@GHFxFBUc2V&ahCjzCeF}%14#8aXG;#TT_v-{Jjdl4FXy#mg&geE((3FcjC80g% zfGZ)c6Qv~yG*B(pAT%>TfBOjO709x&70Uo()|ZU@&2F4czA@L zIh?;}{h@(Uq{e(H{2B2j>FEW@hB&$n<76VgP)mH4g4PelACCtE)vK2cjVdZ!qoLVG zgDJIFsS?3v@=+4;&q}wD(K1Ywj;sjTsaXvnTF9Vtih1?^J#2>r@R4SMN7nR(7=imE zMtbmac6xB!eh_P8_KB6FU55%jSs6VqCRk?#9OTLRB^Gy5)>SD13p)<=Xx zddNb4nO1~i@XnF}h_d#G(s?BEZHkexWRbP5%e-w|_;aQxabE0x)Wy^yVSdzn*f1tc zSxj063x$Yq&qxH>2&@c8`$xA^acPl~bgcZ$ZasUlyIyc`U}E{umDMBrY~6D^aP*(~ zC-{=$+yG>-TinC1wGNA~MW2Lzm!S$n1j~s+7naWXx6b3XUL|qyPqOyf_ii^SY$Pb5 zOQDmK({G*nSy@=%8{=*?FK6uMisO;KUEG}BbTLN`=<13+W0J75l`f`< z7&7jsc#wtQu6Ry)iq)!o-|^Ijk?FUq3=^Xm@>(nlGEt;YjEddP}g-SMgW| zCt7Eh7|1D1tIrTa7;#U<^z_Y>CAzBH&)w~!l6rs@YiFgGLNB4Qy!~^bvF9W)TP0-@ zM8^?FR<1^fV;i+>y%W7!lVJ=;{;A*_W646FADz z-u*e1fAe%Em!HevtEhE)_F(y!3tc~00rPG`qaG)F3E)Vy{Vs5F)nIVldj;$DJe{5S zShrmY?MzS*_qMqj4};u+tyZ>xh^i{DH4rvg0%8&VCq9-l$xuwChhk>*daDS^ad}6YZZZ(~QeKri2C2yIu zA|OG6=a6wu93*Jxj-#1wwMTe2}JykSfm{ldBGChyw%p^`JVqszZNhi&22o*LK{a#Hef3 z4Bvk?xsCO`@MzuDqYPf$D~Fsh34SG^vhCi`e`07@tePt>-0%5I09?>t_J{8hEE8Jj ziY#75M@AjaGzk~zeMw-mlyy?$Io{1O&-;ZZDH?Onf^no$oAoqDl{i;rVr` zNDP?nY}*)x-^jhCh8LmbNh{?PEIK4L0Yn-B)^CH-MY3r@*lO|mm~i@RDJVAI!NEua zUOWL?yR6}A!fD(mV9K-uF`s6lJ`H&Etkx^${+#l}aT!R+EOP)75$&{U0njLPK4% z^cA`zipJ#vg)P=rcs!yM7Q-K|me-a6r9MBb(@cEg%1cH$I)gTo!R zZ(l(lf;6cD!rf+W6G{bbD+(vO7(LL$S+2384{9N5Dj`>QW}Yr+|9bY;rKXH{zx~MlwCf4i$85H zW&eT<6{UV#G{$MQln4QUuGKgjk~KFUf6i|@UOrs6YC6F-ch#~_ZdBfhzcmIrqmwev8AJk+i|6jX+IQQ@F zV5Om2@mf?n`h;S+i+nTCuirg+^QO^UdNln>P>}n8$8rxXXlhEhKu5{Rs-T=tPCjqs zPfxMZQa^14 zKZfHi_>oKX{p_R4tTp+T8_hBY_4nDie7A_e)4y@cw+qyG@M_!3N24mU?~eUttuxhT zr;q)={21KRQDr<62zfudy>y}izO-#GkyD)H$Zu31Y`y%DtFtW&zJAVi)}Lu^{XX!T zUD+_-dh5r@b;JCE?H^XmpZTgjrBeiH{RT%@S8;w1GKe9vcVGDq72ZBOJ$f0vo7>&{ zGj`KSGrogELSb;fC3ZHoM18I^#4T>2F_}ZQK>x>cb{3#YA1rUYzCOcyFM)bazVE}! zbJ3a~EM`GW6)Q_9m(|liYS>5$W^vE2Z?@ zuO_X%@j~S5UN^UMe|*#ve&f4j|ErnhKejKnJm5f=Bz1z^d5@!aV+)MP<^npPN@fo? z>~<2vz7fnQx+Y-d&-)bbf5LMODC$kcFq`$ODw6`bj#i}!nSM&beTWdo>GE^@iYpC1( zNwEC4uJKdPLhru)00l7*JMW3EHc?7suL+Rf@WLV(1$7&N!d-xq^(!!~g=I2GKK2={ z3!I92QY6pH{sdtpV$q=gN^-qq+JlypS*j{o2U1)SERdky9FU+>j7(XDTw5>n%cf~* zzcb+#|39`jJ074%v*$4Z%Qb`#Bth>{L}hjk`FPvnQbVXvp19)*&P0XxJxZIlN-QO_ zZlkjOo6t3g`&`(a7x!sdQA`2p!;{%lABDr;I>K)#y_To`FRdD=cv1s#MNTyZF9}d_ z72o#Je2wLWdGIh(gSmIPKlSLHbwU+4rl%8$(qr_tym(J!M#2!&Qu3R;5`HP#8o?-k zS6^w#*@x;&HZ#m!uA=%KR;f;=#XF$cAxy=NL+n2t9RDikVji6<;vS)|^9iJ&8ETqU z&0hsnTn?ggHtNe1BPoi9*pkFVR-yiej@L!(z%>%3SPzWlEr#?|zXITkie&7a1Vb8Y zFUPLLN+g71-d)beVOpFcN_@`t6`N8Xor376*3B}96%Ub!=yYASneQt9|I2GVc2 z7vzFla9QjiAeF{R+Mz&xW0Yn1DOCmgjfX5sqp~gUvodW5Kdg;^Vfk1pbaQ=-Ec=EM zIu(|{f-r`IimHvMP@?G-IwCsh-6gSohT}vow%kZ)L{UI{Rn?fN4UM6wM>8=H<@zkA zr_+V?lZ&>^6X8M+yIVe&+U2k2=H)T~dt&p>%uZ70{OeUNlJA@JoMDs7xvK6WE93EF z^pCaOuAc%yzS%@V&+Xz~TOLJHg?$eylx+Ow&z;Sdslif7)7E)cHWtqN51gxWk(m_8 zH#85^uK2JN&$lNqfWin?oo7S6wcHs-N)e(Y^qMU5SIu^P6v#jQmH0(GHEqiDzExye zE-h;5__jATc61cm>8Z@u_6>0X;=Z}a6!RjCml@t;Cil4$8e{>Tn>$krbSB~H{?q*@ zy{}sZFJiC>@dbaLse6dlq34sCB!+Z^|zCAkIb#n81YuO=)NWo_g zHobl0HZ$q#?6$Z5%gP=4{e|kXrJLyY#VH}-%UyQG?W2Wn+!8}A#Jl-YT*q=Uzvn1! zbmihF&Fd4de6_uF8P3?HjZMw+9rrWI-S|h0Yer^KT|HNJ>hz@olbZyw>x2 z;yELxpW#k@vzb3lM~5T(w)+7w(*p5h#xyo&l|S`RrJngV>?*w*jNybKOv2y-qoE)X z@?w#z5`!a(4No(9rJFf2#wLi1gL*m+XvEZ^M2L4qi471-%$V+R(A`j!U)9!}a0?9$ z%U>2cF&Y{!l$YKDIt`sY#f4J-DPU3 zFMfKD7qh&sWy;(S=g0O$M)u!-&^X;?nYOhce<1&;ugz^Ck<$6g#Qr*gh!!B7(heQC z`iOXPRVIRlLH@edFT;B#j<~6W2M_Euk&U;J3Ri7@(9!5&}Mh3!DeYkciPLq??s{|E#bs0NnI!@^`B zU3NE4yY~GCXkKV)JobMXylm-j)lwRHIUs|`B#1)wS5v!A&2@Z!{iZSR~~En z4i)~P0LE~&<4-#m%y02mUVqDC_wB;UaEH&vW!sbiUH6Fcit?3`MqB#up+^r7Ibq<} zPp2Z5`-akCZn?C-%O2Xts$412qlmYk|d3_t$dtBvb5|m=rJnJUz#)4#&IM zF6mH*?9iCpfLmo+q9Mqnm~BSNkeYZ%yu}b|pE38kQt#nW<>_{6lBVXP(wdq}pIwcw zZ*k-(N)Nw{^(fr=M% zvc#r(c7SW%968&O%WIkRL$8lF66!!rGB8y(5gBKCv7roWO4;y#nEK|xy1J$BB#mv` zX5+@TjRwt$t;V(++qO?^v$5@@Ng6l&PM`Ze_q+e?v)4Y0GqYy>X4Z@ZK88*+9Xeao z;B0UIB2)he%m{ceKfCw_N$C!7M?LL#$(l0NiZljlr42qDvJxM+z{dKb!!D}pEeMk zz_S`8J4HBT*UBr(Mz;6Db^hd;E$=a)MudiIPa!20_i zz5XnZ0`f8(ga-=&&>h>zFO{nD9oNb0V@l1Vb8E@j(Ab#xN%QLBQ`LBArYF0cSrm^A zv!;8Rkof>ZyLco7V#m~yL38%O!qCShGi1V2^T)G=4IW9t$V3VrNzmt9P`%Nga)%`( zBE-?v5S)E8x59diyg|RF`3sC+A5A)(ukH{=&AaTvjghuHFo>S zv1!6Vd^X8dPljE-h^avN%9g1~e{d72$z=-=_HV!i_dUC|pDanf@#rU*z;>L+stA9< za3;tq@Ws)?qGL>uCExBjuG%2$?NXQeFgoO49dejQZ7Fkv- zH}yv7CC)@?6707Of9ayeaM~cDeE)D3hQ0T}f`vvcvjNJ~)m3OA?=pEsY`WwMF)+OH z*r^ii0_c5#NI`LgN%e-FB3HTw4N1y4O5uXD=iA? zl;ppZG*A+r8UH;j94J&zI~A>w&V+!|aD5Hi{UJ=IguZ(cn7~g990=$#@@FN$BqZhe zl2?X8Tb7mQcFB~Tdeb0ogFf-a%g^54Ui~L6X1>l*amX7=@Op6*V_S*@>7X}ntTCBf;!p0Y%-@UGc9{2g zKe;E&xG3&3Rakp5ei|A4vke5;n3?UL(y@KUju<3=El2MZ8zk3%h|0f)&_LY^=I#@R zM;j%B09^(BS!HM@Os>c;XN(m=CCQ$tT8ua~31PP-9T}%3)x!h5lHXf=F)J<87TAxF zV`U(wk=e9;x>2MczHNIm@d=XM$L_h4?dQ)skJmDn8tUtixDx#-^6Y69uq=*%GM1-x3i~z>QX68{5M8ufkQTL24dOpe1H5V!Y^s`uO z9OegxtOJ4Tamq=uAz$dOFT0**QAZ*THHV^PrsR#WBP6oIpM>hACxf>E_9hA8!LZ)O z5Cutp*Q5zEN*py|w0C2&LfldQ^l5fy2PVV1hX)%Nmvv|<96@s5Uwg_1S{q@vhd{N!SMX_K&k{S!VUYn4F0Aues zGb_o$(%Slb$6tD7WpJ=}R+*C8j$Sh9zz)Ksex-MIbY)>-a&B(;C-FQFFE8ETG7biT zj^~3xRr`jLBS7nBgUg+4W{Wq*%Q(tQ?M4t5Ts?z60txoI$5D(<$)#%NP`#^N7U_l@SB4DYYqYQ@hq8@@g@tX1jI}{Sky`T^^5HlGhKX8)=f7A0 z#%t}@xOz&E(L1moNc$u9>bGK`yTZ0wOYU0YIAm$2* zym6)jpEM3yIHnFE=WRTu?ixu+pzsXDAU8NQ8w|g3;s%vg7t$eUdA50l^Um?h#4cp? z(8olC!@fVUk$)C1SH_+AcBHA<^6=mW1s{(Zps(0Fyw$fcKDV->U9Kz{8Vv3C>OYp1 zT&U(VG(BFT-+JqI4<)#+ZsxoT)*8WR<4hL_Zsz1PxZc{G$`U5v6&h#5K|`ZAh`w0a zwoqBArhmRj0h)j`|LJnrLbc|K7AjejxyU-JyVtg>WQMfKw7ImEI-^JmjnnVPC4yVP z{SdV_d1i$54eG5Yc|}u}=4{*3^x@gI2*p8w3X9=n!w-P(e2dN+=h$S=8R2`PHT}s=`C5W9o$c z3{k7y%*wNsTI%uyUV5Tac=11N3XS3Vf%AC12G2HJXRvM8n+;$c-rJf^sr~`u=>dF-orfwvjcRVGVVX_fWA=KIYJZqN?$l+ zTf!ZlNyj?#-HoC@5q&Ptm}Z39vY&BbQUEwe^6K(h^16RJ{swqXy%sf}rE)>s6r))! zo0n^hl3aT(2PjbIN>LPA-@mGGP}7$%P&1VkPI|E)K2H~&{Q3~KuDmQK zI4wIZ7gp0F2)9vHEErKU(zc?ce!SPZ3^Fsz!PT+c5^b!(c1LP?^;UZ3XCcpcf(@Lgkq?6Tes6W|T@M$`%v7BkvIM4xlVbD5@ zBb7?~FZ0CuTY*MZI9uY$RnY*1_UBK%fsQei8S^>MHdB%P zPpjhou-`BOqAT*jcqsUiq#(onh5e%fLXZ?y47Q!&na@@UFahGyy^L9bIFP@=8+iMm z5uB4(_PDNx4-3j<7XWsS+GaZ@Fd`}*PE?;UHK+n%=){G&!K*C`d23gqzhN&94!kOq z2d^7>WFcjo#nd79XK>~p>f+NihFWfHh?vh~M9X9kbq!>C4KQjA3ucFBuHM>eQdr z#@MOeucu8NSt+iO!y%%A*O1|D_vdcCID>QbfDZqpiu6pR3<=guV;)@%yFir}=NkeB zmfNKJw?5c_K*qk&(@{;^N>@7q7AlFJJYmuQqnI5A)I6{!2H{fbh+Z7>c(Ezk`Gu%D z(xFgojg=i2VC5DtI0Pab6XZc;3=Z$yZ{}Fzu)l@seO=%bU~RR_u~_`~JP_$`m0_vC zG&MG8?&#{&h`}-`Gz}Z&>3egPg+;HWd%p+h@g!)MJw!hVJOL(99whwRxZFJ) zX28EsKtYpM5atZiz)(&z=ug_m?90rQaL}CMJ{nKm+e*_gJK}1?oB696YbEbnnGlFZ zdW+D6{Ff}B8XzfU?m&D3hBitWaBxsW>9NM{)TTdQwYIaF=iE=2=XkhCP!YKU(^%rb zT!x%nB8{#kIUjN70*A`r16wr7ob3NF!qW}p3ED}P{@2p>2;q0CUV(vfOt?7j3Yc*Lor>V>?NI2b5&|yX0F;S= z(D3zMe(}Td@!8px7J7x>!5naC(z*UQY9X0@73Ia{MeNrK*Y;_t`ZZQj33*kV}HEJt!k26 zDND4`Q8z;c1k;CkNhx?Q6eL6;D(pJ#NP!Nj5&lOPs^@2PQlc%lRPFBY%hy5 zQnPe8gVICR0lp@T>#!3#s3@`a5PbHt;*Iy<= zzi*N&m{D<8ALy=ek$x)S>aY89NscfVov@dNM{o|CrA;;r%qGZMLZa`foCzdN{-US zbP_zM4m?HdbI^Y)BQ1qfe)~HGBK{CY0;CBDpqJ@n{^!2>Z_Ymh*n><)_X}V(SfhjW z0Q;f_i&pqI?6fjE;-pe=M$f8m<+x zzGJDGw|qpS(*GxGK+P#1dSc{(Y1^wGfL;n8!I2X0Ktd(wwzV)Mf%x(pKe+ttWK;#t zhG(sGuncp75J)Wiv!9CZSfh=~cVL23upyQ38})xC{@+4z(oY~(G6xH5_}hOu$gl;lpJ=f7LuhNA!TKjQ8`zrlS#U93W(x*_|&R^z?klxO}k;eVH3 z0MxZA8d@ic|8~lW0{jf)-yy#JEf!+9q5N-gxbP*paMyoo3y?s&kU@?*ZeEh#3aKb6Ci<4UaWlwx= zdWrx2^FK8`@j;d?GX7n+iIXzYe>?j>t$15P%EZ7PUSE)pmU-HIBxas`;tH z_{1o=HQC8Yri>;V)1r1tEN`1%M3E`9=}WwyqQn9~L8P!}dda*RWmD+Pjm_?PUGcH$ z=o8XmIcbp)%{Z+rBNnC%98mSN@sl6X@$liWMG{t42|QEKxLg?|hoP2i|3s2;yL~=F z$9NQ#aB){fu|7x69#(uS_pEOBd^!Th!Qp-cWimg#DAQ(ibbJK)QL9@Sr7iX4NvjyQ z;A&iJ$|B7@pV;?dqFW_uR5L$c>>GTP2yM@osp|~TmcC!+C;h{;x2y=kAwNH@L;|5l>Qbn$cQcwlLMJ{s~2Bj)55IceOC2F84nbJOHtk@lD>R93cx ziQ_{HC~=w&PsF)eTS&1++HhIUe&%Xe;fB$G86lZexjvJ(b+(!Y;7S0z z;M?(i50x1xDU-6YJZ(DTW~#SX#?$!$p$N5P<0jWm<9Sk{THjaA>ReWzqZ1jS zsuf_fbUpecb5TmyGhE}4$1QT4^YXukDucj*7Ge^D*Y6 z`MJtITVmr<@WSHMpE$p)CA(=L&+uNu6>coQ&MG|UYft?)>#Y(B29pz=_Fj^X)$8Ke z*vYbVT_nOI&x_9UoBfHG&5NpHg5o}N5ZTD#p!8|BbN8qj)8Qd!V|8$2@7lG@ z1D@{L{64DsHW#xh`%T$*Ti9~fG>YfG$HN+*e?Jd7e~X~X!oi%@C>p@iIfc^_&uSw- z)hLcLphTA|(&0S-xtefWFHF{|Rjx!GLp;02ZN0Vrnz=~M!TjRGI#ZEn9m{G~qEAmYnBpqCxFE<2y%^X(ITUs}TD#=5b zn3GkgT#)YcT34QUhT<+(WgaG2?7?w+d@}yzX1BgkAtrS-uEDVgH5h<$wY}M9wqJRy z#G#?=P-EDkn0{l}f25`5X7~2%CBTQWqI|u;*2^46Yl%w#7z+C7?fT7KO$w#Q{RJ9Z zAk9FU%H%S|x@uWb~3Z2DVImXVKj+6!O4q;juxz0;_44SFRij>Uq|m= za++^?1r5S9_OA|Y6kL;wqlAzKeKb0~XKZKBXO^(G9^Ce}k!@fKCT9HgQ^3mTirpGw zVIXsfMg_n9o16)tM%^jDQX~T$#3tW@z}V^NT;6APdzdxH4_gvT(!Xnosx^>H5aCp_ zIygqH)bV|LaQSndifzlcf{Y)_Se}ru|08)gr}&U1N8;Bz!|5;U*yA6`qt8D~ECA3g zOK;GPlBSREL_AIoE0ZKE0Im{kglg5UrEF`hhWcqnbq%0)y`2wC73h}ja1k4Z6r%6L zfyxZ{>q?{YI!%-`60qH z7d&dJszdaP9ghU+^;Sqt8qEMATnX}Ga-9I{qu=x9#us(0<%S(w@jv(T7$i*irKD(e zO_cjNF3%2wTWi@sw`5l0IT;GvY_xDEnl>iGyi>2QeJ6`=$wweUB_cx@b>eq!nR)5x ztUidvr%Mbx`@ibUt^zx?R@S~A?(UAlfA}~%S(M4#YL3b>3~N-5Y;~4crWS@-a}lUl zGvk^ut?PW)v#o!w(im}ClV7K*ROom}Vo*&ZShTj_bk3P-uRfv}ro_W#Ge4mw>PSZ+ z1hhVLqb;SUbGl|^Wkpwh21LQ4^mt!R?!P=TXjXzFTt5) zzrmO)^#yi?`e>DShoI*a=Oxu@;|(|2u{Pixg2E%@shINJUm!%0u5i|Al^bGkj;iw$ zG1UC(xEB{=T6b@0X~y`%iFI*=?@EA3%vp0ad(~Na4b*kNh$Npxs+2E7ZA`FjIbSOT z#o(OHU$9+)l!Et!pwsQgkYwsxc|jr>lMLIb6pJ&w4xYKCiF>$wr640CeollzA%w^D zFQ9`jhWN67xrO}Z>Np!sCo)fCJl|xA@RWvv59o31FpgQH&Te04{)&JwSm!1%F($Oe zY!I|rWyNJ%wi^~nvf#mL1 zG{-qX?MNn2F>eT=atR43UfsE}@%^(1*oD{0M3$ApN<5&%9Qh3kqlkz&G$iW~IgCKW z!8|2UyDQ}TP1V2WW0Y*y&qm?W#<-Mkso1 zpPe43uWd8Q-EA`7SJ9h#%^e+@GP$6< z5N~`B(!oxxCAZ{##HrrwGqdc()Le3#&@7ZQDaUNaIf zsxs*LIs0=TCib;ke@K?KKQM0mNAZNHd7yLOj*4k|tZAodhLY*!wdF#S*^AV+GQrEOY650vyV+*Q-0xJf$$d1qy0xl>nobQ6GX7x5}tP?Umn78 z9W;k>%p|KZ%{8hSBIgdfuGy?@P3Oxzy$(p+jFSk+Jqv^DQe|Xy@9rzUm|QK^O}= z0Pu?V_M0r0^Ch#Nae3Bm81;ye-R%uoPA&rZ@)J=5K<4)jlDIfBbnxH`FSrg)F{ zZRA5yk3{VK)6?&ZQOCG8jZ3yYnXJ5mg73SV>#hXc>0IXB)3wCOw>Nfk6;s)n%ScE_ zrIXKJV?ZfwG^rD@74{IS){CefazT{9Bz)ZSo=TYJjQa z^t9em)q8xQsjrmDvPvXxC@GdgEb+2!_f!P@9XD7E?q@&wDS2Qal&HtXWI#4GS9~r& zrt~?tEjISJK=!)(Xr0G|<~l#Nzls`qt^ixP%6fsbyT0TAv*Hh_8l9ZiT>%%7qHx-b zW_Z1};KuMF{fhRvJEMc@xTBQh*XeIHmMJg zGS=~6InUo-Rmfq!-SZ3~(lQ#OpHSSCw_dC#<{H1x4T7eU?H3YIk(6Q}r$}I^ZxRoI zYJD?%9FX64!up2QX)_{EUzerlC|cuK&TcVke95xZ^+JHnM9sxDT;k|qUy8KOxaP(V zQac=Xohq+@pSZeYm4gNcF*We8m|}Gxp|I5h1BAnHQyFG#@$n<0%^uEMRuJ(51V=j= z);^vZ=QEgOzZYSbHfI{VZ%!!FErphH<}p= z1|ez3%SM5j%lV_7y!@EdbAi(}9Vo^jt4(eO6Uf;_ILyvzt++bTMOC6h5DeVf_b1l6 zg)LLzY)e6*WOAgI>MdWCEiRD{tl+g|R^cZhLZPAHrGF9Su};gko~#kXWGvbm2^fX{ zS{YNcZZ#T7U#N;G0apcxc8YBrZ=>HMIQzE#SGoSX8C-&3pn?DoM{U*E=) z=6W?-eLTcL6QWxeaYaS9`#_CG3Rps%m1vx<8ujfl|XT6znOfrOv7Fypiww!v|av&LcJ z!FIqGvV~S`uCtDuW{3>0WA(P%7f0PWhM{6(Q)vv>I;0otA)&#JvN!BHFlbu?>5JNS z3423ROiby_X!}QLr4e-QH6s`Oi?G2Rq-=BDqZ#JH^su&Ie8iY& zb0&S=daHZA5mvrqT||-ui@mczDFnVJL!E1%>1jDaR<1 z+8{Vqkb-o~d_R8|6Qh7XMwDG>)PN2n7ZPSeLJ>|0gI>tVK|>Hft6E>>B-5357M zCGh(`l5A}^`HJZ@XOtnmzZZszzqW8)p5)IC-O5)i8g+?cKc6l)ny$=2MS=+u`?Gx# zq1CSXR*rLaV$d6vJOizeNhWE)YKkviqt|_M)I6aLA08D0uB1P?YXUKTo;u^&4#)If zZ#giWJi(kJK&72WC~$4BY}6ZNuB7sbSvjNi*Y~#@s?Uz68>eQszP>NdRGHA%n2?nn zhn<}`Gua-mpo?`KAN^Hjn|b-k%}C6j>pO_DvUW~&N-l;tN*$pPiQbQ}v0Lr+gOEi| zI&9xEvh{p3x$M-PR8?1RwpdHBxcEXu9S=8FO~W1#kcR~1n4Vm#Rr3eQC~#eAO8}a0 zVZAv|H*MNJq~Qva-d^q=+nqUs(_0PB?&ALMg<+l6+Mni?Y`)p>#z&PXQ&t=0>fW6& zG&hPR3?9!+W;C%f8?qlwj-fD}y?ibwa(|is*+rJ5NReRoJjmghf9+<9EN7NejPT4>C=Q;9`Gkjx9NXr=cr91*4WUTKQffDIKeForA2X_vi;;*DgV0raSE*HcCr3hLC}-_ZPp}0?p-e z-Q}v{9~m2CWA%zE4U)?+Xl->yzv<2Q#*5AEI&HY}CCk7FH12dEKa$))Xi-K z%n&jkOED_+zb=i;5~yE%2MzrTajZWA*XNp*}eGe zKVSO5kQ?<%nR(Pk(vc(&Mdk{=lVnI=&Ex8bfP*)d%0In4P8pN+rOy3f4a-c~>3ubx zehpz*)?Ht-T_4@9`g!-~IL;QRH4pTV+n8y0I9dSRf%)v5{ywHec|=`w8ndUtcbp_D z5xJ`#j#BXP@JpxL=rTKVgGSQxBv_NZSiRPu)oN<()z>a>*QMKQc+Pdx4a9!wBB`BDRpe7UO8*TJ4K`|J`jG`jNrtya$c;}5^v zULwq6eGPJ9rWaZ7huK3M&UBVOpZ!D4FTG|_ovb@oLzPaiTX?47VR6vLKoqHY@D->X zvCNXQ&+)M_wjXsg$>aD$x;C!;jUB^HB(UDvAbw{WLa=FuP$<%uT(-948Cbauv=kNX ze@&lv)cxZ#kRkT*J}>IC4uJ$`o&}2TE97$rh9h@UG^6)^`6(6|rZmt2i7H6yfu%H4i*P^MmW(W=gr?0GYDIT~?#3D^*zA~!fD zV;uE9Vz6M?MaiJmXEtKEKE#0L3~vYg!DYY1ZnLNgK#LM5`^YrjDr-CMHdWMf|H_!*|#vkhJF3 z`!asK+6trUujyzg~5)nx_CRjtaYPjHdbKL7|1W+kGWQ z+g_;9@6NSKL#A6$yLPSB`{RcCtbsIq}t(0p3L=!g*N z#e84Km(UKEiP4>{uVurtk&MBSVWpB7HcU4DhW`77T0)r=-y}0~W#zh>AUOdI==FmT zk1in{7mMLxOjdgpQT2|}Wd0dwor?B(Ejov^xiPG9u%EEJ1X79UqsHk}TjN`?Wt<@J z(Wf#rzlT{79{zK=`Ve5JF7UjCykzn2XStM(b~Yh)q#hWtc`eRHH^b$n!nDG4HI3A- z&E)G>x;?Sfp2rR%9x^UYg`49`l)d4Aa3A>!ZO8ZT<(fGX7t4Y)7x12WN_|w z!-l(p5^Y|pb&=wcD`}%bEz~c6ByH9qgBI4H%Z1TL@|G@Xfwx~T1gV)nh(m5^pxour zNw&f$p`d$tpL^cM>t@9le-T7jovs(bKaK&E%V;0EHG29Y%Pb=543bvjEE1m*#rF&R5MAwVp8(0+5VcUJOTCjX5jdC_{g&&oDl$i0!VOUYC{qz;@e z@lJ43rv`wJhvw)oBSeEt!phEWwN;W0z@7);2~*a7wm(}6v%B`U*IU^OH8WO~ivCeY z4=<|;fUW%B7go-i&-Mf@{aGI25{db$yH6WWL1?1H8d0VnhG0jNta1Jior1ywQBhzR zPF=(nIVX3caK`VE{V;d?-A^7Lmq>PhL}VDsG;4fmcLrYECy^fU>V^5-$Huv`+f!&Y zo}U-xv?Z4qqvF&AYH2^q34pNkLg}9}97mrmSJ(RI&VC1ZWwi0#BQi_Z7_|3B?l}KF zp%Y60NlqEnw$A%D^~Pj2>f<&lQ<;tMR>wp6>FZAuckyWW=+{KMP?5|*r~H|}*54U7 zS|q8v=ReLHWT6);4UVsM0q*u&(g;HflbAHD`r8OPzkfSYx4-|A>g0P4p{W7H<5v=w zh5pD%OG~H6y3qaM-Z!<}TKhF((4>5Ul#4p0HB!8ujV-XI+-Nnw!Ro$2x4IoR)YP;< z!i0@^7xPS-cslNCyTfOnKIzDoziRD9s@O{3=K5~;lRiz~6PyZttv=6J3D+>(M}(Rz zp%*wmjTUkq>GU+*o1S#vfoD^JsVZZ&x6BT_^gjEC+ycA`pY@q z?QVk~K|w!Wf#(+o@ucNUeh+3js$MUY_r-{fbqhsSG2a&@nAR~>tFR?M+-E`Xp|(5$ zcNFhrwSX)mqj-6`=@jek7{wD$jdoo4W}dR~iDQKZ9c}uLftLp(K9QrDw9tF+UEfFm z6?F-9#sgSSTxslk>1nTvz-C%wtU6;#dYXk|J`kv#ZpEfQuLCf_#~~=S+%0LPYlZmO zna)-2G(*>-lQr-(#N64wP>9lft5?XU7MRQ!U4g8l0>$*Uii0U`}c-pq^^b zh6SMu+z)5Pbx78NZq_({zZ&8z<#&j?hp1b{&=ic1Oh3tDwjM=TD9|lkMw3(HHxF%g z31Zqbv{HmRxcVr~3RGH}gN$0dq&4~8WR2D~u+wP@(zn?NC zL2h8Sz_o#XW2sAHbP-;saPH&f8p-br&wCShl@NIl;VZyr^yjn9=D2@E;U}87l3HbmyFo`7qf#EGq1G*C+DMutlJ{WfPPPG6FbXvFJMQKbK-qb5PUe zL(7pvWPW`4-Q(j`z>1MHZk-w&H?FHS?L4toa3>U_<2a>064nN2(N&V)>5c})FAiv) zz~;33*{&^f>EY@M81E=<=IkdR6O|j2F7$aWq<&K=a#!s0JRSe~o|;5?#qTmWcb|FA zZ5axfmk8^egtcQ;5huPNyn#qBZ0A6QV!!OtOjiQ4AF2FXXZe3OPv^4}qKvupPS1m6&T z0JW#&qO>U%g%lIhGls3Q5Ypn(&j10jYigNAsu2!h+^)#BXaTRnAfJWTIvh*H3`kKi zG2+dRiLo~?9(zjw+%pUbNrd{@!H*ju-|Q>{p$d{PjEy`V>nETW=I|d=>ydW!yjeSNhW7K2S!M)U$M$Sx3`W=8+rL#xK~&#R?2sv@br z$Ma5rGFj4XsUm5m-2ipi!=+*UwO^e+pPytuwrzYuzCMpnf&3r%OOWzId(y9&#^K?NmayyGnZ--pLUoD zQOij2ci(wgxx~qf7le-t@P0N}F;FG6w-NC08lN%_73E7@t=sB$mE@aSiam;|gaN^L zelN;x7=&-!n?F?)2a-1Y;Ni(wsv%%Cb~%|5k^mun@y{v_G4vd&B-=eB3Z-7|+q=w? ze6jDo-2nmMD^P*2FUz@>KKCwidhxBa$-X3lKnwZ&KxVuCK&C4S^grE?ba}r|GV=2i zvV#V^7PX?THaZO(Tr6kU4~e&XP(EPXufC@+eQgqtSYK|l_v*j-!|ro2IzQq9`5`*> zb0qEw@V=P+;xNf7;qp0}PvR`=MrV-l+hJFh=G#%7 z170kecGBNboo{qU!fz8qi?^LFOMJTM=Ft&x1%-I}L z5id%KshWM)IG@YSZSv&myi%DqI4G4)`#}71sIm07%IT5H=-BF?xi%$l{DH4>F5YRS z54~Lzd=Q^4C1+e?$puC$FdCceN^{)+|NrGxAlugw;%h&!LX?B)*nX;Xe7ySfy9aUC>gaU28AvT2 zgUprR5cyBO-@hvFHx5m0esWh@Ar!M4HZe1u z&|KzlE7T{C2l=gmWl6acy1q2RiU)^nw!1Z(e~@V_iAlH;aP~!jKf32z!-+uz}R&JwUtFZQfX&TMVOSU=tWXtvp|_dkR000Hb&6G=bm zC%BSjhZdu7K;iyb5@av84pNV%b9mMY3}EhH1VQE$1g)CN^5=d%b@kw&GreqWa=XQD z4D9sXYZ;NG_up?XA{0G6elMC;p4mvLCIcgi-@bmIuOb`Uo&g+a&jYFlP3i}irrpjE z%Ztq}if<=JjymdpKVDiu*N3Y*=v=Vc*E+m)Mt-r=e|B0&w$Kd3|hzCK2wZ3a{Km%0}$Q$nVI|JNK4yFO&^xbXAx`780CWKZMW_cHdPWM zcC^+4R^EL`Jss~}>fx(%OL_9LPP%UdU$U3%u;nQ0ab_4GUOCDrbzE^K8@5sBOE!AO zqy0t&I>L2q`E677Stb(2o@#&6YgkW9=9oELtSEl0O5fv(t}XpKW^vr~BmCI_z+Mh3 zqXiii4c?!Z^YWtR+nGw5&uEj!SLQctSrn8?GP$fG-y8MhZc5|Ogx3F}h0L@`$paa>42Qn3~Gk&?>-kgb_sZH+2rv}>ONv*`yBz*kl8Np&T$hYUgDObvLVVn-CT9ggs}JNYa&s+elGb2q;kSZJ{al z)~0?WJ29~V%C;|(u5ptfpj|(4CzzRo?bmEI&KD>;^&(t95tB+Ek-2Vblp6YkGS@K0 zG-(_~=dgp-eW@;btq0X#P`Dj;mwu-kI=c}T`MR{AK%<(POE&MO7+$MGQwrZDb)D(S zQ-fg-{(62M2W3l(jlu^oooni7>sD>Go6c{4Je+V_fZ&={BDLyv<}6;FHc5piM(yV5 z?Z<%}qV;A%7dt!MMhI@Z)SC6^KoD5&zSlDVTt=P|`?&P@eKEFC%wTN4R#81&`fV4w z55BsxW29LQ$KfqlVHA{a(@@Ya669i^-S{o!Y6N98xDq%hr2v$!-? zSrMYsV#$)gc!h5qUoUj1Z!p|q$4CdM3UCJPq-WRQFP0pRR0a;4*y&ouc~@aHmA*NV zdhfP#U%aPoFzu7EdCan2e-V`4>lr)}vw`qQi)TtR^&)yHOm=s`-o$Y@H!!Uz*u3{~ zKpgJ1wJQCSY9fB~zWwQUHzFN*lXre2^-l3SviD^*P)e>`k-or7sTr*Hdq_vugRkp} zbw{A9uMG}0n@u{b*emro#vEVfBeS!+w2H?cVq+~E@0vP6#*$jw%+OfkIHG#12@+rt zzY}S(y(pDuJKVcGZ^Oqn2<^xNfUJE=#JqRc@7YicOD4|4uR|j!M1vtX&KRm5CjAu> z2xp&dI!|l62;Mgibt*0@h7iQhn&)92?V=r}#krNHV`J`de)y-`rDkut3N80w6mV zv{^L_VxO+XQwmZ<98khOo0HbW#AG@I$uc`^aZmYocX}CF3`@ItBrxfz;QGz3!(uhY?vD<^=8I%>K43$ZJcti=OAhW|6 z@TsHK@nyJodJFiid{B!8Vi-{gIIxX2e-~o+vl!;NR^6wP{9(b7&`}2bJzNn90Y{>v z`>lhH0!Y(~6#(ul_DuQ3Cwf*_vjqZK_2UW}j^S8DZA5}-ji$b-$zs#c!~`9L8}IOP zD7TdiX7gh_pQA^#wYgrs1CTODeT1OBg@WH4no2TDnB$u+IKZ+ezq{`|=&VFagapi={FJ!+yk9U#k3gvOTpJfX&ez4zwOQxJn>ZTJ=$&e`^ap_2Me%)2;=J!r_GZ0 z8%c-5w?(^Ii>t4G@L`A_Dq|^ryG-cCkCs*A3yO2TY1W<_ot_@&Yl{kc&FetZ#~UO) zB0@r(>36g+R_`wpNel*C2(n}Bhi9C24Q87ep!*^2wO@@@o;!XgI@%-XoJRa3d-i4& z+GprGTI{Pq35P<7KKxbN;I}fDtHjUo@~r2}qg>CvDhK)LmTU9`WCs;WC6MozPGJse z1G1LXY-Jt|a^s|``!jNDbancVrmVGc1bs&pyE(8KyFE|)vkBJXCQm#h$QIxZue${# zLx&l-?1qxgc^$4>kgQivy(XSDWQ);h?uyU3cT_t{^u){ z#pkhlu@`fB!YF-d8$|ltx)bx7n+S?9!j(6i=q%dg^Hdf*4j>D?_+^jZ8}A3rWvUmj zYN0k5@^T^`N8{@jhEq$8-rMa$#L2Z1#&DH3tJcY6(oYJbEJ0t)J!eFW^BLN}_sJYS z@JLb%twdo_Z*TQ)kSUyyVO@T2Y!!aBw2NmcM!|t{bJvGGot0mi9&VtvyEnZ%TIJNg zhS2!EUe{QyLM}Rye^H|pd_&)Ukpj1N4;oB;;%#Q2g^E;WB&&2u;z&yp_zjkX3gx^=D`Q3GIlJGYN z|Ljq#48LdC)}$ZW`<3Uo9WtFc$cjW;n(Ej{L zOnX-I7#>iv$jEdI;ZXt>v34bM|sNS zDzzNvi0_}*^n8I1Z=o`liT(pT{-W(1mrIP0>2&b-G`UF~4x}6|G@Xo|=So<_rv5v{GvGygMX)4{5uaDSFVtj>@1_6J=19o-9^~0o zsYdm_+x2Lh`Q&Cxko%nXU8@V?%$T7m)Q%Xo<**{RR5F`Q3dP4_6^!D>Qv1^{>Po*A zL>-X2_2%h%W2yNlHj>hvtw&YnJAvb-h>jr&c)zZfVFIPw-d?OFZr?Fy`(TM`li$T^ z`_+nak%rIvWIB?vkxiWdyD4nG#eLu#4VDw}cx8e?naS#w^7lK*}{)CWC4pki<9`#ZSI~*J*ZsPC*f;Lbp&@vqXqPh zB=7eFwij}S28YpCRsdxzjyF#n0sGEYbrOLC%{zZ^;g#>1(*I-Ys{^WRn!W*Pq@<*~ zkq+tZ?hvHAq}v11jdV9iN=Zvew@4%1-JRcc^!ASD{r-b9*Y3{F?9A@Y?r)a+kXi1` zvdrZ=TPI`$)oBK%(R1g%>j-uE>;UoYU^Wl#^#B@@aPYG4 zgW-^y&YpX!B&9bAkD%3Jn^$<%@^cutkP&4dil29u4h0n_iK2JgrX54O6y3h{!pax; z{XrDZxe&PUn5Y3S(!jk zj2CGioo_%dxN$%CxPuk2h`(9J3?1b!G{$U?(!I7|>8gd^d^Uf~9g1-{ByC*9ZM>R% zfIt1Mh|*z4Us(>9pFnn8=W*saGD<3s8T2JmErI@~HrihD5uG3}K(lczQ+XzkW4A0YFNahTLdIiCuUcpQ9NHSUI_yKBE zV!kFfoUOFy18V^%*BvbulWi}D+vRy>i@k59+%|ytZ4tBdMPAulf!a?X(gVB|b_MLJ zi7SJOtKs{bxhlRJE={180S9cIG`gG!BRjMWtR1X`hZtFcE-yY^p3i^Thxa#*B2qYA zV;cG5=we3}BjtIeVUBI|>}FijNYCSiEIk8%cd4<>E1ar?THvsE@a?nQ%LD9Bk1O=& zXw$Rs%$Ow=f(S5Ua3e)0PkI4m`|4=tMw0Mu!{ep8iuLDVol)u}?D-tX2Gj8~$uF;k zSd%SN9~+f=A0yk|W8E?CT$Gl%pyp78858ZQ>OQWfj0CZ&hiZtzlb{<`lgQJ{&U7jJ z;!A%ktRqv5;Qk^ATmbm_xvD%~Djy}v!BQicg{)wgTOC>dtvWOuWs6s*y+uoR7sX;T zd6?pjJYl)Fjgc5cIGP@XVpm~i?EMM9Oa~^a)t^|vP9yJm85=*BQaAN;0W{X_72v|t zbeZN-UovPDhUGcf29Ty7cGO4qd4M2fVvO0bA>%dkhX3fB`Hv=^t_8Q=6WavhHo%E$ zS3m%udEpnTf^~7&8Kup<0@>gF_VL0WFSgH4ia@p>w&1edl8J~_LF7Vx8<-EDXRkqLYV1=BT>6F+lkts5I|&z4WdwMCU1-z0Z2zP6)S6Ax5H)(KpfoB=N{#FJ}A~ z%Rlk?dAY;*EQ%WFu#FlG2_rh@BdZY1P%<6^Cz1W{;NikEqJBj z-`@g_2yucTcxgf^9RK{JfR@ek2i|Bx3@#o`IVtuxLuh{cltQ(?@Yo?jbuWP8ZyZ!i z|1SP3w}H6t?k|X+2^Y9{8qMUtA%y^U0$C7~;MP%qzQ2acR!R6zao`_s6i7N*XvZKx zvfP~sR+RtX2mb=;n?yn+46uOrzb|!4lK(5RU-Dy>C82(xg&2`;Qser!!2T+~jtBL^ zU-wCp@L$lxzeqsw;~OySJE<8#>FAFhepUMWACfol-^sr>nz3Z^o0{Oi$q?w*?2xAb zv&%@}!Hy(UNcF!$>kEO{0P@I*0zGHyOwsuRHx>H3U)xkdQ%n+Ia!@MX{|M|CYqn7O zj%ff{I&JR%L-wnXAi;rc*N=qZko&vN-^_#6ev=FcrO|dv1@ym+0bG+vg8eeNR`HLr z7uk-#dnRcjWR(9OSCxPAc${P9J6G4h{gcQCRE{`?IH9I)?e zB)>wle^}Ck?vwb7!{tFRd9bQ5@gFi-Oe%!!Zx-5dD1{)8ak}Lr|HD!d!gpS^fD{uzhAt66?S zDYW)z1x*3_JMjY0(jRB}OC~^{u2YAlVz+;dxWB~m_b2UKLL@kRP!E$DZN-NFZTQ!x z*Fk_X?`z#SYyV|4kbgeZ4*+zf56#9AO9WZ{8|MFyR{;DoCZLQqOiLhbe?FxU_McLJ z8gC^5lSyo>!T?*4hsytN1%6CmyJi|p)A@y#W`>IYk7Mw501OZ0us%WZU(@;3eQ#ti z5qWol>NnAQ5ZYq@PqQKIn!pG=)`U_V{!`;MC&KrlKTh16A6%IKa)R~mnvcuTvrm41 z+^z{$vSznpbkBGMXO& z`7svMG66o4`v1?O#Ypskx<7?e1+y0E{I8o9QPu;XG&vSVBH?6E&$|J_Ny3b3Lp2D5a4BniuJNQKt^@xI`e zcfo~sn|*nNz-HL@1Z@%UF9!OM0rCj4m*4F#GT@t1AR;6Gp5gi^!DLF_4^4m1=%5$b z%6|;Bj~`6tzx&|%&z!N&1;tMETLgXTV6u9%Kac1?PRj3I)K}uy=Y6(dvaMIZ?Z3!? zS0{%5{u0b;;Q!w!`!t}`aMAlR{?3*1Kgyn!^tBqO1?M%pzCng%_Td3gVZ(;G``^0z}{&i7>n#hM}AMfim%wv~P;Vc`yVl^3LWH|tgf3Sa$ zp@-;+>G(>A0ckaU@810h$ z0>{Y6ktZuh?F+XIHg>jm2?}B!#oCCzY%^~LKDd%q7!l-tI!ZW#O2|>pZGisBC(ZCe zSnT{09Hiqf(^=PpGV)$tGZti52~cgXxsvfd_ri%=o*;Qa>(pQL{CPzB`~r|GaqOcq zi}IKQ3rpw;Lcg>$nW^25AtR*t!Y?hXi$cjz3LImst(~k8W8e~EU{SJt#CmrYgZFZ? zv%_pDreT}$&T3GQL%M5#HL%NdGdGDCixk}%_ao?XKZy{b7MOK}TFKA|a=cHJ4ed!! zos*W?PbPbN7EawMQ5-aU_ahr5E~eN-ck_Mfn1QUIcOYG+xu5bBbADsogFwh zSwf?LoHz8XI$TA6%?f>{(3t)GW9T1ys0vXS85_&28w+?bA*_!Oip8|&L%y5sA&n( z^=fp4-!n==R!%L7pVNnisRl_{&05C&w&Qc^m?wTwviLEF0TrUxk?(h2&V1|9$Wa== z*tp4Jjg0yIRke&zW^xfG?T+^Lm-}~{3fA|ouV8E&mtJ?2KiK0yMyCH&8Tm3kS!{?n zlB5guF$e0lw?26JNgc7B!wSE&_a`5Niw#(j3hq z?DwQ%mE@Se76rIy?X;b<3N|DUj^XVnFd0CiQr2x1#=cy}--;2kBSpg}^v962+mS!q zhJ$IRz3W(zCct~8^3J-QRsx*D=GSn^mn6|9MTypE!nqa+Z^!1WJEh=$*j4vzCU=`D z#sQ1VPghLnV|sdeyosT0TKMgGZLj|fRD-5s2wuqo8>yH#2s8;Q zw^Ws$TS^c^ag|kQ;$7cQnH2rO*5QeZs(em5r3$>E?{uT@- zaQwDT0W25s*d~9iZu)|uW8>lgD2tP$fk&|&qVG+MsY!M`^%x@azq=4B{ih2#Ifks| z5ayAD3BR1Q_fP0|PZQt!wtt$%u-+2D`>N87%BBX~!6@oLj>tAg-2O@{2TV!vGAw{* z7H|)*WaFLlI6twdf|CsaphhVnz||J~@P1v%fE)_7%wRZ}jb{31vidbn{u))EDS$=v z=lNG2^{Nw2za{f;vK_EUd1tr4Hc|0a%J=qvCww7BDuB$m$UVV97E=$eWdGj@Tj&r> zK3o)>;00AhvPX%PCp3?u{F_~d-{1aj6`0DAp^H$(NbJG; zcl$%GU5@{fNucz@A!^gi!Pi>M-3VRyN}+e-<4|l(w+%8TPqQ=+_v#)!d`5LG@sZG9 zPhaJtrVKfd+mppaBlPVb@ZViIebzi0j6R{~eAs|X%X>BFp2)y&QYpWq!aawm4s3LU z?5Jas?j)xRxm&LQd*8GAapNEPm`wHas>WtmYt11e5^-+VqF#r#KSDqPSC+-RN<(^L zsV>O511(SR)1d1pdkTOBQ6+rVMWkbA%;S@5ma{NGnV)L1Eg=jG>@mS3%d5TFNq zH(?8VWaNnp-74%!)W~Qsn(%5XEMpwLXxGJP9UmzT`c5WtPL{P<2-~7qJ{X?7!&KZg z8_ItN`MGaqMB;8Ud4!m(x%!9P7LAe&+CJ@6)pJkE*L!&;B`!X6LuJv;{_f6jqH^CJ zoaCk=*?P)oR=W)QZTPd!lW;@r%2=Ll@z)G7!wKvtq5ul?)`PN>$Mcd;r3sNw`7ygl zEXr1c{d9PO$5nS&F*q2BmvV4nuC$_QsYAzhnfe+?E4#ZMUl+WcybRIZ_k*>36sIO0 zpC8f37jtKZv_*ojRKxamdgL@uf^*@-+|O$AhZFg)Z5as{Mqd!bYcABI(yMZLmz_NM z&7bd?3Fqb-#ML`_HjtYqxo)fKPac+rxD;cxQww(u5@LU_WT3^FP>83i90kA2*dKaxwH)1$hZpaVqfmSfiNDa1a+ zQO%27V|NR(hZeV(ePdpjFU8RIxsRwSN5+7%ab8G`yA>)qRkv>A)S&zENoHhV*D#BE zQH64pX7CqwlNKxG1B^^>$cwaul%kya_|O)PB{EjFNuK)}WyG1VI=RG!Sqp*Etmko+ zuH62N7ZGOXEUi@|-aj!@%&2P$lyP`j;A=_-uvh!o^hVkFeLb2An&PycgkeU%l06T<4i|lp=Fo9d=A25vSN7 zWLg0n>I;G)J>3`NWE}^SNEN&`5?f@-Bh0(}g8#uptIg)Xl z!bT5f{Q`Sj_OQU-a#eXkTNj~3sjdSn+_zeWyGElKQmjQ3{tN-xAufbA&Ru2_L8~ja z5pHr^-M8;xIZR>#KRk_a;x4IEvHchWsiv5SXfnJe|1eFD)}8XAGXAqOV8|El}XiL#qw&csm+5=cGTUJ%vW-s;20@sF?F+!+7#Yz405IJ=m@B1JCpVc zvdO1Re1AETWXW%PR0;L8#5Z2Y;V?>OTUg|R-0ANmhvu}~H(0V0*|xe!kHTbOJdsjP z#qXO^9()ft;qSq|;vc_pc86PgHceG9y)b_`S9^b6#50&AOs9}Sp@x5RX*+YaHKRs{ zNvxRR7mIO_0*Eh!Z(_g<2l zwgsMetHvH+I#`aYkZ-+X&et{r-k%xcJP{IO_QWx)P!W!Q%%a=g+6ot;wPWGHPREak zzPVBv7-3Z*i)jRe!@3nc_|}5SVduRQ&LzSy7fW5UqPei^XU?;?|sTNiS4K_ zcL{HHUF;6&E`DuCW5AK=aq_dqOYu$<5v&leLFA~NC)xY_3xr7Op4wDwjG`!nG))#8 zmC$H8Xb=rPN z7;wQc4!xx&piMdI zS-0zP)zE#|jwPu&A)7i&d9(5CeP{(6)#ip|t6=Q_ZsjBVh}^7~GULQ-9qbbOppj*G z$yXL01&`yBbX;vKyWFx(TG|~d7WQSY?){yD=tVlkCFv;n?}wcC`~=;TGSZ0Kw?Uka zwOwNpYAs)&#lH~2OgoOx4Q0EOHQ~5n=P8);68emnz@t;6AjqnUxi z6DjRbMLe30>~kz+{y9@3wCZC^eSJ$(Qch!Irug#ZPGPsvUMwXcy{5#&@iZ*}8L6|; z?xj$K5{Ytspf?CteVMTNA8ebfz`Vr+`)7JReGve|$quyErYvnq_GgFD$ z)%4=cjL5sdTMp)pBG9`tp<@E~d}AfO^9$ud!>KO|C%VMwWt}kYMsifd+b7t~veOzH zfk$g}Oalm2tAs9gvnUd03)!}@z$-!E?yS_QMVpgHJ$+J4;;W(HS}!IF1)Z$yo4&)z z-Y|ulwRLH4gYRwJ#B)1>MRb&uridpi1O0DK5v(ydIvX|L4=A^tM#IY%tTJA(>4A=V zB)-Lsj&pX~bB9@ImmOxhpDEv*%X>eVQLPdoUuPB(epwRD69Z++A!rZctn^#lig$-8 zEJ)C&56`~+kR38U!4%-ZczLhO@1V-4xXNQ}N_D$Ll80|Sw0Kx~ZSOa`kzm%^%n-%M zF3eoU_-V~Yf;cb62V0JP?ek(JvV8?tOH0Rn+l^T?*PH!J%h;#{j$SiLa12Tj+i!YZY$}HH*O;W9xQf~rF9V?zlb@Kg zKM6PQwvwav+vT}QtzAKOs^hp^^1EKrhh<#NO+EM5WHqQDr*=ZMw!sV*p`5LJz~KU? zls0^_I#{$rR!B`QyxSxEg*auZZ|Gzj#|I*$km~KH&qoD$-Zp(VxvPW4pQ?R4A~|R6 z3?@ZVaTr)XygGcXQ36kBq*wNmlN4AP8Dk(~G~_s9nxx4;&P3_T)6P|q4~pn~ku^_L zuU0%VYj$&Ka;`d=8jh^D-ErO#DfPb#cR3nyRHjb9u*7?Whguox>KYqseA~h)iNdvX zq1h>quMB#K+>=Mb4oD+`_i3S4Jbd?PGcH)qb#E)$>ts&)(h-WxA&L)#O$;b||;#@k$tmN@3VA~5snwW!%&$Ut{~ zc!oJ;o}X=~{Y7f+;O86xk8l6f$$Sd7*VQsCv^R8z)Lz9K|Hgpg8H0y86mx}IeuuK2 z4<2Tp?LMHYo?E7Rr~o@Pp+_o`{-w@4oxHs<8p@tGb-a|97`JEF8LQXwi;E4pelR#= z@F`guOUMwpUA!alvB8 zldff*fn0M$#r2}(Hx|TZd(L*VPhNhg?aSkzH4uet>dI4C7eVTyg5<1xb?umYKgH82 zjaYCzzR8oJYtmZ2v&ggzr=xwW1gS{Wa_O?jY$}r!jKMC#;`cg{mTG9v&%LgiDHA0m zm;4!T49A6}GtJD`Hm|l7?PWa~<60wb>i@Kv##w3<;u)apWi8!i)?=QuTck>dMamv_ z`0?paEZ|{@Bqfkm@SQB%iSK5Q6YOq-ns}g0!3?#pzF)Ru{{-#{<87YjBt} z8?AozMuK4z#np_9m5YhX$h}eSvC_%W8w&e{HgXXfI_9|cu5Q+ornI!fiNF(~U)4y( zU<Qm!f)RPy_y1QBbkEX%5x8L`6;1`=!=9Qd)# z#CHYvi|GUv>R)XXbA~*ZmqVKRykO9ID`I=SbsWe*!|K(1yEiqL#Dq%tfu}qSyST+D z1#NyVo-r_VMJ+FA^D~Q!^SQ-X?n&M7a)gQ;>rZxiaqu=5KzD;I)0lcMvEVk;<53Gf ze2Ycj+uiT)hVzC9P0lHyK4Nm$VC;VidMA2>Sztr@_(8NtkWRzn#!zOS1~ZryME!(z zK@{2k;!-heNJ?!YgA#bS_$OYMJvI5Zy)PDT&t}lc7zt8;aGgUMSu?_MrqlHGOm9U|JAV*my}rNWwv$zs>9OFfUUJ#-4gQbeIjZB5sXAK@N-zqUO&r?oXzEnZP zC0Y*Y2lAt*87*a{I}ykRbAUHs!5vzaw&gd9?0#VqMWC*qoy*>8;PX0Z|Dpe9R` zc9)WN`a>O`N;Q`Vc+!g=KT<L1CLYcF*xQA*~M-4v?!W*8G?4Mpk}Cp zR8>ANo@7HJ8dJ6ly<&+%OdLT1+VXJtCb(Vpe0N9p6Xzfl!E*wi_IBAKoGfh(*qw!f z!PwQCIPsJYf4;lR1U!eV6dJPoORS)>(CMR7(=6lOF+^_?g~<{RlxC$ddNMu|l1 z86O(_wJn^}>rmEELE84y8x_krHB~q`4aM``=!&Z&Ner9uGJ_6J{An5acOcbuwNj1H zO#WoTFDxF*xH-3ERbB1bKfYKdiicI|lD=9jPb_*qsix)wq8D#m|bA z5O_f@i_gVpYG3p2a?p4!#@fhU-+}cB-v-ziaDewXG5QGJtB9}LPc}a@3Cl%^J1MngU@jj0kfE9#4D$KZtw0)(~7t;|ss*p#vFr-O1eITx( zYu#CIs4B&vdmg#~3T=ZHYnB_57u!RjB3l&jkXQ0AyL}qxUW+2Ic8(7($DX9XOF9dg!^_axVOz#Lde~IV_-0j zs%^IIX=lpT4V%$SywYq>rQWVE)eJ_PE>Y@nZ)Qg-IO=Yf!@bdsiH+=)QZ1c|)W;~o zk0NLfnfpIcpGgv<)Y%Z;ToOjyN}cm&;qbaLE8Zbu1$@WLLuz#jp5>q9!db7X>TPlp zJr08YNaO5=x+B!0F_k zsJ^(st@#dZr^1{U7+z}K3HzP@?ot8~!RPecV%jd5@0f2YPjV(4hZ!$5HJ(s_Agqui zq~*2YY7X`*Qjx%S?~1e#XuAq+wDV)GdKGn3nbFspSe&LVW@`j9d9O@(7rfai(?p(dQx8<%!{GhJBkuT)`4pPDhTsTFs^ZzbM^Q5p{m5mt70neQhj=#sl^ zDZgfXxaFuZ2`X0Tznpq;`7j#Y%I|3y-iyeipE>sr$Ywyovs6+zo+XyKdUrwhBE zbKb|#*WOeOt<-TMAX2_}(8Ik7($^dgxo zA2^qLB^ifi@0Nx^Jo03W^pQoTG|fc~G^s&zDqW!NB4E-D0E4$~;4umk4-`^}5B83^ z1Pshsjjf>$afBq3%xvX%%sZUl^V73xsM+i8>zlvGQ>hp>3T@VV)d_?ddz^pRK_x8t zq&ROfg5aRNY!Ce6899n03_B^sISHlb-L*zM6O7~~JADGKgy(bo-r*S5d@qIK+`%Ma z17yZ6+TLP`kz>>bq@z1@+hA4A?~x#SrNg}NePBSDaO+y{E5YSCZVmm$srk?Pwz)ed z>?Ots+|h{JPXfIP%;wFG8v&oP^>!!CdtQP-AoYrvMagYmkAb))&KidNZ6XyaRyeOh z6H=d(tIrmbP_?YwH&b6>LIkxbS$TPBfMx1bcbJGDgfcLtD3P3ogiPa&u`=Kec3$kU z5NsM-4EUT#6X9POOj<1(nW_W3-NHM)hL^=UINgP2^sH}q>%x${u-7k{!o5c`21Pm| z!W%fGQ$!RwKka95!J!yPU#{FDo44U#tW3}XXtH1#?}^*ptc7IGG97V|)ij^GltZ=B zAdP?{(8fS;+$Sx@Lr>`Wh7M=rH;*=?(ZI7dUiK9qYOSkQkD`g1j~`~dWRqG|7x?>i z#>;fT&&Kp6K~vl~s_FYE38T+<^EVmV7Dh!@e$?6Lz}9(~7)?TCywayOHdU0(Y}?BF z*#7QqfA;&Fk|8=`k?R5F?;3f({BgL~Aq`DINMUp#5q81L8oKx6ALB`6*pha7?fQXr zb;+*R$wxzf#CwMB-IM+|(nG2VbfpQg_cMdX$AEt}AzLRJo6<7fdV!!HGS2qCin!v# zX!%wVpDBpnv-J72yATeF9NI};kxivV@=0+wRmCIo*+Xxx4sC1cE^`+5ZbIU_jU%pk z_rw?ddFwS-h>+rz(eZCdkxthM6%lUJd@=Rhl}b~N<#chI(x}P0ku-5VQMOQo>XNiy zAn^1L@Rr8%TmYz#TYy6C`m$nl4CC6s`~Xo=_zl)8GIh`m=k=jp;-CsNGnd&@M0fqm z3rEJ9y|~uJwyavpk214OMKj+kg@$*__M6FjlfS6|fsMiE_&T7@rl}{wL(e<2a`86i zX1dA8bT!-yncT%ztb4TNZaBCad2EBU=GQgy`5jk{wGK3LQ1%OEVFH$p-rt_NGz{Kn z+1=@B(ZRh%Gq_y#x<87kk{{Nvk-;?YVaRXY8a2|y6Yi{)%cBut!-^!UtK(Jd(c zbh+k3qlIqStddG~Y~W$^;wfpINRDo;{$p={M6UjXuh#Z4N2^r#s*1IfosT*^Q?#z) zhiCI7uS)UwW``b(&Kel2cMFg!V-bw8yZVGEpd+>9Cre1Re8@#B6^|@Kvah0vJ5) zx*y*vV@&lREsweomcxxSAOoJ} z@gtyK)~YQzo|Lc3@k5K5&}CL6-4YC|sx&LPb)muF^~w=NFx&yPNWS}_*zv>qJE1_j z>*qIcfx5d>EOnK>P##Xc`uJZMwX0_j^@iOZ)DN4{f#n`4O@h=-bMU)6UFE{Z=Q6-K zsVVJ5)=MJBZKYMHXCHT&>`{q~^gYBsc7=rWrf~`z8s&y^@d0r|JmMGMF!Our=5yKO z8KkQDHtwjjX&5obRGycYrBEujyd31LRl%5aRJqC@R96d zNeAGum;PM)B>=nt8MFfMp;-(Xjgp^g3Hn1&K*VJ|w|hqw#`b+vW0;>X;Q0AT_rd`dN%iAU2tF?-nUTtF2NifJ;PKJdt0q2JGxF6d<4+>5 z|HJ|UeWAl9LIg#n^HriXUa>TFg~Y!x>fyY9R#XXUy(ZuupsTt%Wv%|=tO3G(y?wY) zG;Ob?F*#df6Xq12B@_7VX|8sQ*Y$1IS=+N$4N)w?>9QPfb|$vvvoX?;lEd;o=K;s> zHWOcBgio3kl26)n&&=Ur3!C8O7#o=c7zF2He&TTmDVTLrg{a-5KDBsE>a09srTLi6 z0y=!9?_jw9I)jWM)LbdSERl~2c5f(nuCBSwGxF#r90=-*Fk(+yzq%E-GKy`HN4kgu zyNN~0cKwmf1<3W0%p)Fp93IZkHRy@BRX2nBq15&cm%zc-JA0sZgxOnTp2d zF8wWC@P*=ng2EuFe^5Xf$;FdXiOM%2CxkB|%Aqd1FpE(x&$WuV-iKL{8~2t=cWo23 zs9X8Kq~2_&w4$z)_m^a<3~zstBdsc@1i80fZ26p*sScJaLG~vr^vL09t_PD`(_BNO zvr(KjXN;eeyot)n{Z4u@_{j#g@M+KDm;$)`M52iHP6Nok)zji)J%fg#EI=!Gy{^^B z%J2cx?q}UpZ1+ZQl#A+b8 zM?+JWf(m~Q^`lDwmXCvd&Q#b{1UmUSF*ep@B0cQ7ci)tI8a)o2nb**$yxu){Ln=#z z^K>$#ok6DgRMfCs7Hwo<_vqf)bCxGbY%zcCULnwdN>r%=Jg7ORSrn5eUlY`t5icPF zeF_Kph{y|i4y3tQHD<17=)YC{q33DhC(WUVauGv$Vz2(RQYdXIni#&(8yS4l5T$)C z?eifXj`6HRM%jF)DzK1a;N3-@jk;q0?MctGH^(d|<8J*ROR=?g-z6Vg;=67Uwuq1; zITe^)-Ik#gY(#EsKR9ePc|TP6U>mOMiW%31j~X*qX#URK8N3%YB!l1$y!Ya&31v+7U{+JZIo! zXBcb#^kz+>0PdWAwv^gQiQ*(n2bOBSf}h3MlNS5ro>AAJ(M~>9tD!+8skgh8-yI&Y zt9|G>ZCsHX?UO>WRI@AaW{O#fvP$yzM5wC`nfny75*>2eG@Es-!0<~t!HMv#bL;IS6vERstEj9JDfOTQu4wO zlDOb&Pqg?zSBp4OlBY|!%g#QBU0Gn7m##rJGf3ugKZl!zE&_jgxBbz|X>0plv%QQn zgLd`c7Jtg6!M$}hN-(fG2bCDHUO`F5hGaOjP?@ctOUgGW-5x$)7jY|%bR*U;LO-oN z^HCi1H4OK@zMa7&t2>PlJ1|`(aV&=8?kd0>PY@m&DGrJLH3)MomUHrEb#1zb{JHUn zDUvMeL-dtkb-P@MLf%@uXi_&NWq3;3qosGQ#dhpig zY3_H*Wqdmr7o)Qyf+p4^Sfjh6k|Vgz67Gm|ExuoDNZ*GYa*ygO?IPNorLO+ubhF_1pu3mSPaTiH2YvR$jx@ zQ^u>(H-5x}Bjcf3CK7gu8wC}o*T|WfapmjROoir&sYKcaj+TKtJCtUZQ{G$kM6zhP zo;l?kc_!h(PSJ`__3h9n%r#413EmnHd*6p*4~iclYFaEyV&J{Wq1i!CvzpVRz_Q=y zl|UmuOG==DC8$PdU@`-Hj)g zwii>M>s0vLBV?Qh(nP(>!ec_YuQS?c7+@uCuHmgSu|CPW*iL*e5cWChj{_FX1L+*& zL!9N>ocs@CJxf}NS`44rO=W^>KK&$ks94-p&t=z_Hnr21J*v>nDDy;-G%`@So8D;O zuFItGM zie4&!*3rpq?FjoU*lWh^+H@f@=A&Sv^pe=hN$d{5&exD=8R-**BgJ%+CbM0q{f5fWWDL)~7O(ov zQB4Xb;s{`)L+N==GvAbOY#&e+aesQ$wgT%>^F-q0Z>Qht-I2=iQAAPkenday zYj=EDc6I4_-f?|{80@yl*E8HV^xU1_>*^aJw8q&PA+P>Jr{Kkd*^-|{B=J0FU0pT3 zCN>Ol`A?EtJkYe+5Tf#v8_lN@b=mWMW>F1e+ zuFT{eG(;*yi3OT!k8x;j!}+K-M^?LEz78|^gn6`BK9@dA+2qE>x<-U66&BvcV*fsO z_funai{+PJn>JuImSxGx25~x>)czAfdAy%xoU2>VeOQmt0*j3uZ4}pH=slV&z3k{P zaCY5;v4$ots4VGUW?=KxXl*6Hiaf7^Um5{VTchv?n;Vu(Z|`Fhm+-X;BYo6&&+bfU z6Ftu&W8EQ1`Ugu{8B8uv$YHJ0FxeerVH4B4ZL3(b&nmQsr%v;JgN_UiY`oZ|T*T7p zjq1Ds#*JBWNsn=_J$$|@LI|dZSae@vg!*G!2YWy)T59Z1_DWksP2%F_5!6$yTo0=) z7;9_g3OZAoVg_bV?D&Y^ghuBcL_4_Y7nVSW{{Usl?=!QZl%AA*8w=~gWwYLpS_WZ9lt9k?t zMJTx`Zl4Y1peWS>4;W#*E7n&md{itE=CY^g-MNP8=$o$SeEZb^4Olu=YrHxGVv9?Y zJA#&v6KDiR_xGPiA8$^(q`#+-EDFtF5T~9Rk7?|J3I+*&6s8Khdt3DN)|hkn*gYNr zu&y;x5g6m;174g~;<&Q+Q#zIAIhHv#umk=HrHt~Kt8O=reg45QZjw>ygaTx8gcqht z%&OWvCj-XD#I`f;Z^&QEg@yC;TWk;Vd!emW-R3Rc`AW>J_1c^veQFSOaP3pd!k~6Y zMN8G7!#s*2;GZgZ(_U-+0sYz6)6Or;cUK<=Bb3ONT00>Wk%>NdCM!RkFRVO`JjdO2 z+lk#QM{_1$?um@^xogn`MG|0{d5ssvfg>b*GD5MEcMlg$8I6f?vE6$p1AEcYE_>M8 zAYJFZ9hODW+yh>*#C_rimgI1S<_R{ui4UL|mq~#}y}P1_jb(KKDdPvJnD8kAsWN`f z&lX2TuxrLmLs19p^o3$=$;J2>RbTqNoeSCO3%>+*n`8(u!v=+#J!NW{8ORkwDi2fj zie$&*6P%r0ikWl>t9m{#WxBMQJiV0XJqNb%3`mx7(mbEPEa%alx#l~gioc&PBb>br z41>LYaWqC=vI1>4L3t;xsFQVk?ju8Aum8?{bY8wHy`eitbX1uXW1lc*OkQ$*vD1hi zIoyh!w9q1J8#pVdyw>({W;i2gibq|x=TrTXioG@Us%Zn2#TFFtYK+P14&lcB>7?b= z1e;C~GrP=$y`lF?rt&cZFY`c^D!a(+xsK#0zI=o=PbfYTaNc%$oP3l>ZSaJMRjA2H zqua$3>fB9at0dw;(>&7eum+J)!9&(Gd_FVKnY+*|34~`s=TwrgD3&n1pNFFzAbvPn z$*sH{J23AO^d5xi96CGCFkv59cTbf`CZwgpzh`@g{W_2B*d!N&WH2`#P}wNOF|c}H z!Ef7=h*GGiGtOv6v|Aa?WZ}vpmqe+vaIrhT!ch}k_wxLXX4ATO$25rbgX`|<$bNp^ zBFXL(9O}a-9T)62gxV_k4%~r-ZrOl&A7s4FT-vYzG0fTN%CQv`!m&dTAx{PoGqV7V z1*ns%Y$DHP4;ti?Iz^F<>y;PVY5TK^XB1^ED?bqZ^l|3IiCiLcdjZbTboa|LubbSy z>LabPh#0iD0PQC@6r%)UnJwzF+GC?ixHon0D?KAMhN~VQxj>nB_WnWbUinVbo#j7a z78}q{PO(Y}EZbce_rEqhAfWX;WWfY>r7i{2~>W8qh3vNCg=cigImY&&WL@_(b+ZR^Vcp46L0#pRD&07MIm?!8fTrxep7Ph-J*?x^IkP;Y;_lAfDE*vZ~Gz z6$AEgHTxXxTb6r1WWamiTsNwIm`vg9mSIY)W)hTnkC7daIYnAdNvGj_Pz+@`SC(F9 zf@q-N7PJd~Fc)2EVB`H36AAVQ=*6%7MDI+sQ;S)-afRWbYSyoz& zb)_#kZCAIo8uXe=1V`z3jT+3F?c~!C(+p?p@ybGR{NjjaxB-+(*Bmo-^}X5GY(cS7&tJm2terO+oFqt!B^j5p(fw} zPFt0sSdNym4h6S|J4Df$^yy<&-d8f8_m4NrCJ`Qu(XaLTv?*J$+W?;eH_ZPa2AIf> z6X0ixL7}#r8aJA|P#kGU2uevI?OgICzzLeQ;G=WC>Zb(`Yr><2t@Gs^ue}N0#g^W2 z+ctXjC!F21LQ(%;Zym4GLdEh;{&SJuk4e#2hXRTZQe4Dn+dtTk%Z@@q;*`qsH+&7a ze=lSt1fqlTu&Pit{|!eVnMPO2kaJ|d@qAX8_}5Q@Xnh^3YMCWEzzcqKP{0&94hGth z0Jy=uKOd9d^}H!u`Gvj&9+@TJ6W=H<*+Jj-X3epD36>QkxVyk1gdLRHueXIs+Q69p zwgY86RB%Oqz7TQ+aQ)!#g25QSVBUnFe_{H;bqGX507(XJ;s6BfjZ@o?qThV{DGn5* zgQQEc2O|RP-CiL_{N3=MHex)WZW^J1!X8IIX8yM@@R1Nnwj>0@b?iUD#6PS9M3PYe ziEypj9Ci9zF#j|QChCLp1nBSgq~k+R{x9|eV2laeBPOrdo{t#NMG9oU!~qohtBzB2 zV0=5dnqMC22$FFot{NP;m=tvk6ZL`yKl$?TL{ookY&*b|ICK zabekXg5hOLYvWwgU}dyoG2O2*k&VSU1~)ok34zLMJb`j1u=-`sUb?5mUZxK3D2g&* zH@;56VKTC|D}0s_9A1!79%?p>yNzuYG$V}r+Qe8xThU7vDepO*b0rt;+Zm0G>@xk% z&VIi%krH_s;63fPf4Ki8$eSoYDcsev=(AD88n(0hJt&ujQXo9l!O7VVwE-4Zr*5@9 zsO5{T9-%wNRu?wAq--avuQe`ivD2bpFYY|6(m!hx|_S z@W;T}mb6RSG(DNxs$OAxdcOhJ#bxHxwD`QG`KXJ1jm{ zihaGFV&lPBi@5=nsXFZ{nT-q}YZ#;tLd-vpVFS1va1G= z@*H=&j74I@(LY9wIGC&=*!NH-Bg5z!<#D;52>&|cvCD=Ierj6%?-5Co1;*P*y4na! zo;63`uVTb1@qUYb)|=Jl9%-QzDxZalE;;%&EPSha(K{q0L`rIl#q!$m$Jh5&SFOsZ zS+K^Pb3Z8fSc$?C)h=8;Zm7;5*Mw$7Mb;P>ub0(Fq#1e=>*DD*zSsCzLPthgdBK-< zO@2kZw9$th4AuJ?4`ewi;F+8c_ijh!^Moiw&> z+qP|+J2|V*`##@y&iNZ$d#^R;yfMa@_t5|JDaLhf4eH_Y^JJZ1o~^q(^)9S<=%+ra zMEXr#6E4T^bJuxzu$T;i-NzS`t%g0z1a&3N;fESkMm_qXqVlDs`gf=v-&zC_RD&&- zGAY$BrpoP!ROmipR5K|PbiixZZ>fKGF5S%MM*ui+T+P;dK%TwADx(u1EJ{`#zb?K9 zM@}6lHqkB^0(#t7!jg{2?}J^+3`$sBN!IUjG3*dOOO5Y5^wTsjFzrz%=y7$6#Mgv` z7a=Co_2e&Pa`fI*Ct?rB>V)uyP1nQTi1U&;-`(``!LQ! z#*@Ndt)%CdZwCLykSMReQIF(ho}V&b*=Rw&@5wsP^D=bV>9py4uYa!CM4RUs8l5}{ z132$SMz8lCer6J4+lRX9S+zaUGZm`odH!;?)zxkqbdr{9jo6_K(R-Smr)i>O^cw*< zxIfb1e)3nZ+E;(zZL8$Pn>39C2PvS`_-OnW^uJz1&=n&k+PitWm>K2t+$zP3TQoBASw*UxreJG zI~8~2oNOY2+uW{KuN9kz@thC&In1g&4^P;^Qhr_So>PKjVBS@YN?ZHc;pkHrk3>om z=rwH*q?7&2xmpUITlfZqOC93j;&d|F0X&{4@bywB7(c}2d;7_h%A&3*ZRY9d;Y@(|K#_3v#r;yBx${ zLP+>a26Cp}e-h8P_P^HxBTm<~0@H!Fhj4agWJxB}8pxqslI$oY5k{ztP?Gtc=1JDu zqt3V3driO1*jqA5bZuyaVQqqzENB0x)s-w!fVWlG4|@bYTOTcp0R|z`SKlh(7%K)@ zV6N=k@vt|P_nnv5Y0hMBJ~b$)SeX)9Ca9=r>!OA5)$MjEyG}*B13`=i)&PZ_`oL%3 zykUdO=Iv~qWFjiGP~$*GW3BPv;o8#K(4KhPoyI(;G~ds!FN@k+tD+us2@AO0)INb4KTZfDguOrS;=!%J#M)V`D)gUuX}`i&itk-U+)kYEHd!TB%$Ch57@pTS?6hi2p({R>| z^nT~H%IUQRB`Wn*XLzb_=(PdgNm|Rj;bE|5gq=U6Zxw|8cqoKqg`6jE|DgAw*az_n zFd|2z=(rgqw99d1P1J%)*R}f7eCgOj=p>$4iRGzydJpl=+Ofgqd<_|ryWnLQ{olp> zp98z=^mnMlAORvmsK(37nbApwm~g+!ontajw&=*GSKs{7HX!!WYuz;6bXHigI$=?q zIf(50ekc+&4a_mo26O=u^IB<454QNSDO?@sud%Ke1t( z)QL#jT_z%zvJG~v*G16jheeDk{Q?IDN(dGM&Iz#%thzx2wnN$XFjqfVTeVi$sljY) zY8hDKIJi?tSW>w2(!YqTmdQ~;z##5r$cVzjuy=g08j>SLHJIs5dZ{WWwqgsy)|jOa zQU1b|>^)D?P8>bhzl<%BQ$L?S$xn1N0}UO9^0CZ(ex^>!RH*1M!&inST-|jUm}EPe z(FQ9ON1b%wOR=hONTua|Aon}1?ng;LA6Gr4T2@?6m07M6Ar$FwEOnfXpG>^%I3dWu z-JK+h-vh&^xSde3NiIzg(^xbz-A1Ohhb|~IHqT4*e}hDv zi`LSzaifmz;>h_Og^Q-2pw|O|#ub7uw>Z&GP(LOW?fpx0hgmST5z)~dp&IGGCCxPt z*yq1B?#AB%3UAIv)=)oB*9Hd7oj{JKZm;X?)j~HhK3WQ< zQ<;k|ktMG>QR!{TT9)89{qAk_wmCL;b^?hm9jK1(>68klr7c z#eIleBIH9zXLy-C3w*O+_GRHxPA5R1F@Vj6skft^h!L@@`b4)1*@*ytGy5(Jn;Jc} zx-*<2C4oSCb+x+Cl+4JMt`o@4&ise9U3vo1sIoR9=%MVm%Ixts#k_8tIM#3N`naC8 zz*i8oy>Xv4`?^0~jeIU&$De{)_)Fk7=ycz|5rx?1X=mz@;b{>B(T!mXx; zjq%mc<7nRv+hza^A5edkxxHP0ng%s186d5=UM6h++d%y-=&u>Tj=4}C+5S#10=?jj zm>UEt&b?xufC|7+gBM48Cue&TP#PX`70b$;<&Q!+w(dKSw;N+}sbyf+5(W~5Ou`HYQP zB1`pv?^ga5NDR=3D3vg%xQVD>$E63cqBJOhegmfU)$fltG6~`n0)(Gaj8<5wx0LET z1J0cM?v!@hU9tA}Eldqb{Sj>(>MN_6Jf8wyXss+@QE`$te`ZuuhC8SyD3!;NY|ED} zzS|uRWyR8yDCyi9sj2$XsxRhOrpEiG9o@AE{;3EHmU?|StXYy62mY=|1!uqqax|G= zq9j)Kb-3U&<^{p6Y6L)Yd9FBe6{M@Iu zWU{o${&|AwAN*kg`4_!rqu~)#ioW>(KU$ng{}D#6L`FdHDx1%zB zGTt%T#{+$)xrES?)EtFoexl@}V%x}?swzg~2w^JFE1gki!H=7S9?|e3#k}W(h8S&x zd}Cv5Xfze}huc+_vwOsdQNp5mB43(F!LRRi%BS8KY?#}m@jT|Yq%c-}^agvwB9$GrrTEcmP% zOvDd!x+GFx3g5L-3o7(BsM;H?nJr}|O#~{Abl6;7$Ml`L*3*Z6!1czN4@ZGt^BM*H zo_R9A;9V_SW~KGMY)omei{Ake%W*FG z&r_zVUx1IpSsual=tM2aQjCeq4GZ7Hij9VAvRRO!LUH(c4)dlOYPD3^SPA||&6WN9 zxtT*vvEt@^_wCn&)Z za5u1(dCs&5tv@?qw*V*O5BAL=F^;HW^b&is3z*NgY;i^STu_$f2zaEXG{D2bg$F@P zq^4>m2>OTWevu@X&S11Y3c<8oHqvw%Yrae7pT>FDc-&ci3Sv-;{_Jq>H%<^sx#L28p4I9d zx953yv*PfJ&I=*nLiJ{C=E1U-|KqCTo>!1GAtp^!sImPl<7JKtL)dP_n7v4~>*%pb z1zYg5*!b_h(ZxqYXSOnxq?Pf}lXw}9gdZ&p^lcW7JDjm6YRR}6&97|C7`fMTv7e|F zD)L)|0oRPi#ZCf@q}lTA2pV`hpn@u;ks^mLVJnSvQdI2Da3kz4C!5d-B;bEYxpP;| z2%(_ATJyYQIqZtfwCQPVTP?6_V&{9k@T}Pe;*o0S?K~)Mph-sC)!^rsWY#Q1=vq^C z_lxKPiwP#LTvdmSs|$lwIyJ76tBKeXAIF$u9d;t>np@%=R3L*_)vz`>YN&c)o~=Gi z4$B7=`6Jq!>pWkFM|K7cJBTm8o!I{~jKt5t7Q zP9WmXrMsn4)h08T3HfJdBf!EC+g@+Q~Xfv>u z;mO%xHZyhvH%`FU2Wq7I#<`r*?mn=wFRaO>cmGxRYo$4?vW?f8yWMzoXy}4=TFdtI zOd^rsdE0<@4W^E2&EEWI-@yaHlt=wHGea@hX!EZ&A$CcB=UkT~S#nX3A#(`96&7IO90czODK=9FOF>bbWs zrr381R3NHtcbJW18V)W4?E|3;T1Jk!!NEgQjKL3zB@c^!A0Y?EKzFEAV8>4-bU6gr zb-P2Mn>eB4W$U))M*%177cW@{&^5`C(yoWt_xN^6?VEVWjQC$&SzX3W$4nM-^mkWR zA9v`uE<1GS3FT!Z%6ur{eyn(5|M-gpLVe7Y_m$hBa7&=04$CtOR|i2MnWU;79j_O> zPs$k_vsw^i-Yg)Maocz6Yt<-QibbRz?w+nTxzW?CGJ55X(^(mi%hXlwzSU?6m?W~{ zb0guh=DVEKJ37AFjR2YJS7mLjAOcB$nDtya$@6a?N&EW2YSobCki=WRbFC)vg>{cK zElqC66EK5tbq8I;ZSBTi3+W#1xZGJ1k?V&#l}g_tblbb#jq9iGW9}y}o8vT$ z919O)Cr~Nmt6rfV{s0VLOSK{eMLtw|BwAfYf6r4DKVvs^p74YKj6S^mVT=vZJ|RRy zqDyJiGcvGrq6-!YkcjFBFl5|L14d;U3l+Rx*S#&aN~cC;5LxPD>Pc+sMnZxik>z($YG;cN~H3Jw^~y{3!xQSvj3 z)i7IIiQ*ZrF2lY{>OH=clvJ`Dvj_;VtF2ILAV9ArmV|gb)H;i)zk1d#x7A$3G8aKWrYX@Ss=7pL7Ee?CsEn;xa+V>nDPI`dJYi zoG1(D^z+q7gC5YL`pNrTKiy7(t!90LVoJirxz#y@`3kftz_>KPWDO|Nfb@(RAlqUE z`ZdQ~2&~dMyYo*?&C{BJ$j>a6%Wj)r_IDH~aYBs&r)NG-XF@_OLUe4|4n1*I)jUyz zqFDwirfk_QVzh#HLvs_agZVK*kr2seQ}R%6Bc`2hkr0QYxs}05UcdTgI^|L#Ac7zVSnOq3vi?af!tBl8(p0_|3L9U&Ewkk|{DQu#A!!0_5c6 zrsU*)q=MTYZ zOQ>mBDicBqi<|QW!8znD0RwcbUz1T3RlGQaP){wCU|I9s6dFFH%{h7~JbZXbZ~K38mt=wKhD?*A^7|b_C5A?7tZp4 zLPQA_S-dl%c77n>5WYk~pWVokP=OK?yR1;nTaJ?3sG-5b=Ze%x7@593mZ^ySSt7Op zW<_xBWVKGIS^L;aXu?tWoVw@Xzm64l{3S zE#qkb_;j>wyVq8=2<`R#yX@umJE-*{qXR`=yTcW*FRc~+@phz7v%K2uh{1=DTGwcI zvtJ*6Qm)ffd%m!DvC(EZ%R^?*9tap>A_}nKixFn9()SD5998JUTk&xlwzy zxxRKddQ%WNqO=LFOH+Y^i(8@Ie0ZD}YVM^~?=?{_-1K^Tl|$4eP@&T%m~(Y?6^*jx z_P!phsTpMO+giJgNFs5-j=;BW)|}+>SGE&xPaTIRQKG_}Wc| zTk&uQlf8L%CTf)-0bc-vnSiUsEr`S4b>U~@8x7!(3E}2&92m8Bzx;%9jA`j~I691a z)IU5q4AF-eiU2>+TR>mk(dEYK63WcrSH+;~24SlLg_;ZjA2N?j8b?6awOiRK#eE9j zS#=7I(5j3;Y3TDto5$E`i_=?^$Bp#@osO-e4YgAKXv&_%csiHO?WFhEiHd=XvZ@sV z?CnO!OU4M+IR4@d(s|kGtH($gu8NmN4HG$6fE2BA>iF#Na}n*gN|8wki6==%U1f{tIm4@>!Xqys)e zg6fSiL~C82wkJ1rSH*>RaquDoL`6gQ$5-nNUPcZk>iX<2``2)K zvU9LrX%b*35!gQDxqF*gv3`~IcvCdywPC=&kv21C}u=n6?PuDOYNvka$C4LkShfFKCpiAwt$E0MN z4&fx5&`~vNkw0H$c0I8m96KW0_c2#%#t7Zl0|EkG8SJEI5-fq>=Xo$MRm$8WpiueK z{pPvO7Nb?Y?qm|EtV~o?dM{HDQ=WTX9)OI!?AEy{u2j4e!%O-5<*T?TisZn935V^ z0Rs&UAG4od854&95sI04906HUQVN)1;W9G+76&4eML4*~C4GsxmnYx>#udb9GwSoX~n7jcl>{t`&-d9=u-m*>VV-I|Mp6#y} z0bH1rov&31eD=E!1Ml3s7pb<;nKZlSXQ@tBnt?G@e*OVw((24}tAig%%x;vNNDSDW z&4yyd9<K_lEBfx9u?UkfJ-4PGZIe9uY#1f*l>m@F)t#y#EcN@AqGUe%dhl0|vn8 zZ>ADo-Xk=83=v@?SLN9Xs8C#Q^_?T*X{a)45eq2?r7FJK)l$($Wl)3X z-gRznZh4#Ad+VL6uIyknoFh>ExAbp?;*R8;>cY;qta zDQPmMGwXCI`?2=Nb?*Yb_T~C>Yj9s@`8UGZ@rewcb}#lhVm4a>e)r!>V?N__WD@b7 z&yQ0x14yB63EgJJs>Gi6yNq~A&~t_8bD7hr6wh@d#UR6w_P&8Wpr|129g&ph9V|x_?21^i)7oSsH;6bKRZg#l~k(E&t{`iL|@cy0qV1V$AyHaLwxHemV zAQ9DIIwWfZNUA&tQ!`SO-rSHtC3AXnF4dDiM)A&4Gtt>4n2;aCq@m;y8$?E2#j&%K zh_RsN)t}aT@PRs%g^q1}auPWteIO^84@$6Jn&&p0bOSkRH#K_l+dqVQhS2X}U}$qE zv}T(#Sac)+&KZCe;HuDd1&I)S3_O@fH_l>`n9&e$z1`$fR+C7eQ>gdBqNbClf_Q!X z1AF~WiHO0)$qDs%L+!jMNey^STiQs$m2b-6b5}ol@zW=>4=nfhx7ZquX&%m*&3iuV zkHtLMA)T*z?C;vR$fJfG!IV#Jy)N9BF&9X-x^HRDV5+@BF?)l7b#)1ZkxBsPFtvWF zHVsP2Ao(;g!{ltO?q;wHWZ}SWDX@l_$HYOo**8;ADw3ex=(T^kN3}IGe5XRdC%cs5h9t8HyU(@EhXiLGCJV8Hk)FGghzCdW<2%e z;;+;z7OStVd%IC-&j>V>KU}5OzlCuJr_u<9LTYJt3kg*f9b6SIct@3?A$gDtvHzVN zT|gXVeNTx1NE?As29V&2yEicZjJkC9M5;5ZtgjbHqJn;jpmcwA=O^wzWYwJnqTnJ# zAj;Mj@Ji06YZ~(6G4PN-k7+a$x0RUmes8eSG+!tR6()9Ze&>57N~HT^xmpTo-aXfo zqwM<$Yy6KNFYl0I=#dgQck}bkpQj+bOd(R#uL&2K!Xl!J%QpO?ki1+>)2pkR;$WQBZ2k|JjjiLG>A4S8G2!eS)yv~l z4*Bz1R`T)I9#o9 z`rScDd=DRDNE?a|&HIAX8{@2LA(>BQy54Mg;)p+kIrYcc)GnC}B5c$<&$XG+BsWQy zq+gn$rm_>^t7H}_=R>Gdu*NDZFhgeLp&M+>eI^GTEn~MKI(;dDh1<%dRkN7 zDu$JIyF?d>gn}_t8o*`_@LP1s@D`d3d>ZkrtFPj7cnyjgK~GB?=-x?7WzQc?3ip8s z2zQU(KS)$vx|OG~=>S3&STfg+iC@H`lxf<QGPXt};+7|6JNIaJdKmd}%LP7psS z<-D5ShfTO;fJKy?nhEF3;BZ}>9K7@jP0-u7KVILt;P;9QpJFdwICzw*c!TG1+3&3a zu!1apl6FF`=iaITq(*KUSAxh10)Fv}Z<9P9YHYR{!(4dB{!y2u5O|NDFeg9%YkBZx z=3@fw>&D`iZ*t}BW_z62uZc817!u5OKUV_-1FVVE8rP-mx(>QjR?F)tAt=>(YjfrE z<*KwJ!IY$=51{3}(C?5><}dSoHwT%IJ{cy^ef+InkpbJYBj&0mZ+fRcl}Xvs{`Rs3 zQrK<}`v`}Pqgos$xehOm?v?E@!^6(HL3*gLF`5;79c z4vA-p%>S@>bJE=i(ZT%Yt&2lQA~J}8?}J}uNYFv@0m{6U!3+lTT=wJ4?|}I>BdDa1!Cz`%n{^sUO(MG%4IKvy5jN@QbOJ(IYdU_h?m6L_`QGf#EkLsQXjY z-v$Z_i02@aq1UF->yvCq39Prsqm-}YVGLI+6xi+zCk%L$QMU|c=iBhBQDi}#q%I+Mc_GX?qyuzWt*YW$TSBKB*4xV^$cX634Qxf%#WUj|*0!R>D=>;+!sMB;6B zh?h-V1yx7gB7TII;`p$YZ@1kgeNFq<*F$6dg~btIF#gGxu4uAUD2lpUWK2HqGL>8s z2{c;y4uRu9({-x^8c_y>OBd@|&dV92bGJY8P8RfwiJRFb(P~c$-dr?ju`Gz8-QP}! zQdQ`)yyTJ5dEKtD!S`avak%~bK4uwI=ortIkB@hF+&n+c3>-T4-xVajtW(5t6Ssxf zFVAe4FD=q_Q)T*+4lzHE*N-C}8?dl4-_U5)d&cIg&}(<5L3@N4*2p|#E3oDk;8N!( zw!2>8P5$!r#bNqevjE5CmKz5R!(RsD<4Ou|SFdOJ##P~gcT_lxOMgFykVMgr(b<{Ra{{`=a5zomZrCA)bWY>+UX0U^R2Ss(oEoFqy+(rT@d z%VzentfMTJf;|5~=zfBz(sK^B6yzz5pqKz{m<;Is)I`M~|38(YHrY22Irs)Sz?*lB zfuwW(@r3%1{^1`&oeu2t6Z>ED32VoNna=9c1=I~U$%$Rmxwlue($)9Y7RpGX`O;%4TG(o%YyWFkV$l>YsrGEA-HS$>z0u|=i z+OliapsKQ#O0zae(l~pG%neEmFF?}b?6kI;2Nq+h_8Yx?X;K1i7^(2)4ItxseS*KS zN0@c__W@l3ekc2j9GtfmD^^4cL~7Jps#FLV&_Y3p4WMj9GP5O^0uNHE(4jYA#Y-kn zXH39gC|ngoHp4|Ccs^ODq28kVRWtW+aftt?cCUt-Mr1M%q+=I_M%*?TuZ{U;tP%nq zm*&AYJ~akheEah+yeAXDP^^XW9kqNsb27MCZ;VlO^=w5`NmO>HhuS`F`*YluQr>z5BcpM`M#?Vm4%zSd}00aa?^TQFn;&hz};YYSgxC9G1poNvI z-5vNivSMRQwRl%8EOJ(mzBz!&Yg9B+e-CT0mT`vO3xVuO2j=qn_(!vs# z)%t6+dm6PnV4m!Dd*-!uThzoa)l>M+Zr5BTIqx<2Yo0xq?_#|R@qald?2)xfz+{&G z$L0whfsU=;EG8fxIYRztZp{V@*u=C^%l$F)Zp#$w@oY_HEvhQROC}1*37Z9J?3G0R zdVI;35TQ6$-NPX1HCOeOMSUfxzQAyTm0TBz`c=b=O%CI0MW_MrpsQyjg1`HcX0hIC z0R^tW{iN()EPxNc*>S-Fe1xyi^01Kc?lT)o=#xaWUQT};od%*q1U7TJL%^MIN#L&@ zGYY$34t8QDqB2R-CY!n~@EM`TZ}ao>s^3Ig5I(cV7ZHwItYx9G0hZPFrQ&xfvJAW0 z5T695P&K!mPM0Cp3bi`2loQ6s(pK28sI|LGY%z8dXfKqCCDl|jg*q#x2F44E|I4tf z!RJUywf~yh-U#3G?o@z7q4EaU+s`9b5s+z}8D)0jx$>nh_qa^0CLP|Trj4dB;t1IH zX<1oBrwIwlQtGvWphYLTa;wU3-!jcF+Q;e2@mp+m%H&EA!_;GJtf!t*98PTJ?vD*D zEpwDGQ*mw;4%Wp`1Xx}!v>O>*-_{mkv|Mi;Z5=V)lcv26f2lY{hQycrM%pK3PSHqW zH=o0dEmLZVkS_vbChp_w#=}l=we6;Z4p0C%g*bdRSBsJQGggZ9ym%#m-WCf>`%R;l zU`ABDsf99w0rh=IKF^;EGS9y0`Y<;>-T@>Up7|w31oQrT%eYp67eA(0Y?D7EjpX#W z7y7_4qish9Lz7Ktg6yP57KJ<*Zh{1orvZT3$a~y7n#EEd9JI{#VL)ar!^JMl{Sg+%Cn&*bsrWOh0>_ zVDq+tZ&G(WN62hSwGH;jfno3Xi{^uWa7{^S9RgOd-e7t8a%9;ym*?p&;V8}M#af$I zoqG829Fr?{s?y^Y=tbgS!r^drtaCEcE>b&@K0Odp%^wyknFB6$vY<9 zsB&l1K+kBdOs2zDd%ej_2kYi}vQDOMiRF-8t3+8XvQixLWIi8Z5#h|(4+QAQ(2#*h=Uh^cTVfg-Zl#GpedT)VH)LVY z1x&U9)}ElQ&Gm_RaDx!m)!eviU=+0qTdYvh;RI@?-R1@pV4pSt?kPi?x)FcUX%pG~ zQ|4VYMyneVo(~t10R@P`_?m?>#RmfR0l?DQvQ2Lv?(q3-7lB>K8s1v27}84&Aw=RC zyB^e;_}54*kyz^NpQ6GR1?+g3UFsW60*l46`$l;O;^~sZUU!qy2xg$)M}sTzN&xCQ zx%Ri~pi}>?L~tPm+t~J=DwH?9)*DqL0Hz=TEGyub4ED+Y4M2`-3>wla zh5nc22z`IJ`G@D2MEt!K>&@fx`t$wV%MoZ;^yX}77=XNG##OK&W5acWX5?_cvD7!W zxad4LEuuoNrTKDF4RUiNE6&kG_XeEJ0eJB6u0&-MjgSxtZg)1=VDaOqK_F5*odyAB zZEDx9pYInU0fCM(HGhw)|6uUKF@qst&>Jrg()OFcMt*U+aJ@NJO0F)NXES0_Tl<9Y z0J>p!PUrT}2Nmz_@9$FM4AfnI8QWtQ73I~HW=1arEf+njCqVM-=Owx@SJ2BF?h_ZfMlTzALF{-k| z!5{`821kUk$ngVWc7C0=Yj!p^avHyf;1KASWYoNI7=(g03*YVq_RL|GimAYrp z#QTZA40o0(E>-`7u!D^r+>Ino$xT@Rs_EftZH$(OqlUAFJLrTYp(@mLRa=YoVubI4 zhUEE>T3Tw#sy_>P7^9Co2|dQ<%!5a-hh}x!gf?CtJD=W9wIIJ?NMP+xuMve)f`h|m zFRrbvg$IZD2ho1ge^AK4=h<0W^M{2E@uAGNFNo^}b+|z#+$9tqRO-AyZ!I!AHvla022e>ccpFUZStrO{k2S6DDpR-OQdsN~brVd}eL&YKJl z4Ho=^BznE=2QD=FxznmUG}EL%zm)>=w_fLt7-Ahhx6{RvNvAFih7pEQJ`8pt5g)w! zH8c;j%Zs1ibSz}xHZ+O6ymEKzZ!Y^|c}2zV*EbuLZ;;L3cdfmUvl_Jpb@Y!U7weotF2S$kWR^&_dwNuY^|g~hDDa|rJlDeJ==xnyv~5;@BE(M`l=~PL{Bdx z{YIV9w)+dYGm~iKdy{}DWlZp1poUG=R9+okM0PguilV3Ix{60`^K3++SCrDo1ofC* z%rp3CP7Lu@iQ3%vut@9KS{zQ{qQcz4J=-p1@gI_nPB-LRD4X$2kAWn80#B@pR&mxk zDK|@&1;Cn2v{$}2H8q*5(A;!*H6+B&pg(Zd9MCJuD?eqYx<@*zy9cl{^@Y$%*LE3Z zk;WyaQVe)SE?2wWv8LA7oh+)Ui;}aFapqY-_!R#5@ndLc2=0&5&ym>>V-CF15Y+Zi zVIrQ}xtmOr%?>?KPW(^Q4LC=cd1w0IXXM~>V>ennF0-(oaPD83hD1a}$Y0MsKt~Z} z>~noWzvGKhJ6=joP8?5zOyl-2J93YNGkNnT57N*ir5#I!yoCQDApya-AH{_3JuJ9c zLoH{71BzUco0+Y(`Gro7@D|HIXNj-KI^4l}O*kO#{Fsk9XMa}$Jwo=~;?$hFq!5-m zNnH__#rSx$%8J5{NoRaxedFmjc#p@??ofSXeZbJm!oTd1Tm5%u??ybWeJXLk=vf~l6XS2%M zr?HMKxM-;)H8l3JpLuyXDs|1Q*y8a)-`p)|q>1mXt3KnTira8>+a8iuP77~bK*;+X zK985-n!NK4A;&7~pTfBb@))9bvRF)?9{1gFH(2 zT!f1ISv|$C$T|47BHi<;VuYAyW_mt2lyd+(*o%OEG0uML z6A{Ux*Relc){<^_H!li_MiJaTM2eREu(x;6;dvK>To3bwC@v-@JEx#vaM=oY)cMKD z@6zJLu(i3+ip1b7AIgOpB&5_<=F>OZWs^?LTfQ00=Bg>r=XD4N3WoIq2 zSffv(aP;CgB^x<_5xtd%+1xNNFiA`N7#@3~l%;->)e!42&mfY=>q`5cA0J;P6swG% z)N^4-RZaQ~k7IIi81pACDmnSha*g%p`h2}|nzi|hMBOwqL+?=E8}5%)^W|ot3L=AF z)&htfO{H=*juQeTQncdyKu~pTFC(f+;(j2QZP(C&5v}d06(_63D7Q78E*{vF>$a`W zH9e8GzMYTJpLWc8%2`HomMWXnR4D-}Ry%T*_;I z;gP||*8<}_uM7{9B3SFt2-Y$&HuU2`I_CZv#N|c5IMr1Cu#C{%Fbkf}Kv2#5^vDS3 zG#W)oNm*;U0n?;*8B^qOU`1utTJUSd@h~?#|LyRN_fSksWQl9>rW+NpK&zmdgMHcluyEl0Q0|Ote9kQHV*E?`>2glupfa)l!^OJUOnVL@{~rcMcI(yZy|vVZ z%;bcaS4M7JrA@h&Tr~*>9nuda`Q>!f6mVk)T{58(Aui*;IGC!dJw74)kPPy|efzAG zsc&UtCO+J*#T{K@UpV%{b^%&xz&qhE;3!m*mrv(0aO@Be>QeEWZXeRnSNoF@W1_R@ zRhs=Iq4H&z*f=lGD9V_WN5R;{$n3=Z{u7fzA46v)aVXkzki(EM>^({)hxJA);?_VZ zjgpd*h~F=~2oGBSocFqau>dhUI5_B~xIaljofQ)w{y2%t<4H%hgLW~7Aw=rQQ#-s~ z98d1?2M>`YU1>GcBH!a}ZBF<}(jG8as)h9^*#4GE`y67Mss-n~L?}PDUAx4S7{;_j zq@+Sd;^X6Ksc44B#=Id*@9EY=O7FeiuM`v(u-Q$E!_$02Qq+CPr6{EABEy3{-@+2> zM1^e7Z&{)=Gv>+l#4uyJtdd_ktuc5Yfu_h>Y($BlW~`6;BrVobrQeB+}HcjSxE`$dEG!08o4$GcjQN#wNWISWFx14;t)T;2kflp}`jwIVG~|bPuT0jW%Z5y6JkJ+{btP^%gM&3AZ6C9eZAj z*+p*l@`6h*Mt>bO?M}340;bOt5qQ;gHG$Dexbvp` z(FTi|^2?b5-j(`U>s5PDeTO@{b%m8tjmZnHBl*AK*~c`9Zz<-u}{lL*)>5w&bRWuSs(*6_`EZAV6RRY2Y0taIaq=lc^8U0bR)4%H=O; z$ivNb-eD?^4reaBuj4O4&|r{TLZq=IB*cS<`*f;4ZD9qkiPn8(UVjDw?)pl#(Qvf) zYo+6Er#4+;sGZ?eF{@nkMK35GePLuy;$UxgFX5%MN7oGr+xc|zZ52=ZgJw^?F#@i} zBG#AN_AV1hSNpW>0A+{(cp1s>tMz)8HdVTOnwfgqR^#_$xVsqWm}R?ZSvQ#U)PoZn z?WSv3xUh>^fgR-F9VsgM)>mGvV(+A0hPg(c8!RFfWjavGQ`EUeC&R{Qnvt;2kJ~dP zE{KYcKZpI%J8on-;@1~UdzPA-&ts(jps+A&wo*rr_<}%aZDHK?v$)v&iwd*V^D9sf zsMOHCyJ=Eo>@V3(Qc9FuM_P9J)M=d|uD#^^XcHad#5>xzYza%<=hU4g-R~MK_XuP& zpTP+hrffKw*HM-p@0v1t{P@7AaL~<|Zyrr|bcEYHrsG|FzXm0l)KqDA(REt(ygZH& z5Rt*A-z|yzvK)rbFo^|V{1gPqce zZd+{l6Ek7{clJPMv}{6bER?Ll+P>7C>Uv|JNwB^K6vbm$u_*0wiK&^O+HYO=*%iX4rQ-voq)^%Rq&EVk1$Xg6l#cd6Yz zuwJG(p=uW7`w4A6O7Trwf17$dwe8!9hJEIpOmg2&~X~nmY!|by~75=PIuXhsMS#Q|1{N283sx2{AGK|v2JaFj5n#g ztIu3l7|@4wSm}4nW`P(ul^~VdlpTZWCkyD_A)ApKlB&ct91am7k^6lZrT^4H|JGQ# zPABXtM%K>bAcTrY@l$9NX|ehxX`0%!ZB<5o2pc) z^iRrt#9W!VPf;HhY>7Z@CRCt*7Z&HsXlWMhcOi*_iAfu5@c#0`+ob^mSvb_Cue)*W zVBW2*nj7&W4dpj?ciPPs?NB$26oU)S^#1Mud@zFP9L4RnH~_jT&f806VkQq4`v}f? z*jv@Z&1U@p5MuF;Ilx;PcKNbBmGiw=AH~)}pYh~hSq%_PjE#w4Y0Q@iV1@3FwcDS= z`(?VE&-j23`|>&yPYa16tkI_NBZ;O#XWSZZ}(3UPQn z?*`0KXTf(nFO;joijtC%k!FTIR!0h=q~$=}m#bBw3#m34g84!eN0r^B@IpMp9gMfy zZmr@q{6O|$=$B{zb;(JDtX1O z%>_POl&c;>?uDBx)7_*brgX1Z_mhBPOMIOhf;mGRG4;zIC z7N_z9kFlgTZY~u+|HOjZ(!4`EuDi0n%a>ya{X%`GKw*}A)1n2QP50@@hoPVQc;4hf z0H*2j>w(QK$ie3ZJ*S7O>-!H$=o;b$e)T8()kv`OOPKMY{o1OyN!+= zk+s4*?pGXHVz(bM5&qYR{;=Z9mg?-a zxty70iqDS!xs3f40f&%eWsVSqo#* z(vCDcl2732nc#)7n6b*IrWm1JuRE8s?q{1u(4QJMa}(lHmbvaD=(L{Ufv+MiA=Qtt zecESkK37EeI;*25;!zyf5bUD#b34IxUVlS<93dU*d1QE4I=!ZMC=Vw3=Jv_f#l`=t zT_Vwk-*|@FW5ol%Q8Hk!`CHvqtRFwJPwa^rV|IZd(H5&C5RAZ4Wg6&OEEgLfK?vnU znaF%*v*tA&k4eC9>2SyVLPpDL*oqsx+t-wvnfp_1Eq|l(>UCq4+H|H#<-wao7j4#~ zGpK84m1%lrUCb}XoEJ3hRMMN=od()%l2CUzzIrzLWu?8|h@*{X+GX?y9qVRm4HrAo z^F4r}Eg%es!&qEi@D+5DcxuLJkP23pS!IO9@eo4BoU!{YB0f|o+qP{xjcr?voiu9N*tXF)X>99`?R?ks zVy(4p-{1afd(A!P%rVD4Ls+KMaK`e-4<(V+JjPvLx9P(BeQ&$3Z&uO15cWO)XP;u& zADAm60Sy1(-PMLQgsfL21%$UJa_m?&Hk)M zCDvAQS@kW^QR4X@`uhC+Fz0ZgST#&5RwX4xgXwx@+~GI))bm_6oxTeFZSUY9Jff3k zCjd>i_rc-F~r$~AEX2YtN&Eq0qhirteA z?n`vQNM2;(;3Q?&+XN{-f~Fr{H*YP*x2L~&8?`Z6Lo+TB8 z{qKUm`Mv`S27=O0z{&Xq`Erzoy3>I&%$K&^OJ2U*?VD$||u-y4H(~0NP^o)(2 zd6edtO2bWpnY-ETc04}g2W?e=wiV#B=zWn>Vax0Ptd=8Nl&-5emB;Uo{IkpTnMkYv znN-4hqv@uUEFkZ0H2^f4d1jMdR(7K&p30?q-w4Xe(zUoLM9{(hSVo&XjW8gLdR^bINCcBL;!lbFc>E4rY(+l&^dnE zS}@=8x_B1H^Vz`DfOf0#b3D1sWgWgRuuhKGl(9xdHD{V^N7!`+aekYxJ?yCzh(X;Q z?Lvv>p{9NeiMw_d1o8to1to30dU38I(fVrp{1>!_br0#=m*&d$lxv6%fXZj-gDEVNY!`A}Z_%55RIVt&ip_kX}B3Y)C6@C5v7#%i+3LG6Qx<^rH zOVsRZVSC;*%2_a=z&;8?Pk(y+0!I7C*2MN(DB9aQ!R<(dP?_#3(3*Liu|m!j=x+Ay zh@i0=@W8>^j!H>Od=mXSUrCUVc|6@ologngqK2HA56jtAzz7}_1KS%?l_%)-@C?NS zeqH?TfgnFF1s}dr^oX58thexYHmNtTj>VIRLrqy30!c=J=B>9ao~V8)VtF}JhNj~X zWAGzcDfhoxKr5ss0ynJK~1<#HgPPXRv z_$V0}s&zUfPtS-WSq4*qj6g>U*A{Sl z@L&!5+4roWx{kl2Ck7G_QMNA0J@*;e4JAxfylWpV_&txXWgz3s*-; zeK29FKv&pyhvz-E$e)y3vZ8EtV4 z8+f!YWt$D^!Uk2PVMQ07SNWbQZQT%52K)iAyu^54ieEc&fQF_Iab#p19OZXG;ugeN z(!5wOqx1a?S$3{Khb$uNtm>v@XttKGJ3`7D^*1Tme~J5-KT(!yy&#;s1>3N!^Zto6 zr+*@C*qC;KMcU}9Oqv0X^AaivEJGvF{Lc^G*r$EI|2TsrKe0_%%Xayt0x zp+40=dA0ThVeWym0extu?7|5it|;L%A2NACH%GLjo$!)^nZKP<<*;2)8kkO3C;iX z;Vj&|*|-L04CcbO<*U_HHds!dtxdx|ng&)aT&}dD5!HL)8E~0N)!~{34PQ>VvY~Uo zB-F#iWO9#>O(do>`f27tlY7XxT1f+A8YReorH@bILM(vPn-)7YRkrV(jJCVk1`eL->EJa=)G7%Z&)mogJUrodT3lT;tS4A&ZIst`G5Bpv*(j+K zLsWfURt^c5AtXzpgR}^UGB)3wVqk?UTm~nkL1z| zQS&4{crz(${GApmxm^5wVO~#3F*L|#w;DE*iR!U^(I<*SGs1|JhfTn-yR}!CU(#Ux z-jE#OZut6OrNP4(h8Wh8LG}1279F+dx~S#>OhM*ky!I`?PD^=WrAqYS-8bklcuYR_ zJ2M-LIU78@JlfdxcB~RAnSU+2)x!N~W`KK@Az}*QW;Zqct#jkodKH!FZuj@1DUk>E z7z=A_5Kk+c#qo_+qE$?`m6LNW33aJHo+jZ+Yprg#vD6IOpY(t9dFlck1YU{yHaqSq z=m1DEdpZp5@jJlWkBoBOZndD@{l>}gg8}_+(wHy6ZN1eW3~hKCl-_GH+_!J>tGHe> zv7nS&IlP>loIDn#j|nEAFr+TndfH5C@07JMbo&Q-XmSz@8?&N3wI6!eNLPXCY(g54 z_y0R?Q-Z{XwE8qIbQNGhxYiN-njOV`k=PAL25`Pj$rpUGj-cK(l`ON=vInlR z(d`!St|{(8$6`I5+pZ;fXldO_3oBFe(n6?bek-Ml62LYd9hcJ7Tueztdlf-qtFN0i z-#2S~+_dIku9mTgpq!FILcF}-_k_Q0=Bik&c^VfNXlr}k5*{QUjAXvId$8NAtPWB2 zllnUSrklR%dOj!{By+W~WIOwN_ec5R*Q4aJigDK;b>~3u5KqMF245y*D6Cv7e<&b@ z8eC1xJ#TZ`XpN`cV?|0&pPZTq7Ea>y@2_lve0+;FMY!JL>pn1$$z#6ROQDWB8qr+c zbh^|jU5?0s7{~wRyUOBpTE1SCI#N}PfI4kmhMyNUs@)IF6>!Ld_F>R}flo|Mj>wS*3?{aJf29k26!p+l+M6m`=kd29 zncEJGT&Hs?W!1Y9v{5w5X$!MU80xFa?zIk4A%A`=yX;okXp$uY26U1h)hOK5-A$^q zz%=&%2E`JPnlru+eI!fTAFi*~Xvg?*p7QV4`ihF^$>j$egB*9(o{^sp<`Vea?pJi6YrKL8_@2WOL%He9^xWT`9Pu8ElKZ;FKx)`!>|i1B{HMR2q*@I1 zFe#J)@q8n{qO8e!wE!U?Z_kk{(V;K0j!RYQ4=|N)^8blBJzVnUU?}V;n-xhbh=GnT z*aFuM@yTqm?(V8qS&WsI>}_;;*DpLa%=h@2KQf3hmnXO^WpCh1bJh6G2A9POA3m&V z&zo)srT@pZjrzSPdo1G4Q*r$HlztN-hopS&&A}bq?~{?-iP5sM@+JZa_2FEIgnlte zIeP4dPUrK1>8rm|THsMqZGLxpRwJy{^Q%Ud2Zij-3_oBn?`j!>nid&fb=OxA<&o1i zTU>SaOn9A)EafA3rnNiYB7=i{Cx>mp$WReOzzMrx;7H)G4WIL82ajsKOWymHw;yw{xR%!JlXj}wsh_IqgF^%m9pkE)i!Z7l?t6R4S2cB4;3-f z(G$^%v{w}zL_{M^wfIiey*(Et=%LB3%Uw5{)V^Mj3XX}_;*tv9$y0xyP=diOWb%`lRz)7a)}AYuuSJNA-OT9zpr z<-B%xO37_J3O3US+6dNa!74Lom<(5`vy=+|H~j~a5(fr0(7naS2YzBmbfGLxSjfxCiyW179$56ndZgb*>Nk14-o+-cYJ;hm3B0*h4LDjVvDcT2%uT&pxap%n0G3zq z8Dka{Z|~SAW|~JTF~3+oo}CU|0=0Ta8eNh6E(ubd%f!R@k?F2{YK_4ZH1_4b1lIY1&G-m#yW;NfwK>d-ibWBiIXwkPq;0f$}6JO!ckh@ z)S;o5P`;6H9+Hhy37J>bx}X9YdGwTlG%mzyjQN)TVlKJ?!6()mLf3JOtT`h{UpHPCsj9c^B_b!wNYn?gKBH3I<))jVF5$m>s)BPan}p+R^<%dFtib zQLe*F18Uu{7xbu!jhl3@pX*0QM+2X;eJZ3x-LdW)@yi!$s-$SkM3I@;SgJOqE?IGk zMpv2u`1GQke(y5I+|340o&Aon?2QfTzOQ6Jq5Cf#gMbC5`Zf{+^@MI?s^;S3<)nVA|KB~F`f}_mfggbexa>AF zK1Ro;yj)+|JO{9g+ZeWhu?mIU4~57E0uJknvaBsd_*)_tcpimGw;8d(oSd8(S($FL zxY&mF;a7DKXZu7J=&arNeRdzQ(X0D6!*r1fVz>Lq(tw z)oPn~gQXMFh=x~HlzgzuJf3=2J)krQ1a8(6)hpt^+MEyc+LL*E%i%iTtvLyQ7d(F) z`t`TfyqfUUDdZ=_vj8L)J|6FjCdsc&Y9U1Tk&>AQhjqOJc84rb#y%XMxw(1xcS6l8 z0e8Fg*zg-mdBKhg2YI`*V;4RQt#6p@Zr@Kd*pVH0+b{jCZ z`!?SclIwrGh}>QBI!05W)8+{BHdH=W&a{GjMI_4D<%se^kZ(Xueg6a*44%8if^qfx zbx{bCXJ&T6e!U?1R`VS;JP^hE5kw{gv1J$#R}%3*#ZrkGq@0`_a(;Lhl^G3((>8fr;$&;I7sH(;+8W$+p&oyw50(&2ZhQzQiFv%$?3^wbJ<9?8QAraI7 zY8JpIvRf=C`m83Yi6kNd2q9Ji&TEhZXNYkMVkPCp7aTrSZEc^k-2iDeFW z&T3|6_6k)$MD0w(T3o*^d9D?e0t-`WD-50|+>b{7{9(6S_C6h;R$V(}+lfcv1$UH_ z(D-dr-PJ!F8-X}7J z`wG5P9A@)VdmZcrj%fw#7QEmK0CyMTlwpVMh2HVd(F zghW+Dd#-M8K071p?pzT1M!`WhfM`m#tygh=J4ztjMU z3xR;&eE?gtg|Y%d+OC*KR3fhT6EoR3?kA+Z?iT;)9Fjx<*%~r?W2VnAAu%vRk?hko z-&`sJNX4Z0ep1R=FO)R`mcy^1Uo#r3$-SkM!;1#MLG$s=h+vF~`Co0KZVL-aqy8eu zqLi%6@BEm_Sl)o}jBk^3%Ul0#dK^MXsyrBL$^#@E#LpqXY$4c5=}7 zLZ_nPV(H&D*NZ`aq0jYE+SyDK1eR5Gbu7#xV?^HrZ{yDcSBn3)X4}#f?HL&7Mv%c5uhCpiM?)FxG;z)HQ?zB6IVGLn#W z_AhAugAT@4zurPZ!kR|#(!D~J^YNRJ(~RY2ApB*3m0|lWwbf0T`WHmJZ`StrbXzd? zLY9+;`I`68S1o^3SKZE0ajrP{`TdqkYFqwDbVo+Fv2k&EiBuYQ)Hy4KP!$WBFV}+W+nprv_}le0-!dxy88MujdB5Zz))LC zY=*{W=|kVp=pq!XqpOL8f~C4zrJBBNI<&vP-{pT-XWs5Ua+6Hsw2so+6n9?V^9fFN zOxplX8lJ8oh9+FX3={dY*6Nbm=|X2sjgq|R&yVTtU%V*zlY7VYI?Wf@gqUgR>4!XS z-t4qC*2Z4KCiAkxa0{`}&^AdSk+hi#7WlewjZ2?#+Q#bNU+<<~%z2pWqH z%T0gp=jY|+Wj6qx;q{_P5oRL2rW>krddR4*ti(gdHqx&@00JWVRcW&;jf_D9n|bfP z@ke+pE*x2kKR6&zy~7ayW%!R`6-at%LlXEhc3LqT4<0=1=VjvSOWu}|lT!4nQXc-~ z7?1cRXbC<7SaLM^T7%42fXi;%Cn_88Nl{k!i^rwdWXctclT>U;Noto`PF7Bb4d`GP z>B2#~n}VMFmwZIrG=R%;vNtd7)ju!Xm0K#l?|M8MO$oeZeqB1lTbz3LaUMQENT13R zP5Sb@$!Zo_(dNCMX{lu@rJ&&cb7~Y=>xIAE{qX)n_l)<(d24V`T$3SZbFckmdwq4J zcC*`WY-o~!kr9g_HN_El_5zVHbs8@o>4=R!&VK+`y=7kjm2 z8!-p{xGWaamZ~uvb}lXg_P6@`0UsNHOF=-aiwy8WyT&ZoAp*-Xo?AA7zhP5_{;twk zX}G-nTr?XO$I&MscJrgnZzKdT2zabIHUiWUWVu zowa?J-R{aNCll{5z*EH{fVDWoql}s z-94B9atcSK_Hn=k!)Lr#wtUSG;e?Qcq&w}V>5I#t=I!d;TK=nT(ayR{m=`Wa!;X=$ ziJ+`cQF>_?o8qsXE_iYz9n1Bm^ED6wjCkq zl10TTUp&q_{GVnASw9F@yQ`IxEh3|(F{p_ITe?kmpJ}lsp#=P0M=z`pbT{ad%T6m! zrxxQ05@YDdAL(Wl#4$fx6sxx*emoQKyYwMh_8z#|sHm#Wv9n=wFC2!nH#?n|l$P^e z38E2C(q%>J&Yo@)OZj77KK7hyxLQZ)-4*Y6%MBZztU7>@;7`(p{|TgZ`Bl_>a9Fe53*HfAqdr9q5sf zkrZEl)saL@zr(i)e^!s{?^*0IG2f*X_WbN|uX3YGGph`qVyZ{1!z0o^_h1~;9(_A@ z7?E~rWem>6$-ZX!w&3pmXKB;3knK99Jqy`fN|xxXyEtbq?L-MRESE5-PSfFFBL&v z=47O+d$WTfjGVgG)nP|fSlC*otjzieITB?ppxYaz&ulUz_cL;9W-C-M11qbG5xDhq ziIcD}p@}jOt_nhguWU8p-w|#H-GXR1NHi=3$}x%XBnj`>m|1~;qO8o;uep5u%O#>; zO!JTUV83k&sqImvD_astwfvrTpqL`E!pzyn1w?Q!=WUjV<<|>bG<(2R)Koawn1k?B z5_O)RrB3*=F{U%l(V__xRmDkb&(8-y>t!*-(&P`1f%;qIV zBf^qYKv;tJy@mcI1sFu$F1uU}$&R#%b2uAojBJL)B+V_&8?9Ff{oIZg^y5B=l#%rW z&3&YcH1bon>ZN!ww6V3EBW)od2$Q>N?wV{szbnS&z_{JR03gfGblB%iBuCo`O`eYR zS7HrR)I5uNMgzvGl zDt|``Tsl7k1s|yS0=#wVCK&mNGliHyUmw^4xL7UY@B%z?PKU7E+3@Aq+Z$|@yxGt< zH#g8BER38;4^KuZ=;+JRxjTJ*pmc^kvj8!S$f#Q{c){_HorD<~eB+D!{H^2>9g1gh zJHiit9RmYlX=$$+*gRv?q0*8PbPRuQ%4-O|e+Up01B0h&qk^0kI!sfeCd|=+PbBdO zvI@tQ9fftM&8IgjVp!XTw-HDxJ8fu55Oz>d8#b9cZNwI1vMs~-jzwI)1_~NYH8uFP zfE|TA&u8#2>Lz=&2J9-qo}qx~X&S8OM64eK?To{9kuDt6Tw zwHEx)Oqwb@RWmaNz#3z{rLLzATIzq1HKZS$O9PpyOf&mK-1w&&HB-MkI%Zi5^(19Z zssW4J+pwadVn7OLV31ZrR}JI!7blghP$NG4dsg~^lq^i8vDOw!L`ZUE=QcLs^NH6q zt6Hbei~IM7q!OgWK)G*xH{U%Ec(Dsyos|Tt%gys15-ETa$Z9O2jLR1-C50~eX05YOGe5_yd@%iLJ< zyWDU;`#YIa=swBXD`gIrU;$h#=?Y`yq0;!`}5~L1GLQk>2$^{Hith=rG~#? zuTj0dJO0v>lZ#6###5mYKn~&J;{K7A-c!m~Q(d%LD3c#?*&xVGZT#LAKD5c(WWU-H zHw~EMb8_^h&}?+uGmefr>MUh|d^Kk?9r?D8UBYg^LHd;o8lFUy%(O3`jg4bcYBy{- zDk@6P{%Scuv5p#W#_*6H$B1GsM?1dOn?J(w~svRn~j-mw4<^X;*Zcru9B$ymkPcA zY5}aY#)UIwDJ^C2YM1x`=mKh-2wId$h&Q50o-(2CXso#hpLm7kwOY%N` zFB7qz2#5|X^R|7ZBsa5&euto2vjZGo+i2^xcNuA<&lch>!1Znk`7CquGvc+H{|k?Z zpN&Kn&MV!ajg%VveD9}JGm#t=59`;rTyUcPSTHY-&eAiSTdyxEyx4K0Zss8Y3U}HBb3@q zWV}o#E|Y6{rHR7**4BC@{s$BJ&P4X*Vn;kHK=timVv#8Z^EyzG+3}9Lv79T3K6UFu z!iqtpf&~7F5Xg{$K=))S4GInRk~RMvjcggSzoq&s`7C^0onq7Gb5v;9!Im^ zAz}Dm5HrpirLM&#t`m$^rIk_ojiriDYwgff>sywzsGyT;OSJ*QoOp3=&U*6~ZR_yF z=x9o6>io{(Y@*cHWvQb;rNNBOfCmj=rNg%gg1$`p$g(hlixv&_yh!xd9eNb z9>5BAsq*pI*n~r2zb^>Am3&|0Cfzz0?TI~>cG^tGNdse&}^_bObws;)92i&9@Um zH(3!HWuXV|^04rogMjDc3apn-6YbfZXEHKuqx>KBVIO$vV56g#wY9fcXT4rji?%uQ zM-BQ<>mT3GRx4LMdVWFZ3!OLGk~73^)t*quxo9e@_7A~Up#pVDt9g4+$*O4z6EaH2ygR<_jeA8Z^3jD2)PnwQr@dEB>H)La) z^yw;X(4G1ZFD0m6-TvwIY79Eg^kg8uGs9d+1N3MdU{&rtfXaN_|S7H zwqHl72>y(Shk}OIxZv|mSQza5kpTZkE)*Y$yHsXc7B0?J+S-TqLJ11td)A0DDZ@&` z!r=sHnuJWk>%|_Ma~a{P=Xrjk1td;i0IYF}&t<}~m&@SU9hx7jHn_~ae^pbeu>nzh ztzEQTiK9s$`aYE>5auH@D`rORHDVPkh1zdif+AR_uBKL3(*W;7{+#p=Lk5}Y_(=$` zndk5h%F>XYegSvEqzm`mdz5z2V&o$uS^KGI=&*Trgy`{VTy5Y@e;1y$N*7;#IK}Tx z{OqPm1*c>-kbU!!i_2q;zoOul=lAr=EwO#M!JnnGA`39C)_|UK6!tocft|QsyU)ts zVQ<(TJq@++)ip@xPw4V;$0Q{qr^9206R;Yj&HqV6TKWm1NKV&DpA|L<$B9gw_QS^m zMVsGGr3>-rhU7cQ!}h48HqacXfwFY6mePZMO9AwJYf=(w($JMtA*aB!%w8Rz(_TX5 z5B@f-M&p={U|)NMW7el>%9QlaIucvbX20?t7?2uf}H9|?; z+S+?W?INXn3Z-zTwa_B|4Hvm8E{iSuAELzraCQiI9Bt%zJ*z2hB7df*tBg=|ykK_x zI%78a4}FuxC#fq*#KV3@P_DZOsamc8ArZtxO7IyMQQ_CI>LWz;7T%19o1u|mJK?tU za*dbn*UvEVN&ShrY&L*9r{lqHj=hm-BdQ+L7&8Gvtn$K{G79{MB_GmN0xK5~om^ldnN&aZZo7E?dBy>8R4d2aTW4h{ zeJ-%sCNZr$;r#ZG!wJ&XW+;p6K&8kq7hVNxNNZ5c(eP_JH9LpVEM?O++I}Rr@qMgrgOS2cN6cqM; z#FvQ7@c^KXC~I*G;j@ni!v}(v*a+d@;4*x5;M2kotM+xYyc#s)ic~<3YLV5g2(y^e98`Q zvG)V2-lAi#yBr6N0AcugG>Jwk!ds5EGp#Txlq8RPJ0jec=Y^3m%Wkd1OU9YSdDn_T zD6&WK&BYbiqvH69>3ppYrJs@~;^7R;KEa1E=fdNtX9Ytx>NV;E;z7FVX013;6yA3t z`d7BErq@Jn+)^&I@xsL=Sl>^vRR9kRK_Nc!X)!hM^-ZG>()Lt9cXn|BP$nonA&Z%g zWq{NtaZVv^H{F{y1P~xyLp`k6h?X(KMpqI#WS)Hw^uLmifI8LfVSke$VBTx{z**gI zW@Zj6h><|!F0F@pq;vh1Wr92wJ&5*GZw||-5#dI6yGa4oGk_!Qvs8PTWx~LNSrhLi zz`+VY`M&cSC)7*t)rB4cERHA^AQ$HGx`Cs8$B5K8HQ4AvyvaK2a-Vk=is%gIwok4x z1t&1>(=)=T)Tu)*r)oUC@}J7I7k)*c0Ma*!q#^d$V0|&O0jex(y(qlN+t$Dr2P3nT zq@0W_x<{k@e}v;8Y9}}db$F7w2mMxG5RakZ#jmjgA11?J!T2CF=iEa$z7c=SZ{+{f zA`}Q-1Gve%C5%oW0lmGvKy zn1nc6vmTerI=WPRK7aUu&SoyB)vU5B2*rDLZlTu0^?24&%3DW8$GR@3qwgQghnv%r z@Q9JIn#ugUt_>ku6k)DR^dT|X@(^n;LI6o5meXznmKu=~@G0ppjr|{Jg+g?v0w7f6 z6(Z^BXvC5STCgREv$ zLjjY|G0$ZJEfuwnMl%kZg)?AB7m-8%3g2k8*l7Mzb*M-REbw0wlh~ zaz((wUfaymBc%Q~;gl#=FTdGX5$6k8eO}6#+OYK^LOEZ{FYPiuUL{}$7X0e;bL`y7 zijfhHaq6g*ZwI{Si0GmB8L7rtAEn4=P^dS~ZfRuo_d3=L!i8Bcxc`fc>P;Zh;+@Oo z@xVblF3`v@;73whoD20SsjEDGWTpl6R+f8zR)?v_I5Eo-`21H8c=UQ&?51K2b(NY)%`f zIX|7jX6b~179;f0-sT;SwuWW2GY#eA3T;z7uDj46Z%K@Hed?6n6{72L8q{Pa2Al^= zPfw<&X6S8F1HdcdFK$FkCYM~CwwTode#ZijUGmb&eTuZs(;NBpkvu3{?18zEtgxX~tQ-ytJla{KDz6?8q$3v86g zd3pb~`m-+L7$gM3$I9!vof;cip}un>^<>qq_9%k(0~fb92K zyV{u~4{ecPZ(1=jX4fVa%cPx36Q!5LuFL3Yw5s!YWMnieD-#KqnTMB_mVrVdv@9j1 zWt~lx^}kv`l{gI?>|nf_QgT2n6KcONumk8r%GFo{kXYk>q^hS9-2@0qH=r6uOMjUJ zw?V4KZ0l(q(nQfU3X#UPGq$TBg}mu=CY4r@5i=iBO zdne}Zq3>xjW*h*h|7uOb5d8`kI=b!Uy_lzq?M2g=M z^ToX);v?ZwAY^!-G(EBdq>(2c<QRnfMd?lu5vj#e|x2&sv#B>WF>psE6`u{P3QCT zMPicZf+^R2sh?vu70&qo5UrMM;E!CNLsLnlrDde#6&h+?ARWvPkqPhdqhttc5Ie*g zQopaSP9v+a+s_N|^PB&C;QLtB46;<}3E2qoic(Tz{;Kfhr@(G=^#`K-V2gxj$Qpu_9^C-GMwwifo~1q`T5rJ-?W#J=_>UruA; z9G7PN%s@)q@kL(NC{kM6p&XsLAgiGTdk4(#y+QA>%^4IxjtOSsUa$*gYdnmm2T-Mr z4z=82;;bPG%n=GZfH^{Ip73CX_kX^XHgauw>2Q92{GFOBbO1PP9;yr*Y7gb{YaKx+ zUV$~H>$9@OAGPI!*#e={6RYk5ZhIF1-Q}RqUGI0MqVDEa`1)`BDe!GM`NfB$Qbk2w z^ir{GPpjA~=3c)RA~+1P`rhtF99`ZubgZaFYda=JnROr z5#%S_Mg=I-a**M;F9ls(iQI#M6VAYOgZ~m~?@_9~y(UV1i(t^yZ*|Ze0a!u0Js;^l zzzCjbt@BO2GaxcnEaOUDo<=ouOrIw}VK7gwYP>4IQupb}E8=}azp^d$;^6H3rh|=* zowG_iY$9dTL=HHOX0uW^-^<^A{rF8ZQQ+gqJSv&(;6^S)inB`wn+R|BV{1c`y&x!lr%YUnr8yLrvcECOaFmXugSs zG6IT2{s(~x*y0*z0m(vR&PYLvN)Efzvl!x+3R^FvzdFk+-JZ{1$=C;HM==vIt`z{| zm`Jh2#7ZyNzMve|>z*+}mq3|Nt#Tq2j1!j%;^f_z*sKPJc8A*+Xwnp=Xcw-pN6aSh zU)?Hg2@*hv0XVTGNbZi0C)`uym$tCJo~y0KtWpU9E{rKF^`-{XLvOjkM>I~7D_M#k^f%aa6FOa>re+iiC2bmHA} z+(q>^L3r8!m1pOhw*lY%E}*P4o~?j!u9iqM60#5jMdTEDM$H(fw2Y z_SSw0I#gJ1b6)suaket~D;|c4ee-kD=W?icO^d>?^FNRuoOcIL*#cKhV~POE!_bV~Vy@2$PqYdrxue74o|h z?0t(_)$E@k+PoCT3mYeMIWS=$cFFp}?$|3Mq2!S{; z&$Ckm7_!tEfFUEcM69o8O?{+Pfcg^C)B);Q)cZ0WiYlJJ1AV&G0VdrP4N{#jgbV`o zK9FX0#!!HoKQMkrFQ9Y?KoJaEztnE>?6vi{7VC7RPkcQxe*%0g?#NPxsp_8veQ@st z>gp<#dC`M5;rj*e?iz>?#F zficiEpas~>J(hsOqvjqYaaf0r_6n0P9u77xc?!Cp}|W4KLS0Z)yf1zjBt4tj28Zs|*I24mh|sECpP*AS|!;!Q=4 zL5TYLs{MrdiOiC9x>RRfLUT$;vwL*x5Ud2&2glajE<)6ffS>fAO>A}Jq=)VgD^ON- z$1yzCSvu6_wXhVyW3tVuxKs>u9q#7?!>4rHcdBK|wE>5dp`EEUE3C6B z$Xy0}ZhI?Xst^*2Cb7t$X@@dY#=ixIMZ| zW~Mke@>1zHEPM!M{Pu@lSVu=k&!3T;dVtZ@YrQj~_s5T;r#Wry31<2;`iEIwDVtIt zf*6%kJZdcbkTOoY{)eVx&A_y#{uila!Lp)| zg8$=`!jcI5+#_i1ykvM(YGRU=OS2O*5ml@FIh-Q)%MisuSRQN=+U~ANVUf960=RkE zExdffn<=6=%MRfAwFs>?>`F*Yc35Zvy+m>X0%0Tvz1?Yrt#$DBv14mgEpxcUZ@%1* z00_~)1CX`7dzq#$A1gKBiPpgH_UR-E76$RA?>Y-{-g+ra0BL;U2^;OL%RC}C4C*P- zLC_~MODm#pEdSGR+jjzeTtP3-7-$fu-5Uw%n#WAVKTm-kkG_`Hd#OrcU|mazmU<(b zdGRm(XB=!X)QsTfYLQ7o!I9~HUCn&PpgscuRrSS^#Ugc}2XVHa_I+cK5|{5Z_=y>H zRSUgJEG-i$tDs~aLTTzAqbOvI9mK2dH3-@?o9W+Xv31BP z2gm;WA>)M0m7krRU7XCj)jsO7n30pW)2B=yI@P&ERA7LOmMK3_L#u*EHf&Om2m0>6Q`-6i) zlSdh7>j<1ujh(IS4sSc)LBdJdSVO|wF)-kw*EGRTT)iLjELMJ;XuTED06eOmq5!6> zWeqjdT3)9K3C=6Lf03jY7?WpeR1)GJ#f$!jKnjzi@C14+`4!g=m&Vrz3}Q1?CuwHz z8oyP)RSytoOD#{Id|cM?aq#c(e1&aegBz(qw}_}G6q2an=MXIE`11`{*KcNrT8keF z$ITM|CW>fjsAZkFfR%cfY4c%tL%yDiCFZ(7*>;yD@gfI&z_4u0${ zKAZLAtQ&T9&vWVjkXh3xoO|Q3u5NDfCXzWwR+Gp{CqVnE>v7PD`@M0d$ozP?KdKK4 zE5HKxLK5*7J~p3m%TAQJTwiy}=!lDxceu^U#LRl5;3cpIOL%ZF@63kl--uQwSBbRj zn3=g*pm96{Ev>$Wf`)9w!!{?{O_>=_K3N=cK;h3W(IJz>PpgCwk|XK-U{_bBzvF~4 z*alFo|F*_Evc=I%pOqh4bGIk_1?zSBIaM1BF3KRUlQ=)vWu<1ugAHc{d1*E!VBMWb z!=+{NQC@a5P))?p%caZbh`gsk(X{Tr%imJA*K+lEC{VLl>k z&aYcliK-UDc2D7*E%LyRnNyj!&XRT3=3i7&bS(mEo+s}Iu&mImd`y~&v|3u|qz;Zfg}X_Jtd^te4tjvl`O z91f`)amtpXiJq(d@>&d|qr-N<2{GMqOKetuC=>{l-p-(!bceg1&DmLjY9 zCQ-b1f#nLjV$RnoCE;Xw$@h)%eVNJ)f3rW&>&h2>vZEVV;zN)B2E~}o;`jd_TW=Xw zW!JWA1JX!KcStwV(j|?gbc1wvhje#$HzEzvf&voKAl)t9e1qHjdET|w`~Bmm+jP!x zUFSKD{n!aG)(oK@j`Q;xqpLfN_^pXvob;S;O(7NDvbq!_V!RMtpJA3>cj@a5)emX; z={J|8g=+C}S6lFjxj+`zo>%l+i#WLCIrY10NGBeRKd;E%7 za8_*M?*32jpnmVG>6p*ubQ*$0o+z^o_9oH}T|1UP6w+;O*+6 z!#PTa(d?XW%IN0T=(6R*+FA%Zs*O(Cc8C4&7x!8O+s@|s7?RmA4P4IbknFo24qB-{ zca1f|TAVO2Z@nYnM&ni8OIq5ea( zNlase^oDt1N;t_A&T9P1Lpjh#prsky_8O*g@Mk-f+qqc}0jyTY7U+?w&isR^sE@*& z^B{Sh|2}S4p8*ZljV>bHTj|c)1O{%16Qz{ifk>Y#?=1-2oOn_Qb^ML;cD{JdH3CC@ zTy~@B_XEJ#3}GYoRJle4S8o^b4vRLOLC8hB)IVEGg z{^J&aj@~yo{e*V8Z#Pcff6&VJ4HVAg7{qBo^07pSZ6MJn)u-(^9$-Uc zW;=fgt{`gqx4-{EkyuH{$LRpk!Xw6Gds=H2BhyI}N;c|3l$to``Qdi#XVjf*WgryU zDD9?&o$SU*UW?OZ(C-X2e@JnOpn{qezmOGij5XuYGKy)&wBE_BzaSBW&4;79ezWmL zjtB*!r9jQgSETBV9^FnKfcS@W12i&(F?jZ+^KWGBCmZNNSoewq!XBVLIPVq+T2iS)N2UR`QTD5YyjcRe4L4DqYlCYyuf*X2q7NCi?2;2DR>aGCY z=jGO9bwnvU0w!5qWy$!foV>sbKxc6VcY@~-X&65WyzobQhe7y{-q=6=nz|q@$i4kC zADzV5nq9K~*k;+mg|b>TN43g>fD5?K}G9O+*T7{ulXv`~bbv1yZ#B%h1nnyyaPgM`91Fj9J1&rVE zk5lJZFRX`LGKw9T_~RbIyUTb#Bdl?QbkceM?iuDl7C z!CtnkXx}S{$e7sjKjr-BL{+!Ri;RePgy0(vmQTB`_pK{}>Z=tINRWQ}PD&aro5Kns zk9n)*1p;h%1Y(^Dsk_rhCX}X{Y!rd)<+pbyVyScjA66SxM9@j$-wh4o;$@_2s3avN zyv8U7A)nexU7e684=9RC1_=%E{?_8GS0PVD&4{=hoUBtdJ)YfpP_4_=hSo!OP(?zX z0F`R~L4~QT44IYVHQVftM5ME1Ns+Wv6P}JwrStxMm~~o|Ut@H%P*Mxb@gZd+8aDLg zY(tQ`ni_0j(3AaZ_PoCU)Z=6H%c#hGE{yy5{;P~CC#0h7h*%vUFvE0oB(whnjfjYt z%BIaqSIAfxgk@>^{`QPsBq<-pPE|7I>htU|RNIb$qIo~KXSeIOyOpj&MYjduiH`|I zxjgzcCR%R9lR~OEFKl>M3fj(ORY>;Noh#u!jw(arFK(Yk6Ez&a$!E4ZU9{p)H;Q3i zHTO!yXtf(UFZ+vbGikpysxHaTpIyc$mHXQGrPPAQV9$w1qq|fqGYfP`e)*`Hm&1-` zmPda2C*k)n0|WFMP~Q)!J~!FIcWj9SWpU68E0;b$o8(Iot8?-2)^Jkb1?-Gv*PTcI zm6j0$_lzZr?_Bt%z<%-1%r=LI;_vLHM((kioKQ%~H39f*QpM$0T@z-Gq0pNv=th}) zt$uMr&lr?SfJl)FE9QKQ=cr3ot5@epF(YVy7lfxCyvn%E!|uyszJ*ma^>8z|S|#w9 z`86|;NSo;Gv~J0$zn*K>$?O}IWZh_%^B9HC<-ZY8tEI7^uMVG{gU)|l^&C||O{*r_ zPbR;*6O~mic;&B00NHx&dw7$#^d6cH&R@-%Zw2L|!iww%ve)UL<@7m>qbYy0r|0$T zAGZ6@FF^IFTA`}Kc!|i3I{)q@5`;KZr88-Vy6(wK8#7 zNxNcFTKb4u%e!2jBNzei-5IiVKZkI+^?xxcR3q)LUCQ7KGZZ*(hW24^7yT73i_#NB2a0MNh}D<{-nABe?H-9GyTJ{uW1HaFH-5&SPpve#%2UOG#AQ##>N@3 zkk7`cE9wsi#6dt=2=C$J4|>a`ZVCAOcmpe2(t2@=jAv?WH33}L5EHfb${#V}6H;s^ z^0E95x!g*lk7oE)Dl1A*si&qm=3S3CyRBg-dNzj6D899%r>4!6X`wdIS-gFl_p8y! z%;`CrV}z+Z!C`J=V}KCqalUEtjYT&Old%#(d9$Em8>*RQqnh8Nj@|R!1PU&%;i7TV zR@J-%w_bD8!B~ssNqrZ%%q*ll`+Ag?nb_>T?xCaOosoXor&TN~Cns=q{5>9{+Pi8# zvNj;HIGIyzJ*e#0YI)Z%RPvGcZL56Nbde{s%SWBo$P(EXez3t3vXVuo-)&e1b(hwt zUd=XI{X!W*NKHle*AT@jO{TCtjKW>Fu-2;AI`#p1?2uTw4>Ez0(Nq}q<*KZCm?bUi zm6RoPaqO>o`-8&YqOU+m1i1&nL=piZ=}4`8Wc{&UBM~pU?uJ!9Po&YV;SD;6 z|7pZ_1UK$ni3?~IHa4h_5;XwX4(^#y#X`?gw))cf3Xcfr5zjb0RxD7XCp0})Tnys@#7-e|?|vX)4DJAVFvmR~<^r)}7~V1>N`z z42)*(jK*+4N~Kz1@bG9IB#b2*Bn58>b|}1e$KN9(om9Y!o^UeiOL*74sH_fXKnTLS9QC{gDDw@-FN(puvl6K;D>Jb+nyJ&e>gf^T zK#qD84dLVF6^^d8J3ZH^nr}cw@=i-h5%dWski4Zo>VAcV#UkkqhZ>iXATC|&e1`(R zs?WLiaM!-L7|_fA=S_>aUi$3gnO!W$rGl93KyH!>PSYYxl& zXdq`=wsJ&h4E?6I;TvO>-2o1CjF%+rAnSB>QIW#9(D2OS_M^LK0k2oiweO|s z(EWY;oDF8L?x)a?{hQMEg~pp3;woV{WVcy|4P(iolL zjlCRKq=Z}n8sN&SuR-Ffsz$GWuIPL+SUv%paczA~UvAOL5U)#NfcuthP*@>~>Qdu)LCx-pVNDa2fnIX@VQ7fd~ z4Xo5EWkz+Y<{LxM5tNrd%eDO_rgEhs)U2smNBjidEsiOQmrbBwhey~JT|I2$6;k}S zVWI0d+AknrO(G`=_4qf>XW!!ozNXlA!x(t`pBg?&M<8uL`A2c8+tgEd(N3Uc^zYwEk+Guyg!%I4HXBC zE1;>|`tShsWp+3}>;aX_<-x2{=X)cup;9P-Cy@LXB*MYLnVb9)SWA9>-TgpBFr(LE z$8_?iK-ovqa(3ES6Xa8*As{U@((rcdK`HAfRCcDo5e^=@ftg-<5or3K>%6O}r;e%7 z_)7WqAW76(7s6^=aj0+DX(6})RGA2Rp5`oYRoipt3;rmw)rX+L?J9QCE&7+)_41rp7eNiWGE4k1AA`R?=uiX$XjbRQvi1r z#({vzm@9QYQlaS+>IH`cyopPnZIIKb`urI+n|PXCxrD$GJ)hiQNoc_{RZA-w|HVXF zEGZNZV|^Vj%ow&;MM=ejK=<~}F+M469@}~z#B&yR+I~Dec6hhBbXgadJKsfvneWDP zn^VR5zdX*_TzF?B=wH9t81FqKm=Q$w$}btcqr`}NA?v@X^9P}W@r`A8csPJ7c%AQO z0qdjBZ?*hIUQ{&jk76n-8|QmP#o6|0I04&*=A(0jPK8gOdMv;TGdc(y1KY&^@2$}#ut@{3!;_U^l zNQDd0;{~6`RuDj|ewdoC2){NA;eedw&C#IK(cgr>k#T>4W4i{qPNaCExL!`or#$VaQDJv_@ zp*CQ^*qg{Ysko?NvvKNpo`Y+aHo_;t{Cjb<*cD{A`@y_MqwOR9yO+3D#)kQo`LgrH zB}G_1w_?}Vv)pSjVQF}_@L@%w@LuPkH1H|7F!3@kP0W&gmD!o7(suw^Syl?aR8vsy zflR&Vt7(V4JI|=%RFp^$Z zhUWqaMRM0GK*Phz%1MPC$sHc%k&~RfS7&G5Ca<&lRNv(nzh-D)5=R}-{Muh={IiF1 zkZ$ezjyBf`tF5qf_DC~#oqVwGZax``gugQ1!Da-gFz$K%nJ?%Ny!te7-d6t{8Tq6b z;K>acn4PTqDI76EL{wKO2hHV;E;K*ITjgZ=Zp@`pGBI5)vb=M)08tUFAR+=d@Zdh= zbKRe>r~xFm_-m{QLX*s~$@NJ^Wp&h-G!Ng04=RUsw75)6Or>%04;0ItK$VsDZmd$^ z(|hQhT3RU50>zvE>;k|$MOThL1m=SwxBLB_yt_NhNq$(bFw<*h=9sdP(NR&0I3CKE zM|xnJzuXx?8WM+Y8(ZDiLCPZ**8cj4B2K&2Wp~XlkAlR~+9maRzuh}K8 z!IzBAV-4LOFZVBv{VTu0xKXMo#S~tQ@4CSy!rIiX`T99LJgH%%W1(rRZB6|rRXW;j zk0u6c!AY6i%XlSq1=Q^r$Bu~_uL$Ru-tJ(iJG#UabKK#25vpP;<|eOh zGy`#cbtNU;FFj_nsrGbqbmE_KmO9);=i}qK*1e(!PD*q^JU3U*rz3GTFU|s7c|99R zti=uLAoii+HMu#M3t|UdnD4o?B!ONkup4)hGn(~6eUF=KDE(W zQGhaa7DP_-{gZ5MLnn~8AT752IQ*^)bhUoYV0pU>O|SAFb61a4|NenOEzpeXzcp zj`O`usWh@O75;{@qxof@iYJX?F0pz3DT1(K2>5WCoJSbs8HqZ|r>ey9(cLe@Chtx2 z^1_~PKGU{9t#XWW#!T6^ki_Z3OZK~ETj?$+f~Oq6B%$N;6FzjBXM>9jnT16XEOB2k zBt5q<6>{7jxNcK=oxkA#?xQMjlYLoBrLhY7f+pTl7m$z;R8&`!(W~Ezip}%#g6+Wu zRRgGAn5r6L|Mva6RH&{U-_RGBXHqd+5(YIOAh}UqyK>g+mDAUEgWgkLTxaX8hsIxc zqFaD2%2AtBakM=yi&HWXUF!b~p61K#E=9GaZ{`L$d$s_{J0}WJ8=5(XnAGzZ7c%00 znI-70l)1?q{l3}YXn-)%HE*D@_wLcf#XPs7BnJ&A!v7gf+C`V;7UW@AB*ZW_5!L(p zaiaaTTkv^>im;(Z%|S33v)~hWH4Un5=_)NMEZo`IrKO`|#bC6yMn;a>D5R7SNj*Pz z@(w)h%>GtfEEe4n2717_3=Hhz^8isT#8ex3@$#kHkm~*EV>SZJM?#bmiKq#an$psb z#@gAX%+42QzJ)v!|BrmfS+EAjlhQy6TEJsxMP;DOhF`3w>>f3~yRIf(u6TyI^7S7U z#LW3-hMn54s7;m&TfM%=N7EIk?xnhwp4v?Dr3V$Ud4J5VJR@^nCZwlF#u=`nBOGB| zAd4;5_@KMo%||1KhgYO9@b0>9tj+z>z{BgyZN^X+ap_cKXX8v-v+F}a#!vKtfSUMx zE+_yc2(j>kmB(U&f!-1hQtLKYf*q$yc!PrUDOl8qeF*eYcjm3)WR#X#p5yUW+pJ^j zO;&~mfFQvgdCt@VYMXoY$x^%TV|f**j!p{(o!;MQW>rccj|UcWb1UoZKIQJ zwHTg#M)qym|8@sKRj%21{KKZ_1pnT%8}X9cewzGv1g@C*gNeQ|Vn&h-KU}ocY-N;j z23A@(D76FOaXc4`$;#i3WAFN=R-PdKHR&v~pk1yxmCuwuogk1$MP|~h9blH-sP@2) zEX+@ri>AM^{+%}y%X;k?+6#&Yd#PJ-u(6Aa;FpH;E+c|!HI{SV!W*3PUE)vX>)>qF zV&HK;3c^=NpI=g^g0`m{fALKevcH~}=HI|Pxi{HCz0h2iCLZ{$U8c0SSnZBU$9)yD zEq&C?#AI(L>4<%))3X9N<~GLq7TfKIl3i_epMz#V6W2xL+bP_OHb+NKkBY~E{ihc& zP-9&WN3n4QU`T|r1sjGu8CNj@aJ|%@FdCQx%Gg{F$B|sa|Hqg!WE-u9RR}6|sx0Tx z!KfVGMO>1>^kgIsKbSV!gkcHxRq?{tsYylU<%s7i@!pKjewztJZ9KsFv^)pggh;9Y z<)fpdM6RSE^*)YUO1ha&DGL1`f6m8*-n%ASo@x7PodLX%K{>f>*0$x`ycKaJajNv+ zXvKed8`0*_Pr51}5;HOq(&GFly_bbWYx5vXB)40aEV)QoV3+e`xRw(A?=l}B21YB( zH&eqBs;n*PXe(wXzmV`5NcRyigp7@1!Nde)!#YGnNVdrLnIi5vIXQ#BBq|ARl}`3G zz{`5g=FW~{MpI{uVx#@psa72Lmo?ceclRY;*_Y8tNazl!Oey|Y4vqbPcsDM7j@?BD-vEpb`zs*7Q;+SfqgtgNE1S+Dc}u4%dw|nWDKO_NezF- zDf<}103|yz%#i-Z@@C`xF4y;!)aJRw`0HhyQ5<`g&kEM(WA)2j2sXdE(dd|%+|dc0 z&Tbpf*S{IHzHWB?56YxqmaADMar2e)ctQU@NysXmjfWL|CJihgSB?8<=L&2E-C?>> ztHJ__Yyif8b}3m{X!p9W#V-msm4lT-d`6!V?L07t|L`}-!zr=8y-V4#z^JmMBo1dM zvO9uzSY<#{qMzSCrDA@Asv@731BK+(w!Xx5FgLSL)CCQ58=D)=t)A$%zMH3W>z=s!eU?iRTAiPB1m~Ni zwKJDj${io5)EbN0G{K^Om{_nj=!rAsQ<18R#5a)bdvvYw4V;_K^4L>d<^O(zY~5Lp zU@ecf^8Dk1*)96~+(P8gvIz7(47v?ebf-ibL4DW1{05rOv^u?K@{QIlXT^! z7-{47cg9O5fiF&6I(1ue+n|kkI1BX6~rNrJ%k2 z9+0!~@-Za*=jY!O38{-W#ch zMMX6eY^mA6_F07g?&3*B(Qa*a)h94GcX>`X0&{JBwit-FsPTd-Qkcl8^nip%8#M4d zOL$xy4TyJ-yxUw`-+Y9Bz}n}$1#r-b)(2z^XsbRcr5;uI*JHr^SfQn1^s4zO+Joe# zX1NY<%xh>JA1%yvJA3Y2st32Q(muNMR;2tK`aZ;Xr2)4Nh^DtLAAN1)QC^`O|1Kyi z>M%}X-sqKx>i2lJT7p?sX+k4Pl?hOSygMMj3rFwzZKPUj<~Mek~Q{-)4FOz9=Fh?`9+= z#D>qcA&?w#7`o+u{GyI|57U%pa=!(*+@9dW(#e@c_>}%oPdW2Tx{53bByg#q^qXtl# zL?^|7f`_tyO#{*IPMi!s`Wah^gujj|7_*>6koe8ZE63RV+wdl%PF_6uN;tRCF>qXY z3ynA|tBiOEziCGZWxx3i9)~&SD(D<jv_))@Ssx`v z1B2>cAW2@{E=IbLcBjJ9!uf#54utgA%^37;n#pD+r^QP^^4sN*T}(K;2?mA?p5P3y zP(f$w#iO?4)%285&{wcA89(4N8g>^!skp;O8;yeHlRpWj%tw4ygcurP+&-;1yEw?K zOccszx}x8NW&zTa@28|DUu|9y4WvOABuC{HW)L+&Bo@|-`TTEU4(9L)F20u5ve1$p zo$eNZ!q0i9!xt^kY@GGAuH~*fHFD@RdTXPUN6FQo&v<&uk&!nPmuTUq`uX5yPlZfL zwE4dN_Is8mDr#!fM3z?Ysic|Yme}ra`ofr&cwa$cnlc?Mda}ftc?{g*@%qe%BCuN@ zSh9;iN-Vwvl|x4Y`pp%00ZbhsrHDFzq-MgUrBee8s@ZcDLjMb46+&kES9~Z{v@8AP zM-v+iL`c2V&Fl&C<%)*#pr-kXU^RSo1#M$xhs|!1@=;_DcKsiYD7>Y5xp1o4Jo^K6 zGKUozGy=guSm2x8(6D;gsI~n1txDJ&TKqF|xpfd_yE4Wq1-C0)F3Vr%4gG_`fEiPr}yP^%(2Ya#H?is*3vQqEHw-<2~uAo4J0}V+sl~ zf!%UnD-68CwzVrE;f0@_s_iK@8cndL;%BDpND%3%C^YbxoN5sG*tkE6&bAHt3UUvM zEJ;bLu?|3%yjpLQ-}akIA{cUix4UpCxyK^?imFIZ-&gz3E+B<}F>htP-U>mx{{)YS zL0#{7Vzbrp4A%6MXtYWDch{tugWZomr$Yz}Fh4wByX=QlN3*3h?^+%-BSgVPVF-y_G5N#S*^X|QKYX)@MPxN}nQTK~ zM!0S(wd-ahp2qxl`hyAHYV&T5W(H$@Dsp=~mvUI6p`$A+EpLB`5`Yf*!6J*uX#pNBn&jWAEl*hvW4*8g6lC;Zk7Md=ft*IoLQ)qTeRzNz4_AUcrfWm+ITz3 z!2uVU`2kWXmL>ZNp?(wYVx(CS22FM(52#*t3*Fyg z8ZZXybk|YiY%vTAW_isXE^G9*x|8A0qA&2hRb#YimrAI^Z`|L0!zWLmJxk`W{&izw zr$1OfpmU32^Scht0xR(qW5t60Rp66j^lRV}-4n2b-pDaD`2@k^ zHUOQ&=}m)k|A;<^Wm_83%+3xjG{3w4p`z#BqKPs2SUB3QrluzBWfsAkDP~XFR?|aX zRm)k!3keP{ghL>I1FV?HY$jG1CPv&9~ ztdQydFn*HK&B*6Mz_x@e66;@Qes-yo(X@X{z7tlNd9M<)d4bOnqCIo?WsUz6coHbLO+78oT%dtcT@AuRTx5D=vA%83$lz?Nr`66x>^^_!FloA`p4+ zfsQis;DFhqpQg|2`s8+MD5!b#v=kiupvSsLFT~W;I9AjpOv|gV{Ddoj@zsi>qvJRX z{8cxU>atgAW}hdKC z%)XFO20h@o(Z5Ci@D1H|37(l{P<*dm6U!1GV>{{q zurM!?;(VDhdvCaC)@cBdu_kNsAE{1!Nz8GUKr7d&+=r3*i`?aW@0rY)If9PuyXBTf z+l=G8P&;^pG!2zb-!m{D!PR8()qy5#90i$96a|adU~i5M1ne2=r&cy+I*~`S%bb+R zswz{L)_Nf;zs&OZ*2qJ6+h?cpT=?t3>aJSDY5xbF%I{Vu2{rlXoqCxADoWo+JA8}v z_537Nl~~ais3L>ml(?dR3`g7B*(-VHRSC~aUPjK(hCHqg8ssN=tok4y*o2kXCvr?cE<2h+RxqVm1Hu~(!B?4kS- zcTLp?bD!}OB51$q6@W1g;SF`jA6Alla*92UjsBci?v^(`Sg%4UTgt>aK$ zB;H(z^Q_~_yPMB?LN~zi^n!2tF2Y0TYW(*;KzNlUV~?%JtB3rv2x?#2=6|$tijsGgfvwX0&UgOh|J-Sr2z>nqs76={Nli0(^E*Ry+ywUTx@k!J2fnw z`08G;)l;Sb`|ynhkHSaJ|MFYs5x+RWF%6Q|WM;qaLT5ZV?;z?xzW8|Vi?oy~ zvH|6L{hY}e=1gfhd9N#~m-VAQyGW&-m3k%Gu`nDySBgp6Nw7jZAz*_aq6noZ1*joGqrwQI4mbB-#Tg>WG z!|v{f25#Xw5_v2dNl5Amj?=-6)9%$pxcvE(>rpfb{|Chr^YL)i2(`-UncVRsYpt&? z)SFNHPsbB{k3V&}J#StAB;Vfr`X^-M&wDPOo5XnRNvzg*$($|l{hgdJ9d6#I{CJ0* zh?1Spf5D?wlV_LE^=&E8E`8fY3`Pr~*j&-}?JAYJYrF$$E>aN}+Mlm5`k(zi#YKPp zKE2-cY){mPa>M0cJ%|U5l>@UAJFn3(&Y^cdldUiAaej>cz(gxNAtA63vU6n{R|7B} zgg-9>?n^*m``nP;PeDPB>0afwHy*UAf=BAu&)IehZ6_5aFNRk_3dG?L4X~5a#gXSK zg+Fmcam zm{Z`Ee|0^dTvg@fW2y#uDuS0=#vr7Oi1wS+xuURZyhhoy7yEl#U;XP67Rd1+}v@{*C%!%dDvj6(E6eM6f_J!jWY)l$C zJ$*%GrGy2Hyajopb`Mcv0PPJYEk<+Bi1GMoznyLUJkj>q+LtZuzU z^1hd_f>zgm@T3VGf)xoLA0{>J#Q&`$ z!XF{;Pak;Fku;>NIe0)M)a|sh7?^)8E-wBc(afaNSz<4~elq zH?)#9wV>OLdk6tnxv(tZ zf2pZQjq#J%mF>|VR~o6+2xr%ia&p#004=zTcCKRp3M-*#=fN{L!klm z=?E2hFMh&BM)JE2U8m7ixyu*E@6FKA1H6Rpd-T^CudtHlJcUYsjE?qh#k~r-AJe-D zOGxRhhk&s!EX>zd(vBPtQzmtwqS_{MXn}EeM>LVL%@&iEeya;7Rv;^w_!ouh#DSXB0*R~@F7am?%6Lt;(~FFrdb!ei<_g``&h}x?J+~+- zD@jg{rTwv4J4iOP*zN7p6KrsC*xIiuv*<%fm%8)@oqwpNN|E-mTRAP?Q1~mIH~W># zk07g#lkBZcM!`7J1!RL;X!-10AThRjGS07sElcA3G`;DfbH}C{By1(?khGzw6L_UU zw+iknYqA8x2p0eAS)y|IZlWZT85f4f+_<{0u`m-rBygwU|E57^JsI|X8Ba-7Ib*9O zKfF$3U5!Zht>=AO_L%Tk!d)?Tvg(j7-0KT|*vNxPBZ$@hqyu8SEQzZ5h@H40{-K278)A5s&v7_jlADDPyFdg*%BLTKPETC%<=HNdnZV0*6j)}Dni}h zJ{-JsX!#!Y$5!tXOB)2}-@wTD{(a=;nvJHb&c;YGlhbfDcyXfdme))FtHN`Io@&H8)}f$J%t%hvlsjp1US z8`eNY{B%l%fn#7J&&ec-WE#oSZmIk`c;w<7hO6Yqp<*l0e5|2MT|r13=Q$)E z+amgT=VBI9DCVD&1H&&>Rh@OMzOQosBS{Kj+qs-_Y{=9JCF)a;(oFWr!&j}x zzPlvmm5`9Y_OEVlH+0c(z)}s$r&unvG;evc_K=+&6Uj_3{tJ zfQW~j!b4Kq-BaapZNC={)zoYSf~S}0Rz?L&1&6p?qu7V7<`%oS85&LpJY#h>z4T@e zL7oOOV{`(X7Wd~jJMYC+N2(jopszmd{J9ScwBqOqf##QRshAlX--xCCkJTziR5Ty! zg>ktUTj=K=UFZuUw&Y>W7=MZlEa>`zk2D6bBtYKvmNE_g0G;7vE;{PP8+6J4iwBEw zF_Zv5tGX%jAyjxz6#P%dS$2IiKS?*zcFkw0cKEE`l1mX9T360G_#rq0)g%DvU>#&7 z+m0Sc7O~ND-~=xQ(vRoO;BS-SlJ?oXybQGuv>xgIfP0{4|I}AVTRjLjwWhidT18EV zwSmgv=`45Vw?=yziB)@*k>@KAPfLLVpz=c)S$O7O5!YN$YA5h~hc0YxVBI1U#4wm_ zEKE@6hy9C{iNtWLD5<5fxoUK-u6Nh(t`Eo(y;#DF%KZWqT--6U4ORm5>^hQzaE(xI zVCW+tEWN;gGw*D=Yu4drdf|p5#3TgdkUg~#FXVC=@4$3tMPwg=7Alw7@=jdm1pyu? z^8$tOEiELhouWD=GuC67*8Zpe6Flul&pmpW26N1{q}+1FijcG12$0U~nry71URf`UDg9B6vA%f4Zi&mBLi=p`)4oGEdLU<=R}~nM1Z-t;Zdv z7^G4sBi5gx?vWQkwqEREyL9}aCJv+ue-osjFR@rO>~n}k{!kS4N&Gawe&@Q>?$xR@ zvlKCN2s|k|>)3}th>MAR`soUFe7zX!tXDKAfp|bJ2X)}tb+m)R`DwQ=uXDIU6X9MT zwfJDS;Lb6n3XY+GYSjJgcF6XcaIr&JLp5p`{~scXYB41UuN}-fZA}Kos^m4?;){a8)5dVGQtP=c4Q&O;wHB9@oTLVRlrU8F zQKA9ez=3eN+Od4mrZ$sNG8}B5ThD#`HqD>03Kt(96E95f;`lR?R8`fj`6A1~rS`#m zGu!K%dfTMD{h;fe$jL%SJXuEBpTXgNdXT$ zg9ty%JhjaP8Kgkqw=rhmga~SF2d9d=T`WrRxVs-md9Jz~=M?~*Fl^{6&qx$amKyV7?V?e{ zXuh>2b`EcQ$ZWgMpXHW>U>nWd29LPA^*b(u@IfHSiq-Y)?_mi(RSKZPk+Zq zJMOYI`}py*%O9)7o*v)9xIarRHgj|}=G@wU2`IDx+-;a|FbXb}^c|K@sYxwnLwhZl zaGr7mc#nIZA}bjTS-xPA!p9sey*2AWdkJTn^3%b3Dldcoscm{pyU7?u+wd0{@X4s1 z4i^ysRtB_ME%yEQFznyj-89ofs2ga2O$$0he>R91lHnHxp#*XEd!ZOy7)RVQGK>y( z_WnV1#A-cWvx?FDO-Je%*vtLw@5K{Ajhdb~l>1RocWmHib~Z2UR^}{zgTSkH0AamQ zxD?72g0ClafPIgY!>aVAuXVn~29HyZbg{vpU+~T~0DT7^bDPH*`da{9u;E|D6@%4< z#s-Hor8^gQu%OU4Gl?`7p&0(l#Z1B+@uLiNM!&dcTh=DB$#uQsgTsexE@x<5LJ=CP zw_Ck!o5XKP^t(NmHoi}QMa8_W<+2Kona`ohrdwx~V^hExIk1>X7r z)Qw#ksm;x;Yo_cdOvqY@4+pa7JnQV()M$PQskD{4wlUv_#R@1)wNY*LF0%RX9`!Af zN7A}>&@5>{Jxh@LpyR_n2?*6WT(3 zNc<@cM64#SP?ZX4L05N8b|+?%I0F-1Uk5W^ptP6JWXJ&x{L46%_Q;4wzf~4iUvYdO zp=3Up8*f-jknkYZ%S(S3hS&M)-p&#g&V zsbuBrFD4#|xfCsQY~=SBL;Ay?j5%DarInygGp)i{m~CM5!r~0cznbZgeGGzWj#`0( z?fldXnnjrP#oVF{5cSh;Jkq$=TX=Xrq5w$Y)tE3A1N;!o?;H)94;oDZPJak>_W70JgoQ7UkMBRT`-^l!G4~1sBU3 zLoNe1S-b+}IN}CpCtPp)m#wA;n89BF(A1p=Btvavu!FL7cA|2RsEBO0z@G!Krw}3u z5!_+}tY(f*Gg>}IwI*MF!^*yKcVD(lX?%K({w^{~Uh4i}U8%D$W0LlH zI2jd&5FXqKOF%BiEe5LtwWk<@?d$J0rr6la=6cJyKV(sv?a>Fha9t~vo1Rt-md8$J zY$tN1lnMCY;(X|6X=5C+zId!-`|UPZ^`CO=1M^n*M^1}r!=A}qtG&gnD;|VwsE}VB z3WCQC1Y67(*{lPOo2_!9647znPZB~vp)n_itD8k)pw>PBGo(JE*VxlN9yXJe`gC=~ z6Q5AN36b6w<9+7TON0YenUhSd~6b_ z!I&i@ACB4#ZV45j?`5k%W&VkK%V=vE`*yWQ6UL#-|I`jtOP(6ciGt#rbMxD zLUHdvD+<2Ak2)LvVuWecA=2G5 z%7LT#7%qY?VR%8!9xDgO&0-lQOb%lC42_=A8UqqgH!S|5euT^(u7N<@hnKNS7Ixd{ zTABqx>7M+JzCJ*hv?HSq^aS6tuQ}v7{u#!zwkEijcd`DhHi zGy4xcO#mrI3KA}Zqs;K`f7-<>I5B^l#{MCNC1CL~RstDsEv~}@OJwGu!&LPuUc1?M z%8vDBkP2w%K=0tUh(479Y-F;V`;iyLK!yslx9ZW-CxC>iiWWUolYyn)(nXlTg$Vb5g9 z$p1|N&@Bz%yFs0co%`4Q)kC~!Lx+7|$*QK$7v zUO`4iK}P%y-!DgD>jB=;92ju;%clz@^x1}oOV@9KmitOf!gCcVag!gzJR9EcQ6xS7 zPuwlW2~Se9?;+`bqkELB5FSm9b^Ehbo(2Ya>A@0DdA&qGh*dw?=BB28^nRfG$%Nb$ z2q-zg1QFx(zCaEM0>B=qNwGROu!A4Y($>!0=ZZ~^>&~m{=xA*<#eOP5R-G!s$0_~K zE$i8vIJcQEBOn9=(#vs!)JaN?5FCrX}3t&n5Y0DgG>;kyI{rm`F( zqf&q3+H}%8!GfjE(V>x%cM6_3#Jbwob7mBo`y8QR(cuwMrVN39I(^k8)n_J$3ER2L zZA_{v^Y1rSUo=7)t^lg8?tWGT^0C6R4{<{}=~W8+Y}p_g_V#+nRYXMiEegI8x_AEi z2T*VOOXv%ENa3?$ZPWuX9bW4D=81^18w~}$rKQ;u5V*x9un7vHrUrG;J(Qu7zhY{; zJm5FjGmA-2fXk*>YVU?d*jGjnUkM>6U4wcMy({?k4|UUZ49+=7@s%qH2uQ8}5Quvf|8}aL`soj!S1o|CWgpXMdJnOy76=#H?#}Hy0TyPh(e^DbSs6J)2^8LR zy!F1%>Akx=SZpV5(U4<2%q@ZBs@4`+*jH!PYjcAf`Ch6(a^-1vbqUZpi@iNy;LL*% z8QZV7%3EH2@eYgAVxs*-c@=h96_oD_JAg2Ss;aIox&d{5rJSW22nDts*Bo{$yzsan z32JmfX^l_O-FwCV1-TuL>LG4A zydb`#up#>)@2qorb}Fh1ogiA=R}3Nif_A^~I%qO+qx@b$cdE7y8QEQUa$^H)mS}2C za=zGf3!@7MHaV4!vHu$I%@&qsP0k(6ROb^d?4B-GK%2mt@QKNq{*feZUpg}<)#T-+ zj#wWMiEM3e*H?jR|3XTty4Nf9Z0u*Jr%uSyIoDHMEJAy!dBB30TToGwl9d#-gL1F_ zUfjd@C3vd3?2aSV?Euf71kJF1PJlgXWIFG$ipga3!BbnKG7;SS)e7+`3&2Q`PgX0d zPe2pAo?Rt>tNe|+5A;Y^l>V9Kp@0tj%Ikbc{DDMx>Unhm+_rJYv`fGkS( zNK4}uj)jALhUP%ziWaPR_`X zIwPF}{r_X@EyJqp)-PT_kWx}wI;9)w?r!N8C8ediLAqPIySt=Qx8>+*eYa=t z|2bZMP*@9|HJ_Ms-uD>e$3#L)tO`s7O?{ruRlxB@_7SKbLskSsqy_^hD8`upgeoFb zT22NU8R3Zs#rSl_J=6lSVpWd5ci^(Ki@Z$Q>5|WY1CEV+>Q{k8n{_3+X%dYaykTt=Z1l8~Cu%}Lq31)f?(7*2^yQVdlfVD)_z)fc@9s9`~l z$x)J7X?4G4x+V2x=ZcddnT<2%C&!CbxGl_tC^QPFx~7CW<9vkqj2Ln2Ais!&FB^59?U(vF}r~V$0?Y<)Ua+Tt8~5bvPVU$1iXfty zhT7wToBqQ~B?YCyA*^Fp=n$z4&ZOwXPlwyGKLK%;m>e+x#fuvCVSpD&Tv3sUp?ryU z>eVYLJ)sBMckAOui`+22hi0Aw7TG2 zQ1=Xes{`isFRVKbKZ}*f`QGO8z~b9trr(PFz!t49%+9&gsO+CUtb!&+hp90VybX|hPxF=JM;*r9IL?=_$AGLiC@78Dd9 zJZ=a~Nx-Yr0#g|Snv6=YD>SZZEI8kUke&R<{HxCvNdNM|z*o_|ujbx?CdoauYN8x4 z8|S`#y_7fm*I8s!kAMHbn+@?iDlYcb!&X#QrHz;-ZbVG<;C-SUzzq5mR3jbUF3#tA zm!&8Lzi2dcWu@r()(n1kv zhm@2HKRL$Q`}&U&C||Dirn0g!h||9|vdRPRVPT??J{2DM3iCV?L&vn*@0pb}@@;ryispZf_M z|5p{6dPTa5EW3;XG5nUoS^cjKoA&^TK(kg0DC_w>{#M8?IRq~lOQR9_r`ua$a~x$g18f$f6&hE^*LCPU2}<$}6`E(ed}OI=@WzHdWj zc=`t|-%Sri2FRumkLYS^`@MJ!?3Vyc7GeIe&FXV_J=CM%yauJY`khYsQ0b87i=Qwu z#>OVMFL0w1Q6jEhV@3|vIaG+R`4xfinxY~&z7iyS2%45Mva6)DxWZE9WIqwRfC}YL zJKxTA?_ujcEUSrW-rQ`30&26>MAHbMNiuOsg@p9)GaJ8G#8B;D&p6^<$TF`daK8nB z~>x#@ykP1H8tHvk5iB&%jLLVX}%ag6>GdSpYhhQ zVKtK&W%NQbOr+q|e*3?q998tZ(FU9IlVYqE*qm}*E(S`5`Xy8R%?4>c#}E9`iX~!7 z<$A4dm`BE=KD`RqoF0=YM~sei-P!v|Bo^GBH?Mrm0FngQ2PdW`b*l!k zxPYOf)$WIjRMi^gm!Q0Uv}`p+Rq|}HFaVbtt(j6W7)ktDfG&<4{`xRPSFL0j8y&;p zWX_;Kv^C;x_HYgu@SRT_@Br?wT(1$%Sy%UW+cLKfE~|F?ukwG5DDKexFmNki%Gj-) z!W%Jl`MlibhymH?^~JBdWhpg*LH8#PHqXW5!S|j63b3;(DmKr=B5}K?7Ex8DyP9XQ zr79~Sx>8cwcp(9Qt9G^fJ>61kkHZQ<#*M?e+{&cd^cIsjD@aJM^)r+8L{+Vpqe`I? z`QEcb>1C)q(J~r%575|eY>H#^>ZJ(vDtrRW>AhV9?sridca)LAfuZ)7$jCH?puv}-VIp8*ivIMqub?tXkjpoRZoVO^h^x#^t52Jckr-uY`)YLJ>CXSxQX{7KIx(yZ z3x|%*(lt;M7+>|Kau8m5TR$axuD-yxl=!Dv{m+IR!@H$L8|a|x%TCYFb(<{OVC|fK z|B=QovX^OXvmsyJeAn({tkf2JA8okh|NZ-9X5)YpTQco&>aB>1 zh2!VdbU-$#FVjOD@(4sK(W!i8309m2uf5Sf3o%V74q<)nLSn@lPChrKrUN*X!mmtQ&$zsJzt&)i+h|&1S4+XLf!8s}+ zMHtCnx`z?_@E2Zg@D{LC4JW?+GJ*9QE**t*qXP?;_G2%-zq_yOp??d!Cu~rvD-)0dH#(V3=4X!T8RzAY$oLj9MV1a1#>Kh;S9EC{S0Y` z>wE*MvO2APt&ziQ6KexYMeC{_S+tF{NRL+EM)xaNB8VCvV z0R=@GAGGPexxyWUfe=p!0hKG+eh^FnZA~cZ9?wq6eLJ$xc)`no{ED7qL-uVl(ai>a z$ju`NwUB56JLupd+5}<&fBX*!j*4X@{Jf2e+AHNu5@eGV$+^s2? znK37~yWXlbG#B*u`@KbFz^G<3;&T%?Whkml@tU3fE{-tTIkEd-xnf#RRA^s>a`n|E zZVhj|TVGJrUoX)GHK4bo*!nbPhz{~3QJJ<2cpB399wLGWdV`drV^HF@b`m^0WWqK~ z4fFcOayF1J4i_5TvM5s`n=#9E;o15p#l>1iMo^nGPMird@Yj{Rs(tad26Z%p+8$W!>iU(0vkaK68f{Sx?h#`*Wh{86%qkQ~K9R!HEf z{C!sZCzHF_4e-B7P=->Bz7tbUwMbrE<_MhR#AC>>Rx0VTahx#OVh)5LU zg8S#qM}XBA|6g%j;1zG4ULl_($%XXqkH12NQ%L#yVZbW{pI(8SEW`Ec?*XXLLrvlS z9i0bS(3-e29iha3`S)v7P;vecwZi|7p6BbQ%j8F1EK< z23JeAAMnq~0iO*7$=~fJKV3kkiC-fA`#}Hmixi;286t+*-XGt{ zC&?_xF*Z~Dwb(Q@IZ>>+d{eyel|kp8T5o#O6{N(o(VEYJ#C8Nc#qU#oEM2w(Xsp*B zk0W&Eb8p}J06GUKuT;2NOcwc;r9+YdIr2@wH~lv6xzjG}yXV|B@c%WC{~qeoKtQ}h zb9qeQ8p35WrPn;Q)Zv~spYpu&D>qyGhZMTtrW#|d_M6Q(?DAXdGcg(MmWy&=p#&+I zD9T(-&w(39tHI?KnxFA2)jnjg*Ixcc z*Wq-)S>e1ms!yiiyKQM{K8>oTzwK|S@Gcxw1OD$YdjE5lJgHhp!psYUQ67@N4xWP^ z0jc;-Kygc+>sU&a#f1o>^nU!W<|z8-5gGBx$vmr;Q(e18W$C{xVzfJKEqOrQRevyb59AL3m12{a`s&b0f2XfR z=BVjLwMb)Lo6CWfp8+e7gFbC^bg*Q$f&8^i#9Z z^OO@8m02R8^=QlS@tzj*b_3vs{jgYD?j7|e+rr}ggnP#)^-CBX7i2{`7S+C7NnolC zlNpJU2#g9CS!BMk@HCsX400w@)fbVYD$FJSzk|Nk9`Mv_TM3KUBidn-FxX6P`D!Q! zVU&3da3{*w@P~3YE$uekk1n0;?j6b;n4$7hY+Mf;-@Wh zfZdEqO;M4B!Ih)o)(h3QuhAqYzcm8xki*REq}IH3g>kgOkJg3(5ut{SC7zG$9H0Ps6b}epk1%4D-{rVn4+;W!}(Gn!eYi z<2e(pW=}({aoXc#yy$KgzqAtQ{F>~bt7|nJ=(Gke+6K?UR87|M>CLDow8w8mchIyt z)NRhp%;6ca^A8KNkWtC;_Kvdiecyw`V?9|Uto@1sjuI`(L{gGzlPrv*{C#c_1@_37 zWafO~dJjSp-F$M&3moRW$4}}%#YNjjhVB#7DCJr|TG_!rBy6z~Q}lg+us1pwJ8rYUdRD+(Qdko^s| zr&2T;D%m9gGwuyh6gq;lXwcr@XWV~gvP1dsM9FjR@{f7pj$K1w;a;dhW zA&|lZQo4DaKh4@kNcM_~)?LVbSZNTwm50e-|Ll6R+V})80xBNW=_%qz65?31KTej6 z^F`17!K7d22}MN-?5wo~@71Qwe%OwsB#fn=FTz%XbP*Ah4;F@5nVAjFTW)8yBTmP= z*{+~c6ZV^6wY9R_X&{cp0}|OfgQu$R=Cp^o1&{+o<83<%f`j_06uxe$9b+273l9x2}AFfT1Dbhz&- zoZ9ShvhD(8g~W^m$|^doxgzDU{D|MbR@*L)eYJr63YxF2+*BXVAGmZ@+8s>B;-?|p zvM=wVH#Wdm1d)WOU01{{(9AX( zfnT?_t{DG@q@tk!#diGsH2=45JH&RVvBmq~pHxTdmS2-z5vHJE$$rLz&A)3&1$PUu zzC#-uzxVz*JKj%wbH7+K1%lpF7995V04?e}s9H&B~Cfwb3KTTp|OA>r~H?NvF6v$L~bc~EYW zS{S}4jOd){X0N~h>}c9mVp?2E42T<_$!?xC<8B6oPd?KD%}om&wyv-gKF{sw+D&yI zp$u3w;^yJ&{-I;OHm4XZOx1t@9`L~Nl2a2)-rE_&E-o~G|2{7Z;ij3Rl&HqDnSl)L zPJF|DYsR-W)w!I$9scDTT30wuzHQ;NTPFuRR^gi(FsE%8%%SEXTX!>L@IB{p{#g$5 zT?|N(XiJ32LP7?i;8*VMctpufl(Z(Iy9L>~85qPBGP)HNRA}D_!`H48caCMm^$uuP zu|P0IyuIrsIzTR$lagBUi`LY98m$eKOxwRJLC^))|K~|U;k1|}uj`5RI<36LrKQWu zMDKpH+PEIgDEq|=S!{e+I(%=vaynXCq0%DF-5(>#3%P`1it!Ud}XeZn@d65t|?{RMHIE> z>HFTYJoVai=Vt3@{rEoR2~)3Q%>w&;3LW3Jg}rl#!Q*cSY^Vj@0kDgQ`8~ z_M7`~Qo@W%GFw_&jD>gV{aURCgmW1gz0e?R>k{b)?FH_%RP4tKRXDNECk_i)BE}IQ z@kF^n$aMKhRfrWoZ7&|*LP2%!NJtO8=?5ea>f*wpA|p>FVPUOMw0~z)Hw>t~WZVY7 z4WXiff}l`p@#Fw~C{Ig|Jz~*E*sj)F!>paMJE;hdr{hlemA1$Aw#iGpgT-;7h2WWV zyDKz26&)uklj;6wi<7v+c`@t9c}O7?ACjKW?tx)jCbXQXPf!dRDj_77i_NywR5#$_ zFhLEFlsx~#@KAdFMY;8xZgE{wVuDAUl%^&H4e7I+7h5}9B+Esn9k+?`fL))x-6C(w zRQtm2aAu1=%{4{6)+gtSbc{=QGAv&M3?C&8%i8*~H!0=f-0aMEj@Q4ro&}FkURr;Z zN+i2_1TYRH{*LEFz$Xy3-VQ5GOGHptQ3B?dW-r*>F%R_X`nXQ{`+q8{I8dLAjkj)I z5N2Rw-Llg{&r~sgcd$S2RPpk^9+~(2ac$egxEg*f5~u-xlN_ha zS$K}O0GD1F3zj!3M^?etU2Y`$|I`Bh>@nJcAgm@-rlw<6V?z-U0ba!ux>Cl>iO zb5Io*l`c4b=w7Add@V=DUmda_4+G1>jYqw1PFHVr4bR~8=)|v#XE9s?)c0`>t+S#gq+8~ zSpoMWc(Sr}(a>l`KC$t`!(ORao~l!c9>Sw!99ZByqQg4Q*cUweQCv@`s1P}Joj6i6 z@{h+wU~K&A*nPz*ALqKB2|Q6Fe_M^0yoAth9vT~5AP9s&m?_h{!rC>z(l^w_2#kh@ z^YiC9)oguv^PNXsoA)&0ae4oP?T^V_C+lvwH2@(c>*9&Al5!K0Q*&I;mj@z$@?P?c_CVs!=cPAv zsF`w4n_hl6NNpY)_+I~-pWi99Rct=?!eAz7Xj^>5zVl^F(2sxKf!1;TsM3mnWREuy zbJl9!TEE(c?S?Ae=`smdN0Y8e6f}>c#n9yZzHKoN-y3@({Z-C?&BjAVQgtIxXYK$TB)+jF| z9hi-7T#5!*i_(+i=huVR-|sH00`nlQSKAOwGb`+W`-MIdh=Sgbg^l7mfJMfSCDnLb z^F#~?158FYw%~M|W!q_fxHf=$oHU{X;V!c(=*2!xAo%(q5AjlD-0yU>40H>g|Jbzh_DYs!hceDRlV-b{dmY}NkNlrmfd~!qOHEBxGIbfJWM$=bV`Hyq%c>uG zp`<^k&mco`k%V-Ni9lez(|&JLN%w~Sn|}i7$aPZdW8dvpP*-VzP>M#^YrpG4EZzu6 zh>ks?=TT{3XW*bb5JeeA5UH@4AS8;wdd#Eop{H^i9)49f5HCP?B1U4c1Q?;P#GPL48x0_-xD+MR>x9_9Er0>LPBzhAjb?207SZAW8=;tZn< zlFUcEl(;hxvJn$p@?%E$*C+=Kslmx9D(YX;lM{iXp_Jin6EXGusdjS}gPIB8UPK*n zH;GZfh~;0S(dfG#2?-xuTPGo|+BtR}D^WSjXHAag-T?F!0wVlF#LG0KgnuqOS5@_Zo}KHP^G_YDoe^qNX}Fp8u}kg& zvJ4)&!?PpkC(3{A_X|*E(p?+{!WPS06E7@ zk!!N+=>~ljH16}arm`9Y@fb0HOxrd=7d-MR?$!5bWwN4isecdasu0eYjFP5^>M@Ak zb1kD_b+G22AhwQ(cgF20vU?2wnJT%V?)WMAE3O>JdTL_TBN_UKeoU6@26qOA{27@? z81LxlXrCpXO>dgkOTsJ4y?SO@LhrJ(T+x>gd2kB#e_rN^2nj=;8*w(h`Z$yNed1}6 z(+&&8si6@f71AD9-ky~Jib5|b!<&E%*A2Qr6ddMSyT4bekDHoH)2qvNHZv~Ge-8af zi>PDEwwjrFYjev3(b|)n@*~9EqAZR>BKYJ5_Rs}_ptOes=?vrF<>T|XRI%&z=K!pI z1lIH2oJEtNABd|(!IT0;!zT4-@*#vS$baO7emgnYe~*cU@wg)<2P^aETj6l#BV#5Iw!`h=!DCWIZ-^{KZi@ zk0^MT7sM|glA~f$FT~m!)|WHXp2<{saSxV0qOH zP@C;vvuQJMS*^{rijh$NP0^fWZtsys{5Kr*lZ0FG=lRCV%!}n4HSNbmR=he3j!t*t zEdMs{7B%Z?C;KRi5Z2vErywuQ>N*|$e4}zfC|mDtIbPU3JZyM47$kAoWD}ELL_|I7 zmqtp<-{e-u-?EXT&J=0PYBzaYhQaVX3y=r@iYUH?5+x_^7qp;kZ&$|7`Jbw6<_pN1 zLr>hNitWMftkSJ*gm0gWsE74pGC43AHH9BIoKEgu=(uvvSe|XgKk~o)r&uQ~OwsPn z{XT;5-APKje%++`0w7j-LIFe;D#%Loi66Fq>2jhEymP7!sPpP|l)%VXn}$bCMP228 zj$7M5*sm`wastqhQ^kfiY}29BK|lIb{4>vz22S}prL}GIrvyqXzsQC>A^1n8{FMYm>Qh()&aRBFWb?t zL+m?eqN3t@Gw1x?7}2;r(_3D^ea@L0BG(jMRTUQ=o-VkX4g3kD-$mr)%FNhkj96Gw zN5fEFkmYT+?EIiDEjfExEO3&M|HuUa9yEnC9ks(;1w|hGYc*5Qb zUWzfm)F%izReLy|SIRYGJ&ADA*8L4!!~T(xU?Tv^V0}#^DSMSIHlau&1^)!g`TOUd zAHo0Teg4HyA!p%l#u|bNhC?_Py(|dGL)ZePK_t60$N&^=kmsp5vM~AxcE$YKDM^o2~)n(@l`6TYX7VZffflP58BP-j8lJOLb0 z@v*UU+%qgp^_$*>Mc=5-aCw?^>OD3YDX5wGIqI!^F*i}js|u4fxvcd9y(r1T0+RD6 zEH=t@X4|?MvqVN_ItxKfZrBy1lVl0_QJLhJ;MQ9p``w0r@;8wXctK%okQsWh3@ek^ zSYdbA37+tm(6xK4*vzArJ$^~-7q!jjgrl^S?+Ofdu#dT3g@IjCNb*gZIaa4H0Ak5B`=u)3jqir#&t9MP*ivS2lpGv68*Ha#^1F0#PWcLbKrXHi8*tD5%WPwQXMg_&F6 zRw-7?R-#ppf3u(L_PTpv+D3^ANL_ndDUu9P7;J}FK@UjvZHKfE>gYRZ< zGV}5R1S{c{DfDxs%U4Fv@!K7Z z&5o1hwPjh1=j`6JKM?R+F3^^X7IRp$uy_Y<52NGQu0U5^(uM_;DH z-V6=V$RstFSaokl`VJRsoMSU?C<{IWI$7Vo%vjrQT8Cx zH*e&Eg3rMWo`$G0Ed70{6Sy%>X zouZ&BY&4nLt13eaSd4pnICA>Dg`ssskVC_aisX~bn})$daT^i_36R8Pe`?Yq=(j&* zH64ONUF4BCU+-pm!P1XtMhnNjOs;o6J_9R8)X$L;tRNM`5MThvk1G`?qO7w5;5;`s z=bf*e!9i%%{9+z(NA>g5bo%YRZu(EU);3pnC>)MVf7eeAiN|3cY$*B;owq}v|G|M{Ms#)zRt+YwgoCR<$~GvgDbEeIIoV@W=sqy zljNArFKSa$>UZxp=1I{JrDu0f#T%N$TO%Z-f_A6u1eR}d-*vuyT3@d1ka|gX9=t(k zFV#4|*HQoaM%CfGNUcTs2CEgM<-O)NhWL3`7y~s3>v-t*`mC9Mo{X`K&;=dQ)7 zwf$zA#RLPxKC2+-t?}7hj5zX08Z&%em#{GGi=A9c1sLkPv*0C=v$nB1$xYt>=H3+b z${MzV-*y3S!9Cztg`;g~0L__R^8RCyh;2Q}E6|DdO!P|>;g{qgs?k!!sU z-z~BsvKS}T+636Ff_mT0)dT3EwURb-@HaUbjj0hnBSi;YNfB8^K^x!tK2VoZa6R14 zb-b$&1%Jv?`Px3_?tr)^gY}j3Q1**2B7|G~u#NH#Qp3QIlrA@@-kzPshOeAHWkEGh!+Ohu7$-^eyy0O9e&-Lf?5pJR zgsUKTiGgG~*`!eeL$%g@aW?II@vwTF_s*n37$2)9Ix|8uGLz*cF6qYL$aN64GNN?Y z@o4R-m;G2?97vZ#VK)BTGS)l z`|kj5b+J-+*X|IYZAk#T^v(~ceHby0NcI()eo+>dyT)^q*(`Fe4SYs1t1QtxJM|) znaMKQVpi4~UNs95vHCC4=r#Udyka6NB-I2B9!DKOhV+B^vh8Pwotx{x`f@|KPVb0{ z!;YDpCt9e&F5DR*SBq@lml4hSYeLsqNKDZxKaOY?II2uE)mMTdub6gH?M69wK5eH~ z=bN^jCXIss8VbNbi$KTGavsv(K4i@r_%Fkt^2A*f?-v)Am6bg-n>rSmzsF{A#+|fk zvSlzQ8sf5Cfl}B>*K<$TpDf{2)zOLaz~Ocft7f-!zAN{@!Eh-Uezn_bP`z!GFLOAR zjn%kMjyXIS8(=(H!Y?M1s9mpUBzHk!m-ak-O@2{M$4`hDTgc7(KqIbdW=6;59EacX zeLdg(FPd#0Y0(!Cl;l2;ZwI#CyN<0B{hFz>$NiWOygV)cI z1aUro{J6WTKUvATWu;7n{p6XXRW;c)q8Il0p&j0 z!&y7`R4J>fdbKzotup8XpX=xR8WW9H1|~6;D{&HeNvV+Va0)j=H(G2*Mq_k#L<^d?e6F?(vuTi1C-2?|z&Dx=DL@!Jy4(>C3B>G_+keMB|zWNK!g;Z!K1 zCT5`2#kuDW9Cg@*L$Bql?;vucsH$?#^O1(x+QD5(3pDL*rlHo3m} z1@4;tDLP(WHY&!jZk`_g!K9GHqM; z!tbb%CMRd=YRfye2B7p=PMJY9pOCg^4uf=TD=dR)abXmR#n605Az$zr@bYZnQGES4 z#O~tqe5^HH#jz*^E~!5*93ORRbKY)HbFt;~O;46jHn_hh#5KwlW2{YQ5+4nj5XvB2V z%urI#N~2#4UPjz+hn6_sGCRqB7a(ZRawq<}>a*z~*`8taRc2TUJ)Q3SW%vO#Q%0iF z>|_@O4vqW}UwCbeNhckRdZ)25qpQ9MF(bhjflit6Q~)#wRz<~*NGg|zwe6z zS-YpuK65|&e-<#-A+)D)^1!;@5C8I^cK>ofxG$qRn{24KU5o{^4_{sm$q_6m57wMz z+I+_S@Kz5h;zvH(j-w3!Kf*L;`DR`DIiJ>t4X17>-Kk zBl(Wv->!ZwBpuCo3r9?KX9VXXU$1!%T8+i;V2&C6h$whF?)scR?IWP&yLpedT6K$G zS`Tz9p|G;n)}ja-D(SN@NNS+MH&nYCoA^aVQzN;=8{!hZDuO2-jva~&ZL^rkoavn4 z9FLg)2{RVm9&y?D0~S*b@0h+LUnilhB$XKyf;;4cI-2Xf#V-zFc3@0J_ z{C*2I|)drWXyT((>hzxFruIXjoav}O)1m&Qw$iEluZf~aBoh%qk zEsL%7z3PGpBljAew@!vk#|W0%*v#+dSo*#Qe7SXKINMxzuY3m;fYQi~m1}CHS-UYc z(H(KPy4YaWNX7DfGz%*E6&-Ley!E&)!Za9sr$LM_`?)T547%u(0P%^M$xuRF#axBq zE`VZP9Il|=pZ_qjes+iaSbg|=WM7M;q_VQQj{x$329KLWI7TUNKc241bDu(nn9q+n zD>>c4O1IT*Z&moxN_(}*BRstI8I!0PMuO7l5g#wmn(_w(kU016HMo8zid?C5?*8F= zS!by&ezB^!uP`t%-v8k~Bo{<%^+LJc{4|gqYl`$Wn=N$O*>-?C)NZe{IS(nJ4UUq0 z(_ab4luvx<^OcmO!^=vy5t_4qx^;W~{MQGR z_xc)yBfLww7#CfmGK5B?w5kR%4@OqH!pE!1^&rzB`_Ci-NeUNFV>?WDxldGQhF%yWi7=_qMM zGT#|dB@8+AuatQ6d5Bkvbb0}3@5^wRJ9k|#SkA_Vi1a!LBrjM4{BFXyq7yD8aXA4MUNwUH>RbgsEP%%#AH&hx8hDKjOkZn>Nxxd2v9H4J8 zA2Fmkn_!upoX2k!x({h|tQ(#`9X|=4ShPgNO#LEb*KkT6BFB1}FMo_9kMg#J~Y2zQ-T)29=%=94WpHdeN8vT4URx%IQ%uqU>I z%FvrYY*fL6D>{7GM3mgha-Z^5@AJ`{v-`AttbnkLCq3{SOi|e)P)I%a4YMW*R1u*JWQCq7Q6I72p|1q-Q)b1GypNfY516s&C zi>bOe#GINv#nsH$;{LK!z~yFnLs zd}QNBXiw4{oP<>Dy?qv@N@>7ODu$8uI1F3|#~UcUUHlIgrgb{rGmg@e(EcfX;v;;zoJ9 zoLP}Mc$@)_yry&sRR=aKIXRu8nWcE`CmJrAUmBDl<)*tnCte_*aNj;2 zuAowHqgXfQFLym&7-YjVX!$=1g90)A%ZwDH`)YYv*^z2NUk$_rwes96$}l#c7wfU} zr_%1LTVHDP!ki!J;WQMS7it}pWsGxLpn0Ob2WdBH#6^aT*Aw$Iv32+|#_kx#Jm*LS zd}4dTS2-O&s$m-L&W&+q>8G!R2%xO(+-@pnWhXFvLJ@D{DHQp#IW)V%5Q#t${UZ=b z2Ae%-eE8TXsAA1T@b$KB!^!j9LHrnXBWH|$@c{pfQI9>y!SZx|(rluwK!yna?7`bY z_1c4kVx6Md&)ej#P)N4%eB$CTFwft`4h&R9Qt#|dQ;sIK+MZ^NmRZe~Yo{{1Tmj$M zGdK6M^CWS`pi!qdB_zX-?X%?whMT=HeWvoS@mLL~z_Pr^%~>wpvLLUF&*R3zg7sj& z&L2Z5fF$xM_j9K=hl>2RJoxl}Pj%(t%ftOFs5d3o{%X-*9{q?o>&*V4&UI*yqr5fi znrU-+;+`A!OInk`VK6z~#ReI_hd$OOOulKv?}n*@@NGr{jECcc_S=bzkz%Ydg5{LT z&%B$U2#b8C?uMh3<@oDPvKb+6;`K4hi@}(P`UJpyyUHIg_%z>_E9CP`{`Jzbbr0E3 zhSes$)$yx^#+Vb?4n0mM?Pzk{>D_RB;qR+=IK( zF=YD1ahK)QD6M8Y9@CLOdR1U#a2H}ZthcqUyiUb)1aO6U-2A*K-r=-fM8l7*NHtHq z))b?e_WLxk1q%^_>zE|m#TwfZwRZGnv1jD^+z`@^xKs9N5#RG zvo43`ao6^!n3Wa}N8?q;uSADrQRDx}4RBBdA|;m;)Mp_`qg_`a0}+BhfKExMA?m4( z{*kDR(wAA^+sDOfyP2y>r*ggG#mp$PTTmiub^o>Zu*@y@niCq$#BB=$U6uMH!tPZM^1#ONYkPs+q0est~35xrt_hNOb;U zQ_t6abEu)Bkk)q)ucZ5XqKmBQSXfy6&CD!lY8gBUf;A+x>CFj;@3pF|B{QAah^yzu zrKnz!@LTAAfYZfc%6t3z{NNlOzl4hfQV&i@tIlbL;y~a_90b1x2@;EK@n{5j=<%}rzN!KrU6>jS>7kzQuA*5jTZOH$CSR`U4GhV5Yq`@3+b^Xxl+%oF5Tr-OzDxhaRY*KgPWoR8dx@-A3o7yP>_y1cFy7Y*LUJM!}l2N57DvBl*g(&22qlt$V#?AmU`Cw%C=wO%u$Gzqb4 z^|v$Ehb#K^v5dD3227`>F`t0qo83b|yeD-{5H0ws{9L-OEScYY34-yhABw#`umy+a z3AY)4OC)uzFV*PKp5+UG&Zg^Pq(V_D2q>yRJ~WNMgD_!j^f;b6;Y24QBa3^VWwzY4 zyBQga+!kioJ*g3zA90s@Z=$axI(SwyHGP_IrNL?49i615Hu7k9?gM0A+0+R(aP{R{ z(2dOQ##8I6W+4ZhG;d>~qSntHgw8hxx)JkUP)3$%v6AxMO2c!{GLRo*C*Rdt9fxqD zXI9)rz(c?;Z;=;l;pYhromk3)B%#cBtie+poZYq+-NHA+iwh!OD7^fSIt3xImqCE! z!209E0$hD(K8+xbTkgCHM(`O7}I^e85s|DMgmO4`g(;* zs_N>bF-mDJXMkS>f7|cotf(%Z(K1nF{h^?=So*Ui{yb?(?cP*1wR%}gxFtyJih8B` zE743DVG$P_$9mNh?((>x7r(;0(nje5EAbOtNJO|O?aqeUGu?Uh5}?N05eygf_eR+&-V)OeYR}zj=wn?ldr1V?2+}krUhnZdI_wIr)5N z<$gn2x}&>Tt?g`H*Vta3A-?PqSM=7VA(etot8BSWm@m?38llVW21ThZ)gdh)oN?k; zv%P6b%eg1%NVMbLgqFBGa(70(n?o^Dn#3#)Ju!*5F>mwH+)Oqv|=RmeKWs`8MlR*#RCrt0~Eq+yjGi)ZrQzi%r~O1mfY<>49g zK;UZB$*0c{68=g`N(?C~F1Gfs!39D*rSC1IYxjG) zyb-Mmi~GDit6Boy7Ff<=VQg_qN*NJO^Y_OppGsa3pvwZHnMZ>4+){(6^pW44ySszE z{XW}!0%=wzw(|nL!*KagF;4q$a!G9;XZeVp>!zcut~9y87#yYH&1!2eOH3C8E8Cx+ zm+LesRN7+LzeIxr4FYn6nmajYkNj=W#dkJEhr}T9Bl09ZpH3xhUg_+^5NrwKXSjOugK)rx!y~t zw)wD7R~-Lk^al_8^i{*yrvPu20cA-8LZQr#?eKM7$TxaJg9ow9bUGuga?^XYzn2>d zWW@coNl>xicne>dz57TlC2bRa5c&VvzaGxxwbQ6O4ufj8ZutZ-Jk4q}iOF0W4sc+AhH_VaQj^K<)2&nIGH_}NPY3%-5W z)d`FgT7cH#u=mF1zdCGtqSGReMkyTrGuXr75G>W;>DtLvpw4?bQPlKmx?ca}O=i;d z?Rs(kuue==)ba55{gGGrAVnGVoN_Rs$zaHTjp1;PLm+?WsC8!xVp^o+PLTdt_28Ob6IrA#E`vaN7SOVx~{!!yv-y*+KrW7lV@!Sk`p2 z`f;MOaLM|O4`t`T$!G~cDCgKqt;RE%WflN@aNT&s=W?r)CG}P#08TrCu$N302%WKA zSC4aBS_Z8|d-`*whL&iq$#e3{cXT22eB;Q`yo8`y$GVJ@5^fQ|T0FSN%PDWaUB*_d9X;2$hD`RuzbOh}CC zeAUQt*qv3*aRA7u$T9V4$DYJ0V{oqR!;f11o0L8@EA2=(0c^Oe!ND-v_-G2MMQ9iy zao7WCLQZ(05&zhMz%Q@^BTGxlFE)n~xpcdIN2eLws?Q3MoyN{iC}ru>xoWNXp&rIk0`n) z+iWEA?q(#V@okt&KR)n6l}O>#-SbXV+>}Yh{v~mKjFqIxW9xi7;>E~heYxbqZnL08 z19iL#bJ1h!J7kr0=i-oc0g%Lj+V+(I{(%i(sioKZ4XtOb7*?l2yCY$%7c`=t?4Si8 z^+yC!eOd3lZ_?FCTTA6}UP_;d?g4ghUX#y2u#;j+g5<`aFVc_x$o_r*In|Pa!dyQo zh6y;K>}Th(hqyf4>d+=K_HWT48&O$jv#|HdEmj9x9yEa-a+A!7 z{f*V4fv(!CBHrIVJAinV-A(F&Q~>k$BQa!h zq5SeKF(zpV_XBSPt`ss^|5545wWCmt994Qq1y@jgMpOEOCOn?STV$&4^a7oJ7B{GO zeUO=Y|2jo%s4b6wJ`UJjZjTvJhs^PIFaQ280~VbXa)R)mpTAXkR4>;i$#7x+>r1F0 zMFXBx|KVb~vp)`V!w?n0|GG*6d13*J$Fpf6c~spaP{tzu_YBb?h>4NmN-Xy22IAIF zt~g%ilv^#SRTuFjCM8GH#O&bi)F5I=Np6Z)RaLLWKG*5)hwJyv@T8#l@B!>EKoyBH z1S&j{C@T}4iYTv4U2WDnF{#L}-ui}4sf~!)nD@wrHESP9HWCt>7{AyYN49)F2}I z`@iuOE6gm^)i*+NZLNfQ7!^sgJ3amJ&JVu3tT;K_rv_$b)!Xps*f+Bc@>Cw$KerLJ zCfE=@G!(ox-olkkxyx(`i=kgEA>6Hz-jauQ{p75c1$3FmQS|WP-jDt7UG}mPda^uI z<@5rM5S63hTj^r6*;;2`w9&A}$tI$2d=9sm(dMu54}FS06hjiqfYQKzFwg#JV(V%^ zby(-y8`;GtHpMnm$Nj#b7x%PC!1$}>&4D197{j}74pZ&9=H{Fqj#;vvE51-I6~;$2 zoMf>(tt*-=+MM)q=|rb~O{(&&Y11CN`l){ealbh=IxI;!0O?*LB(XjP&Q=C>l^O_) z8O~wJ?}>%GL$&I4PdXDlKsvcFEJ(9PNa~FaOC?yNfz_`qR`a4#Dwfwj%`x#+^>@9a z7;=Wk7O|5fEg@hwtVd6ITXb;1XF8@-z+y60bkR!k-rXISLrmyY(-L|A?EUb@i9UKCQ8-DW6`XU?h=^AC>|)=GNs=@&uon#t)wFJ!f=7eY@^B&lA@a^ce@{^i zX?kkPawZ&yTmH!T^mFyojrB?+5$(@kE%M7QtbT?@gpl>aMe;kY6iC{$8{`McoUrYK zHdSl_vMge3Y?f4{$RPaN&f7Z-e|fN+l$Offr^A-^$Fj40m-zO;NTlQ`CxGpdP+XOr z4&${rg8~?fIh6yeCj)A+v_=*T$V?hF$J%;|Q?q4|=?tH-FvA%v)XP+UcKey#oK$@+ zUdzcYe^|XM953*bpsplZWZ0IcQmUk}lKcdKTxm%S`$dS84^) z39lO#KkHt8BfF*oXrES7oLIcJTaQfQLXM&27?kc)o0iqQAzz_%FX1*Ha{>d-H?SvB znO>3MWd~r2mm`l9ZzSYrVNmqvfq@SaqR}_(TDL(d&17RGUtb&T$Rs&zD<&RWTTY!D zkq{5`*nQ~EGFLx3M#n>QJ8gY9Jv}>7=_|(Yrfl+v?${z{xlGNhs1Th=5vwC%VS0@M z>j&EMp2LJUky{0@M~f0=2dvUVL&K>&d9&XGJ|pijRqaneo2tQM;1dj|@gQom<^orw z+`pGq>(w|~Vxg7RpJczMBdqrB8L->5beHKBe zG4zuFRY=ZwL?n)`$Kk08IE&|n3UzW4vF)gvut~rzZL)9?7QR52dB*lxzjJ(T2NvvS zjPmg>C@32sNqlNu5|K!mV>RXHJeS?R7jv0Bu;TMR{89bv>owc?`ADDWReOSDI-vrT z`%@?z_uv>rf0f&hP=j>+^qLK}^Ch{$J;R!fy5&Cl$}5mM#P~c8*T7=3k#Npf(31t3JT9LQr=&R)#sGv zFXkRHvJb;-UGS5Pj~V6->V)Yyo-TaVAHJ3bDSRZEe`fw*d@n%jw%h&5KttNT+ea1< z91A)Ng7u%yZWHCG_JGSbqQ%~xMva*Vh`~D|)^G^`Ms&IP`7qEhEEc2n`nB4~-pFoY z>3oVA6t15xYMQ;40r)#}IfEIWDG76H^Malc*>&sY{ZYo+ zng~7(Su<{>TS{c41iDCKBG5zgz(~Dxk|d0$9O~CwXGrI5ay)@?Dfrws`I44aQa5S3 zQOblxRzgNp-8ZKA!kZ&>!O8XhMR^aQee?BQFg%i^q~!jOQf{4A^YRw=Un!lFBM*e8 z;}y(|2IDO>Qd%5tU;V`_goObwn+rg6RD9>m@`N0E=z5|~dg)#uTY5-*!1JB6^IK<_ z4o^y7q8_l9q0?%4zI+j9UmSE~tE4opV(~npYox#=q(GdawOOtIMxIT}>S)o{79sKzeAZ**l4=vW!^1PL4$Njo1CXS{2Urc6xSpnh=#|`2)8LqoVI7@5I+wgbAwAgcok=@kD;w>b3iNrP8PIXv#Gf{HZN2yHE)@S`!wg7hHcii#ajh|04Lx?Ci3QSFA z2OL?W@f{4kiXUA=VO!aaPU~Y`%=v;w;Y9W)N1ki8c56Xo0pHU&;0R&bd`LUmt<^Zj z*jeVAACM(+lW_eiv+H9U#8Mx-l6wobN4>8vtQI?|lt64M-PicNCoZRWt+-gQP)LVA z?TeK|Vm(npI>A|M7RxkEYSdidG2uUd1FLRRtRBM3YSae@Y6X+U+@2Cq$yX))K+Gwm zEsb;B`y`;*W6|hHPPG;nOD5eQ8CY1a?*-`}qhF|F;(_N&B8y|mNr%*@EqYYa)EpG__X56$@zgj1)3)|XRfv>cA#3Hcq?+pmhszN+>s zMn%gK@bb9L7huUY!9?J4JDtxnseBcCg5D0>LnRO8t`Fs&wYARvCXrw^u%`V6uL{~# zS;wJZPg6@$>|!mmNiR~IW~kn7=g3Dx)vmH7Z%ey&6ol03XC=}Jn|ro6-xuT^KTDW% z*w-kR*nM}FjF`@muikI~nK{ze)%4KYC)_>s(Y{<*6LQ?;2S>Z`&}?&*QOCyndIW6U z_r`<0ocKRXCbD>!<a_aYDnL;qV}6!GL> zZ$N#H5k;$(5Fv@h@2T_k*PgU&GO`FFKE@BncCgmzVNvAsztH$d_*5=>643=GRTvT)vTZv}B!kcT=tB$Ol;wryf@aSM#%q=$9 z+b-(N1^1gn>}$5TdJz!ok=6hM4#BFvbsO3b9zuz+i*>Fhz-t%S+OFZZ!)J7uGG%e>gv>5rWts5Ul&?ABFPe29Rh3HiJhID4+aKb zKA^4W+1uL@567d^D>cAjP!6SZpq?x>y%jEUVbJ)FYc%hPLRPNb*m^)~vb{xYKU$-Y zrQ{_wG`LRiVKG%kMrz{nn4Eb9vWBxvr#`R{loi%x^dVsq7$)HIp@v@mKX4-sg#j6~PgQY-uq3lp*y|Hx<@KUbpYuLAo*Ee7JT3#Gg zzA_sk+|V0*Rf1c+_gTZ8FWT}jnF#vi3%QGa?>Z97VqejI-C#* z*SRtmevt(E<@5#UYgUW7YHQjJZv36W#SaC&t9_8-78XBk9CVuQVyAO6SB+GQ<>z|l zXqkE4mVTH_)#%*8bU?tDN+ioDYni#iBY^w{<)w%`ilV{6ex-6{q-$aX>C*ZzjW@3F z&=Jd9TTJX8$TAvVYKqLH4~>vO7F+j_rm1>(BGzr1ihZ<2g=+D(`a+qvea-L&rXejS zp!>hRC^q!zmI0Z-8seWlq?8OUAjr5ca6+|_VIoqi>nx+E_!eY!_&w(H%nrNhxF4%;3W~3JKNv%msA>7#;GOO-e}OE#x&9fiuW)NkO^r-UOrQkz#gzn1 z*1f=2_4vzEex*YL#CdnN9q%q??J>*VskTTc^65Ct39uZ_Hy$XJ;zq%JFPj93z@onR zmR>5^QtG1*YgjwQo5K|Fc%5UQv=yaWGl1UZl_ZTbJHZIq52B19bR}1?d2ehyVb%Mk zuyT{X&h6&9>&4ruf&|i|8#1sdTS?N7=-1JmD^L9B?s0YyqCj-L(WsO2#Y&hAO<(b( z??eS|a-#C<%b(9coN2&ST}uty3FR5;itPa#>dFd>eH8{SN&8lyY(C#W988|f`F0`SrYA^OTduX0ox566qi)B20cSLg{*~jV>PdtJqNSH)E2^x zvNx=)U*pApcmA~7zffAN{psi7e6mEuO_Qq%$<3XGmz=TsLicVP!A-DKcbx)8Jm`_G z@`(-LQR^!&j26yL#h!pjB)6;6Wsm!J!<)J2J*u#-|^kt4@pilq}99Z3w6kl6<@`R?qjNU3AU-`^|5+$m5cLnuzapGOXfeS@+k{}T1r$8`** zX>EKqv+)|UL-+Sea%B`ktgP~BUYgAxzmFC^N&;y1(93945239S_P3UQ&P~qGi|Tyn z{5k$uA(>ko%?Z%aDYIjj2CDR|T{OLUXs?S&YqC-zlE!}P;U!or7Ym04yQXQYN_z_W%`8;62FD3V;)>23v zdV6R4VvGI#MmzbBs%!oJ%Sy^{J!6_v6X45u@n)%*c>jWMCjwvVDb_-v-#faW2K-rW z$#7T*N{1?*TUauBwWyJE>BSolO%`;YN)PR<1~(>6pZ zuD9pz=vNA`E(tL)8HJ_Lewyf4+fO51KRqDA)5lZ25Lz$U2MIC#akUn6xkv>ce!jsm zDOAyEmVaeMax002JgZz#QkVEUvA&da6SqvaG8^L=*tX->Js+n?jq?Fv4Whf~EK;Q<>L zgBtIZ_oh!nEi&|v*KDsX7MjK8Ebp|;CMQS6NNnC=GC)pnJtEMokoV2*g!a42MJt`l zHc3_H-yG%;*#ZfeOiNnQ4`WX@FAiq`LXZqJHs<5+>~~1cX|41hnR6G1-huOnXOd>z z4O|Gg%cL_^%4Ukp%!||I60yNdtgO%w8itfuJw?ibfo#fDl$|{R0dA&0D_+D8_@x7? z+Y8rK%Ddz2J}lVxUgV0lwh3_05#P#6?v6SV+l0zYY9`khr$!|~eS;&Fu0KC0&bN{) zeG>+vd+y!&zMZ-?>iD|d!phq8VGt(8SG;esv9lrN`iRu7khg)&lmHhV8G=<1r{r>t&+{fio2*Yw0;|LhE5q%&KF*CRazXLNkr=QH^ru1T!b z6(`ruFCUkEuFbt5DiLkJRNlFoGEGL=w03@XrOaWKCih>iposT4ydLQLhD+NCS?9PL zr!n*nlsyI#2DQpocZ=ekQ3q}}`lwp-rT}gmUsPo~&&cpJwPbx=N|BehUvC!?6y9F1 zSBl{+Atg>_Wg+%igbx!_=`{SEP;k(0zBPstSrx z9sK@KEoYREl8#H>8XBwQguD8fWa2gxEXmCD3xbIb0W48Kp`Wo@Gq51Au>SBy&QpgT+F2Zh3KOb8K3ISdN``0f=B$asDt9Gw=|Z1~f(r$~mD%@T)GcWgJF zfj)(&k4?V!GXjLj&53IRoAy|ka)WIl_0ck&1I*F*CT zUf5k0a|2^z_zwV#&cWE$O6&+rT2Bz7%@m01dubu>%=-zj`n@3hnvoX18S1Zopi{M+ zVf%1g6&U!@K#qiRO|B0GQ|)U-CE2lej5uUGjdGC+!HjAWI;jpax8Jza+3idc`HS_r zX6Ijkcf8o*7J{+T<2>hIJ!x8}j~Wn;^RRWFYNkVo#OHC`3E1`ip*XdlhF}Qe8{Dr@ zYm}E0Y$+pDKgM`%r`&CZD4o(TcC|G%z{4X{T#|@HgPyl_xfWjj@G(NN@MF{aY%;z( zBRWKeh}-7;@^#YL5cCV)R~4}6EbY`4PcWSSFDkgX*fNpu*(n0F4j-Pefq79`W@K7g zR9YPF`ErwRY)X#~EeF@LXMHPcju7szx_aC`l)CYgp#)V`*{O3o!@#^6W;(**r>q4T z@wRsSlJ|TICEk#4Xu`tbJ$7%BK(i3Ie;LF1nI8H;BJD3QIj&^5ursil&0z>d20B?v zi>V^<^tSfG=9-R8PJ7s0T!$k_V#(rR;G9=jjX;K#!V+}iHG;pUdXuH4Mw`Zx%9iXd8GHy@RciTrN)Q6NCBGao5; zFrg({5b^ak#f*o+kHVyedjE}JehU1D#j+QaNaWq?JWpj=Oe8=ljLr)=kwpsCN&4%+ zLW3d#w|*@mv63Pb;V3qj3x!+;pYP?>KzuRi0&_X;hy($vt`4bIyhXptJi2stql1{| zujS=GBiDc0IK9k#8gQ}w`gaqy42`7U+UJJft>DzJn|5I{$5x+#*k7uR%VFc8N zlc1eDiV1bGwvOhH==~YlS#|3OG|tzPJ+TZu1TIf2$cnKBAcbB&C24V5M}2*EI@)2P z|K?R1uiJ62E;qZ?%j*J2M7ikv_~C?rgrsUqGJd#r{b(%dwVv>oj4+T;#HwCArh?eB zK)=z7PNZyIhKYlMf{#wM=r=5BB}LlJ;Vh8u<8ra4q&vL6wOp9(Kb*#*dy*788X0LG zyW`hiw5|uac&Qt@1=~qlUgEg7^u$$y7IyJBox-Q5+Y4E9J?^#>K?>I@8*0gM5*)DTPOUbeGfpnFF3A3X>>OrG2v_A}V zYihO1S4Ps#5dZM5(Xk+D_E+BE&j`tUCljWr=Dgfq^7Xh)pj}wHZS{cV28yGO&0nAc zqTOm48UDtm+OuC|U%1yL3W+j+raz;#wUxd37(MISiyEV*SqY6>9&hm2?56oXIel>Ln3_G<`X4M{Chl&>bO*%74EEnE zHbnrNRht9sl|jIBW-}c<@Ze_mYkbi=+1QIzp2mH!y3gt|vti#5o)k}yhI<=lhk{1n z^suq6F3FCV$oL}aDK|SVZtS}%_Y40f%ImO%PrJu6TU0Z6y#>nRU|-^VagNZg#gh2V zKv?8QPd?J2z{$iiAb6STU79)ITbHcZyq~6k70nvt)lgL}dq>a@;3%i_H9p^O;tRQ* zmvw*G&UPIOXh(3b8Ly62$|#NlreiOk61=o>)8S)%&2YDNkAT0C^?9ik?U~~R-s|UX zbbo2pB9u&fPiJAEFW*+CN4lRJ7p8f&?eYxs3#-Q@R+z1ReRq~*{=*jEK}t&Uq1pju z%}N{06I%Ovt z_2vcHO)2a~!}UgBL|mT4zU?!=a1_fdW)!~N;QlL=zZ>b;IfEFlFC3VB=8BzLPzHFp zmva*$My_<)!}D!DSS+OK6}H^O>QUG5x<^}lD+@tdfi*K%o`Lr zqi@R-@3{Skc^mKx@Q2GE$+yEgh`yVzL^@-HJj5r3ey(=p6IgOJ9Hw&=oj{JnxH5eZ3)?8PL$1j)HjimTK=&E4EsW zrA=BCs7WmhUPZbo7e(hoF7qadxWdJjw_z_fp2K)W#(U5b5nbSPC-y|NxJO9(5%}E~ zj2IOopJtUiE?z{^KvglK-f(WRa_SL9R<=acijcbGhr|9}O8+5$2*{HPSUjSzv9e>aC z5|~;7D@4vxKO%IC|KlX(pxjk|b3eYnB2d*u&an9B43`{*1c=eq=4LhG=ms`VW~{e& z@i32&8C0za5YO5$Vs z?$N3+F|rI6Kfeg1R#5p^@~S*~T6dzIC~GhdpS}|xO;J%CRPqT=5qqZE+D1kKkEnpO z2}H7bA$^Kl;s+##@H9e=;?MGmssYXZd3j}NeAx8t4OV_dEqTZZ`kJm@8FfD$3)YM^ z`$4Ii$*uL%^*w{7QGr`Svwp;*xy! zCW8*I$2u;r+tc3Ce)R!bv}VIO!~)37zWV)!XJPnF#_O{{|MRtC9T2MnDWvE$s}Zd^ zVwA^6Mpui#4oLOc0g7TyXP_FvX&M*}L~K59s!E`c_HA_d3GH4?v}#rsmeEwLE;zp$VLSyWSjetRv@^-XjiBuo zbEw|08ILCXa(XBkPxE12DIsV0DZ12L^Icj5Z3!c+%ya}56)Oewmu;>Q2;KKr{6L*0 zg~Ph%Hyyq3G~i?NEwCrTTgZPV3ADk&VSvrkW6685|AWn}y$&!yjDpBZx$S)C7pDV^ z(>Pp-dG^qj9W8$P(u^4lpO*rBC;7EyRZW@9>P9IsWtBw-F4b@f;!{h5+9`25vwrkKc0&r zPYAF@Gl*e7u^DsN?fC*yki+gc5eb^fiqepMKhcTZ*=e6{!}p&s@OTm+)L}!(-ri!a zaQ8cy`P7h}@@&@kSJ=0H?4si0$7D`;TuA#ukU5;y%j)ip&4W=UXO|)-O2)t-72>69m%J$8+Oi6Z6TjU99%q& zm?0-$JRvePG%vZ!`Q7K2dlf_=wD^e*2LNq^JF2QCPOI#o+VH8vZP4O|2K_>I*-U+d zH!S85@n6HiXVTD5QVgdJ9AHst+8ao`Zx)YcOXaHFpAS0{Ut=@-nP+%&t|pY~a^A<@ zeE{efanZK+wZ}Cz?*-JNJJH|zH3`$p9;BtM<`0u{+BOS3k?odB7z0CnZ=9NfHN;WpyUu;Unny%rnD4$44N}>gcsH>}Qn-rF?_CLy&d4|inJ=LJ2B;q?AEry6e8CWFKOPU?gWt4%1Q!BmT;LGK#l_85XgGFSAvgc#KP<({L-+ItVyr)pq?DJD(aVDg zS_J#eP@e6@B7iMipA)iNUPbpz(`yPue|BsG$`pN_tnRmx5)y4S&_%5mTinD4Cq_`4 z7{y9B{BD@O#B>%G8aHs7X?y#6z*u7t<{1qK{!5$W8uRRYBTtIh)S~b-7FLats!L>C z?{#z{tN@udPml#3So3v3f{yyphX(5Hj{AH;aBgC zadGfe9UQy_4~?|_ySv9X=_c42J#T@sP?aIYY$5Mwd+hG9f7|x9$>p?L1%zxyu zfY}PL6J?&5*#2DwZ)aiAM{fQPA-_*hA+-;{g${w@v*7}LjVv`}MvV#3h z_axZurt&-8f@t`%g9DMRcO7IjJbIfOVMvDyGgZ!hYOfruZON3WthB$`{TehGNn92C z$-_f@g-_rF$`~+{c?Sp{W%Pdeh>sb5ihxji$ln>|pZ8{YufTHsKt5l;mXM&~0-wib z@NSO%HQeO2s76R91$Qgq9n6<*Xvnq>7ssEblX~Ru!G6Bb1BnbytI3f2I2z_nH}cmt zl}b!A)9+CjB82C^R%ZYQdV5)m0`2?6Th5M~Q*jxoTWnk|r!~emQFrNKO?M@JlH6xo z_9r{BfMTZ?EHQG~y=kvxAObQ!GyT35tn3XY6)nr-jS%o2Avq|6NMBDJW@bX>jcym+_OJ3kI|`1Xpn&((tJ6l%nTW~3wYR}B z=Xu0%v3BK#7jJ{5X7eY|L5uDQpEx>wnJ4%5Yv&{T;nU`MckDnNz9o5nQK%g0H`}|} zTa##6d``J?-Br=zX-?H)CnQ(ECD%qe5Vkn(%>*)?Ho3=yre-2ghSKePFT7Wtg8b#y z*0wiEOhWG(Qrk_-FQ-p8hzX?mYdJXxwDG7yiILye4uTuw$1vj%WAQbrEIbaUhTJ?X zXl-ta5I_ndgfN-iUB9SG;=nr4e1H5l9~@i!MTn7|UMGpy={EPo=u36Q$H`e5dU|A3 zxT6zt2f2HzVHr{>K-+M;Qb^cTatVRoN-ioM+SBI^JFT>2oeMcMY!ufk+tKRkUjx3}z~eKSY~Tw4FP)cM zG;b%H^glcc!!^@2sWzI!)DsaFjvmHRax9-g!6W+VtW=~aDn_|EK13bVCn8M~o0pd- zkcc03d=*XUiG?SOfIGk^|7NY~vD6L5e*~8~b0&!YJKnZXIqK?xw0itK{Sk@@cM}z$ z-x_fm?~1VkaU~ol7JdQ1m_1z-Ce#WwJ{!f2R>$*CJ6o9;FE*N;?)r-~uMSz112-a< zQTDJ=RMx*90cbVnwDKjYlarLe%i}m;CF6c|YmywU^`oe>Q)CJ~d4WOSP_&(=rbO$Z zxTk1lD?lQr${Qs97<<2N6sWjo6_O%n19Q5&}JpZ41rv@BuRNs4d`Py4*#=_M>$g)C>~p1 zzqhStk04zke*VTXPh6xK&}|P;ELB(<$l}R2#0sR zt#A6)2CxPh)hErIo)ot}@u*QINvON5Q`lhYeAVnqs-b>(e12j6Fy1%QMSe3(9U_vo zlu=tc>&R03rPTldhuN|{bmq9<=?ctdhOY+7-c`K^Od)sIt>kGUnoQUjD6o0dME#H$ z9{G27x){=0m>uB#^l6WDYQn1gOF zZqn?t^8pDx$Mu(Pw*^~!~jPRgd?rE?popA1({RWYAuvT4tmX3){( za6+}g5J}=_s4t!UYSFv(3+Z6K-fiDh`%cnGma{>{2+$!_y<%A`N2AV6_t0k?YnBOp z0XWIT!UDq#dfQpD&Z-+9vp;a=jnEuoeQ6@(L573jK~(9>zO6gHL) zZA{W~%*c}J@0V&cLs?T$6uTU{_aG7UUQ|vN5j5N0;hu~2KI-?RVq(u^OeJvcf32?D z8iCm8tlU!QzVIQu>Z&Tt617UFi$yhems%@7IcO&rr_m8rXuhs@qG9oBkGD-PKMgVE zzqifPQ|;wKlf}TAym0*OYuhQ`3W(;fN|afhK^*}vJ+5pff$;+nZBbnvf3g1G9Rza^ ztl<ri?vN@_cpaCess8*Pd@dcQzB2lw2T@kjRAqX+ifR|I%>cXd*@l-#tA1UB!EP zm7hQ|=c8*6h?+IVY$vfCTb>`ni8@Flgx>C;o)X-0`h~jmWZF2f!m$n zww0;2RKJ=%=z(+@q$E8GzM9b>2m?-1F^&IQe?M-z;E?O=&ZR^?@j1PN9twWvJ7V{U z)rQP|)ZGJEEy4C%Cui3~ZC&^~2Mf}6J`(D?IfRhksh*eH$Qd|G>6UK`g#U|V@gj4$ z?ZJ+<@OP-W>NI7wO%5}n(71BA-2TvbIK2KG3%6Po{QGJC0+#IrzbpeLyNSP_{uerz zk@J|e6U8)cmlBMe!Sr{>@E5+zfO<@hMP-?>D?s-uN68TT-{0aDL;MIY#=t{uQT_Q(08FbL%HKix5Blit0=4zz@cZmVi<|GAbU3)rQVAW16voVt{itfJCis|=e}V*k1<_jgduHlZ-BI&Hu7 z5l^eX?eknRI~Pjt(!a9mcDs?Vxl7zSq|M5GkW8;;_W7HQh4xPr6E%H)UBUM)>Xa$1 zQfWFq`WpU?A{m#zfy_Xka&yVp;Oq^_$ zQ=$;R!uKZKS&aM7qtNp5-(O$G@sjI8+#qYXqpL#B zVFIt;-^5DHdqs}a#_(B<{|eQ26d{oxD`#;ZgxL4{{V2pdff6Fk6|)LqOYdc5{p{Dq zmDI(z2eh_&uY%p4R6YG?U@l8h{t*z$N&%UoTuHH3>tFMmu;-*v(Oumx*#g0Fmp}wdWknE5F3Gq%8g(?yjN=%%caJY(bd08R!g-uYW zCt}jy^#&aR2fPAt5b{zFt0x>Ca|LcPF_!$vkx4Q-zvw6u3e|%JAdoX?$gv?b-5cPfW)Tkmu}ldt2qM5{Ocl-vD1umY@*RdF4h4wTHa zAt3`y&^~`ZgzkkJ0$$({>z!SWUj(n}Jahz4C2d=}0-0H*e^0E(f&wZ-KRxIwy)lrm zj1oQX|CQkDh58sw8e-OdR`o4)2M%!o*(f-;_=V}8Kprp`KKBZh`rcA2La-b2r6ufC z8e87*@3VS4_4wM><<-V=FY>>n<%zp5&0Y~onEj)g^%Edwd3$}HT@^&zf^1h7gq5;(ZNH~LGy0;6O{ECS|6f*uedgleXbHQ;3saz@$X z^91Hr{)b?>E55`;6jhDr6OyFnyBjx-v8mrTC*ue5C339a3s(B+uBoT2exHRg{VIueT~{|=V%T6yC+;D$!pwO(I$lX?Dk?m8kO7HCik z2X`h`U-1X7B-%lb@%62(?sE42?+L0ENpMM63X^`CKZkbq--*cl$PlqwqfgYxdHjkd z#y2QNhIKIDxMu%kOW!g=p+@D_X+C^8a8C}$FIFMfr?%2B&McJp|2vwidp`5v$?cMXAbHn79IZyA$_M^rztXA=RRuSmHk zTvR{&T_)`9DeUb%#8E^#B$<}B(A%kq!}xQ+eR>B4Z^sckfYEbUGcgmFUw9wgLUAO? zpfrd}?I;g#Ixykd#HBA?tepF~g*v~nHr}N=8O_a@f zR>##|GzD8tqNN;fnkyNvOU}=k4ew-Vsrs>m$GY3xuo^nv@n9yomBVQ& z#olB8U?SVGZSI~j=~3y5_}B>bedoCUlR>9?MX^Ast8Z#5^Kwsd0NpG7H}CDv zZp+kKFWNmW`6i2K;n3LHQs->-1&i7{ZlNYC#mtI@az~>*gCVkPV|B8NMaL@_80J>> zrU@mf_uNSLan?yE*M-7j!eO=^+260$xh%}67py4>CX2J`Ffn6BeZTMIW0|GDE6A0~ z966?0chcvAb(9`eV^_%5sXR<-Te1B*lAVnZg70;ylmv1AL2f`j9_i)?VhGSRu3QCO zHSs?guC3k)NoqX9;mKN(>yu9+Kf7>~Mtq^V0Av&fE!u|*FdL@YGkp?@iniT9CBc*nV(g zqA}D@wAr*P=QDX<5}U(X-Xv{sA0MkE%H<50Wj>A$2YL>pNV+%uDBSY8eEte^1lmQ? z(*7BVWa@4)9bt~OTUeamFIlb#Zc64+^Z5F2*_!DWs4g$~V8)u3Rh7%mZ?C@(KH={! zm`y5Fi(Bj#9vKnE9Pg$uGz`v>FbS3yVIW5Hxh3gew=h3HmotyjtMrSL*{A2Jm2xq4 z45OIzOWk>ng)mW9Era)zA*IdAhH3iAi)k{8vsD!F;idQ4n>`md#pk{2c6(FVg3%jX z&h_u>FSZ%_P;2)_1iL<>uB?)gkNl`7XR0KqrxI#Atf3GLvt=={>K5p%YFGdiKDD+ z4IHt6+Cq2Da4ShRg|vOqM!$;Jum2(1<)-Qtj58bn_<1$ZjxL?#&Ys~taR5}>fKZ%i zj~}qbHtRnq7K0m^0(M!9eS!Vu1T?1yqwgi;Ou0fXjf}vjos_Et$GW!jGzK!15Tb=| zch~C!ZpoOmFalHfs%Lo8f%m6)t6)Zx;J6=*2Qi8 z)L?y5eq>*iGbv6C>xnIOX;`=9nh2}rTX3h6#EB!=eL|}*>W{~45bo#xSYw!_dBXF{ zDK5rko7&b^y+Pws6nTLcefXr62+%dGTD8FXOubfr*X&&_ipM+ zR<1S?U4?#Z3AMU(V)qG%gV_m=Iw9Q_Z&SZ9BUBa^cWH4)^?lf!99BJ+mf664-`rgY zDY`T*+S=R6LBR!cj~CAr6sC)PM6KnwIys3(d!}OnOHoN$LY`t|< zRc*ihEukO?(%s$C-Hn7uH%ckp(p}OG(jeX4Ez;c`(k0#bUg&*4&pE&M{Nosou{L|} zReN3EIp=3y9xju2b%rMJ76(bQ>1F9;QY<=O1_ymTaz25*gWKM$$Z_5<9@!s(MD zi5TU0@vg4eLhfnvk*mqzPYn&uid%Go1#zs`D&QV-$3=mY84L>_{kF0V2{K$KL^>ff zg`1C@YvXPw8t`*7Ddp?|63eN*cch1roGEgf))vclUA?uX^>8m@#X&X^l-6frj;gBA zBspy3;^1KXA>!xB_mWb8{M2Y9i6sDdbkMWXFJfh0%LPs>GJy~Mm|0Z6Z_^&-vEpYdry@%RJ0ZfP$`ak*HmNpCi7vca=p9HPqO zvKc}QLQBv4=N0T*a(g8g!!n@>e3P&2IRhR?cv}QBbuKE~kkx0qkX21v)GYQk9HP$8?G#e6y(K%puVjsTJ^ooU*!soIXN$ak*27tO zSOS!*wy_e`y39X->v0$(+Gir#mC{k70eGco| zJl@^^V2co~Od2AbbcCS2ep2Ir+TJj_o7BDO%F~_6?4k1JMO(JW1kW`3QC-DZP$m7T z=%trB4tHX59(K}doRRKwjM&6CGebsAMV)L`!7aOiX4J6N9m9$p-rkgM+oR0Zt zI{7~!zVmJGcUbApDo^BcsG+y2ru) zrrl@3#M#~P(H&rlocZcn&F>Q@CX_HaIDp}>$>!zdLOM%#c!QH8(nrsC3~}oy!~LbDRn^I}k79DAnNy&T&AmvD9wu>RM_SJwVm+H2pm$ra4ujG^Ni_PbOXA zw$>owaA=`Z$;?MT*jXLXgIei?@4tnG&yM_4?CJBvw~EF7N@<* zSz8N43;)lsps}`|nQ{|lc|fcL!4;>IZHU5)_)__1smE6?}_LUEJhx&>i6Gg`q!rNr)veswVmJx*- z-PdIY_5EK75DP6v=z56f1!5E-kH%t)HM+il$H`T_BBfTVd(f|yWtTEv#K+3R*)<6^ zzJzK7x1x`BI4F3pbW#VT3G0gr5dzTEA{h|rGlj=U9c^L#d_a_?05VDmS= zT#+L${pT`_u&uq9u9Hs5g1y6n{vp63Fv+chzS=CmDrUk* zdQ6W}Tnce<^_tp7+&wRVlc-V@xC+S86r?}k?Uq(GBQq<_wGBkLdNVBsmrI&=cYp;&vUpZkRNz-D?^ai zUdL>_tWHt8 zw=HDhd}c~Kh=tx0HyPN@NBlbH0$2NPO7sKWGLNH~PWpuWn(SeT+*}LX&@Ss6d{I63 zGuXt%V5hp~^1?C+kzdO!Y%Xk3oo#uLg9oJh^D@Obna?Vt`=utlyX+No*@O%2>8p*{ zd@G$vU#KW@3Ob&!Af0=W$gjf^o$7!7jCQ<(N~ft23-6Y88-{(NwZ8VdIJ;P1xg=Qx zgpmZjESHd;OJi%RS(sQ@n5mVQx(#sW zMCs57E&`9f24&;`ZUTlk3hJsm1@WgiOJjP%^n@F;Q*-84|G zaUstZ9Tn4zo>=UwV~1d)khtvYS_2U#93Z8liH+RfXk29%P?{Of(8P@V?aC37a&wbg4mGZ2n zy7WLdAZS6G3=nY^n=(E6o0`TZ~YA0I@c7^|;ExyydnveJ_(25I{rr%Vu&`Ch3OllLRK}BNTdrz8v*Od z>Z#Lsh3-#!bK_B=7U;~ScBnAvdpkLa`#y+f<1tSzG1mV0taoO(ymRi+fuwYR zqg=AdZb&9;Pj*ncc6Y@1AxOC^TPBve@&r&aO0^hYSAFapQyoq#w{a35`c+C1naRBM zrc!>zNy0*f|1OSg__P(|m@A~cnQ3@Q-no5*rrFfC*neIflEt9VUQlh_NB52E+*Ka5c~}$>@(a@tkqLmR*c(5|y+=H49OqFcgOSWPYdRicua&>7j7-Kg6pG zhC69d>nTw!yQCNzwG|qWJFaw#8V<3$W_h4iE=P#b@fGHZqnkdY27hla9Is8)yAwj4 zv}5KO5#z3Mzff$+if=3xUAI*^y)$+Y9CIJ~rcl13jEWvl3A}rQdqSN!|@TGoK%p zo%J9`RfKYbq2;eQo}T)wPY4k}_q&zG`JAEu4Xf$CxDh5)bdUQnJa^JNBMUC_hI0j( zwg56r{1$5A`7KNG5Auc|e+a_(1Ki3dk#x?xW2cRK_O|8a=}Q0s0UBc1{T+6OvHXV* zEpE-{9{QjQq{Z9k5x|4nK1Wfbbh?LeS+65W*M<5w_3RuBnu3RJ)#A;YZ6W>y13UV@ z0W{ce!2*sE4Gj^R)#v}t0vaR-v?ALu!?I=v>)_V>_X{8~{$z;>gVDcT%?v*`OH!51 zi>nNvQc}hIgs~k@UYhbl3TTYT;ugzw7T{O)xZIkpl{Zs|)6_}xBMPyS>Zc_YLo5VY z60pEXm#;c4Day2r#k5%3=w`q`KT8$Ou#|Mr1&C*+FVVO4ahLsO|vDG*lHbqlCA zl!y141AEWl=z$q>W$Ot!Be2yZU-|$Ay&7Ga`r<3UC=)TpNwbe?w$7QJg*?I0^t1lxJBEK!1u1KO|@7O$_tzUhqJrOvY?URtZ zc;#xrrT9?21^YZ+R5&VYdnPtoW(l`kQ5gOr z^ro;DC6mI*k7kWSy3uUamE9-j7aUbB-(3ULVUx0;^r5sG+ER+keSiRL7+5 zBcY6JL1Skbzaqo)BEeD^tE+VQ#EBqh!a{3!9(h)qM&{}8n+jp&6})f64aLAb<18z7 zuRU5k)t=w>I{jK@t1g0*21RCI0wlZR z7+1{9euF-#D`%I=K2Vr6r<%9@zO+Su{+Q2cfv?M8z+(y7kZe%nFH}^tmI*7N`BWi&CEDvi#tD^Mb*G4OkL(9^E{usA+g# z8R4>7B3cRoQngABt7AlBg9f#tEhAB0K9Ps6KzPGBjk5Ks6_>0=jaH+1K%(=IJ~Jrg zn>JtO0;U>tjP*ibRRzV6`GvW!6^%AGEzviYHqOoW;eA|P&FH=$JtGzWq#K#QHuE#Y za;bTk_xA99dk+`Dddd3vKD_cfq>PkA!#k@nY`g%Y4?vDeVztEHEib@VKB~lbC`xImUMR;0rX2q#iAX7Ty>ph(x8`c+92!ZpBBLKhZ7j3cTw z;&wtA462EbR*UP#o6Zj4$A6;a2ST(aHt+9C4u1HaGJYv`AD7cR-q{_sZkGecux;2n z4lgbdO^UV-Z8^5@e4!?dPs9Ay$R^@d>#BT1lll>%9+IzZK#{2q9Eh^I{}mf_QD}c4efM_bv@B7!VZdV!GKEZB7b}1hZNQC8HM8-a=`Eu z_VOfFQ_n={b)^+Mb|apg3A-ovtPp1;mciC{DUx_eI0ZyAhHpzE#gXs=(tU2|$<;f) zpVzrx==xqx?i-xK@;Gx>(+;^Ew*|G)w~WkU?r|GSJN!^zb&Aj_x~pdiutCj+V8{a+A2c|-(tDT8%KDX z%OV6)*~Dtd*Uan;%DEp&8HoUD?(OpwEj!={TWM>vR{Ui4xFw&7Q4C6x(h?%ucdhER z5D;YTWsTrtJARef7|Pfw`4+kqPioeZ`g1v~I$Fu|8{hpP4u5&>eqp!n+l#dby!2mL zfKgDwUxH4p+z8B5Xlu=Gv2dJAv7!Qa*e%ft@`rU>oNw;LsHv$R_ZQ^A0|Lf%6NkwZ zN~Vz%RnHbVDd!iE(9KtRn^lENE40n44s-+ECFd0TiCiu%7YK8GtwpX?# zx$SN8jm%9Y92w>7Y<}T=Uk&BC{8*7Qkm>+ZtNY$Uh;f#!FMBWP*oea&9ymzWQsKS}G^E0u_AZP|?Cb8s7o zSL|dYuHfruj6HB$CBHi<8tR)PqM83IB70`v@>AXHDS|zgdMgGOvXwK%mNFx1j7cF& z_`?qy$(Sq!r;?U1wB7*>3-3XFwine3^B!Ug=I`eQQU-L_#MDaS@3l*c_Ukl6WHE-A za#|k_9WQFrrLj+LSq)RkTaLAo2e4LRIM#>>{1385gpsf8k=3fLQavs>TpsV2moep1=~e`R=?b_+xIq3? z>n46EIRS8fgRX5U!U5y}^pv3xz@iv>Y@-4oInE8_n(!qm4U@86&85GqnU)LXEz!VB{6(UMYe41(5BFLAO{tr4AWADW0@7$55Fq7K@s&oPE zV4{vOQh_hQ*CmpLV?ONbLR5sXbOklRHLgp^z|$A;u3G2{;PtwY8@=NxlT9PGNcP_e zQSNsH0IXkBLFBzl8rQ=cUtd?EIju#>Sq*8qkMCGJ|+Dg5j9jaQ#+(;o`eS|II zk4lJ3&CYL6nu-ootxX#e6dr5-zS2e)dVN31z%ZUVs_16Jfnfb*p>hrHRH-DI?Xe5z z_joWH&!pih$J8Y4y9BicSL25c`ngZ>Cdv%7@WWq!bm_~?gF(`Cn7l5F!u>YyU_vu1 z_teLlpmAnSb5nSjS|uM>@z>R(zrWSpEYZFfh8t&P4GQdqsgdVt5ft&s|LA-2cGh`5byG)-x&RnMT_>vYh5juOLUNiCDDn&%X9CYpofkmv=i z9=Kz>n4`1EuJN$sEuLUJ_v;rILW5H+!20m()tCyM98 z@=t!&)@YF7efMzEesRbumZS&`RwBS3;@lQFt9VNTOLN1J*QqB)#4gov3TZ1c)vLJu zp*{HP)+?=89DK@SI}}8-42w^_mk7uX32BK@U80pRmR}K<4ZgGOjk%iIE`5_7h^{Si zk+6_L)EY*U&cZR_l_mZpb5R>Vqp|)0b6*-&niD8H_W8N~zQ5}O5=c21F(QysTR9Li zh}KEx3vstk9vs+gj}rG;83HQLJQChpt8*u6{j6p90vuwdag19PkK4#sX9Gp2;bI>I z1M`#XUB)Uavg}iQ8E<=ZPe#H61>R>To*=T^T5>aoo>b?LXgW1v!dpY95b2#tvg+lrD!Eey%|V%aq(Sk| z3&!&-a|3UMl%w;hPp-w8a}s!%&2Gs$G}iL-iQg+Q5@C^5H@*on4VM+yl#iyS&SWL-!4c{*4~nKTFb9??B{+B)N0Z42)P!K z*e(=)M5`f2L)5~YPHJz*RIplyx02k0(xt47`S*m>=UtSIucQ;I=t&>;V3x3&dLBEa@$206=v8j&0of_vBd$-LyPuPi^9#Y%lp2v;C` z?v4yCs&|kwjpAz{$^N$0wc^|Py|NWX0m+(LI|n0EV1uJWEKqq(pmV+szKJ!^# zVb}|D6FD!4T+5K#FJgb}kLiURbI_Z5#CV=1ZwmF)t>(d2_n%+$3yV^Y+{ETtw*aoLV_ zT7_d*T@AtycW8C991S9q|Mg0sLq30KzaB*2Asx}B4<_Mqyk;o0x&H3jaH84tz2T7$ zvQ{ThX!PY{Gvx#n2E+jDSGS$`Sj8MN(iMY#V7wqB75uLO(F^74lO4u=j8s3H; zQHf5sQ(eegfBrn0e-6eSC9D;fMKv!kF6-Sp?%b3Il)omPofAc=&I(>zpVf+YzyG*X zfNus9y5-lS(F;5n+9mQgi4XTLMuM~^>tcXT<`$Vmui^uoz`#s#a>WajU3>fU^;>VN zm8187NF0Ny(9(m9RFDth>Lo9~9=Cy@5mQZLZjAm~O#k0m0QDPcmDD##ALLK63UhUf z_#VuXLsfJTmYE&(Tvpa{@3aCen@<6wf@G5jNzwv5TZ4oMyLi9q5 ztC>KM@H)+vb-FoffBoX^uWGrB*BW!&`yl`eCYTZSuQ3JRuUhFU<;mK_1EDmz(64*4 ztF4koA&eNXWSkEfH1+4S@gns0tg=*O(~3)bK6ZBax}B#H6)Y7^Z}mc7RW?#T2-9Im ziR!&KqG&(~{7I$W7iA!e%VPsLv_piDJUlB}<<4+K9AlZaYn{io_b5vpu&uTOYvAEg2g z1C2@v z^tqw@@B>utpyrC!VsTS3{V_x}=(-Pa10-{(fbfd)+5n*e$kE{)w+S`OS{zZyx165P zS0FQ+SZn%5DSB}%ZyUdIp~kkBNinCxJ@^9uD{{=Y&sTv|&!GsJK33SC?;>pitp~Rq z&FJlNo1~6%Zs)hoW4og*Io?iC1t0 z%#CXK@7b!W)J(r!f*|e+I`473 zj?TzH#?}W8ieD^+McKuZ6>ctd&;cLiH7OtOh-E&;MwRPNX}H~!d2}D}LAX=1u++e# z4?LA6HZ;`yobMy_l~%_hcA z_jUqfcKA3(w1sL0G(g zMuxBZ^z}X(1^L9Ncjm?U?El=}&>$e|?huW$jZE7YU8F+#ZIIRIA}RXRG}z3h#+s@+ zgForSeoMEY@giQ=wkqa6muXobnKqpuBPSOliF6GML_9nFk0s!p#tt@?1Vvc>2vJAE z2m?jVvdK)++9GSC_l=v`(!<&fcpTN&iErOY+$Ftu%6wXVfCWl^+X(2DKQUHYU;xZg z7FM#KEyCHLvApHNebi+IiOM=!N7|m_Sg@H2xZMd#yz`h#_TzRQ zknSNA78zkv`1%a*6)YdK=oNbk*kT$(UKmVo7)@p>qAeD-uIsSiI1Za8sBmQl1 zzruW%Hc_+@xQL*qD|QIW%(pjvdFh6aa#tdC8aGo$B+JUi1{xB8ac9H)gW$r}w~zXi z70pO~O@^R04cM0mA9fU#L>>EUeyjVvL8P^ETq%2RkIM#kcIiThH&O3W%Ft|pi#o#z zY$yM#xIIc1@24>+rJy!7_krM6vZ^Yt{p6BAohMbhbpM@%q$!oxCQr>6^ir9{RyT_@ z4rxb6ql~;io%+pV_q$z%+CU*XdT(m@nhq61&{Y_(Fwm+{>QrUxU0Tn%6+|J?FvvFs zR&FK6Q=hIJmx^x@?Sf8Z$4cT#KEZd?7CgSM)xql3Fsg-aiNesuf*If3fKu|>dD_Z$ugt5D9p(FpKg z7A4IZw@3}0cq3<5dr23UzHJCU%Ho1`jGx#DmDc{ z6gB8Hi80LDwPwA5mA|l$w&tU|8Fb0;CkQN^}Rj~%}QTUR?u!jPeSK< z+hq?RTXRiDhUu-X)#eYEm$aM1$Ie!S7+^qhL(PizDg!jIcaDIGb1$(b1v&Xbqcz`A zsIH*r@?c^7`1tq?Ya*Gn_Y$Cj2QMM3G}bj_#O{`p($@popH(O!F;Rh@M@YQW3|ko9fU)RRcpQB%}1$pe5}^Q-Y<|!zbXo9A2Z%-Nqlb0XWTG`C>_ z0X>(GrnXE61l6OXpm2}r5afvTOk=qQ)=mqi3+z8HFM)D%U0!>e$EB2<&5Ex>)&3Gn zjz5P6am#oAtun8OtSyab-o;pKwYPmd!2dcht7GCk)xMB&bBTnv^ryYuCy=^wGZ1pb z$eGLbX5cupzDp8qUAk1_^-86G4u!8|gPuBnLq8oQp7#~6yV<~}pM{{5g`69ShSW>m zar{0Kr0H7)+lKEA=5>`#YCd>z7W59_@kJTyh8o;Ls+sToVJJNHAcBPg45 zjqze;`!mU>{*BYEBK3xz!nVV4lB2GswErZ_i|`rYwzOw=pxpencrc)*oW4e}y-`x^ z==G~P$ub-4-&CU=Ies&1ueFsy&ejMCbMPI&9I;q6q;RNq0S=NqFjrvd3jMC{@x zh=O~oE)jrD>iL<4@iBBsMORm9DzXV3YLc!kL`+`l#PSyxCqLpK zup&xICpwgq*6p{={p;RC{0}Ib@1wkvH$!zZH0^lJ64-2;dW$t{JVod$t^q0!;EX8*noViinV}7Q#jet~@5%yym?`)9;5IyEl!4m)wt=h8DF=yoL{S+Gu*P zvwTDDTX8lQaXIYm?2`-X8zxT#bENrqZ`tD+KiVL`SyImT{1;UnVRk&Mf#$d`$xD(* zGxd=O<{VU13w);yJ~bqu@z?{zP}znmG1%WqCQ7cx zz{YR~>-!6NY@bl#s0N38owbDNwI&l#lo4@JMWvrm`&P%B?#vs#@Hb6QMazkD&seEu z4H*|#eNbipw$!*yvk_hCHQ|XE=V85gWJ2oD7Sk}zR+Psc@n+(1yr1Mul>Af^QK6jr z{Pze&Tt5jx_C`MrK}~mf$Vh7i17eK*{(+wLGh-SpPI-NK_>WMZTB6y8e|#$}xuCDf zWBBJe$$%8NPOBMztqKSA@2td`)Ky)W&`HWg4=u-Ex0>o{IaXGGeh&?sm*4B2H!;cf z0WpCphA7MJzsc%Li$&ioD`+1`p`rUia0N-yF(gx?7c+~IT#V}Gv003cwdjd43WWHY zFk_8o%4=&UQ$wEmbfqRxEA{Va%ZlJ@`;71e^z%Jw$d|1HnQC+jsLbOCY#H+3Qfv%# zaJw>u^<=C$cV}s#;dXHnMIl>|d~3`Oi)3fKv@$wEv`Q`k6~>&~-k+apy6F??u6O&BIr8y5~PY- zuiV_@u(;Ui2uMld_(3Rd;K&K=ZC71~03g{zc{o#n+@)SG{NmeD1QTW-zia@DT!u!w z-#*^QrB0F;OWw8j?t|a9KkJVtf0_tvmmxPzo%l``e&+L$nwU5PWFTxlo2FHcwiPju z=e~UZ021hBrC$tNs@(#o9!uKCpItSs&}yw+8SF%AewWf@nYvH9rWQA`?6p*q9VxB1 z`eJ#WE%LWQ0W8LAi5V;7#aoSjh?hWW$%&9uPT}M>N5 zZfB{sHMIpI@el3yvRZiX5c%f1iO$kgwbUB*Y^+Q@7y!PdS{{xp+e7zucl5Q0+(bmo zwY3@3T?Lv83v&bVG*#cVO7+J*>8$rqBl;QL1W%&q0^YqhD8g-zfx9^)&NAcL<3_;E zxV+GAs7yGYg8FwBkhra#Nd9{wvo)hqJ&4=Q+D)MWYUYU->=yE8j6qx>nb4v;*_ zQOT#U4ogd7B=4<8=Hq_P#n)6-l~-E+E!Nd5K-$QCopDfYs#>sW07?e43~{HtnFB^| z8*9C`7c0!vfhOy6hX28o@|IQ$DAyYEvy;Xnu=-|m1=V0BerRfB@Ae8|aVR`hoPiPs^R#J@4+6$RQpBOmsEiOJ5hGQn{jDvj9z^c5h-s@w22|*1mM-Xe2Vg z&Y1r165eLzBw0Br8ttwhM7Mi}&t?@4L{@{Rif|dt$c!yaEaL7qQl0}ag1^TdRpi&k zvwe}SA#t~&P2j_Syt{qo{YB+_V!IkxdHxq$twgJjtT*c2vUBD&*i?up9MPHRHNwC$5zsH$6GbPu`}+kusD&Jd=%PjQO@i`S&6F@Ta*wPyG04-T-nivG4OS;=fz zF!_NYyiJJo7Tp@x#pMVw_FEx&iIQk^oLF#MDd96rdIEtd4J+TX8T{jh%mnF&crF)J z3gK1jB6Y1;xp5Yz`m#V}3?X*gu z*22}?tyrAW&Cx@O)(7b4S1tlB+%`Yffq096&&Qx@ULpcLInQ2HtkU5&8D}oi9pYj4 zI8+^sX|v<{_-haIjT`~jOuodMv$1N2G(fj$hNoL6oVT;G`&lO_$1n-{``SF)^1d*0 z)BKohp4u&*2N#0d!O!CrqMS?N@cW^2Q-yrAdvA^Ectf68uA}|lOpX?QH<;HVhkv_l zbsj_yJuKALbQ&)bi#_O<%edCHNBk5izeYws61+M($7Qo-UI*hdkm83DqR1D{FT2D~ z;sDf*Cybig!}pk&7>_R&0Y<;Jfr%Vz5m2z=i)Pze(BKql@IYG-pDs~yrQHUhbQ~@g z4*tXP@(9ewKw#L-GCgd;(g&j?Mx+xa7BYKK2{xMN6dbErQ++tcr^a9g>K^2+KCIN` zv(!A==DiPAnP)F~91>u>J;_%E<#wq~d|m?oN71cii*9m*^^TsXGVu$$n# z<~;qeqsV6BVgV|;C$gLheQv)*>%_zYJr0ZKhb8kxx}eb;ah-aF4VqFN-bXxq@;6HD z`if@%LrUgITY`7ENq6uoM6@wux&l3`juW3V7`NV(QfZ!!eEQli*1N$>j`hR>A53EJ zy-kRp&b)aeP8P<-lj`UW67gfYAam~zoWyR32ZQzJT7OkcVQf&8@zSrS ztTgq`w`s*U9aBV&{V+VR119b6QobE`a|~!<5WKx&uvGwQ%kk+%l&WJ37`eR@810aR z@qs5GzSUy(J0R}JVYA6REWS6?5AgG2$<4?R7JkL@=>&SUBTRM=eRmx;I~jpCZYYJ_ zx+91jFnw2!Z4RK2xt?ABuaes03Nm%hWL_Jr72(O#Zr$dlf-;An(qNH9%sog=H z9|c8JfWH7s`pw~bI(!(9huLXe{zHY`5FOn#AjL;f=tY9^Gx}%=1nraV0l-^&(c^|_ zvas^-&Fyc{%t|iJA=h zmuVbbGKcv|&Sd|SvTNE;@nz|7xgii0M%$BOgG&lsLnJ)9HH1&vLK?mg!>~9atJ!IT zaP&|;Xsns@D%acuTKm=c6?OS*f|~AJWo;&;Z*Tig*?och>)c>OSKf6 zF;1JABsmqbO$n-(baXsq63#&7>&nK~vk)<@`3oL;(5my(Q0sJGs*8G|PG^v0v)af~C%P+EsQ3R)mxlSIA(8TizH2JkB| zB!4?^BaI@5@1q|0b|)_{PYqjJqoH4nti4QkWi_Oq&Iz8dr8EL77DfY*^0m8Q)_G4-hJT;8Ak3oR$ z+FZ-i^43}{77`SCUGL~V=|~$&{?5gY4;0I zrr1~w-jqa#DHUCV$(*P}OA#2l0PG=v_OaLv_@)a!0zBTehGC%`=tcpk1vRJ>v=ja` z$_^`%`rPH~BdI0jrG=QWiD2nS-hmL@0aoOW` zxmsqPF4eg?I_H^x3=}BUZK`wM(POxI$9p{_C*bG5iSryWvh7Z;QlRMCwzPX`*d}$~ z@p|<-u9_Bp={CFa6G_VhiE8^iMs`k&&%y~9M4-*x<*>a$4z|>7Y;Zb<^UHxFX>vK` zp7P}7YoWY-P!~#6Owkht_moa(IuH&7F?ANm3109#e58+D=dgAImH;v5P8V0@wGR({ zCi%%?&#q5#PM9fPt%8s^FqonMnbXf79d2PWp#PLPaH1tfC}Ej>+H;@Tba8e^mZBG_<4D<(gye6 z@2YnnGK&Ar1cMxMIjB^&v94#p7$={n0%(SdyYbPdT?<@b$Pl}ym&6g|u_umz5yy{Y zZ2DK28h~99PKk|G9!QB1J^f!S1^_2ugk1j3tpKM*@Ypyg5A`Rp43-BI^H#LlAr^Bp4Md z_RwSU68q4SP3BKMZ~9N7^qdSG84s7DpMrUg>8#IGLf~WnQI`OVz(Guq4#o7d@ncD5 z=GsjPa=LydYz!G-p;dR1yqCf`evLy5_8QVi74CmS=VY)3txy9S@Y|+s0=>TS98{3c zMLbPn$)K-<`6c@9Xr+7}g!Ho^j$T71ei8Xs!1PLk@frwu1-j;k*Iu9d{t3^o`v|@) z#DJY-W?^|dlkPEM^;g{_^yT>N|7U|g$Eo5^nX$%{%5nK3_8lhcv>!8k+-&XRxif z#*G6`?|c(r5d_WKMb71h3vOxS0&~$n0<70EA;f#}oQ61zc!@)3_s9Ai(x-#vP7Dr7 zNn%b870W5+$@R3&`Sk7VZS_(1(tr1Ht{4$Ld1qNn@4Gz$`;b4M8wj$mWM#({6{J_% zJZ2({pWSt&GbD!Pq5o$uqoG5N(NRae8t88mGmM=3H(P%w_zctFy|}*;%{?M+mGM7p z_4A`3KsIF%b%A(myBlhjR0oWUQ~_B_^c2qjRbS-SzQlt z_KQE_F^KyM(knm%y}Mj8CNj=Qtxt4bFua5QU&Sr2b}J%wawK+)9+Kgsq=Mn<+T zW{Qawsh|*k($|$gygxht7a=ch6%Tmt6$e4!7+FOLg3nKE;ASYOtHSyA4UUb~svOIi9&eSdp>hG{W z`|WP`527S5HL|=Wl_0IVBb$w!`ekFNz^aMdZI2I7$WH}@pZ{|odHUQ2q(rfALGEQt zaacX~Yitw-Di z=e6Y|3b|$TuYCOYfZV255lREA@rjhFc>Q}-& zW1gGLrThI>n6DLhI5qXHq>1Bc4d*8c`<7Yd+(3lV$YS|CmdFK{G&z;iL9L%Ivyh(d zr*RLvYWo0z>U^;YaVaIu07g?^rT@k{ay49uE~o4>ShLYM!#2ey{v`NCK!OA|V$ikB zi4?Jjh7qt6Wj0a)Uk2_>A3*zj{~itIrdT75;m3YSh_m*QME}kL?1{IoTnFn!cMeWT z6rm2<1q|?iC*-^z3b}19BvB+iSRPNfCTT9D`rT*M{|${wX~^_vG2~;9>}Wwpf`g7B zaYX8bG6Hw_9hu9Upmwz+TYA|ek4^*2_VeY!l)?iygQ*hu?_Xz%v`(}Few)I_y?TF% zs5fE9THn2CN)jVB;_|T`Bb?H{lnSZO+ghE62VRHTjo^;VZa&HS-Miq^L)XFKz+_U6 z&SKN!t+V%(a|E$YdlH2L=fe$a^y7QYpY!0648r#J=2{YbT2lAjH8SKSq-QE1qG^g$ z3yXx`M5J(^z{7w)a6K+*<|l_ zWm%~x80hI`p(4)*rXH}f2jf{b-4>s5u2y8=jVLwQ1*&;>Q2bY$x7j=pi z)Ui49#7fW&YrK+IjRmL9x1w6#1RL$k5KaZ{$Z3amlpv`Lcg6*{p6lw`6!>s#h(*7~l7 zh1dY*+{f7VFMZ4#gHA#pQLd!6wV|W;@h9c3+TK+heBKOnSMRw4HV~+dN4O{ShH^K+Fj4}tt>Vh5Cy$kY*J3D7wN1w zc4oeNyE%y*mBkj8YUPHfmT25-sF;{QCR=Rg%vpK%%Mi_3oAu$GnH_SbCskHvQriyv zim4p&8SF!s8L?dB-UvF{C%yP@3xO9f#_fJQCMIgMrEfueTeNZej^8M#B9WtP(66m* z36|BqNyp#x^O3}5socSDG`N7X5|w=KUfRbz6Xk(E&5ba2`>Jm+N%YctH_f5>YZhGT zn#y**U-Mc5l>5cM2oWD|X4{Eh*cu)(zwh6$(PWFe*4HbV{O)CL=1Q~fOY&VoVN5h_ zO+mn)T=>U^&B>hcVhFeEPQfeuY`MkH?XwzWQ7C~L zRPCI+%I7S9+XRMU+D`JE+}vPs1iKD;W>)wmyguI#O~!ntt+i=ldc9vCCVMe_gx6*~ zKdVgN{JvG=<2!dgsISF3v!Cojv>P8oYjMPXKR$_q3|T%L2j_;n)R^c~Jvy%X3nSb9 zg`I;@>_!4lI6t&smxy=W4?*2E#jJuA7!%)TAC`9H>&(9L_c<$HFA0tPGWUh~WO`;n zqE;n9%I2e4iSn2l4qfd_aP@Y9*7{{yAup>$rLycpy#xw$LNzVRds;Na;Zd{g9|Eo- z>t-E`0?|?$BniCVQ}&I2$=O4Lfa6Y|z-C$u&E(jJ60Wcf=*8WBvmbOlnar>2)ysWP zX*f;ip+kv_eT}h`KY4+GlkH_S8H3+TiHsLxQ|n=SKcSNk(4F9K3K!j}>(3RMjC`Gq zDON?ALoAvj>Qm>EaeJf-4NGNS zUZ8t-@x;g-j;YZJ?Prt1gXGk}9I$#F0fB zJoo#Vof9}PXs1>9ts@$)ri=7eb+~WUSB&C|<>AaoG#Bdo;L4fF{Hn)BHHUa+J{~3i z9A0E-8*Mc>n~PrDjHe~$zc@MIbnM*4vSraI!jF+ztJB;%=KRC}!uJ;l&I)l@#aw@7JDJ_IM_!*F z;Gf!RcDm>kX*4*ePo*#TT`zV@ANj_o$BBf;puG}ua*!5(mE{Ecd5mmjp&>g8XM7B# zrvAQN$BL3_UB969Wu-W`abw9tm*17(%kflW+sakqB%P$DA9-4L@!rSk$8W=vJcmp( zP~E!Hm7FvoydLOY<#=3cm&b}E7CEieT*to-qDN$1nk)of@i|ei*qSwj#zI7HF(Y!A z)T{4v-JQ%WMzlVSsFU1(Vbfj-GJcv*o7g zz0uP$C`uj8*ikWIEMdQiwoE*Bq6Ws&B!B1OCw_&F=Bwcz|hK)d1+i=YofBMo^-4+Bq=smbG|h7X=TWJ76 z#}LFbAQc*-?;0^_&57Aec6woS$MznoeK+oScVln{r&DG{B0n)=4L8aj$eX<%&f_d( zUKM3_21*Z&zLSZ>*|m!F7RMrt|H-Qr+K{CbrbfaxveD#p>omVS>?7cQ{<*y3d7!^j z?+-0Z2x4M0BO&6$rb^Spxs*#7xf|ZI8>QASPM>K=m)pMSZ!Ir4V-?5{Pv;YR;I|n^ zUB-O!Wuv>qJ8N<0fS&exJ$q~TlXL#h*)M{EhZDXxQ^+wID3u^eXsADY!g1(_$G_%s zt#TAO-U6N|d?H2!By{zBR(^Iqn?DhAy+FSGL)`vnPL^&!(zbB>ut54q-Yg;)+W+fC zOSsD}{%A4%DFPYuD;899b91%}T8X-Dwy|j?Dpt19u%Nf?p=>xLOz0TI4!DTO0s1Bd zsAv2PNgG68gRYZ}j7x$$is-0qI6sWA(`y$|toTqu^SsfKXyA$O%8=er&{_KUA?Cdf zkGMb1*Xl~4DYzpE2M6j^gd7fKm3`^5fY`APC|YH`xc z%WJI~xDerGqAlBcu&(&VJ*MAhwFxD#Yr?gXsgjz=Q6+SCGWJG8C(nDB2OlmzwCTAS zhn5>fLK!*K@orn}4zMp6hSVpJPz>l#vQBXAkWg5F$CmUoi>A6Z`k z6i3@^onQe%Ah^4G@Zjza!7aGEWzpd7?he5nf)fbt?!LGz4vYSqSHAn*`%_bF6|+-Q z%=FXU=bV1JlQnxHwdr=r+-1_?@26p(=jp(k@#Qx+;Ce=K)7bHY4U z*yp3sSJT!btIS!Ky+dockYGG$WV(+}@9%Yi<-h973HeA(-^b7H(OG{^v0Gb={&?G^ z6cO!|HQqA6zH(PvOjY-r`T9!5te7Dnt2tcCDeF%)WF{3r5daVH(jRX@kE`eYbxWD# z^d(c^_h(x9NOov{V+7DCeo=KvRrweRQBLgm)+cysN^`_6A5l_lC}2;|mII>Ct#I1E z{V@OP0g3eos)J^8I?-}V3WC|052@Hh32>9@dXSFx!6agNN)+)w%HMw`n2s(e z9a_a0My`8JNu!;gH|nHL^!`0HjZqkJ*)kKf*K3|r_Ju*M#Xn4`+jk2cLHZXhqZ&n= z)B@<6Sf;_xv$O2pb-Hv>V)rWe%UxFzhFnw&tbA~+ew7F*@z4sO+)h%wWYC>)f}A)g zS6rS(=N0d$Wy`gEIFL+gmU-C$bigeLZra3rFf++zY0shee`;JIX43V=&U??EG*wWN zBM?YUSI!u!yHyuwkAs$lc|l2=o;oZowU@}b-HDLIv$7YsJI?vUl_y8#yd{`6R#JkB zh?r7bEF1S^QhCTW#WXM*>ueU*QCKW3e{C{jXg3&iG3x^Mfc3ILD|rZ=ZAFKS;+DCUU$8LHA*lxL zb#t+8n@G3Ru$k)YQ8FvG+13{}`(Ws6VuN+rUDt2$TK)ZfJUb77_UoxZ415qhfKy;$d1gu-I}9h~JC5QW z>N{yGqjO%_>!dpy%Khl}p^v}EnwcSg~g=9_8-OV1ryAV5$K zlWBgb(*2%oq!umXr5o{epKwTdOGDMUVr^n5=ycH9~6%c4j+uvc32{KJ)KrQ*bDP zqvlljzE)5e;~3IUqgseI&46w&JXyd$Ss zm`vKWxhg?y^Kfo5mdm*o4O;6DsGx&et5CkUZJ!r)m40A(5pR3t*It?rjILB&wuU{G z%6_khY%A;`wJiI53*@!`asld%hIq(Uq`JH+0V&TR(H`s=t0O+D50kErF>oT*Z1*Ht zQ=*KU1wcI*nJ~XGx{lTLoD^H6QPg+U_w2U_h+Pw#V@Zd6!Wx%0xkU= zNCE~>Bz8;=oG{N#UbuT734tMD4%!gP_>xdLn z4taNk>+KYgT{8JY>+t(su$LIVC>)#zo-oLC;_Jxq;MJsi4NE#(DHB{q z8tsM05TDBj!?#gFS2`IRp4X1E-AAetvq#IrEL7@q$BhFM;5ipsHcQR1uwJXJCY^QL zb4Y?ZD%XH5SIOm?_>SvQSq^@ew%Q&fNEIwe!JMs5oM5dp{;@W{y_3&iSgIZ%s`H*r z50FQupCtFkfjOMT-H+3UE#xexs9P}MRjgY}csXV~`>skx_1=Rq zzMRdi5R_92Fl^cDuRYRePaV8ftC@Y&Q=jxXr7vga&-#|OG@(#15Qu@ittLuX{M&HL z;*>>MJNO#xmX*TWP_}$tVl(nRYm(-$&0(n0RhzJL{45{wx?6FzKfu?vac}J=UA?$n zlq;16!%2kA%`BWUbD_;8Hm{>W?&q%*Ynl})jr!aGSGJ%iuGrp#Ha9XR&q|Cj3Be3*k`0nTTV^R zUmx41_%lmwD+gpw1c3%u(PU|RnMnjUl4xf6Ik_MLDnkxE>;oZbBnE(bk1U(Y>pxa)TrzML_g z1usSCa@yb6{*03im3s2F5DCm52q5l&&uKooZSu|DwGuh$CLsf>`3fxhp6qs#SGy5; z`H9g7G7x?~bbgQ_L4I`?=_eU!^%@DtdiCry>E%cAOCXe{W3O|W@!nwe<@vTiYR|gp z&$aIbe)lKnI&D8?jCtl%Y+T%5L^#aSut)RmiQ}JTbrRGZPeufkcr}B3k>!)O(OHvi zTYP~HpeAqq*X*lannk)EnrqvU&XP7{58}@+4+mf_Rct+3xnZws2AdrwW_Cl|a|>SE zshjRQnP!wvPlB&LaPlI<#iCo)9WJRJT&dQ_7 zS?h^JyL6JQV;(ZV&@1c8g!FMegZGs*YP!2tESw0z{lMAiv|hr}CT_&hhK|yv2sL&R zDCy~v@G7#Z{b`U z7Nx<@HJ`u}qszt#8S?Uk9i-6Xq7O{$KFj&XgVFxxhdpDtHvlXO9of_!?59`vo{;m) zqB_99!!Q5emW|)mviL(f`i$W8ZMGS7-LYlyB0lcpC4ZFr#lTJZYXsd>q6W#z-J2V< zc>E?1abi9(arBkYlf(HiDoF=)^^M@fR#>%@IjAItLblaorB_XdnC}*O;IPJU0lh(H z;^QlLqCQE7$Y$-%=JZx_@nc|YCG0CLndR-J&R1ZVxX??Fzu!L3qvjheiFJr?f^4b# zN3Wqt`?JMLFwOmJ<<60~*GYgV;WQA6)Xp~Uu#exU$=@GJ?H4f`#upmYMr*5$T=k_4 z6p_SPY$*cNB$e2KN-Z6D1T?fXFFg9Ust)8E%TJ=3Mz^ct9~ zM*=S_(zN-yPT=15&bPQh8SgJE!xJ@XY=Ea-9}+y?vAm6M|9G)d-_1Y~xEllj#HD)P zB~hFnmx?}(_WN0=G-0@3kTfnw`>$cEy@eg~|L8xR>!1~@_0by%cq=>9u@GOu{L8jV z-NEN&gFDZ@N}C}4;DX3R@Dzy%gJ=ZdF>~cDOz#rTp1!hDatPEI<}??h6!&{@jizTA zwz||n} z+g;aing8B?xb$Zb=Y)W$_(4uG)zvyxUDkT1vbaTZI^7UF&Vkd+bdh{Xkr>cN>eXDB zlGjb`NG?j5HuK~i`sZr{Kh*oX)eP)v@?otb+27NQo;g@g#(S`5e!W{tdjGtozh%!p z|3AAiVdryZEUeP+fkofDnSEV=`!4YwH`b)*mwNN@(D^x>56_L=PipOBqlvmLgpm6&>d81`;Rd|hOO~JHNgIdpb1C);~L3-&i+rM@;|b> zz3}&=e`GYF3o^(yx9z?Z?f*L@0SD?!#NS#K??2t|YsvM#BL`nQ(b^WPzUi}9uVpCU z^>xxSCLgo6)57>r_Kyhl;O2NVT}Flj@Yg7KP)kXn*}>%0D1NFRib7%!zNzAbke&0j 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 zⅈ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

    aP`(ghgIQ&0ckMb|ZUNNNBD{!(-hNVIBh= z#rx=kEW_o|VsUm}T6P)+0oKZOFD)a9*BXKnV1nzIk}9-IU@oYDIy0QYLwLhKk$FYu z54_Q~P}4Nf%HKyeg1=3mh^Bt>QB#67NI879+E_)br9l@g!Tvk(;c7hp0{2e=FFit7biCl(r~>VU`oL>@w|WY zIxM~$oEy(ltpLOE9cfY`L-`55UGK`u3E<-axf*r)A1H9nqA-NFUgX_!z`p=21U37` zj7CU+w@(X~d*|feEFn~wK+*}<&#;XQx?zIY4lef&Dtn_71c4<>Ud^-z>qdI`abPEI zMH;yJqXP?}h)F4<(%q^gE(;@eH_7BGps{ZCt)R(2i%TYE%k^!kNHDNSl2$LrzWlo` zA;Ih1C}EK>pe(&+GnVOZ8MY-{EDs=5805exd|z;9-=?E(o+p-jgRC=4EN2g0KI_aw z;{HAG!RMZMxTb*E1{@veAKZ2B_C**t5kG$U6k4D;kNY}zYrx+p6LL=xRhY1&~GCz2^@e>Smt*gD6=!{`z-hxzl5STOkRhbk=B_<~e-ozxoLnn2gX) zPJGa>BW}UuN50c7ck~K@(xiGdmhmr5ZaIrB0ex$^OdqNZMB-ppf9K+$KchUwQTgr$ zBxjGLlYMs&6vcW{!Tv4+etv?<{@tQT0*sZ{i+tDXShl;yuvy?@8E)?R!=Pf+kpc(v zn}Wo0*ho6TxAnroV(KI!{AmNY@lJwS1(seIxK3c)l=}Rz{~DEd6wE3DU{XMHj5NsL zKZ(LSww@vBh!VFv_k@o{yhrmtjxS2YC zIlBnu>@O^sVFnubm$Lt1JXs4nB2XI&A8Zf$znb&~wAcrj+l5*h#_le8dQ-IyAkRh| zsqnW`G!gzK?cYjocfs=CO;fLLqA-VlrtCb>$(|fo!r$$r?xVLz-wlP|A83!7nEkd= zXy?7Y@x$2Nj-o>x;Dabd$v-VfYzsKwXV97qF!|x=upR{dle@%na>&G1Kpj26RPPIX zxc#p}00J5ULwetf4q6C@n*Tr4B*x$`R0BGj$U-#oM@Rf=9Qz?$b08-2J_E+r|Br>} zR6hY0s*?2lZy~V?w8h7P=jB+!fO!3p)Z3d-QDBt#4@|rRV2tklw{!z|Q|9wML}EEr zB%Npfd36Y0*!Jv}RsW>-4e{{cg^_Q{fI0pK{w3aDR>8nd!rMHkI7(&@zSSZquV8=t zW0J-JgiWNzfAd>W3q1FH|3}@FLCtVl&fGt8LB$S_PJJit;17UO(1sCY`78d|@Nm8u zH;kVj2juZO9)tUzWIteo6~38{lhArKV&`wy$KMn>kAhhQ*4~a6fL5O*NBEDc;RP0h z!SLcog%TH*uI9fS@hITX3|eCfCPhOVKDwRB7RorIPa6yKr7<+0Q}&8HeDtL)O*7I^})?J zi9wkBZ~pc>)DlojR-0{~vnoPMvyfW1)90Ai|?izzY9! zrN0qW4pL&t7BqkZi#770v;c-&J_SZ-5HK02SC$({9KO zmV$foPdS}Gg;IgX%H&pO>{}!0y!p*F!1;$V6+}RYeys6@L zIf_|QKiSZ59^ev_yjE8CxVc@L-VZKZ zR9;*c4HRg`JvEU0I9gC!9*jfvz_h}!py!#ezyC_TQw~#AccUw_)pZCF*Ibj3?tp2w zQk{Jp#c0m!e!a+^{EF_Fm`#6~K$;A(N?!LmVBetoT=U-Pg3xJu$aFH7ie(qJ5*8M< z@yS5u+s2*?Yv=9Q?`@A*vio0J|5Pn3{B|J~)ph^=h;xKiJ*Q^9=<^{1uD8vz7X8Wb z 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%0DEBvEe+*xNMhG*qu@jyopf(~{4j{ueH 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 (Nq28_DL2;i{G2yN@l+v_EmH*TX1e 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 f1nl!74hll+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Privacy Policy · QECTOR - - - - - - - - - - - - - - - - - diff --git a/refund/index.html b/refund/index.html deleted file mode 100644 index 2d769544..00000000 --- a/refund/index.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Refund Policy · QECTOR - - - - - - - - - - - - - -
    Skip to main content
    All prices in USD · Instant digital delivery · Updated 6 November 2026

    Refund Policy

    Every plan has a 14-day money-back guarantee on the first payment. Subscriptions renew automatically and you can cancel at any time. See Pricing.

    Version française

    14-day money-back guarantee

    If QECTOR is not right for you, e-mail admin@qector.store with your Stripe receipt within 14 days of your first payment of any plan (Pro monthly or annual, Pro Perpetual, Lab or the Pilot). We refund it in full, no questions asked, and revoke the licence token.

    • One guarantee per organisation; it applies to the first purchase, not to later renewals.
    • Refunds go back to the original payment method through Stripe, usually within 5 to 10 business days.
    • Once refunded, the licence ends and the token must no longer be used.

    Renewals and cancelling

    Pro (monthly or annual) and Lab are subscriptions and renew automatically until cancelled. We e-mail a reminder 14 days before each annual renewal. Cancel at any time in the customer portal (sign in with your billing e-mail) or by e-mailing admin@qector.store; your licence stays valid until the end of the period you paid for.

    Renewal payments are not refunded pro rata. If a renewal went through that you meant to cancel and you have not used the renewed term, write to us within 7 days and we will refund it. Pro Perpetual and the Pilot are one-time payments and never renew.

    Delivery problems: we fix them

    If your token never arrives, arrives corrupted, is tied to the wrong e-mail or fails offline verification, that is a delivery fault on our side. Do not open a dispute: e-mail admin@qector.store with your Stripe receipt and we will reissue or correct it at no cost, with no time limit.

    Tokens are e-mailed within minutes of payment, usually under 10 minutes. If it has been longer, check your spam folder first.

    Duplicate and mistaken charges

    Accidental duplicate purchases of the same plan for the same organisation, and charges made in obvious error, are always refunded in full. E-mail admin@qector.store with both receipts within 30 days of the charge.

    Statutory rights

    Nothing in this policy limits rights that cannot be waived under the consumer protection law that applies to you, including the Québec Consumer Protection Act where it applies.

    Currency and tax

    All prices are quoted and charged in US dollars (USD), exclusive of tax. Any sales tax, GST/QST or VAT is calculated at checkout from your billing address and refunded with the price. Businesses can enter a tax number at checkout.

    Seller and contact

    QECTOR software and licences are sold by Guillaume Lessard, sole proprietor trading as iD01t Productions, 288 boul. des Ormeaux, Longueuil, Québec, Canada J4L 1J4. Contact: admin@qector.store.

    Typical response time is 1 business day. See also the Commercial Licence Agreement and Terms.

    - - - diff --git a/robots.txt b/robots.txt deleted file mode 100644 index a6ecbe52..00000000 --- a/robots.txt +++ /dev/null @@ -1,12 +0,0 @@ -# qector.store - canonical crawler policy (audit S3: minimal, widely supported -# directives). Everything is allowed; the wildcard group is the only enforceable -# rule most crawlers need. Vendor-specific agent names were removed because a -# matching named group disables the wildcard group for that agent and adds -# nothing over "Allow: /". The AI-crawler policy statement lives in ai.txt, -# the machine-readable discovery surface lives in llms.txt / llms-full.txt. - -User-agent: * -Allow: / -Disallow: /success - -Sitemap: https://qector.store/sitemap.xml diff --git a/security/index.html b/security/index.html deleted file mode 100644 index 62c14f37..00000000 --- a/security/index.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Security & Trust · QECTOR - - - - - - - - - - -
    Skip to main content
    No telemetry · Offline licensing · Signed releases

    Security & Trust

    Everything a security or procurement review needs, published. Every claim on this page links to an artefact you can check yourself.

    At a glance

    • No telemetry. The decoder, plugin and Workbench send nothing to QECTOR: no usage data, syndromes, matrices or circuits.
    • Air-gapped licensing. Licence tokens are Ed25519 signatures verified offline against a key in the package. No licence server, no activation call.
    • Verified builds. All 18 decoder wheels are built in GitHub Actions, carry Sigstore build provenance and PEP 740 attestations, and are published with Trusted Publishing (no API token).
    • Tested before release. Each wheel is installed on its own OS and checked against the syndrome before publishing; the receipts ship as platform-proof.json.
    • Dependency gate. Releases are blocked while a RustSec advisory or licence-policy violation is open.

    Verify a decoder wheel

    Download from PyPI or the v1.0.1 GitHub release, then check its checksum and provenance with the GitHub CLI:

    verifybash
    sha256sum -c SHA256SUMS --ignore-missing
    -gh attestation verify qector_decoder_v3-1.0.1-*.whl \
    -  --repo GuillaumeLessard/qector-decoder

    PyPI also shows each file's attestations under "Verified details".

    Verify the Claude plugin

    The plugin v2.0.1 release ships SHA256SUMS, an Ed25519 signature over it, an SPDX 2.3 SBOM, a release manifest and provenance. Verify with the release-signing public key:

    verifybash
    sha256sum -c SHA256SUMS
    -python scripts/sign_release.py --verify . \
    -  --pubkey kYwkMApz4zMgQmJsOya1UZuByvnuikzlxQkQiA8NOJg=

    Every Python dependency of the plugin is pinned by SHA-256 in requirements.lock and installed with --require-hashes.

    Public keys

    KeyValue
    Plugin release signing (Ed25519, raw base64)kYwkMApz4zMgQmJsOya1UZuByvnuikzlxQkQiA8NOJg=
    Decoder licence verification (Ed25519, SPKI DER base64)MCowBQYDK2VwAyEAQh9t19EZ4KWZEYjY3EwHCUzUIehZBlovaMtrpLQXeGA=

    The licence key is embedded in the package; it only verifies tokens and cannot issue them.

    Data handling

    We hold only purchase and licence records (organisation, e-mail, plan, receipt, token) and support messages. Card data stays with Stripe. Details, providers and retention are in the Privacy Policy, written for Québec's Law 25.

    Revoked licences are published at qector.store/stripe/revoked.txt; air-gapped sites can copy it to ~/.qector/revoked.txt.

    Report a vulnerability

    E-mail admin@qector.store with the subject [SECURITY] QECTOR disclosure. Include the component, version, platform, reproduction steps and impact. Please do not publish details before a fix is available.

    We acknowledge reports within 5 business days and coordinate disclosure with you. Supported versions: decoder 1.0.x and Claude plugin 2.0.x. Full policy: decoder SECURITY.md, plugin SECURITY.md, and security.txt.

    Procurement

    • Seller: Guillaume Lessard, sole proprietor trading as iD01t Productions, 288 boul. des Ormeaux, Longueuil, Québec, Canada J4L 1J4.
    • Contract: the Commercial Licence Agreement (français); Enterprise deals use a signed agreement.
    • Payment: card or invoice through Stripe, in USD; tax numbers accepted at checkout.
    • On request: W-8BEN for US customers, completed security questionnaires, and a call with the developer. Write to admin@qector.store.
    - - - diff --git a/sitemap.xml b/sitemap.xml deleted file mode 100644 index 52da964e..00000000 --- a/sitemap.xml +++ /dev/null @@ -1,123 +0,0 @@ - - - https://qector.store/2026-11-06weekly1.0 - - - - - https://qector.store/about/2026-11-06monthly0.7 - https://qector.store/decoder/2026-11-06weekly0.9 - - - - - https://qector.store/workbench/2026-09-27monthly0.8 - https://qector.store/mcp-server/2026-11-06monthly0.6 - https://qector.store/claude-plugin/2026-11-06weekly0.8 - https://qector.store/blog/2026-11-06weekly0.8 - https://qector.store/pricing/2026-11-06monthly0.8 - - - - - https://qector.store/fr/pricing/2026-11-06monthly0.4 - - - - - https://qector.store/commercial/2026-11-06monthly0.7 - https://qector.store/contact/2026-11-06monthly0.5 - https://qector.store/license/2026-11-06monthly0.5 - - - - - https://qector.store/fr/license/2026-11-07monthly0.4 - - - - - https://qector.store/fr/decoder/2026-11-07monthly0.4 - - - - - https://qector.store/privacy/2026-11-06monthly0.5 - - - - - https://qector.store/terms/2026-11-06monthly0.5 - - - - - https://qector.store/fr/terms/2026-11-06monthly0.4 - - - - - https://qector.store/refund/2026-11-06monthly0.5 - - - - - https://qector.store/fr/refund/2026-11-06monthly0.4 - - - - - https://qector.store/fr/privacy/2026-11-06monthly0.4 - - - - - https://qector.store/license-agreement/2026-11-06monthly0.5 - - - - - https://qector.store/fr/license-agreement/2026-11-06monthly0.4 - - - - - https://qector.store/security/2026-11-06monthly0.6 - https://qector.store/fr/2026-11-06monthly0.5 - - - - - https://qector.store/getting-started/2026-11-06monthly0.5 - https://qector.store/use-cases/2026-11-06monthly0.5 - https://qector.store/status/2026-11-07monthly0.5 - https://qector.store/compare/2026-11-06monthly0.7 - https://qector.store/guillaume-lessard/2026-11-06monthly0.7 - https://qector.store/evidence/2026-11-06monthly0.8 - https://qector.store/changelog/2026-11-06weekly0.6 - https://qector.store/technical-reference/2026-11-06monthly0.5 - https://qector.store/docs/2026-11-06monthly0.5 - https://qector.store/installer/2026-11-06monthly0.5 - https://qector.store/manual/2026-11-06monthly0.5 - https://qector.store/blog/01QecFoundations/2026-11-06monthly0.6 - https://qector.store/blog/02BlossomMwpmExact/2026-11-06monthly0.6 - https://qector.store/blog/03SparseBlossomEventDriven/2026-11-06monthly0.6 - https://qector.store/blog/04FastUnionFind/2026-11-06monthly0.6 - https://qector.store/blog/05BpOsdQldpc/2026-11-06monthly0.6 - https://qector.store/blog/06AmbiguityGnnNeural/2026-11-06monthly0.6 - https://qector.store/blog/07SpaceTimeDecoder/2026-11-06monthly0.6 - https://qector.store/blog/08AutoDecoderCascade/2026-11-06monthly0.6 - https://qector.store/blog/09GpuAcceleration/2026-11-06monthly0.6 - https://qector.store/blog/10BenchmarksArchitecture/2026-11-06monthly0.6 - https://qector.store/blog/11SteaneWorkedDecode/2026-11-06monthly0.6 - https://qector.store/blog/12RotatedSurfaceD3/2026-11-06monthly0.6 - https://qector.store/blog/13DemPipeline/2026-11-06monthly0.6 - https://qector.store/blog/14WeightedDecoding/2026-11-06monthly0.6 - https://qector.store/blog/15LogicalErrorRates/2026-11-06monthly0.6 - https://qector.store/blog/16DecoderSelection/2026-11-06monthly0.6 - https://qector.store/blog/17ReproducibleBenchmarks/2026-11-06monthly0.6 - https://qector.store/blog/18RustPyo3Architecture/2026-11-06monthly0.6 - https://qector.store/blog/19ReleaseLicensing/2026-11-06monthly0.6 - https://qector.store/blog/20EcosystemIntegration/2026-11-06monthly0.6 - diff --git a/status/index.html b/status/index.html deleted file mode 100644 index fc614439..00000000 --- a/status/index.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Status · QECTOR - - - - - - - - - - -
    Skip to main content

    Status

    Checking…

    • Licence fulfilment

      Issues licence tokens after payment

      Checking…
    • Package index (PyPI)

      qector-decoder-v3 downloads

      Checking…
    • Revocation list

      Published list of revoked licences

      Checking…

    Checking from your browser… Reload to check again.

    Your installed software is not affected by outages

    Licence tokens are verified offline against a key inside the package, so decoding never waits on any service on this page. If fulfilment is down when you pay, Stripe keeps the payment event and the token is issued as soon as the service recovers. Current releases: decoder 1.0.1, Claude plugin 2.0.1. Problems? E-mail admin@qector.store or see Security.

    - - - diff --git a/success/index.html b/success/index.html deleted file mode 100644 index 4050cd32..00000000 --- a/success/index.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Purchase complete · QECTOR - - - - - - - - - - -
    Skip to main content
    Licence help

    Looking for your licence?

    This page confirms a purchase right after Stripe checkout. If you bought a plan, your licence token is in the e-mail you used at checkout, usually within 10 minutes (check spam).

    - - - diff --git a/technical-reference/index.html b/technical-reference/index.html deleted file mode 100644 index c50d476b..00000000 --- a/technical-reference/index.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Technical Reference · QECTOR - - - - - - - - - - -
    Skip to main content
    17 Decoder Configurations · Stim DEM · Generated API Index

    Technical Reference

    API overview for QECTOR's decoders. The guided examples below are illustrative; the API index at the end of this page is generated from the published 1.0.1 package.

    Decoder Classes

    BlossomDecoder

    Minimum-weight perfect matching (MWPM) decoder for CSS stabilizer codes. Uses an exact matching solver to pair syndrome checks.

    Signature
    BlossomDecoder(dem: stim.DetectorErrorModel, *, adaptive_k: bool = True, timeout: Optional[float] = None)
    Parameters
    NameTypeDefaultDescription
    demstim.DetectorErrorModelRequiredDetector error model of the circuit
    adaptive_kboolTrueEnable Union-Find pre-filtering to compress graph
    timeoutfloatNoneMax seconds allowed to match a syndrome
    Usage Example
    blossomdecoder_usage.pypython
    import qector_decoder_v3 as qd
    -decoder = qd.BlossomDecoder(dem)
    -correction = decoder.decode(syndrome)

    API index

    Generated from the published qector-decoder-v3 1.0.1 wheel on 2026-11-06: every public name in qector_decoder_v3, with the signature Python reports and the first paragraph of its docstring. 113 names.

    • classAmbiguityClusterDecoder(check_to_qubits, n_qubits=None, error_rate=0.05, ambig_threshold=0.5, max_cluster_size=12)

      C1-02: BP + ambiguity-clustered exact decoding for qLDPC codes.

      4 public methods
      • batch_decode(self, syndromes)
      • decode(self, syndrome)
      • decode_correction(self, syndrome)
      • decode_observables(self, syndrome, observables_matrix=None)
    • classAutoDecoder(check_to_qubits, n_qubits=None, config: 'BackendConfig | None' = None)

      Workload-aware, self-debugging decoder that routes to CUDA / OpenCL / Rayon / CPU / Fallback.

      8 public methods
      • auto_select(checks, n_qubits, batch_size=1)
      • available_backends(self) -> 'list[str]'
      • batch_decode(self, syndromes) -> 'np.ndarray'
      • calibrate(self, sizes=(64, 256, 1024, 4096, 16384), repeats: 'int' = 3, seed: 'int' = 0)
      • decode(self, syndrome) -> 'np.ndarray'
      • diagnostics(self) -> 'dict'
      • reset_backend_health(self) -> 'None'
      • select(self, batch_size: 'int') -> 'str'
    • classAutoRouter(*, priority: 'str' = 'balanced', hardware: 'HardwareLike' = None, error_rate: 'float' = 0.05, code_family: 'Any' = None, use_native_auto: 'bool' = True) -> 'None'

      Construct, cache, and dispatch the policy-selected decoder for a problem.

      2 public methods
      • decode(self, checks_or_H: 'Any', syndromes: 'Any', **ctx: 'Any') -> 'np.ndarray'
      • explain(self, checks_or_H: 'Any' = None, syndromes: 'Any' = None, **ctx: 'Any') -> 'dict[str, Any]'
    • classBPOSDDecoder(check_to_qubits, n_qubits=None, error_rate=0.1, bp_method=None, osd_order=None)

      Belief Propagation + Ordered Statistics Decoding.

      7 public methods
      • batch_decode(self, syndromes)
      • bp_decode(self, syndrome, max_iterations=20)
      • decode(self, syndrome)
      • decode_batch_flat(self, flat_syndromes, num_shots, stride=None)
      • decode_correction(self, syndrome)
      • decode_observables(self, syndrome, observables_matrix=None)
      • decode_timed(self, syndrome, max_latency_ms=10.0)
    • classBackend()

      Backend identifiers & Fallback Tiers.

    • classBackendConfig(rayon_threshold: 'int' = 8, gpu_threshold: 'int' = 4096, allow_gpu: 'bool' = True, prefer: 'str' = 'cuda', force: 'str | None' = None, enable_auto_debug: 'bool' = True) -> None

      Tunable thresholds and policy for :class:`AutoDecoder`.

    • classBatchDecoder(check_to_qubits, n_qubits=None)

      Parallel batch decoder using Rayon (Rust data parallelism).

      5 public methods
      • batch_decode(self, syndromes)
      • decode(self, syndrome)
      • decode_correction(self, syndrome)
      • decode_observables(self, syndrome, observables_matrix=None)
      • parallel_batch_decode(self, syndromes)
    • classBatchedBpDecoder(H: 'Any', *, error_rate: 'float' = 0.05, priors: 'Any' = None, max_iter: 'int' = 30, alpha: 'float' = 1.0, bp_method: 'str' = 'min_sum', prefer_gpu: 'bool' = True) -> 'None'

      Batched belief-propagation decoder over a fixed GF(2) check matrix ``H``.

      1 public methods
      • decode_batch(self, syndromes: 'Any', *, return_llr: 'bool' = False, early_stop: 'bool' = True) -> 'tuple[np.ndarray, np.ndarray] | tuple[np.ndarray, np.ndarray, np.ndarray]'
    • classBeliefMatching(matrices: '_Matrices', max_iter: 'int' = 30, bp_shortcut: 'bool' = False)

      Belief-propagation + minimum-weight perfect matching decoder.

      7 public methods
      • decode(self, syndrome) -> 'np.ndarray'
      • decode_batch(self, shots) -> 'np.ndarray'
      • decode_correction(self, syndrome) -> 'np.ndarray'
      • decode_observables(self, syndrome) -> 'np.ndarray'
      • from_detector_error_model(dem: 'Any', max_iter: 'int' = 20) -> 'BeliefMatching'
      • from_numpy_h(H, error_rate: 'float' = 0.05, max_iter: 'int' = 20) -> 'BeliefMatching'
      • from_stim_circuit(circuit, max_iter: 'int' = 20) -> 'BeliefMatching'
    • classBenchmarkSuite(check_to_qubits, n_qubits=None, n_samples=10000, seed=42)

      Production benchmark suite. Wraps Rust-native benchmarking.

      2 public methods
      • run(self)
      • save(self, path, results)
    • classBlossomDecoder(check_to_qubits, n_qubits=None, edge_weights=None)

      Minimum-Weight Perfect Matching (MWPM) decoder via Edmonds' Blossom algorithm.

      6 public methods
      • batch_decode(self, syndromes)
      • batch_decode_weighted(self, syndromes, weights)
      • decode(self, syndrome)
      • decode_correction(self, syndrome)
      • decode_observables(self, syndrome, observables_matrix=None)
      • set_edge_weights(self, weights)
    • classBpOsdDecoder(H: 'Any', error_rate: 'float' = 0.05, priors: 'Any' = None, max_iter: 'int' = 30, ms_scale: 'float' = 1.0, osd_order: 'int' = 0, bp_method: 'str' = 'sum_product', use_gpu: 'Any' = None, max_latency_ms: 'float | None' = None, damping: 'float' = 0.0, osd_lambda: 'Any' = None)

      BP + ordered-statistics decoder for general GF(2) check matrices.

      4 public methods
      • batch_decode(self, syndromes) -> 'np.ndarray'
      • decode(self, syndrome) -> 'np.ndarray'
      • decode_correction(self, syndrome) -> 'np.ndarray'
      • decode_observables(self, syndrome, observables_matrix: 'Any' = None) -> 'np.ndarray'
    • classCPUBatchDecoder(check_to_qubits, n_qubits=None)

      SIMD-friendly CPU batch decoder with pooled buffers and SoA transposition.

      3 public methods
      • batch_decode(self, syndromes)
      • batch_decode_par(self, syndromes)
      • decode(self, syndrome)
    • classCUDABatchDecoder(check_to_qubits, n_qubits=None, edge_weights=None)
      3 public methods
      • batch_decode(self, /, syndromes)
      • is_available()
      • reset(self, /)
    • classCUDABpOsdDecoder(check_to_qubits, n_qubits, error_rate)
      1 public methods
      • batch_decode(self, /, syndromes)
    • classColourCodeDecoder(dem: 'Any', max_iter: 'int' = 30, osd_order: 'int' = 0, method: 'str' = 'bposd')

      Colour-code decoder: BP-OSD over the undecomposed hypergraph DEM.

      6 public methods
      • decode(self, syndrome) -> 'np.ndarray'
      • decode_batch(self, syndromes) -> 'np.ndarray'
      • decode_correction(self, syndrome) -> 'np.ndarray'
      • decode_observables(self, syndrome) -> 'np.ndarray'
      • from_detector_error_model(dem: 'Any', max_iter: 'int' = 30, osd_order: 'int' = 0) -> 'ColourCodeDecoder'
      • from_stim_circuit(circuit: 'Any', max_iter: 'int' = 30, osd_order: 'int' = 0) -> 'ColourCodeDecoder'
    • classDecodeResult(correction: 'np.ndarray', syndrome: 'np.ndarray', n_qubits: 'int', n_checks: 'int', weight: 'float | None' = None, logical_flips: 'np.ndarray | None' = None, decode_seconds: 'float | None' = None, backend: 'str' = 'cpu', fallback: 'bool' = False, fallback_reason: 'str' = '', syndrome_valid: 'bool | None' = None, metadata: 'dict' = <factory>) -> None

      Result of decoding a single syndrome, with diagnostics and metadata.

      5 public methods
      • as_uint8(self) -> 'np.ndarray'
      • explain(self) -> 'str'
      • to_dict(self) -> 'dict'
      • to_json(self, indent: 'int' = 2) -> 'str'
      • verify(self, H: 'np.ndarray') -> 'bool'
    • classDecoderName()

      String identifiers for the routable decoders.

    • classDecoderPool(check_to_qubits=None, n_qubits=None, decoder_type: 'str' = 'fast_union_find', n_workers: 'int | None' = None, num_threads: 'int | None' = None)

      Multi-process decoder pool for parallel syndrome decoding.

      2 public methods
      • close(self)
      • decode(self, syndromes) -> 'np.ndarray'
    • classDetectorGraph(check_to_qubits, syndrome, check_positions=None, check_types=None, base_weights=None, n_qubits=None)

      Detector graph used by the GNN and hybrid decoder paths.

      1 public methods
      • update_syndrome(self, syndrome)
    • classFastUnionFindDecoder(check_to_qubits, n_qubits=None, edge_weights=None)

      Union-Find with a zero-allocation hot path, reusable buffers and a C ABI.

      7 public methods
      • batch_decode(self, syndromes)
      • decode(self, syndrome)
      • decode_batch_flat(self, flat_syndromes, num_shots, stride=None)
      • decode_batch_into_flat(self, flat_syndromes, num_shots, corrections, stride=None)
      • decode_correction(self, syndrome)
      • decode_observables(self, syndrome, observables_matrix=None)
      • set_edge_weights(self, edge_weights)
    • classGNNBeliefMatcher(check_to_qubits, n_qubits=None, *, gnn=None, hidden_size: 'int' = 32, n_layers: 'int' = 2, train_samples: 'int' = 0, error_rate: 'float' = 0.05, train_epochs: 'int' = 3, seed=None)

      End-to-end GNN-guided minimum-weight perfect matching decoder.

      2 public methods
      • batch_decode(self, syndromes) -> 'np.ndarray'
      • decode(self, syndrome) -> 'np.ndarray'
    • classGNNPredecoder(node_feat_dim=None, edge_feat_dim=None, hidden_size=16, n_layers=2)

      Graph Neural Network Pre-Decoder for dynamic edge weight prediction.

      6 public methods
      • forward(self, graph)
      • load_weights(self, path)
      • new_standard(hidden_size=16, n_layers=2)
      • predict_with_node_probs(self, graph)
      • save_weights(self, path)
      • train(self, graphs, targets, n_epochs)
    • classGNNTrainer(check_to_qubits, n_qubits, error_rate=0.1)

      End-to-end GNN training pipeline with Blossom teacher model.

      3 public methods
      • generate_dataset(self, n_samples)
      • train(self, gnn, n_samples, n_epochs)
      • train_bp(self, gnn, n_samples, n_epochs, max_bp_iter=20)
    • classHardwareProfile(cuda_rust: 'bool' = False, gpu: 'bool' = False) -> None

      Resolved view of the GPU capability the policy should assume.

      2 public methods
      • as_dict(self) -> 'dict[str, bool]'
      • detect() -> 'HardwareProfile'
    • classHybridCascadeDecoder(check_to_qubits, n_qubits=None, edge_weights=None, max_accept_weight=None, escalation=None, error_rate=None)

      Hybrid cascading decoder: Union-Find pre-filter + Blossom/BP-OSD escalation.

      6 public methods
      • batch_decode(self, syndromes)
      • batch_decode_timed(self, syndromes, max_latency_ms=10.0)
      • decode(self, syndrome)
      • decode_correction(self, syndrome)
      • decode_observables(self, syndrome, observables_matrix=None)
      • decode_timed(self, syndrome, max_latency_ms=10.0)
    • classHybridDecoder(check_to_qubits, n_qubits=None, check_positions=None, check_types=None, base_weights=None, gnn_hidden_size=64, gnn_n_layers=3)

      GNN Pre-Decoder + SparseBlossom hybrid decoder.

      12 public methods
      • batch_decode_hybrid(self, syndromes)
      • batch_decode_standard(self, syndromes)
      • decode(self, syndrome)
      • decode_correction(self, syndrome)
      • decode_heuristic(self, syndrome)
      • decode_hybrid(self, syndrome)
      • decode_observables(self, syndrome, observables_matrix=None)
      • decode_standard(self, syndrome)
      • load_weights(self, path)
      • save_weights(self, path)
      • train(self, n_samples, n_epochs, error_rate=0.1)
      • train_bp(self, n_samples, n_epochs, error_rate=0.1, max_bp_iter=20)
    • classLERBenchmark()

      Logical Error Rate benchmark suite.

      1 public methods
      • run_all(self)
    • classLookupTableDecoder(check_to_qubits, n_qubits=None)

      Exact lookup-table decoder with UnionFind fallback.

      3 public methods
      • batch_decode(self, syndromes)
      • build_table(self, max_entries)
      • decode(self, syndrome)
    • constantMAX_WORKERS
    • classMatching(H: 'Any' = None, weights: 'Any' = None, faults_matrix: 'Any' = None)

      Minimum-weight perfect-matching decoder with a PyMatching-style API.

      10 public methods
      • add_boundary_edge(self, node: 'int', fault_ids: 'Any' = None, weight: 'float' = 1.0, **_: 'Any') -> 'None'
      • add_edge(self, node1: 'int', node2: 'int', fault_ids: 'Any' = None, weight: 'float' = 1.0, **_: 'Any') -> 'None'
      • check_matrix(self) -> 'np.ndarray'
      • decode(self, syndrome: 'Sequence[int]') -> 'np.ndarray'
      • decode_batch(self, shots: 'Any') -> 'np.ndarray'
      • decode_to_edges_array(self, syndrome: 'Sequence[int]') -> 'np.ndarray'
      • edges(self) -> 'list[tuple[int | None, int | None, dict]]'
      • from_check_matrix(H: 'Any', weights: 'Any' = None, faults_matrix: 'Any' = None, **_: 'Any') -> 'Matching'
      • from_detector_error_model(dem: 'Any') -> 'Matching'
      • from_stim_dem(dem: 'Any') -> 'Matching'
    • classNativeAutoDecoder(check_to_qubits, n_qubits=None, distance=5, noise_rate=0.01, batch_size=1, is_qldpc=False)
      3 public methods
      • batch_decode(self, /, syndromes)
      • batch_decode_strided(self, /, syndromes, stride=None, require_alignment=False)
      • decode(self, /, syndrome)
    • classNeuralPredecoder(n_input, n_output, n_hidden1=None, n_hidden2=None)

      Lightweight MLP pre-decoder with Xavier initialization and SGD training.

      5 public methods
      • decode(self, syndrome)
      • decode_correction(self, syndrome)
      • decode_observables(self, syndrome, observables_matrix=None)
      • predict(self, syndrome)
      • train(self, syndromes, corrections, n_epochs, learning_rate=0.01)
    • classOpenCLBatchDecoder(*a, **k)

      OpenCL batch decoder - requires source build with --features opencl.

      1 public methods
      • is_available()
    • classPredecodedDecoder(check_to_qubits, n_qubits=None, backend: 'str' = 'blossom')

      Local-matching predecoder + exact/fast residual decoder.

      2 public methods
      • batch_decode(self, syndromes) -> 'np.ndarray'
      • decode(self, syndrome) -> 'np.ndarray'
    • classRecommendation(decoder: 'str', reason: 'str', family: 'str', priority: 'str', batch_size: 'int', hardware: 'dict[str, bool]', gpu_batched_bp: 'bool' = False, forced: 'bool' = False, graphlike: 'bool | None' = None, distance: 'int | None' = None, n_qubits: 'int | None' = None) -> None

      A decoder choice plus the reasoning and inputs that produced it.

      1 public methods
      • as_dict(self) -> 'dict[str, Any]'
    • classSlidingWindowDecoder(check_to_qubits, n_qubits=None, window_size=10, decay_factor=0.8, check_types=None, p_data=None, p_meas=None)

      Sliding-window decoder with exponential decay weighting or fault-tolerant space-time decoding.

      6 public methods
      • decode(self, syndrome=None)
      • decode_correction(self, syndrome)
      • decode_observables(self, syndrome, observables_matrix=None)
      • detector_history(self)
      • flush(self)
      • update(self, round_syndrome)
    • classSpaceTimeDecoder(check_to_qubits, check_types, n_rounds, p_data, p_meas, n_qubits=None)

      PyO3 wrapper for [`SpaceTimeDecoder`]: fault-tolerant temporal decoding via XOR-of-consecutive-rounds detectors matched on a 3D (space x time) graph, as opposed to [`crate::sliding_window::PySlidingWindowDecoder`] /…

      3 public methods
      • decode_history(self, /)
      • reset(self, /)
      • update(self, /, round_syndrome)
    • classSparseBlossomDecoder(check_to_qubits, n_qubits=None, edge_weights=None)

      Region-growing Sparse Blossom decoder with RadixHeap.

      5 public methods
      • batch_decode(self, syndromes)
      • decode(self, syndrome)
      • decode_correction(self, syndrome)
      • decode_observables(self, syndrome, observables_matrix=None)
      • decode_with_weights(self, syndrome, weights)
    • classStreamingDecoder(check_to_qubits, n_qubits=None, history_size=10, check_types=None, p_data=None, p_meas=None)

      Streaming decoder that accumulates syndromes over multiple rounds.

      7 public methods
      • decode(self, syndrome)
      • decode_correction(self, syndrome)
      • decode_observables(self, syndrome, observables_matrix=None)
      • decode_rounds(self, rounds)
      • detector_history(self)
      • flush(self)
      • update(self, round_syndrome)
    • classStreamingResult(corrections: 'np.ndarray', syndromes: 'np.ndarray', telemetry: 'StreamingTelemetry', logical_flips: 'np.ndarray | None' = None) -> None

      Outcome of a full streaming decode.

      1 public methods
      • is_valid(self, H: 'Any', *, prefer_gpu: 'bool' = True) -> 'bool'
    • classStreamingSession(code_or_checks: 'Any', n_qubits: 'int | None' = None, *, window_size: 'int' = 8, decoder: 'Any | None' = None, logicals: 'Any' = None, prefer_gpu: 'bool | None' = None) -> 'None'

      Incremental multi-round decode with a sliding commit buffer.

      6 public methods
      • committed_corrections(self) -> 'np.ndarray'
      • committed_syndromes(self) -> 'np.ndarray'
      • flush(self) -> 'list[np.ndarray]'
      • push_round(self, syndrome: 'Any') -> 'list[np.ndarray]'
      • reset(self) -> 'None'
      • run(self, syndrome_rounds: 'Any') -> 'StreamingResult'
    • classStreamingTelemetry(rounds: 'int' = 0, windows: 'int' = 0, committed: 'int' = 0, decode_seconds: 'float' = 0.0, per_window_seconds: 'list[float]' = <factory>, gpu: 'dict[str, int]' = <factory>, backend: 'dict[str, Any]' = <factory>, rounds_valid: 'int | None' = None) -> None

      Real, measured counters for a streaming decode run.

      2 public methods
      • as_dict(self) -> 'dict[str, Any]'
      • record_window(self, seconds: 'float', rounds: 'int' = 1) -> 'None'
    • classTwoStageDecoder(check_to_qubits, check_types, n_qubits=None, x_decoder='blossom', z_decoder='blossom')

      C1-03: Correlated two-stage matching for CSS codes.

      4 public methods
      • batch_decode(self, syndromes)
      • decode(self, syndrome)
      • decode_correction(self, syndrome)
      • decode_observables(self, syndrome, observables_matrix=None)
    • classUnionFindDecoder(check_to_qubits, n_qubits=None, edge_weights=None)

      Production-ready Union-Find quantum error correction decoder.

      7 public methods
      • batch_decode(self, syndromes)
      • decode(self, syndrome)
      • decode_batch_flat(self, flat_syndromes, num_shots, stride=None)
      • decode_batch_into_flat(self, flat_syndromes, num_shots, corrections, stride=None)
      • decode_correction(self, syndrome)
      • decode_observables(self, syndrome, observables_matrix=None)
      • set_edge_weights(self, edge_weights)
    • classWorkbench() -> 'None'

      Controller for the QECTOR Workbench (load → benchmark → export).

      17 public methods
      • cancel_job(self, job_id: 'str') -> 'str'
      • detect_backends(self) -> 'dict'
      • environment_snapshot(self) -> 'dict'
      • export_csv(self, artifact: 'dict', path: 'str') -> 'str'
      • export_json(self, artifact: 'dict', path: 'str') -> 'str'
      • export_pdf(self, artifact: 'dict', path: 'str') -> 'str'
      • get_job(self, job_id: 'str') -> 'dict'
      • get_license_info(self) -> 'dict'
      • job_artifact(self, job_id: 'str') -> 'dict | None'
      • list_jobs(self) -> 'list[dict]'
      • load_dem(self, source: 'Any') -> 'dict'
      • load_stim(self, source: 'Any') -> 'dict'
      • run_benchmark(self, spec: 'dict', job: 'Job | None' = None) -> 'dict'
      • set_license_key(self, key: 'str') -> 'None'
      • shutdown(self) -> 'None'
      • submit_job(self, spec: 'dict') -> 'str'
      • wait(self, job_id: 'str', timeout: 'float | None' = None) -> 'dict'
    • modulebackend

      qector_decoder_v3.backend - Workload-Aware AutoDecoder with Self-Auto-Debug & Multi-Tier Fallback.

    • functionbatched_bp_decode(H: 'Any', syndromes: 'Any', *, error_rate: 'float' = 0.05, priors: 'Any' = None, max_iter: 'int' = 30, alpha: 'float' = 1.0, bp_method: 'str' = 'min_sum', prefer_gpu: 'bool' = True, early_stop: 'bool' = True, return_llr: 'bool' = False) -> 'tuple[np.ndarray, np.ndarray] | tuple[np.ndarray, np.ndarray, np.ndarray]'

      Decode a stack of syndromes with batched belief propagation.

    • modulebelief_matching

      qector_decoder_v3.belief_matching - belief-propagation + MWPM (belief-matching).

    • modulebenchmarking

      qector_decoder_v3.benchmarking - reproducible, statistically-honest benchmarks.

    • modulebp_cupy

      qector_decoder_v3.bp_cupy - batched, GPU-resident belief propagation.

    • modulebposd

      qector_decoder_v3.bposd - belief propagation + ordered-statistics decoding.

    • functionchangelog() -> str

      Return a human-readable changelog string for the loaded package.

    • functioncheck_to_edges(check_to_qubits)

      Convert check_to_qubits to edge list.

    • functionclear_decoder_cache()

      Clear the in-memory decoder and decoder pool LRU caches.

    • modulecodes

      qector_decoder_v3.codes - Code-family helpers.

    • modulecolour_code

      C1-04: Colour-code decoder.

    • functioncompute_detector_differences(history)

      Computes XOR detector differences across consecutive syndrome rounds: detector_t = raw_t ^ raw_{t-1}.

    • functioncuda_is_available()
    • functiondecode_mmap(syndrome_path: 'str', output_path: 'str', check_to_qubits, n_qubits: 'int', decoder_type: 'str' = 'cpu_batch', batch_size: 'int' = 65536, n_shots: 'int | None' = None, dtype: '_np.dtype' = dtype('uint8'), verbose: 'bool' = False)

      Out-of-core batch decoding via memory-mapped arrays.

    • functiondecode_with_diagnostics(code: 'Any', syndrome: 'Sequence[int]', kind: 'str' = 'blossom', decoder: 'Any' = None, logicals: 'np.ndarray | None' = None) -> 'DecodeResult'

      Decode one syndrome and return a fully-populated :class:`DecodeResult`.

    • functiondecode_with_gnn(check_to_qubits, n_qubits, syndrome, **kwargs) -> 'np.ndarray'

      One-shot GNN-guided MWPM decode (see :class:`GNNBeliefMatcher`).

    • moduledecoder_cache

      qector_decoder_v3.decoder_cache - LRU-decoder cache and factory functions.

    • moduledecoder_pool

      qector_decoder_v3.decoder_pool - Multi-process decoder pool.

    • moduledem

      qector_decoder_v3.dem - Stim Detector Error Model (DEM) loader.

    • functiondetect_hardware() -> 'HardwareProfile'

      Return the live :class:`HardwareProfile` (alias for ``HardwareProfile.detect``).

    • functionenforce_distance_cap(distance) -> None

      Enforce that *distance* does not exceed the active tier's cap.

    • functionenforce_unlocked() -> None

      Hard-gate decode path when no valid license is active (QECTOR_ENFORCE=1).

    • functionestimate_distance(check_to_qubits, n_qubits=None)

      Python wrapper for estimate_distance.

    • functionflush_usage(customer_id: 'str | None' = None, api_key: 'str | None' = None) -> dict

      Flush accumulated decode shots to the Stripe Billing Meter Events API.

    • functionfrom_circuit(circuit, decoder_type='blossom', **kwargs)

      Build a decoder from a Stim circuit in one call.

    • functiongenerate_biconnected_qldpc_checks(n_qubits, degree)

      Generate a bipolar / biconnected qLDPC Tanner graph parity check matrix.

    • functiongenerate_parity_check_matrix(check_to_qubits, n_qubits=None)

      Return the binary parity-check matrix ``H`` for *check_to_qubits*.

    • functiongenerate_repetition_code_checks(distance)

      Generate a 1D repetition/chain code for testing.

    • functiongenerate_ring_code_checks(distance)

      Generate a simple 1D ring code for testing.

    • functiongenerate_space_time_surface_code_checks(distance, rounds)

      Generate 3D space-time surface code checks across multiple rounds.

    • functiongenerate_surface_code_checks(distance)

      Generate compact periodic (toric) surface-code checks.

    • functiongenerate_toy_code_checks(distance)

      Generate a toy code (not a proper quantum code) with d*d qubits for backward compatibility.

    • functiongenerate_triangular_color_code_4_8_8_checks(distance)

      Generate 4.8.8 triangular color code parity check matrix.

    • functionget_accumulated_shots() -> int

      Get total accumulated decode shots.

    • functionget_backend() -> 'GpuBackend'

      Return the cached :class:`GpuBackend` capability snapshot (built once).

    • functionget_decoder(checks_tuple: 'tuple[tuple[int, ...]]', n_qubits: 'int', decoder_type: 'str' = 'union_find')

      Get a decoder, constructing it once and caching for reuse.

    • functionget_decoder_pool(checks_tuple: 'tuple[tuple[int, ...]]', n_qubits: 'int', decoder_type: 'str' = 'union_find', n_workers: 'int | None' = None)

      Get a multi-process :class:`DecoderPool`, constructed once and cached.

    • functionget_latency_quantiles()

      `get_latency_quantiles() -> tuple[float, float, float] | None`

    • functionget_license_info() -> dict

      Get active license info dictionary.

    • functiongpu_available() -> 'bool'

      Return ``True`` iff CuPy is importable **and** a CUDA device is usable.

    • modulegpu_backend

      qector_decoder_v3.gpu_backend - the CuPy GPU backend abstraction.

    • functionhas_cuda_rust() -> 'bool'

      Return ``True`` iff the Rust ``CUDABatchDecoder`` reports a usable device.

    • functionhas_cupy() -> 'bool'

      Return ``True`` if the ``cupy`` module can be imported.

    • modulelicense
    • functionopencl_is_available()
    • modulepredecoder

      qector_decoder_v3.predecoder - a fast, faithful matching predecoder.

    • modulepymatching

      qector_decoder_v3.pymatching_compat - a PyMatching-compatible ``Matching`` API.

    • modulepymatching_compat

      qector_decoder_v3.pymatching_compat - a PyMatching-compatible ``Matching`` API.

    • moduleqiskit_plugin

      QECTOR Qiskit Plugin - optional integration with the Qiskit ecosystem.

    • functionrecommend(code_family: 'Any' = None, distance: 'int | None' = None, n_qubits: 'int | None' = None, batch_size: 'int' = 1, priority: 'str' = 'balanced', hardware: 'HardwareLike' = None, *, graphlike: 'bool | None' = None) -> 'Recommendation'

      Return a rich :class:`Recommendation` for a decoding problem.

    • functionrecommend_decoder(code_family: 'Any' = None, distance: 'int | None' = None, n_qubits: 'int | None' = None, batch_size: 'int' = 1, priority: 'str' = 'balanced', hardware: 'HardwareLike' = None) -> 'str'

      Return the *name* of the recommended decoder class (see :func:`recommend`).

    • functionrecord_shots(count: int) -> None

      Record decoding shots into telemetry buffer.

    • modulerest_api

      Minimal REST API for QECTOR.

    • moduleresult

      qector_decoder_v3.result - Rich decode results, diagnostics and debug output.

    • modulerouting

      qector_decoder_v3.routing - intelligent decoder router / auto-selection.

    • functionrun_mcp_server()

      Python signature: ```python run_mcp_server() ```

    • functionset_license_key(key: str) -> None

      Set the global QECTOR license key for tier enforcement.

    • functionset_license_key_file(path) -> None

      Load a license key from *path* and activate it.

    • modulesinter_compat

      qector_decoder_v3.sinter_compat - plug QECTOR into Sinter.

    • functionsliding_window_decode(syndrome_rounds: 'Any', code: 'Any' = None, *, check_to_qubits: 'Sequence[Sequence[int]] | None' = None, n_qubits: 'int | None' = None, window_size: 'int' = 8, decoder: 'Any | None' = None, logicals: 'Any' = None, prefer_gpu: 'bool | None' = None) -> 'StreamingResult'

      Decode a whole multi-round syndrome stream window-by-window.

    • functionsparse_blossom_radix_neighbors(decoder, defects, k=8)

      Return the k-nearest candidate edges (sorted by distance) for `defects`.

    • functionstart_metrics_server(addr='127.0.0.1:9090')

      Start the Prometheus metrics HTTP server.

    • modulestim_compat

      Stim compatibility layer - Conversion and wrappers for the Stim ecosystem.

    • modulestreaming

      qector_decoder_v3.streaming - a higher-level Python streaming / multi-round decode *orchestration* layer.

    • modulestripe_integration

      QECTOR Decoder v3 - Full Stripe API & Webhook License Fulfillment Integration

    • functionverify_license_token(token: 'str', customer_email: 'str' = '') -> 'bool'

      Verifies the license token signature completely offline using Ed25519.

    • moduleworkbench

      qector_decoder_v3.workbench - the QECTOR Workbench application controller.

    - - - diff --git a/terms/index.html b/terms/index.html deleted file mode 100644 index 88987d2d..00000000 --- a/terms/index.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Terms of Use · QECTOR - - - - - - - - - - - - - -
    Skip to main content
    Governing law: Québec, Canada · Updated 6 November 2026

    Terms of Use

    These terms cover the website and the free use of QECTOR software. Paid plans are also governed by the Commercial Licence Agreement.

    Last updated 6 November 2026.

    Version française

    1. Who you are dealing with

    QECTOR software and licences are sold by Guillaume Lessard, sole proprietor trading as iD01t Productions, 288 boul. des Ormeaux, Longueuil, Québec, Canada J4L 1J4. Contact: admin@qector.store.

    Prices are in US dollars, exclusive of tax; Stripe adds any sales tax, GST/QST or VAT at checkout and processes every payment. Subscriptions renew automatically until cancelled, and every plan has a 14-day money-back guarantee on the first payment.

    2. Acceptance

    By using this website or QECTOR software you accept these terms. If you do not, do not use them.

    3. Software licences

    • Non-commercial use (personal, academic, educational, public research, charities and government institutions, whatever their funding) is free under the PolyForm Noncommercial License 1.0.0.
    • Commercial use requires a paid plan and is governed by the Commercial Licence Agreement, which prevails over these terms for paid plans.
    • Third-party open-source components remain under their own licences.

    4. Acceptable use

    You will not:

    • bypass licence checks or use a licence token that was not issued to your organisation;
    • attack, overload or probe this website or its licence service, except through coordinated disclosure under our Security policy;
    • use QECTOR software or this website in breach of export control or sanctions law;
    • present results produced with QECTOR as endorsed or certified by us without written permission.

    5. Website content

    Text, graphics and the QECTOR name and logo belong to Guillaume Lessard. You may quote and link to this website with attribution. Validation artefacts and documentation may be republished with attribution. Published papers and datasets follow the licence stated on their DOI record.

    6. No warranty

    The website and the free software are provided "as is", without warranty of any kind, express or implied, including merchantability, fitness for a particular purpose and non-infringement, to the extent the law allows. QECTOR is simulation and research software validated by checking that each correction reproduces its syndrome; it is not a certified fault-tolerance stack.

    7. Limitation of liability

    To the extent the law allows, we are not liable for indirect, consequential or punitive damages, or for lost profits or data, arising from the website or free use of the software. For paid plans, the liability clause of the Commercial Licence Agreement applies. Nothing here limits liability for bodily or moral injury, or for intentional or gross fault.

    8. Termination

    We may suspend or end access to a licence for a material breach after written notice and a 15-day period to cure it. On termination, commercial use must stop and licence tokens must be deleted.

    9. Governing law and language

    These terms are governed by the laws of Québec and the federal laws of Canada that apply there; the courts of the judicial district of Montréal have jurisdiction. Consumers keep the protection of the mandatory laws of their place of residence.

    A French version of these terms is available. Where you have chosen to use the English version, you have expressly wished it to apply.

    10. Changes

    We may update these terms; the date above shows the current version. Changes that affect paid licences follow the notice rules of the Commercial Licence Agreement and never change a period already paid for.

    - - - diff --git a/use-cases/index.html b/use-cases/index.html deleted file mode 100644 index 2c4bebd6..00000000 --- a/use-cases/index.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Use Cases · QECTOR - - - - - - - - - - -
    Skip to main content

    Use Cases

    What each kind of team gets from QECTOR, and which plan fits.

    Quantum hardware teams

    You run memory experiments and need decoders that match your noise, scale to batch sizes and can run inside a locked-down lab network.

    Fits: Pro or Lab

    • Turn Stim circuits or measured detector error models into weighted decoders in one call.
    • Batch-decode on GPU (CUDA or OpenCL) with a Pro or Lab licence.
    • Licences verify offline, so decoding works on air-gapped control machines.
    • Compare matching, Union-Find and BP-OSD on the same detector graph before choosing one.

    qLDPC code researchers

    Your codes are not graph-like, so matching decoders do not apply, and you need to compare BP variants fairly.

    Fits: Free for non-commercial research; Lab for funded commercial work

    • BP-OSD and Relay-BP with configurable OSD order and damping.
    • Built-in code families, including bivariate bicycle codes, as parity-check matrices.
    • Every correction is checked against its syndrome, so a decoder failure is never silent.
    • Sinter integration for threshold and logical-error-rate sweeps.

    Universities and public labs

    You teach or research QEC and need a decoder library students can install in one command, without licence paperwork.

    Fits: Free, or Lab at 40% off

    • Free under PolyForm Noncommercial for academic, educational and public research use, whatever the funding source.
    • Wheels for Python 3.9 to 3.14 on Linux, Windows and macOS: no compiler needed.
    • A free desktop Workbench for teaching without code.
    • 40% off Lab when a paid plan is needed, for example to pass commercial rights to an industry partner.

    Teams working with Claude

    You want an assistant that can build codes, decode syndromes and check results without sending data off the machine.

    Fits: Free plugin; the decoder licence follows your use

    • The QECTOR Claude plugin exposes verified decoding tools to Claude Code and Claude Desktop.
    • The default server refuses network access and validates every message against JSON Schema.
    • Every result carries a status, so Claude never reports an unchecked result as verified.
    - - - diff --git a/workbench/index.html b/workbench/index.html deleted file mode 100644 index 1e6a8c4f..00000000 --- a/workbench/index.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Workbench · QECTOR - - - - - - - - - - -
    Skip to main content
    Windows v1.0.7 · Linux v1.0.7 · backend qector_decoder_v3 1.0.0 · 85 MCP tools

    QECTOR Workbench

    The free desktop application and Model Context Protocol server for QECTOR Decoder v3. Each v1.0.7 release (Windows/Linux) names 19 kinds: 17 concrete decoder configurations plus the AutoDecoder and Auto Router orchestration entries. It also covers 10 quantum code families, a visual circuit builder, and an 85-tool MCP server, with a bundled qector_decoder_v3 1.0.0 backend. Available for Windows x64 and Linux x64. Ships as a portable executable: each one is self-contained, bundling its own Python runtime, scientific stack, and decoder wheel. No system Python, no pip, and no online update checks.

    Windows v1.0.7 (x64) and Linux v1.0.7 (x64) releases are published with direct artifacts and SHA-256 checksums verified against each live release.

    v1.0.7 ×2
    Live releases (Win / Linux)
    85
    MCP tools per Windows release
    19
    Named kinds (17 + 2 routing)
    10
    Quantum Code Families

    Inside the Workbench

    Nine workspaces are documented for the live v1.0.7 (Windows/Linux) releases: Code Explorer · Decoder Lab · Benchmark · Batch & Streaming · Hardware · Diagnostics · Documentation · Lab & Personal Info · Console.

    Code Explorer

    Explore this workspace with the release documentation and inspect results on your own machine. No hardware-specific run data is published here.

    Decoder Lab

    Explore this workspace with the release documentation and inspect results on your own machine. No hardware-specific run data is published here.

    Benchmark

    Explore this workspace with the release documentation and inspect results on your own machine. No hardware-specific run data is published here.

    Batch & Streaming

    Explore this workspace with the release documentation and inspect results on your own machine. No hardware-specific run data is published here.

    Hardware

    Explore this workspace with the release documentation and inspect results on your own machine. No hardware-specific run data is published here.

    Diagnostics

    Explore this workspace with the release documentation and inspect results on your own machine. No hardware-specific run data is published here.

    Downloads

    Windows x64 · v1.0.7

    Portable single executable and release ZIP. No installer required, no admin rights. The app makes no online update checks.

    • Published 2026-09-04 in the verified GitHub release.
    • Download QectorWorkbench-Portable.exe, then launch directly.
    • Headless MCP server: QectorWorkbench-Portable.exe --mcp
    • Runtime data: %LOCALAPPDATA%\QectorWorkbench
    • Exe SHA-256: c53ca5f4fc49152f242a847d0ca11f147164dda426ae29ec170c451871b8ab13

    Linux x64 · v1.0.7

    Published v1.0.7 portable ELF executable and Debian (.deb) package with bundled qector-decoder-v3 1.0.0 backend and 85-tool MCP server.

    • Published 2026-09-04 in the verified GitHub release.
    • Download QectorWorkbench-Portable or the Debian package.
    • Headless MCP server: append --mcp
    • Runtime data: ~/.local/share/QectorWorkbench
    • Portable SHA-256: aa3949d25082165dc3b89115486e1ea4e210cd5254659da32185fe6a8e71a1c8
    • Debian SHA-256: 5221dc9557319f2c55e6048ab30eb4a080d603abc9bab3d2b4cde01ef5b8aa45

    macOS arm64 - not ready yet

    Apple silicon build requires a build on Apple hardware and is not included until that build is produced and signed.

    • Requires Apple hardware build - coming soon
    • No artifact yet - check back for macOS release
    • Windows and Linux v1.0.7 are live with 19 decoders
    Not available yet
    Verify your download: SHA-256 checksums and GPG signature files (.asc) for every file are published in the release notes. Override the runtime data directory with QECTOR_DATA_DIR.

    Integrated Decoders

    All 19 named kinds (17 concrete configurations plus AutoDecoder and Auto Router) are exposed through the Workbench MCP server. No benchmark figures are published on the site: run the included harness to measure your own hardware.

    Windows & Linux backend qector_decoder_v3 1.0.0

    Each v1.0.7 release (Windows/Linux) declares 19 named kinds: 17 concrete configurations plus 2 orchestration entries against its bundled qector_decoder_v3 1.0.0 backend. Consult each release's included manuals for platform-specific coverage.

    Decoder KindCompatibilityDescription
    union_findGraphlikeFast approximate Union-Find decoding; higher LER than exact MWPM.
    fast_union_findGraphlikeOptimized Union-Find hot path; approximate.
    blossomUniversalWeight-optimal exact minimum-weight perfect matching (Edmonds' Blossom).
    sparse_blossomGraphlikeEvent-driven Sparse Blossom with radix-heap region growth (experimental).
    bp_osdUniversal / qLDPCBelief propagation + ordered-statistics decoding for LDPC / qLDPC codes.
    autoGraphlikeSelf-selecting AutoDecoder: picks the best available decoder for the code.
    hybridGraphlikeCombines a fast heuristic pass with exact matching.
    lookup_tableSmall (<20 checks)Precomputed syndrome-to-correction table with O(1) lookup.
    predecodedGraphlikeFast pre-decoding pass that resolves easy/low-weight syndromes.
    auto_routerUniversalPolicy decoder: inspects the code and dispatches the best concrete decoder.
    hybrid_cascadeGraphlikeUnion-Find pre-filter escalating to Blossom/BP-OSD.
    gnn_belief_matchingGraphlikeGNN-predicted per-qubit weights guide edge-weighted matching with fallback.
    belief_matchingUniversalSum-product BP posteriors reweight an exact Blossom matching.
    two_stageGraphlikeDecoupled X/Z sector decoders for CSS / colour codes.
    ambiguity_clusterGraphlikeCluster-growth decoder for high noise or non-graphlike codes.
    colour_codeUniversal / qLDPCBP-OSD hypergraph decoder over undecomposed detector error models.
    space_timeUniversalSpace-time decoder for multi-round decoding (experimental).
    spacetime_mwpmMulti-roundSpace-time MWPM for phenomenological & circuit-level decoding.
    soft_llrSoft-decisionLog-likelihood-ratio-weighted decoding.

    10 Supported Code Families

    The published releases cover 10 code families, including qLDPC and colour codes.

    repetition
    Param: distance (int)

    1D chain parity-check code.

    ring
    Param: distance (int)

    Periodic 1D chain.

    rotated_surface
    Param: distance (int)

    Standard rotated surface code.

    unrotated_surface
    Param: distance (int)

    Square lattice surface code.

    toric
    Param: distance (int)

    Toric code with periodic boundaries.

    heavy_hex
    Param: distance (int)

    Heavy-hex lattice.

    hypergraph_product
    Param: distance (int)

    CSS code from repetition seed.

    bicycle
    Param: circulant size (int)

    qLDPC bicycle code.

    bivariate_bicycle
    Param: preset index (int)

    Bivariate bicycle presets (qLDPC).

    color_code
    Param: triangular size (int)

    Triangular & 2D 4.8.8 colour codes.

    Workbench Components

    Desktop GUI

    CustomTkinter desktop UI for Windows and Linux. Visual circuit builder, syndrome viewer, decoder performance dashboard, and a distance slider covering d3-d63 on supported families.

    MCP Tools

    Native Model Context Protocol server over stdio JSON-RPC 2.0, launched with --mcp and usable headlessly with no display. Connects AI agents directly to decoder execution and diagnostics.

    Self-Contained

    Bundles its own Python runtime, the scientific stack, and the qector_decoder_v3 1.0.0 wheel. No system Python or pip required; the app makes no online update checks.

    Self / Auto-Debug Layer

    Verifies H·c == s on every decode with a full attempt trace, and falls back across decoders automatically when a decoder fails to produce a faithful correction.

    Hardware Dashboard

    Auto-detects CUDA, OpenCL, and CPU backends, and reports OpenCL absence honestly: it names why a backend is unavailable rather than printing a bare N/A.

    Lab & Personal Info

    Deposit profile (author, ORCID, affiliation, DOI, funding, keywords) for generated reports, plus decoder license-key installation with a live tier readout.

    Documentation Export

    Export documentation and evidence in the formats supported by the selected release, with optional .zenodo.json and CITATION.cff deposit sidecars.

    Bundled Manuals & EULA

    Each release ships an API Reference, MCP Integration Guide, Quick Start Guide, a per-OS User Manual, a machine-readable LLM manual, and EULA.txt, with SHA-256 checksums for every file.

    Decoder Sandbox

    Below is an interactive sandbox replicating the basic topological planar code matching module inside QECTOR Workbench. Click to inject errors and inspect Blossom correction paths in real time.

    Interactive QEC Simulator

    Planar stabilizer code (d=3). Click edges to toggle physical errors.

    LEFT BOUNDARYRIGHT BOUNDARYSSSSSSSSS
    Documentation & Reference

    QECTOR Workbench documentation is published alongside each app release. The Windows v1.0.7 and Linux v1.0.7 builds ship per-OS manuals and SHA-256 checksums; use the release-specific manuals for your platform.

    - - - From 350140c05b021108a9226b110f5711c5309b62f5 Mon Sep 17 00:00:00 2001 From: Guillaume Lessard Date: Wed, 11 Nov 2026 03:30:04 -0500 Subject: [PATCH 3/5] Site: fix invisible blog articles and audit findings; accessibility, performance and tooling Fixes (in the build deployed to gh-pages on 2026-11-11) - Blog articles were invisible to every visitor with JavaScript: the reveal-on-scroll code hid each block until it was 10% on screen and never saw blocks added after its first scan. Content is now visible by default and only hidden while the observer is actively waiting for it. - Contact form: the mail draft used "+" for spaces. Footer: the "latest version" lookup never matched PyPI's feed and now reads its JSON API, once per session. - Pricing cards showed a tick for excluded features. Blog pages cancelled every in-page link, including the skip link. - Simulator: two crossing error chains were reported as a logical failure; the result is now the parity of the residual on the boundary. - Fonts are bundled (no Google Fonts request, no inline handler for the Content-Security-Policy to block). The unused Stripe script is gone. - Documentation now matches the generated API index (signatures, method names, defaults); versions, Python range and install pin come from lib/releases.ts; licence and tax wording corrected; blog figures cite the decoder changelog; discovery files (.well-known) corrected. - Removed the unused UI kit (52 files) and its dependencies, and the animation library: 12 runtime dependencies instead of 47. No high or moderate advisories remain in production dependencies. - The build type-checks first and fails if prerendering cannot run. Accessibility and performance - Scrollable code and table blocks are keyboard-reachable; link names contain their visible text; the open mobile menu holds focus; a fresh page load no longer moves focus past the navigation; print styles. - The simulator and the booking widget load on demand; images are cached. Tooling - `npm run deploy` publishes dist/ to the gh-pages branch and keeps the previous build's hashed files for one more deploy. - `npm run check` runs static checks, a browser check of every route at two screen sizes behind the real security headers, and an axe accessibility audit. Not yet verified end to end - Static generation with React (scripts/prerender.mjs, src/entry-server.tsx) and hydration in src/main.tsx replace the Playwright capture and the render-twice-and-swap startup. This part was written after the deployed build and its full check run is still pending. Co-Authored-By: Claude Fable 5.2 --- source/README.md | 55 +- source/components.json | 22 - source/eslint.config.js | 2 +- source/index.html | 7 - source/package-lock.json | 2113 ++--------------- source/package.json | 62 +- source/postcss.config.js | 2 +- .../.well-known/agent-skills/index.json | 2 +- .../qector-commercial-licensing.md | 4 +- .../agent-skills/qector-install.md | 2 +- source/public/.well-known/api-catalog.json | 2 +- source/public/.well-known/mcp.json | 2 +- source/public/.well-known/skills/index.json | 2 +- source/public/_headers | 24 +- source/public/blog/02_blossom_mwpm_exact.md | 2 +- source/public/blog/05_bp_osd_qldpc.md | 2 +- source/public/blog/07_space_time_decoder.md | 2 +- source/public/blog/08_autodecoder_cascade.md | 2 + source/public/blog/09_gpu_acceleration.md | 2 + .../public/blog/10_benchmarks_architecture.md | 2 +- source/public/blog/15_logical_error_rates.md | 2 +- source/public/blog/16_decoder_selection.md | 2 +- source/public/blog/19_release_licensing.md | 4 +- source/public/docs/reference.md | 6 +- source/public/sitemap.xml | 64 - source/scripts/deploy-pages.mjs | 123 + source/scripts/og-images.mjs | 4 +- source/scripts/prerender-full.mjs | 153 -- source/scripts/prerender.mjs | 120 + source/src/App.tsx | 29 +- source/src/components/CalendlyWidget.tsx | 44 +- source/src/components/ErrorBoundary.tsx | 14 + source/src/components/Footer.tsx | 11 +- source/src/components/Layout.tsx | 99 +- source/src/components/MarkdownArticle.tsx | 121 + source/src/components/Navigation.tsx | 28 +- source/src/components/NeuralReveal.tsx | 2 +- source/src/components/PricingTierCard.tsx | 4 +- source/src/components/QECSimulator.tsx | 71 +- source/src/components/TerminalEmulator.tsx | 32 +- source/src/components/TrustSignal.tsx | 23 +- source/src/components/ui/accordion.tsx | 64 - source/src/components/ui/alert-dialog.tsx | 155 -- source/src/components/ui/alert.tsx | 66 - source/src/components/ui/aspect-ratio.tsx | 11 - source/src/components/ui/avatar.tsx | 51 - source/src/components/ui/badge.tsx | 46 - source/src/components/ui/breadcrumb.tsx | 109 - source/src/components/ui/button-group.tsx | 83 - source/src/components/ui/button.tsx | 62 - source/src/components/ui/calendar.tsx | 220 -- source/src/components/ui/card.tsx | 92 - source/src/components/ui/carousel.tsx | 243 -- source/src/components/ui/checkbox.tsx | 32 - source/src/components/ui/collapsible.tsx | 31 - source/src/components/ui/command.tsx | 182 -- source/src/components/ui/context-menu.tsx | 252 -- source/src/components/ui/dialog.tsx | 141 -- source/src/components/ui/drawer.tsx | 135 -- source/src/components/ui/dropdown-menu.tsx | 255 -- source/src/components/ui/empty.tsx | 104 - source/src/components/ui/field.tsx | 246 -- source/src/components/ui/form.tsx | 167 -- source/src/components/ui/hover-card.tsx | 44 - source/src/components/ui/input-group.tsx | 170 -- source/src/components/ui/input-otp.tsx | 75 - source/src/components/ui/input.tsx | 21 - source/src/components/ui/item.tsx | 193 -- source/src/components/ui/kbd.tsx | 28 - source/src/components/ui/label.tsx | 24 - source/src/components/ui/menubar.tsx | 274 --- source/src/components/ui/navigation-menu.tsx | 168 -- source/src/components/ui/pagination.tsx | 127 - source/src/components/ui/popover.tsx | 48 - source/src/components/ui/progress.tsx | 29 - source/src/components/ui/radio-group.tsx | 45 - source/src/components/ui/resizable.tsx | 54 - source/src/components/ui/scroll-area.tsx | 58 - source/src/components/ui/select.tsx | 188 -- source/src/components/ui/separator.tsx | 28 - source/src/components/ui/sheet.tsx | 137 -- source/src/components/ui/sidebar.tsx | 726 ------ source/src/components/ui/skeleton.tsx | 13 - source/src/components/ui/slider.tsx | 63 - source/src/components/ui/sonner.tsx | 38 - source/src/components/ui/spinner.tsx | 16 - source/src/components/ui/switch.tsx | 31 - source/src/components/ui/table.tsx | 114 - source/src/components/ui/tabs.tsx | 66 - source/src/components/ui/textarea.tsx | 18 - source/src/components/ui/toggle-group.tsx | 81 - source/src/components/ui/toggle.tsx | 45 - source/src/components/ui/tooltip.tsx | 61 - source/src/content/licenseAgreement.ts | 2 +- source/src/content/terms.ts | 2 +- source/src/entry-server.tsx | 55 + source/src/hooks/use-mobile.ts | 22 - source/src/hooks/usePyPIVersion.ts | 11 +- source/src/hooks/useScrollReveal.ts | 75 + source/src/index.css | 45 +- source/src/lib/config.ts | 4 +- source/src/lib/embeddedPost.ts | 42 + source/src/lib/faqData.ts | 10 +- source/src/lib/prerenderData.ts | 75 +- source/src/lib/pypiVersion.ts | 47 +- source/src/lib/releases.ts | 19 + source/src/lib/seo.tsx | 2 +- source/src/lib/utils.ts | 6 - source/src/main.tsx | 69 +- source/src/pages/About.tsx | 32 +- source/src/pages/Blog.tsx | 2 +- source/src/pages/BlogPost.tsx | 199 +- source/src/pages/Changelog.tsx | 4 +- source/src/pages/ClaudePlugin.tsx | 18 +- source/src/pages/Commercial.tsx | 2 +- source/src/pages/Compare.tsx | 2 +- source/src/pages/Contact.tsx | 33 +- source/src/pages/Decoder.tsx | 42 +- source/src/pages/DecoderFR.tsx | 21 +- source/src/pages/Docs.tsx | 34 +- source/src/pages/Evidence.tsx | 44 +- source/src/pages/Founder.tsx | 20 +- source/src/pages/GettingStarted.tsx | 5 +- source/src/pages/Home.tsx | 83 +- source/src/pages/HomeFR.tsx | 7 +- source/src/pages/Installer.tsx | 18 +- source/src/pages/License.tsx | 9 +- source/src/pages/LicenseFR.tsx | 7 +- source/src/pages/Manual.tsx | 208 +- source/src/pages/McpServer.tsx | 26 +- source/src/pages/Pricing.tsx | 42 +- source/src/pages/PricingFR.tsx | 38 +- source/src/pages/Security.tsx | 31 +- source/src/pages/Success.tsx | 2 +- source/src/pages/TechnicalReference.tsx | 782 ++++-- source/src/pages/UseCases.tsx | 3 +- source/src/pages/Workbench.tsx | 75 +- source/tailwind.config.js | 14 +- source/tests/a11y-check.mjs | 88 + source/tests/browser-check.mjs | 190 ++ source/tests/static-check.mjs | 134 ++ source/vite.config.ts | 197 +- 142 files changed, 2759 insertions(+), 9138 deletions(-) delete mode 100644 source/components.json delete mode 100644 source/public/sitemap.xml create mode 100644 source/scripts/deploy-pages.mjs delete mode 100644 source/scripts/prerender-full.mjs create mode 100644 source/scripts/prerender.mjs create mode 100644 source/src/components/MarkdownArticle.tsx delete mode 100644 source/src/components/ui/accordion.tsx delete mode 100644 source/src/components/ui/alert-dialog.tsx delete mode 100644 source/src/components/ui/alert.tsx delete mode 100644 source/src/components/ui/aspect-ratio.tsx delete mode 100644 source/src/components/ui/avatar.tsx delete mode 100644 source/src/components/ui/badge.tsx delete mode 100644 source/src/components/ui/breadcrumb.tsx delete mode 100644 source/src/components/ui/button-group.tsx delete mode 100644 source/src/components/ui/button.tsx delete mode 100644 source/src/components/ui/calendar.tsx delete mode 100644 source/src/components/ui/card.tsx delete mode 100644 source/src/components/ui/carousel.tsx delete mode 100644 source/src/components/ui/checkbox.tsx delete mode 100644 source/src/components/ui/collapsible.tsx delete mode 100644 source/src/components/ui/command.tsx delete mode 100644 source/src/components/ui/context-menu.tsx delete mode 100644 source/src/components/ui/dialog.tsx delete mode 100644 source/src/components/ui/drawer.tsx delete mode 100644 source/src/components/ui/dropdown-menu.tsx delete mode 100644 source/src/components/ui/empty.tsx delete mode 100644 source/src/components/ui/field.tsx delete mode 100644 source/src/components/ui/form.tsx delete mode 100644 source/src/components/ui/hover-card.tsx delete mode 100644 source/src/components/ui/input-group.tsx delete mode 100644 source/src/components/ui/input-otp.tsx delete mode 100644 source/src/components/ui/input.tsx delete mode 100644 source/src/components/ui/item.tsx delete mode 100644 source/src/components/ui/kbd.tsx delete mode 100644 source/src/components/ui/label.tsx delete mode 100644 source/src/components/ui/menubar.tsx delete mode 100644 source/src/components/ui/navigation-menu.tsx delete mode 100644 source/src/components/ui/pagination.tsx delete mode 100644 source/src/components/ui/popover.tsx delete mode 100644 source/src/components/ui/progress.tsx delete mode 100644 source/src/components/ui/radio-group.tsx delete mode 100644 source/src/components/ui/resizable.tsx delete mode 100644 source/src/components/ui/scroll-area.tsx delete mode 100644 source/src/components/ui/select.tsx delete mode 100644 source/src/components/ui/separator.tsx delete mode 100644 source/src/components/ui/sheet.tsx delete mode 100644 source/src/components/ui/sidebar.tsx delete mode 100644 source/src/components/ui/skeleton.tsx delete mode 100644 source/src/components/ui/slider.tsx delete mode 100644 source/src/components/ui/sonner.tsx delete mode 100644 source/src/components/ui/spinner.tsx delete mode 100644 source/src/components/ui/switch.tsx delete mode 100644 source/src/components/ui/table.tsx delete mode 100644 source/src/components/ui/tabs.tsx delete mode 100644 source/src/components/ui/textarea.tsx delete mode 100644 source/src/components/ui/toggle-group.tsx delete mode 100644 source/src/components/ui/toggle.tsx delete mode 100644 source/src/components/ui/tooltip.tsx create mode 100644 source/src/entry-server.tsx delete mode 100644 source/src/hooks/use-mobile.ts create mode 100644 source/src/hooks/useScrollReveal.ts create mode 100644 source/src/lib/embeddedPost.ts delete mode 100644 source/src/lib/utils.ts create mode 100644 source/tests/a11y-check.mjs create mode 100644 source/tests/browser-check.mjs create mode 100644 source/tests/static-check.mjs diff --git a/source/README.md b/source/README.md index 8384cdb6..70f9e030 100644 --- a/source/README.md +++ b/source/README.md @@ -1,8 +1,8 @@ # QECTOR - qectorlab.github.io -**Useful static bridge for QECTOR Decoder v3 (high-performance library) and QECTOR Workbench (free GUI v1.0.2, see qector.store) under the qectorlab brand.** +**Source of qector.store: QECTOR Decoder v3 (Python library, Rust core) and the free QECTOR Workbench GUI, under the qectorlab brand.** -**Current stable release: QECTOR Decoder v3 v1.0.0 — first stable release. API stability tiers, Relay-BP, CS-OSD, Sinter/qiskit entry points, qector CLI + qector-doctor, and the official reference manual (DOI 10.5281/zenodo.21941046).** +**Release numbers are not repeated here: `src/lib/releases.ts` is the single source for the decoder, Workbench and plugin versions shown on the site.** **Primary site: [qector.store](https://qector.store) for full details, licensing, commercial evaluation.** @@ -11,11 +11,11 @@ ## Quick Start ```bash pip install qector-decoder-v3 -# Free Workbench v1.0.2: https://qector.store/workbench/ +# Free Workbench: https://qector.store/workbench/ ``` ## Key Claims + Evidence (all on GitHub) -- Stable release v1.0.0: fifteen documented backend families; API stability tiers; Relay-BP, CS-OSD, LLR damping, ColourCodeDecoder, TwoStageDecoder, and AmbiguityClusterDecoder +- Stable 1.0 line: fifteen documented backend families; API stability tiers; Relay-BP, CS-OSD, LLR damping, ColourCodeDecoder, TwoStageDecoder, and AmbiguityClusterDecoder - No universal benchmark figures are published on the site, because results depend on specific hardware, drivers, and workloads - The package ships the benchmark harness (`qector bench` prints one honest, machine-conditional rate line) and `qector-doctor` (15-point environment diagnostic) so results can be reproduced on your own machines - Validation reports, SHA-256 sealed artifact manifests, and claim-boundary documentation are published on GitHub and at https://qector.store/evidence @@ -45,31 +45,45 @@ Primary source of truth: decoder repo README. This bridge has quick-start, claim |---|---| | Framework | React 19 + TypeScript, built with Vite 7 | | Routing | `react-router` v7, route-based code splitting per page | -| Styling | Tailwind CSS 3, `tailwindcss-animate` | -| UI primitives | shadcn/ui on top of Radix UI | -| Motion | GSAP + ScrollTrigger for section reveals | -| 3D / visuals | `three`, `@react-three/fiber`, `@react-three/drei` (where used) | -| Charts | Inline SVG for data visuals; `recharts` available | -| SEO | Custom `SEO` / `JsonLd` helpers in `src/lib/seo.tsx` (per-page title, description, structured data) | +| Styling | Tailwind CSS 3, `tailwindcss-animate`, `@tailwindcss/typography` | +| Icons | `lucide-react` | +| Fonts | Inter and JetBrains Mono, bundled (`@fontsource-variable/*`); no third-party font host | +| Motion | `useScrollReveal` (IntersectionObserver + Web Animations) and CSS; no animation library | +| Charts | Inline SVG | +| Blog | Markdown rendered with `react-markdown`, GFM, KaTeX | +| Static generation | Every route is rendered to HTML by React at build time (`react-dom/static`) and hydrated in the browser | +| SEO | Custom `SEO` / `JsonLd` helpers in `src/lib/seo.tsx`; per-route metadata in `src/lib/prerenderData.ts` | ## Getting started ```bash -npm install -npm run dev # local dev server with HMR -npm run build # type-check (tsc -b) + production build to dist/ +npm ci +npm run dev # local dev server with HMR +npm run typecheck # tsc -b +npm run lint # eslint +npm run build # tsc -b, production bundle, then every route rendered to static HTML in dist/ npm run preview # preview the production build locally -npm run lint # eslint +npm run check # static, browser and accessibility checks of dist/ (needs `npx playwright install chromium` once) +npm run deploy # commit dist/ to the gh-pages branch (add `-- --push` to publish) ``` -Node 18+ is recommended. The production build type-checks the whole project before bundling - a failing `tsc -b` will fail the build. +Node 22 is what the audit workflow uses. The build type-checks first: a failing `tsc -b` fails the build. It needs no browser: Playwright is only used by the checks (`npm run check`) and by `npm run og`. + +### How a page is built and loaded + +1. `vite build` bundles the site and writes one HTML file per route (`dist//index.html`, plus `404.html`). Each has the route's `` (title, description, canonical, Open Graph, JSON-LD, hreflang, and the `` tags for the route's own chunk and stylesheet) and a short summary in `#root`. Routes come from `src/App.tsx` and the blog posts; a route without an entry in `src/lib/prerenderData.ts` is a build error. `npm run build:spa` stops here. +2. `scripts/prerender.mjs` bundles `src/entry-server.tsx` for Node (a Vite SSR build) and renders every route with React itself (`prerender` from `react-dom/static`, which waits for lazy routes) at the URL the browser will have (`/pricing/`). The result replaces the summary in `#root`, marked with that URL (`data-prerendered`). It prints how many routes it rendered, and fails if a page is left with a loading state, hidden content or a script. +3. In the browser, `src/main.tsx` attaches to that HTML with `hydrateRoot`. Nothing is rendered twice, and a lazy route's static HTML stays on screen while its chunk loads. + +Three pages differ. Blog posts carry their Markdown as a JSON data block (` diff --git a/source/package-lock.json b/source/package-lock.json index 9c23136b..ed4ab37a 100644 --- a/source/package-lock.json +++ b/source/package-lock.json @@ -8,59 +8,18 @@ "name": "qector-store", "version": "1.0.0", "dependencies": { - "@hookform/resolvers": "^5.2.2", - "@radix-ui/react-accordion": "^1.2.12", - "@radix-ui/react-alert-dialog": "^1.1.15", - "@radix-ui/react-aspect-ratio": "^1.1.8", - "@radix-ui/react-avatar": "^1.1.11", - "@radix-ui/react-checkbox": "^1.3.3", - "@radix-ui/react-collapsible": "^1.1.12", - "@radix-ui/react-context-menu": "^2.2.16", - "@radix-ui/react-dialog": "^1.1.15", - "@radix-ui/react-dropdown-menu": "^2.1.16", - "@radix-ui/react-hover-card": "^1.1.15", - "@radix-ui/react-label": "^2.1.8", - "@radix-ui/react-menubar": "^1.1.16", - "@radix-ui/react-navigation-menu": "^1.2.14", - "@radix-ui/react-popover": "^1.1.15", - "@radix-ui/react-progress": "^1.1.8", - "@radix-ui/react-radio-group": "^1.3.8", - "@radix-ui/react-scroll-area": "^1.2.10", - "@radix-ui/react-select": "^2.2.6", - "@radix-ui/react-separator": "^1.1.8", - "@radix-ui/react-slider": "^1.3.6", - "@radix-ui/react-slot": "^1.2.4", - "@radix-ui/react-switch": "^1.2.6", - "@radix-ui/react-tabs": "^1.1.13", - "@radix-ui/react-toggle": "^1.1.10", - "@radix-ui/react-toggle-group": "^1.1.11", - "@radix-ui/react-tooltip": "^1.2.8", - "class-variance-authority": "^0.7.1", - "clsx": "^2.1.1", - "cmdk": "^1.1.1", - "date-fns": "^4.1.0", - "embla-carousel-react": "^8.6.0", - "gsap": "^3.15.0", - "input-otp": "^1.4.2", + "@fontsource-variable/inter": "^5.3.0", + "@fontsource-variable/jetbrains-mono": "^5.3.0", "lucide-react": "^0.562.0", - "next-themes": "^0.4.6", "react": "^19.2.0", - "react-day-picker": "^9.13.0", "react-dom": "^19.2.0", - "react-hook-form": "^7.70.0", "react-markdown": "^10.1.0", - "react-resizable-panels": "^4.2.2", "react-router": "^7.6.1", "react-router-dom": "^7.6.1", "rehype-katex": "^7.0.1", "rehype-raw": "^7.0.0", - "rehype-slug": "^6.0.0", "remark-gfm": "^4.0.1", - "remark-math": "^6.0.0", - "sonner": "^2.0.7", - "tailwind-merge": "^3.4.0", - "vaul": "^1.1.2", - "zod": "^4.3.5" + "remark-math": "^6.0.0" }, "devDependencies": { "@eslint/js": "^9.39.1", @@ -70,15 +29,16 @@ "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^5.1.1", "autoprefixer": "^10.4.23", + "axe-core": "^4.14.0", "eslint": "^9.39.1", "eslint-plugin-react-hooks": "^7.0.1", "eslint-plugin-react-refresh": "^0.4.24", "globals": "^16.5.0", "kimi-plugin-inspect-react": "^1.0.3", + "playwright": "^1.65.0", "postcss": "^8.5.6", "tailwindcss": "^3.4.19", "tailwindcss-animate": "^1.0.7", - "tw-animate-css": "^1.4.0", "typescript": "~5.9.3", "typescript-eslint": "^8.46.4", "vite": "^7.2.4" @@ -1860,12 +1820,6 @@ "node": ">=6.9.0" } }, - "node_modules/@date-fns/tz": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@date-fns/tz/-/tz-1.5.0.tgz", - "integrity": "sha512-lwYN/vDPeNRULcepoE/LO2Pgx+7/RV+S9ARfbc9lr2DtGkOD7pAiruHvbR1RX3Qyf6ja47EWJDMsNK5vK08DJg==", - "license": "MIT" - }, "node_modules/@esbuild/aix-ppc64": { "version": "0.28.1", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz", @@ -2465,54 +2419,22 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@floating-ui/core": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.5.tgz", - "integrity": "sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==", - "license": "MIT", - "dependencies": { - "@floating-ui/utils": "^0.2.11" - } - }, - "node_modules/@floating-ui/dom": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.6.tgz", - "integrity": "sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==", - "license": "MIT", - "dependencies": { - "@floating-ui/core": "^1.7.5", - "@floating-ui/utils": "^0.2.11" - } - }, - "node_modules/@floating-ui/react-dom": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.8.tgz", - "integrity": "sha512-cC52bHwM/n/CxS87FH0yWdngEZrjdtLW/qVruo68qg+prK7ZQ4YGdut2GyDVpoGeAYe/h899rVeOVm6Oi40k2A==", - "license": "MIT", - "dependencies": { - "@floating-ui/dom": "^1.7.6" - }, - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" + "node_modules/@fontsource-variable/inter": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@fontsource-variable/inter/-/inter-5.3.0.tgz", + "integrity": "sha512-OupL48va4JNofb97w6NYeF9S7W/kHNKM0Er8Dem5nqi4jeOLrVJDoE8tZEpnMJmtkvNbB1EIPPwHcdkF6b1oUA==", + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" } }, - "node_modules/@floating-ui/utils": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.11.tgz", - "integrity": "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==", - "license": "MIT" - }, - "node_modules/@hookform/resolvers": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-5.4.0.tgz", - "integrity": "sha512-EIsqr/t/qbinPIhGjMdtvutIN1Kk4uwbROE9/UQ93CAVGR7GkA7Y92+fX80OzXi/OB67jVFYwKGO1WzkxmkFZw==", - "license": "MIT", - "dependencies": { - "@standard-schema/utils": "^0.3.0" - }, - "peerDependencies": { - "react-hook-form": "^7.55.0" + "node_modules/@fontsource-variable/jetbrains-mono": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@fontsource-variable/jetbrains-mono/-/jetbrains-mono-5.3.0.tgz", + "integrity": "sha512-F32xpS2NsGYoQi2ADSkKTgpJj7ozajsGgDJ8woTnqjmIB+dxDIqImjl4pXZVEExu8UFZ2ndhmX18EBS/hdz3Lw==", + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" } }, "node_modules/@humanfs/core": { @@ -2666,1307 +2588,8 @@ "fastq": "^1.6.0" }, "engines": { - "node": ">= 8" - } - }, - "node_modules/@radix-ui/number": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.2.tgz", - "integrity": "sha512-ceTwaxc4I5IOi97DgCotl3pqiyRGvffcc0oOsE2dQYaJOFIDsDt4VWG6xEbg1QePv9QWausCEIppud/tJ1wNig==", - "license": "MIT" - }, - "node_modules/@radix-ui/primitive": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.5.tgz", - "integrity": "sha512-d86WIWFYNtGA0H/d8exstrTRTp7eWJYlYJbtNofxr/3ljupZYn6EFDG/Qgu/0Kc8v7yMUxySagqJsL1+PdYjWg==", - "license": "MIT" - }, - "node_modules/@radix-ui/react-accordion": { - "version": "1.2.16", - "resolved": "https://registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.2.16.tgz", - "integrity": "sha512-BpZJNmetujnGgUI6OX0jEhEmlA46WPqgub8Rv09Kyquwd0cc1ndMKpiPYCjmBU6KSSRPAMtgLpEoZSG/tdNIWQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-collapsible": "1.1.16", - "@radix-ui/react-collection": "1.1.12", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-direction": "1.1.2", - "@radix-ui/react-id": "1.1.2", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-use-controllable-state": "1.2.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-alert-dialog": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.1.19.tgz", - "integrity": "sha512-FA7n1f6D/DwGE0+AWxiY5LacNbbExQuEgMubeG06idEaH+mSLuf9dp/qBNqOnvbTQ+4gZ2ue1RATF1Ub91Mg5g==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-dialog": "1.1.19", - "@radix-ui/react-primitive": "2.1.7" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-arrow": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.11.tgz", - "integrity": "sha512-Kdil9BB1rIFC/khmf4hC35bn8701AJcizTU7G7cUbEbk5XqqbjDuHW60uUfKqO5WojjZcbAW51Q7P0hRmMLw8A==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.1.7" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-aspect-ratio": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/@radix-ui/react-aspect-ratio/-/react-aspect-ratio-1.1.11.tgz", - "integrity": "sha512-IUAhIVpBUvP5NNICjlaB1OFmtRLGqQqTF3ZOSGPoq3XeLXRFtHiWTRxSVEULgOd9GQR2c7tsYqDnhUennapZnw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.1.7" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-avatar": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-avatar/-/react-avatar-1.2.2.tgz", - "integrity": "sha512-sST0qh8GzOB7besQ3tMLWLyngnRuSk0gc/Hm+667KYKQFCt6Y6ZXv25WlqM7dIDK54ULCh5+CHmk4LIolzfz+A==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-use-callback-ref": "1.1.2", - "@radix-ui/react-use-is-hydrated": "0.1.1", - "@radix-ui/react-use-layout-effect": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-checkbox": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.3.7.tgz", - "integrity": "sha512-JroKHfQBfh+fDuzpPsBC+pESkhuq8ql4hljTguz8MWnS35cISr3d/Jhl9kYrB44FlDtxCArYdDvTx+BSsJ64rQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-presence": "1.1.7", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-use-controllable-state": "1.2.3", - "@radix-ui/react-use-previous": "1.1.2", - "@radix-ui/react-use-size": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-collapsible": { - "version": "1.1.16", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.16.tgz", - "integrity": "sha512-opfXRe6nnzyGmCDPx+l1Aqo/RbqWtQal2FnsBqF9hhePp6j0LsRoBaRxcMOlTv+uYTJVtWYZKg9t9wTe+BA/ZA==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-id": "1.1.2", - "@radix-ui/react-presence": "1.1.7", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-use-controllable-state": "1.2.3", - "@radix-ui/react-use-layout-effect": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-collection": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.12.tgz", - "integrity": "sha512-nb67INpE0IahJKN7EYPp9m9YGwYeKlnzxT3MwXVkgCskaSJia97kG4T0ywpjNUSSnoJk/uvk12V8vbrEHEj+/Q==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-slot": "1.3.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-compose-refs": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.3.tgz", - "integrity": "sha512-rYOP8OMnuuPMQF1uhPVlGNcCDlkokKqGFE3JcxFViIkAXP7EvFWUliJAstrapypaBLJNHbZL6jGhbVDGTwmVhA==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-context": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.2.0.tgz", - "integrity": "sha512-fOE+JtN9rygNZkCnHRBEP0TAvLldlhyOxMsbwFvTP4nAs+nBmfnna+o/Zski2wkmY1YMrFC0aSzsHoLY47iLrg==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-context-menu": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context-menu/-/react-context-menu-2.3.3.tgz", - "integrity": "sha512-PS+gKE0z2prJ74Y0sM+brAGK4mYOHIR7TlcV5EJgUQ6E0xMvyswkK2X4yRqyganrzsRL+WCSKAPu0NQITICRWg==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-menu": "2.1.20", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-use-controllable-state": "1.2.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-dialog": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.19.tgz", - "integrity": "sha512-+HhbN2+YtkRgVirjZ2afMeutQRuGOrdkWR5+EFC58SJojGmtyNQwYzgi6tHBpOxvFHefMtPeHdgtjz0BOGxFQg==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-dismissable-layer": "1.1.15", - "@radix-ui/react-focus-guards": "1.1.4", - "@radix-ui/react-focus-scope": "1.1.12", - "@radix-ui/react-id": "1.1.2", - "@radix-ui/react-portal": "1.1.13", - "@radix-ui/react-presence": "1.1.7", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-slot": "1.3.0", - "@radix-ui/react-use-controllable-state": "1.2.3", - "aria-hidden": "^1.2.4", - "react-remove-scroll": "^2.7.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-direction": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.2.tgz", - "integrity": "sha512-C3vFhbyi4SW3PmbAi6Awpu4OzJtd0MxGurvSsYtr7p7nM8RNB3VAF3CUmnp2j50knpkrRcB7+ycVXzgLgF6yNA==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-dismissable-layer": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.15.tgz", - "integrity": "sha512-b0XaRlzn2QKuo10XyNgi2DAJDf5XC9d1nD3FJcuvCjbR7+4Ad28zmZsLsqx+hvDEzMnRuZaZxZm9gYObV6RmRA==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-use-callback-ref": "1.1.2", - "@radix-ui/react-use-effect-event": "0.0.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-dropdown-menu": { - "version": "2.1.20", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.20.tgz", - "integrity": "sha512-slfm+rRaZRuQBvHq60lXvSVUPhid0IPtjSZzIuUlWZMUs01iYZNlGS3mJgRD3ChLQVBAYlKiL/tFyWGX+dz8Xw==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-id": "1.1.2", - "@radix-ui/react-menu": "2.1.20", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-use-controllable-state": "1.2.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-focus-guards": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.4.tgz", - "integrity": "sha512-cot/aB/mOm0IYVYTTmQcEEK1M48lZWi8FlYe5nDPQQ8NYZUlXEFgncJ9p2Kzer3RKSrY7cTTpEMLZKNo9QoP5Q==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-focus-scope": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.12.tgz", - "integrity": "sha512-jjk/lqTeNL0azUx5ZYzVrl4NgaDIrdzTNE4mABV9yBFI7FQqN7pIgzV1bTleUezP2QiTGA1BFTqY8MegDgWX9A==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-use-callback-ref": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-hover-card": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/@radix-ui/react-hover-card/-/react-hover-card-1.1.19.tgz", - "integrity": "sha512-2KTgMLQtKvicznQgbindEI2RZ3QbDIwU5gabjUPwFJsormjGDz+rUvO4NANmYwzEEpTcTONUt33vBHIfTIVSfw==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-dismissable-layer": "1.1.15", - "@radix-ui/react-popper": "1.3.3", - "@radix-ui/react-portal": "1.1.13", - "@radix-ui/react-presence": "1.1.7", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-use-controllable-state": "1.2.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-id": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.2.tgz", - "integrity": "sha512-orBC88futVpqCmhX1p4cvquNHsELQ+w+vBJnuj3ftETI5bJb0bZn3Tqu3SWN2IOcPycTnMGnhwoermvISt72sA==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-label": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.11.tgz", - "integrity": "sha512-3PKvDDxOn62k0oV1n4QtNtD2vpu+zYjXR7ojLBPaO6SPvhy53yg0vAmgNeBQeJW5rV3dffoRG+HYfLBZuzw0CQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.1.7" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-menu": { - "version": "2.1.20", - "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.20.tgz", - "integrity": "sha512-VsUrXxFe9d2ScbZF0fR/oPR1+qjyeLs5p0jzG8h90puMoA9bq4SirYlXbE+USRg9Q2qTeJSFNqjw2nts8jJe4w==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-collection": "1.1.12", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-direction": "1.1.2", - "@radix-ui/react-dismissable-layer": "1.1.15", - "@radix-ui/react-focus-guards": "1.1.4", - "@radix-ui/react-focus-scope": "1.1.12", - "@radix-ui/react-id": "1.1.2", - "@radix-ui/react-popper": "1.3.3", - "@radix-ui/react-portal": "1.1.13", - "@radix-ui/react-presence": "1.1.7", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-roving-focus": "1.1.15", - "@radix-ui/react-slot": "1.3.0", - "@radix-ui/react-use-callback-ref": "1.1.2", - "aria-hidden": "^1.2.4", - "react-remove-scroll": "^2.7.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-menubar": { - "version": "1.1.20", - "resolved": "https://registry.npmjs.org/@radix-ui/react-menubar/-/react-menubar-1.1.20.tgz", - "integrity": "sha512-gzFZvybgmwYsFBWDqanycIoEYnhyk8MMnuLamdFVHUZYGp4COM+sqXiwbnn0VMWqGLeeU7GV7jm+dXRa+Wufag==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-collection": "1.1.12", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-direction": "1.1.2", - "@radix-ui/react-id": "1.1.2", - "@radix-ui/react-menu": "2.1.20", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-roving-focus": "1.1.15", - "@radix-ui/react-use-controllable-state": "1.2.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-navigation-menu": { - "version": "1.2.18", - "resolved": "https://registry.npmjs.org/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.18.tgz", - "integrity": "sha512-K9HiuxZ6xCwSaHcIuUpxyhy4w5gpwzWjh9dHTSbMN3Ix4qAyVObS9RlU3zMycb0PO3v9Tpk0BXMwWvXOUbVXew==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-collection": "1.1.12", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-direction": "1.1.2", - "@radix-ui/react-dismissable-layer": "1.1.15", - "@radix-ui/react-id": "1.1.2", - "@radix-ui/react-presence": "1.1.7", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-use-callback-ref": "1.1.2", - "@radix-ui/react-use-controllable-state": "1.2.3", - "@radix-ui/react-use-layout-effect": "1.1.2", - "@radix-ui/react-use-previous": "1.1.2", - "@radix-ui/react-visually-hidden": "1.2.7" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-popover": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.19.tgz", - "integrity": "sha512-jkrTdQVxnIB8fpn0NyyxW9CTB5aCXZZelVz5z+Xmii6g5WxMqS3fInNslZ63puP39+Puu4jYohUK31y3dT87gQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-dismissable-layer": "1.1.15", - "@radix-ui/react-focus-guards": "1.1.4", - "@radix-ui/react-focus-scope": "1.1.12", - "@radix-ui/react-id": "1.1.2", - "@radix-ui/react-popper": "1.3.3", - "@radix-ui/react-portal": "1.1.13", - "@radix-ui/react-presence": "1.1.7", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-slot": "1.3.0", - "@radix-ui/react-use-controllable-state": "1.2.3", - "aria-hidden": "^1.2.4", - "react-remove-scroll": "^2.7.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-popper": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.3.3.tgz", - "integrity": "sha512-mS7dGpyjv6b+gsDjLF7e0ia1W4Im1B1hSCy2yuXlHuvnZxHKagfDaobt/KAKt27EpZMit2pss8eJBVyVjEWM+g==", - "license": "MIT", - "dependencies": { - "@floating-ui/react-dom": "^2.0.0", - "@radix-ui/react-arrow": "1.1.11", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-use-callback-ref": "1.1.2", - "@radix-ui/react-use-layout-effect": "1.1.2", - "@radix-ui/react-use-rect": "1.1.2", - "@radix-ui/react-use-size": "1.1.2", - "@radix-ui/rect": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-portal": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.13.tgz", - "integrity": "sha512-z3oXfmaHLJTF1wktbjgD6cn9jiEbq3WSondB10LIuIt2m2Ym4iJlrW04/euMwENDdWDdE7z+OuY7Qyp1YpRSwA==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-use-layout-effect": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-presence": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.7.tgz", - "integrity": "sha512-zBZ4QM5XG3JRanDmqXYf3MD6th4AFXFmgU6KNMFzUaV6F3uw9I5/zjMUvFriSEn5ewo1nxuibvyxJdmLlDcslA==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-primitive": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.7.tgz", - "integrity": "sha512-bC3NiwsprbxKjuon9l7X6BUTw7FPVzEYaL92MPEY5SCd/9hUTPXVFtVwRix7778wtRsVao+zE062gL79FZleeQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-slot": "1.3.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-progress": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/@radix-ui/react-progress/-/react-progress-1.1.12.tgz", - "integrity": "sha512-ZPHyI0JyzoH/rP0tq2uRaIZTj/4s8+kAbqPz+e2N8+ejHvwPJ889dHhqn+vh7PNvNeq+boAoH9yzqeoShzwF2w==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-primitive": "2.1.7" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-radio-group": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-radio-group/-/react-radio-group-1.4.3.tgz", - "integrity": "sha512-WwZFjWV4s3aC1QtR3k04R+oANHtX2q6fgKlc7MCEiDNlnTxCZ3H8k3mHtEgVlOejystwk1WQgarQhNOQZ2bK1g==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-direction": "1.1.2", - "@radix-ui/react-presence": "1.1.7", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-roving-focus": "1.1.15", - "@radix-ui/react-use-controllable-state": "1.2.3", - "@radix-ui/react-use-previous": "1.1.2", - "@radix-ui/react-use-size": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-roving-focus": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.15.tgz", - "integrity": "sha512-40svmmugfM3mUN7VUDGVE1tQGOhyi8enlGD0CNJEcMM36C1f71PKM21DFgNHUfem0XnA+d8H8oN3Z9ZpJjSslg==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-collection": "1.1.12", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-direction": "1.1.2", - "@radix-ui/react-id": "1.1.2", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-use-callback-ref": "1.1.2", - "@radix-ui/react-use-controllable-state": "1.2.3", - "@radix-ui/react-use-is-hydrated": "0.1.1", - "@radix-ui/react-use-layout-effect": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-scroll-area": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.14.tgz", - "integrity": "sha512-bBODCWZK7JTbQLHs0uIP4f73wIWatakK4OS33UzkR1x897wu0PuO658a3f+6P2GEGyDzGYMuHRatMVoAk9WZTw==", - "license": "MIT", - "dependencies": { - "@radix-ui/number": "1.1.2", - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-direction": "1.1.2", - "@radix-ui/react-presence": "1.1.7", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-use-callback-ref": "1.1.2", - "@radix-ui/react-use-layout-effect": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-select": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.3.3.tgz", - "integrity": "sha512-L5RQTXz6Anxsf9CCv+pTgiAsUpyVj7rJxsGtmhFaEOJ++cVfXucv4qWfsIO0AIB4NAhi3yovWGVMKKS1Xf1Wrg==", - "license": "MIT", - "dependencies": { - "@radix-ui/number": "1.1.2", - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-collection": "1.1.12", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-direction": "1.1.2", - "@radix-ui/react-dismissable-layer": "1.1.15", - "@radix-ui/react-focus-guards": "1.1.4", - "@radix-ui/react-focus-scope": "1.1.12", - "@radix-ui/react-id": "1.1.2", - "@radix-ui/react-popper": "1.3.3", - "@radix-ui/react-portal": "1.1.13", - "@radix-ui/react-presence": "1.1.7", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-slot": "1.3.0", - "@radix-ui/react-use-callback-ref": "1.1.2", - "@radix-ui/react-use-controllable-state": "1.2.3", - "@radix-ui/react-use-layout-effect": "1.1.2", - "@radix-ui/react-use-previous": "1.1.2", - "@radix-ui/react-visually-hidden": "1.2.7", - "aria-hidden": "^1.2.4", - "react-remove-scroll": "^2.7.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-separator": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.1.11.tgz", - "integrity": "sha512-jRhe86+8PF7VZ1u14eOWVOuh2BuAhALg/FT1VcMC4OHedMTRUazDnDlKTt+yxo5cRNKHMfmvZ4sSQtWDeMV4CQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.1.7" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-slider": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slider/-/react-slider-1.4.3.tgz", - "integrity": "sha512-CWVVj+XaTom0SKCqw1EUgb0NuiLwS+N3OFG73mVEezKEjgNIvZiu0EevMelSSU+CbX3owbqJweG2gPU31WGC5A==", - "license": "MIT", - "dependencies": { - "@radix-ui/number": "1.1.2", - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-collection": "1.1.12", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-direction": "1.1.2", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-use-controllable-state": "1.2.3", - "@radix-ui/react-use-layout-effect": "1.1.2", - "@radix-ui/react-use-previous": "1.1.2", - "@radix-ui/react-use-size": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-slot": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.3.0.tgz", - "integrity": "sha512-MojKku4U/miO8Av4Dkb+ctMAQx7JmY96LmtDQlAarCRtd7rN52QCSzBF+XAvr5S6coSVj9HEPBgHAHKEJVk/WA==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.3" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-switch": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.3.3.tgz", - "integrity": "sha512-1+mlB4/lxJfk5tgJ4g+R5mUCbRpPE1T9+UsEyeLYbGgMtwiMgmuTnfKz4Mw1nHALHjuwyxw4MLd4cSHn6pNSlQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-use-controllable-state": "1.2.3", - "@radix-ui/react-use-previous": "1.1.2", - "@radix-ui/react-use-size": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-tabs": { - "version": "1.1.17", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.17.tgz", - "integrity": "sha512-nRyXnrAVCwjeXcHbvEbLS6ndbTeKHG1RqCP4A8Gw5L4cemDzPXdD8rAmr6wet0v57R69wGvuIIsFjHSVkZiMzQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-direction": "1.1.2", - "@radix-ui/react-id": "1.1.2", - "@radix-ui/react-presence": "1.1.7", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-roving-focus": "1.1.15", - "@radix-ui/react-use-controllable-state": "1.2.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-toggle": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.14.tgz", - "integrity": "sha512-QI/hB65XKWACA66P64A+aHxtLUgHJeJLkaQa+awUNXT6T3swndtY5DojeHA+vldrTspMTtFBd7HfZ9QGbM1Qrw==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-use-controllable-state": "1.2.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-toggle-group": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.15.tgz", - "integrity": "sha512-gIC5Q+Xljg7lmUdzSuDoy0t97yZn1sZl00Ra37ZvKrYdWnQLU6sWLd09yG8cIB9jUAlQfHgJ2ACAG00MFwsqSQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-direction": "1.1.2", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-roving-focus": "1.1.15", - "@radix-ui/react-toggle": "1.1.14", - "@radix-ui/react-use-controllable-state": "1.2.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-tooltip": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.2.12.tgz", - "integrity": "sha512-U3HoftgWnmla78vzQbLvKKb7bUYJxoiiqYFzp1wu/TBMyDqMZSuCl3aRICsD6EfVEwcJD2mumGDGUXLFVqQHKA==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-dismissable-layer": "1.1.15", - "@radix-ui/react-id": "1.1.2", - "@radix-ui/react-popper": "1.3.3", - "@radix-ui/react-portal": "1.1.13", - "@radix-ui/react-presence": "1.1.7", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-slot": "1.3.0", - "@radix-ui/react-use-controllable-state": "1.2.3", - "@radix-ui/react-visually-hidden": "1.2.7" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-callback-ref": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.2.tgz", - "integrity": "sha512-xCso9j1/u8sEgP1RNHjFrXJLApL8LiqOkI1R4ywuN00rxWdYg4oQXuwKLS3i0j5NWLromUD27/4nlxj2UFVvIw==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-controllable-state": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.3.tgz", - "integrity": "sha512-PLzC90MS+ReootmjC597dvopoelpZ8Q61HJkDXZSExitIq7PL55vHNnesAHwguHK0aPfBnpdNzQtv1uliaqQrA==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-use-effect-event": "0.0.3", - "@radix-ui/react-use-layout-effect": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-effect-event": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.3.tgz", - "integrity": "sha512-6c8ZqvPTWILEKnyVkP53EGRCcpnJiKTC21sS/6R1GF5xKyHJJWQEPfkqlcgUkdRQivd6tb23abUwe4ngWmY0JA==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-is-hydrated": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-is-hydrated/-/react-use-is-hydrated-0.1.1.tgz", - "integrity": "sha512-qwOiz4Tjo8CNnrOLAYUMXeZwDzXgXpvK4TKQPmWLECM9XoWvA6+0Z2/7Ag3A4ivjS4ovbLJPbskkxioFyBhr8A==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-layout-effect": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.2.tgz", - "integrity": "sha512-jrBWOxZITuGcnjRCM2t2U5ZPkCLxD+Ym6DjfssS5haTj2iiak/DOb64JeN6OdLfLgptb6/e2kKR+ZuTrGoZTPA==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-previous": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.2.tgz", - "integrity": "sha512-IGBQPtRFdhN6MQ8dbegVmBq1LVZluya3F1jWY+puIcQC3MHctRwTDSBWCkL/3ZcnMJLTMJ++Z+ktmvg0F89iCw==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-rect": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.2.tgz", - "integrity": "sha512-d8a+bBY/FxikNPlgJJoaBHZX+zKVbWHYJGTLnLvveQgFSTntkGdEKv3JDtHrMS0DNYpllz2nRsTLGLKYttbpmw==", - "license": "MIT", - "dependencies": { - "@radix-ui/rect": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-size": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.2.tgz", - "integrity": "sha512-giWQp+4mxjBPt4KZ0MmyuykFNWfbDxKt4x+fPkRYmgRFJSbCZFzUglvMb/Kjn38tm10YP4ufiQZDx3zna4LU6w==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-visually-hidden": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.7.tgz", - "integrity": "sha512-1wNZBggTDK3GRuuQ6nP4k2yi7a6l7I5qbMPbZcRsrGsGVead/f/d5FhEzUvqFs0bcrDLx7n1zKQ3JvLR6whaaw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.1.7" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/rect": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.2.tgz", - "integrity": "sha512-xnXE7wG13PI+cxieVssYXlQJuYVRhH9NBoxt3KNwzghDIA69GMm7d4wXRouHIYjE+KvS6U/MsMO73NdS2MH9ZA==", - "license": "MIT" + "node": ">= 8" + } }, "node_modules/@rolldown/pluginutils": { "version": "1.0.0-rc.3", @@ -4324,21 +2947,6 @@ "win32" ] }, - "node_modules/@standard-schema/utils": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@standard-schema/utils/-/utils-0.3.0.tgz", - "integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==", - "license": "MIT" - }, - "node_modules/@tabby_ai/hijri-converter": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@tabby_ai/hijri-converter/-/hijri-converter-1.0.5.tgz", - "integrity": "sha512-r5bClKrcIusDoo049dSL8CawnHR6mRdDwhlQuIgZRNty68q0x8k3Lf1BtPAMxRf/GgnHBnIO4ujd3+GQdLWzxQ==", - "license": "MIT", - "engines": { - "node": ">=16.0.0" - } - }, "node_modules/@tailwindcss/typography": { "version": "0.5.20", "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.20.tgz", @@ -4495,7 +3103,7 @@ "version": "19.2.3", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", - "devOptional": true, + "dev": true, "license": "MIT", "peerDependencies": { "@types/react": "^19.2.0" @@ -4508,17 +3116,17 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.63.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.63.0.tgz", - "integrity": "sha512-rvwSgqT+DHpWdzfSzPatRLm02a0GlESt++9iy3hLCDY4BgkaLcl8LBi9Yh7XGFBpwcBE/K3024QuXWTpbz4FfQ==", + "version": "8.72.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.72.2.tgz", + "integrity": "sha512-222PKFXKihmFpi/pS5njoBgdAqsPhj2/GBmFbrNw8Tq8gEG9Sv+kSlKFy4u2q+mJv9ZzJgM2Gkv/bUzRZwZw5g==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.63.0", - "@typescript-eslint/type-utils": "8.63.0", - "@typescript-eslint/utils": "8.63.0", - "@typescript-eslint/visitor-keys": "8.63.0", + "@typescript-eslint/scope-manager": "8.72.2", + "@typescript-eslint/type-utils": "8.72.2", + "@typescript-eslint/utils": "8.72.2", + "@typescript-eslint/visitor-keys": "8.72.2", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.5.0" @@ -4531,15 +3139,15 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.63.0", + "@typescript-eslint/parser": "^8.72.2", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.6.tgz", - "integrity": "sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==", + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.14.tgz", + "integrity": "sha512-wCBiZ77u1tuWde6G/nfOtLaCTYcFDU5yCzARzK10y+rLhzYoL7a7yEemcopcc2Mzow7gZOIjnV2ym1NYmdiJOQ==", "dev": true, "license": "MIT", "engines": { @@ -4547,16 +3155,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.63.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.63.0.tgz", - "integrity": "sha512-gwh4gvvlaVDKKxyfxMG+Gnu1u9X0OQBwyGLkbwB65dIzBKnxeRiJlNFqlI3zwVhNXJIs6qV7mlFCn/BIajlVig==", + "version": "8.72.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.72.2.tgz", + "integrity": "sha512-llP+T1YuJOLlxEciP6OyQGtz5SMxyn+9LA2BvZw5RmToGVa1y4beEDVQL6Gje7T5WFYh19WREjDCN9Ev4gm5AA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.63.0", - "@typescript-eslint/types": "8.63.0", - "@typescript-eslint/typescript-estree": "8.63.0", - "@typescript-eslint/visitor-keys": "8.63.0", + "@typescript-eslint/scope-manager": "8.72.2", + "@typescript-eslint/types": "8.72.2", + "@typescript-eslint/typescript-estree": "8.72.2", + "@typescript-eslint/visitor-keys": "8.72.2", "debug": "^4.4.3" }, "engines": { @@ -4572,14 +3180,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.63.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.63.0.tgz", - "integrity": "sha512-e5dh0/UI0ok53AlZ5wRkXCB32z/f2jUZqPR/ygAw5WYaSw8j9EoJWlS7wQjr/dmOaqWjnPIn2m+HhVPCMWGZVQ==", + "version": "8.72.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.72.2.tgz", + "integrity": "sha512-6y5dLTZdHhI8Eh3yIQ/bfQhRKwn5e+TpJj64o18Cngc0iW/BCrVvrr6zGYqXPnYH31u6YXAYiFh0+qxX5mybJw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.63.0", - "@typescript-eslint/types": "^8.63.0", + "@typescript-eslint/tsconfig-utils": "^8.72.2", + "@typescript-eslint/types": "^8.72.2", "debug": "^4.4.3" }, "engines": { @@ -4594,14 +3202,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.63.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.63.0.tgz", - "integrity": "sha512-uUyfMWCnDSN8bCpcrY8nGP2BLkQ9Xn0GsipcONcpIDWhwhO4ZSyHvyS14U3X75mzxWxL3I2UZIrenTzdzcJO8A==", + "version": "8.72.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.72.2.tgz", + "integrity": "sha512-iIoMJ6/8c1/QpFNyFjU0d1YzPco4MsZjQw0k3V+vfzNWAFmUmvhlyMoYEoYYDQZXc+J6Gi1X5XcxlzW2taIIGQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.63.0", - "@typescript-eslint/visitor-keys": "8.63.0" + "@typescript-eslint/types": "8.72.2", + "@typescript-eslint/visitor-keys": "8.72.2" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4612,9 +3220,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.63.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.63.0.tgz", - "integrity": "sha512-sUAbkulqBAsncKnbRP3+7CtQFRKicexnj7ZwNC6ddCR7EmrXvjvdCYMJbUIqMd6lwoEriZjwLo08aS5tSjVMHg==", + "version": "8.72.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.72.2.tgz", + "integrity": "sha512-+h3iCgZXuTNtoLXcnnjP12ZUHLMqoUcIHPfQrFEXTUqvb9dF8QK9b5nv5VtSo5fLkdHuks8ehbTzZj3rImAm9w==", "dev": true, "license": "MIT", "engines": { @@ -4629,15 +3237,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.63.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.63.0.tgz", - "integrity": "sha512-Nzzh/OGxVCOjObjaj1CQF2RUasyYy2Jfuh+zZ3PjLzG2fYRriAiZLib9UKtO+CpQAS3YHiAS+ckZDclwqI1TPA==", + "version": "8.72.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.72.2.tgz", + "integrity": "sha512-STfkR38qIdhfkLpgtXnUjAzsNy4xouqiBO0lrVc/Wpk9Kem5/aHXUx1J8dGC16zpdYN1+yc2ILQ28er1kXX7ag==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.63.0", - "@typescript-eslint/typescript-estree": "8.63.0", - "@typescript-eslint/utils": "8.63.0", + "@typescript-eslint/types": "8.72.2", + "@typescript-eslint/typescript-estree": "8.72.2", + "@typescript-eslint/utils": "8.72.2", "debug": "^4.4.3", "ts-api-utils": "^2.5.0" }, @@ -4654,9 +3262,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.63.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.63.0.tgz", - "integrity": "sha512-xyLtl9DUBBFrcJS4x2pIqGLH68/tC2uOa4Z7pUteW09D3bXnnXUom4dyPikzWgB7llmIc1zoeI3aoUdC4rPK/Q==", + "version": "8.72.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.72.2.tgz", + "integrity": "sha512-Xfn37OLZx03+PCU7qWx9DTv2FCRh1E6fk2+wONeNY15HXIwtcwuveaSwVpGAUptkNmPQegRxW5JyRel9T7wrog==", "dev": true, "license": "MIT", "engines": { @@ -4668,16 +3276,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.63.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.63.0.tgz", - "integrity": "sha512-ygBkU+B7ex5UI/gKhaqexWev79uISfIv7XQCRNYO/jmD8rGLPyWLAb3KMRT6nd8Gt9bmUBi9+iX6tBdYfOY81Q==", + "version": "8.72.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.72.2.tgz", + "integrity": "sha512-pQEGqIK/cqEvKivVWaFLYpe7XYejFxfuAOi4mu1oAWFvIo36aRHI9esRFTUxcIy/z8N482RJyH+LpZB0ZIU7Ow==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.63.0", - "@typescript-eslint/tsconfig-utils": "8.63.0", - "@typescript-eslint/types": "8.63.0", - "@typescript-eslint/visitor-keys": "8.63.0", + "@typescript-eslint/project-service": "8.72.2", + "@typescript-eslint/tsconfig-utils": "8.72.2", + "@typescript-eslint/types": "8.72.2", + "@typescript-eslint/visitor-keys": "8.72.2", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", @@ -4706,9 +3314,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", - "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.12.tgz", + "integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4719,13 +3327,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^5.0.5" + "brace-expansion": "^5.0.8" }, "engines": { "node": "18 || 20 || >=22" @@ -4735,9 +3343,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.8.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", - "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.6.tgz", + "integrity": "sha512-9lpSSU4Mly3mrtruwLs1eLK6+gzbzqeBFwRNjIjE+9LuDpWdYctrQlQ3ej1Ilgi7gknpsTRnPoLP8DpCHqHIJw==", "dev": true, "license": "ISC", "bin": { @@ -4748,16 +3356,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.63.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.63.0.tgz", - "integrity": "sha512-fUKaeAvrTuQg/Tgt3nliAUSZHJM6DlCcfyEmxCvlX8kieWSStBX+5O5Fnidtc3i2JrH+9c/GL4RY2iasd/GPTA==", + "version": "8.72.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.72.2.tgz", + "integrity": "sha512-hv3eRYbpPbbpezuax1EfGrzpa3C4ySgNZkPUkLOWOAjU8HsOKowEDAr8C7nsNl1C+SBSKDpvno6VKHnlhvp9iA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.63.0", - "@typescript-eslint/types": "8.63.0", - "@typescript-eslint/typescript-estree": "8.63.0" + "@typescript-eslint/scope-manager": "8.72.2", + "@typescript-eslint/types": "8.72.2", + "@typescript-eslint/typescript-estree": "8.72.2" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4772,13 +3380,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.63.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.63.0.tgz", - "integrity": "sha512-UexrHGnGTpbuQHct2ExOc2ZcFbGUS9FOesCxxqdBGcpI1BxYu/LZ6U8Aq6/72XtF/qRBk9nhuGHFJIXXMhPMdw==", + "version": "8.72.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.72.2.tgz", + "integrity": "sha512-NAGrjn0Pitjqzq/GkgMC4kBYm233PQ8GffyQ9+kTA3AlNQYEzOf25EIM02BAHZv5FRJSpHpJk+OGUxVkOB93GQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.63.0", + "@typescript-eslint/types": "8.72.2", "eslint-visitor-keys": "^5.0.0" }, "engines": { @@ -4920,18 +3528,6 @@ "dev": true, "license": "Python-2.0" }, - "node_modules/aria-hidden": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", - "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/autoprefixer": { "version": "10.5.2", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.5.2.tgz", @@ -4969,6 +3565,16 @@ "postcss": "^8.1.0" } }, + "node_modules/axe-core": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.14.0.tgz", + "integrity": "sha512-9WTZxEjsZ7b13TH8JPmbV2z8CHbl80/2hm3XPEG4JgNdQLK81IBRXmSxHfMAOkSqQeRxT/0dwNDz2GOm3zzpcQ==", + "dev": true, + "license": "MPL-2.0", + "engines": { + "node": ">=4" + } + }, "node_modules/babel-plugin-polyfill-corejs2": { "version": "0.4.17", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz", @@ -5029,9 +3635,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.10.42", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.42.tgz", - "integrity": "sha512-c/jurFrDLyui7o1J86yLkRu4LMsTYcBohveus7/I2Hzdn9KIP2bdJPTue/lR1KH46enoPbD77GKeSYNdyPoD3Q==", + "version": "2.11.35", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.35.tgz", + "integrity": "sha512-GNk8KX52CHqeNKGk8+7tZnQab/2k1t/BgrUHPKNdijzpEhF1saPQZHVKb6m5loSAxB39gyrTYw34Qf9CQ3u1qQ==", "dev": true, "license": "Apache-2.0", "bin": { @@ -5055,9 +3661,9 @@ } }, "node_modules/brace-expansion": { - "version": "1.1.18", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz", - "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==", + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.21.tgz", + "integrity": "sha512-9zeA+KLZNNzglF2TPKRQEDyx6Yby7daAkuy8MiPzpXPsYDWi/DRM8jmwUDxokQjYqBpv5DgPiwD4h4ZZSy1Ujw==", "dev": true, "license": "MIT", "dependencies": { @@ -5079,9 +3685,9 @@ } }, "node_modules/browserslist": { - "version": "4.28.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.5.tgz", - "integrity": "sha512-Cu2E6QejHWzuDMTkuwgpABFgDfZrXLQq5V13YOACZx4mFAG4IwGTbTfHPMr4WtxlHoXSM8FIuRwYYCz5XiabaQ==", + "version": "4.29.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.29.5.tgz", + "integrity": "sha512-khTmKu5NGYTotqcYo8Bew2k4RAE9PuXRSFRXG2lQBrCEQHyeQ/vX6gKMxfokwywBsLiXZMnHsmWMG1pnO8J7uQ==", "dev": true, "funding": [ { @@ -5099,11 +3705,11 @@ ], "license": "MIT", "dependencies": { - "baseline-browser-mapping": "^2.10.42", - "caniuse-lite": "^1.0.30001800", - "electron-to-chromium": "^1.5.387", - "node-releases": "^2.0.50", - "update-browserslist-db": "^1.2.3" + "baseline-browser-mapping": "^2.11.33", + "caniuse-lite": "^1.0.30001819", + "electron-to-chromium": "^1.5.464", + "node-releases": "^2.0.60", + "update-browserslist-db": "^1.3.4" }, "bin": { "browserslist": "cli.js" @@ -5133,9 +3739,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001803", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001803.tgz", - "integrity": "sha512-g/uHREV2ZpK9qMalCsWaxmA6ol+DX8GYhuf3T40RKoP+oL7vhRJh8LNt73PCjpnR6l14FzfPrB5Yux4PKm2meg==", + "version": "1.0.30001823", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001823.tgz", + "integrity": "sha512-TQ5s/djDjNk1axreUW+4rULH+BmdCMLiJkhaXnO5wqivG7tITkSUj4ItIdzqdZHKaXcHAV8dhH3JxOM7/7bwqw==", "dev": true, "funding": [ { @@ -5258,43 +3864,6 @@ "node": ">= 6" } }, - "node_modules/class-variance-authority": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", - "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", - "license": "Apache-2.0", - "dependencies": { - "clsx": "^2.1.1" - }, - "funding": { - "url": "https://polar.sh/cva" - } - }, - "node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/cmdk": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/cmdk/-/cmdk-1.1.1.tgz", - "integrity": "sha512-Vsv7kFaXm+ptHDMZ7izaRsP70GgrW9NBNGswt9OZaVBLlE0SNpDq8eu/VGXyF9r7M0azK3Wy7OlYXsuyYLFzHg==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "^1.1.1", - "@radix-ui/react-dialog": "^1.1.6", - "@radix-ui/react-id": "^1.1.0", - "@radix-ui/react-primitive": "^2.0.2" - }, - "peerDependencies": { - "react": "^18 || ^19 || ^19.0.0-rc", - "react-dom": "^18 || ^19 || ^19.0.0-rc" - } - }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -5410,22 +3979,6 @@ "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", "license": "MIT" }, - "node_modules/date-fns": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.4.0.tgz", - "integrity": "sha512-+1UMbeh68lH1SegH83CGWwpb6OHHbpSgr3+s5Eww5M4CAgswBpoWS0AjTOfEJ33HiYKz1hdj/KTFprzXHmq/6w==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/kossnocorp" - } - }, - "node_modules/date-fns-jalali": { - "version": "4.1.0-0", - "resolved": "https://registry.npmjs.org/date-fns-jalali/-/date-fns-jalali-4.1.0-0.tgz", - "integrity": "sha512-hTIP/z+t+qKwBDcmmsnmjWTduxCg+5KfdqWQvb2X/8C9+knYY6epN/pfxdDuyVlSVeFz0sM5eEfwIUQ70U4ckg==", - "license": "MIT" - }, "node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", @@ -5472,12 +4025,6 @@ "node": ">=6" } }, - "node_modules/detect-node-es": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", - "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", - "license": "MIT" - }, "node_modules/devlop": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", @@ -5506,40 +4053,12 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.389", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.389.tgz", - "integrity": "sha512-cEto7aeOqBfU1D+c5py5pE+ooscKE75JifxLBdFUZsqAxRS6y7kebtxAZvICszSl05gPjYHDTjY+lXpyGvpJbg==", + "version": "1.5.481", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.481.tgz", + "integrity": "sha512-dNUsbAP6E2S1dHIYEuN3cQ0dViThjMtpVRheGdvv5HgHFtzLi4Cu4Mbzms85YggP3Eh2VVZTl5+XxEN8ofCbmQ==", "dev": true, "license": "ISC" }, - "node_modules/embla-carousel": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.6.0.tgz", - "integrity": "sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==", - "license": "MIT" - }, - "node_modules/embla-carousel-react": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/embla-carousel-react/-/embla-carousel-react-8.6.0.tgz", - "integrity": "sha512-0/PjqU7geVmo6F734pmPqpyHqiM99olvyecY7zdweCw+6tKEXnrE90pBiBbMMU8s5tICemzpQ3hi5EpxzGW+JA==", - "license": "MIT", - "dependencies": { - "embla-carousel": "8.6.0", - "embla-carousel-reactive-utils": "8.6.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - } - }, - "node_modules/embla-carousel-reactive-utils": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/embla-carousel-reactive-utils/-/embla-carousel-reactive-utils-8.6.0.tgz", - "integrity": "sha512-fMVUDUEx0/uIEDM0Mz3dHznDhfX+znCCDCeIophYb1QGVM7YThSWX+wz11zlYwWFOr74b4QLGg0hrGPJeG2s4A==", - "license": "MIT", - "peerDependencies": { - "embla-carousel": "8.6.0" - } - }, "node_modules/entities": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", @@ -6001,21 +4520,6 @@ "node": ">=6.9.0" } }, - "node_modules/get-nonce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", - "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/github-slugger": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", - "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", - "license": "ISC" - }, "node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -6042,12 +4546,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gsap": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/gsap/-/gsap-3.15.0.tgz", - "integrity": "sha512-dMW4CWBTUK1AEEDeZc1g4xpPGIrSf9fJF960qbTZmN/QwZIWY5wgliS6JWl9/25fpTGJrMRtSjGtOmPnfjZB+A==", - "license": "Standard 'no charge' license: https://gsap.com/standard-license." - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -6140,19 +4638,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-heading-rank": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-heading-rank/-/hast-util-heading-rank-3.0.0.tgz", - "integrity": "sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/hast-util-is-element": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", @@ -6250,19 +4735,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-to-string": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", - "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/hast-util-to-text": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz", @@ -6389,16 +4861,6 @@ "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==", "license": "MIT" }, - "node_modules/input-otp": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/input-otp/-/input-otp-1.4.2.tgz", - "integrity": "sha512-l3jWwYNvrEa6NTCt7BECfCm48GvwuZzkoeG3gBL2w4CHeOXW3eKFmf9UNYkNfYc3mxMrthMnxjIE07MT0zLBQA==", - "license": "MIT", - "peerDependencies": { - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc" - } - }, "node_modules/is-alphabetical": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", @@ -6542,9 +5004,9 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.1.tgz", - "integrity": "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.2.tgz", + "integrity": "sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==", "dev": true, "funding": [ { @@ -7742,20 +6204,10 @@ "dev": true, "license": "MIT" }, - "node_modules/next-themes": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.4.6.tgz", - "integrity": "sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==", - "license": "MIT", - "peerDependencies": { - "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" - } - }, "node_modules/node-releases": { - "version": "2.0.51", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.51.tgz", - "integrity": "sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==", + "version": "2.0.63", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.63.tgz", + "integrity": "sha512-6li2QanLsAXpIH2R6j77MzRyvOyrvdTqlKtO4CgBdHGNvN99ZZfyxszHc5o5+IZBWD5u6Hzwg83JoGXmqZNG9Q==", "dev": true, "license": "MIT", "engines": { @@ -7959,6 +6411,35 @@ "node": ">= 6" } }, + "node_modules/playwright": { + "version": "1.65.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.65.0.tgz", + "integrity": "sha512-F3AMWcR44qMBt4kq+6Kb6mX7bjGXshktKFOPULd7reED6ZJWevjbNRqysP7q+AATE9kdPEZBibex1BYsvpVoeA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.65.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/playwright-core": { + "version": "1.65.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.65.0.tgz", + "integrity": "sha512-vNSKgH6YqtN7cdT/L334zo0a+YwkrpicyrHJlWWPIm/Q+Nn2SWInil01oT0mbu96U4GgoRtCYQD9CzJQgju+lA==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=20" + } + }, "node_modules/postcss": { "version": "8.5.26", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.26.tgz", @@ -8102,13 +6583,12 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.4.tgz", - "integrity": "sha512-bIoJLOmjCO1S9XdY/DcnR5hJxvrDir1PbGChrzXG3vw0/FOliy/fA3dmdhQ441kah4gKv+TwckGzex6wNS5cnQ==", + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.6.tgz", + "integrity": "sha512-BK87/Qgti3DIcgS2PaCVoteFIkjIFvCJBizZDIVSjdlFNg4Jv+SRqbN2JONb/qQUH4ZFqfXYF+izg15W2HVRvA==", "dev": true, "license": "MIT", "dependencies": { - "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" }, "engines": { @@ -8182,28 +6662,6 @@ "node": ">=0.10.0" } }, - "node_modules/react-day-picker": { - "version": "9.14.0", - "resolved": "https://registry.npmjs.org/react-day-picker/-/react-day-picker-9.14.0.tgz", - "integrity": "sha512-tBaoDWjPwe0M5pGrum4H0SR6Lyk+BO9oHnp9JbKpGKW2mlraNPgP9BMfsg5pWpwrssARmeqk7YBl2oXutZTaHA==", - "license": "MIT", - "dependencies": { - "@date-fns/tz": "^1.4.1", - "@tabby_ai/hijri-converter": "1.0.5", - "date-fns": "^4.1.0", - "date-fns-jalali": "4.1.0-0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "individual", - "url": "https://github.com/sponsors/gpbl" - }, - "peerDependencies": { - "react": ">=16.8.0" - } - }, "node_modules/react-dom": { "version": "19.2.7", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.7.tgz", @@ -8216,22 +6674,6 @@ "react": "^19.2.7" } }, - "node_modules/react-hook-form": { - "version": "7.81.0", - "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.81.0.tgz", - "integrity": "sha512-ocbmr2p5KBMoAfj4WCUvped33lVi1Kd5DuDUvQDnB6VEAacOjPI/jMbtDdbhco4y9ct4xUuCmMY0b/C9L0QHjw==", - "license": "MIT", - "engines": { - "node": ">=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/react-hook-form" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17 || ^18 || ^19" - } - }, "node_modules/react-markdown": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-10.1.0.tgz", @@ -8269,67 +6711,10 @@ "node": ">=0.10.0" } }, - "node_modules/react-remove-scroll": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.2.tgz", - "integrity": "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==", - "license": "MIT", - "dependencies": { - "react-remove-scroll-bar": "^2.3.7", - "react-style-singleton": "^2.2.3", - "tslib": "^2.1.0", - "use-callback-ref": "^1.3.3", - "use-sidecar": "^1.1.3" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-remove-scroll-bar": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", - "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", - "license": "MIT", - "dependencies": { - "react-style-singleton": "^2.2.2", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-resizable-panels": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/react-resizable-panels/-/react-resizable-panels-4.12.1.tgz", - "integrity": "sha512-ElE/UpOvMLRWtAqbCgyizHXcbws8RPMyN3cBqmdY17Nxr5f01+DEwzOLqhgcy68GSnjtIUFgKWKl8aIgx5aypQ==", - "license": "MIT", - "peerDependencies": { - "react": "^18.0.0 || ^19.0.0", - "react-dom": "^18.0.0 || ^19.0.0" - } - }, "node_modules/react-router": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.6.1.tgz", - "integrity": "sha512-hPJXXxHJZEsPFNVbtATH7+MMX43UDeOauz+EAU4cgqTn7ojdI9qQORqS8Z0qmDlL1TclO/6jLRYUEtbWidtdHQ==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.18.5.tgz", + "integrity": "sha512-dTgvcXDOrLPrlLHrcZAqWveiK1hMSqN+rGAJzegP8HtmNkfRxOoshGWBNX3ZJ0cZjOHkRdlUJtaIhZMLLyGyPw==", "license": "MIT", "dependencies": { "cookie": "^1.0.1", @@ -8349,12 +6734,12 @@ } }, "node_modules/react-router-dom": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.6.1.tgz", - "integrity": "sha512-vxU7ei//UfPYQ3iZvHuO1D/5fX3/JOqhNTbRR+WjSBWxf9bIvpWK+ftjmdfJHzPOuMQKe2fiEdG+dZX6E8uUpA==", + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.18.5.tgz", + "integrity": "sha512-9HcfDMU6JJ/fp6gJZYGwNE6RknVGS4kBjH1HkNw959mCJi70TVwdipQWv2FEol9uGpi+SZTFtVpJPtEQfayeOw==", "license": "MIT", "dependencies": { - "react-router": "7.6.1" + "react-router": "7.18.5" }, "engines": { "node": ">=20.0.0" @@ -8364,28 +6749,6 @@ "react-dom": ">=18" } }, - "node_modules/react-style-singleton": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", - "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", - "license": "MIT", - "dependencies": { - "get-nonce": "^1.0.0", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -8501,23 +6864,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/rehype-slug": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/rehype-slug/-/rehype-slug-6.0.0.tgz", - "integrity": "sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "github-slugger": "^2.0.0", - "hast-util-heading-rank": "^3.0.0", - "hast-util-to-string": "^3.0.0", - "unist-util-visit": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/remark-gfm": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", @@ -8757,20 +7103,10 @@ "node": ">=8" } }, - "node_modules/sonner": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/sonner/-/sonner-2.0.7.tgz", - "integrity": "sha512-W6ZN4p58k8aDKA4XPcx2hpIQXBRAgyiWVkYhT7CvK6D3iAu7xjvVyhQHg2/iaKJZ1XVJ4r7XuwGL+WGEK37i9w==", - "license": "MIT", - "peerDependencies": { - "react": "^18.0.0 || ^19.0.0 || ^19.0.0-rc", - "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-rc" - } - }, "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.2.tgz", + "integrity": "sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -8881,16 +7217,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tailwind-merge": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.6.0.tgz", - "integrity": "sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/dcastil" - } - }, "node_modules/tailwindcss": { "version": "3.4.19", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.19.tgz", @@ -9063,22 +7389,6 @@ "dev": true, "license": "Apache-2.0" }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, - "node_modules/tw-animate-css": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/tw-animate-css/-/tw-animate-css-1.4.0.tgz", - "integrity": "sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/Wombosvideo" - } - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -9107,16 +7417,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.63.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.63.0.tgz", - "integrity": "sha512-xgwXyzG4sK9ALkBxbyGkTMMOS+imnW65iPhxCQMK83KhxyoDNW7l+IDqEf9vMdoUidHpOoS967RCq4eMiTexwQ==", + "version": "8.72.2", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.72.2.tgz", + "integrity": "sha512-c/+AKMW1KB81r28Sp0AAdcyXj5dzNmAsZFcsrxKbZTKmcBK2xIwBR31dcSYSDu3bKmzXe8GKrSxO+eDQ401Uzg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.63.0", - "@typescript-eslint/parser": "8.63.0", - "@typescript-eslint/typescript-estree": "8.63.0", - "@typescript-eslint/utils": "8.63.0" + "@typescript-eslint/eslint-plugin": "8.72.2", + "@typescript-eslint/parser": "8.72.2", + "@typescript-eslint/typescript-estree": "8.72.2", + "@typescript-eslint/utils": "8.72.2" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -9297,9 +7607,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.4.tgz", + "integrity": "sha512-t8wonIOdQyOjtPd2VktlBu6QjTVTks6v8bSi7kd0r2Vll8TK1JYDZtRRdbmCHOAMphkZgrzK+L+vXK4pyZ8t4A==", "dev": true, "funding": [ { @@ -9337,49 +7647,6 @@ "punycode": "^2.1.0" } }, - "node_modules/use-callback-ref": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", - "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/use-sidecar": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", - "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", - "license": "MIT", - "dependencies": { - "detect-node-es": "^1.1.0", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -9387,19 +7654,6 @@ "dev": true, "license": "MIT" }, - "node_modules/vaul": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vaul/-/vaul-1.1.2.tgz", - "integrity": "sha512-ZFkClGpWyI2WUQjdLJ/BaGuV6AVQiJ3uELGk3OYtP+B6yCO7Cmn9vPFXVJkRaGkOJu3m8bQMgtyzNHixULceQA==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-dialog": "^1.1.1" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc" - } - }, "node_modules/vfile": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", @@ -9443,9 +7697,9 @@ } }, "node_modules/vite": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.6.tgz", - "integrity": "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.8.tgz", + "integrity": "sha512-3tTi78MAKhVk9h+YZVXMQ8POmneJuE97QUPAWtJghHzhH7BAyiqQOC2KZh1DWOsu/USB2cRXhznPByaabvYXfw==", "dev": true, "license": "MIT", "dependencies": { @@ -9605,9 +7859,10 @@ } }, "node_modules/zod": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", - "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "version": "4.6.7", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.6.7.tgz", + "integrity": "sha512-g8W2D2kU6a8untc053fX1uVBKzM7yqAxW/3zwk83+6RyF2+SKOuV+c0wBDhUwzV1PaGapmZH+rmcUzPf+3CGwg==", + "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" diff --git a/source/package.json b/source/package.json index 03baf06f..fd050aa2 100644 --- a/source/package.json +++ b/source/package.json @@ -5,66 +5,31 @@ "type": "module", "scripts": { "dev": "vite", - "build": "vite build && node scripts/prerender-full.mjs dist", + "build": "tsc -b && vite build && node scripts/prerender.mjs", "lint": "eslint .", "preview": "vite preview", - "build:spa": "vite build", - "og": "vite build && node scripts/og-images.mjs" + "build:spa": "tsc -b && vite build", + "og": "vite build && node scripts/og-images.mjs", + "typecheck": "tsc -b", + "deploy": "node scripts/deploy-pages.mjs", + "check:static": "node tests/static-check.mjs", + "check:browser": "node tests/browser-check.mjs", + "check": "npm run check:static && npm run check:browser && npm run check:a11y", + "check:a11y": "node tests/a11y-check.mjs" }, "dependencies": { - "@hookform/resolvers": "^5.2.2", - "@radix-ui/react-accordion": "^1.2.12", - "@radix-ui/react-alert-dialog": "^1.1.15", - "@radix-ui/react-aspect-ratio": "^1.1.8", - "@radix-ui/react-avatar": "^1.1.11", - "@radix-ui/react-checkbox": "^1.3.3", - "@radix-ui/react-collapsible": "^1.1.12", - "@radix-ui/react-context-menu": "^2.2.16", - "@radix-ui/react-dialog": "^1.1.15", - "@radix-ui/react-dropdown-menu": "^2.1.16", - "@radix-ui/react-hover-card": "^1.1.15", - "@radix-ui/react-label": "^2.1.8", - "@radix-ui/react-menubar": "^1.1.16", - "@radix-ui/react-navigation-menu": "^1.2.14", - "@radix-ui/react-popover": "^1.1.15", - "@radix-ui/react-progress": "^1.1.8", - "@radix-ui/react-radio-group": "^1.3.8", - "@radix-ui/react-scroll-area": "^1.2.10", - "@radix-ui/react-select": "^2.2.6", - "@radix-ui/react-separator": "^1.1.8", - "@radix-ui/react-slider": "^1.3.6", - "@radix-ui/react-slot": "^1.2.4", - "@radix-ui/react-switch": "^1.2.6", - "@radix-ui/react-tabs": "^1.1.13", - "@radix-ui/react-toggle": "^1.1.10", - "@radix-ui/react-toggle-group": "^1.1.11", - "@radix-ui/react-tooltip": "^1.2.8", - "class-variance-authority": "^0.7.1", - "clsx": "^2.1.1", - "cmdk": "^1.1.1", - "date-fns": "^4.1.0", - "embla-carousel-react": "^8.6.0", - "gsap": "^3.15.0", - "input-otp": "^1.4.2", + "@fontsource-variable/inter": "^5.3.0", + "@fontsource-variable/jetbrains-mono": "^5.3.0", "lucide-react": "^0.562.0", - "next-themes": "^0.4.6", "react": "^19.2.0", - "react-day-picker": "^9.13.0", "react-dom": "^19.2.0", - "react-hook-form": "^7.70.0", "react-markdown": "^10.1.0", - "react-resizable-panels": "^4.2.2", "react-router": "^7.6.1", "react-router-dom": "^7.6.1", "rehype-katex": "^7.0.1", "rehype-raw": "^7.0.0", - "rehype-slug": "^6.0.0", "remark-gfm": "^4.0.1", - "remark-math": "^6.0.0", - "sonner": "^2.0.7", - "tailwind-merge": "^3.4.0", - "vaul": "^1.1.2", - "zod": "^4.3.5" + "remark-math": "^6.0.0" }, "devDependencies": { "@eslint/js": "^9.39.1", @@ -74,15 +39,16 @@ "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^5.1.1", "autoprefixer": "^10.4.23", + "axe-core": "^4.14.0", "eslint": "^9.39.1", "eslint-plugin-react-hooks": "^7.0.1", "eslint-plugin-react-refresh": "^0.4.24", "globals": "^16.5.0", "kimi-plugin-inspect-react": "^1.0.3", + "playwright": "^1.65.0", "postcss": "^8.5.6", "tailwindcss": "^3.4.19", "tailwindcss-animate": "^1.0.7", - "tw-animate-css": "^1.4.0", "typescript": "~5.9.3", "typescript-eslint": "^8.46.4", "vite": "^7.2.4" diff --git a/source/postcss.config.js b/source/postcss.config.js index ee87759f..2e7af2b7 100644 --- a/source/postcss.config.js +++ b/source/postcss.config.js @@ -1,4 +1,4 @@ -export default { +export default { plugins: { tailwindcss: {}, autoprefixer: {}, diff --git a/source/public/.well-known/agent-skills/index.json b/source/public/.well-known/agent-skills/index.json index 46123249..237c0e82 100644 --- a/source/public/.well-known/agent-skills/index.json +++ b/source/public/.well-known/agent-skills/index.json @@ -1 +1 @@ -{"$schema":"https://agentskills.io/schemas/skills-index-v0.2.0.json","skills":[{"name":"QECTOR install guidance","type":"text/markdown","description":"Explain how to install and verify QECTOR Decoder 3 from PyPI.","url":"https://qector.store/.well-known/agent-skills/qector-install.md","sha256":"00b4b9d12be0914ab9f8a68cb7a1b5ebb79ac57f63582149541e54a5c78df7a7"},{"name":"QECTOR commercial licensing","type":"text/markdown","description":"Route commercial QECTOR licensing and source-review inquiries to the correct path.","url":"https://qector.store/.well-known/agent-skills/qector-commercial-licensing.md","sha256":"02ada38eacf33ee7e4521b38989a2af83f178fa5c76ddb106cb4d515f3fd4ec3"}]} +{"$schema":"https://agentskills.io/schemas/skills-index-v0.2.0.json","skills":[{"name":"QECTOR install guidance","type":"text/markdown","description":"Explain how to install and verify QECTOR Decoder 3 from PyPI.","url":"https://qector.store/.well-known/agent-skills/qector-install.md","sha256":"2eae55a1e89ef311db8818c6ba1cdc9b2b25288c35f22ee11e873874931282ca"},{"name":"QECTOR commercial licensing","type":"text/markdown","description":"Route commercial QECTOR licensing and source-review inquiries to the correct path.","url":"https://qector.store/.well-known/agent-skills/qector-commercial-licensing.md","sha256":"4cdd859e54505369b26ee37e037ab20569c019de46b5a149d1af0f9a30c3be35"}]} \ No newline at end of file diff --git a/source/public/.well-known/agent-skills/qector-commercial-licensing.md b/source/public/.well-known/agent-skills/qector-commercial-licensing.md index 8a657e15..07c226f1 100644 --- a/source/public/.well-known/agent-skills/qector-commercial-licensing.md +++ b/source/public/.well-known/agent-skills/qector-commercial-licensing.md @@ -7,5 +7,5 @@ https://qector.store/contact Rules: - Personal, academic, educational and non-commercial research use may be free under the license. -- Commercial use requires written permission. -- For pilots, labs, startups, OEM, SaaS, redistribution or source review, route the user to the contact form. +- Commercial use requires a paid plan. Pro, Pro Perpetual, Lab and the 60-day Pilot are self-serve: plans, prices and checkout are at https://qector.store/pricing, under the Commercial Licence Agreement at https://qector.store/license-agreement/. +- For Enterprise, OEM, SaaS, hosted API, redistribution or source review, route the user to the contact form. diff --git a/source/public/.well-known/agent-skills/qector-install.md b/source/public/.well-known/agent-skills/qector-install.md index 4245c515..26b4b4c8 100644 --- a/source/public/.well-known/agent-skills/qector-install.md +++ b/source/public/.well-known/agent-skills/qector-install.md @@ -12,5 +12,5 @@ python -c "from qector_decoder_v3 import UnionFindDecoder, BlossomDecoder; print Rules: - Use the PyPI wheel as the normal public install path. - Do not recommend source builds as the primary public path. -- Mention standard CPython 3.9 to 3.13. +- Mention standard CPython 3.9 to 3.14. - If Windows uses a free-threaded Python such as cp313t, tell the user to use normal CPython. diff --git a/source/public/.well-known/api-catalog.json b/source/public/.well-known/api-catalog.json index 2918de4f..17fb360e 100644 --- a/source/public/.well-known/api-catalog.json +++ b/source/public/.well-known/api-catalog.json @@ -1 +1 @@ -{"linkset":[{"anchor":"https://qector.store","service-desc":[{"href":"https://qector.store/openapi.json","type":"application/vnd.oai.openapi+json"}],"service-doc":[{"href":"https://qector.store/docs","type":"text/html"}],"status":[{"href":"https://qector.store/health.json","type":"application/json"}],"alternate":[{"href":"https://qector.store/llms.txt","type":"text/plain"},{"href":"https://qector.store/llms-full.txt","type":"text/plain"}]}]} +{"linkset":[{"anchor":"https://qector.store","service-doc":[{"href":"https://qector.store/docs","type":"text/html"}],"status":[{"href":"https://qector.store/health.json","type":"application/json"}],"alternate":[{"href":"https://qector.store/llms.txt","type":"text/plain"},{"href":"https://qector.store/llms-full.txt","type":"text/plain"}]}]} \ No newline at end of file diff --git a/source/public/.well-known/mcp.json b/source/public/.well-known/mcp.json index e2aca418..319873e8 100644 --- a/source/public/.well-known/mcp.json +++ b/source/public/.well-known/mcp.json @@ -1 +1 @@ -{"serverInfo":{"name":"QECTOR Store Discovery","version":"0.1.0","description":"Discovery card for QECTOR Decoder v3 public website resources."},"transport":{"type":"none","description":"No remote MCP tool transport is exposed by this static public site."},"capabilities":{"tools":[],"resources":[{"name":"QECTOR documentation","uri":"https://qector.store/docs","mimeType":"text/html"},{"name":"QECTOR install guide","uri":"https://qector.store/installer","mimeType":"text/html"},{"name":"QECTOR LLM summary","uri":"https://qector.store/llms.txt","mimeType":"text/plain"}]},"contact":"https://qector.store/contact"} +{"serverInfo":{"name":"QECTOR Store Discovery","version":"1.0.0","description":"Discovery card for QECTOR Decoder v3 public website resources."},"transport":{"type":"none","description":"No remote MCP tool transport is exposed by this static public site."},"capabilities":{"tools":[],"resources":[{"name":"QECTOR documentation","uri":"https://qector.store/docs/","mimeType":"text/html"},{"name":"QECTOR install guide","uri":"https://qector.store/installer/","mimeType":"text/html"},{"name":"QECTOR evidence registry","uri":"https://qector.store/evidence/","mimeType":"text/html"},{"name":"QECTOR LLM summary","uri":"https://qector.store/llms.txt","mimeType":"text/plain"}]},"contact":"https://qector.store/contact/"} \ No newline at end of file diff --git a/source/public/.well-known/skills/index.json b/source/public/.well-known/skills/index.json index 46123249..237c0e82 100644 --- a/source/public/.well-known/skills/index.json +++ b/source/public/.well-known/skills/index.json @@ -1 +1 @@ -{"$schema":"https://agentskills.io/schemas/skills-index-v0.2.0.json","skills":[{"name":"QECTOR install guidance","type":"text/markdown","description":"Explain how to install and verify QECTOR Decoder 3 from PyPI.","url":"https://qector.store/.well-known/agent-skills/qector-install.md","sha256":"00b4b9d12be0914ab9f8a68cb7a1b5ebb79ac57f63582149541e54a5c78df7a7"},{"name":"QECTOR commercial licensing","type":"text/markdown","description":"Route commercial QECTOR licensing and source-review inquiries to the correct path.","url":"https://qector.store/.well-known/agent-skills/qector-commercial-licensing.md","sha256":"02ada38eacf33ee7e4521b38989a2af83f178fa5c76ddb106cb4d515f3fd4ec3"}]} +{"$schema":"https://agentskills.io/schemas/skills-index-v0.2.0.json","skills":[{"name":"QECTOR install guidance","type":"text/markdown","description":"Explain how to install and verify QECTOR Decoder 3 from PyPI.","url":"https://qector.store/.well-known/agent-skills/qector-install.md","sha256":"2eae55a1e89ef311db8818c6ba1cdc9b2b25288c35f22ee11e873874931282ca"},{"name":"QECTOR commercial licensing","type":"text/markdown","description":"Route commercial QECTOR licensing and source-review inquiries to the correct path.","url":"https://qector.store/.well-known/agent-skills/qector-commercial-licensing.md","sha256":"4cdd859e54505369b26ee37e037ab20569c019de46b5a149d1af0f9a30c3be35"}]} \ No newline at end of file diff --git a/source/public/_headers b/source/public/_headers index 1edc0629..d396d033 100644 --- a/source/public/_headers +++ b/source/public/_headers @@ -4,15 +4,19 @@ # or booking. # # CSP third-party allowances, and why each is required: -# js.stripe.com : Stripe buy-button script on /pricing -# assets.calendly.com : Calendly inline embed loader +# assets.calendly.com : Calendly inline embed loader (script and its CSS) # calendly.com : the Calendly booking iframe itself (frame-src) -# fonts.googleapis.com / fonts.gstatic.com : webfont CSS + font files -# The previous policy allowed only 'self' plus one inline hash, which would have -# blocked the Stripe button and the Calendly widget outright. +# cloudflareinsights : Cloudflare Web Analytics beacon +# pypi.org : latest-version lookup (footer, Status page) +# *.stripe.com : form-action only. Checkout and the billing portal are +# plain links; no Stripe script or frame is embedded. +# Fonts are bundled with the site, so no font host is listed. # # frame-src must be stated explicitly: it falls back to default-src ('self'), -# so without it the Calendly and Stripe iframes are refused. +# so without it the Calendly iframe is refused. +# +# Keep this file and workers/qector-headers/src/index.js identical: the Worker +# is what enforces the policy while the site is served from GitHub Pages. /* Strict-Transport-Security: max-age=31536000; includeSubDomains; preload @@ -27,11 +31,17 @@ Origin-Agent-Cluster: ?1 Referrer-Policy: strict-origin-when-cross-origin Permissions-Policy: accelerometer=(), ambient-light-sensor=(), autoplay=(self), camera=(), clipboard-read=(), clipboard-write=(self), document-domain=(), encrypted-media=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), payment=(self), usb=(), xr-spatial-tracking=() - Content-Security-Policy: default-src 'self'; base-uri 'self'; object-src 'none'; upgrade-insecure-requests; manifest-src 'self'; worker-src 'self' blob:; script-src 'self' 'sha256-47Y7xRUIVXITmosjladRK60OPYEE3BWeBiiCmfU0d8s=' 'sha256-2yoLb9krKtf6JSNKI8iic50UCBKaIgBtSuqyekQ5HtA=' https://js.stripe.com https://assets.calendly.com https://static.cloudflareinsights.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com https://assets.calendly.com; img-src 'self' data: https://files.stripe.com; font-src 'self' data: https://fonts.gstatic.com; connect-src 'self' https://cloudflareinsights.com https://api.stripe.com https://js.stripe.com https://api.calendly.com https://calendly.com https://pypi.org; frame-src https://js.stripe.com https://checkout.stripe.com https://hooks.stripe.com https://calendly.com; frame-ancestors 'none'; form-action 'self' https://buy.stripe.com https://checkout.stripe.com https://billing.stripe.com; media-src 'self' blob: + Content-Security-Policy: default-src 'self'; base-uri 'self'; object-src 'none'; upgrade-insecure-requests; manifest-src 'self'; worker-src 'self' blob:; script-src 'self' 'sha256-47Y7xRUIVXITmosjladRK60OPYEE3BWeBiiCmfU0d8s=' 'sha256-2yoLb9krKtf6JSNKI8iic50UCBKaIgBtSuqyekQ5HtA=' https://assets.calendly.com https://static.cloudflareinsights.com; style-src 'self' 'unsafe-inline' https://assets.calendly.com; img-src 'self' data:; font-src 'self' data:; connect-src 'self' https://cloudflareinsights.com https://api.calendly.com https://calendly.com https://pypi.org; frame-src https://calendly.com; frame-ancestors 'none'; form-action 'self' https://buy.stripe.com https://checkout.stripe.com https://billing.stripe.com; media-src 'self' blob: Cache-Control: public, max-age=0, must-revalidate /assets/* Cache-Control: public, max-age=31536000, immutable +/images/* + Cache-Control: public, max-age=86400, stale-while-revalidate=604800 + +/og/* + Cache-Control: public, max-age=86400, stale-while-revalidate=604800 + /.well-known/* Cache-Control: public, max-age=0, must-revalidate diff --git a/source/public/blog/02_blossom_mwpm_exact.md b/source/public/blog/02_blossom_mwpm_exact.md index 45259733..d6cbf2fe 100644 --- a/source/public/blog/02_blossom_mwpm_exact.md +++ b/source/public/blog/02_blossom_mwpm_exact.md @@ -143,7 +143,7 @@ $$ c + e \in \operatorname{im}(H^T). $$ -The v1.0.0 changelog anchors comparisons the way the manual requires: its 120-test LER suite on the distance-3 repetition code at `p = 0.01` reports `ler_qector = 0.00392` against `ler_pymatching = 0.00317`, inside the documented 4.5x margin. Any public comparison should still name the code family, distance, rounds, noise model, DEM settings, decoder mode, shots, seed, environment, and raw artifact. The manual intentionally excludes hardware-bound latency and throughput figures. +The v1.0.0 changelog anchors comparisons the way the manual requires: its 120-test LER suite on the distance-3 repetition code at `p = 0.01` reports, over 12 000 seeded shots, `ler_qector_blossom = 0.00392` against `ler_pymatching = 0.00317`: a delta of 0.00075, inside the suite's `+1e-3` gate (source: [decoder CHANGELOG, section 1.0.0](https://github.com/GuillaumeLessard/qector-decoder/blob/main/CHANGELOG.md)). Any public comparison should still name the code family, distance, rounds, noise model, DEM settings, decoder mode, shots, seed, environment, and raw artifact. The manual intentionally excludes hardware-bound latency and throughput figures. ## Takeaway diff --git a/source/public/blog/05_bp_osd_qldpc.md b/source/public/blog/05_bp_osd_qldpc.md index cf78125e..e9811e17 100644 --- a/source/public/blog/05_bp_osd_qldpc.md +++ b/source/public/blog/05_bp_osd_qldpc.md @@ -119,7 +119,7 @@ The division of labour is: The manual records two check-node rules, exact sum-product and min-sum, plus a relay schedule. The Rust implementation evaluates the box-plus function exactly in a small range and uses a tabulated interpolation path over a larger range. The relevant evidence is numerical-stability testing, not a universal floating-point guarantee across arbitrary hardware. -On the Python surface, `BPOSDDecoder` exposes `bp_method` ("relay" selects the layered schedule) and an adjustable `osd_lambda`. The batch path can run BP over a batch on a usable GPU and send only non-converged shots through the exact GF(2) post-process. Two bounds apply: the published 1.0.0 wheels are CPU-only, so GPU paths are build-time feature gates whose runtime availability is reported by `cuda_is_available()`; and without a usable device the batch path falls back to NumPy with the same validity contract. The single-shot path is CPU-oriented because a GPU launch is not assumed to amortize for one syndrome. +On the Python surface, `BpOsdDecoder` exposes `bp_method` ("relay" selects the layered schedule) and an adjustable `osd_lambda`. The batch path can run BP over a batch on a usable GPU and send only non-converged shots through the exact GF(2) post-process. Two bounds apply: the published 1.0.0 wheels are CPU-only, so GPU paths are build-time feature gates whose runtime availability is reported by `cuda_is_available()`; and without a usable device the batch path falls back to NumPy with the same validity contract. The single-shot path is CPU-oriented because a GPU launch is not assumed to amortize for one syndrome. ## 7. Complexity language that stays honest diff --git a/source/public/blog/07_space_time_decoder.md b/source/public/blog/07_space_time_decoder.md index 4bb466a4..a4ddff23 100644 --- a/source/public/blog/07_space_time_decoder.md +++ b/source/public/blog/07_space_time_decoder.md @@ -100,7 +100,7 @@ These names describe different scopes: For a decayed window, the manual gives a geometric truncation bound. If `0 <= lambda < 1`, $$ -\|S_W-S_{infty}\|_1 \leq \frac{\lambda^W}{1-\lambda}\|s\|_{infty}. +\|S_W-S_{\infty}\|_1 \leq \frac{\lambda^W}{1-\lambda}\|s\|_{\infty}. $$ The expression describes the history approximation. It does not by itself establish a numerical logical-fidelity loss or a hardware-control guarantee. diff --git a/source/public/blog/08_autodecoder_cascade.md b/source/public/blog/08_autodecoder_cascade.md index 2447be39..fd349d00 100644 --- a/source/public/blog/08_autodecoder_cascade.md +++ b/source/public/blog/08_autodecoder_cascade.md @@ -118,6 +118,8 @@ This record makes a routing decision explainable. It also prevents an accidental The manual documents Community, Pro, and Enterprise distance caps of 7, 19, and 63, with GPU batch paths gated by Enterprise. Token verification is offline, performed in the Rust core, using Ed25519. `is_available()` reports hardware; it does not grant a license tier. These are separate decisions and should stay separate in diagnostics and documentation. +> **Update (1.0.1), November 2026:** every paid licence, Pro or Enterprise, unlocks GPU batch decoding. + License input is explicit: keys arrive through `set_license_key()` (read back with `get_license_info()`), through the `QECTOR_LICENSE_KEY` or `QECTOR_LICENSE_FILE` environment variables, or through `~/.qector/license.key`. `QECTOR_ENFORCE=1` and `QECTOR_SILENT=1` control strictness and banner output. ## 9. The right claim about orchestration diff --git a/source/public/blog/09_gpu_acceleration.md b/source/public/blog/09_gpu_acceleration.md index f4b3e930..2f0f19aa 100644 --- a/source/public/blog/09_gpu_acceleration.md +++ b/source/public/blog/09_gpu_acceleration.md @@ -80,6 +80,8 @@ The same distinction applies to `CUDABpOsdDecoder`. It is a batched qLDPC path; `is_available()` answers whether the local runtime can see the relevant hardware. It does not answer whether the caller is licensed to construct the decoder. The v1.0.0 tier table documents GPU-enabled paths under the Enterprise tier, while distance caps are enforced in the Rust core. +> **Update (1.0.1), November 2026:** every paid licence, Pro or Enterprise, unlocks GPU batch decoding. + The published v1.0.0 wheels are CPU-only: 15 wheels on PyPI (CPython 3.9 through 3.13; Windows x86_64, manylinux x86_64, macOS arm64) with no CUDA binary inside (verified: each wheel carries a single native module of about 4 MB). CUDA and OpenCL are build-time feature gates, not published wheels; OpenCL remains a documented source-build path. Whether the local runtime can actually use a GPU is answered at runtime by `cuda_is_available()`, which the CPU fallback and the `AutoDecoder` controller consult before selecting a path. The manual also records a known GPU-context limitation: the native CUDA path and CuPy can use different CUDA contexts, and an intermittent access violation was observed under load on one tested configuration. The documented workaround is to run those workloads in separate processes, or hide the device for a monolithic suite. diff --git a/source/public/blog/10_benchmarks_architecture.md b/source/public/blog/10_benchmarks_architecture.md index 89932731..c48469a6 100644 --- a/source/public/blog/10_benchmarks_architecture.md +++ b/source/public/blog/10_benchmarks_architecture.md @@ -83,7 +83,7 @@ Every report should carry: | Environment | OS, CPU, RAM, Python/Rust/package versions, GPU/runtime, commit | | Artifact | Raw JSON/CSV path and SHA-256 | -The only published comparative LER figure is the v1.0.0 changelog's 120-test suite against PyMatching, reported with a stated 4.5x margin. The head-to-head numbers include repetition-code distance 3 at p=0.01, where QECTOR records 0.00392 against PyMatching's 0.00317. Any new comparison should hold the harness constant the same way. +The only published comparative LER figure is the v1.0.0 changelog's 120-test suite against PyMatching. The head-to-head numbers include repetition-code distance 3 at p=0.01, where 12 000 seeded shots give `ler_qector_blossom = 0.00392` against `ler_pymatching = 0.00317`: a delta of 0.00075 against a gate of `+1e-3` (source: [decoder CHANGELOG, section 1.0.0](https://github.com/GuillaumeLessard/qector-decoder/blob/main/CHANGELOG.md)). Any new comparison should hold the harness constant the same way. ## 5. Wilson intervals and comparability diff --git a/source/public/blog/15_logical_error_rates.md b/source/public/blog/15_logical_error_rates.md index 30ef3822..233ae3f1 100644 --- a/source/public/blog/15_logical_error_rates.md +++ b/source/public/blog/15_logical_error_rates.md @@ -70,7 +70,7 @@ Then the decoder row is the changing factor. Mixing a code-capacity QECTOR run w ## 5. An example of a published comparison -The v1.0.0 package changelog ships a 120-test LER suite against PyMatching on a repetition code at `d=3` and `p=0.01`. It reports `ler_qector=0.00392` and `ler_pymatching=0.00317`, described as agreeing within a declared 4.5x margin. +The v1.0.0 package changelog ships a 120-test LER suite against PyMatching on a repetition code at `d=3` and `p=0.01`. Over 12 000 seeded shots it reports `ler_qector_blossom=0.00392` and `ler_pymatching=0.00317`: a delta of 0.00075, inside the declared `+1e-3` gate (source: [decoder CHANGELOG, section 1.0.0](https://github.com/GuillaumeLessard/qector-decoder/blob/main/CHANGELOG.md)). These are measurements on one fixed workload, not universal claims. Their value is the discipline behind them: both decoders ran the same workload with the same noise value, so the comparison isolates the decoder rather than the setup. diff --git a/source/public/blog/16_decoder_selection.md b/source/public/blog/16_decoder_selection.md index b5063921..ef95b65e 100644 --- a/source/public/blog/16_decoder_selection.md +++ b/source/public/blog/16_decoder_selection.md @@ -111,7 +111,7 @@ For a single online round with a tight latency budget, the same physical code mi ## 7. Do not confuse API stability with algorithmic scope -Version 1.0.0 freezes a stable surface for the whole 1.x line. Stable symbols include `UnionFindDecoder`, `BlossomDecoder`, `SparseBlossomDecoder`, `NativeAutoDecoder`, the four `generate_*_code_checks` helpers, `set_license_key`, `get_license_info`, the Sinter and qiskit-qec entry points, and `DecodeResult`. +Version 1.0.0 freezes a stable surface for the whole 1.x line. Stable symbols include `UnionFindDecoder`, `BlossomDecoder`, `SparseBlossomDecoder`, `NativeAutoDecoder`, the five `generate_*_code_checks` helpers, `set_license_key`, `get_license_info`, the Sinter and qiskit-qec entry points, and `DecodeResult`. Provisional surfaces stay supported and tested, but their exact shape may change with a changelog note. This group includes BP-OSD tuning kwargs, GPU batch constructors, and network surfaces. diff --git a/source/public/blog/19_release_licensing.md b/source/public/blog/19_release_licensing.md index 2abfde8e..128532cc 100644 --- a/source/public/blog/19_release_licensing.md +++ b/source/public/blog/19_release_licensing.md @@ -20,7 +20,7 @@ Stable symbols for the whole 1.x line include: ```text UnionFindDecoder, BlossomDecoder, SparseBlossomDecoder NativeAutoDecoder -the four generate_*_code_checks helpers +the five generate_*_code_checks helpers set_license_key, get_license_info the Sinter and qiskit-qec entry points DecodeResult @@ -53,6 +53,8 @@ The v1.0.0 manual documents these distance caps: | Pro | 19 | No | | Enterprise | 63 | Yes | +> **Update (1.0.1), November 2026:** every paid licence, Pro or Enterprise, unlocks GPU batch decoding. + Tokens are verified offline in the Rust core using Ed25519, with expiry and an offline revocation list. Decoding never makes a blocking network call. Key resolution order: diff --git a/source/public/docs/reference.md b/source/public/docs/reference.md index cf4671d5..96e42a91 100644 --- a/source/public/docs/reference.md +++ b/source/public/docs/reference.md @@ -1,8 +1,8 @@ # QECTOR Decoder v3 Reference -Version: 1.0.0 -Reference manual: [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046) -Package: `qector-decoder-v3==1.0.0` +Version: 1.0.1 +Reference manual (v1.0.0): [10.5281/zenodo.21941046](https://doi.org/10.5281/zenodo.21941046) +Package: `qector-decoder-v3==1.0.1` This page is the web companion to the reference manual. The PDF is normative for the complete mathematical proofs, implementation contracts, evidence anchors, limitations, and reproduction commands. diff --git a/source/public/sitemap.xml b/source/public/sitemap.xml deleted file mode 100644 index 152a9fc6..00000000 --- a/source/public/sitemap.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - https://qector.store/2026-11-06weekly1.0 - https://qector.store/decoder/2026-11-06weekly0.9 - https://qector.store/evidence/2026-11-06monthly0.8 - https://qector.store/workbench/2026-11-06monthly0.8 - https://qector.store/pricing/2026-11-06monthly0.8 - - - - - https://qector.store/fr/pricing/2026-11-06monthly0.8 - - - - - https://qector.store/commercial/2026-11-06monthly0.7 - https://qector.store/about/2026-11-06monthly0.7 - https://qector.store/guillaume-lessard/2026-11-06monthly0.7 - - https://qector.store/mcp-server/2026-11-06monthly0.6 - https://qector.store/claude-plugin/2026-11-06weekly0.8 - https://qector.store/changelog/2026-11-06weekly0.6 - https://qector.store/contact/2026-11-06monthly0.5 - https://qector.store/docs/2026-11-06monthly0.5 - https://qector.store/manual/2026-11-06monthly0.4 - https://qector.store/technical-reference/2026-11-06monthly0.4 - https://qector.store/installer/2026-11-06monthly0.4 - https://qector.store/license/2026-11-06yearly0.3 - https://qector.store/refund/2026-11-06yearly0.3 - https://qector.store/blog/2026-11-06weekly0.8 - https://qector.store/blog/01QecFoundations/2026-11-06monthly0.6 - https://qector.store/blog/02BlossomMwpmExact/2026-11-06monthly0.6 - https://qector.store/blog/03SparseBlossomEventDriven/2026-11-06monthly0.6 - https://qector.store/blog/04FastUnionFind/2026-11-06monthly0.6 - https://qector.store/blog/05BpOsdQldpc/2026-11-06monthly0.6 - https://qector.store/blog/06AmbiguityGnnNeural/2026-11-06monthly0.6 - https://qector.store/blog/07SpaceTimeDecoder/2026-11-06monthly0.6 - https://qector.store/blog/08AutoDecoderCascade/2026-11-06monthly0.6 - https://qector.store/blog/09GpuAcceleration/2026-11-06monthly0.6 - https://qector.store/blog/10BenchmarksArchitecture/2026-11-06monthly0.6 - https://qector.store/blog/11SteaneWorkedDecode/2026-11-06monthly0.6 - https://qector.store/blog/12RotatedSurfaceD3/2026-11-06monthly0.6 - https://qector.store/blog/13DemPipeline/2026-11-06monthly0.6 - https://qector.store/blog/14WeightedDecoding/2026-11-06monthly0.6 - https://qector.store/blog/15LogicalErrorRates/2026-11-06monthly0.6 - https://qector.store/blog/16DecoderSelection/2026-11-06monthly0.6 - https://qector.store/blog/17ReproducibleBenchmarks/2026-11-06monthly0.6 - https://qector.store/blog/18RustPyo3Architecture/2026-11-06monthly0.6 - https://qector.store/blog/19ReleaseLicensing/2026-11-06monthly0.6 - https://qector.store/blog/20EcosystemIntegration/2026-11-06monthly0.6 - - - - diff --git a/source/scripts/deploy-pages.mjs b/source/scripts/deploy-pages.mjs new file mode 100644 index 00000000..ecf516db --- /dev/null +++ b/source/scripts/deploy-pages.mjs @@ -0,0 +1,123 @@ +#!/usr/bin/env node +// Publish dist/ to the `gh-pages` branch, the branch GitHub Pages serves. +// +// Why a branch: Pages used to serve the root of `main`, which put the React +// source, the Workers and their tests on qector.store and left every old +// build's hashed files in the repository. The branch holds the built site and +// nothing else, and needs no GitHub Actions minutes. +// +// Usage, from source/: +// npm run build && npm run deploy commit to the local branch only +// npm run build && npm run deploy -- --push also push, which publishes +// +// Tabs that were open before a deploy keep working: the hashed files of the +// previous build are kept for one more generation (.deploy-manifest.json +// records which files belong to the current one). + +import { execFileSync } from 'node:child_process'; +import { cpSync, existsSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, rmSync, writeFileSync } from 'node:fs'; +import { tmpdir } from 'node:os'; +import { join, resolve } from 'node:path'; + +const BRANCH = 'gh-pages'; +const MANIFEST = '.deploy-manifest.json'; +const sourceDir = resolve(import.meta.dirname, '..'); +const repo = resolve(sourceDir, '..'); +const dist = join(sourceDir, 'dist'); +const push = process.argv.includes('--push'); + +const git = (args, cwd = repo) => execFileSync('git', args, { cwd, encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'] }).trim(); +const tryGit = (args, cwd) => { + try { + return git(args, cwd); + } catch { + return null; + } +}; +const fail = (message) => { + console.error(`deploy: ${message}`); + process.exit(1); +}; + +// ── What is about to be published ─────────────────────────────────────────── +for (const required of ['index.html', '404.html', 'CNAME', '.nojekyll', 'sitemap.xml', 'assets']) { + if (!existsSync(join(dist, required))) fail(`dist/${required} is missing. Run \`npm run build\` first.`); +} +// A build without the prerender step has no page footer in its route shells. +if (!readFileSync(join(dist, 'pricing', 'index.html'), 'utf8').includes(' { + tryGit(['worktree', 'remove', '--force', work]); + rmSync(work, { recursive: true, force: true }); +}; + +try { + tryGit(['fetch', '--quiet', 'origin', BRANCH]); + const base = tryGit(['rev-parse', '--verify', '--quiet', `origin/${BRANCH}`]) || tryGit(['rev-parse', '--verify', '--quiet', BRANCH]); + if (base) { + git(['worktree', 'add', '--quiet', '--force', '-B', BRANCH, work, base]); + } else { + git(['worktree', 'add', '--quiet', '--detach', work]); + git(['checkout', '--quiet', '--orphan', BRANCH], work); + } + + // Hashed files of the build that is live right now: kept for one generation. + // Publishing the same build twice keeps what was already being kept. + let previous = []; + try { + const manifest = JSON.parse(readFileSync(join(work, MANIFEST), 'utf8')); + const live = manifest.assets ?? []; + const sameBuild = live.length === assets.length && live.every((name) => assets.includes(name)); + previous = sameBuild ? manifest.previous_assets ?? [] : live; + } catch { + // First deploy with this script: nothing to carry over. + } + const carried = join(work, '..', `${work.split('/').pop()}-carried`); + mkdirSync(carried, { recursive: true }); + const kept = []; + for (const name of previous) { + const from = join(work, 'assets', name); + if (!assets.includes(name) && /^[\w.-]+$/.test(name) && existsSync(from)) { + cpSync(from, join(carried, name)); + kept.push(name); + } + } + + // Replace the tree with the new build. + for (const entry of readdirSync(work)) { + if (entry !== '.git') rmSync(join(work, entry), { recursive: true, force: true }); + } + cpSync(dist, work, { recursive: true }); + for (const name of kept) cpSync(join(carried, name), join(work, 'assets', name)); + rmSync(carried, { recursive: true, force: true }); + writeFileSync( + join(work, MANIFEST), + `${JSON.stringify({ source_commit: `${commit}${dirty ? '+uncommitted' : ''}`, assets, previous_assets: kept.sort() }, null, 1)}\n`, + ); + + git(['add', '--all'], work); + if (git(['status', '--porcelain'], work) === '') { + console.log('deploy: the branch already holds this build; nothing to publish.'); + } else { + git(['commit', '--quiet', '-m', `deploy: site at ${commit}${dirty ? ' (plus uncommitted changes)' : ''}`], work); + console.log(`deploy: committed to ${BRANCH} (${assets.length} hashed files, ${kept.length} kept from the previous build).`); + console.log(git(['show', '--stat', '--format=%h %s', 'HEAD'], work).split('\n').slice(-1)[0]); + } + + if (push) { + git(['push', 'origin', `${BRANCH}:${BRANCH}`], work); + console.log(`deploy: pushed. GitHub Pages publishes ${BRANCH} within a minute or two.`); + } else { + console.log(`deploy: not pushed. Review with \`git log -1 --stat ${BRANCH}\`, then run \`npm run deploy -- --push\`.`); + } +} finally { + cleanup(); +} diff --git a/source/scripts/og-images.mjs b/source/scripts/og-images.mjs index f5c0b4b9..1c640503 100644 --- a/source/scripts/og-images.mjs +++ b/source/scripts/og-images.mjs @@ -17,6 +17,7 @@ const dist = join(root, 'dist'); const out = join(root, 'public', 'og'); mkdirSync(out, { recursive: true }); const logo = `data:image/png;base64,${readFileSync(join(root, 'public/images/logo.png')).toString('base64')}`; +const inter = `data:font/woff2;base64,${readFileSync(join(root, 'node_modules/@fontsource-variable/inter/files/inter-latin-wght-normal.woff2')).toString('base64')}`; export function slugFor(route) { return route === '/' ? 'home' : route.replace(/^\//, '').replace(/\//g, '--'); @@ -45,8 +46,9 @@ function section(route) { function card(title, description, label) { return `
    Skip to main content
    No software telemetry · No ad networks · No data sold · Updated 6 November 2026

    Privacy Policy

    QECTOR collects only what it needs to sell licences and answer you. The decoder software sends nothing to us: licences are verified offline.

    Last updated 6 November 2026.

    Version française

    1. Who is responsible

    QECTOR is operated by Guillaume Lessard, sole proprietor trading as iD01t Productions, 288 boul. des Ormeaux, Longueuil, Québec, Canada J4L 1J4.

    Guillaume Lessard is the person in charge of the protection of personal information. Contact: admin@qector.store, subject line "Privacy".

    2. The software collects nothing

    The qector-decoder-v3 package, the Claude plugin and the Workbench run locally. They send no telemetry, usage data, syndromes, matrices or circuits to us, and licence tokens are verified offline with no network call.

    The only exception is optional usage-based billing, which exists only under a signed Enterprise agreement and is switched off with QECTOR_OFFLINE=1.

    3. What we collect, and why

    We do not use your information for advertising, we do not sell or rent it, and we make no decision about you by automated means alone.

    InformationPurpose
    Purchase: name, organisation, e-mail, billing address, tax number (if given), plan and amountSell the licence, issue invoices and tax receipts, and meet tax law. Card details go to Stripe only; we never see them.
    Licence record: e-mail, receipt id, plan, licence token, expiry, refund or revocation statusDeliver and reissue tokens, process renewals and refunds, and publish revoked receipt ids.
    Messages: what you send by e-mail, the contact form (which opens your own e-mail program) or a Calendly bookingAnswer you and provide support.
    Technical data: IP address, browser type and the pages requested, in our hosting providers’ logs; aggregate, cookieless page statistics (Cloudflare Web Analytics)Deliver the website, protect it from abuse and see which pages are used.

    5. Service providers and transfers outside Québec

    We use the providers below. Each receives only what its service needs and is bound by its own privacy and security commitments. Some of them store or process information outside Québec and Canada, mainly in the United States. Before relying on a provider, we assess whether the information will receive adequate protection.

    ProviderUse, and where
    StripePayments, invoices and tax; United States and Ireland.
    CloudflareWebsite delivery and security, and the licence service that stores licence records; global network, United States.
    GoogleSending licence e-mails (Gmail); United States.
    GitHubWebsite hosting (GitHub Pages) and the software’s source and releases; United States.
    CalendlyBooking calls from the Contact and Founder pages; United States.

    6. Cookies and similar technologies

    QECTOR sets no cookies and runs no advertising trackers. We use Cloudflare Web Analytics, which is cookieless: it counts page views and load times in aggregate, without cookies, fingerprinting or cross-site tracking. Some third-party features may set their own cookies: Stripe’s script on the Home and Pricing pages (fraud prevention), the Calendly widget on the Contact and Founder pages, and Cloudflare security cookies. Fonts are served from qector.store itself. Some pages ask PyPI for the latest version number, so PyPI sees your IP address.

    7. How long we keep it

    When information is no longer needed, we delete it or make it anonymous.

    • Purchase and licence records: for the life of the licence, then 6 years after the end of the tax year they relate to, as Québec and Canadian tax law requires.
    • Messages and bookings: 3 years after the last exchange, unless they are part of a purchase record.
    • Hosting logs: kept by our providers under their own policies, usually days to months; we do not keep separate copies.

    8. Security and incidents

    Access to licence records and accounts is limited to the person in charge and protected with strong authentication. Licence tokens are signed with a private key that never leaves controlled systems.

    We keep a register of confidentiality incidents. If an incident presents a risk of serious injury, we notify the Commission d’accès à l’information du Québec and the people affected as soon as possible.

    9. Your rights

    You may ask to access the personal information we hold about you, to correct it, to receive it in a structured, commonly used technological format, to have it deleted or de-indexed where the law allows, and to withdraw your consent. Write to admin@qector.store. We answer within 30 days, free of charge.

    If you are not satisfied, you may complain to the Commission d’accès à l’information du Québec, to the Office of the Privacy Commissioner of Canada, or to the data protection authority where you live.

    10. Children

    Our services are meant for professionals and researchers. We do not knowingly collect information from anyone under 14.

    11. Changes

    We will post any change here with a new date. If a change affects how we use information you already gave us, we will tell customers by e-mail and ask for consent where the law requires it.

    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 diff --git a/og/claude-plugin.jpg b/og/claude-plugin.jpg deleted file mode 100644 index 371f079b56d7231ac16a47e15561de49be14950c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66548 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 diff --git a/og/compare.jpg b/og/compare.jpg deleted file mode 100644 index 681b0b883141b2f7ddfdeb69e4e964e76b38e953..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66737 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 lqq z-AbRbYf}PZCkZXGgM1PX`9u2oaMm%UIA^=jQbu-G!+QP`LZYzeM}~L<9}47l@VFy` zURyXZ8XPTiDqNAZQ~xP?9DPfBU5Qo*PL-SF8{?&N^NFOIThw(J;QqI?ZN4ha$dj<# zQ~b+p(fn;n@93Uk)IRKnp?GD3oI3Lho;!cQF_)??VJ1JmeRD$k(}ZVJZMKg$eu5zx0qK4{Sg|_?ix$8@Z-hM%!qXbr3T`MpRCbVdE zkDB^H3ruUm4^{?)0whunMw&&!;(p`CQH7Q!G(u3hr@!8TZu9x;Jw{?5l4LIPlbPW7 z$0;o~oLWLp4~()`mhbq5_CBR+6aoo;eH0$|6(6}*98|%AOlvW+q4Ar`MP&dNm_3lY zwzIZ$^!-hG2fSaDlmzu6ez8!SGjHun&WOUJXw1oT0vS}ReYF;E{~swU*14#7;_Dn4 za3p@O1&h)F)#OxVrEG)sZ7i2uH)d!dd!56)EwE2SoHSyw_?uudI$<$r2j=ExN~P@5 z$Pxt>97c~HKE6p~9N%FjE=1t}Sr|fo|6Zk4MjY$Ue19%eE;~o>YfH)N^y*X}c;JRv z+lN|i-5AB5Q*lrOuW0a=LQvCJo}$%Z}`!3VBj$=2wSY3C5;J1+ zj`WthJ7V7y6P@G*x!iy`sz!Q%Z&fm(YsZaYDQ#d8q^M#s zQ^JZ=wQpHAV{}xHP{|4J)WpL*M+FhZ%B|{x)rs!dsHi*NsSCXF!#eS?T0XL6>Xl#$n6I<#r^zZPrDa| zr*_!&ej*RXzzDN_vGVJqqMAp>TDPrs#I_j4qJ*i~bx~7I*9+s2AO-HrC5yK$zNThd zG8c+$+dlfdi$`FI3WwBr@Zb9jkAO~UvjOxMo{}lyILM*dL_^83Y(TB8y9LwNwnPZ} zI<&OIJN0{K+=Y}p-ey(-R2UaKqXguocu$MDVtc1?Cueq9EL%=dUmfA~ZkM0NT?b2P zzX-MKKFuoYEafsP<-Dux3u*ux~!@HGW%L_u>kbN z`m%8v{9)l6Y*nU=8DPH`Hbi%$c@0g3MtJYu_wIH}i5d|{ikZ0{_4;Ay1#2#~7fu$( z_sS^=gv(xwSap}FZQwk{ZW)x}ZT*-}E9VlJ+J~Hi-u)HyY? z-tKQU1@{r-1K*s5L0=E9G%cHC=4FMY08hWOBDN*fH8mF)fuk(6M#i3(Z~7VJy;ZLl zV5#U{&&l1%@4iJ5e^NEU+iE;e7UF~G5mj^vGw9*lUujUV3S0}V^lq$MzSTuTT7Ly= z%1ccfB*-GD?*>&6BnPvn!~&9nz{=bA2?B6>g0DJ$a*@84To1iYq$j;v$%@K_XH|1P zmw}#X(=7W2I6-($p3gf>GbCG|GH!n4$!j%7A@eb?wH+u?79t1b)diw6v$FN&#gATe zvfQ$R^@J6qOeoVUu*ekc@-Y~I30oQJmai>S50)>8N?^l>c$_E)3cftPWx_G*LfUb? z`v{uf;us_z|8n}*)Zi#jo}245hw8Tv6W3CR=P!R2kkKD=jjBPWB#vk(%c^v&XT*Y} zIfY0$hvCnfr2CwBOn(q%40+8ns#!p|_c+9Slm#ACBsx5U4eV@A@GU#@5DN6DC@}X_ zR;$wi&3RL9h=atuj_bx3-!HU5Sz{W~cIKQJU;Wmu6u%-pdMHPOl@RVV)S_nkVa3BW zbI3)pXKFW%c@SAOi<;MGr(M=|mmb+%so`bGe!VZVR}~C6WF^!Dy!K^rMl{#2_Q0fc z-Jwnb4V7MrLu{%?g!`+wtLN-oBeXXytFw4hJf;Iuek@D>*KbZqe3BHF3K)d5B5C&Y9)S_TC#- z!7Dt6E4N>5@t1V1O>WbltYAmhp=ke~Ip(`|6n3Fzz;yE#y`7($Nlexix|1F;=qNQb zJ#t_@k;fTgExj84<&+BX%k&Gq=bQ#ud*ln>P0VnJVUALxmRM)guTM-1pI0e1KfOG}-M>>7)V>FEnLFxz)|`hP_TEOT-CQ@c zajP!sNTMf6<3`nv3^+Mg_cyy1_6~7zrG@7CMGf>gU{}UW?L`xk+nni%fw&RqF;27o zeAN-eLRzlxTKJQ@x+B|U{cg_j#~isReb+;lvEBUqHoftoJ1#UER3EF~AAXn)jbyHS zvzfH2(a<@sQj^YMuYb%MGEd2vLY0+PF?yffl%1Uuk-cOJqg5tS77dIiUX=K{^xf>> zD7|3AssQQ&EvQC#XGRoOr^j?lMH~bhe1^X|U@tjqn9 zU#1pP`>#u%GE0(Db4D_A%)uh^skpx%IUo|lZ+AR(v|Nlk=xG?nO%~Y znr#zj3Z`A2P#U<^2AgFYUEszj*xH(EQH7$W zRdwMhZj=TPhs4meIaf%IlW9|G`7Wc_fqiS$kJgvV0p@N{iuJcaJ<2Z@M`5lo@N+TA z0M&@$6SiZjEr-KMwk7$57|G_kLod*x7lNH<|Hchii@f|1!WlN;-B(A{q05HvOll-% zMJp+pZB{YL6{+2ChC(DG=D0Sp4d9SDNv4=IdP-iejFHKRo1^&*_hDHx@O_RPF#Qz) z-B>v%@P12oUy@T5L6(l;d#D=WgN}TNVQ@HmZhA0`0~{}&jBV&}Dd9U>mafG+G&|%b zvn*2`=9tMX>F<_T=mNm+Mv0FJ7cEj{X`Vn|Q5Eamu=g(o1C zR3l<N{F2=t1K+B`5_?mZNJ>;MG3}0(`fv z7$F@sNT#|rACYoZ4X&c6CM_ak%x$hgArbg_=1om*0@V_+zu-+KV`^twP*HDwZUJv$ zswA@fxi0rR1%2R#$+8oybD!9JD z@qBR|`FG|;vs0e;0pOiq>AcwAWdQ)ti{7C;&&0uetOURU{=U5E3tXl1X2)H5o>e|? zb6j)(ZToRi0@ve8|8zEh8n6cWCk+5n0lNM-3s4+w0QLVGNw`n{V(@>>gVNaulYM!? z+do4|>B`?s00dnSAgl7bCC>TyKORd!@qfk=zzmLkz!e6W(OF~so(^P`|C{M>)<3ug z{*UQEcFx1^>2Th?IGAV6_}?`ha2!*-JfrvT9#jG>bSTNFKAaDnvr%-$0+n?gbMm~% z_-1X}^guY^JLv0cVD#bQsTBI(W^>e2ssF|BnDKe=jI! zfzt1B03lw^CeDo%;NP>7xEi<-fB)L~boiYH(A~e7H8;*@&F?9NEAhA6k$1!xoCw4BOp!1*k^U?tGT%P30Utjg=6P zWNJbd-FxxhHM!d(^I~~ki82#g(_SX+kRYj8oN-XH)eui) zlT3_`$%+~GfS}hOC0NZ+7j6!Z#ORiQz4QR*zlA?qkk6u1)jdsiXjV%?%Paz^2UZ~ z@x+p%qD{h2#UYSXaQEDdEqa$0`pe$2@?@TAeBY9Ly>!O;FT54`2@xrAr+KM2`Krg} z70mt|73O+Da}srXa*hmUcwq#eH)*?O1x1psCRa*P*-L+xh5OAXU`h&j-;(2}qEC>I zoh|D+HW*Aw)C`Rk1rQSljrT6fI~3$j?L*U z9M|2LU+2uj>+aaSu*fv$d$b{`+Kd4_jI1C!Wn_1BT}~&~*A5E>=NFXJ$m!=7=BoQk z+V>qf75ux@9V6w`xjPUUi5MuomMl@|KKZLZ2n59ITo+_K*JGJdrf+$WZn^pmv4XX% z%0{d>IivB@iQM!yJf78yf_Q~acIPFT-L!9XKT)=sW)(Eg^G6~U^bu(#5=Wm@MMP|{ zJ`7%UNWaaAWStV?CR2-BlEy!V^XaeZ(CZ1`fQiMxI*n~%U5j-kt?ezB=$*Go?>q0)(@n(#UbaVLZkqIljI3*#{oxByN(N^>>2_tshGh zO`ThHgD2GOi@}B^BeRjnsN|l|wo}#c^^yoXDMs&8Duq+hTf$SY&J_-LJxKNShNgSY z?K%Eiy73(nP>-~>hGPBhK1kU>`C#*q1;2RjLmQ%?fM_fMS#R7I4NU9^<^`=!G%Xi; z6zv-3Qq>X6(QINq)@z&{$L4e2iscBSqr+20jaT}H8f3Vwdqz(-uKa+^N_-aSaOC>|wX zHEzjR{3}6RF;@nps3E(LlytA*+3@*J=+0|2-SESk(@Vc6gGzDu#`5CRgmSj)Bp`T?y)I9o+)PL_8c@u%=!e!JN?Ah#t_h zTUtznpz?vT8m`h01&{Idf&-$gTD=`QsPyaj+V2K;8{|J!7oE)tjLjypFxB-HtS?P8 zKh@t{F#cx=-p5Z4Sqwzy>;go;l?H#bM~!7tw5N`{kzR33B>xvk!?ZUePuq7fc;K~ zxG%5?)OQrhwbc4mulFp}i4$-wK@_o``k+W_f1XSkih_dKxIKfBHO9)UPJL;;)8S+T5( zJ?3I_`1_o7{|v&}Msu-Q{Ii$bKRc^k;J7%Z-MdGkU)OPKLL^3A4PvloAQYMh?}dsN z2hOuaz%Q>Z9+2Kc^A5zty7e~wg|{~UD-5G4K5e({Z5L@rWoZyv9As+Xjd(aO6_Kdi z^)bJ2(zRuxSXDoF!fpKp_d0T3>hJG(*k0*rJq}p-(FFc)sU&b++ zW8xmC;3Nm_}fzw0A@*_WY4D?PAIH6}>y=HYQOk6Dkn)KxcQ zQPkKA7pz~69%>*o&aJPh=6>9syqon559PQ03$KcAqlN94f0EXKdZTs;2nS%)EnSVcWtwQuI*f zFT8xU6|s)$72PC&VoJ%%7YpmEqKCj8Ia+O{p`&_EH|ZQ-{V}}i*3PN^QHL$6eDDI_ zjF{B%2<=IV$6)sEjG>N=b!YR!uL6?6!!E!8OJw4l!>!;ko`XaBHTOc-jdir}1x}%k z(-mEhbDV)2>x#k`IGa08XJ03jLklSi@fd)?+PTx+hHCZ+u0^ zRE?iVT{GglTK9@aW#31Wp54?X{I+l5<88}0!(JWA+L_3$o4PL1&%3$B26tZH8&Fq- znoWIrYd2x-AuXOk^+V6eFY~QeQv_p-hk&{ zd>O_b6F(E3P61Tt5r%(M(+&vB>YG*B6d`OFLH}V^YBxRHAT-dHmMOOBB;(^(cRSBJ zTywExq2k>gC2<1dx!X>oErIiwqvVb5soi>77z{I zk)XPUi@f*GN%#CDeDMYN{GW$g|MR5^ciKE#PX0R%w*a88xC8NjeYpJtN7_dL85kf( z{r89<{}Q7BVduY5A_qjlbNTT;GALRG5a51`dXzY!_(J+V6R>|LE(EW$Y}^kN*W6@)H2dUC zpK`7fQNlGD0PAmQ8&GZFV4pW7nal+uC7c4_pT5E&!~r{lcqY!D(}RgVoFM6S1y(gfEXE^ zP6p7;oYQso{p=<6MP)#vaTyRqab6?<2xoNsC#3*G0RI5FG8DL903J@VJy%f3%HV1N P++8qDaR!3muc7||_~SZz diff --git a/og/contact.jpg b/og/contact.jpg deleted file mode 100644 index 7cf5b420fbc1fcb4c1d49df3b8b7f3636ab446c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32663 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

    7!-iShPQ?gf{f-`&3PW;L^~a{HT| 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%0DJ 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 z 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 diff --git a/og/fr--license-agreement.jpg b/og/fr--license-agreement.jpg deleted file mode 100644 index 433bdbbc8987812978ed2248786ef64bd105db45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53522 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 bB9NK^GD2l{hXL^^JwSo5^B9P}-{|`X8Agil diff --git a/og/fr--pricing.jpg b/og/fr--pricing.jpg deleted file mode 100644 index c1b6e0dd0add3b9576cf85a6bd9892b9ae0cc285..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40937 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ÙAogzp-~pIktOl z9m^GJsRjFM&gk2^4s0};*l<~4aWhPeUiM}$+XK>(__6e)<(aqs)lR`6mmpeg^;j@d zueZdt$DsBp*4M!}6xC&yRG%kbbE;|eg|S%4Z^W~Ks}0#>xqRyhqg-SmM!2%Thl)|& zu@0NK`N_O5lMg!@zf2!?fj2Of27utGsHC^hnejN8Z0#KbY9AXle2|_gO7Dq6H5`2# zB)nt9xZdeRw>3teO-p=C98PnxWwJ)5`g^w_`|2yb2Y@B}lilkl_^UsVndQh5haz(% zi;T-kdm{++AVNb)(A8-s&RjP;@IYcs@b*jJBCuYi;c`=G<@$<=ywTL2;^o8k#iNd( z`r(?VRa+*=>!ATh|8~9{KfLM3g9}`)E}SJCH#IY(gGh0{0h9VUr>l1NyHP37-bd$8c$(fQG94>RlJ`m1R z3RpC{d2!Z_@6{Dzt{nhUAfVz(=I8S>FFvLD4j%D?z28xk9S}jqLItVCn;8?wPU(y) zc%IdjYpBl$c=1TiOQMoq+q1tlx$D~v50l1VxY4a#JL)Iajm*5OE@}%|9Y;@gxHxo? zER?RY#gMu$HQ$An(tF8H&xPqc3bTGHq`4;y(2qX?6s8z;-(}7O3q~35`{JSQF5+X% zMvgP2dyk(voPk?kxV&#eGK@7%8wLY( zs@=xhf(bvD5x~rai$(q-HXf>B>>1AhMtVx6$nz#_3J-(gQ_zSSno$F#b`0Clm^NiB0xoZWV%<+BrW zu2bFuG&4__V25?G`%xyR!1WnCe?qUS7&cXnZlzKrxf44bQ}!8x2UP;I?!tXItUYCq z;Sds>vl*A%{JI9XlB8)noyRF!1D8IlSJ44yXTb^BJuaAY@rhJbBk~@Hsh6>2(P{mi z%aLf~tG#A+wJR7tl54(@R5-_A)j@6sr~P<8>w~q_pzg)?xnaJg!U54_w)}xwbQ+rK z;#ti@>pvn&7AYmpA()#cz@=i|GM+HD^+$nu&Am$BnF3n%ux3xhH1sUF(Lqt#6pyBa zh=~aYsb@y!&%C?ySdcqhqTjyr0g?9efX{sD&s;4$NZ498vNX?IE`Ir{CzNq&;6RDB zdZczA6ms;lL^jhXR^*77wvmliO$)s(3d$o?F#i5n)O8S4ITEI`o&n zsA7SK-T^3pLEmKo=-YNskjQv8!DV_;^6jHQTXzPo9^D~rya2dwW{nystxcX;iBDvq za(C8D9)vxEdCAK*VugF*9DsVk+>q-#i`E&kVJ8%_Y3>nS4&8LP9XI`1x!U9Bdc$x+ z-sIhb6g{GJs-_(2`Hh^qOZ7-;7^~(I`4tHcFRsYye#*oMA-vwx<%!{yEBS#UurLywzU zkl7Ke@C`pS=fO@iW&~X}tS)To%Sg-GD1c42Clw5Io_xMhf1v=6ZKex!=BP9DFmv-I z%D~=?X*OK_YRPrr#GpqD^X|3l6Qa3s5{&NOogM{+!nzw`blFv+0GyppqMKIlkXwef z$;GCvv!(M!s?MXe^%3@A;~35__HX3&$8Z^Ht(h=$2!0&kS{bZ zC)Z6mC3!w|y2fM4h8Y@jFKwaOi^l0muF%$X{3t&10xOEtaeu0~xVQ)nWE3mVtEEj? z^t$uK^~TWF@xfSSbos-^@9G`@nQ>)xKo=b~2#^@XtuZfg^*a1;$WAx10l30-S&?3L zpYO1~v**BA7w=R?YVTKnS$Y)qc7N=9fG^7tQbLmpcTTHbvX)PnO8nxDnFvnayxdtL zdhR4IyY5#ySwX!Z9~80muv49{KigJMr!!{98nS%wse0GI?Yj?B);nYwt}R@LPRL4P z(x6qdk)_yNym|#QC734ZHRIen-7^7{0&b#H~Q2@&2q8Sv_Zu7~?uCx3r(XE-fqbQ)KJi1dPFkaVaYTFDchZXrJE1+pbrHVQ zU<5&j=<(4))$5ITz~9hyxK>eLY*TT|3-?ZcA6T-mr_Je z2-)>cao%P(G5BW&zt@eV=aGKU*!j_${1qh%`r#;f=D<^*KCg9WZovXv_aLw{KKsyewhDpqm$omga)dZS zbzML7Tg;7)Wy5TuPP_|H9Annre8YY&tyxe%71C|{q&YXmv#%o8;pc3#x$M+-o zGy5Qez7#tBPf2BBeV=oezrQ5?DJnlXXgF`t^la6|OSX@uGJkpPn)U=^D0%tDX$(|S zxKe|SAv0#k_u}l}C1JKptXP4637bewoN@eT-Zftjtv1f8lW$AFr<;P%aR?;LpD>Gbv5Ox>E2YBL4#*1JF&H59_J-@K)VlGXmBw}J z2#4q<%oR^ud%v~vV;HcO;C7QWcKCdAw7+5=&cJz{)7ymfLT;V14IjssG7#!f%TPO- zfOoXgN%>pYevu_rBkwF^7c;)Oh_4k6h^9gXKR49gl=|W$uI!W3V`Shlvw*J>juQ?6 zrIcni6x-Wm?_CAbMBK0mwY;;V(fRp-f@*m#n11PaB(R-6Rq;_%gdK*9QhYt0bP?rq zhguWriZgxLiuGknD?4#(eX-@+0Paf?Pf)$^%FLR`oSJqwt^o%?kzw;IrpLb5_I=p0 zX&a?=%htP#)oZC~($1Z0BGwK?I@&8kM@0gmxfwE~+z7RNpZD>Brvbvt{|FnzB|f~V z3cyRY#%g9nrYyw3D(*rDx)K^rXPmcM#*-2$LF=;l3A)0()<3fK>r(jsp?K@P)Sv0cmIxFG44J0*QHtrFXc6yF^xk5`V`ehr*oxvW!B4> zPf^G6;H*lmQ^S`@uA0!niy34?AHe)VL7MNCNRptmeU!oSawDVTp~u20Ora%``piYCN}PShrBA|LNl6!w4dPeGW$XP{HgpizGV_F9Rq|VriK9jkenqrv3@;zGVxV zD}c3j2J5HgZZM*K`rU%|Fjp7+#h}IjxWgWNcB5YHMM>m&FkQVp-N<=V7PyaQ` zez2jm1F~bpL3nt);qRitN{d^`s0H-PqS(%$3_4kfbk)UX=cbjQOxO=%z(#Y=9EE1g z-p1PcLwT$dNjU?`8n3H4jNCy(X#?(I^D zAZeUY2q&KW?&?#AE@c%4J0^_i3$!zFtE?8+rPUSP8JBPGeKtwZmZn`4c6Pds zN#h*p$-;&)@qR$U`pOd1NsjsNFIwRwXni-7ZT;P})8`&4&v3fohnIFgc^L@z)yNG) zT6cR(J%eAAa)-r!H`<^B+mX{A?=(2`Z%f=xHtC=<5eTqf;yeQSZ@N%Uh1Jx|OEW~i z;vUChu+8vfPlp1Nw_zPhsp{+NgbXMm@AikFTa4l6ScQ$%;eO5E_J%wj+#-s7UnKrx z7n*)g;-lEsQry=S-^5ln>hB~Jp8V&*H-lL!FrTW2-p5;L3wx_FLOKoL``LgJD`*v= zHvw2y512z6_@h*@tjde@ajpcmWT0Ua>mlHJCcx}Qy?eTv#O69UyOhz2`t}ec?ZET( z!%C@FRgiwq-f3?4llKL$iV8DQlT#zD_M{_KtIschY2Wy(eY`F$^J6$?L^BKMSAppp z9lRPa{4_&_D^(Jh!kA@=Wt)e3wH32z6IGW_20nU{q>!)7s<)OaO6QN90xH6(bS9=o zY>Z&M1sy1_Q#fL6H(fF1od44rMhi$BDSAEX_rvZS3-cW%*2k4vFDD$OQsd+Erzj|T z+@%icZq)teLI2mofNS!xE~y(xyqemp$9ncJKMvRT()U=O_xCP7I^kv9J{{gzl^r_) z$#ku_6Hp^x;D4^X&%xT^oEYFc>x9+DSrqp~d`V$XbYpAv10)A^?w~8k5lOht-iCqu z!IyQRPlrdU9i+Q@4a8cZv8=w|TLvqIUi+LdgQgSRvS@xbyqdrBOSUiiV66&`>1KG zXx1ZKzqU1pwgn^8)dv268-A7eF_?Zs;m~P_YrNohJ_7c^^~%%vM}eP}?1AoQ7|s`d>)PNfph4bUTJ zf?vsUPAYc?Y@xNQrL0BrWq*e^Ri3Rz`e=XX&@zlJ#7PG};jfcdiF0`o!Y{cLNRQxN z=5QE6^Vq5DxEBcRwinh>1lf#|bL)4l&;KFN%5ZTN!=z9ck;cWUn%y24di2V_Ww#-H z?5x3XQ1&oaPju2<9jSSPHFiz0yk;(`NI(i1?3btjSO4;E*V3;_xtC%{uZGLkD{AT> zioDEd({hDEg-Bvl?jArMcAENzzLA|1t|<+Yj^(Ct2v(kvBY{}<>sbt=M`|=lfCQF3 z{?p6&;B3wP8*+qIT;+_TXC{CL>$??DT$uKQD}!kS#m+kbH$kk5ke|L?3bj9W?PS<# z-Y^I8ei_$3WHZgZTVfyf^zIbI9HyWSkIyv{w^b<~Y?id>Jba(N(1z4RLRci1izBPp zW!M&N@1Kih2~PJe*h!x@NVk8tAIi06dD7Ico+8)j4~mOO2>e2dMdFB4rZ;`OUw-EUKFSkm$51JIudB`h|B2W^8P zp(aoWJ#mkcirSgi%f_+a28i5=(cPzwXAR*YG)5d8Z3 zWg`67&pb}O2)0n3hM@e(UK>5E8|Hz4()dia$L2#@W$uK$bva5Kh++g#{MwZ2y4-R{shuH8>k~JpcQ_qaM>~0hY!@I-z%i3=qe&T8dIa=!`0R z0l7i-l`^fKjAFW<4|VpIMj~~~ym!@hFoXx)GONyK(20_qo75CtJvKzv|w8GC*fT5hV&#lp;!p#FIvA z3Ax|42fzP5^H>dnHSoTej)8WeU>}eqL5I9ezV*`-h9Fwp+!ldU_Hy=Q)EetAdODA! zD`zWLjrAmlX&R3g7or0L%)-I|+95jz5dze+tDKyTvL7oEyY~JaDs9%wSX^@}$nGYS@?*z@O@<8W12 z*2Br;WvDVWP3i6HUVf>Z5xpT;wUNIZE53h;G5l!|8h5mGXuPDk%uqW_#;$v}uww9D zpehumon?G25RUhDxYYMf`CLw;1bcUJggAucY3u6ke6Hhe?|>kdCw5 z)>14K6bwV_VC)Q{Uo%b4NolAC6m&&Z4!t)jqFsf*-hS2GM7B$x)a>};z!gyJYcMf`1*)NzPQ@nNKzZRt^!RNeVv$dMu$Nfvk>MZ zE0KyRo+4kU9y1tB=Y}@SYeVKJrL_9-VV%a+&=SWTmD|tU#zihGKibVH6jR&^2MQ`` zAW*x+dfPs$q~4b0yiU$o^4|WZv?su=j#H^IXSa`U8rj~+5rHt@{F&l&lSE(Bj*|@n;LN) z#YeXzrUmSLkIeC)wXwKxV#S^VsRN&;2KDfh+4Jzc(Mp?Wofg(uF_yT}VQj?$i3H1_ zdxK4}-S3h&RuOLF2v&LK5A(`vo?(geUYHjo3wm+SjUM1^!IL$f=r$qf+c&uC?oW3e zA&N7Zsa?|nnJiKwLv-ccZ`@GmtB+2$O~!|I_E>6h3wi;)@C)?`3tfj)U>GdX$zr>` z$|!~0NLOK~Q-4LuYLucU_V+z0yI}E)lm_?>iPM-y`NLt;hBhz|;3UMn!YN0|ewB!Q zG9s$aw%6QQ$TcV<^^bp+r_*hdFD&COR+!Hqf~iXQ_0=`Webh(=b(OSZ1d-_(biFg7 z`MtSjS|8y9Fa771p*G8tBS>AMmc?+wsW4>XucH-hlP_4VXZDXkoq8O%Ph>&rlGy8r}zI2`B%+5$wPF|HKX5md#gk>)}p1 zq2uSZW%d(tJ5B;6>sAJ~`mq4kv(LY%=dNcfR7~S->QS1~H_HO(&Um$I`K|zGXa2Tp zJdID!1-DKoMZLTJD)A%r8e;gxw)uUE&Gkh$yZLd(pEnZ$26RK<>?-PDzVC>P;Wp;` zV?G=Qgbs%&Rf?il4Ee_% zW#hyyvD(o-t|N*hCW<;W1k1fU=`sUL5k5p~oH#=#javwdm{qP*3GOyo+(HX(#0JHF z3&D?|_5b5yw{TD$w|@KV>kpoSL7gQ+<1t!`^S-zJDaem32ul2E0@8tiwI6-5MXgz9 z_}I>gxPi_PFQg6BbtTQLRNvdcwZ!8*D;3V)uVD$0R!5(&?6P((C99%R;2e3volsFq z>6#L&AnG>Y3KZlkH(OlU9XVz`xQG2*c?xyrO@ap(cNXF>de#&E!gUbfu{P3qZEG5> zp4*->y4C;RO0Ipv3F^}@;cD`-61ppLN(z2i;w_$k_9(k-tb+ExKk)je=Z`dJIzlQu zxtzgO?MP2DZ{wyjso$=Yr+*+Cn;a|7{6k#7ac0xpKdPQwbxujT@^6uQ)4*Dl!IMQ> zi2KiQK^S(ChnL1N#mzR)>-j&uj?^+BB8y5<8vnb#b#|>;8yygt|GRX|k4+PE=%tDSki_PaPI-th+6 z`fd>Tq9;l`L=0C_#0LPFh3>&PY!7C=o zQa_W7gFNrbll_R;f(VJI4(+czNSx4Ebygg%gWiA&!qq5p6e8lx_3eW%2m2;#qI`AUaJy^Eh_{oa9F}$RMxKG>cpFwGJF$(t65jvt@U= z>$QY1{>^jud)hD6xatXNNszY}_HdJLWN7;2jDwllT3RS&S&c7LRFh_t!EqdPjT1QO zv?{9UZ)_P_|Kv=2W=|QPVZUQrc_$B0?fzVbT;)WbU@E3w7$wN5EBN*B`8E<%wJJ&# zair!56(|zf9SduabzkEPL#_7ZwVTHcU28kZ9!k5}qqb5>Q)XJ`em(foEna z^)5EXPK$W{|C@cFUC_MjYa=&%9AiSl_@bc*61CEIm`hvU0XJ_1h9b!AM^T#i~OFc49$j^_dT2ZT; zG-IU3%#jH)l!u+gX&of)i|3u#Jn>1y)vcTaw!hW&YH&V{-QM?X?-I!Y(r){+vH zA8R4xFOa=#^mDvt)juDdwd+vna};@eXKy)>nCWPnpR9kVLA#Ica`U+;q$gP9xFYyr*4FmC6G(r1(h=7yEINro<1gX!C{W? zcwN&%A*O_&vUDfkYrdUz{|(lFYDF=B(A3KHo7SeRu*c>X@1?Y?2B^-}1`jjVryRLE zxG9Ehvxjga&ec~_P3`?kQ|l>jjlIcBR@!nnGI%_MFr~N0Qt4@Nz`mC3pWhvDmWy~< z%jcU;pE#|S?zirg(4aHemE~*|s2v#6y!tYpkl~_A%q7YFR%8)O@KOFUR4@6~P;mm8 zb(Pq+9`o0f{s=?x7Xx-DwcsW;ij{GC$Hms^(3dz~^SUFk|E)l{+}ovKy5JW1A@|MT zyoXN8{!9<3sN~lPSqooAAl%qy>d^8(m*?Rh{`htW_sq%&%h5qk162gY{oG z#%^^tmY270Q|Sq6B`;5S;(~kLOE^nBYfYBwiYwz22v86uRRn zix4S_&x~55)I_{?w3elb+46wTj7x2I*R{2B3*&-U=Osl1L+uk6yuHI{;LMSNvcI0| ztDBFqylSQPEXN$U35%!hdUm>gpUT-;8e27csj8<--cB=(7-d8!mvr#F3|366G)mnh zBsr(5&Tn9_3`!FB)ZI(Xoh)6JC~~O(!J*lG@%K$a+_S!@aV;VJSuX0ATeSr~*rwDv zyCQWv@|1m9Rd#U0ou13}XIkd&8`rysYyHYK$CBT6c*#F7J6UjrW^|Xa2&J%86S94AjCr@93>N}uh=(e1NhiTEqD{zpI};o3X4^PY!73Qy6y0a(B#RRaqq$;+4R2NA_Qi)v>28NI6Tcui6n%He&pk*!I7IEr)O^g^>>_Cf%xVYuE6ks; zs=EHB_P1-9DKFYBr?ui8l;tz&3YPZfGV!lmm<{~ZC8C+Go30tLj~6h(*XZqSyAU`* zzDLO^ul62Zd9#>+nLm?`!4VVFMV;7fwzIsmS$Ub22Q#hM*E>wLuD>KHn z4ZIjXAxiCcG8_w8j1Nf*ITT=*O1tIb5l_|%lIfsyGyunhwAn`QQ1ub_%oqzmKc^@v znd@G)v=RhltmQ7a8m(rms#)#xZfwwDP}wm{&tER&7;j)=b!Km_6nZeyPHkYS2m-li zemM1Aee8#^fPr)#tuyvG2fVeK#V=%z8aQ^Q2vZhG(J2i|TEdc)===coVcywJ2F`8d z`z*eR;C-cQ`(IYr6QYtBLDb-aixEGZ;T_0)^4@<{C|D$k(s|}v#PU3|Phd?a<2Yvo zH1dE)-vZmD>5)c~Lhd4oI(#!L=3-l8x6bUjoP>;8@b<&Kl>sHujWdGM5wsCs*G8U> z)w=pof#JwwUH4A*h)l)@f1=<;Wo$G`c z2A?n-F<&nYUxxQfoLGL`_h5GkZkqi%2N#}<2VXd&gCmj4I}%IgzQJ%qE){MQex27W zwdb5u32$$WKG7!%d+Umw*Ws+FLD$emr5(xk&E)ci=R^Vy99p>|xxJ!;MDg4$zpG5} zQ>tg$fB2r1?^7)6P8=UMT|4%Td!aXlh{f92geK;g<*M91ThTBFP8hN$zYkkHjaeYr zs9LN|q%9abOhl$JsipIAHsR@MQnYc?0j1lqT(d0AB)5BP=|1Brt;1&-8W=IU$L%or z!c-nf@$vY;%+O`A@w*Sb23nb#DZXA0<$)tptDkD-%|0cYNi+Tr}i?1T>5X>6TTGFtcd@;6X9c#-<^JGy|hQ zu;pyyzk zMv;HUZZ?HXp#k&*nfg(gi$MXNc#KEN{HAVjMI{f#CK734$OCBh<(R094I37~=r|q_Y*`AOL=^!Heye1;lvtQnH|?HOLkR N>VQEE>O*XU{onZXszTY3;{oQ+a$jojtnYHFwYp=37A36U8qEb^*RRWQafIuX`2XsD7 zGNP)eXr`s3sigV{`DdUN1QfErKp+Q4Hy0gc1!jE%L*^^L{#-#Edt%}GoOu2p3UJ@O zA>!RZpnkspVb1@l`>Lgts|7G&1NgGJ06z{qEDcbndG@EyMXa0usY?^0$qy!cb|C@2=qA^1iCZ!?>@E+5a{MB5U8T(-+lk)$@3>JPcCjp z1{_JBJ_Uic@<5>L1|SgicMu3{bTI}T{)cB{28I}c=W+r*&p`GdD-bhC732uA0PzDg zA<$nSL6GSA50D~=?9wITA5h52$;hu(x zA1;x=K%@|oOAwOtMi3JbYow%?NdAjhfd8adE>m10ze)xSn^J*DE|C!lAg8!aeiJwW z!Bf%%<^p%!SZk@ zDGeTkqF{NTg=f)%K}ji4!lWO{@$y`;wEefp~}bvUCW^7 z4~f9#B-8UpWQ5}uX^|wjIQCpDn2f8}?bdheR_jlO)>T{-$^0+nlj*s>U%yU6+OLQN zefr)j&nFBfvB|^*8d_UtPy#m;zD!Rq)GK^h^0FaE&<`pTDlT;zDsx4cHP0|1osI2rvkA8KDqQ8VJ$K1ivKBfYYETz;ply z0;%x8MQ#1Z&b)B-&tzun8>^0q2Ow&?0_W+<=~IxJ3$Lw~{2i(D(0rQ4v{u*GWef ztveJIA}lh22AD4@JWGaJp4gyPhz|oeKz2z!I8)eCzR-;_>@u4WbIvE02hecJuq)R< zca;YLLB1fGH1I!989;-aI6?(fhz$V$|C&K;0ZQwFBcy>^00H1vLh`_?)M5@%L2&D! zK?)i201Iv*gcMlR$mLO#!3t0?00$^3xxCg(m0&o9OuqOL>r%37NuT77}>jRTRnOy>5`puS2lRy>2EX zQ4zRBA_%^d0x$k54!{Vdu&@=5MTICFS_&$b zfJgzaD2yueI+O}VgQtA}pg;#li=;+==MOR@U91AguHp|81XyvMBr4?fr$2}fY^1YJ z23`y^Ul@NFQk|+b5P&{JKPVawBB4--hErw3zNi8+P)K9|4d_bQXDv~uAMEO%d+WA` zQj?P)k#@ShSJ`BO*?1jeUMuB&z3F-V{+;GJjHqa(8+IQCJ2jHA0=vrGz`UA{JM6?5 zhKwgEYikt6ia)a@@T$GRNEoM~4T~(a@q-wie%0PbbMa36^kXrv9(4{VZVE|SY3_I4 z+mAd4jkj6ksyh;B&Oyh-)&gprJ=e#f;Fu-XMGw|Gp<-!j{np17Z5S5O*=Ce4A=y}$ z_E7s9mwqBG{{yw5UJD@N&68m_C0sX5Wr-7R8L>1O3h34h)ZdFjb%8C$=M(YlOt zo9&NJu9&jS=19ewK$;AIw_HSp8u%~$0W8-Sy7WJ^2_Q%`fMk)VXvG3xP$0@i22vrD zstp_j1ySHpFenKe07xv9G&+-AD+5Y{N5IMA6<(3h;1x2pgovU=6Qg+<$(gZ0u+=(yiIfl2u?~A&>Y~KNs1%mmM496EyILN z*o5?zIt}S}(nV{EYdA2eb;jRJRIS#0rM+NKV=@=GF+}YZEE6ox0>~0o1`m}Exgs?T zV$245aZmq3AAoK=1gBch{`I9ZdcR`!2l|Ibn#jsIXgjmb%M48>x>6l$7-Fm)w?g`D z!ohzec@BX>zwO+r^uSN1)wM=6J8ZM22lgr)grYuvYztluNG1&5Pqvxaiig%$NLWRAu8n!K6?@c%!k>}5 zK?Nt_+&0T>2F!MJvuh^s3NO~J7)VuQn{c#hg~M_TjKC=gKXkJ7mD91U3+TBwd2AQO ziGCnLUev+CCS>f5|R&&U@>#fBQM;%CiEE0AATi<@=KQk6K#x zy={a0Q&W(A`x@=eS^2G-FjWC z6PY_Du5Sar^@-5erFLvcSub_xI=>cor|-?oljt=omM4>8^;^Mhui7Fyt|29 z`M$&IkJ^7&*hr)g^cA34ZL3w*YmYN){jSUKME+j-`2OLb?aGku4~U#Z{mw7F0+Hrp zy|ITTH;#`Qw-0>uRI+Xis=pn~WHKdq_oAN%&hV+l)6?`n3|0C;wTkz(h+m zya#VaD2b6lW?Y%JoS4*28q0?jaz+~S z+3(qHTU#7t(gdk(ii(eMI2**G&5TUaoPl3PREd#znu)Z)&EoCtkf^e0i5sdkWut|d zhjH2x46KX!Y)N+t76}6;+^grHE=TuskkFRgIjE`U9MpJv@SCPggR#dwtHH@Bw|oFq zx#qfL?vrB+&tj}uMI+~i5xt`~Se=aoK5R%`ZsXez;MjHZRYhxWS)0tm8utat3ia~z z@+=i>Y;3GvcXp1uHW(fq9le-|5`@MLn4Ipp-&nJ(9D$!HdwkY2T0Yc1LmKmkpA?L~ zFb=C)^m&N6xmCS(Yv_kyL9Nx@inqGGt$R|-D0P7m2gjSb80Q}m-!b#(>yKtDtD4cD(}YaOh4maI1}Br^-a42xW@T-(%Rv@+dcTUp6|3KH{<|<1sGE zEAr**Q<-p!)SbxxEZA1NwWd4mV||}z;@Xrhv}%OMU)gLc4>^DM=$oUrW4%1*H4*UxfUQCYy*&=Ne&bT?9MmczrRS{=OZ zqJ3~tRim#b3h>!uLb!w=0}GGDhj}7|h#aKmhxVz4lZswtK8J?ebvoMLQewR$d`p`f zCn}2daGYor(-&-rhlqTmw{PKZwRU*H zM|Nj0t=ngPS3}eGE+NWJH1#J0?Tv$RqBTM#mdatcN{^_|O6E^Ftru*LL>`Mp&IEc? z)fle%eY>w_9Lc+Cz{8z#C1I}|f=1W%9f_bJx+U->OzHB0!&mlc{%bz$}OzN^) zErrT&K{fOwOb?-c2{;Kf=3#Hv=&n??^%DIzq~kiJlI&bRTSEoD^h zP?H~8L|SE_4@TIkyjxHUTY}0Ix#PMSem;=T-{5N$b@z(7v zm>ltL&rhzO&c@3Re>;pgoc%U0srx=gu;shGJC{$0thThvMo$i4u~n1a(+%VPEX5-JKIIm z9?Mba4v#5CquZ+;d$nmzdZ~Rxm}IpR9kr+T@}#S3IB%?Sb}DVk`Wt_WQ7?MA;mG(m zgwR=L9Kvu}fGmRgnZBNll?$9xi8FWDlt75+A2=C*Fr|K5;Ek4L1!a2FIp}dwjJc{| z4~PEG;Tl^))na~KvWbIa($4+0^`iPZCRRdU>Z#OZ6i3OFuaN=hhNk=5<~|0c$Cq%h?W`{u<6xeGfByab{ieDDqw(Rk^-Iq(VoL=$AW?>31k!~ zE+_@+&jh4A6`4*nUK?;2xU94Qdrs97L;?5+WNZW|g$^z*m@Jqj`T-b>iUCt)(vW6q zaf1OT8%zblYa#ews)dALNd>?6#()}wS!h^PkP38nf?u(ykg=$!+JMNY8e3oL2LeAY zk4JJ-h^v6MWWW4zbnY&vqXCpGK~5CCQz-ZB`fsD=`*?#lf+0rf6tAxQ&InP))zZ*x4l&#KjSfvRYGNXcMtX( z7MXCad7DcV4Qseh45D^Duf9kP#m@QE%!WUNjyXxfJ*yB4wy?@>B^-g^Zjwcx<^y9n zB;?FHPg1-K3->F2qsc40*&_L+PJF^F`B{3#=~m6jl}DzdH`=|P7G}3@+OLH6celcS z)AYo~cblaa(3eh{34Ey9cN%vuJf#sC)EoO^yGY>3CA@4sm=9iVDQ#QErfF*`MdjtC zT5h{b-mOTTa+j6;F#aVklws{~_=ib5PjD7Xrg@vn7#3+L*@*1JX{13s*C+jsxZ7&f zF}*V*6E_>iY(oan1~&Rfc_RL{+1AZYhyOkDD}Kmq~+PkuPqHL=ta5HAJ`f<_Vl-` zyQT5xMk?vge10$Yd23Qyzs2sL_gg0`PcyThAG+$w0|RAJSG6d;(tEl4XuFYGDS`ye z(8>LcO}|c#qWo5i!sgXa(Ut23g?V}s-I@ry!GiYia*T&MJ@Dw$x7A;2vW@IcoUnhE1Vy?Dxj zSA0v}vRmoSr?RL?>UlX0_OHc|enm4h6JvLJWNhV!_PwpjRir5f?hVgPRJIhaJs$IV zcFHD~6ulzYwtn)U_4i2EM}{xPzAJpChMzv2Asn^_>5DXN=%Y-dOqcVRWK>!halQ@x zMOg_iZ04xX?gu<=+9;3Lv5?lnf=3x>#JrzYP7W2$X+}iv8Y}(^v3Sy1 zEF7o5+g=yqomdr{8=KZwx>?y?G*(U)v(2`Me!}Pqyd-FJ_)~f9J=+D%0}*ZuZ-* zkhiUo5+J`OM?Q)MH}A9H*^71_8MgqIXHLfYY0JIdhn9W@>%6;f#4DD$>lS2&?udm_IG zZuf9}h_>(?1ZyolMhDF~Z?B2QDfK;=ZJy+Y)a0*;;OCb53Hj;JM(MYq<*sOp&tkoG znUIh7V@fQ;(khc@Q6>&7v#;&7K`zP!3)l&@db@T`CiqObyc8&Mno9*CHGR`*$ zggTsYl(J;i&9`bzdEo|gyL*O%PgAxNZGXad#)_k7DqaK6U21`mcARwHvi~fCLF*n0 zR(GNi$h~;N?Bc*`{>YMy9)s(rN6vSREiwUX!%4j7zO-x2=YUr^=tqYU+j^6C`+Ec2 zqfixmfnzSk-#%Cx6~&@S3S%CF4~L9o{Y(J1N9|*k!urBB0EPSj6XlZ+@>GCHU%* zv*%IO^3IEegj{XGdi$28O;>5DS9Eh*3ESF8b#3dMtYE!dwS85UHu^Ml3Tm&sh#-I% zHd9P^?i4EC)DLR=XpjAA;C=iS-oQjiP*y5ISQr9G7!1s` z--DqX`+h^;p0pkK=xX7^=Rc-%x(bMu zrFOKxaXihley@J zTBvCaCwa6Xn0oZs?){Z1NxzRZ!yQh;?|b`4-7U=O>BFj%lO|-T8O^#HL02Mof&%~8 zdKn$^ zuOpxXUkdfU6uUM!BuA|uo}pFZ;)}6riA6eymMWE{7y4!L#b|EVou`MIModpxJaU_VC`XxZnh+d>hGf%?;t_wT>W#H! zZas}vi&IJ2ddk*{-GkTC4Qem8*bt0XmhQH+sLIdT%IzCIRlydkJ7~A!t9JISw}ver znhCpfI93RDs>2mkMv`ay_U+u#t0(;@raelRl)u(8T)DyJI3WDl&QyA^kf1cAtZXLo z&}L*z5>pxdsJ%|9Ajh}MZWdE|ueaMyf6cwyK zhXD8jqXfB>kbm)iyMI}V|Et>7(hpdQYvw`Mqe(p#Ns|CbSa;36O=NQ~$QQ_!)5Yk@DsgN5i7W+H*- zrlX8*#B0ZB1>)N-97Uk(B@JF4;1nPoTnaR}B;X=eHo$)r5)^ts0XTdY43obI=Ldq} zfQUlDudyNQ6s>@JD4(tHQY)7OiByQrqye14Tz0Njd@ffGTnNq`t{_Cl|4&9BJAcPV zs>?=pMNKr z^?Upu$-V!(ydOY5F*8WaivtcR2uKM4T7d|IKWam({S}KmAnhSYARDZMi>DwJk|(Mm zRvI{s4nRUKhss5A6krL^4ZL$QV&)7`6Tm%40Suu8xs{NLG+b6OkF+u@b#J}Wi6)8B zYRpkW3XTGAl9cD_oDU@lbzjIYJ9`YLQaqaI}?v$ZabvvnL@DrD0})HvGdq=XaqoFBm}sq;3B1 zB>-RnmppI)Wpe?_6iy1LRXCK68AijFuLVGtC=x`)d!bD8wE`)l@#et_S!~=`I%fH7 zZovDO5460{%mf-hUIIzsba&!G0I~seb5YD7^rj1hVB^|ID;33fz81NS_nI^EQD~OD9gwcUaGw!S3)YV z$m3Ch@XH1)DuG$d3a@lB0f@uz;Nk%J#{;luA5k*m4jZAPX|W>K!qwt(m`M|#vXib> z3zBdrbO4BWnea8LXMR9vKuzZSgpVY-EI6sjbW&3@8fzuTjmd{LP*6 z=nFnrmD#5-162xgW->#Hs~@;U6(Gi1pcn5SU8KPOzvSYA6&WCM(r9Knnqbn*M?_vw z1hO(C;7~wSz@h9w@CQzE0ep5fd59Lktzab;lpqjV0;B@abzEA265z_Y#HRBu9^Ao< z;QAx}mtgN!tKm9vDGYES?r`}WKrD1w%0RCxOx`70(On|S1gX6}EUv|hGzi4s+)5Eq zT6R5x+e1{IH)muNRF(*+2bv3deB1hfEL&@>mejkRWnImj+H|NtMDy)Eq?2T!Li+ z`Z2DRip-KiO9y!QaG??6LLkWBt`i6F_rV7tG7@eNU8X>xkK4-$<2f#L-IfkhqWlIBNSK51>V!YxL@e zPt^dG!Ozs%*6pSY@QRxMLoPn!K{qWlFT7p?*x0Ga5!D*<1^t5I0QkRM z)SKcu9=BLL&Xp$~6aoDS`}Y(EaEB#F^H+ci05mST|Eo?^9Olh{>K%a<13VxBRv7?G z09q{C{vtGrr&)zDod zG2ea~AD)w+qnSQ@JQ%(PJA%Qzck~Y%L2%G1|7Sg+dolxWEAAa4Bem<_D9?jDTtj59 zJB~m6YJZ59MI({dyWaTN%;xxvcN;Kv6QWkOJ@?WqWDC7?Pk)bKcJBMfaK-eVNqAX& z*-&KqY-%S2Hi~mEw^4~vyp*L^!kX4qjy~hB>vuR%+E@sm_lo%Vs5plIO+u~;H&^Kb`G(>bbYwRjN0=|v|rb7(kZCtO@I5_92%X% zk^}@2;W~?Q65<$EiA1an+ZDN*k=%PkTYn@cwk2;|Uk&c7a< zrb|%m|M=kjsaH2e0)EBIsFx-j2;2rI>3M2Dgf||{q7WD%gtE&TL=-y+Z1))UjH=`K zed3UtTV6ML{r$bXcuqC090N19Fl^Wo+rMe?6V{6Yb#qy!E49!##wxohm5LVZLGN7R zX7$x{WwU#?R~%og4i^|O2W4Cs=3r70V|*BvPz#{~NpF82)G04cPqt3}om?hp7_n== zK?bZV;GxQOrE;ioK{jHUkV!Sk2-#?Gn|Uf=} zM79ChMfRzW*A;P)t+D2VCcHO)uW&+kdTTP^=EEZy3HB!$UIkN^H^0@~T1r4$4v2g( z8e(&oM*X&XKd;u>uU1fuJv|LIdV`-3I0yL*8J#T4^-akdhp`cnJy>>AX5eGC+*Snr z)|m|S-n$Hb1+_~wFm>dEgnsmL#-KY#OTxK7Z@ zd8F_pM)37Ep@1E!zl1{~F#Od7!V<%B-RxMN*XAUdv~an0a|hw46V&ju%)nOfHsKsZ z7}?D}fR_w8pMyX{ST8T1w7#?erJWl~a=Ez8i&Tj>nqt_@KP7|S7*VqpxIRS3P8 ztX>(CCw&L0%-UvY}e zw`=qkySLv7Bygqf_kTMay80NyKS+Ou;e-RcF#3rhfRojWI;2fEZZb|4u@`VPWx8L7 z`swtcv|J0aEU|+=CU=i;Hc?|vs{MwN*$%~G2Z8mQRaKEZ`5B)L78w_GzRS-A@T6s9 zWLAnjZA5BeFb|D_S`}Ma8{TOAGfhnqR5&9Ne;~26PuVZAX(6P0`!(4#lcHM}leW``2<7#LM`T{@ z=D~28zwJGhVGmueWa?`CDXUEtI^$2-mej!bAy>^_tTymoQ zId^5``WYW?_`XlQPdDEG;)%8c!#`(CUz_;Z4FJ}K_J8l`;ZvMJDIeO~RvP|1Dvl9b zsy$-buRhS7a__lo^hkW$+R{$KqBt-99K>Z&z8&9Q(6uXNa~j%pBE?trtCFvprK~f0 z9M855b4{rz?$z#c@y3;-X@3zsY=6%*uoQmamp8r;)E>P|0 z;o_ zymuSh8*1WG9~6@te|&uNO0euT1MyP7T0KkSZNt@~P&en+ z!tL1@vtlca8hlK3MLb%!1Sw@P-LiNIP(cL$#H-)CsWw9nzjg-MrDaABJU}&Ki=+Iu z9yOZep_Yd^O$2g>ak#~p`w4tjcV^Hg#U4 zRd5N?*TEBBS-l)qW#S;CUfExJm$63NJW-ZT%XIr1C3>HyI)QLc;9mitvWswLqB9266LZRNpTF|%$4kPtrDodGv7w@b%~GGN zQpx1Wz^{&WkGE`|xj+2L2#)NhjkiF!aB8HeFD|1U9FWarxU%ABJ!oy#oCE_}N1yR( z4E%^dAiQhlSU0(!YMVI?xD}$at$>4}r5>mgWKTwPzKC8J81Od#209~OJ^;LlkqhgR z7|BQ^`r!&m)PSeX?Lp~5+P7*Sc)7V%l$>l-^a0Uv<>PM#ju&<}to9CQb`LO^fkl#J zGGNQ^9E7XP+g+3soyoicG}`vhu=DSSGfu|B8IBuoeoyc@;0V~r-{Lx!NH>pJ5O>&S zNXQu|{b^&Swlvml70H-9#?k*w&nBR4|FLD4VPW3_uWS)ER(!nPwxIsY-&+B1=j&$J z3&b;HdW;@X>vVtxy6k)G!%qDiEPamNPI&wf4gsf1v4rG9Y;ryi2%%78F1(J&vxed4 z3n5>AgEzmdiVxEF_m+3Cz457>OGhG*K0lY|5QrTFv8dC3Zu)$i>x*9lLu5KU;jC4N z%S>7QlF3>bCns-NNhO3(ggg_QFL)Q;<4iDrsLNV=vYg&C@RReOfwRkk^gd!&Z3WJZ z{EhsJV!9JeeDP=t3;!0jh_l|(8dYcdk0Fd~H4_f8Y?v4Eac(X)v>ma?VcEpou>se& z(_xoKQDZjha!qE}-wDtZ?cQ}Kq!0VLV%n;-8e>|Ak9fwCRjDVUR*Kuxdfx4wF^j9;_ksMIb~P3}n^)g6tY zp6ZUeG&@Q4oTufw(2o!i-(c3FtN`WD^N*UANAJ`XxwxM-_2Dvi8os^%?f@3`lZ6puM>=P(LG9 zEOqu~te((xMkb7jbjpYb-CZ`@O!L`baV;vG{y7iFwuj>!f~=HOSyKnh;&k(@v}A*m zeVUZN->^G173gVp7<;o{Q{QE_F3Y3-;>$qeV(u4o2X&q6z5A(yN4=;A0@<<@XMc0o zQw#v+m8QV|{)uz}vVaG1ldo(8YV#7CKYv$mINB9BXo=}7xhZ`sf5y~unT{`~__f z5yc3UeHnkum}x|NYWHvnf8gv3U{T)m=NQecuuQ{l| zp}D`F-CRB}YamD)mg#jKfeH2ePYM1%sPlZXT=H-QjDx5hlgzEXMC@o2)2YDsxx~0? z*TV>{<aUdy5Pc?f-!$ZpK z`fc-&sLkIy56w?xXcu?MHg4`{`kzP%EN;-Y)c5j5Z0wk24N(6h*DG_pv09(?kMxZf z)7$&i^Jcqp{min4_jFE7{r7!4&hm~duXHGU6)2RYt9!W-u>A0_h2FDe|L7{#pT=`O z)lq_vs3}=!DZQ`q%Y$}h z1|x0va7Xu>h!xhHv`;NxI(C7+0ZDo zUA%EY$u!Obt*V$&UtURCPA?dQP!Af1_gC(+h8lA=9vE4NOh%18ez|JP7XQXp z66a}G@Sf9svQjvFF)Y+b8Z;A)jItWNRa&5{jbXZEoIh9;8Mcc!8q)iHi1+wA?9k^g z#+xi{X7nl*RT7+*cB5M`n@F>uO2hXyN&5cdc{e}I59K?&AkU4RQ-s@C;3JtzA~4mM zaXcRX+?0GH<)qti%ZHJgcc?0*Va59HKCHggjS44n4!T_#<L1h_h`>SwJUsQ?)R3SznAhdXpm~T?Mg50*g0Syi))in?6=PihDv06 zeiaQ1UnYbv``y|MIG!k*T+lvCyjm&Chd*@X1)g(?OPSe67q6*Pr$C zdH*P1mHsS8StIwjhA;DFMTdwCx;Ii&Xvu*7q1L`P0e;eWAf~#zFA6tt*wU+d$zx+; zRQzeePEX^wb*Qq53O5!fJcbwBHx) zO{u(k$X)GlpZ{qeYMakdbd1RkJN=!KlHxOIvd>shX^h_J3UZbV%9(UoTHPPcovzYC z#MIvV9TT40ntr-FY^6Bw;T&S(7pN(zhzk(xp84ZY0A z)1_~;+_qvcc&m6NUcV@&j4jHxK>MU?kuaZSTo2X7o5~5Q*!;eeph@XqUmo41s5Pt3 zQ&Vo2h2G!s>0fb9QRy5=O8Y1dj^t*JnEZ8wVv7+5O3s8dUY`p|7gO8a7s)R_ zYm`;mBrj^v-`5VHY~k`6EO;5yHim z)y9i*?{X2~?S97FTT)xb0jxH0ht<Du6#w2RxG~km=yot6heXVCBxJHKqya0I+FE76-P#uL zMoC!zv@un)j`&zSt$xCS){aJ*q-hcQC~ND-SzC+mlTD?ihIA$!oe{!pR<#*iFAZ*P zY5)r^nvXH8i!v##*1$&r!M0uwM-8TsSW&eWWmdyI3E}xlQEd90;)Bh^Z|N+JJ`U>W zgrJ0mw^?W)0MjzpaKAo+*I^M~-;9{oIQ0?eDdfb`X^_9|pIpOuHx^jtv#t7eyTaf4 z8NdX(ks4{Jsjmikt1&g!o_1I%&8OeX!p6_>=SPj%eNHA-{2)UQhPn z);Ij1%Q@)7LI3I7>T!W1;Rd-&+GkIK({Is#4o|(5Jv~fcxF50O{S`?53eZ0 zT`2>RI>Nz6S?>|14j$N>7>PTx%Y!cUgxq)upIyo7e;h@v4&L9ghp75}(KB>Jf9TWG zK@UjkPqf{Aje$vEG#vM^$)?Gx1hu4~pNG>uq|W?&2FsaWjPjRC_{~q!*T_^xrvq@6 zZG&r*9woWEIm_+>Un}HHuwFrJ_MYN31;G`=X!ZNL-t!I!E<*Z_i39B*l;()cw{6p% zVYMcp^=W3Zn&;pHb)F$w9$LF=5FejI4_3c$KhZ1tHP`e|dKXjgK6@;;5j)3whWKL5{YUgjZxz(cKWaL3-M`T)k+;asbO_z1V81ClATMz=O9I~rCapx@G5hKH9n{G zGXWtCfHhflVDanb;cP3Mr})fLKPSKIP_4P9I6uZao6ig}jDfo&`Z(fS^G8bVo`aOW zOisNzY0PciD2Qx`+z_~J?_jI`JaTtig4%dJrX63fD|lye4>Y+Q0N~Arimz6q?uu^q`v2}Lj+Hi$VcO`rC{H&uX(u3=c<05b2k|wajo~Vh6!Nt7m zo9L#8q1U{gejI(OFMzR4=+*5G!+wC38y`~p{t}qbjcxi5n1b77!$>CH0{XRLS85~VK7WOK zM9VqoggWRPq=`AZ6E*xKiI*;c-J;dzN89zGDEOzRdxZ<;5=Of?Lf(kG;z`E64UMa( zGG+(nceXTd)O-2BZJX^= z>~d1{L823(p;AG>7P%C}yPu#m+H;aBVQ_{h$sgz~Nv!@d7vNlV2=n={BQ#x8hL1IB zH>Kck}3 zqh?fgeAuF9ZaIhz7Hc>bnYKstY8|nwvi0>nU`Lp$D~|kkOUn6ck3jSncHRMLwPqVz zb6+%-sZCa_SZ-g)HNxoeR&7pFbc-(lET{=M^OpEN;Iv|+8)WP zWLiiv^$@O6Ms;~?96N8@pW{F>0Xt!(*f;weaJP2RL98p_!x6$ooRaf-~{YMty1Xy|Tn8!pMs?)%k zTK&iLy#|L+$!15fRR2Lu#f0AG<*=Ws^nyGubnO_%(xC0(y+8MhiX&hAx^{N6M=l3< zwiGq@o_Ra8>&?Qb)%7}@tu=GiAY$m-uDMIaGnmIdi}M7x(3r#S#@#F^+C#t+jYb=C zq0xQ;c8a-oCD%pbBtp2xY%71+;n~nC*?PFM(G6WeTH%2%WNnDl@rh$VcghZRRZG`B zijN(-Eh}UnRSwzQM2vjK2?b{h0q(j>&MtF*O>HTPmJd#fSH>FgZOG!PDvou@Aor^$ zmP1*!We24;zfNBJl6a%YZIBiVHkwzP&&nkfM6zK4^X)c=6b>e^5igNguhI7XB#*Un zTH3Nrz{B?aTjRwNbnFAMgyAizE^nv!R(vhgC-ckm5*lCUdd)36WCdfa*KYTaq4BO} zL`^yhaj+v6_o%tss}r&QyE8svMMqJSZRbR5 zJ3FX_1U6NJP5W?QGdvgGcfa`8O$PCBzx?W-&SRrIc5IjqZ8KdO-)hs=H~zi(qY!GG zH`CUyI&S}O;tm!cX3JNLt9qN~>r}=|lthdPBZr9vm4^7AC&Fn|jZH7y!fSJxu52>= zleb|9%T1W%Ex$9^pEMBraB!otYCe1gFdMKD%kOD)%j(GeBLwP0W=|Tg{NAiqr8!~B zOtgc|4gOwc+vOz>lniiY3rWdRu(3)8%GQWzU4Qk@%Wd=59`i&Ys!HTyG zlV}Ig%PH!|DcJ|~C0}K^$+Lo8Cw(hU$`1ASCDq-xaAtf($BeN8$4ad;<<;UfzeH{q zlH(JxOGcFaCz&6r=>6cehI6RBcS2e8E~%yfO8sXLhh3rXMoWcBU|bdbvUu-n*V8_wpR6%{7~{!%$mPf@!FPoW zi>b!BtTS^!SYk@bzPq)zgeeq$a`7OJPwD|UN(E>is>C*9t4acb3-0XF^+llT9X z$^Nqw2nIwF^{W{KK~|+7As-4a_CM&X0-IxKh&yCxfRT|=VpKAP;~!w}l&E?zu}<6o z!pvOFOkxehAFt$s7}Gyo?2sb6aeNMX`}-8yC0Fv`uw0VLbMoYUz+$n@srSt;e7whd z@%GHGo7aYvbv4-$w+YV%W$z3^dX#bpA(-6m5`jZ`XFvYZYu`$my&^ZKuPi>4IiZ$2 zKpozGFkaZuvNlncwqgG6e{uERaZP1i`!_S{ICc>crN~TZ654RsMPFXB%(CHiFYbE9RI>d@V_5SBrV1-!SFWqr!MazW<4?P%#{#0?#a} zz3-L~7O$>&^0n~w_HD#w-4z;BE`2aKxeV3~!f0|DQ4jE|))IfD4g?zY=f19xp~WClYcWfWD(7e=7Pek{ z^_tuIaoOr=B)^+BN z*+;XpEfyx=|Au)q@Vz&d@5a_tydVeRP0wOy^eZ$@@4xt74d4H#8ZO#vb<4swf07n< zMJ3%ggYRSMb|0y*Gh0(?g;aThm~j%Ry&b#g?+$2%VfA$%0Il$0|6MiJIO+et()Xb` zIOK%eCM?o$>qchAXZ|mC@)O)SYY&xa5L&n-KdUIL*_ZxFlW}hCG@<)YS9)NLd;DKr zP?7jGLokoNKg_9OQ4+h_M05H%bEa1uH9zg-K1MT28pB1O@1=g1{yG5ZPcX+VncYx_ zdG+naaJ?{Bl*b;pUAk3rxe6vtW;f7zMrSm4Lu%$@T047CE3WMWk0g@+D@T@Z?)M*F zs0y>p|HgJ_^1tHcP(ZMA$k`D!qQN(|*8%*MpUE!1mi!w7@1~6n^o=j|sBk*nJ&_vN zKDM9R_+VR9y)HQ;A?p@4GSn7G;qDvS6i7zZ83bflg^T7MU-C3c?Dn8OmsgCeAI>W> zb@OKF`W#~i1;%STojEy95Ib-sCi1baHwKF-4p&4yc{h6VOUu}c7P@dUE*p!b-qmcJ zT1<`L;Y9rPXH_O=v5$A3j8nNy?HzGqkQxssem6Tl>2ugcN13zKlkTeaOO^?)6;5Pd zFj#V@#2XjP*_OTKZ^LST@z~`_yYfc&!&bWjTeLG8c{4tyWz+|*DGlRP^bv1avPuZU zm~&0c*J)y<*RK|xI!P_iih|Jq;cfh9_x}ie+;gAY+3%H9ik)&GpS8T8P{`#!@37JY z%!&j!##Z6ZXq66+^#DKqrihz6r~KYpMN`Ht0}C^7{Yg@R2qmooxm5S zWMl5l7N*7WqP6T;W<*4tmWC*@WnEW@G*Ze{30p2ini@11la^W6{e z<@*lm31Jic<1m-6k=OJQ9GHyNAVDJqS!@C#C@@6tvG)E6pfOA9*Sj4v;@h7OCYLFd zmW*}nwz?cV-Tu-to&kai(>ywfk3)oDJavH+vKa zHZI#Aah3Z$&9A*e<%;N4Tl9gdTf@A`CM&xA*^6Zmp~w#)tt@^K=&&(W&GDEiOANm% zW1#Jj6vgF~(qyW)*JqXjRoAxh+S0xeRveEA6u~KsHz_GJj@_O*Hf@@rZ{D``m8lg% zIq=4%WCP6_L7Xrc*OMY9Cnu-hU#%1U?x*klat`8<2SIB4*Z$YS@^{?01i%$DP*TYCLp>~z`C<#~Q$B3`atQfq)`W1GxZ)e~ z)Xmmkr?|{;Z68K{osgzB!gi0wAIB+5%+}xTZPU^7z^EJ8ap#AI`#ju zh|W%zI~7Czq2(-Ya`>>#!cW6I=bR!)Q*SzspvADnvMNJo=4<_g4SvPfSe@<_S040* z<=1<5pGo~0w+}w_Q@{)H^ty_G<0wx^hn>IdH01AJBCgMw;<_ zweX5dcOMoz+oNH3^bN*ddnX4$T5wFOFv&wu!uiyfFPj>h*Ap(}+)HFgbX^R{MQK?l z3mE0HlKIHcg$`_vBTMb{y;06V!awH$Uj+a_xtUuNNuvvC2$!ngKX!AZ=BCqT^sqE6 zaO$u>TkISAL0WTUT-+2ftK?PfTDXZZ<<4HaZ}yF?9#m62%nIB2vHTlbN8nof;5W8U z3`>ymlV=!HOGAL#>6 zy15ST;wla|Cx-R|YL)mk!?{$HdCED-z;?Ye_LZ=np?C9mu*2=w@fctD5J&{7;cTwA zNZ9U85f#e4`gNbJs^J#$-SEh6J`{TPekp#`oEH_(I++T)!#}BPZroFxp&T zKG&VW8uD_Kse>e(bZp=GJS)rdMkBoX_=#L(~%qDJI3rOI0S6fH%`}Hg26|3VDP9@B?;S*1u zdf^`$UE(p{*pyaN@Db+yPl%M>(&DV8(M4A2kk=v3*_jMSAm7Cl6i9rb-Sv=?pUldh z@M$XX>}Pywd!rSPjTcc^9CMY=f^lgRt>9{s$j<<&dgen)-LFlAo3iX+$j+0#;HLk0TaeS^i?hL_{J8sD|yF8c3@ZO$-Kn6ST=6YyH#v-D|;`H5?0F2E*l-~`@fT;_|%|Tzm1isd}PA!c$3shWqk8a80CY5qle`BK>_U{W!NnDcf@|fI!4>(Pw zZ4Dto7&#+KK+Z*}4fII2`p&F>)k+02dT^^akoq|^*UpYWt|2wfz%66Ty}-Uus5%_J zjMWngh-&sDTTVN}5N%X-po1y|J#m6@{^@+|kQ2-RGwz(9kLDZYZAoX24@JJOSLRz^ zyU_Z+PNPyMbDNac_r*fk1`{z~?Ofh3p9Tx^1{bO?EV`SMha#I?aTJTiiM;oDadzn# zdjV4(Ln;oNRvzt>d;H%2=e(-t@GIU%FRhESR(3RM|8Nd%G8x^EAMvQ0XIwtMqInR> zFa6-CiGPdIh>ttGCS6fAG^7*kC7d~Mrxsj@p|s5{F)}Qp7&NXE?mu!~VZX8c_F0*| z9a}eZ<{MkYZ))>mYEA4+J^rx5s>+EcR$b*QRtFEiu}wU^c6hOSL*3UfYJ6c;V&5Qj zs|3O;xOwzTaOXzO_L}c$q0T|MY8wCjVEYrL(XgW4Q`gH=?FP$Xe|BRou_g}cGz%2M zUh|KgBzQQY|iwO~7?|G#TFVtzh>9-Jsq$Y&rTDY&*hgutYy!0i+PkcJ&cF1HwDrSGjjZbOd z=pq9paM^Ec|MRrIm)w*2Lb{PMDCnHxGdT6ousT-xA$mAcz&jF1pJ-hWTTX)->QEXJ0AC>-Xy%odY$Vcu_S z;eJnwz5jk^N21C@P0x||<>Zg&M@nXmh)wduk4sSp55vB`<~VEuq%0-x=XKAfcLQ~5 zNw(SJMq@AS^m^r;qNn#ID{{^N-`fws!G6;&>hCB2!M8VeunDv9CHyTMZN7$X}?%CEB1Yf&U5VJEHkD>>KfkI_jAU)$j^% zn?DWHM*@R%cv91~l1^;B@MslS*Qw|rLD-}1bJJ^U^Pe6A9vsGbrMj2UBt}a#Ho+PP z1}z{IF>ti>FeyoNwXU>G#POHU7`!TNk!ccxr2OYT12yzJm1fYNLZ2x^HAttfU#G z!2XR*P;2m_R&*VtOP7#J+T0{o10q|C2k%8^i|=7Qp#Sjyh4tqDhV{)1>X~fM$c#7( zkIz!&{V@`8`RS+_>qJ|$MG4M$%avU*bg(4&TK-&Hb=DG3-OE2K5R-CMu2plR>00v> zF{nOo9x-;?-rZTau`>W0s$9eUCD^p3)~v~BnmZ&*&8COC|E#7z(7o*&ma7$-bBAA_ zD`&B4Wo4QhCdab*B5=SV*wyBTxMWCD~($`N3Y= zXYY^~jX;~SGygx$UwLCHVgELNDFxIkr=&_wq=@f+fPhYl%i=9s#aN7P)oz zZbEGE*`^0wOFor*BaVw$?pY}8(S4IsV=$Nu>-0v*Wv}cB>gpJBU5(#YJq!fY(hs=f zhVBB*-(Twf#aN$eeljKNEYtHWU-M0w0`E@THfnbT#^GGZw<{T3!1H+4O{7665J=a5iO&61soa^OKx3Vt=!>(^TcdcJVHv=go z?ua#pXNKs-c!-H$nvYFwT?omgGArhumCbvSXhEOj4t=tXMqyKn|0W>?JY>31=q`J| zw5OJ~i*q#GxYzkxl-brbo_CONQbByDJH^WG6{1Ml;v=J_=-8NoXv?{)8&u)ycF|KZ zRO0!^>8)W?H`7I-nDXUhTMcr2|3NZ`^LWqIYTd7(^OnpnvqZaOWCxlWam&Z;)LmW; zOsI<>?&>j~8wCg5`UqI@CC5OYd%?7MjMIABN?hXStc-C_Sj47DrwWT8qF=@aaa%Gc zLi8IOWe&S8@?AAj5Sd@UJKRkFLJGZEcsiF|_$j9cxwk%@^X^aDV$iDZWcOa39kATf z@12lM{ZoH*>l@qbmv3yrv&$Ryz;yPF?J#HIO}fq}{?!A()y*M{=E*-L_>C=72@1$Y zPydyTJoh~T3lWRoh)Z>+bbieT4cpo|p+68$_~tr7uTJ|6vSIGFCX20ZU*g9`GtLbSN6sJ>OV&@%D?L zpz3L2%94Iyaon0o(ceBBCiX5#%o zI2;MA=Hh{%Y87|^mDTZLV~|O#8)5=RTlg?3`)_PN>>Zia%_7`qI=-=e4c)IfKiOGT zoMHGEL5H>0~ds6R~dCzJ=fy-vg@!ZlZg9Nycrxydq0fsmr7i4idrRu?SkB^MFogg?dp%k; zM-2&FHPDF@ zJ{782de92ttcDCvhQ)$_wJ^n848iw}%{h&u=gLoPtLAlWmtLBbkKBDFbSlGAG2f@C zZOPI(j`cRqpx!196FAq0mwUHEXhTgX1;dc+8H6|EE1vkO;M19p%BmY-nI7ZU$dkKx zBP9rJh$SNmUYPSCXsUEu+PQSY;hMl}$0DqXcmR*(DLI_}r$EgIq z{bPLlA7k=Wv2kBML%qWXLs7!H27xUjZ4v4#m8C7QJ9vaK^XXO&_d%#*9J2UQ!a&hI zx3`-H9jm6cXn`OEz74mn?w3kST~zEicV(u2obwLwPBm=&bX+4b5lN~(iPQ@@BKLR7 zhwYr43#-~ucfnhd64u@}#(2B%Y``Wg%@z~>Lc2ne@#LSkdHdYuiS#D{HtBcxc}ppG z>7_oiIAHmy*A`{_TNsb><0h;r)YtCnQ*wg0&ZU*-Nsg1<1g-nAbjp zs+`8SSVdt@?!G@5Gtu_*zrN9$Ga#|iGdf?AIxdRs@9Tr~=&j8u#I~&wQ$u$Q<2~h@ zn!_41o>qi9=?LL`j5;~VM3*FT5P4Ift%kPkR=HI6`zvT=-Q{DG*-UVwsB|oZ^cm)! zADm#D{PF1m!g9xJ#azsgO8l^}UpJ{FI)x}0cd7egTJ-)ymXm-l?T*Qe7uh_24mfS3 zC|4ey6RLTmFCp90c{Ty%keOin+Kb!)ynmP>36mA~IoR2g<7Pf8e(|j-r?_KYh&O`F zy?sK)vzELRLPg9!YkE3;V{1DT8hr8XJ7k6E&elwEaNPJ7ti)uE~ zU9xXZfHvE6zqN44SGRy^mA{y|xWZj?BbM#l!||F28$pe#{9l?}(*vDXNVjr9sM&ZQ zG=xJdE*Tf!8PJx@0_JWh(YJKSA zi1pmY{y*w3sWcDT=a#WFJ&JvO7#5T1rbe2O5-Uei6H zD^-(~L6$1#Xtg$`g1Lohq(Z?sv@9XHbu^|Hvpx9XA^RDB4@Q&K^?hgUD^&1+)UB7W zJA8aSc#*e#+crJ0mh|~(95#JEa>#1)m1S_Udi}i{?o$%p2Vq{OQbX9~5q9p$Epv?$5l!`-8(pHVyhj0^j}68!8=ix11B2 zrgy75&OJkKFX$kM9OUbSAy6}RlaAkW^&67OFOe0d2Z1y&y%~@Yz~pvfWLMU!XBEq# z?o)=*6ohPfN*&s!k0b)7MW7brq{4L!DM2P|8bvFSipy>9D2uGtkxT=)#!E` ziv(9{TsA^cK?z*xM6mLr7+Xe`-NTA2iTtrq*?2jS?o!q}xDmxLFT&)<^fKULBP|1Q zP_MlCj9%Z~U;97Za~b<>qZ>432gSIA$1|TUnG4#Ax}!7%(2Gn-94=0l^@YTjcrQ&P zZwibw1LA2S1cGHSg2oL8Jq4Ol9GiGmtGQ~-HufcU2ywmInrAzc74EVMl6xsiWECau zUoMKv@BT2kB|p*it8=r2QL&%XC2xzCJbYnRFNJqcB_O#BqC^P-ai9I6>Lq1T6Fj97 zkLn4n9CR$gE*ccYzmGIhv1*%LKx`^N3Z*_2t+2SOb$wNQ&pquUmv?Lbn$3mh=SjjT z0QDb$_Zb|~q2CI#{$M8rbSea!^stjTO22f}bs0&4ffWL6#}Kul+2j_`cm(fvw9tT? zE?bUcYg1k;ocIl3en<*=Gnx}tU_LEfR~p2hb1bse-d1NAP?7U`@ek-D?<-Z`*x2tp z-Y?_2(I4Ku=l8(q>|d=(K+{p2&0=3tnsM^zLGAT{oG^FxFtn#ttCO0gZ}3H6tk#UF z88e3yfmwGr?R??M?pl8RrE7t;0e(1aG@gMYHZK2kVM<4-$pQ4f`m^Sn&o@9aPGlcn z?mh9i`Lz-=Ko=}|&r~nt_-*;rW-3U&?n|q-P31Ea19iBsx>H#f(3XwpQg;douHJK) z$h^PtDBYu?$FtJBXvO$um9grCif&Jm?){md+bl4JR2e4Cg#)h`7v=xdI(%tVVz7yy zW6=LrX~MwH;;2m_W@`}E4Lw_&l!m41QjLXc^S9O1F4SnvSn$#pmn+0VQVLRVMa+bd zV42$a9h=)&R4aEngM%^N$H?H3(7fR7H?I76bF_(>1Cqg``*!aC zCo(iuJ)$eeh7)TPKSQ00%yH^TAzx6Mn+JgPRZW6hoey#?H1gvBCoh-0Thny*eeaG! zzUl$I#O*$xR5NXCL9i?%cc}GtvDf!yCsM(;9KO%zE8GSW`#UXdrsk#RWSQDTCn1}` z+m{-IP!#wze44J(bAP`i$RfTs5VXQU5{?f*PSr`Lh{z@Ils?>XL-!Vw977H@Wf$Lw zxJdcb>4w;>axx)akhnyQ@srt7**<_>V^`rQs;&x}WJH_riOX`p8RHUY5ai9s(401p zVGjwDTesp33W~da2`0)R-B5Mo93k^=kbljm;~6}~U7 zqPvzqMX|mNo0Q6E907~lAan=}nZL*FaYH&%&&5CKpp^iNdRdAUt9!`3jFIi@f_e?{-N!^yHJRx z0OU#ri1aTsE!+aoEg8T3s&B^j+cv<(|A!U-4#j`J0ZhyPaP!|O&_4k#{9kVVKYs&q zh=;)A|2+LaulW}@2Oj*FJio_z^Sc)S>Ghiep&yfPHhvHVi1|w&U!!bD%NH+vH2;pd z$3B6P*#7xIpW44$1GK!Zxa=o)(e|<*^1qf5&@;B*i|Bxt!1sjcduD`|1JIrCsSm*O z+`OJ~2E<|W{QJi~^K034U?_gSbO$h#xTHgJVS9F=lyva|$p!p$4(bwDxOtl6DCYfwf@jM9LFti`tCC?vD^Ihc65C9$KjXpTGD#I z4y>iV8zLN>fq_ifIhi5A#W2NmkV+y6e>*w2WI0wfC z4tF*-)PD!{(VDdQ?@Jj-+RWg4TV}Rl!Ax*;QrPv+1~Lx?BD7&?p4aZGt3|zN+xqz-OZ4AV(|c`TN1k-I2urYkA$b$XxilBu_5<) zU{8s=LwH6SZ&nYkw)R>(+GC2dY|vQ@`!d0q!u-_bFh5b?Z6&k9p;gmP3>yIJIRECY zde@_Et1+GYM7AEqw-&b+WYy@cc=deoTax~dE#vN_72fovyd$W#tJ{^9v9rBn3v+G)nS<_o4@^kGuX4)U1q|yXnSOPa zNt2EX*1Nwkjq&vo-2xU||lI{Z4{NDNBdxp@nom*=xCUW%u| zKz`P~`pZK{=!cU{3a)kM(kB|0XqL&ZZRLil7LZSi5#G$>TG;TyR^3Odb<^SpFQgM` zrHM_UTa;fkz~YwX6k}&v^}Wf5KmK#+UJFREHntGn5z5}W^a~-bBa+vg<4=zD6wWwU`vxQmR|D#EGYa0#W60Q@*!dv)(|67g1{faw;{hFBv zAR8d#?CnG2S!mneo>{tknmSn0Da^#mG%PkleKm$PS#(0r#l=5xdJ!+0=$NA*wWm(IDtAA%00uLkzMF>p8$Af$1IzE!f8vYYo{^>y)Apa9RO8-}^cwRWo zR)7S)G2nK_{{>l!{_=-EhX7VD@(7~q>imwnWkCl)_||k4YSsGmJ@ew`B15_-yRV4; zc875NncXe3s6MkCgB48#&n_W0qsMP%VO(p}U8lr4v3D1rg-Dsv_5|$W`wgB9V$iii zvxJ_okAn{oB)10}upO=gP~;sGa_Sw?j2R4_2dEFu$<#GAxfE)5e>iRy^nyW(daG>IQO5OBHqu0(b!REV5`=z~#8)Ps@{ z2!+f>#L)Jvl}9we!2avz=cc>-2+LuIj3~L6rP_jFeuD6IC94XR2nuEG_#ne!0fzKQ})tm-W)nT>e zY8hQQ-qv$nG3+s{BTzF*^wgdgG;oRkC1>>RKuw!j0LQ6xaXwmsmXE{*%Q~sr_v}l@ zj$QKZH2&cv{EH&X*ieYWEx~HfJ*`sYT|A3~0(>v~laM>mHUezY*j+;<$$^b`XmWeLp_G5>|XNtxAAHELzO zFaNBzW|qHUnJpOP3&a=2fV^`3n&6g;(M5fm&$)sHlxoX&)5Gg~&(c6e!yqY=v6?zOFDP{pM@(VD)e3K1mSE zI-f0hOUg(=oU=3B(@D;bWZeZ$NL^&SNVo?fa;@C3R8A1ExYVUuw@3um9vZp^(oK<$LLJvdNAmP&cYI zE?}yhb#L7cDE7|`ldAn3k9?qW1=nf?Hf%s@Kix$bDzq1<^lt9x;@m?xs4E+b3ZAd&>)pFKL;&*{uC$&_DL(CWK7ErSm z|6KMo^0H*;-J$svV@apLzyVfzg@_l9+?8zTgeO9QhPuMXyDtN=vAmPIYn;BMNKBwT zvv5>|embw7Ffa`r*C0wVRfRu(jp}U{J#kg5FI1VR9YQfC6;H`bX`n04+_S(ou{ybC z6+ME*FOYRZoc>O@^jn{)pXN_6@A!)BR@X9Vw4jczTbwCRGN*AG%$T}nWzECY;PP8j znx)%X45{0$4BpQmk8j4bjjwtqtw3h~_}j`u?5*F@30EsPKSnt2hLILfp2H|`;)+J` zjJi*IHGEy7AH|2VCp@faOa#aLl3Cx-fmA=sk_vai1!6=6vie^R);r^IZpma$auO|& z8daRw4qEB*pQIqE^Ng2DgzOxS{1>kWqiey4Mxnst@ zbzpjPN>fBrfwN?cCYCpJ3uF_ZQ=1*6aYxR5Vwmqk^cjF`Z6~VSK-7RtGjiV^g?Cp1d?LX!QE(K_mawffZ`Q z)7HiJ)tyR12j<)Y935`EGy2BA64#D@?DEWj*o{rOhAVQ*1tivzVH8-Mfn?v);ONx4 z7BGLpzGq|6Jx=SV;WP|}vWyI%nUD07L%E$5!?2Fji;J;#t}3pAgh*VvM*Gb;%Mx#6 zhoapNlywEy8oi0?m%gSR;iF-d2t`sibfDxst&Y5~@_S&JFo zwb^j5-C0CW>Q8lF^u$BY>wjYln6J9?4)%wIMy2sco>s}0^mZ9gJ`_yQi$6rSj2_Dg zd>UZ49q41dB~}0ZTN!5}{I8iDLA02G%7V}qq$BoN!aa% z7e8Y3rzZ2p)Py@X5=s2OK1VEo3igI^7!hXqqNlQw zd;!UmRLVL|T^*&8E=b(Bv>4N%#H%xEefqp%)njB!y6ax}NJ=YLDRx%W&Jn%$ze8#lp+_r|7#@^}vS~ z+-}@&b0K(noSC)|>A2X0yyBpQDvrFY-~rO_OT=&Z=2>6+{4dw4B~;%?X< zxFIZ~vyAHqe`_{YF3?wvcxSh+-uIt?-*QF<^>YUvg6-+Br#lDnKAA-w8NHH+K|O{a z=ns7V>VetT=#a)lMVInOLt?>&?c550nX=I#j0_Na3SyjlH2n;)s**MqMb-^RQwFl;$thV+HHN%yG zEc@%ru=v}mE2^+yUnM6=&Yf*Sws7tEhG*rIEES+H*LSQc;g;tm9nZ`#Ig;56(r4eG zg(V5EHTYJg^Rhb;oNGag$r>?*P`a@x>mF)M(A zo&_{%O6(%jiLpy>hfDl|UKqa%>7#1RV6o+7pl$FCMXn#8&FrPX+8Il$=?KzeSay9A zhe++Pb#nCnbWt3^Imuz#7z7qw@xBb2`CHosHGk-?IHlD#Fcq;lCnN7}F|6LZZ53wI zI}A>YoY92O;xo>6pkYclNK4(p9b<*5{DMe&)6?+qVeKnIH^t7Up1rJ5nh_2`f`XWc zP{vz(ey`u$w;X*6>8^+{F#SV%L3#ln9VRdkO$-#SSRw4KDO}@vpcCAEU-5O_-NbM_ z54GX)l1GSzXVZ^za-{(Wse!xlJzTWv5A({uH|gl>H?%l7sTxABMBbjrVmIux@rm}^8O|f|!q|b36ezo0M+{$Am=2`zEsZsT~PBwK!$?JpV^-XXF(X zKBeAqv0R|}1K$rFF3-m2uD^_=6S$Td%7$G$nbu^V?G;xaL+KV4*g4spW{W&lbVqiF zWQXp%@rOa(jwe%K`=!-F72nt<&np#BpE3FkOT}hfyi4!)1**udNa0+jl&?2Qu+qgV zwqP$@59e$P;?2Z#k^}6$lZU;?s-YCa!KK>Wv3Te3(EZ}0L$Rp+FZ~wxnxquYtdieV zJla#cSE<2bz@$&%$*&Q+J;Yh{`52(K%T=&b`@yPCqOF)K<6J%JDEv{p-E|7#Lkd%? zyu-_V$fcBGSdc_@^{Y+Nsq;tK7}bbH87)^-bDbnvNhQ{n`*=0aeb&9i^<Kp2O;upZOwm*yu5PRw7zTY(yuS+mj{cvFhhr%zl) zy2Gn~rfB|sUkbh5LDn|jyf-vQOh16o;`+&XR#s5K;s=AZ;1A6&6;L*W;^uj;%cO&+ zLkFP?BFZ;ER?m{}3>s5I9PqV{S8ll<=WvxwS&E{pJgq<#YfhD`Mrj*Md2yC4)hu=O)#_zbO+T<@ z<(;ot)J}(_TNUG*xHcmr<8B}Kw41y~eJ=KH>6W!hpq+8OYndMO<8hl^)|e#v{yjX} zNJrU%Bz}Dt6Fc=pBCGr8n^0hw&SnRyO;c$f+f|L=}dDf%L z(c5{}5bl0(p`P80`>B*J_*75s8(VI$1n}cySVaDv4UN%+>DxakWDkmeF?~^76mrgv zQwH>S7Q&02#ehIQPP_W>J=Xx}*r-lJu=(wj)`np}9c{1oC{o25fWqW$@n(4Q5J$Gt zS*%5D;mw-R-D3aKH`)i3t2*)4nTB-Nih%uqH?$3FLWD3BrIiQ{;0(cz@)F=qg@juF z!QUY>A(i}-{MU>7ZpU4L7F@zL@j;b`yhRJFMsKNB8-aXvmw??2bU`lW%%O(Ju{pY{ zg=pl8{fDsDLSk`2a54nUWQ?^cgk)Fu7V5)$eKc>#v>QR1iY2#1TJmd$CnMa~DhsAe zgVZedKw>n-8R!aQe7a8=S#7l_wqA_VDUk3$+vnm6@e!r=s6QU zw(sjef6yJ(Yw&QvvwgXo?7=|Dr4E&%YZcO} zFhMViLVMZeFjXdKJFesaK$vnkc6DJuo~CNzdxb9kGzEjINK3%k__Sn`KvX%xNr@D3 z&r$DOQ%>G;<@(!iY*PkL8WJ}^tu9sT-`Fm76!+cScEQHDvTiR7ymo?@h4x|stM#q$ zZ?{H0(|NA_yx|0`WV9yRCFk6Wcf1`dE<2BX?Tj47&P-dO6zEG|^I&tgPxTwpixSnS zSM2H|R==^urpwFcSaG`1nu`{yC~2f>lo-rSqokTI7!H@l9NlZ-VtgfP`tCUd_jJqL zmf#gB{)>mazM3P9D~O4;@~JXVv`x{3a2m+Yz@0!~zm;JsnE3P5)jLjP0~-ny6&~aY zbeD0A9Qh2-=B1&ccMA>|{27auE!dcfGH#l{3*(Q6&%V*50u zR{{&DJ4eQhC)C*2`YrcH9mvzBfmV`F<6dBMUt|tl;L>g(LK&Gw;}zr$sQ4RJh0;^j z5|auP$CEjC*clpx<@g{p7Qf%Q_XckIz|+sdsk`Bx%*DW472xWu`s7}1gB@U93hZxF zyHmcS7wu4EwspkUTFeTC2AVHU78!}GqZ2g2Ayg%?RC$zw&3*~OE}oZDPB}cS?6E7gwCg||RiY{Xqj zpY#DfNln{dxFi2v31I)vN}#SPE2MtkDs4ow{^Q$QPCq z_Uc#~f78QyFX`_99uSd-Q}!3#0}^f!Dlc0DYt^tMK3nmu*NKVnm}p?5PQyWO1&esS zEXJ3IUyqHOU7YQjw*X^|KDmq|TbFY1s%=45Y@vYh2oBhtt&A3pjp^K{_%=RpPwF$5 zFo9wS6}V);D5R>#x=>SI3#}28=dWkyA42>zrEDG|EEZv{tcD_8Y)>w+!&lMHd&`L0 zBH(dcW0_q?>?(5!jr88X$NK>P+j`iMqeE#I=X1GB%-+x1p{*ogD&}YBT3nz5hZ(|t zJsD=c&m!v4c$js3lbTm0DToxhzD?cKrbcq#+mK(fxd`YL_jLr9^A03vn?)+2FFt5* zaM2!^`kM1g^LyWOcH~}QFEd$|VB9PmstZx$F7#3M8npd7cS*+V((*^mq#3cB?B;1= zw!zm+5s0-Jg!+)e_iD9`CTiP??68 znq6NOUM<>Eij-SUS@OdM-@JJ(t~>Jf0I(dNkFH*1>eXHGM=0;|T=8dr!1ee!9Vq%P z4hHzDZ#ydq1gg)f>FWVaJR>ptCv@tkwY}q{h?@^q`2r7qLRw>!k&kC9N#x;arsriGraH}=gQv-B0^5J|%Y4zpqk55;Rev)|POfxSbX#esm`XdIXU@EIsw5&7;?EXi&_UP4Qe~o_> zJ`*WDXY0Ge6w`LA6yu$L7dI|T0)f`>7U@=iH)Lk+l?G7#%b-T8VtW=J;?&uI7U-mK z!>G48`V{WXC{#*D_++6u#zHN5Y~_oiBG{*H$E`>V`eI79G zSg!INtCsDsBg<$Vqk>#WnzH2M79f~PhrDI^E-m`**(OI$wS)zw@b6paeq(z!UC9Hj z{M%?4Lgl^1oBJ!Szz*q)^u1pY$?5O#ZWQd(yK|UI*v_;E0d2U2;%e(nnx`K~?t2|u z(Q?&*`%>gyt5A%iK;(pT_{%{diQnDR5O<4ufzBlmP+#V4jrPEf|a ztMv-Pbl99lRM)-B_{(odiOwOt$P*!pfO~gLC*Dbqw_&tbo~Nm z1*cUin0LYtZXm(r@lQ@Tuz=ydh)m0`eR+wM{BNM_ z04D5)DywY77xQ&OSECOVd?$!}kF5X>T6HEISh&M=EUWOX$agu`LL?tuz< zrjiO06XIPHg5pg%;76NviLINB34z+do!+3srJ(&BjKw%-Q?N#>_xr?bCGm|C30J7v zs&4YiZuY1TOGe%)XGwHf_@gJ;{Su$BzF_}(wREL6M8mZB#aco5*pa`wKHjlUEWtWh zuF^#Lv9PF>K4)`Z_B%)8DOKe?-Pj zKr_CwQ2VYu(?7@Oen0iyunS9>yT>`F!{==x zOqxB>i;S>NqcV2;tQ| z2f1;q<1ECYQ_PMd*POMLS)|C6#C(9khuS2iu`5ZlBmAg~(bVN`qDN(C zt4Z4+?oJ5FDj=jTD%kO*#y#tQx*R2z zNVhH2RCF%h`Hd#%1X?fy&aW{0u#b~9VkIe4I!%WZ+^DJeu3{lIe`Us}4ZG%Q$Ozd! zU-=pQu}fU2{Vu-2!Nui$zS+E(YdfX)!PwXfg|>`9JhFsHFW9!Yx)ilxG-DiDeXhdH z6s9kRbuJ1UXIF@+*s3*jvqG*RWwF%{SW#-*c+l|~#L33Hm-dIIm0`v?TTUR&*@>UH zT&bVm*s_L1msVbG>w1|_j6*C|horL( z8aIAy>Bpl5ksuXL_Mj89p%oRbGcpl{n09Fgsmo&x1Ulxj1U(LvH$Vs3s zT-Dcco)Y43TO<`zExbCl=!#DkVB(tb0DLmG4b7f)4=DL)~4Rgxsk)y}|F z;8k06%q+xgLE#;J&t0aJr(9)>-K*(AReOPmB&QRJc^t1jFIKYBR~!V%3rdz-J;k$h z7=7EyvPFqyQ5M!k>Bc&;eSMp%fJD$`+=jz%7&c7gE=a3k;b9SHUjpj*AQB>V#XCAH zVW_}d_oB97qB?GI8nDTC84bzPYh714f3bM?^*1)rHh0bkCxX3SV2UKv=O=jH`&#Mh zP9mX5jL%;6va<5^8LFxGvD*b}o!Z%`td4<7e!t!=zCDNAY7B+_X^@ zT#TbdqR5LjI@p!Av$U?89&7Ie%8}0dLstnsX z)n9b&HgJp=2mDe}N+YXqjY63Oj%y=wR-N!g z7LfnH-rhT`$z<;zW?k1+u_0AJL_mSij!2QF?n*?&fRKdH5_YMQP?X+rJ*z@!0tTdO z=m|-rB!NI+l^)ts0@4>Hbb|EG{_cS1Jm>jc*ZaKBAMf?fb#pU)zVn^Q+*7{u`7RGW z%C&a;E5xP-ni9hCuS^id^aO88WgO+>JFCnVgn^X1YrtqXVJ^HotRUvVSNJ*eXq_^A)?cY+UnwUf(_l#or^v9G6 zm-XXs+RN^nWd?=qRY?KVnP?nn>%;eA!p_20Esv%HP}m2j4&C5@y63G7u z!s>+FhneckIdi zO;mg=*RiK8jRD&+mW#*DZb?otN8mue0Hp2Wj6SZ0dih9YX0W^8iEZ4SWX4%m63e|+ z0a3p1UMJSL5+_2k*0@uuY}24fv%2lMQ?%+V{#eFzQcwv>;cq?XV3>uZmT&44;RT zNL3TprA|K+YIRNGoZnJB3*1vv6b;R2ZLKZ*`YeX#ogp$FZElBlZ1upwlegbkUTrm& zS1zZZx;2G;IcDB}^LaU9-Q7>mU`K8s>Y~$}%0<(e%X9boL*t&WW|^3C(R45G{1jV2 zSBo}NHCE*@C3)&Gft+dXO2GBpD;i2|rS7wDU2Sa0JCKNM*6)UyD2cUP3HemtV>1QH z3D0Rd(5}Uk-8t!8)}mrqmSbU!+BfV8${^-$O7ZkgolBSaUJj}HXM0ccOlbeTwUm%4 zgqqggj=t^HKUUhInkEUr*(BMpTWOdG;Q!G6B~IEv;DHe(s{_)Z04O?7Xfz6t7Uh3H z(HdWo&BH8WoNm<&{BDt*yyCz z4fa?&cxDK*2*J?0M;a5n+u_6x1gL>Stq za7prvk8^MU1}+EyPIsMY9d_^E$v(MU6&?{#K1_IYdCQML!j-f>Y!SnfU3v(3yiCY8 zrOwX(RO8HxK%YiJaW^e(9O_e8a6cEVoNx_3%LUt~0XnQ}{hQo81kIf*E$sUG&Ao^( zCgSd@$i1p8^8w&Zy+K}RY*tpmbk*mLwy+Y$qD#flkjzZ9_5IC+)~}O>1GK=)DRNx(x_vz4*f{QG8_ zmsbV^aaj&?4<`F683m?OGmJ0VRYDJ2{mO^L2<6Y7X@=CZ!QmVPw+2!9zu{`#1 zj*1`ma^G{bVYt@E?*od0_Urr|Qo){=#~blq+%1is?9@!ZEws$ZJi-tHhXiz8Y;7Ca z_EBh1AEFCXnAF>bLoDaAhtmRyg;SXV&QUx5d*r|QKA1I5%;(|$z1I;7_9Sq|Daj5k2Mt9Y3kC1_#W?Fz!YeH=@5vCN2%zGV&@`Zw$r70 zYqkRhA4^>fr;EP$q_>DyvEfxah~cz#wK6BfO$iQ-ER9kTy_M9>p!Hkex?1(2jqCsr z$gih7YMl_ALe)$2t~y8k>4SueMRQgPHoCPiTmDTo@%-HlObTticlPnzUA55KCgtRG z&Bk#_q@3RsCC=S2bT3jucV=fmIeRtXZ@$!501%M9k3RpIg7IXyu}2sqssv$^L)_B5 zLx9?KBK^FT5)kBskhQ@XFyn){nWo(GPv%0eI>m|hlChSRge+|IfZ2ujn{~E;`X5-r zr2iWQFW=sn=RJ4pjo?)6BFRYtwRJ>mL>>|>2^AvH|Ky0+5R2VZ$S0ef2!K>(nq06_ z4~nVX)7#9_za^7Am~vxY8!-e2lx!<`NJgJktIf9Q9}IS+U-&^@kgQ{udiTWZE_-E# z^;U>y9tnLn!R;0%)Fgi!0XOUvoT3B9{;nuG? zWxbY$F$va1R>gNIrZWp_cl;esG>EBJfR;}sHasqco3tSBsC*PPd|&B1fzizE1~4iE z`cm*kjTL?_@0vD0)JOZ3%!k!TXa>A0_SPwE(v{Z~2=k4myf^o(>VcYB>q+OoFfK^& zZT^C;?6CKi@q=z4pH#I+l`v)=QQo>|UqcsVpVylOMh|+04|0d^uXUsJp`7@2FcdWe zS26h%zoi5y^42M=A-2^<)tc{YYG)!hqeF^6lnxGft`kQz3L6OPV`fTLWTTQ+wnnUd zk#7;j8u;;u46@Q}uoa4+D|z{xm3$}kB)E-X>MG-=#iWG~y-*1&?=nK#10$XJ{lb{S z!o1KYm55=EAy`}fxT??R4E4{kzUB>Akl)XUs9h^ur@=xJDBY_lgj-83?9Tev0KM9! zlc5D-E!^`+4_tE8B!^(=-5?8RSdtl`3v>SvPcS<>o_5d-08A0*=~YV2Tn~V*a`Z7t zImFiGS}61O)&dO^>n^Z6qgZ4wYr6(q-#!sLI277U5}`A#ShE#w8LQmhkglrz9`7e1 zSnFeIsqL{2Yo*ri{zsiP4K$_R#KF*@%CW{-W=ek2D6#x@SG0H!OxaJsKty}?-pG8V z1{3;MfzoFv=}b$+j;anazAIM%-(|THl(9X#r$>-kU7I6qXUxT%H%j@X;%=Cnz@30f zEgRjn*uvh_B^{go83P1v%mE)PbxAP$J~YCj0MH2GCcbj4!KHn92>$HEdHH^m=2BpU zjl@prp%@sr-&_u+Ekg`nTPv8{6c}uz+XV=*EjJkDMsnd1$~WOf zT~@$UDl|D;sQg}hEH-Q8qd$2_P>`*YL|9+lSEv1?s+0N`)WPm&LW78xjx|*BVJk^# zKps>A2R`p!U&XTg% z;!e00dtuumn>~3sPcP+13u<3&Vn=IqbsENE#h8mSL=t(NO(VoHU||o++BV=-cp0Mo z0K*W#M$F`Y-)HUN{DQG2_i2O{;zzRT_0V4~rWj!c0kJu5L5|iXv9H)uO7aCJ*GG3Q z_9f~)7u8*`mDrdkP{KgIV@Qw}rg!NvLNbR{kr_Xv^u_(PXTplH1S6;W#_%e-fB>Qj zKu1a~XFtzGkBNMu8sRs53G#d+O5tCS!>_*QrxZGEPv8Ag7dpDdUqgI4o9x&U7_D6BZA__ ze%>^?#d?1Vdby6Ua^{km)hCq>!%7xFH(R`uT2gjq`AC%Y5tELJ)KLWn<0#}l!aoP|eD?Flu3)qX^ z6*y;W{X{A;vBx-maC(U_X94ZTcUnKr^%d-Yz(g(RZ60R|2#)ptxo26eJ7oI-lV!AQ zEms2$b{0~@4A)YLV%61AT?kKmNP1d}6HE2Ys0pysx7_7JgPGUZ=#1D)mOGh^-cer{&sLrujJwhIMR+k0Xy~|mPQK>anF7I}9QfcEIT~F4ykDaFQ>p|v zIr{nca$9kP{Lp)g#8g4o@%+3jTHwsgyTqUgr236CvQNrzWF~B^`cnI%zDbqc*9tX{%ahzrwihvW=0W=J4lxCf+XR=y&nDDTE;Mz20y{OJtbz;$>qm@y#U*xeZG zm_mwsKYnH|JT>rV_vC>4a-%`BQaL9(&QiFgKHH`wY*79QLq z6NR192|u0*TL7S%SzQ02g_n`qbKve4`}=DzjQX3D%h@MZq}Yp#JLWg_`rkkrhIRfT zb*fQIHJZu&a5tmz3zUDI1nO_CHOAcH(+!RK0i= zFV=cshiOJHRW#3GtK>K!+UHuJkE&!SW?i$U9*>6R)Kf#($gnKk$NLj%e!2NJe7j<*T=Y4 z&?e>_3qgq!{l%WSR>;YmB!-eEb63L)Gl~hQs}QZDmiC6ml~O@p{Oml;G!t^GEHztK z%v)JRat%wW_4%r3Wd$azRYll0y9@w=?k07NU$=T+ABp86^a|9;`!&(K=eunw0q((z zzxYC`Y=|T-PUj8IcQFc;wF*oz#%Y7ZMK~mv)&=Wh>u9~|F`SVq+U>&^4eDJt^#)qnBU!cH02lS-EIaOdqYBPFK$u?VB;AQ#rH=g$L7WM_OW$oFiV;X4A#QY z#b=85-qnJ52n$~v!t{SBH}|;WTV_}6cf!n<&i=C(j6Y$W2_ZFv0N)%&;fv&nn5$H1Qct&B-0+*HBe@AZ*F0Mu;S)*{#GZB*t&8a=HDf( z#R&EY@5so}=_J2F@K-!JjfLe@*m-1>_LUS((yq#CG!hC*vE)I5-}*yy&l)?D<~k2L zyAb_|V6M%9)lZL6!ZRZALug7hEHrK84%FJ5v<2(ZHNuSLr;AE#ah zhJKVUd+?fml8{yrZrO)#kqq}?H?vVgFfZ6#uFC0){_jWJ&o>DV4%m7n8%{cc{t7kq z4(XDNDi=vV4Tx+hjh7E8d7dxP;Z3oW(z4d>;-`mKCIZe#KRyCnXnxhcJiBwc@oXZS z6*ZZIBBAkB{Zne|A+Odel;+fL3Jexo-Gmr9wI~wu!Ww_<4b4K=xauXe2g|F^5PD~N z@^Mfk%$9=d+pa=FXD~&sc}1=rF9O-|UVZG@mkTt9{-NG8Sp&|MmVdOb7@OSR5>H#C zq7^$UYE}JC8(;@Ah8*q_w3=UU7|3!64g?Q!0)gbu@a@*orgGgcTx`^xL*`qWxz{bg z-cw&eRSbP&Ea{u37+lA~G*j1qqtI`*-!KU^T{xTLW4@-0wbb)~4J8O0Oc&^Vc0Dsm ze*!2~aBgs?pG@PANG!UjVF6QqG;PHJq!m!J%ns+KlUKEGeem=QQ>M~EAY*hvF3hSR z;Zj}#aTc4_y_0ZupeYM9VR`1VojdL1mWpq04J=7FRe(~M+I4Ms(VxcflJy&c2{@<=th@u1$J-1Q)g3pz6Bl z8+oSRI|(lkomOfMVco-$U*&Bt0hqPpcC zSMCzO!qGCj!r(K^J6QW!m5z!!$I2EjOwb67Wh^4+#Y9Ds!U_uXto;K-E+(5ip-=eh z+WKCnv@Endj=Jowz`#g$qN3O#8+{CnMc~tNTNS%IX|`r9LuQZj<4Tr#49Iahl7x6e z%T?~k9zGiVW%bV?qAKo$*&P5?Y8JbwdYsMe4nWF7S0rB6sit6khg)d7iD3n`1Jdlo zPuy3wG7J-s;#crT#)&8Hw8RX3%&)e6{tLR*ecxHKnC4OVp(~gxC<@WmiFo5Oa zQuc||c~7BGmWJKVW<)2(c7~z|1dGve|$%9BFjkjf`m8$fDO498O26~ zzoh2Wt4qYN|Iziy6L;OBD%s_ZvFynCos7s#(K+q-a|^E%oa1=iJ zQITw@1)$vV+ci@VC;)tCs43D(eaK?!;*04WG(DT+k(=Pa*;tvg*@09xg3E0;TVhd4 zMY0|>H76xvKVH4=5v;_Po0+4PE$l#kdu6etK8`a^`l}Lrky{_{UcNqy?#nr^BER4j zpn!QPuQ8YENa_=FB&xV z99?Up8$_QHfcv-!n6s)$=tbT-T5{-uslrdVJBU|K$$HNd^HKL_FL<6~TzTGFAZtCK z5nXP$NKyj}{7`=OOty=2BWD96POhz6z94er(eQ+?+Dy^K)`6m-@bvitp}gEea$#In z@(I^MU@eSy__h{)pP^sYWp#sDAL2*lt)dOQUX@fz_Bv(?rbX5;!2O?sQ5T0VJ^kt> z)3%V%v~#(rLaYA==%;v_M_T}({TN|IZ7_CpRRJBfB>5tZ2D(s;xJPtB*XRax-y4wX zX!Vu8yI1{X36A8H$QVJH@h7n<28T10@x`8E5if$4L-&t!+U*T(3@HY;b&lm(6Gn!$o~14 zf*r24FxsLDHbM3E8Ips+FNNq^xRxF=PQdT$%Viv}9%5dG+UBSCnF_fCQ!A)B@kH>!LSF=7h| z`!ORup5wb1oq1ETIbEB6v{<+|<9c)HgRtIn98Jv#pCZDX6Gj4ZUNbJ3itI@ZN?DSx z-~=+0lq!e3Xj0N+BvF$qVM=`$F4;?#_Q2%Zd=Ry@3x=BuUR#@M2 zS(E1m-9iNk^G0%J-gifR!87GxIAk5E_HJst&o%h7)a80T5s1xBo`y&eW@gMHa;i?* ztsI8h9!(i1rww8y`NhW#nlAsbxF!25#eJ3kY>T4xy{XU=sRbPyCR;#v6?{YAGWz$8 zOO+)L;l@vybj%I;vTv+L<9bL#uNDYI6|yw6=c}dHu(d6kz9o zxg6Ta?y0%rUo{8JuSo;Uz~4+7Bz=yNX`CnEkoRneWDLVto0a)s6@_hDkR0`lqF-gq z=%pzn{#5e*XF$Je^KpyVS5Nb8uQq>YQc}uiG4Eb~1kel1hm3vooj>I1_rIJwc^f#l z1q^VZopO#3%R33??GT&hL8WT80ZPc`Ptnp#_xD`y&5_TwVbltya!}ud|_ZrX%H5 zsM0F1{n01I-r_Zwc3~DeYG#*SAm=&Ny#n&4beKj~X}%GGra$JqK_Vfne_jg%%Yy#m z~0jdFG$f%g2NnjC&cym_rgqP z*uF2ykFeb9SqmrrNO8Oc+?ig)gl@UERMYpraJ*N1Fe$b98($^0SPLSjv?G&uV(k;G z1L&nEZ|u^m+Jk)-w0dD)zKc0F-#Ke_T)=%n44-+x{|{o;&{4RFwFjf&JZmt3;AXWh z4@WN`3YJo631%(9)W>6@jofqHsCU99`0HyM_qE5)stsg;+n=~XIF0V! z+{A()u?bWwcg({VJh~<(q7{GPdX*_`-oM8wjZiug-yMphpDc$ZlUiHpAT?x&B55X= za>w3kir#}#aAtJZ5I(h}QU7sw%`rDVyjupJpMs44xs->T)%hSk-<0?)bG;PikCMZbP#?C$~@_P8OL#Qmx?)(figKf8P+WuPd8`5$q9=00W?IB>ms_EDhK3n%Orb()? zbeO;(wPI)p8^TQCXIP>$Al9fP3pa$ryMYdEn)QNkgyo?sKB;xgQM64~B{3LtvF~ng z9rAl&Zf>DxQmRcRTv&W`bRl>_=i-a0XOF%0o_}sl(vxRhDF`#*cgP7n*S+FvElD2j zM@81G_9OGLN96L`>eO2yl;^uYmmw^b159dL!i~>2ZUhmU2vviIFo?`H;mmPo|Cl=p zm6oG~eG`Z#IoRb^YsiLdWsq$?o`O_EH3I$WG|q`d63P&2DH$Mad1=zcT%TpP2CtM< zr=y&J7GVneV;)L-NyJW_{p=|b)ji_fa*Z+XA6stG12MW{2$eN2Oe{-cn-|sEH&A!2 zC*dz4A5E?*#ai~7nR`|;5WD%J*H$#G_F9K<0(J|s{)8yfcAC2g>&(ZAwPE$n`HE+D zWktZodHMq(i;t~#%R3%upAb97bd_oP9m;LP*HfvGvhxii?v%Qf6BNxQ(?lK0+r;b^ z4uA(wF=awaI!di?_%x))1ZkpRyQoETiSu9XXbMhYvifr1U6q6=ws_PYA(FZJPz37y z#7wJfv~XUmL$zfn)^SPaRjaOdO+JF4Gyz*3+(Y)`z3zP>!ymPk4R|Ksuf;uNB#U+1 zt1Rt6JaHNmfa+?S-<%D&5+;ttEu=pusND}g;by7OCW)*Gv?g3Yppdu#lJ$>djP9MD ztLKkDB#so*=`@B28otP+>t@Ewh;m-!#OE8mAQdLo|P z((F}V(KVRM#9{%x2Ric#3v;VQ8{McIcwK=W+=6K z;dGLgS<@C&361p|g_30qL$nN44$kph8}Uzvcdy@xUh2G7Ho0X$7Zh`TyKh151B#l&rzbNvJq_`7yw*lvd6q@c4hP-J%rC)Y3Q{8p9g>~FFR^*X321bj(JV1FSA3bZnySQ z_BqBcmF`rbWWwN!J`1~F9h%F1@G>54rUbU3>FCzWf}Sk5W$M^P zuKRhZgYws=-QFtaFE^=vGCKZ@}RS-0*>m_agmfmIi@F$nPsE`Pw8z9nMRVO;KjF z^5@|5^YfCE6;RCF5O(m~aP;EL08~oK`P16n%l;p{x2AH-`#J_$Cci6NizNCQLWocT z)m)I?G*-_3#Rlquu-SBb>6qdax3;5J(|`AUSFZ0e6nwXKnG8n}GDU4SG4~1RhY!gf z!nG$+7l7Gbtc^OVCA^iYZ zf6!tJ?48H+m7Ewl>L*Qwkc&DrdKo~HkT*mWU{gjE{< z+MJVl<=N!)MA`+1ek*n?Qf3iTla(3rj{HYSWob-~c;gNGoBY4jz?`7{aP|D)rk|&O z$-hfPBx_ZX**2LBKUB?2P`hGDbnTfN&hE9txn;d7^!B_;IevYQ>H1JF$1q^C6JOx$ zRX_I|Yq@$dN2%0Nq_RlnncitocjLMa+!@T7t(vcC@lb5{R!$PB3k8vWN(Z01+ zvw(Il)HEaTeB+lYC#$UQpCOlGOy^X%3t^U8HB%G1Vqcy!Lur~Lh!EJ?R%?H$e17vX z5fbs^Kia~xC|Qdh1VUo|S(O%su)nGw zzY6P>=@pLu&39g{ zvz4$CTorRDK}0Cw5$4?YyR#OPLIr=?Pzaf{IL`*4g9GS|1zKxDq z-))u5=Jb|7`G~EKk8U$`pxq6*hfPNlyioZmM_8U1>dWUrR|YY=K}>KywiKL&fhEt# zWy$OKPiig<`B9OoIKj_PtUN?cO<{$!V!Y$0HaE{d8eKieR`w5fk9J*WsOivQH z!1>S!Jf!F;HGJpdXwD_3Ew>yS1-+vOk{xsQvBO5zo_R6aJQIkiw=J*K=^$Dl4#_CUEL;N(_i7y6D z3)L!mri7clsmV&WH=Ub(^j<}gzA)^R_cB^^IEyeOJCA6*8ApyKWXzdPQVW@D?fEhk zdpKlmAVaL+ga`d712!eBtz?2|bIw-^EiS|v$oi%mnt4;oYQc9*f5SiuJ{H$WH7>X1 zGm8HE{BiO>=Z`O6z8Gl8`lnRQ=L<+py9#!f?XB#)k)_=a*l4-P=xK)6XT$CVh?CDL ziAcYSpY0UW@7(b&A5QDDe24&dN*0c`)=U>s=k}s=1+Hkve=qt&*_5$Sbg!M~8e5~3 zf!=OT6q|X6_QH|4WH@ICICU@Z)4X-Iln9PL@>!*{hSEZ=>h5VW5>4I+B4e`15IjiR zu4Uxmy8041ZQxOb`R72tGATlZ;d?XWskmf&l@KbSFr#*e;=fu{1bi`Zf3y+0Ub-rJ zGugYz(GyAF$sn(Y@(IX6=P?y?p*KKHNfxUOZ%1~HYR{uvber7Au5FP+f$51s%VtW+-1}-mm)m&6Ib|v? z9L}15T`TvpHKcmf=x|0X&wSYT)*6DVQzmr9JL=!gsf2F{Yh!GBEUp8w1~e93J-~+C zOvF9Y(;UkfizU-l}CQ@Gg<%N+&AXbNFWLsZs*!?)m>n^&p8Izvj#XGCaEXBYcI|VR!eT)BNxrjb)|Kaw^HWE`Kk32mn5O4qqk32m{_^+^o(!XW?mX{Gg$Kk(!TOaZr1-!ny{TA>6^5AX%0MBip zmH>f=?!!6)c4?l6G*HeFp5@T_pB8`sA?br;VthxQ10in#7911^(8-Jb@Gv2dY+l$Q zgAR6@4!4^Q8N>@X4B}Dy+iid_UNA2aPy+BAu;(e@T7*Xn5dGv~Qyh?XKo5`fgSJ0-0S+F64$VQWfW+qjuOAMA z-vR;Byyt*D2h9L55-% z`+=7`&j8MU^YnoH!#e!Cm4GNbR`Kx_9(W!3?KWWN5pnL|c?$6CfCQjGz$hHN4{LrK zDCf}k_MtDYBODrl0EOF!lmi||`9Qo5{gxMI0kBFMC;*7TGe2Cu{r^rL5C^El)59Op zx3)ccmSzSUv&ZEf3v>jJI<@#K`Q}uy$#rTq#x7)u=5=M%ho?~5bwMHX#ImR1EB2t z+d$4h@UhXdzXJWQ|32t#w@#Sfq7c^J(grKf8%7cHaNG!p8brQ9Z>{g0_QI4%#nL}t zd;)udn&-Gyd$ObyejjIyOEeCeXo$gSVWaknxX6I6MlODm7Nnc86XM{4cMaORIaI;* ztBXN()?qxI<3?14Uk!8Z<)7p1Vy*DY!-N*`*u5^P1_*wc;AXCyg`QXYeth1NrQBz` z=W+*OI*3iPh2rCMMVMNBm8j^pJ-=?>{q~)G>CemK`6%7$SgfD@OI| z>6-cCLtB%8@A(HZLnmcd!fjha$Tvo7x4Y>bXFH{W;y)?FYgOn@31EaraY8k5;ue~) zYGx?|BFN+YAu~FsP31ondYx^^d^I6}lnL$ugloaeLaCxAv|X+tDt%$Dom^0neuMEj z)UEDn8%2cBSt$?%&0}1pzCNKR*>sl+GlaXUgXY3+2{g@B>pOLGgilg(qlH5|Qq_Ni zHO~6?fEL@fhT#2Q!}b}ouB9?N*O-6v^>6s^S*NY}6cVH2ulp>Ip@$|ns)h3#9w}Gf z&n-@#f?b3gOU<(B|Bh-hv@$Xd zC$`-(x*r>*15HT}XRMiF3#fmQgoL$KWgIOBKM`ih{x$>?pRq!VlI95x$4CwA?bl85 z*m=EI;i+f)_``~+2s_vJLa5)XVZ}$Y&X}7Pz-)NBYlt(+0Z^0sQw;>*s@F#1v@c!S z_3U23Yj8duo=seK6V*ZuVeSFCv+e+8$6EGwGR@21bAg+itp9DkKMdIq?Bx=Vtu+p;ndU%rmvTWUiZPj6b5?eu1r2#h4_^dfa)YBy`Adg z*Jbd0%^ouM$ScNktbWLu*6u}BZ_oTyut6dx%+WFNxOMJSEPSr512&U4c$FdlE>==I zy=fuB)wIA;MwYIE-|fG2E55b0>+6xR=)oH$kKbX(t$mB0C()iU62w_EA4h)s z+7lU9T=uId|C*}FQM1GZIxN+q z7{@4a4g$2|wR6_!Cm6NnQW+>kQ+x){*lStf1V^jZmS>hAk~Q@fc9dr!9lAknUji39 zuUFf5XOSD8J5;Lp8^5CA=iJBl5^rQoL7KM*oPuR-1^wn%baq>7n$yO@3bJze>q>Vm zHvB(2RYUFE&*edoKXi4qO!X|9Cd4^h#WC5U^8m=(5%2r2>zC&pddz=1V*;DTs1%c( zJmd1(kT=za46;0tm~cSbVbf9Wej-ojma1eYSw9 z!x7&9gE&A8-UsE|HxT$F96G*DRla>~fEc{*4`6t4c}6GY>Hd4#(z{M-$ zIdBdNfCU&_w})$~jX9@9T;atR3@_h!v?K4jKg11p-8WepbIW#^UtK3o#V!InhNG$f zm2GXXC1$rMe&1YsHfm#FvbH7gZ@#_yF_PLC2DmK8%PgsVyPGqgr7{WV50u@gy4f_E z1cZPb$6iCW@q05D=*#&ATZUr<`7w`!6l1&ud+S^DWt72|{ut>7XF8A`8X>h&72dj$ zGdae3v%wJz&kdU%_?EKhQdpzMZc2Q(nf9E~m`^%T1zsLs;*d2`F%cIwst}9d_FCMv zMb_0lW9Y}Lp0)c>saM3QnFlGyTBdj@=f7+zUEIxz=$G_ftA^Ix9GOg6yxnmN z_hgJEzh@l2vio1@YCCQvmhh52HWRzhv}_5K_ctH;24^8$aqN=YMp5|6{L~ggl2=H| zqCrOl?nx&vkDI%aQ(H=syfQ==KXybUmUQxpZc_7FGTq$HGOJ$E*@rjXQpjGrveQvU z0dVgQNH(h#)Y-q^bW1*atzl=$hcZ#@vm69y1bouEbn7DJu0hT6-jq)NGEHa8@Nd2% zwb3V;YJc-31H#EbMshn#Wt54G!vunjH+{4Ba}XfR_d~eY*>CB<$Aam{&2A zQ4J4Us4H3zWAbl(`tEH03h&o(lcf<)phkxOl^0Ur6 zx_kL;y~OGJc14S4Ds!C(Mg3SaOpiIZq7f?#$eAkb?_@_rd` z4H+GUw(r!SBy9IzA0{J#i`Yk^+o}skC?M4?13^HwV@$e6jN_XD$-Y}tnxgk=t)KF_ zDtDVs_?8-Q4f}?xkRdUAQr2jf%wqSld+Uv94mzyD-p!DBu^+zIW^KWR7k$`*#%)#I zAu-3CM&i1?r5;s3+B;a^KuUgI6ixp{*hVCOmh z_v;2}zTCKVVx8Af00VTG zqkLx-_znm>Y(gOLeDY(KtNvuFPq!I-&3IC#}C;6lmVEx2k*mvc!XDyG~n@H hg#4R;w|tT3fXLE^S@F^q0Kk`X0(XN(r21VQvJ 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 z zAV~f5IK)O}Ap_q&}diQFItcUB}UF8d=%i7rl zG8pSfb*EDPs{Nev`e~E*)%`HIbNncK3!5ogK4GCBJAqF?ludlWC#+&JxTnI*Y`m&$ z1|v_7msbi!R}ae`y9RK_!P5Oo2his~H5|Pf4w#x$5Qaku7VPiY74m-MWrjl|fEP|g zwZ$^9I@M)eNr%fdMt*_D0^7UC2#;3Ntb)AMIQD?-as44+>jO=U8XVZ$RIpZqca__p zrD6Iaqsy+eRe*1q!+IFB+nC#W{z_mS+c=AOpxB`4bktaQXn?keT+y>BdbO?7+jZhG zOb@nz|#tV;9X{5ez&^B%EPaGuLW4J1D1*HgM zrO|RZdT$B|met)b8pyY0N`|wTY1bTVZBt}RgcJ0nME)RQzf5E0?cJB8EwxLqHKyKPoEB)xOgtjEc z-~t;Y8p$|_HbIn0uRg=`jaA3z7)m`o^6(?$`B6QZ!mGgj0&5m-Zd4m-jK_-mMPY*R z!|p(QUdyIbiWpcBrCfj%-ke%WvbP!x{q>> zffUjC|2vs?>Veykqgu~SC}nQXk)3ZV*Rdvkj?qzJ$qld^#ui5$6$fXT~DVq{grexsy~MG6oedbaZ}gKW<@2@W_3tK zq>7LZb~R*C<^rTxJl*c(cf!}7HuUXIErk1lJ5SPy;a6Gu~xqE|x;tH$Wv>n*8Dcq0CCY37TS z!2dEIP|pv9Ww}HIXiEow!7rc{@ZxSs<-xUQhaN~q3?>*?1ECp6nB##YJ`&c{{APkC z<$a(YpY2}$Fg;v!sj@TEniG#Ne4BbozMb**uktFDY?CMI?(JFDO3T(1Y&jWd#4hV2 zn~7w=!fh0;4f|a`a^?LQvASZW*slvsE(`ZVE!jjqJRi`bXy38g)3=m<*S0+Olg$RL z-@O*+L**Ovv$IKjWrne{F{WhHEQrhkmy!0yuvp=+oMT0rKI!r2J-U>ej<;Dfs~9nj zaKl3T1daTKxRl=LDkmR|ORUiLbj#@>w4iosITvqZom_ZOD8OT8eCBgWS8d%M|c#pxSNOmMWqo^`q#;&WFsys3gtwOdufb@tk;GDF(7 zG+WAcy@&~qBsgkM?HS%Co^vfn&`x4c5xOCblw|**enb>`E~5VZsmkCc_y&&?b-O;!7Y;}-}_I)$IUD`}}9JiQd z&`aUdHeif$$l)t1jPDf)`CwQQ_G}upE2Y^QJ3jryx3qU6_kR5Ds;T1IET%@kj=C>J z>ZrB8W!o>b9Og-iJv!^d!!XyBs+~nxkvp)HJhWC(W%smE(#DSiGi1v4H~O|UiV!^` zMCCCRLXUpIY>=uK(v2Q&>h+c6W;LXuDICHxS3OYmbeH#5L-(CIR_xy7FnvA{oM<=p z(WT;RQbS?YQbHC2^>bJ5Y3E{F;m{<%T~gkx$|Te6lBME~VbNY~+`JKtKk}y#M0iTv z&_MI3^Moqzd>V0X@yKa?*P5?v(DB$6QYNHWv-^}MF$Ig-xjoVhm#SQt6usP*z#|M~ z>&^bOAnfmXZ500Q24O?fO(1nE3W;gyas%@8e-k!25Oz9T2CP|B|JmsRY*_f157fjQM3A_2G|rxmnFPgrx%5;hjQ*3eyTHNKC(N=EgkBdF92R;git=jmvt04oj8}#Cma^%uKIwg z#&AV39i0{}@e+7&Thh&KCoBEj9XPa>Ge!4QP!In=>RN*pEPkWjAhB=~2aWm0MU;+lDD|d4$_wU~w)zSnZpN7P)t7vM*6jN!?Ka?Mc2p>Fl>-E}! zvlYnW;B1)*R48j(g`P<@V5n3^O+TXbWIpcuigo_Z_0upS_rtK_oAd4O-ZMEM3!C)K zZj>%ajVD`U7~kr`Fy!)<&q+4J%xlwWP7Wk_<35*A*LB;Z))^Sj?E?2 z?d&OSY@XIR!PXtlK1!QUZW6HD3_N!ba(Jn~S`2cO`L<8zWMDMJz07Vkbv{xL+}1{U zYe=nZ5@Z`)$=vqNv5j7~fB9F-`y=`5MB3_pD#T2XWzb*-%tyia8`>>fU{dwN_0oM8 znAv%hR`Di}Ay})`atdpZle$H6u?9v~ehufY9u}{f(VY;#@f%51O)}|&K_mx1O@Zna z%#vKh0E$@iAIXsKTo;&oF;1uc2oBEA;2ZN95HD)V(+?&ObUiA&Jr}!6mwce1;}59jB)0huNW^7r|KL=e?$wG7Q%P^t>J#Mb zQZJjIQf0uc?wLvafV!@s)){Bk%vReL4cr&_X~;f-EK*S3J!0`V_kE9~5pT}aTm@#^ za7j0tfM2~+Z)~J+$!lWiK|fh`bT8&XV}7)}2iis4Yzx;+)891I+$B1xrPT;W#Hdx4 z9_aywQ)F%t^dyen-58Z0|A+(<=O6$-eKz$=kd{W<(T)i5NDmnv-f?*Ha8=XnAd-4; zn6-D&(|(mV>OSgGLD^J*O)Q_c#L-+jWA z@Z+;>PoiT*EhR7kGu|QBqcU2GDrSgL=o?*YC4ZER6}Vp-95V5Ayi_OOBwl7C89y^9 z?t9p6y(9Q~rqa5~K4AG88nbrRR;ATl^6uQ%Xl##VrV;k>q5!3Qb{@2zEa)q+-)$r&)jb91*=fk*^*tr zWJ$TGOZRjoA{ST^{x)tj1my;cR=2l<2bhOJo}sX$Mj9kS5y7y2^#rohO^9WR0d z%}VlZ9%+gYOj-(dO(|G)#qo9G@tk0a-G}WMhhF&9GtXapH3d2LM%x8y8)eifm#(c^@`G} ze+S;%)lW+C@PfAqKhWbV5M+o}<}Zu)S-TfeyZgEug08iO(Z-@`mTp^vZo%38`(bd>Wh0D`(oH%3a(x3rMaJ%j z)tFyC*z;YPype`NP$P8})fQarGf-@V?X#%b9=(aVlp$Qk^ zcZ8ng!S$Gu()58$mNr+H5yWWfgF4CLhy4-Ux~8vn`#}-SFVPoj0X5;j60-d2KYO;J z&h5I9WipeXtgh01#sAq71h(E3Ry^Dn^XoM9>$r|+`$l{o_qc>@-C&HZPBJ($*UU1{Cj1;_lRwObk|)M zt@ySTF(ygHj0_uUp}L z$xF&kn)oLNBT050Y&S}gX)_=kJ+9bGoBX8u#qZzo)^MlERB%%F_xc-d9&JX6<>vX6 z%rVn`7W8s*64=0nryT+5EtiNG)C&xh*}L#>0N3j4`eCTcA-An=$%F4)>ATZUfnK#J zqTaVU&t*fkKI;qO#}L?&X?byVLEym2WY6MNpiJ_B#56HRck<_y2-D<4d6}LM|9exi zA;D&UOE+T6AmA`eX4g@Zw;}6Y=(jb9*)HEg^&+tLU3|5&w`aEA>@N|o`=8y}32fH- z^-K#jKh=LFN;^QJTy<0#P_k^B9}-w$6vN>q)bc7UFfQ}v9Q{}A+&NY|>9byu-5!7s zYGzkkQYq8ad~lsXBIj;%PTT&oQvx$nkkSVR7?$jKF#Yams*iBYkHDHHV_$5`I0-(} zM=WZ~!T0pwG&@%?+8t&^q8|Gpoz!>`~8cQOPDv;_e>~_RFsmer|uCIIH8nO=aaUIJU z?yZ5k72unf2i;8V4q{JyHJIc#`<2?`O!>x9x6E>gI*s!wXaH(}A%}f)y ztuD-p-AZTMnK~fmy7b-9%QHKKVzc0{(vIAkh_0Gb2y3&MI%Ub=?_2}+uXk<3C?UTW z5`9GbXNW1O=H`arCG!I;_9Y5adC9Auc+Dm?tUofg14*F+ex8WA?DgHKvFDl*JiPjK zRWJWCfk0@_{F^XWW`!~k{YAkbp44dKO7^! zB~#ViA(-8u4R|RLrgODJ0rS)V!fS(d(=Us<&jZ9)buxJT3!W4}cKlpscAE22iO*C6 z>Vz`;K?Qk?<5fj6@M;QS-w>`zq>fR1? z+Ek9n|EF_|e)50IraM-9CqIAZ$_FOy&%=7+g9;CV!i4Oz;&?Z1W}FxpTM>;g=%1bZ z`|up`_Idjnb?@n6%?VSz&x=^i8BL3SdUArKu=+FDcbSDD!R{KN{F>R>8I28E-h&ws z6GiyTk^D<`PSdwQ1Mh3dX4`y3-Cuoh8@q-jXT>1U>rGGLNK91q;3*xcM40f8*X%;jSf z9xM6POEZJrWNMwxf7|O<*hA|FKMX%2giyP#SyP_LfO4SqW?_A=p5xSm7e`T%NeKwG*ZH)|le)ff9(t^d5 z--D0!O?>UWWn}`^-W-+ua`fJ4&-Sp?YWK_4cXE%T>1ai8;d*XC>5VvphGK;MmFQfE zIRv$YH0lXAFQnvASsF`7Ih3Ekl44P{?6cKx3O)$l6jEBBOzqmi380&fibRH9u%w&#Cw5kHbq&V^OZ(xw%;U)bfZ-?^f% zN8GN-*U_quyplYzt9#df|AiQ&RCmHy?8_hXKga8i$4Tw5%(|{NjJoRj)mL5$yV9?Ps6nOu;7>Y0?DOTw_6w)?8{e>+`flV+X~W zOxZ#yz1!3iYEnq?i;LWJBFB+NYy?gC3hf{p<{RdVK;AVBW|HpdLezwlsB0Wo3>oz| zQk)2ZP(95KPVFC3?AE1AzRg6;sR#TPD)`8X06~P5jL5ltuxRFxT*hPR|CuE%HP@o# zR4UN(nNxb1UKKSnVxJcvj{IPy5vv6}84mZ3O;Dd3;pC6FP@pukcmz5XE#>4s}c5 zOvFISo`smgR@mJ&x9_8nfehS@t`Y%KH=0^|8OV! z!-kTE<5wGrypmb<^GQKA!rRu;Mn9?hwa=xKC}#0;>~KQC=uj-TcJCPS4pPv_2+8|3 z35@c&(U?EA4>NaM5e#3LysPOsA@F%iu0~PR!l8c?I%pgP8h697+Z!5$%@CLz*cJ9} zyAuMj=qKc4nHIEO|0Ff(*g`M>1C*`XKfGH1>R!)|l`g=mA^nLP$i6%_uK~V{;|xs) zq2JHkzw^HM1Yo;3_F=sLk*x_@?g>88xa1edkW>mpe|id+p|Q8v^XG-S8PQwH!$X%VCQHs5fcg2mGB&z(GE@B< zfjA6_ZH4CvFNRZ}0zav`azP8dCh&5@cZ-8@Sz(s)Txs-h_sNZoN}YD2mt*GL&^V||%UsZ~{2KhtYCK=O5Zy)|%qO4n zEf@dg-mZEUg)k%sM`_o`ae3-o4=ijgWkk2dqA5vdf`4_4b4)|J2zVCWLU3C}6~cz@JZVGVYC zq>oh{nEjaRR?4$Ra&J@CeROT0ObbGJ$g9$K6SSKXy)r<$0Mk--PAW+~$@sdoL)xRI zTmK&B)BEjLbBRgn?{I4^Lb$~c0aFYS81feL{q=rc`%tT8{o*y!;{Mbh^{Ec*HXjU+ z&P^~pZ2?fBO_^Mp7i;aV3g2#Df)Bbpz}9%?W9Wzy#%O3PddW(doO^@?hs$_{ihbu2 zC^XqaWX;d$*knD>`d{0Ug=&WJ5!p5ZlXKPGJ!0Cj7~;EvNK%r^wSpHMN$=We*ZwI~ z4h~KNDUrnf^S@-B-BC*;|A61tnzH&8);dS#D9K~8`Mo_o;7-#Oj(SY<3N1N&6CU?O zwXQy*HtilW9AhFy^0jE=XVBad86k{y_2x>}hDXW5hyOf-lvJNPu$)N;)ym$80niZ>{L%^%1$B(V{X-7tP0+~%fLwZv94N9doyhEW^qjv zrLyz4xuvS_$|R*a&pbD*J6?nts9Vpd3pnQ&48Tn5zp}uk(bxxdhJMEK*rZ!sI%TB6 z*x>Ma_QGbFa5XRGYfdR6f_^eQ^vvrwD5mV@x9P%AAe0ZI*sa_`@@n02szlmzXeFMC zJ+l(5nNH;<;-DXtz_!bqPoG~Bth^M%#eI9MQf)1yR!8hhoqKAq>k|EPjyQHE&KC#f zy&H=s#dU>bw5@i&eTsbiO-xwpb|a97d{(=Dz$xcLpP^TwpKrJAM5>jAA(&$4LND0`#t|f@3VM_K@|dmRntSS+-ucpr zk`S~uH>=9tN-~F-LMKYb;*Q(dNOV>9#=yJVJSPLZy6fzI+i^8IUk>V5x*Q0*Dk9QJ zmU-Q?Vc!XBOr47&<)_X?4%!X;RJjX^{``!<1VLUk{BN~2A{ zC&}X=NS4e_tKYbDIcyVA-;gu#IBT4W6(u0JY9XGHj zT8YPV^5y{U%U1fWQ~rr78xy);@0oqGj_=EGDj#;NM9Fz5Gh#F80qt8w{DN^I_!i0v zp=b4D-ubi|Q5`2ODKqg;zJ^2m&9gRSp_y(H&Cg(opTr`up?j&VCx)#(2e?=_PZ_6! zMkM#zFl-5m+|v4 z3c`Gop={2EN^UA^J0w`yQbUHx3~$mV0b;lY)d~CS0>Q(F6C#9Cxm+;EA zzq?&h85fSnfJItUr$T~P#y&WYgnF%=S#zb7m_4o=;&!cn}M}56; zo6p8;HLI5Sw1&|Rf-gZdin;H2J`An4U3aBGd)H7fJ8x2e7K8sHvT9+ImMx=i+8CXy z9e6@0Co=qc>0dR1YVO7OFC+4+*(w@xX_pOZffkK}wL$%%B$?77&g9YBG~lu0Pu^{^ zJq$l?&gm!aGe^_!t~u5!io-fQb`jc1-5PR|1SZ&$V_BtcCr&DZ1A4c03@hLH{ZCpI z?(Ot8FG8u!JRz4#2sS#mT4lL2oPh_3hZ%3`Lw%i+VnTgOTpbB(lI{k1=CQsvtBC>L zG!U()N23&`=f7rBrx;MD>AD2I*)>?$wULxC*r(iK<{R&WZ#R4HBEaU`3KWPL9((yF zmUfkCy*7}qQ0V)_2w|q2=PidH?P5MA1}Hh`(Z>1A1r*5j7qq9+-5fJgxcLbw3UZ*D zZ5`RGZ8P3JK0b|0M_Z}ARi?hs~go3fyS8DFZQb_d$gt<7{9 z-5B}wKZ}fC-RtVAFI`1mEqrYev&m|KLJc3_@A;j&Su}ryR5hjnovV7-`8z;VFDU_y zI3I?fQ_nPmQVK|4y>(>21{bZBY03eEYxs44)r-K0B^;ihVZzX69tt~0C7Ku6XTT@6 zK;nlOwq11Z>j#U8m-V|#0>ngj<==Y`70E$w4eoC8HYo=j@=XDfjnNaC_>?hziCys4 zN|W2nj7gY~)*IC|{rSUSAJ9U#0sVSZl=Nfs>Hdqnbm~>xr0S~`ZTh?XT64iVS39*u z>*iQhA%s5Tm%nivdbsOod*79P(?XEJkTZBq6EcIY8Af!X!@}V`Q%CAPF%0?FTQ&$% zD-9a@PH;ZjYRyyi!>%l=eQ7&Ww@d%Z13F0v@Yq5=uN@Nn9#@7Pg18nXw?sFTnKMpd@*><(^yYN05syN zk$~k+s{gOBQ?08r2l5jy#{Ldcrk|AppNF^>jNL1w+K-9J;YnnII=R|W8``EX^ z%cPir7Hlk(9CrxGM4xBRb4q+gwLRD1MU0&=dhp+##XBH}XcB7!lf&3GRZZFf7Ujh> z!iO#!w|l`ZPS0X)aW>VDnj;3rY8P(HxPeEMR5*Urs$r0#0H|z1j)dw^faqg)B?GE# ztIP+rq}KRfdwF!AT#N2okz5uqI&cZ{IDXmCJI6OY0SwMH)4Tti{Xxj{{9*b|SzGC| z=;1YT22C_Fa-ufQO4en@Emq%Ka{zg-V5DG#?@P!HAs#+xhr;&Lz~VMFpQxcHF{lq> zsn19In6jX+DP1(>;msMKYhRvTjQ+AwX|*QudM&Qb(1``iJ_-sz4+`SmMp|g2U-|fw zfXH!oU-z)fQu3pmgqecrp=Gdt>U{A0nUn%om&^o+mXZZaRmKrwnoo4NQ7yE)L`c#I zp|Cmwr!X>Ek{*%BP}@SZU1N_%Q&G_k-X`7~HSe{I*IZw($??(&iSjHKK4Z)8{(fI^F)3arvcyh z@zUde{Lnu*9Kd@`@8JrGfJYv3%u|rAd&PwQ!+q?C{!eBx*TXr081gSA0I+@oi-{kW zF~B4a)DZaZ#<7|6>2E*YI<}MjFp&R%a=bm>_v7V%Km*4+{{6N4AXzSh+kZI%fFWb< zVl_EJAL#_oejp-nKX@U003M=(`#Rw6{(+7;-FOU8 z;c|QrZ~<-tNPv^#KOhKhPtO8&x$D2HoYt4F{|KCR<7vIe*MLj$_vM?%X76N&ey+E? z_6~f&0t|6{QGh=Ls4Heb0UF?qLeSO5rfPhUWNx$wg zm-mAIui%=OC9gg)3LR7iOF5`}g$N(^K^1I>L-h=JE37X}*p9Pu@6U)_fZ*<+d}+u7 z(r_bN#3+x$7~9GA>~;2I#pW|E=-~A1Ux`A1o zRUr_Krw`%o_!gFS7cyQKH8dBSZH2u+Z7vsZz6A{2pZI!wf&jq&Wb(9{=rKFn zfgzlpJmrPNv}Gs*f3iqk zfMf}1d%XzB7R)Rk3@|q>AKeqies~&7W3t)fDPd%pq}UkAp4Xh|_E@u-l9ZtxPn(Uw z4Fx0jTNg~8J-Xzi9#$dZ_yE>qJzLW58#>o+q5hpq)#YF$Kz-Bf=b|$jDFw3=dD-gY z!S!1jxFJ`ZZ$4|R66UUUF(9Fz<9_vAZws_bv*)~p3W(&)zU1fw^X=V4Wz&>;BisLa zdf(c`CAamPtAQ%=K`rj}197M_EFwLy|OD%Fs?LYbPu}@2ps&{L-m=&&t;XZq>-|zFD|pW zMv$4mOj;g>L0OZvLn!SqU88FWxW*YO4kj?P4H6c6Iee>fO^{B|4E|&WF&Mi^DlZs* z|8WevzY)_tK9>QxJpOj%)mMJzT8GK2wF@{dtPTr{C?{al)iDsr6?;tMSeVpfmNYghT zD_J(TEB*@TKIfN1b@H>V3plRsC8yDmLi>ncHDkW%Nm?Dly_?pe{4;a6ogj^898qd1Y} zg>JTLcgUO<&+Hox#q_e-CZ_A2Rdbae@z8pUD_u1rRFj*}=uP6`dA}zo!j(3+3^- z$}@MyEzvW?2!){JEShO!2Al>rJB3PiO1$GrE!VL4(rM1txGYbX_2#xU4>cYSy_b2I$Lfn#l=Msh_(aF!# zv@(C{7##vAQfca*7v8(5{S}(oC*tZna$X*Y>gLQ2Dx=$(8CyT|0_qg-p;~}8bWBxw z_2c#b;4`>T|B{G+VdTz_+^y64#|V{v0G{zf;R3irz}M)u`t%E^F5eYZ{uGoFTfjr+PyMEpGc`8vsE zqG?HhyA%e8iYre)DFZO%h+rS_vN2p0lawS=D_NPQwB!_u+4 zn8)Ge94xEZbsa>5`c0Pht$DQR3Ux%neM6b-RHf!e@$FW4=~*6l=Z2z}0?R%{R% z6I@hjN}56BLorxRXI!)?!`v%G}JF=5^e0@EVmz);j*j zM0oL0cQrnLrZLXE&wQ+gzMwZ3hW_v>=^T2bX7LQ?)zE+$cPHjCvaDcM4q-hNyS%(? z>i7u2rrg>%h$tFzyNYL}_UV~HO!pC5)VR|Uf;6;y8B7~#C_RayC$)UeygI~@dq}~i zO+P8m<{tLM36Ck`!)!WQqgeTA+SR-}KEV?`Z)R+wRZ>|)+SDr`f$19!>sD78-nuDG zLupiIetwnaug|4E`J@Lw&w7#m2l-veCz0kEynCi|f7C8p5~G?D=2s=%?iul}cs1Nu z-hZrS-i^Q!K9@Av4){E8%MzN@aWcQQhPQ-?VbxqL>|aSMluC^-dY#$>VwF9 z2{#RV)@kIR&c>MesF-=5SD$BV@2v;lON>+0npA%WamyAwu_8smZ$@y*yOZH+w_q}`){ z*9|vg6vkVT%rUF;CT}u^Uj?hfm-Lmj7{aP5DEyxX$}FR(q4%1onattn^L}9sgZY_I z@e14^8VXu)Ss38qrEwZSXU*~+fOFh@-SF*mkp(cqQ7Ib!<&7IrI|vlA0z?OCZq=uoiS zUmKhw>p;Aj62gtl0%nU4g4c-6dpC7q6@d;?*avsKFML$}Qnew^uRQuS(nepIu5Km4 zYXp+m&ne&Auh{H6HIeXmE7TwZ6CDkW_}2r1mHb z8SS+qJbu_z8ph-Vlv(|mV1Q7*FGFYh#$iIY%aAtc;cDK^7R>ulgSPltK1)Y_=wsN= zw=BvTGdVey8wq7sGDH|YJiK=^_=7zSuS`a)y1t0`=6`X$_z8S2@o(J$a&^aVxOo00 ze<2oc^sI%ZmI@M;1qP$eYaC4_7?7f7fJ|Ob{0L5yNZo$F^Wn99pl>O|5v>XduV!0v za_kjl+svS6gYY6v2SoLD?@*pBUb|_#y6&G29Fa#s7o6(RBDNo}=@xE&64VMf@Qs3! zT#5rFX3)a8$D62(K+Kgde1LgjwRLxNVbuWXUchH5taowqXejWpy^5N)D z-4P*wQ{u?zERQ;@IYS+9orUg0F+*(X`F$p4&%PH-hrUNzSjmp**%-~z)x}XI#+A*{ z2eJDbQ@wjwVHFz@hL-lHKx0AQa_XIRKk}3r*nS-!q+YQQ=Ie8I(?X)=K#Z%R;v#dz zGg;14h4d!V&=ldD0M-o+CgXU+iiy*2CYS0CG`p=ctjrKLX8#bIkM11>PT(JU7dlVP zO&gE{sA+@2qVcaHJ}UBtUk~`sbttO4Etv$0ERU=01%2Xm@Mk}e z+--~^6Ba&bgmlNwr08geH4urV<4^2UVzmk_Ee4?L!9n(jt%SS76@cjhh@LOd-CAC# zWkLcXcad@WI1|BiSYwI@&eJ$)t=n!UANkYU1pzm;2K)Oc+x zFhCuY#{8;qon@AaYn(OxNQgc2TCHR0@i&(O2k-{WVD4+CDhW)#L5ijVbzDSNveT)Z z5iQCdSM7gW-P?I@=XPH~yb((3F>`h9(f7bLC z9^RQfnf2m|F4+|)`cRpclA=J>ke(&CV4r)!6 zuXy;q>*FA&qNYDHt@GZM4zfx812Uj8x&bztK$3Cbur+)UXrnZX31PK&HFCe#xCdxf z)we+9Uy+>-M4~B$*xI@6Duh3I;7aDE+894zlC(&FJf`>Nu^iHuoZOmJ*E%3#+Pjiu zSVg9+&_hG0uhYYJ)3v{IrI}~#;?QP11x1{-1DU8T6K<)qau^X2_Z+;=yE{S)HLjp5E3Wt1p8=AaL3UA}>O zH&3~;`QfD+f8@4~_%KnTQINsY06UvU$aw~CVP=Em(y=jplgkS;>W zg1Svdu6b9)g!yu+oT6;%WKv&W@Z486sz3!)P} z*rGwsVy6XJu-xs#T~b^yk+ejr-sl^39Tm32tX0l@^2)(2CTNtVPGJtV)EoQ2;b*Y< z?v@mz#!mAgITul`E zgpq9Ig9mr%Z%$i3V=?^pv zBSLyMu8RFcCewu&a36U^=?y>$9ICe;r9v)_>k-fH`JD1PeuxY7#%=j>0vY4F#6LyQ$e)a z7wZMg^##_9j@1KeE3HO{kSnA<@E|l>F}cJSoCFUeH__!X2Fndu1bRT@vf~&Cw1Elb zxfPWe^-{jb$nWb*K80?yY#D~qf$6!!7aMWwfwE~=HV26xGK-6|PxQJx{n~cA`cHT# z`o=C*>Qq18Kl7WLUi5R!MqJN5-vok$3X@`O1+*Q3U&Nu{9Zzn5^iuiS@+FE zMggUf?i#TLE7%gH_KlZF5h+&dDfw>9Gmf(b)P#b#!#2(JY$d;?B_QugYI8Tv-6-S9 z^9H2bqXwsU`MK}jxh5JH-PG?|=*CdZH+z|Ce>2 zF`D;_$luaaf#h;CWL^H%m#a1BJ}r>m<~Lp^q*4iL==fb_TdMgZS_9y2J+tS$x-*1F z7uq^kncVRqznt>vZsBv0t1R}02qg}TGOG1-RIFvaHT{yK{he{es=bnaYs!F&Ykn}* z+>VBaPf*6zU)H+#`0Qlv8NFO{*98)XUH&Q__W0V1%6NQ##I5*`Hpu$*N3&siS1OyT zHV|W^U%sw?wLOus?d;=bk=MNMSl@DMK`7bXq0k}+9X-eDi`aq>hubRGQv46ZXER3K z=yqBB|G7Uzad*WhnB*ew9*QsJ$87rA1-lL#dcOOrA{XK4*B;WlvO-OBC2*sd zH&^5t5x+BS^8B+yHb}G8qZuNd5os&t=F^BTPad_zjZlN)?7`TiE4KgKxrKvDxn)!` z88O{J=H7BITl?}=gLdgvtgSSbkSU+q?Pa~E;gV|*N>v5J+AuU|_P;X6vw6>}g!3sA zeb*O?g0(^<2#<80hv*yk69dSiwR6#HsO^p32lO6P zm)pHs>k{zxXamKbHN+UDC9L9G=&i6ummVKp}iKJgr){s479qZn*At z74ba76{k?p#BKg7o6|IxAH9pv*fiIYSLu!$w^cc;a=08w^V=3A!iKJ61hy~dz=Cpv zgEw6hQ6Vz!OWN(4uh^^bi_I%n|MSTxxbnWvfCn?TEdjZkr9K~v(AV!$ihwMVqFB;k zH?*u5CXJr~y$DR~DG3CStb>7qxzY?`3c;x=3#X#X2T!!9xhB|``4QDhVfH;qLett< z!qs4{XS^d)_=S|7Yzt{*>*Bf~^4sRw&z)222C^ThJN*#mVk{9CDRg2HyO}3E&GYD&w%PV5hya z1A42>LQoek%a<+<&c2yZwk&w~qUjW`5nq=@(@=}6WtHm6(ULnn#yTPfv3=zAVFUJz zc5^XKID2J%F9clPDVEgVl{6-hECAiN-lmZbE_i;5(IzT+K(W9)Mu+3|)|Xjca3#|L zUXQJ$1o%Qm`@YtJVar9r*iaK`2AZ=)zu%*RHs`eW*tt}@`e(V|+5)9w?vJcD5AGi- zI}}ZB_*nEdD66oiG1)g@VF8T3{WD%A(*nOdu97Mb7|N%vc=y1%DiUOFAP^E=5mM@S zp7Y=8W`^G1)7eRi&hh!S5aVhe8U{9a<%Z3=I3il5-41p-x7u>rM`U8a#^0}6d>yxy zn`A-H43OS^bI3r3G4f0oI(_Z_85CChX!X2F$LUT`PSY~qt$1IHG)YR5snZ9W#KA#v zPm(xjrNmvyc3vvD)UGhqTilgIZTrqugXWpG)oLxc>4xiJ+K7-dt>(v&LJ1aR zgt}lX0x`M|lBuEo(`5zyoVt`aO67Y}Xzu6t!R#C+b=p3YigEpleQsFvdFNT^N5@hV zhx|B!zK`!sIs|ozIf-F-jfDfgiP@Xuo8edQXm|PuIXZ@#m5Wk>rQK)%?Qf8KKK-3DY{N*Cr@~J5oRL^r`e+exaTEt1Z$l(B1 z==|tDl%&WOd|BNf0I)AwZXURs0r}6mN*6B;*|(At@~*QMG{!*I78Ph@^HzF6A3Jzq zyvnchXSEuPTc`<3RhT@E0#iFInl1^&3SV&OY3?QEWGR6>Nv<>~DPZx5>2HsiM)RdF zpt!CE1k|~tb=LS5Bs4V6+-Gvk$%UM!g1pEH%uP8Y5w$AYARgZU_udpKR>w-be(6S$ zK^06Vz`RSs^n49q((4ea=I@J0nKn$WS=bV)9s2N|lzzDngDt;$3CoOCCq4AJLN#^a zS5Gg;P`BA|;~4r*NEO75)FR(CK%w{CA6x*5SV>pNBT_wFOytL5o za(S6pV_)-FhG1E+%uR8bL00~?kjmh=?z$Arla~041#79>AGe37=6tjlS0&(~bYFn= zBtxqpBpYW0CaHdso4{4l4W?ZahYN-mL-~XsmfS(1lBT}_=Wus;6Ue`lO)?}tzVXU` znEajVV9cKKt#vOtH`P#X3fDXfRD>ffncp1>)u!9;Z2j!hv2J7U(b$~(w!~)2KPLf= zcJw*qPyoXYI)hOZ2*yvQ;P)oAuCUKX0>lmX4EQp}`wsjJM;P1QI73si1H?aJiJx-g zqlTr*{_Mg3VTk)Od}&tiREL3-Nszj24`LHqv0l=RNhd!$P%D3^&fiRybn_KB6XUi9 z`=Vi?V`bB6C!T}w?dg(1&#yfD(+kZzzEyT(Xv;N(2@S|CE-T((mg11p$`y8+s34nG z_C9hXZ@O30{X-1SRv!H3+?BSG*Bz-Nc6aX0S<*b$C86S);hP(f#d2-rDR1lO)q})~ z40MW96NupGNDmTyWdr~ScbHWw`L+6c+jAkzuC?IqJ5S0S2maofE>DnAPw0?`YXtEY zyV;8Xux7w1aLupIKPGQ3ANo=oJ*(bQqV7*#`yF>&RRM@`J+oIhM&cev!cG8jt~;jz zbpF4jeYd}V0#Lg^4#D|ncY(4;_kpS#d8bav8qv8F8&#mdcI@%~=b36;Eq?-mtslI6 zi!#e89|Wwi0%AIs%N3qzreLx=gJ0LRo(aJt?OdL6olBGJZz!VqSRTb;6mer#QP;(C zWB}`mO5+ybeNXT4&emMe`^M$wR(*pp8fgFAQq~SM?AC%g+R zj!aJf?2V=QI1J~0?TN(n*)rQ%x%BBl5|wS>m`x?tPtoxQNA`^RZhpUi0= zyzQ(a8(CiP+Q;aOx&&^~kSJG%fV(WifeQtD{eUHqi>qo42?5ZRX2tY2$rWUa#1!B$ zlbt6KxXw)^-4#vH-@d^aXhVU*azjQW@EzV|EkMyX4B;AZnZy6-P|)0+z^zqV&)DMy z>>lnu1(C`SfR-|1&c)T1z`EsqV;Q5Zj>_xp9wu;|*n?=jS4RQo*PM#5$MXYodPgot z;K`iZ8J*FtN@sTw2On|KLUO&!mXW~2MP=XR;*awYj&sFRF-!ac#@G;7X|uovkF^m> z@~@ob8`+Ex+20iLxAH3nL9U%<_qh%+GGPe)4=pV-#+xB!)&O^6$@kcnDFfWe6MKd* zd4&*r{Gw~OsX-Y`IE(iia1pq;!n-ZZ&2JQ@207RV=b$$MeogqbAGtC=fdDf%2hQfY zekhe`{qh@dX(GO5P6KSF)BmS+VX?P)_S)cJ6I?e`l4=@7^QKnI{v|p$+6RC<82)jP zuIztKq<=8dWUn{widGG84i;S5*59g%v#25$`yh=YujR;8b!nrw<4a!0!jPB=Hk`jAb-8nv;-D%vq zruEP;i6F%Fj=uQx+?d>Sz^!!jWFC_^0b#-2w5IjOxcIUVP2~cR} z$LqhfCjL#I`nN#Oe~Yl({QdtC5kJmC>hEV9GfoofZH^(_*N;8dWA4_$r)!vFpD z*`g1>0fF=rKTmN<-2S)U2oVh79;CdECo(OX0eGeCh=}HJVwq;nt;{Y$a`3ij=_1&` z$-hQR>(6d0Cu8IJ^3+BP3I&p+cEI5WmS=5)IsOHG?;a^gy(1Lcx=>A-9d{7?b<`B43V(i?A4-Z=jA@wP^@kXx8qS^@-KM_nVwVH znFVHt;1Z3H6kAqk@AaO~R&u?{Y9+K4fJsJ+Jy0gkR4VSKAOO3BLA?nh z^BQ9pQS@Jh&QE3&s%Uecn;GbGs~eZZThYi{W7;8B&1tuPx|W1}IQmSSDjyMT??nWV z>q%Uy8Be}0c?FI+jLiP&kl2NEPfpcMj49OgnVoWRFSgxr)dN&?hvU%<+$j3j--4xE zZ>1{PKGwKwD(&l|^EuEIK&$T1w1ELoZKFm8i~8=`z5o+$jK|G7RXu1D*HXcztO(cT zdW&^j;Ba?`i9)P+63=&aySAsql3F7}xKo-_4fYIXKM;hh%hKO%v(&pzQA1xm%%tGe zzL14|Iv4!?_GpX!FupGv+c0i?t?)RnKza;XzC2bko`$#;A3AiSBJEv8@35#ZR36Q1 zQW7bga@->bfI5J2sfyQ{4obQdx`5th7bK--C5ojg4NYmcR-|lP16tlFPwj=dl z=J4>FqwpDa$jM`$c1lGrwgMVB@*B>|6rXLzum9|cdq3Ypfn{iRZr01OPA9m`9_KW4T9y^z&qcOHCV$ zeM*NOI!__BrD2j|uJo@2O^71=tpu)D3hBi#GHn*-_02g-bzo{l zpk8?4tnuaBC5;3(9daTiJa1WlXw~E5;#j8vfHm=D~(h!e=v^hwBEs^Af&EI6L7pRRSN{ zX9n=yj}gPAPi_f`!&KQnp5D4X#%qRnWlxuoNutz%@6TV>u&lF+Hk)mm?Y5$Js-W~| zoIY@{qs32`O2uD6A6GUouo;?jq4e`Nc72Yv%f!Qdr>q_J!k2iR-Ou_p$ts)`Un1t! zF{Z`FnMl>KX(Qltj@!y8kq$LcF9oTDOI%!!?gnNf{*48iUwK50;Y-(>u3{Fx6*g|S zf33GzO48fWE|SyrjIeOVa!;v6G8h{m@upzz7bH$Y$-k^VF8&&u`!RF&lxg#(aGW?v z7^Nb#J|Kk6+m%WF;+NE|c;A|7pC5slcC7l+-C7-EiG_cr7k{t{i|`S2`jajg`D3%3 z)+bN5&5f562}L^@9B@=PO#@xl4rkUTS<;g4DXU8tT6vKyfrE=URt}g?>{Lv(N z;4N+lO8*<(z}=|hrN#4u1T0UBZ(^61Gq@d@r!4?$_uh@=#-`BW&>ycUJ}QFJG4RVSJ!Tu8tvl!Cw6C_U=~QenhE z8J=(bTh<~L3n}hNb*T}h%2|`pCQ;R#$>??nWQN?S%0Ck5fcUfgi`H~an|WU&23w32 z5+@rrJPI1iycav2&};RAw51~&V^Nq>sOg)q29B%*4~!&6Y-0W9GG6`oRN-fJ{S5ow zO=Hz-l~_}RJw6D*t2zM}&Vl(G%vV^zKW z7+iZf40?Erx}UldF@y<*d3Jb3KpY3K^qXpYX-M+!QW)BBQFG9}w>mmbBnnuOM8au; z(cXCn!#_uuCpC`NaYaHAcFk+5#iGOwNnL%{T$^nJ`$B5{Oo?*5>;7!_Fc7+2TqbKGG(`r&dK%kw z=TC*KMX%6|Gar#RQ>Drp65Tl)6{rvaOkte3SeK!m&QLUT!w{IGvF<;gEB(S{>(2!C ztG>b|LktvMk%G__YA6m>CuY-)JE21$yFB1>Bqk5iE%ZEMi}d)X4Cnw{_FOxyO>#_y9!;I|BEU&}wLo9k@)C3w|A$)KGujyZ9KPc2Kp1S1-nEm3FXpMYk(ekX_RGL}RtQ2T{rZnw# zbCtPc7>C7RmEj{J8C+^-1)e8MLbAfl_t6^{D+)kdUAV#4UP2=Oq>;C3;^U8!Jw3LU zctuGv;0ppp3L7qJpq!l863LLgxm5Z<;Eq1pAqaF;U)NYw;!SDmOg22{zTuKzjd+7$ zm({~666E!e-2K2^?IiPw;8zYjU}veb&j-6NT*kO_g}%n(2y?D=XVtnatID_jqWG(P zfZ~4S$Gf@a2i=IIaj81%>$edxJuydH$fY6Q4Rdn%gs^$^^)e6;v7WzhJ5%2YHpRse)?4@A~^Ie?>M_vkznyG0d zdYx!;A~nw5aGCTGbrr)hSFq8*(-zAHz70|w*d>K-z)Nnq?WhnZ2e2Yj}zaVbVDvPn) z+48MfDf|MYs9vZPSyDaW3tNw;HwXs^M$+)Jc$sQ(1Gn;|x!)(c5je@;3sO_#0^a4J zZg)h0eQZ%=N_eL_DCl%G-N>F&>^Go$UQbV@<=yj{B@ajNTr_fLT~lHDB{j+{=;V1B zxo&OffU2Fij;KMYwqiz`ws_6MG?8Ch%lFM>gWtY&_=s)udiHcCVj#uYx-UJl-ANXDJY2Q~zmYRlq8PD~-D zAR2eR0y1f6HgC{H0&WXT*Nvh}Ps@f4K`}2b80oqadviS77QrjTMKj_EpcY0aH>cuh zQOU4$k1s7TX@KIQQamD_dQwg~BqSN+JltI}@hO}!=iXlR$&S>5at#=UQgknfpvczY z_>jEDzhvkhzpSWUsc@*2Ajn?{PUHYk=(HCar&qI0F+!_CAn|u)OC4j>(iRW1y_hC_ zj~8gB8cF7+i1c$l1G|*@PI(-oj`+pcqo}j9=YN{F*0LK>KE^#}+D=tFW&~>n5vKhC0s`4Z&OJ(ViCL zgw-OWTIrf4S96BwbqiQzHxfyAS(>ZiLFhgh=cDEdCYCF>M#BUV)0wB7>J;YdhJcHb zm1mGH9x(ka#}5{dF=lss<%6lh$%(!N(ZG@t;;wd(s*uZwP!>~cJYkOKtru!qth~7R zZScCC$?@k`qM=Ya%o<0WC(h(oH{#1Ti!UUW_rzA*P@ayx2!Q9-rC2YD_fGO4@M|R? z$q5Hh`6#zIEaU`j*#)$YBE!4K0xECY{=ec8g(V(2eHV{Bme~93nF{E5M8DR;v!^Dh z!=kPOeT57m(q$oBHOi7ckeM&{QJPt^l*n^w_@M1k1Ho7wROM6!5h{UU@jl$00mMN@ z-ORH{v|;A3g@uu^v61fWp7rKP`F}*=3;}Xr7Ln5ATPCV9gr_CwJ{WmqmUmKnN^yj> zSLpFLI7h2L+gL?blZ`i)1|;FL|5Xy6ajtzOQ|CbA>If$Fz^Ug!H@j7X!^oZ7ohp9! zH0Tco=av$sa^K}1}DIE>{Y< zzI(r?5F*$3p%xSx^g7qB1at-xI={{$25RS5##!b3U)CISfq zMF#EwNGx=__+5#Fi&AY$NZo8my`@xwQNgRsel_3w(Lykzp)UCWEY{bsc5s6yX@2W) zoEZFn$4M8VX5M*uy|c+F`hV)<(qO|TJB4c3JCPuYo>CgGih2N7lz}j8owCstC^nRj z`|9w*DBejKOiu7=z|YkV(*0c@5mC%MOPFI@jLkp%XNhf|m>=lo}wQ5Ql^ ze!>2nWrTlY{~ZiAEOPS_-A=K_fd@_O4SFsuhz)C*&I=Ou+jXX-ng)9&hgB{lwWS^O zxtOd{AtZXBR&UAGNvK98*fifAue)%rT(Nc7tc_z47ta)mVb=BD@)Dn4S03a3mh5)5#cF{b729u zCEJSAf30-f?lnM)c0J#;n76Y`&{mN!$7`Au_paMKBg)_KJgxB@#x%PcXA=jSVYtQc zb$+D4)g%MbC%nNS0RbV3LtkOgvM)WlMzG_rp_;YD5oVHBv@H+-@EGWsB~@n%bi@Iy z7oX+rJbU3~63i&xN8QlFXlj|R6;oveA`r`Z=}=u`xGHHP74D< zXL!8`PBg8Ao>N&iJ%O8ic0rjEhr8G_hokFcakr6dx2Rw#G+aQsF(wJtEmoKt>;~-H z+JP4cca9aQhnRWAnl$K&&UNx@dssGQ+eSFUW~Y?l7}vx*pmfI1IUR`LxGZq9RArRy z*QN#}pnyVxi@%`SOx(a3-KpaGxVkG6E!AhPeQLh!w4HEm4!TpcB10_4-j@*MimVhO z;^uQbs@+EWIqM`14(3tMG?V!C3V*W?E2wP)WR)7jT}{P1CrZ<3vYgwIJc@c%V?;!X zC^td~W2)R9YgM!bDmKv;*6u*za`BcDvrZ8uf>Guo(Fh^sAaPLM7ER@f1C_7N0zl^Q zDzkc6$XIg#8tCrdL(tSfd6v$D>o0d~CtB6}dQ19xe$WTQmm*q3t&MK_51aPya+&sc zW<`+BKvKKMnQFnwX`)P|zNx-h*d~U=r#F(>f%G*@-HF%ZH;Ws#u%^81>N5H-l4(39 z7@7bD!&UN3I!z5sVPeed&%i;$IRmqWv_PTaKGd1ZmWbbyqy3W9tf?V+)hPt)xhQyL z=#bZ|Gg1US8(mLXa&XBh$}U21=LSN18U#q( zao|uPGPeP&+q7=KxS%6q?Thrs)YRcW>M!Q!`xe zr?K<430OB zHR&PiiU!%IDo1aF%SQ<2>>k>oHB>p><1LcsUnnSBrn#Crmun)iLL19pM)x3NF~;zO z;ey|*+jQOD75g|poK2?2$byh11BOf50OAGNzh{a>2#N3hX7iH%Q!)L7+0a!>O5vbf z_LNq0LD=L*moJx2=Y?H^k6R}15f4GG;?{LADVf-Toz#dN(tykb%fwvL7nm^=gQ8%c zch=jO#sbsjFY)2tUpM5Ho^xKVpo#uU1<%g)*~gk#idu-D*|7E{0TNEiL;bBrhnx^Ox+y&U9n;_3~53RBw<&ddddW=U^eNxYDi;H9%dI zRjH3!Kzb&w0<-+}*^3u!m*7=@oNorXWazR-OiP>E=^{BKM0`3U`-ckB=!VndznAsc z$Rw=4HtB_eJ5Z?!o+{4#Z5ZX|p5+`x#+B{J*W>>44wx3}UG%NR*G8(du>vB%5w^_? z2B3vlbCDJ@O)MD?;EeoJsr8Y8dv(7TIU6Sf+u)UY;gr96vB4iHB%ALZTAo)ZoxS~b zN0T!3f)Qi%TV;1+-`m{6r=5nI`3I|-{?<-12W=rvSIX_^QBPOpfP;)x>LP=Kx`s?x z__8$=c{z;g&KH?=ve?*hOA;2c)F}*-PJB&kl4`dlo!1#Eq?saiHnZ9^zI{#_P572| zrR=v$YL}Ck5GkrpHrl8qAM2A*LAsLJwZ5w||G53RM@$X0v&VAYEOk`(Hn--)+O-s% zK=;>z!t&W~3ZX-8KH}r-FS_-khNR3~Dm8d|cu_$P-m`ua1B+aNfjg+4m8vFn4|?As zv#s<7ZsuLk^(u^TPLXZR;~qdu3MtUH3xsl|HMX_ZM=JozbYTDpV1!w5#TUB@^=ngp z1ADfk!IhmVrKc^z=!L)pq3crFK1mpHVR)O% z7Id=)1M*$+xZzGxLvcQO>d{up;V|nw^BAGegLW&(Ow|(3XvOvnT4KY(iR;L~boiyV zQjpDAK1wqR)=5Jwd77B&^}{ZozR}ltk+$wZW*4?JH|aJCb9gXR67<|*I8xxZD(%+3 z8NNVhtg52xGKArg(JqOqFdLpTNo8mo!%YgyBQnKxHjE0n9f$sM5ygF_Uzih*?J|-q z7}+BE5xgl_Y(1}OU)y8sD4g9Z;O2C$^t5DLz#QSUOF(oCSW^p39n4PK2+~XK%XLO% zWKP;=Tq6z6%{V~^v|$_=@BE$#2$u!H^pkZX*52aj1b<({QF<21SQlZY-@N~?*aq3?$!|& z%-)(TRDgKy0DyeCs1(LtF!Lev7q-oJrzns^il6bHzJIPp;F=Jj5jX}R_SdoZKd}R! zrCH`U8ykFrP3ZZd=UAECeL|<_*LL1lrnI#YX(G%7+Ra26Nf*b?(Wao2NKC$ispSu! zqcc89^)^9l>whQNLT_Cm<3#kT{npfD{A6{3Pwl=Q8^ldh%%YKk{z(om6@ljlS_U!* zt8FWa3csbU^Tigv@>j9&(xBMK4d83ixeC^|5(lLB_}f-?QtR}|?RiOhmZ8$~Q{cFp zR<+IPg*lL=0&BrZzsNHjpAilpi(3FVlm@CHH7NxYQdz-MDQt1e#q*V<|Iv_H0@^o4PmDv=rVHqB>z zYTs^AUnTj@QYKvcX|>JRw9dR^Zh7mCOWSu&&Jf@@1-*r232a^nn8P+Zn9C%aNV?oH zm%6hLraL!Q{hn$*vtV)Ja+1oUmH9C_P25xLR+nMJpbaGh#%C~6xn>N`H8nrxpjfAj z_;hfl4ffh{)!#vxUqi%fMhFwkb$41^_RR*M3m%jg8wAR$UQ|2#vyUVv_yQu@fo9r0 z=>5<!p>KsYBB+QCYZ&PO(qw zW_+QhVX#JO-B^ISNnwh7!N8UHXMoM6wS{5h%xf7pl*Sm4vEkEfzbI<$2d z(#va(J~008T`xxbf#O#8)1+UNhDZ%<#N`0Mj&&}`i#|Xw+JqC+@!iHS#oYP6{YPFY z=5`Is=316>VN(7U2vbh9s`9Y*gC5Okvn`-F;E37m%7Du^sXTgN$+u5DM61ci+6oAC z5}!82z(8MG>5N^NLn4BXsY1x;I8#g1zol07r|t z`1yl240fZRf81;QWb|A8Xn^a~vk!q2iHWaoTF>eB73QyEKv6K|CVXjja}&&w$V({*>jAtockfMEI>jW-YuqMGMo9E+sUo_BV_^n~pWB6rd$xG$ zxA{yag0BU;_sZsaNqt{peV1W@%WLB*w@hK5zu9UOma8oQ4E~qFm^%r7v;Fnk{(Oq^ zfm;x>W|2PhNYG;pZ5R?yyQhz4dfd`iR3q1m>oENqvy*Yg^EAF`{wj{R%nkvFRm7KY z#-!)pY#E$QpQApyo&B6a0TgCFMzx6k(HhQYZSRp6UF@;H1EV)-6@QT1{JPasv)}x- z+Cb2y&yL`9ODNtQ8q3XWA!O8KmR+x>J1ADqH&CES)fJF9Z6RmH8Q{VTaHiA*pPYDOUz7*4>kvy-RBTAW%XR#U4td!Tq0X{CJyKA?NcM7wej2729X~I?VTv!!|0>)!V`eQ*a!Qj6f91-j=Zz6L{`ihdxVC>B#TzI#C1~P zcG`1!H!|^|AWUATv2mbGGGZQoC5l5}{zBep{aHCb2WaixLc+7y_PEqReGOspL|#5) z@_Y^*DbvaI_+<9z*7-#q<_H2F`*9~o48eP!*ZNnZ(>yK}tPZN2m2Q(!@Y@E=>oz2{5#Lu+lZIinH3MkB*R*RE_u7>7Ln_B_YrY>Q5U+|?c2TDFWredS5l!Nb z80-dg;pJ&IcPss{UfdZ}a!6-{Wh-114N=qkHGklyF~O)7uhWP7q8Iawd z>*PD^#7fu)4HcA#6KUY#kavP{eM-@HPJffku|TZ$FUK2$s2VOYPro&n&ISZGsk(0l zq7BmwHWunCU+!tVeYX3Vqwbzr0*!AMY2_uPwUwQp*j(^=64Dju?i)^+%K3rfeOefl z^)po(zT+1V_kh}7vTU^gH6z!o0|#+Kx$TCFZcDbvblY=HZCpqNwOk0mn;>%H9;HtX zzM(6+_tJc;p+@0(Y$fF-ZrNO=E2)ElmG`9cd2><%f+vGJw3r?!IgF1gw%C58BGA?F zo=4u;26)FZ6QM5~Za&Kttd8uMnwq35w$0;FUp;Lj1*b)u-7C*X_u4pP0~Sq?U4><< z%8FOtM7B{1+XlN43Y=%TO5Ox(Lnk{(u2(`8rEOxxk=?@TPKQ5Vg*`1S) zPJH6v7b)}eXIJ;bl}+MpOaxE#(wZP$hhTsKiIL)`LHs>GaF&gh%?45dROK1#fGp3d z-~H=*Y$Qut7JFnfx}g>q!k1DAQ-j&|_(2$!oQ&w&=-N=?J6oo^9hzv&n4Pu5CZ&{u zg<>ha#kY9L-SbKlt3_*6P+pR@WI3QGCTUY^DD;x^oKn9=n!bjR<-_EOZ{1+-jD!P3 zHiYhha!2B~X6sE`lagOvSRlz^qek*p1aKzAq|FC9{pr{PdtFg~O-<_^Krz=Wrx<(m zhQ?<%$E#d4W!ELkrmQw9d_tG*+uV^tZCk7MQ%XKlhJz%zB{jX)zFpO>)gcog0jR5f z+B^wdtOvl$H@+E0;$_O%ODcbFdIXQ!%d4xA%(|f&%@C_FF{bJjd*_!H$HFnm z8*fg)9+rNsg;da?IlPq-4~4V;yIAmo_(NmMsI{qc<6^*&q6#1y_yVGVUM7Mur8k8I z*HL8Zh+V<@AMWRMhE4dp)U?^OIL}GLcslE;LChTQvczf^P~JK@h`*0RK=uVGBQByT zww99WlQ|6n7epHfDO0fMJwR;B6m&|e^`4AHpkBABgJU)40(1Y^ zYThXpiH0l_9A;M-Naql|y5h$uZwn7FGek?*uvhsvqDiMduwysvpN@t1cVUBSLSDSP zR+3I|oeX;OIXYqzYAeGu9VRMh|6E!lotX@J&zN&~S2+Q-5o7v#N!5!7q7o^e=L#2P zQQjfW_+z}4zbqv4e18<|)+^RCmd<68!FevAXcHaY&SHJEdFRj9S`-`2-g} ztnG$9sKba!W^g-rD_^A!KX&n5rY|TtA|94ocu@82>*cmICW*6V15WoAW&Lo1*czj~ z4y}7GeS$nK(vM!9ciReTgSWW%ET)JgQ+=2L?}C7j)v!RUxaRHqS5>S8!X8XKxalI1 zay!#ax6|SIE<}?-NOrD=YCJz?hpxXk%CXE5ykFg;&{`VsH=CCULp(FXe`0Nup0_bb z?^&6t!a;(@@%1;WN$#5uMJMcF*o|iw8mEZ7{1G)U;02s4T=rc)TWRK?1pe7Lpn+W? zYswVb+a_hym4C}>1B#S|&eY}KqRQbQ9e-9`jz}tQtsa=bp{=eUx~baDScbD{qF?5u zDS}NA!oJJb{>bjP29&bMn@RU)7S<6v@HTeDl}RY_R$2Vxx{cngZplXdKL)l{{XR=6 zT1HU+SmJ_8t#zx*CKi{qZssLk?9tTJ^j^jgs#BpH5~YuxCR)nAIe7-}%ljA|l9`&P z(p+0vN%0xxCn^+#Ev^&w99qi6dKtbVoZc3Ux$FQJW9^$NVA(~z@L5nC;2tZj*-Pvt@hj>ew` zou7#|tRC21NDF&2{OMK2ZA|K9hixA7PMYb2PI@gK>i-@;g$zE|$>z^9wC(8sYT!}E zXMr|{Pn3$`Lc+~1gNf#4a93+gw6bxH0S1K?Bl|u|SEtnsAe(r{pGQEYiNTbQI3(pw=Lfp~^qCiXpbSU^ZQxgV5Fk^DL>^ zRIqtLY3poNa!lP^KbCO5y9wp=FVt}`7XU=bbOguS_P;z^@U5tN5}caX ztvXeKMEubD*_8(CBp1>VHZSv`bfh|a!q7(liR+)Dt}uZSe4bHE`cZ%#*&s1|{Fl2K zeLem#7zDZ-A|Dng*$aP&15_8pXu#V7vPlNU;5$j{6VXFE)((a+W=kiZV>z&Kt<{h$ zx7;?$GM}54Ng7#ce&$MwQ+nEM3tu*R^21&QhB=zlJ6tWwyxcqR9H6QKx4lotMBK zZCTK%9utskQeVZQEKr1TBpJI1Ul?UGXZwlm+~K<-zyfX&ocrNy>sxkK0DvXRx-9dS z=eviEr6hQt1{?4&o1HejI z2Jn0bB4q;z0SsW>1?V_(u^!*US&qAG>^}k7POz$FRSy)(b66qE17zem%J@$lE8u(K zhYbQe4}kyghUEk@Ujv?}SkZ^=xy!2L2i7~ZYd{do1DLlg>xf>U_V4UEBLAOoRsw*4 zcSqU&V&efw0}B1$hF(2v6+rFr!%lb$lnxZgssZ?8u?HaV$bZyEz4~|$v?CJ&s$dXpPz;dj+P_Q%68*q_>eyRW z3{W&cAMmqgc@Dk*a`ijM4!L#2%A+)g&||gX&!fT*nfe1j z!vhw5|3TdeuTLTc8!?LHi|OrVM0ldw{E`Nc1xR@-;*xlv+zp2C?rI4Z``dqI?@{0W zXYU_23&?gCDF1K_0lk07w*TyXpdBpc1J)ryht~g3?*n}gr27f@KQh+I8(BYoDoGdXj+-XJo!Ua+c=iffbDW3)QmWWz$2rhhU4lU%{#=hzA~r<{Dtwgm zGSjy4ZkoO9R)t8DM95oV)8mA#3d^BJ%SPVwbuo%)K5$t}&-CCRH<(+sV{vo1$%i0l zyZKlE;UncY>sj<-+M9V>3OnJ_z?U>>rqhF34%-B|^Cg<p17&Y*&~>|aE0?$bh@`&U4t_u2GIu>`oOiz+7jx;nRyXB6 zIhbHSgN>dXsTRWKziThudv&`t|84W55M9@reh;2bso1@^REt@0&F=B|4CQK&zjc=5 zEA9N~_Q4)^_(uQO#@d@#ZA_H(Qq?$cRd8O9p>*eVz|@`JO3d~uhT|Z-$cj>})#BIt zSX`%?Ij|GS4DVOWnE)$gop@J!=YpTcYlv_7yy5&{KVP$nJyK?Hjl>m*sw`Hh&Kz?a zn-5>fKbJM)E^&5;X@z@5{pON%>Y;JImIIQJFD>B%};W!v&2NrQ+l z7LO8jEu`DAd6{(BWhCTuER)+r2;-yCnl_CDVQTUcRRlH8jvmOys*1F@68Ka-*d2Vh zE`x4v#FO_0&U@#}D(s`@vUrVLKUm%Xd01&S;)x|Nn$-dknlxSiAlELog-VIBj+mIw zwI1A(m>R8GbpLd+O$lKZ`^90USHm+myD+hcsh`@Lovn>ZPD|u6Ew;8_hd`^E{FH`* zLp%QJkoa_aN)EU9H=BSJeb>m;`@=6$HRs7Tznr4hf-7$9?EomY7mI@h=7j~@Gq|yN z^vZmLafiP=BV_pdZ{5b!t@jjRGgEp1Wx3Kew^ElKF0~GWlXj6v9>Ce~W2}Tc}J_DQ+6Ahs1~SMG36nowf^AZG~&3{0Vo^ zQL8CYH`|@A%+(J#+76V?%!v=pBi-y5Dy2Fs9SsXg6=WPHv_Za8lf4^r?(=z^pISMS z5FQA1UA2*EZC-n#!m>npPg{H?NSW6LkKWor&v zE2g4n_@n3AuN z2EP(Y@zuaVdxl|=rnUzH!X&7NUQJHU{>om@SMFsys=@oQbk>wZ+?^dQ1WxGsG^v_l zO&3>GC=Vy3F?{DdgKd6js(SjS=Yt)Ngt)1X7QngA%hVyJUMK`_7;0*547e^@S9f-J zGE4ODgk#^_+(~`pW|Gs>vkYMLc#~L8M;X33tE8W@M1?&H`5QbZJZObf8nzlXj~7SE+ONNnJzEl#e|GtjwSgz8 zv%#fGE>&lyGh+54-pB#(^Ei-Xtibwg3!U+9zvS7@{MbsmCD?Uw@q#P2Xgr{*o#v8b zKGfTE9!w#?rWjjSVxASc2H$an$+&>KCw^(h8#ZHmkf8ypw#8B|{)5{VJ!$E_YblK@ zj7+CT^|@-u$Wsm8mJ9LM-66gGpLRvOl-tu{H%gn=wJOBs`=@-E$sw`ex?Q7@Y>rQ* zdnQ|cAMI;Rt=!J#8X(y_J6oo^mkncMY{e4EG`?+*CYv+>0u-1Dj`4#8=7FZ)3^t&Gmgd9QR@C1fE;mQ3Fl#aT#~eCu z0P8FeaF_;IVWRQWx=SAVk&8SHcqXD?)A?V?D`ET(KzNM1-}S@%G3reZx~ zp+3;jdD{q3F;$~m)phmb#^<;P)B9tglt{@&UC?`@ z*0fH2cq)1MZu^~6JooBg5%+j)X!;vLnfdu|wnA~nAL$3Dn(ioOZ8YqDE6e&| zKFz9oJh^f^KRCold?XTSM&Q4c*i4xA=uh3z?XT?=Ld`?vf37E}%dXAsT$;7e zwaxJ@G7DH=Uu8xO_@m?_(snuxeh9g<%|I2At7~B)i=PTNL&zM=zGG+e4)5F_XFDAM zNQbOn&yBn75|d9UGdaN?06x|sD!^}S(`bv_<9pZNeiq==vnpIZQ>6lP4Ni=m^4S6YTgLPmD`d6j2~yO zov<{+5{-?4OT!NfXY85wagfAipB&f#8SYwN^!eD1f$@L9Lr{y$_x`$3OQl2)tYQ|q zJMZkzw3O*IDo4k**&P771tK@zu$}O36Is&M7ao}~aHkUKRev4Zp_>(;9SCC? zAo#GtLs|K#@WYhFc04$91aLJwm*J3Rt}7d!*nc89g@S^ zv;1FV93 zDjDFx6Tr*z{M$aDhJTltBNr>+FzCo}jqRtmhlviocfaq14vS#B##(vqJUCVX1b=53 zKpQZuzHb2k3lD)%zyOf|Nq66}+&mACn(>515>UrEV5tMlHJ0^nn^+xpoJIOwz;U?q m0-k_*!m?PqsblA^0g3M(6?F~B`2Yz1XTTj}k$&v&{{IKN)2bi< diff --git a/og/fr--terms.jpg b/og/fr--terms.jpg deleted file mode 100644 index 859689a841b5e2f520b267fc38bf6d57369be797..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49917 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

    2hpZQD?`S0L#OAq&1uIl)I%Q%;Dx%q>C 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%0Ac| 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